summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2014-06-16 01:12:43 -0400
committerLioncash <mathew1800@gmail.com>2014-06-16 01:31:23 -0400
commitf05d3f6e5d6da8be530c0cd4ffaaec0382240ec5 (patch)
treec598524e0e7b77b3345bc4a8158ceb9421a18e32 /Source/Core
parent7416b9cdb474f2b4b6808688fb23d335a623dd30 (diff)
Use only section-based ini reading.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Common/IniFile.cpp55
-rw-r--r--Source/Core/Common/IniFile.h27
-rw-r--r--Source/Core/Core/BootManager.cpp51
-rw-r--r--Source/Core/Core/ConfigManager.cpp661
-rw-r--r--Source/Core/Core/ConfigManager.h20
-rw-r--r--Source/Core/Core/Core.cpp5
-rw-r--r--Source/Core/Core/HW/EXI_DeviceMemoryCard.cpp2
-rw-r--r--Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_usb_kbd.cpp2
-rw-r--r--Source/Core/Core/PatchEngine.cpp2
-rw-r--r--Source/Core/DolphinWX/Android/ButtonManager.cpp2
-rw-r--r--Source/Core/DolphinWX/Debugger/CodeWindowFunctions.cpp36
-rw-r--r--Source/Core/DolphinWX/Debugger/DebuggerPanel.cpp25
-rw-r--r--Source/Core/DolphinWX/Debugger/MemoryWindow.cpp24
-rw-r--r--Source/Core/DolphinWX/FrameAui.cpp35
-rw-r--r--Source/Core/DolphinWX/ISOFile.cpp6
-rw-r--r--Source/Core/DolphinWX/ISOProperties.cpp37
-rw-r--r--Source/Core/DolphinWX/LogConfigWindow.cpp30
-rw-r--r--Source/Core/DolphinWX/LogWindow.cpp37
-rw-r--r--Source/Core/DolphinWX/Main.cpp2
-rw-r--r--Source/Core/DolphinWX/MainAndroid.cpp4
-rw-r--r--Source/Core/DolphinWX/PHackSettings.cpp11
-rw-r--r--Source/Core/InputCommon/InputConfig.cpp9
-rw-r--r--Source/Core/VideoBackends/Software/SWVideoConfig.cpp82
-rw-r--r--Source/Core/VideoCommon/VideoConfig.cpp208
24 files changed, 727 insertions, 646 deletions
diff --git a/Source/Core/Common/IniFile.cpp b/Source/Core/Common/IniFile.cpp
index 642835ac90..6159c2897d 100644
--- a/Source/Core/Common/IniFile.cpp
+++ b/Source/Core/Common/IniFile.cpp
@@ -436,61 +436,6 @@ bool IniFile::Save(const std::string& filename)
return File::RenameSync(temp, filename);
}
-bool IniFile::Get(const std::string& sectionName, const std::string& key, std::vector<std::string>* values)
-{
- Section *section = GetSection(sectionName);
- if (!section)
- return false;
- return section->Get(key, values);
-}
-
-bool IniFile::Get(const std::string& sectionName, const std::string& key, int* value, int defaultValue)
-{
- Section *section = GetSection(sectionName);
- if (!section) {
- *value = defaultValue;
- return false;
- } else {
- return section->Get(key, value, defaultValue);
- }
-}
-
-bool IniFile::Get(const std::string& sectionName, const std::string& key, u32* value, u32 defaultValue)
-{
- Section *section = GetSection(sectionName);
- if (!section) {
- *value = defaultValue;
- return false;
- } else {
- return section->Get(key, value, defaultValue);
- }
-}
-
-bool IniFile::Get(const std::string& sectionName, const std::string& key, bool* value, bool defaultValue)
-{
- Section *section = GetSection(sectionName);
- if (!section) {
- *value = defaultValue;
- return false;
- } else {
- return section->Get(key, value, defaultValue);
- }
-}
-
-bool IniFile::Get(const std::string& sectionName, const std::string& key, std::string* value, const std::string& defaultValue)
-{
- Section* section = GetSection(sectionName);
- if (!section) {
- if (&defaultValue != &NULL_STRING) {
- *value = defaultValue;
- }
- return false;
- }
- return section->Get(key, value, defaultValue);
-}
-
-
-
// Unit test. TODO: Move to the real unit test framework.
/*
int main()
diff --git a/Source/Core/Common/IniFile.h b/Source/Core/Common/IniFile.h
index 6e80611f1d..1d006b802f 100644
--- a/Source/Core/Common/IniFile.h
+++ b/Source/Core/Common/IniFile.h
@@ -95,34 +95,11 @@ public:
// Returns true if key exists in section
bool Exists(const std::string& sectionName, const std::string& key) const;
- // TODO: Get rid of these, in favor of the Section ones.
- void Set(const std::string& sectionName, const std::string& key, const std::string& newValue) {
- GetOrCreateSection(sectionName)->Set(key, newValue);
- }
- void Set(const std::string& sectionName, const std::string& key, int newValue) {
- GetOrCreateSection(sectionName)->Set(key, newValue);
- }
- void Set(const std::string& sectionName, const std::string& key, u32 newValue) {
- GetOrCreateSection(sectionName)->Set(key, newValue);
- }
- void Set(const std::string& sectionName, const std::string& key, bool newValue) {
- GetOrCreateSection(sectionName)->Set(key, newValue);
- }
- void Set(const std::string& sectionName, const std::string& key, const std::vector<std::string>& newValues) {
- GetOrCreateSection(sectionName)->Set(key, newValues);
- }
-
- // TODO: Get rid of these, in favor of the Section ones.
- bool Get(const std::string& sectionName, const std::string& key, int* value, int defaultValue = 0);
- bool Get(const std::string& sectionName, const std::string& key, u32* value, u32 defaultValue = 0);
- bool Get(const std::string& sectionName, const std::string& key, bool* value, bool defaultValue = false);
- bool Get(const std::string& sectionName, const std::string& key, std::vector<std::string>* values);
- bool Get(const std::string& sectionName, const std::string& key, std::string* value, const std::string& defaultValue = NULL_STRING);
-
template<typename T> bool GetIfExists(const std::string& sectionName, const std::string& key, T value)
{
if (Exists(sectionName, key))
- return Get(sectionName, key, value);
+ return GetOrCreateSection(sectionName)->Get(key, value);
+
return false;
}
diff --git a/Source/Core/Core/BootManager.cpp b/Source/Core/Core/BootManager.cpp
index c0e6eb989f..5e5f54afac 100644
--- a/Source/Core/Core/BootManager.cpp
+++ b/Source/Core/Core/BootManager.cpp
@@ -136,38 +136,43 @@ bool BootCore(const std::string& _rFilename)
config_cache.bSetFrameSkip = false;
// General settings
- game_ini.Get("Core", "CPUThread", &StartUp.bCPUThread, StartUp.bCPUThread);
- game_ini.Get("Core", "SkipIdle", &StartUp.bSkipIdle, StartUp.bSkipIdle);
- game_ini.Get("Core", "EnableFPRF", &StartUp.bEnableFPRF, StartUp.bEnableFPRF);
- game_ini.Get("Core", "MMU", &StartUp.bMMU, StartUp.bMMU);
- game_ini.Get("Core", "TLBHack", &StartUp.bTLBHack, StartUp.bTLBHack);
- game_ini.Get("Core", "DCBZ", &StartUp.bDCBZOFF, StartUp.bDCBZOFF);
- game_ini.Get("Core", "VBeam", &StartUp.bVBeamSpeedHack, StartUp.bVBeamSpeedHack);
- game_ini.Get("Core", "SyncGPU", &StartUp.bSyncGPU, StartUp.bSyncGPU);
- game_ini.Get("Core", "FastDiscSpeed", &StartUp.bFastDiscSpeed, StartUp.bFastDiscSpeed);
- game_ini.Get("Core", "BlockMerging", &StartUp.bMergeBlocks, StartUp.bMergeBlocks);
- game_ini.Get("Core", "DSPHLE", &StartUp.bDSPHLE, StartUp.bDSPHLE);
- game_ini.Get("Core", "DSPThread", &StartUp.bDSPThread, StartUp.bDSPThread);
- game_ini.Get("Core", "GFXBackend", &StartUp.m_strVideoBackend, StartUp.m_strVideoBackend);
- game_ini.Get("Core", "CPUCore", &StartUp.iCPUCore, StartUp.iCPUCore);
- game_ini.Get("Core", "HLE_BS2", &StartUp.bHLE_BS2, StartUp.bHLE_BS2);
- if (game_ini.Get("Core", "FrameLimit", &SConfig::GetInstance().m_Framelimit, SConfig::GetInstance().m_Framelimit))
+ IniFile::Section* core_section = game_ini.GetOrCreateSection("Core");
+ IniFile::Section* dsp_section = game_ini.GetOrCreateSection("DSP");
+ IniFile::Section* controls_section = game_ini.GetOrCreateSection("Controls");
+
+ core_section->Get("CPUThread", &StartUp.bCPUThread, StartUp.bCPUThread);
+ core_section->Get("SkipIdle", &StartUp.bSkipIdle, StartUp.bSkipIdle);
+ core_section->Get("EnableFPRF", &StartUp.bEnableFPRF, StartUp.bEnableFPRF);
+ core_section->Get("MMU", &StartUp.bMMU, StartUp.bMMU);
+ core_section->Get("TLBHack", &StartUp.bTLBHack, StartUp.bTLBHack);
+ core_section->Get("DCBZ", &StartUp.bDCBZOFF, StartUp.bDCBZOFF);
+ core_section->Get("VBeam", &StartUp.bVBeamSpeedHack, StartUp.bVBeamSpeedHack);
+ core_section->Get("SyncGPU", &StartUp.bSyncGPU, StartUp.bSyncGPU);
+ core_section->Get("FastDiscSpeed", &StartUp.bFastDiscSpeed, StartUp.bFastDiscSpeed);
+ core_section->Get("BlockMerging", &StartUp.bMergeBlocks, StartUp.bMergeBlocks);
+ core_section->Get("DSPHLE", &StartUp.bDSPHLE, StartUp.bDSPHLE);
+ core_section->Get("DSPThread", &StartUp.bDSPThread, StartUp.bDSPThread);
+ 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);
+ if (core_section->Get("FrameLimit", &SConfig::GetInstance().m_Framelimit, SConfig::GetInstance().m_Framelimit))
config_cache.bSetFramelimit = true;
- if (game_ini.Get("Core", "FrameSkip", &SConfig::GetInstance().m_FrameSkip))
+ if (core_section->Get("FrameSkip", &SConfig::GetInstance().m_FrameSkip))
{
config_cache.bSetFrameSkip = true;
Movie::SetFrameSkipping(SConfig::GetInstance().m_FrameSkip);
}
- if (game_ini.Get("DSP", "Volume", &SConfig::GetInstance().m_Volume, SConfig::GetInstance().m_Volume))
+
+ if (dsp_section->Get("Volume", &SConfig::GetInstance().m_Volume, SConfig::GetInstance().m_Volume))
config_cache.bSetVolume = true;
- game_ini.Get("DSP", "EnableJIT", &SConfig::GetInstance().m_DSPEnableJIT, SConfig::GetInstance().m_DSPEnableJIT);
- game_ini.Get("DSP", "Backend", &SConfig::GetInstance().sBackend, SConfig::GetInstance().sBackend);
+ dsp_section->Get("EnableJIT", &SConfig::GetInstance().m_DSPEnableJIT, SConfig::GetInstance().m_DSPEnableJIT);
+ dsp_section->Get("Backend", &SConfig::GetInstance().sBackend, SConfig::GetInstance().sBackend);
VideoBackend::ActivateBackend(StartUp.m_strVideoBackend);
for (unsigned int i = 0; i < MAX_SI_CHANNELS; ++i)
{
int source;
- game_ini.Get("Controls", StringFromFormat("PadType%u", i), &source, -1);
+ controls_section->Get(StringFromFormat("PadType%u", i), &source, -1);
if (source >= (int) SIDEVICE_NONE && source <= (int) SIDEVICE_AM_BASEBOARD)
{
SConfig::GetInstance().m_SIDevice[i] = (SIDevices) source;
@@ -184,7 +189,7 @@ bool BootCore(const std::string& _rFilename)
int source;
for (unsigned int i = 0; i < MAX_WIIMOTES; ++i)
{
- game_ini.Get("Controls", StringFromFormat("WiimoteSource%u", i), &source, -1);
+ controls_section->Get(StringFromFormat("WiimoteSource%u", i), &source, -1);
if (source != -1 && g_wiimote_sources[i] != (unsigned) source && source >= WIIMOTE_SRC_NONE && source <= WIIMOTE_SRC_HYBRID)
{
config_cache.bSetWiimoteSource[i] = true;
@@ -192,7 +197,7 @@ bool BootCore(const std::string& _rFilename)
WiimoteReal::ChangeWiimoteSource(i, source);
}
}
- game_ini.Get("Controls", "WiimoteSourceBB", &source, -1);
+ controls_section->Get("WiimoteSourceBB", &source, -1);
if (source != -1 && g_wiimote_sources[WIIMOTE_BALANCE_BOARD] != (unsigned) source && (source == WIIMOTE_SRC_NONE || source == WIIMOTE_SRC_REAL))
{
config_cache.bSetWiimoteSource[WIIMOTE_BALANCE_BOARD] = true;
diff --git a/Source/Core/Core/ConfigManager.cpp b/Source/Core/Core/ConfigManager.cpp
index c166ccaad4..5f9c6ce479 100644
--- a/Source/Core/Core/ConfigManager.cpp
+++ b/Source/Core/Core/ConfigManager.cpp
@@ -142,154 +142,198 @@ void SConfig::SaveSettings()
IniFile ini;
ini.Load(File::GetUserPath(F_DOLPHINCONFIG_IDX)); // load first to not kill unknown stuff
+ SaveGeneralSettings(ini);
+ SaveInterfaceSettings(ini);
+ SaveHotkeySettings(ini);
+ SaveDisplaySettings(ini);
+ SaveGameListSettings(ini);
+ SaveCoreSettings(ini);
+ SaveMovieSettings(ini);
+ SaveDSPSettings(ini);
+ SaveFifoPlayerSettings(ini);
+
+ ini.Save(File::GetUserPath(F_DOLPHINCONFIG_IDX));
+ m_SYSCONF->Save();
+}
+
+void SConfig::SaveGeneralSettings(IniFile& ini)
+{
+ IniFile::Section* general = ini.GetOrCreateSection("General");
+
// General
- ini.Set("General", "LastFilename", m_LastFilename);
- ini.Set("General", "ShowLag", m_ShowLag);
+ general->Set("LastFilename", m_LastFilename);
+ general->Set("ShowLag", m_ShowLag);
// ISO folders
- // clear removed folders
- int oldPaths,
- numPaths = (int)m_ISOFolder.size();
- ini.Get("General", "GCMPathes", &oldPaths, 0);
+ // Clear removed folders
+ int oldPaths;
+ int numPaths = (int)m_ISOFolder.size();
+ general->Get("GCMPathes", &oldPaths, 0);
for (int i = numPaths; i < oldPaths; i++)
{
ini.DeleteKey("General", StringFromFormat("GCMPath%i", i));
}
- ini.Set("General", "GCMPathes", numPaths);
-
+ general->Set("GCMPathes", numPaths);
for (int i = 0; i < numPaths; i++)
{
- ini.Set("General", StringFromFormat("GCMPath%i", i), m_ISOFolder[i]);
+ general->Set(StringFromFormat("GCMPath%i", i), m_ISOFolder[i]);
}
- ini.Set("General", "RecursiveGCMPaths", m_RecursiveISOFolder);
- ini.Set("General", "NANDRootPath", m_NANDPath);
- ini.Set("General", "WirelessMac", m_WirelessMac);
- #ifdef USE_GDBSTUB
- ini.Set("General", "GDBPort", m_LocalCoreStartupParameter.iGDBPort);
- #endif
-
- // Interface
- ini.Set("Interface", "ConfirmStop", m_LocalCoreStartupParameter.bConfirmStop);
- ini.Set("Interface", "UsePanicHandlers", m_LocalCoreStartupParameter.bUsePanicHandlers);
- ini.Set("Interface", "OnScreenDisplayMessages", m_LocalCoreStartupParameter.bOnScreenDisplayMessages);
- ini.Set("Interface", "HideCursor", m_LocalCoreStartupParameter.bHideCursor);
- ini.Set("Interface", "AutoHideCursor", m_LocalCoreStartupParameter.bAutoHideCursor);
- ini.Set("Interface", "MainWindowPosX", (m_LocalCoreStartupParameter.iPosX == -32000) ? 0 : m_LocalCoreStartupParameter.iPosX); // TODO - HAX
- ini.Set("Interface", "MainWindowPosY", (m_LocalCoreStartupParameter.iPosY == -32000) ? 0 : m_LocalCoreStartupParameter.iPosY); // TODO - HAX
- ini.Set("Interface", "MainWindowWidth", m_LocalCoreStartupParameter.iWidth);
- ini.Set("Interface", "MainWindowHeight", m_LocalCoreStartupParameter.iHeight);
- ini.Set("Interface", "Language", m_InterfaceLanguage);
- ini.Set("Interface", "ShowToolbar", m_InterfaceToolbar);
- ini.Set("Interface", "ShowStatusbar", m_InterfaceStatusbar);
- ini.Set("Interface", "ShowLogWindow", m_InterfaceLogWindow);
- ini.Set("Interface", "ShowLogConfigWindow", m_InterfaceLogConfigWindow);
- ini.Set("Interface", "ExtendedFPSInfo", m_InterfaceExtendedFPSInfo);
- ini.Set("Interface", "ThemeName40", m_LocalCoreStartupParameter.theme_name);
-
- // Hotkeys
+ general->Set("RecursiveGCMPaths", m_RecursiveISOFolder);
+ general->Set("NANDRootPath", m_NANDPath);
+ general->Set("WirelessMac", m_WirelessMac);
+
+#ifdef USE_GDBSTUB
+ general->Set("GDBPort", m_LocalCoreStartupParameter.iGDBPort);
+#endif
+}
+
+void SConfig::SaveInterfaceSettings(IniFile& ini)
+{
+ IniFile::Section* interface = ini.GetOrCreateSection("Interface");
+
+ interface->Set("ConfirmStop", m_LocalCoreStartupParameter.bConfirmStop);
+ interface->Set("UsePanicHandlers", m_LocalCoreStartupParameter.bUsePanicHandlers);
+ interface->Set("OnScreenDisplayMessages", m_LocalCoreStartupParameter.bOnScreenDisplayMessages);
+ interface->Set("HideCursor", m_LocalCoreStartupParameter.bHideCursor);
+ interface->Set("AutoHideCursor", m_LocalCoreStartupParameter.bAutoHideCursor);
+ interface->Set("MainWindowPosX", (m_LocalCoreStartupParameter.iPosX == -32000) ? 0 : m_LocalCoreStartupParameter.iPosX); // TODO - HAX
+ interface->Set("MainWindowPosY", (m_LocalCoreStartupParameter.iPosY == -32000) ? 0 : m_LocalCoreStartupParameter.iPosY); // TODO - HAX
+ interface->Set("MainWindowWidth", m_LocalCoreStartupParameter.iWidth);
+ interface->Set("MainWindowHeight", m_LocalCoreStartupParameter.iHeight);
+ interface->Set("Language", m_InterfaceLanguage);
+ interface->Set("ShowToolbar", m_InterfaceToolbar);
+ interface->Set("ShowStatusbar", m_InterfaceStatusbar);
+ interface->Set("ShowLogWindow", m_InterfaceLogWindow);
+ interface->Set("ShowLogConfigWindow", m_InterfaceLogConfigWindow);
+ interface->Set("ExtendedFPSInfo", m_InterfaceExtendedFPSInfo);
+ interface->Set("ThemeName40", m_LocalCoreStartupParameter.theme_name);
+}
+
+void SConfig::SaveHotkeySettings(IniFile& ini)
+{
+ IniFile::Section* hotkeys = ini.GetOrCreateSection("Hotkeys");
+
for (int i = 0; i < NUM_HOTKEYS; i++)
{
- ini.Set("Hotkeys", g_HKData[i].IniText, m_LocalCoreStartupParameter.iHotkey[i]);
- ini.Set("Hotkeys", std::string(g_HKData[i].IniText) + "Modifier",
- m_LocalCoreStartupParameter.iHotkeyModifier[i]);
+ hotkeys->Set(g_HKData[i].IniText, m_LocalCoreStartupParameter.iHotkey[i]);
+ hotkeys->Set(std::string(g_HKData[i].IniText) + "Modifier",
+ m_LocalCoreStartupParameter.iHotkeyModifier[i]);
}
+}
- // Display
- ini.Set("Display", "FullscreenResolution", m_LocalCoreStartupParameter.strFullscreenResolution);
- ini.Set("Display", "Fullscreen", m_LocalCoreStartupParameter.bFullscreen);
- ini.Set("Display", "RenderToMain", m_LocalCoreStartupParameter.bRenderToMain);
- ini.Set("Display", "RenderWindowXPos", m_LocalCoreStartupParameter.iRenderWindowXPos);
- ini.Set("Display", "RenderWindowYPos", m_LocalCoreStartupParameter.iRenderWindowYPos);
- ini.Set("Display", "RenderWindowWidth", m_LocalCoreStartupParameter.iRenderWindowWidth);
- ini.Set("Display", "RenderWindowHeight", m_LocalCoreStartupParameter.iRenderWindowHeight);
- ini.Set("Display", "RenderWindowAutoSize", m_LocalCoreStartupParameter.bRenderWindowAutoSize);
- ini.Set("Display", "KeepWindowOnTop", m_LocalCoreStartupParameter.bKeepWindowOnTop);
- ini.Set("Display", "ProgressiveScan", m_LocalCoreStartupParameter.bProgressive);
- ini.Set("Display", "DisableScreenSaver", m_LocalCoreStartupParameter.bDisableScreenSaver);
- ini.Set("Display", "ForceNTSCJ", m_LocalCoreStartupParameter.bForceNTSCJ);
-
- // Game List Control
- ini.Set("GameList", "ListDrives", m_ListDrives);
- ini.Set("GameList", "ListWad", m_ListWad);
- ini.Set("GameList", "ListWii", m_ListWii);
- ini.Set("GameList", "ListGC", m_ListGC);
- ini.Set("GameList", "ListJap", m_ListJap);
- ini.Set("GameList", "ListPal", m_ListPal);
- ini.Set("GameList", "ListUsa", m_ListUsa);
- ini.Set("GameList", "ListFrance", m_ListFrance);
- ini.Set("GameList", "ListItaly", m_ListItaly);
- ini.Set("GameList", "ListKorea", m_ListKorea);
- ini.Set("GameList", "ListTaiwan", m_ListTaiwan);
- ini.Set("GameList", "ListUnknown", m_ListUnknown);
- ini.Set("GameList", "ListSort", m_ListSort);
- ini.Set("GameList", "ListSortSecondary", m_ListSort2);
-
- ini.Set("GameList", "ColorCompressed", m_ColorCompressed);
-
- ini.Set("GameList", "ColumnPlatform", m_showSystemColumn);
- ini.Set("GameList", "ColumnBanner", m_showBannerColumn);
- ini.Set("GameList", "ColumnNotes", m_showNotesColumn);
- ini.Set("GameList", "ColumnID", m_showIDColumn);
- ini.Set("GameList", "ColumnRegion", m_showRegionColumn);
- ini.Set("GameList", "ColumnSize", m_showSizeColumn);
- ini.Set("GameList", "ColumnState", m_showStateColumn);
-
- // Core
- ini.Set("Core", "HLE_BS2", m_LocalCoreStartupParameter.bHLE_BS2);
- ini.Set("Core", "CPUCore", m_LocalCoreStartupParameter.iCPUCore);
- ini.Set("Core", "Fastmem", m_LocalCoreStartupParameter.bFastmem);
- ini.Set("Core", "CPUThread", m_LocalCoreStartupParameter.bCPUThread);
- ini.Set("Core", "DSPThread", m_LocalCoreStartupParameter.bDSPThread);
- ini.Set("Core", "DSPHLE", m_LocalCoreStartupParameter.bDSPHLE);
- ini.Set("Core", "SkipIdle", m_LocalCoreStartupParameter.bSkipIdle);
- ini.Set("Core", "DefaultGCM", m_LocalCoreStartupParameter.m_strDefaultGCM);
- ini.Set("Core", "DVDRoot", m_LocalCoreStartupParameter.m_strDVDRoot);
- ini.Set("Core", "Apploader", m_LocalCoreStartupParameter.m_strApploader);
- ini.Set("Core", "EnableCheats", m_LocalCoreStartupParameter.bEnableCheats);
- ini.Set("Core", "SelectedLanguage", m_LocalCoreStartupParameter.SelectedLanguage);
- ini.Set("Core", "DPL2Decoder", m_LocalCoreStartupParameter.bDPL2Decoder);
- ini.Set("Core", "Latency", m_LocalCoreStartupParameter.iLatency);
- ini.Set("Core", "MemcardAPath", m_strMemoryCardA);
- ini.Set("Core", "MemcardBPath", m_strMemoryCardB);
- ini.Set("Core", "SlotA", m_EXIDevice[0]);
- ini.Set("Core", "SlotB", m_EXIDevice[1]);
- ini.Set("Core", "SerialPort1", m_EXIDevice[2]);
- ini.Set("Core", "BBA_MAC", m_bba_mac);
+void SConfig::SaveDisplaySettings(IniFile& ini)
+{
+ IniFile::Section* display = ini.GetOrCreateSection("Display");
+
+ display->Set("FullscreenResolution", m_LocalCoreStartupParameter.strFullscreenResolution);
+ display->Set("Fullscreen", m_LocalCoreStartupParameter.bFullscreen);
+ display->Set("RenderToMain", m_LocalCoreStartupParameter.bRenderToMain);
+ display->Set("RenderWindowXPos", m_LocalCoreStartupParameter.iRenderWindowXPos);
+ display->Set("RenderWindowYPos", m_LocalCoreStartupParameter.iRenderWindowYPos);
+ display->Set("RenderWindowWidth", m_LocalCoreStartupParameter.iRenderWindowWidth);
+ display->Set("RenderWindowHeight", m_LocalCoreStartupParameter.iRenderWindowHeight);
+ display->Set("RenderWindowAutoSize", m_LocalCoreStartupParameter.bRenderWindowAutoSize);
+ display->Set("KeepWindowOnTop", m_LocalCoreStartupParameter.bKeepWindowOnTop);
+ display->Set("ProgressiveScan", m_LocalCoreStartupParameter.bProgressive);
+ display->Set("DisableScreenSaver", m_LocalCoreStartupParameter.bDisableScreenSaver);
+ display->Set("ForceNTSCJ", m_LocalCoreStartupParameter.bForceNTSCJ);
+}
+
+void SConfig::SaveGameListSettings(IniFile& ini)
+{
+ IniFile::Section* gamelist = ini.GetOrCreateSection("GameList");
+
+ gamelist->Set("ListDrives", m_ListDrives);
+ gamelist->Set("ListWad", m_ListWad);
+ gamelist->Set("ListWii", m_ListWii);
+ gamelist->Set("ListGC", m_ListGC);
+ gamelist->Set("ListJap", m_ListJap);
+ gamelist->Set("ListPal", m_ListPal);
+ gamelist->Set("ListUsa", m_ListUsa);
+ gamelist->Set("ListFrance", m_ListFrance);
+ gamelist->Set("ListItaly", m_ListItaly);
+ gamelist->Set("ListKorea", m_ListKorea);
+ gamelist->Set("ListTaiwan", m_ListTaiwan);
+ gamelist->Set("ListUnknown", m_ListUnknown);
+ gamelist->Set("ListSort", m_ListSort);
+ gamelist->Set("ListSortSecondary", m_ListSort2);
+
+ gamelist->Set("ColorCompressed", m_ColorCompressed);
+
+ gamelist->Set("ColumnPlatform", m_showSystemColumn);
+ gamelist->Set("ColumnBanner", m_showBannerColumn);
+ gamelist->Set("ColumnNotes", m_showNotesColumn);
+ gamelist->Set("ColumnID", m_showIDColumn);
+ gamelist->Set("ColumnRegion", m_showRegionColumn);
+ gamelist->Set("ColumnSize", m_showSizeColumn);
+ gamelist->Set("ColumnState", m_showStateColumn);
+}
+
+void SConfig::SaveCoreSettings(IniFile& ini)
+{
+ IniFile::Section* core = ini.GetOrCreateSection("Core");
+
+ core->Set("HLE_BS2", m_LocalCoreStartupParameter.bHLE_BS2);
+ core->Set("CPUCore", m_LocalCoreStartupParameter.iCPUCore);
+ core->Set("Fastmem", m_LocalCoreStartupParameter.bFastmem);
+ core->Set("CPUThread", m_LocalCoreStartupParameter.bCPUThread);
+ core->Set("DSPThread", m_LocalCoreStartupParameter.bDSPThread);
+ core->Set("DSPHLE", m_LocalCoreStartupParameter.bDSPHLE);
+ core->Set("SkipIdle", m_LocalCoreStartupParameter.bSkipIdle);
+ core->Set("DefaultGCM", m_LocalCoreStartupParameter.m_strDefaultGCM);
+ core->Set("DVDRoot", m_LocalCoreStartupParameter.m_strDVDRoot);
+ core->Set("Apploader", m_LocalCoreStartupParameter.m_strApploader);
+ core->Set("EnableCheats", m_LocalCoreStartupParameter.bEnableCheats);
+ core->Set("SelectedLanguage", m_LocalCoreStartupParameter.SelectedLanguage);
+ core->Set("DPL2Decoder", m_LocalCoreStartupParameter.bDPL2Decoder);
+ core->Set("Latency", m_LocalCoreStartupParameter.iLatency);
+ core->Set("MemcardAPath", m_strMemoryCardA);
+ core->Set("MemcardBPath", m_strMemoryCardB);
+ core->Set("SlotA", m_EXIDevice[0]);
+ core->Set("SlotB", m_EXIDevice[1]);
+ core->Set("SerialPort1", m_EXIDevice[2]);
+ core->Set("BBA_MAC", m_bba_mac);
for (int i = 0; i < MAX_SI_CHANNELS; ++i)
{
- ini.Set("Core", StringFromFormat("SIDevice%i", i), m_SIDevice[i]);
+ core->Set(StringFromFormat("SIDevice%i", i), m_SIDevice[i]);
}
- ini.Set("Core", "WiiSDCard", m_WiiSDCard);
- ini.Set("Core", "WiiKeyboard", m_WiiKeyboard);
- ini.Set("Core", "WiimoteContinuousScanning", m_WiimoteContinuousScanning);
- ini.Set("Core", "WiimoteEnableSpeaker", m_WiimoteEnableSpeaker);
- ini.Set("Core", "RunCompareServer", m_LocalCoreStartupParameter.bRunCompareServer);
- ini.Set("Core", "RunCompareClient", m_LocalCoreStartupParameter.bRunCompareClient);
- ini.Set("Core", "FrameLimit", m_Framelimit);
- ini.Set("Core", "FrameSkip", m_FrameSkip);
-
- // GFX Backend
- ini.Set("Core", "GFXBackend", m_LocalCoreStartupParameter.m_strVideoBackend);
-
- // Movie
- ini.Set("Movie", "PauseMovie", m_PauseMovie);
- ini.Set("Movie", "Author", m_strMovieAuthor);
-
- // DSP
- ini.Set("DSP", "EnableJIT", m_DSPEnableJIT);
- ini.Set("DSP", "DumpAudio", m_DumpAudio);
- ini.Set("DSP", "Backend", sBackend);
- ini.Set("DSP", "Volume", m_Volume);
-
- // Fifo Player
- ini.Set("FifoPlayer", "LoopReplay", m_LocalCoreStartupParameter.bLoopFifoReplay);
+ core->Set("WiiSDCard", m_WiiSDCard);
+ core->Set("WiiKeyboard", m_WiiKeyboard);
+ core->Set("WiimoteContinuousScanning", m_WiimoteContinuousScanning);
+ core->Set("WiimoteEnableSpeaker", m_WiimoteEnableSpeaker);
+ core->Set("RunCompareServer", m_LocalCoreStartupParameter.bRunCompareServer);
+ core->Set("RunCompareClient", m_LocalCoreStartupParameter.bRunCompareClient);
+ core->Set("FrameLimit", m_Framelimit);
+ core->Set("FrameSkip", m_FrameSkip);
+ core->Set("GFXBackend", m_LocalCoreStartupParameter.m_strVideoBackend);
+}
- ini.Save(File::GetUserPath(F_DOLPHINCONFIG_IDX));
- m_SYSCONF->Save();
+void SConfig::SaveMovieSettings(IniFile& ini)
+{
+ IniFile::Section* movie = ini.GetOrCreateSection("Movie");
+
+ movie->Set("PauseMovie", m_PauseMovie);
+ movie->Set("Author", m_strMovieAuthor);
}
+void SConfig::SaveDSPSettings(IniFile& ini)
+{
+ IniFile::Section* dsp = ini.GetOrCreateSection("DSP");
+
+ dsp->Set("EnableJIT", m_DSPEnableJIT);
+ dsp->Set("DumpAudio", m_DumpAudio);
+ dsp->Set("Backend", sBackend);
+ dsp->Set("Volume", m_Volume);
+}
+
+void SConfig::SaveFifoPlayerSettings(IniFile& ini)
+{
+ IniFile::Section* fifoplayer = ini.GetOrCreateSection("FifoPlayer");
+
+ fifoplayer->Set("LoopReplay", m_LocalCoreStartupParameter.bLoopFifoReplay);
+}
void SConfig::LoadSettings()
{
@@ -297,181 +341,222 @@ void SConfig::LoadSettings()
IniFile ini;
ini.Load(File::GetUserPath(F_DOLPHINCONFIG_IDX));
- // General
- {
- ini.Get("General", "LastFilename", &m_LastFilename);
- ini.Get("General", "ShowLag", &m_ShowLag, false);
- #ifdef USE_GDBSTUB
- ini.Get("General", "GDBPort", &(m_LocalCoreStartupParameter.iGDBPort), -1);
- #endif
+ LoadGeneralSettings(ini);
+ LoadInterfaceSettings(ini);
+ LoadHotkeySettings(ini);
+ LoadDisplaySettings(ini);
+ LoadGameListSettings(ini);
+ LoadCoreSettings(ini);
+ LoadMovieSettings(ini);
+ LoadDSPSettings(ini);
+ LoadFifoPlayerSettings(ini);
- m_ISOFolder.clear();
- int numGCMPaths;
+ m_SYSCONF = new SysConf();
+}
- if (ini.Get("General", "GCMPathes", &numGCMPaths, 0))
- {
- for (int i = 0; i < numGCMPaths; i++)
- {
- std::string tmpPath;
- ini.Get("General", StringFromFormat("GCMPath%i", i), &tmpPath, "");
- m_ISOFolder.push_back(std::move(tmpPath));
- }
- }
+void SConfig::LoadGeneralSettings(IniFile& ini)
+{
+ IniFile::Section* general = ini.GetOrCreateSection("General");
- ini.Get("General", "RecursiveGCMPaths", &m_RecursiveISOFolder, false);
+ general->Get("LastFilename", &m_LastFilename);
+ general->Get("ShowLag", &m_ShowLag, false);
+#ifdef USE_GDBSTUB
+ general->Get("GDBPort", &(m_LocalCoreStartupParameter.iGDBPort), -1);
+#endif
- ini.Get("General", "NANDRootPath", &m_NANDPath);
- m_NANDPath = File::GetUserPath(D_WIIROOT_IDX, m_NANDPath);
- DiscIO::cUIDsys::AccessInstance().UpdateLocation();
- DiscIO::CSharedContent::AccessInstance().UpdateLocation();
- ini.Get("General", "WirelessMac", &m_WirelessMac);
- }
+ m_ISOFolder.clear();
+ int numGCMPaths;
+ if (general->Get("GCMPathes", &numGCMPaths, 0))
{
- // Interface
- ini.Get("Interface", "ConfirmStop", &m_LocalCoreStartupParameter.bConfirmStop, true);
- ini.Get("Interface", "UsePanicHandlers", &m_LocalCoreStartupParameter.bUsePanicHandlers, true);
- ini.Get("Interface", "OnScreenDisplayMessages", &m_LocalCoreStartupParameter.bOnScreenDisplayMessages, true);
- ini.Get("Interface", "HideCursor", &m_LocalCoreStartupParameter.bHideCursor, false);
- ini.Get("Interface", "AutoHideCursor", &m_LocalCoreStartupParameter.bAutoHideCursor, false);
- ini.Get("Interface", "MainWindowPosX", &m_LocalCoreStartupParameter.iPosX, 100);
- ini.Get("Interface", "MainWindowPosY", &m_LocalCoreStartupParameter.iPosY, 100);
- ini.Get("Interface", "MainWindowWidth", &m_LocalCoreStartupParameter.iWidth, 800);
- ini.Get("Interface", "MainWindowHeight", &m_LocalCoreStartupParameter.iHeight, 600);
- ini.Get("Interface", "Language", &m_InterfaceLanguage, 0);
- ini.Get("Interface", "ShowToolbar", &m_InterfaceToolbar, true);
- ini.Get("Interface", "ShowStatusbar", &m_InterfaceStatusbar, true);
- ini.Get("Interface", "ShowLogWindow", &m_InterfaceLogWindow, false);
- ini.Get("Interface", "ShowLogConfigWindow", &m_InterfaceLogConfigWindow, false);
- ini.Get("Interface", "ExtendedFPSInfo", &m_InterfaceExtendedFPSInfo, false);
- ini.Get("Interface", "ThemeName40", &m_LocalCoreStartupParameter.theme_name, "Clean");
-
- // Hotkeys
- for (int i = 0; i < NUM_HOTKEYS; i++)
+ for (int i = 0; i < numGCMPaths; i++)
{
- ini.Get("Hotkeys", g_HKData[i].IniText,
- &m_LocalCoreStartupParameter.iHotkey[i], g_HKData[i].DefaultKey);
- ini.Get("Hotkeys", std::string(g_HKData[i].IniText) + "Modifier",
- &m_LocalCoreStartupParameter.iHotkeyModifier[i], g_HKData[i].DefaultModifier);
+ std::string tmpPath;
+ general->Get(StringFromFormat("GCMPath%i", i), &tmpPath, "");
+ m_ISOFolder.push_back(std::move(tmpPath));
}
+ }
+
+ general->Get("RecursiveGCMPaths", &m_RecursiveISOFolder, false);
+
+ general->Get("NANDRootPath", &m_NANDPath);
+ m_NANDPath = File::GetUserPath(D_WIIROOT_IDX, m_NANDPath);
+ DiscIO::cUIDsys::AccessInstance().UpdateLocation();
+ DiscIO::CSharedContent::AccessInstance().UpdateLocation();
+ general->Get("WirelessMac", &m_WirelessMac);
+}
+
+void SConfig::LoadInterfaceSettings(IniFile& ini)
+{
+ IniFile::Section* interface = ini.GetOrCreateSection("Interface");
+
+ interface->Get("ConfirmStop", &m_LocalCoreStartupParameter.bConfirmStop, true);
+ interface->Get("UsePanicHandlers", &m_LocalCoreStartupParameter.bUsePanicHandlers, true);
+ interface->Get("OnScreenDisplayMessages", &m_LocalCoreStartupParameter.bOnScreenDisplayMessages, true);
+ interface->Get("HideCursor", &m_LocalCoreStartupParameter.bHideCursor, false);
+ interface->Get("AutoHideCursor", &m_LocalCoreStartupParameter.bAutoHideCursor, false);
+ interface->Get("MainWindowPosX", &m_LocalCoreStartupParameter.iPosX, 100);
+ interface->Get("MainWindowPosY", &m_LocalCoreStartupParameter.iPosY, 100);
+ interface->Get("MainWindowWidth", &m_LocalCoreStartupParameter.iWidth, 800);
+ interface->Get("MainWindowHeight", &m_LocalCoreStartupParameter.iHeight, 600);
+ interface->Get("Language", &m_InterfaceLanguage, 0);
+ interface->Get("ShowToolbar", &m_InterfaceToolbar, true);
+ interface->Get("ShowStatusbar", &m_InterfaceStatusbar, true);
+ interface->Get("ShowLogWindow", &m_InterfaceLogWindow, false);
+ interface->Get("ShowLogConfigWindow", &m_InterfaceLogConfigWindow, false);
+ interface->Get("ExtendedFPSInfo", &m_InterfaceExtendedFPSInfo, false);
+ interface->Get("ThemeName40", &m_LocalCoreStartupParameter.theme_name, "Clean");
+}
+
+void SConfig::LoadHotkeySettings(IniFile& ini)
+{
+ IniFile::Section* hotkeys = ini.GetOrCreateSection("Hotkeys");
+
+ for (int i = 0; i < NUM_HOTKEYS; i++)
+ {
+ hotkeys->Get(g_HKData[i].IniText,
+ &m_LocalCoreStartupParameter.iHotkey[i], g_HKData[i].DefaultKey);
+ hotkeys->Get(std::string(g_HKData[i].IniText) + "Modifier",
+ &m_LocalCoreStartupParameter.iHotkeyModifier[i], g_HKData[i].DefaultModifier);
+ }
+}
+
+void SConfig::LoadDisplaySettings(IniFile& ini)
+{
+ IniFile::Section* display = ini.GetOrCreateSection("Display");
+
+ display->Get("Fullscreen", &m_LocalCoreStartupParameter.bFullscreen, false);
+ display->Get("FullscreenResolution", &m_LocalCoreStartupParameter.strFullscreenResolution, "Auto");
+ display->Get("RenderToMain", &m_LocalCoreStartupParameter.bRenderToMain, false);
+ display->Get("RenderWindowXPos", &m_LocalCoreStartupParameter.iRenderWindowXPos, -1);
+ display->Get("RenderWindowYPos", &m_LocalCoreStartupParameter.iRenderWindowYPos, -1);
+ display->Get("RenderWindowWidth", &m_LocalCoreStartupParameter.iRenderWindowWidth, 640);
+ display->Get("RenderWindowHeight", &m_LocalCoreStartupParameter.iRenderWindowHeight, 480);
+ display->Get("RenderWindowAutoSize", &m_LocalCoreStartupParameter.bRenderWindowAutoSize, false);
+ display->Get("KeepWindowOnTop", &m_LocalCoreStartupParameter.bKeepWindowOnTop, false);
+ display->Get("ProgressiveScan", &m_LocalCoreStartupParameter.bProgressive, false);
+ display->Get("DisableScreenSaver", &m_LocalCoreStartupParameter.bDisableScreenSaver, true);
+ display->Get("ForceNTSCJ", &m_LocalCoreStartupParameter.bForceNTSCJ, false);
+}
+
+void SConfig::LoadGameListSettings(IniFile& ini)
+{
+ IniFile::Section* gamelist = ini.GetOrCreateSection("GameList");
+
+ gamelist->Get("ListDrives", &m_ListDrives, false);
+ gamelist->Get("ListWad", &m_ListWad, true);
+ gamelist->Get("ListWii", &m_ListWii, true);
+ gamelist->Get("ListGC", &m_ListGC, true);
+ gamelist->Get("ListJap", &m_ListJap, true);
+ gamelist->Get("ListPal", &m_ListPal, true);
+ gamelist->Get("ListUsa", &m_ListUsa, true);
+
+ gamelist->Get("ListFrance", &m_ListFrance, true);
+ gamelist->Get("ListItaly", &m_ListItaly, true);
+ gamelist->Get("ListKorea", &m_ListKorea, true);
+ gamelist->Get("ListTaiwan", &m_ListTaiwan, true);
+ gamelist->Get("ListUnknown", &m_ListUnknown, true);
+ gamelist->Get("ListSort", &m_ListSort, 3);
+ gamelist->Get("ListSortSecondary",&m_ListSort2, 0);
+
+ // Determines if compressed games display in blue
+ gamelist->Get("ColorCompressed", &m_ColorCompressed, true);
+
+ // Gamelist columns toggles
+ gamelist->Get("ColumnPlatform", &m_showSystemColumn, true);
+ gamelist->Get("ColumnBanner", &m_showBannerColumn, true);
+ gamelist->Get("ColumnNotes", &m_showNotesColumn, true);
+ gamelist->Get("ColumnID", &m_showIDColumn, false);
+ gamelist->Get("ColumnRegion", &m_showRegionColumn, true);
+ gamelist->Get("ColumnSize", &m_showSizeColumn, true);
+ gamelist->Get("ColumnState", &m_showStateColumn, true);
+}
+
+void SConfig::LoadCoreSettings(IniFile& ini)
+{
+ IniFile::Section* core = ini.GetOrCreateSection("Core");
- // Display
- ini.Get("Display", "Fullscreen", &m_LocalCoreStartupParameter.bFullscreen, false);
- ini.Get("Display", "FullscreenResolution", &m_LocalCoreStartupParameter.strFullscreenResolution, "Auto");
- ini.Get("Display", "RenderToMain", &m_LocalCoreStartupParameter.bRenderToMain, false);
- ini.Get("Display", "RenderWindowXPos", &m_LocalCoreStartupParameter.iRenderWindowXPos, -1);
- ini.Get("Display", "RenderWindowYPos", &m_LocalCoreStartupParameter.iRenderWindowYPos, -1);
- ini.Get("Display", "RenderWindowWidth", &m_LocalCoreStartupParameter.iRenderWindowWidth, 640);
- ini.Get("Display", "RenderWindowHeight", &m_LocalCoreStartupParameter.iRenderWindowHeight, 480);
- ini.Get("Display", "RenderWindowAutoSize", &m_LocalCoreStartupParameter.bRenderWindowAutoSize, false);
- ini.Get("Display", "KeepWindowOnTop", &m_LocalCoreStartupParameter.bKeepWindowOnTop, false);
- ini.Get("Display", "ProgressiveScan", &m_LocalCoreStartupParameter.bProgressive, false);
- ini.Get("Display", "DisableScreenSaver", &m_LocalCoreStartupParameter.bDisableScreenSaver, true);
- ini.Get("Display", "ForceNTSCJ", &m_LocalCoreStartupParameter.bForceNTSCJ, false);
-
- // Game List Control
- ini.Get("GameList", "ListDrives", &m_ListDrives, false);
- ini.Get("GameList", "ListWad", &m_ListWad, true);
- ini.Get("GameList", "ListWii", &m_ListWii, true);
- ini.Get("GameList", "ListGC", &m_ListGC, true);
- ini.Get("GameList", "ListJap", &m_ListJap, true);
- ini.Get("GameList", "ListPal", &m_ListPal, true);
- ini.Get("GameList", "ListUsa", &m_ListUsa, true);
-
- ini.Get("GameList", "ListFrance", &m_ListFrance, true);
- ini.Get("GameList", "ListItaly", &m_ListItaly, true);
- ini.Get("GameList", "ListKorea", &m_ListKorea, true);
- ini.Get("GameList", "ListTaiwan", &m_ListTaiwan, true);
- ini.Get("GameList", "ListUnknown", &m_ListUnknown, true);
- ini.Get("GameList", "ListSort", &m_ListSort, 3);
- ini.Get("GameList", "ListSortSecondary",&m_ListSort2, 0);
-
- // Determines if compressed games display in blue
- ini.Get("GameList", "ColorCompressed", &m_ColorCompressed, true);
-
- // Gamelist columns toggles
- ini.Get("GameList", "ColumnPlatform", &m_showSystemColumn, true);
- ini.Get("GameList", "ColumnBanner", &m_showBannerColumn, true);
- ini.Get("GameList", "ColumnNotes", &m_showNotesColumn, true);
- ini.Get("GameList", "ColumnID", &m_showIDColumn, false);
- ini.Get("GameList", "ColumnRegion", &m_showRegionColumn, true);
- ini.Get("GameList", "ColumnSize", &m_showSizeColumn, true);
- ini.Get("GameList", "ColumnState", &m_showStateColumn, true);
-
- // Core
- ini.Get("Core", "HLE_BS2", &m_LocalCoreStartupParameter.bHLE_BS2, false);
+ core->Get("HLE_BS2", &m_LocalCoreStartupParameter.bHLE_BS2, false);
#ifdef _M_X86
- ini.Get("Core", "CPUCore", &m_LocalCoreStartupParameter.iCPUCore, 1);
+ core->Get("CPUCore", &m_LocalCoreStartupParameter.iCPUCore, 1);
#elif _M_ARM_32
- ini.Get("Core", "CPUCore", &m_LocalCoreStartupParameter.iCPUCore, 3);
+ core->Get("CPUCore", &m_LocalCoreStartupParameter.iCPUCore, 3);
#else
- ini.Get("Core", "CPUCore", &m_LocalCoreStartupParameter.iCPUCore, 0);
+ core->Get("CPUCore", &m_LocalCoreStartupParameter.iCPUCore, 0);
#endif
- ini.Get("Core", "Fastmem", &m_LocalCoreStartupParameter.bFastmem, true);
- ini.Get("Core", "DSPThread", &m_LocalCoreStartupParameter.bDSPThread, false);
- ini.Get("Core", "DSPHLE", &m_LocalCoreStartupParameter.bDSPHLE, true);
- ini.Get("Core", "CPUThread", &m_LocalCoreStartupParameter.bCPUThread, true);
- ini.Get("Core", "SkipIdle", &m_LocalCoreStartupParameter.bSkipIdle, true);
- ini.Get("Core", "DefaultGCM", &m_LocalCoreStartupParameter.m_strDefaultGCM);
- ini.Get("Core", "DVDRoot", &m_LocalCoreStartupParameter.m_strDVDRoot);
- ini.Get("Core", "Apploader", &m_LocalCoreStartupParameter.m_strApploader);
- ini.Get("Core", "EnableCheats", &m_LocalCoreStartupParameter.bEnableCheats, false);
- ini.Get("Core", "SelectedLanguage", &m_LocalCoreStartupParameter.SelectedLanguage, 0);
- ini.Get("Core", "DPL2Decoder", &m_LocalCoreStartupParameter.bDPL2Decoder, false);
- ini.Get("Core", "Latency", &m_LocalCoreStartupParameter.iLatency, 2);
- ini.Get("Core", "MemcardAPath", &m_strMemoryCardA);
- ini.Get("Core", "MemcardBPath", &m_strMemoryCardB);
- ini.Get("Core", "SlotA", (int*)&m_EXIDevice[0], EXIDEVICE_MEMORYCARD);
- ini.Get("Core", "SlotB", (int*)&m_EXIDevice[1], EXIDEVICE_NONE);
- ini.Get("Core", "SerialPort1", (int*)&m_EXIDevice[2], EXIDEVICE_NONE);
- ini.Get("Core", "BBA_MAC", &m_bba_mac);
- ini.Get("Core", "TimeProfiling", &m_LocalCoreStartupParameter.bJITILTimeProfiling, false);
- ini.Get("Core", "OutputIR", &m_LocalCoreStartupParameter.bJITILOutputIR, false);
- for (int i = 0; i < MAX_SI_CHANNELS; ++i)
- {
- ini.Get("Core", StringFromFormat("SIDevice%i", i), (u32*)&m_SIDevice[i], (i == 0) ? SIDEVICE_GC_CONTROLLER : SIDEVICE_NONE);
- }
- ini.Get("Core", "WiiSDCard", &m_WiiSDCard, false);
- ini.Get("Core", "WiiKeyboard", &m_WiiKeyboard, false);
- ini.Get("Core", "WiimoteContinuousScanning", &m_WiimoteContinuousScanning, false);
- ini.Get("Core", "WiimoteEnableSpeaker", &m_WiimoteEnableSpeaker, true);
- ini.Get("Core", "RunCompareServer", &m_LocalCoreStartupParameter.bRunCompareServer, false);
- ini.Get("Core", "RunCompareClient", &m_LocalCoreStartupParameter.bRunCompareClient, false);
- ini.Get("Core", "MMU", &m_LocalCoreStartupParameter.bMMU, false);
- ini.Get("Core", "TLBHack", &m_LocalCoreStartupParameter.bTLBHack, false);
- ini.Get("Core", "BBDumpPort", &m_LocalCoreStartupParameter.iBBDumpPort, -1);
- ini.Get("Core", "VBeam", &m_LocalCoreStartupParameter.bVBeamSpeedHack, false);
- ini.Get("Core", "SyncGPU", &m_LocalCoreStartupParameter.bSyncGPU, false);
- ini.Get("Core", "FastDiscSpeed", &m_LocalCoreStartupParameter.bFastDiscSpeed, false);
- ini.Get("Core", "DCBZ", &m_LocalCoreStartupParameter.bDCBZOFF, false);
- ini.Get("Core", "FrameLimit", &m_Framelimit, 1); // auto frame limit by default
- ini.Get("Core", "FrameSkip", &m_FrameSkip, 0);
-
- // GFX Backend
- ini.Get("Core", "GFXBackend", &m_LocalCoreStartupParameter.m_strVideoBackend, "");
-
- // Movie
- ini.Get("Movie", "PauseMovie", &m_PauseMovie, false);
- ini.Get("Movie", "Author", &m_strMovieAuthor, "");
-
- // DSP
- ini.Get("DSP", "EnableJIT", &m_DSPEnableJIT, true);
- ini.Get("DSP", "DumpAudio", &m_DumpAudio, false);
- #if defined __linux__ && HAVE_ALSA
- ini.Get("DSP", "Backend", &sBackend, BACKEND_ALSA);
- #elif defined __APPLE__
- ini.Get("DSP", "Backend", &sBackend, BACKEND_COREAUDIO);
- #elif defined _WIN32
- ini.Get("DSP", "Backend", &sBackend, BACKEND_XAUDIO2);
- #elif defined ANDROID
- ini.Get("DSP", "Backend", &sBackend, BACKEND_OPENSLES);
- #else
- ini.Get("DSP", "Backend", &sBackend, BACKEND_NULLSOUND);
- #endif
- ini.Get("DSP", "Volume", &m_Volume, 100);
-
- ini.Get("FifoPlayer", "LoopReplay", &m_LocalCoreStartupParameter.bLoopFifoReplay, true);
+ core->Get("Fastmem", &m_LocalCoreStartupParameter.bFastmem, true);
+ core->Get("DSPThread", &m_LocalCoreStartupParameter.bDSPThread, false);
+ core->Get("DSPHLE", &m_LocalCoreStartupParameter.bDSPHLE, true);
+ core->Get("CPUThread", &m_LocalCoreStartupParameter.bCPUThread, true);
+ core->Get("SkipIdle", &m_LocalCoreStartupParameter.bSkipIdle, true);
+ core->Get("DefaultGCM", &m_LocalCoreStartupParameter.m_strDefaultGCM);
+ core->Get("DVDRoot", &m_LocalCoreStartupParameter.m_strDVDRoot);
+ core->Get("Apploader", &m_LocalCoreStartupParameter.m_strApploader);
+ core->Get("EnableCheats", &m_LocalCoreStartupParameter.bEnableCheats, false);
+ core->Get("SelectedLanguage", &m_LocalCoreStartupParameter.SelectedLanguage, 0);
+ core->Get("DPL2Decoder", &m_LocalCoreStartupParameter.bDPL2Decoder, false);
+ core->Get("Latency", &m_LocalCoreStartupParameter.iLatency, 2);
+ core->Get("MemcardAPath", &m_strMemoryCardA);
+ core->Get("MemcardBPath", &m_strMemoryCardB);
+ core->Get("SlotA", (int*)&m_EXIDevice[0], EXIDEVICE_MEMORYCARD);
+ core->Get("SlotB", (int*)&m_EXIDevice[1], EXIDEVICE_NONE);
+ core->Get("SerialPort1", (int*)&m_EXIDevice[2], EXIDEVICE_NONE);
+ core->Get("BBA_MAC", &m_bba_mac);
+ core->Get("TimeProfiling", &m_LocalCoreStartupParameter.bJITILTimeProfiling, false);
+ core->Get("OutputIR", &m_LocalCoreStartupParameter.bJITILOutputIR, false);
+ for (int i = 0; i < MAX_SI_CHANNELS; ++i)
+ {
+ core->Get(StringFromFormat("SIDevice%i", i), (u32*)&m_SIDevice[i], (i == 0) ? SIDEVICE_GC_CONTROLLER : SIDEVICE_NONE);
}
+ core->Get("WiiSDCard", &m_WiiSDCard, false);
+ core->Get("WiiKeyboard", &m_WiiKeyboard, false);
+ core->Get("WiimoteContinuousScanning", &m_WiimoteContinuousScanning, false);
+ core->Get("WiimoteEnableSpeaker", &m_WiimoteEnableSpeaker, true);
+ core->Get("RunCompareServer", &m_LocalCoreStartupParameter.bRunCompareServer, false);
+ core->Get("RunCompareClient", &m_LocalCoreStartupParameter.bRunCompareClient, false);
+ core->Get("MMU", &m_LocalCoreStartupParameter.bMMU, false);
+ core->Get("TLBHack", &m_LocalCoreStartupParameter.bTLBHack, false);
+ core->Get("BBDumpPort", &m_LocalCoreStartupParameter.iBBDumpPort, -1);
+ core->Get("VBeam", &m_LocalCoreStartupParameter.bVBeamSpeedHack, false);
+ core->Get("SyncGPU", &m_LocalCoreStartupParameter.bSyncGPU, false);
+ core->Get("FastDiscSpeed", &m_LocalCoreStartupParameter.bFastDiscSpeed, false);
+ core->Get("DCBZ", &m_LocalCoreStartupParameter.bDCBZOFF, false);
+ core->Get("FrameLimit", &m_Framelimit, 1); // auto frame limit by default
+ core->Get("FrameSkip", &m_FrameSkip, 0);
+ core->Get("GFXBackend", &m_LocalCoreStartupParameter.m_strVideoBackend, "");
+}
- m_SYSCONF = new SysConf();
+void SConfig::LoadMovieSettings(IniFile& ini)
+{
+ IniFile::Section* movie = ini.GetOrCreateSection("Movie");
+
+ movie->Get("PauseMovie", &m_PauseMovie, false);
+ movie->Get("Author", &m_strMovieAuthor, "");
+}
+
+void SConfig::LoadDSPSettings(IniFile& ini)
+{
+ IniFile::Section* dsp = ini.GetOrCreateSection("DSP");
+
+ dsp->Get("EnableJIT", &m_DSPEnableJIT, true);
+ dsp->Get("DumpAudio", &m_DumpAudio, false);
+#if defined __linux__ && HAVE_ALSA
+ dsp->Get("Backend", &sBackend, BACKEND_ALSA);
+#elif defined __APPLE__
+ dsp->Get("Backend", &sBackend, BACKEND_COREAUDIO);
+#elif defined _WIN32
+ dsp->Get("Backend", &sBackend, BACKEND_XAUDIO2);
+#elif defined ANDROID
+ dsp->Get("Backend", &sBackend, BACKEND_OPENSLES);
+#else
+ dsp->Get("Backend", &sBackend, BACKEND_NULLSOUND);
+#endif
+ dsp->Get("Volume", &m_Volume, 100);
+}
+
+void SConfig::LoadFifoPlayerSettings(IniFile& ini)
+{
+ IniFile::Section* fifoplayer = ini.GetOrCreateSection("FifoPlayer");
+
+ fifoplayer->Get("LoopReplay", &m_LocalCoreStartupParameter.bLoopFifoReplay, true);
}
diff --git a/Source/Core/Core/ConfigManager.h b/Source/Core/Core/ConfigManager.h
index afc2f14c52..0bda4cc132 100644
--- a/Source/Core/Core/ConfigManager.h
+++ b/Source/Core/Core/ConfigManager.h
@@ -114,5 +114,25 @@ private:
SConfig();
~SConfig();
+ void SaveGeneralSettings(IniFile& ini);
+ void SaveInterfaceSettings(IniFile& ini);
+ void SaveDisplaySettings(IniFile& ini);
+ void SaveHotkeySettings(IniFile& ini);
+ void SaveGameListSettings(IniFile& ini);
+ void SaveCoreSettings(IniFile& ini);
+ void SaveDSPSettings(IniFile& ini);
+ void SaveMovieSettings(IniFile& ini);
+ void SaveFifoPlayerSettings(IniFile& ini);
+
+ void LoadGeneralSettings(IniFile& ini);
+ void LoadInterfaceSettings(IniFile& ini);
+ void LoadDisplaySettings(IniFile& ini);
+ void LoadHotkeySettings(IniFile& ini);
+ void LoadGameListSettings(IniFile& ini);
+ void LoadCoreSettings(IniFile& ini);
+ void LoadDSPSettings(IniFile& ini);
+ void LoadMovieSettings(IniFile& ini);
+ void LoadFifoPlayerSettings(IniFile& ini);
+
static SConfig* m_Instance;
};
diff --git a/Source/Core/Core/Core.cpp b/Source/Core/Core/Core.cpp
index 83660d9fe2..89ec347ada 100644
--- a/Source/Core/Core/Core.cpp
+++ b/Source/Core/Core/Core.cpp
@@ -208,9 +208,8 @@ bool Init()
if (g_aspect_wide)
{
IniFile gameIni = _CoreParameter.LoadGameIni();
- gameIni.Get("Wii", "Widescreen", &g_aspect_wide,
- !!SConfig::GetInstance().m_SYSCONF->
- GetData<u8>("IPL.AR"));
+ gameIni.GetOrCreateSection("Wii")->Get("Widescreen", &g_aspect_wide,
+ !!SConfig::GetInstance().m_SYSCONF->GetData<u8>("IPL.AR"));
}
// g_pWindowHandle is first the m_Panel handle,
diff --git a/Source/Core/Core/HW/EXI_DeviceMemoryCard.cpp b/Source/Core/Core/HW/EXI_DeviceMemoryCard.cpp
index 715b62698b..ecb2544b72 100644
--- a/Source/Core/Core/HW/EXI_DeviceMemoryCard.cpp
+++ b/Source/Core/Core/HW/EXI_DeviceMemoryCard.cpp
@@ -81,7 +81,7 @@ CEXIMemoryCard::CEXIMemoryCard(const int index)
// Use a 16Mb (251 block) memory card for these games
bool useMC251;
IniFile gameIni = Core::g_CoreStartupParameter.LoadGameIni();
- gameIni.Get("Core", "MemoryCard251", &useMC251, false);
+ gameIni.GetOrCreateSection("Core")->Get("MemoryCard251", &useMC251, false);
nintendo_card_id = MemCard2043Mb;
if (useMC251)
{
diff --git a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_usb_kbd.cpp b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_usb_kbd.cpp
index fdd7b8eb1b..c0fe0576cc 100644
--- a/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_usb_kbd.cpp
+++ b/Source/Core/Core/IPC_HLE/WII_IPC_HLE_Device_usb_kbd.cpp
@@ -25,7 +25,7 @@ bool CWII_IPC_HLE_Device_usb_kbd::Open(u32 _CommandAddress, u32 _Mode)
INFO_LOG(WII_IPC_STM, "CWII_IPC_HLE_Device_usb_kbd: Open");
IniFile ini;
ini.Load(File::GetUserPath(F_DOLPHINCONFIG_IDX));
- ini.Get("USB Keyboard", "Layout", &m_KeyboardLayout, KBD_LAYOUT_QWERTY);
+ ini.GetOrCreateSection("USB Keyboard")->Get("Layout", &m_KeyboardLayout, KBD_LAYOUT_QWERTY);
for (bool& pressed : m_OldKeyBuffer)
{
diff --git a/Source/Core/Core/PatchEngine.cpp b/Source/Core/Core/PatchEngine.cpp
index deb843a6f0..652f58a044 100644
--- a/Source/Core/Core/PatchEngine.cpp
+++ b/Source/Core/Core/PatchEngine.cpp
@@ -132,7 +132,7 @@ static void LoadSpeedhacks(const std::string& section, IniFile& ini)
for (const std::string& key : keys)
{
std::string value;
- ini.Get(section, key, &value, "BOGUS");
+ ini.GetOrCreateSection(section)->Get(key, &value, "BOGUS");
if (value != "BOGUS")
{
u32 address;
diff --git a/Source/Core/DolphinWX/Android/ButtonManager.cpp b/Source/Core/DolphinWX/Android/ButtonManager.cpp
index a1684ba5a6..5c2e5d1cc3 100644
--- a/Source/Core/DolphinWX/Android/ButtonManager.cpp
+++ b/Source/Core/DolphinWX/Android/ButtonManager.cpp
@@ -110,7 +110,7 @@ namespace ButtonManager
bool hasbind = false;
char modifier = '+';
std::string value;
- ini.Get("Android", config.str(), &value, "None");
+ ini.GetOrCreateSection("Android")->Get(config.str(), &value, "None");
if (value == "None")
continue;
if (std::string::npos != value.find("Axis"))
diff --git a/Source/Core/DolphinWX/Debugger/CodeWindowFunctions.cpp b/Source/Core/DolphinWX/Debugger/CodeWindowFunctions.cpp
index 1236dd84fe..41abb27300 100644
--- a/Source/Core/DolphinWX/Debugger/CodeWindowFunctions.cpp
+++ b/Source/Core/DolphinWX/Debugger/CodeWindowFunctions.cpp
@@ -62,14 +62,15 @@ void CCodeWindow::Load()
// The font to override DebuggerFont with
std::string fontDesc;
- ini.Get("General", "DebuggerFont", &fontDesc);
+
+ IniFile::Section* general = ini.GetOrCreateSection("General");
+ general->Get("DebuggerFont", &fontDesc);
+ general->Get("AutomaticStart", &bAutomaticStart, false);
+ general->Get("BootToPause", &bBootToPause, true);
+
if (!fontDesc.empty())
DebuggerFont.SetNativeFontInfoUserDesc(StrToWxStr(fontDesc));
- // Boot to pause or not
- ini.Get("General", "AutomaticStart", &bAutomaticStart, false);
- ini.Get("General", "BootToPause", &bBootToPause, true);
-
const char* SettingName[] = {
"Log",
"LogConfig",
@@ -85,19 +86,19 @@ void CCodeWindow::Load()
// Decide what windows to show
for (int i = 0; i <= IDM_VIDEOWINDOW - IDM_LOGWINDOW; i++)
- ini.Get("ShowOnStart", SettingName[i], &bShowOnStart[i], false);
+ ini.GetOrCreateSection("ShowOnStart")->Get(SettingName[i], &bShowOnStart[i], false);
// Get notebook affiliation
- std::string _Section = "P - " +
+ std::string section = "P - " +
((Parent->ActivePerspective < Parent->Perspectives.size())
? Parent->Perspectives[Parent->ActivePerspective].Name : "Perspective 1");
for (int i = 0; i <= IDM_CODEWINDOW - IDM_LOGWINDOW; i++)
- ini.Get(_Section, SettingName[i], &iNbAffiliation[i], 0);
+ ini.GetOrCreateSection(section)->Get(SettingName[i], &iNbAffiliation[i], 0);
// Get floating setting
for (int i = 0; i <= IDM_CODEWINDOW - IDM_LOGWINDOW; i++)
- ini.Get("Float", SettingName[i], &Parent->bFloatWindow[i], false);
+ ini.GetOrCreateSection("Float")->Get(SettingName[i], &Parent->bFloatWindow[i], false);
}
void CCodeWindow::Save()
@@ -105,11 +106,10 @@ void CCodeWindow::Save()
IniFile ini;
ini.Load(File::GetUserPath(F_DEBUGGERCONFIG_IDX));
- ini.Set("General", "DebuggerFont", WxStrToStr(DebuggerFont.GetNativeFontInfoUserDesc()));
-
- // Boot to pause or not
- ini.Set("General", "AutomaticStart", GetMenuBar()->IsChecked(IDM_AUTOMATICSTART));
- ini.Set("General", "BootToPause", GetMenuBar()->IsChecked(IDM_BOOTTOPAUSE));
+ IniFile::Section* general = ini.GetOrCreateSection("General");
+ general->Set("DebuggerFont", WxStrToStr(DebuggerFont.GetNativeFontInfoUserDesc()));
+ general->Set("AutomaticStart", GetMenuBar()->IsChecked(IDM_AUTOMATICSTART));
+ general->Set("BootToPause", GetMenuBar()->IsChecked(IDM_BOOTTOPAUSE));
const char* SettingName[] = {
"Log",
@@ -126,16 +126,16 @@ void CCodeWindow::Save()
// Save windows settings
for (int i = IDM_LOGWINDOW; i <= IDM_VIDEOWINDOW; i++)
- ini.Set("ShowOnStart", SettingName[i - IDM_LOGWINDOW], GetMenuBar()->IsChecked(i));
+ ini.GetOrCreateSection("ShowOnStart")->Set(SettingName[i - IDM_LOGWINDOW], GetMenuBar()->IsChecked(i));
// Save notebook affiliations
- std::string _Section = "P - " + Parent->Perspectives[Parent->ActivePerspective].Name;
+ std::string section = "P - " + Parent->Perspectives[Parent->ActivePerspective].Name;
for (int i = 0; i <= IDM_CODEWINDOW - IDM_LOGWINDOW; i++)
- ini.Set(_Section, SettingName[i], iNbAffiliation[i]);
+ ini.GetOrCreateSection(section)->Set(SettingName[i], iNbAffiliation[i]);
// Save floating setting
for (int i = IDM_LOGWINDOW_PARENT; i <= IDM_CODEWINDOW_PARENT; i++)
- ini.Set("Float", SettingName[i - IDM_LOGWINDOW_PARENT], !!FindWindowById(i));
+ ini.GetOrCreateSection("Float")->Set(SettingName[i - IDM_LOGWINDOW_PARENT], !!FindWindowById(i));
ini.Save(File::GetUserPath(F_DEBUGGERCONFIG_IDX));
}
diff --git a/Source/Core/DolphinWX/Debugger/DebuggerPanel.cpp b/Source/Core/DolphinWX/Debugger/DebuggerPanel.cpp
index 682a6733a1..fa09024ef3 100644
--- a/Source/Core/DolphinWX/Debugger/DebuggerPanel.cpp
+++ b/Source/Core/DolphinWX/Debugger/DebuggerPanel.cpp
@@ -88,10 +88,11 @@ void GFXDebuggerPanel::SaveSettings() const
GetSize().GetWidth() < 1000 &&
GetSize().GetHeight() < 1000)
{
- file.Set("VideoWindow", "x", GetPosition().x);
- file.Set("VideoWindow", "y", GetPosition().y);
- file.Set("VideoWindow", "w", GetSize().GetWidth());
- file.Set("VideoWindow", "h", GetSize().GetHeight());
+ IniFile::Section* video_window = file.GetOrCreateSection("VideoWindow");
+ video_window->Set("x", GetPosition().x);
+ video_window->Set("y", GetPosition().y);
+ video_window->Set("w", GetSize().GetWidth());
+ video_window->Set("h", GetSize().GetHeight());
}
file.Save(File::GetUserPath(F_DEBUGGERCONFIG_IDX));
@@ -102,11 +103,17 @@ void GFXDebuggerPanel::LoadSettings()
IniFile file;
file.Load(File::GetUserPath(F_DEBUGGERCONFIG_IDX));
- int x = 100, y = 100, w = 100, h = 100;
- file.Get("VideoWindow", "x", &x, GetPosition().x);
- file.Get("VideoWindow", "y", &y, GetPosition().y);
- file.Get("VideoWindow", "w", &w, GetSize().GetWidth());
- file.Get("VideoWindow", "h", &h, GetSize().GetHeight());
+ int x = 100;
+ int y = 100;
+ int w = 100;
+ int h = 100;
+
+ IniFile::Section* video_window = file.GetOrCreateSection("VideoWindow");
+ video_window->Get("x", &x, GetPosition().x);
+ video_window->Get("y", &y, GetPosition().y);
+ video_window->Get("w", &w, GetSize().GetWidth());
+ video_window->Get("h", &h, GetSize().GetHeight());
+
SetSize(x, y, w, h);
}
diff --git a/Source/Core/DolphinWX/Debugger/MemoryWindow.cpp b/Source/Core/DolphinWX/Debugger/MemoryWindow.cpp
index ed2fe66b45..53184d7116 100644
--- a/Source/Core/DolphinWX/Debugger/MemoryWindow.cpp
+++ b/Source/Core/DolphinWX/Debugger/MemoryWindow.cpp
@@ -127,25 +127,29 @@ CMemoryWindow::CMemoryWindow(wxWindow* parent, wxWindowID id,
sizerBig->Fit(this);
}
-void CMemoryWindow::Save(IniFile& _IniFile) const
+void CMemoryWindow::Save(IniFile& ini) const
{
// Prevent these bad values that can happen after a crash or hanging
if (GetPosition().x != -32000 && GetPosition().y != -32000)
{
- _IniFile.Set("MemoryWindow", "x", GetPosition().x);
- _IniFile.Set("MemoryWindow", "y", GetPosition().y);
- _IniFile.Set("MemoryWindow", "w", GetSize().GetWidth());
- _IniFile.Set("MemoryWindow", "h", GetSize().GetHeight());
+ IniFile::Section* mem_window = ini.GetOrCreateSection("MemoryWindow");
+ mem_window->Set("x", GetPosition().x);
+ mem_window->Set("y", GetPosition().y);
+ mem_window->Set("w", GetSize().GetWidth());
+ mem_window->Set("h", GetSize().GetHeight());
}
}
-void CMemoryWindow::Load(IniFile& _IniFile)
+void CMemoryWindow::Load(IniFile& ini)
{
int x, y, w, h;
- _IniFile.Get("MemoryWindow", "x", &x, GetPosition().x);
- _IniFile.Get("MemoryWindow", "y", &y, GetPosition().y);
- _IniFile.Get("MemoryWindow", "w", &w, GetSize().GetWidth());
- _IniFile.Get("MemoryWindow", "h", &h, GetSize().GetHeight());
+
+ IniFile::Section* mem_window = ini.GetOrCreateSection("MemoryWindow");
+ mem_window->Get("x", &x, GetPosition().x);
+ mem_window->Get("y", &y, GetPosition().y);
+ mem_window->Get("w", &w, GetSize().GetWidth());
+ mem_window->Get("h", &h, GetSize().GetHeight());
+
SetSize(x, y, w, h);
}
diff --git a/Source/Core/DolphinWX/FrameAui.cpp b/Source/Core/DolphinWX/FrameAui.cpp
index 04efd4b7e5..eabb5160ad 100644
--- a/Source/Core/DolphinWX/FrameAui.cpp
+++ b/Source/Core/DolphinWX/FrameAui.cpp
@@ -835,8 +835,10 @@ void CFrame::LoadIniPerspectives()
IniFile ini;
ini.Load(File::GetUserPath(F_DEBUGGERCONFIG_IDX));
- ini.Get("Perspectives", "Perspectives", &_Perspectives, "Perspective 1");
- ini.Get("Perspectives", "Active", &ActivePerspective, 0);
+
+ IniFile::Section* perspectives = ini.GetOrCreateSection("Perspectives");
+ perspectives->Get("Perspectives", &_Perspectives, "Perspective 1");
+ perspectives->Get("Active", &ActivePerspective, 0);
SplitString(_Perspectives, ',', VPerspectives);
for (auto& VPerspective : VPerspectives)
@@ -853,13 +855,15 @@ void CFrame::LoadIniPerspectives()
}
_Section = StringFromFormat("P - %s", Tmp.Name.c_str());
- ini.Get(_Section, "Perspective", &_Perspective,
- "layout2|"
- "name=Pane 0;caption=Pane 0;state=768;dir=5;prop=100000;|"
- "name=Pane 1;caption=Pane 1;state=31458108;dir=4;prop=100000;|"
- "dock_size(5,0,0)=22|dock_size(4,0,0)=333|");
- ini.Get(_Section, "Width", &_Widths, "70,25");
- ini.Get(_Section, "Height", &_Heights, "80,80");
+
+ IniFile::Section* perspec_section = ini.GetOrCreateSection(_Section);
+ perspec_section->Get("Perspective", &_Perspective,
+ "layout2|"
+ "name=Pane 0;caption=Pane 0;state=768;dir=5;prop=100000;|"
+ "name=Pane 1;caption=Pane 1;state=31458108;dir=4;prop=100000;|"
+ "dock_size(5,0,0)=22|dock_size(4,0,0)=333|");
+ perspec_section->Get("Width", &_Widths, "70,25");
+ perspec_section->Get("Height", &_Heights, "80,80");
Tmp.Perspective = StrToWxStr(_Perspective);
@@ -926,14 +930,17 @@ void CFrame::SaveIniPerspectives()
STmp += Perspective.Name + ",";
}
STmp = STmp.substr(0, STmp.length()-1);
- ini.Set("Perspectives", "Perspectives", STmp);
- ini.Set("Perspectives", "Active", ActivePerspective);
+
+ IniFile::Section* perspectives = ini.GetOrCreateSection("Perspectives");
+ perspectives->Set("Perspectives", STmp);
+ perspectives->Set("Active", ActivePerspective);
// Save the perspectives
for (auto& Perspective : Perspectives)
{
std::string _Section = "P - " + Perspective.Name;
- ini.Set(_Section, "Perspective", WxStrToStr(Perspective.Perspective));
+ IniFile::Section* perspec_section = ini.GetOrCreateSection(_Section);
+ perspec_section->Set("Perspective", WxStrToStr(Perspective.Perspective));
std::string SWidth = "", SHeight = "";
for (u32 j = 0; j < Perspective.Width.size(); j++)
@@ -945,8 +952,8 @@ void CFrame::SaveIniPerspectives()
SWidth = SWidth.substr(0, SWidth.length()-1);
SHeight = SHeight.substr(0, SHeight.length()-1);
- ini.Set(_Section, "Width", SWidth);
- ini.Set(_Section, "Height", SHeight);
+ perspec_section->Set("Width", SWidth);
+ perspec_section->Set("Height", SHeight);
}
ini.Save(File::GetUserPath(F_DEBUGGERCONFIG_IDX));
diff --git a/Source/Core/DolphinWX/ISOFile.cpp b/Source/Core/DolphinWX/ISOFile.cpp
index 63c30f10bb..891d194df8 100644
--- a/Source/Core/DolphinWX/ISOFile.cpp
+++ b/Source/Core/DolphinWX/ISOFile.cpp
@@ -127,8 +127,10 @@ GameListItem::GameListItem(const std::string& _rFileName)
IniFile ini;
ini.Load(File::GetSysDirectory() + GAMESETTINGS_DIR DIR_SEP + m_UniqueID + ".ini");
ini.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + m_UniqueID + ".ini", true);
- ini.Get("EmuState", "EmulationStateId", &m_emu_state);
- ini.Get("EmuState", "EmulationIssues", &m_issues);
+
+ IniFile::Section* emu_state = ini.GetOrCreateSection("EmuState");
+ emu_state->Get("EmulationStateId", &m_emu_state);
+ emu_state->Get("EmulationIssues", &m_issues);
}
if (!m_pImage.empty())
diff --git a/Source/Core/DolphinWX/ISOProperties.cpp b/Source/Core/DolphinWX/ISOProperties.cpp
index 71445c15d9..f5884f03d9 100644
--- a/Source/Core/DolphinWX/ISOProperties.cpp
+++ b/Source/Core/DolphinWX/ISOProperties.cpp
@@ -1019,9 +1019,9 @@ void CISOProperties::SetCheckboxValueFromGameini(const char* section, const char
{
// Prefer local gameini value over default gameini value.
bool value;
- if (GameIniLocal.Get(section, key, &value))
+ if (GameIniLocal.GetOrCreateSection(section)->Get(key, &value))
checkbox->Set3StateValue((wxCheckBoxState)value);
- else if (GameIniDefault.Get(section, key, &value))
+ else if (GameIniDefault.GetOrCreateSection(section)->Get(key, &value))
checkbox->Set3StateValue((wxCheckBoxState)value);
else
checkbox->Set3StateValue(wxCHK_UNDETERMINED);
@@ -1042,34 +1042,39 @@ void CISOProperties::LoadGameConfig()
SetCheckboxValueFromGameini("Wii", "Widescreen", EnableWideScreen);
SetCheckboxValueFromGameini("Video", "UseBBox", UseBBox);
+ IniFile::Section* default_video = GameIniDefault.GetOrCreateSection("Video");
+ IniFile::Section* local_video = GameIniLocal.GetOrCreateSection("Video");
+
// First set values from default gameini, then apply values from local gameini
int iTemp;
- GameIniDefault.Get("Video", "ProjectionHack", &iTemp);
+ default_video->Get("ProjectionHack", &iTemp);
PHackEnable->SetValue(!!iTemp);
- if (GameIniLocal.Get("Video", "ProjectionHack", &iTemp))
+ if (local_video->Get("ProjectionHack", &iTemp))
PHackEnable->SetValue(!!iTemp);
- GameIniDefault.Get("Video", "PH_SZNear", &PHack_Data.PHackSZNear);
+ default_video->Get("PH_SZNear", &PHack_Data.PHackSZNear);
if (GameIniLocal.GetIfExists("Video", "PH_SZNear", &iTemp))
PHack_Data.PHackSZNear = !!iTemp;
- GameIniDefault.Get("Video", "PH_SZFar", &PHack_Data.PHackSZFar);
+ default_video->Get("PH_SZFar", &PHack_Data.PHackSZFar);
if (GameIniLocal.GetIfExists("Video", "PH_SZFar", &iTemp))
PHack_Data.PHackSZFar = !!iTemp;
std::string sTemp;
- GameIniDefault.Get("Video", "PH_ZNear", &PHack_Data.PHZNear);
+ default_video->Get("PH_ZNear", &PHack_Data.PHZNear);
if (GameIniLocal.GetIfExists("Video", "PH_ZNear", &sTemp))
PHack_Data.PHZNear = sTemp;
- GameIniDefault.Get("Video", "PH_ZFar", &PHack_Data.PHZFar);
+ default_video->Get("PH_ZFar", &PHack_Data.PHZFar);
if (GameIniLocal.GetIfExists("Video", "PH_ZFar", &sTemp))
PHack_Data.PHZFar = sTemp;
- GameIniDefault.Get("EmuState", "EmulationStateId", &iTemp, 0/*Not Set*/);
+
+ IniFile::Section* default_emustate = GameIniDefault.GetOrCreateSection("EmuState");
+ default_emustate->Get("EmulationStateId", &iTemp, 0/*Not Set*/);
EmuState->SetSelection(iTemp);
if (GameIniLocal.GetIfExists("EmuState", "EmulationStateId", &iTemp))
EmuState->SetSelection(iTemp);
- GameIniDefault.Get("EmuState", "EmulationIssues", &sTemp);
+ default_emustate->Get("EmulationIssues", &sTemp);
if (!sTemp.empty())
EmuIssues->SetValue(StrToWxStr(sTemp));
if (GameIniLocal.GetIfExists("EmuState", "EmulationIssues", &sTemp))
@@ -1092,13 +1097,13 @@ void CISOProperties::SaveGameIniValueFrom3StateCheckbox(const char* section, con
if (checkbox->Get3StateValue() == wxCHK_UNDETERMINED)
GameIniLocal.DeleteKey(section, key);
else if (!GameIniDefault.Exists(section, key))
- GameIniLocal.Set(section, key, checkbox_val);
+ GameIniLocal.GetOrCreateSection(section)->Set(key, checkbox_val);
else
{
bool default_value;
- GameIniDefault.Get(section, key, &default_value);
+ GameIniDefault.GetOrCreateSection(section)->Get(key, &default_value);
if (default_value != checkbox_val)
- GameIniLocal.Set(section, key, checkbox_val);
+ GameIniLocal.GetOrCreateSection(section)->Set(key, checkbox_val);
else
GameIniLocal.DeleteKey(section, key);
}
@@ -1122,13 +1127,13 @@ bool CISOProperties::SaveGameConfig()
#define SAVE_IF_NOT_DEFAULT(section, key, val, def) do { \
if (GameIniDefault.Exists((section), (key))) { \
std::remove_reference<decltype((val))>::type tmp__; \
- GameIniDefault.Get((section), (key), &tmp__); \
+ GameIniDefault.GetOrCreateSection((section))->Get((key), &tmp__); \
if ((val) != tmp__) \
- GameIniLocal.Set((section), (key), (val)); \
+ GameIniLocal.GetOrCreateSection((section))->Set((key), (val)); \
else \
GameIniLocal.DeleteKey((section), (key)); \
} else if ((val) != (def)) \
- GameIniLocal.Set((section), (key), (val)); \
+ GameIniLocal.GetOrCreateSection((section))->Set((key), (val)); \
else \
GameIniLocal.DeleteKey((section), (key)); \
} while (0)
diff --git a/Source/Core/DolphinWX/LogConfigWindow.cpp b/Source/Core/DolphinWX/LogConfigWindow.cpp
index 6498668869..624aad92ae 100644
--- a/Source/Core/DolphinWX/LogConfigWindow.cpp
+++ b/Source/Core/DolphinWX/LogConfigWindow.cpp
@@ -117,9 +117,11 @@ void LogConfigWindow::LoadSettings()
IniFile ini;
ini.Load(File::GetUserPath(F_LOGGERCONFIG_IDX));
+ IniFile::Section* options = ini.GetOrCreateSection("Options");
+
// Retrieve the verbosity value from the config ini file.
int verbosity;
- ini.Get("Options", "Verbosity", &verbosity, 0);
+ options->Get("Verbosity", &verbosity, 0);
// Ensure the verbosity level is valid.
if (verbosity < 1)
@@ -131,16 +133,16 @@ void LogConfigWindow::LoadSettings()
m_verbosity->SetSelection(verbosity - 1);
// Get the logger output settings from the config ini file.
- ini.Get("Options", "WriteToFile", &m_writeFile, false);
+ options->Get("WriteToFile", &m_writeFile, false);
m_writeFileCB->SetValue(m_writeFile);
- ini.Get("Options", "WriteToConsole", &m_writeConsole, true);
+ options->Get("WriteToConsole", &m_writeConsole, true);
m_writeConsoleCB->SetValue(m_writeConsole);
- ini.Get("Options", "WriteToWindow", &m_writeWindow, true);
+ options->Get("WriteToWindow", &m_writeWindow, true);
m_writeWindowCB->SetValue(m_writeWindow);
#ifdef _MSC_VER
if (IsDebuggerPresent())
{
- ini.Get("Options", "WriteToDebugger", &m_writeDebugger, true);
+ options->Get("WriteToDebugger", &m_writeDebugger, true);
m_writeDebuggerCB->SetValue(m_writeDebugger);
}
else
@@ -154,7 +156,7 @@ void LogConfigWindow::LoadSettings()
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i)
{
bool log_enabled;
- ini.Get("Logs", m_LogManager->GetShortName((LogTypes::LOG_TYPE)i), &log_enabled, true);
+ ini.GetOrCreateSection("Logs")->Get(m_LogManager->GetShortName((LogTypes::LOG_TYPE)i), &log_enabled, true);
if (log_enabled)
enableAll = false;
@@ -168,22 +170,20 @@ void LogConfigWindow::SaveSettings()
IniFile ini;
ini.Load(File::GetUserPath(F_LOGGERCONFIG_IDX));
- // Save the verbosity level.
- ini.Set("Options", "Verbosity", m_verbosity->GetSelection() + 1);
-
- // Save the enabled/disabled states of the logger outputs to the config ini.
- ini.Set("Options", "WriteToFile", m_writeFile);
- ini.Set("Options", "WriteToConsole", m_writeConsole);
- ini.Set("Options", "WriteToWindow", m_writeWindow);
+ IniFile::Section* options = ini.GetOrCreateSection("Options");
+ options->Set("Verbosity", m_verbosity->GetSelection() + 1);
+ options->Set("WriteToFile", m_writeFile);
+ options->Set("WriteToConsole", m_writeConsole);
+ options->Set("WriteToWindow", m_writeWindow);
#ifdef _MSC_VER
if (IsDebuggerPresent())
- ini.Set("Options", "WriteToDebugger", m_writeDebugger);
+ options->Set("WriteToDebugger", m_writeDebugger);
#endif
// Save all enabled/disabled states of the log types to the config ini.
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i)
{
- ini.Set("Logs", m_LogManager->GetShortName((LogTypes::LOG_TYPE)i), m_checks->IsChecked(i));
+ ini.GetOrCreateSection("Logs")->Set(m_LogManager->GetShortName((LogTypes::LOG_TYPE)i), m_checks->IsChecked(i));
}
ini.Save(File::GetUserPath(F_LOGGERCONFIG_IDX));
diff --git a/Source/Core/DolphinWX/LogWindow.cpp b/Source/Core/DolphinWX/LogWindow.cpp
index 15be942b20..0260595a29 100644
--- a/Source/Core/DolphinWX/LogWindow.cpp
+++ b/Source/Core/DolphinWX/LogWindow.cpp
@@ -69,13 +69,15 @@ void CLogWindow::CreateGUIControls()
IniFile ini;
ini.Load(File::GetUserPath(F_LOGGERCONFIG_IDX));
- ini.Get("LogWindow", "x", &x, Parent->GetSize().GetX() / 2);
- ini.Get("LogWindow", "y", &y, Parent->GetSize().GetY());
- ini.Get("LogWindow", "pos", &winpos, wxAUI_DOCK_RIGHT);
+ IniFile::Section* options = ini.GetOrCreateSection("Options");
+ IniFile::Section* log_window = ini.GetOrCreateSection("LogWindow");
+ log_window->Get("x", &x, Parent->GetSize().GetX() / 2);
+ log_window->Get("y", &y, Parent->GetSize().GetY());
+ log_window->Get("pos", &winpos, wxAUI_DOCK_RIGHT);
// Set up log listeners
int verbosity;
- ini.Get("Options", "Verbosity", &verbosity, 0);
+ options->Get("Verbosity", &verbosity, 0);
// Ensure the verbosity level is valid
if (verbosity < 1)
@@ -84,12 +86,12 @@ void CLogWindow::CreateGUIControls()
verbosity = MAX_LOGLEVEL;
// Get the logger output settings from the config ini file.
- ini.Get("Options", "WriteToFile", &m_writeFile, false);
- ini.Get("Options", "WriteToWindow", &m_writeWindow, true);
+ options->Get("WriteToFile", &m_writeFile, false);
+ options->Get("WriteToWindow", &m_writeWindow, true);
#ifdef _MSC_VER
if (IsDebuggerPresent())
{
- ini.Get("Options", "WriteToDebugger", &m_writeDebugger, true);
+ options->Get("WriteToDebugger", &m_writeDebugger, true);
}
else
#endif
@@ -97,10 +99,11 @@ void CLogWindow::CreateGUIControls()
m_writeDebugger = false;
}
+ IniFile::Section* logs = ini.GetOrCreateSection("Logs");
for (int i = 0; i < LogTypes::NUMBER_OF_LOGS; ++i)
{
bool enable;
- ini.Get("Logs", m_LogManager->GetShortName((LogTypes::LOG_TYPE)i), &enable, true);
+ logs->Get(m_LogManager->GetShortName((LogTypes::LOG_TYPE)i), &enable, true);
if (m_writeWindow && enable)
m_LogManager->AddListener((LogTypes::LOG_TYPE)i, this);
@@ -133,12 +136,12 @@ void CLogWindow::CreateGUIControls()
LogFont.push_back(DebuggerFont);
int font;
- ini.Get("Options", "Font", &font, 0);
+ options->Get("Font", &font, 0);
m_FontChoice->SetSelection(font);
// Word wrap
bool wrap_lines;
- ini.Get("Options", "WrapLines", &wrap_lines, false);
+ options->Get("WrapLines", &wrap_lines, false);
m_WrapLine = new wxCheckBox(this, IDM_WRAPLINE, _("Word Wrap"));
m_WrapLine->SetValue(wrap_lines);
@@ -190,12 +193,16 @@ void CLogWindow::SaveSettings()
if (!Parent->g_pCodeWindow)
{
- ini.Set("LogWindow", "x", x);
- ini.Set("LogWindow", "y", y);
- ini.Set("LogWindow", "pos", winpos);
+ IniFile::Section* log_window = ini.GetOrCreateSection("LogWindow");
+ log_window->Set("x", x);
+ log_window->Set("y", y);
+ log_window->Set("pos", winpos);
}
- ini.Set("Options", "Font", m_FontChoice->GetSelection());
- ini.Set("Options", "WrapLines", m_WrapLine->IsChecked());
+
+ IniFile::Section* options = ini.GetOrCreateSection("Options");
+ options->Set("Font", m_FontChoice->GetSelection());
+ options->Set("WrapLines", m_WrapLine->IsChecked());
+
ini.Save(File::GetUserPath(F_LOGGERCONFIG_IDX));
}
diff --git a/Source/Core/DolphinWX/Main.cpp b/Source/Core/DolphinWX/Main.cpp
index 9a46de1963..0891c3b74f 100644
--- a/Source/Core/DolphinWX/Main.cpp
+++ b/Source/Core/DolphinWX/Main.cpp
@@ -413,7 +413,7 @@ void DolphinApp::InitLanguageSupport()
IniFile ini;
ini.Load(File::GetUserPath(F_DOLPHINCONFIG_IDX));
- ini.Get("Interface", "Language", &language, wxLANGUAGE_DEFAULT);
+ ini.GetOrCreateSection("Interface")->Get("Language", &language, wxLANGUAGE_DEFAULT);
// Load language if possible, fall back to system default otherwise
if (wxLocale::IsAvailable(language))
diff --git a/Source/Core/DolphinWX/MainAndroid.cpp b/Source/Core/DolphinWX/MainAndroid.cpp
index 2d42600ea1..cf3b96fa71 100644
--- a/Source/Core/DolphinWX/MainAndroid.cpp
+++ b/Source/Core/DolphinWX/MainAndroid.cpp
@@ -298,7 +298,7 @@ JNIEXPORT jstring JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_GetConfig
ini.Load(File::GetUserPath(D_CONFIG_IDX) + std::string(file));
std::string value;
- ini.Get(section, key, &value, defaultValue);
+ ini.GetOrCreateSection(section)->Get(key, &value, defaultValue);
return env->NewStringUTF(value.c_str());
}
@@ -313,7 +313,7 @@ jstring jValue)
ini.Load(File::GetUserPath(D_CONFIG_IDX) + std::string(file));
- ini.Set(section, key, value);
+ ini.GetOrCreateSection(section)->Set(key, value);
ini.Save(File::GetUserPath(D_CONFIG_IDX) + std::string(file));
}
diff --git a/Source/Core/DolphinWX/PHackSettings.cpp b/Source/Core/DolphinWX/PHackSettings.cpp
index 3326a85ae9..af20038ef5 100644
--- a/Source/Core/DolphinWX/PHackSettings.cpp
+++ b/Source/Core/DolphinWX/PHackSettings.cpp
@@ -98,7 +98,7 @@ void CPHackSettings::LoadPHackData()
if (!PHPresetsIni.Exists(sIndex, "Title"))
break;
- PHPresetsIni.Get(sIndex, "Title", &sTemp);
+ PHPresetsIni.GetOrCreateSection(sIndex)->Get("Title", &sTemp);
if (sTemp.empty())
sTemp = WxStrToStr(_("(UNKNOWN)"));
@@ -129,13 +129,14 @@ void CPHackSettings::SetRefresh(wxCommandEvent& event)
index -= 2;
sIndex = std::to_string(index);
- PHPresetsIni.Get(sIndex, "PH_SZNear", &bTemp);
+ IniFile::Section* proj_hack = PHPresetsIni.GetOrCreateSection(sIndex);
+ proj_hack->Get("PH_SZNear", &bTemp);
PHackSZNear->Set3StateValue((wxCheckBoxState)bTemp);
- PHPresetsIni.Get(sIndex, "PH_SZFar", &bTemp);
+ proj_hack->Get("PH_SZFar", &bTemp);
PHackSZFar->Set3StateValue((wxCheckBoxState)bTemp);
- PHPresetsIni.Get(sIndex, "PH_ZNear", &sTemp);
+ proj_hack->Get("PH_ZNear", &sTemp);
PHackZNear->SetValue(StrToWxStr(sTemp));
- PHPresetsIni.Get(sIndex, "PH_ZFar", &sTemp);
+ proj_hack->Get("PH_ZFar", &sTemp);
PHackZFar->SetValue(StrToWxStr(sTemp));
}
}
diff --git a/Source/Core/InputCommon/InputConfig.cpp b/Source/Core/InputCommon/InputConfig.cpp
index 859036c69e..b2f972fecb 100644
--- a/Source/Core/InputCommon/InputConfig.cpp
+++ b/Source/Core/InputCommon/InputConfig.cpp
@@ -36,16 +36,21 @@ bool InputPlugin::LoadConfig(bool isGC)
type = "Wiimote";
path = "Profiles/Wiimote/";
}
+
game_ini.Load(File::GetSysDirectory() + GAMESETTINGS_DIR DIR_SEP + SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID() + ".ini");
game_ini.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID() + ".ini", true);
+ IniFile::Section* control_section = game_ini.GetOrCreateSection("Controls");
+
for (int i = 0; i < 4; i++)
{
- if (game_ini.Exists("Controls", type + "Profile" + num[i]))
+ if (control_section->Exists(type + "Profile" + num[i]))
{
- if (game_ini.Get("Controls", type + "Profile" + num[i], &profile[i]))
+ if (control_section->Get(type + "Profile" + num[i], &profile[i]))
{
if (File::Exists(File::GetUserPath(D_CONFIG_IDX) + path + profile[i] + ".ini"))
+ {
useProfile[i] = true;
+ }
else
{
// TODO: Having a PanicAlert for this is dumb.
diff --git a/Source/Core/VideoBackends/Software/SWVideoConfig.cpp b/Source/Core/VideoBackends/Software/SWVideoConfig.cpp
index 091eab35fa..0e4338eb84 100644
--- a/Source/Core/VideoBackends/Software/SWVideoConfig.cpp
+++ b/Source/Core/VideoBackends/Software/SWVideoConfig.cpp
@@ -38,24 +38,29 @@ void SWVideoConfig::Load(const char* ini_file)
IniFile iniFile;
iniFile.Load(ini_file);
- iniFile.Get("Hardware", "Fullscreen", &bFullscreen, 0); // Hardware
- iniFile.Get("Hardware", "RenderToMainframe", &renderToMainframe, false);
-
- iniFile.Get("Rendering", "HwRasterizer", &bHwRasterizer, false);
- iniFile.Get("Rendering", "BypassXFB", &bBypassXFB, false);
- iniFile.Get("Rendering", "ZComploc", &bZComploc, true);
- iniFile.Get("Rendering", "ZFreeze", &bZFreeze, true);
-
- iniFile.Get("Info", "ShowStats", &bShowStats, false);
-
- iniFile.Get("Utility", "DumpTexture", &bDumpTextures, false);
- iniFile.Get("Utility", "DumpObjects", &bDumpObjects, false);
- iniFile.Get("Utility", "DumpFrames", &bDumpFrames, false);
- iniFile.Get("Utility", "DumpTevStages", &bDumpTevStages, false);
- iniFile.Get("Utility", "DumpTevTexFetches", &bDumpTevTextureFetches, false);
-
- iniFile.Get("Misc", "DrawStart", &drawStart, 0);
- iniFile.Get("Misc", "DrawEnd", &drawEnd, 100000);
+ IniFile::Section* hardware = iniFile.GetOrCreateSection("Hardware");
+ hardware->Get("Fullscreen", &bFullscreen, 0); // Hardware
+ hardware->Get("RenderToMainframe", &renderToMainframe, false);
+
+ IniFile::Section* rendering = iniFile.GetOrCreateSection("Rendering");
+ rendering->Get("HwRasterizer", &bHwRasterizer, false);
+ rendering->Get("BypassXFB", &bBypassXFB, false);
+ rendering->Get("ZComploc", &bZComploc, true);
+ rendering->Get("ZFreeze", &bZFreeze, true);
+
+ IniFile::Section* info = iniFile.GetOrCreateSection("Info");
+ info->Get("ShowStats", &bShowStats, false);
+
+ IniFile::Section* utility = iniFile.GetOrCreateSection("Utility");
+ utility->Get("DumpTexture", &bDumpTextures, false);
+ utility->Get("DumpObjects", &bDumpObjects, false);
+ utility->Get("DumpFrames", &bDumpFrames, false);
+ utility->Get("DumpTevStages", &bDumpTevStages, false);
+ utility->Get("DumpTevTexFetches", &bDumpTevTextureFetches, false);
+
+ IniFile::Section* misc = iniFile.GetOrCreateSection("Misc");
+ misc->Get("DrawStart", &drawStart, 0);
+ misc->Get("DrawEnd", &drawEnd, 100000);
}
void SWVideoConfig::Save(const char* ini_file)
@@ -63,24 +68,29 @@ void SWVideoConfig::Save(const char* ini_file)
IniFile iniFile;
iniFile.Load(ini_file);
- iniFile.Set("Hardware", "Fullscreen", bFullscreen);
- iniFile.Set("Hardware", "RenderToMainframe", renderToMainframe);
-
- iniFile.Set("Rendering", "HwRasterizer", bHwRasterizer);
- iniFile.Set("Rendering", "BypassXFB", bBypassXFB);
- iniFile.Set("Rendering", "ZComploc", bZComploc);
- iniFile.Set("Rendering", "ZFreeze", bZFreeze);
-
- iniFile.Set("Info", "ShowStats", bShowStats);
-
- iniFile.Set("Utility", "DumpTexture", bDumpTextures);
- iniFile.Set("Utility", "DumpObjects", bDumpObjects);
- iniFile.Set("Utility", "DumpFrames", bDumpFrames);
- iniFile.Set("Utility", "DumpTevStages", bDumpTevStages);
- iniFile.Set("Utility", "DumpTevTexFetches", bDumpTevTextureFetches);
-
- iniFile.Set("Misc", "DrawStart", drawStart);
- iniFile.Set("Misc", "DrawEnd", drawEnd);
+ IniFile::Section* hardware = iniFile.GetOrCreateSection("Hardware");
+ hardware->Set("Fullscreen", bFullscreen);
+ hardware->Set("RenderToMainframe", renderToMainframe);
+
+ IniFile::Section* rendering = iniFile.GetOrCreateSection("Rendering");
+ rendering->Set("HwRasterizer", bHwRasterizer);
+ rendering->Set("BypassXFB", bBypassXFB);
+ rendering->Set("ZComploc", bZComploc);
+ rendering->Set("ZFreeze", bZFreeze);
+
+ IniFile::Section* info = iniFile.GetOrCreateSection("Info");
+ info->Set("ShowStats", bShowStats);
+
+ IniFile::Section* utility = iniFile.GetOrCreateSection("Utility");
+ utility->Set("DumpTexture", bDumpTextures);
+ utility->Set("DumpObjects", bDumpObjects);
+ utility->Set("DumpFrames", bDumpFrames);
+ utility->Set("DumpTevStages", bDumpTevStages);
+ utility->Set("DumpTevTexFetches", bDumpTevTextureFetches);
+
+ IniFile::Section* misc = iniFile.GetOrCreateSection("Misc");
+ misc->Set("DrawStart", drawStart);
+ misc->Set("DrawEnd", drawEnd);
iniFile.Save(ini_file);
}
diff --git a/Source/Core/VideoCommon/VideoConfig.cpp b/Source/Core/VideoCommon/VideoConfig.cpp
index c2440035b1..bb8d698508 100644
--- a/Source/Core/VideoCommon/VideoConfig.cpp
+++ b/Source/Core/VideoCommon/VideoConfig.cpp
@@ -44,63 +44,63 @@ void VideoConfig::Load(const std::string& ini_file)
IniFile iniFile;
iniFile.Load(ini_file);
- iniFile.Get("Hardware", "VSync", &bVSync, 0); // Hardware
- iniFile.Get("Settings", "wideScreenHack", &bWidescreenHack, false);
- iniFile.Get("Settings", "AspectRatio", &iAspectRatio, (int)ASPECT_AUTO);
- iniFile.Get("Settings", "Crop", &bCrop, false);
- iniFile.Get("Settings", "UseXFB", &bUseXFB, 0);
- iniFile.Get("Settings", "UseRealXFB", &bUseRealXFB, 0);
- iniFile.Get("Settings", "SafeTextureCacheColorSamples", &iSafeTextureCache_ColorSamples,128);
- iniFile.Get("Settings", "ShowFPS", &bShowFPS, false); // Settings
- iniFile.Get("Settings", "LogFPSToFile", &bLogFPSToFile, false);
- iniFile.Get("Settings", "ShowInputDisplay", &bShowInputDisplay, false);
- iniFile.Get("Settings", "OverlayStats", &bOverlayStats, false);
- iniFile.Get("Settings", "OverlayProjStats", &bOverlayProjStats, false);
- iniFile.Get("Settings", "ShowEFBCopyRegions", &bShowEFBCopyRegions, false);
- iniFile.Get("Settings", "DumpTextures", &bDumpTextures, 0);
- iniFile.Get("Settings", "HiresTextures", &bHiresTextures, 0);
- iniFile.Get("Settings", "DumpEFBTarget", &bDumpEFBTarget, 0);
- iniFile.Get("Settings", "DumpFrames", &bDumpFrames, 0);
- iniFile.Get("Settings", "FreeLook", &bFreeLook, 0);
- iniFile.Get("Settings", "UseFFV1", &bUseFFV1, 0);
- iniFile.Get("Settings", "AnaglyphStereo", &bAnaglyphStereo, false);
- iniFile.Get("Settings", "AnaglyphStereoSeparation", &iAnaglyphStereoSeparation, 200);
- iniFile.Get("Settings", "AnaglyphFocalAngle", &iAnaglyphFocalAngle, 0);
- iniFile.Get("Settings", "EnablePixelLighting", &bEnablePixelLighting, 0);
- iniFile.Get("Settings", "FastDepthCalc", &bFastDepthCalc, true);
-
- iniFile.Get("Settings", "MSAA", &iMultisampleMode, 0);
- iniFile.Get("Settings", "EFBScale", &iEFBScale, (int) SCALE_1X); // native
-
- iniFile.Get("Settings", "DstAlphaPass", &bDstAlphaPass, false);
-
- iniFile.Get("Settings", "TexFmtOverlayEnable", &bTexFmtOverlayEnable, 0);
- iniFile.Get("Settings", "TexFmtOverlayCenter", &bTexFmtOverlayCenter, 0);
- iniFile.Get("Settings", "WireFrame", &bWireFrame, 0);
- iniFile.Get("Settings", "DisableFog", &bDisableFog, 0);
-
- iniFile.Get("Settings", "OMPDecoder", &bOMPDecoder, false);
-
- iniFile.Get("Settings", "EnableShaderDebugging", &bEnableShaderDebugging, false);
-
- iniFile.Get("Enhancements", "ForceFiltering", &bForceFiltering, 0);
- iniFile.Get("Enhancements", "MaxAnisotropy", &iMaxAnisotropy, 0); // NOTE - this is x in (1 << x)
- iniFile.Get("Enhancements", "PostProcessingShader", &sPostProcessingShader, "");
- iniFile.Get("Enhancements", "Enable3dVision", &b3DVision, false);
-
- iniFile.Get("Hacks", "EFBAccessEnable", &bEFBAccessEnable, true);
- iniFile.Get("Hacks", "EFBCopyEnable", &bEFBCopyEnable, true);
- iniFile.Get("Hacks", "EFBToTextureEnable", &bCopyEFBToTexture, true);
- iniFile.Get("Hacks", "EFBScaledCopy", &bCopyEFBScaled, true);
- iniFile.Get("Hacks", "EFBCopyCacheEnable", &bEFBCopyCacheEnable, false);
- iniFile.Get("Hacks", "EFBEmulateFormatChanges", &bEFBEmulateFormatChanges, false);
-
- iniFile.Get("Hardware", "Adapter", &iAdapter, 0);
+ IniFile::Section* hardware = iniFile.GetOrCreateSection("Hardware");
+ hardware->Get("VSync", &bVSync, 0);
+ hardware->Get("Adapter", &iAdapter, 0);
+
+ IniFile::Section* settings = iniFile.GetOrCreateSection("Settings");
+ settings->Get("wideScreenHack", &bWidescreenHack, false);
+ settings->Get("AspectRatio", &iAspectRatio, (int)ASPECT_AUTO);
+ settings->Get("Crop", &bCrop, false);
+ settings->Get("UseXFB", &bUseXFB, 0);
+ settings->Get("UseRealXFB", &bUseRealXFB, 0);
+ settings->Get("SafeTextureCacheColorSamples", &iSafeTextureCache_ColorSamples,128);
+ settings->Get("ShowFPS", &bShowFPS, false);
+ settings->Get("LogFPSToFile", &bLogFPSToFile, false);
+ settings->Get("ShowInputDisplay", &bShowInputDisplay, false);
+ settings->Get("OverlayStats", &bOverlayStats, false);
+ settings->Get("OverlayProjStats", &bOverlayProjStats, false);
+ settings->Get("ShowEFBCopyRegions", &bShowEFBCopyRegions, false);
+ settings->Get("DumpTextures", &bDumpTextures, 0);
+ settings->Get("HiresTextures", &bHiresTextures, 0);
+ settings->Get("DumpEFBTarget", &bDumpEFBTarget, 0);
+ settings->Get("DumpFrames", &bDumpFrames, 0);
+ settings->Get("FreeLook", &bFreeLook, 0);
+ settings->Get("UseFFV1", &bUseFFV1, 0);
+ settings->Get("AnaglyphStereo", &bAnaglyphStereo, false);
+ settings->Get("AnaglyphStereoSeparation", &iAnaglyphStereoSeparation, 200);
+ settings->Get("AnaglyphFocalAngle", &iAnaglyphFocalAngle, 0);
+ settings->Get("EnablePixelLighting", &bEnablePixelLighting, 0);
+ settings->Get("FastDepthCalc", &bFastDepthCalc, true);
+ settings->Get("MSAA", &iMultisampleMode, 0);
+ settings->Get("EFBScale", &iEFBScale, (int) SCALE_1X); // native
+ settings->Get("DstAlphaPass", &bDstAlphaPass, false);
+ settings->Get("TexFmtOverlayEnable", &bTexFmtOverlayEnable, 0);
+ settings->Get("TexFmtOverlayCenter", &bTexFmtOverlayCenter, 0);
+ settings->Get("WireFrame", &bWireFrame, 0);
+ settings->Get("DisableFog", &bDisableFog, 0);
+ settings->Get("OMPDecoder", &bOMPDecoder, false);
+ settings->Get("EnableShaderDebugging", &bEnableShaderDebugging, false);
+
+ IniFile::Section* enhancements = iniFile.GetOrCreateSection("Enhancements");
+ enhancements->Get("ForceFiltering", &bForceFiltering, 0);
+ enhancements->Get("MaxAnisotropy", &iMaxAnisotropy, 0); // NOTE - this is x in (1 << x)
+ enhancements->Get("PostProcessingShader", &sPostProcessingShader, "");
+ enhancements->Get("Enable3dVision", &b3DVision, false);
+
+ IniFile::Section* hacks = iniFile.GetOrCreateSection("Hacks");
+ hacks->Get("EFBAccessEnable", &bEFBAccessEnable, true);
+ hacks->Get("EFBCopyEnable", &bEFBCopyEnable, true);
+ hacks->Get("EFBToTextureEnable", &bCopyEFBToTexture, true);
+ hacks->Get("EFBScaledCopy", &bCopyEFBScaled, true);
+ hacks->Get("EFBCopyCacheEnable", &bEFBCopyCacheEnable, false);
+ hacks->Get("EFBEmulateFormatChanges", &bEFBEmulateFormatChanges, false);
// Load common settings
iniFile.Load(File::GetUserPath(F_DOLPHINCONFIG_IDX));
+ IniFile::Section* interface = iniFile.GetOrCreateSection("Interface");
bool bTmp;
- iniFile.Get("Interface", "UsePanicHandlers", &bTmp, true);
+ interface->Get("UsePanicHandlers", &bTmp, true);
SetEnableAlert(bTmp);
// Shader Debugging causes a huge slowdown and it's easy to forget about it
@@ -216,56 +216,58 @@ void VideoConfig::Save(const std::string& ini_file)
{
IniFile iniFile;
iniFile.Load(ini_file);
- iniFile.Set("Hardware", "VSync", bVSync);
- iniFile.Set("Settings", "AspectRatio", iAspectRatio);
- iniFile.Set("Settings", "Crop", bCrop);
- iniFile.Set("Settings", "wideScreenHack", bWidescreenHack);
- iniFile.Set("Settings", "UseXFB", bUseXFB);
- iniFile.Set("Settings", "UseRealXFB", bUseRealXFB);
- iniFile.Set("Settings", "SafeTextureCacheColorSamples", iSafeTextureCache_ColorSamples);
- iniFile.Set("Settings", "ShowFPS", bShowFPS);
- iniFile.Set("Settings", "LogFPSToFile", bLogFPSToFile);
- iniFile.Set("Settings", "ShowInputDisplay", bShowInputDisplay);
- iniFile.Set("Settings", "OverlayStats", bOverlayStats);
- iniFile.Set("Settings", "OverlayProjStats", bOverlayProjStats);
- iniFile.Set("Settings", "DumpTextures", bDumpTextures);
- iniFile.Set("Settings", "HiresTextures", bHiresTextures);
- iniFile.Set("Settings", "DumpEFBTarget", bDumpEFBTarget);
- iniFile.Set("Settings", "DumpFrames", bDumpFrames);
- iniFile.Set("Settings", "FreeLook", bFreeLook);
- iniFile.Set("Settings", "UseFFV1", bUseFFV1);
- iniFile.Set("Settings", "AnaglyphStereo", bAnaglyphStereo);
- iniFile.Set("Settings", "AnaglyphStereoSeparation", iAnaglyphStereoSeparation);
- iniFile.Set("Settings", "AnaglyphFocalAngle", iAnaglyphFocalAngle);
- iniFile.Set("Settings", "EnablePixelLighting", bEnablePixelLighting);
- iniFile.Set("Settings", "FastDepthCalc", bFastDepthCalc);
-
- iniFile.Set("Settings", "ShowEFBCopyRegions", bShowEFBCopyRegions);
- iniFile.Set("Settings", "MSAA", iMultisampleMode);
- iniFile.Set("Settings", "EFBScale", iEFBScale);
- iniFile.Set("Settings", "TexFmtOverlayEnable", bTexFmtOverlayEnable);
- iniFile.Set("Settings", "TexFmtOverlayCenter", bTexFmtOverlayCenter);
- iniFile.Set("Settings", "Wireframe", bWireFrame);
- iniFile.Set("Settings", "DstAlphaPass", bDstAlphaPass);
- iniFile.Set("Settings", "DisableFog", bDisableFog);
-
- iniFile.Set("Settings", "OMPDecoder", bOMPDecoder);
-
- iniFile.Set("Settings", "EnableShaderDebugging", bEnableShaderDebugging);
-
- iniFile.Set("Enhancements", "ForceFiltering", bForceFiltering);
- iniFile.Set("Enhancements", "MaxAnisotropy", iMaxAnisotropy);
- iniFile.Set("Enhancements", "PostProcessingShader", sPostProcessingShader);
- iniFile.Set("Enhancements", "Enable3dVision", b3DVision);
-
- iniFile.Set("Hacks", "EFBAccessEnable", bEFBAccessEnable);
- iniFile.Set("Hacks", "EFBCopyEnable", bEFBCopyEnable);
- iniFile.Set("Hacks", "EFBToTextureEnable", bCopyEFBToTexture);
- iniFile.Set("Hacks", "EFBScaledCopy", bCopyEFBScaled);
- iniFile.Set("Hacks", "EFBCopyCacheEnable", bEFBCopyCacheEnable);
- iniFile.Set("Hacks", "EFBEmulateFormatChanges", bEFBEmulateFormatChanges);
-
- iniFile.Set("Hardware", "Adapter", iAdapter);
+
+ IniFile::Section* hardware = iniFile.GetOrCreateSection("Hardware");
+ hardware->Set("VSync", bVSync);
+ hardware->Set("Adapter", iAdapter);
+
+ IniFile::Section* settings = iniFile.GetOrCreateSection("Settings");
+ settings->Set("AspectRatio", iAspectRatio);
+ settings->Set("Crop", bCrop);
+ settings->Set("wideScreenHack", bWidescreenHack);
+ settings->Set("UseXFB", bUseXFB);
+ settings->Set("UseRealXFB", bUseRealXFB);
+ settings->Set("SafeTextureCacheColorSamples", iSafeTextureCache_ColorSamples);
+ settings->Set("ShowFPS", bShowFPS);
+ settings->Set("LogFPSToFile", bLogFPSToFile);
+ settings->Set("ShowInputDisplay", bShowInputDisplay);
+ settings->Set("OverlayStats", bOverlayStats);
+ settings->Set("OverlayProjStats", bOverlayProjStats);
+ settings->Set("DumpTextures", bDumpTextures);
+ settings->Set("HiresTextures", bHiresTextures);
+ settings->Set("DumpEFBTarget", bDumpEFBTarget);
+ settings->Set("DumpFrames", bDumpFrames);
+ settings->Set("FreeLook", bFreeLook);
+ settings->Set("UseFFV1", bUseFFV1);
+ settings->Set("AnaglyphStereo", bAnaglyphStereo);
+ settings->Set("AnaglyphStereoSeparation", iAnaglyphStereoSeparation);
+ settings->Set("AnaglyphFocalAngle", iAnaglyphFocalAngle);
+ settings->Set("EnablePixelLighting", bEnablePixelLighting);
+ settings->Set("FastDepthCalc", bFastDepthCalc);
+ settings->Set("ShowEFBCopyRegions", bShowEFBCopyRegions);
+ settings->Set("MSAA", iMultisampleMode);
+ settings->Set("EFBScale", iEFBScale);
+ settings->Set("TexFmtOverlayEnable", bTexFmtOverlayEnable);
+ settings->Set("TexFmtOverlayCenter", bTexFmtOverlayCenter);
+ settings->Set("Wireframe", bWireFrame);
+ settings->Set("DstAlphaPass", bDstAlphaPass);
+ settings->Set("DisableFog", bDisableFog);
+ settings->Set("OMPDecoder", bOMPDecoder);
+ settings->Set("EnableShaderDebugging", bEnableShaderDebugging);
+
+ IniFile::Section* enhancements = iniFile.GetOrCreateSection("Enhancements");
+ enhancements->Set("ForceFiltering", bForceFiltering);
+ enhancements->Set("MaxAnisotropy", iMaxAnisotropy);
+ enhancements->Set("PostProcessingShader", sPostProcessingShader);
+ enhancements->Set("Enable3dVision", b3DVision);
+
+ IniFile::Section* hacks = iniFile.GetOrCreateSection("Hacks");
+ hacks->Set("EFBAccessEnable", bEFBAccessEnable);
+ hacks->Set("EFBCopyEnable", bEFBCopyEnable);
+ hacks->Set("EFBToTextureEnable", bCopyEFBToTexture);
+ hacks->Set("EFBScaledCopy", bCopyEFBScaled);
+ hacks->Set("EFBCopyCacheEnable", bEFBCopyCacheEnable);
+ hacks->Set("EFBEmulateFormatChanges", bEFBEmulateFormatChanges);
iniFile.Save(ini_file);
}