diff --git a/src/frontend/qt_sdl/EmuInstance.h b/src/frontend/qt_sdl/EmuInstance.h index 5cdae0870f..9b21d27038 100755 --- a/src/frontend/qt_sdl/EmuInstance.h +++ b/src/frontend/qt_sdl/EmuInstance.h @@ -56,6 +56,7 @@ enum HK_GuitarGripRed, HK_GuitarGripYellow, HK_GuitarGripBlue, + HK_SpeedStep, HK_MAX }; @@ -303,6 +304,7 @@ class EmuInstance double slowmoFPS; bool fastForwardToggled; bool slowmoToggled; + bool speedStepToggled; bool doAudioSync; private: diff --git a/src/frontend/qt_sdl/EmuInstanceInput.cpp b/src/frontend/qt_sdl/EmuInstanceInput.cpp index 5f8e7478da..9fb34f76c6 100644 --- a/src/frontend/qt_sdl/EmuInstanceInput.cpp +++ b/src/frontend/qt_sdl/EmuInstanceInput.cpp @@ -67,7 +67,8 @@ const char* EmuInstance::hotkeyNames[HK_MAX] = "HK_GuitarGripGreen", "HK_GuitarGripRed", "HK_GuitarGripYellow", - "HK_GuitarGripBlue" + "HK_GuitarGripBlue", + "HK_SpeedStep" }; std::shared_ptr EmuInstance::joyMutexGlobal = nullptr; diff --git a/src/frontend/qt_sdl/EmuThread.cpp b/src/frontend/qt_sdl/EmuThread.cpp index df690a88f1..c41b4d0367 100755 --- a/src/frontend/qt_sdl/EmuThread.cpp +++ b/src/frontend/qt_sdl/EmuThread.cpp @@ -149,6 +149,7 @@ void EmuThread::run() bool slowmo = false; emuInstance->fastForwardToggled = false; emuInstance->slowmoToggled = false; + emuInstance->speedStepToggled = false; while (emuStatus != emuStatus_Exit) { @@ -332,6 +333,7 @@ void EmuThread::run() if (emuInstance->hotkeyPressed(HK_FastForwardToggle)) emuInstance->fastForwardToggled = !emuInstance->fastForwardToggled; if (emuInstance->hotkeyPressed(HK_SlowMoToggle)) emuInstance->slowmoToggled = !emuInstance->slowmoToggled; + if (emuInstance->hotkeyPressed(HK_SpeedStep)) emuInstance->speedStepToggled = !emuInstance->speedStepToggled; if (emuInstance->hotkeyPressed(HK_AudioMuteToggle)) emuInstance->toggleAudioMute(); @@ -357,6 +359,7 @@ void EmuThread::run() if (slowmo) emuInstance->curFPS = emuInstance->slowmoFPS; else if (fastforward) emuInstance->curFPS = emuInstance->fastForwardFPS; + else if (emuInstance->speedStepToggled) emuInstance->curFPS = emuInstance->targetFPS * 2.0; else if (!emuInstance->doLimitFPS && !emuInstance->doAudioSync) emuInstance->curFPS = 1000.0; else emuInstance->curFPS = emuInstance->targetFPS; diff --git a/src/frontend/qt_sdl/InputConfig/InputConfigDialog.h b/src/frontend/qt_sdl/InputConfig/InputConfigDialog.h index 462cdd6cbb..c245478551 100644 --- a/src/frontend/qt_sdl/InputConfig/InputConfigDialog.h +++ b/src/frontend/qt_sdl/InputConfig/InputConfigDialog.h @@ -68,7 +68,8 @@ static constexpr std::initializer_list hk_general = HK_PowerButton, HK_VolumeUp, HK_VolumeDown, - HK_AudioMuteToggle + HK_AudioMuteToggle, + HK_SpeedStep }; static constexpr std::initializer_list hk_general_labels = @@ -89,7 +90,8 @@ static constexpr std::initializer_list hk_general_labels = "DSi Power button", "DSi Volume up", "DSi Volume down", - "Toggle audio mute" + "Toggle audio mute", + "Toggle 2x speed" }; static_assert(hk_general.size() == hk_general_labels.size());