From 7d2ba09fd7d43397e1e2915de0e9a7e8e0abb6c2 Mon Sep 17 00:00:00 2001 From: Jon Pacheco Date: Sun, 12 May 2019 11:41:46 +0100 Subject: Add fast forward hotkeys --- src/libui_sdl/main.cpp | 49 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 46 insertions(+), 3 deletions(-) (limited to 'src/libui_sdl/main.cpp') diff --git a/src/libui_sdl/main.cpp b/src/libui_sdl/main.cpp index 3eea39c..83cfb6e 100644 --- a/src/libui_sdl/main.cpp +++ b/src/libui_sdl/main.cpp @@ -81,6 +81,8 @@ uiMenuItem* MenuItem_ScreenGap[6]; uiMenuItem* MenuItem_ScreenLayout[3]; uiMenuItem* MenuItem_ScreenSizing[4]; +uiMenuItem* MenuItem_LimitFPS; + SDL_Thread* EmuThread; int EmuRunning; volatile int EmuStatus; @@ -127,6 +129,7 @@ s16* MicWavBuffer; u32 MicCommand; +bool HotkeyFPSToggle = false; void SetupScreenRects(int width, int height); @@ -497,6 +500,27 @@ int EmuThreadFunc(void* burp) HotkeyMask |= 0x1; } + if (JoyButtonPressed(Config::HKJoyMapping[HK_FastForwardToggle], njoybuttons, joybuttons, joyhat)) + { + HotkeyFPSToggle = !HotkeyFPSToggle; + Config::LimitFPS = !Config::LimitFPS; + uiMenuItemSetChecked(MenuItem_LimitFPS, Config::LimitFPS==1); + } + + if (!HotkeyFPSToggle) // For fast forward (hold) hotkey + { + if (JoyButtonHeld(Config::HKJoyMapping[HK_FastForward], njoybuttons, joybuttons, joyhat)) + { + Config::LimitFPS = false; + uiMenuItemSetChecked(MenuItem_LimitFPS, false); + } + else if (!Config::LimitFPS) + { + Config::LimitFPS = true; + uiMenuItemSetChecked(MenuItem_LimitFPS, true); + } + } + if (JoyButtonHeld(Config::HKJoyMapping[HK_Mic], njoybuttons, joybuttons, joyhat)) MicCommand |= 2; else @@ -745,6 +769,19 @@ int OnAreaKeyEvent(uiAreaHandler* handler, uiArea* area, uiAreaKeyEvent* evt) if (evt->Scancode == Config::HKKeyMapping[HK_Mic]) MicCommand &= ~1; + + if (evt->Scancode == Config::HKKeyMapping[HK_FastForwardToggle]) + { + HotkeyFPSToggle = !HotkeyFPSToggle; + Config::LimitFPS = !Config::LimitFPS; + uiMenuItemSetChecked(MenuItem_LimitFPS, Config::LimitFPS==1); + } + + if (evt->Scancode == Config::HKKeyMapping[HK_FastForward] && !HotkeyFPSToggle) + { + Config::LimitFPS = true; + uiMenuItemSetChecked(MenuItem_LimitFPS, Config::LimitFPS==1); + } } else if (!evt->Repeat) { @@ -776,6 +813,12 @@ int OnAreaKeyEvent(uiAreaHandler* handler, uiArea* area, uiAreaKeyEvent* evt) if (evt->Scancode == Config::HKKeyMapping[HK_Mic]) MicCommand |= 1; + if (evt->Scancode == Config::HKKeyMapping[HK_FastForward] && !HotkeyFPSToggle) + { + Config::LimitFPS = false; + uiMenuItemSetChecked(MenuItem_LimitFPS, Config::LimitFPS==1); + } + if (evt->Scancode == 0x57) // F11 NDS::debug(0); } @@ -1932,9 +1975,9 @@ int main(int argc, char** argv) uiMenuItemOnClicked(menuitem, OnSetScreenFiltering, NULL); uiMenuItemSetChecked(menuitem, Config::ScreenFilter==1); - menuitem = uiMenuAppendCheckItem(menu, "Limit framerate"); - uiMenuItemOnClicked(menuitem, OnSetLimitFPS, NULL); - uiMenuItemSetChecked(menuitem, Config::LimitFPS==1); + MenuItem_LimitFPS = uiMenuAppendCheckItem(menu, "Limit framerate"); + uiMenuItemOnClicked(MenuItem_LimitFPS, OnSetLimitFPS, NULL); + uiMenuItemSetChecked(MenuItem_LimitFPS, Config::LimitFPS==1); int w = Config::WindowWidth; -- cgit v1.2.3 From f769d6e23f7635910e3f6659c6b55d8c6a8e96ff Mon Sep 17 00:00:00 2001 From: Jon Pacheco Date: Tue, 14 May 2019 17:29:49 +0100 Subject: Ensure that 'Limit framerate' option is synced with the toggle hotkeys --- src/libui_sdl/main.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/libui_sdl/main.cpp') diff --git a/src/libui_sdl/main.cpp b/src/libui_sdl/main.cpp index 83cfb6e..b0e89a6 100644 --- a/src/libui_sdl/main.cpp +++ b/src/libui_sdl/main.cpp @@ -1685,6 +1685,7 @@ void OnSetLimitFPS(uiMenuItem* item, uiWindow* window, void* blarg) int chk = uiMenuItemChecked(item); if (chk != 0) Config::LimitFPS = true; else Config::LimitFPS = false; + HotkeyFPSToggle = !Config::LimitFPS; // ensure that the hotkey toggle indicator is synced with this menu item } void ApplyNewSettings(int type) -- cgit v1.2.3