From 8f6dfda42f8b9db402c8af8c3547b3dc73f16d67 Mon Sep 17 00:00:00 2001 From: thrust26 Date: Mon, 27 May 2019 23:01:03 +0200 Subject: [PATCH] refactor ESC key handling make remaining control hotkeys configurable --- src/common/PJoystickHandler.cxx | 4 +- src/common/PKeyboardHandler.cxx | 142 ++--------- src/common/PKeyboardHandler.hxx | 1 - src/debugger/Debugger.cxx | 2 +- src/emucore/Event.hxx | 12 +- src/emucore/EventHandler.cxx | 440 ++++++++++++++++++++------------ src/emucore/EventHandler.hxx | 6 +- src/gui/CommandDialog.cxx | 2 +- src/gui/MinUICommandDialog.cxx | 2 +- 9 files changed, 315 insertions(+), 296 deletions(-) diff --git a/src/common/PJoystickHandler.cxx b/src/common/PJoystickHandler.cxx index 745ffae2b..f6536ff37 100644 --- a/src/common/PJoystickHandler.cxx +++ b/src/common/PJoystickHandler.cxx @@ -296,7 +296,7 @@ void PhysicalJoystickHandler::setStickDefaultMapping(int stick, // Left joystick (assume joystick zero or two, buttons two..four) setDefaultBtn(stick, 2, Event::CmdMenuMode); setDefaultBtn(stick, 3, Event::OptionsMenuMode); - setDefaultBtn(stick, 4, Event::LauncherMode); + setDefaultBtn(stick, 4, Event::ExitMode); #endif break; case 1: @@ -324,7 +324,7 @@ void PhysicalJoystickHandler::setStickDefaultMapping(int stick, // Right joystick (assume joystick one or three, buttons two..four) setDefaultBtn(stick, 2, Event::CmdMenuMode); setDefaultBtn(stick, 3, Event::OptionsMenuMode); - setDefaultBtn(stick, 4, Event::LauncherMode); + setDefaultBtn(stick, 4, Event::ExitMode); setDefaultBtn(stick, 5, Event::Rewind); setDefaultBtn(stick, 7, Event::ConsoleSelect); setDefaultBtn(stick, 8, Event::ConsoleReset); diff --git a/src/common/PKeyboardHandler.cxx b/src/common/PKeyboardHandler.cxx index daedaa2ab..92e85fca1 100644 --- a/src/common/PKeyboardHandler.cxx +++ b/src/common/PKeyboardHandler.cxx @@ -147,12 +147,13 @@ void PhysicalKeyboardHandler::setDefaultMapping(Event::Type event, EventMode mod setDefaultKey(Event::CmdMenuMode , KBDK_BACKSLASH); setDefaultKey(Event::TimeMachineMode , KBDK_T); setDefaultKey(Event::DebuggerMode , KBDK_GRAVE); - setDefaultKey(Event::LauncherMode , KBDK_ESCAPE); + setDefaultKey(Event::ExitMode , KBDK_ESCAPE); #ifdef BSPF_MACOS setDefaultKey(Event::Quit , KBDK_Q, KBDM_ALT); #else setDefaultKey(Event::Quit , KBDK_Q, KBDM_CTRL); #endif + setDefaultKey(Event::ReloadConsole , KBDK_R, KBDM_CTRL); setDefaultKey(Event::VidmodeDecrease , KBDK_MINUS, KBDM_ALT); setDefaultKey(Event::VidmodeIncrease , KBDK_EQUALS, KBDM_ALT); @@ -173,6 +174,23 @@ void PhysicalKeyboardHandler::setDefaultMapping(Event::Type event, EventMode mod setDefaultKey(Event::NextAttribute , KBDK_9, KBDM_ALT); setDefaultKey(Event::DecreaseAttribute , KBDK_0, KBDM_SHIFT | KBDM_ALT); setDefaultKey(Event::IncreaseAttribute , KBDK_0, KBDM_ALT); + setDefaultKey(Event::DecreasePhosphor , KBDK_I, KBDM_ALT); + setDefaultKey(Event::IncreasePhosphor , KBDK_O, KBDM_ALT); + setDefaultKey(Event::TogglePhosphor , KBDK_P, KBDM_ALT); + setDefaultKey(Event::ToggleColorLoss , KBDK_L, KBDM_CTRL); + setDefaultKey(Event::TogglePalette , KBDK_P, KBDM_CTRL); + setDefaultKey(Event::ToggleJitter , KBDK_J, KBDM_ALT); + setDefaultKey(Event::ToggleFrameStats , KBDK_L, KBDM_ALT); + setDefaultKey(Event::ToggleTimeMachine , KBDK_T, KBDM_ALT); + #ifdef PNG_SUPPORT + setDefaultKey(Event::ToggleContSnapshots , KBDK_S, KBDM_ALT); + setDefaultKey(Event::ToggleContSnapshotsFrame, KBDK_S, KBDM_SHIFT | KBDM_ALT); + #endif + setDefaultKey(Event::HandleMouseControl , KBDK_0, KBDM_CTRL); + setDefaultKey(Event::ToggleGrabMouse , KBDK_G, KBDM_CTRL); + setDefaultKey(Event::ToggleSAPortOrder , KBDK_1, KBDM_CTRL); + setDefaultKey(Event::DecreaseFormat , KBDK_F, KBDM_SHIFT | KBDM_CTRL); + setDefaultKey(Event::IncreaseFormat , KBDK_F, KBDM_CTRL); setDefaultKey(Event::ToggleP0Collision , KBDK_Z, KBDM_SHIFT | KBDM_ALT); setDefaultKey(Event::ToggleP0Bit , KBDK_Z, KBDM_ALT); @@ -198,7 +216,7 @@ void PhysicalKeyboardHandler::setDefaultMapping(Event::Type event, EventMode mod setDefaultKey(Event::ConsoleLeftDiffToggle , KBDK_F6); // front ("SKILL P1") setDefaultKey(Event::ConsoleRightDiffToggle , KBDK_F8); // front ("SKILL P2") setDefaultKey(Event::CmdMenuMode , KBDK_F13); // back ("4:3","16:9") - setDefaultKey(Event::LauncherMode , KBDK_BACKSPACE); // back ("FRY") + setDefaultKey(Event::ExitMode , KBDK_BACKSPACE); // back ("FRY") #endif break; @@ -301,39 +319,15 @@ void PhysicalKeyboardHandler::handleEvent(StellaKey key, StellaMod mod, bool pre // An attempt to speed up event processing; we quickly check for // Control or Alt/Cmd combos first // and don't pass the key on if we've already taken care of it - if(handleAltEvent(key, mod, pressed) || handleControlEvent(key, mod, pressed)) + if(handleAltEvent(key, mod, pressed)) return; + // TODO: myUseCtrlKeyFlag? EventHandlerState estate = myHandler.state(); // Arrange the logic to take advantage of short-circuit evaluation if(!(StellaModTest::isControl(mod) || StellaModTest::isShift(mod) || StellaModTest::isAlt(mod))) { - // Special handling for Escape key - // Basically, exit whichever mode we're currently in - if(pressed && key == KBDK_ESCAPE) - { - switch(estate) - { - case EventHandlerState::PAUSE: - myHandler.changeStateByEvent(Event::PauseMode); - return; - case EventHandlerState::CMDMENU: - myHandler.changeStateByEvent(Event::CmdMenuMode); - return; - case EventHandlerState::TIMEMACHINE: - myHandler.changeStateByEvent(Event::TimeMachineMode); - return; -#if 0 // FIXME - exits ROM too, when it should just go back to ROM - case EventHandlerState::DEBUGGER: - myHandler.changeStateByEvent(Event::DebuggerMode); - return; -#endif - default: - break; - } - } - // Handle keys which switch eventhandler state if (!pressed && myHandler.changeStateByEvent(myKeyMap.get(kEmulationMode, key, mod))) return; @@ -402,36 +396,6 @@ bool PhysicalKeyboardHandler::handleAltEvent(StellaKey key, StellaMod mod, bool myOSystem.console().changeYStart(-1); break; - case KBDK_I: // Alt-i decreases phosphor blend - myOSystem.console().changePhosphor(-1); - break; - - case KBDK_O: // Alt-o increases phosphor blend - myOSystem.console().changePhosphor(+1); - break; - - case KBDK_P: // Alt-p toggles phosphor effect - myOSystem.console().togglePhosphor(); - break; - - case KBDK_J: // Alt-j toggles scanline jitter - myOSystem.console().toggleJitter(); - break; - - case KBDK_L: - myOSystem.frameBuffer().toggleFrameStats(); - break; - - case KBDK_T: // Alt-t toggles Time Machine - myOSystem.state().toggleTimeMachine(); - break; - - #ifdef PNG_SUPPORT - case KBDK_S: - myOSystem.png().toggleContinuousSnapshots(StellaModTest::isShift(mod)); - break; - #endif - default: handled = false; break; @@ -444,64 +408,4 @@ bool PhysicalKeyboardHandler::handleAltEvent(StellaKey key, StellaMod mod, bool handled = false; return handled; -} - -// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -bool PhysicalKeyboardHandler::handleControlEvent(StellaKey key, StellaMod mod, bool pressed) -{ - bool handled = true; - - if(StellaModTest::isControl(mod) && pressed && myUseCtrlKeyFlag) - { - EventHandlerState estate = myHandler.state(); - // These only work when in emulation mode - if(estate == EventHandlerState::EMULATION || estate == EventHandlerState::PAUSE) - { - switch(key) - { - case KBDK_0: // Ctrl-0 switches between mouse control modes - myHandler.handleMouseControl(); - break; - - case KBDK_1: // Ctrl-1 swaps Stelladaptor/2600-daptor ports - myHandler.toggleSAPortOrder(); - break; - - case KBDK_F: // (Shift) Ctrl-f toggles NTSC/PAL/SECAM mode - myOSystem.console().toggleFormat(StellaModTest::isShift(mod) ? -1 : 1); - break; - - case KBDK_G: // Ctrl-g (un)grabs mouse - if(!myOSystem.frameBuffer().fullScreen()) - { - myOSystem.frameBuffer().toggleGrabMouse(); - myOSystem.frameBuffer().showMessage(myOSystem.frameBuffer().grabMouseEnabled() - ? "Grab mouse enabled" : "Grab mouse disabled"); - } - break; - - case KBDK_L: // Ctrl-l toggles PAL color-loss effect - myOSystem.console().toggleColorLoss(); - break; - - case KBDK_P: // Ctrl-p toggles different palettes - myOSystem.console().togglePalette(); - break; - - case KBDK_R: // Ctrl-r reloads the currently loaded ROM - myOSystem.reloadConsole(); - break; - - default: - handled = false; - break; - } // switch - } - else - handled = false; - } // control - else - handled = false; - - return handled; -} +} \ No newline at end of file diff --git a/src/common/PKeyboardHandler.hxx b/src/common/PKeyboardHandler.hxx index 29210dd25..0a239814b 100644 --- a/src/common/PKeyboardHandler.hxx +++ b/src/common/PKeyboardHandler.hxx @@ -68,7 +68,6 @@ class PhysicalKeyboardHandler private: bool handleAltEvent(StellaKey key, StellaMod mod, bool pressed); - bool handleControlEvent(StellaKey key, StellaMod mod, bool pressed); OSystem& myOSystem; EventHandler& myHandler; diff --git a/src/debugger/Debugger.cxx b/src/debugger/Debugger.cxx index f3803321a..93397e167 100644 --- a/src/debugger/Debugger.cxx +++ b/src/debugger/Debugger.cxx @@ -154,7 +154,7 @@ bool Debugger::startWithFatalError(const string& message) void Debugger::quit(bool exitrom) { if(exitrom) - myOSystem.eventHandler().handleEvent(Event::LauncherMode, true); + myOSystem.eventHandler().handleEvent(Event::ExitMode, true); else { myOSystem.eventHandler().leaveDebugMode(); diff --git a/src/emucore/Event.hxx b/src/emucore/Event.hxx index 3a234eaa2..3037f3b02 100644 --- a/src/emucore/Event.hxx +++ b/src/emucore/Event.hxx @@ -74,7 +74,7 @@ class Event MouseButtonLeftValue, MouseButtonRightValue, ChangeState, LoadState, SaveState, TakeSnapshot, Quit, - PauseMode, OptionsMenuMode, CmdMenuMode, TimeMachineMode, DebuggerMode, LauncherMode, + PauseMode, OptionsMenuMode, CmdMenuMode, TimeMachineMode, DebuggerMode, ExitMode, Fry, VolumeDecrease, VolumeIncrease, SoundToggle, VidmodeDecrease, VidmodeIncrease, Rewind, Unwind, @@ -92,6 +92,16 @@ class Event ToggleBLCollision, ToggleBLBit, TogglePFCollision, TogglePFBit, ToggleCollisions, ToggleBits, ToggleFixedColors, + DecreasePhosphor, IncreasePhosphor, TogglePhosphor, ToggleJitter, + ToggleFrameStats, ToggleTimeMachine, + #ifdef PNG_SUPPORT + ToggleContSnapshots, ToggleContSnapshotsFrame, + #endif*/ + ToggleColorLoss, TogglePalette, + + HandleMouseControl, ToggleGrabMouse, ToggleSAPortOrder, + DecreaseFormat, IncreaseFormat, ReloadConsole, + LastType }; diff --git a/src/emucore/EventHandler.cxx b/src/emucore/EventHandler.cxx index b6bc19821..13ae57eee 100644 --- a/src/emucore/EventHandler.cxx +++ b/src/emucore/EventHandler.cxx @@ -385,6 +385,10 @@ void EventHandler::handleEvent(Event::Type event, bool pressed) if(myPKeyHandler->useCtrlKey()) myFryingFlag = pressed; return; + case Event::ReloadConsole: + if (pressed) myOSystem.reloadConsole(); + return; + case Event::VolumeDecrease: if(pressed) myOSystem.sound().adjustVolume(-1); return; @@ -477,79 +481,131 @@ void EventHandler::handleEvent(Event::Type event, bool pressed) } return; + case Event::DecreasePhosphor: + if (pressed) myOSystem.console().changePhosphor(-1); + return; + + case Event::IncreasePhosphor: + if (pressed) myOSystem.console().changePhosphor(1); + return; + + case Event::TogglePhosphor: + if (pressed) myOSystem.console().togglePhosphor(); + return; + + case Event::ToggleColorLoss: + if (pressed) myOSystem.console().toggleColorLoss(); + return; + + case Event::TogglePalette: + if (pressed) myOSystem.console().togglePalette(); + return; + + case Event::ToggleJitter: + if (pressed) myOSystem.console().toggleJitter(); + return; + + case Event::ToggleFrameStats: + if (pressed) myOSystem.frameBuffer().toggleFrameStats(); + return; + + case Event::ToggleTimeMachine: + if (pressed) myOSystem.state().toggleTimeMachine(); + return; + + #ifdef PNG_SUPPORT + case Event::ToggleContSnapshots: + if (pressed) myOSystem.png().toggleContinuousSnapshots(false); + return; + + case Event::ToggleContSnapshotsFrame: + if (pressed) myOSystem.png().toggleContinuousSnapshots(true); + return; + #endif + + case Event::HandleMouseControl: + if (pressed) handleMouseControl(); + return; + + case Event::ToggleSAPortOrder: + if (pressed) toggleSAPortOrder(); + return; + + case Event::DecreaseFormat: + if (pressed) myOSystem.console().toggleFormat(-1); + return; + + case Event::IncreaseFormat: + if (pressed) myOSystem.console().toggleFormat(1); + return; + + case Event::ToggleGrabMouse: + if (pressed && !myOSystem.frameBuffer().fullScreen()) + { + myOSystem.frameBuffer().toggleGrabMouse(); + myOSystem.frameBuffer().showMessage(myOSystem.frameBuffer().grabMouseEnabled() + ? "Grab mouse enabled" : "Grab mouse disabled"); + } + return; + case Event::ToggleP0Collision: - if (pressed) - myOSystem.console().toggleP0Collision(); + if (pressed) myOSystem.console().toggleP0Collision(); return; case Event::ToggleP0Bit: - if (pressed) - myOSystem.console().toggleP0Bit(); + if (pressed) myOSystem.console().toggleP0Bit(); return; case Event::ToggleP1Collision: - if (pressed) - myOSystem.console().toggleP1Collision(); + if (pressed) myOSystem.console().toggleP1Collision(); return; case Event::ToggleP1Bit: - if (pressed) - myOSystem.console().toggleP1Bit(); + if (pressed) myOSystem.console().toggleP1Bit(); return; case Event::ToggleM0Collision: - if (pressed) - myOSystem.console().toggleM0Collision(); + if (pressed) myOSystem.console().toggleM0Collision(); return; case Event::ToggleM0Bit: - if (pressed) - myOSystem.console().toggleM0Bit(); + if (pressed) myOSystem.console().toggleM0Bit(); return; case Event::ToggleM1Collision: - if (pressed) - myOSystem.console().toggleM1Collision(); + if (pressed) myOSystem.console().toggleM1Collision(); return; case Event::ToggleM1Bit: - if (pressed) - myOSystem.console().toggleM1Bit(); + if (pressed) myOSystem.console().toggleM1Bit(); return; case Event::ToggleBLCollision: - if (pressed) - myOSystem.console().toggleBLCollision(); + if (pressed) myOSystem.console().toggleBLCollision(); return; case Event::ToggleBLBit: - if (pressed) - myOSystem.console().toggleBLBit(); + if (pressed) myOSystem.console().toggleBLBit(); return; case Event::TogglePFCollision: - if (pressed) - myOSystem.console().togglePFCollision(); + if (pressed) myOSystem.console().togglePFCollision(); return; case Event::TogglePFBit: - if (pressed) - myOSystem.console().togglePFBit(); + if (pressed) myOSystem.console().togglePFBit(); return; case Event::ToggleFixedColors: - if (pressed) - myOSystem.console().toggleFixedColors(); + if (pressed) myOSystem.console().toggleFixedColors(); return; case Event::ToggleCollisions: - if (pressed) - myOSystem.console().toggleCollisions(); + if (pressed) myOSystem.console().toggleCollisions(); return; case Event::ToggleBits: - if (pressed) - myOSystem.console().toggleBits(); + if (pressed) myOSystem.console().toggleBits(); return; case Event::SaveState: @@ -576,18 +632,44 @@ void EventHandler::handleEvent(Event::Type event, bool pressed) if(pressed) myOSystem.frameBuffer().tiaSurface().saveSnapShot(); return; - case Event::LauncherMode: - if((myState == EventHandlerState::EMULATION || myState == EventHandlerState::CMDMENU || - myState == EventHandlerState::DEBUGGER) && pressed) + case Event::ExitMode: + // Special handling for Escape key + // Basically, exit whichever mode we're currently in + switch (myState) { - // Go back to the launcher, or immediately quit - if(myOSystem.settings().getBool("exitlauncher") || - myOSystem.launcherUsed()) - myOSystem.createLauncher(); - else - handleEvent(Event::Quit); + case EventHandlerState::PAUSE: + if (pressed) changeStateByEvent(Event::PauseMode); + return; + + case EventHandlerState::CMDMENU: + if (pressed) changeStateByEvent(Event::CmdMenuMode); + return; + + case EventHandlerState::TIMEMACHINE: + if (pressed) changeStateByEvent(Event::TimeMachineMode); + return; + + #if 0 // FIXME - exits ROM too, when it should just go back to ROM + case EventHandlerState::DEBUGGER: + if (pressed) changeStateByEvent(Event::DebuggerMode); + return; + #endif + + case EventHandlerState::EMULATION: + if (pressed) + { + // Go back to the launcher, or immediately quit + if (myOSystem.settings().getBool("exitlauncher") || + myOSystem.launcherUsed()) + myOSystem.createLauncher(); + else + handleEvent(Event::Quit); + } + return; + + default: + return; } - return; case Event::Quit: if(pressed) @@ -1421,146 +1503,166 @@ void EventHandler::setState(EventHandlerState state) // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - EventHandler::ActionList EventHandler::ourEmulActionList[EMUL_ACTIONLIST_SIZE] = { - { Event::ConsoleSelect, "Select", "", true }, - { Event::ConsoleReset, "Reset", "", true }, - { Event::ConsoleColor, "Color TV", "", true }, - { Event::ConsoleBlackWhite, "Black & White TV", "", true }, - { Event::ConsoleColorToggle, "Swap Color / B&W TV", "", true }, - { Event::Console7800Pause, "7800 Pause Key", "", true }, - { Event::ConsoleLeftDiffA, "P0 Difficulty A", "", true }, - { Event::ConsoleLeftDiffB, "P0 Difficulty B", "", true }, - { Event::ConsoleLeftDiffToggle, "P0 swap Difficulty", "", true }, - { Event::ConsoleRightDiffA, "P1 Difficulty A", "", true }, - { Event::ConsoleRightDiffB, "P1 Difficulty B", "", true }, - { Event::ConsoleRightDiffToggle, "P1 swap Difficulty", "", true }, - { Event::SaveState, "Save state", "", false }, - { Event::ChangeState, "Change state", "", false }, - { Event::LoadState, "Load state", "", false }, - { Event::TakeSnapshot, "Snapshot", "", false }, - { Event::Fry, "Fry cartridge", "", false }, - { Event::VidmodeDecrease, "Previous zoom level", "", false }, - { Event::VidmodeIncrease, "Next zoom level", "", false }, - { Event::ToggleFullScreen, "Toggle fullscreen", "", false }, + { Event::ConsoleSelect, "Select", "", true }, + { Event::ConsoleReset, "Reset", "", true }, + { Event::ConsoleColor, "Color TV", "", true }, + { Event::ConsoleBlackWhite, "Black & White TV", "", true }, + { Event::ConsoleColorToggle, "Swap Color / B&W TV", "", true }, + { Event::Console7800Pause, "7800 Pause Key", "", true }, + { Event::ConsoleLeftDiffA, "P0 Difficulty A", "", true }, + { Event::ConsoleLeftDiffB, "P0 Difficulty B", "", true }, + { Event::ConsoleLeftDiffToggle, "P0 swap Difficulty", "", true }, + { Event::ConsoleRightDiffA, "P1 Difficulty A", "", true }, + { Event::ConsoleRightDiffB, "P1 Difficulty B", "", true }, + { Event::ConsoleRightDiffToggle, "P1 swap Difficulty", "", true }, + { Event::SaveState, "Save state", "", false }, + { Event::ChangeState, "Change state", "", false }, + { Event::LoadState, "Load state", "", false }, + { Event::TakeSnapshot, "Snapshot", "", false }, + { Event::Fry, "Fry cartridge", "", false }, + { Event::VidmodeDecrease, "Previous zoom level", "", false }, + { Event::VidmodeIncrease, "Next zoom level", "", false }, + { Event::ToggleFullScreen, "Toggle fullscreen", "", false }, - { Event::VidmodeStd, "Disable TV effects", "", false }, - { Event::VidmodeRGB, "Select 'RGB' preset", "", false }, - { Event::VidmodeSVideo, "Select 'S-Video' preset", "", false }, - { Event::VidModeComposite, "Select 'Composite' preset", "", false }, - { Event::VidModeBad, "Select 'Badly adjusted' preset", "", false }, - { Event::VidModeCustom, "Select 'Custom' preset", "", false }, - { Event::PreviousAttribute, "Select previous 'Custom' attribute", "", false }, - { Event::NextAttribute, "Select next 'Custom' attribute", "", false }, - { Event::DecreaseAttribute, "Decrease selected 'Custom' attribute", "", false }, - { Event::IncreaseAttribute, "Increase selected 'Custom' attribute", "", false }, - { Event::ScanlinesDecrease, "Decrease scanlines", "", false }, - { Event::ScanlinesIncrease, "Increase scanlines", "", false }, - { Event::VolumeDecrease, "Decrease volume", "", false }, - { Event::VolumeIncrease, "Increase volume", "", false }, - { Event::SoundToggle, "Toggle sound", "", false }, - { Event::PauseMode, "Pause", "", false }, - { Event::OptionsMenuMode, "Enter options menu UI", "", false }, - { Event::CmdMenuMode, "Toggle command menu UI", "", false }, - { Event::TimeMachineMode, "Toggle time machine UI", "", false }, - { Event::Rewind, "Rewind game", "", false }, - { Event::Unwind, "Unwind game", "", false }, - { Event::DebuggerMode, "Toggle debugger mode", "", false }, - { Event::LauncherMode, "Enter ROM launcher", "", false }, - { Event::Quit, "Quit", "", false }, + { Event::VidmodeStd, "Disable TV effects", "", false }, + { Event::VidmodeRGB, "Select 'RGB' preset", "", false }, + { Event::VidmodeSVideo, "Select 'S-Video' preset", "", false }, + { Event::VidModeComposite, "Select 'Composite' preset", "", false }, + { Event::VidModeBad, "Select 'Badly adjusted' preset", "", false }, + { Event::VidModeCustom, "Select 'Custom' preset", "", false }, + { Event::PreviousAttribute, "Select previous 'Custom' attribute", "", false }, + { Event::NextAttribute, "Select next 'Custom' attribute", "", false }, + { Event::DecreaseAttribute, "Decrease selected 'Custom' attribute", "", false }, + { Event::IncreaseAttribute, "Increase selected 'Custom' attribute", "", false }, + { Event::ScanlinesDecrease, "Decrease scanlines", "", false }, + { Event::ScanlinesIncrease, "Increase scanlines", "", false }, + { Event::TogglePhosphor, "Toggle 'phosphor' effect", "", false }, + { Event::DecreasePhosphor, "Decrease 'phosphor' blend", "", false }, + { Event::IncreasePhosphor, "Increase 'phosphor' blend", "", false }, + { Event::DecreaseFormat, "Decrease display format", "", false }, + { Event::IncreaseFormat, "Increase display format", "", false }, + { Event::TogglePalette, "Switch palette (Standard/Z26/User)", "", false }, + { Event::ToggleColorLoss, "Toggle PAL color-loss effect", "", false }, +#ifdef PNG_SUPPORT + { Event::ToggleContSnapshots, "Save cont. PNG snapsh. (as defined)", "", false }, + { Event::ToggleContSnapshotsFrame,"Save cont. PNG snapsh. (every frame)", "", false }, +#endif + { Event::ToggleTimeMachine, "Toggle 'Time Machine' mode", "", false }, - { Event::JoystickZeroUp, "P0 Joystick Up", "", true }, - { Event::JoystickZeroDown, "P0 Joystick Down", "", true }, - { Event::JoystickZeroLeft, "P0 Joystick Left", "", true }, - { Event::JoystickZeroRight, "P0 Joystick Right", "", true }, - { Event::JoystickZeroFire, "P0 Joystick Fire", "", true }, - { Event::JoystickZeroFire5, "P0 Booster Top Booster Button", "", true }, - { Event::JoystickZeroFire9, "P0 Booster Handle Grip Trigger", "", true }, + { Event::VolumeDecrease, "Decrease volume", "", false }, + { Event::VolumeIncrease, "Increase volume", "", false }, + { Event::SoundToggle, "Toggle sound", "", false }, + { Event::PauseMode, "Pause", "", false }, + { Event::OptionsMenuMode, "Enter options menu UI", "", false }, + { Event::CmdMenuMode, "Toggle command menu UI", "", false }, + { Event::TimeMachineMode, "Toggle time machine UI", "", false }, + { Event::Rewind, "Rewind game", "", false }, + { Event::Unwind, "Unwind game", "", false }, + { Event::DebuggerMode, "Toggle debugger mode", "", false }, + { Event::ReloadConsole, "Reload current ROM/load next game", "", false }, + { Event::ExitMode, "Exit current Stella mode", "", false }, + { Event::Quit, "Quit", "", false }, - { Event::JoystickOneUp, "P1 Joystick Up", "", true }, - { Event::JoystickOneDown, "P1 Joystick Down", "", true }, - { Event::JoystickOneLeft, "P1 Joystick Left", "", true }, - { Event::JoystickOneRight, "P1 Joystick Right", "", true }, - { Event::JoystickOneFire, "P1 Joystick Fire", "", true }, - { Event::JoystickOneFire5, "P1 Booster Top Booster Button", "", true }, - { Event::JoystickOneFire9, "P1 Booster Handle Grip Trigger", "", true }, + { Event::HandleMouseControl, "Disable TV effects", "", false }, + { Event::ToggleGrabMouse, "Select 'RGB' preset", "", false }, + { Event::ToggleSAPortOrder, "Select 'S-Video' preset", "", false }, - { Event::PaddleZeroAnalog, "Paddle 0 Analog", "", true }, - { Event::PaddleZeroDecrease, "Paddle 0 Decrease", "", true }, - { Event::PaddleZeroIncrease, "Paddle 0 Increase", "", true }, - { Event::PaddleZeroFire, "Paddle 0 Fire", "", true }, + { Event::JoystickZeroUp, "P0 Joystick Up", "", true }, + { Event::JoystickZeroDown, "P0 Joystick Down", "", true }, + { Event::JoystickZeroLeft, "P0 Joystick Left", "", true }, + { Event::JoystickZeroRight, "P0 Joystick Right", "", true }, + { Event::JoystickZeroFire, "P0 Joystick Fire", "", true }, + { Event::JoystickZeroFire5, "P0 Booster Top Booster Button", "", true }, + { Event::JoystickZeroFire9, "P0 Booster Handle Grip Trigger", "", true }, - { Event::PaddleOneAnalog, "Paddle 1 Analog", "", true }, - { Event::PaddleOneDecrease, "Paddle 1 Decrease", "", true }, - { Event::PaddleOneIncrease, "Paddle 1 Increase", "", true }, - { Event::PaddleOneFire, "Paddle 1 Fire", "", true }, + { Event::JoystickOneUp, "P1 Joystick Up", "", true }, + { Event::JoystickOneDown, "P1 Joystick Down", "", true }, + { Event::JoystickOneLeft, "P1 Joystick Left", "", true }, + { Event::JoystickOneRight, "P1 Joystick Right", "", true }, + { Event::JoystickOneFire, "P1 Joystick Fire", "", true }, + { Event::JoystickOneFire5, "P1 Booster Top Booster Button", "", true }, + { Event::JoystickOneFire9, "P1 Booster Handle Grip Trigger", "", true }, - { Event::PaddleTwoAnalog, "Paddle 2 Analog", "", true }, - { Event::PaddleTwoDecrease, "Paddle 2 Decrease", "", true }, - { Event::PaddleTwoIncrease, "Paddle 2 Increase", "", true }, - { Event::PaddleTwoFire, "Paddle 2 Fire", "", true }, + { Event::PaddleZeroAnalog, "Paddle 0 Analog", "", true }, + { Event::PaddleZeroDecrease, "Paddle 0 Decrease", "", true }, + { Event::PaddleZeroIncrease, "Paddle 0 Increase", "", true }, + { Event::PaddleZeroFire, "Paddle 0 Fire", "", true }, - { Event::PaddleThreeAnalog, "Paddle 3 Analog", "", true }, - { Event::PaddleThreeDecrease, "Paddle 3 Decrease", "", true }, - { Event::PaddleThreeIncrease, "Paddle 3 Increase", "", true }, - { Event::PaddleThreeFire, "Paddle 3 Fire", "", true }, + { Event::PaddleOneAnalog, "Paddle 1 Analog", "", true }, + { Event::PaddleOneDecrease, "Paddle 1 Decrease", "", true }, + { Event::PaddleOneIncrease, "Paddle 1 Increase", "", true }, + { Event::PaddleOneFire, "Paddle 1 Fire", "", true }, - { Event::KeyboardZero1, "P0 Keyboard 1", "", true }, - { Event::KeyboardZero2, "P0 Keyboard 2", "", true }, - { Event::KeyboardZero3, "P0 Keyboard 3", "", true }, - { Event::KeyboardZero4, "P0 Keyboard 4", "", true }, - { Event::KeyboardZero5, "P0 Keyboard 5", "", true }, - { Event::KeyboardZero6, "P0 Keyboard 6", "", true }, - { Event::KeyboardZero7, "P0 Keyboard 7", "", true }, - { Event::KeyboardZero8, "P0 Keyboard 8", "", true }, - { Event::KeyboardZero9, "P0 Keyboard 9", "", true }, - { Event::KeyboardZeroStar, "P0 Keyboard *", "", true }, - { Event::KeyboardZero0, "P0 Keyboard 0", "", true }, - { Event::KeyboardZeroPound, "P0 Keyboard #", "", true }, + { Event::PaddleTwoAnalog, "Paddle 2 Analog", "", true }, + { Event::PaddleTwoDecrease, "Paddle 2 Decrease", "", true }, + { Event::PaddleTwoIncrease, "Paddle 2 Increase", "", true }, + { Event::PaddleTwoFire, "Paddle 2 Fire", "", true }, - { Event::KeyboardOne1, "P1 Keyboard 1", "", true }, - { Event::KeyboardOne2, "P1 Keyboard 2", "", true }, - { Event::KeyboardOne3, "P1 Keyboard 3", "", true }, - { Event::KeyboardOne4, "P1 Keyboard 4", "", true }, - { Event::KeyboardOne5, "P1 Keyboard 5", "", true }, - { Event::KeyboardOne6, "P1 Keyboard 6", "", true }, - { Event::KeyboardOne7, "P1 Keyboard 7", "", true }, - { Event::KeyboardOne8, "P1 Keyboard 8", "", true }, - { Event::KeyboardOne9, "P1 Keyboard 9", "", true }, - { Event::KeyboardOneStar, "P1 Keyboard *", "", true }, - { Event::KeyboardOne0, "P1 Keyboard 0", "", true }, - { Event::KeyboardOnePound, "P1 Keyboard #", "", true }, + { Event::PaddleThreeAnalog, "Paddle 3 Analog", "", true }, + { Event::PaddleThreeDecrease, "Paddle 3 Decrease", "", true }, + { Event::PaddleThreeIncrease, "Paddle 3 Increase", "", true }, + { Event::PaddleThreeFire, "Paddle 3 Fire", "", true }, - { Event::Combo1, "Combo 1", "", false }, - { Event::Combo2, "Combo 2", "", false }, - { Event::Combo3, "Combo 3", "", false }, - { Event::Combo4, "Combo 4", "", false }, - { Event::Combo5, "Combo 5", "", false }, - { Event::Combo6, "Combo 6", "", false }, - { Event::Combo7, "Combo 7", "", false }, - { Event::Combo8, "Combo 8", "", false }, - { Event::Combo9, "Combo 9", "", false }, - { Event::Combo10, "Combo 10", "", false }, - { Event::Combo11, "Combo 11", "", false }, - { Event::Combo12, "Combo 12", "", false }, - { Event::Combo13, "Combo 13", "", false }, - { Event::Combo14, "Combo 14", "", false }, - { Event::Combo15, "Combo 15", "", false }, - { Event::Combo16, "Combo 16", "", false }, + { Event::KeyboardZero1, "P0 Keyboard 1", "", true }, + { Event::KeyboardZero2, "P0 Keyboard 2", "", true }, + { Event::KeyboardZero3, "P0 Keyboard 3", "", true }, + { Event::KeyboardZero4, "P0 Keyboard 4", "", true }, + { Event::KeyboardZero5, "P0 Keyboard 5", "", true }, + { Event::KeyboardZero6, "P0 Keyboard 6", "", true }, + { Event::KeyboardZero7, "P0 Keyboard 7", "", true }, + { Event::KeyboardZero8, "P0 Keyboard 8", "", true }, + { Event::KeyboardZero9, "P0 Keyboard 9", "", true }, + { Event::KeyboardZeroStar, "P0 Keyboard *", "", true }, + { Event::KeyboardZero0, "P0 Keyboard 0", "", true }, + { Event::KeyboardZeroPound, "P0 Keyboard #", "", true }, - { Event::ToggleP0Bit, "Toggle TIA Player0 object", "", false }, - { Event::ToggleP0Collision, "Toggle TIA Player0 collisions", "", false }, - { Event::ToggleP1Bit, "Toggle TIA Player1 object", "", false }, - { Event::ToggleP1Collision, "Toggle TIA Player1 collisions", "", false }, - { Event::ToggleM0Bit, "Toggle TIA Missile0 object", "", false }, - { Event::ToggleM0Collision, "Toggle TIA Missile0 collisions", "", false }, - { Event::ToggleM1Bit, "Toggle TIA Missile1 object", "", false }, - { Event::ToggleM1Collision, "Toggle TIA Missile1 collisions", "", false }, - { Event::ToggleBLBit, "Toggle TIA Ball object", "", false }, - { Event::ToggleBLCollision, "Toggle TIA Ball collisions", "", false }, - { Event::TogglePFBit, "Toggle TIA Playfield object", "", false }, - { Event::TogglePFCollision, "Toggle TIA Playfield collisions","", false }, - { Event::ToggleFixedColors, "Toggle TIA 'Fixed Debug Colors' mode","", false }, - { Event::ToggleBits, "Toggle all TIA objects", "", false }, - { Event::ToggleCollisions, "Toggle all TIA collisions", "", false } + { Event::KeyboardOne1, "P1 Keyboard 1", "", true }, + { Event::KeyboardOne2, "P1 Keyboard 2", "", true }, + { Event::KeyboardOne3, "P1 Keyboard 3", "", true }, + { Event::KeyboardOne4, "P1 Keyboard 4", "", true }, + { Event::KeyboardOne5, "P1 Keyboard 5", "", true }, + { Event::KeyboardOne6, "P1 Keyboard 6", "", true }, + { Event::KeyboardOne7, "P1 Keyboard 7", "", true }, + { Event::KeyboardOne8, "P1 Keyboard 8", "", true }, + { Event::KeyboardOne9, "P1 Keyboard 9", "", true }, + { Event::KeyboardOneStar, "P1 Keyboard *", "", true }, + { Event::KeyboardOne0, "P1 Keyboard 0", "", true }, + { Event::KeyboardOnePound, "P1 Keyboard #", "", true }, + + { Event::Combo1, "Combo 1", "", false }, + { Event::Combo2, "Combo 2", "", false }, + { Event::Combo3, "Combo 3", "", false }, + { Event::Combo4, "Combo 4", "", false }, + { Event::Combo5, "Combo 5", "", false }, + { Event::Combo6, "Combo 6", "", false }, + { Event::Combo7, "Combo 7", "", false }, + { Event::Combo8, "Combo 8", "", false }, + { Event::Combo9, "Combo 9", "", false }, + { Event::Combo10, "Combo 10", "", false }, + { Event::Combo11, "Combo 11", "", false }, + { Event::Combo12, "Combo 12", "", false }, + { Event::Combo13, "Combo 13", "", false }, + { Event::Combo14, "Combo 14", "", false }, + { Event::Combo15, "Combo 15", "", false }, + { Event::Combo16, "Combo 16", "", false }, + + { Event::ToggleFrameStats, "Toggle frame stats", "", false }, + { Event::ToggleP0Bit, "Toggle TIA Player0 object", "", false }, + { Event::ToggleP0Collision, "Toggle TIA Player0 collisions", "", false }, + { Event::ToggleP1Bit, "Toggle TIA Player1 object", "", false }, + { Event::ToggleP1Collision, "Toggle TIA Player1 collisions", "", false }, + { Event::ToggleM0Bit, "Toggle TIA Missile0 object", "", false }, + { Event::ToggleM0Collision, "Toggle TIA Missile0 collisions", "", false }, + { Event::ToggleM1Bit, "Toggle TIA Missile1 object", "", false }, + { Event::ToggleM1Collision, "Toggle TIA Missile1 collisions", "", false }, + { Event::ToggleBLBit, "Toggle TIA Ball object", "", false }, + { Event::ToggleBLCollision, "Toggle TIA Ball collisions", "", false }, + { Event::TogglePFBit, "Toggle TIA Playfield object", "", false }, + { Event::TogglePFCollision, "Toggle TIA Playfield collisions", "", false }, + { Event::ToggleFixedColors, "Toggle TIA 'Fixed Debug Colors' mode", "", false }, + { Event::ToggleBits, "Toggle all TIA objects", "", false }, + { Event::ToggleCollisions, "Toggle all TIA collisions", "", false }, + { Event::ToggleJitter, "Toggle TV 'Jitter' effect", "", false } }; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/emucore/EventHandler.hxx b/src/emucore/EventHandler.hxx index 1f7933542..18db20c59 100644 --- a/src/emucore/EventHandler.hxx +++ b/src/emucore/EventHandler.hxx @@ -367,7 +367,11 @@ class EventHandler static constexpr Int32 COMBO_SIZE = 16, EVENTS_PER_COMBO = 8, - EMUL_ACTIONLIST_SIZE = 113 + COMBO_SIZE, + #ifdef PNG_SUPPORT + EMUL_ACTIONLIST_SIZE = 129 + COMBO_SIZE, + #else + EMUL_ACTIONLIST_SIZE = 129 - 2 + COMBO_SIZE, + #endif MENU_ACTIONLIST_SIZE = 18 ; diff --git a/src/gui/CommandDialog.cxx b/src/gui/CommandDialog.cxx index b138a9b1c..33f70dc2e 100644 --- a/src/gui/CommandDialog.cxx +++ b/src/gui/CommandDialog.cxx @@ -190,7 +190,7 @@ void CommandDialog::handleCommand(CommandSender* sender, int cmd, break; case kExitCmd: - instance().eventHandler().handleEvent(Event::LauncherMode); + instance().eventHandler().handleEvent(Event::ExitMode); break; // Column 3 diff --git a/src/gui/MinUICommandDialog.cxx b/src/gui/MinUICommandDialog.cxx index 4d9975ebf..b44dd8e66 100644 --- a/src/gui/MinUICommandDialog.cxx +++ b/src/gui/MinUICommandDialog.cxx @@ -248,7 +248,7 @@ void MinUICommandDialog::handleCommand(CommandSender* sender, int cmd, break; case kExitGameCmd: - instance().eventHandler().handleEvent(Event::LauncherMode); + instance().eventHandler().handleEvent(Event::ExitMode); break; }