summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorMerryMage <MerryMage@users.noreply.github.com>2017-05-14 15:38:57 +0100
committerMerryMage <MerryMage@users.noreply.github.com>2017-06-03 18:11:57 +0100
commit332747857e9a542d91ef8d4f4ca3e14d3a8fb368 (patch)
tree522791c846efe21f6e398d7d949da3385edaa590 /Source/Core
parent1e766ab490e1364e59d06779d5b69e862405f2ae (diff)
GameConfigLoader: Empty INI to location map
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp155
1 files changed, 20 insertions, 135 deletions
diff --git a/Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp b/Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp
index 05544c303a..0d776ed815 100644
--- a/Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp
+++ b/Source/Core/Core/ConfigLoaders/GameConfigLoader.cpp
@@ -44,141 +44,25 @@ static std::vector<std::string> GetGameIniFilenames(const std::string& id, u16 r
return filenames;
}
-static std::map<std::pair<std::string, std::string>, ConfigLocation> ini_to_location = {
- // Core
- {{"Core", "CPUThread"}, {Config::System::Main, "Core", "CPUThread"}},
- {{"Core", "SkipIdle"}, {Config::System::Main, "Core", "SkipIdle"}},
- {{"Core", "SyncOnSkipIdle"}, {Config::System::Main, "Core", "SyncOnSkipIdle"}},
- {{"Core", "FPRF"}, {Config::System::Main, "Core", "FPRF"}},
- {{"Core", "AccurateNaNs"}, {Config::System::Main, "Core", "AccurateNaNs"}},
- {{"Core", "MMU"}, {Config::System::Main, "Core", "MMU"}},
- {{"Core", "DCBZ"}, {Config::System::Main, "Core", "DCBZ"}},
- {{"Core", "SyncGPU"}, {Config::System::Main, "Core", "SyncGPU"}},
- {{"Core", "FastDiscSpeed"}, {Config::System::Main, "Core", "FastDiscSpeed"}},
- {{"Core", "DSPHLE"}, {Config::System::Main, "Core", "DSPHLE"}},
- {{"Core", "GFXBackend"}, {Config::System::Main, "Core", "GFXBackend"}},
- {{"Core", "CPUCore"}, {Config::System::Main, "Core", "CPUCore"}},
- {{"Core", "HLE_BS2"}, {Config::System::Main, "Core", "HLE_BS2"}},
- {{"Core", "EmulationSpeed"}, {Config::System::Main, "Core", "EmulationSpeed"}},
- {{"Core", "GPUDeterminismMode"}, {Config::System::Main, "Core", "GPUDeterminismMode"}},
- {{"Core", "ProgressiveScan"}, {Config::System::Main, "Display", "ProgressiveScan"}},
- {{"Core", "PAL60"}, {Config::System::Main, "Display", "PAL60"}},
-
- // Action Replay cheats
- {{"ActionReplay_Enabled", ""}, {Config::System::Main, "ActionReplay_Enabled", ""}},
- {{"ActionReplay", ""}, {Config::System::Main, "ActionReplay", ""}},
-
- // Gecko cheats
- {{"Gecko_Enabled", ""}, {Config::System::Main, "Gecko_Enabled", ""}},
- {{"Gecko", ""}, {Config::System::Main, "Gecko", ""}},
-
- // OnLoad cheats
- {{"OnLoad", ""}, {Config::System::Main, "OnLoad", ""}},
-
- // OnFrame cheats
- {{"OnFrame_Enabled", ""}, {Config::System::Main, "OnFrame_Enabled", ""}},
- {{"OnFrame", ""}, {Config::System::Main, "OnFrame", ""}},
-
- // Speedhacks
- {{"Speedhacks", ""}, {Config::System::Main, "Speedhacks", ""}},
-
- // Debugger values
- {{"Watches", ""}, {Config::System::Debugger, "Watches", ""}},
- {{"BreakPoints", ""}, {Config::System::Debugger, "BreakPoints", ""}},
- {{"MemoryChecks", ""}, {Config::System::Debugger, "MemoryChecks", ""}},
-
- // DSP
- {{"DSP", "Volume"}, {Config::System::Main, "DSP", "Volume"}},
- {{"DSP", "EnableJIT"}, {Config::System::Main, "DSP", "EnableJIT"}},
- {{"DSP", "Backend"}, {Config::System::Main, "DSP", "Backend"}},
-
- // Controls
- {{"Controls", "PadType0"}, {Config::System::GCPad, "Core", "SIDevice0"}},
- {{"Controls", "PadType1"}, {Config::System::GCPad, "Core", "SIDevice1"}},
- {{"Controls", "PadType2"}, {Config::System::GCPad, "Core", "SIDevice2"}},
- {{"Controls", "PadType3"}, {Config::System::GCPad, "Core", "SIDevice3"}},
- {{"Controls", "WiimoteSource0"}, {Config::System::WiiPad, "Wiimote1", "Source"}},
- {{"Controls", "WiimoteSource1"}, {Config::System::WiiPad, "Wiimote2", "Source"}},
- {{"Controls", "WiimoteSource2"}, {Config::System::WiiPad, "Wiimote3", "Source"}},
- {{"Controls", "WiimoteSource3"}, {Config::System::WiiPad, "Wiimote4", "Source"}},
- {{"Controls", "WiimoteSourceBB"}, {Config::System::WiiPad, "BalanceBoard", "Source"}},
-
- // Controller profiles
- {{"Controls", "PadProfile1"}, {Config::System::GCPad, "Controls", "PadProfile1"}},
- {{"Controls", "PadProfile2"}, {Config::System::GCPad, "Controls", "PadProfile2"}},
- {{"Controls", "PadProfile3"}, {Config::System::GCPad, "Controls", "PadProfile3"}},
- {{"Controls", "PadProfile4"}, {Config::System::GCPad, "Controls", "PadProfile4"}},
- {{"Controls", "WiimoteProfile1"}, {Config::System::WiiPad, "Controls", "WiimoteProfile1"}},
- {{"Controls", "WiimoteProfile2"}, {Config::System::WiiPad, "Controls", "WiimoteProfile2"}},
- {{"Controls", "WiimoteProfile3"}, {Config::System::WiiPad, "Controls", "WiimoteProfile3"}},
- {{"Controls", "WiimoteProfile4"}, {Config::System::WiiPad, "Controls", "WiimoteProfile4"}},
-
- // Video
- {{"Video_Hardware", "VSync"}, {Config::System::GFX, "Hardware", "VSync"}},
- {{"Video_Settings", "wideScreenHack"}, {Config::System::GFX, "Settings", "wideScreenHack"}},
- {{"Video_Settings", "AspectRatio"}, {Config::System::GFX, "Settings", "AspectRatio"}},
- {{"Video_Settings", "Crop"}, {Config::System::GFX, "Settings", "Crop"}},
- {{"Video_Settings", "UseXFB"}, {Config::System::GFX, "Settings", "UseXFB"}},
- {{"Video_Settings", "UseRealXFB"}, {Config::System::GFX, "Settings", "UseRealXFB"}},
- {{"Video_Settings", "SafeTextureCacheColorSamples"},
- {Config::System::GFX, "Settings", "SafeTextureCacheColorSamples"}},
- {{"Video_Settings", "HiresTextures"}, {Config::System::GFX, "Settings", "HiresTextures"}},
- {{"Video_Settings", "ConvertHiresTextures"},
- {Config::System::GFX, "Settings", "ConvertHiresTextures"}},
- {{"Video_Settings", "CacheHiresTextures"},
- {Config::System::GFX, "Settings", "CacheHiresTextures"}},
- {{"Video_Settings", "EnablePixelLighting"},
- {Config::System::GFX, "Settings", "EnablePixelLighting"}},
- {{"Video_Settings", "ForcedSlowDepth"}, {Config::System::GFX, "Settings", "ForcedSlowDepth"}},
- {{"Video_Settings", "MSAA"}, {Config::System::GFX, "Settings", "MSAA"}},
- {{"Video_Settings", "SSAA"}, {Config::System::GFX, "Settings", "SSAA"}},
- {{"Video_Settings", "EFBScale"}, {Config::System::GFX, "Settings", "EFBScale"}},
- {{"Video_Settings", "DisableFog"}, {Config::System::GFX, "Settings", "DisableFog"}},
-
- {{"Video_Enhancements", "ForceFiltering"},
- {Config::System::GFX, "Enhancements", "ForceFiltering"}},
- {{"Video_Enhancements", "MaxAnisotropy"},
- {Config::System::GFX, "Enhancements", "MaxAnisotropy"}},
- {{"Video_Enhancements", "PostProcessingShader"},
- {Config::System::GFX, "Enhancements", "PostProcessingShader"}},
-
- {{"Video_Stereoscopy", "StereoMode"}, {Config::System::GFX, "Stereoscopy", "StereoMode"}},
- {{"Video_Stereoscopy", "StereoDepth"}, {Config::System::GFX, "Stereoscopy", "StereoDepth"}},
- {{"Video_Stereoscopy", "StereoSwapEyes"},
- {Config::System::GFX, "Stereoscopy", "StereoSwapEyes"}},
-
- {{"Video_Hacks", "EFBAccessEnable"}, {Config::System::GFX, "Hacks", "EFBAccessEnable"}},
- {{"Video_Hacks", "BBoxEnable"}, {Config::System::GFX, "Hacks", "BBoxEnable"}},
- {{"Video_Hacks", "ForceProgressive"}, {Config::System::GFX, "Hacks", "ForceProgressive"}},
- {{"Video_Hacks", "EFBToTextureEnable"}, {Config::System::GFX, "Hacks", "EFBToTextureEnable"}},
- {{"Video_Hacks", "EFBScaledCopy"}, {Config::System::GFX, "Hacks", "EFBScaledCopy"}},
- {{"Video_Hacks", "EFBEmulateFormatChanges"},
- {Config::System::GFX, "Hacks", "EFBEmulateFormatChanges"}},
-
- // GameINI specific video settings
- {{"Video", "ProjectionHack"}, {Config::System::GFX, "Video", "ProjectionHack"}},
- {{"Video", "PH_SZNear"}, {Config::System::GFX, "Video", "PH_SZNear"}},
- {{"Video", "PH_SZFar"}, {Config::System::GFX, "Video", "PH_SZFar"}},
- {{"Video", "PH_ZNear"}, {Config::System::GFX, "Video", "PH_ZNear"}},
- {{"Video", "PH_ZFar"}, {Config::System::GFX, "Video", "PH_ZFar"}},
- {{"Video", "PH_ExtraParam"}, {Config::System::GFX, "Video", "PH_ExtraParam"}},
- {{"Video", "PerfQueriesEnable"}, {Config::System::GFX, "Video", "PerfQueriesEnable"}},
-
- {{"Video_Stereoscopy", "StereoConvergence"},
- {Config::System::GFX, "Stereoscopy", "StereoConvergence"}},
- {{"Video_Stereoscopy", "StereoEFBMonoDepth"},
- {Config::System::GFX, "Stereoscopy", "StereoEFBMonoDepth"}},
- {{"Video_Stereoscopy", "StereoDepthPercentage"},
- {Config::System::GFX, "Stereoscopy", "StereoDepthPercentage"}},
-
- // UI
- {{"EmuState", "EmulationStateId"}, {Config::System::UI, "EmuState", "EmulationStateId"}},
- {{"EmuState", "EmulationIssues"}, {Config::System::UI, "EmuState", "EmulationIssues"}},
- {{"EmuState", "Title"}, {Config::System::UI, "EmuState", "Title"}},
-};
+using INIToLocationMap = std::map<std::pair<std::string, std::string>, ConfigLocation>;
+
+// This is a mapping from the legacy section-key pairs to ConfigLocations.
+// New settings do not need to be added to this mapping.
+// See also: MapINIToRealLocation and GetINILocationFromConfig.
+static const INIToLocationMap& GetINIToLocationMap()
+{
+ static const INIToLocationMap ini_to_location{};
+ return ini_to_location;
+}
+// Converts from a legacy GameINI section-key tuple to a ConfigLocation.
+// Also supports the following format:
+// [System.Section]
+// Key = Value
static ConfigLocation MapINIToRealLocation(const std::string& section, const std::string& key)
{
+ static const INIToLocationMap& ini_to_location = GetINIToLocationMap();
+
auto it = ini_to_location.find({section, key});
if (it == ini_to_location.end())
{
@@ -206,11 +90,13 @@ static ConfigLocation MapINIToRealLocation(const std::string& section, const std
return {Config::System::Main, "", ""};
}
- return ini_to_location[{section, key}];
+ return ini_to_location.at({section, key});
}
static std::pair<std::string, std::string> GetINILocationFromConfig(const ConfigLocation& location)
{
+ static const INIToLocationMap& ini_to_location = GetINIToLocationMap();
+
auto it = std::find_if(ini_to_location.begin(), ini_to_location.end(),
[&location](const auto& entry) { return entry.second == location; });
@@ -226,8 +112,7 @@ static std::pair<std::string, std::string> GetINILocationFromConfig(const Config
if (it != ini_to_location.end())
return {it->first.first, location.key};
- WARN_LOG(CORE, "Unknown option: %s.%s", location.section.c_str(), location.key.c_str());
- return {"", ""};
+ return {Config::GetSystemName(location.system) + "." + location.section, location.key};
}
// INI Game layer configuration loader