diff --git a/Source/Core/Core/Boot/Boot.cpp b/Source/Core/Core/Boot/Boot.cpp index 2c2d52c39c..44d1cbd39d 100644 --- a/Source/Core/Core/Boot/Boot.cpp +++ b/Source/Core/Core/Boot/Boot.cpp @@ -226,8 +226,7 @@ bool CBoot::BootUp() g_symbolDB.Clear(); // PAL Wii uses NTSC framerate and linecount in 60Hz modes - const bool bPAL60 = _StartupPara.bWii && SConfig::GetInstance().m_SYSCONF->GetData("IPL.E60"); - VideoInterface::Preset(_StartupPara.bNTSC || bPAL60); + VideoInterface::Preset(_StartupPara.bNTSC || (_StartupPara.bWii && _StartupPara.bPAL60)); switch (_StartupPara.m_BootType) { diff --git a/Source/Core/Core/BootManager.cpp b/Source/Core/Core/BootManager.cpp index f3c2d8814b..dfba1d1fa9 100644 --- a/Source/Core/Core/BootManager.cpp +++ b/Source/Core/Core/BootManager.cpp @@ -48,7 +48,7 @@ namespace BootManager struct ConfigCache { bool valid, bCPUThread, bSkipIdle, bSyncGPUOnSkipIdleHack, bFPRF, bAccurateNaNs, bMMU, bDCBZOFF, m_EnableJIT, bDSPThread, - bSyncGPU, bFastDiscSpeed, bDSPHLE, bHLE_BS2, bProgressive; + bSyncGPU, bFastDiscSpeed, bDSPHLE, bHLE_BS2, bProgressive, bPAL60; int iSelectedLanguage; int iCPUCore, Volume; int iWiimoteSource[MAX_BBMOTES]; @@ -121,6 +121,7 @@ bool BootCore(const std::string& _rFilename) config_cache.framelimit = SConfig::GetInstance().m_Framelimit; config_cache.frameSkip = SConfig::GetInstance().m_FrameSkip; config_cache.bProgressive = StartUp.bProgressive; + config_cache.bPAL60 = StartUp.bPAL60; config_cache.iSelectedLanguage = StartUp.SelectedLanguage; for (unsigned int i = 0; i < MAX_BBMOTES; ++i) { @@ -256,6 +257,7 @@ bool BootCore(const std::string& _rFilename) } SConfig::GetInstance().m_SYSCONF->SetData("IPL.PGS", StartUp.bProgressive); + SConfig::GetInstance().m_SYSCONF->SetData("IPL.E60", StartUp.bPAL60); // Run the game // Init the core @@ -298,6 +300,8 @@ void Stop() StartUp.bProgressive = config_cache.bProgressive; StartUp.SelectedLanguage = config_cache.iSelectedLanguage; SConfig::GetInstance().m_SYSCONF->SetData("IPL.PGS", config_cache.bProgressive); + StartUp.bPAL60 = config_cache.bPAL60; + SConfig::GetInstance().m_SYSCONF->SetData("IPL.E60", config_cache.bPAL60); // Only change these back if they were actually set by game ini, since they can be changed while a game is running. if (config_cache.bSetFramelimit) diff --git a/Source/Core/Core/ConfigManager.cpp b/Source/Core/Core/ConfigManager.cpp index 22fd12ff64..577e140a3e 100644 --- a/Source/Core/Core/ConfigManager.cpp +++ b/Source/Core/Core/ConfigManager.cpp @@ -52,7 +52,8 @@ SConfig::SConfig() iRenderWindowWidth(640), iRenderWindowHeight(480), bRenderWindowAutoSize(false), bKeepWindowOnTop(false), bFullscreen(false), bRenderToMain(false), - bProgressive(false), bDisableScreenSaver(false), + bProgressive(false), bPAL60(false), + bDisableScreenSaver(false), iPosX(100), iPosY(100), iWidth(800), iHeight(600), bLoopFifoReplay(true) { @@ -173,6 +174,7 @@ void SConfig::SaveDisplaySettings(IniFile& ini) display->Set("RenderWindowAutoSize", bRenderWindowAutoSize); display->Set("KeepWindowOnTop", bKeepWindowOnTop); display->Set("ProgressiveScan", bProgressive); + display->Set("PAL60", bPAL60); display->Set("DisableScreenSaver", bDisableScreenSaver); display->Set("ForceNTSCJ", bForceNTSCJ); } @@ -415,6 +417,7 @@ void SConfig::LoadDisplaySettings(IniFile& ini) display->Get("RenderWindowAutoSize", &bRenderWindowAutoSize, false); display->Get("KeepWindowOnTop", &bKeepWindowOnTop, false); display->Get("ProgressiveScan", &bProgressive, false); + display->Get("PAL60", &bPAL60, true); display->Get("DisableScreenSaver", &bDisableScreenSaver, true); display->Get("ForceNTSCJ", &bForceNTSCJ, false); } diff --git a/Source/Core/Core/ConfigManager.h b/Source/Core/Core/ConfigManager.h index dbc646fd75..b37b742e5e 100644 --- a/Source/Core/Core/ConfigManager.h +++ b/Source/Core/Core/ConfigManager.h @@ -120,7 +120,8 @@ struct SConfig : NonCopyable int iRenderWindowWidth, iRenderWindowHeight; bool bRenderWindowAutoSize, bKeepWindowOnTop; bool bFullscreen, bRenderToMain; - bool bProgressive, bDisableScreenSaver; + bool bProgressive, bPAL60; + bool bDisableScreenSaver; int iPosX, iPosY, iWidth, iHeight; diff --git a/Source/Core/DolphinWX/Config/WiiConfigPane.cpp b/Source/Core/DolphinWX/Config/WiiConfigPane.cpp index c4d1e1fbfd..6ab2814585 100644 --- a/Source/Core/DolphinWX/Config/WiiConfigPane.cpp +++ b/Source/Core/DolphinWX/Config/WiiConfigPane.cpp @@ -84,7 +84,7 @@ void WiiConfigPane::InitializeGUI() void WiiConfigPane::LoadGUIValues() { m_screensaver_checkbox->SetValue(!!SConfig::GetInstance().m_SYSCONF->GetData("IPL.SSV")); - m_pal60_mode_checkbox->SetValue(!!SConfig::GetInstance().m_SYSCONF->GetData("IPL.E60")); + m_pal60_mode_checkbox->SetValue(SConfig::GetInstance().bPAL60); m_aspect_ratio_choice->SetSelection(SConfig::GetInstance().m_SYSCONF->GetData("IPL.AR")); m_system_language_choice->SetSelection(SConfig::GetInstance().m_SYSCONF->GetData("IPL.LNG")); @@ -110,6 +110,7 @@ void WiiConfigPane::OnScreenSaverCheckBoxChanged(wxCommandEvent& event) void WiiConfigPane::OnPAL60CheckBoxChanged(wxCommandEvent& event) { + SConfig::GetInstance().bPAL60 = m_pal60_mode_checkbox->IsChecked(); SConfig::GetInstance().m_SYSCONF->SetData("IPL.E60", m_pal60_mode_checkbox->IsChecked()); }