Bootmanager.cpp fixes and clean up.

Some settings that bootmanger reads from game ini can be changed while a game is running, so we don't have to revert these back to what they were when starting the game, unless they were actually changed by the game ini.

Fix signed/unsigned warnings that pauldacheez pointed out.
This commit is contained in:
Rachel Bryk 2014-01-02 16:36:06 -05:00
parent 450cacd092
commit 509ec9cc99
1 changed files with 36 additions and 24 deletions

View File

@ -49,11 +49,11 @@ struct ConfigCache
bVBeamSpeedHack, bSyncGPU, bFastDiscSpeed, bMergeBlocks, bDSPHLE, bHLE_BS2, bTLBHack, bUseFPS; bVBeamSpeedHack, bSyncGPU, bFastDiscSpeed, bMergeBlocks, bDSPHLE, bHLE_BS2, bTLBHack, bUseFPS;
int iCPUCore, Volume; int iCPUCore, Volume;
int iWiimoteSource[5]; int iWiimoteSource[5];
int iSetWiimoteSource[5]; SIDevices Pads[4];
SIDevices Pads[4], SetPads[4];
unsigned int framelimit; unsigned int framelimit;
TEXIDevices m_EXIDevice[2]; TEXIDevices m_EXIDevice[2];
std::string strBackend, sBackend; std::string strBackend, sBackend;
bool bSetFramelimit, bSetEXIDevice[2], bSetUseFPS, bSetVolume, bSetPads[4], bSetWiimoteSource[5];
}; };
static ConfigCache config_cache; static ConfigCache config_cache;
@ -123,8 +123,11 @@ bool BootCore(const std::string& _rFilename)
{ {
config_cache.Pads[i] = SConfig::GetInstance().m_SIDevice[i]; config_cache.Pads[i] = SConfig::GetInstance().m_SIDevice[i];
} }
std::fill_n(config_cache.iSetWiimoteSource, 5, -1); std::fill_n(config_cache.bSetWiimoteSource, 5, false);
std::fill_n(config_cache.SetPads, 5, (SIDevices) -1); std::fill_n(config_cache.bSetPads, 5, false);
config_cache.bSetEXIDevice[0] = false;
config_cache.bSetEXIDevice[1] = false;
config_cache.bSetFramelimit = false;
// General settings // General settings
game_ini.Get("Core", "CPUThread", &StartUp.bCPUThread, StartUp.bCPUThread); game_ini.Get("Core", "CPUThread", &StartUp.bCPUThread, StartUp.bCPUThread);
@ -142,9 +145,12 @@ bool BootCore(const std::string& _rFilename)
game_ini.Get("Core", "GFXBackend", &StartUp.m_strVideoBackend, StartUp.m_strVideoBackend.c_str()); game_ini.Get("Core", "GFXBackend", &StartUp.m_strVideoBackend, StartUp.m_strVideoBackend.c_str());
game_ini.Get("Core", "CPUCore", &StartUp.iCPUCore, StartUp.iCPUCore); game_ini.Get("Core", "CPUCore", &StartUp.iCPUCore, StartUp.iCPUCore);
game_ini.Get("Core", "HLE_BS2", &StartUp.bHLE_BS2, StartUp.bHLE_BS2); game_ini.Get("Core", "HLE_BS2", &StartUp.bHLE_BS2, StartUp.bHLE_BS2);
game_ini.Get("Core", "FrameLimit", &SConfig::GetInstance().m_Framelimit, SConfig::GetInstance().m_Framelimit); if (game_ini.Get("Core", "FrameLimit", &SConfig::GetInstance().m_Framelimit, SConfig::GetInstance().m_Framelimit))
game_ini.Get("Core", "UseFPS", &SConfig::GetInstance().b_UseFPS,SConfig::GetInstance().b_UseFPS); config_cache.bSetFramelimit = true;
game_ini.Get("DSP", "Volume", &SConfig::GetInstance().m_Volume, SConfig::GetInstance().m_Volume); if (game_ini.Get("Core", "UseFPS", &SConfig::GetInstance().b_UseFPS, SConfig::GetInstance().b_UseFPS))
config_cache.bSetUseFPS = true;
if (game_ini.Get("DSP", "Volume", &SConfig::GetInstance().m_Volume, SConfig::GetInstance().m_Volume))
config_cache.bSetVolume = true;
game_ini.Get("DSP", "EnableJIT", &SConfig::GetInstance().m_EnableJIT, SConfig::GetInstance().m_EnableJIT); game_ini.Get("DSP", "EnableJIT", &SConfig::GetInstance().m_EnableJIT, SConfig::GetInstance().m_EnableJIT);
game_ini.Get("DSP", "Backend", &SConfig::GetInstance().sBackend, SConfig::GetInstance().sBackend.c_str()); game_ini.Get("DSP", "Backend", &SConfig::GetInstance().sBackend, SConfig::GetInstance().sBackend.c_str());
VideoBackend::ActivateBackend(StartUp.m_strVideoBackend); VideoBackend::ActivateBackend(StartUp.m_strVideoBackend);
@ -156,7 +162,7 @@ bool BootCore(const std::string& _rFilename)
if (source >= (int) SIDEVICE_NONE && source <= (int) SIDEVICE_AM_BASEBOARD) if (source >= (int) SIDEVICE_NONE && source <= (int) SIDEVICE_AM_BASEBOARD)
{ {
SConfig::GetInstance().m_SIDevice[i] = (SIDevices) source; SConfig::GetInstance().m_SIDevice[i] = (SIDevices) source;
config_cache.SetPads[i] = (SIDevices) source; config_cache.bSetPads[i] = true;
} }
} }
@ -170,17 +176,17 @@ bool BootCore(const std::string& _rFilename)
for (unsigned int i = 0; i < MAX_WIIMOTES; ++i) for (unsigned int i = 0; i < MAX_WIIMOTES; ++i)
{ {
game_ini.Get("Controls", StringFromFormat("WiimoteSource%u", i).c_str(), &source, -1); game_ini.Get("Controls", StringFromFormat("WiimoteSource%u", i).c_str(), &source, -1);
if (source != -1 && g_wiimote_sources[i] != source && source >= WIIMOTE_SRC_NONE && source <= WIIMOTE_SRC_HYBRID) if (source != -1 && g_wiimote_sources[i] != (unsigned) source && source >= WIIMOTE_SRC_NONE && source <= WIIMOTE_SRC_HYBRID)
{ {
config_cache.iSetWiimoteSource[i] = source; config_cache.bSetWiimoteSource[i] = true;
g_wiimote_sources[i] = source; g_wiimote_sources[i] = source;
WiimoteReal::ChangeWiimoteSource(i, source); WiimoteReal::ChangeWiimoteSource(i, source);
} }
} }
game_ini.Get("Controls", "WiimoteSourceBB", &source, -1); game_ini.Get("Controls", "WiimoteSourceBB", &source, -1);
if (source != -1 && g_wiimote_sources[WIIMOTE_BALANCE_BOARD] != source && (source == WIIMOTE_SRC_NONE || source == WIIMOTE_SRC_REAL)) if (source != -1 && g_wiimote_sources[WIIMOTE_BALANCE_BOARD] != (unsigned) source && (source == WIIMOTE_SRC_NONE || source == WIIMOTE_SRC_REAL))
{ {
config_cache.iSetWiimoteSource[WIIMOTE_BALANCE_BOARD] = source; config_cache.bSetWiimoteSource[WIIMOTE_BALANCE_BOARD] = true;
g_wiimote_sources[WIIMOTE_BALANCE_BOARD] = source; g_wiimote_sources[WIIMOTE_BALANCE_BOARD] = source;
WiimoteReal::ChangeWiimoteSource(4, source); WiimoteReal::ChangeWiimoteSource(4, source);
} }
@ -212,6 +218,8 @@ bool BootCore(const std::string& _rFilename)
SConfig::GetInstance().m_EnableJIT = g_NetPlaySettings.m_DSPEnableJIT; SConfig::GetInstance().m_EnableJIT = g_NetPlaySettings.m_DSPEnableJIT;
SConfig::GetInstance().m_EXIDevice[0] = g_NetPlaySettings.m_EXIDevice[0]; SConfig::GetInstance().m_EXIDevice[0] = g_NetPlaySettings.m_EXIDevice[0];
SConfig::GetInstance().m_EXIDevice[1] = g_NetPlaySettings.m_EXIDevice[1]; SConfig::GetInstance().m_EXIDevice[1] = g_NetPlaySettings.m_EXIDevice[1];
config_cache.bSetEXIDevice[0] = true;
config_cache.bSetEXIDevice[1] = true;
} }
// Run the game // Run the game
@ -251,30 +259,34 @@ void Stop()
StartUp.m_strVideoBackend = config_cache.strBackend; StartUp.m_strVideoBackend = config_cache.strBackend;
VideoBackend::ActivateBackend(StartUp.m_strVideoBackend); VideoBackend::ActivateBackend(StartUp.m_strVideoBackend);
StartUp.bHLE_BS2 = config_cache.bHLE_BS2; StartUp.bHLE_BS2 = config_cache.bHLE_BS2;
SConfig::GetInstance().m_Framelimit = config_cache.framelimit;
SConfig::GetInstance().b_UseFPS = config_cache.bUseFPS;
SConfig::GetInstance().m_EnableJIT = config_cache.m_EnableJIT;
SConfig::GetInstance().m_EXIDevice[0] = config_cache.m_EXIDevice[0];
SConfig::GetInstance().m_EXIDevice[1] = config_cache.m_EXIDevice[1];
SConfig::GetInstance().m_Volume = config_cache.Volume;
SConfig::GetInstance().sBackend = config_cache.sBackend; SConfig::GetInstance().sBackend = config_cache.sBackend;
SConfig::GetInstance().m_EnableJIT = config_cache.m_EnableJIT;
// 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)
SConfig::GetInstance().m_Framelimit = config_cache.framelimit;
if (config_cache.bSetUseFPS)
SConfig::GetInstance().b_UseFPS = config_cache.bUseFPS;
if (config_cache.bSetEXIDevice[0])
SConfig::GetInstance().m_EXIDevice[0] = config_cache.m_EXIDevice[0];
if (config_cache.bSetEXIDevice[1])
SConfig::GetInstance().m_EXIDevice[1] = config_cache.m_EXIDevice[1];
if (config_cache.bSetVolume)
SConfig::GetInstance().m_Volume = config_cache.Volume;
for (unsigned int i = 0; i < 4; ++i) for (unsigned int i = 0; i < 4; ++i)
{ {
// If user changed pad settings mid game, keep their new setting, otherwise revert to what it was before booting the game. if (config_cache.bSetPads[i])
if (config_cache.SetPads[i] == SConfig::GetInstance().m_SIDevice[i])
{ {
SConfig::GetInstance().m_SIDevice[i] = config_cache.Pads[i]; SConfig::GetInstance().m_SIDevice[i] = config_cache.Pads[i];
} }
} }
if (StartUp.bWii) if (StartUp.bWii)
{ {
for (unsigned int i = 0; i < MAX_BBMOTES; ++i) for (unsigned int i = 0; i < MAX_BBMOTES; ++i)
{ {
// If user changed wiimote settings mid game, keep their new setting, otherwise revert to what it was before booting the game. if (config_cache.bSetWiimoteSource[i])
if (config_cache.iSetWiimoteSource[i] == g_wiimote_sources[i])
{ {
g_wiimote_sources[i] = config_cache.iWiimoteSource[i]; g_wiimote_sources[i] = config_cache.iWiimoteSource[i];
WiimoteReal::ChangeWiimoteSource(i, config_cache.iWiimoteSource[i]); WiimoteReal::ChangeWiimoteSource(i, config_cache.iWiimoteSource[i]);