From 9dc91bd38ba43a02538b47ea5345f29af09b980d Mon Sep 17 00:00:00 2001 From: thrust26 Date: Sun, 2 Jun 2019 09:21:20 +0200 Subject: [PATCH] add overscan hotkeys remove ystart hotkeys update doc --- docs/index.html | 24 +++--- src/common/PKeyboardHandler.cxx | 51 +++---------- src/common/PKeyboardHandler.hxx | 2 +- src/emucore/Event.hxx | 1 + src/emucore/EventHandler.cxx | 126 +++++++++++++++++--------------- src/emucore/EventHandler.hxx | 16 ++-- src/emucore/FrameBuffer.cxx | 18 +++++ src/emucore/FrameBuffer.hxx | 7 ++ src/gui/DialogContainer.cxx | 2 +- 9 files changed, 128 insertions(+), 119 deletions(-) diff --git a/docs/index.html b/docs/index.html index db5ace441..dccd854a2 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1371,18 +1371,6 @@ Key (macOS) - - Set "Display.YStart" to next larger value - Alt + PageUp - Cmd + PageUp - - - - Set "Display.YStart" to next smaller value - Alt + PageDown - Cmd + PageDown - - Toggle frame stats (scanline count/FPS/BS type etc.) Alt + L @@ -1521,6 +1509,18 @@ Cmd + Enter + + Increase overscan in fullscreen mode + Alt + PageUp + Cmd + PageUp + + + + Decrease overscan in fullscreen mode + Alt + PageDown + Cmd + PageDown + + Switch display format in increasing order (NTSC/PAL/SECAM etc.) Control + f diff --git a/src/common/PKeyboardHandler.cxx b/src/common/PKeyboardHandler.cxx index cff50aebd..e9750169d 100644 --- a/src/common/PKeyboardHandler.cxx +++ b/src/common/PKeyboardHandler.cxx @@ -176,6 +176,8 @@ void PhysicalKeyboardHandler::setDefaultMapping(Event::Type event, EventMode mod setDefaultKey(Event::SoundToggle , KBDK_RIGHTBRACKET, KBDM_CTRL); 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::VidmodeRGB , KBDK_2, 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::ToggleFullScreen , KBDK_RETURN, MOD3); + #ifdef BSPF_MACOS setDefaultKey(Event::Quit , KBDK_Q, MOD3); #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 // 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::PAUSE: - myHandler.handleEvent(myKeyMap.get(kEmulationMode, key, mod), pressed, repeat); + myHandler.handleEvent(myKeyMap.get(kEmulationMode, key, mod), pressed, repeated); break; default: #ifdef GUI_SUPPORT if (myHandler.hasOverlay()) - myHandler.overlay().handleKeyEvent(key, mod, pressed, repeat); + myHandler.overlay().handleKeyEvent(key, mod, pressed, repeated); #endif - myHandler.handleEvent(myKeyMap.get(kMenuMode, key, mod), pressed, repeat); + myHandler.handleEvent(myKeyMap.get(kMenuMode, key, mod), pressed, repeated); break; } } @@ -369,42 +372,12 @@ void PhysicalKeyboardHandler::handleEvent(StellaKey key, StellaMod mod, bool pre // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - bool PhysicalKeyboardHandler::handleAltEvent(StellaKey key, StellaMod mod, bool pressed) { - bool handled = true; - - if(StellaModTest::isAlt(mod) && pressed) + if(StellaModTest::isAlt(mod) && pressed && key == KBDK_TAB) { - EventHandlerState estate = myHandler.state(); - - if(key == KBDK_TAB) - { - // Swallow Alt-Tab, but remember that it happened - myAltKeyCounter = 1; - 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; + // Swallow Alt-Tab, but remember that it happened + myAltKeyCounter = 1; + return true; } // alt - else - handled = false; - return handled; + return false; } diff --git a/src/common/PKeyboardHandler.hxx b/src/common/PKeyboardHandler.hxx index 7508eac3b..dcbab2fa4 100644 --- a/src/common/PKeyboardHandler.hxx +++ b/src/common/PKeyboardHandler.hxx @@ -54,7 +54,7 @@ class PhysicalKeyboardHandler bool addMapping(Event::Type event, EventMode mode, StellaKey key, StellaMod mod); /** 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 { return myKeyMap.get(mode, key, mod); diff --git a/src/emucore/Event.hxx b/src/emucore/Event.hxx index 1c33f0c4f..c95836977 100644 --- a/src/emucore/Event.hxx +++ b/src/emucore/Event.hxx @@ -104,6 +104,7 @@ class Event Unwind1Menu, Unwind10Menu, UnwindAllMenu, StartPauseMode, SaveAllStates, LoadAllStates, + DecreaseOverscan, IncreaseOverScan, LastType }; diff --git a/src/emucore/EventHandler.cxx b/src/emucore/EventHandler.cxx index 0ede3527a..bb17f0117 100644 --- a/src/emucore/EventHandler.cxx +++ b/src/emucore/EventHandler.cxx @@ -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 // 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: - if (!repeat) myFryingFlag = pressed; + if (!repeated) myFryingFlag = pressed; return; case Event::ReloadConsole: - if (pressed && !repeat) myOSystem.reloadConsole(); + if (pressed && !repeated) myOSystem.reloadConsole(); return; case Event::VolumeDecrease: @@ -399,7 +399,7 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat) return; case Event::SoundToggle: - if(pressed && !repeat) myOSystem.sound().toggleMute(); + if(pressed && !repeated) myOSystem.sound().toggleMute(); return; case Event::VidmodeDecrease: @@ -411,31 +411,39 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat) return; 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; case Event::VidmodeStd: - if (pressed && !repeat) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::OFF); + if (pressed && !repeated) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::OFF); return; case Event::VidmodeRGB: - if (pressed && !repeat) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::RGB); + if (pressed && !repeated) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::RGB); return; case Event::VidmodeSVideo: - if (pressed && !repeat) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::SVIDEO); + if (pressed && !repeated) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::SVIDEO); return; case Event::VidModeComposite: - if (pressed && !repeat) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::COMPOSITE); + if (pressed && !repeated) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::COMPOSITE); return; case Event::VidModeBad: - if (pressed && !repeat) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::BAD); + if (pressed && !repeated) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::BAD); return; case Event::VidModeCustom: - if (pressed && !repeat) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::CUSTOM); + if (pressed && !repeated) myOSystem.frameBuffer().tiaSurface().setNTSC(NTSCFilter::Preset::CUSTOM); return; case Event::ScanlinesDecrease: @@ -491,19 +499,19 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat) return; case Event::TogglePhosphor: - if (pressed && !repeat) myOSystem.console().togglePhosphor(); + if (pressed && !repeated) myOSystem.console().togglePhosphor(); return; case Event::ToggleColorLoss: - if (pressed && !repeat) myOSystem.console().toggleColorLoss(); + if (pressed && !repeated) myOSystem.console().toggleColorLoss(); return; case Event::TogglePalette: - if (pressed && !repeat) myOSystem.console().togglePalette(); + if (pressed && !repeated) myOSystem.console().togglePalette(); return; case Event::ToggleJitter: - if (pressed && !repeat) myOSystem.console().toggleJitter(); + if (pressed && !repeated) myOSystem.console().toggleJitter(); return; case Event::ToggleFrameStats: @@ -511,25 +519,25 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat) return; case Event::ToggleTimeMachine: - if (pressed && !repeat) myOSystem.state().toggleTimeMachine(); + if (pressed && !repeated) myOSystem.state().toggleTimeMachine(); return; #ifdef PNG_SUPPORT case Event::ToggleContSnapshots: - if (pressed && !repeat) myOSystem.png().toggleContinuousSnapshots(false); + if (pressed && !repeated) myOSystem.png().toggleContinuousSnapshots(false); return; case Event::ToggleContSnapshotsFrame: - if (pressed && !repeat) myOSystem.png().toggleContinuousSnapshots(true); + if (pressed && !repeated) myOSystem.png().toggleContinuousSnapshots(true); return; #endif case Event::HandleMouseControl: - if (pressed && !repeat) handleMouseControl(); + if (pressed && !repeated) handleMouseControl(); return; case Event::ToggleSAPortOrder: - if (pressed && !repeat) toggleSAPortOrder(); + if (pressed && !repeated) toggleSAPortOrder(); return; case Event::DecreaseFormat: @@ -541,7 +549,7 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat) return; case Event::ToggleGrabMouse: - if (pressed && !repeat && !myOSystem.frameBuffer().fullScreen()) + if (pressed && !repeated && !myOSystem.frameBuffer().fullScreen()) { myOSystem.frameBuffer().toggleGrabMouse(); myOSystem.frameBuffer().showMessage(myOSystem.frameBuffer().grabMouseEnabled() @@ -550,39 +558,39 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat) return; case Event::ToggleP0Collision: - if (pressed && !repeat) myOSystem.console().toggleP0Collision(); + if (pressed && !repeated) myOSystem.console().toggleP0Collision(); return; case Event::ToggleP0Bit: - if (pressed && !repeat) myOSystem.console().toggleP0Bit(); + if (pressed && !repeated) myOSystem.console().toggleP0Bit(); return; case Event::ToggleP1Collision: - if (pressed && !repeat) myOSystem.console().toggleP1Collision(); + if (pressed && !repeated) myOSystem.console().toggleP1Collision(); return; case Event::ToggleP1Bit: - if (pressed && !repeat) myOSystem.console().toggleP1Bit(); + if (pressed && !repeated) myOSystem.console().toggleP1Bit(); return; case Event::ToggleM0Collision: - if (pressed && !repeat) myOSystem.console().toggleM0Collision(); + if (pressed && !repeated) myOSystem.console().toggleM0Collision(); return; case Event::ToggleM0Bit: - if (pressed && !repeat) myOSystem.console().toggleM0Bit(); + if (pressed && !repeated) myOSystem.console().toggleM0Bit(); return; case Event::ToggleM1Collision: - if (pressed && !repeat) myOSystem.console().toggleM1Collision(); + if (pressed && !repeated) myOSystem.console().toggleM1Collision(); return; case Event::ToggleM1Bit: - if (pressed && !repeat) myOSystem.console().toggleM1Bit(); + if (pressed && !repeated) myOSystem.console().toggleM1Bit(); return; case Event::ToggleBLCollision: - if (pressed && !repeat) myOSystem.console().toggleBLCollision(); + if (pressed && !repeated) myOSystem.console().toggleBLCollision(); return; case Event::ToggleBLBit: @@ -590,11 +598,11 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat) return; case Event::TogglePFCollision: - if (pressed && !repeat) myOSystem.console().togglePFCollision(); + if (pressed && !repeated) myOSystem.console().togglePFCollision(); return; case Event::TogglePFBit: - if (pressed && !repeat) myOSystem.console().togglePFBit(); + if (pressed && !repeated) myOSystem.console().togglePFBit(); return; case Event::ToggleFixedColors: @@ -602,19 +610,19 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat) return; case Event::ToggleCollisions: - if (pressed && !repeat) myOSystem.console().toggleCollisions(); + if (pressed && !repeated) myOSystem.console().toggleCollisions(); return; case Event::ToggleBits: - if (pressed && !repeat) myOSystem.console().toggleBits(); + if (pressed && !repeated) myOSystem.console().toggleBits(); return; case Event::SaveState: - if(pressed && !repeat) myOSystem.state().saveState(); + if(pressed && !repeated) myOSystem.state().saveState(); return; case Event::SaveAllStates: - if (pressed && !repeat) + if (pressed && !repeated) myOSystem.frameBuffer().showMessage(myOSystem.state().rewindManager().saveAllStates()); return; @@ -623,11 +631,11 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat) return; case Event::LoadState: - if(pressed && !repeat) myOSystem.state().loadState(); + if(pressed && !repeated) myOSystem.state().loadState(); return; case Event::LoadAllStates: - if (pressed && !repeat) + if (pressed && !repeated) myOSystem.frameBuffer().showMessage(myOSystem.state().rewindManager().loadAllStates()); return; @@ -664,7 +672,7 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat) return; case Event::TakeSnapshot: - if(pressed && !repeat) myOSystem.frameBuffer().tiaSurface().saveSnapShot(); + if(pressed && !repeated) myOSystem.frameBuffer().tiaSurface().saveSnapShot(); return; case Event::ExitMode: @@ -673,25 +681,25 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat) switch (myState) { case EventHandlerState::PAUSE: - if (pressed && !repeat) changeStateByEvent(Event::TogglePauseMode); + if (pressed && !repeated) changeStateByEvent(Event::TogglePauseMode); return; case EventHandlerState::CMDMENU: - if (pressed && !repeat) changeStateByEvent(Event::CmdMenuMode); + if (pressed && !repeated) changeStateByEvent(Event::CmdMenuMode); return; case EventHandlerState::TIMEMACHINE: - if (pressed && !repeat) changeStateByEvent(Event::TimeMachineMode); + if (pressed && !repeated) changeStateByEvent(Event::TimeMachineMode); return; #if 0 // FIXME - exits ROM too, when it should just go back to ROM case EventHandlerState::DEBUGGER: - if (pressed && !repeat) changeStateByEvent(Event::DebuggerMode); + if (pressed && !repeated) changeStateByEvent(Event::DebuggerMode); return; #endif case EventHandlerState::EMULATION: - if (pressed && !repeat) + if (pressed && !repeated) { // Go back to the launcher, or immediately quit if (myOSystem.settings().getBool("exitlauncher") || @@ -707,7 +715,7 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat) } case Event::Quit: - if(pressed && !repeat) + if(pressed && !repeated) { saveKeyMapping(); saveJoyMapping(); @@ -716,7 +724,7 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat) return; case Event::StartPauseMode: - if (pressed && !repeat && myState == EventHandlerState::EMULATION) + if (pressed && !repeated && myState == EventHandlerState::EMULATION) setState(EventHandlerState::PAUSE); return; @@ -741,28 +749,28 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat) case Event::Combo16: for(int i = 0, combo = event - Event::Combo1; i < EVENTS_PER_COMBO; ++i) if(myComboTable[combo][i] != Event::NoType) - handleEvent(myComboTable[combo][i], pressed, repeat); + handleEvent(myComboTable[combo][i], pressed, repeated); return; //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// // Events which relate to switches() case Event::ConsoleColor: - if(pressed && !repeat) + if(pressed && !repeated) { myEvent.set(Event::ConsoleBlackWhite, 0); myOSystem.frameBuffer().showMessage(myIs7800 ? "Pause released" : "Color Mode"); } break; case Event::ConsoleBlackWhite: - if(pressed && !repeat) + if(pressed && !repeated) { myEvent.set(Event::ConsoleColor, 0); myOSystem.frameBuffer().showMessage(myIs7800 ? "Pause pushed" : "B/W Mode"); } break; case Event::ConsoleColorToggle: - if(pressed && !repeat) + if(pressed && !repeated) { if(myOSystem.console().switches().tvColor()) { @@ -781,7 +789,7 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat) return; case Event::Console7800Pause: - if(pressed && !repeat) + if(pressed && !repeated) { myEvent.set(Event::ConsoleBlackWhite, 0); myEvent.set(Event::ConsoleColor, 0); @@ -791,21 +799,21 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat) return; case Event::ConsoleLeftDiffA: - if(pressed && !repeat) + if(pressed && !repeated) { myEvent.set(Event::ConsoleLeftDiffB, 0); myOSystem.frameBuffer().showMessage(GUI::LEFT_DIFFICULTY + " A"); } return; case Event::ConsoleLeftDiffB: - if(pressed && !repeat) + if(pressed && !repeated) { myEvent.set(Event::ConsoleLeftDiffA, 0); myOSystem.frameBuffer().showMessage(GUI::LEFT_DIFFICULTY + " B"); } return; case Event::ConsoleLeftDiffToggle: - if(pressed && !repeat) + if(pressed && !repeated) { if(myOSystem.console().switches().leftDifficultyA()) { @@ -824,21 +832,21 @@ void EventHandler::handleEvent(Event::Type event, bool pressed, bool repeat) return; case Event::ConsoleRightDiffA: - if(pressed && !repeat) + if(pressed && !repeated) { myEvent.set(Event::ConsoleRightDiffB, 0); myOSystem.frameBuffer().showMessage(GUI::RIGHT_DIFFICULTY + " A"); } return; case Event::ConsoleRightDiffB: - if(pressed && !repeat) + if(pressed && !repeated) { myEvent.set(Event::ConsoleRightDiffA, 0); myOSystem.frameBuffer().showMessage(GUI::RIGHT_DIFFICULTY + " B"); } return; case Event::ConsoleRightDiffToggle: - if(pressed && !repeat) + if(pressed && !repeated) { 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 - if (!repeat) + if (!repeated) myEvent.set(event, pressed); } @@ -1672,6 +1680,8 @@ EventHandler::ActionList EventHandler::ourEmulActionList[EMUL_ACTIONLIST_SIZE] = { Event::VidmodeDecrease, "Previous zoom level", "" }, { Event::VidmodeIncrease, "Next zoom level", "" }, { Event::ToggleFullScreen, "Toggle fullscreen", "" }, + { Event::DecreaseOverscan, "Decrease overscan in fullscreen mode", "" }, + { Event::IncreaseOverScan, "Increase overscan in fullscreen mode", "" }, { Event::DecreaseFormat, "Decrease display format", "" }, { Event::IncreaseFormat, "Increase display format", "" }, { Event::TogglePalette, "Switch palette (Standard/Z26/User)", "" }, diff --git a/src/emucore/EventHandler.hxx b/src/emucore/EventHandler.hxx index 4b18d0247..a825bb70d 100644 --- a/src/emucore/EventHandler.hxx +++ b/src/emucore/EventHandler.hxx @@ -115,7 +115,7 @@ class EventHandler /** 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 @@ -137,11 +137,11 @@ class EventHandler Send an event directly to the event handler. These events cannot be remapped. - @param type The event - @param pressed Pressed (true) or released (false) - @param repeat Repeated key (true) or first press/release (false) + @param type The event + @param pressed Pressed (true) or released (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 @@ -319,8 +319,8 @@ class EventHandler void handleTextEvent(char text); void handleMouseMotionEvent(int x, int y, int xrel, int yrel); void handleMouseButtonEvent(MouseButton b, bool pressed, int x, int y); - void handleKeyEvent(StellaKey key, StellaMod mod, bool pressed, bool repeat) { - myPKeyHandler->handleEvent(key, mod, pressed, repeat); + void handleKeyEvent(StellaKey key, StellaMod mod, bool pressed, bool repeated) { + myPKeyHandler->handleEvent(key, mod, pressed, repeated); } void handleJoyBtnEvent(int stick, int button, bool pressed) { myPJoyHandler->handleBtnEvent(stick, button, pressed); @@ -373,7 +373,7 @@ class EventHandler #else PNG_SIZE = 0, #endif - EMUL_ACTIONLIST_SIZE = 136 + PNG_SIZE + COMBO_SIZE, + EMUL_ACTIONLIST_SIZE = 138 + PNG_SIZE + COMBO_SIZE, MENU_ACTIONLIST_SIZE = 18 ; diff --git a/src/emucore/FrameBuffer.cxx b/src/emucore/FrameBuffer.cxx index 1d390aea2..fc22294e9 100644 --- a/src/emucore/FrameBuffer.cxx +++ b/src/emucore/FrameBuffer.cxx @@ -746,6 +746,24 @@ void FrameBuffer::toggleFullscreen() 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) { diff --git a/src/emucore/FrameBuffer.hxx b/src/emucore/FrameBuffer.hxx index 231b540d3..8f3104045 100644 --- a/src/emucore/FrameBuffer.hxx +++ b/src/emucore/FrameBuffer.hxx @@ -219,6 +219,13 @@ class FrameBuffer */ 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 available video mode. In windowed mode, this typically means going to diff --git a/src/gui/DialogContainer.cxx b/src/gui/DialogContainer.cxx index afabdfa69..b256bcf34 100644 --- a/src/gui/DialogContainer.cxx +++ b/src/gui/DialogContainer.cxx @@ -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()) return;