hackfix for per-game settings overriding the main settings. This quick and dirty hack goes out to billiard in return for his own generous hacks. fixes issue 3004. it's a hack, so it should be replaced with a more sane method...
also: hacks. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6337 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
e1549658a2
commit
7b23bf666f
|
@ -63,6 +63,16 @@ namespace BootManager
|
||||||
extern "C" HINSTANCE wxGetInstance();
|
extern "C" HINSTANCE wxGetInstance();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// TODO this is an ugly hack which allows us to restore values trampled by per-game settings
|
||||||
|
// Apply fire liberally
|
||||||
|
struct ConfigCache
|
||||||
|
{
|
||||||
|
bool bCPUThread, bSkipIdle, bEnableFPRF, bMMU, bMMUBAT,
|
||||||
|
bAlternateRFI, bFastDiscSpeed, bMergeBlocks;
|
||||||
|
int iTLBHack;
|
||||||
|
};
|
||||||
|
static ConfigCache config_cache;
|
||||||
|
|
||||||
// Boot the ISO or file
|
// Boot the ISO or file
|
||||||
bool BootCore(const std::string& _rFilename)
|
bool BootCore(const std::string& _rFilename)
|
||||||
{
|
{
|
||||||
|
@ -102,6 +112,15 @@ bool BootCore(const std::string& _rFilename)
|
||||||
StartUp.m_strGameIni = std::string(File::GetUserPath(D_GAMECONFIG_IDX)) + unique_id + ".ini";
|
StartUp.m_strGameIni = std::string(File::GetUserPath(D_GAMECONFIG_IDX)) + unique_id + ".ini";
|
||||||
if (unique_id.size() == 6 && game_ini.Load(StartUp.m_strGameIni.c_str()))
|
if (unique_id.size() == 6 && game_ini.Load(StartUp.m_strGameIni.c_str()))
|
||||||
{
|
{
|
||||||
|
config_cache.bCPUThread = StartUp.bCPUThread;
|
||||||
|
config_cache.bSkipIdle = StartUp.bSkipIdle;
|
||||||
|
config_cache.bEnableFPRF = StartUp.bEnableFPRF;
|
||||||
|
config_cache.bMMU = StartUp.bMMU;
|
||||||
|
config_cache.bMMUBAT = StartUp.bMMUBAT;
|
||||||
|
config_cache.iTLBHack = StartUp.iTLBHack;
|
||||||
|
config_cache.bAlternateRFI = StartUp.bAlternateRFI;
|
||||||
|
config_cache.bFastDiscSpeed = StartUp.bFastDiscSpeed;
|
||||||
|
config_cache.bMergeBlocks = StartUp.bMergeBlocks;
|
||||||
// General settings
|
// General settings
|
||||||
game_ini.Get("Core", "CPUThread", &StartUp.bCPUThread, StartUp.bCPUThread);
|
game_ini.Get("Core", "CPUThread", &StartUp.bCPUThread, StartUp.bCPUThread);
|
||||||
game_ini.Get("Core", "SkipIdle", &StartUp.bSkipIdle, StartUp.bSkipIdle);
|
game_ini.Get("Core", "SkipIdle", &StartUp.bSkipIdle, StartUp.bSkipIdle);
|
||||||
|
@ -148,6 +167,18 @@ bool BootCore(const std::string& _rFilename)
|
||||||
void Stop()
|
void Stop()
|
||||||
{
|
{
|
||||||
Core::Stop();
|
Core::Stop();
|
||||||
|
|
||||||
|
SCoreStartupParameter& StartUp = SConfig::GetInstance().m_LocalCoreStartupParameter;
|
||||||
|
|
||||||
|
StartUp.bCPUThread = config_cache.bCPUThread;
|
||||||
|
StartUp.bSkipIdle = config_cache.bSkipIdle;
|
||||||
|
StartUp.bEnableFPRF = config_cache.bEnableFPRF;
|
||||||
|
StartUp.bMMU = config_cache.bMMU;
|
||||||
|
StartUp.bMMUBAT = config_cache.bMMUBAT;
|
||||||
|
StartUp.iTLBHack = config_cache.iTLBHack;
|
||||||
|
StartUp.bAlternateRFI = config_cache.bAlternateRFI;
|
||||||
|
StartUp.bFastDiscSpeed = config_cache.bFastDiscSpeed;
|
||||||
|
StartUp.bMergeBlocks = config_cache.bMergeBlocks;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
|
@ -913,7 +913,7 @@ void CFrame::DoStop()
|
||||||
g_pCodeWindow->ToggleDLLWindow(IDM_VIDEOWINDOW, false);
|
g_pCodeWindow->ToggleDLLWindow(IDM_VIDEOWINDOW, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
Core::Stop();
|
BootManager::Stop();
|
||||||
|
|
||||||
// Destroy the renderer frame when not rendering to main
|
// Destroy the renderer frame when not rendering to main
|
||||||
m_RenderParent->Disconnect(wxID_ANY, wxEVT_SIZE,
|
m_RenderParent->Disconnect(wxID_ANY, wxEVT_SIZE,
|
||||||
|
|
Loading…
Reference in New Issue