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) // Left joystick (assume joystick zero or two, buttons two..four)
setDefaultBtn(stick, 2, Event::CmdMenuMode); setDefaultBtn(stick, 2, Event::CmdMenuMode);
setDefaultBtn(stick, 3, Event::OptionsMenuMode); setDefaultBtn(stick, 3, Event::OptionsMenuMode);
setDefaultBtn(stick, 4, Event::LauncherMode); setDefaultBtn(stick, 4, Event::ExitMode);
#endif #endif
break; break;
case 1: case 1:
@ -324,7 +324,7 @@ void PhysicalJoystickHandler::setStickDefaultMapping(int stick,
// Right joystick (assume joystick one or three, buttons two..four) // Right joystick (assume joystick one or three, buttons two..four)
setDefaultBtn(stick, 2, Event::CmdMenuMode); setDefaultBtn(stick, 2, Event::CmdMenuMode);
setDefaultBtn(stick, 3, Event::OptionsMenuMode); setDefaultBtn(stick, 3, Event::OptionsMenuMode);
setDefaultBtn(stick, 4, Event::LauncherMode); setDefaultBtn(stick, 4, Event::ExitMode);
setDefaultBtn(stick, 5, Event::Rewind); setDefaultBtn(stick, 5, Event::Rewind);
setDefaultBtn(stick, 7, Event::ConsoleSelect); setDefaultBtn(stick, 7, Event::ConsoleSelect);
setDefaultBtn(stick, 8, Event::ConsoleReset); 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::CmdMenuMode , KBDK_BACKSLASH);
setDefaultKey(Event::TimeMachineMode , KBDK_T); setDefaultKey(Event::TimeMachineMode , KBDK_T);
setDefaultKey(Event::DebuggerMode , KBDK_GRAVE); setDefaultKey(Event::DebuggerMode , KBDK_GRAVE);
setDefaultKey(Event::LauncherMode , KBDK_ESCAPE); setDefaultKey(Event::ExitMode , KBDK_ESCAPE);
#ifdef BSPF_MACOS #ifdef BSPF_MACOS
setDefaultKey(Event::Quit , KBDK_Q, KBDM_ALT); setDefaultKey(Event::Quit , KBDK_Q, KBDM_ALT);
#else #else
setDefaultKey(Event::Quit , KBDK_Q, KBDM_CTRL); setDefaultKey(Event::Quit , KBDK_Q, KBDM_CTRL);
#endif #endif
setDefaultKey(Event::ReloadConsole , KBDK_R, KBDM_CTRL);
setDefaultKey(Event::VidmodeDecrease , KBDK_MINUS, KBDM_ALT); setDefaultKey(Event::VidmodeDecrease , KBDK_MINUS, KBDM_ALT);
setDefaultKey(Event::VidmodeIncrease , KBDK_EQUALS, 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::NextAttribute , KBDK_9, KBDM_ALT);
setDefaultKey(Event::DecreaseAttribute , KBDK_0, KBDM_SHIFT | KBDM_ALT); setDefaultKey(Event::DecreaseAttribute , KBDK_0, KBDM_SHIFT | KBDM_ALT);
setDefaultKey(Event::IncreaseAttribute , KBDK_0, 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::ToggleP0Collision , KBDK_Z, KBDM_SHIFT | KBDM_ALT);
setDefaultKey(Event::ToggleP0Bit , KBDK_Z, 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::ConsoleLeftDiffToggle , KBDK_F6); // front ("SKILL P1")
setDefaultKey(Event::ConsoleRightDiffToggle , KBDK_F8); // front ("SKILL P2") setDefaultKey(Event::ConsoleRightDiffToggle , KBDK_F8); // front ("SKILL P2")
setDefaultKey(Event::CmdMenuMode , KBDK_F13); // back ("4:3","16:9") 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 #endif
break; 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 // An attempt to speed up event processing; we quickly check for
// Control or Alt/Cmd combos first // Control or Alt/Cmd combos first
// and don't pass the key on if we've already taken care of it // 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; return;
// TODO: myUseCtrlKeyFlag?
EventHandlerState estate = myHandler.state(); EventHandlerState estate = myHandler.state();
// Arrange the logic to take advantage of short-circuit evaluation // Arrange the logic to take advantage of short-circuit evaluation
if(!(StellaModTest::isControl(mod) || StellaModTest::isShift(mod) || StellaModTest::isAlt(mod))) 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 // Handle keys which switch eventhandler state
if (!pressed && myHandler.changeStateByEvent(myKeyMap.get(kEmulationMode, key, mod))) if (!pressed && myHandler.changeStateByEvent(myKeyMap.get(kEmulationMode, key, mod)))
return; return;
@ -402,36 +396,6 @@ bool PhysicalKeyboardHandler::handleAltEvent(StellaKey key, StellaMod mod, bool
myOSystem.console().changeYStart(-1); myOSystem.console().changeYStart(-1);
break; 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: default:
handled = false; handled = false;
break; break;
@ -444,64 +408,4 @@ bool PhysicalKeyboardHandler::handleAltEvent(StellaKey key, StellaMod mod, bool
handled = false; handled = false;
return handled; 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: private:
bool handleAltEvent(StellaKey key, StellaMod mod, bool pressed); bool handleAltEvent(StellaKey key, StellaMod mod, bool pressed);
bool handleControlEvent(StellaKey key, StellaMod mod, bool pressed);
OSystem& myOSystem; OSystem& myOSystem;
EventHandler& myHandler; EventHandler& myHandler;

View File

@ -154,7 +154,7 @@ bool Debugger::startWithFatalError(const string& message)
void Debugger::quit(bool exitrom) void Debugger::quit(bool exitrom)
{ {
if(exitrom) if(exitrom)
myOSystem.eventHandler().handleEvent(Event::LauncherMode, true); myOSystem.eventHandler().handleEvent(Event::ExitMode, true);
else else
{ {
myOSystem.eventHandler().leaveDebugMode(); myOSystem.eventHandler().leaveDebugMode();

View File

@ -74,7 +74,7 @@ class Event
MouseButtonLeftValue, MouseButtonRightValue, MouseButtonLeftValue, MouseButtonRightValue,
ChangeState, LoadState, SaveState, TakeSnapshot, Quit, ChangeState, LoadState, SaveState, TakeSnapshot, Quit,
PauseMode, OptionsMenuMode, CmdMenuMode, TimeMachineMode, DebuggerMode, LauncherMode, PauseMode, OptionsMenuMode, CmdMenuMode, TimeMachineMode, DebuggerMode, ExitMode,
Fry, VolumeDecrease, VolumeIncrease, SoundToggle, VidmodeDecrease, VidmodeIncrease, Fry, VolumeDecrease, VolumeIncrease, SoundToggle, VidmodeDecrease, VidmodeIncrease,
Rewind, Unwind, Rewind, Unwind,
@ -92,6 +92,16 @@ class Event
ToggleBLCollision, ToggleBLBit, TogglePFCollision, TogglePFBit, ToggleBLCollision, ToggleBLBit, TogglePFCollision, TogglePFBit,
ToggleCollisions, ToggleBits, ToggleFixedColors, ToggleCollisions, ToggleBits, ToggleFixedColors,
DecreasePhosphor, IncreasePhosphor, TogglePhosphor, ToggleJitter,
ToggleFrameStats, ToggleTimeMachine,
#ifdef PNG_SUPPORT
ToggleContSnapshots, ToggleContSnapshotsFrame,
#endif*/
ToggleColorLoss, TogglePalette,
HandleMouseControl, ToggleGrabMouse, ToggleSAPortOrder,
DecreaseFormat, IncreaseFormat, ReloadConsole,
LastType LastType
}; };

View File

@ -385,6 +385,10 @@ void EventHandler::handleEvent(Event::Type event, bool pressed)
if(myPKeyHandler->useCtrlKey()) myFryingFlag = pressed; if(myPKeyHandler->useCtrlKey()) myFryingFlag = pressed;
return; return;
case Event::ReloadConsole:
if (pressed) myOSystem.reloadConsole();
return;
case Event::VolumeDecrease: case Event::VolumeDecrease:
if(pressed) myOSystem.sound().adjustVolume(-1); if(pressed) myOSystem.sound().adjustVolume(-1);
return; return;
@ -477,79 +481,131 @@ void EventHandler::handleEvent(Event::Type event, bool pressed)
} }
return; 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: case Event::ToggleP0Collision:
if (pressed) if (pressed) myOSystem.console().toggleP0Collision();
myOSystem.console().toggleP0Collision();
return; return;
case Event::ToggleP0Bit: case Event::ToggleP0Bit:
if (pressed) if (pressed) myOSystem.console().toggleP0Bit();
myOSystem.console().toggleP0Bit();
return; return;
case Event::ToggleP1Collision: case Event::ToggleP1Collision:
if (pressed) if (pressed) myOSystem.console().toggleP1Collision();
myOSystem.console().toggleP1Collision();
return; return;
case Event::ToggleP1Bit: case Event::ToggleP1Bit:
if (pressed) if (pressed) myOSystem.console().toggleP1Bit();
myOSystem.console().toggleP1Bit();
return; return;
case Event::ToggleM0Collision: case Event::ToggleM0Collision:
if (pressed) if (pressed) myOSystem.console().toggleM0Collision();
myOSystem.console().toggleM0Collision();
return; return;
case Event::ToggleM0Bit: case Event::ToggleM0Bit:
if (pressed) if (pressed) myOSystem.console().toggleM0Bit();
myOSystem.console().toggleM0Bit();
return; return;
case Event::ToggleM1Collision: case Event::ToggleM1Collision:
if (pressed) if (pressed) myOSystem.console().toggleM1Collision();
myOSystem.console().toggleM1Collision();
return; return;
case Event::ToggleM1Bit: case Event::ToggleM1Bit:
if (pressed) if (pressed) myOSystem.console().toggleM1Bit();
myOSystem.console().toggleM1Bit();
return; return;
case Event::ToggleBLCollision: case Event::ToggleBLCollision:
if (pressed) if (pressed) myOSystem.console().toggleBLCollision();
myOSystem.console().toggleBLCollision();
return; return;
case Event::ToggleBLBit: case Event::ToggleBLBit:
if (pressed) if (pressed) myOSystem.console().toggleBLBit();
myOSystem.console().toggleBLBit();
return; return;
case Event::TogglePFCollision: case Event::TogglePFCollision:
if (pressed) if (pressed) myOSystem.console().togglePFCollision();
myOSystem.console().togglePFCollision();
return; return;
case Event::TogglePFBit: case Event::TogglePFBit:
if (pressed) if (pressed) myOSystem.console().togglePFBit();
myOSystem.console().togglePFBit();
return; return;
case Event::ToggleFixedColors: case Event::ToggleFixedColors:
if (pressed) if (pressed) myOSystem.console().toggleFixedColors();
myOSystem.console().toggleFixedColors();
return; return;
case Event::ToggleCollisions: case Event::ToggleCollisions:
if (pressed) if (pressed) myOSystem.console().toggleCollisions();
myOSystem.console().toggleCollisions();
return; return;
case Event::ToggleBits: case Event::ToggleBits:
if (pressed) if (pressed) myOSystem.console().toggleBits();
myOSystem.console().toggleBits();
return; return;
case Event::SaveState: case Event::SaveState:
@ -576,18 +632,44 @@ void EventHandler::handleEvent(Event::Type event, bool pressed)
if(pressed) myOSystem.frameBuffer().tiaSurface().saveSnapShot(); if(pressed) myOSystem.frameBuffer().tiaSurface().saveSnapShot();
return; return;
case Event::LauncherMode: case Event::ExitMode:
if((myState == EventHandlerState::EMULATION || myState == EventHandlerState::CMDMENU || // Special handling for Escape key
myState == EventHandlerState::DEBUGGER) && pressed) // Basically, exit whichever mode we're currently in
switch (myState)
{ {
// Go back to the launcher, or immediately quit case EventHandlerState::PAUSE:
if(myOSystem.settings().getBool("exitlauncher") || if (pressed) changeStateByEvent(Event::PauseMode);
myOSystem.launcherUsed()) return;
myOSystem.createLauncher();
else case EventHandlerState::CMDMENU:
handleEvent(Event::Quit); 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: case Event::Quit:
if(pressed) if(pressed)
@ -1421,146 +1503,166 @@ void EventHandler::setState(EventHandlerState state)
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
EventHandler::ActionList EventHandler::ourEmulActionList[EMUL_ACTIONLIST_SIZE] = { EventHandler::ActionList EventHandler::ourEmulActionList[EMUL_ACTIONLIST_SIZE] = {
{ Event::ConsoleSelect, "Select", "", true }, { Event::ConsoleSelect, "Select", "", true },
{ Event::ConsoleReset, "Reset", "", true }, { Event::ConsoleReset, "Reset", "", true },
{ Event::ConsoleColor, "Color TV", "", true }, { Event::ConsoleColor, "Color TV", "", true },
{ Event::ConsoleBlackWhite, "Black & White TV", "", true }, { Event::ConsoleBlackWhite, "Black & White TV", "", true },
{ Event::ConsoleColorToggle, "Swap Color / B&W TV", "", true }, { Event::ConsoleColorToggle, "Swap Color / B&W TV", "", true },
{ Event::Console7800Pause, "7800 Pause Key", "", true }, { Event::Console7800Pause, "7800 Pause Key", "", true },
{ Event::ConsoleLeftDiffA, "P0 Difficulty A", "", true }, { Event::ConsoleLeftDiffA, "P0 Difficulty A", "", true },
{ Event::ConsoleLeftDiffB, "P0 Difficulty B", "", true }, { Event::ConsoleLeftDiffB, "P0 Difficulty B", "", true },
{ Event::ConsoleLeftDiffToggle, "P0 swap Difficulty", "", true }, { Event::ConsoleLeftDiffToggle, "P0 swap Difficulty", "", true },
{ Event::ConsoleRightDiffA, "P1 Difficulty A", "", true }, { Event::ConsoleRightDiffA, "P1 Difficulty A", "", true },
{ Event::ConsoleRightDiffB, "P1 Difficulty B", "", true }, { Event::ConsoleRightDiffB, "P1 Difficulty B", "", true },
{ Event::ConsoleRightDiffToggle, "P1 swap Difficulty", "", true }, { Event::ConsoleRightDiffToggle, "P1 swap Difficulty", "", true },
{ Event::SaveState, "Save state", "", false }, { Event::SaveState, "Save state", "", false },
{ Event::ChangeState, "Change state", "", false }, { Event::ChangeState, "Change state", "", false },
{ Event::LoadState, "Load state", "", false }, { Event::LoadState, "Load state", "", false },
{ Event::TakeSnapshot, "Snapshot", "", false }, { Event::TakeSnapshot, "Snapshot", "", false },
{ Event::Fry, "Fry cartridge", "", false }, { Event::Fry, "Fry cartridge", "", false },
{ Event::VidmodeDecrease, "Previous zoom level", "", false }, { Event::VidmodeDecrease, "Previous zoom level", "", false },
{ Event::VidmodeIncrease, "Next zoom level", "", false }, { Event::VidmodeIncrease, "Next zoom level", "", false },
{ Event::ToggleFullScreen, "Toggle fullscreen", "", false }, { Event::ToggleFullScreen, "Toggle fullscreen", "", false },
{ Event::VidmodeStd, "Disable TV effects", "", false }, { Event::VidmodeStd, "Disable TV effects", "", false },
{ Event::VidmodeRGB, "Select 'RGB' preset", "", false }, { Event::VidmodeRGB, "Select 'RGB' preset", "", false },
{ Event::VidmodeSVideo, "Select 'S-Video' preset", "", false }, { Event::VidmodeSVideo, "Select 'S-Video' preset", "", false },
{ Event::VidModeComposite, "Select 'Composite' preset", "", false }, { Event::VidModeComposite, "Select 'Composite' preset", "", false },
{ Event::VidModeBad, "Select 'Badly adjusted' preset", "", false }, { Event::VidModeBad, "Select 'Badly adjusted' preset", "", false },
{ Event::VidModeCustom, "Select 'Custom' preset", "", false }, { Event::VidModeCustom, "Select 'Custom' preset", "", false },
{ Event::PreviousAttribute, "Select previous 'Custom' attribute", "", false }, { Event::PreviousAttribute, "Select previous 'Custom' attribute", "", false },
{ Event::NextAttribute, "Select next 'Custom' attribute", "", false }, { Event::NextAttribute, "Select next 'Custom' attribute", "", false },
{ Event::DecreaseAttribute, "Decrease selected 'Custom' attribute", "", false }, { Event::DecreaseAttribute, "Decrease selected 'Custom' attribute", "", false },
{ Event::IncreaseAttribute, "Increase selected 'Custom' attribute", "", false }, { Event::IncreaseAttribute, "Increase selected 'Custom' attribute", "", false },
{ Event::ScanlinesDecrease, "Decrease scanlines", "", false }, { Event::ScanlinesDecrease, "Decrease scanlines", "", false },
{ Event::ScanlinesIncrease, "Increase scanlines", "", false }, { Event::ScanlinesIncrease, "Increase scanlines", "", false },
{ Event::VolumeDecrease, "Decrease volume", "", false }, { Event::TogglePhosphor, "Toggle 'phosphor' effect", "", false },
{ Event::VolumeIncrease, "Increase volume", "", false }, { Event::DecreasePhosphor, "Decrease 'phosphor' blend", "", false },
{ Event::SoundToggle, "Toggle sound", "", false }, { Event::IncreasePhosphor, "Increase 'phosphor' blend", "", false },
{ Event::PauseMode, "Pause", "", false }, { Event::DecreaseFormat, "Decrease display format", "", false },
{ Event::OptionsMenuMode, "Enter options menu UI", "", false }, { Event::IncreaseFormat, "Increase display format", "", false },
{ Event::CmdMenuMode, "Toggle command menu UI", "", false }, { Event::TogglePalette, "Switch palette (Standard/Z26/User)", "", false },
{ Event::TimeMachineMode, "Toggle time machine UI", "", false }, { Event::ToggleColorLoss, "Toggle PAL color-loss effect", "", false },
{ Event::Rewind, "Rewind game", "", false }, #ifdef PNG_SUPPORT
{ Event::Unwind, "Unwind game", "", false }, { Event::ToggleContSnapshots, "Save cont. PNG snapsh. (as defined)", "", false },
{ Event::DebuggerMode, "Toggle debugger mode", "", false }, { Event::ToggleContSnapshotsFrame,"Save cont. PNG snapsh. (every frame)", "", false },
{ Event::LauncherMode, "Enter ROM launcher", "", false }, #endif
{ Event::Quit, "Quit", "", false }, { Event::ToggleTimeMachine, "Toggle 'Time Machine' mode", "", false },
{ Event::JoystickZeroUp, "P0 Joystick Up", "", true }, { Event::VolumeDecrease, "Decrease volume", "", false },
{ Event::JoystickZeroDown, "P0 Joystick Down", "", true }, { Event::VolumeIncrease, "Increase volume", "", false },
{ Event::JoystickZeroLeft, "P0 Joystick Left", "", true }, { Event::SoundToggle, "Toggle sound", "", false },
{ Event::JoystickZeroRight, "P0 Joystick Right", "", true }, { Event::PauseMode, "Pause", "", false },
{ Event::JoystickZeroFire, "P0 Joystick Fire", "", true }, { Event::OptionsMenuMode, "Enter options menu UI", "", false },
{ Event::JoystickZeroFire5, "P0 Booster Top Booster Button", "", true }, { Event::CmdMenuMode, "Toggle command menu UI", "", false },
{ Event::JoystickZeroFire9, "P0 Booster Handle Grip Trigger", "", true }, { 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::HandleMouseControl, "Disable TV effects", "", false },
{ Event::JoystickOneDown, "P1 Joystick Down", "", true }, { Event::ToggleGrabMouse, "Select 'RGB' preset", "", false },
{ Event::JoystickOneLeft, "P1 Joystick Left", "", true }, { Event::ToggleSAPortOrder, "Select 'S-Video' preset", "", false },
{ 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::PaddleZeroAnalog, "Paddle 0 Analog", "", true }, { Event::JoystickZeroUp, "P0 Joystick Up", "", true },
{ Event::PaddleZeroDecrease, "Paddle 0 Decrease", "", true }, { Event::JoystickZeroDown, "P0 Joystick Down", "", true },
{ Event::PaddleZeroIncrease, "Paddle 0 Increase", "", true }, { Event::JoystickZeroLeft, "P0 Joystick Left", "", true },
{ Event::PaddleZeroFire, "Paddle 0 Fire", "", 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::JoystickOneUp, "P1 Joystick Up", "", true },
{ Event::PaddleOneDecrease, "Paddle 1 Decrease", "", true }, { Event::JoystickOneDown, "P1 Joystick Down", "", true },
{ Event::PaddleOneIncrease, "Paddle 1 Increase", "", true }, { Event::JoystickOneLeft, "P1 Joystick Left", "", true },
{ Event::PaddleOneFire, "Paddle 1 Fire", "", 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::PaddleZeroAnalog, "Paddle 0 Analog", "", true },
{ Event::PaddleTwoDecrease, "Paddle 2 Decrease", "", true }, { Event::PaddleZeroDecrease, "Paddle 0 Decrease", "", true },
{ Event::PaddleTwoIncrease, "Paddle 2 Increase", "", true }, { Event::PaddleZeroIncrease, "Paddle 0 Increase", "", true },
{ Event::PaddleTwoFire, "Paddle 2 Fire", "", true }, { Event::PaddleZeroFire, "Paddle 0 Fire", "", true },
{ Event::PaddleThreeAnalog, "Paddle 3 Analog", "", true }, { Event::PaddleOneAnalog, "Paddle 1 Analog", "", true },
{ Event::PaddleThreeDecrease, "Paddle 3 Decrease", "", true }, { Event::PaddleOneDecrease, "Paddle 1 Decrease", "", true },
{ Event::PaddleThreeIncrease, "Paddle 3 Increase", "", true }, { Event::PaddleOneIncrease, "Paddle 1 Increase", "", true },
{ Event::PaddleThreeFire, "Paddle 3 Fire", "", true }, { Event::PaddleOneFire, "Paddle 1 Fire", "", true },
{ Event::KeyboardZero1, "P0 Keyboard 1", "", true }, { Event::PaddleTwoAnalog, "Paddle 2 Analog", "", true },
{ Event::KeyboardZero2, "P0 Keyboard 2", "", true }, { Event::PaddleTwoDecrease, "Paddle 2 Decrease", "", true },
{ Event::KeyboardZero3, "P0 Keyboard 3", "", true }, { Event::PaddleTwoIncrease, "Paddle 2 Increase", "", true },
{ Event::KeyboardZero4, "P0 Keyboard 4", "", true }, { Event::PaddleTwoFire, "Paddle 2 Fire", "", 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::KeyboardOne1, "P1 Keyboard 1", "", true }, { Event::PaddleThreeAnalog, "Paddle 3 Analog", "", true },
{ Event::KeyboardOne2, "P1 Keyboard 2", "", true }, { Event::PaddleThreeDecrease, "Paddle 3 Decrease", "", true },
{ Event::KeyboardOne3, "P1 Keyboard 3", "", true }, { Event::PaddleThreeIncrease, "Paddle 3 Increase", "", true },
{ Event::KeyboardOne4, "P1 Keyboard 4", "", true }, { Event::PaddleThreeFire, "Paddle 3 Fire", "", 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::KeyboardZero1, "P0 Keyboard 1", "", true },
{ Event::Combo2, "Combo 2", "", false }, { Event::KeyboardZero2, "P0 Keyboard 2", "", true },
{ Event::Combo3, "Combo 3", "", false }, { Event::KeyboardZero3, "P0 Keyboard 3", "", true },
{ Event::Combo4, "Combo 4", "", false }, { Event::KeyboardZero4, "P0 Keyboard 4", "", true },
{ Event::Combo5, "Combo 5", "", false }, { Event::KeyboardZero5, "P0 Keyboard 5", "", true },
{ Event::Combo6, "Combo 6", "", false }, { Event::KeyboardZero6, "P0 Keyboard 6", "", true },
{ Event::Combo7, "Combo 7", "", false }, { Event::KeyboardZero7, "P0 Keyboard 7", "", true },
{ Event::Combo8, "Combo 8", "", false }, { Event::KeyboardZero8, "P0 Keyboard 8", "", true },
{ Event::Combo9, "Combo 9", "", false }, { Event::KeyboardZero9, "P0 Keyboard 9", "", true },
{ Event::Combo10, "Combo 10", "", false }, { Event::KeyboardZeroStar, "P0 Keyboard *", "", true },
{ Event::Combo11, "Combo 11", "", false }, { Event::KeyboardZero0, "P0 Keyboard 0", "", true },
{ Event::Combo12, "Combo 12", "", false }, { Event::KeyboardZeroPound, "P0 Keyboard #", "", true },
{ Event::Combo13, "Combo 13", "", false },
{ Event::Combo14, "Combo 14", "", false },
{ Event::Combo15, "Combo 15", "", false },
{ Event::Combo16, "Combo 16", "", false },
{ Event::ToggleP0Bit, "Toggle TIA Player0 object", "", false }, { Event::KeyboardOne1, "P1 Keyboard 1", "", true },
{ Event::ToggleP0Collision, "Toggle TIA Player0 collisions", "", false }, { Event::KeyboardOne2, "P1 Keyboard 2", "", true },
{ Event::ToggleP1Bit, "Toggle TIA Player1 object", "", false }, { Event::KeyboardOne3, "P1 Keyboard 3", "", true },
{ Event::ToggleP1Collision, "Toggle TIA Player1 collisions", "", false }, { Event::KeyboardOne4, "P1 Keyboard 4", "", true },
{ Event::ToggleM0Bit, "Toggle TIA Missile0 object", "", false }, { Event::KeyboardOne5, "P1 Keyboard 5", "", true },
{ Event::ToggleM0Collision, "Toggle TIA Missile0 collisions", "", false }, { Event::KeyboardOne6, "P1 Keyboard 6", "", true },
{ Event::ToggleM1Bit, "Toggle TIA Missile1 object", "", false }, { Event::KeyboardOne7, "P1 Keyboard 7", "", true },
{ Event::ToggleM1Collision, "Toggle TIA Missile1 collisions", "", false }, { Event::KeyboardOne8, "P1 Keyboard 8", "", true },
{ Event::ToggleBLBit, "Toggle TIA Ball object", "", false }, { Event::KeyboardOne9, "P1 Keyboard 9", "", true },
{ Event::ToggleBLCollision, "Toggle TIA Ball collisions", "", false }, { Event::KeyboardOneStar, "P1 Keyboard *", "", true },
{ Event::TogglePFBit, "Toggle TIA Playfield object", "", false }, { Event::KeyboardOne0, "P1 Keyboard 0", "", true },
{ Event::TogglePFCollision, "Toggle TIA Playfield collisions","", false }, { Event::KeyboardOnePound, "P1 Keyboard #", "", true },
{ Event::ToggleFixedColors, "Toggle TIA 'Fixed Debug Colors' mode","", false },
{ Event::ToggleBits, "Toggle all TIA objects", "", false }, { Event::Combo1, "Combo 1", "", false },
{ Event::ToggleCollisions, "Toggle all TIA collisions", "", 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 static constexpr Int32
COMBO_SIZE = 16, COMBO_SIZE = 16,
EVENTS_PER_COMBO = 8, 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 MENU_ACTIONLIST_SIZE = 18
; ;

View File

@ -190,7 +190,7 @@ void CommandDialog::handleCommand(CommandSender* sender, int cmd,
break; break;
case kExitCmd: case kExitCmd:
instance().eventHandler().handleEvent(Event::LauncherMode); instance().eventHandler().handleEvent(Event::ExitMode);
break; break;
// Column 3 // Column 3

View File

@ -248,7 +248,7 @@ void MinUICommandDialog::handleCommand(CommandSender* sender, int cmd,
break; break;
case kExitGameCmd: case kExitGameCmd:
instance().eventHandler().handleEvent(Event::LauncherMode); instance().eventHandler().handleEvent(Event::ExitMode);
break; break;
} }