diff --git a/ares/gba/system/controls.cpp b/ares/gba/system/controls.cpp index e59be13f3..78cf0df70 100644 --- a/ares/gba/system/controls.cpp +++ b/ares/gba/system/controls.cpp @@ -13,7 +13,7 @@ auto System::Controls::load(Node::Object parent) -> void { start = node->append("Start"); if(GameBoyAdvance::Model::GameBoyPlayer()) { - rumbler = parent->append("Rumble"); + rumbler = node->append("Rumble"); } } diff --git a/ares/gba/system/system.cpp b/ares/gba/system/system.cpp index 76f42141f..6a69d894c 100644 --- a/ares/gba/system/system.cpp +++ b/ares/gba/system/system.cpp @@ -46,11 +46,9 @@ auto System::load(Node::System& root, string name) -> bool { information = {}; if(name.find("Game Boy Advance")) { - information.name = "Game Boy Advance"; information.model = Model::GameBoyAdvance; } if(name.find("Game Boy Player")) { - information.name = "Game Boy Player"; information.model = Model::GameBoyPlayer; } diff --git a/desktop-ui/emulator/game-boy-advance.cpp b/desktop-ui/emulator/game-boy-advance.cpp index 473801092..e38a68194 100644 --- a/desktop-ui/emulator/game-boy-advance.cpp +++ b/desktop-ui/emulator/game-boy-advance.cpp @@ -4,6 +4,7 @@ struct GameBoyAdvance : Emulator { auto load() -> LoadResult override; auto save() -> bool override; auto pak(ares::Node::Object) -> shared_pointer override; + string deviceName; }; GameBoyAdvance::GameBoyAdvance() { @@ -66,9 +67,10 @@ auto GameBoyAdvance::load() -> LoadResult { return result; } + deviceName = settings.gameBoyAdvance.player ? "Game Boy Player" : "Game Boy Advance"; ares::GameBoyAdvance::option("Pixel Accuracy", settings.video.pixelAccuracy); - if(!ares::GameBoyAdvance::load(root, "[Nintendo] Game Boy Advance")) return otherError; + if(!ares::GameBoyAdvance::load(root, {"[Nintendo] ", deviceName})) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); diff --git a/desktop-ui/settings/options.cpp b/desktop-ui/settings/options.cpp index 5292deafc..f2b2862ea 100644 --- a/desktop-ui/settings/options.cpp +++ b/desktop-ui/settings/options.cpp @@ -44,6 +44,14 @@ auto OptionSettings::construct() -> void { nintendo64ExpansionPakLayout.setAlignment(1).setPadding(12_sx, 0); nintendo64ExpansionPakHint.setText("Enable/Disable the 4MB Expansion Pak").setFont(Font().setSize(7.0)).setForegroundColor(SystemColor::Sublabel); + gameBoyAdvanceSettingsLabel.setText("Game Boy Advance Settings").setFont(Font().setBold()); + + gameBoyPlayerOption.setText("Game Boy Player").setChecked(settings.gameBoyAdvance.player).onToggle([&] { + settings.gameBoyAdvance.player = gameBoyPlayerOption.checked(); + }); + gameBoyPlayerLayout.setAlignment(1).setPadding(12_sx, 0); + gameBoyPlayerHint.setText("Enable/Disable Game Boy Player rumble").setFont(Font().setSize(7.0)).setForegroundColor(SystemColor::Sublabel); + megaDriveSettingsLabel.setText("Mega Drive Settings").setFont(Font().setBold()); megaDriveTmssOption.setText("TMSS Boot Rom").setChecked(settings.megadrive.tmss).onToggle([&] { diff --git a/desktop-ui/settings/settings.cpp b/desktop-ui/settings/settings.cpp index 5b04caf2c..7a5502317 100644 --- a/desktop-ui/settings/settings.cpp +++ b/desktop-ui/settings/settings.cpp @@ -124,6 +124,8 @@ auto Settings::process(bool load) -> void { bind(boolean, "Nintendo64/ExpansionPak", nintendo64.expansionPak); + bind(boolean, "GameBoyAdvance/Player", gameBoyAdvance.player); + bind(boolean, "MegaDrive/TMSS", megadrive.tmss); for(u32 index : range(9)) { diff --git a/desktop-ui/settings/settings.hpp b/desktop-ui/settings/settings.hpp index d20e9ee77..52b6ec424 100644 --- a/desktop-ui/settings/settings.hpp +++ b/desktop-ui/settings/settings.hpp @@ -105,6 +105,10 @@ struct Settings : Markup::Node { bool expansionPak = true; } nintendo64; + struct GameBoyAdvance { + bool player = false; + } gameBoyAdvance; + struct MegaDrive { bool tmss = false; } megadrive; @@ -262,6 +266,10 @@ struct OptionSettings : VerticalLayout { HorizontalLayout nintendo64ExpansionPakLayout{this, Size{~0, 0}, 5}; CheckLabel nintendo64ExpansionPakOption{&nintendo64ExpansionPakLayout, Size{0, 0}, 5}; Label nintendo64ExpansionPakHint{&nintendo64ExpansionPakLayout, Size{0, 0}}; + Label gameBoyAdvanceSettingsLabel{this, Size{~0, 0}, 5}; + HorizontalLayout gameBoyPlayerLayout{this, Size{~0, 0}, 5}; + CheckLabel gameBoyPlayerOption{&gameBoyPlayerLayout, Size{0, 0}, 5}; + Label gameBoyPlayerHint{&gameBoyPlayerLayout, Size{0, 0}}; Label megaDriveSettingsLabel{this, Size{~0, 0}, 5}; HorizontalLayout megaDriveTmssLayout{this, Size{~0, 0}, 5}; CheckLabel megaDriveTmssOption{&megaDriveTmssLayout, Size{0, 0}, 5}; diff --git a/mia/medium/game-boy-advance.cpp b/mia/medium/game-boy-advance.cpp index 3d8e50632..8e9d70361 100644 --- a/mia/medium/game-boy-advance.cpp +++ b/mia/medium/game-boy-advance.cpp @@ -1,5 +1,6 @@ struct GameBoyAdvance : Cartridge { auto name() -> string override { return "Game Boy Advance"; } + auto saveName() -> string override { return "Game Boy Advance"; } auto extensions() -> vector override { return {"gba"}; } auto load(string location) -> LoadResult override; auto save(string location) -> bool override;