From c2c479440e2b8ff33a6a93343fe18617c2b4e6b6 Mon Sep 17 00:00:00 2001 From: Sintendo Date: Tue, 30 Jun 2020 23:13:09 +0200 Subject: [PATCH] Add 'Power Cycle' hotkey Closes #25. --- bsnes/target-bsnes/input/hotkeys.cpp | 4 ++++ bsnes/target-bsnes/program/game.cpp | 8 ++++++++ bsnes/target-bsnes/program/program.hpp | 1 + 3 files changed, 13 insertions(+) diff --git a/bsnes/target-bsnes/input/hotkeys.cpp b/bsnes/target-bsnes/input/hotkeys.cpp index 3d8856b9..0cc28408 100644 --- a/bsnes/target-bsnes/input/hotkeys.cpp +++ b/bsnes/target-bsnes/input/hotkeys.cpp @@ -151,6 +151,10 @@ auto InputManager::bindHotkeys() -> void { program.reset(); })); + hotkeys.append(InputHotkey("Power Cycle").onPress([] { + program.power(); + })); + hotkeys.append(InputHotkey("Quit Emulator").onPress([] { program.quit(); })); diff --git a/bsnes/target-bsnes/program/game.cpp b/bsnes/target-bsnes/program/game.cpp index 74901b89..b83a9752 100644 --- a/bsnes/target-bsnes/program/game.cpp +++ b/bsnes/target-bsnes/program/game.cpp @@ -308,6 +308,14 @@ auto Program::reset() -> void { showMessage("Game reset"); } +auto Program::power() -> void { + if(!emulator->loaded()) return; + rewindReset(); + hackCompatibility(); + emulator->power(); + showMessage("Power cycle"); +} + auto Program::unload() -> void { if(!emulator->loaded()) return; //todo: video.clear() is not working on macOS/OpenGL 3.2 diff --git a/bsnes/target-bsnes/program/program.hpp b/bsnes/target-bsnes/program/program.hpp index 7614f21a..f0b25cfb 100644 --- a/bsnes/target-bsnes/program/program.hpp +++ b/bsnes/target-bsnes/program/program.hpp @@ -24,6 +24,7 @@ struct Program : Lock, Emulator::Platform { auto loadSufamiTurboB(string location) -> bool; auto save() -> void; auto reset() -> void; + auto power() -> void; auto unload() -> void; auto verified() const -> bool;