From 90860c24422e53861d71bc06ee15daaa2b127eed Mon Sep 17 00:00:00 2001 From: jcm <6864788+jcm93@users.noreply.github.com> Date: Tue, 21 Jan 2025 12:32:05 -0600 Subject: [PATCH] address feedback, prefer implicit constructors, better error presentation --- ares/ares/ares.hpp | 30 ----------- desktop-ui/emulator/arcade.cpp | 12 ++--- desktop-ui/emulator/atari-2600.cpp | 10 ++-- desktop-ui/emulator/colecovision.cpp | 10 ++-- desktop-ui/emulator/emulator.cpp | 52 +++++++++++++------- desktop-ui/emulator/famicom-disk-system.cpp | 12 ++--- desktop-ui/emulator/famicom.cpp | 10 ++-- desktop-ui/emulator/game-boy-advance.cpp | 10 ++-- desktop-ui/emulator/game-boy-color.cpp | 10 ++-- desktop-ui/emulator/game-boy.cpp | 10 ++-- desktop-ui/emulator/game-gear.cpp | 16 ++---- desktop-ui/emulator/master-system.cpp | 18 +++---- desktop-ui/emulator/mega-32x.cpp | 16 +++--- desktop-ui/emulator/mega-cd-32x.cpp | 16 +++--- desktop-ui/emulator/mega-cd.cpp | 12 ++--- desktop-ui/emulator/mega-drive.cpp | 16 +++--- desktop-ui/emulator/msx.cpp | 10 ++-- desktop-ui/emulator/msx2.cpp | 8 +-- desktop-ui/emulator/myvision.cpp | 10 ++-- desktop-ui/emulator/neo-geo-aes.cpp | 10 ++-- desktop-ui/emulator/neo-geo-mvs.cpp | 10 ++-- desktop-ui/emulator/neo-geo-pocket-color.cpp | 10 ++-- desktop-ui/emulator/neo-geo-pocket.cpp | 10 ++-- desktop-ui/emulator/nintendo-64.cpp | 24 ++++----- desktop-ui/emulator/nintendo-64dd.cpp | 14 +++--- desktop-ui/emulator/pc-engine-cd.cpp | 12 ++--- desktop-ui/emulator/pc-engine.cpp | 10 ++-- desktop-ui/emulator/playstation.cpp | 12 ++--- desktop-ui/emulator/pocket-challenge-v2.cpp | 10 ++-- desktop-ui/emulator/saturn.cpp | 8 +-- desktop-ui/emulator/sg-1000.cpp | 10 ++-- desktop-ui/emulator/super-famicom.cpp | 18 +++---- desktop-ui/emulator/supergrafx-cd.cpp | 12 ++--- desktop-ui/emulator/supergrafx.cpp | 10 ++-- desktop-ui/emulator/wonderswan-color.cpp | 10 ++-- desktop-ui/emulator/wonderswan.cpp | 10 ++-- desktop-ui/emulator/zx-spectrum-128.cpp | 10 ++-- desktop-ui/emulator/zx-spectrum.cpp | 10 ++-- mia/medium/arcade.cpp | 12 ++--- mia/medium/atari-2600.cpp | 6 +-- mia/medium/bs-memory.cpp | 8 +-- mia/medium/colecovision.cpp | 6 +-- mia/medium/famicom-disk-system.cpp | 4 +- mia/medium/famicom.cpp | 6 +-- mia/medium/game-boy-advance.cpp | 6 +-- mia/medium/game-boy.cpp | 6 +-- mia/medium/game-gear.cpp | 6 +-- mia/medium/mame.cpp | 5 +- mia/medium/master-system.cpp | 6 +-- mia/medium/mega-32x.cpp | 6 +-- mia/medium/mega-cd.cpp | 6 +-- mia/medium/mega-drive.cpp | 6 +-- mia/medium/msx.cpp | 14 +++--- mia/medium/myvision.cpp | 6 +-- mia/medium/neo-geo-pocket.cpp | 6 +-- mia/medium/neo-geo.cpp | 20 ++++---- mia/medium/nintendo-64.cpp | 6 +-- mia/medium/nintendo-64dd.cpp | 12 ++--- mia/medium/pc-engine-cd.cpp | 6 +-- mia/medium/pc-engine.cpp | 6 +-- mia/medium/playstation.cpp | 6 +-- mia/medium/saturn.cpp | 6 +-- mia/medium/sg-1000.cpp | 6 +-- mia/medium/sufami-turbo.cpp | 8 +-- mia/medium/super-famicom.cpp | 8 +-- mia/medium/wonderswan.cpp | 6 +-- mia/medium/zx-spectrum.cpp | 14 +++--- mia/mia.cpp | 6 +-- mia/mia.hpp | 32 ++++++++++++ mia/pak/pak.hpp | 2 +- mia/system/arcade.cpp | 2 +- mia/system/atari-2600.cpp | 2 +- mia/system/colecovision.cpp | 4 +- mia/system/famicom.cpp | 2 +- mia/system/game-boy-advance.cpp | 4 +- mia/system/game-boy-color.cpp | 2 +- mia/system/game-boy.cpp | 2 +- mia/system/game-gear.cpp | 2 +- mia/system/master-system.cpp | 2 +- mia/system/mega-32x.cpp | 2 +- mia/system/mega-cd-32x.cpp | 4 +- mia/system/mega-cd.cpp | 4 +- mia/system/mega-drive.cpp | 2 +- mia/system/msx.cpp | 4 +- mia/system/myvision.cpp | 2 +- mia/system/neo-geo-aes.cpp | 4 +- mia/system/neo-geo-mvs.cpp | 4 +- mia/system/neo-geo-pocket-color.cpp | 4 +- mia/system/neo-geo-pocket.cpp | 4 +- mia/system/nintendo-64.cpp | 2 +- mia/system/nintendo-64dd.cpp | 4 +- mia/system/pc-engine.cpp | 2 +- mia/system/playstation.cpp | 4 +- mia/system/pocket-challenge-v2.cpp | 2 +- mia/system/saturn.cpp | 4 +- mia/system/sc-3000.cpp | 2 +- mia/system/sg-1000.cpp | 2 +- mia/system/super-famicom.cpp | 4 +- mia/system/supergrafx.cpp | 2 +- mia/system/wonderswan-color.cpp | 2 +- mia/system/wonderswan.cpp | 2 +- mia/system/zx-spectrum-128.cpp | 2 +- mia/system/zx-spectrum.cpp | 2 +- 103 files changed, 434 insertions(+), 425 deletions(-) diff --git a/ares/ares/ares.hpp b/ares/ares/ares.hpp index f49a52e8c8..78ea449a52 100644 --- a/ares/ares/ares.hpp +++ b/ares/ares/ares.hpp @@ -79,33 +79,3 @@ namespace ares { #include #include #include - -enum ResultEnum { - successful, - noFileSelected, - databaseNotFound, - romNotFoundInDatabase, - romNotFound, - invalidRom, - couldNotParseManifest, - noFirmware, - otherError -}; - -struct LoadResult { - ResultEnum result; - - string info; - string firmwareType; - string firmwareSystemName; - string firmwareRegion; - - LoadResult(ResultEnum r) : result(r), info(0) {} - - bool operator==(const LoadResult& other) { - return result == other.result; - } - bool operator!=(const LoadResult& other) { - return result != other.result; - } -}; diff --git a/desktop-ui/emulator/arcade.cpp b/desktop-ui/emulator/arcade.cpp index a18fb3f336..1634797aa1 100644 --- a/desktop-ui/emulator/arcade.cpp +++ b/desktop-ui/emulator/arcade.cpp @@ -36,18 +36,18 @@ Arcade::Arcade() { auto Arcade::load() -> LoadResult { game = mia::Medium::create("Arcade"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; system = mia::System::create("Arcade"); result = system->load(); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; //Determine from the game manifest which core to use for the given arcade rom #ifdef CORE_SG if(game->pak->attribute("board") == "sega/sg1000a") { - if(!ares::SG1000::load(root, {"[Sega] SG-1000A"})) return LoadResult(otherError); + if(!ares::SG1000::load(root, {"[Sega] SG-1000A"})) return otherError; systemPakName = "SG-1000A"; gamePakName = "Arcade Cartridge"; @@ -55,11 +55,11 @@ auto Arcade::load() -> LoadResult { port->allocate(); port->connect(); } - return LoadResult(successful); + return successful; } #endif - return LoadResult(otherError); + return otherError; } auto Arcade::save() -> bool { diff --git a/desktop-ui/emulator/atari-2600.cpp b/desktop-ui/emulator/atari-2600.cpp index 1a0b2ce735..b7699a4dbc 100644 --- a/desktop-ui/emulator/atari-2600.cpp +++ b/desktop-ui/emulator/atari-2600.cpp @@ -41,16 +41,16 @@ Atari2600::Atari2600() { auto Atari2600::load() -> LoadResult { game = mia::Medium::create("Atari 2600"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return couldNotParseManifest; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; system = mia::System::create("Atari 2600"); result = system->load(); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; auto region = Emulator::region(); - if(!ares::Atari2600::load(root, {"[Atari] Atari 2600 (", region, ")"})) return LoadResult(otherError); + if(!ares::Atari2600::load(root, {"[Atari] Atari 2600 (", region, ")"})) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -67,7 +67,7 @@ auto Atari2600::load() -> LoadResult { port->connect(); } - return LoadResult(successful); + return successful; } auto Atari2600::save() -> bool { diff --git a/desktop-ui/emulator/colecovision.cpp b/desktop-ui/emulator/colecovision.cpp index f606171816..59fb28cc43 100644 --- a/desktop-ui/emulator/colecovision.cpp +++ b/desktop-ui/emulator/colecovision.cpp @@ -42,12 +42,12 @@ ColecoVision::ColecoVision() { auto ColecoVision::load() -> LoadResult { game = mia::Medium::create("ColecoVision"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; system = mia::System::create("ColecoVision"); - if(system->load(firmware[0].location) != LoadResult(successful)) { + if(system->load(firmware[0].location) != successful) { result.firmwareSystemName = "ColecoVision"; result.firmwareType = firmware[0].type; result.firmwareRegion = firmware[0].region; @@ -56,7 +56,7 @@ auto ColecoVision::load() -> LoadResult { } auto region = Emulator::region(); - if(!ares::ColecoVision::load(root, {"[Coleco] ColecoVision (", region, ")"})) return LoadResult(otherError); + if(!ares::ColecoVision::load(root, {"[Coleco] ColecoVision (", region, ")"})) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -73,7 +73,7 @@ auto ColecoVision::load() -> LoadResult { port->connect(); } - return LoadResult(successful); + return successful; } auto ColecoVision::save() -> bool { diff --git a/desktop-ui/emulator/emulator.cpp b/desktop-ui/emulator/emulator.cpp index 7ee6b050ea..4b6a3911d2 100644 --- a/desktop-ui/emulator/emulator.cpp +++ b/desktop-ui/emulator/emulator.cpp @@ -55,39 +55,57 @@ auto Emulator::region() -> string { } auto Emulator::handleLoadResult(LoadResult result) -> void { + string errorText; + switch (result.result) { case successful: - break; + return; case noFileSelected: + return; + case invalidROM: + errorText = { "There was an error trying to parse the selected ROM. \n", + "Your ROM may be corrupt or contain a bad dump." }; break; case couldNotParseManifest: - error("An error was encountered while parsing the manifest. \n" - ""); + errorText = { "An error occurred while parsing the database file. You \n", + "may need to reinstall ares." }; break; case databaseNotFound: - error("The database file for the system was not found. \n" - "Make sure that you have installed or packaged ares correctly."); + errorText = { "The database file for the system was not found. \n", + "Make sure that you have installed or packaged ares correctly. \n", + "Missing database file: " }; break; case noFirmware: - if(MessageDialog().setText({ - "Error: firmware is missing or invalid.\n", - result.firmwareSystemName, " - ", result.firmwareType, " (", result.firmwareRegion, ") is required to play this game.\n" - "Would you like to configure firmware settings now?" - }).question() == "Yes") { - settingsWindow.show("Firmware"); - firmwareSettings.select(emulator->name, result.firmwareType, result.firmwareRegion); - } + errorText = { "Error: firmware is missing or invalid.\n", + result.firmwareSystemName, " - ", result.firmwareType, " (", result.firmwareRegion, ") is required to play this game.\n", + "Would you like to configure firmware settings now?" }; break; case romNotFound: - error("A required ROM file was not found."); + errorText = "The selected ROM file was not found or could not be opened."; break; case romNotFoundInDatabase: - error("The selected ROM was not found in the database."); + errorText = "The selected ROM was not found in the database."; break; case otherError: - error("Failed to load the selected system and ROM."); + errorText = "An internal error occurred when initializing the emulator core."; break; } + + if(result.info) { + errorText = { errorText, result.info }; + } + + switch (result.result) { + case noFirmware: + if(MessageDialog().setText({ + errorText + }).question() == "Yes") { + settingsWindow.show("Firmware"); + firmwareSettings.select(emulator->name, result.firmwareType, result.firmwareRegion); + } + default: + error(errorText); + } } auto Emulator::load(const string& location) -> bool { @@ -95,7 +113,7 @@ auto Emulator::load(const string& location) -> bool { LoadResult result = load(); handleLoadResult(result); - if(result != LoadResult(successful)) { + if(result != successful) { return false; } setBoolean("Color Emulation", settings.video.colorEmulation); diff --git a/desktop-ui/emulator/famicom-disk-system.cpp b/desktop-ui/emulator/famicom-disk-system.cpp index 7d8d9cbaf3..b7d2dd8485 100644 --- a/desktop-ui/emulator/famicom-disk-system.cpp +++ b/desktop-ui/emulator/famicom-disk-system.cpp @@ -68,13 +68,13 @@ auto FamicomDiskSystem::load(Menu menu) -> void { auto FamicomDiskSystem::load() -> LoadResult { game = mia::Medium::create("Famicom Disk System"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; bios = mia::Medium::create("Famicom"); result = bios->load(firmware[0].location); - if(result != LoadResult(successful)) { + if(result != successful) { result.firmwareSystemName = "Famicom"; result.firmwareType = firmware[0].type; result.firmwareRegion = firmware[0].region; @@ -84,9 +84,9 @@ auto FamicomDiskSystem::load() -> LoadResult { system = mia::System::create("Famicom"); result = system->load(); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; - if(!ares::Famicom::load(root, "[Nintendo] Famicom (NTSC-J)")) return LoadResult(otherError); + if(!ares::Famicom::load(root, "[Nintendo] Famicom (NTSC-J)")) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -112,7 +112,7 @@ auto FamicomDiskSystem::load() -> LoadResult { port->connect(); } - return LoadResult(successful); + return successful; } auto FamicomDiskSystem::save() -> bool { diff --git a/desktop-ui/emulator/famicom.cpp b/desktop-ui/emulator/famicom.cpp index eb5b53f7c4..529eff423c 100644 --- a/desktop-ui/emulator/famicom.cpp +++ b/desktop-ui/emulator/famicom.cpp @@ -38,16 +38,16 @@ Famicom::Famicom() { auto Famicom::load() -> LoadResult { game = mia::Medium::create("Famicom"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; system = mia::System::create("Famicom"); result = system->load(); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; auto region = Emulator::region(); - if(!ares::Famicom::load(root, {"[Nintendo] Famicom (", region, ")"})) return LoadResult(otherError); + if(!ares::Famicom::load(root, {"[Nintendo] Famicom (", region, ")"})) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -71,7 +71,7 @@ auto Famicom::load() -> LoadResult { } } - return LoadResult(successful); + return successful; } auto Famicom::save() -> bool { diff --git a/desktop-ui/emulator/game-boy-advance.cpp b/desktop-ui/emulator/game-boy-advance.cpp index 2c4f5a4484..473801092d 100644 --- a/desktop-ui/emulator/game-boy-advance.cpp +++ b/desktop-ui/emulator/game-boy-advance.cpp @@ -53,12 +53,12 @@ auto GameBoyAdvance::load(Menu menu) -> void { auto GameBoyAdvance::load() -> LoadResult { game = mia::Medium::create("Game Boy Advance"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; system = mia::System::create("Game Boy Advance"); - if(system->load(firmware[0].location) != LoadResult(successful)) { + if(system->load(firmware[0].location) != successful) { result.firmwareSystemName = "Game Boy Advance"; result.firmwareType = firmware[0].type; result.firmwareRegion = firmware[0].region; @@ -68,14 +68,14 @@ auto GameBoyAdvance::load() -> LoadResult { ares::GameBoyAdvance::option("Pixel Accuracy", settings.video.pixelAccuracy); - if(!ares::GameBoyAdvance::load(root, "[Nintendo] Game Boy Advance")) return LoadResult(otherError); + if(!ares::GameBoyAdvance::load(root, "[Nintendo] Game Boy Advance")) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); port->connect(); } - return LoadResult(successful); + return successful; } auto GameBoyAdvance::save() -> bool { diff --git a/desktop-ui/emulator/game-boy-color.cpp b/desktop-ui/emulator/game-boy-color.cpp index d33f64857d..87e21bd780 100644 --- a/desktop-ui/emulator/game-boy-color.cpp +++ b/desktop-ui/emulator/game-boy-color.cpp @@ -30,15 +30,15 @@ GameBoyColor::GameBoyColor() { auto GameBoyColor::load() -> LoadResult { game = mia::Medium::create("Game Boy Color"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; system = mia::System::create("Game Boy Color"); result = system->load(); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; - if(!ares::GameBoy::load(root, "[Nintendo] Game Boy Color")) return LoadResult(otherError); + if(!ares::GameBoy::load(root, "[Nintendo] Game Boy Color")) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -49,7 +49,7 @@ auto GameBoyColor::load() -> LoadResult { fastBoot->setValue(settings.boot.fast); } - return LoadResult(successful); + return successful; } auto GameBoyColor::save() -> bool { diff --git a/desktop-ui/emulator/game-boy.cpp b/desktop-ui/emulator/game-boy.cpp index 1241209cc9..e3b342e215 100644 --- a/desktop-ui/emulator/game-boy.cpp +++ b/desktop-ui/emulator/game-boy.cpp @@ -31,15 +31,15 @@ GameBoy::GameBoy() { auto GameBoy::load() -> LoadResult { game = mia::Medium::create("Game Boy"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; system = mia::System::create("Game Boy"); result = system->load(); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; - if(!ares::GameBoy::load(root, "[Nintendo] Game Boy")) return LoadResult(otherError); + if(!ares::GameBoy::load(root, "[Nintendo] Game Boy")) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -50,7 +50,7 @@ auto GameBoy::load() -> LoadResult { fastBoot->setValue(settings.boot.fast); } - return LoadResult(successful); + return successful; } auto GameBoy::load(Menu menu) -> void { diff --git a/desktop-ui/emulator/game-gear.cpp b/desktop-ui/emulator/game-gear.cpp index a3a603f440..a13cb83967 100644 --- a/desktop-ui/emulator/game-gear.cpp +++ b/desktop-ui/emulator/game-gear.cpp @@ -30,30 +30,24 @@ GameGear::GameGear() { auto GameGear::load() -> LoadResult { game = mia::Medium::create("Game Gear"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; auto region = Emulator::region(); system = mia::System::create("Game Gear"); result = system->load(firmware[0].location); - if(result != LoadResult(successful)) { - result.firmwareSystemName = "Game Gear"; - result.firmwareType = firmware[0].type; - result.firmwareRegion = firmware[0].region; - result.result = noFirmware; - return result; - } + if(result != successful) return otherError; - if(!ares::MasterSystem::load(root, {"[Sega] Game Gear (", region, ")"})) return LoadResult(otherError); + if(!ares::MasterSystem::load(root, {"[Sega] Game Gear (", region, ")"})) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); port->connect(); } - return LoadResult(successful); + return successful; } auto GameGear::save() -> bool { diff --git a/desktop-ui/emulator/master-system.cpp b/desktop-ui/emulator/master-system.cpp index fa2d69c8c7..268c8f181f 100644 --- a/desktop-ui/emulator/master-system.cpp +++ b/desktop-ui/emulator/master-system.cpp @@ -93,9 +93,9 @@ MasterSystem::MasterSystem() { auto MasterSystem::load() -> LoadResult { game = mia::Medium::create("Master System"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; auto region = Emulator::region(); //if statements below are ordered by lowest to highest priority @@ -105,16 +105,10 @@ auto MasterSystem::load() -> LoadResult { system = mia::System::create("Master System"); result = system->load(firmware[regionID].location); - if(result != LoadResult(successful)) { - result.firmwareSystemName = "Master System"; - result.firmwareType = firmware[regionID].type; - result.firmwareRegion = firmware[regionID].region; - result.result = noFirmware; - return result; - } - if(!game->pak && !system->pak->read("bios.rom")) return LoadResult(otherError); + if(result != successful) return otherError; + if(!game->pak && !system->pak->read("bios.rom")) return otherError; - if(!ares::MasterSystem::load(root, {"[Sega] Master System (", region, ")"})) return LoadResult(otherError); + if(!ares::MasterSystem::load(root, {"[Sega] Master System (", region, ")"})) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -140,7 +134,7 @@ auto MasterSystem::load() -> LoadResult { port->connect(); } - return LoadResult(successful); + return successful; } auto MasterSystem::save() -> bool { diff --git a/desktop-ui/emulator/mega-32x.cpp b/desktop-ui/emulator/mega-32x.cpp index a89c964f74..3480e8c718 100644 --- a/desktop-ui/emulator/mega-32x.cpp +++ b/desktop-ui/emulator/mega-32x.cpp @@ -46,9 +46,9 @@ Mega32X::Mega32X() { auto Mega32X::load() -> LoadResult { game = mia::Medium::create("Mega 32X"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; auto region = Emulator::region(); //if statements below are ordered by lowest to highest priority @@ -63,11 +63,11 @@ auto Mega32X::load() -> LoadResult { for(auto& emulator : emulators) { if(emulator->name == "Mega CD") firmware = emulator->firmware; } - if(!firmware) return LoadResult(otherError); //should never occur + if(!firmware) return otherError; //should never occur name = "Mega CD 32X"; system = mia::System::create("Mega CD 32X"); result = system->load(firmware[regionID].location); - if(result != LoadResult(successful)) { + if(result != successful) { result.firmwareSystemName = "Mega CD 32X"; result.firmwareType = firmware[regionID].type; result.firmwareRegion = firmware[regionID].region; @@ -76,17 +76,17 @@ auto Mega32X::load() -> LoadResult { } disc = mia::Medium::create("Mega CD"); - if(disc->load(Emulator::load(disc, configuration.game)) != LoadResult(successful)) disc.reset(); + if(disc->load(Emulator::load(disc, configuration.game)) != successful) disc.reset(); } else { name = "Mega 32X"; system = mia::System::create("Mega 32X"); result = system->load(); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; } ares::MegaDrive::option("Recompiler", !settings.general.forceInterpreter); - if(!ares::MegaDrive::load(root, {"[Sega] ", name, " (", region, ")"})) return LoadResult(otherError); + if(!ares::MegaDrive::load(root, {"[Sega] ", name, " (", region, ")"})) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -108,7 +108,7 @@ auto Mega32X::load() -> LoadResult { port->connect(); } - return LoadResult(successful); + return successful; } auto Mega32X::save() -> bool { diff --git a/desktop-ui/emulator/mega-cd-32x.cpp b/desktop-ui/emulator/mega-cd-32x.cpp index 814518eaab..54b837c4ce 100644 --- a/desktop-ui/emulator/mega-cd-32x.cpp +++ b/desktop-ui/emulator/mega-cd-32x.cpp @@ -48,9 +48,9 @@ MegaCD32X::MegaCD32X() { auto MegaCD32X::load() -> LoadResult { game = mia::Medium::create("Mega CD"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; auto region = Emulator::region(); //if statements below are ordered by lowest to highest priority @@ -63,12 +63,12 @@ auto MegaCD32X::load() -> LoadResult { for(auto& emulator : emulators) { if(emulator->name == "Mega CD") firmware = emulator->firmware; } - if(!firmware) return LoadResult(noFirmware); //should never occur + if(!firmware) return otherError; //should never occur system = mia::System::create("Mega CD 32X"); result = system->load(firmware[regionID].location); - if(result != LoadResult(successful)) { - result.firmwareSystemName = "Mega CD 32X"; + if(result != successful) { + result.firmwareSystemName = "Mega CD"; result.firmwareType = firmware[regionID].type; result.firmwareRegion = firmware[regionID].region; result.result = noFirmware; @@ -77,7 +77,7 @@ auto MegaCD32X::load() -> LoadResult { ares::MegaDrive::option("Recompiler", !settings.general.forceInterpreter); - if(!ares::MegaDrive::load(root, {"[Sega] Mega CD 32X (", region, ")"})) return LoadResult(otherError); + if(!ares::MegaDrive::load(root, {"[Sega] Mega CD 32X (", region, ")"})) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -108,7 +108,7 @@ auto MegaCD32X::load() -> LoadResult { discTrayTimer = Timer{}; - return LoadResult(successful); + return successful; } @@ -120,7 +120,7 @@ auto MegaCD32X::load(Menu menu) -> void { auto tray = root->find("Mega CD/Disc Tray"); tray->disconnect(); - if(game->load(Emulator::load(game, configuration.game)) != LoadResult(successful)) { + if(game->load(Emulator::load(game, configuration.game)) != successful) { return; } diff --git a/desktop-ui/emulator/mega-cd.cpp b/desktop-ui/emulator/mega-cd.cpp index 145fc2cab7..13a51fee69 100644 --- a/desktop-ui/emulator/mega-cd.cpp +++ b/desktop-ui/emulator/mega-cd.cpp @@ -63,9 +63,9 @@ MegaCD::MegaCD() { auto MegaCD::load() -> LoadResult { game = mia::Medium::create("Mega CD"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; auto region = Emulator::region(); //if statements below are ordered by lowest to highest priority @@ -75,7 +75,7 @@ auto MegaCD::load() -> LoadResult { system = mia::System::create("Mega CD"); result = system->load(firmware[regionID].location); - if(result != LoadResult(successful)) { + if(result != successful) { result.firmwareSystemName = "Mega CD"; result.firmwareType = firmware[regionID].type; result.firmwareRegion = firmware[regionID].region; @@ -83,7 +83,7 @@ auto MegaCD::load() -> LoadResult { return result; } - if(!ares::MegaDrive::load(root, {"[Sega] Mega CD (", region, ")"})) return LoadResult(otherError); + if(!ares::MegaDrive::load(root, {"[Sega] Mega CD (", region, ")"})) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -114,7 +114,7 @@ auto MegaCD::load() -> LoadResult { discTrayTimer = Timer{}; - return LoadResult(successful); + return successful; } auto MegaCD::load(Menu menu) -> void { @@ -125,7 +125,7 @@ auto MegaCD::load(Menu menu) -> void { auto tray = root->find("Mega CD/Disc Tray"); tray->disconnect(); - if(game->load(Emulator::load(game, configuration.game)) != LoadResult(successful)) { + if(game->load(Emulator::load(game, configuration.game)) != successful) { return; } diff --git a/desktop-ui/emulator/mega-drive.cpp b/desktop-ui/emulator/mega-drive.cpp index 45dd2913d7..6bc2215dd3 100644 --- a/desktop-ui/emulator/mega-drive.cpp +++ b/desktop-ui/emulator/mega-drive.cpp @@ -57,9 +57,9 @@ MegaDrive::MegaDrive() { auto MegaDrive::load() -> LoadResult { game = mia::Medium::create("Mega Drive"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; auto region = Emulator::region(); //if statements below are ordered by lowest to highest priority @@ -74,11 +74,11 @@ auto MegaDrive::load() -> LoadResult { for(auto& emulator : emulators) { if(emulator->name == "Mega CD") firmware = emulator->firmware; } - if(!firmware) return LoadResult(otherError); //should never occur + if(!firmware) return otherError; //should never occur name = "Mega CD"; system = mia::System::create("Mega CD"); result = system->load(firmware[regionID].location); - if(result != LoadResult(successful)) { + if(result != successful) { result.firmwareSystemName = "Mega CD"; result.firmwareType = firmware[regionID].type; result.firmwareRegion = firmware[regionID].region; @@ -87,17 +87,17 @@ auto MegaDrive::load() -> LoadResult { } disc = mia::Medium::create("Mega CD"); - if(disc->load(Emulator::load(disc, configuration.game)) != LoadResult(successful)) disc.reset(); + if(disc->load(Emulator::load(disc, configuration.game)) != successful) disc.reset(); } else { name = "Mega Drive"; system = mia::System::create("Mega Drive"); result = system->load(); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; } ares::MegaDrive::option("TMSS", settings.megadrive.tmss); - if(!ares::MegaDrive::load(root, {"[Sega] ", name, " (", region, ")"})) return LoadResult(otherError); + if(!ares::MegaDrive::load(root, {"[Sega] ", name, " (", region, ")"})) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -119,7 +119,7 @@ auto MegaDrive::load() -> LoadResult { port->connect(); } - return LoadResult(successful); + return successful; } auto MegaDrive::save() -> bool { diff --git a/desktop-ui/emulator/msx.cpp b/desktop-ui/emulator/msx.cpp index c15a636bd2..8f41fcc264 100644 --- a/desktop-ui/emulator/msx.cpp +++ b/desktop-ui/emulator/msx.cpp @@ -40,14 +40,14 @@ MSX::MSX() { auto MSX::load() -> LoadResult { game = mia::Medium::create("MSX"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; bool isTape = game->pak->attribute("tape").boolean(); system = mia::System::create("MSX"); result = system->load(firmware[0].location); - if(result != LoadResult(successful)) { + if(result != successful) { result.firmwareSystemName = "MSX"; result.firmwareType = firmware[0].type; result.firmwareRegion = firmware[0].region; @@ -56,7 +56,7 @@ auto MSX::load() -> LoadResult { } auto region = Emulator::region(); - if(!ares::MSX::load(root, {"[Microsoft] MSX (", region, ")"})) return LoadResult(otherError); + if(!ares::MSX::load(root, {"[Microsoft] MSX (", region, ")"})) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -86,7 +86,7 @@ auto MSX::load() -> LoadResult { port->connect(); } - return LoadResult(successful); + return successful; } auto MSX::load(Menu menu) -> void { diff --git a/desktop-ui/emulator/msx2.cpp b/desktop-ui/emulator/msx2.cpp index 99e29e9a31..bb8c74b828 100644 --- a/desktop-ui/emulator/msx2.cpp +++ b/desktop-ui/emulator/msx2.cpp @@ -34,9 +34,9 @@ MSX2::MSX2() { auto MSX2::load() -> LoadResult { game = mia::Medium::create("MSX2"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; bool isTape = game->pak->attribute("tape").boolean(); system = mia::System::create("MSX2"); @@ -49,7 +49,7 @@ auto MSX2::load() -> LoadResult { } auto region = Emulator::region(); - if(!ares::MSX::load(root, {"[Microsoft] MSX2 (", region, ")"})) return LoadResult(otherError); + if(!ares::MSX::load(root, {"[Microsoft] MSX2 (", region, ")"})) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -76,7 +76,7 @@ auto MSX2::load() -> LoadResult { port->connect(); } - return LoadResult(successful); + return successful; } auto MSX2::save() -> bool { diff --git a/desktop-ui/emulator/myvision.cpp b/desktop-ui/emulator/myvision.cpp index 0edf99faec..efc05b2c6e 100644 --- a/desktop-ui/emulator/myvision.cpp +++ b/desktop-ui/emulator/myvision.cpp @@ -45,24 +45,24 @@ MyVision::MyVision() { auto MyVision::load() -> LoadResult { game = mia::Medium::create("MyVision"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; system = mia::System::create("MyVision"); result = system->load(); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; if (!ares::MyVision::load(root, { "[Nichibutsu] MyVision" - })) return LoadResult(otherError); + })) return otherError; if (auto port = root -> find < ares::Node::Port > ("Cartridge Slot")) { port -> allocate(); port -> connect(); } - return LoadResult(successful); + return successful; } auto MyVision::save() -> bool { diff --git a/desktop-ui/emulator/neo-geo-aes.cpp b/desktop-ui/emulator/neo-geo-aes.cpp index c56814a067..1be98c73f0 100644 --- a/desktop-ui/emulator/neo-geo-aes.cpp +++ b/desktop-ui/emulator/neo-geo-aes.cpp @@ -37,13 +37,13 @@ NeoGeoAES::NeoGeoAES() { auto NeoGeoAES::load() -> LoadResult { game = mia::Medium::create("Neo Geo"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; system = mia::System::create("Neo Geo AES"); result = system->load(firmware[0].location); - if(result != LoadResult(successful)) { + if(result != successful) { result.firmwareSystemName = "Neo Geo AES"; result.firmwareType = firmware[0].type; result.firmwareRegion = firmware[0].region; @@ -51,7 +51,7 @@ auto NeoGeoAES::load() -> LoadResult { return result; } - if(!ares::NeoGeo::load(root, "[SNK] Neo Geo AES")) return LoadResult(otherError); + if(!ares::NeoGeo::load(root, "[SNK] Neo Geo AES")) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -73,7 +73,7 @@ auto NeoGeoAES::load() -> LoadResult { port->connect(); } - return LoadResult(successful); + return successful; } auto NeoGeoAES::save() -> bool { diff --git a/desktop-ui/emulator/neo-geo-mvs.cpp b/desktop-ui/emulator/neo-geo-mvs.cpp index 251bd0c21e..c02fbf39a4 100644 --- a/desktop-ui/emulator/neo-geo-mvs.cpp +++ b/desktop-ui/emulator/neo-geo-mvs.cpp @@ -38,13 +38,13 @@ NeoGeoMVS::NeoGeoMVS() { auto NeoGeoMVS::load() -> LoadResult { game = mia::Medium::create("Neo Geo"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; system = mia::System::create("Neo Geo MVS"); result = system->load(firmware[0].location); - if(result != LoadResult(successful)) { + if(result != successful) { result.firmwareSystemName = "Neo Geo MVS"; result.firmwareType = firmware[0].type; result.firmwareRegion = firmware[0].region; @@ -52,7 +52,7 @@ auto NeoGeoMVS::load() -> LoadResult { return result; } - if(!ares::NeoGeo::load(root, "[SNK] Neo Geo MVS")) return LoadResult(otherError); + if(!ares::NeoGeo::load(root, "[SNK] Neo Geo MVS")) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -74,7 +74,7 @@ auto NeoGeoMVS::load() -> LoadResult { port->connect(); } - return LoadResult(successful); + return successful; } auto NeoGeoMVS::save() -> bool { diff --git a/desktop-ui/emulator/neo-geo-pocket-color.cpp b/desktop-ui/emulator/neo-geo-pocket-color.cpp index 9e82444026..a78b01822b 100644 --- a/desktop-ui/emulator/neo-geo-pocket-color.cpp +++ b/desktop-ui/emulator/neo-geo-pocket-color.cpp @@ -32,13 +32,13 @@ NeoGeoPocketColor::NeoGeoPocketColor() { auto NeoGeoPocketColor::load() -> LoadResult { game = mia::Medium::create("Neo Geo Pocket Color"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; system = mia::System::create("Neo Geo Pocket Color"); result = system->load(firmware[0].location); - if(result != LoadResult(successful)) { + if(result != successful) { result.firmwareSystemName = "Neo Geo Pocket Color"; result.firmwareType = firmware[0].type; result.firmwareRegion = firmware[0].region; @@ -46,7 +46,7 @@ auto NeoGeoPocketColor::load() -> LoadResult { return result; } - if(!ares::NeoGeoPocket::load(root, "[SNK] Neo Geo Pocket Color")) return LoadResult(otherError); + if(!ares::NeoGeoPocket::load(root, "[SNK] Neo Geo Pocket Color")) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -57,7 +57,7 @@ auto NeoGeoPocketColor::load() -> LoadResult { fastBoot->setValue(settings.boot.fast); } - return LoadResult(successful); + return successful; } auto NeoGeoPocketColor::save() -> bool { diff --git a/desktop-ui/emulator/neo-geo-pocket.cpp b/desktop-ui/emulator/neo-geo-pocket.cpp index ddeaecdd4c..33a4b97c70 100644 --- a/desktop-ui/emulator/neo-geo-pocket.cpp +++ b/desktop-ui/emulator/neo-geo-pocket.cpp @@ -32,13 +32,13 @@ NeoGeoPocket::NeoGeoPocket() { auto NeoGeoPocket::load() -> LoadResult { game = mia::Medium::create("Neo Geo Pocket"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; system = mia::System::create("Neo Geo Pocket"); result = system->load(firmware[0].location); - if(result != LoadResult(successful)) { + if(result != successful) { result.firmwareSystemName = "Neo Geo Pocket"; result.firmwareType = firmware[0].type; result.firmwareRegion = firmware[0].region; @@ -46,7 +46,7 @@ auto NeoGeoPocket::load() -> LoadResult { return result; } - if(!ares::NeoGeoPocket::load(root, "[SNK] Neo Geo Pocket")) return LoadResult(otherError);; + if(!ares::NeoGeoPocket::load(root, "[SNK] Neo Geo Pocket")) return otherError;; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -57,7 +57,7 @@ auto NeoGeoPocket::load() -> LoadResult { fastBoot->setValue(settings.boot.fast); } - return LoadResult(successful); + return successful; } auto NeoGeoPocket::save() -> bool { diff --git a/desktop-ui/emulator/nintendo-64.cpp b/desktop-ui/emulator/nintendo-64.cpp index db580d9420..5a097bbaa5 100644 --- a/desktop-ui/emulator/nintendo-64.cpp +++ b/desktop-ui/emulator/nintendo-64.cpp @@ -57,9 +57,9 @@ Nintendo64::Nintendo64() { auto Nintendo64::load() -> LoadResult { game = mia::Medium::create("Nintendo 64"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; auto region = Emulator::region(); @@ -70,16 +70,16 @@ auto Nintendo64::load() -> LoadResult { for(auto& emulator : emulators) { if(emulator->name == "Nintendo 64DD") firmware = emulator->firmware; } - if(!firmware) return LoadResult(noFirmware); //should never occur + if(!firmware) return otherError; //should never occur name = "Nintendo 64DD"; disk = mia::Medium::create("Nintendo 64DD"); - if(disk->load(Emulator::load(disk, configuration.game)) != LoadResult(successful)) { + if(disk->load(Emulator::load(disk, configuration.game)) != successful) { disk.reset(); name = "Nintendo 64"; system = mia::System::create("Nintendo 64"); result = system->load(); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; } else { region = disk->pak->attribute("region"); //if statements below are ordered by lowest to highest priority @@ -89,7 +89,7 @@ auto Nintendo64::load() -> LoadResult { system = mia::System::create(name); result = system->load(firmware[regionID].location); - if(result != LoadResult(successful)) { + if(result != successful) { result.firmwareSystemName = "Nintendo 64"; result.firmwareType = firmware[regionID].type; result.firmwareRegion = firmware[regionID].region; @@ -101,7 +101,7 @@ auto Nintendo64::load() -> LoadResult { name = "Nintendo 64"; system = mia::System::create("Nintendo 64"); result = system->load(); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; } ares::Nintendo64::option("Quality", settings.video.quality); @@ -117,7 +117,7 @@ auto Nintendo64::load() -> LoadResult { ares::Nintendo64::option("Recompiler", !settings.general.forceInterpreter); ares::Nintendo64::option("Expansion Pak", settings.nintendo64.expansionPak); - if(!ares::Nintendo64::load(root, {"[Nintendo] ", name, " (", region, ")"})) return LoadResult(otherError); + if(!ares::Nintendo64::load(root, {"[Nintendo] ", name, " (", region, ")"})) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -147,7 +147,7 @@ auto Nintendo64::load() -> LoadResult { if(auto slot = transferPak->find("Cartridge Slot")) { gb = mia::Medium::create("Game Boy"); string tmpPath; - if(gb->load(Emulator::load(gb, tmpPath)) == LoadResult(successful)) { + if(gb->load(Emulator::load(gb, tmpPath)) == successful) { slot->allocate(); slot->connect(); transferPakConnected = true; @@ -177,7 +177,7 @@ auto Nintendo64::load() -> LoadResult { diskInsertTimer = Timer{}; - return LoadResult(successful); + return successful; } auto Nintendo64::load(Menu menu) -> void { @@ -189,7 +189,7 @@ auto Nintendo64::load(Menu menu) -> void { auto drive = root->find("Nintendo 64DD/Disk Drive"); drive->disconnect(); - if(disk->load(Emulator::load(disk, configuration.game)) != LoadResult(successful)) { + if(disk->load(Emulator::load(disk, configuration.game)) != successful) { return; } @@ -290,7 +290,7 @@ auto Nintendo64::portMenu(Menu& portMenu, ares::Node::Port port) -> void { if(auto slot = transferPak->find("Cartridge Slot")) { emulator->gb = mia::Medium::create("Game Boy"); string tmpPath; - if(emulator->gb->load(emulator->load(emulator->gb, tmpPath)) == LoadResult(successful)) { + if(emulator->gb->load(emulator->load(emulator->gb, tmpPath)) == successful) { slot->allocate(); slot->connect(); } else { diff --git a/desktop-ui/emulator/nintendo-64dd.cpp b/desktop-ui/emulator/nintendo-64dd.cpp index 8397221946..8ddf69596b 100644 --- a/desktop-ui/emulator/nintendo-64dd.cpp +++ b/desktop-ui/emulator/nintendo-64dd.cpp @@ -59,9 +59,9 @@ Nintendo64DD::Nintendo64DD() { auto Nintendo64DD::load() -> LoadResult { game = mia::Medium::create("Nintendo 64DD"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; auto region = game->pak->attribute("region"); //if statements below are ordered by lowest to highest priority @@ -71,7 +71,7 @@ auto Nintendo64DD::load() -> LoadResult { system = mia::System::create("Nintendo 64DD"); result = system->load(firmware[regionID].location); - if(result != LoadResult(successful)) { + if(result != successful) { result.firmwareSystemName = "Nintendo 64DD"; result.firmwareType = firmware[regionID].type; result.firmwareRegion = firmware[regionID].region; @@ -92,7 +92,7 @@ auto Nintendo64DD::load() -> LoadResult { ares::Nintendo64::option("Recompiler", !settings.general.forceInterpreter); ares::Nintendo64::option("Expansion Pak", settings.nintendo64.expansionPak); - if(!ares::Nintendo64::load(root, {"[Nintendo] Nintendo 64DD (", region, ")"})) return LoadResult(otherError); + if(!ares::Nintendo64::load(root, {"[Nintendo] Nintendo 64DD (", region, ")"})) return otherError; if(auto port = root->find("Nintendo 64DD/Disk Drive")) { port->allocate(); @@ -114,7 +114,7 @@ auto Nintendo64DD::load() -> LoadResult { if(auto slot = transferPak->find("Cartridge Slot")) { gb = mia::Medium::create("Game Boy"); string tmpPath; - if(gb->load(Emulator::load(gb, tmpPath)) == LoadResult(successful)) { + if(gb->load(Emulator::load(gb, tmpPath)) == successful) { slot->allocate(); slot->connect(); transferPakConnected = true; @@ -144,7 +144,7 @@ auto Nintendo64DD::load() -> LoadResult { diskInsertTimer = Timer{}; - return LoadResult(successful); + return successful; } auto Nintendo64DD::load(Menu menu) -> void { @@ -155,7 +155,7 @@ auto Nintendo64DD::load(Menu menu) -> void { auto drive = root->find("Nintendo 64DD/Disk Drive"); drive->disconnect(); - if(game->load(Emulator::load(game, configuration.game)) != LoadResult(successful)) { + if(game->load(Emulator::load(game, configuration.game)) != successful) { return; } diff --git a/desktop-ui/emulator/pc-engine-cd.cpp b/desktop-ui/emulator/pc-engine-cd.cpp index cde01d4525..0e8dfd97b9 100644 --- a/desktop-ui/emulator/pc-engine-cd.cpp +++ b/desktop-ui/emulator/pc-engine-cd.cpp @@ -23,9 +23,9 @@ PCEngineCD::PCEngineCD() { auto PCEngineCD::load() -> LoadResult { game = mia::Medium::create("PC Engine CD"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; auto region = Emulator::region(); //if statements below are ordered by lowest to highest priority @@ -43,7 +43,7 @@ auto PCEngineCD::load() -> LoadResult { bios = mia::Medium::create("PC Engine"); result = bios->load(firmware[biosID].location); - if(result != LoadResult(successful)) { + if(result != successful) { result.firmwareSystemName = "PC Engine"; result.firmwareType = firmware[biosID].type; result.firmwareRegion = firmware[biosID].region; @@ -53,12 +53,12 @@ auto PCEngineCD::load() -> LoadResult { system = mia::System::create("PC Engine"); result = system->load(); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; ares::PCEngine::option("Pixel Accuracy", settings.video.pixelAccuracy); auto name = region == "NTSC-J" ? "PC Engine Duo" : "TurboDuo"; - if(!ares::PCEngine::load(root, {"[NEC] ", name, " (", region, ")"})) return LoadResult(otherError); + if(!ares::PCEngine::load(root, {"[NEC] ", name, " (", region, ")"})) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -72,7 +72,7 @@ auto PCEngineCD::load() -> LoadResult { connectPorts(); - return LoadResult(successful); + return successful; } auto PCEngineCD::save() -> bool { diff --git a/desktop-ui/emulator/pc-engine.cpp b/desktop-ui/emulator/pc-engine.cpp index bb5fbca997..c613b4ae53 100644 --- a/desktop-ui/emulator/pc-engine.cpp +++ b/desktop-ui/emulator/pc-engine.cpp @@ -90,19 +90,19 @@ auto PCEngine::connectPorts() -> void { auto PCEngine::load() -> LoadResult { game = mia::Medium::create("PC Engine"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; system = mia::System::create("PC Engine"); result = system->load(); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; ares::PCEngine::option("Pixel Accuracy", settings.video.pixelAccuracy); auto region = Emulator::region(); string name = region == "NTSC-J" ? "PC Engine" : "TurboGrafx 16"; - if(!ares::PCEngine::load(root, {"[NEC] ", name, " (", region, ")"})) return LoadResult(otherError); + if(!ares::PCEngine::load(root, {"[NEC] ", name, " (", region, ")"})) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -111,7 +111,7 @@ auto PCEngine::load() -> LoadResult { connectPorts(); - return LoadResult(successful); + return successful; } auto PCEngine::save() -> bool { diff --git a/desktop-ui/emulator/playstation.cpp b/desktop-ui/emulator/playstation.cpp index 0baa569fbc..cff010f517 100644 --- a/desktop-ui/emulator/playstation.cpp +++ b/desktop-ui/emulator/playstation.cpp @@ -78,9 +78,9 @@ PlayStation::PlayStation() { auto PlayStation::load() -> LoadResult { game = mia::Medium::create("PlayStation"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; auto region = Emulator::region(); //if statements below are ordered by lowest to highest priority @@ -90,7 +90,7 @@ auto PlayStation::load() -> LoadResult { system = mia::System::create("PlayStation"); result = system->load(firmware[regionID].location); - if(result != LoadResult(successful)) { + if(result != successful) { result.firmwareSystemName = "PlayStation"; result.firmwareType = firmware[regionID].type; result.firmwareRegion = firmware[regionID].region; @@ -100,7 +100,7 @@ auto PlayStation::load() -> LoadResult { ares::PlayStation::option("Recompiler", !settings.general.forceInterpreter); - if(!ares::PlayStation::load(root, {"[Sony] PlayStation (", region, ")"})) return LoadResult(otherError); + if(!ares::PlayStation::load(root, {"[Sony] PlayStation (", region, ")"})) return otherError; if(auto fastBoot = root->find("Fast Boot")) { fastBoot->setValue(settings.boot.fast); @@ -131,7 +131,7 @@ auto PlayStation::load() -> LoadResult { discTrayTimer = Timer{}; - return LoadResult(successful); + return successful; } auto PlayStation::load(Menu menu) -> void { @@ -142,7 +142,7 @@ auto PlayStation::load(Menu menu) -> void { auto tray = root->find("PlayStation/Disc Tray"); tray->disconnect(); - if(game->load(Emulator::load(game, configuration.game)) != LoadResult(successful)) { + if(game->load(Emulator::load(game, configuration.game)) != successful) { return; } diff --git a/desktop-ui/emulator/pocket-challenge-v2.cpp b/desktop-ui/emulator/pocket-challenge-v2.cpp index d378da136f..30dc30ccd3 100644 --- a/desktop-ui/emulator/pocket-challenge-v2.cpp +++ b/desktop-ui/emulator/pocket-challenge-v2.cpp @@ -37,24 +37,24 @@ auto PocketChallengeV2::load(Menu menu) -> void { auto PocketChallengeV2::load() -> LoadResult { game = mia::Medium::create("Pocket Challenge V2"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; system = mia::System::create("Pocket Challenge V2"); result = system->load(); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; ares::WonderSwan::option("Pixel Accuracy", settings.video.pixelAccuracy); - if(!ares::WonderSwan::load(root, "[Benesse] Pocket Challenge V2")) return LoadResult(otherError); + if(!ares::WonderSwan::load(root, "[Benesse] Pocket Challenge V2")) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); port->connect(); } - return LoadResult(successful); + return successful; } auto PocketChallengeV2::save() -> bool { diff --git a/desktop-ui/emulator/saturn.cpp b/desktop-ui/emulator/saturn.cpp index ec23032ed1..970c68ec0f 100644 --- a/desktop-ui/emulator/saturn.cpp +++ b/desktop-ui/emulator/saturn.cpp @@ -19,9 +19,9 @@ Saturn::Saturn() { auto Saturn::load() -> LoadResult { game = mia::Medium::create("Saturn"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; auto region = Emulator::region(); //if statements below are ordered by lowest to highest priority @@ -31,7 +31,7 @@ auto Saturn::load() -> LoadResult { system = mia::System::create("Saturn"); result = system->load(firmware[regionID].location); - if(result != LoadResult(successful)) { + if(result != successful) { result.firmwareSystemName = "Saturn"; result.firmwareType = firmware[regionID].type; result.firmwareRegion = firmware[regionID].region; @@ -39,7 +39,7 @@ auto Saturn::load() -> LoadResult { return result; } - if(!ares::Saturn::load(root, {"[Sega] Saturn (", region, ")"})) return LoadResult(otherError); + if(!ares::Saturn::load(root, {"[Sega] Saturn (", region, ")"})) return otherError; if(auto port = root->find("Saturn/Disc Tray")) { port->allocate(); diff --git a/desktop-ui/emulator/sg-1000.cpp b/desktop-ui/emulator/sg-1000.cpp index 64e900566b..dc76716fb8 100644 --- a/desktop-ui/emulator/sg-1000.cpp +++ b/desktop-ui/emulator/sg-1000.cpp @@ -28,16 +28,16 @@ SG1000::SG1000() { auto SG1000::load() -> LoadResult { game = mia::Medium::create("SG-1000"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; system = mia::System::create("SG-1000"); result = system->load(); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; auto region = Emulator::region(); - if(!ares::SG1000::load(root, {"[Sega] SG-1000 (", region, ")"})) return LoadResult(otherError); + if(!ares::SG1000::load(root, {"[Sega] SG-1000 (", region, ")"})) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -54,7 +54,7 @@ auto SG1000::load() -> LoadResult { port->connect(); } - return LoadResult(successful); + return successful; } auto SG1000::save() -> bool { diff --git a/desktop-ui/emulator/super-famicom.cpp b/desktop-ui/emulator/super-famicom.cpp index 71c9e83c20..7da2d90101 100644 --- a/desktop-ui/emulator/super-famicom.cpp +++ b/desktop-ui/emulator/super-famicom.cpp @@ -96,18 +96,18 @@ SuperFamicom::SuperFamicom() { auto SuperFamicom::load() -> LoadResult { game = mia::Medium::create("Super Famicom"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; system = mia::System::create("Super Famicom"); result = system->load(); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; ares::SuperFamicom::option("Pixel Accuracy", settings.video.pixelAccuracy); auto region = Emulator::region(); - if(!ares::SuperFamicom::load(root, {"[Nintendo] Super Famicom (", region, ")"})) return LoadResult(otherError); + if(!ares::SuperFamicom::load(root, {"[Nintendo] Super Famicom (", region, ")"})) return otherError; if(auto port = root->find("Cartridge Slot")) { auto cartridge = port->allocate(); @@ -115,7 +115,7 @@ auto SuperFamicom::load() -> LoadResult { if(auto slot = cartridge->find("Super Game Boy/Cartridge Slot")) { gb = mia::Medium::create("Game Boy"); - if(gb->load(Emulator::load(gb, settings.paths.superFamicom.gameBoy)) != LoadResult(successful)) { + if(gb->load(Emulator::load(gb, settings.paths.superFamicom.gameBoy)) != successful) { slot->allocate(); slot->connect(); } else { @@ -125,7 +125,7 @@ auto SuperFamicom::load() -> LoadResult { if(auto slot = cartridge->find("BS Memory Slot")) { bs = mia::Medium::create("BS Memory"); - if(bs->load(Emulator::load(bs, settings.paths.superFamicom.bsMemory)) != LoadResult(successful)) { + if(bs->load(Emulator::load(bs, settings.paths.superFamicom.bsMemory)) != successful) { slot->allocate(); slot->connect(); } else { @@ -135,7 +135,7 @@ auto SuperFamicom::load() -> LoadResult { if(auto slot = cartridge->find("Sufami Turbo Slot A")) { stA = mia::Medium::create("Sufami Turbo"); - if(stA->load(Emulator::load(stA, settings.paths.superFamicom.sufamiTurbo)) != LoadResult(successful)) { + if(stA->load(Emulator::load(stA, settings.paths.superFamicom.sufamiTurbo)) != successful) { slot->allocate(); slot->connect(); } else { @@ -145,7 +145,7 @@ auto SuperFamicom::load() -> LoadResult { if(auto slot = cartridge->find("Sufami Turbo Slot B")) { stB = mia::Medium::create("Sufami Turbo"); - if(stB->load(Emulator::load(stB, settings.paths.superFamicom.sufamiTurbo)) != LoadResult(successful)) { + if(stB->load(Emulator::load(stB, settings.paths.superFamicom.sufamiTurbo)) != successful) { slot->allocate(); slot->connect(); } else { @@ -164,7 +164,7 @@ auto SuperFamicom::load() -> LoadResult { port->connect(); } - return LoadResult(successful); + return successful; } auto SuperFamicom::save() -> bool { diff --git a/desktop-ui/emulator/supergrafx-cd.cpp b/desktop-ui/emulator/supergrafx-cd.cpp index 8053571a18..52cbd4e5b0 100644 --- a/desktop-ui/emulator/supergrafx-cd.cpp +++ b/desktop-ui/emulator/supergrafx-cd.cpp @@ -20,13 +20,13 @@ SuperGrafxCD::SuperGrafxCD() { auto SuperGrafxCD::load() -> LoadResult { game = mia::Medium::create("PC Engine CD"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; bios = mia::Medium::create("PC Engine"); result = bios->load(firmware[0].location); - if(result != LoadResult(successful)) { + if(result != successful) { result.firmwareSystemName = "SuperGrafx CD"; result.firmwareType = firmware[0].type; result.firmwareRegion = firmware[0].region; @@ -36,11 +36,11 @@ auto SuperGrafxCD::load() -> LoadResult { system = mia::System::create("SuperGrafx"); result = system->load(); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; ares::PCEngine::option("Pixel Accuracy", settings.video.pixelAccuracy); - if(!ares::PCEngine::load(root, "[NEC] SuperGrafx (NTSC-J)")) return LoadResult(otherError); + if(!ares::PCEngine::load(root, "[NEC] SuperGrafx (NTSC-J)")) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -54,7 +54,7 @@ auto SuperGrafxCD::load() -> LoadResult { connectPorts(); - return LoadResult(successful); + return successful; } auto SuperGrafxCD::save() -> bool { diff --git a/desktop-ui/emulator/supergrafx.cpp b/desktop-ui/emulator/supergrafx.cpp index 8288fb1b8a..a2b1c35a1b 100644 --- a/desktop-ui/emulator/supergrafx.cpp +++ b/desktop-ui/emulator/supergrafx.cpp @@ -15,17 +15,17 @@ SuperGrafx::SuperGrafx() { auto SuperGrafx::load() -> LoadResult { game = mia::Medium::create("SuperGrafx"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; system = mia::System::create("SuperGrafx"); result = system->load(); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; ares::PCEngine::option("Pixel Accuracy", settings.video.pixelAccuracy); - if(!ares::PCEngine::load(root, "[NEC] SuperGrafx (NTSC-J)")) return LoadResult(otherError); + if(!ares::PCEngine::load(root, "[NEC] SuperGrafx (NTSC-J)")) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); @@ -34,7 +34,7 @@ auto SuperGrafx::load() -> LoadResult { connectPorts(); - return LoadResult(successful); + return successful; } auto SuperGrafx::save() -> bool { diff --git a/desktop-ui/emulator/wonderswan-color.cpp b/desktop-ui/emulator/wonderswan-color.cpp index e1caf8acef..cfd29030a3 100644 --- a/desktop-ui/emulator/wonderswan-color.cpp +++ b/desktop-ui/emulator/wonderswan-color.cpp @@ -60,24 +60,24 @@ auto WonderSwanColor::load(Menu menu) -> void { auto WonderSwanColor::load() -> LoadResult { game = mia::Medium::create("WonderSwan Color"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; system = mia::System::create("WonderSwan Color"); result = system->load(); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; ares::WonderSwan::option("Pixel Accuracy", settings.video.pixelAccuracy); - if(!ares::WonderSwan::load(root, "[Bandai] WonderSwan Color")) return LoadResult(otherError); + if(!ares::WonderSwan::load(root, "[Bandai] WonderSwan Color")) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); port->connect(); } - return LoadResult(successful); + return successful; } auto WonderSwanColor::save() -> bool { diff --git a/desktop-ui/emulator/wonderswan.cpp b/desktop-ui/emulator/wonderswan.cpp index 7eaa915174..9a03b0d835 100644 --- a/desktop-ui/emulator/wonderswan.cpp +++ b/desktop-ui/emulator/wonderswan.cpp @@ -60,24 +60,24 @@ auto WonderSwan::load(Menu menu) -> void { auto WonderSwan::load() -> LoadResult { game = mia::Medium::create("WonderSwan"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; system = mia::System::create("WonderSwan"); result = system->load(); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; ares::WonderSwan::option("Pixel Accuracy", settings.video.pixelAccuracy); - if(!ares::WonderSwan::load(root, "[Bandai] WonderSwan")) return LoadResult(otherError); + if(!ares::WonderSwan::load(root, "[Bandai] WonderSwan")) return otherError; if(auto port = root->find("Cartridge Slot")) { port->allocate(); port->connect(); } - return LoadResult(successful); + return successful; } auto WonderSwan::save() -> bool { diff --git a/desktop-ui/emulator/zx-spectrum-128.cpp b/desktop-ui/emulator/zx-spectrum-128.cpp index 436460474e..a8451908b3 100644 --- a/desktop-ui/emulator/zx-spectrum-128.cpp +++ b/desktop-ui/emulator/zx-spectrum-128.cpp @@ -12,15 +12,15 @@ ZXSpectrum128::ZXSpectrum128() { auto ZXSpectrum128::load() -> LoadResult { game = mia::Medium::create("ZX Spectrum"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; system = mia::System::create("ZX Spectrum 128"); result = system->load(); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; - if(!ares::ZXSpectrum::load(root, "[Sinclair] ZX Spectrum 128")) return LoadResult(otherError); + if(!ares::ZXSpectrum::load(root, "[Sinclair] ZX Spectrum 128")) return otherError; if(auto port = root->find("Tape Deck/Tray")) { port->allocate(); @@ -32,7 +32,7 @@ auto ZXSpectrum128::load() -> LoadResult { port->connect(); } - return LoadResult(successful); + return successful; } auto ZXSpectrum128::pak(ares::Node::Object node) -> shared_pointer { diff --git a/desktop-ui/emulator/zx-spectrum.cpp b/desktop-ui/emulator/zx-spectrum.cpp index 6ca0c749cf..666d5ea667 100644 --- a/desktop-ui/emulator/zx-spectrum.cpp +++ b/desktop-ui/emulator/zx-spectrum.cpp @@ -15,15 +15,15 @@ ZXSpectrum::ZXSpectrum() { auto ZXSpectrum::load() -> LoadResult { game = mia::Medium::create("ZX Spectrum"); string location = Emulator::load(game, configuration.game); - if(!location) return LoadResult(noFileSelected); + if(!location) return noFileSelected; LoadResult result = game->load(location); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; system = mia::System::create("ZX Spectrum"); result = system->load(); - if(result != LoadResult(successful)) return result; + if(result != successful) return result; - if(!ares::ZXSpectrum::load(root, "[Sinclair] ZX Spectrum")) return LoadResult(otherError); + if(!ares::ZXSpectrum::load(root, "[Sinclair] ZX Spectrum")) return otherError; if(auto port = root->find("Tape Deck/Tray")) { port->allocate(); @@ -35,7 +35,7 @@ auto ZXSpectrum::load() -> LoadResult { port->connect(); } - return LoadResult(successful); + return successful; } auto ZXSpectrum::load(Menu menu) -> void { diff --git a/mia/medium/arcade.cpp b/mia/medium/arcade.cpp index 636f624cf2..a2d3e61928 100644 --- a/mia/medium/arcade.cpp +++ b/mia/medium/arcade.cpp @@ -7,17 +7,17 @@ struct Arcade : Mame { auto Arcade::load(string location) -> LoadResult { auto foundDatabase = Medium::loadDatabase(); - if(!foundDatabase) return LoadResult(databaseNotFound); + if(!foundDatabase) return { databaseNotFound, "Arcade.bml" }; manifest = manifestDatabaseArcade(Medium::name(location)); - if(!manifest) return LoadResult(romNotFoundInDatabase); + if(!manifest) return romNotFoundInDatabase; auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; //Sega SG-1000 based arcade if(document["game/board"].string() == "sega/sg1000a") { vector rom = loadRoms(location, document, "maincpu"); - if(!rom) return romNotFound; + if(!rom) return { invalidROM, "Ensure your ROM is in a MAME-compatible .zip format." }; this->location = location; @@ -28,10 +28,10 @@ auto Arcade::load(string location) -> LoadResult { pak->append("manifest.bml", manifest); pak->append("program.rom", rom); - return LoadResult(successful); + return successful; } - return LoadResult(otherError); + return otherError; } auto Arcade::save(string location) -> bool { diff --git a/mia/medium/atari-2600.cpp b/mia/medium/atari-2600.cpp index 3193753f03..24670291f6 100644 --- a/mia/medium/atari-2600.cpp +++ b/mia/medium/atari-2600.cpp @@ -15,14 +15,14 @@ auto Atari2600::load(string location) -> LoadResult { } else if(file::exists(location)) { rom = Cartridge::read(location); } - if(!rom) return LoadResult(romNotFound); + if(!rom) return romNotFound; this->sha256 = Hash::SHA256(rom).digest(); this->location = location; this->manifest = Medium::manifestDatabase(sha256); if(!manifest) manifest = analyze(rom, location); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("title", document["game/title"].string()); @@ -31,7 +31,7 @@ auto Atari2600::load(string location) -> LoadResult { pak->append("manifest.bml", manifest); pak->append("program.rom", rom); - return LoadResult(successful); + return successful; } auto Atari2600::save(string location) -> bool { diff --git a/mia/medium/bs-memory.cpp b/mia/medium/bs-memory.cpp index ba2bdf70fb..99cf848fc7 100644 --- a/mia/medium/bs-memory.cpp +++ b/mia/medium/bs-memory.cpp @@ -14,16 +14,16 @@ auto BSMemory::load(string location) -> LoadResult { } else if(file::exists(location)) { rom = Cartridge::read(location); } - if(!rom) return LoadResult(romNotFound); + if(!rom) return romNotFound; this->sha256 = Hash::SHA256(rom).digest(); this->location = location; auto foundDatabase = Medium::loadDatabase(); - if(!foundDatabase) return LoadResult(databaseNotFound); + if(!foundDatabase) return { databaseNotFound, "BS Memory.bml" }; this->manifest = Medium::manifestDatabase(sha256); if(!manifest) manifest = analyze(rom); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("title", document["game/title"].string()); @@ -36,7 +36,7 @@ auto BSMemory::load(string location) -> LoadResult { Pak::load("program.flash", ".sav"); } - return LoadResult(successful); + return successful; } auto BSMemory::save(string location) -> bool { diff --git a/mia/medium/colecovision.cpp b/mia/medium/colecovision.cpp index 7337f84827..26f5b5fd57 100644 --- a/mia/medium/colecovision.cpp +++ b/mia/medium/colecovision.cpp @@ -13,12 +13,12 @@ auto ColecoVision::load(string location) -> LoadResult { } else if(file::exists(location)) { rom = Cartridge::read(location); } - if(!rom) return LoadResult(romNotFound); + if(!rom) return romNotFound; this->location = location; this->manifest = analyze(rom); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("board", document["game/board" ].string()); @@ -27,7 +27,7 @@ auto ColecoVision::load(string location) -> LoadResult { pak->append("manifest.bml", manifest); pak->append("program.rom", rom); - return LoadResult(successful); + return successful; } auto ColecoVision::save(string location) -> bool { diff --git a/mia/medium/famicom-disk-system.cpp b/mia/medium/famicom-disk-system.cpp index fe343cd0d8..b12b2f4803 100644 --- a/mia/medium/famicom-disk-system.cpp +++ b/mia/medium/famicom-disk-system.cpp @@ -42,14 +42,14 @@ auto FamicomDiskSystem::load(string location) -> LoadResult { } } - if(!pak) return LoadResult(romNotFound); + if(!pak) return romNotFound; Pak::load("disk1.sideA", ".d1a"); Pak::load("disk1.sideB", ".d1b"); Pak::load("disk2.sideA", ".d2a"); Pak::load("disk2.sideB", ".d2b"); - return LoadResult(successful); + return successful; } auto FamicomDiskSystem::save(string location) -> bool { diff --git a/mia/medium/famicom.cpp b/mia/medium/famicom.cpp index 8586c46271..c3ce8ca9fa 100644 --- a/mia/medium/famicom.cpp +++ b/mia/medium/famicom.cpp @@ -18,12 +18,12 @@ auto Famicom::load(string location) -> LoadResult { } else if(file::exists(location)) { rom = Cartridge::read(location); } - if(!rom) return LoadResult(romNotFound); + if(!rom) return romNotFound; this->location = location; this->manifest = analyze(rom); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("title", document["game/title"].string()); @@ -70,7 +70,7 @@ auto Famicom::load(string location) -> LoadResult { Medium::load(node, ".chr"); } - return LoadResult(successful); + return successful; } auto Famicom::save(string location) -> bool { diff --git a/mia/medium/game-boy-advance.cpp b/mia/medium/game-boy-advance.cpp index a5307c54e1..3d8e50632c 100644 --- a/mia/medium/game-boy-advance.cpp +++ b/mia/medium/game-boy-advance.cpp @@ -13,13 +13,13 @@ auto GameBoyAdvance::load(string location) -> LoadResult { } else if(file::exists(location)) { rom = Cartridge::read(location); } - if(!rom) return LoadResult(romNotFound); + if(!rom) return romNotFound; this->sha256 = Hash::SHA256(rom).digest(); this->location = location; this->manifest = analyze(rom); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("title", document["game/title"].string()); @@ -45,7 +45,7 @@ auto GameBoyAdvance::load(string location) -> LoadResult { } pak->setAttribute("mirror", mirror); - return LoadResult(successful); + return successful; } auto GameBoyAdvance::save(string location) -> bool { diff --git a/mia/medium/game-boy.cpp b/mia/medium/game-boy.cpp index 7938ecbf21..b62bcdae23 100644 --- a/mia/medium/game-boy.cpp +++ b/mia/medium/game-boy.cpp @@ -13,12 +13,12 @@ auto GameBoy::load(string location) -> LoadResult { } else if(file::exists(location)) { rom = Cartridge::read(location); } - if(!rom) return LoadResult(romNotFound); + if(!rom) return romNotFound; this->location = location; this->manifest = analyze(rom); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("title", document["game/title"].string()); @@ -42,7 +42,7 @@ auto GameBoy::load(string location) -> LoadResult { Medium::load(node, ".rtc"); } - return LoadResult(successful); + return successful; } auto GameBoy::save(string location) -> bool { diff --git a/mia/medium/game-gear.cpp b/mia/medium/game-gear.cpp index b287995424..3ea4c95116 100644 --- a/mia/medium/game-gear.cpp +++ b/mia/medium/game-gear.cpp @@ -13,13 +13,13 @@ auto GameGear::load(string location) -> LoadResult { } else if(file::exists(location)) { rom = Cartridge::read(location); } else { - return LoadResult(romNotFound); + return romNotFound; } this->location = location; this->manifest = analyze(rom, location); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("board", document["game/board" ].string()); @@ -33,7 +33,7 @@ auto GameGear::load(string location) -> LoadResult { Medium::load(node, ".ram"); } - return LoadResult(successful); + return successful; } auto GameGear::save(string location) -> bool { diff --git a/mia/medium/mame.cpp b/mia/medium/mame.cpp index 40fb6b046e..d70ecd07d3 100644 --- a/mia/medium/mame.cpp +++ b/mia/medium/mame.cpp @@ -8,9 +8,8 @@ auto Mame::loadRoms(string location, Markup::Node& info, string sectionName) -> vector output; Decode::ZIP archive; - if(!archive.open(location)) { - return output; - } + if(!location.iendsWith(".zip")) return output; + if(!archive.open(location)) return output; string filename = {}; vector input = {}; diff --git a/mia/medium/master-system.cpp b/mia/medium/master-system.cpp index e83d9729a5..b340f3aa60 100644 --- a/mia/medium/master-system.cpp +++ b/mia/medium/master-system.cpp @@ -13,13 +13,13 @@ auto MasterSystem::load(string location) -> LoadResult { } else if(file::exists(location)) { rom = Cartridge::read(location); } else { - return LoadResult(romNotFound); + return romNotFound; } this->location = location; this->manifest = analyze(rom); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("board", document["game/board" ].string()); @@ -34,7 +34,7 @@ auto MasterSystem::load(string location) -> LoadResult { Medium::load(node, ".ram"); } - return LoadResult(successful); + return successful; } auto MasterSystem::save(string location) -> bool { diff --git a/mia/medium/mega-32x.cpp b/mia/medium/mega-32x.cpp index bbd1e0a302..3ae3f6be16 100644 --- a/mia/medium/mega-32x.cpp +++ b/mia/medium/mega-32x.cpp @@ -32,12 +32,12 @@ auto Mega32X::load(string location) -> LoadResult { } else if(file::exists(location)) { rom = Cartridge::read(location); } - if(!rom) return LoadResult(romNotFound); + if(!rom) return romNotFound; this->location = location; this->manifest = analyze(rom); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("title", document["game/title"].string()); @@ -67,7 +67,7 @@ auto Mega32X::load(string location) -> LoadResult { } } - return LoadResult(successful); + return successful; } auto Mega32X::save(string location) -> bool { diff --git a/mia/medium/mega-cd.cpp b/mia/medium/mega-cd.cpp index c16581f06d..3a15555579 100644 --- a/mia/medium/mega-cd.cpp +++ b/mia/medium/mega-cd.cpp @@ -7,12 +7,12 @@ struct MegaCD : CompactDisc { }; auto MegaCD::load(string location) -> LoadResult { - if(!inode::exists(location)) return LoadResult(romNotFound); + if(!inode::exists(location)) return romNotFound; this->location = location; this->manifest = analyze(location); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("title", document["game/title"].string()); @@ -27,7 +27,7 @@ auto MegaCD::load(string location) -> LoadResult { pak->append("cd.rom", vfs::cdrom::open(location)); } - return LoadResult(successful); + return successful; } auto MegaCD::save(string location) -> bool { diff --git a/mia/medium/mega-drive.cpp b/mia/medium/mega-drive.cpp index 7b907b8c04..f5833e7941 100644 --- a/mia/medium/mega-drive.cpp +++ b/mia/medium/mega-drive.cpp @@ -44,12 +44,12 @@ auto MegaDrive::load(string location) -> LoadResult { } else if(file::exists(location)) { rom = Cartridge::read(location); } - if(!rom) return LoadResult(romNotFound); + if(!rom) return romNotFound; this->location = location; this->manifest = analyze(rom); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("title", document["game/title"].string()); @@ -100,7 +100,7 @@ auto MegaDrive::load(string location) -> LoadResult { pak->setAttribute("jcart", true); } - return LoadResult(successful); + return successful; } auto MegaDrive::save(string location) -> bool { diff --git a/mia/medium/msx.cpp b/mia/medium/msx.cpp index 243d0500c8..1e5f298fd8 100644 --- a/mia/medium/msx.cpp +++ b/mia/medium/msx.cpp @@ -19,16 +19,16 @@ auto MSX::load(string location) -> LoadResult { } else if(file::exists(location)) { rom = Cartridge::read(location); } - if(!rom) return LoadResult(romNotFound); + if(!rom) return romNotFound; this->sha256 = Hash::SHA256(rom).digest(); this->location = location; auto foundDatabase = Medium::loadDatabase(); - if(!foundDatabase) return LoadResult(databaseNotFound); + if(!foundDatabase) return { databaseNotFound, "MSX.bml" }; this->manifest = Medium::manifestDatabase(sha256); if(!manifest) manifest = analyze(rom); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("title", document["game/title"].string()); @@ -38,7 +38,7 @@ auto MSX::load(string location) -> LoadResult { pak->append("manifest.bml", manifest); pak->append("program.rom", rom); - return LoadResult(successful); + return successful; } auto MSX::save(string location) -> bool { @@ -142,12 +142,12 @@ auto MSX::analyze(vector& rom) -> string { auto MSX::loadTape(string location) -> LoadResult { - if(!inode::exists(location)) return LoadResult(romNotFound); + if(!inode::exists(location)) return romNotFound; this->location = location; this->manifest = analyzeTape(location); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("title", document["game/title"].string()); @@ -177,7 +177,7 @@ auto MSX::loadTape(string location) -> LoadResult { } } - return LoadResult(successful); + return successful; } auto MSX::analyzeTape(string location) -> string { diff --git a/mia/medium/myvision.cpp b/mia/medium/myvision.cpp index fa29ff8cf9..454aecbe91 100644 --- a/mia/medium/myvision.cpp +++ b/mia/medium/myvision.cpp @@ -16,20 +16,20 @@ auto MyVision::load(string location) -> LoadResult { } else if(file::exists(location)) { rom = Cartridge::read(location); } - if(!rom) return LoadResult(romNotFound); + if(!rom) return romNotFound; this->sha256 = Hash::SHA256(rom).digest(); this->location = location; this->manifest = analyze(rom); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("title", document["game/title"].string()); pak->append("manifest.bml", manifest); pak->append("program.rom", rom); - return LoadResult(successful); + return successful; } auto MyVision::save(string location) -> bool { diff --git a/mia/medium/neo-geo-pocket.cpp b/mia/medium/neo-geo-pocket.cpp index 7e5ae0d1ef..f171e129d6 100644 --- a/mia/medium/neo-geo-pocket.cpp +++ b/mia/medium/neo-geo-pocket.cpp @@ -14,12 +14,12 @@ auto NeoGeoPocket::load(string location) -> LoadResult { } else if(file::exists(location)) { rom = Cartridge::read(location); } - if(!rom) return LoadResult(romNotFound); + if(!rom) return romNotFound; this->location = location; this->manifest = analyze(rom); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("title", document["game/title"].string()); @@ -28,7 +28,7 @@ auto NeoGeoPocket::load(string location) -> LoadResult { Pak::load("program.flash", ".sav"); - return LoadResult(successful); + return successful; } auto NeoGeoPocket::save(string location) -> bool { diff --git a/mia/medium/neo-geo.cpp b/mia/medium/neo-geo.cpp index c4bc4b06c5..93c85e383c 100644 --- a/mia/medium/neo-geo.cpp +++ b/mia/medium/neo-geo.cpp @@ -67,7 +67,7 @@ auto NeoGeo::load(string location) -> LoadResult { vector voiceBROM; //V ROM (ADPCM-B voice samples) auto foundDatabase = Medium::loadDatabase(); - if(!foundDatabase) return LoadResult(databaseNotFound); + if(!foundDatabase) return { databaseNotFound, "Neo Geo.bml" }; this->info = BML::unserialize(manifestDatabaseArcade(Medium::name(location))); if(file::exists(location)) { @@ -78,12 +78,14 @@ auto NeoGeo::load(string location) -> LoadResult { voiceAROM = NeoGeo::read(location, "voice-a.rom"); voiceBROM = NeoGeo::read(location, "voice-b.rom"); } - - if(!programROM ) return LoadResult(romNotFound); - if(!musicROM ) return LoadResult(romNotFound); - if(!characterROM) return LoadResult(romNotFound); - if(!staticROM ) return LoadResult(romNotFound); - if(!voiceAROM ) return LoadResult(romNotFound); + + string invalidRomInfo = "Ensure your ROM is in a MAME-compatible .zip format."; + + if(!programROM ) return { invalidROM, invalidRomInfo }; + if(!musicROM ) return { invalidROM, invalidRomInfo }; + if(!characterROM) return { invalidROM, invalidRomInfo }; + if(!staticROM ) return { invalidROM, invalidRomInfo }; + if(!voiceAROM ) return { invalidROM, invalidRomInfo }; //voiceB is optional //many games have encrypted roms, so let's decrypt them here @@ -101,7 +103,7 @@ auto NeoGeo::load(string location) -> LoadResult { this->location = location; this->manifest = analyze(programROM, musicROM, characterROM, staticROM, voiceAROM, voiceBROM); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("sha256", sha256); @@ -114,7 +116,7 @@ auto NeoGeo::load(string location) -> LoadResult { pak->append("static.rom", staticROM); pak->append("voice-a.rom", voiceAROM); pak->append("voice-b.rom", voiceBROM); - return LoadResult(successful); + return successful; } auto NeoGeo::save(string location) -> bool { diff --git a/mia/medium/nintendo-64.cpp b/mia/medium/nintendo-64.cpp index e6e86c5e6e..d1875d1430 100644 --- a/mia/medium/nintendo-64.cpp +++ b/mia/medium/nintendo-64.cpp @@ -89,14 +89,14 @@ auto Nintendo64::load(string location) -> LoadResult { } else if(file::exists(location)) { rom = Cartridge::read(location); } - if(!rom) return LoadResult(romNotFound); + if(!rom) return romNotFound; this->sha256 = Hash::SHA256(rom).digest(); this->location = location; this->manifest = analyze(rom); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("id", document["game/id"].string()); @@ -123,7 +123,7 @@ auto Nintendo64::load(string location) -> LoadResult { Medium::load(node, ".rtc"); } - return LoadResult(successful); + return successful; } auto Nintendo64::save(string location) -> bool { diff --git a/mia/medium/nintendo-64dd.cpp b/mia/medium/nintendo-64dd.cpp index de49b38e48..c9d4e448e5 100644 --- a/mia/medium/nintendo-64dd.cpp +++ b/mia/medium/nintendo-64dd.cpp @@ -17,17 +17,17 @@ auto Nintendo64DD::load(string location) -> LoadResult { } else if(file::exists(location)) { input = FloppyDisk::read(location); } - if(!input) return LoadResult(romNotFound); + if(!input) return romNotFound; array_view view{input}; auto errorTable = createErrorTable(view); - if(!errorTable) return LoadResult(invalidRom); + if(!errorTable) return invalidROM; auto sizeValid = sizeCheck(view); - if(!sizeValid) return LoadResult(invalidRom); + if(!sizeValid) return invalidROM; this->location = location; this->manifest = analyze(input, errorTable); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = shared_pointer{new vfs::directory}; pak->setAttribute("title", document["game/title"].string()); pak->setAttribute("region", document["game/region"].string()); @@ -38,11 +38,11 @@ auto Nintendo64DD::load(string location) -> LoadResult { pak->append("program.disk", output); } - if(!pak) return LoadResult(otherError); + if(!pak) return otherError; Pak::load("program.disk", ".disk"); - return LoadResult(successful); + return successful; } auto Nintendo64DD::save(string location) -> bool { diff --git a/mia/medium/pc-engine-cd.cpp b/mia/medium/pc-engine-cd.cpp index fa109759cf..e58475db8f 100644 --- a/mia/medium/pc-engine-cd.cpp +++ b/mia/medium/pc-engine-cd.cpp @@ -7,12 +7,12 @@ struct PCEngineCD : CompactDisc { }; auto PCEngineCD::load(string location) -> LoadResult { - if(!inode::exists(location)) return LoadResult(romNotFound); + if(!inode::exists(location)) return romNotFound; this->location = location; this->manifest = analyze(location); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("title", document["game/title"].string()); @@ -27,7 +27,7 @@ auto PCEngineCD::load(string location) -> LoadResult { pak->append("cd.rom", vfs::cdrom::open(location)); } - return LoadResult(successful); + return successful; } auto PCEngineCD::save(string location) -> bool { diff --git a/mia/medium/pc-engine.cpp b/mia/medium/pc-engine.cpp index ffd2581722..ad3805c580 100644 --- a/mia/medium/pc-engine.cpp +++ b/mia/medium/pc-engine.cpp @@ -13,12 +13,12 @@ auto PCEngine::load(string location) -> LoadResult { } else if(file::exists(location)) { rom = Cartridge::read(location); } - if(!rom) return LoadResult(romNotFound); + if(!rom) return romNotFound; this->location = location; this->manifest = analyze(rom); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("title", document["game/title"].string()); @@ -37,7 +37,7 @@ auto PCEngine::load(string location) -> LoadResult { Medium::load(node, ".wram"); } - return LoadResult(successful); + return successful; } auto PCEngine::save(string location) -> bool { diff --git a/mia/medium/playstation.cpp b/mia/medium/playstation.cpp index a18b276955..c855ed50cc 100644 --- a/mia/medium/playstation.cpp +++ b/mia/medium/playstation.cpp @@ -8,12 +8,12 @@ struct PlayStation : CompactDisc { }; auto PlayStation::load(string location) -> LoadResult { - if(!inode::exists(location)) return LoadResult(romNotFound); + if(!inode::exists(location)) return romNotFound; this->location = location; this->manifest = analyze(location); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("title", document["game/title"].string()); @@ -36,7 +36,7 @@ auto PlayStation::load(string location) -> LoadResult { } } - return LoadResult(successful); + return successful; } auto PlayStation::save(string location) -> bool { diff --git a/mia/medium/saturn.cpp b/mia/medium/saturn.cpp index 64fca07844..8e64528cbb 100644 --- a/mia/medium/saturn.cpp +++ b/mia/medium/saturn.cpp @@ -7,12 +7,12 @@ struct Saturn : CompactDisc { }; auto Saturn::load(string location) -> LoadResult { - if(!inode::exists(location)) return LoadResult(romNotFound); + if(!inode::exists(location)) return romNotFound; this->location = location; this->manifest = analyze(location); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("title", document["game/title"].string()); @@ -26,7 +26,7 @@ auto Saturn::load(string location) -> LoadResult { pak->append("cd.rom", vfs::cdrom::open(location)); } - return LoadResult(successful); + return successful; } auto Saturn::save(string location) -> bool { diff --git a/mia/medium/sg-1000.cpp b/mia/medium/sg-1000.cpp index 7ea9c5c43c..6b04f21418 100644 --- a/mia/medium/sg-1000.cpp +++ b/mia/medium/sg-1000.cpp @@ -13,12 +13,12 @@ auto SG1000::load(string location) -> LoadResult { } else if(file::exists(location)) { rom = Cartridge::read(location); } - if(!rom) return LoadResult(romNotFound); + if(!rom) return romNotFound; this->location = location; this->manifest = analyze(rom); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("board", document["game/board" ].string()); @@ -31,7 +31,7 @@ auto SG1000::load(string location) -> LoadResult { Medium::load(node, ".ram"); } - return LoadResult(successful); + return successful; } auto SG1000::save(string location) -> bool { diff --git a/mia/medium/sufami-turbo.cpp b/mia/medium/sufami-turbo.cpp index 71d3b30d3c..e1d009ab82 100644 --- a/mia/medium/sufami-turbo.cpp +++ b/mia/medium/sufami-turbo.cpp @@ -13,16 +13,16 @@ auto SufamiTurbo::load(string location) -> LoadResult { } else if(file::exists(location)) { rom = Cartridge::read(location); } - if(!rom) return LoadResult(romNotFound); + if(!rom) return romNotFound; this->sha256 = Hash::SHA256(rom).digest(); this->location = location; auto foundDatabase = Medium::loadDatabase(); - if(!foundDatabase) return LoadResult(databaseNotFound); + if(!foundDatabase) return { databaseNotFound, "Sufami Turbo.bml" }; this->manifest = Medium::manifestDatabase(sha256); if(!manifest) manifest = analyze(rom); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("title", document["game/title"].string()); @@ -33,7 +33,7 @@ auto SufamiTurbo::load(string location) -> LoadResult { Medium::load(node, ".ram"); } - return LoadResult(successful); + return successful; } auto SufamiTurbo::save(string location) -> bool { diff --git a/mia/medium/super-famicom.cpp b/mia/medium/super-famicom.cpp index c14f5b36b4..da73ebf0fe 100644 --- a/mia/medium/super-famicom.cpp +++ b/mia/medium/super-famicom.cpp @@ -75,7 +75,7 @@ auto SuperFamicom::load(string location) -> LoadResult { directory = Location::dir(location); } - if(!rom) return LoadResult(romNotFound); + if(!rom) return romNotFound; //append firmware to the ROM if it is missing auto tmp_manifest = analyze(rom); @@ -85,7 +85,7 @@ auto SuperFamicom::load(string location) -> LoadResult { this->sha256 = Hash::SHA256(rom).digest(); this->location = location; auto foundDatabase = Medium::loadDatabase(); - if(!foundDatabase) return LoadResult(databaseNotFound); + if(!foundDatabase) return { databaseNotFound, "Super Famicom.bml" }; this->manifest = Medium::manifestDatabase(sha256); if(!manifest) { @@ -102,7 +102,7 @@ auto SuperFamicom::load(string location) -> LoadResult { if(!manifest) manifest = analyze(rom); document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("title", document["game/title"].string()); @@ -182,7 +182,7 @@ auto SuperFamicom::load(string location) -> LoadResult { Medium::load(node, ".dram"); } - return LoadResult(successful); + return successful; } auto SuperFamicom::save(string location) -> bool { diff --git a/mia/medium/wonderswan.cpp b/mia/medium/wonderswan.cpp index 506d82428d..2670beebcc 100644 --- a/mia/medium/wonderswan.cpp +++ b/mia/medium/wonderswan.cpp @@ -14,12 +14,12 @@ auto WonderSwan::load(string location) -> LoadResult { } else if(file::exists(location)) { rom = Cartridge::read(location); } - if(!rom) return LoadResult(romNotFound); + if(!rom) return romNotFound; this->location = location; this->manifest = analyze(rom); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("title", document["game/title"].string()); @@ -43,7 +43,7 @@ auto WonderSwan::load(string location) -> LoadResult { Medium::load(node, ".rtc"); } - return LoadResult(successful); + return successful; } auto WonderSwan::save(string location) -> bool { diff --git a/mia/medium/zx-spectrum.cpp b/mia/medium/zx-spectrum.cpp index 4698f687c1..ff97c37cfb 100644 --- a/mia/medium/zx-spectrum.cpp +++ b/mia/medium/zx-spectrum.cpp @@ -9,22 +9,22 @@ struct ZXSpectrum : Medium { }; auto ZXSpectrum::load(string location) -> LoadResult { - if(!inode::exists(location)) return LoadResult(romNotFound); + if(!inode::exists(location)) return romNotFound; if(location.iendsWith(".tap") || location.iendsWith(".tzx")) return loadTzx(location); if(location.iendsWith(".wav")) return loadWav(location); - return LoadResult(invalidRom); + return invalidROM; } auto ZXSpectrum::loadTzx(string location) -> LoadResult { this->location = location; this->manifest = analyze(location); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; vector input = file::read(location); TZXFile tzx; - if(tzx.DecodeFile(input.data(), input.size()) == FileTypeUndetermined) return LoadResult(invalidRom); + if(tzx.DecodeFile(input.data(), input.size()) == FileTypeUndetermined) return invalidROM; tzx.GenerateAudioData(); pak = new vfs::directory; @@ -45,14 +45,14 @@ auto ZXSpectrum::loadTzx(string location) -> LoadResult { } pak->append("program.tape", output); - return LoadResult(successful); + return successful; } auto ZXSpectrum::loadWav(string location) -> LoadResult { this->location = location; this->manifest = analyze(location); auto document = BML::unserialize(manifest); - if(!document) return LoadResult(couldNotParseManifest); + if(!document) return couldNotParseManifest; pak = new vfs::directory; pak->setAttribute("title", document["game/title"].string()); @@ -80,7 +80,7 @@ auto ZXSpectrum::loadWav(string location) -> LoadResult { } } - return LoadResult(successful); + return successful; } auto ZXSpectrum::save(string location) -> bool { diff --git a/mia/mia.cpp b/mia/mia.cpp index 6b5512543b..f8a00fc4fc 100644 --- a/mia/mia.cpp +++ b/mia/mia.cpp @@ -144,7 +144,7 @@ auto identify(const string& filename) -> string { for(auto& medium : media) { auto pak = mia::Medium::create(medium); if(pak->extensions().find(extension)) { - if(pak->load(filename) != LoadResult(successful)) continue; // Skip medium that the system cannot load + if(pak->load(filename) != successful) continue; // Skip medium that the system cannot load if(pak->pak->attribute("audio").boolean()) continue; // Skip audio-only media to give the next system a chance to match return pak->name(); } @@ -154,7 +154,7 @@ auto identify(const string& filename) -> string { } auto import(shared_pointer pak, const string& filename) -> bool { - if(pak->load(filename) == LoadResult(successful)) { + if(pak->load(filename) == successful) { string pathname = {Path::user(), "Emulation/", pak->name(), "/", Location::prefix(filename), ".", pak->extensions().first(), "/"}; if(!directory::create(pathname)) return false; for(auto& node : *pak->pak) { @@ -194,7 +194,7 @@ auto main(Arguments arguments) -> void { if(!pak) return; if(string manifest; arguments.take("--manifest", manifest)) { - if(pak->load(manifest) == LoadResult(successful)) { + if(pak->load(manifest) == successful) { if(auto fp = pak->pak->read("manifest.bml")) return print(fp->reads()); } return; diff --git a/mia/mia.hpp b/mia/mia.hpp index a8764adbae..fbed61769f 100644 --- a/mia/mia.hpp +++ b/mia/mia.hpp @@ -17,6 +17,38 @@ using namespace hiro; #include #include +enum ResultEnum { + successful, + noFileSelected, + databaseNotFound, + romNotFoundInDatabase, + romNotFound, + invalidROM, + couldNotParseManifest, + noFirmware, + otherError +}; + +struct LoadResult { + ResultEnum result; + + string info; + string firmwareType; + string firmwareSystemName; + string firmwareRegion; + + LoadResult(ResultEnum r) : result(r) {} + + LoadResult(ResultEnum r, string i) : result(r), info(i) {} + + bool operator==(const LoadResult& other) { + return result == other.result; + } + bool operator!=(const LoadResult& other) { + return result != other.result; + } +}; + namespace mia { #include "settings/settings.hpp" #include "pak/pak.hpp" diff --git a/mia/pak/pak.hpp b/mia/pak/pak.hpp index 6bf457ead4..eb5e79fabc 100644 --- a/mia/pak/pak.hpp +++ b/mia/pak/pak.hpp @@ -5,7 +5,7 @@ struct Pak { virtual auto type() -> string { return pak->attribute("type"); } virtual auto name() -> string { return pak->attribute("name"); } virtual auto extensions() -> vector { return {}; } - virtual auto load(string location = {}) -> LoadResult { return LoadResult(successful); } + virtual auto load(string location = {}) -> LoadResult { return successful; } virtual auto loadMultiple(vector location = {}) -> bool { return true; } virtual auto save(string location = {}) -> bool { return true; } diff --git a/mia/system/arcade.cpp b/mia/system/arcade.cpp index ba9bb19547..23e5bfc7c3 100644 --- a/mia/system/arcade.cpp +++ b/mia/system/arcade.cpp @@ -7,7 +7,7 @@ struct Arcade : System { auto Arcade::load(string location) -> LoadResult { this->location = locate(); pak = new vfs::directory; - return LoadResult(successful); + return successful; } auto Arcade::save(string location) -> bool { diff --git a/mia/system/atari-2600.cpp b/mia/system/atari-2600.cpp index 9cabd11b4c..2ed297132a 100644 --- a/mia/system/atari-2600.cpp +++ b/mia/system/atari-2600.cpp @@ -7,7 +7,7 @@ struct Atari2600 : System { auto Atari2600::load(string location) -> LoadResult { this->location = locate(); pak = new vfs::directory; - return LoadResult(successful); + return successful; } auto Atari2600::save(string location) -> bool { diff --git a/mia/system/colecovision.cpp b/mia/system/colecovision.cpp index c6b779f49a..f7749c2ee9 100644 --- a/mia/system/colecovision.cpp +++ b/mia/system/colecovision.cpp @@ -6,12 +6,12 @@ struct ColecoVision : System { auto ColecoVision::load(string location) -> LoadResult { auto bios = Pak::read(location); - if(!bios) return LoadResult(romNotFound); + if(!bios) return romNotFound; this->location = locate(); pak = new vfs::directory; pak->append("bios.rom", bios); - return LoadResult(successful); + return successful; } auto ColecoVision::save(string location) -> bool { diff --git a/mia/system/famicom.cpp b/mia/system/famicom.cpp index da50011e95..cbdd23ac51 100644 --- a/mia/system/famicom.cpp +++ b/mia/system/famicom.cpp @@ -7,7 +7,7 @@ struct Famicom : System { auto Famicom::load(string location) -> LoadResult { this->location = locate(); pak = new vfs::directory; - return LoadResult(successful); + return successful; } auto Famicom::save(string location) -> bool { diff --git a/mia/system/game-boy-advance.cpp b/mia/system/game-boy-advance.cpp index c2e101085b..f5b6881b8c 100644 --- a/mia/system/game-boy-advance.cpp +++ b/mia/system/game-boy-advance.cpp @@ -6,12 +6,12 @@ struct GameBoyAdvance : System { auto GameBoyAdvance::load(string location) -> LoadResult { auto bios = Pak::read(location); - if(!bios) return LoadResult(romNotFound); + if(!bios) return romNotFound; this->location = locate(); pak = new vfs::directory; pak->append("bios.rom", bios); - return LoadResult(successful); + return successful; } auto GameBoyAdvance::save(string location) -> bool { diff --git a/mia/system/game-boy-color.cpp b/mia/system/game-boy-color.cpp index 116c74ae82..932a6c7ace 100644 --- a/mia/system/game-boy-color.cpp +++ b/mia/system/game-boy-color.cpp @@ -8,7 +8,7 @@ auto GameBoyColor::load(string location) -> LoadResult { this->location = locate(); pak = new vfs::directory; pak->append("boot.rom", Resource::GameBoyColor::BootCGB0); - return LoadResult(successful); + return successful; } auto GameBoyColor::save(string location) -> bool { diff --git a/mia/system/game-boy.cpp b/mia/system/game-boy.cpp index 628560332c..53aae623cf 100644 --- a/mia/system/game-boy.cpp +++ b/mia/system/game-boy.cpp @@ -8,7 +8,7 @@ auto GameBoy::load(string location) -> LoadResult { this->location = locate(); pak = new vfs::directory; pak->append("boot.rom", Resource::GameBoy::BootDMG1); - return LoadResult(successful); + return successful; } auto GameBoy::save(string location) -> bool { diff --git a/mia/system/game-gear.cpp b/mia/system/game-gear.cpp index 8563e9df5a..1240b6893b 100644 --- a/mia/system/game-gear.cpp +++ b/mia/system/game-gear.cpp @@ -11,7 +11,7 @@ auto GameGear::load(string location) -> LoadResult { pak = new vfs::directory; if(bios) pak->append("bios.rom", bios); - return LoadResult(successful); + return successful; } auto GameGear::save(string location) -> bool { diff --git a/mia/system/master-system.cpp b/mia/system/master-system.cpp index 4073275b8c..ef30510d23 100644 --- a/mia/system/master-system.cpp +++ b/mia/system/master-system.cpp @@ -11,7 +11,7 @@ auto MasterSystem::load(string location) -> LoadResult { pak = new vfs::directory; if(bios) pak->append("bios.rom", bios); - return LoadResult(successful); + return successful; } auto MasterSystem::save(string location) -> bool { diff --git a/mia/system/mega-32x.cpp b/mia/system/mega-32x.cpp index eead05b9b2..f42cf9f086 100644 --- a/mia/system/mega-32x.cpp +++ b/mia/system/mega-32x.cpp @@ -11,7 +11,7 @@ auto Mega32X::load(string location) -> LoadResult { pak->append("vector.rom", Resource::Mega32X::Vector); pak->append("sh2.boot.mrom", Resource::Mega32X::SH2BootM); pak->append("sh2.boot.srom", Resource::Mega32X::SH2BootS); - return LoadResult(successful); + return successful; } auto Mega32X::save(string location) -> bool { diff --git a/mia/system/mega-cd-32x.cpp b/mia/system/mega-cd-32x.cpp index 1b1b1d1398..2428f1a9b7 100644 --- a/mia/system/mega-cd-32x.cpp +++ b/mia/system/mega-cd-32x.cpp @@ -13,7 +13,7 @@ struct MegaCD32X : System { auto MegaCD32X::load(string location) -> LoadResult { auto bios = Pak::read(location); - if(!bios) return LoadResult(romNotFound); + if(!bios) return romNotFound; this->location = locate(); pak = new vfs::directory; @@ -32,7 +32,7 @@ auto MegaCD32X::load(string location) -> LoadResult { Pak::load("backup.ram", ".bram"); - return LoadResult(successful); + return successful; } auto MegaCD32X::save(string location) -> bool { diff --git a/mia/system/mega-cd.cpp b/mia/system/mega-cd.cpp index dc481d3e78..0d78e824fb 100644 --- a/mia/system/mega-cd.cpp +++ b/mia/system/mega-cd.cpp @@ -13,7 +13,7 @@ struct MegaCD : System { auto MegaCD::load(string location) -> LoadResult { auto bios = Pak::read(location); - if(!bios) return LoadResult(romNotFound); + if(!bios) return romNotFound; this->location = locate(); pak = new vfs::directory; @@ -29,7 +29,7 @@ auto MegaCD::load(string location) -> LoadResult { Pak::load("backup.ram", ".bram"); - return LoadResult(successful); + return successful; } auto MegaCD::save(string location) -> bool { diff --git a/mia/system/mega-drive.cpp b/mia/system/mega-drive.cpp index ddf4b9431d..0d2f5365f4 100644 --- a/mia/system/mega-drive.cpp +++ b/mia/system/mega-drive.cpp @@ -8,7 +8,7 @@ auto MegaDrive::load(string location) -> LoadResult { this->location = locate(); pak = new vfs::directory; pak->append("tmss.rom", Resource::MegaDrive::TMSS); - return LoadResult(successful); + return successful; } auto MegaDrive::save(string location) -> bool { diff --git a/mia/system/msx.cpp b/mia/system/msx.cpp index a1103074ab..483bfc0645 100644 --- a/mia/system/msx.cpp +++ b/mia/system/msx.cpp @@ -6,12 +6,12 @@ struct MSX : System { auto MSX::load(string location) -> LoadResult { auto bios = Pak::read(location); - if(!bios) return LoadResult(romNotFound); + if(!bios) return romNotFound; this->location = locate(); pak = new vfs::directory; pak->append("bios.rom", bios); - return LoadResult(successful); + return successful; } auto MSX::save(string location) -> bool { diff --git a/mia/system/myvision.cpp b/mia/system/myvision.cpp index 4646336ec6..7c04ce665d 100644 --- a/mia/system/myvision.cpp +++ b/mia/system/myvision.cpp @@ -9,7 +9,7 @@ auto MyVision::load(string location) -> LoadResult { this->location = locate(); pak = new vfs::directory; - return LoadResult(successful); + return successful; } auto MyVision::save(string location) -> bool { diff --git a/mia/system/neo-geo-aes.cpp b/mia/system/neo-geo-aes.cpp index a0e8114957..60e483f847 100644 --- a/mia/system/neo-geo-aes.cpp +++ b/mia/system/neo-geo-aes.cpp @@ -26,9 +26,9 @@ auto NeoGeoAES::load(string location) -> LoadResult { if (bios) pak->append("bios.rom", bios); } - if(pak->count() != 1) return LoadResult(romNotFound); + if(pak->count() != 1) return romNotFound; - return LoadResult(successful); + return successful; } auto NeoGeoAES::save(string location) -> bool { diff --git a/mia/system/neo-geo-mvs.cpp b/mia/system/neo-geo-mvs.cpp index fb95f531c7..1c5ac99969 100644 --- a/mia/system/neo-geo-mvs.cpp +++ b/mia/system/neo-geo-mvs.cpp @@ -26,9 +26,9 @@ auto NeoGeoMVS::load(string location) -> LoadResult { if(bios) pak->append("bios.rom", bios); } - if(pak->count() != 1) return LoadResult(romNotFound); + if(pak->count() != 1) return romNotFound; - return LoadResult(successful); + return successful; } auto NeoGeoMVS::save(string location) -> bool { diff --git a/mia/system/neo-geo-pocket-color.cpp b/mia/system/neo-geo-pocket-color.cpp index a45f77c391..d9e2ab37eb 100644 --- a/mia/system/neo-geo-pocket-color.cpp +++ b/mia/system/neo-geo-pocket-color.cpp @@ -6,7 +6,7 @@ struct NeoGeoPocketColor : System { auto NeoGeoPocketColor::load(string location) -> LoadResult { auto bios = Pak::read(location); - if(!bios) return LoadResult(romNotFound); + if(!bios) return romNotFound; this->location = locate(); pak = new vfs::directory; @@ -17,7 +17,7 @@ auto NeoGeoPocketColor::load(string location) -> LoadResult { Pak::load("cpu.ram", ".cram"); Pak::load("apu.ram", ".aram"); - return LoadResult(successful); + return successful; } auto NeoGeoPocketColor::save(string location) -> bool { diff --git a/mia/system/neo-geo-pocket.cpp b/mia/system/neo-geo-pocket.cpp index 9f98fbd8d1..6a3d363c2a 100644 --- a/mia/system/neo-geo-pocket.cpp +++ b/mia/system/neo-geo-pocket.cpp @@ -6,7 +6,7 @@ struct NeoGeoPocket : System { auto NeoGeoPocket::load(string location) -> LoadResult { auto bios = Pak::read(location); - if(!bios) return LoadResult(romNotFound); + if(!bios) return romNotFound; this->location = locate(); pak = new vfs::directory; @@ -17,7 +17,7 @@ auto NeoGeoPocket::load(string location) -> LoadResult { Pak::load("cpu.ram", ".cram"); Pak::load("apu.ram", ".aram"); - return LoadResult(successful); + return successful; } auto NeoGeoPocket::save(string location) -> bool { diff --git a/mia/system/nintendo-64.cpp b/mia/system/nintendo-64.cpp index 4d4c9144fb..ce10088e34 100644 --- a/mia/system/nintendo-64.cpp +++ b/mia/system/nintendo-64.cpp @@ -10,7 +10,7 @@ auto Nintendo64::load(string location) -> LoadResult { pak->append("pif.ntsc.rom", Resource::Nintendo64::PIFNTSC); pak->append("pif.pal.rom", Resource::Nintendo64::PIFPAL ); pak->append("pif.sm5.rom", Resource::Nintendo64::PIFSM5 ); - return LoadResult(successful); + return successful; } auto Nintendo64::save(string location) -> bool { diff --git a/mia/system/nintendo-64dd.cpp b/mia/system/nintendo-64dd.cpp index c975abfe0f..029fbfcad5 100644 --- a/mia/system/nintendo-64dd.cpp +++ b/mia/system/nintendo-64dd.cpp @@ -6,7 +6,7 @@ struct Nintendo64DD : System { auto Nintendo64DD::load(string location) -> LoadResult { auto bios = Pak::read(location); - if(!bios) return LoadResult(romNotFound); + if(!bios) return romNotFound; this->location = locate(); pak = new vfs::directory; @@ -21,7 +21,7 @@ auto Nintendo64DD::load(string location) -> LoadResult { } Pak::load("time.rtc", ".rtc"); - return LoadResult(successful); + return successful; } auto Nintendo64DD::save(string location) -> bool { diff --git a/mia/system/pc-engine.cpp b/mia/system/pc-engine.cpp index f873084b1f..625cac252b 100644 --- a/mia/system/pc-engine.cpp +++ b/mia/system/pc-engine.cpp @@ -11,7 +11,7 @@ auto PCEngine::load(string location) -> LoadResult { Pak::load("backup.ram", ".bram"); - return LoadResult(successful); + return successful; } auto PCEngine::save(string location) -> bool { diff --git a/mia/system/playstation.cpp b/mia/system/playstation.cpp index f35ccbb2e1..af477814ee 100644 --- a/mia/system/playstation.cpp +++ b/mia/system/playstation.cpp @@ -6,13 +6,13 @@ struct PlayStation : System { auto PlayStation::load(string location) -> LoadResult { auto bios = Pak::read(location); - if(!bios) return LoadResult(romNotFound); + if(!bios) return romNotFound; this->location = locate(); pak = new vfs::directory; pak->append("bios.rom", bios); - return LoadResult(successful); + return successful; } auto PlayStation::save(string location) -> bool { diff --git a/mia/system/pocket-challenge-v2.cpp b/mia/system/pocket-challenge-v2.cpp index 2c3a3eb666..df8413a285 100644 --- a/mia/system/pocket-challenge-v2.cpp +++ b/mia/system/pocket-challenge-v2.cpp @@ -9,7 +9,7 @@ auto PocketChallengeV2::load(string location) -> LoadResult { pak = new vfs::directory; pak->append("boot.rom", Resource::PocketChallengeV2::Boot); - return LoadResult(successful); + return successful; } auto PocketChallengeV2::save(string location) -> bool { diff --git a/mia/system/saturn.cpp b/mia/system/saturn.cpp index c3e5b0b457..1f0ef5fabc 100644 --- a/mia/system/saturn.cpp +++ b/mia/system/saturn.cpp @@ -6,13 +6,13 @@ struct Saturn : System { auto Saturn::load(string location) -> LoadResult { auto bios = Pak::read(location); - if(!bios) return LoadResult(romNotFound); + if(!bios) return romNotFound; this->location = locate(); pak = new vfs::directory; pak->append("bios.rom", bios); - return LoadResult(successful); + return successful; } auto Saturn::save(string location) -> bool { diff --git a/mia/system/sc-3000.cpp b/mia/system/sc-3000.cpp index 5ff1c2684c..d0bd9106e2 100644 --- a/mia/system/sc-3000.cpp +++ b/mia/system/sc-3000.cpp @@ -7,7 +7,7 @@ struct SC3000 : System { auto SC3000::load(string location) -> LoadResult { this->location = locate(); pak = new vfs::directory; - return LoadResult(successful); + return successful; } auto SC3000::save(string location) -> bool { diff --git a/mia/system/sg-1000.cpp b/mia/system/sg-1000.cpp index d35cab0ec5..af74c87995 100644 --- a/mia/system/sg-1000.cpp +++ b/mia/system/sg-1000.cpp @@ -7,7 +7,7 @@ struct SG1000 : System { auto SG1000::load(string location) -> LoadResult { this->location = locate(); pak = new vfs::directory; - return LoadResult(successful); + return successful; } auto SG1000::save(string location) -> bool { diff --git a/mia/system/super-famicom.cpp b/mia/system/super-famicom.cpp index 9b2a41ab9e..df8d18f1a5 100644 --- a/mia/system/super-famicom.cpp +++ b/mia/system/super-famicom.cpp @@ -9,9 +9,9 @@ auto SuperFamicom::load(string location) -> LoadResult { pak = new vfs::directory; pak->append("ipl.rom", Resource::SuperFamicom::IPLROM); auto romLocation = mia::locate("Database/Super Famicom Boards.bml"); - if(!romLocation) return LoadResult(databaseNotFound); + if(!romLocation) return { databaseNotFound, "Super Famicom Boards.bml" }; pak->append("boards.bml", file::read(romLocation)); - return LoadResult(successful); + return successful; } auto SuperFamicom::save(string location) -> bool { diff --git a/mia/system/supergrafx.cpp b/mia/system/supergrafx.cpp index 3f59240f59..a944fce04d 100644 --- a/mia/system/supergrafx.cpp +++ b/mia/system/supergrafx.cpp @@ -11,7 +11,7 @@ auto SuperGrafx::load(string location) -> LoadResult { Pak::load("backup.ram", ".bram"); - return LoadResult(successful); + return successful; } auto SuperGrafx::save(string location) -> bool { diff --git a/mia/system/wonderswan-color.cpp b/mia/system/wonderswan-color.cpp index a4bab5ecac..882fe20ed3 100644 --- a/mia/system/wonderswan-color.cpp +++ b/mia/system/wonderswan-color.cpp @@ -12,7 +12,7 @@ auto WonderSwanColor::load(string location) -> LoadResult { Pak::load("save.eeprom", ".eeprom"); - return LoadResult(successful); + return successful; } auto WonderSwanColor::save(string location) -> bool { diff --git a/mia/system/wonderswan.cpp b/mia/system/wonderswan.cpp index 64edc39ea5..2669791d43 100644 --- a/mia/system/wonderswan.cpp +++ b/mia/system/wonderswan.cpp @@ -12,7 +12,7 @@ auto WonderSwan::load(string location) -> LoadResult { Pak::load("save.eeprom", ".eeprom"); - return LoadResult(successful); + return successful; } auto WonderSwan::save(string location) -> bool { diff --git a/mia/system/zx-spectrum-128.cpp b/mia/system/zx-spectrum-128.cpp index 7f004b5b23..69cd816a5d 100644 --- a/mia/system/zx-spectrum-128.cpp +++ b/mia/system/zx-spectrum-128.cpp @@ -9,7 +9,7 @@ auto ZXSpectrum128::load(string location) -> LoadResult { pak = new vfs::directory; pak->append("bios.rom", Resource::ZXSpectrum128::BIOS); pak->append("sub.rom", Resource::ZXSpectrum128::Sub); - return LoadResult(successful); + return successful; } auto ZXSpectrum128::save(string location) -> bool { diff --git a/mia/system/zx-spectrum.cpp b/mia/system/zx-spectrum.cpp index 58805087cc..ea14b069ec 100644 --- a/mia/system/zx-spectrum.cpp +++ b/mia/system/zx-spectrum.cpp @@ -8,7 +8,7 @@ auto ZXSpectrum::load(string location) -> LoadResult { this->location = locate(); pak = new vfs::directory; pak->append("bios.rom", Resource::ZXSpectrum::BIOS); - return LoadResult(successful); + return successful; } auto ZXSpectrum::save(string location) -> bool {