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;