mirror of https://github.com/snes9xgit/snes9x.git
win32: add cheat edit and search dialogs as hotkeys (#918)
This commit is contained in:
parent
bf83f0f605
commit
87f050feba
|
@ -445,7 +445,7 @@ bool IsReserved (WORD Key, int modifiers)
|
||||||
|| modifiers == CUSTKEY_ALT_MASK
|
|| modifiers == CUSTKEY_ALT_MASK
|
||||||
&& (Key == VK_F5 || Key == VK_F7 || Key == VK_F8 || Key == VK_F9
|
&& (Key == VK_F5 || Key == VK_F7 || Key == VK_F8 || Key == VK_F9
|
||||||
|| Key == 'R' || Key == 'T' || Key == /*VK_OEM_4*/0xDB || Key == /*VK_OEM_6*/0xDD
|
|| Key == 'R' || Key == 'T' || Key == /*VK_OEM_4*/0xDB || Key == /*VK_OEM_6*/0xDD
|
||||||
|| Key == 'E' || Key == 'A' || Key == VK_RETURN || Key == VK_DELETE))
|
|| Key == 'E' || Key == VK_RETURN || Key == VK_DELETE))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -508,7 +508,6 @@
|
||||||
#define ID_CHANNELS_CHANNEL7 40145
|
#define ID_CHANNELS_CHANNEL7 40145
|
||||||
#define ID_CHANNELS_CHANNEL8 40146
|
#define ID_CHANNELS_CHANNEL8 40146
|
||||||
#define ID_CHANNELS_ENABLEALL 40147
|
#define ID_CHANNELS_ENABLEALL 40147
|
||||||
#define ID_CHEAT_SEARCH_MODAL 40148
|
|
||||||
#define ID_SAVESCREENSHOT 40151
|
#define ID_SAVESCREENSHOT 40151
|
||||||
#define ID_FILE_LOAD_GAME 40152
|
#define ID_FILE_LOAD_GAME 40152
|
||||||
#define ID_FILE_LOADMULTICART 40153
|
#define ID_FILE_LOADMULTICART 40153
|
||||||
|
|
|
@ -802,8 +802,6 @@ IDC_CURSOR_SCOPE CURSOR "nodrop.cur"
|
||||||
|
|
||||||
IDR_SNES9X_ACCELERATORS ACCELERATORS
|
IDR_SNES9X_ACCELERATORS ACCELERATORS
|
||||||
BEGIN
|
BEGIN
|
||||||
"G", ID_CHEAT_ENTER, VIRTKEY, ALT, NOINVERT
|
|
||||||
"A", ID_CHEAT_SEARCH, VIRTKEY, ALT, NOINVERT
|
|
||||||
"O", ID_FILE_LOAD_GAME, VIRTKEY, CONTROL, NOINVERT
|
"O", ID_FILE_LOAD_GAME, VIRTKEY, CONTROL, NOINVERT
|
||||||
VK_F5, ID_OPTIONS_DISPLAY, VIRTKEY, ALT, NOINVERT
|
VK_F5, ID_OPTIONS_DISPLAY, VIRTKEY, ALT, NOINVERT
|
||||||
VK_F7, ID_OPTIONS_JOYPAD, VIRTKEY, ALT, NOINVERT
|
VK_F7, ID_OPTIONS_JOYPAD, VIRTKEY, ALT, NOINVERT
|
||||||
|
@ -1081,9 +1079,8 @@ BEGIN
|
||||||
END
|
END
|
||||||
POPUP "&Cheat", 0,MFT_STRING,MFS_ENABLED
|
POPUP "&Cheat", 0,MFT_STRING,MFS_ENABLED
|
||||||
BEGIN
|
BEGIN
|
||||||
MENUITEM "&Game Genie, Pro-Action Replay Codes\tAlt+G", ID_CHEAT_ENTER,MFT_STRING,MFS_ENABLED
|
MENUITEM "&Game Genie, Pro-Action Replay Codes", ID_CHEAT_ENTER,MFT_STRING,MFS_ENABLED
|
||||||
MENUITEM "&Search for New Cheats", ID_CHEAT_SEARCH_MODAL,MFT_STRING,MFS_ENABLED
|
MENUITEM "&Search for New Cheats", ID_CHEAT_SEARCH,MFT_STRING,MFS_ENABLED
|
||||||
MENUITEM "Search for New Cheats (active)\tAlt+A", 40064,MFT_STRING,MFS_ENABLED
|
|
||||||
MENUITEM "&Apply Cheats", ID_CHEAT_APPLY,MFT_STRING,MFS_CHECKED
|
MENUITEM "&Apply Cheats", ID_CHEAT_APPLY,MFT_STRING,MFS_CHECKED
|
||||||
END
|
END
|
||||||
POPUP "&Netplay", 0,MFT_STRING,MFS_ENABLED
|
POPUP "&Netplay", 0,MFT_STRING,MFS_ENABLED
|
||||||
|
|
|
@ -940,6 +940,8 @@ void WinRegisterConfigItems()
|
||||||
ADD(Mute);
|
ADD(Mute);
|
||||||
ADD(ToggleBackdrop);
|
ADD(ToggleBackdrop);
|
||||||
ADD(AspectRatio);
|
ADD(AspectRatio);
|
||||||
|
ADD(CheatEditorDialog);
|
||||||
|
ADD(CheatSearchDialog);
|
||||||
#undef ADD
|
#undef ADD
|
||||||
#undef ADDN
|
#undef ADDN
|
||||||
#undef CATEGORY
|
#undef CATEGORY
|
||||||
|
|
|
@ -137,6 +137,8 @@ Nintendo is a trademark.")
|
||||||
#define HOTKEYS_LABEL_4_12 TEXT("Load from file:")
|
#define HOTKEYS_LABEL_4_12 TEXT("Load from file:")
|
||||||
|
|
||||||
#define HOTKEYS_SWITCH_ASPECT_RATIO TEXT("Switch aspect Ratio:")
|
#define HOTKEYS_SWITCH_ASPECT_RATIO TEXT("Switch aspect Ratio:")
|
||||||
|
#define HOTKEYS_CHEAT_EDITOR_DIALOG TEXT("Cheats Editor Dialog:")
|
||||||
|
#define HOTKEYS_CHEAT_SEARCH_DIALOG TEXT("Cheats Search Dialog:")
|
||||||
|
|
||||||
// gaming buttons and axes
|
// gaming buttons and axes
|
||||||
#define GAMEDEVICE_JOYNUMPREFIX "(J%x)" // don't change this
|
#define GAMEDEVICE_JOYNUMPREFIX "(J%x)" // don't change this
|
||||||
|
|
|
@ -108,6 +108,8 @@ INT_PTR CALLBACK DlgCreateMovie(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lPara
|
||||||
INT_PTR CALLBACK DlgOpenMovie(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
INT_PTR CALLBACK DlgOpenMovie(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||||
HRESULT CALLBACK EnumModesCallback( LPDDSURFACEDESC lpDDSurfaceDesc, LPVOID lpContext);
|
HRESULT CALLBACK EnumModesCallback( LPDDSURFACEDESC lpDDSurfaceDesc, LPVOID lpContext);
|
||||||
int WinSearchCheatDatabase();
|
int WinSearchCheatDatabase();
|
||||||
|
void WinShowCheatEditorDialog();
|
||||||
|
void WinShowCheatSearchDialog();
|
||||||
|
|
||||||
VOID CALLBACK HotkeyTimer( UINT idEvent, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2);
|
VOID CALLBACK HotkeyTimer( UINT idEvent, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2);
|
||||||
|
|
||||||
|
@ -408,11 +410,16 @@ struct SCustomKeys CustomKeys = {
|
||||||
{0,0}}, // Select save slot 9
|
{0,0}}, // Select save slot 9
|
||||||
{'R',CUSTKEY_CTRL_MASK|CUSTKEY_ALT_MASK}, // Reset Game
|
{'R',CUSTKEY_CTRL_MASK|CUSTKEY_ALT_MASK}, // Reset Game
|
||||||
{0,0}, // Toggle Cheats
|
{0,0}, // Toggle Cheats
|
||||||
{0,0},
|
{0,0}, // Quit
|
||||||
{'R',0}, // Rewind
|
{'R',0}, // Rewind
|
||||||
|
{0,0}, // Save File Select
|
||||||
|
{0,0}, // Load File Select
|
||||||
|
{0,0}, // Mute
|
||||||
|
{0,0}, // Aspect ratio
|
||||||
|
{'G', CUSTKEY_ALT_MASK}, // Cheat Editor Dialog
|
||||||
|
{'A', CUSTKEY_ALT_MASK}, // Cheat Search Dialog
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct SSoundRates
|
struct SSoundRates
|
||||||
{
|
{
|
||||||
uint32 rate;
|
uint32 rate;
|
||||||
|
@ -1223,18 +1230,6 @@ int HandleKeyMessage(WPARAM wParam, LPARAM lParam)
|
||||||
FreezeUnfreezeDialog(FALSE);
|
FreezeUnfreezeDialog(FALSE);
|
||||||
hitHotKey = true;
|
hitHotKey = true;
|
||||||
}
|
}
|
||||||
if (wParam == CustomKeys.AspectRatio.key
|
|
||||||
&& modifiers == CustomKeys.AspectRatio.modifiers)
|
|
||||||
{
|
|
||||||
if (GUI.AspectWidth == ASPECT_WIDTH_4_3)
|
|
||||||
{
|
|
||||||
GUI.AspectWidth = ASPECT_WIDTH_8_7;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
GUI.AspectWidth = ASPECT_WIDTH_4_3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (wParam == CustomKeys.Mute.key
|
if (wParam == CustomKeys.Mute.key
|
||||||
&& modifiers == CustomKeys.Mute.modifiers)
|
&& modifiers == CustomKeys.Mute.modifiers)
|
||||||
|
@ -1247,8 +1242,55 @@ int HandleKeyMessage(WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
auto cmd = S9xGetCommandT("ToggleBackdrop");
|
auto cmd = S9xGetCommandT("ToggleBackdrop");
|
||||||
S9xApplyCommand(cmd, 1, 0);
|
S9xApplyCommand(cmd, 1, 0);
|
||||||
|
hitHotKey = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (wParam == CustomKeys.AspectRatio.key
|
||||||
|
&& modifiers == CustomKeys.AspectRatio.modifiers)
|
||||||
|
{
|
||||||
|
if (GUI.AspectWidth == ASPECT_WIDTH_4_3)
|
||||||
|
{
|
||||||
|
GUI.AspectWidth = ASPECT_WIDTH_8_7;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
GUI.AspectWidth = ASPECT_WIDTH_4_3;
|
||||||
|
}
|
||||||
|
hitHotKey = true;
|
||||||
|
}
|
||||||
|
if (wParam == CustomKeys.CheatEditorDialog.key
|
||||||
|
&& modifiers == CustomKeys.CheatEditorDialog.modifiers)
|
||||||
|
{
|
||||||
|
// update menu state
|
||||||
|
CheckMenuStates();
|
||||||
|
// check menu state if item is enabled
|
||||||
|
MENUITEMINFO mii = { 0 };
|
||||||
|
mii.cbSize = sizeof(mii);
|
||||||
|
mii.fMask = MIIM_STATE;
|
||||||
|
GetMenuItemInfo(GUI.hMenu, ID_CHEAT_ENTER, FALSE, &mii);
|
||||||
|
if ((mii.fState & MFS_DISABLED) != MFS_DISABLED)
|
||||||
|
{
|
||||||
|
WinShowCheatEditorDialog();
|
||||||
|
}
|
||||||
|
hitHotKey = true;
|
||||||
|
}
|
||||||
|
if (wParam == CustomKeys.CheatSearchDialog.key
|
||||||
|
&& modifiers == CustomKeys.CheatSearchDialog.modifiers)
|
||||||
|
{
|
||||||
|
// update menu state
|
||||||
|
CheckMenuStates();
|
||||||
|
// check menu state if item is enabled
|
||||||
|
MENUITEMINFO mii = { 0 };
|
||||||
|
mii.cbSize = sizeof(mii);
|
||||||
|
mii.fMask = MIIM_STATE;
|
||||||
|
GetMenuItemInfo(GUI.hMenu, ID_CHEAT_SEARCH, FALSE, &mii);
|
||||||
|
if((mii.fState & MFS_DISABLED) != MFS_DISABLED)
|
||||||
|
{
|
||||||
|
WinShowCheatSearchDialog();
|
||||||
|
}
|
||||||
|
hitHotKey = true;
|
||||||
|
}
|
||||||
|
|
||||||
//if(wParam == CustomKeys.BGLHack.key
|
//if(wParam == CustomKeys.BGLHack.key
|
||||||
//&& modifiers == CustomKeys.BGLHack.modifiers)
|
//&& modifiers == CustomKeys.BGLHack.modifiers)
|
||||||
//{
|
//{
|
||||||
|
@ -1512,6 +1554,32 @@ static bool startingMovie = false;
|
||||||
|
|
||||||
HWND cheatSearchHWND = NULL;
|
HWND cheatSearchHWND = NULL;
|
||||||
|
|
||||||
|
void WinShowCheatSearchDialog()
|
||||||
|
{
|
||||||
|
RestoreGUIDisplay();
|
||||||
|
if (!cheatSearchHWND) // create and show non-modal cheat search window
|
||||||
|
{
|
||||||
|
cheatSearchHWND = CreateDialog(g_hInst, MAKEINTRESOURCE(IDD_CHEAT_SEARCH), GUI.hWnd, DlgCheatSearch); // non-modal/modeless
|
||||||
|
ShowWindow(cheatSearchHWND, SW_SHOW);
|
||||||
|
}
|
||||||
|
else // already open so just reactivate the window
|
||||||
|
{
|
||||||
|
SetActiveWindow(cheatSearchHWND);
|
||||||
|
}
|
||||||
|
RestoreSNESDisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
void WinShowCheatEditorDialog()
|
||||||
|
{
|
||||||
|
RestoreGUIDisplay();
|
||||||
|
while (DialogBox(g_hInst, MAKEINTRESOURCE(IDD_CHEATER), GUI.hWnd, DlgCheater) == NC_SEARCHDB)
|
||||||
|
{
|
||||||
|
WinSearchCheatDatabase();
|
||||||
|
}
|
||||||
|
S9xSaveCheatFile(S9xGetFilename(".cht", CHEAT_DIR));
|
||||||
|
RestoreSNESDisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#define MOVIE_LOCKED_SETTING if(S9xMovieActive()) {MessageBox(GUI.hWnd,TEXT("That setting is locked while a movie is active."),TEXT("Notice"),MB_OK|MB_ICONEXCLAMATION); break;}
|
#define MOVIE_LOCKED_SETTING if(S9xMovieActive()) {MessageBox(GUI.hWnd,TEXT("That setting is locked while a movie is active."),TEXT("Notice"),MB_OK|MB_ICONEXCLAMATION); break;}
|
||||||
|
|
||||||
|
@ -2224,32 +2292,10 @@ LRESULT CALLBACK WinProc(
|
||||||
FreezeUnfreezeDialogPreview(TRUE);
|
FreezeUnfreezeDialogPreview(TRUE);
|
||||||
break;
|
break;
|
||||||
case ID_CHEAT_ENTER:
|
case ID_CHEAT_ENTER:
|
||||||
RestoreGUIDisplay ();
|
WinShowCheatEditorDialog();
|
||||||
while (DialogBox(g_hInst, MAKEINTRESOURCE(IDD_CHEATER), hWnd, DlgCheater) == NC_SEARCHDB)
|
|
||||||
{
|
|
||||||
WinSearchCheatDatabase();
|
|
||||||
}
|
|
||||||
S9xSaveCheatFile (S9xGetFilename (".cht", CHEAT_DIR));
|
|
||||||
RestoreSNESDisplay ();
|
|
||||||
break;
|
break;
|
||||||
case ID_CHEAT_SEARCH:
|
case ID_CHEAT_SEARCH:
|
||||||
RestoreGUIDisplay ();
|
WinShowCheatSearchDialog();
|
||||||
if(!cheatSearchHWND) // create and show non-modal cheat search window
|
|
||||||
{
|
|
||||||
cheatSearchHWND = CreateDialog(g_hInst, MAKEINTRESOURCE(IDD_CHEAT_SEARCH), hWnd, DlgCheatSearch); // non-modal/modeless
|
|
||||||
ShowWindow(cheatSearchHWND, SW_SHOW);
|
|
||||||
}
|
|
||||||
else // already open so just reactivate the window
|
|
||||||
{
|
|
||||||
SetActiveWindow(cheatSearchHWND);
|
|
||||||
}
|
|
||||||
RestoreSNESDisplay ();
|
|
||||||
break;
|
|
||||||
case ID_CHEAT_SEARCH_MODAL:
|
|
||||||
RestoreGUIDisplay ();
|
|
||||||
DialogBox(g_hInst, MAKEINTRESOURCE(IDD_CHEAT_SEARCH), hWnd, DlgCheatSearch); // modal
|
|
||||||
S9xSaveCheatFile (S9xGetFilename (".cht", CHEAT_DIR));
|
|
||||||
RestoreSNESDisplay ();
|
|
||||||
break;
|
break;
|
||||||
case ID_CHEAT_APPLY:
|
case ID_CHEAT_APPLY:
|
||||||
Settings.ApplyCheats = !Settings.ApplyCheats;
|
Settings.ApplyCheats = !Settings.ApplyCheats;
|
||||||
|
@ -3729,7 +3775,6 @@ static void CheckMenuStates ()
|
||||||
|
|
||||||
SetMenuItemInfo (GUI.hMenu, ID_FILE_RESET, FALSE, &mii);
|
SetMenuItemInfo (GUI.hMenu, ID_FILE_RESET, FALSE, &mii);
|
||||||
SetMenuItemInfo (GUI.hMenu, ID_CHEAT_ENTER, FALSE, &mii);
|
SetMenuItemInfo (GUI.hMenu, ID_CHEAT_ENTER, FALSE, &mii);
|
||||||
SetMenuItemInfo (GUI.hMenu, ID_CHEAT_SEARCH_MODAL, FALSE, &mii);
|
|
||||||
SetMenuItemInfo (GUI.hMenu, IDM_ROM_INFO, FALSE, &mii);
|
SetMenuItemInfo (GUI.hMenu, IDM_ROM_INFO, FALSE, &mii);
|
||||||
|
|
||||||
if (GUI.FullScreen)
|
if (GUI.FullScreen)
|
||||||
|
@ -8381,8 +8426,8 @@ static hotkey_dialog_item hotkey_dialog_items[MAX_SWITCHABLE_HOTKEY_DIALOG_PAGES
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{ &CustomKeys.AspectRatio, HOTKEYS_SWITCH_ASPECT_RATIO },
|
{ &CustomKeys.AspectRatio, HOTKEYS_SWITCH_ASPECT_RATIO },
|
||||||
{ NULL, _T("") },
|
{ &CustomKeys.CheatEditorDialog, HOTKEYS_CHEAT_EDITOR_DIALOG },
|
||||||
{ NULL, _T("") },
|
{ &CustomKeys.CheatSearchDialog, HOTKEYS_CHEAT_SEARCH_DIALOG },
|
||||||
{ NULL, _T("") },
|
{ NULL, _T("") },
|
||||||
{ NULL, _T("") },
|
{ NULL, _T("") },
|
||||||
{ NULL, _T("") },
|
{ NULL, _T("") },
|
||||||
|
@ -10124,7 +10169,12 @@ INT_PTR CALLBACK DlgCheatSearch(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lPara
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
default: return false;
|
case WM_MENUCHAR:
|
||||||
|
// get rid of asterisk sound when pressing non existing menu hotkey - would play when opening
|
||||||
|
// with default alt + a hotkey
|
||||||
|
SetWindowLong(hDlg, DWLP_MSGRESULT, (MNC_CLOSE << 16));
|
||||||
|
return true;
|
||||||
|
default: return false;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -352,6 +352,8 @@ struct SCustomKeys {
|
||||||
SCustomKey LoadFileSelect;
|
SCustomKey LoadFileSelect;
|
||||||
SCustomKey Mute;
|
SCustomKey Mute;
|
||||||
SCustomKey AspectRatio;
|
SCustomKey AspectRatio;
|
||||||
|
SCustomKey CheatEditorDialog;
|
||||||
|
SCustomKey CheatSearchDialog;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct SJoypad {
|
struct SJoypad {
|
||||||
|
|
Loading…
Reference in New Issue