add overscan hotkeys

remove ystart hotkeys
update doc
This commit is contained in:
thrust26 2019-06-02 09:21:20 +02:00
parent 2c14d0cfda
commit 9dc91bd38b
9 changed files with 128 additions and 119 deletions

View File

@ -1371,18 +1371,6 @@
<th>Key (macOS)</th> <th>Key (macOS)</th>
</tr> </tr>
<tr>
<td>Set "Display.YStart" to next <i>larger</i> value</td>
<td>Alt + PageUp</td>
<td>Cmd + PageUp</td>
</tr>
<tr>
<td>Set "Display.YStart" to next <i>smaller</i> value</td>
<td>Alt + PageDown</td>
<td>Cmd + PageDown</td>
</tr>
<tr> <tr>
<td>Toggle frame stats (scanline count/FPS/BS type etc.)</td> <td>Toggle frame stats (scanline count/FPS/BS type etc.)</td>
<td>Alt + L</td> <td>Alt + L</td>
@ -1521,6 +1509,18 @@
<td>Cmd + Enter</td> <td>Cmd + Enter</td>
</tr> </tr>
<tr>
<td>Increase overscan in fullscreen mode</td>
<td>Alt + PageUp</td>
<td>Cmd + PageUp</td>
</tr>
<tr>
<td>Decrease overscan in fullscreen mode</td>
<td>Alt + PageDown</td>
<td>Cmd + PageDown</td>
</tr>
<tr> <tr>
<td>Switch display format in <i>increasing</i> order (NTSC/PAL/SECAM etc.)</td> <td>Switch display format in <i>increasing</i> order (NTSC/PAL/SECAM etc.)</td>
<td>Control + f</td> <td>Control + f</td>

View File

@ -176,6 +176,8 @@ void PhysicalKeyboardHandler::setDefaultMapping(Event::Type event, EventMode mod
setDefaultKey(Event::SoundToggle , KBDK_RIGHTBRACKET, KBDM_CTRL); setDefaultKey(Event::SoundToggle , KBDK_RIGHTBRACKET, KBDM_CTRL);
setDefaultKey(Event::ToggleFullScreen , KBDK_RETURN, MOD3); setDefaultKey(Event::ToggleFullScreen , KBDK_RETURN, MOD3);
setDefaultKey(Event::DecreaseOverscan , KBDK_PAGEDOWN, MOD3);
setDefaultKey(Event::IncreaseOverScan , KBDK_PAGEUP, MOD3);
setDefaultKey(Event::VidmodeStd , KBDK_1, MOD3); setDefaultKey(Event::VidmodeStd , KBDK_1, MOD3);
setDefaultKey(Event::VidmodeRGB , KBDK_2, MOD3); setDefaultKey(Event::VidmodeRGB , KBDK_2, MOD3);
setDefaultKey(Event::VidmodeSVideo , KBDK_3, MOD3); setDefaultKey(Event::VidmodeSVideo , KBDK_3, MOD3);
@ -259,6 +261,7 @@ void PhysicalKeyboardHandler::setDefaultMapping(Event::Type event, EventMode mod
setDefaultKey(Event::UIPrevDir , KBDK_BACKSPACE); setDefaultKey(Event::UIPrevDir , KBDK_BACKSPACE);
setDefaultKey(Event::ToggleFullScreen , KBDK_RETURN, MOD3); setDefaultKey(Event::ToggleFullScreen , KBDK_RETURN, MOD3);
#ifdef BSPF_MACOS #ifdef BSPF_MACOS
setDefaultKey(Event::Quit , KBDK_Q, MOD3); setDefaultKey(Event::Quit , KBDK_Q, MOD3);
#else #else
@ -317,7 +320,7 @@ bool PhysicalKeyboardHandler::addMapping(Event::Type event, EventMode mode,
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void PhysicalKeyboardHandler::handleEvent(StellaKey key, StellaMod mod, bool pressed, bool repeat) void PhysicalKeyboardHandler::handleEvent(StellaKey key, StellaMod mod, bool pressed, bool repeated)
{ {
// Swallow KBDK_TAB under certain conditions // Swallow KBDK_TAB under certain conditions
// See commments on 'myAltKeyCounter' for more information // See commments on 'myAltKeyCounter' for more information
@ -353,15 +356,15 @@ void PhysicalKeyboardHandler::handleEvent(StellaKey key, StellaMod mod, bool pre
{ {
case EventHandlerState::EMULATION: case EventHandlerState::EMULATION:
case EventHandlerState::PAUSE: case EventHandlerState::PAUSE:
myHandler.handleEvent(myKeyMap.get(kEmulationMode, key, mod), pressed, repeat); myHandler.handleEvent(myKeyMap.get(kEmulationMode, key, mod), pressed, repeated);
break; break;
default: default:
#ifdef GUI_SUPPORT #ifdef GUI_SUPPORT
if (myHandler.hasOverlay()) if (myHandler.hasOverlay())
myHandler.overlay().handleKeyEvent(key, mod, pressed, repeat); myHandler.overlay().handleKeyEvent(key, mod, pressed, repeated);
#endif #endif
myHandler.handleEvent(myKeyMap.get(kMenuMode, key, mod), pressed, repeat); myHandler.handleEvent(myKeyMap.get(kMenuMode, key, mod), pressed, repeated);
break; break;
} }
} }
@ -369,42 +372,12 @@ void PhysicalKeyboardHandler::handleEvent(StellaKey key, StellaMod mod, bool pre
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool PhysicalKeyboardHandler::handleAltEvent(StellaKey key, StellaMod mod, bool pressed) bool PhysicalKeyboardHandler::handleAltEvent(StellaKey key, StellaMod mod, bool pressed)
{ {
bool handled = true; if(StellaModTest::isAlt(mod) && pressed && key == KBDK_TAB)
if(StellaModTest::isAlt(mod) && pressed)
{
EventHandlerState estate = myHandler.state();
if(key == KBDK_TAB)
{ {
// Swallow Alt-Tab, but remember that it happened // Swallow Alt-Tab, but remember that it happened
myAltKeyCounter = 1; myAltKeyCounter = 1;
return true; return true;
}
// State rewinding must work in pause mode too
if(estate == EventHandlerState::EMULATION || estate == EventHandlerState::PAUSE)
{
switch(key)
{
case KBDK_PAGEUP: // Alt-PageUp increases YStart
myOSystem.console().changeYStart(+1);
break;
case KBDK_PAGEDOWN: // Alt-PageDown decreases YStart
myOSystem.console().changeYStart(-1);
break;
default:
handled = false;
break;
} // switch
}
else
handled = false;
} // alt } // alt
else
handled = false;
return handled; return false;
} }

View File

@ -54,7 +54,7 @@ class PhysicalKeyboardHandler
bool addMapping(Event::Type event, EventMode mode, StellaKey key, StellaMod mod); bool addMapping(Event::Type event, EventMode mode, StellaKey key, StellaMod mod);
/** Handle a physical keyboard event. */ /** Handle a physical keyboard event. */
void handleEvent(StellaKey key, StellaMod mod, bool pressed, bool repeat); void handleEvent(StellaKey key, StellaMod mod, bool pressed, bool repeated);
Event::Type eventForKey(EventMode mode, StellaKey key, StellaMod mod) const { Event::Type eventForKey(EventMode mode, StellaKey key, StellaMod mod) const {
return myKeyMap.get(mode, key, mod); return myKeyMap.get(mode, key, mod);

View File

@ -104,6 +104,7 @@ class Event
Unwind1Menu, Unwind10Menu, UnwindAllMenu, Unwind1Menu, Unwind10Menu, UnwindAllMenu,
StartPauseMode, SaveAllStates, LoadAllStates, StartPauseMode, SaveAllStates, LoadAllStates,
DecreaseOverscan, IncreaseOverScan,
LastType LastType
}; };

View File

@ -333,7 +333,7 @@ void EventHandler::handleSystemEvent(SystemEvent e, int, int)
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat) void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeated)
{ {
// Take care of special events that aren't part of the emulation core // Take care of special events that aren't part of the emulation core
// or need to be preprocessed before passing them on // or need to be preprocessed before passing them on
@ -383,11 +383,11 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat)
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
case Event::Fry: case Event::Fry:
if (!repeat) myFryingFlag = pressed; if (!repeated) myFryingFlag = pressed;
return; return;
case Event::ReloadConsole: case Event::ReloadConsole:
if (pressed && !repeat) myOSystem.reloadConsole(); if (pressed && !repeated) myOSystem.reloadConsole();
return; return;
case Event::VolumeDecrease: case Event::VolumeDecrease:
@ -399,7 +399,7 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat)
return; return;
case Event::SoundToggle: case Event::SoundToggle:
if(pressed && !repeat) myOSystem.sound().toggleMute(); if(pressed && !repeated) myOSystem.sound().toggleMute();
return; return;
case Event::VidmodeDecrease: case Event::VidmodeDecrease:
@ -411,31 +411,39 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat)
return; return;
case Event::ToggleFullScreen: case Event::ToggleFullScreen:
if (pressed && !repeat) myOSystem.frameBuffer().toggleFullscreen(); if (pressed && !repeated) myOSystem.frameBuffer().toggleFullscreen();
return;
case Event::DecreaseOverscan:
if (pressed) myOSystem.frameBuffer().changeOverscan(-1);
return;
case Event::IncreaseOverScan:
if (pressed) myOSystem.frameBuffer().changeOverscan(1);
return; return;
case Event::VidmodeStd: case Event::VidmodeStd:
if (pressed && !repeat) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::OFF); if (pressed && !repeated) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::OFF);
return; return;
case Event::VidmodeRGB: case Event::VidmodeRGB:
if (pressed && !repeat) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::RGB); if (pressed && !repeated) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::RGB);
return; return;
case Event::VidmodeSVideo: case Event::VidmodeSVideo:
if (pressed && !repeat) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::SVIDEO); if (pressed && !repeated) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::SVIDEO);
return; return;
case Event::VidModeComposite: case Event::VidModeComposite:
if (pressed && !repeat) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::COMPOSITE); if (pressed && !repeated) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::COMPOSITE);
return; return;
case Event::VidModeBad: case Event::VidModeBad:
if (pressed && !repeat) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::BAD); if (pressed && !repeated) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::BAD);
return; return;
case Event::VidModeCustom: case Event::VidModeCustom:
if (pressed && !repeat) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::CUSTOM); if (pressed && !repeated) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::CUSTOM);
return; return;
case Event::ScanlinesDecrease: case Event::ScanlinesDecrease:
@ -491,19 +499,19 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat)
return; return;
case Event::TogglePhosphor: case Event::TogglePhosphor:
if (pressed && !repeat) myOSystem.console().togglePhosphor(); if (pressed && !repeated) myOSystem.console().togglePhosphor();
return; return;
case Event::ToggleColorLoss: case Event::ToggleColorLoss:
if (pressed && !repeat) myOSystem.console().toggleColorLoss(); if (pressed && !repeated) myOSystem.console().toggleColorLoss();
return; return;
case Event::TogglePalette: case Event::TogglePalette:
if (pressed && !repeat) myOSystem.console().togglePalette(); if (pressed && !repeated) myOSystem.console().togglePalette();
return; return;
case Event::ToggleJitter: case Event::ToggleJitter:
if (pressed && !repeat) myOSystem.console().toggleJitter(); if (pressed && !repeated) myOSystem.console().toggleJitter();
return; return;
case Event::ToggleFrameStats: case Event::ToggleFrameStats:
@ -511,25 +519,25 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat)
return; return;
case Event::ToggleTimeMachine: case Event::ToggleTimeMachine:
if (pressed && !repeat) myOSystem.state().toggleTimeMachine(); if (pressed && !repeated) myOSystem.state().toggleTimeMachine();
return; return;
#ifdef PNG_SUPPORT #ifdef PNG_SUPPORT
case Event::ToggleContSnapshots: case Event::ToggleContSnapshots:
if (pressed && !repeat) myOSystem.png().toggleContinuousSnapshots(false); if (pressed && !repeated) myOSystem.png().toggleContinuousSnapshots(false);
return; return;
case Event::ToggleContSnapshotsFrame: case Event::ToggleContSnapshotsFrame:
if (pressed && !repeat) myOSystem.png().toggleContinuousSnapshots(true); if (pressed && !repeated) myOSystem.png().toggleContinuousSnapshots(true);
return; return;
#endif #endif
case Event::HandleMouseControl: case Event::HandleMouseControl:
if (pressed && !repeat) handleMouseControl(); if (pressed && !repeated) handleMouseControl();
return; return;
case Event::ToggleSAPortOrder: case Event::ToggleSAPortOrder:
if (pressed && !repeat) toggleSAPortOrder(); if (pressed && !repeated) toggleSAPortOrder();
return; return;
case Event::DecreaseFormat: case Event::DecreaseFormat:
@ -541,7 +549,7 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat)
return; return;
case Event::ToggleGrabMouse: case Event::ToggleGrabMouse:
if (pressed && !repeat && !myOSystem.frameBuffer().fullScreen()) if (pressed && !repeated && !myOSystem.frameBuffer().fullScreen())
{ {
myOSystem.frameBuffer().toggleGrabMouse(); myOSystem.frameBuffer().toggleGrabMouse();
myOSystem.frameBuffer().showMessage(myOSystem.frameBuffer().grabMouseEnabled() myOSystem.frameBuffer().showMessage(myOSystem.frameBuffer().grabMouseEnabled()
@ -550,39 +558,39 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat)
return; return;
case Event::ToggleP0Collision: case Event::ToggleP0Collision:
if (pressed && !repeat) myOSystem.console().toggleP0Collision(); if (pressed && !repeated) myOSystem.console().toggleP0Collision();
return; return;
case Event::ToggleP0Bit: case Event::ToggleP0Bit:
if (pressed && !repeat) myOSystem.console().toggleP0Bit(); if (pressed && !repeated) myOSystem.console().toggleP0Bit();
return; return;
case Event::ToggleP1Collision: case Event::ToggleP1Collision:
if (pressed && !repeat) myOSystem.console().toggleP1Collision(); if (pressed && !repeated) myOSystem.console().toggleP1Collision();
return; return;
case Event::ToggleP1Bit: case Event::ToggleP1Bit:
if (pressed && !repeat) myOSystem.console().toggleP1Bit(); if (pressed && !repeated) myOSystem.console().toggleP1Bit();
return; return;
case Event::ToggleM0Collision: case Event::ToggleM0Collision:
if (pressed && !repeat) myOSystem.console().toggleM0Collision(); if (pressed && !repeated) myOSystem.console().toggleM0Collision();
return; return;
case Event::ToggleM0Bit: case Event::ToggleM0Bit:
if (pressed && !repeat) myOSystem.console().toggleM0Bit(); if (pressed && !repeated) myOSystem.console().toggleM0Bit();
return; return;
case Event::ToggleM1Collision: case Event::ToggleM1Collision:
if (pressed && !repeat) myOSystem.console().toggleM1Collision(); if (pressed && !repeated) myOSystem.console().toggleM1Collision();
return; return;
case Event::ToggleM1Bit: case Event::ToggleM1Bit:
if (pressed && !repeat) myOSystem.console().toggleM1Bit(); if (pressed && !repeated) myOSystem.console().toggleM1Bit();
return; return;
case Event::ToggleBLCollision: case Event::ToggleBLCollision:
if (pressed && !repeat) myOSystem.console().toggleBLCollision(); if (pressed && !repeated) myOSystem.console().toggleBLCollision();
return; return;
case Event::ToggleBLBit: case Event::ToggleBLBit:
@ -590,11 +598,11 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat)
return; return;
case Event::TogglePFCollision: case Event::TogglePFCollision:
if (pressed && !repeat) myOSystem.console().togglePFCollision(); if (pressed && !repeated) myOSystem.console().togglePFCollision();
return; return;
case Event::TogglePFBit: case Event::TogglePFBit:
if (pressed && !repeat) myOSystem.console().togglePFBit(); if (pressed && !repeated) myOSystem.console().togglePFBit();
return; return;
case Event::ToggleFixedColors: case Event::ToggleFixedColors:
@ -602,19 +610,19 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat)
return; return;
case Event::ToggleCollisions: case Event::ToggleCollisions:
if (pressed && !repeat) myOSystem.console().toggleCollisions(); if (pressed && !repeated) myOSystem.console().toggleCollisions();
return; return;
case Event::ToggleBits: case Event::ToggleBits:
if (pressed && !repeat) myOSystem.console().toggleBits(); if (pressed && !repeated) myOSystem.console().toggleBits();
return; return;
case Event::SaveState: case Event::SaveState:
if(pressed && !repeat) myOSystem.state().saveState(); if(pressed && !repeated) myOSystem.state().saveState();
return; return;
case Event::SaveAllStates: case Event::SaveAllStates:
if (pressed && !repeat) if (pressed && !repeated)
myOSystem.frameBuffer().showMessage(myOSystem.state().rewindManager().saveAllStates()); myOSystem.frameBuffer().showMessage(myOSystem.state().rewindManager().saveAllStates());
return; return;
@ -623,11 +631,11 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat)
return; return;
case Event::LoadState: case Event::LoadState:
if(pressed && !repeat) myOSystem.state().loadState(); if(pressed && !repeated) myOSystem.state().loadState();
return; return;
case Event::LoadAllStates: case Event::LoadAllStates:
if (pressed && !repeat) if (pressed && !repeated)
myOSystem.frameBuffer().showMessage(myOSystem.state().rewindManager().loadAllStates()); myOSystem.frameBuffer().showMessage(myOSystem.state().rewindManager().loadAllStates());
return; return;
@ -664,7 +672,7 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat)
return; return;
case Event::TakeSnapshot: case Event::TakeSnapshot:
if(pressed && !repeat) myOSystem.frameBuffer().tiaSurface().saveSnapShot(); if(pressed && !repeated) myOSystem.frameBuffer().tiaSurface().saveSnapShot();
return; return;
case Event::ExitMode: case Event::ExitMode:
@ -673,25 +681,25 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat)
switch (myState) switch (myState)
{ {
case EventHandlerState::PAUSE: case EventHandlerState::PAUSE:
if (pressed && !repeat) changeStateByEvent(Event::TogglePauseMode); if (pressed && !repeated) changeStateByEvent(Event::TogglePauseMode);
return; return;
case EventHandlerState::CMDMENU: case EventHandlerState::CMDMENU:
if (pressed && !repeat) changeStateByEvent(Event::CmdMenuMode); if (pressed && !repeated) changeStateByEvent(Event::CmdMenuMode);
return; return;
case EventHandlerState::TIMEMACHINE: case EventHandlerState::TIMEMACHINE:
if (pressed && !repeat) changeStateByEvent(Event::TimeMachineMode); if (pressed && !repeated) changeStateByEvent(Event::TimeMachineMode);
return; return;
#if 0 // FIXME - exits ROM too, when it should just go back to ROM #if 0 // FIXME - exits ROM too, when it should just go back to ROM
case EventHandlerState::DEBUGGER: case EventHandlerState::DEBUGGER:
if (pressed && !repeat) changeStateByEvent(Event::DebuggerMode); if (pressed && !repeated) changeStateByEvent(Event::DebuggerMode);
return; return;
#endif #endif
case EventHandlerState::EMULATION: case EventHandlerState::EMULATION:
if (pressed && !repeat) if (pressed && !repeated)
{ {
// Go back to the launcher, or immediately quit // Go back to the launcher, or immediately quit
if (myOSystem.settings().getBool("exitlauncher") || if (myOSystem.settings().getBool("exitlauncher") ||
@ -707,7 +715,7 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat)
} }
case Event::Quit: case Event::Quit:
if(pressed && !repeat) if(pressed && !repeated)
{ {
saveKeyMapping(); saveKeyMapping();
saveJoyMapping(); saveJoyMapping();
@ -716,7 +724,7 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat)
return; return;
case Event::StartPauseMode: case Event::StartPauseMode:
if (pressed && !repeat && myState == EventHandlerState::EMULATION) if (pressed && !repeated && myState == EventHandlerState::EMULATION)
setState(EventHandlerState::PAUSE); setState(EventHandlerState::PAUSE);
return; return;
@ -741,28 +749,28 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat)
case Event::Combo16: case Event::Combo16:
for(int i = 0, combo = event - Event::Combo1; i < EVENTS_PER_COMBO; ++i) for(int i = 0, combo = event - Event::Combo1; i < EVENTS_PER_COMBO; ++i)
if(myComboTable[combo][i] != Event::NoType) if(myComboTable[combo][i] != Event::NoType)
handleEvent(myComboTable[combo][i], pressed, repeat); handleEvent(myComboTable[combo][i], pressed, repeated);
return; return;
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
// Events which relate to switches() // Events which relate to switches()
case Event::ConsoleColor: case Event::ConsoleColor:
if(pressed && !repeat) if(pressed && !repeated)
{ {
myEvent.set(Event::ConsoleBlackWhite, 0); myEvent.set(Event::ConsoleBlackWhite, 0);
myOSystem.frameBuffer().showMessage(myIs7800 ? "Pause released" : "Color Mode"); myOSystem.frameBuffer().showMessage(myIs7800 ? "Pause released" : "Color Mode");
} }
break; break;
case Event::ConsoleBlackWhite: case Event::ConsoleBlackWhite:
if(pressed && !repeat) if(pressed && !repeated)
{ {
myEvent.set(Event::ConsoleColor, 0); myEvent.set(Event::ConsoleColor, 0);
myOSystem.frameBuffer().showMessage(myIs7800 ? "Pause pushed" : "B/W Mode"); myOSystem.frameBuffer().showMessage(myIs7800 ? "Pause pushed" : "B/W Mode");
} }
break; break;
case Event::ConsoleColorToggle: case Event::ConsoleColorToggle:
if(pressed && !repeat) if(pressed && !repeated)
{ {
if(myOSystem.console().switches().tvColor()) if(myOSystem.console().switches().tvColor())
{ {
@ -781,7 +789,7 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat)
return; return;
case Event::Console7800Pause: case Event::Console7800Pause:
if(pressed && !repeat) if(pressed && !repeated)
{ {
myEvent.set(Event::ConsoleBlackWhite, 0); myEvent.set(Event::ConsoleBlackWhite, 0);
myEvent.set(Event::ConsoleColor, 0); myEvent.set(Event::ConsoleColor, 0);
@ -791,21 +799,21 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat)
return; return;
case Event::ConsoleLeftDiffA: case Event::ConsoleLeftDiffA:
if(pressed && !repeat) if(pressed && !repeated)
{ {
myEvent.set(Event::ConsoleLeftDiffB, 0); myEvent.set(Event::ConsoleLeftDiffB, 0);
myOSystem.frameBuffer().showMessage(GUI::LEFT_DIFFICULTY + " A"); myOSystem.frameBuffer().showMessage(GUI::LEFT_DIFFICULTY + " A");
} }
return; return;
case Event::ConsoleLeftDiffB: case Event::ConsoleLeftDiffB:
if(pressed && !repeat) if(pressed && !repeated)
{ {
myEvent.set(Event::ConsoleLeftDiffA, 0); myEvent.set(Event::ConsoleLeftDiffA, 0);
myOSystem.frameBuffer().showMessage(GUI::LEFT_DIFFICULTY + " B"); myOSystem.frameBuffer().showMessage(GUI::LEFT_DIFFICULTY + " B");
} }
return; return;
case Event::ConsoleLeftDiffToggle: case Event::ConsoleLeftDiffToggle:
if(pressed && !repeat) if(pressed && !repeated)
{ {
if(myOSystem.console().switches().leftDifficultyA()) if(myOSystem.console().switches().leftDifficultyA())
{ {
@ -824,21 +832,21 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat)
return; return;
case Event::ConsoleRightDiffA: case Event::ConsoleRightDiffA:
if(pressed && !repeat) if(pressed && !repeated)
{ {
myEvent.set(Event::ConsoleRightDiffB, 0); myEvent.set(Event::ConsoleRightDiffB, 0);
myOSystem.frameBuffer().showMessage(GUI::RIGHT_DIFFICULTY + " A"); myOSystem.frameBuffer().showMessage(GUI::RIGHT_DIFFICULTY + " A");
} }
return; return;
case Event::ConsoleRightDiffB: case Event::ConsoleRightDiffB:
if(pressed && !repeat) if(pressed && !repeated)
{ {
myEvent.set(Event::ConsoleRightDiffA, 0); myEvent.set(Event::ConsoleRightDiffA, 0);
myOSystem.frameBuffer().showMessage(GUI::RIGHT_DIFFICULTY + " B"); myOSystem.frameBuffer().showMessage(GUI::RIGHT_DIFFICULTY + " B");
} }
return; return;
case Event::ConsoleRightDiffToggle: case Event::ConsoleRightDiffToggle:
if(pressed && !repeat) if(pressed && !repeated)
{ {
if(myOSystem.console().switches().rightDifficultyA()) if(myOSystem.console().switches().rightDifficultyA())
{ {
@ -865,7 +873,7 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat)
} }
// Otherwise, pass it to the emulation core // Otherwise, pass it to the emulation core
if (!repeat) if (!repeated)
myEvent.set(event, pressed); myEvent.set(event, pressed);
} }
@ -1672,6 +1680,8 @@ EventHandler::ActionList EventHandler::ourEmulActionList[EMUL_ACTIONLIST_SIZE] =
{ Event::VidmodeDecrease, "Previous zoom level", "" }, { Event::VidmodeDecrease, "Previous zoom level", "" },
{ Event::VidmodeIncrease, "Next zoom level", "" }, { Event::VidmodeIncrease, "Next zoom level", "" },
{ Event::ToggleFullScreen, "Toggle fullscreen", "" }, { Event::ToggleFullScreen, "Toggle fullscreen", "" },
{ Event::DecreaseOverscan, "Decrease overscan in fullscreen mode", "" },
{ Event::IncreaseOverScan, "Increase overscan in fullscreen mode", "" },
{ Event::DecreaseFormat, "Decrease display format", "" }, { Event::DecreaseFormat, "Decrease display format", "" },
{ Event::IncreaseFormat, "Increase display format", "" }, { Event::IncreaseFormat, "Increase display format", "" },
{ Event::TogglePalette, "Switch palette (Standard/Z26/User)", "" }, { Event::TogglePalette, "Switch palette (Standard/Z26/User)", "" },

View File

@ -115,7 +115,7 @@ class EventHandler
/** /**
This method indicates that the system should terminate. This method indicates that the system should terminate.
*/ */
void quit() { handleEvent(Event::Quit, true); } void quit() { handleEvent(Event::Quit); }
/** /**
Sets the mouse axes and buttons to act as the controller specified in Sets the mouse axes and buttons to act as the controller specified in
@ -139,9 +139,9 @@ class EventHandler
@param type The event @param type The event
@param pressed Pressed (true) or released (false) @param pressed Pressed (true) or released (false)
@param repeat Repeated key (true) or first press/release (false) @param repeated Repeated key (true) or first press/release (false)
*/ */
void handleEvent(Event::Type type, bool pressed = true, bool repeat = false); void handleEvent(Event::Type type, bool pressed = true, bool repeated = false);
/** /**
Handle events that must be processed each time a new console is Handle events that must be processed each time a new console is
@ -319,8 +319,8 @@ class EventHandler
void handleTextEvent(char text); void handleTextEvent(char text);
void handleMouseMotionEvent(int x, int y, int xrel, int yrel); void handleMouseMotionEvent(int x, int y, int xrel, int yrel);
void handleMouseButtonEvent(MouseButton b, bool pressed, int x, int y); void handleMouseButtonEvent(MouseButton b, bool pressed, int x, int y);
void handleKeyEvent(StellaKey key, StellaMod mod, bool pressed, bool repeat) { void handleKeyEvent(StellaKey key, StellaMod mod, bool pressed, bool repeated) {
myPKeyHandler->handleEvent(key, mod, pressed, repeat); myPKeyHandler->handleEvent(key, mod, pressed, repeated);
} }
void handleJoyBtnEvent(int stick, int button, bool pressed) { void handleJoyBtnEvent(int stick, int button, bool pressed) {
myPJoyHandler->handleBtnEvent(stick, button, pressed); myPJoyHandler->handleBtnEvent(stick, button, pressed);
@ -373,7 +373,7 @@ class EventHandler
#else #else
PNG_SIZE = 0, PNG_SIZE = 0,
#endif #endif
EMUL_ACTIONLIST_SIZE = 136 + PNG_SIZE + COMBO_SIZE, EMUL_ACTIONLIST_SIZE = 138 + PNG_SIZE + COMBO_SIZE,
MENU_ACTIONLIST_SIZE = 18 MENU_ACTIONLIST_SIZE = 18
; ;

View File

@ -746,6 +746,24 @@ void FrameBuffer::toggleFullscreen()
setFullscreen(!fullScreen()); setFullscreen(!fullScreen());
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void FrameBuffer::changeOverscan(int direction)
{
if (fullScreen())
{
int oldOverscan = myOSystem.settings().getInt("tia.fs_overscan");
int overscan = BSPF::clamp(oldOverscan + direction, 0, 10);
if (overscan != oldOverscan)
{
myOSystem.settings().setValue("tia.fs_overscan", overscan);
// issue a complete framebuffer re-initialization
myOSystem.createFrameBuffer();
}
}
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bool FrameBuffer::changeVidMode(int direction) bool FrameBuffer::changeVidMode(int direction)
{ {

View File

@ -219,6 +219,13 @@ class FrameBuffer
*/ */
void toggleFullscreen(); void toggleFullscreen();
/**
Changes the fullscreen overscan.
direction = -1 means less overscan
direction = +1 means more overscan
*/
void changeOverscan(int direction);
/** /**
This method is called when the user wants to switch to the next This method is called when the user wants to switch to the next
available video mode. In windowed mode, this typically means going to available video mode. In windowed mode, this typically means going to

View File

@ -169,7 +169,7 @@ void DialogContainer::handleTextEvent(char text)
} }
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void DialogContainer::handleKeyEvent(StellaKey key, StellaMod mod, bool pressed, bool repeat) void DialogContainer::handleKeyEvent(StellaKey key, StellaMod mod, bool pressed, bool repeated)
{ {
if(myDialogStack.empty()) if(myDialogStack.empty())
return; return;