diff --git a/Source/RMG/M64P/Wrapper/Core.cpp b/Source/RMG/M64P/Wrapper/Core.cpp index 8149a22f..0ad1df52 100644 --- a/Source/RMG/M64P/Wrapper/Core.cpp +++ b/Source/RMG/M64P/Wrapper/Core.cpp @@ -655,10 +655,10 @@ bool Core::rom_ApplyOverlay() return true; } - g_MupenApi.Config.GetOption(section, "DisableExtraMem", (bool *)&info.Settings.disableextramem); - g_MupenApi.Config.GetOption(section, "SaveType", (int *)&info.Settings.savetype); - g_MupenApi.Config.GetOption(section, "CountPerOp", (int *)&info.Settings.countperop); - g_MupenApi.Config.GetOption(section, "SiDmaDuration", (int *)&info.Settings.sidmaduration); + info.Settings.disableextramem = g_Settings.GetBoolValue(SettingsID::Game_DisableExtraMem, section); + info.Settings.savetype = g_Settings.GetIntValue(SettingsID::Game_SaveType, section); + info.Settings.countperop = g_Settings.GetIntValue(SettingsID::Game_CountPerOp, section); + info.Settings.sidmaduration = g_Settings.GetIntValue(SettingsID::Game_SiDmaDuration, section); std::cout << "info.Settings.goodname: " << info.Settings.goodname << std::endl; std::cout << "info.Settings.DisableExtraMem: " << (int)info.Settings.disableextramem << std::endl; diff --git a/Source/RMG/UserInterface/Dialog/SettingsDialog.cpp b/Source/RMG/UserInterface/Dialog/SettingsDialog.cpp index 16c95a9b..43fcaef9 100644 --- a/Source/RMG/UserInterface/Dialog/SettingsDialog.cpp +++ b/Source/RMG/UserInterface/Dialog/SettingsDialog.cpp @@ -166,12 +166,19 @@ void SettingsDialog::loadGamePluginSettings(void) { QComboBox *comboBoxArray[4] = {this->pluginVideoPlugins, this->pluginAudioPlugins, this->pluginInputPlugins, this->pluginRspPlugins}; + QComboBox *comboBox; for (QComboBox *comboBox : comboBoxArray) { comboBox->clear(); comboBox->addItem("**Use Core Plugin Settings**"); } + + for (const Plugin_t &p : g_Plugins.GetAvailablePlugins()) + { + comboBox = comboBoxArray[(int)p.Type]; + comboBox->addItem(p.Name); + } } void SettingsDialog::loadPluginSettings(void) @@ -375,13 +382,13 @@ void SettingsDialog::saveGameSettings(void) int siDmaDuration = this->gameSiDmaDuration->value(); if (defaultGameInfo.Settings.disableextramem != (unsigned char)disableExtraMem) - g_MupenApi.Config.SetOption(section, "DisableExtraMem", disableExtraMem); + g_Settings.SetValue(SettingsID::Game_DisableExtraMem, section, disableExtraMem); if (defaultGameInfo.Settings.savetype != saveType) - g_MupenApi.Config.SetOption(section, "SaveType", saveType); + g_Settings.SetValue(SettingsID::Game_SaveType, section, saveType); if (defaultGameInfo.Settings.countperop != countPerOp) - g_MupenApi.Config.SetOption(section, "CountPerOp", countPerOp); + g_Settings.SetValue(SettingsID::Game_CountPerOp, section, countPerOp); if (defaultGameInfo.Settings.sidmaduration != siDmaDuration) - g_MupenApi.Config.SetOption(section, "SiDmaDuration", siDmaDuration); + g_Settings.SetValue(SettingsID::Game_SiDmaDuration, section, siDmaDuration); } void SettingsDialog::savePluginSettings(void) diff --git a/Source/RMG/Utilities/Settings.cpp b/Source/RMG/Utilities/Settings.cpp index 544679e3..562df2ba 100644 --- a/Source/RMG/Utilities/Settings.cpp +++ b/Source/RMG/Utilities/Settings.cpp @@ -30,6 +30,9 @@ void Settings::LoadDefaults() { setting = this->getSetting((SettingsID)i); + if (setting.Section.isEmpty()) + continue; + switch (setting.Default.type()) { case QVariant::Type::String: @@ -56,90 +59,146 @@ void Settings::LoadDefaults() int Settings::GetDefaultIntValue(SettingsID id) { - Setting_t s = this->getSetting(id); - return s.Default.toInt(); + return this->getDefaultIntValue(this->getSetting(id)); } bool Settings::GetDefaultBoolValue(SettingsID id) { - Setting_t s = this->getSetting(id); - return s.Default.toBool(); + return this->getDefaultBoolValue(this->getSetting(id)); } float Settings::GetDefaultFloatValue(SettingsID id) { - Setting_t s = this->getSetting(id); - return s.Default.toFloat(); + return this->getDefaultFloatValue(this->getSetting(id)); } QString Settings::GetDefaultStringValue(SettingsID id) +{ + return this->getDefaultStringValue(this->getSetting(id)); +} + +int Settings::GetDefaultIntValue(SettingsID id, QString section) { Setting_t s = this->getSetting(id); - return s.Default.toString(); + s.Section = section; + return this->getDefaultIntValue(s); +} + +bool Settings::GetDefaultBoolValue(SettingsID id, QString section) +{ + Setting_t s = this->getSetting(id); + s.Section = section; + return this->getDefaultBoolValue(s); +} + +float Settings::GetDefaultFloatValue(SettingsID id, QString section) +{ + Setting_t s = this->getSetting(id); + s.Section = section; + return this->getDefaultFloatValue(s); +} + +QString Settings::GetDefaultStringValue(SettingsID id, QString section) +{ + Setting_t s = this->getSetting(id); + s.Section = section; + return this->getDefaultStringValue(s); } int Settings::GetIntValue(SettingsID id) { - Setting_t s = this->getSetting(id); - int value = s.Default.toInt(); - g_MupenApi.Config.GetOption(s.Section, s.Key, &value); - return value; + return this->getIntValue(this->getSetting(id)); } bool Settings::GetBoolValue(SettingsID id) { - Setting_t s = this->getSetting(id); - bool value = s.Default.toBool(); - g_MupenApi.Config.GetOption(s.Section, s.Key, &value); - return value; + return this->getBoolValue(this->getSetting(id)); } float Settings::GetFloatValue(SettingsID id) { - Setting_t s = this->getSetting(id); - float value = s.Default.toFloat(); - g_MupenApi.Config.GetOption(s.Section, s.Key, &value); - return value; + return this->getFloatValue(this->getSetting(id)); } QString Settings::GetStringValue(SettingsID id) +{ + return this->getStringValue(this->getSetting(id)); +} + +int Settings::GetIntValue(SettingsID id, QString section) { Setting_t s = this->getSetting(id); - QString value = s.Default.toString(); - g_MupenApi.Config.GetOption(s.Section, s.Key, &value); - return value; + s.Section = section; + return this->getIntValue(s); +} + +bool Settings::GetBoolValue(SettingsID id, QString section) +{ + Setting_t s = this->getSetting(id); + s.Section = section; + return this->getBoolValue(s); +} + +float Settings::GetFloatValue(SettingsID id, QString section) +{ + Setting_t s = this->getSetting(id); + s.Section = section; + return this->getFloatValue(s); +} + +QString Settings::GetStringValue(SettingsID id, QString section) +{ + Setting_t s = this->getSetting(id); + s.Section = section; + return this->getStringValue(s); } bool Settings::SetValue(SettingsID id, int value) { - Setting_t s = this->getSetting(id); - bool ret = false; - ret = g_MupenApi.Config.SetOption(s.Section, s.Key, value); - return ret; + return this->setValue(this->getSetting(id), value); } bool Settings::SetValue(SettingsID id, bool value) { - Setting_t s = this->getSetting(id); - bool ret = false; - ret = g_MupenApi.Config.SetOption(s.Section, s.Key, value); - return ret; + return this->setValue(this->getSetting(id), value); } bool Settings::SetValue(SettingsID id, float value) { - Setting_t s = this->getSetting(id); - bool ret = false; - ret = g_MupenApi.Config.SetOption(s.Section, s.Key, value); - return ret; + return this->setValue(this->getSetting(id), value); } bool Settings::SetValue(SettingsID id, QString value) +{ + return this->setValue(this->getSetting(id), value); +} + +bool Settings::SetValue(SettingsID id, QString section, int value) { Setting_t s = this->getSetting(id); - bool ret = false; - ret = g_MupenApi.Config.SetOption(s.Section, s.Key, value); - return ret; + s.Section = section; + return this->setValue(s, value); +} + +bool Settings::SetValue(SettingsID id, QString section, bool value) +{ + Setting_t s = this->getSetting(id); + s.Section = section; + return this->setValue(s, value); +} + +bool Settings::SetValue(SettingsID id, QString section, float value) +{ + Setting_t s = this->getSetting(id); + s.Section = section; + return this->setValue(s, value); +} + +bool Settings::SetValue(SettingsID id, QString section, QString value) +{ + Setting_t s = this->getSetting(id); + s.Section = section; + return this->setValue(s, value); } #define GUI_SECTION "Rosalie's Mupen GUI" @@ -235,7 +294,111 @@ Setting_t Settings::getSetting(SettingsID id) case SettingsID::Core_SharedDataPath: setting = {M64P_SECTION, "SharedDataPath", "Data", "", true}; break; + + case SettingsID::Game_DisableExtraMem: + setting = {"", "DisableExtraMem", false, "", false}; + break; + case SettingsID::Game_SaveType: + setting = {"", "SaveType", 0, "", false}; + break; + case SettingsID::Game_CountPerOp: + setting = {"", "CountPerOp", 2, "", false}; + break; + case SettingsID::Game_SiDmaDuration: + setting = {"", "SiDmaDuration", 2304, "", false}; + break; + + case SettingsID::Game_GFX_Plugin: + setting = {"", "GFX Plugin", "", "", false}; + break; + case SettingsID::Game_AUDIO_Plugin: + setting = {"", "Audio Plugin", "", "", false}; + break; + case SettingsID::Game_INPUT_Plugin: + setting = {"", "Input Plugin", "", "", false}; + break; + case SettingsID::Game_RSP_Plugin: + setting = {"", "RSP Plugin", "", "", false}; + break; } return setting; } + +int Settings::getDefaultIntValue(Setting_t s) +{ + return s.Default.toInt(); +} + +bool Settings::getDefaultBoolValue(Setting_t s) +{ + return s.Default.toBool(); +} + +float Settings::getDefaultFloatValue(Setting_t s) +{ + return s.Default.toFloat(); +} + +QString Settings::getDefaultStringValue(Setting_t s) +{ + return s.Default.toString(); +} + + +int Settings::getIntValue(Setting_t s) +{ + int value = s.Default.toInt(); + g_MupenApi.Config.GetOption(s.Section, s.Key, &value); + return value; +} + +bool Settings::getBoolValue(Setting_t s) +{ + bool value = s.Default.toBool(); + g_MupenApi.Config.GetOption(s.Section, s.Key, &value); + return value; +} + +float Settings::getFloatValue(Setting_t s) +{ + float value = s.Default.toFloat(); + g_MupenApi.Config.GetOption(s.Section, s.Key, &value); + return value; +} + +QString Settings::getStringValue(Setting_t s) +{ + QString value = s.Default.toString(); + g_MupenApi.Config.GetOption(s.Section, s.Key, &value); + return value; +} + +bool Settings::setValue(Setting_t s, int value) +{ + bool ret = false; + ret = g_MupenApi.Config.SetOption(s.Section, s.Key, value); + return ret; +} + +bool Settings::setValue(Setting_t s, bool value) +{ + bool ret = false; + ret = g_MupenApi.Config.SetOption(s.Section, s.Key, value); + return ret; +} + +bool Settings::setValue(Setting_t s, float value) +{ + bool ret = false; + ret = g_MupenApi.Config.SetOption(s.Section, s.Key, value); + return ret; +} + +bool Settings::setValue(Setting_t s, QString value) +{ + bool ret = false; + ret = g_MupenApi.Config.SetOption(s.Section, s.Key, value); + return ret; +} + diff --git a/Source/RMG/Utilities/Settings.hpp b/Source/RMG/Utilities/Settings.hpp index 27f35425..38f480e4 100644 --- a/Source/RMG/Utilities/Settings.hpp +++ b/Source/RMG/Utilities/Settings.hpp @@ -28,18 +28,48 @@ class Settings float GetDefaultFloatValue(SettingsID); QString GetDefaultStringValue(SettingsID); + int GetDefaultIntValue(SettingsID, QString); + bool GetDefaultBoolValue(SettingsID, QString); + float GetDefaultFloatValue(SettingsID, QString); + QString GetDefaultStringValue(SettingsID, QString); + int GetIntValue(SettingsID); bool GetBoolValue(SettingsID); float GetFloatValue(SettingsID); QString GetStringValue(SettingsID); + int GetIntValue(SettingsID, QString); + bool GetBoolValue(SettingsID, QString); + float GetFloatValue(SettingsID, QString); + QString GetStringValue(SettingsID, QString); + bool SetValue(SettingsID, int); bool SetValue(SettingsID, bool); bool SetValue(SettingsID, float); bool SetValue(SettingsID, QString); + bool SetValue(SettingsID, QString, int); + bool SetValue(SettingsID, QString, bool); + bool SetValue(SettingsID, QString, float); + bool SetValue(SettingsID, QString, QString); + private: Setting_t getSetting(SettingsID); + + int getDefaultIntValue(Setting_t); + bool getDefaultBoolValue(Setting_t); + float getDefaultFloatValue(Setting_t); + QString getDefaultStringValue(Setting_t); + + int getIntValue(Setting_t); + bool getBoolValue(Setting_t); + float getFloatValue(Setting_t); + QString getStringValue(Setting_t); + + bool setValue(Setting_t, int); + bool setValue(Setting_t, bool); + bool setValue(Setting_t, float); + bool setValue(Setting_t, QString); }; } // namespace Utilities diff --git a/Source/RMG/Utilities/SettingsID.hpp b/Source/RMG/Utilities/SettingsID.hpp index 0476b629..91fd0f93 100644 --- a/Source/RMG/Utilities/SettingsID.hpp +++ b/Source/RMG/Utilities/SettingsID.hpp @@ -63,6 +63,18 @@ enum SettingsID Core_SaveSRAMPath, Core_SharedDataPath, + // Game Specific Settings + Game_DisableExtraMem, + Game_SaveType, + Game_CountPerOp, + Game_SiDmaDuration, + + // Game Plugin Settings + Game_GFX_Plugin, + Game_AUDIO_Plugin, + Game_INPUT_Plugin, + Game_RSP_Plugin, + Invalid };