add support for snes pad to windows port
This commit is contained in:
parent
90621da6d4
commit
094d1bb827
|
@ -104,6 +104,7 @@ static void UpdateMahjong(void);
|
||||||
static void UpdateFTrainer(void);
|
static void UpdateFTrainer(void);
|
||||||
static void UpdateTopRider(void);
|
static void UpdateTopRider(void);
|
||||||
|
|
||||||
|
static uint32 snespad_return[4];
|
||||||
static uint32 JSreturn=0;
|
static uint32 JSreturn=0;
|
||||||
int NoWaiting=0;
|
int NoWaiting=0;
|
||||||
bool turbo = false;
|
bool turbo = false;
|
||||||
|
@ -126,7 +127,7 @@ int allowUDLR=0;
|
||||||
|
|
||||||
#define GPZ() {MKZ(), MKZ(), MKZ(), MKZ()}
|
#define GPZ() {MKZ(), MKZ(), MKZ(), MKZ()}
|
||||||
|
|
||||||
ButtConfig GamePadConfig[4][10]={
|
ButtConfig GamePadConfig[4][12]={
|
||||||
//Gamepad 1
|
//Gamepad 1
|
||||||
{
|
{
|
||||||
MK(F), MK(D), MK(S), MK(ENTER), MK(BL_CURSORUP),
|
MK(F), MK(D), MK(S), MK(ENTER), MK(BL_CURSORUP),
|
||||||
|
@ -241,27 +242,37 @@ int DTestButton(ButtConfig *bc)
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UpdateGamepad()
|
void UpdateGamepad(bool snes)
|
||||||
{
|
{
|
||||||
if(FCEUMOV_Mode(MOVIEMODE_PLAY))
|
if(FCEUMOV_Mode(MOVIEMODE_PLAY))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
uint32 JS=0;
|
int JS=0;
|
||||||
int x;
|
|
||||||
int wg;
|
|
||||||
if(FCEUMOV_Mode(MOVIEMODE_RECORD))
|
if(FCEUMOV_Mode(MOVIEMODE_RECORD))
|
||||||
AutoFire();
|
AutoFire();
|
||||||
|
|
||||||
for(wg=0;wg<4;wg++)
|
for(int wg=0;wg<4;wg++)
|
||||||
{
|
{
|
||||||
for(x=0;x<8;x++)
|
int wgs = wg;
|
||||||
if(DTestButton(&GamePadConfig[wg][x]))
|
if(snes)
|
||||||
JS|=(1<<x)<<(wg<<3);
|
{
|
||||||
|
wgs = 0;
|
||||||
|
for(int x=0;x<16;x++)
|
||||||
|
if(DTestButton(&GamePadConfig[wg][x]))
|
||||||
|
JS|=(1<<x)<<(wgs<<3);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for(int x=0;x<8;x++)
|
||||||
|
if(DTestButton(&GamePadConfig[wg][x]))
|
||||||
|
JS|=(1<<x)<<(wgs<<3);
|
||||||
|
}
|
||||||
|
|
||||||
// Check if U+D/L+R is disabled
|
// Check if U+D/L+R is disabled
|
||||||
|
//TODO: how does this affect snes pads?
|
||||||
if(!allowUDLR)
|
if(!allowUDLR)
|
||||||
{
|
{
|
||||||
for(x=0;x<32;x+=8)
|
for(int x=0;x<32;x+=8)
|
||||||
{
|
{
|
||||||
if((JS & (0xC0<<x) ) == (0xC0<<x) ) JS&=~(0xC0<<x);
|
if((JS & (0xC0<<x) ) == (0xC0<<x) ) JS&=~(0xC0<<x);
|
||||||
if((JS & (0x30<<x) ) == (0x30<<x) ) JS&=~(0x30<<x);
|
if((JS & (0x30<<x) ) == (0x30<<x) ) JS&=~(0x30<<x);
|
||||||
|
@ -269,9 +280,18 @@ void UpdateGamepad()
|
||||||
}
|
}
|
||||||
|
|
||||||
// if(rapidAlternator)
|
// if(rapidAlternator)
|
||||||
for(x=0;x<2;x++)
|
if(!snes)
|
||||||
if(DTestButton(&GamePadConfig[wg][8+x]))
|
{
|
||||||
JS|=((1<<x)<<(wg<<3))*(rapidAlternator^(x*DesynchAutoFire));
|
for(int x=0;x<2;x++)
|
||||||
|
if(DTestButton(&GamePadConfig[wg][8+x]))
|
||||||
|
JS|=((1<<x)<<(wgs<<3))*(rapidAlternator^(x*DesynchAutoFire));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(snes)
|
||||||
|
{
|
||||||
|
snespad_return[wg] = JS;
|
||||||
|
//printf("%d %d\n",wg,JS);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(autoHoldOn)
|
if(autoHoldOn)
|
||||||
|
@ -283,8 +303,8 @@ void UpdateGamepad()
|
||||||
JSAutoHeldAffected = 0;
|
JSAutoHeldAffected = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(wg=0;wg<4;wg++)
|
for(int wg=0;wg<4;wg++)
|
||||||
for(x=0;x<8;x++)
|
for(int x=0;x<8;x++)
|
||||||
if(DTestButton(&GamePadConfig[wg][x]))
|
if(DTestButton(&GamePadConfig[wg][x]))
|
||||||
{
|
{
|
||||||
if(!autoHoldRefire || !(JSAutoHeldAffected&(1<<x)<<(wg<<3)))
|
if(!autoHoldRefire || !(JSAutoHeldAffected&(1<<x)<<(wg<<3)))
|
||||||
|
@ -340,7 +360,8 @@ void UpdateGamepad()
|
||||||
if(JSAutoHeld)
|
if(JSAutoHeld)
|
||||||
JS ^= JSAutoHeld;
|
JS ^= JSAutoHeld;
|
||||||
|
|
||||||
JSreturn=JS;
|
if(!snes)
|
||||||
|
JSreturn=JS;
|
||||||
}
|
}
|
||||||
|
|
||||||
ButtConfig powerpadsc[2][12]={
|
ButtConfig powerpadsc[2][12]={
|
||||||
|
@ -405,6 +426,9 @@ void FCEUD_UpdateInput()
|
||||||
switch(InputType[x])
|
switch(InputType[x])
|
||||||
{
|
{
|
||||||
case SI_GAMEPAD: joy=true; break;
|
case SI_GAMEPAD: joy=true; break;
|
||||||
|
case SI_SNES:
|
||||||
|
UpdateGamepad(true);
|
||||||
|
break;
|
||||||
case SI_ARKANOID: mouse=true; break;
|
case SI_ARKANOID: mouse=true; break;
|
||||||
case SI_ZAPPER: mouse=true; break;
|
case SI_ZAPPER: mouse=true; break;
|
||||||
case SI_POWERPADA:
|
case SI_POWERPADA:
|
||||||
|
@ -436,7 +460,7 @@ void FCEUD_UpdateInput()
|
||||||
}
|
}
|
||||||
|
|
||||||
if(joy)
|
if(joy)
|
||||||
UpdateGamepad();
|
UpdateGamepad(false);
|
||||||
|
|
||||||
if(mouse)
|
if(mouse)
|
||||||
if(FCEUMOVState != MOVIEMODE_PLAY) //FatRatKnight: Moved this if out of the function
|
if(FCEUMOVState != MOVIEMODE_PLAY) //FatRatKnight: Moved this if out of the function
|
||||||
|
@ -489,6 +513,9 @@ void InitInputPorts(bool fourscore)
|
||||||
case SI_ZAPPER:
|
case SI_ZAPPER:
|
||||||
InputDPtr=MouseData;
|
InputDPtr=MouseData;
|
||||||
break;
|
break;
|
||||||
|
case SI_SNES:
|
||||||
|
InputDPtr=snespad_return;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
FCEUI_SetInput(i,(ESI)InputType[i],InputDPtr,attrib);
|
FCEUI_SetInput(i,(ESI)InputType[i],InputDPtr,attrib);
|
||||||
}
|
}
|
||||||
|
@ -603,6 +630,18 @@ static ButtConfig HyperShotButtons[4]=
|
||||||
MK(Q),MK(W),MK(E),MK(R)
|
MK(Q),MK(W),MK(E),MK(R)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void UpdateSNES()
|
||||||
|
{
|
||||||
|
int x;
|
||||||
|
|
||||||
|
HyperShotData=0;
|
||||||
|
for(x=0;x<0x4;x++)
|
||||||
|
{
|
||||||
|
if(DTestButton(&HyperShotButtons[x]))
|
||||||
|
HyperShotData|=1<<x;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void UpdateHyperShot(void)
|
static void UpdateHyperShot(void)
|
||||||
{
|
{
|
||||||
int x;
|
int x;
|
||||||
|
@ -1022,6 +1061,15 @@ static BOOL CALLBACK DoTBCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lP
|
||||||
sprintf(buf,"Virtual Gamepad %d",DoTBPort+3);
|
sprintf(buf,"Virtual Gamepad %d",DoTBPort+3);
|
||||||
SetDlgItemText(hwndDlg, GRP_GAMEPAD2, buf);
|
SetDlgItemText(hwndDlg, GRP_GAMEPAD2, buf);
|
||||||
}
|
}
|
||||||
|
if(DoTBType == SI_SNES)
|
||||||
|
{
|
||||||
|
char buf[32];
|
||||||
|
sprintf(buf,"Virtual SNES Pad %d",DoTBPort+1);
|
||||||
|
SetDlgItemText(hwndDlg, GRP_GAMEPAD1,buf);
|
||||||
|
|
||||||
|
sprintf(buf,"Virtual SNES Pad %d",DoTBPort+3);
|
||||||
|
SetDlgItemText(hwndDlg, GRP_GAMEPAD2, buf);
|
||||||
|
}
|
||||||
SetWindowText(hwndDlg, DoTBTitle);
|
SetWindowText(hwndDlg, DoTBTitle);
|
||||||
break;
|
break;
|
||||||
case WM_CLOSE:
|
case WM_CLOSE:
|
||||||
|
@ -1064,7 +1112,7 @@ const unsigned int NUMBER_OF_PORTS = 2;
|
||||||
const unsigned int NUMBER_OF_NES_DEVICES = SI_COUNT + 1;
|
const unsigned int NUMBER_OF_NES_DEVICES = SI_COUNT + 1;
|
||||||
const static unsigned int NUMBER_OF_FAMICOM_DEVICES = SIFC_COUNT + 1;
|
const static unsigned int NUMBER_OF_FAMICOM_DEVICES = SIFC_COUNT + 1;
|
||||||
//these are unfortunate lists. they match the ESI and ESIFC enums
|
//these are unfortunate lists. they match the ESI and ESIFC enums
|
||||||
static const int configurable_nes[NUMBER_OF_NES_DEVICES]= { 0, 1, 0, 1, 1, 0 };
|
static const int configurable_nes[NUMBER_OF_NES_DEVICES]= { 0, 1, 0, 1, 1, 0, 0, 1 };
|
||||||
static const int configurable_fam[NUMBER_OF_FAMICOM_DEVICES]= { 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0 };
|
static const int configurable_fam[NUMBER_OF_FAMICOM_DEVICES]= { 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0 };
|
||||||
const unsigned int FAMICOM_POSITION = 2;
|
const unsigned int FAMICOM_POSITION = 2;
|
||||||
|
|
||||||
|
@ -1367,18 +1415,22 @@ BOOL CALLBACK InputConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
|
||||||
switch(InputType[which])
|
switch(InputType[which])
|
||||||
{
|
{
|
||||||
case SI_GAMEPAD:
|
case SI_GAMEPAD:
|
||||||
|
case SI_SNES:
|
||||||
{
|
{
|
||||||
ButtConfig tmp[10 + 10];
|
ButtConfig tmp[12 + 12];
|
||||||
|
|
||||||
memcpy(tmp, GamePadConfig[which], 10 * sizeof(ButtConfig));
|
memcpy(tmp, GamePadConfig[which], 12 * sizeof(ButtConfig));
|
||||||
memcpy(&tmp[10], GamePadConfig[which + 2], 10 * sizeof(ButtConfig));
|
memcpy(&tmp[12], GamePadConfig[which + 2], 12 * sizeof(ButtConfig));
|
||||||
|
|
||||||
DoTBType = SI_GAMEPAD;
|
DoTBType = InputType[which];
|
||||||
DoTBPort = which;
|
DoTBPort = which;
|
||||||
DoTBConfig(hwndDlg, text, "GAMEPADDIALOG", tmp, 10 + 10);
|
if(DoTBType == SI_GAMEPAD)
|
||||||
|
DoTBConfig(hwndDlg, text, "GAMEPADDIALOG", tmp, 12 + 12);
|
||||||
|
else
|
||||||
|
DoTBConfig(hwndDlg, text, MAKEINTRESOURCE(DLG_SNESPAD), tmp, 12); //no 2nd controller since no four score
|
||||||
|
|
||||||
memcpy(GamePadConfig[which], tmp, 10 * sizeof(ButtConfig));
|
memcpy(GamePadConfig[which], tmp, 12 * sizeof(ButtConfig));
|
||||||
memcpy(GamePadConfig[which + 2], &tmp[10], 10 * sizeof(ButtConfig));
|
memcpy(GamePadConfig[which + 2], &tmp[12], 12 * sizeof(ButtConfig));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -11,12 +11,88 @@
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
#undef APSTUDIO_READONLY_SYMBOLS
|
#undef APSTUDIO_READONLY_SYMBOLS
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Russian (Russia) resources
|
||||||
|
|
||||||
|
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
|
||||||
|
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
|
||||||
|
#pragma code_page(1251)
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// Dialog
|
||||||
|
//
|
||||||
|
|
||||||
|
IDD_TASEDITOR_SAVINGOPTIONS DIALOGEX 0, 0, 223, 208
|
||||||
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
|
CAPTION "Project file saving options"
|
||||||
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
|
BEGIN
|
||||||
|
DEFPUSHBUTTON "OK",IDOK,109,187,50,14
|
||||||
|
PUSHBUTTON "Cancel",IDCANCEL,165,187,50,14
|
||||||
|
CONTROL " Binary format of Input",IDC_CHECK_BINARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,17,89,10
|
||||||
|
CONTROL " Markers",IDC_CHECK_MARKERS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,32,67,10
|
||||||
|
CONTROL " Bookmarks",IDC_CHECK_BOOKMARKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,47,67,10
|
||||||
|
CONTROL " History",IDC_CHECK_HISTORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,62,67,10
|
||||||
|
CONTROL " Piano Roll",IDC_CHECK_PIANO_ROLL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,77,67,10
|
||||||
|
CONTROL " Selection",IDC_CHECK_SELECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,92,67,10
|
||||||
|
GROUPBOX "File contents",IDC_STATIC,105,4,111,177
|
||||||
|
GROUPBOX "Greenzone saving options",IDC_STATIC,112,106,97,69
|
||||||
|
CONTROL " all frames",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,122,117,77,10
|
||||||
|
CONTROL " every 16th frame",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,122,131,77,10
|
||||||
|
CONTROL " marked frames",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,122,145,77,10
|
||||||
|
CONTROL " don't save",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,122,159,77,10
|
||||||
|
CONTROL " Autosave project",IDC_AUTOSAVE_PROJECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,17,81,10
|
||||||
|
CONTROL " silently",IDC_SILENT_AUTOSAVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,47,42,10
|
||||||
|
LTEXT "every",IDC_STATIC,14,32,21,8
|
||||||
|
EDITTEXT IDC_AUTOSAVE_PERIOD,36,30,24,14,ES_AUTOHSCROLL | ES_NUMBER
|
||||||
|
LTEXT "minutes",IDC_STATIC,64,32,28,8
|
||||||
|
GROUPBOX "Settings",IDC_STATIC,6,4,91,177
|
||||||
|
END
|
||||||
|
|
||||||
|
IDD_SYMBOLIC_DEBUG_NAMING DIALOGEX 0, 0, 245, 83
|
||||||
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||||
|
CAPTION "Symbolic Debug Naming"
|
||||||
|
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||||
|
BEGIN
|
||||||
|
DEFPUSHBUTTON "OK",IDOK,132,62,50,14
|
||||||
|
PUSHBUTTON "Cancel",IDCANCEL,189,62,50,14
|
||||||
|
LTEXT "File",IDC_STATIC,7,7,15,9
|
||||||
|
EDITTEXT IDC_SYMBOLIC_ADDRESS,38,24,33,13,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
|
||||||
|
LTEXT "Address",IDC_STATIC,6,26,30,10
|
||||||
|
EDITTEXT IDC_SYMBOLIC_NAME,107,24,132,13,ES_AUTOHSCROLL
|
||||||
|
LTEXT "Name",IDC_STATIC,83,26,22,10
|
||||||
|
LTEXT "Comment",IDC_STATIC,6,45,37,10
|
||||||
|
EDITTEXT IDC_SYMBOLIC_COMMENT,45,43,194,13,ES_AUTOHSCROLL
|
||||||
|
EDITTEXT IDC_SYMBOLIC_FILENAME,24,6,215,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
//
|
||||||
|
// DESIGNINFO
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifdef APSTUDIO_INVOKED
|
||||||
|
GUIDELINES DESIGNINFO
|
||||||
|
BEGIN
|
||||||
|
IDD_SYMBOLIC_DEBUG_NAMING, DIALOG
|
||||||
|
BEGIN
|
||||||
|
BOTTOMMARGIN, 82
|
||||||
|
END
|
||||||
|
END
|
||||||
|
#endif // APSTUDIO_INVOKED
|
||||||
|
|
||||||
|
#endif // Russian (Russia) resources
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
// Neutral resources
|
// Neutral resources
|
||||||
|
|
||||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
|
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
|
||||||
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
|
||||||
#pragma code_page(1251)
|
#pragma code_page(1252)
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
|
@ -1535,6 +1611,28 @@ BEGIN
|
||||||
EDITTEXT IDC_PROMPT_EDIT,10,15,167,14,ES_AUTOHSCROLL
|
EDITTEXT IDC_PROMPT_EDIT,10,15,167,14,ES_AUTOHSCROLL
|
||||||
END
|
END
|
||||||
|
|
||||||
|
DLG_SNESPAD DIALOGEX 4, 109, 243, 220
|
||||||
|
STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
|
||||||
|
CAPTION "Gamepad Configuration"
|
||||||
|
FONT 8, "MS Sans Serif", 0, 0, 0x0
|
||||||
|
BEGIN
|
||||||
|
DEFPUSHBUTTON "Close",BTN_CLOSE,173,196,56,14
|
||||||
|
GROUPBOX "",GRP_GAMEPAD1,4,8,232,82,WS_GROUP
|
||||||
|
PUSHBUTTON "Up",304,35,36,24,12
|
||||||
|
PUSHBUTTON "Left",306,9,54,25,12
|
||||||
|
PUSHBUTTON "Right",307,60,54,24,12
|
||||||
|
PUSHBUTTON "Down",305,35,73,24,12
|
||||||
|
PUSHBUTTON "Select",302,91,54,26,12
|
||||||
|
PUSHBUTTON "Start",303,126,54,26,12
|
||||||
|
PUSHBUTTON "Y",301,164,53,16,12
|
||||||
|
PUSHBUTTON "B",300,181,66,16,12
|
||||||
|
PUSHBUTTON "A",308,199,53,16,12
|
||||||
|
PUSHBUTTON "X",309,181,40,16,12
|
||||||
|
PUSHBUTTON "L",310,10,19,32,12
|
||||||
|
PUSHBUTTON "R",311,198,19,32,12
|
||||||
|
GROUPBOX "",GRP_GAMEPAD2,4,101,232,82,WS_GROUP
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
|
@ -1551,6 +1649,14 @@ BEGIN
|
||||||
TOPMARGIN, 8
|
TOPMARGIN, 8
|
||||||
END
|
END
|
||||||
|
|
||||||
|
"GAMEPADDIALOG", DIALOG
|
||||||
|
BEGIN
|
||||||
|
END
|
||||||
|
|
||||||
|
"GUICONFIG", DIALOG
|
||||||
|
BEGIN
|
||||||
|
END
|
||||||
|
|
||||||
"INPUTCONFIG", DIALOG
|
"INPUTCONFIG", DIALOG
|
||||||
BEGIN
|
BEGIN
|
||||||
LEFTMARGIN, 10
|
LEFTMARGIN, 10
|
||||||
|
@ -1694,6 +1800,10 @@ BEGIN
|
||||||
"VIDEOCONFIG", DIALOG
|
"VIDEOCONFIG", DIALOG
|
||||||
BEGIN
|
BEGIN
|
||||||
END
|
END
|
||||||
|
|
||||||
|
DLG_SNESPAD, DIALOG
|
||||||
|
BEGIN
|
||||||
|
END
|
||||||
END
|
END
|
||||||
#endif // APSTUDIO_INVOKED
|
#endif // APSTUDIO_INVOKED
|
||||||
|
|
||||||
|
@ -2217,82 +2327,6 @@ END
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
// Russian (Russia) resources
|
|
||||||
|
|
||||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_RUS)
|
|
||||||
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
|
|
||||||
#pragma code_page(1251)
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// Dialog
|
|
||||||
//
|
|
||||||
|
|
||||||
IDD_TASEDITOR_SAVINGOPTIONS DIALOGEX 0, 0, 223, 208
|
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
|
||||||
CAPTION "Project file saving options"
|
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
|
||||||
BEGIN
|
|
||||||
DEFPUSHBUTTON "OK",IDOK,109,187,50,14
|
|
||||||
PUSHBUTTON "Cancel",IDCANCEL,165,187,50,14
|
|
||||||
CONTROL " Binary format of Input",IDC_CHECK_BINARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,17,89,10
|
|
||||||
CONTROL " Markers",IDC_CHECK_MARKERS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,32,67,10
|
|
||||||
CONTROL " Bookmarks",IDC_CHECK_BOOKMARKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,47,67,10
|
|
||||||
CONTROL " History",IDC_CHECK_HISTORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,62,67,10
|
|
||||||
CONTROL " Piano Roll",IDC_CHECK_PIANO_ROLL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,77,67,10
|
|
||||||
CONTROL " Selection",IDC_CHECK_SELECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,92,67,10
|
|
||||||
GROUPBOX "File contents",IDC_STATIC,105,4,111,177
|
|
||||||
GROUPBOX "Greenzone saving options",IDC_STATIC,112,106,97,69
|
|
||||||
CONTROL " all frames",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,122,117,77,10
|
|
||||||
CONTROL " every 16th frame",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,122,131,77,10
|
|
||||||
CONTROL " marked frames",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,122,145,77,10
|
|
||||||
CONTROL " don't save",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,122,159,77,10
|
|
||||||
CONTROL " Autosave project",IDC_AUTOSAVE_PROJECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,17,81,10
|
|
||||||
CONTROL " silently",IDC_SILENT_AUTOSAVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,47,42,10
|
|
||||||
LTEXT "every",IDC_STATIC,14,32,21,8
|
|
||||||
EDITTEXT IDC_AUTOSAVE_PERIOD,36,30,24,14,ES_AUTOHSCROLL | ES_NUMBER
|
|
||||||
LTEXT "minutes",IDC_STATIC,64,32,28,8
|
|
||||||
GROUPBOX "Settings",IDC_STATIC,6,4,91,177
|
|
||||||
END
|
|
||||||
|
|
||||||
IDD_SYMBOLIC_DEBUG_NAMING DIALOGEX 0, 0, 245, 83
|
|
||||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
|
||||||
CAPTION "Symbolic Debug Naming"
|
|
||||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
|
||||||
BEGIN
|
|
||||||
DEFPUSHBUTTON "OK",IDOK,132,62,50,14
|
|
||||||
PUSHBUTTON "Cancel",IDCANCEL,189,62,50,14
|
|
||||||
LTEXT "File",IDC_STATIC,7,7,15,9
|
|
||||||
EDITTEXT IDC_SYMBOLIC_ADDRESS,38,24,33,13,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
|
|
||||||
LTEXT "Address",IDC_STATIC,6,26,30,10
|
|
||||||
EDITTEXT IDC_SYMBOLIC_NAME,107,24,132,13,ES_AUTOHSCROLL
|
|
||||||
LTEXT "Name",IDC_STATIC,83,26,22,10
|
|
||||||
LTEXT "Comment",IDC_STATIC,6,45,37,10
|
|
||||||
EDITTEXT IDC_SYMBOLIC_COMMENT,45,43,194,13,ES_AUTOHSCROLL
|
|
||||||
EDITTEXT IDC_SYMBOLIC_FILENAME,24,6,215,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP
|
|
||||||
END
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// DESIGNINFO
|
|
||||||
//
|
|
||||||
|
|
||||||
#ifdef APSTUDIO_INVOKED
|
|
||||||
GUIDELINES DESIGNINFO
|
|
||||||
BEGIN
|
|
||||||
IDD_SYMBOLIC_DEBUG_NAMING, DIALOG
|
|
||||||
BEGIN
|
|
||||||
BOTTOMMARGIN, 82
|
|
||||||
END
|
|
||||||
END
|
|
||||||
#endif // APSTUDIO_INVOKED
|
|
||||||
|
|
||||||
#endif // Russian (Russia) resources
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
// English (United States) resources
|
// English (United States) resources
|
||||||
|
|
||||||
|
|
|
@ -365,6 +365,7 @@
|
||||||
#define IDB_BITMAP_SELECTED19 288
|
#define IDB_BITMAP_SELECTED19 288
|
||||||
#define IDD_TASEDITOR_SAVINGOPTIONS 289
|
#define IDD_TASEDITOR_SAVINGOPTIONS 289
|
||||||
#define IDD_SYMBOLIC_DEBUG_NAMING 290
|
#define IDD_SYMBOLIC_DEBUG_NAMING 290
|
||||||
|
#define DLG_SNESPAD 291
|
||||||
#define MENU_HIDE_MENU 300
|
#define MENU_HIDE_MENU 300
|
||||||
#define COMBO_FILTER 300
|
#define COMBO_FILTER 300
|
||||||
#define IDC_EDIT_AUTHORINFO 300
|
#define IDC_EDIT_AUTHORINFO 300
|
||||||
|
@ -1235,7 +1236,7 @@
|
||||||
//
|
//
|
||||||
#ifdef APSTUDIO_INVOKED
|
#ifdef APSTUDIO_INVOKED
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 291
|
#define _APS_NEXT_RESOURCE_VALUE 292
|
||||||
#define _APS_NEXT_COMMAND_VALUE 40596
|
#define _APS_NEXT_COMMAND_VALUE 40596
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1303
|
#define _APS_NEXT_CONTROL_VALUE 1303
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
|
|
|
@ -36,8 +36,9 @@ enum ESI
|
||||||
SI_POWERPADB = 4,
|
SI_POWERPADB = 4,
|
||||||
SI_ARKANOID = 5,
|
SI_ARKANOID = 5,
|
||||||
SI_MOUSE = 6,
|
SI_MOUSE = 6,
|
||||||
|
SI_SNES = 7,
|
||||||
|
|
||||||
SI_COUNT = SI_MOUSE
|
SI_COUNT = SI_SNES
|
||||||
};
|
};
|
||||||
|
|
||||||
inline const char* ESI_Name(ESI esi)
|
inline const char* ESI_Name(ESI esi)
|
||||||
|
@ -50,7 +51,8 @@ inline const char* ESI_Name(ESI esi)
|
||||||
"Power Pad A",
|
"Power Pad A",
|
||||||
"Power Pad B",
|
"Power Pad B",
|
||||||
"Arkanoid Paddle",
|
"Arkanoid Paddle",
|
||||||
"Mouse"
|
"Mouse",
|
||||||
|
"SNES Pad"
|
||||||
};
|
};
|
||||||
|
|
||||||
if(esi >= SI_NONE && esi <= SI_COUNT)
|
if(esi >= SI_NONE && esi <= SI_COUNT)
|
||||||
|
|
|
@ -88,6 +88,7 @@ extern bool movieSubtitles;
|
||||||
|
|
||||||
static uint8 joy_readbit[2];
|
static uint8 joy_readbit[2];
|
||||||
uint8 joy[4]={0,0,0,0}; //HACK - should be static but movie needs it
|
uint8 joy[4]={0,0,0,0}; //HACK - should be static but movie needs it
|
||||||
|
uint16 snesjoy[4]={0,0,0,0}; //HACK - should be static but movie needs it
|
||||||
static uint8 LastStrobe;
|
static uint8 LastStrobe;
|
||||||
uint8 RawReg4016 = 0; // Joystick strobe (W)
|
uint8 RawReg4016 = 0; // Joystick strobe (W)
|
||||||
|
|
||||||
|
@ -314,9 +315,64 @@ static void StrobeGP(int w)
|
||||||
|
|
||||||
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
//SNES pad
|
||||||
|
|
||||||
|
static void UpdateSNES(int w, void *data, int arg)
|
||||||
|
{
|
||||||
|
//LUA NOT SUPPORTED YET
|
||||||
|
if(w==0)
|
||||||
|
{
|
||||||
|
snesjoy[0]= ((uint32 *)joyports[0].ptr)[0];
|
||||||
|
snesjoy[2]= ((uint32 *)joyports[0].ptr)[2];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
snesjoy[1] = ((uint32 *)joyports[0].ptr)[1];
|
||||||
|
snesjoy[3] = ((uint32 *)joyports[0].ptr)[3];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
static void LogSNES(int w, MovieRecord* mr)
|
||||||
|
{
|
||||||
|
//not supported for SNES pad right noe
|
||||||
|
}
|
||||||
|
|
||||||
|
static void LoadSNES(int w, MovieRecord* mr)
|
||||||
|
{
|
||||||
|
//not supported for SNES pad right now
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static uint8 ReadSNES(int w)
|
||||||
|
{
|
||||||
|
//no fourscore support on snes (not clear how it would work)
|
||||||
|
|
||||||
|
uint8 ret;
|
||||||
|
|
||||||
|
if(joy_readbit[w]>=16)
|
||||||
|
ret = 1;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ret = ((snesjoy[w]>>(joy_readbit[w]))&1);
|
||||||
|
}
|
||||||
|
if(!fceuindbg)
|
||||||
|
joy_readbit[w]++;
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void StrobeSNES(int w)
|
||||||
|
{
|
||||||
|
joy_readbit[w]=0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static INPUTC GPC={ReadGP,0,StrobeGP,UpdateGP,0,0,LogGP,LoadGP};
|
static INPUTC GPC={ReadGP,0,StrobeGP,UpdateGP,0,0,LogGP,LoadGP};
|
||||||
static INPUTC GPCVS={ReadGPVS,0,StrobeGP,UpdateGP,0,0,LogGP,LoadGP};
|
static INPUTC GPCVS={ReadGPVS,0,StrobeGP,UpdateGP,0,0,LogGP,LoadGP};
|
||||||
|
static INPUTC GPSNES={ReadSNES,0,StrobeSNES,UpdateSNES,0,0,LogSNES,LoadSNES};
|
||||||
|
|
||||||
void FCEU_DrawInput(uint8 *buf)
|
void FCEU_DrawInput(uint8 *buf)
|
||||||
{
|
{
|
||||||
|
@ -399,6 +455,9 @@ static void SetInputStuff(int port)
|
||||||
joyports[port].driver= &GPC;
|
joyports[port].driver= &GPC;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case SI_SNES:
|
||||||
|
joyports[port].driver= &GPSNES;
|
||||||
|
break;
|
||||||
case SI_ARKANOID:
|
case SI_ARKANOID:
|
||||||
joyports[port].driver=FCEU_InitArkanoid(port);
|
joyports[port].driver=FCEU_InitArkanoid(port);
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue