From b2c41cec0aae76b9680506f336ba3792540e1527 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Lam?= Date: Tue, 1 Aug 2017 22:37:42 +0800 Subject: [PATCH] Config: Include SYSCONF in base layer Settings that come from the SYSCONF are now included in Dolphin's config system as part of the base layer. They are handled in a special way compared to other settings to make sure they are only loaded from and saved to the SYSCONF (to avoid different, possibly contradicting sources of truth). --- Source/Core/Common/Config/Config.cpp | 3 +- Source/Core/Common/Config/Enums.h | 1 + Source/Core/Common/SysConf.cpp | 14 ---- Source/Core/Common/SysConf.h | 1 - Source/Core/Core/Boot/Boot.cpp | 5 +- Source/Core/Core/BootManager.cpp | 60 ++++++++------ Source/Core/Core/CMakeLists.txt | 1 + Source/Core/Core/Config/SYSCONFSettings.cpp | 34 ++++++++ Source/Core/Core/Config/SYSCONFSettings.h | 40 ++++++++++ .../Core/ConfigLoaders/BaseConfigLoader.cpp | 79 ++++++++++++++++++- .../Core/ConfigLoaders/BaseConfigLoader.h | 2 + .../Core/ConfigLoaders/GameConfigLoader.cpp | 6 ++ .../Core/ConfigLoaders/MovieConfigLoader.cpp | 16 ++-- .../ConfigLoaders/NetPlayConfigLoader.cpp | 6 +- Source/Core/Core/ConfigManager.cpp | 56 +------------ Source/Core/Core/ConfigManager.h | 13 --- Source/Core/Core/Core.vcxproj | 4 +- Source/Core/Core/Core.vcxproj.filters | 6 ++ Source/Core/Core/HW/VideoInterface.cpp | 4 +- Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp | 4 +- Source/Core/Core/Movie.cpp | 27 +++---- Source/Core/Core/Movie.h | 2 - .../Core/DolphinQt2/NetPlay/NetPlayDialog.cpp | 6 +- .../Core/DolphinWX/Config/WiiConfigPane.cpp | 36 +++++---- Source/Core/DolphinWX/NetPlay/NetWindow.cpp | 6 +- Source/Core/DolphinWX/VideoConfigDiag.cpp | 6 +- Source/Core/VideoCommon/RenderBase.cpp | 6 +- 27 files changed, 272 insertions(+), 172 deletions(-) create mode 100644 Source/Core/Core/Config/SYSCONFSettings.cpp create mode 100644 Source/Core/Core/Config/SYSCONFSettings.h diff --git a/Source/Core/Common/Config/Config.cpp b/Source/Core/Common/Config/Config.cpp index dcdcf4ba8f..339155dbe3 100644 --- a/Source/Core/Common/Config/Config.cpp +++ b/Source/Core/Common/Config/Config.cpp @@ -101,8 +101,7 @@ void ClearCurrentRunLayer() static const std::map system_to_name = { {System::Main, "Dolphin"}, {System::GCPad, "GCPad"}, {System::WiiPad, "Wiimote"}, {System::GCKeyboard, "GCKeyboard"}, {System::GFX, "Graphics"}, {System::Logger, "Logger"}, - {System::Debugger, "Debugger"}, {System::UI, "UI"}, -}; + {System::Debugger, "Debugger"}, {System::UI, "UI"}, {System::SYSCONF, "SYSCONF"}}; const std::string& GetSystemName(System system) { diff --git a/Source/Core/Common/Config/Enums.h b/Source/Core/Common/Config/Enums.h index 95718d0ca7..9ffd9688c2 100644 --- a/Source/Core/Common/Config/Enums.h +++ b/Source/Core/Common/Config/Enums.h @@ -23,6 +23,7 @@ enum class LayerType enum class System { Main, + SYSCONF, GCPad, WiiPad, GCKeyboard, diff --git a/Source/Core/Common/SysConf.cpp b/Source/Core/Common/SysConf.cpp index 2f86379462..34f406bc6b 100644 --- a/Source/Core/Common/SysConf.cpp +++ b/Source/Core/Common/SysConf.cpp @@ -14,7 +14,6 @@ #include "Common/FileUtil.h" #include "Common/Logging/Log.h" #include "Common/Swap.h" -#include "Core/Movie.h" constexpr size_t SYSCONF_SIZE = 0x4000; @@ -61,8 +60,6 @@ void SysConf::Load() WARN_LOG(CORE, "No valid SYSCONF detected. Creating a new one."); InsertDefaultEntries(); } - - ApplySettingsFromMovie(); } bool SysConf::LoadFromFile(const std::string& file_name) @@ -257,17 +254,6 @@ void SysConf::RemoveEntry(const std::string& key) m_entries.end()); } -// Apply Wii settings from normal SYSCONF on Movie recording/playback -void SysConf::ApplySettingsFromMovie() -{ - if (!Movie::IsMovieActive()) - return; - - SetData("IPL.LNG", Entry::Type::Byte, Movie::GetLanguage()); - SetData("IPL.E60", Entry::Type::Byte, Movie::IsPAL60()); - SetData("IPL.PGS", Entry::Type::Byte, Movie::IsProgressive()); -} - void SysConf::InsertDefaultEntries() { AddEntry({Entry::Type::BigArray, "BT.DINF", std::vector(0x460 + 1)}); diff --git a/Source/Core/Common/SysConf.h b/Source/Core/Common/SysConf.h index 6b25dc058d..3306a6445b 100644 --- a/Source/Core/Common/SysConf.h +++ b/Source/Core/Common/SysConf.h @@ -84,7 +84,6 @@ public: } private: - void ApplySettingsFromMovie(); void InsertDefaultEntries(); bool LoadFromFile(const std::string& file_name); diff --git a/Source/Core/Core/Boot/Boot.cpp b/Source/Core/Core/Boot/Boot.cpp index 3b004eca78..a93ba7b577 100644 --- a/Source/Core/Core/Boot/Boot.cpp +++ b/Source/Core/Core/Boot/Boot.cpp @@ -20,6 +20,7 @@ #include "Common/CDUtils.h" #include "Common/CommonPaths.h" #include "Common/CommonTypes.h" +#include "Common/Config/Config.h" #include "Common/File.h" #include "Common/FileUtil.h" #include "Common/Logging/Log.h" @@ -29,6 +30,7 @@ #include "Core/Boot/DolReader.h" #include "Core/Boot/ElfReader.h" #include "Core/CommonTitles.h" +#include "Core/Config/SYSCONFSettings.h" #include "Core/ConfigManager.h" #include "Core/FifoPlayer/FifoPlayer.h" #include "Core/HLE/HLE.h" @@ -289,7 +291,8 @@ bool CBoot::BootUp(std::unique_ptr boot) g_symbolDB.Clear(); // PAL Wii uses NTSC framerate and linecount in 60Hz modes - VideoInterface::Preset(DiscIO::IsNTSC(config.m_region) || (config.bWii && config.bPAL60)); + VideoInterface::Preset(DiscIO::IsNTSC(config.m_region) || + (config.bWii && Config::Get(Config::SYSCONF_PAL60))); struct BootTitle { diff --git a/Source/Core/Core/BootManager.cpp b/Source/Core/Core/BootManager.cpp index d24ebfb652..3bdd517a5a 100644 --- a/Source/Core/Core/BootManager.cpp +++ b/Source/Core/Core/BootManager.cpp @@ -33,7 +33,10 @@ #include "Common/Config/Config.h" #include "Core/Boot/Boot.h" +#include "Core/Config/SYSCONFSettings.h" +#include "Core/ConfigLoaders/BaseConfigLoader.h" #include "Core/ConfigLoaders/GameConfigLoader.h" +#include "Core/ConfigLoaders/MovieConfigLoader.h" #include "Core/ConfigLoaders/NetPlayConfigLoader.h" #include "Core/ConfigManager.h" #include "Core/Core.h" @@ -83,12 +86,9 @@ private: bool bFastDiscSpeed; bool bDSPHLE; bool bHLE_BS2; - bool bProgressive; - bool bPAL60; int iSelectedLanguage; int iCPUCore; int Volume; - int m_wii_language; float m_EmulationSpeed; float m_OCFactor; bool m_OCEnable; @@ -116,8 +116,6 @@ void ConfigCache::SaveConfig(const SConfig& config) bFastDiscSpeed = config.bFastDiscSpeed; bDSPHLE = config.bDSPHLE; bHLE_BS2 = config.bHLE_BS2; - bProgressive = config.bProgressive; - bPAL60 = config.bPAL60; iSelectedLanguage = config.SelectedLanguage; iCPUCore = config.iCPUCore; Volume = config.m_Volume; @@ -125,7 +123,6 @@ void ConfigCache::SaveConfig(const SConfig& config) strBackend = config.m_strVideoBackend; sBackend = config.sBackend; m_strGPUDeterminismMode = config.m_strGPUDeterminismMode; - m_wii_language = config.m_wii_language; m_OCFactor = config.m_OCFactor; m_OCEnable = config.m_OCEnable; @@ -160,8 +157,6 @@ void ConfigCache::RestoreConfig(SConfig* config) config->bFastDiscSpeed = bFastDiscSpeed; config->bDSPHLE = bDSPHLE; config->bHLE_BS2 = bHLE_BS2; - config->bProgressive = bProgressive; - config->bPAL60 = bPAL60; config->SelectedLanguage = iSelectedLanguage; config->iCPUCore = iCPUCore; @@ -180,8 +175,6 @@ void ConfigCache::RestoreConfig(SConfig* config) WiimoteReal::ChangeWiimoteSource(i, iWiimoteSource[i]); } } - - config->m_wii_language = m_wii_language; } for (unsigned int i = 0; i < SerialInterface::MAX_SI_CHANNELS; ++i) @@ -263,8 +256,6 @@ bool BootCore(std::unique_ptr boot) core_section->Get("GFXBackend", &StartUp.m_strVideoBackend, StartUp.m_strVideoBackend); core_section->Get("CPUCore", &StartUp.iCPUCore, StartUp.iCPUCore); core_section->Get("HLE_BS2", &StartUp.bHLE_BS2, StartUp.bHLE_BS2); - core_section->Get("ProgressiveScan", &StartUp.bProgressive, StartUp.bProgressive); - core_section->Get("PAL60", &StartUp.bPAL60, StartUp.bPAL60); core_section->Get("GameCubeLanguage", &StartUp.SelectedLanguage, StartUp.SelectedLanguage); if (core_section->Get("EmulationSpeed", &StartUp.m_EmulationSpeed, StartUp.m_EmulationSpeed)) config_cache.bSetEmulationSpeed = true; @@ -293,10 +284,6 @@ bool BootCore(std::unique_ptr boot) // Wii settings if (StartUp.bWii) { - IniFile::Section* wii_section = game_ini.GetOrCreateSection("Wii"); - wii_section->Get("Widescreen", &StartUp.m_wii_aspect_ratio, !!StartUp.m_wii_aspect_ratio); - wii_section->Get("Language", &StartUp.m_wii_language, StartUp.m_wii_language); - int source; for (unsigned int i = 0; i < MAX_WIIMOTES; ++i) { @@ -325,11 +312,8 @@ bool BootCore(std::unique_ptr boot) // Movie settings if (Movie::IsPlayingInput() && Movie::IsConfigSaved()) { - Config::AddLayer(std::make_unique(Config::LayerType::Movie)); StartUp.bCPUThread = Movie::IsDualCore(); StartUp.bDSPHLE = Movie::IsDSPHLE(); - StartUp.bProgressive = Movie::IsProgressive(); - StartUp.bPAL60 = Movie::IsPAL60(); StartUp.bFastDiscSpeed = Movie::IsFastDiscSpeed(); StartUp.iCPUCore = Movie::GetCPUMode(); StartUp.bSyncGPU = Movie::IsSyncGPU(); @@ -360,8 +344,6 @@ bool BootCore(std::unique_ptr boot) StartUp.iCPUCore = g_NetPlaySettings.m_CPUcore; StartUp.SelectedLanguage = g_NetPlaySettings.m_SelectedLanguage; StartUp.bOverrideGCLanguage = g_NetPlaySettings.m_OverrideGCLanguage; - StartUp.bProgressive = g_NetPlaySettings.m_ProgressiveScan; - StartUp.bPAL60 = g_NetPlaySettings.m_PAL60; StartUp.m_DSPEnableJIT = g_NetPlaySettings.m_DSPEnableJIT; StartUp.m_OCEnable = g_NetPlaySettings.m_OCEnable; StartUp.m_OCFactor = g_NetPlaySettings.m_OCFactor; @@ -388,12 +370,11 @@ bool BootCore(std::unique_ptr boot) // Some NTSC Wii games such as Doc Louis's Punch-Out!! and // 1942 (Virtual Console) crash if the PAL60 option is enabled if (StartUp.bWii && ntsc) - { - StartUp.bPAL60 = false; - } + Config::SetCurrent(Config::SYSCONF_PAL60, false); + // Ensure any new settings are written to the SYSCONF if (StartUp.bWii) - StartUp.SaveSettingsToSysconf(); + ConfigLoaders::SaveToSYSCONF(Config::GetLayer(Config::LayerType::Meta)); const bool load_ipl = !StartUp.bWii && !StartUp.bHLE_BS2 && std::holds_alternative(boot->parameters); @@ -411,14 +392,41 @@ void Stop() RestoreConfig(); } +// SYSCONF can be modified during emulation by the user and internally, which makes it +// a bad idea to just always overwrite it with the settings from the base layer. +// +// Conversely, we also shouldn't just ignore any changes to SYSCONF, as it may cause +// temporary settings (from Movie, Netplay, game INIs, etc.) to stick around. +// +// To avoid inconveniences in most cases, we always restore only the overridden settings. +static void RestoreSYSCONF() +{ + // This layer contains the new SYSCONF settings (including any temporary settings). + auto layer = std::make_unique(ConfigLoaders::GenerateBaseConfigLoader()); + for (const auto& setting : Config::SYSCONF_SETTINGS) + { + std::visit( + [&](auto& info) { + // If this setting was overridden, then we copy the base layer value back to the SYSCONF. + // Otherwise we leave the new value in the SYSCONF. + if (Config::GetActiveLayerForConfig(info) != Config::LayerType::Base) + layer->Set(info, Config::GetBase(info)); + }, + setting.config_info); + } + // Save the SYSCONF. + layer->Save(); + Config::AddLayer(std::move(layer)); +} + void RestoreConfig() { + RestoreSYSCONF(); Config::ClearCurrentRunLayer(); Config::RemoveLayer(Config::LayerType::Movie); Config::RemoveLayer(Config::LayerType::Netplay); Config::RemoveLayer(Config::LayerType::GlobalGame); Config::RemoveLayer(Config::LayerType::LocalGame); - SConfig::GetInstance().LoadSettingsFromSysconf(); SConfig::GetInstance().ResetRunningGameMetadata(); config_cache.RestoreConfig(&SConfig::GetInstance()); } diff --git a/Source/Core/Core/CMakeLists.txt b/Source/Core/Core/CMakeLists.txt index 109cca19c3..572532ddda 100644 --- a/Source/Core/Core/CMakeLists.txt +++ b/Source/Core/Core/CMakeLists.txt @@ -27,6 +27,7 @@ set(SRCS Boot/ElfReader.cpp Config/GraphicsSettings.cpp Config/NetplaySettings.cpp + Config/SYSCONFSettings.cpp ConfigLoaders/BaseConfigLoader.cpp ConfigLoaders/GameConfigLoader.cpp ConfigLoaders/IsSettingSaveable.cpp diff --git a/Source/Core/Core/Config/SYSCONFSettings.cpp b/Source/Core/Core/Config/SYSCONFSettings.cpp new file mode 100644 index 0000000000..636c84e525 --- /dev/null +++ b/Source/Core/Core/Config/SYSCONFSettings.cpp @@ -0,0 +1,34 @@ +// Copyright 2017 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#include "Core/Config/SYSCONFSettings.h" + +namespace Config +{ +// SYSCONF.IPL + +const ConfigInfo SYSCONF_SCREENSAVER{{System::SYSCONF, "IPL", "SSV"}, false}; +const ConfigInfo SYSCONF_LANGUAGE{{System::SYSCONF, "IPL", "LNG"}, 0x01}; +const ConfigInfo SYSCONF_WIDESCREEN{{System::SYSCONF, "IPL", "AR"}, true}; +const ConfigInfo SYSCONF_PROGRESSIVE_SCAN{{System::SYSCONF, "IPL", "PGS"}, true}; +const ConfigInfo SYSCONF_PAL60{{System::SYSCONF, "IPL", "E60"}, 0x01}; + +// SYSCONF.BT + +const ConfigInfo SYSCONF_SENSOR_BAR_POSITION{{System::SYSCONF, "BT", "BAR"}, 0x01}; +const ConfigInfo SYSCONF_SENSOR_BAR_SENSITIVITY{{System::SYSCONF, "BT", "SENS"}, 0x03}; +const ConfigInfo SYSCONF_SPEAKER_VOLUME{{System::SYSCONF, "BT", "SPKV"}, 0x58}; +const ConfigInfo SYSCONF_WIIMOTE_MOTOR{{System::SYSCONF, "BT", "MOT"}, true}; + +const std::array SYSCONF_SETTINGS{ + {{SYSCONF_SCREENSAVER, SysConf::Entry::Type::Byte}, + {SYSCONF_LANGUAGE, SysConf::Entry::Type::Byte}, + {SYSCONF_WIDESCREEN, SysConf::Entry::Type::Byte}, + {SYSCONF_PROGRESSIVE_SCAN, SysConf::Entry::Type::Byte}, + {SYSCONF_PAL60, SysConf::Entry::Type::Byte}, + {SYSCONF_SENSOR_BAR_POSITION, SysConf::Entry::Type::Byte}, + {SYSCONF_SENSOR_BAR_SENSITIVITY, SysConf::Entry::Type::Long}, + {SYSCONF_SPEAKER_VOLUME, SysConf::Entry::Type::Byte}, + {SYSCONF_WIIMOTE_MOTOR, SysConf::Entry::Type::Byte}}}; +} // namespace Config diff --git a/Source/Core/Core/Config/SYSCONFSettings.h b/Source/Core/Core/Config/SYSCONFSettings.h new file mode 100644 index 0000000000..f4ade3ddf8 --- /dev/null +++ b/Source/Core/Core/Config/SYSCONFSettings.h @@ -0,0 +1,40 @@ +// Copyright 2017 Dolphin Emulator Project +// Licensed under GPLv2+ +// Refer to the license.txt file included. + +#pragma once + +#include +#include + +#include "Common/Config/Config.h" +#include "Common/SysConf.h" + +namespace Config +{ +// Note: some settings are actually u8s, but stored as u32 in the layer because of limitations. + +// SYSCONF.IPL + +extern const ConfigInfo SYSCONF_SCREENSAVER; +extern const ConfigInfo SYSCONF_LANGUAGE; +extern const ConfigInfo SYSCONF_WIDESCREEN; +extern const ConfigInfo SYSCONF_PROGRESSIVE_SCAN; +extern const ConfigInfo SYSCONF_PAL60; + +// SYSCONF.BT + +extern const ConfigInfo SYSCONF_SENSOR_BAR_POSITION; +extern const ConfigInfo SYSCONF_SENSOR_BAR_SENSITIVITY; +extern const ConfigInfo SYSCONF_SPEAKER_VOLUME; +extern const ConfigInfo SYSCONF_WIIMOTE_MOTOR; + +struct SYSCONFSetting +{ + std::variant, ConfigInfo> config_info; + SysConf::Entry::Type type; +}; + +extern const std::array SYSCONF_SETTINGS; + +} // namespace Config diff --git a/Source/Core/Core/ConfigLoaders/BaseConfigLoader.cpp b/Source/Core/Core/ConfigLoaders/BaseConfigLoader.cpp index 89850b49dd..8e1dce98d1 100644 --- a/Source/Core/Core/ConfigLoaders/BaseConfigLoader.cpp +++ b/Source/Core/Core/ConfigLoaders/BaseConfigLoader.cpp @@ -9,19 +9,59 @@ #include #include #include +#include +#include #include "Common/CommonTypes.h" #include "Common/Config/Config.h" #include "Common/FileUtil.h" #include "Common/IniFile.h" #include "Common/Logging/Log.h" +#include "Common/SysConf.h" -#include "Common/Config/Config.h" #include "Core/Config/GraphicsSettings.h" +#include "Core/Config/SYSCONFSettings.h" #include "Core/ConfigLoaders/IsSettingSaveable.h" +#include "Core/Core.h" +#include "Core/IOS/USB/Bluetooth/BTBase.h" namespace ConfigLoaders { +void SaveToSYSCONF(Config::Layer* layer) +{ + if (Core::IsRunning()) + return; + + SysConf sysconf{Common::FromWhichRoot::FROM_CONFIGURED_ROOT}; + + for (const Config::SYSCONFSetting& setting : Config::SYSCONF_SETTINGS) + { + std::visit( + [layer, &setting, &sysconf](auto& info) { + const std::string key = info.location.section + "." + info.location.key; + + if (setting.type == SysConf::Entry::Type::Long) + sysconf.SetData(key, setting.type, layer->Get(info)); + else if (setting.type == SysConf::Entry::Type::Byte) + sysconf.SetData(key, setting.type, static_cast(layer->Get(info))); + }, + setting.config_info); + } + + // Disable WiiConnect24's standby mode. If it is enabled, it prevents us from receiving + // shutdown commands in the State Transition Manager (STM). + // TODO: remove this if and once Dolphin supports WC24 standby mode. + SysConf::Entry* idle_entry = sysconf.GetOrAddEntry("IPL.IDL", SysConf::Entry::Type::SmallArray); + if (idle_entry->bytes.empty()) + idle_entry->bytes = std::vector(2); + else + idle_entry->bytes[0] = 0; + NOTICE_LOG(CORE, "Disabling WC24 'standby' (shutdown to idle) to avoid hanging on shutdown"); + + IOS::HLE::RestoreBTInfoSection(&sysconf); + sysconf.Save(); +} + const std::map system_to_ini = { {Config::System::Main, F_DOLPHINCONFIG_IDX}, {Config::System::GCPad, F_GCPADCONFIG_IDX}, @@ -34,12 +74,13 @@ const std::map system_to_ini = { }; // INI layer configuration loader -class INIBaseConfigLayerLoader final : public Config::ConfigLayerLoader +class BaseConfigLayerLoader final : public Config::ConfigLayerLoader { public: - INIBaseConfigLayerLoader() : ConfigLayerLoader(Config::LayerType::Base) {} + BaseConfigLayerLoader() : ConfigLayerLoader(Config::LayerType::Base) {} void Load(Config::Layer* config_layer) override { + LoadFromSYSCONF(config_layer); for (const auto& system : system_to_ini) { IniFile ini; @@ -76,6 +117,12 @@ public: const Config::LayerMap& sections = config_layer->GetLayerMap(); for (const auto& system : sections) { + if (system.first == Config::System::SYSCONF) + { + SaveToSYSCONF(config_layer); + continue; + } + auto mapping = system_to_ini.find(system.first); if (mapping == system_to_ini.end()) { @@ -116,11 +163,35 @@ public: ini.Save(File::GetUserPath(mapping->second)); } } + +private: + void LoadFromSYSCONF(Config::Layer* layer) + { + if (Core::IsRunning()) + return; + + SysConf sysconf{Common::FromWhichRoot::FROM_CONFIGURED_ROOT}; + for (const Config::SYSCONFSetting& setting : Config::SYSCONF_SETTINGS) + { + std::visit( + [&](auto& info) { + const std::string key = info.location.section + "." + info.location.key; + auto* section = + layer->GetOrCreateSection(Config::System::SYSCONF, info.location.section); + + if (setting.type == SysConf::Entry::Type::Long) + section->Set(info.location.key, sysconf.GetData(key, info.default_value)); + else if (setting.type == SysConf::Entry::Type::Byte) + section->Set(info.location.key, sysconf.GetData(key, info.default_value)); + }, + setting.config_info); + } + } }; // Loader generation std::unique_ptr GenerateBaseConfigLoader() { - return std::make_unique(); + return std::make_unique(); } } diff --git a/Source/Core/Core/ConfigLoaders/BaseConfigLoader.h b/Source/Core/Core/ConfigLoaders/BaseConfigLoader.h index 4356c5ad47..2ae00c6aff 100644 --- a/Source/Core/Core/ConfigLoaders/BaseConfigLoader.h +++ b/Source/Core/Core/ConfigLoaders/BaseConfigLoader.h @@ -9,9 +9,11 @@ namespace Config { class ConfigLayerLoader; +class Layer; } namespace ConfigLoaders { +void SaveToSYSCONF(Config::Layer* layer); std::unique_ptr GenerateBaseConfigLoader(); } diff --git a/Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp b/Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp index eb36f761f2..89a66be96f 100644 --- a/Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp +++ b/Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp @@ -25,6 +25,7 @@ #include "Common/Config/Config.h" #include "Core/Config/GraphicsSettings.h" +#include "Core/Config/SYSCONFSettings.h" #include "Core/ConfigLoaders/IsSettingSaveable.h" namespace ConfigLoaders @@ -118,6 +119,11 @@ static const INIToLocationMap& GetINIToLocationMap() {{"Video", "PH_ZNear"}, {Config::GFX_PROJECTION_HACK_ZNEAR.location}}, {{"Video", "PH_ZFar"}, {Config::GFX_PROJECTION_HACK_ZFAR.location}}, {{"Video", "PerfQueriesEnable"}, {Config::GFX_PERF_QUERIES_ENABLE.location}}, + + {{"Core", "ProgressiveScan"}, {Config::SYSCONF_PROGRESSIVE_SCAN.location}}, + {{"Core", "PAL60"}, {Config::SYSCONF_PAL60.location}}, + {{"Wii", "Widescreen"}, {Config::SYSCONF_WIDESCREEN.location}}, + {{"Wii", "Language"}, {Config::SYSCONF_LANGUAGE.location}}, }; return ini_to_location; } diff --git a/Source/Core/Core/ConfigLoaders/MovieConfigLoader.cpp b/Source/Core/Core/ConfigLoaders/MovieConfigLoader.cpp index 5ce90d1673..a63f961d04 100644 --- a/Source/Core/Core/ConfigLoaders/MovieConfigLoader.cpp +++ b/Source/Core/Core/ConfigLoaders/MovieConfigLoader.cpp @@ -13,6 +13,7 @@ #include "Common/Config/Config.h" #include "Common/FileUtil.h" +#include "Core/Config/SYSCONFSettings.h" #include "Core/Movie.h" namespace ConfigLoaders @@ -22,7 +23,6 @@ namespace ConfigLoaders void MovieConfigLayerLoader::Load(Config::Layer* config_layer) { Config::Section* core = config_layer->GetOrCreateSection(Config::System::Main, "Core"); - Config::Section* display = config_layer->GetOrCreateSection(Config::System::Main, "Display"); Config::Section* video_settings = Config::GetOrCreateSection(Config::System::GFX, "Settings"); Config::Section* video_hacks = Config::GetOrCreateSection(Config::System::GFX, "Hacks"); @@ -33,8 +33,11 @@ void MovieConfigLayerLoader::Load(Config::Layer* config_layer) core->Set("CPUCore", m_header->CPUCore); core->Set("SyncGPU", m_header->bSyncGPU); core->Set("GFXBackend", std::string(reinterpret_cast(m_header->videoBackend))); - display->Set("ProgressiveScan", m_header->bProgressive); - display->Set("PAL60", m_header->bPAL60); + + config_layer->Set(Config::SYSCONF_PROGRESSIVE_SCAN, m_header->bProgressive); + config_layer->Set(Config::SYSCONF_PAL60, m_header->bPAL60); + if (m_header->bWii) + config_layer->Set(Config::SYSCONF_LANGUAGE, static_cast(m_header->language)); video_settings->Set("UseXFB", m_header->bUseXFB); video_settings->Set("UseRealXFB", m_header->bUseRealXFB); @@ -46,7 +49,6 @@ void MovieConfigLayerLoader::Load(Config::Layer* config_layer) void MovieConfigLayerLoader::Save(Config::Layer* config_layer) { Config::Section* core = config_layer->GetOrCreateSection(Config::System::Main, "Core"); - Config::Section* display = config_layer->GetOrCreateSection(Config::System::Main, "Display"); Config::Section* video_settings = Config::GetOrCreateSection(Config::System::GFX, "Settings"); Config::Section* video_hacks = Config::GetOrCreateSection(Config::System::GFX, "Hacks"); @@ -60,8 +62,10 @@ void MovieConfigLayerLoader::Save(Config::Layer* config_layer) core->Get("CPUCore", &cpu_core); core->Get("SyncGPU", &m_header->bSyncGPU); core->Get("GFXBackend", &video_backend); - display->Get("ProgressiveScan", &m_header->bProgressive); - display->Get("PAL60", &m_header->bPAL60); + m_header->bProgressive = config_layer->Get(Config::SYSCONF_PROGRESSIVE_SCAN); + m_header->bPAL60 = config_layer->Get(Config::SYSCONF_PAL60); + if (m_header->bWii) + m_header->language = config_layer->Get(Config::SYSCONF_LANGUAGE); video_settings->Get("UseXFB", &m_header->bUseXFB); video_settings->Get("UseRealXFB", &m_header->bUseRealXFB); diff --git a/Source/Core/Core/ConfigLoaders/NetPlayConfigLoader.cpp b/Source/Core/Core/ConfigLoaders/NetPlayConfigLoader.cpp index f64929239f..b9b2085feb 100644 --- a/Source/Core/Core/ConfigLoaders/NetPlayConfigLoader.cpp +++ b/Source/Core/Core/ConfigLoaders/NetPlayConfigLoader.cpp @@ -7,6 +7,7 @@ #include #include "Common/Config/Config.h" +#include "Core/Config/SYSCONFSettings.h" #include "Core/NetPlayProto.h" namespace ConfigLoaders @@ -23,7 +24,6 @@ public: { Config::Section* core = config_layer->GetOrCreateSection(Config::System::Main, "Core"); Config::Section* dsp = config_layer->GetOrCreateSection(Config::System::Main, "DSP"); - Config::Section* display = config_layer->GetOrCreateSection(Config::System::Main, "Display"); core->Set("CPUThread", m_settings.m_CPUthread); core->Set("CPUCore", m_settings.m_CPUcore); @@ -38,8 +38,8 @@ public: dsp->Set("EnableJIT", m_settings.m_DSPEnableJIT); - display->Set("ProgressiveScan", m_settings.m_ProgressiveScan); - display->Set("PAL60", m_settings.m_PAL60); + config_layer->Set(Config::SYSCONF_PROGRESSIVE_SCAN, m_settings.m_ProgressiveScan); + config_layer->Set(Config::SYSCONF_PAL60, m_settings.m_PAL60); } void Save(Config::Layer* config_layer) override diff --git a/Source/Core/Core/ConfigManager.cpp b/Source/Core/Core/ConfigManager.cpp index cda249379c..7d44631965 100644 --- a/Source/Core/Core/ConfigManager.cpp +++ b/Source/Core/Core/ConfigManager.cpp @@ -23,10 +23,10 @@ #include "Common/MsgHandler.h" #include "Common/NandPaths.h" #include "Common/StringUtil.h" -#include "Common/SysConf.h" #include "Core/Analytics.h" #include "Core/Boot/Boot.h" +#include "Core/Config/SYSCONFSettings.h" #include "Core/ConfigLoaders/GameConfigLoader.h" #include "Core/Core.h" #include "Core/FifoPlayer/FifoDataFile.h" @@ -34,7 +34,6 @@ #include "Core/HW/DVD/DVDInterface.h" #include "Core/HW/SI/SI.h" #include "Core/IOS/ES/Formats.h" -#include "Core/IOS/USB/Bluetooth/BTBase.h" #include "Core/PatchEngine.h" #include "Core/PowerPC/PPCSymbolDB.h" #include "Core/PowerPC/PowerPC.h" @@ -52,7 +51,6 @@ SConfig::SConfig() LoadDefaults(); // Make sure we have log manager LoadSettings(); - LoadSettingsFromSysconf(); } void SConfig::Init() @@ -69,7 +67,6 @@ void SConfig::Shutdown() SConfig::~SConfig() { SaveSettings(); - SaveSettingsToSysconf(); } void SConfig::SaveSettings() @@ -190,8 +187,6 @@ void SConfig::SaveDisplaySettings(IniFile& ini) display->Set("RenderWindowHeight", iRenderWindowHeight); display->Set("RenderWindowAutoSize", bRenderWindowAutoSize); display->Set("KeepWindowOnTop", bKeepWindowOnTop); - display->Set("ProgressiveScan", bProgressive); - display->Set("PAL60", bPAL60); display->Set("DisableScreenSaver", bDisableScreenSaver); display->Set("ForceNTSCJ", bForceNTSCJ); } @@ -374,36 +369,6 @@ void SConfig::SaveUSBPassthroughSettings(IniFile& ini) section->Set("Devices", devices_string); } -void SConfig::SaveSettingsToSysconf() -{ - SysConf sysconf{Common::FromWhichRoot::FROM_CONFIGURED_ROOT}; - - sysconf.SetData("IPL.SSV", SysConf::Entry::Type::Byte, m_wii_screensaver); - sysconf.SetData("IPL.LNG", SysConf::Entry::Type::Byte, m_wii_language); - - sysconf.SetData("IPL.AR", SysConf::Entry::Type::Byte, m_wii_aspect_ratio); - sysconf.SetData("BT.BAR", SysConf::Entry::Type::Byte, m_sensor_bar_position); - sysconf.SetData("BT.SENS", SysConf::Entry::Type::Long, m_sensor_bar_sensitivity); - sysconf.SetData("BT.SPKV", SysConf::Entry::Type::Byte, m_speaker_volume); - sysconf.SetData("BT.MOT", SysConf::Entry::Type::Byte, m_wiimote_motor); - sysconf.SetData("IPL.PGS", SysConf::Entry::Type::Byte, bProgressive); - sysconf.SetData("IPL.E60", SysConf::Entry::Type::Byte, bPAL60); - - // Disable WiiConnect24's standby mode. If it is enabled, it prevents us from receiving - // shutdown commands in the State Transition Manager (STM). - // TODO: remove this if and once Dolphin supports WC24 standby mode. - SysConf::Entry* idle_entry = sysconf.GetOrAddEntry("IPL.IDL", SysConf::Entry::Type::SmallArray); - if (idle_entry->bytes.empty()) - idle_entry->bytes = std::vector(2); - else - idle_entry->bytes[0] = 0; - NOTICE_LOG(COMMON, "Disabling WC24 'standby' (shutdown to idle) to avoid hanging on shutdown"); - - IOS::HLE::RestoreBTInfoSection(&sysconf); - - sysconf.Save(); -} - void SConfig::LoadSettings() { Config::Load(); @@ -502,8 +467,6 @@ void SConfig::LoadDisplaySettings(IniFile& ini) display->Get("RenderWindowHeight", &iRenderWindowHeight, 480); display->Get("RenderWindowAutoSize", &bRenderWindowAutoSize, false); display->Get("KeepWindowOnTop", &bKeepWindowOnTop, false); - display->Get("ProgressiveScan", &bProgressive, false); - display->Get("PAL60", &bPAL60, true); display->Get("DisableScreenSaver", &bDisableScreenSaver, true); display->Get("ForceNTSCJ", &bForceNTSCJ, false); } @@ -708,21 +671,6 @@ void SConfig::LoadUSBPassthroughSettings(IniFile& ini) } } -void SConfig::LoadSettingsFromSysconf() -{ - SysConf sysconf{Common::FromWhichRoot::FROM_CONFIGURED_ROOT}; - - m_wii_screensaver = sysconf.GetData("IPL.SSV", m_wii_screensaver); - m_wii_language = sysconf.GetData("IPL.LNG", m_wii_language); - m_wii_aspect_ratio = sysconf.GetData("IPL.AR", m_wii_aspect_ratio); - m_sensor_bar_position = sysconf.GetData("BT.BAR", m_sensor_bar_position); - m_sensor_bar_sensitivity = sysconf.GetData("BT.SENS", m_sensor_bar_sensitivity); - m_speaker_volume = sysconf.GetData("BT.SPKV", m_speaker_volume); - m_wiimote_motor = sysconf.GetData("BT.MOT", m_wiimote_motor) != 0; - bProgressive = sysconf.GetData("IPL.PGS", bProgressive) != 0; - bPAL60 = sysconf.GetData("IPL.E60", bPAL60) != 0; -} - void SConfig::ResetRunningGameMetadata() { SetRunningGameMetadata("00000000", 0, 0, Core::TitleDatabase::TitleType::Other); @@ -1060,7 +1008,7 @@ DiscIO::Language SConfig::GetCurrentLanguage(bool wii) const { int language_value; if (wii) - language_value = SConfig::GetInstance().m_wii_language; + language_value = Config::Get(Config::SYSCONF_LANGUAGE); else language_value = SConfig::GetInstance().SelectedLanguage + 1; DiscIO::Language language = static_cast(language_value); diff --git a/Source/Core/Core/ConfigManager.h b/Source/Core/Core/ConfigManager.h index d7b3d1c77d..edaf5b3a5e 100644 --- a/Source/Core/Core/ConfigManager.h +++ b/Source/Core/Core/ConfigManager.h @@ -147,7 +147,6 @@ struct SConfig : NonCopyable int iRenderWindowHeight = -1; bool bRenderWindowAutoSize = false, bKeepWindowOnTop = false; bool bFullscreen = false, bRenderToMain = false; - bool bProgressive = false, bPAL60 = false; bool bDisableScreenSaver = false; int iPosX, iPosY, iWidth, iHeight; @@ -169,15 +168,6 @@ struct SConfig : NonCopyable bool m_enable_signature_checks = true; - // SYSCONF settings - int m_sensor_bar_position = 0x01; - int m_sensor_bar_sensitivity = 0x03; - int m_speaker_volume = 0x58; - bool m_wiimote_motor = true; - int m_wii_language = 0x01; - int m_wii_aspect_ratio = 0x01; - int m_wii_screensaver = 0x00; - // Fifo Player related settings bool bLoopFifoReplay = true; @@ -334,9 +324,6 @@ struct SConfig : NonCopyable // Load settings void LoadSettings(); - void LoadSettingsFromSysconf(); - void SaveSettingsToSysconf(); - // Return the permanent and somewhat globally used instance of this struct static SConfig& GetInstance() { return (*m_Instance); } static void Init(); diff --git a/Source/Core/Core/Core.vcxproj b/Source/Core/Core/Core.vcxproj index b24a48ef2f..4aab68e3ff 100644 --- a/Source/Core/Core/Core.vcxproj +++ b/Source/Core/Core/Core.vcxproj @@ -47,6 +47,7 @@ + @@ -303,6 +304,7 @@ + @@ -580,4 +582,4 @@ - \ No newline at end of file + diff --git a/Source/Core/Core/Core.vcxproj.filters b/Source/Core/Core/Core.vcxproj.filters index 6839621c7d..12eb5c1c19 100644 --- a/Source/Core/Core/Core.vcxproj.filters +++ b/Source/Core/Core/Core.vcxproj.filters @@ -877,6 +877,9 @@ Config + + Config + IOS\Network\NCD @@ -1529,6 +1532,9 @@ Config + + Config + IOS\Network\NCD diff --git a/Source/Core/Core/HW/VideoInterface.cpp b/Source/Core/Core/HW/VideoInterface.cpp index b0135c28db..6100c44df7 100644 --- a/Source/Core/Core/HW/VideoInterface.cpp +++ b/Source/Core/Core/HW/VideoInterface.cpp @@ -10,9 +10,11 @@ #include "Common/ChunkFile.h" #include "Common/CommonTypes.h" +#include "Common/Config/Config.h" #include "Common/Logging/Log.h" #include "Common/MathUtil.h" +#include "Core/Config/SYSCONFSettings.h" #include "Core/ConfigManager.h" #include "Core/Core.h" #include "Core/CoreTiming.h" @@ -179,7 +181,7 @@ void Preset(bool _bNTSC) m_Clock = DiscIO::IsNTSC(region); // Say component cable is plugged - m_DTVStatus.component_plugged = SConfig::GetInstance().bProgressive; + m_DTVStatus.component_plugged = Config::Get(Config::SYSCONF_PROGRESSIVE_SCAN); m_DTVStatus.ntsc_j = SConfig::GetInstance().bForceNTSCJ || region == DiscIO::Region::NTSC_J; m_FBWidth.Hex = 0; diff --git a/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp b/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp index 3b50522f59..c34db23c1e 100644 --- a/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp +++ b/Source/Core/Core/HW/WiimoteEmu/WiimoteEmu.cpp @@ -12,9 +12,11 @@ #include "Common/ChunkFile.h" #include "Common/CommonTypes.h" +#include "Common/Config/Config.h" #include "Common/MathUtil.h" #include "Common/MsgHandler.h" +#include "Core/Config/SYSCONFSettings.h" #include "Core/ConfigManager.h" #include "Core/Core.h" #include "Core/HW/Wiimote.h" @@ -328,7 +330,7 @@ Wiimote::Wiimote(const unsigned int index) : m_index(index), ir_sin(0), ir_cos(1 m_hotkeys->AddInput(_trans("Upright Hold"), false); // TODO: This value should probably be re-read if SYSCONF gets changed - m_sensor_bar_on_top = SConfig::GetInstance().m_sensor_bar_position != 0; + m_sensor_bar_on_top = Config::Get(Config::SYSCONF_SENSOR_BAR_POSITION) != 0; // --- reset eeprom/register/values to default --- Reset(); diff --git a/Source/Core/Core/Movie.cpp b/Source/Core/Core/Movie.cpp index d793d908d5..96a179c93f 100644 --- a/Source/Core/Core/Movie.cpp +++ b/Source/Core/Core/Movie.cpp @@ -21,6 +21,7 @@ #include "Common/Assert.h" #include "Common/ChunkFile.h" #include "Common/CommonPaths.h" +#include "Common/Config/Config.h" #include "Common/File.h" #include "Common/FileUtil.h" #include "Common/Hash.h" @@ -29,6 +30,8 @@ #include "Common/Timer.h" #include "Core/Boot/Boot.h" +#include "Core/Config/SYSCONFSettings.h" +#include "Core/ConfigLoaders/MovieConfigLoader.h" #include "Core/ConfigManager.h" #include "Core/Core.h" #include "Core/CoreTiming.h" @@ -75,7 +78,6 @@ static u64 s_currentInputCount = 0, s_totalInputCount = 0; // just stats static u64 s_totalTickCount = 0, s_tickCountAtLastInput = 0; // just stats static u64 s_recordingStartTime; // seconds since 1970 that recording started static bool s_bSaveConfig = false, s_bDualCore = false; -static bool s_bProgressive = false, s_bPAL60 = false; static bool s_bDSPHLE = false, s_bFastDiscSpeed = false; static bool s_bSyncGPU = false, s_bNetPlay = false; static std::string s_videoBackend = "unknown"; @@ -423,16 +425,6 @@ bool IsDualCore() return s_bDualCore; } -bool IsProgressive() -{ - return s_bProgressive; -} - -bool IsPAL60() -{ - return s_bPAL60; -} - bool IsDSPHLE() { return s_bDSPHLE; @@ -900,9 +892,8 @@ void ReadHeader() if (tmpHeader.bSaveConfig) { s_bSaveConfig = true; + Config::AddLayer(ConfigLoaders::GenerateMovieConfigLoader(&tmpHeader)); s_bDualCore = tmpHeader.bDualCore; - s_bProgressive = tmpHeader.bProgressive; - s_bPAL60 = tmpHeader.bPAL60; s_bDSPHLE = tmpHeader.bDSPHLE; s_bFastDiscSpeed = tmpHeader.bFastDiscSpeed; s_iCPUCore = tmpHeader.CPUCore; @@ -1378,10 +1369,12 @@ void SaveRecording(const std::string& filename) header.recordingStartTime = s_recordingStartTime; header.bSaveConfig = true; + auto* movie_layer = Config::GetLayer(Config::LayerType::Movie); + auto* loader = static_cast(movie_layer->GetLoader()); + loader->ChangeDTMHeader(&header); + movie_layer->Save(); header.bSkipIdle = true; header.bDualCore = s_bDualCore; - header.bProgressive = s_bProgressive; - header.bPAL60 = s_bPAL60; header.bDSPHLE = s_bDSPHLE; header.bFastDiscSpeed = s_bFastDiscSpeed; strncpy((char*)header.videoBackend, s_videoBackend.c_str(), ArraySize(header.videoBackend)); @@ -1465,8 +1458,6 @@ void GetSettings() { s_bSaveConfig = true; s_bDualCore = SConfig::GetInstance().bCPUThread; - s_bProgressive = SConfig::GetInstance().bProgressive; - s_bPAL60 = SConfig::GetInstance().bPAL60; s_bDSPHLE = SConfig::GetInstance().bDSPHLE; s_bFastDiscSpeed = SConfig::GetInstance().bFastDiscSpeed; s_videoBackend = g_video_backend->GetName(); @@ -1478,7 +1469,7 @@ void GetSettings() u64 title_id = SConfig::GetInstance().GetTitleID(); s_bClearSave = !File::Exists(Common::GetTitleDataPath(title_id, Common::FROM_SESSION_ROOT) + "banner.bin"); - s_language = SConfig::GetInstance().m_wii_language; + s_language = Config::Get(Config::SYSCONF_LANGUAGE); } else { diff --git a/Source/Core/Core/Movie.h b/Source/Core/Core/Movie.h index d56e61eaad..e4feee4861 100644 --- a/Source/Core/Core/Movie.h +++ b/Source/Core/Core/Movie.h @@ -138,8 +138,6 @@ void SetReset(bool reset); bool IsConfigSaved(); bool IsDualCore(); -bool IsProgressive(); -bool IsPAL60(); bool IsDSPHLE(); bool IsFastDiscSpeed(); int GetCPUMode(); diff --git a/Source/Core/DolphinQt2/NetPlay/NetPlayDialog.cpp b/Source/Core/DolphinQt2/NetPlay/NetPlayDialog.cpp index aeee5f9b4f..fffd25685a 100644 --- a/Source/Core/DolphinQt2/NetPlay/NetPlayDialog.cpp +++ b/Source/Core/DolphinQt2/NetPlay/NetPlayDialog.cpp @@ -23,7 +23,9 @@ #include #include "Common/CommonPaths.h" +#include "Common/Config/Config.h" #include "Common/TraversalClient.h" +#include "Core/Config/SYSCONFSettings.h" #include "Core/ConfigManager.h" #include "Core/Core.h" #include "Core/NetPlayServer.h" @@ -224,8 +226,8 @@ void NetPlayDialog::OnStart() settings.m_EnableCheats = instance.bEnableCheats; settings.m_SelectedLanguage = instance.SelectedLanguage; settings.m_OverrideGCLanguage = instance.bOverrideGCLanguage; - settings.m_ProgressiveScan = instance.bProgressive; - settings.m_PAL60 = instance.bPAL60; + settings.m_ProgressiveScan = Config::Get(Config::SYSCONF_PROGRESSIVE_SCAN); + settings.m_PAL60 = Config::Get(Config::SYSCONF_PAL60); settings.m_DSPHLE = instance.bDSPHLE; settings.m_DSPEnableJIT = instance.m_DSPEnableJIT; settings.m_WriteToMemcard = m_save_sd_box->isChecked(); diff --git a/Source/Core/DolphinWX/Config/WiiConfigPane.cpp b/Source/Core/DolphinWX/Config/WiiConfigPane.cpp index d91d4875f3..b540d3c57a 100644 --- a/Source/Core/DolphinWX/Config/WiiConfigPane.cpp +++ b/Source/Core/DolphinWX/Config/WiiConfigPane.cpp @@ -11,6 +11,8 @@ #include #include +#include "Common/Config/Config.h" +#include "Core/Config/SYSCONFSettings.h" #include "Core/ConfigManager.h" #include "Core/Core.h" #include "Core/IOS/IOS.h" @@ -174,10 +176,10 @@ void WiiConfigPane::InitializeGUI() void WiiConfigPane::LoadGUIValues() { - m_screensaver_checkbox->SetValue(!!SConfig::GetInstance().m_wii_screensaver); - m_pal60_mode_checkbox->SetValue(SConfig::GetInstance().bPAL60); - m_aspect_ratio_choice->SetSelection(SConfig::GetInstance().m_wii_aspect_ratio); - m_system_language_choice->SetSelection(SConfig::GetInstance().m_wii_language); + m_screensaver_checkbox->SetValue(Config::Get(Config::SYSCONF_SCREENSAVER)); + m_pal60_mode_checkbox->SetValue(Config::Get(Config::SYSCONF_PAL60)); + m_aspect_ratio_choice->SetSelection(Config::Get(Config::SYSCONF_WIDESCREEN)); + m_system_language_choice->SetSelection(Config::Get(Config::SYSCONF_LANGUAGE)); m_sd_card_checkbox->SetValue(SConfig::GetInstance().m_WiiSDCard); m_connect_keyboard_checkbox->SetValue(SConfig::GetInstance().m_WiiKeyboard); @@ -185,10 +187,10 @@ void WiiConfigPane::LoadGUIValues() PopulateUSBPassthroughListbox(); m_bt_sensor_bar_pos->SetSelection( - TranslateSensorBarPosition(SConfig::GetInstance().m_sensor_bar_position)); - m_bt_sensor_bar_sens->SetValue(SConfig::GetInstance().m_sensor_bar_sensitivity); - m_bt_speaker_volume->SetValue(SConfig::GetInstance().m_speaker_volume); - m_bt_wiimote_motor->SetValue(SConfig::GetInstance().m_wiimote_motor); + TranslateSensorBarPosition(Config::Get(Config::SYSCONF_SENSOR_BAR_POSITION))); + m_bt_sensor_bar_sens->SetValue(Config::Get(Config::SYSCONF_SENSOR_BAR_SENSITIVITY)); + m_bt_speaker_volume->SetValue(Config::Get(Config::SYSCONF_SPEAKER_VOLUME)); + m_bt_wiimote_motor->SetValue(Config::Get(Config::SYSCONF_WIIMOTE_MOTOR)); } void WiiConfigPane::PopulateUSBPassthroughListbox() @@ -268,12 +270,12 @@ void WiiConfigPane::OnUSBWhitelistRemoveButtonUpdate(wxUpdateUIEvent& event) void WiiConfigPane::OnScreenSaverCheckBoxChanged(wxCommandEvent& event) { - SConfig::GetInstance().m_wii_screensaver = m_screensaver_checkbox->IsChecked(); + Config::SetBase(Config::SYSCONF_SCREENSAVER, m_screensaver_checkbox->IsChecked()); } void WiiConfigPane::OnPAL60CheckBoxChanged(wxCommandEvent& event) { - SConfig::GetInstance().bPAL60 = m_pal60_mode_checkbox->IsChecked(); + Config::SetBase(Config::SYSCONF_PAL60, m_pal60_mode_checkbox->IsChecked()); } void WiiConfigPane::OnSDCardCheckBoxChanged(wxCommandEvent& event) @@ -291,30 +293,32 @@ void WiiConfigPane::OnConnectKeyboardCheckBoxChanged(wxCommandEvent& event) void WiiConfigPane::OnSystemLanguageChoiceChanged(wxCommandEvent& event) { - SConfig::GetInstance().m_wii_language = m_system_language_choice->GetSelection(); + Config::SetBase(Config::SYSCONF_LANGUAGE, + static_cast(m_system_language_choice->GetSelection())); } void WiiConfigPane::OnAspectRatioChoiceChanged(wxCommandEvent& event) { - SConfig::GetInstance().m_wii_aspect_ratio = m_aspect_ratio_choice->GetSelection(); + Config::SetBase(Config::SYSCONF_WIDESCREEN, m_aspect_ratio_choice->GetSelection() == 1); } void WiiConfigPane::OnSensorBarPosChanged(wxCommandEvent& event) { - SConfig::GetInstance().m_sensor_bar_position = TranslateSensorBarPosition(event.GetInt()); + Config::SetBase(Config::SYSCONF_SENSOR_BAR_POSITION, + static_cast(TranslateSensorBarPosition(event.GetInt()))); } void WiiConfigPane::OnSensorBarSensChanged(wxCommandEvent& event) { - SConfig::GetInstance().m_sensor_bar_sensitivity = event.GetInt(); + Config::SetBase(Config::SYSCONF_SENSOR_BAR_SENSITIVITY, static_cast(event.GetInt())); } void WiiConfigPane::OnSpeakerVolumeChanged(wxCommandEvent& event) { - SConfig::GetInstance().m_speaker_volume = event.GetInt(); + Config::SetBase(Config::SYSCONF_SPEAKER_VOLUME, static_cast(event.GetInt())); } void WiiConfigPane::OnWiimoteMotorChanged(wxCommandEvent& event) { - SConfig::GetInstance().m_wiimote_motor = event.IsChecked(); + Config::SetBase(Config::SYSCONF_WIIMOTE_MOTOR, event.IsChecked()); } diff --git a/Source/Core/DolphinWX/NetPlay/NetWindow.cpp b/Source/Core/DolphinWX/NetPlay/NetWindow.cpp index dad161cba7..e139abbebc 100644 --- a/Source/Core/DolphinWX/NetPlay/NetWindow.cpp +++ b/Source/Core/DolphinWX/NetPlay/NetWindow.cpp @@ -32,11 +32,13 @@ #include "Common/CommonPaths.h" #include "Common/CommonTypes.h" +#include "Common/Config/Config.h" #include "Common/FifoQueue.h" #include "Common/FileUtil.h" #include "Common/MsgHandler.h" #include "Common/StringUtil.h" +#include "Core/Config/SYSCONFSettings.h" #include "Core/ConfigManager.h" #include "Core/HW/EXI/EXI_Device.h" #include "Core/NetPlayClient.h" @@ -316,8 +318,8 @@ void NetPlayDialog::GetNetSettings(NetSettings& settings) settings.m_EnableCheats = instance.bEnableCheats; settings.m_SelectedLanguage = instance.SelectedLanguage; settings.m_OverrideGCLanguage = instance.bOverrideGCLanguage; - settings.m_ProgressiveScan = instance.bProgressive; - settings.m_PAL60 = instance.bPAL60; + settings.m_ProgressiveScan = Config::Get(Config::SYSCONF_PROGRESSIVE_SCAN); + settings.m_PAL60 = Config::Get(Config::SYSCONF_PAL60); settings.m_DSPHLE = instance.bDSPHLE; settings.m_DSPEnableJIT = instance.m_DSPEnableJIT; settings.m_WriteToMemcard = m_memcard_write->GetValue(); diff --git a/Source/Core/DolphinWX/VideoConfigDiag.cpp b/Source/Core/DolphinWX/VideoConfigDiag.cpp index 54402a5af5..e9374e0cd7 100644 --- a/Source/Core/DolphinWX/VideoConfigDiag.cpp +++ b/Source/Core/DolphinWX/VideoConfigDiag.cpp @@ -25,6 +25,7 @@ #include "Common/Assert.h" #include "Common/FileUtil.h" #include "Common/SysConf.h" +#include "Core/Config/SYSCONFSettings.h" #include "Core/ConfigManager.h" #include "Core/Core.h" #include "DolphinWX/DolphinSlider.h" @@ -917,7 +918,8 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string& title) progressive_scan_checkbox->Bind(wxEVT_CHECKBOX, &VideoConfigDiag::Event_ProgressiveScan, this); - progressive_scan_checkbox->SetValue(SConfig::GetInstance().bProgressive); + // TODO: split this into two different settings, one for Wii and one for GC? + progressive_scan_checkbox->SetValue(Config::Get(Config::SYSCONF_PROGRESSIVE_SCAN)); szr_misc->Add(progressive_scan_checkbox); } @@ -1027,7 +1029,7 @@ void VideoConfigDiag::Event_DisplayResolution(wxCommandEvent& ev) void VideoConfigDiag::Event_ProgressiveScan(wxCommandEvent& ev) { - SConfig::GetInstance().bProgressive = ev.IsChecked(); + Config::SetBase(Config::SYSCONF_PROGRESSIVE_SCAN, ev.IsChecked()); ev.Skip(); } diff --git a/Source/Core/VideoCommon/RenderBase.cpp b/Source/Core/VideoCommon/RenderBase.cpp index 36297ed53e..f1b3093fc5 100644 --- a/Source/Core/VideoCommon/RenderBase.cpp +++ b/Source/Core/VideoCommon/RenderBase.cpp @@ -23,6 +23,7 @@ #include "Common/Assert.h" #include "Common/CommonTypes.h" +#include "Common/Config/Config.h" #include "Common/Event.h" #include "Common/FileUtil.h" #include "Common/Flag.h" @@ -33,6 +34,7 @@ #include "Common/Thread.h" #include "Common/Timer.h" +#include "Core/Config/SYSCONFSettings.h" #include "Core/ConfigManager.h" #include "Core/Core.h" #include "Core/CoreTiming.h" @@ -93,9 +95,7 @@ Renderer::Renderer(int backbuffer_width, int backbuffer_height) OSDTime = 0; if (SConfig::GetInstance().bWii) - { - m_aspect_wide = SConfig::GetInstance().m_wii_aspect_ratio != 0; - } + m_aspect_wide = Config::Get(Config::SYSCONF_WIDESCREEN); m_last_host_config_bits = ShaderHostConfig::GetCurrent().bits; }