refactor ESC key handling

make remaining control hotkeys configurable
This commit is contained in:
thrust26 2019-05-27 23:01:03 +02:00
parent ef8fdc8cd9
commit 8f6dfda42f
9 changed files with 315 additions and 296 deletions

View File

@ -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);

View File

@ -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;
}
}

View File

@ -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;

View File

@ -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();

View File

@ -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
};

View File

@ -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 }
};
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

View File

@ -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
;

View File

@ -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

View File

@ -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;
}