Options: merge SCoreStartupParameter into SConfig

This commit is contained in:
degasus 2015-06-12 13:56:53 +02:00
parent b9a9fcd26d
commit c375111076
114 changed files with 1100 additions and 1163 deletions

View File

@ -129,7 +129,7 @@ void OpenALStream::SoundLoop()
{ {
Common::SetCurrentThreadName("Audio thread - openal"); Common::SetCurrentThreadName("Audio thread - openal");
bool surround_capable = SConfig::GetInstance().m_LocalCoreStartupParameter.bDPL2Decoder; bool surround_capable = SConfig::GetInstance().bDPL2Decoder;
#if defined(__APPLE__) #if defined(__APPLE__)
bool float32_capable = false; bool float32_capable = false;
const ALenum AL_FORMAT_STEREO_FLOAT32 = 0; const ALenum AL_FORMAT_STEREO_FLOAT32 = 0;
@ -141,7 +141,7 @@ void OpenALStream::SoundLoop()
#endif #endif
u32 ulFrequency = m_mixer->GetSampleRate(); u32 ulFrequency = m_mixer->GetSampleRate();
numBuffers = SConfig::GetInstance().m_LocalCoreStartupParameter.iLatency + 2; // OpenAL requires a minimum of two buffers numBuffers = SConfig::GetInstance().iLatency + 2; // OpenAL requires a minimum of two buffers
memset(uiBuffers, 0, numBuffers * sizeof(ALuint)); memset(uiBuffers, 0, numBuffers * sizeof(ALuint));
uiSource = 0; uiSource = 0;

View File

@ -21,7 +21,7 @@ PulseAudio::PulseAudio()
bool PulseAudio::Start() bool PulseAudio::Start()
{ {
m_stereo = !SConfig::GetInstance().m_LocalCoreStartupParameter.bDPL2Decoder; m_stereo = !SConfig::GetInstance().bDPL2Decoder;
m_channels = m_stereo ? 2 : 5; // will tell PA we use a Stereo or 5.0 channel setup m_channels = m_stereo ? 2 : 5; // will tell PA we use a Stereo or 5.0 channel setup
NOTICE_LOG(AUDIO, "PulseAudio backend using %d channels", m_channels); NOTICE_LOG(AUDIO, "PulseAudio backend using %d channels", m_channels);

View File

@ -105,7 +105,7 @@ struct ARAddr
void LoadCodes(const IniFile& globalIni, const IniFile& localIni, bool forceLoad) void LoadCodes(const IniFile& globalIni, const IniFile& localIni, bool forceLoad)
{ {
// Parses the Action Replay section of a game ini file. // Parses the Action Replay section of a game ini file.
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableCheats && if (!SConfig::GetInstance().bEnableCheats &&
!forceLoad) !forceLoad)
return; return;
@ -276,8 +276,8 @@ void SetARCode_IsActive(bool active, size_t index)
void UpdateActiveList() void UpdateActiveList()
{ {
bool old_value = SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableCheats; bool old_value = SConfig::GetInstance().bEnableCheats;
SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableCheats = false; SConfig::GetInstance().bEnableCheats = false;
b_RanOnce = false; b_RanOnce = false;
activeCodes.clear(); activeCodes.clear();
for (auto& arCode : arCodes) for (auto& arCode : arCodes)
@ -285,7 +285,7 @@ void UpdateActiveList()
if (arCode.active) if (arCode.active)
activeCodes.push_back(arCode); activeCodes.push_back(arCode);
} }
SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableCheats = old_value; SConfig::GetInstance().bEnableCheats = old_value;
} }
void EnableSelfLogging(bool enable) void EnableSelfLogging(bool enable)
@ -760,7 +760,7 @@ static bool ConditionalCode(const ARAddr& addr, const u32 data, int* const pSkip
void RunAllActive() void RunAllActive()
{ {
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableCheats) if (SConfig::GetInstance().bEnableCheats)
{ {
for (auto& activeCode : activeCodes) for (auto& activeCode : activeCodes)
{ {

View File

@ -12,7 +12,6 @@
#include "Core/ConfigManager.h" #include "Core/ConfigManager.h"
#include "Core/Core.h" #include "Core/Core.h"
#include "Core/CoreParameter.h"
#include "Core/Host.h" #include "Core/Host.h"
#include "Core/PatchEngine.h" #include "Core/PatchEngine.h"
#include "Core/Boot/Boot.h" #include "Core/Boot/Boot.h"
@ -75,10 +74,10 @@ bool CBoot::FindMapFile(std::string* existing_map_file,
std::string title_id_str; std::string title_id_str;
size_t name_begin_index; size_t name_begin_index;
SCoreStartupParameter& _StartupPara = SConfig::GetInstance().m_LocalCoreStartupParameter; SConfig& _StartupPara = SConfig::GetInstance();
switch (_StartupPara.m_BootType) switch (_StartupPara.m_BootType)
{ {
case SCoreStartupParameter::BOOT_WII_NAND: case SConfig::BOOT_WII_NAND:
{ {
const DiscIO::INANDContentLoader& Loader = const DiscIO::INANDContentLoader& Loader =
DiscIO::CNANDContentManager::Access().GetNANDLoader(_StartupPara.m_strFilename); DiscIO::CNANDContentManager::Access().GetNANDLoader(_StartupPara.m_strFilename);
@ -92,8 +91,8 @@ bool CBoot::FindMapFile(std::string* existing_map_file,
break; break;
} }
case SCoreStartupParameter::BOOT_ELF: case SConfig::BOOT_ELF:
case SCoreStartupParameter::BOOT_DOL: case SConfig::BOOT_DOL:
// Strip the .elf/.dol file extension and directories before the name // Strip the .elf/.dol file extension and directories before the name
name_begin_index = _StartupPara.m_strFilename.find_last_of("/") + 1; name_begin_index = _StartupPara.m_strFilename.find_last_of("/") + 1;
if ((_StartupPara.m_strFilename.find_last_of("\\") + 1) > name_begin_index) if ((_StartupPara.m_strFilename.find_last_of("\\") + 1) > name_begin_index)
@ -220,8 +219,7 @@ bool CBoot::Load_BS2(const std::string& _rBootROMFilename)
// Third boot step after BootManager and Core. See Call schedule in BootManager.cpp // Third boot step after BootManager and Core. See Call schedule in BootManager.cpp
bool CBoot::BootUp() bool CBoot::BootUp()
{ {
SCoreStartupParameter& _StartupPara = SConfig& _StartupPara = SConfig::GetInstance();
SConfig::GetInstance().m_LocalCoreStartupParameter;
NOTICE_LOG(BOOT, "Booting %s", _StartupPara.m_strFilename.c_str()); NOTICE_LOG(BOOT, "Booting %s", _StartupPara.m_strFilename.c_str());
@ -234,7 +232,7 @@ bool CBoot::BootUp()
switch (_StartupPara.m_BootType) switch (_StartupPara.m_BootType)
{ {
// GCM and Wii // GCM and Wii
case SCoreStartupParameter::BOOT_ISO: case SConfig::BOOT_ISO:
{ {
DVDInterface::SetVolumeName(_StartupPara.m_strFilename); DVDInterface::SetVolumeName(_StartupPara.m_strFilename);
DVDInterface::SetDiscInside(DVDInterface::VolumeIsValid()); DVDInterface::SetDiscInside(DVDInterface::VolumeIsValid());
@ -299,7 +297,7 @@ bool CBoot::BootUp()
} }
// DOL // DOL
case SCoreStartupParameter::BOOT_DOL: case SConfig::BOOT_DOL:
{ {
CDolLoader dolLoader(_StartupPara.m_strFilename); CDolLoader dolLoader(_StartupPara.m_strFilename);
if (!dolLoader.IsValid()) if (!dolLoader.IsValid())
@ -366,7 +364,7 @@ bool CBoot::BootUp()
} }
// ELF // ELF
case SCoreStartupParameter::BOOT_ELF: case SConfig::BOOT_ELF:
{ {
// load image or create virtual drive from directory // load image or create virtual drive from directory
if (!_StartupPara.m_strDVDRoot.empty()) if (!_StartupPara.m_strDVDRoot.empty())
@ -402,7 +400,7 @@ bool CBoot::BootUp()
} }
// Wii WAD // Wii WAD
case SCoreStartupParameter::BOOT_WII_NAND: case SConfig::BOOT_WII_NAND:
Boot_WiiWAD(_StartupPara.m_strFilename); Boot_WiiWAD(_StartupPara.m_strFilename);
if (LoadMapFromFilename()) if (LoadMapFromFilename())
@ -419,7 +417,7 @@ bool CBoot::BootUp()
// Bootstrap 2 (AKA: Initial Program Loader, "BIOS") // Bootstrap 2 (AKA: Initial Program Loader, "BIOS")
case SCoreStartupParameter::BOOT_BS2: case SConfig::BOOT_BS2:
{ {
DVDInterface::SetDiscInside(DVDInterface::VolumeIsValid()); DVDInterface::SetDiscInside(DVDInterface::VolumeIsValid());
if (Load_BS2(_StartupPara.m_strBootROM)) if (Load_BS2(_StartupPara.m_strBootROM))
@ -434,7 +432,7 @@ bool CBoot::BootUp()
break; break;
} }
case SCoreStartupParameter::BOOT_DFF: case SConfig::BOOT_DFF:
// do nothing // do nothing
break; break;
@ -446,7 +444,7 @@ bool CBoot::BootUp()
} }
// HLE jump to loader (homebrew). Disabled when Gecko is active as it interferes with the code handler // HLE jump to loader (homebrew). Disabled when Gecko is active as it interferes with the code handler
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableCheats) if (!SConfig::GetInstance().bEnableCheats)
{ {
HLE::Patch(0x80001800, "HBReload"); HLE::Patch(0x80001800, "HBReload");
Memory::CopyToEmu(0x00001804, "STUBHAXX", 8); Memory::CopyToEmu(0x00001804, "STUBHAXX", 8);

View File

@ -63,7 +63,7 @@ bool CBoot::EmulatedBS2_GC(bool skipAppLoader)
// TODO determine why some games fail when using a retail ID. (Seem to take different EXI paths, see Ikaruga for example) // TODO determine why some games fail when using a retail ID. (Seem to take different EXI paths, see Ikaruga for example)
PowerPC::HostWrite_U32(0x10000006, 0x8000002C); // Console type - DevKit (retail ID == 0x00000003) see YAGCD 4.2.1.1.2 PowerPC::HostWrite_U32(0x10000006, 0x8000002C); // Console type - DevKit (retail ID == 0x00000003) see YAGCD 4.2.1.1.2
PowerPC::HostWrite_U32(SConfig::GetInstance().m_LocalCoreStartupParameter.bNTSC PowerPC::HostWrite_U32(SConfig::GetInstance().bNTSC
? 0 : 1, 0x800000CC); // Fake the VI Init of the IPL (YAGCD 4.2.1.4) ? 0 : 1, 0x800000CC); // Fake the VI Init of the IPL (YAGCD 4.2.1.4)
PowerPC::HostWrite_U32(0x01000000, 0x800000d0); // ARAM Size. 16MB main + 4/16/32MB external (retail consoles have no external ARAM) PowerPC::HostWrite_U32(0x01000000, 0x800000d0); // ARAM Size. 16MB main + 4/16/32MB external (retail consoles have no external ARAM)
@ -95,7 +95,7 @@ bool CBoot::EmulatedBS2_GC(bool skipAppLoader)
DVDInterface::DVDRead(iAppLoaderOffset + 0x20, 0x01200000, iAppLoaderSize, false); DVDInterface::DVDRead(iAppLoaderOffset + 0x20, 0x01200000, iAppLoaderSize, false);
// Setup pointers like real BS2 does // Setup pointers like real BS2 does
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bNTSC) if (SConfig::GetInstance().bNTSC)
{ {
PowerPC::ppcState.gpr[1] = 0x81566550; // StackPointer, used to be set to 0x816ffff0 PowerPC::ppcState.gpr[1] = 0x81566550; // StackPointer, used to be set to 0x816ffff0
PowerPC::ppcState.gpr[2] = 0x81465cc0; // Global pointer to Small Data Area 2 Base (haven't seen anything use it...meh) PowerPC::ppcState.gpr[2] = 0x81465cc0; // Global pointer to Small Data Area 2 Base (haven't seen anything use it...meh)
@ -294,7 +294,7 @@ bool CBoot::SetupWiiMemory(DiscIO::IVolume::ECountry country)
Memory::Write_U32(0x80000000, 0x00003184); // GameID Address Memory::Write_U32(0x80000000, 0x00003184); // GameID Address
// Fake the VI Init of the IPL // Fake the VI Init of the IPL
Memory::Write_U32(SConfig::GetInstance().m_LocalCoreStartupParameter.bNTSC ? 0 : 1, 0x000000CC); Memory::Write_U32(SConfig::GetInstance().bNTSC ? 0 : 1, 0x000000CC);
// Clear exception handler. Why? Don't we begin with only zeros? // Clear exception handler. Why? Don't we begin with only zeros?
for (int i = 0x3000; i <= 0x3038; i += 4) for (int i = 0x3000; i <= 0x3038; i += 4)

View File

@ -77,12 +77,12 @@ static GPUDeterminismMode ParseGPUDeterminismMode(const std::string& mode)
// Boot the ISO or file // Boot the ISO or file
bool BootCore(const std::string& _rFilename) bool BootCore(const std::string& _rFilename)
{ {
SCoreStartupParameter& StartUp = SConfig::GetInstance().m_LocalCoreStartupParameter; SConfig& StartUp = SConfig::GetInstance();
// Use custom settings for debugging mode // Use custom settings for debugging mode
Host_SetStartupDebuggingParameters(); Host_SetStartupDebuggingParameters();
StartUp.m_BootType = SCoreStartupParameter::BOOT_ISO; StartUp.m_BootType = SConfig::BOOT_ISO;
StartUp.m_strFilename = _rFilename; StartUp.m_strFilename = _rFilename;
SConfig::GetInstance().m_LastFilename = _rFilename; SConfig::GetInstance().m_LastFilename = _rFilename;
SConfig::GetInstance().SaveSettings(); SConfig::GetInstance().SaveSettings();
@ -93,7 +93,7 @@ bool BootCore(const std::string& _rFilename)
config_cache.bHLE_BS2 = StartUp.bHLE_BS2; config_cache.bHLE_BS2 = StartUp.bHLE_BS2;
// If for example the ISO file is bad we return here // If for example the ISO file is bad we return here
if (!StartUp.AutoSetup(SCoreStartupParameter::BOOT_DEFAULT)) if (!StartUp.AutoSetup(SConfig::BOOT_DEFAULT))
return false; return false;
// Load game specific settings // Load game specific settings
@ -272,7 +272,7 @@ void Stop()
{ {
Core::Stop(); Core::Stop();
SCoreStartupParameter& StartUp = SConfig::GetInstance().m_LocalCoreStartupParameter; SConfig& StartUp = SConfig::GetInstance();
StartUp.m_strUniqueID = "00000000"; StartUp.m_strUniqueID = "00000000";
if (config_cache.valid) if (config_cache.valid)

View File

@ -3,7 +3,6 @@ set(SRCS ActionReplay.cpp
BootManager.cpp BootManager.cpp
ConfigManager.cpp ConfigManager.cpp
Core.cpp Core.cpp
CoreParameter.cpp
CoreTiming.cpp CoreTiming.cpp
DSPEmulator.cpp DSPEmulator.cpp
ec_wii.cpp ec_wii.cpp

View File

@ -2,19 +2,61 @@
// Licensed under GPLv2+ // Licensed under GPLv2+
// Refer to the license.txt file included. // Refer to the license.txt file included.
#include <cinttypes>
#include <memory>
#include "Common/CDUtils.h"
#include "Common/CommonPaths.h" #include "Common/CommonPaths.h"
#include "Common/CommonTypes.h" #include "Common/CommonTypes.h"
#include "Common/FileUtil.h" #include "Common/FileUtil.h"
#include "Common/IniFile.h" #include "Common/StringUtil.h"
#include "Core/ConfigManager.h" #include "Core/ConfigManager.h"
#include "Core/Core.h" // for bWii
#include "Core/Boot/Boot.h"
#include "Core/Boot/Boot_DOL.h"
#include "Core/FifoPlayer/FifoDataFile.h"
#include "Core/HW/SI.h" #include "Core/HW/SI.h"
#include "Core/PowerPC/PowerPC.h" #include "Core/PowerPC/PowerPC.h"
#include "DiscIO/NANDContentLoader.h" #include "DiscIO/NANDContentLoader.h"
#include "DiscIO/VolumeCreator.h"
SConfig* SConfig::m_Instance; SConfig* SConfig::m_Instance;
SConfig::SConfig() SConfig::SConfig()
: bEnableDebugging(false), bAutomaticStart(false), bBootToPause(false),
bJITNoBlockCache(false), bJITNoBlockLinking(false),
bJITOff(false),
bJITLoadStoreOff(false), bJITLoadStorelXzOff(false),
bJITLoadStorelwzOff(false), bJITLoadStorelbzxOff(false),
bJITLoadStoreFloatingOff(false), bJITLoadStorePairedOff(false),
bJITFloatingPointOff(false), bJITIntegerOff(false),
bJITPairedOff(false), bJITSystemRegistersOff(false),
bJITBranchOff(false),
bJITILTimeProfiling(false), bJITILOutputIR(false),
bFPRF(false), bAccurateNaNs(false),
bCPUThread(true), bDSPThread(false), bDSPHLE(true),
bSkipIdle(true), bSyncGPUOnSkipIdleHack(true), bNTSC(false), bForceNTSCJ(false),
bHLE_BS2(true), bEnableCheats(false),
bEnableMemcardSaving(true),
bDPL2Decoder(false), iLatency(14),
bRunCompareServer(false), bRunCompareClient(false),
bMMU(false), bDCBZOFF(false),
iBBDumpPort(0),
bFastDiscSpeed(false), bSyncGPU(false),
SelectedLanguage(0), bOverrideGCLanguage(false), bWii(false),
bConfirmStop(false), bHideCursor(false),
bAutoHideCursor(false), bUsePanicHandlers(true), bOnScreenDisplayMessages(true),
iRenderWindowXPos(-1), iRenderWindowYPos(-1),
iRenderWindowWidth(640), iRenderWindowHeight(480),
bRenderWindowAutoSize(false), bKeepWindowOnTop(false),
bFullscreen(false), bRenderToMain(false),
bProgressive(false), bDisableScreenSaver(false),
iPosX(100), iPosY(100), iWidth(800), iHeight(600),
bLoopFifoReplay(true)
{ {
LoadDefaults();
// Make sure we have log manager // Make sure we have log manager
LoadSettings(); LoadSettings();
} }
@ -88,9 +130,9 @@ void SConfig::SaveGeneralSettings(IniFile& ini)
#ifdef USE_GDBSTUB #ifdef USE_GDBSTUB
#ifndef _WIN32 #ifndef _WIN32
general->Set("GDBSocket", m_LocalCoreStartupParameter.gdb_socket); general->Set("GDBSocket", gdb_socket);
#endif #endif
general->Set("GDBPort", m_LocalCoreStartupParameter.iGDBPort); general->Set("GDBPort", iGDBPort);
#endif #endif
} }
@ -98,22 +140,22 @@ void SConfig::SaveInterfaceSettings(IniFile& ini)
{ {
IniFile::Section* interface = ini.GetOrCreateSection("Interface"); IniFile::Section* interface = ini.GetOrCreateSection("Interface");
interface->Set("ConfirmStop", m_LocalCoreStartupParameter.bConfirmStop); interface->Set("ConfirmStop", bConfirmStop);
interface->Set("UsePanicHandlers", m_LocalCoreStartupParameter.bUsePanicHandlers); interface->Set("UsePanicHandlers", bUsePanicHandlers);
interface->Set("OnScreenDisplayMessages", m_LocalCoreStartupParameter.bOnScreenDisplayMessages); interface->Set("OnScreenDisplayMessages", bOnScreenDisplayMessages);
interface->Set("HideCursor", m_LocalCoreStartupParameter.bHideCursor); interface->Set("HideCursor", bHideCursor);
interface->Set("AutoHideCursor", m_LocalCoreStartupParameter.bAutoHideCursor); interface->Set("AutoHideCursor", bAutoHideCursor);
interface->Set("MainWindowPosX", (m_LocalCoreStartupParameter.iPosX == -32000) ? 0 : m_LocalCoreStartupParameter.iPosX); // TODO - HAX interface->Set("MainWindowPosX", (iPosX == -32000) ? 0 : iPosX); // TODO - HAX
interface->Set("MainWindowPosY", (m_LocalCoreStartupParameter.iPosY == -32000) ? 0 : m_LocalCoreStartupParameter.iPosY); // TODO - HAX interface->Set("MainWindowPosY", (iPosY == -32000) ? 0 : iPosY); // TODO - HAX
interface->Set("MainWindowWidth", m_LocalCoreStartupParameter.iWidth); interface->Set("MainWindowWidth", iWidth);
interface->Set("MainWindowHeight", m_LocalCoreStartupParameter.iHeight); interface->Set("MainWindowHeight", iHeight);
interface->Set("Language", m_InterfaceLanguage); interface->Set("Language", m_InterfaceLanguage);
interface->Set("ShowToolbar", m_InterfaceToolbar); interface->Set("ShowToolbar", m_InterfaceToolbar);
interface->Set("ShowStatusbar", m_InterfaceStatusbar); interface->Set("ShowStatusbar", m_InterfaceStatusbar);
interface->Set("ShowLogWindow", m_InterfaceLogWindow); interface->Set("ShowLogWindow", m_InterfaceLogWindow);
interface->Set("ShowLogConfigWindow", m_InterfaceLogConfigWindow); interface->Set("ShowLogConfigWindow", m_InterfaceLogConfigWindow);
interface->Set("ExtendedFPSInfo", m_InterfaceExtendedFPSInfo); interface->Set("ExtendedFPSInfo", m_InterfaceExtendedFPSInfo);
interface->Set("ThemeName40", m_LocalCoreStartupParameter.theme_name); interface->Set("ThemeName40", theme_name);
interface->Set("PauseOnFocusLost", m_PauseOnFocusLost); interface->Set("PauseOnFocusLost", m_PauseOnFocusLost);
} }
@ -121,18 +163,18 @@ void SConfig::SaveDisplaySettings(IniFile& ini)
{ {
IniFile::Section* display = ini.GetOrCreateSection("Display"); IniFile::Section* display = ini.GetOrCreateSection("Display");
display->Set("FullscreenResolution", m_LocalCoreStartupParameter.strFullscreenResolution); display->Set("FullscreenResolution", strFullscreenResolution);
display->Set("Fullscreen", m_LocalCoreStartupParameter.bFullscreen); display->Set("Fullscreen", bFullscreen);
display->Set("RenderToMain", m_LocalCoreStartupParameter.bRenderToMain); display->Set("RenderToMain", bRenderToMain);
display->Set("RenderWindowXPos", m_LocalCoreStartupParameter.iRenderWindowXPos); display->Set("RenderWindowXPos", iRenderWindowXPos);
display->Set("RenderWindowYPos", m_LocalCoreStartupParameter.iRenderWindowYPos); display->Set("RenderWindowYPos", iRenderWindowYPos);
display->Set("RenderWindowWidth", m_LocalCoreStartupParameter.iRenderWindowWidth); display->Set("RenderWindowWidth", iRenderWindowWidth);
display->Set("RenderWindowHeight", m_LocalCoreStartupParameter.iRenderWindowHeight); display->Set("RenderWindowHeight", iRenderWindowHeight);
display->Set("RenderWindowAutoSize", m_LocalCoreStartupParameter.bRenderWindowAutoSize); display->Set("RenderWindowAutoSize", bRenderWindowAutoSize);
display->Set("KeepWindowOnTop", m_LocalCoreStartupParameter.bKeepWindowOnTop); display->Set("KeepWindowOnTop", bKeepWindowOnTop);
display->Set("ProgressiveScan", m_LocalCoreStartupParameter.bProgressive); display->Set("ProgressiveScan", bProgressive);
display->Set("DisableScreenSaver", m_LocalCoreStartupParameter.bDisableScreenSaver); display->Set("DisableScreenSaver", bDisableScreenSaver);
display->Set("ForceNTSCJ", m_LocalCoreStartupParameter.bForceNTSCJ); display->Set("ForceNTSCJ", bForceNTSCJ);
} }
void SConfig::SaveGameListSettings(IniFile& ini) void SConfig::SaveGameListSettings(IniFile& ini)
@ -175,25 +217,25 @@ void SConfig::SaveCoreSettings(IniFile& ini)
{ {
IniFile::Section* core = ini.GetOrCreateSection("Core"); IniFile::Section* core = ini.GetOrCreateSection("Core");
core->Set("HLE_BS2", m_LocalCoreStartupParameter.bHLE_BS2); core->Set("HLE_BS2", bHLE_BS2);
core->Set("CPUCore", m_LocalCoreStartupParameter.iCPUCore); core->Set("CPUCore", iCPUCore);
core->Set("Fastmem", m_LocalCoreStartupParameter.bFastmem); core->Set("Fastmem", bFastmem);
core->Set("CPUThread", m_LocalCoreStartupParameter.bCPUThread); core->Set("CPUThread", bCPUThread);
core->Set("DSPHLE", m_LocalCoreStartupParameter.bDSPHLE); core->Set("DSPHLE", bDSPHLE);
core->Set("SkipIdle", m_LocalCoreStartupParameter.bSkipIdle); core->Set("SkipIdle", bSkipIdle);
core->Set("SyncOnSkipIdle", m_LocalCoreStartupParameter.bSyncGPUOnSkipIdleHack); core->Set("SyncOnSkipIdle", bSyncGPUOnSkipIdleHack);
core->Set("SyncGPU", m_LocalCoreStartupParameter.bSyncGPU); core->Set("SyncGPU", bSyncGPU);
core->Set("SyncGpuMaxDistance", m_LocalCoreStartupParameter.iSyncGpuMaxDistance); core->Set("SyncGpuMaxDistance", iSyncGpuMaxDistance);
core->Set("SyncGpuMinDistance", m_LocalCoreStartupParameter.iSyncGpuMinDistance); core->Set("SyncGpuMinDistance", iSyncGpuMinDistance);
core->Set("SyncGpuOverclock", m_LocalCoreStartupParameter.fSyncGpuOverclock); core->Set("SyncGpuOverclock", fSyncGpuOverclock);
core->Set("DefaultISO", m_LocalCoreStartupParameter.m_strDefaultISO); core->Set("DefaultISO", m_strDefaultISO);
core->Set("DVDRoot", m_LocalCoreStartupParameter.m_strDVDRoot); core->Set("DVDRoot", m_strDVDRoot);
core->Set("Apploader", m_LocalCoreStartupParameter.m_strApploader); core->Set("Apploader", m_strApploader);
core->Set("EnableCheats", m_LocalCoreStartupParameter.bEnableCheats); core->Set("EnableCheats", bEnableCheats);
core->Set("SelectedLanguage", m_LocalCoreStartupParameter.SelectedLanguage); core->Set("SelectedLanguage", SelectedLanguage);
core->Set("OverrideGCLang", m_LocalCoreStartupParameter.bOverrideGCLanguage); core->Set("OverrideGCLang", bOverrideGCLanguage);
core->Set("DPL2Decoder", m_LocalCoreStartupParameter.bDPL2Decoder); core->Set("DPL2Decoder", bDPL2Decoder);
core->Set("Latency", m_LocalCoreStartupParameter.iLatency); core->Set("Latency", iLatency);
core->Set("MemcardAPath", m_strMemoryCardA); core->Set("MemcardAPath", m_strMemoryCardA);
core->Set("MemcardBPath", m_strMemoryCardB); core->Set("MemcardBPath", m_strMemoryCardB);
core->Set("AgpCartAPath", m_strGbaCartA); core->Set("AgpCartAPath", m_strGbaCartA);
@ -210,14 +252,14 @@ void SConfig::SaveCoreSettings(IniFile& ini)
core->Set("WiiKeyboard", m_WiiKeyboard); core->Set("WiiKeyboard", m_WiiKeyboard);
core->Set("WiimoteContinuousScanning", m_WiimoteContinuousScanning); core->Set("WiimoteContinuousScanning", m_WiimoteContinuousScanning);
core->Set("WiimoteEnableSpeaker", m_WiimoteEnableSpeaker); core->Set("WiimoteEnableSpeaker", m_WiimoteEnableSpeaker);
core->Set("RunCompareServer", m_LocalCoreStartupParameter.bRunCompareServer); core->Set("RunCompareServer", bRunCompareServer);
core->Set("RunCompareClient", m_LocalCoreStartupParameter.bRunCompareClient); core->Set("RunCompareClient", bRunCompareClient);
core->Set("FrameLimit", m_Framelimit); core->Set("FrameLimit", m_Framelimit);
core->Set("FrameSkip", m_FrameSkip); core->Set("FrameSkip", m_FrameSkip);
core->Set("Overclock", m_OCFactor); core->Set("Overclock", m_OCFactor);
core->Set("OverclockEnable", m_OCEnable); core->Set("OverclockEnable", m_OCEnable);
core->Set("GFXBackend", m_LocalCoreStartupParameter.m_strVideoBackend); core->Set("GFXBackend", m_strVideoBackend);
core->Set("GPUDeterminismMode", m_LocalCoreStartupParameter.m_strGPUDeterminismMode); core->Set("GPUDeterminismMode", m_strGPUDeterminismMode);
core->Set("GameCubeAdapter", m_GameCubeAdapter); core->Set("GameCubeAdapter", m_GameCubeAdapter);
core->Set("AdapterRumble", m_AdapterRumble); core->Set("AdapterRumble", m_AdapterRumble);
} }
@ -255,7 +297,7 @@ void SConfig::SaveFifoPlayerSettings(IniFile& ini)
{ {
IniFile::Section* fifoplayer = ini.GetOrCreateSection("FifoPlayer"); IniFile::Section* fifoplayer = ini.GetOrCreateSection("FifoPlayer");
fifoplayer->Set("LoopReplay", m_LocalCoreStartupParameter.bLoopFifoReplay); fifoplayer->Set("LoopReplay", bLoopFifoReplay);
} }
void SConfig::LoadSettings() void SConfig::LoadSettings()
@ -286,9 +328,9 @@ void SConfig::LoadGeneralSettings(IniFile& ini)
general->Get("ShowFrameCount", &m_ShowFrameCount, false); general->Get("ShowFrameCount", &m_ShowFrameCount, false);
#ifdef USE_GDBSTUB #ifdef USE_GDBSTUB
#ifndef _WIN32 #ifndef _WIN32
general->Get("GDBSocket", &m_LocalCoreStartupParameter.gdb_socket, ""); general->Get("GDBSocket", &gdb_socket, "");
#endif #endif
general->Get("GDBPort", &(m_LocalCoreStartupParameter.iGDBPort), -1); general->Get("GDBPort", &(iGDBPort), -1);
#endif #endif
m_ISOFolder.clear(); m_ISOFolder.clear();
@ -340,22 +382,22 @@ void SConfig::LoadInterfaceSettings(IniFile& ini)
{ {
IniFile::Section* interface = ini.GetOrCreateSection("Interface"); IniFile::Section* interface = ini.GetOrCreateSection("Interface");
interface->Get("ConfirmStop", &m_LocalCoreStartupParameter.bConfirmStop, true); interface->Get("ConfirmStop", &bConfirmStop, true);
interface->Get("UsePanicHandlers", &m_LocalCoreStartupParameter.bUsePanicHandlers, true); interface->Get("UsePanicHandlers", &bUsePanicHandlers, true);
interface->Get("OnScreenDisplayMessages", &m_LocalCoreStartupParameter.bOnScreenDisplayMessages, true); interface->Get("OnScreenDisplayMessages", &bOnScreenDisplayMessages, true);
interface->Get("HideCursor", &m_LocalCoreStartupParameter.bHideCursor, false); interface->Get("HideCursor", &bHideCursor, false);
interface->Get("AutoHideCursor", &m_LocalCoreStartupParameter.bAutoHideCursor, false); interface->Get("AutoHideCursor", &bAutoHideCursor, false);
interface->Get("MainWindowPosX", &m_LocalCoreStartupParameter.iPosX, 100); interface->Get("MainWindowPosX", &iPosX, 100);
interface->Get("MainWindowPosY", &m_LocalCoreStartupParameter.iPosY, 100); interface->Get("MainWindowPosY", &iPosY, 100);
interface->Get("MainWindowWidth", &m_LocalCoreStartupParameter.iWidth, 800); interface->Get("MainWindowWidth", &iWidth, 800);
interface->Get("MainWindowHeight", &m_LocalCoreStartupParameter.iHeight, 600); interface->Get("MainWindowHeight", &iHeight, 600);
interface->Get("Language", &m_InterfaceLanguage, 0); interface->Get("Language", &m_InterfaceLanguage, 0);
interface->Get("ShowToolbar", &m_InterfaceToolbar, true); interface->Get("ShowToolbar", &m_InterfaceToolbar, true);
interface->Get("ShowStatusbar", &m_InterfaceStatusbar, true); interface->Get("ShowStatusbar", &m_InterfaceStatusbar, true);
interface->Get("ShowLogWindow", &m_InterfaceLogWindow, false); interface->Get("ShowLogWindow", &m_InterfaceLogWindow, false);
interface->Get("ShowLogConfigWindow", &m_InterfaceLogConfigWindow, false); interface->Get("ShowLogConfigWindow", &m_InterfaceLogConfigWindow, false);
interface->Get("ExtendedFPSInfo", &m_InterfaceExtendedFPSInfo, false); interface->Get("ExtendedFPSInfo", &m_InterfaceExtendedFPSInfo, false);
interface->Get("ThemeName40", &m_LocalCoreStartupParameter.theme_name, "Clean"); interface->Get("ThemeName40", &theme_name, "Clean");
interface->Get("PauseOnFocusLost", &m_PauseOnFocusLost, false); interface->Get("PauseOnFocusLost", &m_PauseOnFocusLost, false);
} }
@ -363,18 +405,18 @@ void SConfig::LoadDisplaySettings(IniFile& ini)
{ {
IniFile::Section* display = ini.GetOrCreateSection("Display"); IniFile::Section* display = ini.GetOrCreateSection("Display");
display->Get("Fullscreen", &m_LocalCoreStartupParameter.bFullscreen, false); display->Get("Fullscreen", &bFullscreen, false);
display->Get("FullscreenResolution", &m_LocalCoreStartupParameter.strFullscreenResolution, "Auto"); display->Get("FullscreenResolution", &strFullscreenResolution, "Auto");
display->Get("RenderToMain", &m_LocalCoreStartupParameter.bRenderToMain, false); display->Get("RenderToMain", &bRenderToMain, false);
display->Get("RenderWindowXPos", &m_LocalCoreStartupParameter.iRenderWindowXPos, -1); display->Get("RenderWindowXPos", &iRenderWindowXPos, -1);
display->Get("RenderWindowYPos", &m_LocalCoreStartupParameter.iRenderWindowYPos, -1); display->Get("RenderWindowYPos", &iRenderWindowYPos, -1);
display->Get("RenderWindowWidth", &m_LocalCoreStartupParameter.iRenderWindowWidth, 640); display->Get("RenderWindowWidth", &iRenderWindowWidth, 640);
display->Get("RenderWindowHeight", &m_LocalCoreStartupParameter.iRenderWindowHeight, 480); display->Get("RenderWindowHeight", &iRenderWindowHeight, 480);
display->Get("RenderWindowAutoSize", &m_LocalCoreStartupParameter.bRenderWindowAutoSize, false); display->Get("RenderWindowAutoSize", &bRenderWindowAutoSize, false);
display->Get("KeepWindowOnTop", &m_LocalCoreStartupParameter.bKeepWindowOnTop, false); display->Get("KeepWindowOnTop", &bKeepWindowOnTop, false);
display->Get("ProgressiveScan", &m_LocalCoreStartupParameter.bProgressive, false); display->Get("ProgressiveScan", &bProgressive, false);
display->Get("DisableScreenSaver", &m_LocalCoreStartupParameter.bDisableScreenSaver, true); display->Get("DisableScreenSaver", &bDisableScreenSaver, true);
display->Get("ForceNTSCJ", &m_LocalCoreStartupParameter.bForceNTSCJ, false); display->Get("ForceNTSCJ", &bForceNTSCJ, false);
} }
void SConfig::LoadGameListSettings(IniFile& ini) void SConfig::LoadGameListSettings(IniFile& ini)
@ -420,27 +462,27 @@ void SConfig::LoadCoreSettings(IniFile& ini)
{ {
IniFile::Section* core = ini.GetOrCreateSection("Core"); IniFile::Section* core = ini.GetOrCreateSection("Core");
core->Get("HLE_BS2", &m_LocalCoreStartupParameter.bHLE_BS2, false); core->Get("HLE_BS2", &bHLE_BS2, false);
#ifdef _M_X86 #ifdef _M_X86
core->Get("CPUCore", &m_LocalCoreStartupParameter.iCPUCore, PowerPC::CORE_JIT64); core->Get("CPUCore", &iCPUCore, PowerPC::CORE_JIT64);
#elif _M_ARM_64 #elif _M_ARM_64
core->Get("CPUCore", &m_LocalCoreStartupParameter.iCPUCore, PowerPC::CORE_JITARM64); core->Get("CPUCore", &iCPUCore, PowerPC::CORE_JITARM64);
#else #else
core->Get("CPUCore", &m_LocalCoreStartupParameter.iCPUCore, PowerPC::CORE_INTERPRETER); core->Get("CPUCore", &iCPUCore, PowerPC::CORE_INTERPRETER);
#endif #endif
core->Get("Fastmem", &m_LocalCoreStartupParameter.bFastmem, true); core->Get("Fastmem", &bFastmem, true);
core->Get("DSPHLE", &m_LocalCoreStartupParameter.bDSPHLE, true); core->Get("DSPHLE", &bDSPHLE, true);
core->Get("CPUThread", &m_LocalCoreStartupParameter.bCPUThread, true); core->Get("CPUThread", &bCPUThread, true);
core->Get("SkipIdle", &m_LocalCoreStartupParameter.bSkipIdle, true); core->Get("SkipIdle", &bSkipIdle, true);
core->Get("SyncOnSkipIdle", &m_LocalCoreStartupParameter.bSyncGPUOnSkipIdleHack, true); core->Get("SyncOnSkipIdle", &bSyncGPUOnSkipIdleHack, true);
core->Get("DefaultISO", &m_LocalCoreStartupParameter.m_strDefaultISO); core->Get("DefaultISO", &m_strDefaultISO);
core->Get("DVDRoot", &m_LocalCoreStartupParameter.m_strDVDRoot); core->Get("DVDRoot", &m_strDVDRoot);
core->Get("Apploader", &m_LocalCoreStartupParameter.m_strApploader); core->Get("Apploader", &m_strApploader);
core->Get("EnableCheats", &m_LocalCoreStartupParameter.bEnableCheats, false); core->Get("EnableCheats", &bEnableCheats, false);
core->Get("SelectedLanguage", &m_LocalCoreStartupParameter.SelectedLanguage, 0); core->Get("SelectedLanguage", &SelectedLanguage, 0);
core->Get("OverrideGCLang", &m_LocalCoreStartupParameter.bOverrideGCLanguage, false); core->Get("OverrideGCLang", &bOverrideGCLanguage, false);
core->Get("DPL2Decoder", &m_LocalCoreStartupParameter.bDPL2Decoder, false); core->Get("DPL2Decoder", &bDPL2Decoder, false);
core->Get("Latency", &m_LocalCoreStartupParameter.iLatency, 2); core->Get("Latency", &iLatency, 2);
core->Get("MemcardAPath", &m_strMemoryCardA); core->Get("MemcardAPath", &m_strMemoryCardA);
core->Get("MemcardBPath", &m_strMemoryCardB); core->Get("MemcardBPath", &m_strMemoryCardB);
core->Get("AgpCartAPath", &m_strGbaCartA); core->Get("AgpCartAPath", &m_strGbaCartA);
@ -449,8 +491,8 @@ void SConfig::LoadCoreSettings(IniFile& ini)
core->Get("SlotB", (int*)&m_EXIDevice[1], EXIDEVICE_NONE); core->Get("SlotB", (int*)&m_EXIDevice[1], EXIDEVICE_NONE);
core->Get("SerialPort1", (int*)&m_EXIDevice[2], EXIDEVICE_NONE); core->Get("SerialPort1", (int*)&m_EXIDevice[2], EXIDEVICE_NONE);
core->Get("BBA_MAC", &m_bba_mac); core->Get("BBA_MAC", &m_bba_mac);
core->Get("TimeProfiling", &m_LocalCoreStartupParameter.bJITILTimeProfiling, false); core->Get("TimeProfiling", &bJITILTimeProfiling, false);
core->Get("OutputIR", &m_LocalCoreStartupParameter.bJITILOutputIR, false); core->Get("OutputIR", &bJITILOutputIR, false);
for (int i = 0; i < MAX_SI_CHANNELS; ++i) 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(StringFromFormat("SIDevice%i", i), (u32*)&m_SIDevice[i], (i == 0) ? SIDEVICE_GC_CONTROLLER : SIDEVICE_NONE);
@ -459,22 +501,22 @@ void SConfig::LoadCoreSettings(IniFile& ini)
core->Get("WiiKeyboard", &m_WiiKeyboard, false); core->Get("WiiKeyboard", &m_WiiKeyboard, false);
core->Get("WiimoteContinuousScanning", &m_WiimoteContinuousScanning, false); core->Get("WiimoteContinuousScanning", &m_WiimoteContinuousScanning, false);
core->Get("WiimoteEnableSpeaker", &m_WiimoteEnableSpeaker, false); core->Get("WiimoteEnableSpeaker", &m_WiimoteEnableSpeaker, false);
core->Get("RunCompareServer", &m_LocalCoreStartupParameter.bRunCompareServer, false); core->Get("RunCompareServer", &bRunCompareServer, false);
core->Get("RunCompareClient", &m_LocalCoreStartupParameter.bRunCompareClient, false); core->Get("RunCompareClient", &bRunCompareClient, false);
core->Get("MMU", &m_LocalCoreStartupParameter.bMMU, false); core->Get("MMU", &bMMU, false);
core->Get("BBDumpPort", &m_LocalCoreStartupParameter.iBBDumpPort, -1); core->Get("BBDumpPort", &iBBDumpPort, -1);
core->Get("SyncGPU", &m_LocalCoreStartupParameter.bSyncGPU, false); core->Get("SyncGPU", &bSyncGPU, false);
core->Get("SyncGpuMaxDistance", &m_LocalCoreStartupParameter.iSyncGpuMaxDistance, 200000); core->Get("SyncGpuMaxDistance", &iSyncGpuMaxDistance, 200000);
core->Get("SyncGpuMinDistance", &m_LocalCoreStartupParameter.iSyncGpuMinDistance, -200000); core->Get("SyncGpuMinDistance", &iSyncGpuMinDistance, -200000);
core->Get("SyncGpuOverclock", &m_LocalCoreStartupParameter.fSyncGpuOverclock, 1.0); core->Get("SyncGpuOverclock", &fSyncGpuOverclock, 1.0);
core->Get("FastDiscSpeed", &m_LocalCoreStartupParameter.bFastDiscSpeed, false); core->Get("FastDiscSpeed", &bFastDiscSpeed, false);
core->Get("DCBZ", &m_LocalCoreStartupParameter.bDCBZOFF, false); core->Get("DCBZ", &bDCBZOFF, false);
core->Get("FrameLimit", &m_Framelimit, 1); // auto frame limit by default core->Get("FrameLimit", &m_Framelimit, 1); // auto frame limit by default
core->Get("Overclock", &m_OCFactor, 1.0f); core->Get("Overclock", &m_OCFactor, 1.0f);
core->Get("OverclockEnable", &m_OCEnable, false); core->Get("OverclockEnable", &m_OCEnable, false);
core->Get("FrameSkip", &m_FrameSkip, 0); core->Get("FrameSkip", &m_FrameSkip, 0);
core->Get("GFXBackend", &m_LocalCoreStartupParameter.m_strVideoBackend, ""); core->Get("GFXBackend", &m_strVideoBackend, "");
core->Get("GPUDeterminismMode", &m_LocalCoreStartupParameter.m_strGPUDeterminismMode, "auto"); core->Get("GPUDeterminismMode", &m_strGPUDeterminismMode, "auto");
core->Get("GameCubeAdapter", &m_GameCubeAdapter, true); core->Get("GameCubeAdapter", &m_GameCubeAdapter, true);
core->Get("AdapterRumble", &m_AdapterRumble, true); core->Get("AdapterRumble", &m_AdapterRumble, true);
} }
@ -524,5 +566,398 @@ void SConfig::LoadFifoPlayerSettings(IniFile& ini)
{ {
IniFile::Section* fifoplayer = ini.GetOrCreateSection("FifoPlayer"); IniFile::Section* fifoplayer = ini.GetOrCreateSection("FifoPlayer");
fifoplayer->Get("LoopReplay", &m_LocalCoreStartupParameter.bLoopFifoReplay, true); fifoplayer->Get("LoopReplay", &bLoopFifoReplay, true);
}
void SConfig::LoadDefaults()
{
bEnableDebugging = false;
bAutomaticStart = false;
bBootToPause = false;
#ifdef USE_GDBSTUB
iGDBPort = -1;
#ifndef _WIN32
gdb_socket = "";
#endif
#endif
iCPUCore = PowerPC::CORE_JIT64;
bCPUThread = false;
bSkipIdle = false;
bSyncGPUOnSkipIdleHack = true;
bRunCompareServer = false;
bDSPHLE = true;
bFastmem = true;
bFPRF = false;
bAccurateNaNs = false;
bMMU = false;
bDCBZOFF = false;
iBBDumpPort = -1;
bSyncGPU = false;
bFastDiscSpeed = false;
bEnableMemcardSaving = true;
SelectedLanguage = 0;
bOverrideGCLanguage = false;
bWii = false;
bDPL2Decoder = false;
iLatency = 14;
iPosX = 100;
iPosY = 100;
iWidth = 800;
iHeight = 600;
bLoopFifoReplay = true;
bJITOff = false; // debugger only settings
bJITLoadStoreOff = false;
bJITLoadStoreFloatingOff = false;
bJITLoadStorePairedOff = false;
bJITFloatingPointOff = false;
bJITIntegerOff = false;
bJITPairedOff = false;
bJITSystemRegistersOff = false;
m_strName = "NONE";
m_strUniqueID = "00000000";
}
static const char* GetRegionOfCountry(DiscIO::IVolume::ECountry country)
{
switch (country)
{
case DiscIO::IVolume::COUNTRY_USA:
return USA_DIR;
case DiscIO::IVolume::COUNTRY_TAIWAN:
case DiscIO::IVolume::COUNTRY_KOREA:
// TODO: Should these have their own Region Dir?
case DiscIO::IVolume::COUNTRY_JAPAN:
return JAP_DIR;
case DiscIO::IVolume::COUNTRY_AUSTRALIA:
case DiscIO::IVolume::COUNTRY_EUROPE:
case DiscIO::IVolume::COUNTRY_FRANCE:
case DiscIO::IVolume::COUNTRY_GERMANY:
case DiscIO::IVolume::COUNTRY_ITALY:
case DiscIO::IVolume::COUNTRY_NETHERLANDS:
case DiscIO::IVolume::COUNTRY_RUSSIA:
case DiscIO::IVolume::COUNTRY_SPAIN:
case DiscIO::IVolume::COUNTRY_WORLD:
return EUR_DIR;
case DiscIO::IVolume::COUNTRY_UNKNOWN:
default:
return nullptr;
}
}
bool SConfig::AutoSetup(EBootBS2 _BootBS2)
{
std::string set_region_dir(EUR_DIR);
switch (_BootBS2)
{
case BOOT_DEFAULT:
{
bool bootDrive = cdio_is_cdrom(m_strFilename);
// Check if the file exist, we may have gotten it from a --elf command line
// that gave an incorrect file name
if (!bootDrive && !File::Exists(m_strFilename))
{
PanicAlertT("The specified file \"%s\" does not exist", m_strFilename.c_str());
return false;
}
std::string Extension;
SplitPath(m_strFilename, nullptr, nullptr, &Extension);
if (!strcasecmp(Extension.c_str(), ".gcm") ||
!strcasecmp(Extension.c_str(), ".iso") ||
!strcasecmp(Extension.c_str(), ".wbfs") ||
!strcasecmp(Extension.c_str(), ".ciso") ||
!strcasecmp(Extension.c_str(), ".gcz") ||
bootDrive)
{
m_BootType = BOOT_ISO;
std::unique_ptr<DiscIO::IVolume> pVolume(DiscIO::CreateVolumeFromFilename(m_strFilename));
if (pVolume == nullptr)
{
if (bootDrive)
PanicAlertT("Could not read \"%s\". "
"There is no disc in the drive, or it is not a GC/Wii backup. "
"Please note that original GameCube and Wii discs cannot be read "
"by most PC DVD drives.", m_strFilename.c_str());
else
PanicAlertT("\"%s\" is an invalid GCM/ISO file, or is not a GC/Wii ISO.",
m_strFilename.c_str());
return false;
}
m_strName = pVolume->GetInternalName();
m_strUniqueID = pVolume->GetUniqueID();
m_revision = pVolume->GetRevision();
// Check if we have a Wii disc
bWii = pVolume.get()->GetVolumeType() == DiscIO::IVolume::WII_DISC;
const char* retrieved_region_dir = GetRegionOfCountry(pVolume->GetCountry());
if (!retrieved_region_dir)
{
if (!PanicYesNoT("Your GCM/ISO file seems to be invalid (invalid country)."
"\nContinue with PAL region?"))
return false;
retrieved_region_dir = EUR_DIR;
}
set_region_dir = retrieved_region_dir;
bNTSC = set_region_dir == USA_DIR || set_region_dir == JAP_DIR;
}
else if (!strcasecmp(Extension.c_str(), ".elf"))
{
bWii = CBoot::IsElfWii(m_strFilename);
set_region_dir = USA_DIR;
m_BootType = BOOT_ELF;
bNTSC = true;
}
else if (!strcasecmp(Extension.c_str(), ".dol"))
{
CDolLoader dolfile(m_strFilename);
bWii = dolfile.IsWii();
set_region_dir = USA_DIR;
m_BootType = BOOT_DOL;
bNTSC = true;
}
else if (!strcasecmp(Extension.c_str(), ".dff"))
{
bWii = true;
set_region_dir = USA_DIR;
bNTSC = true;
m_BootType = BOOT_DFF;
std::unique_ptr<FifoDataFile> ddfFile(FifoDataFile::Load(m_strFilename, true));
if (ddfFile)
{
bWii = ddfFile->GetIsWii();
}
}
else if (DiscIO::CNANDContentManager::Access().GetNANDLoader(m_strFilename).IsValid())
{
std::unique_ptr<DiscIO::IVolume> pVolume(DiscIO::CreateVolumeFromFilename(m_strFilename));
const DiscIO::INANDContentLoader& ContentLoader = DiscIO::CNANDContentManager::Access().GetNANDLoader(m_strFilename);
if (ContentLoader.GetContentByIndex(ContentLoader.GetBootIndex()) == nullptr)
{
//WAD is valid yet cannot be booted. Install instead.
u64 installed = DiscIO::CNANDContentManager::Access().Install_WiiWAD(m_strFilename);
if (installed)
SuccessAlertT("The WAD has been installed successfully");
return false; //do not boot
}
const char* retrieved_region_dir = GetRegionOfCountry(ContentLoader.GetCountry());
set_region_dir = retrieved_region_dir ? retrieved_region_dir : EUR_DIR;
bNTSC = set_region_dir == USA_DIR || set_region_dir == JAP_DIR;
bWii = true;
m_BootType = BOOT_WII_NAND;
if (pVolume)
{
m_strName = pVolume->GetInternalName();
m_strUniqueID = pVolume->GetUniqueID();
}
else
{
// null pVolume means that we are loading from nand folder (Most Likely Wii Menu)
// if this is the second boot we would be using the Name and id of the last title
m_strName.clear();
m_strUniqueID.clear();
}
// Use the TitleIDhex for name and/or unique ID if launching from nand folder
// or if it is not ascii characters (specifically sysmenu could potentially apply to other things)
std::string titleidstr = StringFromFormat("%016" PRIx64, ContentLoader.GetTitleID());
if (m_strName.empty())
{
m_strName = titleidstr;
}
if (m_strUniqueID.empty())
{
m_strUniqueID = titleidstr;
}
}
else
{
PanicAlertT("Could not recognize ISO file %s", m_strFilename.c_str());
return false;
}
}
break;
case BOOT_BS2_USA:
set_region_dir = USA_DIR;
m_strFilename.clear();
bNTSC = true;
break;
case BOOT_BS2_JAP:
set_region_dir = JAP_DIR;
m_strFilename.clear();
bNTSC = true;
break;
case BOOT_BS2_EUR:
set_region_dir = EUR_DIR;
m_strFilename.clear();
bNTSC = false;
break;
}
// Setup paths
CheckMemcardPath(SConfig::GetInstance().m_strMemoryCardA, set_region_dir, true);
CheckMemcardPath(SConfig::GetInstance().m_strMemoryCardB, set_region_dir, false);
m_strSRAM = File::GetUserPath(F_GCSRAM_IDX);
if (!bWii)
{
if (!bHLE_BS2)
{
m_strBootROM = File::GetUserPath(D_GCUSER_IDX) + DIR_SEP + set_region_dir + DIR_SEP GC_IPL;
if (!File::Exists(m_strBootROM))
m_strBootROM = File::GetSysDirectory() + GC_SYS_DIR + DIR_SEP + set_region_dir + DIR_SEP GC_IPL;
if (!File::Exists(m_strBootROM))
{
WARN_LOG(BOOT, "Bootrom file %s not found - using HLE.", m_strBootROM.c_str());
bHLE_BS2 = true;
}
}
}
else if (bWii && !bHLE_BS2)
{
WARN_LOG(BOOT, "GC bootrom file will not be loaded for Wii mode.");
bHLE_BS2 = true;
}
return true;
}
void SConfig::CheckMemcardPath(std::string& memcardPath, const std::string& gameRegion, bool isSlotA)
{
std::string ext("." + gameRegion + ".raw");
if (memcardPath.empty())
{
// Use default memcard path if there is no user defined name
std::string defaultFilename = isSlotA ? GC_MEMCARDA : GC_MEMCARDB;
memcardPath = File::GetUserPath(D_GCUSER_IDX) + defaultFilename + ext;
}
else
{
std::string filename = memcardPath;
std::string region = filename.substr(filename.size()-7, 3);
bool hasregion = false;
hasregion |= region.compare(USA_DIR) == 0;
hasregion |= region.compare(JAP_DIR) == 0;
hasregion |= region.compare(EUR_DIR) == 0;
if (!hasregion)
{
// filename doesn't have region in the extension
if (File::Exists(filename))
{
// If the old file exists we are polite and ask if we should copy it
std::string oldFilename = filename;
filename.replace(filename.size()-4, 4, ext);
if (PanicYesNoT("Memory Card filename in Slot %c is incorrect\n"
"Region not specified\n\n"
"Slot %c path was changed to\n"
"%s\n"
"Would you like to copy the old file to this new location?\n",
isSlotA ? 'A':'B', isSlotA ? 'A':'B', filename.c_str()))
{
if (!File::Copy(oldFilename, filename))
PanicAlertT("Copy failed");
}
}
memcardPath = filename; // Always correct the path!
}
else if (region.compare(gameRegion) != 0)
{
// filename has region, but it's not == gameRegion
// Just set the correct filename, the EXI Device will create it if it doesn't exist
memcardPath = filename.replace(filename.size()-ext.size(), ext.size(), ext);
}
}
}
DiscIO::IVolume::ELanguage SConfig::GetCurrentLanguage(bool wii) const
{
DiscIO::IVolume::ELanguage language;
if (wii)
language = (DiscIO::IVolume::ELanguage)SConfig::GetInstance().m_SYSCONF->GetData<u8>("IPL.LNG");
else
language = (DiscIO::IVolume::ELanguage)(SConfig::GetInstance().SelectedLanguage + 1);
// Get rid of invalid values (probably doesn't matter, but might as well do it)
if (language > DiscIO::IVolume::ELanguage::LANGUAGE_UNKNOWN || language < 0)
language = DiscIO::IVolume::ELanguage::LANGUAGE_UNKNOWN;
return language;
}
IniFile SConfig::LoadDefaultGameIni() const
{
return LoadDefaultGameIni(GetUniqueID(), m_revision);
}
IniFile SConfig::LoadLocalGameIni() const
{
return LoadLocalGameIni(GetUniqueID(), m_revision);
}
IniFile SConfig::LoadGameIni() const
{
return LoadGameIni(GetUniqueID(), m_revision);
}
IniFile SConfig::LoadDefaultGameIni(const std::string& id, u16 revision)
{
IniFile game_ini;
for (const std::string& filename : GetGameIniFilenames(id, revision))
game_ini.Load(File::GetSysDirectory() + GAMESETTINGS_DIR DIR_SEP + filename, true);
return game_ini;
}
IniFile SConfig::LoadLocalGameIni(const std::string& id, u16 revision)
{
IniFile game_ini;
for (const std::string& filename : GetGameIniFilenames(id, revision))
game_ini.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + filename, true);
return game_ini;
}
IniFile SConfig::LoadGameIni(const std::string& id, u16 revision)
{
IniFile game_ini;
for (const std::string& filename : GetGameIniFilenames(id, revision))
game_ini.Load(File::GetSysDirectory() + GAMESETTINGS_DIR DIR_SEP + filename, true);
for (const std::string& filename : GetGameIniFilenames(id, revision))
game_ini.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + filename, true);
return game_ini;
}
// Returns all possible filenames in ascending order of priority
std::vector<std::string> SConfig::GetGameIniFilenames(const std::string& id, u16 revision)
{
std::vector<std::string> filenames;
// INIs that match all regions
if (id.size() >= 4)
filenames.push_back(id.substr(0, 3) + ".ini");
// Regular INIs
filenames.push_back(id + ".ini");
// INIs with specific revisions
filenames.push_back(id + StringFromFormat("r%d", revision) + ".ini");
return filenames;
} }

View File

@ -7,10 +7,11 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include "Common/IniFile.h"
#include "Common/SysConf.h" #include "Common/SysConf.h"
#include "Core/CoreParameter.h"
#include "Core/HW/EXI_Device.h" #include "Core/HW/EXI_Device.h"
#include "Core/HW/SI_Device.h" #include "Core/HW/SI_Device.h"
#include "DiscIO/Volume.h"
// DSP Backend Types // DSP Backend Types
#define BACKEND_NULLSOUND _trans("No audio output") #define BACKEND_NULLSOUND _trans("No audio output")
@ -21,6 +22,16 @@
#define BACKEND_PULSEAUDIO "Pulse" #define BACKEND_PULSEAUDIO "Pulse"
#define BACKEND_XAUDIO2 "XAudio2" #define BACKEND_XAUDIO2 "XAudio2"
#define BACKEND_OPENSLES "OpenSLES" #define BACKEND_OPENSLES "OpenSLES"
enum GPUDeterminismMode
{
GPU_DETERMINISM_AUTO,
GPU_DETERMINISM_NONE,
// This is currently the only mode. There will probably be at least
// one more at some point.
GPU_DETERMINISM_FAKE_COMPLETION,
};
struct SConfig : NonCopyable struct SConfig : NonCopyable
{ {
// Wii Devices // Wii Devices
@ -36,7 +47,140 @@ struct SConfig : NonCopyable
std::vector<std::string> m_ISOFolder; std::vector<std::string> m_ISOFolder;
bool m_RecursiveISOFolder; bool m_RecursiveISOFolder;
SCoreStartupParameter m_LocalCoreStartupParameter; // Settings
bool bEnableDebugging;
#ifdef USE_GDBSTUB
int iGDBPort;
#ifndef _WIN32
std::string gdb_socket;
#endif
#endif
bool bAutomaticStart;
bool bBootToPause;
int iCPUCore;
// JIT (shared between JIT and JITIL)
bool bJITNoBlockCache, bJITNoBlockLinking;
bool bJITOff;
bool bJITLoadStoreOff, bJITLoadStorelXzOff, bJITLoadStorelwzOff, bJITLoadStorelbzxOff;
bool bJITLoadStoreFloatingOff;
bool bJITLoadStorePairedOff;
bool bJITFloatingPointOff;
bool bJITIntegerOff;
bool bJITPairedOff;
bool bJITSystemRegistersOff;
bool bJITBranchOff;
bool bJITILTimeProfiling;
bool bJITILOutputIR;
bool bFastmem;
bool bFPRF;
bool bAccurateNaNs;
bool bCPUThread;
bool bDSPThread;
bool bDSPHLE;
bool bSkipIdle;
bool bSyncGPUOnSkipIdleHack;
bool bNTSC;
bool bForceNTSCJ;
bool bHLE_BS2;
bool bEnableCheats;
bool bEnableMemcardSaving;
bool bDPL2Decoder;
int iLatency;
bool bRunCompareServer;
bool bRunCompareClient;
bool bMMU;
bool bDCBZOFF;
int iBBDumpPort;
bool bFastDiscSpeed;
bool bSyncGPU;
int iSyncGpuMaxDistance;
int iSyncGpuMinDistance;
float fSyncGpuOverclock;
int SelectedLanguage;
bool bOverrideGCLanguage;
bool bWii;
// Interface settings
bool bConfirmStop, bHideCursor, bAutoHideCursor, bUsePanicHandlers, bOnScreenDisplayMessages;
std::string theme_name;
// Display settings
std::string strFullscreenResolution;
int iRenderWindowXPos, iRenderWindowYPos;
int iRenderWindowWidth, iRenderWindowHeight;
bool bRenderWindowAutoSize, bKeepWindowOnTop;
bool bFullscreen, bRenderToMain;
bool bProgressive, bDisableScreenSaver;
int iPosX, iPosY, iWidth, iHeight;
// Fifo Player related settings
bool bLoopFifoReplay;
enum EBootBS2
{
BOOT_DEFAULT,
BOOT_BS2_JAP,
BOOT_BS2_USA,
BOOT_BS2_EUR,
};
enum EBootType
{
BOOT_ISO,
BOOT_ELF,
BOOT_DOL,
BOOT_WII_NAND,
BOOT_BS2,
BOOT_DFF
};
EBootType m_BootType;
std::string m_strVideoBackend;
std::string m_strGPUDeterminismMode;
// set based on the string version
GPUDeterminismMode m_GPUDeterminismMode;
// files
std::string m_strFilename;
std::string m_strBootROM;
std::string m_strSRAM;
std::string m_strDefaultISO;
std::string m_strDVDRoot;
std::string m_strApploader;
std::string m_strUniqueID;
std::string m_strName;
u16 m_revision;
std::string m_perfDir;
void LoadDefaults();
bool AutoSetup(EBootBS2 _BootBS2);
const std::string &GetUniqueID() const { return m_strUniqueID; }
void CheckMemcardPath(std::string& memcardPath, const std::string& gameRegion, bool isSlotA);
DiscIO::IVolume::ELanguage GetCurrentLanguage(bool wii) const;
IniFile LoadDefaultGameIni() const;
IniFile LoadLocalGameIni() const;
IniFile LoadGameIni() const;
static IniFile LoadDefaultGameIni(const std::string& id, u16 revision);
static IniFile LoadLocalGameIni(const std::string& id, u16 revision);
static IniFile LoadGameIni(const std::string& id, u16 revision);
static std::vector<std::string> GetGameIniFilenames(const std::string& id, u16 revision);
std::string m_NANDPath; std::string m_NANDPath;
std::string m_strMemoryCardA; std::string m_strMemoryCardA;

View File

@ -23,7 +23,6 @@
#include "Core/ConfigManager.h" #include "Core/ConfigManager.h"
#include "Core/Core.h" #include "Core/Core.h"
#include "Core/CoreParameter.h"
#include "Core/CoreTiming.h" #include "Core/CoreTiming.h"
#include "Core/DSPEmulator.h" #include "Core/DSPEmulator.h"
#include "Core/Host.h" #include "Core/Host.h"
@ -190,8 +189,7 @@ bool IsCPUThread()
bool IsGPUThread() bool IsGPUThread()
{ {
const SCoreStartupParameter& _CoreParameter = const SConfig& _CoreParameter = SConfig::GetInstance();
SConfig::GetInstance().m_LocalCoreStartupParameter;
if (_CoreParameter.bCPUThread) if (_CoreParameter.bCPUThread)
{ {
return (s_emu_thread.joinable() && (s_emu_thread.get_id() == std::this_thread::get_id())); return (s_emu_thread.joinable() && (s_emu_thread.get_id() == std::this_thread::get_id()));
@ -206,8 +204,7 @@ bool IsGPUThread()
// BootManager.cpp // BootManager.cpp
bool Init() bool Init()
{ {
const SCoreStartupParameter& _CoreParameter = const SConfig& _CoreParameter = SConfig::GetInstance();
SConfig::GetInstance().m_LocalCoreStartupParameter;
if (s_emu_thread.joinable()) if (s_emu_thread.joinable())
{ {
@ -252,8 +249,7 @@ void Stop() // - Hammertime!
if (GetState() == CORE_STOPPING) if (GetState() == CORE_STOPPING)
return; return;
const SCoreStartupParameter& _CoreParameter = const SConfig& _CoreParameter = SConfig::GetInstance();
SConfig::GetInstance().m_LocalCoreStartupParameter;
s_is_stopping = true; s_is_stopping = true;
@ -310,8 +306,7 @@ static void CpuThread()
{ {
DeclareAsCPUThread(); DeclareAsCPUThread();
const SCoreStartupParameter& _CoreParameter = const SConfig& _CoreParameter = SConfig::GetInstance();
SConfig::GetInstance().m_LocalCoreStartupParameter;
if (_CoreParameter.bCPUThread) if (_CoreParameter.bCPUThread)
{ {
@ -365,7 +360,7 @@ static void CpuThread()
static void FifoPlayerThread() static void FifoPlayerThread()
{ {
const SCoreStartupParameter& _CoreParameter = SConfig::GetInstance().m_LocalCoreStartupParameter; const SConfig& _CoreParameter = SConfig::GetInstance();
if (_CoreParameter.bCPUThread) if (_CoreParameter.bCPUThread)
{ {
@ -401,8 +396,7 @@ static void FifoPlayerThread()
// See the BootManager.cpp file description for a complete call schedule. // See the BootManager.cpp file description for a complete call schedule.
void EmuThread() void EmuThread()
{ {
const SCoreStartupParameter& core_parameter = const SConfig& core_parameter = SConfig::GetInstance();
SConfig::GetInstance().m_LocalCoreStartupParameter;
Common::SetCurrentThreadName("Emuthread - Starting"); Common::SetCurrentThreadName("Emuthread - Starting");
@ -429,9 +423,9 @@ void EmuThread()
OSD::AddMessage("Dolphin " + g_video_backend->GetName() + " Video Backend.", 5000); OSD::AddMessage("Dolphin " + g_video_backend->GetName() + " Video Backend.", 5000);
if (cpu_info.HTT) if (cpu_info.HTT)
SConfig::GetInstance().m_LocalCoreStartupParameter.bDSPThread = cpu_info.num_cores > 4; SConfig::GetInstance().bDSPThread = cpu_info.num_cores > 4;
else else
SConfig::GetInstance().m_LocalCoreStartupParameter.bDSPThread = cpu_info.num_cores > 2; SConfig::GetInstance().bDSPThread = cpu_info.num_cores > 2;
if (!DSP::GetDSPEmulator()->Initialize(core_parameter.bWii, core_parameter.bDSPThread)) if (!DSP::GetDSPEmulator()->Initialize(core_parameter.bWii, core_parameter.bDSPThread))
{ {
@ -504,7 +498,7 @@ void EmuThread()
// Determine the CPU thread function // Determine the CPU thread function
void (*cpuThreadFunc)(void); void (*cpuThreadFunc)(void);
if (core_parameter.m_BootType == SCoreStartupParameter::BOOT_DFF) if (core_parameter.m_BootType == SConfig::BOOT_DFF)
cpuThreadFunc = FifoPlayerThread; cpuThreadFunc = FifoPlayerThread;
else else
cpuThreadFunc = CpuThread; cpuThreadFunc = CpuThread;
@ -644,7 +638,7 @@ EState GetState()
static std::string GenerateScreenshotName() static std::string GenerateScreenshotName()
{ {
const std::string& gameId = SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID(); const std::string& gameId = SConfig::GetInstance().GetUniqueID();
std::string path = File::GetUserPath(D_SCREENSHOTS_IDX) + gameId + DIR_SEP_CHR; std::string path = File::GetUserPath(D_SCREENSHOTS_IDX) + gameId + DIR_SEP_CHR;
if (!File::CreateFullPath(path)) if (!File::CreateFullPath(path))
@ -751,7 +745,7 @@ void UpdateTitle()
{ {
u32 ElapseTime = (u32)s_timer.GetTimeDifference(); u32 ElapseTime = (u32)s_timer.GetTimeDifference();
s_request_refresh_info = false; s_request_refresh_info = false;
SCoreStartupParameter& _CoreParameter = SConfig::GetInstance().m_LocalCoreStartupParameter; SConfig& _CoreParameter = SConfig::GetInstance();
if (ElapseTime == 0) if (ElapseTime == 0)
ElapseTime = 1; ElapseTime = 1;

View File

@ -46,7 +46,6 @@
<ClCompile Include="Boot\ElfReader.cpp" /> <ClCompile Include="Boot\ElfReader.cpp" />
<ClCompile Include="ConfigManager.cpp" /> <ClCompile Include="ConfigManager.cpp" />
<ClCompile Include="Core.cpp" /> <ClCompile Include="Core.cpp" />
<ClCompile Include="CoreParameter.cpp" />
<ClCompile Include="CoreTiming.cpp" /> <ClCompile Include="CoreTiming.cpp" />
<ClCompile Include="Debugger\Debugger_SymbolMap.cpp" /> <ClCompile Include="Debugger\Debugger_SymbolMap.cpp" />
<ClCompile Include="Debugger\Dump.cpp" /> <ClCompile Include="Debugger\Dump.cpp" />
@ -264,7 +263,6 @@
<ClInclude Include="Boot\ElfTypes.h" /> <ClInclude Include="Boot\ElfTypes.h" />
<ClInclude Include="ConfigManager.h" /> <ClInclude Include="ConfigManager.h" />
<ClInclude Include="Core.h" /> <ClInclude Include="Core.h" />
<ClInclude Include="CoreParameter.h" />
<ClInclude Include="CoreTiming.h" /> <ClInclude Include="CoreTiming.h" />
<ClInclude Include="Debugger\Debugger_SymbolMap.h" /> <ClInclude Include="Debugger\Debugger_SymbolMap.h" />
<ClInclude Include="Debugger\Dump.h" /> <ClInclude Include="Debugger\Dump.h" />

View File

@ -144,7 +144,6 @@
<ClCompile Include="BootManager.cpp" /> <ClCompile Include="BootManager.cpp" />
<ClCompile Include="ConfigManager.cpp" /> <ClCompile Include="ConfigManager.cpp" />
<ClCompile Include="Core.cpp" /> <ClCompile Include="Core.cpp" />
<ClCompile Include="CoreParameter.cpp" />
<ClCompile Include="CoreTiming.cpp" /> <ClCompile Include="CoreTiming.cpp" />
<ClCompile Include="ec_wii.cpp" /> <ClCompile Include="ec_wii.cpp" />
<ClCompile Include="HotkeyManager.cpp" /> <ClCompile Include="HotkeyManager.cpp" />
@ -738,7 +737,6 @@
<ClInclude Include="BootManager.h" /> <ClInclude Include="BootManager.h" />
<ClInclude Include="ConfigManager.h" /> <ClInclude Include="ConfigManager.h" />
<ClInclude Include="Core.h" /> <ClInclude Include="Core.h" />
<ClInclude Include="CoreParameter.h" />
<ClInclude Include="CoreTiming.h" /> <ClInclude Include="CoreTiming.h" />
<ClInclude Include="ec_wii.h" /> <ClInclude Include="ec_wii.h" />
<ClInclude Include="Host.h" /> <ClInclude Include="Host.h" />

View File

@ -1,452 +0,0 @@
// Copyright 2008 Dolphin Emulator Project
// Licensed under GPLv2+
// Refer to the license.txt file included.
#include <cinttypes>
#include <memory>
#include "Common/CDUtils.h"
#include "Common/CommonPaths.h"
#include "Common/CommonTypes.h"
#include "Common/FileUtil.h"
#include "Common/StringUtil.h"
#include "Core/ConfigManager.h"
#include "Core/Core.h" // for bWii
#include "Core/CoreParameter.h"
#include "Core/Boot/Boot.h"
#include "Core/Boot/Boot_DOL.h"
#include "Core/FifoPlayer/FifoDataFile.h"
#include "Core/PowerPC/PowerPC.h"
#include "DiscIO/NANDContentLoader.h"
#include "DiscIO/VolumeCreator.h"
SCoreStartupParameter::SCoreStartupParameter()
: bEnableDebugging(false), bAutomaticStart(false), bBootToPause(false),
bJITNoBlockCache(false), bJITNoBlockLinking(false),
bJITOff(false),
bJITLoadStoreOff(false), bJITLoadStorelXzOff(false),
bJITLoadStorelwzOff(false), bJITLoadStorelbzxOff(false),
bJITLoadStoreFloatingOff(false), bJITLoadStorePairedOff(false),
bJITFloatingPointOff(false), bJITIntegerOff(false),
bJITPairedOff(false), bJITSystemRegistersOff(false),
bJITBranchOff(false),
bJITILTimeProfiling(false), bJITILOutputIR(false),
bFPRF(false), bAccurateNaNs(false),
bCPUThread(true), bDSPThread(false), bDSPHLE(true),
bSkipIdle(true), bSyncGPUOnSkipIdleHack(true), bNTSC(false), bForceNTSCJ(false),
bHLE_BS2(true), bEnableCheats(false),
bEnableMemcardSaving(true),
bDPL2Decoder(false), iLatency(14),
bRunCompareServer(false), bRunCompareClient(false),
bMMU(false), bDCBZOFF(false),
iBBDumpPort(0),
bFastDiscSpeed(false), bSyncGPU(false),
SelectedLanguage(0), bOverrideGCLanguage(false), bWii(false),
bConfirmStop(false), bHideCursor(false),
bAutoHideCursor(false), bUsePanicHandlers(true), bOnScreenDisplayMessages(true),
iRenderWindowXPos(-1), iRenderWindowYPos(-1),
iRenderWindowWidth(640), iRenderWindowHeight(480),
bRenderWindowAutoSize(false), bKeepWindowOnTop(false),
bFullscreen(false), bRenderToMain(false),
bProgressive(false), bDisableScreenSaver(false),
iPosX(100), iPosY(100), iWidth(800), iHeight(600),
bLoopFifoReplay(true)
{
LoadDefaults();
}
void SCoreStartupParameter::LoadDefaults()
{
bEnableDebugging = false;
bAutomaticStart = false;
bBootToPause = false;
#ifdef USE_GDBSTUB
iGDBPort = -1;
#ifndef _WIN32
gdb_socket = "";
#endif
#endif
iCPUCore = PowerPC::CORE_JIT64;
bCPUThread = false;
bSkipIdle = false;
bSyncGPUOnSkipIdleHack = true;
bRunCompareServer = false;
bDSPHLE = true;
bFastmem = true;
bFPRF = false;
bAccurateNaNs = false;
bMMU = false;
bDCBZOFF = false;
iBBDumpPort = -1;
bSyncGPU = false;
bFastDiscSpeed = false;
bEnableMemcardSaving = true;
SelectedLanguage = 0;
bOverrideGCLanguage = false;
bWii = false;
bDPL2Decoder = false;
iLatency = 14;
iPosX = 100;
iPosY = 100;
iWidth = 800;
iHeight = 600;
bLoopFifoReplay = true;
bJITOff = false; // debugger only settings
bJITLoadStoreOff = false;
bJITLoadStoreFloatingOff = false;
bJITLoadStorePairedOff = false;
bJITFloatingPointOff = false;
bJITIntegerOff = false;
bJITPairedOff = false;
bJITSystemRegistersOff = false;
m_strName = "NONE";
m_strUniqueID = "00000000";
}
static const char* GetRegionOfCountry(DiscIO::IVolume::ECountry country)
{
switch (country)
{
case DiscIO::IVolume::COUNTRY_USA:
return USA_DIR;
case DiscIO::IVolume::COUNTRY_TAIWAN:
case DiscIO::IVolume::COUNTRY_KOREA:
// TODO: Should these have their own Region Dir?
case DiscIO::IVolume::COUNTRY_JAPAN:
return JAP_DIR;
case DiscIO::IVolume::COUNTRY_AUSTRALIA:
case DiscIO::IVolume::COUNTRY_EUROPE:
case DiscIO::IVolume::COUNTRY_FRANCE:
case DiscIO::IVolume::COUNTRY_GERMANY:
case DiscIO::IVolume::COUNTRY_ITALY:
case DiscIO::IVolume::COUNTRY_NETHERLANDS:
case DiscIO::IVolume::COUNTRY_RUSSIA:
case DiscIO::IVolume::COUNTRY_SPAIN:
case DiscIO::IVolume::COUNTRY_WORLD:
return EUR_DIR;
case DiscIO::IVolume::COUNTRY_UNKNOWN:
default:
return nullptr;
}
}
bool SCoreStartupParameter::AutoSetup(EBootBS2 _BootBS2)
{
std::string set_region_dir(EUR_DIR);
switch (_BootBS2)
{
case BOOT_DEFAULT:
{
bool bootDrive = cdio_is_cdrom(m_strFilename);
// Check if the file exist, we may have gotten it from a --elf command line
// that gave an incorrect file name
if (!bootDrive && !File::Exists(m_strFilename))
{
PanicAlertT("The specified file \"%s\" does not exist", m_strFilename.c_str());
return false;
}
std::string Extension;
SplitPath(m_strFilename, nullptr, nullptr, &Extension);
if (!strcasecmp(Extension.c_str(), ".gcm") ||
!strcasecmp(Extension.c_str(), ".iso") ||
!strcasecmp(Extension.c_str(), ".wbfs") ||
!strcasecmp(Extension.c_str(), ".ciso") ||
!strcasecmp(Extension.c_str(), ".gcz") ||
bootDrive)
{
m_BootType = BOOT_ISO;
std::unique_ptr<DiscIO::IVolume> pVolume(DiscIO::CreateVolumeFromFilename(m_strFilename));
if (pVolume == nullptr)
{
if (bootDrive)
PanicAlertT("Could not read \"%s\". "
"There is no disc in the drive, or it is not a GC/Wii backup. "
"Please note that original GameCube and Wii discs cannot be read "
"by most PC DVD drives.", m_strFilename.c_str());
else
PanicAlertT("\"%s\" is an invalid GCM/ISO file, or is not a GC/Wii ISO.",
m_strFilename.c_str());
return false;
}
m_strName = pVolume->GetInternalName();
m_strUniqueID = pVolume->GetUniqueID();
m_revision = pVolume->GetRevision();
// Check if we have a Wii disc
bWii = pVolume.get()->GetVolumeType() == DiscIO::IVolume::WII_DISC;
const char* retrieved_region_dir = GetRegionOfCountry(pVolume->GetCountry());
if (!retrieved_region_dir)
{
if (!PanicYesNoT("Your GCM/ISO file seems to be invalid (invalid country)."
"\nContinue with PAL region?"))
return false;
retrieved_region_dir = EUR_DIR;
}
set_region_dir = retrieved_region_dir;
bNTSC = set_region_dir == USA_DIR || set_region_dir == JAP_DIR;
}
else if (!strcasecmp(Extension.c_str(), ".elf"))
{
bWii = CBoot::IsElfWii(m_strFilename);
set_region_dir = USA_DIR;
m_BootType = BOOT_ELF;
bNTSC = true;
}
else if (!strcasecmp(Extension.c_str(), ".dol"))
{
CDolLoader dolfile(m_strFilename);
bWii = dolfile.IsWii();
set_region_dir = USA_DIR;
m_BootType = BOOT_DOL;
bNTSC = true;
}
else if (!strcasecmp(Extension.c_str(), ".dff"))
{
bWii = true;
set_region_dir = USA_DIR;
bNTSC = true;
m_BootType = BOOT_DFF;
std::unique_ptr<FifoDataFile> ddfFile(FifoDataFile::Load(m_strFilename, true));
if (ddfFile)
{
bWii = ddfFile->GetIsWii();
}
}
else if (DiscIO::CNANDContentManager::Access().GetNANDLoader(m_strFilename).IsValid())
{
std::unique_ptr<DiscIO::IVolume> pVolume(DiscIO::CreateVolumeFromFilename(m_strFilename));
const DiscIO::INANDContentLoader& ContentLoader = DiscIO::CNANDContentManager::Access().GetNANDLoader(m_strFilename);
if (ContentLoader.GetContentByIndex(ContentLoader.GetBootIndex()) == nullptr)
{
//WAD is valid yet cannot be booted. Install instead.
u64 installed = DiscIO::CNANDContentManager::Access().Install_WiiWAD(m_strFilename);
if (installed)
SuccessAlertT("The WAD has been installed successfully");
return false; //do not boot
}
const char* retrieved_region_dir = GetRegionOfCountry(ContentLoader.GetCountry());
set_region_dir = retrieved_region_dir ? retrieved_region_dir : EUR_DIR;
bNTSC = set_region_dir == USA_DIR || set_region_dir == JAP_DIR;
bWii = true;
m_BootType = BOOT_WII_NAND;
if (pVolume)
{
m_strName = pVolume->GetInternalName();
m_strUniqueID = pVolume->GetUniqueID();
}
else
{
// null pVolume means that we are loading from nand folder (Most Likely Wii Menu)
// if this is the second boot we would be using the Name and id of the last title
m_strName.clear();
m_strUniqueID.clear();
}
// Use the TitleIDhex for name and/or unique ID if launching from nand folder
// or if it is not ascii characters (specifically sysmenu could potentially apply to other things)
std::string titleidstr = StringFromFormat("%016" PRIx64, ContentLoader.GetTitleID());
if (m_strName.empty())
{
m_strName = titleidstr;
}
if (m_strUniqueID.empty())
{
m_strUniqueID = titleidstr;
}
}
else
{
PanicAlertT("Could not recognize ISO file %s", m_strFilename.c_str());
return false;
}
}
break;
case BOOT_BS2_USA:
set_region_dir = USA_DIR;
m_strFilename.clear();
bNTSC = true;
break;
case BOOT_BS2_JAP:
set_region_dir = JAP_DIR;
m_strFilename.clear();
bNTSC = true;
break;
case BOOT_BS2_EUR:
set_region_dir = EUR_DIR;
m_strFilename.clear();
bNTSC = false;
break;
}
// Setup paths
CheckMemcardPath(SConfig::GetInstance().m_strMemoryCardA, set_region_dir, true);
CheckMemcardPath(SConfig::GetInstance().m_strMemoryCardB, set_region_dir, false);
m_strSRAM = File::GetUserPath(F_GCSRAM_IDX);
if (!bWii)
{
if (!bHLE_BS2)
{
m_strBootROM = File::GetUserPath(D_GCUSER_IDX) + DIR_SEP + set_region_dir + DIR_SEP GC_IPL;
if (!File::Exists(m_strBootROM))
m_strBootROM = File::GetSysDirectory() + GC_SYS_DIR + DIR_SEP + set_region_dir + DIR_SEP GC_IPL;
if (!File::Exists(m_strBootROM))
{
WARN_LOG(BOOT, "Bootrom file %s not found - using HLE.", m_strBootROM.c_str());
bHLE_BS2 = true;
}
}
}
else if (bWii && !bHLE_BS2)
{
WARN_LOG(BOOT, "GC bootrom file will not be loaded for Wii mode.");
bHLE_BS2 = true;
}
return true;
}
void SCoreStartupParameter::CheckMemcardPath(std::string& memcardPath, const std::string& gameRegion, bool isSlotA)
{
std::string ext("." + gameRegion + ".raw");
if (memcardPath.empty())
{
// Use default memcard path if there is no user defined name
std::string defaultFilename = isSlotA ? GC_MEMCARDA : GC_MEMCARDB;
memcardPath = File::GetUserPath(D_GCUSER_IDX) + defaultFilename + ext;
}
else
{
std::string filename = memcardPath;
std::string region = filename.substr(filename.size()-7, 3);
bool hasregion = false;
hasregion |= region.compare(USA_DIR) == 0;
hasregion |= region.compare(JAP_DIR) == 0;
hasregion |= region.compare(EUR_DIR) == 0;
if (!hasregion)
{
// filename doesn't have region in the extension
if (File::Exists(filename))
{
// If the old file exists we are polite and ask if we should copy it
std::string oldFilename = filename;
filename.replace(filename.size()-4, 4, ext);
if (PanicYesNoT("Memory Card filename in Slot %c is incorrect\n"
"Region not specified\n\n"
"Slot %c path was changed to\n"
"%s\n"
"Would you like to copy the old file to this new location?\n",
isSlotA ? 'A':'B', isSlotA ? 'A':'B', filename.c_str()))
{
if (!File::Copy(oldFilename, filename))
PanicAlertT("Copy failed");
}
}
memcardPath = filename; // Always correct the path!
}
else if (region.compare(gameRegion) != 0)
{
// filename has region, but it's not == gameRegion
// Just set the correct filename, the EXI Device will create it if it doesn't exist
memcardPath = filename.replace(filename.size()-ext.size(), ext.size(), ext);
}
}
}
DiscIO::IVolume::ELanguage SCoreStartupParameter::GetCurrentLanguage(bool wii) const
{
DiscIO::IVolume::ELanguage language;
if (wii)
language = (DiscIO::IVolume::ELanguage)SConfig::GetInstance().m_SYSCONF->GetData<u8>("IPL.LNG");
else
language = (DiscIO::IVolume::ELanguage)(SConfig::GetInstance().m_LocalCoreStartupParameter.SelectedLanguage + 1);
// Get rid of invalid values (probably doesn't matter, but might as well do it)
if (language > DiscIO::IVolume::ELanguage::LANGUAGE_UNKNOWN || language < 0)
language = DiscIO::IVolume::ELanguage::LANGUAGE_UNKNOWN;
return language;
}
IniFile SCoreStartupParameter::LoadDefaultGameIni() const
{
return LoadDefaultGameIni(GetUniqueID(), m_revision);
}
IniFile SCoreStartupParameter::LoadLocalGameIni() const
{
return LoadLocalGameIni(GetUniqueID(), m_revision);
}
IniFile SCoreStartupParameter::LoadGameIni() const
{
return LoadGameIni(GetUniqueID(), m_revision);
}
IniFile SCoreStartupParameter::LoadDefaultGameIni(const std::string& id, u16 revision)
{
IniFile game_ini;
for (const std::string& filename : GetGameIniFilenames(id, revision))
game_ini.Load(File::GetSysDirectory() + GAMESETTINGS_DIR DIR_SEP + filename, true);
return game_ini;
}
IniFile SCoreStartupParameter::LoadLocalGameIni(const std::string& id, u16 revision)
{
IniFile game_ini;
for (const std::string& filename : GetGameIniFilenames(id, revision))
game_ini.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + filename, true);
return game_ini;
}
IniFile SCoreStartupParameter::LoadGameIni(const std::string& id, u16 revision)
{
IniFile game_ini;
for (const std::string& filename : GetGameIniFilenames(id, revision))
game_ini.Load(File::GetSysDirectory() + GAMESETTINGS_DIR DIR_SEP + filename, true);
for (const std::string& filename : GetGameIniFilenames(id, revision))
game_ini.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + filename, true);
return game_ini;
}
// Returns all possible filenames in ascending order of priority
std::vector<std::string> SCoreStartupParameter::GetGameIniFilenames(const std::string& id, u16 revision)
{
std::vector<std::string> filenames;
// INIs that match all regions
if (id.size() >= 4)
filenames.push_back(id.substr(0, 3) + ".ini");
// Regular INIs
filenames.push_back(id + ".ini");
// INIs with specific revisions
filenames.push_back(id + StringFromFormat("r%d", revision) + ".ini");
return filenames;
}

View File

@ -1,159 +0,0 @@
// Copyright 2008 Dolphin Emulator Project
// Licensed under GPLv2+
// Refer to the license.txt file included.
#pragma once
#include <string>
#include "Common/IniFile.h"
#include "DiscIO/Volume.h"
enum GPUDeterminismMode
{
GPU_DETERMINISM_AUTO,
GPU_DETERMINISM_NONE,
// This is currently the only mode. There will probably be at least
// one more at some point.
GPU_DETERMINISM_FAKE_COMPLETION,
};
struct SCoreStartupParameter
{
// Settings
bool bEnableDebugging;
#ifdef USE_GDBSTUB
int iGDBPort;
#ifndef _WIN32
std::string gdb_socket;
#endif
#endif
bool bAutomaticStart;
bool bBootToPause;
int iCPUCore;
// JIT (shared between JIT and JITIL)
bool bJITNoBlockCache, bJITNoBlockLinking;
bool bJITOff;
bool bJITLoadStoreOff, bJITLoadStorelXzOff, bJITLoadStorelwzOff, bJITLoadStorelbzxOff;
bool bJITLoadStoreFloatingOff;
bool bJITLoadStorePairedOff;
bool bJITFloatingPointOff;
bool bJITIntegerOff;
bool bJITPairedOff;
bool bJITSystemRegistersOff;
bool bJITBranchOff;
bool bJITILTimeProfiling;
bool bJITILOutputIR;
bool bFastmem;
bool bFPRF;
bool bAccurateNaNs;
bool bCPUThread;
bool bDSPThread;
bool bDSPHLE;
bool bSkipIdle;
bool bSyncGPUOnSkipIdleHack;
bool bNTSC;
bool bForceNTSCJ;
bool bHLE_BS2;
bool bEnableCheats;
bool bEnableMemcardSaving;
bool bDPL2Decoder;
int iLatency;
bool bRunCompareServer;
bool bRunCompareClient;
bool bMMU;
bool bDCBZOFF;
int iBBDumpPort;
bool bFastDiscSpeed;
bool bSyncGPU;
int iSyncGpuMaxDistance;
int iSyncGpuMinDistance;
float fSyncGpuOverclock;
int SelectedLanguage;
bool bOverrideGCLanguage;
bool bWii;
// Interface settings
bool bConfirmStop, bHideCursor, bAutoHideCursor, bUsePanicHandlers, bOnScreenDisplayMessages;
std::string theme_name;
// Display settings
std::string strFullscreenResolution;
int iRenderWindowXPos, iRenderWindowYPos;
int iRenderWindowWidth, iRenderWindowHeight;
bool bRenderWindowAutoSize, bKeepWindowOnTop;
bool bFullscreen, bRenderToMain;
bool bProgressive, bDisableScreenSaver;
int iPosX, iPosY, iWidth, iHeight;
// Fifo Player related settings
bool bLoopFifoReplay;
enum EBootBS2
{
BOOT_DEFAULT,
BOOT_BS2_JAP,
BOOT_BS2_USA,
BOOT_BS2_EUR,
};
enum EBootType
{
BOOT_ISO,
BOOT_ELF,
BOOT_DOL,
BOOT_WII_NAND,
BOOT_BS2,
BOOT_DFF
};
EBootType m_BootType;
std::string m_strVideoBackend;
std::string m_strGPUDeterminismMode;
// set based on the string version
GPUDeterminismMode m_GPUDeterminismMode;
// files
std::string m_strFilename;
std::string m_strBootROM;
std::string m_strSRAM;
std::string m_strDefaultISO;
std::string m_strDVDRoot;
std::string m_strApploader;
std::string m_strUniqueID;
std::string m_strName;
u16 m_revision;
std::string m_perfDir;
// Constructor just calls LoadDefaults
SCoreStartupParameter();
void LoadDefaults();
bool AutoSetup(EBootBS2 _BootBS2);
const std::string &GetUniqueID() const { return m_strUniqueID; }
void CheckMemcardPath(std::string& memcardPath, const std::string& gameRegion, bool isSlotA);
DiscIO::IVolume::ELanguage GetCurrentLanguage(bool wii) const;
IniFile LoadDefaultGameIni() const;
IniFile LoadLocalGameIni() const;
IniFile LoadGameIni() const;
static IniFile LoadDefaultGameIni(const std::string& id, u16 revision);
static IniFile LoadLocalGameIni(const std::string& id, u16 revision);
static IniFile LoadGameIni(const std::string& id, u16 revision);
static std::vector<std::string> GetGameIniFilenames(const std::string& id, u16 revision);
};

View File

@ -482,7 +482,7 @@ void Idle()
{ {
//DEBUG_LOG(POWERPC, "Idle"); //DEBUG_LOG(POWERPC, "Idle");
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bSyncGPUOnSkipIdleHack) if (SConfig::GetInstance().bSyncGPUOnSkipIdleHack)
{ {
//When the FIFO is processing data we must not advance because in this way //When the FIFO is processing data we must not advance because in this way
//the VI will be desynchronized. So, We are waiting until the FIFO finish and //the VI will be desynchronized. So, We are waiting until the FIFO finish and

View File

@ -74,7 +74,7 @@ void GetTlutLoadData(u32 &tlutAddr, u32 &memAddr, u32 &tlutXferCount, BPMemory &
tlutXferCount = (bpMem.tmem_config.tlut_dest & 0x1FFC00) >> 5; tlutXferCount = (bpMem.tmem_config.tlut_dest & 0x1FFC00) >> 5;
// TODO - figure out a cleaner way. // TODO - figure out a cleaner way.
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (SConfig::GetInstance().bWii)
memAddr = bpMem.tmem_config.tlut_src << 5; memAddr = bpMem.tmem_config.tlut_src << 5;
else else
memAddr = (bpMem.tmem_config.tlut_src & 0xFFFFF) << 5; memAddr = (bpMem.tmem_config.tlut_src & 0xFFFFF) << 5;

View File

@ -163,7 +163,7 @@ FifoPlayer::FifoPlayer() :
m_FrameWrittenCb(nullptr), m_FrameWrittenCb(nullptr),
m_File(nullptr) m_File(nullptr)
{ {
m_Loop = SConfig::GetInstance().m_LocalCoreStartupParameter.bLoopFifoReplay; m_Loop = SConfig::GetInstance().bLoopFifoReplay;
} }
void FifoPlayer::WriteFrame(const FifoFrameInfo &frame, const AnalyzedFrameInfo &info) void FifoPlayer::WriteFrame(const FifoFrameInfo &frame, const AnalyzedFrameInfo &info)

View File

@ -44,7 +44,7 @@ void FifoRecorder::StartRecording(s32 numFrames, CallbackFunc finishedCb)
std::fill(m_Ram.begin(), m_Ram.end(), 0); std::fill(m_Ram.begin(), m_Ram.end(), 0);
std::fill(m_ExRam.begin(), m_ExRam.end(), 0); std::fill(m_ExRam.begin(), m_ExRam.end(), 0);
m_File->SetIsWii(SConfig::GetInstance().m_LocalCoreStartupParameter.bWii); m_File->SetIsWii(SConfig::GetInstance().bWii);
if (!m_IsRecording) if (!m_IsRecording)
{ {

View File

@ -86,7 +86,7 @@ static bool InstallCodeHandler()
u8 mmioAddr = 0xCC; u8 mmioAddr = 0xCC;
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (SConfig::GetInstance().bWii)
{ {
mmioAddr = 0xCD; mmioAddr = 0xCD;
} }
@ -157,7 +157,7 @@ static bool InstallCodeHandler()
void RunCodeHandler() void RunCodeHandler()
{ {
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableCheats && active_codes.size() > 0) if (SConfig::GetInstance().bEnableCheats && active_codes.size() > 0)
{ {
if (!code_handler_installed || PowerPC::HostRead_U32(INSTALLER_BASE_ADDRESS) - 0xd01f1bad > 5) if (!code_handler_installed || PowerPC::HostRead_U32(INSTALLER_BASE_ADDRESS) - 0xd01f1bad > 5)
code_handler_installed = InstallCodeHandler(); code_handler_installed = InstallCodeHandler();

View File

@ -94,7 +94,7 @@ void PatchFunctions()
} }
} }
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableDebugging) if (SConfig::GetInstance().bEnableDebugging)
{ {
for (size_t i = 1; i < sizeof(OSBreakPoints) / sizeof(SPatch); i++) for (size_t i = 1; i < sizeof(OSBreakPoints) / sizeof(SPatch); i++)
{ {
@ -143,7 +143,7 @@ int GetFunctionFlagsByIndex(u32 index)
bool IsEnabled(int flags) bool IsEnabled(int flags)
{ {
if (flags == HLE::HLE_TYPE_DEBUG && !SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableDebugging && PowerPC::GetMode() != MODE_INTERPRETER) if (flags == HLE::HLE_TYPE_DEBUG && !SConfig::GetInstance().bEnableDebugging && PowerPC::GetMode() != MODE_INTERPRETER)
return false; return false;
return true; return true;

View File

@ -226,7 +226,7 @@ void Init(bool hle)
dsp_emulator = CreateDSPEmulator(hle); dsp_emulator = CreateDSPEmulator(hle);
dsp_is_lle = dsp_emulator->IsLLE(); dsp_is_lle = dsp_emulator->IsLLE();
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (SConfig::GetInstance().bWii)
{ {
g_ARAM.wii_mode = true; g_ARAM.wii_mode = true;
g_ARAM.size = Memory::EXRAM_SIZE; g_ARAM.size = Memory::EXRAM_SIZE;

View File

@ -34,7 +34,7 @@ void CARDUCode::Update()
u32 CARDUCode::GetUpdateMs() u32 CARDUCode::GetUpdateMs()
{ {
return SConfig::GetInstance().m_LocalCoreStartupParameter.bWii ? 3 : 5; return SConfig::GetInstance().bWii ? 3 : 5;
} }
void CARDUCode::HandleMail(u32 mail) void CARDUCode::HandleMail(u32 mail)

View File

@ -29,7 +29,7 @@ void GBAUCode::Update()
u32 GBAUCode::GetUpdateMs() u32 GBAUCode::GetUpdateMs()
{ {
return SConfig::GetInstance().m_LocalCoreStartupParameter.bWii ? 3 : 5; return SConfig::GetInstance().bWii ? 3 : 5;
} }
void GBAUCode::HandleMail(u32 mail) void GBAUCode::HandleMail(u32 mail)

View File

@ -31,7 +31,7 @@ void INITUCode::Update()
u32 INITUCode::GetUpdateMs() u32 INITUCode::GetUpdateMs()
{ {
return SConfig::GetInstance().m_LocalCoreStartupParameter.bWii ? 3 : 5; return SConfig::GetInstance().bWii ? 3 : 5;
} }
void INITUCode::HandleMail(u32 mail) void INITUCode::HandleMail(u32 mail)

View File

@ -117,7 +117,7 @@ void ROMUCode::BootUCode()
u32 ROMUCode::GetUpdateMs() u32 ROMUCode::GetUpdateMs()
{ {
return SConfig::GetInstance().m_LocalCoreStartupParameter.bWii ? 3 : 5; return SConfig::GetInstance().bWii ? 3 : 5;
} }
void ROMUCode::DoState(PointerWrap &p) void ROMUCode::DoState(PointerWrap &p)

View File

@ -516,7 +516,7 @@ void ZeldaUCode::ExecuteList()
u32 ZeldaUCode::GetUpdateMs() u32 ZeldaUCode::GetUpdateMs()
{ {
return SConfig::GetInstance().m_LocalCoreStartupParameter.bWii ? 3 : 5; return SConfig::GetInstance().bWii ? 3 : 5;
} }
void ZeldaUCode::DoState(PointerWrap &p) void ZeldaUCode::DoState(PointerWrap &p)

View File

@ -41,14 +41,12 @@ void OSD_AddMessage(const std::string& str, u32 ms)
bool OnThread() bool OnThread()
{ {
const SCoreStartupParameter& _CoreParameter = SConfig::GetInstance().m_LocalCoreStartupParameter; return SConfig::GetInstance().bDSPThread;
return _CoreParameter.bDSPThread;
} }
bool IsWiiHost() bool IsWiiHost()
{ {
const SCoreStartupParameter& _CoreParameter = SConfig::GetInstance().m_LocalCoreStartupParameter; return SConfig::GetInstance().bWii;
return _CoreParameter.bWii;
} }
void InterruptRequest() void InterruptRequest()

View File

@ -324,7 +324,7 @@ void DSPLLE::DSP_Update(int cycles)
DSP_StopSoundStream(); DSP_StopSoundStream();
m_bDSPThread = false; m_bDSPThread = false;
requestDisableThread = false; requestDisableThread = false;
SConfig::GetInstance().m_LocalCoreStartupParameter.bDSPThread = false; SConfig::GetInstance().bDSPThread = false;
} }
} }

View File

@ -506,7 +506,7 @@ void EjectDiscCallback(u64 userdata, int cyclesLate)
void InsertDiscCallback(u64 userdata, int cyclesLate) void InsertDiscCallback(u64 userdata, int cyclesLate)
{ {
std::string& SavedFileName = SConfig::GetInstance().m_LocalCoreStartupParameter.m_strFilename; std::string& SavedFileName = SConfig::GetInstance().m_strFilename;
std::string *_FileName = (std::string *)userdata; std::string *_FileName = (std::string *)userdata;
if (!SetVolumeName(*_FileName)) if (!SetVolumeName(*_FileName))
@ -703,7 +703,7 @@ DVDReadCommand ExecuteReadCommand(u64 DVD_offset, u32 output_address, u32 DVD_le
DVD_length = output_length; DVD_length = output_length;
} }
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bFastDiscSpeed) if (SConfig::GetInstance().bFastDiscSpeed)
// An optional hack to speed up loading times // An optional hack to speed up loading times
*ticks_until_completion = output_length * (SystemTimers::GetTicksPerSecond() / BUFFER_TRANSFER_RATE); *ticks_until_completion = output_length * (SystemTimers::GetTicksPerSecond() / BUFFER_TRANSFER_RATE);
else else

View File

@ -88,12 +88,12 @@ CEXIIPL::CEXIIPL() :
m_FontsLoaded(false) m_FontsLoaded(false)
{ {
// Determine region // Determine region
m_bNTSC = SConfig::GetInstance().m_LocalCoreStartupParameter.bNTSC; m_bNTSC = SConfig::GetInstance().bNTSC;
// Create the IPL // Create the IPL
m_pIPL = (u8*)AllocateMemoryPages(ROM_SIZE); m_pIPL = (u8*)AllocateMemoryPages(ROM_SIZE);
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHLE_BS2) if (SConfig::GetInstance().bHLE_BS2)
{ {
// Copy header // Copy header
memcpy(m_pIPL, m_bNTSC ? iplverNTSC : iplverPAL, m_bNTSC ? sizeof(iplverNTSC) : sizeof(iplverPAL)); memcpy(m_pIPL, m_bNTSC ? iplverNTSC : iplverPAL, m_bNTSC ? sizeof(iplverNTSC) : sizeof(iplverPAL));
@ -105,7 +105,7 @@ CEXIIPL::CEXIIPL() :
else else
{ {
// Load whole ROM dump // Load whole ROM dump
LoadFileToIPL(SConfig::GetInstance().m_LocalCoreStartupParameter.m_strBootROM, 0); LoadFileToIPL(SConfig::GetInstance().m_strBootROM, 0);
// Descramble the encrypted section (contains BS1 and BS2) // Descramble the encrypted section (contains BS1 and BS2)
Descrambler(m_pIPL + 0x100, 0x1aff00); Descrambler(m_pIPL + 0x100, 0x1aff00);
INFO_LOG(BOOT, "Loaded bootrom: %s", m_pIPL); // yay for null-terminated strings ;p INFO_LOG(BOOT, "Loaded bootrom: %s", m_pIPL); // yay for null-terminated strings ;p
@ -115,7 +115,7 @@ CEXIIPL::CEXIIPL() :
memset(m_RTC, 0, sizeof(m_RTC)); memset(m_RTC, 0, sizeof(m_RTC));
// We Overwrite language selection here since it's possible on the GC to change the language as you please // We Overwrite language selection here since it's possible on the GC to change the language as you please
g_SRAM.lang = SConfig::GetInstance().m_LocalCoreStartupParameter.SelectedLanguage; g_SRAM.lang = SConfig::GetInstance().SelectedLanguage;
FixSRAMChecksums(); FixSRAMChecksums();
WriteProtectMemory(m_pIPL, ROM_SIZE); WriteProtectMemory(m_pIPL, ROM_SIZE);
@ -128,7 +128,7 @@ CEXIIPL::~CEXIIPL()
m_pIPL = nullptr; m_pIPL = nullptr;
// SRAM // SRAM
File::IOFile file(SConfig::GetInstance().m_LocalCoreStartupParameter.m_strSRAM, "wb"); File::IOFile file(SConfig::GetInstance().m_strSRAM, "wb");
file.WriteArray(&g_SRAM, 1); file.WriteArray(&g_SRAM, 1);
} }
void CEXIIPL::DoState(PointerWrap &p) void CEXIIPL::DoState(PointerWrap &p)
@ -187,7 +187,7 @@ void CEXIIPL::TransferByte(u8& _uByte)
{ {
// Get the time ... // Get the time ...
u32 &rtc = *((u32 *)&m_RTC); u32 &rtc = *((u32 *)&m_RTC);
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (SConfig::GetInstance().bWii)
{ {
// Subtract Wii bias // Subtract Wii bias
rtc = Common::swap32(CEXIIPL::GetGCTime() - cWiiBias); rtc = Common::swap32(CEXIIPL::GetGCTime() - cWiiBias);

View File

@ -117,7 +117,7 @@ CEXIMemoryCard::CEXIMemoryCard(const int index, bool gciFolder)
// Disney Sports : Soccer GDKEA4 // Disney Sports : Soccer GDKEA4
// Use a 16Mb (251 block) memory card for these games // Use a 16Mb (251 block) memory card for these games
bool useMC251; bool useMC251;
IniFile gameIni = SConfig::GetInstance().m_LocalCoreStartupParameter.LoadGameIni(); IniFile gameIni = SConfig::GetInstance().LoadGameIni();
gameIni.GetOrCreateSection("Core")->Get("MemoryCard251", &useMC251, false); gameIni.GetOrCreateSection("Core")->Get("MemoryCard251", &useMC251, false);
u16 sizeMb = useMC251 ? MemCard251Mb : MemCard2043Mb; u16 sizeMb = useMC251 ? MemCard251Mb : MemCard2043Mb;
@ -139,7 +139,7 @@ CEXIMemoryCard::CEXIMemoryCard(const int index, bool gciFolder)
void CEXIMemoryCard::SetupGciFolder(u16 sizeMb) void CEXIMemoryCard::SetupGciFolder(u16 sizeMb)
{ {
DiscIO::IVolume::ECountry country_code = DiscIO::IVolume::COUNTRY_UNKNOWN; DiscIO::IVolume::ECountry country_code = DiscIO::IVolume::COUNTRY_UNKNOWN;
auto strUniqueID = SConfig::GetInstance().m_LocalCoreStartupParameter.m_strUniqueID; auto strUniqueID = SConfig::GetInstance().m_strUniqueID;
u32 CurrentGameId = 0; u32 CurrentGameId = 0;
if (strUniqueID == TITLEID_SYSMENU_STRING) if (strUniqueID == TITLEID_SYSMENU_STRING)
@ -169,7 +169,7 @@ void CEXIMemoryCard::SetupGciFolder(u16 sizeMb)
case DiscIO::IVolume::COUNTRY_UNKNOWN: case DiscIO::IVolume::COUNTRY_UNKNOWN:
{ {
// The current game's region is not passed down to the EXI device level. // The current game's region is not passed down to the EXI device level.
// Usually, we can retrieve the region from SConfig::GetInstance().m_LocalCoreStartupParameter.m_strUniqueId. // Usually, we can retrieve the region from SConfig::GetInstance().m_strUniqueId.
// The Wii System Menu requires a lookup based on the version number. // The Wii System Menu requires a lookup based on the version number.
// This is not possible in some cases ( e.g. FIFO logs, homebrew elf/dol files). // This is not possible in some cases ( e.g. FIFO logs, homebrew elf/dol files).
// Instead, we then lookup the region from the memory card name // Instead, we then lookup the region from the memory card name
@ -177,7 +177,7 @@ void CEXIMemoryCard::SetupGciFolder(u16 sizeMb)
// For now take advantage of this. // For now take advantage of this.
// Future options: // Future options:
// Set memory card directory path in the checkMemcardPath function. // Set memory card directory path in the checkMemcardPath function.
// or Add region to SConfig::GetInstance().m_LocalCoreStartupParameter. // or Add region to SConfig::GetInstance().
// or Pass region down to the EXI device creation. // or Pass region down to the EXI device creation.
std::string memcardFilename = (card_index == 0) ? SConfig::GetInstance().m_strMemoryCardA : SConfig::GetInstance().m_strMemoryCardB; std::string memcardFilename = (card_index == 0) ? SConfig::GetInstance().m_strMemoryCardA : SConfig::GetInstance().m_strMemoryCardB;

View File

@ -187,7 +187,7 @@ GCMemcardDirectory::GCMemcardDirectory(const std::string& directory, int slot, u
void GCMemcardDirectory::FlushThread() void GCMemcardDirectory::FlushThread()
{ {
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableMemcardSaving) if (!SConfig::GetInstance().bEnableMemcardSaving)
{ {
return; return;
} }

View File

@ -63,7 +63,7 @@ MemoryCard::~MemoryCard()
void MemoryCard::FlushThread() void MemoryCard::FlushThread()
{ {
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableMemcardSaving) if (!SConfig::GetInstance().bEnableMemcardSaving)
{ {
return; return;
} }

View File

@ -44,13 +44,13 @@ namespace HW
ProcessorInterface::Init(); ProcessorInterface::Init();
ExpansionInterface::Init(); // Needs to be initialized before Memory ExpansionInterface::Init(); // Needs to be initialized before Memory
Memory::Init(); Memory::Init();
DSP::Init(SConfig::GetInstance().m_LocalCoreStartupParameter.bDSPHLE); DSP::Init(SConfig::GetInstance().bDSPHLE);
DVDInterface::Init(); DVDInterface::Init();
GPFifo::Init(); GPFifo::Init();
CCPU::Init(SConfig::GetInstance().m_LocalCoreStartupParameter.iCPUCore); CCPU::Init(SConfig::GetInstance().iCPUCore);
SystemTimers::Init(); SystemTimers::Init();
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (SConfig::GetInstance().bWii)
{ {
Common::InitializeWiiRoot(Core::g_want_determinism); Common::InitializeWiiRoot(Core::g_want_determinism);
DiscIO::cUIDsys::AccessInstance().UpdateLocation(); DiscIO::cUIDsys::AccessInstance().UpdateLocation();
@ -71,7 +71,7 @@ namespace HW
SerialInterface::Shutdown(); SerialInterface::Shutdown();
AudioInterface::Shutdown(); AudioInterface::Shutdown();
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (SConfig::GetInstance().bWii)
{ {
WII_IPCInterface::Shutdown(); WII_IPCInterface::Shutdown();
WII_IPC_HLE_Interface::Shutdown(); WII_IPC_HLE_Interface::Shutdown();
@ -103,7 +103,7 @@ namespace HW
AudioInterface::DoState(p); AudioInterface::DoState(p);
p.DoMarker("AudioInterface"); p.DoMarker("AudioInterface");
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (SConfig::GetInstance().bWii)
{ {
WII_IPCInterface::DoState(p); WII_IPCInterface::DoState(p);
p.DoMarker("WII_IPCInterface"); p.DoMarker("WII_IPCInterface");

View File

@ -46,7 +46,7 @@ inline bool IsMMIOAddress(u32 address)
if ((address & 0xFFFF0000) == 0x0C000000) if ((address & 0xFFFF0000) == 0x0C000000)
return true; // GameCube MMIOs return true; // GameCube MMIOs
if(SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if(SConfig::GetInstance().bWii)
{ {
return ((address & 0xFFFF0000) == 0x0D000000) || // Wii MMIOs return ((address & 0xFFFF0000) == 0x0D000000) || // Wii MMIOs
((address & 0xFFFF0000) == 0x0D800000); // Mirror of Wii MMIOs ((address & 0xFFFF0000) == 0x0D800000); // Mirror of Wii MMIOs

View File

@ -167,8 +167,8 @@ static const int num_views = sizeof(views) / sizeof(MemoryView);
void Init() void Init()
{ {
bool wii = SConfig::GetInstance().m_LocalCoreStartupParameter.bWii; bool wii = SConfig::GetInstance().bWii;
bool bMMU = SConfig::GetInstance().m_LocalCoreStartupParameter.bMMU; bool bMMU = SConfig::GetInstance().bMMU;
#ifndef _ARCH_32 #ifndef _ARCH_32
// If MMU is turned off in GameCube mode, turn on fake VMEM hack. // If MMU is turned off in GameCube mode, turn on fake VMEM hack.
// The fake VMEM hack's address space is above the memory space that we // The fake VMEM hack's address space is above the memory space that we
@ -197,7 +197,7 @@ void Init()
void DoState(PointerWrap &p) void DoState(PointerWrap &p)
{ {
bool wii = SConfig::GetInstance().m_LocalCoreStartupParameter.bWii; bool wii = SConfig::GetInstance().bWii;
p.DoArray(m_pRAM, RAM_SIZE); p.DoArray(m_pRAM, RAM_SIZE);
p.DoArray(m_pL1Cache, L1_CACHE_SIZE); p.DoArray(m_pL1Cache, L1_CACHE_SIZE);
p.DoMarker("Memory RAM"); p.DoMarker("Memory RAM");
@ -213,7 +213,7 @@ void Shutdown()
{ {
m_IsInitialized = false; m_IsInitialized = false;
u32 flags = 0; u32 flags = 0;
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) flags |= MV_WII_ONLY; if (SConfig::GetInstance().bWii) flags |= MV_WII_ONLY;
if (bFakeVMEM) flags |= MV_FAKE_VMEM; if (bFakeVMEM) flags |= MV_FAKE_VMEM;
MemoryMap_Shutdown(views, num_views, flags, &g_arena); MemoryMap_Shutdown(views, num_views, flags, &g_arena);
g_arena.ReleaseSHMSegment(); g_arena.ReleaseSHMSegment();
@ -229,7 +229,7 @@ void Clear()
memset(m_pRAM, 0, RAM_SIZE); memset(m_pRAM, 0, RAM_SIZE);
if (m_pL1Cache) if (m_pL1Cache)
memset(m_pL1Cache, 0, L1_CACHE_SIZE); memset(m_pL1Cache, 0, L1_CACHE_SIZE);
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii && m_pEXRAM) if (SConfig::GetInstance().bWii && m_pEXRAM)
memset(m_pEXRAM, 0, EXRAM_SIZE); memset(m_pEXRAM, 0, EXRAM_SIZE);
} }
@ -303,7 +303,7 @@ u8* GetPointer(u32 address)
if (address < REALRAM_SIZE) if (address < REALRAM_SIZE)
return m_pRAM + address; return m_pRAM + address;
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (SConfig::GetInstance().bWii)
{ {
if ((address >> 28) == 0x1 && (address & 0x0fffffff) < EXRAM_SIZE) if ((address >> 28) == 0x1 && (address & 0x0fffffff) < EXRAM_SIZE)
return m_pEXRAM + (address & EXRAM_MASK); return m_pEXRAM + (address & EXRAM_MASK);

View File

@ -60,7 +60,7 @@ SRAM sram_dump_german = {{
void InitSRAM() void InitSRAM()
{ {
File::IOFile file(SConfig::GetInstance().m_LocalCoreStartupParameter.m_strSRAM, "rb"); File::IOFile file(SConfig::GetInstance().m_strSRAM, "rb");
if (file) if (file)
{ {
if (!file.ReadArray(&g_SRAM, 1)) if (!file.ReadArray(&g_SRAM, 1))

View File

@ -116,7 +116,7 @@ static void AudioDMACallback(u64 userdata, int cyclesLate)
static void IPC_HLE_UpdateCallback(u64 userdata, int cyclesLate) static void IPC_HLE_UpdateCallback(u64 userdata, int cyclesLate)
{ {
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (SConfig::GetInstance().bWii)
{ {
WII_IPC_HLE_Interface::UpdateDevices(); WII_IPC_HLE_Interface::UpdateDevices();
CoreTiming::ScheduleEvent(IPC_HLE_PERIOD - cyclesLate, et_IPC_HLE); CoreTiming::ScheduleEvent(IPC_HLE_PERIOD - cyclesLate, et_IPC_HLE);
@ -218,7 +218,7 @@ static void ThrottleCallback(u64 last_time, int cyclesLate)
// split from Init to break a circular dependency between VideoInterface::Init and SystemTimers::Init // split from Init to break a circular dependency between VideoInterface::Init and SystemTimers::Init
void PreInit() void PreInit()
{ {
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (SConfig::GetInstance().bWii)
CPU_CORE_CLOCK = 729000000u; CPU_CORE_CLOCK = 729000000u;
else else
CPU_CORE_CLOCK = 486000000u; CPU_CORE_CLOCK = 486000000u;
@ -226,7 +226,7 @@ void PreInit()
void Init() void Init()
{ {
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (SConfig::GetInstance().bWii)
{ {
// AyuanX: TO BE TWEAKED // AyuanX: TO BE TWEAKED
// Now the 1500 is a pure assumption // Now the 1500 is a pure assumption
@ -251,7 +251,7 @@ void Init()
et_Dec = CoreTiming::RegisterEvent("DecCallback", DecrementerCallback); et_Dec = CoreTiming::RegisterEvent("DecCallback", DecrementerCallback);
et_VI = CoreTiming::RegisterEvent("VICallback", VICallback); et_VI = CoreTiming::RegisterEvent("VICallback", VICallback);
et_SI = CoreTiming::RegisterEvent("SICallback", SICallback); et_SI = CoreTiming::RegisterEvent("SICallback", SICallback);
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bCPUThread && SConfig::GetInstance().m_LocalCoreStartupParameter.bSyncGPU) if (SConfig::GetInstance().bCPUThread && SConfig::GetInstance().bSyncGPU)
et_CP = CoreTiming::RegisterEvent("CPCallback", CPCallback); et_CP = CoreTiming::RegisterEvent("CPCallback", CPCallback);
et_DSP = CoreTiming::RegisterEvent("DSPCallback", DSPCallback); et_DSP = CoreTiming::RegisterEvent("DSPCallback", DSPCallback);
et_AudioDMA = CoreTiming::RegisterEvent("AudioDMACallback", AudioDMACallback); et_AudioDMA = CoreTiming::RegisterEvent("AudioDMACallback", AudioDMACallback);
@ -264,13 +264,13 @@ void Init()
CoreTiming::ScheduleEvent(VideoInterface::GetTicksPerFrame(), et_SI); CoreTiming::ScheduleEvent(VideoInterface::GetTicksPerFrame(), et_SI);
CoreTiming::ScheduleEvent(AUDIO_DMA_PERIOD, et_AudioDMA); CoreTiming::ScheduleEvent(AUDIO_DMA_PERIOD, et_AudioDMA);
CoreTiming::ScheduleEvent(0, et_Throttle, Common::Timer::GetTimeMs()); CoreTiming::ScheduleEvent(0, et_Throttle, Common::Timer::GetTimeMs());
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bCPUThread && SConfig::GetInstance().m_LocalCoreStartupParameter.bSyncGPU) if (SConfig::GetInstance().bCPUThread && SConfig::GetInstance().bSyncGPU)
CoreTiming::ScheduleEvent(0, et_CP); CoreTiming::ScheduleEvent(0, et_CP);
s_last_sync_gpu_tick = CoreTiming::GetTicks(); s_last_sync_gpu_tick = CoreTiming::GetTicks();
CoreTiming::ScheduleEvent(VideoInterface::GetTicksPerFrame(), et_PatchEngine); CoreTiming::ScheduleEvent(VideoInterface::GetTicksPerFrame(), et_PatchEngine);
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (SConfig::GetInstance().bWii)
CoreTiming::ScheduleEvent(IPC_HLE_PERIOD, et_IPC_HLE); CoreTiming::ScheduleEvent(IPC_HLE_PERIOD, et_IPC_HLE);
} }

View File

@ -137,10 +137,10 @@ void Preset(bool _bNTSC)
m_VBeamPos = 0; // RG4JC0 checks for a zero VBeamPos m_VBeamPos = 0; // RG4JC0 checks for a zero VBeamPos
// 54MHz, capable of progressive scan // 54MHz, capable of progressive scan
m_Clock = SConfig::GetInstance().m_LocalCoreStartupParameter.bProgressive; m_Clock = SConfig::GetInstance().bProgressive;
// Say component cable is plugged // Say component cable is plugged
m_DTVStatus.component_plugged = SConfig::GetInstance().m_LocalCoreStartupParameter.bProgressive; m_DTVStatus.component_plugged = SConfig::GetInstance().bProgressive;
UpdateParameters(); UpdateParameters();
} }
@ -172,7 +172,7 @@ void Init()
fields = 1; fields = 1;
m_DTVStatus.ntsc_j = SConfig::GetInstance().m_LocalCoreStartupParameter.bForceNTSCJ; m_DTVStatus.ntsc_j = SConfig::GetInstance().bForceNTSCJ;
for (UVIInterruptRegister& reg : m_InterruptRegister) for (UVIInterruptRegister& reg : m_InterruptRegister)
{ {
@ -400,7 +400,7 @@ void RegisterMMIO(MMIO::Mapping* mmio, u32 base)
void SetRegionReg(char region) void SetRegionReg(char region)
{ {
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bForceNTSCJ) if (!SConfig::GetInstance().bForceNTSCJ)
m_DTVStatus.ntsc_j = region == 'J'; m_DTVStatus.ntsc_j = region == 'J';
} }

View File

@ -195,14 +195,14 @@ bool Wiimote::Read()
if (result > 0 && m_channel > 0) if (result > 0 && m_channel > 0)
{ {
if (SConfig::GetInstance().m_LocalCoreStartupParameter.iBBDumpPort > 0 && if (SConfig::GetInstance().iBBDumpPort > 0 &&
m_index == WIIMOTE_BALANCE_BOARD) m_index == WIIMOTE_BALANCE_BOARD)
{ {
static sf::UdpSocket Socket; static sf::UdpSocket Socket;
Socket.send((char*)rpt.data(), Socket.send((char*)rpt.data(),
rpt.size(), rpt.size(),
sf::IpAddress::LocalHost, sf::IpAddress::LocalHost,
SConfig::GetInstance().m_LocalCoreStartupParameter.iBBDumpPort); SConfig::GetInstance().iBBDumpPort);
} }
// Add it to queue // Add it to queue
@ -229,10 +229,10 @@ bool Wiimote::Write()
if (!is_speaker_data || m_last_audio_report.GetTimeDifference() > 5) if (!is_speaker_data || m_last_audio_report.GetTimeDifference() > 5)
{ {
if (SConfig::GetInstance().m_LocalCoreStartupParameter.iBBDumpPort > 0 && m_index == WIIMOTE_BALANCE_BOARD) if (SConfig::GetInstance().iBBDumpPort > 0 && m_index == WIIMOTE_BALANCE_BOARD)
{ {
static sf::UdpSocket Socket; static sf::UdpSocket Socket;
Socket.send((char*)rpt.data(), rpt.size(), sf::IpAddress::LocalHost, SConfig::GetInstance().m_LocalCoreStartupParameter.iBBDumpPort); Socket.send((char*)rpt.data(), rpt.size(), sf::IpAddress::LocalHost, SConfig::GetInstance().iBBDumpPort);
} }
IOWrite(rpt.data(), rpt.size()); IOWrite(rpt.data(), rpt.size());

View File

@ -176,15 +176,15 @@ void Init()
s_bFrameStep = false; s_bFrameStep = false;
s_bFrameStop = false; s_bFrameStop = false;
s_bSaveConfig = false; s_bSaveConfig = false;
s_iCPUCore = SConfig::GetInstance().m_LocalCoreStartupParameter.iCPUCore; s_iCPUCore = SConfig::GetInstance().iCPUCore;
if (IsPlayingInput()) if (IsPlayingInput())
{ {
ReadHeader(); ReadHeader();
std::thread md5thread(CheckMD5); std::thread md5thread(CheckMD5);
md5thread.detach(); md5thread.detach();
if (strncmp((char *)tmpHeader.gameID, SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID().c_str(), 6)) if (strncmp((char *)tmpHeader.gameID, SConfig::GetInstance().GetUniqueID().c_str(), 6))
{ {
PanicAlertT("The recorded game (%s) is not the same as the selected game (%s)", tmpHeader.gameID, SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID().c_str()); PanicAlertT("The recorded game (%s) is not the same as the selected game (%s)", tmpHeader.gameID, SConfig::GetInstance().GetUniqueID().c_str());
EndPlayInput(false); EndPlayInput(false);
} }
} }
@ -481,7 +481,7 @@ bool BeginRecordingInput(int controllers)
// This is only done here if starting from save state because otherwise we won't have the titleid. Otherwise it's set in WII_IPC_HLE_Device_es.cpp. // This is only done here if starting from save state because otherwise we won't have the titleid. Otherwise it's set in WII_IPC_HLE_Device_es.cpp.
// TODO: find a way to GetTitleDataPath() from Movie::Init() // TODO: find a way to GetTitleDataPath() from Movie::Init()
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (SConfig::GetInstance().bWii)
{ {
if (File::Exists(Common::GetTitleDataPath(g_titleID) + "banner.bin")) if (File::Exists(Common::GetTitleDataPath(g_titleID) + "banner.bin"))
Movie::g_bClearSave = false; Movie::g_bClearSave = false;
@ -907,7 +907,7 @@ void LoadInput(const std::string& filename)
} }
ChangePads(true); ChangePads(true);
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (SConfig::GetInstance().bWii)
ChangeWiiPads(true); ChangeWiiPads(true);
u64 totalSavedBytes = t_record.GetSize() - 256; u64 totalSavedBytes = t_record.GetSize() - 256;
@ -1196,9 +1196,9 @@ void SaveRecording(const std::string& filename)
memset(&header, 0, sizeof(DTMHeader)); memset(&header, 0, sizeof(DTMHeader));
header.filetype[0] = 'D'; header.filetype[1] = 'T'; header.filetype[2] = 'M'; header.filetype[3] = 0x1A; header.filetype[0] = 'D'; header.filetype[1] = 'T'; header.filetype[2] = 'M'; header.filetype[3] = 0x1A;
strncpy((char *)header.gameID, SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID().c_str(), 6); strncpy((char *)header.gameID, SConfig::GetInstance().GetUniqueID().c_str(), 6);
header.bWii = SConfig::GetInstance().m_LocalCoreStartupParameter.bWii; header.bWii = SConfig::GetInstance().bWii;
header.numControllers = s_numPads & (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii ? 0xFF : 0x0F); header.numControllers = s_numPads & (SConfig::GetInstance().bWii ? 0xFF : 0x0F);
header.bFromSaveState = s_bRecordingFromSaveState; header.bFromSaveState = s_bRecordingFromSaveState;
header.frameCount = g_totalFrames; header.frameCount = g_totalFrames;
@ -1287,16 +1287,16 @@ void SetGraphicsConfig()
void GetSettings() void GetSettings()
{ {
s_bSaveConfig = true; s_bSaveConfig = true;
s_bSkipIdle = SConfig::GetInstance().m_LocalCoreStartupParameter.bSkipIdle; s_bSkipIdle = SConfig::GetInstance().bSkipIdle;
s_bDualCore = SConfig::GetInstance().m_LocalCoreStartupParameter.bCPUThread; s_bDualCore = SConfig::GetInstance().bCPUThread;
s_bProgressive = SConfig::GetInstance().m_LocalCoreStartupParameter.bProgressive; s_bProgressive = SConfig::GetInstance().bProgressive;
s_bDSPHLE = SConfig::GetInstance().m_LocalCoreStartupParameter.bDSPHLE; s_bDSPHLE = SConfig::GetInstance().bDSPHLE;
s_bFastDiscSpeed = SConfig::GetInstance().m_LocalCoreStartupParameter.bFastDiscSpeed; s_bFastDiscSpeed = SConfig::GetInstance().bFastDiscSpeed;
s_videoBackend = g_video_backend->GetName(); s_videoBackend = g_video_backend->GetName();
s_bSyncGPU = SConfig::GetInstance().m_LocalCoreStartupParameter.bSyncGPU; s_bSyncGPU = SConfig::GetInstance().bSyncGPU;
s_iCPUCore = SConfig::GetInstance().m_LocalCoreStartupParameter.iCPUCore; s_iCPUCore = SConfig::GetInstance().iCPUCore;
s_bNetPlay = NetPlay::IsNetPlayRunning(); s_bNetPlay = NetPlay::IsNetPlayRunning();
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (!SConfig::GetInstance().bWii)
g_bClearSave = !File::Exists(SConfig::GetInstance().m_strMemoryCardA); g_bClearSave = !File::Exists(SConfig::GetInstance().m_strMemoryCardA);
s_memcards |= (SConfig::GetInstance().m_EXIDevice[0] == EXIDEVICE_MEMORYCARD) << 0; s_memcards |= (SConfig::GetInstance().m_EXIDevice[0] == EXIDEVICE_MEMORYCARD) << 0;
s_memcards |= (SConfig::GetInstance().m_EXIDevice[1] == EXIDEVICE_MEMORYCARD) << 1; s_memcards |= (SConfig::GetInstance().m_EXIDevice[1] == EXIDEVICE_MEMORYCARD) << 1;
@ -1353,7 +1353,7 @@ void CheckMD5()
Core::DisplayMessage("Verifying checksum...", 2000); Core::DisplayMessage("Verifying checksum...", 2000);
unsigned char gameMD5[16]; unsigned char gameMD5[16];
md5_file(SConfig::GetInstance().m_LocalCoreStartupParameter.m_strFilename.c_str(), gameMD5); md5_file(SConfig::GetInstance().m_strFilename.c_str(), gameMD5);
if (memcmp(gameMD5,s_MD5,16) == 0) if (memcmp(gameMD5,s_MD5,16) == 0)
Core::DisplayMessage("Checksum of current game matches the recorded game.", 2000); Core::DisplayMessage("Checksum of current game matches the recorded game.", 2000);
@ -1365,7 +1365,7 @@ void GetMD5()
{ {
Core::DisplayMessage("Calculating checksum of game file...", 2000); Core::DisplayMessage("Calculating checksum of game file...", 2000);
memset(s_MD5, 0, sizeof(s_MD5)); memset(s_MD5, 0, sizeof(s_MD5));
md5_file(SConfig::GetInstance().m_LocalCoreStartupParameter.m_strFilename.c_str(), s_MD5); md5_file(SConfig::GetInstance().m_strFilename.c_str(), s_MD5);
Core::DisplayMessage("Finished calculating checksum.", 2000); Core::DisplayMessage("Finished calculating checksum.", 2000);
} }

View File

@ -693,7 +693,7 @@ bool NetPlayClient::StartGame(const std::string &path)
UpdateDevices(); UpdateDevices();
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (SConfig::GetInstance().bWii)
{ {
for (unsigned int i = 0; i < 4; ++i) for (unsigned int i = 0; i < 4; ++i)
WiimoteReal::ChangeWiimoteSource(i, m_wiimote_map[i] > 0 ? WIIMOTE_SRC_EMU : WIIMOTE_SRC_NONE); WiimoteReal::ChangeWiimoteSource(i, m_wiimote_map[i] > 0 ? WIIMOTE_SRC_EMU : WIIMOTE_SRC_NONE);

View File

@ -161,9 +161,9 @@ int GetSpeedhackCycles(const u32 addr)
void LoadPatches() void LoadPatches()
{ {
IniFile merged = SConfig::GetInstance().m_LocalCoreStartupParameter.LoadGameIni(); IniFile merged = SConfig::GetInstance().LoadGameIni();
IniFile globalIni = SConfig::GetInstance().m_LocalCoreStartupParameter.LoadDefaultGameIni(); IniFile globalIni = SConfig::GetInstance().LoadDefaultGameIni();
IniFile localIni = SConfig::GetInstance().m_LocalCoreStartupParameter.LoadLocalGameIni(); IniFile localIni = SConfig::GetInstance().LoadLocalGameIni();
LoadPatchSection("OnFrame", onFrame, globalIni, localIni); LoadPatchSection("OnFrame", onFrame, globalIni, localIni);
ActionReplay::LoadCodes(globalIni, localIni, false); ActionReplay::LoadCodes(globalIni, localIni, false);

View File

@ -195,7 +195,7 @@ void Interpreter::Run()
while (!PowerPC::GetState()) while (!PowerPC::GetState())
{ {
//we have to check exceptions at branches apparently (or maybe just rfi?) //we have to check exceptions at branches apparently (or maybe just rfi?)
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableDebugging) if (SConfig::GetInstance().bEnableDebugging)
{ {
#ifdef SHOW_HISTORY #ifdef SHOW_HISTORY
PCBlockVec.push_back(PC); PCBlockVec.push_back(PC);

View File

@ -376,7 +376,7 @@ void Interpreter::dcbtst(UGeckoInstruction _inst)
void Interpreter::dcbz(UGeckoInstruction _inst) void Interpreter::dcbz(UGeckoInstruction _inst)
{ {
// HACK but works... we think // HACK but works... we think
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bDCBZOFF) if (!SConfig::GetInstance().bDCBZOFF)
PowerPC::ClearCacheLine(Helper_Get_EA_X(_inst) & (~31)); PowerPC::ClearCacheLine(Helper_Get_EA_X(_inst) & (~31));
if (!JitInterface::GetCore()) if (!JitInterface::GetCore())
PowerPC::CheckExceptions(); PowerPC::CheckExceptions();

View File

@ -190,7 +190,7 @@ void Jit64::Init()
// BLR optimization has the same consequences as block linking, as well as // BLR optimization has the same consequences as block linking, as well as
// depending on the fault handler to be safe in the event of excessive BL. // depending on the fault handler to be safe in the event of excessive BL.
m_enable_blr_optimization = jo.enableBlocklink && SConfig::GetInstance().m_LocalCoreStartupParameter.bFastmem && !SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableDebugging; m_enable_blr_optimization = jo.enableBlocklink && SConfig::GetInstance().bFastmem && !SConfig::GetInstance().bEnableDebugging;
m_clear_cache_asap = false; m_clear_cache_asap = false;
m_stack = nullptr; m_stack = nullptr;
@ -494,7 +494,7 @@ void Jit64::Jit(u32 em_address)
farcode.GetSpaceLeft() < 0x10000 || farcode.GetSpaceLeft() < 0x10000 ||
trampolines.GetSpaceLeft() < 0x10000 || trampolines.GetSpaceLeft() < 0x10000 ||
blocks.IsFull() || blocks.IsFull() ||
SConfig::GetInstance().m_LocalCoreStartupParameter.bJITNoBlockCache || SConfig::GetInstance().bJITNoBlockCache ||
m_clear_cache_asap) m_clear_cache_asap)
{ {
ClearCache(); ClearCache();
@ -502,7 +502,7 @@ void Jit64::Jit(u32 em_address)
int blockSize = code_buffer.GetSize(); int blockSize = code_buffer.GetSize();
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableDebugging) if (SConfig::GetInstance().bEnableDebugging)
{ {
// We can link blocks as long as we are not single stepping and there are no breakpoints here // We can link blocks as long as we are not single stepping and there are no breakpoints here
EnableBlockLink(); EnableBlockLink();
@ -599,7 +599,7 @@ const u8* Jit64::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBloc
fpr.Start(); fpr.Start();
js.downcountAmount = 0; js.downcountAmount = 0;
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableDebugging) if (!SConfig::GetInstance().bEnableDebugging)
js.downcountAmount += PatchEngine::GetSpeedhackCycles(code_block.m_address); js.downcountAmount += PatchEngine::GetSpeedhackCycles(code_block.m_address);
js.skipInstructions = 0; js.skipInstructions = 0;
@ -750,7 +750,7 @@ const u8* Jit64::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBloc
js.firstFPInstructionFound = true; js.firstFPInstructionFound = true;
} }
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableDebugging && breakpoints.IsAddressBreakPoint(ops[i].address) && GetState() != CPU_STEPPING) if (SConfig::GetInstance().bEnableDebugging && breakpoints.IsAddressBreakPoint(ops[i].address) && GetState() != CPU_STEPPING)
{ {
// Turn off block linking if there are breakpoints so that the Step Over command does not link this block. // Turn off block linking if there are breakpoints so that the Step Over command does not link this block.
jo.enableBlocklink = false; jo.enableBlocklink = false;
@ -889,7 +889,7 @@ BitSet32 Jit64::CallerSavedRegistersInUse()
void Jit64::EnableBlockLink() void Jit64::EnableBlockLink()
{ {
jo.enableBlocklink = true; jo.enableBlocklink = true;
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bJITNoBlockLinking) if (SConfig::GetInstance().bJITNoBlockLinking)
jo.enableBlocklink = false; jo.enableBlocklink = false;
} }

View File

@ -46,7 +46,7 @@ void Jit64AsmRoutineManager::Generate()
ABI_PushRegistersAndAdjustStack({}, 0); ABI_PushRegistersAndAdjustStack({}, 0);
ABI_CallFunction(reinterpret_cast<void *>(&CoreTiming::Advance)); ABI_CallFunction(reinterpret_cast<void *>(&CoreTiming::Advance));
ABI_PopRegistersAndAdjustStack({}, 0); ABI_PopRegistersAndAdjustStack({}, 0);
FixupBranch skipToRealDispatch = J(SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableDebugging); //skip the sync and compare first time FixupBranch skipToRealDispatch = J(SConfig::GetInstance().bEnableDebugging); //skip the sync and compare first time
dispatcherMispredictedBLR = GetCodePtr(); dispatcherMispredictedBLR = GetCodePtr();
AND(32, PPCSTATE(pc), Imm32(0xFFFFFFFC)); AND(32, PPCSTATE(pc), Imm32(0xFFFFFFFC));
@ -68,7 +68,7 @@ void Jit64AsmRoutineManager::Generate()
FixupBranch dbg_exit; FixupBranch dbg_exit;
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableDebugging) if (SConfig::GetInstance().bEnableDebugging)
{ {
TEST(32, M(PowerPC::GetStatePtr()), Imm32(PowerPC::CPU_STEPPING)); TEST(32, M(PowerPC::GetStatePtr()), Imm32(PowerPC::CPU_STEPPING));
FixupBranch notStepping = J_CC(CC_Z); FixupBranch notStepping = J_CC(CC_Z);
@ -110,7 +110,7 @@ void Jit64AsmRoutineManager::Generate()
FixupBranch no_mem; FixupBranch no_mem;
FixupBranch exit_mem; FixupBranch exit_mem;
FixupBranch exit_vmem; FixupBranch exit_vmem;
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (SConfig::GetInstance().bWii)
mask = JIT_ICACHE_EXRAM_BIT; mask = JIT_ICACHE_EXRAM_BIT;
mask |= JIT_ICACHE_VMEM_BIT; mask |= JIT_ICACHE_VMEM_BIT;
TEST(32, R(RSCRATCH), Imm32(mask)); TEST(32, R(RSCRATCH), Imm32(mask));
@ -143,9 +143,9 @@ void Jit64AsmRoutineManager::Generate()
MOV(32, R(RSCRATCH), MRegSum(RSCRATCH2, RSCRATCH)); MOV(32, R(RSCRATCH), MRegSum(RSCRATCH2, RSCRATCH));
} }
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) exit_vmem = J(); if (SConfig::GetInstance().bWii) exit_vmem = J();
SetJumpTarget(no_vmem); SetJumpTarget(no_vmem);
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (SConfig::GetInstance().bWii)
{ {
TEST(32, R(RSCRATCH), Imm32(JIT_ICACHE_EXRAM_BIT)); TEST(32, R(RSCRATCH), Imm32(JIT_ICACHE_EXRAM_BIT));
FixupBranch no_exram = J_CC(CC_Z); FixupBranch no_exram = J_CC(CC_Z);
@ -163,7 +163,7 @@ void Jit64AsmRoutineManager::Generate()
SetJumpTarget(no_exram); SetJumpTarget(no_exram);
} }
SetJumpTarget(exit_mem); SetJumpTarget(exit_mem);
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (SConfig::GetInstance().bWii)
SetJumpTarget(exit_vmem); SetJumpTarget(exit_vmem);
TEST(32, R(RSCRATCH), R(RSCRATCH)); TEST(32, R(RSCRATCH), R(RSCRATCH));
@ -209,7 +209,7 @@ void Jit64AsmRoutineManager::Generate()
J_CC(CC_Z, outerLoop); J_CC(CC_Z, outerLoop);
//Landing pad for drec space //Landing pad for drec space
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableDebugging) if (SConfig::GetInstance().bEnableDebugging)
SetJumpTarget(dbg_exit); SetJumpTarget(dbg_exit);
ResetStack(); ResetStack();
if (m_stack_top) if (m_stack_top)

View File

@ -51,7 +51,7 @@ void Jit64::SetFPRFIfNeeded(X64Reg xmm)
// As far as we know, the games that use this flag only need FPRF for fmul and fmadd, but // As far as we know, the games that use this flag only need FPRF for fmul and fmadd, but
// FPRF is fast enough in JIT that we might as well just enable it for every float instruction // FPRF is fast enough in JIT that we might as well just enable it for every float instruction
// if the FPRF flag is set. // if the FPRF flag is set.
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bFPRF && js.op->wantsFPRF) if (SConfig::GetInstance().bFPRF && js.op->wantsFPRF)
SetFPRF(xmm); SetFPRF(xmm);
} }
@ -65,7 +65,7 @@ void Jit64::HandleNaNs(UGeckoInstruction inst, X64Reg xmm_out, X64Reg xmm)
// Dragon Ball: Revenge of King Piccolo requires generated NaNs // Dragon Ball: Revenge of King Piccolo requires generated NaNs
// to be positive, so we'll have to handle them manually. // to be positive, so we'll have to handle them manually.
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bAccurateNaNs) if (!SConfig::GetInstance().bAccurateNaNs)
{ {
if (xmm_out != xmm) if (xmm_out != xmm)
MOVAPD(xmm_out, R(xmm)); MOVAPD(xmm_out, R(xmm));
@ -185,7 +185,7 @@ void Jit64::fp_arith(UGeckoInstruction inst)
packed = false; packed = false;
bool round_input = single && !jit->js.op->fprIsSingle[inst.FC]; bool round_input = single && !jit->js.op->fprIsSingle[inst.FC];
bool preserve_inputs = SConfig::GetInstance().m_LocalCoreStartupParameter.bAccurateNaNs; bool preserve_inputs = SConfig::GetInstance().bAccurateNaNs;
X64Reg dest = INVALID_REG; X64Reg dest = INVALID_REG;
switch (inst.SUBOP5) switch (inst.SUBOP5)
@ -459,7 +459,7 @@ void Jit64::fmrx(UGeckoInstruction inst)
void Jit64::FloatCompare(UGeckoInstruction inst, bool upper) void Jit64::FloatCompare(UGeckoInstruction inst, bool upper)
{ {
bool fprf = SConfig::GetInstance().m_LocalCoreStartupParameter.bFPRF && js.op->wantsFPRF; bool fprf = SConfig::GetInstance().bFPRF && js.op->wantsFPRF;
//bool ordered = !!(inst.SUBOP10 & 32); //bool ordered = !!(inst.SUBOP10 & 32);
int a = inst.FA; int a = inst.FA;
int b = inst.FB; int b = inst.FB;

View File

@ -21,9 +21,9 @@ void Jit64::lXXx(UGeckoInstruction inst)
int a = inst.RA, b = inst.RB, d = inst.RD; int a = inst.RA, b = inst.RB, d = inst.RD;
// Skip disabled JIT instructions // Skip disabled JIT instructions
FALLBACK_IF(SConfig::GetInstance().m_LocalCoreStartupParameter.bJITLoadStorelbzxOff && (inst.OPCD == 31) && (inst.SUBOP10 == 87)); FALLBACK_IF(SConfig::GetInstance().bJITLoadStorelbzxOff && (inst.OPCD == 31) && (inst.SUBOP10 == 87));
FALLBACK_IF(SConfig::GetInstance().m_LocalCoreStartupParameter.bJITLoadStorelXzOff && ((inst.OPCD == 34) || (inst.OPCD == 40) || (inst.OPCD == 32))); FALLBACK_IF(SConfig::GetInstance().bJITLoadStorelXzOff && ((inst.OPCD == 34) || (inst.OPCD == 40) || (inst.OPCD == 32)));
FALLBACK_IF(SConfig::GetInstance().m_LocalCoreStartupParameter.bJITLoadStorelwzOff && (inst.OPCD == 32)); FALLBACK_IF(SConfig::GetInstance().bJITLoadStorelwzOff && (inst.OPCD == 32));
// Determine memory access size and sign extend // Determine memory access size and sign extend
int accessSize = 0; int accessSize = 0;
@ -110,13 +110,13 @@ void Jit64::lXXx(UGeckoInstruction inst)
// ... maybe the throttle one already do that :p // ... maybe the throttle one already do that :p
// TODO: We shouldn't use a debug read here. It should be possible to get // TODO: We shouldn't use a debug read here. It should be possible to get
// the following instructions out of the JIT state. // the following instructions out of the JIT state.
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bSkipIdle && if (SConfig::GetInstance().bSkipIdle &&
PowerPC::GetState() != PowerPC::CPU_STEPPING && PowerPC::GetState() != PowerPC::CPU_STEPPING &&
inst.OPCD == 32 && inst.OPCD == 32 &&
MergeAllowedNextInstructions(2) && MergeAllowedNextInstructions(2) &&
(inst.hex & 0xFFFF0000) == 0x800D0000 && (inst.hex & 0xFFFF0000) == 0x800D0000 &&
(js.op[1].inst.hex == 0x28000000 || (js.op[1].inst.hex == 0x28000000 ||
(SConfig::GetInstance().m_LocalCoreStartupParameter.bWii && js.op[1].inst.hex == 0x2C000000)) && (SConfig::GetInstance().bWii && js.op[1].inst.hex == 0x2C000000)) &&
js.op[2].inst.hex == 0x4182fff8) js.op[2].inst.hex == 0x4182fff8)
{ {
// TODO(LinesPrower): // TODO(LinesPrower):
@ -315,7 +315,7 @@ void Jit64::dcbz(UGeckoInstruction inst)
{ {
INSTRUCTION_START INSTRUCTION_START
JITDISABLE(bJITLoadStoreOff); JITDISABLE(bJITLoadStoreOff);
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bDCBZOFF) if (SConfig::GetInstance().bDCBZOFF)
return; return;
int a = inst.RA; int a = inst.RA;
@ -347,7 +347,7 @@ void Jit64::dcbz(UGeckoInstruction inst)
// Mask out the address so we don't write to MEM1 out of bounds // Mask out the address so we don't write to MEM1 out of bounds
// FIXME: Work out why the AGP disc writes out of bounds // FIXME: Work out why the AGP disc writes out of bounds
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (!SConfig::GetInstance().bWii)
AND(32, R(RSCRATCH), Imm32(Memory::RAM_MASK)); AND(32, R(RSCRATCH), Imm32(Memory::RAM_MASK));
PXOR(XMM0, R(XMM0)); PXOR(XMM0, R(XMM0));
MOVAPS(MComplex(RMEM, RSCRATCH, SCALE_1, 0), XMM0); MOVAPS(MComplex(RMEM, RSCRATCH, SCALE_1, 0), XMM0);

View File

@ -260,7 +260,7 @@ void JitIL::Init()
code_block.m_gpa = &js.gpa; code_block.m_gpa = &js.gpa;
code_block.m_fpa = &js.fpa; code_block.m_fpa = &js.fpa;
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bJITILTimeProfiling) if (SConfig::GetInstance().bJITILTimeProfiling)
{ {
JitILProfiler::Init(); JitILProfiler::Init();
} }
@ -275,7 +275,7 @@ void JitIL::ClearCache()
void JitIL::Shutdown() void JitIL::Shutdown()
{ {
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bJITILTimeProfiling) if (SConfig::GetInstance().bJITILTimeProfiling)
{ {
JitILProfiler::Shutdown(); JitILProfiler::Shutdown();
} }
@ -363,7 +363,7 @@ void JitIL::Cleanup()
void JitIL::WriteExit(u32 destination) void JitIL::WriteExit(u32 destination)
{ {
Cleanup(); Cleanup();
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bJITILTimeProfiling) if (SConfig::GetInstance().bJITILTimeProfiling)
{ {
ABI_CallFunction((void *)JitILProfiler::End); ABI_CallFunction((void *)JitILProfiler::End);
} }
@ -396,7 +396,7 @@ void JitIL::WriteExitDestInOpArg(const Gen::OpArg& arg)
{ {
MOV(32, PPCSTATE(pc), arg); MOV(32, PPCSTATE(pc), arg);
Cleanup(); Cleanup();
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bJITILTimeProfiling) if (SConfig::GetInstance().bJITILTimeProfiling)
{ {
ABI_CallFunction((void *)JitILProfiler::End); ABI_CallFunction((void *)JitILProfiler::End);
} }
@ -409,7 +409,7 @@ void JitIL::WriteRfiExitDestInOpArg(const Gen::OpArg& arg)
MOV(32, PPCSTATE(pc), arg); MOV(32, PPCSTATE(pc), arg);
MOV(32, PPCSTATE(npc), arg); MOV(32, PPCSTATE(npc), arg);
Cleanup(); Cleanup();
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bJITILTimeProfiling) if (SConfig::GetInstance().bJITILTimeProfiling)
{ {
ABI_CallFunction((void *)JitILProfiler::End); ABI_CallFunction((void *)JitILProfiler::End);
} }
@ -421,7 +421,7 @@ void JitIL::WriteRfiExitDestInOpArg(const Gen::OpArg& arg)
void JitIL::WriteExceptionExit() void JitIL::WriteExceptionExit()
{ {
Cleanup(); Cleanup();
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bJITILTimeProfiling) if (SConfig::GetInstance().bJITILTimeProfiling)
{ {
ABI_CallFunction((void *)JitILProfiler::End); ABI_CallFunction((void *)JitILProfiler::End);
} }
@ -474,14 +474,14 @@ void JitIL::Trace()
void JitIL::Jit(u32 em_address) void JitIL::Jit(u32 em_address)
{ {
if (GetSpaceLeft() < 0x10000 || farcode.GetSpaceLeft() < 0x10000 || blocks.IsFull() || if (GetSpaceLeft() < 0x10000 || farcode.GetSpaceLeft() < 0x10000 || blocks.IsFull() ||
SConfig::GetInstance().m_LocalCoreStartupParameter.bJITNoBlockCache) SConfig::GetInstance().bJITNoBlockCache)
{ {
ClearCache(); ClearCache();
} }
int blockSize = code_buffer.GetSize(); int blockSize = code_buffer.GetSize();
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableDebugging) if (SConfig::GetInstance().bEnableDebugging)
{ {
// We can link blocks as long as we are not single stepping and there are no breakpoints here // We can link blocks as long as we are not single stepping and there are no breakpoints here
EnableBlockLink(); EnableBlockLink();
@ -564,8 +564,8 @@ const u8* JitIL::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBloc
js.rewriteStart = (u8*)GetCodePtr(); js.rewriteStart = (u8*)GetCodePtr();
u64 codeHash = -1; u64 codeHash = -1;
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bJITILTimeProfiling || if (SConfig::GetInstance().bJITILTimeProfiling ||
SConfig::GetInstance().m_LocalCoreStartupParameter.bJITILOutputIR) SConfig::GetInstance().bJITILOutputIR)
{ {
// For profiling and IR Writer // For profiling and IR Writer
for (u32 i = 0; i < code_block.m_num_instructions; i++) for (u32 i = 0; i < code_block.m_num_instructions; i++)
@ -576,7 +576,7 @@ const u8* JitIL::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBloc
} }
} }
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bJITILTimeProfiling) if (SConfig::GetInstance().bJITILTimeProfiling)
{ {
JitILProfiler::Block& block = JitILProfiler::Add(codeHash); JitILProfiler::Block& block = JitILProfiler::Add(codeHash);
ABI_CallFunctionC((void *)JitILProfiler::Begin, block.index); ABI_CallFunctionC((void *)JitILProfiler::Begin, block.index);
@ -587,7 +587,7 @@ const u8* JitIL::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBloc
ibuild.Reset(); ibuild.Reset();
js.downcountAmount = 0; js.downcountAmount = 0;
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableDebugging) if (!SConfig::GetInstance().bEnableDebugging)
js.downcountAmount += PatchEngine::GetSpeedhackCycles(code_block.m_address); js.downcountAmount += PatchEngine::GetSpeedhackCycles(code_block.m_address);
// Translate instructions // Translate instructions
@ -635,7 +635,7 @@ const u8* JitIL::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBloc
ibuild.EmitExtExceptionCheck(ibuild.EmitIntConst(ops[i].address)); ibuild.EmitExtExceptionCheck(ibuild.EmitIntConst(ops[i].address));
} }
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableDebugging && breakpoints.IsAddressBreakPoint(ops[i].address) && GetState() != CPU_STEPPING) if (SConfig::GetInstance().bEnableDebugging && breakpoints.IsAddressBreakPoint(ops[i].address) && GetState() != CPU_STEPPING)
{ {
// Turn off block linking if there are breakpoints so that the Step Over command does not link this block. // Turn off block linking if there are breakpoints so that the Step Over command does not link this block.
jo.enableBlocklink = false; jo.enableBlocklink = false;
@ -668,7 +668,7 @@ const u8* JitIL::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBloc
LogGeneratedX86(code_block.m_num_instructions, code_buf, normalEntry, b); LogGeneratedX86(code_block.m_num_instructions, code_buf, normalEntry, b);
#endif #endif
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bJITILOutputIR) if (SConfig::GetInstance().bJITILOutputIR)
{ {
ibuild.WriteToFile(codeHash); ibuild.WriteToFile(codeHash);
} }
@ -679,6 +679,6 @@ const u8* JitIL::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitBloc
void JitIL::EnableBlockLink() void JitIL::EnableBlockLink()
{ {
jo.enableBlocklink = true; jo.enableBlocklink = true;
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bJITNoBlockLinking) if (SConfig::GetInstance().bJITNoBlockLinking)
jo.enableBlocklink = false; jo.enableBlocklink = false;
} }

View File

@ -241,7 +241,7 @@ void JitArm64::SingleStep()
void JitArm64::Jit(u32) void JitArm64::Jit(u32)
{ {
if (GetSpaceLeft() < 0x10000 || blocks.IsFull() || SConfig::GetInstance().m_LocalCoreStartupParameter.bJITNoBlockCache) if (GetSpaceLeft() < 0x10000 || blocks.IsFull() || SConfig::GetInstance().bJITNoBlockCache)
{ {
ClearCache(); ClearCache();
} }
@ -255,7 +255,7 @@ const u8* JitArm64::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitB
{ {
int blockSize = code_buf->GetSize(); int blockSize = code_buf->GetSize();
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableDebugging) if (SConfig::GetInstance().bEnableDebugging)
{ {
// Comment out the following to disable breakpoints (speed-up) // Comment out the following to disable breakpoints (speed-up)
blockSize = 1; blockSize = 1;
@ -319,7 +319,7 @@ const u8* JitArm64::DoJit(u32 em_address, PPCAnalyst::CodeBuffer *code_buf, JitB
gpr.Start(js.gpa); gpr.Start(js.gpa);
fpr.Start(js.fpa); fpr.Start(js.fpa);
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableDebugging) if (!SConfig::GetInstance().bEnableDebugging)
js.downcountAmount += PatchEngine::GetSpeedhackCycles(em_address); js.downcountAmount += PatchEngine::GetSpeedhackCycles(em_address);
// Translate instructions // Translate instructions

View File

@ -410,11 +410,11 @@ void JitArm64::lXX(UGeckoInstruction inst)
SafeLoadToReg(d, update ? a : (a ? a : -1), offsetReg, flags, offset, update); SafeLoadToReg(d, update ? a : (a ? a : -1), offsetReg, flags, offset, update);
// LWZ idle skipping // LWZ idle skipping
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bSkipIdle && if (SConfig::GetInstance().bSkipIdle &&
inst.OPCD == 32 && inst.OPCD == 32 &&
(inst.hex & 0xFFFF0000) == 0x800D0000 && (inst.hex & 0xFFFF0000) == 0x800D0000 &&
(PowerPC::HostRead_U32(js.compilerPC + 4) == 0x28000000 || (PowerPC::HostRead_U32(js.compilerPC + 4) == 0x28000000 ||
(SConfig::GetInstance().m_LocalCoreStartupParameter.bWii && PowerPC::HostRead_U32(js.compilerPC + 4) == 0x2C000000)) && (SConfig::GetInstance().bWii && PowerPC::HostRead_U32(js.compilerPC + 4) == 0x2C000000)) &&
PowerPC::HostRead_U32(js.compilerPC + 8) == 0x4182fff8) PowerPC::HostRead_U32(js.compilerPC + 8) == 0x4182fff8)
{ {
// if it's still 0, we can wait until the next event // if it's still 0, we can wait until the next event

View File

@ -67,7 +67,7 @@ bool JitBase::MergeAllowedNextInstructions(int count)
// Be careful: a breakpoint kills flags in between instructions // Be careful: a breakpoint kills flags in between instructions
for (int i = 1; i <= count; i++) for (int i = 1; i <= count; i++)
{ {
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableDebugging && if (SConfig::GetInstance().bEnableDebugging &&
PowerPC::breakpoints.IsAddressBreakPoint(js.op[i].address)) PowerPC::breakpoints.IsAddressBreakPoint(js.op[i].address))
return false; return false;
if (js.op[i].isBranchTarget) if (js.op[i].isBranchTarget)
@ -79,9 +79,9 @@ bool JitBase::MergeAllowedNextInstructions(int count)
void JitBase::UpdateMemoryOptions() void JitBase::UpdateMemoryOptions()
{ {
bool any_watchpoints = PowerPC::memchecks.HasAny(); bool any_watchpoints = PowerPC::memchecks.HasAny();
jo.fastmem = SConfig::GetInstance().m_LocalCoreStartupParameter.bFastmem && jo.fastmem = SConfig::GetInstance().bFastmem &&
!any_watchpoints; !any_watchpoints;
jo.memcheck = SConfig::GetInstance().m_LocalCoreStartupParameter.bMMU || jo.memcheck = SConfig::GetInstance().bMMU ||
any_watchpoints; any_watchpoints;
jo.alwaysUseMemFuncs = any_watchpoints; jo.alwaysUseMemFuncs = any_watchpoints;

View File

@ -62,8 +62,8 @@ inline OpArg MPIC(const void* address, X64Reg scale_reg, int scale = SCALE_1)
#define FALLBACK_IF(cond) do { if (cond) { FallBackToInterpreter(inst); return; } } while (0) #define FALLBACK_IF(cond) do { if (cond) { FallBackToInterpreter(inst); return; } } while (0)
#define JITDISABLE(setting) FALLBACK_IF(SConfig::GetInstance().m_LocalCoreStartupParameter.bJITOff || \ #define JITDISABLE(setting) FALLBACK_IF(SConfig::GetInstance().bJITOff || \
SConfig::GetInstance().m_LocalCoreStartupParameter.setting) SConfig::GetInstance().setting)
class JitBase : public CPUCoreBase class JitBase : public CPUCoreBase
{ {

View File

@ -36,7 +36,7 @@ using namespace Gen;
return; return;
} }
JitRegister::Init(SConfig::GetInstance().m_LocalCoreStartupParameter.m_perfDir); JitRegister::Init(SConfig::GetInstance().m_perfDir);
iCache.fill(JIT_ICACHE_INVALID_BYTE); iCache.fill(JIT_ICACHE_INVALID_BYTE);
iCacheEx.fill(JIT_ICACHE_INVALID_BYTE); iCacheEx.fill(JIT_ICACHE_INVALID_BYTE);

View File

@ -250,7 +250,7 @@ FixupBranch EmuCodeBlock::CheckIfSafeAddress(const OpArg& reg_value, X64Reg reg_
// assuming they'll never do an invalid memory access. // assuming they'll never do an invalid memory access.
// The slightly more complex check needed for Wii games using the space just above MEM1 isn't // The slightly more complex check needed for Wii games using the space just above MEM1 isn't
// implemented here yet, since there are no known working Wii MMU games to test it with. // implemented here yet, since there are no known working Wii MMU games to test it with.
if (jit->jo.memcheck && !SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (jit->jo.memcheck && !SConfig::GetInstance().bWii)
{ {
if (scratch == reg_addr) if (scratch == reg_addr)
PUSH(scratch); PUSH(scratch);

View File

@ -143,11 +143,11 @@ void JitILBase::bcx(UGeckoInstruction inst)
// If idle skipping is enabled, then this branch will only be reached when the branch is not // If idle skipping is enabled, then this branch will only be reached when the branch is not
// taken. // taken.
// TODO: We shouldn't use debug reads here. // TODO: We shouldn't use debug reads here.
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bSkipIdle && if (SConfig::GetInstance().bSkipIdle &&
inst.hex == 0x4182fff8 && inst.hex == 0x4182fff8 &&
(PowerPC::HostRead_U32(js.compilerPC - 8) & 0xFFFF0000) == 0x800D0000 && (PowerPC::HostRead_U32(js.compilerPC - 8) & 0xFFFF0000) == 0x800D0000 &&
(PowerPC::HostRead_U32(js.compilerPC - 4) == 0x28000000 || (PowerPC::HostRead_U32(js.compilerPC - 4) == 0x28000000 ||
(SConfig::GetInstance().m_LocalCoreStartupParameter.bWii && PowerPC::HostRead_U32(js.compilerPC - 4) == 0x2C000000)) (SConfig::GetInstance().bWii && PowerPC::HostRead_U32(js.compilerPC - 4) == 0x2C000000))
) )
{ {
// Uh, Do nothing. // Uh, Do nothing.

View File

@ -12,7 +12,7 @@ void JitILBase::fp_arith_s(UGeckoInstruction inst)
FALLBACK_IF(inst.Rc || (inst.SUBOP5 != 25 && inst.SUBOP5 != 20 && inst.SUBOP5 != 21)); FALLBACK_IF(inst.Rc || (inst.SUBOP5 != 25 && inst.SUBOP5 != 20 && inst.SUBOP5 != 21));
// Only the interpreter has "proper" support for (some) FP flags // Only the interpreter has "proper" support for (some) FP flags
FALLBACK_IF(inst.SUBOP5 == 25 && SConfig::GetInstance().m_LocalCoreStartupParameter.bFPRF); FALLBACK_IF(inst.SUBOP5 == 25 && SConfig::GetInstance().bFPRF);
IREmitter::InstLoc val = ibuild.EmitLoadFReg(inst.FA); IREmitter::InstLoc val = ibuild.EmitLoadFReg(inst.FA);
switch (inst.SUBOP5) switch (inst.SUBOP5)
@ -49,7 +49,7 @@ void JitILBase::fmaddXX(UGeckoInstruction inst)
FALLBACK_IF(inst.Rc); FALLBACK_IF(inst.Rc);
// Only the interpreter has "proper" support for (some) FP flags // Only the interpreter has "proper" support for (some) FP flags
FALLBACK_IF(inst.SUBOP5 == 29 && SConfig::GetInstance().m_LocalCoreStartupParameter.bFPRF); FALLBACK_IF(inst.SUBOP5 == 29 && SConfig::GetInstance().bFPRF);
IREmitter::InstLoc val = ibuild.EmitLoadFReg(inst.FA); IREmitter::InstLoc val = ibuild.EmitLoadFReg(inst.FA);
val = ibuild.EmitFDMul(val, ibuild.EmitLoadFReg(inst.FC)); val = ibuild.EmitFDMul(val, ibuild.EmitLoadFReg(inst.FC));

View File

@ -53,12 +53,12 @@ void JitILBase::lXz(UGeckoInstruction inst)
// TODO: This really should be done somewhere else. Either lower in the IR // TODO: This really should be done somewhere else. Either lower in the IR
// or higher in PPCAnalyst // or higher in PPCAnalyst
// TODO: We shouldn't use debug reads here. // TODO: We shouldn't use debug reads here.
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bSkipIdle && if (SConfig::GetInstance().bSkipIdle &&
PowerPC::GetState() != PowerPC::CPU_STEPPING && PowerPC::GetState() != PowerPC::CPU_STEPPING &&
inst.OPCD == 32 && // Lwx inst.OPCD == 32 && // Lwx
(inst.hex & 0xFFFF0000) == 0x800D0000 && (inst.hex & 0xFFFF0000) == 0x800D0000 &&
(PowerPC::HostRead_U32(js.compilerPC + 4) == 0x28000000 || (PowerPC::HostRead_U32(js.compilerPC + 4) == 0x28000000 ||
(SConfig::GetInstance().m_LocalCoreStartupParameter.bWii && PowerPC::HostRead_U32(js.compilerPC + 4) == 0x2C000000)) && (SConfig::GetInstance().bWii && PowerPC::HostRead_U32(js.compilerPC + 4) == 0x2C000000)) &&
PowerPC::HostRead_U32(js.compilerPC + 8) == 0x4182fff8) PowerPC::HostRead_U32(js.compilerPC + 8) == 0x4182fff8)
{ {
val = ibuild.EmitLoad32(addr); val = ibuild.EmitLoad32(addr);
@ -183,7 +183,7 @@ void JitILBase::dcbz(UGeckoInstruction inst)
// TODO! // TODO!
#if 0 #if 0
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bJITOff || SConfig::GetInstance().m_LocalCoreStartupParameter.bJITLoadStoreOff) if (SConfig::GetInstance().bJITOff || SConfig::GetInstance().bJITLoadStoreOff)
{ {
Default(inst); Default(inst);
return; return;

View File

@ -44,7 +44,7 @@ namespace JitInterface
} }
CPUCoreBase *InitJitCore(int core) CPUCoreBase *InitJitCore(int core)
{ {
bMMU = SConfig::GetInstance().m_LocalCoreStartupParameter.bMMU; bMMU = SConfig::GetInstance().bMMU;
bFakeVMEM = !bMMU; bFakeVMEM = !bMMU;
CPUCoreBase *ptr = nullptr; CPUCoreBase *ptr = nullptr;

View File

@ -386,7 +386,7 @@ TryReadInstResult TryReadInstruction(u32 address)
if (UReg_MSR(MSR).IR) if (UReg_MSR(MSR).IR)
{ {
// TODO: Use real translation. // TODO: Use real translation.
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bMMU && (address & Memory::ADDR_MASK_MEM1)) if (SConfig::GetInstance().bMMU && (address & Memory::ADDR_MASK_MEM1))
{ {
u32 tlb_addr = TranslateAddress<FLAG_OPCODE>(address); u32 tlb_addr = TranslateAddress<FLAG_OPCODE>(address);
if (tlb_addr == 0) if (tlb_addr == 0)
@ -886,7 +886,7 @@ union UPTE2
static void GenerateDSIException(u32 effectiveAddress, bool write) static void GenerateDSIException(u32 effectiveAddress, bool write)
{ {
// DSI exceptions are only supported in MMU mode. // DSI exceptions are only supported in MMU mode.
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bMMU) if (!SConfig::GetInstance().bMMU)
{ {
PanicAlert("Invalid %s to 0x%08x, PC = 0x%08x ", write ? "Write to" : "Read from", effectiveAddress, PC); PanicAlert("Invalid %s to 0x%08x, PC = 0x%08x ", write ? "Write to" : "Read from", effectiveAddress, PC);
return; return;

View File

@ -221,7 +221,7 @@ static bool CanSwapAdjacentOps(const CodeOp &a, const CodeOp &b)
int b_flags = b_info->flags; int b_flags = b_info->flags;
// can't reorder around breakpoints // can't reorder around breakpoints
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableDebugging && if (SConfig::GetInstance().bEnableDebugging &&
(PowerPC::breakpoints.IsAddressBreakPoint(a.address) || PowerPC::breakpoints.IsAddressBreakPoint(b.address))) (PowerPC::breakpoints.IsAddressBreakPoint(a.address) || PowerPC::breakpoints.IsAddressBreakPoint(b.address)))
return false; return false;
if (b_flags & (FL_SET_CRx | FL_ENDBLOCK | FL_TIMER | FL_EVIL | FL_SET_OE)) if (b_flags & (FL_SET_CRx | FL_ENDBLOCK | FL_TIMER | FL_EVIL | FL_SET_OE))

View File

@ -171,7 +171,7 @@ void Init(int cpu_core)
ppcState.iCache.Init(); ppcState.iCache.Init();
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableDebugging) if (SConfig::GetInstance().bEnableDebugging)
breakpoints.ClearAllTemporary(); breakpoints.ClearAllTemporary();
} }

View File

@ -162,7 +162,7 @@ static std::string DoState(PointerWrap& p)
g_video_backend->DoState(p); g_video_backend->DoState(p);
p.DoMarker("video_backend"); p.DoMarker("video_backend");
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (SConfig::GetInstance().bWii)
Wiimote::DoState(p.GetPPtr(), p.GetMode()); Wiimote::DoState(p.GetPPtr(), p.GetMode());
p.DoMarker("Wiimote"); p.DoMarker("Wiimote");
@ -316,7 +316,7 @@ static void CompressAndDumpState(CompressAndDumpState_args save_args)
// Setting up the header // Setting up the header
StateHeader header; StateHeader header;
memcpy(header.gameID, SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID().c_str(), 6); memcpy(header.gameID, SConfig::GetInstance().GetUniqueID().c_str(), 6);
header.size = g_use_compression ? (u32)buffer_size : 0; header.size = g_use_compression ? (u32)buffer_size : 0;
header.time = Common::Timer::GetDoubleTime(); header.time = Common::Timer::GetDoubleTime();
@ -434,7 +434,7 @@ static void LoadFileStateData(const std::string& filename, std::vector<u8>& ret_
StateHeader header; StateHeader header;
f.ReadArray(&header, 1); f.ReadArray(&header, 1);
if (memcmp(SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID().c_str(), header.gameID, 6)) if (memcmp(SConfig::GetInstance().GetUniqueID().c_str(), header.gameID, 6))
{ {
Core::DisplayMessage(StringFromFormat("State belongs to a different game (ID %.*s)", Core::DisplayMessage(StringFromFormat("State belongs to a different game (ID %.*s)",
6, header.gameID), 2000); 6, header.gameID), 2000);
@ -613,7 +613,7 @@ void Shutdown()
static std::string MakeStateFilename(int number) static std::string MakeStateFilename(int number)
{ {
return StringFromFormat("%s%s.s%02i", File::GetUserPath(D_STATESAVES_IDX).c_str(), return StringFromFormat("%s%s.s%02i", File::GetUserPath(D_STATESAVES_IDX).c_str(),
SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID().c_str(), number); SConfig::GetInstance().GetUniqueID().c_str(), number);
} }
void Save(int slot, bool wait) void Save(int slot, bool wait)

View File

@ -132,7 +132,7 @@ GameFile::GameFile(const QString& fileName)
if (m_valid) if (m_valid)
{ {
IniFile ini = SCoreStartupParameter::LoadGameIni(m_unique_id.toStdString(), m_revision); IniFile ini = SConfig::LoadGameIni(m_unique_id.toStdString(), m_revision);
std::string issues_temp; std::string issues_temp;
ini.GetIfExists("EmuState", "EmulationStateId", &m_emu_state); ini.GetIfExists("EmuState", "EmulationStateId", &m_emu_state);
ini.GetIfExists("EmuState", "EmulationIssues", &issues_temp); ini.GetIfExists("EmuState", "EmulationIssues", &issues_temp);
@ -260,7 +260,7 @@ QString GameFile::GetDescription(DiscIO::IVolume::ELanguage language) const
QString GameFile::GetDescription() const QString GameFile::GetDescription() const
{ {
bool wii = m_platform != DiscIO::IVolume::GAMECUBE_DISC; bool wii = m_platform != DiscIO::IVolume::GAMECUBE_DISC;
return GetDescription(SConfig::GetInstance().m_LocalCoreStartupParameter.GetCurrentLanguage(wii)); return GetDescription(SConfig::GetInstance().GetCurrentLanguage(wii));
} }
QString GameFile::GetName(bool prefer_long, DiscIO::IVolume::ELanguage language) const QString GameFile::GetName(bool prefer_long, DiscIO::IVolume::ELanguage language) const
@ -271,7 +271,7 @@ QString GameFile::GetName(bool prefer_long, DiscIO::IVolume::ELanguage language)
QString GameFile::GetName(bool prefer_long) const QString GameFile::GetName(bool prefer_long) const
{ {
bool wii = m_platform != DiscIO::IVolume::GAMECUBE_DISC; bool wii = m_platform != DiscIO::IVolume::GAMECUBE_DISC;
QString name = GetName(prefer_long, SConfig::GetInstance().m_LocalCoreStartupParameter.GetCurrentLanguage(wii)); QString name = GetName(prefer_long, SConfig::GetInstance().GetCurrentLanguage(wii));
if (name.isEmpty()) if (name.isEmpty())
{ {
// No usable name, return filename (better than nothing) // No usable name, return filename (better than nothing)

View File

@ -106,7 +106,7 @@ void DMainWindow::StartGame(const QString filename)
m_render_widget->setWindowTitle(tr("Dolphin")); // TODO m_render_widget->setWindowTitle(tr("Dolphin")); // TODO
m_render_widget->setWindowIcon(windowIcon()); m_render_widget->setWindowIcon(windowIcon());
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bFullscreen) if (SConfig::GetInstance().bFullscreen)
{ {
m_render_widget->setWindowFlags(m_render_widget->windowFlags() | Qt::BypassWindowManagerHint); m_render_widget->setWindowFlags(m_render_widget->windowFlags() | Qt::BypassWindowManagerHint);
g_Config.bFullscreen = !g_Config.bBorderlessFullscreen; g_Config.bFullscreen = !g_Config.bBorderlessFullscreen;
@ -117,11 +117,11 @@ void DMainWindow::StartGame(const QString filename)
m_ui->centralWidget->addWidget(m_render_widget.get()); m_ui->centralWidget->addWidget(m_render_widget.get());
m_ui->centralWidget->setCurrentWidget(m_render_widget.get()); m_ui->centralWidget->setCurrentWidget(m_render_widget.get());
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderWindowAutoSize) if (SConfig::GetInstance().bRenderWindowAutoSize)
{ {
// Resize main window to fit render // Resize main window to fit render
m_render_widget->setMinimumSize(SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowWidth, m_render_widget->setMinimumSize(SConfig::GetInstance().iRenderWindowWidth,
SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowHeight); SConfig::GetInstance().iRenderWindowHeight);
qApp->processEvents(); // Force a redraw so the window has time to resize qApp->processEvents(); // Force a redraw so the window has time to resize
m_render_widget->setMinimumSize(0, 0); // Allow the widget to scale down m_render_widget->setMinimumSize(0, 0); // Allow the widget to scale down
} }
@ -131,7 +131,7 @@ void DMainWindow::StartGame(const QString filename)
if (!BootManager::BootCore(filename.toStdString())) if (!BootManager::BootCore(filename.toStdString()))
{ {
QMessageBox::critical(this, tr("Fatal error"), tr("Failed to init Core"), QMessageBox::Ok); QMessageBox::critical(this, tr("Fatal error"), tr("Failed to init Core"), QMessageBox::Ok);
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bFullscreen) if (SConfig::GetInstance().bFullscreen)
m_render_widget->close(); m_render_widget->close();
else else
m_ui->centralWidget->removeWidget(m_render_widget.get()); m_ui->centralWidget->removeWidget(m_render_widget.get());
@ -179,7 +179,7 @@ void DMainWindow::DoStartPause()
Core::SetState(Core::CORE_RUN); Core::SetState(Core::CORE_RUN);
emit CoreStateChanged(Core::CORE_RUN); emit CoreStateChanged(Core::CORE_RUN);
} }
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor) if (SConfig::GetInstance().bHideCursor)
m_render_widget->setCursor(Qt::BlankCursor); m_render_widget->setCursor(Qt::BlankCursor);
} }
@ -236,7 +236,7 @@ bool DMainWindow::OnStop()
return true; return true;
// Ask for confirmation in case the user accidentally clicked Stop / Escape // Ask for confirmation in case the user accidentally clicked Stop / Escape
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bConfirmStop) if (SConfig::GetInstance().bConfirmStop)
{ {
// Pause emulation // Pause emulation
Core::SetState(Core::CORE_PAUSE); Core::SetState(Core::CORE_PAUSE);
@ -273,7 +273,7 @@ bool DMainWindow::Stop()
//if (m_bBatchMode) //if (m_bBatchMode)
// Close(true); // Close(true);
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bFullscreen) if (SConfig::GetInstance().bFullscreen)
m_render_widget->close(); m_render_widget->close();
else else
m_ui->centralWidget->removeWidget(m_render_widget.get()); m_ui->centralWidget->removeWidget(m_render_widget.get());

View File

@ -60,7 +60,7 @@ void Resources::Init()
void Resources::UpdatePixmaps() void Resources::UpdatePixmaps()
{ {
QString dir = QString::fromStdString(File::GetThemeDir(SConfig::GetInstance().m_LocalCoreStartupParameter.theme_name)); QString dir = QString::fromStdString(File::GetThemeDir(SConfig::GetInstance().theme_name));
m_pixmaps[TOOLBAR_OPEN].load(GIFN("open")); m_pixmaps[TOOLBAR_OPEN].load(GIFN("open"));
m_pixmaps[TOOLBAR_REFRESH].load(GIFN("refresh")); m_pixmaps[TOOLBAR_REFRESH].load(GIFN("refresh"));
m_pixmaps[TOOLBAR_BROWSE].load(GIFN("browse")); m_pixmaps[TOOLBAR_BROWSE].load(GIFN("browse"));

View File

@ -28,7 +28,6 @@
#include "Core/ActionReplay.h" #include "Core/ActionReplay.h"
#include "Core/ConfigManager.h" #include "Core/ConfigManager.h"
#include "Core/Core.h" #include "Core/Core.h"
#include "Core/CoreParameter.h"
#include "Core/GeckoCode.h" #include "Core/GeckoCode.h"
#include "Core/GeckoCodeConfig.h" #include "Core/GeckoCodeConfig.h"
#include "DolphinWX/Frame.h" #include "DolphinWX/Frame.h"
@ -154,7 +153,7 @@ void wxCheatsWindow::OnEvent_Close(wxCloseEvent& ev)
void wxCheatsWindow::UpdateGUI() void wxCheatsWindow::UpdateGUI()
{ {
// load code // load code
SCoreStartupParameter parameters = SConfig::GetInstance().m_LocalCoreStartupParameter; const SConfig& parameters = SConfig::GetInstance();
m_gameini_default = parameters.LoadDefaultGameIni(); m_gameini_default = parameters.LoadDefaultGameIni();
m_gameini_local = parameters.LoadLocalGameIni(); m_gameini_local = parameters.LoadLocalGameIni();
m_gameini_local_path = File::GetUserPath(D_GAMESETTINGS_IDX) + parameters.GetUniqueID() + ".ini"; m_gameini_local_path = File::GetUserPath(D_GAMESETTINGS_IDX) + parameters.GetUniqueID() + ".ini";
@ -168,7 +167,7 @@ void wxCheatsWindow::UpdateGUI()
// write the ISO name in the title // write the ISO name in the title
if (Core::IsRunning()) if (Core::IsRunning())
SetTitle(title + ": " + SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID() + " - " + SConfig::GetInstance().m_LocalCoreStartupParameter.m_strName); SetTitle(title + ": " + parameters.GetUniqueID() + " - " + parameters.m_strName);
else else
SetTitle(title); SetTitle(title);
} }
@ -198,7 +197,7 @@ void wxCheatsWindow::Load_ARCodes()
void wxCheatsWindow::Load_GeckoCodes() void wxCheatsWindow::Load_GeckoCodes()
{ {
m_geckocode_panel->LoadCodes(m_gameini_default, m_gameini_local, SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID(), true); m_geckocode_panel->LoadCodes(m_gameini_default, m_gameini_local, SConfig::GetInstance().GetUniqueID(), true);
} }
void wxCheatsWindow::OnEvent_CheatsList_ItemSelected(wxCommandEvent& WXUNUSED(event)) void wxCheatsWindow::OnEvent_CheatsList_ItemSelected(wxCommandEvent& WXUNUSED(event))

View File

@ -86,7 +86,7 @@ void AdvancedConfigPane::OnClockOverrideSliderChanged(wxCommandEvent& event)
void AdvancedConfigPane::UpdateCPUClock() void AdvancedConfigPane::UpdateCPUClock()
{ {
bool wii = SConfig::GetInstance().m_LocalCoreStartupParameter.bWii; bool wii = SConfig::GetInstance().bWii;
int percent = (int)(std::roundf(SConfig::GetInstance().m_OCFactor * 100.f)); int percent = (int)(std::roundf(SConfig::GetInstance().m_OCFactor * 100.f));
int clock = (int)(std::roundf(SConfig::GetInstance().m_OCFactor * (wii ? 729.f : 486.f))); int clock = (int)(std::roundf(SConfig::GetInstance().m_OCFactor * (wii ? 729.f : 486.f)));

View File

@ -86,7 +86,7 @@ void AudioConfigPane::LoadGUIValues()
{ {
PopulateBackendChoiceBox(); PopulateBackendChoiceBox();
const SCoreStartupParameter& startup_params = SConfig::GetInstance().m_LocalCoreStartupParameter; const SConfig& startup_params = SConfig::GetInstance();
// Audio DSP Engine // Audio DSP Engine
if (startup_params.bDSPHLE) if (startup_params.bDSPHLE)
@ -120,14 +120,14 @@ void AudioConfigPane::RefreshGUI()
void AudioConfigPane::OnDSPEngineRadioBoxChanged(wxCommandEvent& event) void AudioConfigPane::OnDSPEngineRadioBoxChanged(wxCommandEvent& event)
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.bDSPHLE = m_dsp_engine_radiobox->GetSelection() == 0; SConfig::GetInstance().bDSPHLE = m_dsp_engine_radiobox->GetSelection() == 0;
SConfig::GetInstance().m_DSPEnableJIT = m_dsp_engine_radiobox->GetSelection() == 1; SConfig::GetInstance().m_DSPEnableJIT = m_dsp_engine_radiobox->GetSelection() == 1;
AudioCommon::UpdateSoundStream(); AudioCommon::UpdateSoundStream();
} }
void AudioConfigPane::OnDPL2DecoderCheckBoxChanged(wxCommandEvent&) void AudioConfigPane::OnDPL2DecoderCheckBoxChanged(wxCommandEvent&)
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.bDPL2Decoder = m_dpl2_decoder_checkbox->IsChecked(); SConfig::GetInstance().bDPL2Decoder = m_dpl2_decoder_checkbox->IsChecked();
} }
void AudioConfigPane::OnVolumeSliderChanged(wxCommandEvent& event) void AudioConfigPane::OnVolumeSliderChanged(wxCommandEvent& event)
@ -153,7 +153,7 @@ void AudioConfigPane::OnAudioBackendChanged(wxCommandEvent& event)
void AudioConfigPane::OnLatencySpinCtrlChanged(wxCommandEvent& event) void AudioConfigPane::OnLatencySpinCtrlChanged(wxCommandEvent& event)
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.iLatency = m_audio_latency_spinctrl->GetValue(); SConfig::GetInstance().iLatency = m_audio_latency_spinctrl->GetValue();
} }
void AudioConfigPane::PopulateBackendChoiceBox() void AudioConfigPane::PopulateBackendChoiceBox()

View File

@ -129,7 +129,7 @@ void GameCubeConfigPane::InitializeGUI()
void GameCubeConfigPane::LoadGUIValues() void GameCubeConfigPane::LoadGUIValues()
{ {
const SCoreStartupParameter& startup_params = SConfig::GetInstance().m_LocalCoreStartupParameter; const SConfig& startup_params = SConfig::GetInstance();
m_system_lang_choice->SetSelection(startup_params.SelectedLanguage); m_system_lang_choice->SetSelection(startup_params.SelectedLanguage);
m_skip_bios_checkbox->SetValue(startup_params.bHLE_BS2); m_skip_bios_checkbox->SetValue(startup_params.bHLE_BS2);
@ -212,21 +212,21 @@ void GameCubeConfigPane::RefreshGUI()
void GameCubeConfigPane::OnSystemLanguageChange(wxCommandEvent& event) void GameCubeConfigPane::OnSystemLanguageChange(wxCommandEvent& event)
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.SelectedLanguage = m_system_lang_choice->GetSelection(); SConfig::GetInstance().SelectedLanguage = m_system_lang_choice->GetSelection();
AddPendingEvent(wxCommandEvent(wxDOLPHIN_CFG_REFRESH_LIST)); AddPendingEvent(wxCommandEvent(wxDOLPHIN_CFG_REFRESH_LIST));
} }
void GameCubeConfigPane::OnOverrideLanguageCheckBoxChanged(wxCommandEvent& event) void GameCubeConfigPane::OnOverrideLanguageCheckBoxChanged(wxCommandEvent& event)
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.bOverrideGCLanguage = m_override_lang_checkbox->IsChecked(); SConfig::GetInstance().bOverrideGCLanguage = m_override_lang_checkbox->IsChecked();
AddPendingEvent(wxCommandEvent(wxDOLPHIN_CFG_REFRESH_LIST)); AddPendingEvent(wxCommandEvent(wxDOLPHIN_CFG_REFRESH_LIST));
} }
void GameCubeConfigPane::OnSkipBiosCheckBoxChanged(wxCommandEvent& event) void GameCubeConfigPane::OnSkipBiosCheckBoxChanged(wxCommandEvent& event)
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.bHLE_BS2 = m_skip_bios_checkbox->IsChecked(); SConfig::GetInstance().bHLE_BS2 = m_skip_bios_checkbox->IsChecked();
} }
void GameCubeConfigPane::OnSlotAChanged(wxCommandEvent& event) void GameCubeConfigPane::OnSlotAChanged(wxCommandEvent& event)

View File

@ -89,7 +89,7 @@ void GeneralConfigPane::InitializeGUI()
void GeneralConfigPane::LoadGUIValues() void GeneralConfigPane::LoadGUIValues()
{ {
const SCoreStartupParameter& startup_params = SConfig::GetInstance().m_LocalCoreStartupParameter; const SConfig& startup_params = SConfig::GetInstance();
m_dual_core_checkbox->SetValue(startup_params.bCPUThread); m_dual_core_checkbox->SetValue(startup_params.bCPUThread);
m_idle_skip_checkbox->SetValue(startup_params.bSkipIdle); m_idle_skip_checkbox->SetValue(startup_params.bSkipIdle);
@ -121,22 +121,22 @@ void GeneralConfigPane::OnDualCoreCheckBoxChanged(wxCommandEvent& event)
if (Core::IsRunning()) if (Core::IsRunning())
return; return;
SConfig::GetInstance().m_LocalCoreStartupParameter.bCPUThread = m_dual_core_checkbox->IsChecked(); SConfig::GetInstance().bCPUThread = m_dual_core_checkbox->IsChecked();
} }
void GeneralConfigPane::OnIdleSkipCheckBoxChanged(wxCommandEvent& event) void GeneralConfigPane::OnIdleSkipCheckBoxChanged(wxCommandEvent& event)
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.bSkipIdle = m_idle_skip_checkbox->IsChecked(); SConfig::GetInstance().bSkipIdle = m_idle_skip_checkbox->IsChecked();
} }
void GeneralConfigPane::OnCheatCheckBoxChanged(wxCommandEvent& event) void GeneralConfigPane::OnCheatCheckBoxChanged(wxCommandEvent& event)
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableCheats = m_cheats_checkbox->IsChecked(); SConfig::GetInstance().bEnableCheats = m_cheats_checkbox->IsChecked();
} }
void GeneralConfigPane::OnForceNTSCJCheckBoxChanged(wxCommandEvent& event) void GeneralConfigPane::OnForceNTSCJCheckBoxChanged(wxCommandEvent& event)
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.bForceNTSCJ = m_force_ntscj_checkbox->IsChecked(); SConfig::GetInstance().bForceNTSCJ = m_force_ntscj_checkbox->IsChecked();
} }
void GeneralConfigPane::OnFrameLimitChoiceChanged(wxCommandEvent& event) void GeneralConfigPane::OnFrameLimitChoiceChanged(wxCommandEvent& event)
@ -151,9 +151,9 @@ void GeneralConfigPane::OnCPUEngineRadioBoxChanged(wxCommandEvent& event)
if (main_frame->g_pCodeWindow) if (main_frame->g_pCodeWindow)
{ {
bool using_interp = (SConfig::GetInstance().m_LocalCoreStartupParameter.iCPUCore == PowerPC::CORE_INTERPRETER); bool using_interp = (SConfig::GetInstance().iCPUCore == PowerPC::CORE_INTERPRETER);
main_frame->g_pCodeWindow->GetMenuBar()->Check(IDM_INTERPRETER, using_interp); main_frame->g_pCodeWindow->GetMenuBar()->Check(IDM_INTERPRETER, using_interp);
} }
SConfig::GetInstance().m_LocalCoreStartupParameter.iCPUCore = cpu_cores[selection].CPUid; SConfig::GetInstance().iCPUCore = cpu_cores[selection].CPUid;
} }

View File

@ -141,7 +141,7 @@ void InterfaceConfigPane::InitializeGUI()
void InterfaceConfigPane::LoadGUIValues() void InterfaceConfigPane::LoadGUIValues()
{ {
const SCoreStartupParameter& startup_params = SConfig::GetInstance().m_LocalCoreStartupParameter; const SConfig& startup_params = SConfig::GetInstance();
m_confirm_stop_checkbox->SetValue(startup_params.bConfirmStop); m_confirm_stop_checkbox->SetValue(startup_params.bConfirmStop);
m_panic_handlers_checkbox->SetValue(startup_params.bUsePanicHandlers); m_panic_handlers_checkbox->SetValue(startup_params.bUsePanicHandlers);
@ -177,23 +177,23 @@ void InterfaceConfigPane::LoadThemes()
m_theme_choice->Append(wxname); m_theme_choice->Append(wxname);
} }
m_theme_choice->SetStringSelection(StrToWxStr(SConfig::GetInstance().m_LocalCoreStartupParameter.theme_name)); m_theme_choice->SetStringSelection(StrToWxStr(SConfig::GetInstance().theme_name));
} }
void InterfaceConfigPane::OnConfirmStopCheckBoxChanged(wxCommandEvent& event) void InterfaceConfigPane::OnConfirmStopCheckBoxChanged(wxCommandEvent& event)
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.bConfirmStop = m_confirm_stop_checkbox->IsChecked(); SConfig::GetInstance().bConfirmStop = m_confirm_stop_checkbox->IsChecked();
} }
void InterfaceConfigPane::OnPanicHandlersCheckBoxChanged(wxCommandEvent& event) void InterfaceConfigPane::OnPanicHandlersCheckBoxChanged(wxCommandEvent& event)
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.bUsePanicHandlers = m_panic_handlers_checkbox->IsChecked(); SConfig::GetInstance().bUsePanicHandlers = m_panic_handlers_checkbox->IsChecked();
SetEnableAlert(m_panic_handlers_checkbox->IsChecked()); SetEnableAlert(m_panic_handlers_checkbox->IsChecked());
} }
void InterfaceConfigPane::OnOSDMessagesCheckBoxChanged(wxCommandEvent& event) void InterfaceConfigPane::OnOSDMessagesCheckBoxChanged(wxCommandEvent& event)
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.bOnScreenDisplayMessages = m_osd_messages_checkbox->IsChecked(); SConfig::GetInstance().bOnScreenDisplayMessages = m_osd_messages_checkbox->IsChecked();
} }
void InterfaceConfigPane::OnInterfaceLanguageChoiceChanged(wxCommandEvent& event) void InterfaceConfigPane::OnInterfaceLanguageChoiceChanged(wxCommandEvent& event)
@ -211,7 +211,7 @@ void InterfaceConfigPane::OnPauseOnFocusLostCheckBoxChanged(wxCommandEvent& even
void InterfaceConfigPane::OnThemeSelected(wxCommandEvent& event) void InterfaceConfigPane::OnThemeSelected(wxCommandEvent& event)
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.theme_name = WxStrToStr(m_theme_choice->GetStringSelection()); SConfig::GetInstance().theme_name = WxStrToStr(m_theme_choice->GetStringSelection());
main_frame->InitBitmaps(); main_frame->InitBitmaps();
main_frame->UpdateGameList(); main_frame->UpdateGameList();

View File

@ -92,7 +92,7 @@ void PathConfigPane::InitializeGUI()
void PathConfigPane::LoadGUIValues() void PathConfigPane::LoadGUIValues()
{ {
const SCoreStartupParameter& startup_params = SConfig::GetInstance().m_LocalCoreStartupParameter; const SConfig& startup_params = SConfig::GetInstance();
m_recursive_iso_paths_checkbox->SetValue(SConfig::GetInstance().m_RecursiveISOFolder); m_recursive_iso_paths_checkbox->SetValue(SConfig::GetInstance().m_RecursiveISOFolder);
m_default_iso_filepicker->SetPath(StrToWxStr(startup_params.m_strDefaultISO)); m_default_iso_filepicker->SetPath(StrToWxStr(startup_params.m_strDefaultISO));
@ -159,17 +159,17 @@ void PathConfigPane::OnRemoveISOPath(wxCommandEvent& event)
void PathConfigPane::OnDefaultISOChanged(wxCommandEvent& event) void PathConfigPane::OnDefaultISOChanged(wxCommandEvent& event)
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strDefaultISO = WxStrToStr(m_default_iso_filepicker->GetPath()); SConfig::GetInstance().m_strDefaultISO = WxStrToStr(m_default_iso_filepicker->GetPath());
} }
void PathConfigPane::OnDVDRootChanged(wxCommandEvent& event) void PathConfigPane::OnDVDRootChanged(wxCommandEvent& event)
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strDVDRoot = WxStrToStr(m_dvd_root_dirpicker->GetPath()); SConfig::GetInstance().m_strDVDRoot = WxStrToStr(m_dvd_root_dirpicker->GetPath());
} }
void PathConfigPane::OnApploaderPathChanged(wxCommandEvent& event) void PathConfigPane::OnApploaderPathChanged(wxCommandEvent& event)
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strApploader = WxStrToStr(m_apploader_path_filepicker->GetPath()); SConfig::GetInstance().m_strApploader = WxStrToStr(m_apploader_path_filepicker->GetPath());
} }
void PathConfigPane::OnNANDRootChanged(wxCommandEvent& event) void PathConfigPane::OnNANDRootChanged(wxCommandEvent& event)

View File

@ -235,7 +235,7 @@ wxStaticBoxSizer* ControllerConfigDiag::CreateWiimoteConfigSizer()
wiimote_configure_bt[i]->Bind(wxEVT_BUTTON, &ControllerConfigDiag::ConfigEmulatedWiimote, this); wiimote_configure_bt[i]->Bind(wxEVT_BUTTON, &ControllerConfigDiag::ConfigEmulatedWiimote, this);
// Disable controller type selection for certain circumstances. // Disable controller type selection for certain circumstances.
bool wii_game_started = SConfig::GetInstance().m_LocalCoreStartupParameter.bWii || Core::GetState() == Core::CORE_UNINITIALIZED; bool wii_game_started = SConfig::GetInstance().bWii || Core::GetState() == Core::CORE_UNINITIALIZED;
if (NetPlay::IsNetPlayRunning() || Movie::IsMovieActive() || !wii_game_started) if (NetPlay::IsNetPlayRunning() || Movie::IsMovieActive() || !wii_game_started)
wiimote_source_ch[i]->Disable(); wiimote_source_ch[i]->Disable();

View File

@ -171,10 +171,10 @@ void CBreakPointWindow::SaveAll()
{ {
// simply dump all to bp/mc files in a way we can read again // simply dump all to bp/mc files in a way we can read again
IniFile ini; IniFile ini;
ini.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID() + ".ini", false); ini.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + SConfig::GetInstance().GetUniqueID() + ".ini", false);
ini.SetLines("BreakPoints", PowerPC::breakpoints.GetStrings()); ini.SetLines("BreakPoints", PowerPC::breakpoints.GetStrings());
ini.SetLines("MemoryChecks", PowerPC::memchecks.GetStrings()); ini.SetLines("MemoryChecks", PowerPC::memchecks.GetStrings());
ini.Save(File::GetUserPath(D_GAMESETTINGS_IDX) + SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID() + ".ini"); ini.Save(File::GetUserPath(D_GAMESETTINGS_IDX) + SConfig::GetInstance().GetUniqueID() + ".ini");
} }
void CBreakPointWindow::Event_LoadAll(wxCommandEvent& WXUNUSED(event)) void CBreakPointWindow::Event_LoadAll(wxCommandEvent& WXUNUSED(event))
@ -189,7 +189,7 @@ void CBreakPointWindow::LoadAll()
BreakPoints::TBreakPointsStr newbps; BreakPoints::TBreakPointsStr newbps;
MemChecks::TMemChecksStr newmcs; MemChecks::TMemChecksStr newmcs;
if (!ini.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID() + ".ini", false)) if (!ini.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + SConfig::GetInstance().GetUniqueID() + ".ini", false))
{ {
return; return;
} }

View File

@ -22,7 +22,6 @@
#include "Common/StringUtil.h" #include "Common/StringUtil.h"
#include "Common/SymbolDB.h" #include "Common/SymbolDB.h"
#include "Core/Core.h" #include "Core/Core.h"
#include "Core/CoreParameter.h"
#include "Core/Host.h" #include "Core/Host.h"
#include "Core/Debugger/Debugger_SymbolMap.h" #include "Core/Debugger/Debugger_SymbolMap.h"
#include "Core/Debugger/PPCDebugInterface.h" #include "Core/Debugger/PPCDebugInterface.h"
@ -51,7 +50,7 @@ extern "C" // Bitmaps
#include "DolphinWX/resources/toolbar_add_breakpoint.c" // NOLINT #include "DolphinWX/resources/toolbar_add_breakpoint.c" // NOLINT
} }
CCodeWindow::CCodeWindow(const SCoreStartupParameter& _LocalCoreStartupParameter, CFrame *parent, CCodeWindow::CCodeWindow(const SConfig& _LocalCoreStartupParameter, CFrame *parent,
wxWindowID id, const wxPoint& position, const wxSize& size, long style, const wxString& name) wxWindowID id, const wxPoint& position, const wxSize& size, long style, const wxString& name)
: wxPanel(parent, id, position, size, style, name) : wxPanel(parent, id, position, size, style, name)
, Parent(parent) , Parent(parent)
@ -428,7 +427,7 @@ void CCodeWindow::UpdateCallstack()
} }
// Create CPU Mode menus // Create CPU Mode menus
void CCodeWindow::CreateMenu(const SCoreStartupParameter& core_startup_parameter, wxMenuBar *pMenuBar) void CCodeWindow::CreateMenu(const SConfig& core_startup_parameter, wxMenuBar *pMenuBar)
{ {
// CPU Mode // CPU Mode
wxMenu* pCoreMenu = new wxMenu; wxMenu* pCoreMenu = new wxMenu;
@ -552,37 +551,37 @@ void CCodeWindow::OnCPUMode(wxCommandEvent& event)
bAutomaticStart = !bAutomaticStart; bAutomaticStart = !bAutomaticStart;
return; return;
case IDM_JIT_OFF: case IDM_JIT_OFF:
SConfig::GetInstance().m_LocalCoreStartupParameter.bJITOff = event.IsChecked(); SConfig::GetInstance().bJITOff = event.IsChecked();
break; break;
case IDM_JIT_LS_OFF: case IDM_JIT_LS_OFF:
SConfig::GetInstance().m_LocalCoreStartupParameter.bJITLoadStoreOff = event.IsChecked(); SConfig::GetInstance().bJITLoadStoreOff = event.IsChecked();
break; break;
case IDM_JIT_LSLXZ_OFF: case IDM_JIT_LSLXZ_OFF:
SConfig::GetInstance().m_LocalCoreStartupParameter.bJITLoadStorelXzOff = event.IsChecked(); SConfig::GetInstance().bJITLoadStorelXzOff = event.IsChecked();
break; break;
case IDM_JIT_LSLWZ_OFF: case IDM_JIT_LSLWZ_OFF:
SConfig::GetInstance().m_LocalCoreStartupParameter.bJITLoadStorelwzOff = event.IsChecked(); SConfig::GetInstance().bJITLoadStorelwzOff = event.IsChecked();
break; break;
case IDM_JIT_LSLBZX_OFF: case IDM_JIT_LSLBZX_OFF:
SConfig::GetInstance().m_LocalCoreStartupParameter.bJITLoadStorelbzxOff = event.IsChecked(); SConfig::GetInstance().bJITLoadStorelbzxOff = event.IsChecked();
break; break;
case IDM_JIT_LSF_OFF: case IDM_JIT_LSF_OFF:
SConfig::GetInstance().m_LocalCoreStartupParameter.bJITLoadStoreFloatingOff = event.IsChecked(); SConfig::GetInstance().bJITLoadStoreFloatingOff = event.IsChecked();
break; break;
case IDM_JIT_LSP_OFF: case IDM_JIT_LSP_OFF:
SConfig::GetInstance().m_LocalCoreStartupParameter.bJITLoadStorePairedOff = event.IsChecked(); SConfig::GetInstance().bJITLoadStorePairedOff = event.IsChecked();
break; break;
case IDM_JIT_FP_OFF: case IDM_JIT_FP_OFF:
SConfig::GetInstance().m_LocalCoreStartupParameter.bJITFloatingPointOff = event.IsChecked(); SConfig::GetInstance().bJITFloatingPointOff = event.IsChecked();
break; break;
case IDM_JIT_I_OFF: case IDM_JIT_I_OFF:
SConfig::GetInstance().m_LocalCoreStartupParameter.bJITIntegerOff = event.IsChecked(); SConfig::GetInstance().bJITIntegerOff = event.IsChecked();
break; break;
case IDM_JIT_P_OFF: case IDM_JIT_P_OFF:
SConfig::GetInstance().m_LocalCoreStartupParameter.bJITPairedOff = event.IsChecked(); SConfig::GetInstance().bJITPairedOff = event.IsChecked();
break; break;
case IDM_JIT_SR_OFF: case IDM_JIT_SR_OFF:
SConfig::GetInstance().m_LocalCoreStartupParameter.bJITSystemRegistersOff = event.IsChecked(); SConfig::GetInstance().bJITSystemRegistersOff = event.IsChecked();
break; break;
} }

View File

@ -21,7 +21,7 @@ class CJitWindow;
class CCodeView; class CCodeView;
class DSPDebuggerLLE; class DSPDebuggerLLE;
class GFXDebuggerPanel; class GFXDebuggerPanel;
struct SCoreStartupParameter; struct SConfig;
class wxAuiToolBar; class wxAuiToolBar;
class wxListBox; class wxListBox;
@ -32,7 +32,7 @@ class wxToolBar;
class CCodeWindow : public wxPanel class CCodeWindow : public wxPanel
{ {
public: public:
CCodeWindow(const SCoreStartupParameter& _LocalCoreStartupParameter, CCodeWindow(const SConfig& _LocalCoreStartupParameter,
CFrame * parent, CFrame * parent,
wxWindowID id = wxID_ANY, wxWindowID id = wxID_ANY,
const wxPoint& pos = wxDefaultPosition, const wxPoint& pos = wxDefaultPosition,
@ -59,7 +59,7 @@ public:
void Update() override; void Update() override;
void NotifyMapLoaded(); void NotifyMapLoaded();
void CreateMenu(const SCoreStartupParameter& _LocalCoreStartupParameter, wxMenuBar *pMenuBar); void CreateMenu(const SConfig& _LocalCoreStartupParameter, wxMenuBar *pMenuBar);
void CreateMenuOptions(wxMenu *pMenu); void CreateMenuOptions(wxMenu *pMenu);
void CreateMenuSymbols(wxMenuBar *pMenuBar); void CreateMenuSymbols(wxMenuBar *pMenuBar);
void RecreateToolbar(wxToolBar*); void RecreateToolbar(wxToolBar*);

View File

@ -14,7 +14,6 @@
#include "Common/FileUtil.h" #include "Common/FileUtil.h"
#include "Common/IniFile.h" #include "Common/IniFile.h"
#include "Core/ConfigManager.h" #include "Core/ConfigManager.h"
#include "Core/CoreParameter.h"
#include "DolphinWX/WxUtils.h" #include "DolphinWX/WxUtils.h"
#include "DolphinWX/Debugger/DebuggerPanel.h" #include "DolphinWX/Debugger/DebuggerPanel.h"
#include "VideoCommon/Debugger.h" #include "VideoCommon/Debugger.h"
@ -269,7 +268,7 @@ void GFXDebuggerPanel::OnPauseAtNextFrameButton(wxCommandEvent& event)
void GFXDebuggerPanel::OnDumpButton(wxCommandEvent& event) void GFXDebuggerPanel::OnDumpButton(wxCommandEvent& event)
{ {
std::string dump_path = File::GetUserPath(D_DUMP_IDX) + "Debug/" + std::string dump_path = File::GetUserPath(D_DUMP_IDX) + "Debug/" +
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strUniqueID + "/"; SConfig::GetInstance().m_strUniqueID + "/";
if (!File::CreateFullPath(dump_path)) if (!File::CreateFullPath(dump_path))
return; return;

View File

@ -21,7 +21,6 @@
#include "Common/StringUtil.h" #include "Common/StringUtil.h"
#include "Common/SymbolDB.h" #include "Common/SymbolDB.h"
#include "Core/ConfigManager.h" #include "Core/ConfigManager.h"
#include "Core/CoreParameter.h"
#include "Core/Debugger/PPCDebugInterface.h" #include "Core/Debugger/PPCDebugInterface.h"
#include "Core/HW/DSP.h" #include "Core/HW/DSP.h"
#include "Core/HW/Memmap.h" #include "Core/HW/Memmap.h"
@ -92,7 +91,7 @@ CMemoryWindow::CMemoryWindow(wxWindow* parent, wxWindowID id,
sizerRight->Add(new wxButton(this, IDM_DUMP_MEMORY, _("Dump MRAM"))); sizerRight->Add(new wxButton(this, IDM_DUMP_MEMORY, _("Dump MRAM")));
sizerRight->Add(new wxButton(this, IDM_DUMP_MEM2, _("Dump EXRAM"))); sizerRight->Add(new wxButton(this, IDM_DUMP_MEM2, _("Dump EXRAM")));
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bMMU) if (!SConfig::GetInstance().bMMU)
sizerRight->Add(new wxButton(this, IDM_DUMP_FAKEVMEM, _("Dump FakeVMEM"))); sizerRight->Add(new wxButton(this, IDM_DUMP_FAKEVMEM, _("Dump FakeVMEM")));
wxStaticBoxSizer* sizerSearchType = new wxStaticBoxSizer(wxVERTICAL, this, _("Search")); wxStaticBoxSizer* sizerSearchType = new wxStaticBoxSizer(wxVERTICAL, this, _("Search"));
@ -262,7 +261,7 @@ void CMemoryWindow::OnDumpMemory( wxCommandEvent& event )
// Write exram (aram or mem2) to file // Write exram (aram or mem2) to file
void CMemoryWindow::OnDumpMem2( wxCommandEvent& event ) void CMemoryWindow::OnDumpMem2( wxCommandEvent& event )
{ {
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (SConfig::GetInstance().bWii)
{ {
DumpArray(File::GetUserPath(F_ARAMDUMP_IDX), Memory::m_pEXRAM, Memory::EXRAM_SIZE); DumpArray(File::GetUserPath(F_ARAMDUMP_IDX), Memory::m_pEXRAM, Memory::EXRAM_SIZE);
} }

View File

@ -91,9 +91,9 @@ void CWatchWindow::Event_SaveAll(wxCommandEvent& WXUNUSED(event))
void CWatchWindow::SaveAll() void CWatchWindow::SaveAll()
{ {
IniFile ini; IniFile ini;
ini.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID() + ".ini", false); ini.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + SConfig::GetInstance().GetUniqueID() + ".ini", false);
ini.SetLines("Watches", PowerPC::watches.GetStrings()); ini.SetLines("Watches", PowerPC::watches.GetStrings());
ini.Save(File::GetUserPath(D_GAMESETTINGS_IDX) + SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID() + ".ini"); ini.Save(File::GetUserPath(D_GAMESETTINGS_IDX) + SConfig::GetInstance().GetUniqueID() + ".ini");
} }
void CWatchWindow::Event_LoadAll(wxCommandEvent& WXUNUSED(event)) void CWatchWindow::Event_LoadAll(wxCommandEvent& WXUNUSED(event))
@ -106,7 +106,7 @@ void CWatchWindow::LoadAll()
IniFile ini; IniFile ini;
Watches::TWatchesStr watches; Watches::TWatchesStr watches;
if (!ini.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID() + ".ini", false)) if (!ini.Load(File::GetUserPath(D_GAMESETTINGS_IDX) + SConfig::GetInstance().GetUniqueID() + ".ini", false))
{ {
return; return;
} }

View File

@ -34,7 +34,6 @@
#include "Core/ConfigManager.h" #include "Core/ConfigManager.h"
#include "Core/Core.h" #include "Core/Core.h"
#include "Core/CoreParameter.h"
#include "Core/HotkeyManager.h" #include "Core/HotkeyManager.h"
#include "Core/Movie.h" #include "Core/Movie.h"
#include "Core/State.h" #include "Core/State.h"
@ -147,7 +146,7 @@ bool CRenderFrame::IsValidSavestateDropped(const std::string& filepath)
std::string internal_game_id(game_id_length, ' '); std::string internal_game_id(game_id_length, ' ');
file.read(&internal_game_id[0], game_id_length); file.read(&internal_game_id[0], game_id_length);
return internal_game_id == SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID(); return internal_game_id == SConfig::GetInstance().GetUniqueID();
} }
#ifdef _WIN32 #ifdef _WIN32
@ -160,7 +159,7 @@ WXLRESULT CRenderFrame::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lPa
{ {
case SC_SCREENSAVE: case SC_SCREENSAVE:
case SC_MONITORPOWER: case SC_MONITORPOWER:
if (Core::GetState() == Core::CORE_RUN && SConfig::GetInstance().m_LocalCoreStartupParameter.bDisableScreenSaver) if (Core::GetState() == Core::CORE_RUN && SConfig::GetInstance().bDisableScreenSaver)
break; break;
default: default:
return wxFrame::MSWWindowProc(nMsg, wParam, lParam); return wxFrame::MSWWindowProc(nMsg, wParam, lParam);
@ -175,7 +174,7 @@ WXLRESULT CRenderFrame::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lPa
break; break;
case WM_USER_SETCURSOR: case WM_USER_SETCURSOR:
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor && if (SConfig::GetInstance().bHideCursor &&
main_frame->RendererHasFocus() && Core::GetState() == Core::CORE_RUN) main_frame->RendererHasFocus() && Core::GetState() == Core::CORE_RUN)
SetCursor(wxCURSOR_BLANK); SetCursor(wxCURSOR_BLANK);
else else
@ -393,7 +392,7 @@ CFrame::CFrame(wxFrame* parent,
// Debugger class // Debugger class
if (UseDebugger) if (UseDebugger)
{ {
g_pCodeWindow = new CCodeWindow(SConfig::GetInstance().m_LocalCoreStartupParameter, this, IDM_CODE_WINDOW); g_pCodeWindow = new CCodeWindow(SConfig::GetInstance(), this, IDM_CODE_WINDOW);
LoadIniPerspectives(); LoadIniPerspectives();
g_pCodeWindow->Load(); g_pCodeWindow->Load();
} }
@ -562,16 +561,16 @@ void CFrame::OnActive(wxActivateEvent& event)
{ {
if (event.GetActive() && event.GetEventObject() == m_RenderFrame) if (event.GetActive() && event.GetEventObject() == m_RenderFrame)
{ {
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain) if (SConfig::GetInstance().bRenderToMain)
m_RenderParent->SetFocus(); m_RenderParent->SetFocus();
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor && if (SConfig::GetInstance().bHideCursor &&
Core::GetState() == Core::CORE_RUN) Core::GetState() == Core::CORE_RUN)
m_RenderParent->SetCursor(wxCURSOR_BLANK); m_RenderParent->SetCursor(wxCURSOR_BLANK);
} }
else else
{ {
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor) if (SConfig::GetInstance().bHideCursor)
m_RenderParent->SetCursor(wxNullCursor); m_RenderParent->SetCursor(wxNullCursor);
} }
} }
@ -642,10 +641,10 @@ void CFrame::OnMove(wxMoveEvent& event)
event.Skip(); event.Skip();
if (!IsMaximized() && if (!IsMaximized() &&
!(SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain && RendererIsFullscreen())) !(SConfig::GetInstance().bRenderToMain && RendererIsFullscreen()))
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.iPosX = GetPosition().x; SConfig::GetInstance().iPosX = GetPosition().x;
SConfig::GetInstance().m_LocalCoreStartupParameter.iPosY = GetPosition().y; SConfig::GetInstance().iPosY = GetPosition().y;
} }
} }
@ -654,13 +653,13 @@ void CFrame::OnResize(wxSizeEvent& event)
event.Skip(); event.Skip();
if (!IsMaximized() && if (!IsMaximized() &&
!(SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain && RendererIsFullscreen()) && !(SConfig::GetInstance().bRenderToMain && RendererIsFullscreen()) &&
!(Core::GetState() != Core::CORE_UNINITIALIZED && !(Core::GetState() != Core::CORE_UNINITIALIZED &&
SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain && SConfig::GetInstance().bRenderToMain &&
SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderWindowAutoSize)) SConfig::GetInstance().bRenderWindowAutoSize))
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.iWidth = GetSize().GetWidth(); SConfig::GetInstance().iWidth = GetSize().GetWidth();
SConfig::GetInstance().m_LocalCoreStartupParameter.iHeight = GetSize().GetHeight(); SConfig::GetInstance().iHeight = GetSize().GetHeight();
} }
// Make sure the logger pane is a sane size // Make sure the logger pane is a sane size
@ -700,7 +699,7 @@ WXLRESULT CFrame::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
void CFrame::UpdateTitle(const std::string &str) void CFrame::UpdateTitle(const std::string &str)
{ {
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain && if (SConfig::GetInstance().bRenderToMain &&
SConfig::GetInstance().m_InterfaceStatusbar) SConfig::GetInstance().m_InterfaceStatusbar)
{ {
GetStatusBar()->SetStatusText(str, 0); GetStatusBar()->SetStatusText(str, 0);
@ -754,7 +753,7 @@ void CFrame::OnHostMessage(wxCommandEvent& event)
break; break;
case WM_USER_CREATE: case WM_USER_CREATE:
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor) if (SConfig::GetInstance().bHideCursor)
m_RenderParent->SetCursor(wxCURSOR_BLANK); m_RenderParent->SetCursor(wxCURSOR_BLANK);
break; break;
@ -783,7 +782,7 @@ void CFrame::OnHostMessage(wxCommandEvent& event)
void CFrame::OnRenderWindowSizeRequest(int width, int height) void CFrame::OnRenderWindowSizeRequest(int width, int height)
{ {
if (!Core::IsRunning() || if (!Core::IsRunning() ||
!SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderWindowAutoSize || !SConfig::GetInstance().bRenderWindowAutoSize ||
RendererIsFullscreen() || m_RenderFrame->IsMaximized()) RendererIsFullscreen() || m_RenderFrame->IsMaximized())
return; return;
@ -791,7 +790,7 @@ void CFrame::OnRenderWindowSizeRequest(int width, int height)
m_RenderFrame->GetClientSize(&old_width, &old_height); m_RenderFrame->GetClientSize(&old_width, &old_height);
// Add space for the log/console/debugger window // Add space for the log/console/debugger window
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain && if (SConfig::GetInstance().bRenderToMain &&
(SConfig::GetInstance().m_InterfaceLogWindow || (SConfig::GetInstance().m_InterfaceLogWindow ||
SConfig::GetInstance().m_InterfaceLogConfigWindow) && SConfig::GetInstance().m_InterfaceLogConfigWindow) &&
!m_Mgr->GetPane("Pane 1").IsFloating()) !m_Mgr->GetPane("Pane 1").IsFloating())
@ -1134,7 +1133,7 @@ void CFrame::OnFocusChange(wxFocusEvent& event)
if (Core::GetState() == Core::CORE_PAUSE) if (Core::GetState() == Core::CORE_PAUSE)
{ {
Core::SetState(Core::CORE_RUN); Core::SetState(Core::CORE_RUN);
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor) if (SConfig::GetInstance().bHideCursor)
m_RenderParent->SetCursor(wxCURSOR_BLANK); m_RenderParent->SetCursor(wxCURSOR_BLANK);
} }
} }
@ -1143,7 +1142,7 @@ void CFrame::OnFocusChange(wxFocusEvent& event)
if (Core::GetState() == Core::CORE_RUN) if (Core::GetState() == Core::CORE_RUN)
{ {
Core::SetState(Core::CORE_PAUSE); Core::SetState(Core::CORE_PAUSE);
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor) if (SConfig::GetInstance().bHideCursor)
m_RenderParent->SetCursor(wxNullCursor); m_RenderParent->SetCursor(wxNullCursor);
Core::UpdateTitle(); Core::UpdateTitle();
} }
@ -1189,7 +1188,7 @@ void CFrame::DoFullscreen(bool enable_fullscreen)
} }
#endif #endif
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain) if (SConfig::GetInstance().bRenderToMain)
{ {
if (enable_fullscreen) if (enable_fullscreen)
{ {
@ -1341,7 +1340,7 @@ void CFrame::ParseHotkeys()
WiimoteId = 4; WiimoteId = 4;
// Actually perform the Wiimote connection or disconnection // Actually perform the Wiimote connection or disconnection
if (WiimoteId >= 0 && SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (WiimoteId >= 0 && SConfig::GetInstance().bWii)
{ {
wxCommandEvent evt; wxCommandEvent evt;
evt.SetId(IDM_CONNECT_WIIMOTE1 + WiimoteId); evt.SetId(IDM_CONNECT_WIIMOTE1 + WiimoteId);

View File

@ -34,7 +34,6 @@
#include "Core/BootManager.h" #include "Core/BootManager.h"
#include "Core/ConfigManager.h" #include "Core/ConfigManager.h"
#include "Core/Core.h" #include "Core/Core.h"
#include "Core/CoreParameter.h"
#include "Core/Host.h" #include "Core/Host.h"
#include "Core/HotkeyManager.h" #include "Core/HotkeyManager.h"
#include "Core/Movie.h" #include "Core/Movie.h"
@ -369,7 +368,7 @@ wxMenuBar* CFrame::CreateMenu()
if (g_pCodeWindow) if (g_pCodeWindow)
{ {
g_pCodeWindow->CreateMenu(SConfig::GetInstance().m_LocalCoreStartupParameter, menubar); g_pCodeWindow->CreateMenu(SConfig::GetInstance(), menubar);
} }
// Help menu // Help menu
@ -585,7 +584,7 @@ void CFrame::RecreateToolbar()
void CFrame::InitBitmaps() void CFrame::InitBitmaps()
{ {
auto const dir = StrToWxStr(File::GetThemeDir(SConfig::GetInstance().m_LocalCoreStartupParameter.theme_name)); auto const dir = StrToWxStr(File::GetThemeDir(SConfig::GetInstance().theme_name));
m_Bitmaps[Toolbar_FileOpen ].LoadFile(dir + "open.png", wxBITMAP_TYPE_PNG); m_Bitmaps[Toolbar_FileOpen ].LoadFile(dir + "open.png", wxBITMAP_TYPE_PNG);
m_Bitmaps[Toolbar_Refresh ].LoadFile(dir + "refresh.png", wxBITMAP_TYPE_PNG); m_Bitmaps[Toolbar_Refresh ].LoadFile(dir + "refresh.png", wxBITMAP_TYPE_PNG);
@ -615,7 +614,7 @@ void CFrame::InitBitmaps()
void CFrame::BootGame(const std::string& filename) void CFrame::BootGame(const std::string& filename)
{ {
std::string bootfile = filename; std::string bootfile = filename;
SCoreStartupParameter& StartUp = SConfig::GetInstance().m_LocalCoreStartupParameter; SConfig& StartUp = SConfig::GetInstance();
if (Core::GetState() != Core::CORE_UNINITIALIZED) if (Core::GetState() != Core::CORE_UNINITIALIZED)
return; return;
@ -721,7 +720,7 @@ void CFrame::OnTASInput(wxCommandEvent& event)
g_TASInputDlg[i]->SetTitle(wxString::Format(_("TAS Input - Controller %d"), i + 1)); g_TASInputDlg[i]->SetTitle(wxString::Format(_("TAS Input - Controller %d"), i + 1));
} }
if (g_wiimote_sources[i] == WIIMOTE_SRC_EMU && !(Core::IsRunning() && !SConfig::GetInstance().m_LocalCoreStartupParameter.bWii)) if (g_wiimote_sources[i] == WIIMOTE_SRC_EMU && !(Core::IsRunning() && !SConfig::GetInstance().bWii))
{ {
g_TASInputDlg[i+4]->CreateWiiLayout(i); g_TASInputDlg[i+4]->CreateWiiLayout(i);
g_TASInputDlg[i+4]->Show(); g_TASInputDlg[i+4]->Show();
@ -889,8 +888,8 @@ void CFrame::OnRenderParentMove(wxMoveEvent& event)
if (Core::GetState() != Core::CORE_UNINITIALIZED && if (Core::GetState() != Core::CORE_UNINITIALIZED &&
!RendererIsFullscreen() && !m_RenderFrame->IsMaximized() && !m_RenderFrame->IsIconized()) !RendererIsFullscreen() && !m_RenderFrame->IsMaximized() && !m_RenderFrame->IsIconized())
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowXPos = m_RenderFrame->GetPosition().x; SConfig::GetInstance().iRenderWindowXPos = m_RenderFrame->GetPosition().x;
SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowYPos = m_RenderFrame->GetPosition().y; SConfig::GetInstance().iRenderWindowYPos = m_RenderFrame->GetPosition().y;
} }
event.Skip(); event.Skip();
} }
@ -900,12 +899,12 @@ void CFrame::OnRenderParentResize(wxSizeEvent& event)
if (Core::GetState() != Core::CORE_UNINITIALIZED) if (Core::GetState() != Core::CORE_UNINITIALIZED)
{ {
int width, height; int width, height;
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain && if (!SConfig::GetInstance().bRenderToMain &&
!RendererIsFullscreen() && !m_RenderFrame->IsMaximized() && !m_RenderFrame->IsIconized()) !RendererIsFullscreen() && !m_RenderFrame->IsMaximized() && !m_RenderFrame->IsIconized())
{ {
m_RenderFrame->GetClientSize(&width, &height); m_RenderFrame->GetClientSize(&width, &height);
SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowWidth = width; SConfig::GetInstance().iRenderWindowWidth = width;
SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowHeight = height; SConfig::GetInstance().iRenderWindowHeight = height;
} }
m_LogWindow->Refresh(); m_LogWindow->Refresh();
m_LogWindow->Update(); m_LogWindow->Update();
@ -916,12 +915,12 @@ void CFrame::OnRenderParentResize(wxSizeEvent& event)
void CFrame::ToggleDisplayMode(bool bFullscreen) void CFrame::ToggleDisplayMode(bool bFullscreen)
{ {
#ifdef _WIN32 #ifdef _WIN32
if (bFullscreen && SConfig::GetInstance().m_LocalCoreStartupParameter.strFullscreenResolution != "Auto") if (bFullscreen && SConfig::GetInstance().strFullscreenResolution != "Auto")
{ {
DEVMODE dmScreenSettings; DEVMODE dmScreenSettings;
memset(&dmScreenSettings, 0, sizeof(dmScreenSettings)); memset(&dmScreenSettings, 0, sizeof(dmScreenSettings));
dmScreenSettings.dmSize = sizeof(dmScreenSettings); dmScreenSettings.dmSize = sizeof(dmScreenSettings);
sscanf(SConfig::GetInstance().m_LocalCoreStartupParameter.strFullscreenResolution.c_str(), sscanf(SConfig::GetInstance().strFullscreenResolution.c_str(),
"%dx%d", &dmScreenSettings.dmPelsWidth, &dmScreenSettings.dmPelsHeight); "%dx%d", &dmScreenSettings.dmPelsWidth, &dmScreenSettings.dmPelsHeight);
dmScreenSettings.dmBitsPerPel = 32; dmScreenSettings.dmBitsPerPel = 32;
dmScreenSettings.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT; dmScreenSettings.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT;
@ -935,7 +934,7 @@ void CFrame::ToggleDisplayMode(bool bFullscreen)
ChangeDisplaySettings(nullptr, CDS_FULLSCREEN); ChangeDisplaySettings(nullptr, CDS_FULLSCREEN);
} }
#elif defined(HAVE_XRANDR) && HAVE_XRANDR #elif defined(HAVE_XRANDR) && HAVE_XRANDR
if (SConfig::GetInstance().m_LocalCoreStartupParameter.strFullscreenResolution != "Auto") if (SConfig::GetInstance().strFullscreenResolution != "Auto")
m_XRRConfig->ToggleDisplayMode(bFullscreen); m_XRRConfig->ToggleDisplayMode(bFullscreen);
#endif #endif
} }
@ -951,7 +950,7 @@ void CFrame::StartGame(const std::string& filename)
m_ToolBar->EnableTool(IDM_PLAY, false); m_ToolBar->EnableTool(IDM_PLAY, false);
GetMenuBar()->FindItem(IDM_PLAY)->Enable(false); GetMenuBar()->FindItem(IDM_PLAY)->Enable(false);
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain) if (SConfig::GetInstance().bRenderToMain)
{ {
// Game has been started, hide the game list // Game has been started, hide the game list
m_GameListCtrl->Disable(); m_GameListCtrl->Disable();
@ -959,7 +958,7 @@ void CFrame::StartGame(const std::string& filename)
m_RenderParent = m_Panel; m_RenderParent = m_Panel;
m_RenderFrame = this; m_RenderFrame = this;
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bKeepWindowOnTop) if (SConfig::GetInstance().bKeepWindowOnTop)
m_RenderFrame->SetWindowStyle(m_RenderFrame->GetWindowStyle() | wxSTAY_ON_TOP); m_RenderFrame->SetWindowStyle(m_RenderFrame->GetWindowStyle() | wxSTAY_ON_TOP);
else else
m_RenderFrame->SetWindowStyle(m_RenderFrame->GetWindowStyle() & ~wxSTAY_ON_TOP); m_RenderFrame->SetWindowStyle(m_RenderFrame->GetWindowStyle() & ~wxSTAY_ON_TOP);
@ -972,8 +971,8 @@ void CFrame::StartGame(const std::string& filename)
} }
else else
{ {
wxPoint position(SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowXPos, wxPoint position(SConfig::GetInstance().iRenderWindowXPos,
SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowYPos); SConfig::GetInstance().iRenderWindowYPos);
#ifdef __APPLE__ #ifdef __APPLE__
// On OS X, the render window's title bar is not visible, // On OS X, the render window's title bar is not visible,
// and the window therefore not easily moved, when the // and the window therefore not easily moved, when the
@ -982,8 +981,8 @@ void CFrame::StartGame(const std::string& filename)
position = wxDefaultPosition; position = wxDefaultPosition;
#endif #endif
wxSize size(SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowWidth, wxSize size(SConfig::GetInstance().iRenderWindowWidth,
SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowHeight); SConfig::GetInstance().iRenderWindowHeight);
#ifdef _WIN32 #ifdef _WIN32
// Out of desktop check // Out of desktop check
int leftPos = GetSystemMetrics(SM_XVIRTUALSCREEN); int leftPos = GetSystemMetrics(SM_XVIRTUALSCREEN);
@ -994,7 +993,7 @@ void CFrame::StartGame(const std::string& filename)
position.x = position.y = wxDefaultCoord; position.x = position.y = wxDefaultCoord;
#endif #endif
m_RenderFrame = new CRenderFrame((wxFrame*)this, wxID_ANY, _("Dolphin"), position); m_RenderFrame = new CRenderFrame((wxFrame*)this, wxID_ANY, _("Dolphin"), position);
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bKeepWindowOnTop) if (SConfig::GetInstance().bKeepWindowOnTop)
m_RenderFrame->SetWindowStyle(m_RenderFrame->GetWindowStyle() | wxSTAY_ON_TOP); m_RenderFrame->SetWindowStyle(m_RenderFrame->GetWindowStyle() | wxSTAY_ON_TOP);
else else
m_RenderFrame->SetWindowStyle(m_RenderFrame->GetWindowStyle() & ~wxSTAY_ON_TOP); m_RenderFrame->SetWindowStyle(m_RenderFrame->GetWindowStyle() & ~wxSTAY_ON_TOP);
@ -1024,13 +1023,13 @@ void CFrame::StartGame(const std::string& filename)
wxBeginBusyCursor(); wxBeginBusyCursor();
DoFullscreen(SConfig::GetInstance().m_LocalCoreStartupParameter.bFullscreen); DoFullscreen(SConfig::GetInstance().bFullscreen);
if (!BootManager::BootCore(filename)) if (!BootManager::BootCore(filename))
{ {
DoFullscreen(false); DoFullscreen(false);
// Destroy the renderer frame when not rendering to main // Destroy the renderer frame when not rendering to main
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain) if (!SConfig::GetInstance().bRenderToMain)
m_RenderFrame->Destroy(); m_RenderFrame->Destroy();
m_RenderParent = nullptr; m_RenderParent = nullptr;
m_bGameLoading = false; m_bGameLoading = false;
@ -1039,7 +1038,7 @@ void CFrame::StartGame(const std::string& filename)
else else
{ {
#if defined(HAVE_X11) && HAVE_X11 #if defined(HAVE_X11) && HAVE_X11
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bDisableScreenSaver) if (SConfig::GetInstance().bDisableScreenSaver)
X11Utils::InhibitScreensaver(X11Utils::XDisplayFromHandle(GetHandle()), X11Utils::InhibitScreensaver(X11Utils::XDisplayFromHandle(GetHandle()),
X11Utils::XWindowFromHandle(GetHandle()), true); X11Utils::XWindowFromHandle(GetHandle()), true);
#endif #endif
@ -1094,14 +1093,14 @@ void CFrame::DoPause()
if (Core::GetState() == Core::CORE_RUN) if (Core::GetState() == Core::CORE_RUN)
{ {
Core::SetState(Core::CORE_PAUSE); Core::SetState(Core::CORE_PAUSE);
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor) if (SConfig::GetInstance().bHideCursor)
m_RenderParent->SetCursor(wxNullCursor); m_RenderParent->SetCursor(wxNullCursor);
Core::UpdateTitle(); Core::UpdateTitle();
} }
else else
{ {
Core::SetState(Core::CORE_RUN); Core::SetState(Core::CORE_RUN);
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor && if (SConfig::GetInstance().bHideCursor &&
RendererHasFocus()) RendererHasFocus())
m_RenderParent->SetCursor(wxCURSOR_BLANK); m_RenderParent->SetCursor(wxCURSOR_BLANK);
} }
@ -1129,7 +1128,7 @@ void CFrame::DoStop()
wxMutexGuiEnter(); wxMutexGuiEnter();
#endif #endif
// Ask for confirmation in case the user accidentally clicked Stop / Escape // Ask for confirmation in case the user accidentally clicked Stop / Escape
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bConfirmStop) if (SConfig::GetInstance().bConfirmStop)
{ {
// Exit fullscreen to ensure it does not cover the stop dialog. // Exit fullscreen to ensure it does not cover the stop dialog.
DoFullscreen(false); DoFullscreen(false);
@ -1140,7 +1139,7 @@ void CFrame::DoStop()
// If exclusive fullscreen is not enabled then we can pause the emulation // If exclusive fullscreen is not enabled then we can pause the emulation
// before we've exited fullscreen. If not then we need to exit fullscreen first. // before we've exited fullscreen. If not then we need to exit fullscreen first.
if (!RendererIsFullscreen() || !g_Config.ExclusiveFullscreenEnabled() || if (!RendererIsFullscreen() || !g_Config.ExclusiveFullscreenEnabled() ||
SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain) SConfig::GetInstance().bRenderToMain)
{ {
Core::SetState(Core::CORE_PAUSE); Core::SetState(Core::CORE_PAUSE);
} }
@ -1198,7 +1197,7 @@ void CFrame::OnStopped()
m_confirmStop = false; m_confirmStop = false;
#if defined(HAVE_X11) && HAVE_X11 #if defined(HAVE_X11) && HAVE_X11
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bDisableScreenSaver) if (SConfig::GetInstance().bDisableScreenSaver)
X11Utils::InhibitScreensaver(X11Utils::XDisplayFromHandle(GetHandle()), X11Utils::InhibitScreensaver(X11Utils::XDisplayFromHandle(GetHandle()),
X11Utils::XWindowFromHandle(GetHandle()), false); X11Utils::XWindowFromHandle(GetHandle()), false);
#endif #endif
@ -1213,10 +1212,10 @@ void CFrame::OnStopped()
wxTheApp->Unbind(wxEVT_MIDDLE_DOWN, &CFrame::OnMouse, this); wxTheApp->Unbind(wxEVT_MIDDLE_DOWN, &CFrame::OnMouse, this);
wxTheApp->Unbind(wxEVT_MIDDLE_UP, &CFrame::OnMouse, this); wxTheApp->Unbind(wxEVT_MIDDLE_UP, &CFrame::OnMouse, this);
wxTheApp->Unbind(wxEVT_MOTION, &CFrame::OnMouse, this); wxTheApp->Unbind(wxEVT_MOTION, &CFrame::OnMouse, this);
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor) if (SConfig::GetInstance().bHideCursor)
m_RenderParent->SetCursor(wxNullCursor); m_RenderParent->SetCursor(wxNullCursor);
DoFullscreen(false); DoFullscreen(false);
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain) if (!SConfig::GetInstance().bRenderToMain)
{ {
m_RenderFrame->Destroy(); m_RenderFrame->Destroy();
} }
@ -1246,10 +1245,10 @@ void CFrame::OnStopped()
Close(true); Close(true);
// If using auto size with render to main, reset the application size. // If using auto size with render to main, reset the application size.
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain && if (SConfig::GetInstance().bRenderToMain &&
SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderWindowAutoSize) SConfig::GetInstance().bRenderWindowAutoSize)
SetSize(SConfig::GetInstance().m_LocalCoreStartupParameter.iWidth, SetSize(SConfig::GetInstance().iWidth,
SConfig::GetInstance().m_LocalCoreStartupParameter.iHeight); SConfig::GetInstance().iHeight);
m_GameListCtrl->Enable(); m_GameListCtrl->Enable();
m_GameListCtrl->Show(); m_GameListCtrl->Show();
@ -1541,7 +1540,7 @@ void CFrame::OnFifoPlayer(wxCommandEvent& WXUNUSED (event))
void CFrame::ConnectWiimote(int wm_idx, bool connect) void CFrame::ConnectWiimote(int wm_idx, bool connect)
{ {
if (Core::IsRunning() && SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (Core::IsRunning() && SConfig::GetInstance().bWii)
{ {
bool was_unpaused = Core::PauseAndLock(true); bool was_unpaused = Core::PauseAndLock(true);
GetUsbPointer()->AccessWiiMote(wm_idx | 0x100)->Activate(connect); GetUsbPointer()->AccessWiiMote(wm_idx | 0x100)->Activate(connect);
@ -1569,13 +1568,13 @@ void CFrame::OnToggleFullscreen(wxCommandEvent& WXUNUSED (event))
void CFrame::OnToggleDualCore(wxCommandEvent& WXUNUSED (event)) void CFrame::OnToggleDualCore(wxCommandEvent& WXUNUSED (event))
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.bCPUThread = !SConfig::GetInstance().m_LocalCoreStartupParameter.bCPUThread; SConfig::GetInstance().bCPUThread = !SConfig::GetInstance().bCPUThread;
SConfig::GetInstance().SaveSettings(); SConfig::GetInstance().SaveSettings();
} }
void CFrame::OnToggleSkipIdle(wxCommandEvent& WXUNUSED (event)) void CFrame::OnToggleSkipIdle(wxCommandEvent& WXUNUSED (event))
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.bSkipIdle = !SConfig::GetInstance().m_LocalCoreStartupParameter.bSkipIdle; SConfig::GetInstance().bSkipIdle = !SConfig::GetInstance().bSkipIdle;
SConfig::GetInstance().SaveSettings(); SConfig::GetInstance().SaveSettings();
} }
@ -1699,7 +1698,7 @@ void CFrame::UpdateGUI()
bool Running = Core::GetState() == Core::CORE_RUN; bool Running = Core::GetState() == Core::CORE_RUN;
bool Paused = Core::GetState() == Core::CORE_PAUSE; bool Paused = Core::GetState() == Core::CORE_PAUSE;
bool Stopping = Core::GetState() == Core::CORE_STOPPING; bool Stopping = Core::GetState() == Core::CORE_STOPPING;
bool RunningWii = Initialized && SConfig::GetInstance().m_LocalCoreStartupParameter.bWii; bool RunningWii = Initialized && SConfig::GetInstance().bWii;
// Make sure that we have a toolbar // Make sure that we have a toolbar
if (m_ToolBar) if (m_ToolBar)
@ -1746,7 +1745,7 @@ void CFrame::UpdateGUI()
GetMenuBar()->FindItem(IDM_LOAD_WII_MENU)->Enable(!Initialized); GetMenuBar()->FindItem(IDM_LOAD_WII_MENU)->Enable(!Initialized);
// Tools // Tools
GetMenuBar()->FindItem(IDM_CHEATS)->Enable(SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableCheats); GetMenuBar()->FindItem(IDM_CHEATS)->Enable(SConfig::GetInstance().bEnableCheats);
GetMenuBar()->FindItem(IDM_CONNECT_WIIMOTE1)->Enable(RunningWii); GetMenuBar()->FindItem(IDM_CONNECT_WIIMOTE1)->Enable(RunningWii);
GetMenuBar()->FindItem(IDM_CONNECT_WIIMOTE2)->Enable(RunningWii); GetMenuBar()->FindItem(IDM_CONNECT_WIIMOTE2)->Enable(RunningWii);
@ -1798,7 +1797,7 @@ void CFrame::UpdateGUI()
if (m_GameListCtrl->IsEnabled()) if (m_GameListCtrl->IsEnabled())
{ {
// Prepare to load Default ISO, enable play button // Prepare to load Default ISO, enable play button
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.m_strDefaultISO.empty()) if (!SConfig::GetInstance().m_strDefaultISO.empty())
{ {
if (m_ToolBar) if (m_ToolBar)
m_ToolBar->EnableTool(IDM_PLAY, true); m_ToolBar->EnableTool(IDM_PLAY, true);
@ -1866,7 +1865,7 @@ void CFrame::UpdateGUI()
// Update non-modal windows // Update non-modal windows
if (g_CheatsWindow) if (g_CheatsWindow)
{ {
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableCheats) if (SConfig::GetInstance().bEnableCheats)
g_CheatsWindow->UpdateGUI(); g_CheatsWindow->UpdateGUI();
else else
g_CheatsWindow->Close(); g_CheatsWindow->Close();

View File

@ -36,7 +36,6 @@
#include "Common/SysConf.h" #include "Common/SysConf.h"
#include "Core/ConfigManager.h" #include "Core/ConfigManager.h"
#include "Core/Core.h" #include "Core/Core.h"
#include "Core/CoreParameter.h"
#include "Core/Movie.h" #include "Core/Movie.h"
#include "Core/Boot/Boot.h" #include "Core/Boot/Boot.h"
#include "Core/HW/DVDInterface.h" #include "Core/HW/DVDInterface.h"
@ -85,8 +84,8 @@ static int CompareGameListItems(const GameListItem* iso1, const GameListItem* is
sortData = -sortData; sortData = -sortData;
} }
DiscIO::IVolume::ELanguage languageOne = SConfig::GetInstance().m_LocalCoreStartupParameter.GetCurrentLanguage(iso1->GetPlatform() != DiscIO::IVolume::GAMECUBE_DISC); DiscIO::IVolume::ELanguage languageOne = SConfig::GetInstance().GetCurrentLanguage(iso1->GetPlatform() != DiscIO::IVolume::GAMECUBE_DISC);
DiscIO::IVolume::ELanguage languageOther = SConfig::GetInstance().m_LocalCoreStartupParameter.GetCurrentLanguage(iso2->GetPlatform() != DiscIO::IVolume::GAMECUBE_DISC); DiscIO::IVolume::ELanguage languageOther = SConfig::GetInstance().GetCurrentLanguage(iso2->GetPlatform() != DiscIO::IVolume::GAMECUBE_DISC);
switch (sortData) switch (sortData)
{ {
@ -411,7 +410,7 @@ void CGameListCtrl::InsertItemInReportView(long _Index)
} }
std::string title; std::string title;
IniFile gameini = SCoreStartupParameter::LoadGameIni(rISOFile.GetUniqueID(), rISOFile.GetRevision()); IniFile gameini = SConfig::LoadGameIni(rISOFile.GetUniqueID(), rISOFile.GetRevision());
if (gameini.GetIfExists("EmuState", "Title", &title)) if (gameini.GetIfExists("EmuState", "Title", &title))
name = title; name = title;
@ -851,8 +850,7 @@ void CGameListCtrl::OnRightClick(wxMouseEvent& event)
popupMenu.AppendCheckItem(IDM_SET_DEFAULT_ISO, _("Set as &default ISO")); popupMenu.AppendCheckItem(IDM_SET_DEFAULT_ISO, _("Set as &default ISO"));
// First we have to decide a starting value when we append it // First we have to decide a starting value when we append it
if (selected_iso->GetFileName() == SConfig::GetInstance(). if (selected_iso->GetFileName() == SConfig::GetInstance().m_strDefaultISO)
m_LocalCoreStartupParameter.m_strDefaultISO)
popupMenu.FindItem(IDM_SET_DEFAULT_ISO)->Check(); popupMenu.FindItem(IDM_SET_DEFAULT_ISO)->Check();
popupMenu.AppendSeparator(); popupMenu.AppendSeparator();
@ -967,14 +965,14 @@ void CGameListCtrl::OnSetDefaultISO(wxCommandEvent& event)
if (event.IsChecked()) if (event.IsChecked())
{ {
// Write the new default value and save it the ini file // Write the new default value and save it the ini file
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strDefaultISO = SConfig::GetInstance().m_strDefaultISO =
iso->GetFileName(); iso->GetFileName();
SConfig::GetInstance().SaveSettings(); SConfig::GetInstance().SaveSettings();
} }
else else
{ {
// Otherwise blank the value and save it // Otherwise blank the value and save it
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strDefaultISO = ""; SConfig::GetInstance().m_strDefaultISO = "";
SConfig::GetInstance().SaveSettings(); SConfig::GetInstance().SaveSettings();
} }
} }

View File

@ -24,7 +24,6 @@
#include "Common/StringUtil.h" #include "Common/StringUtil.h"
#include "Core/ConfigManager.h" #include "Core/ConfigManager.h"
#include "Core/CoreParameter.h"
#include "Core/Boot/Boot.h" #include "Core/Boot/Boot.h"
#include "DiscIO/CompressedBlob.h" #include "DiscIO/CompressedBlob.h"
@ -124,7 +123,7 @@ GameListItem::GameListItem(const std::string& _rFileName)
if (IsValid()) if (IsValid())
{ {
IniFile ini = SCoreStartupParameter::LoadGameIni(m_UniqueID, m_Revision); IniFile ini = SConfig::LoadGameIni(m_UniqueID, m_Revision);
ini.GetIfExists("EmuState", "EmulationStateId", &m_emu_state); ini.GetIfExists("EmuState", "EmulationStateId", &m_emu_state);
ini.GetIfExists("EmuState", "EmulationIssues", &m_issues); ini.GetIfExists("EmuState", "EmulationIssues", &m_issues);
} }
@ -145,7 +144,7 @@ GameListItem::GameListItem(const std::string& _rFileName)
else else
{ {
// default banner // default banner
m_Bitmap.LoadFile(StrToWxStr(File::GetThemeDir(SConfig::GetInstance().m_LocalCoreStartupParameter.theme_name)) + "nobanner.png", wxBITMAP_TYPE_PNG); m_Bitmap.LoadFile(StrToWxStr(File::GetThemeDir(SConfig::GetInstance().theme_name)) + "nobanner.png", wxBITMAP_TYPE_PNG);
} }
} }
@ -215,7 +214,7 @@ std::string GameListItem::GetDescription(DiscIO::IVolume::ELanguage language) co
std::string GameListItem::GetDescription() const std::string GameListItem::GetDescription() const
{ {
bool wii = m_Platform != DiscIO::IVolume::GAMECUBE_DISC; bool wii = m_Platform != DiscIO::IVolume::GAMECUBE_DISC;
return GetDescription(SConfig::GetInstance().m_LocalCoreStartupParameter.GetCurrentLanguage(wii)); return GetDescription(SConfig::GetInstance().GetCurrentLanguage(wii));
} }
std::string GameListItem::GetName(DiscIO::IVolume::ELanguage language) const std::string GameListItem::GetName(DiscIO::IVolume::ELanguage language) const
@ -226,7 +225,7 @@ std::string GameListItem::GetName(DiscIO::IVolume::ELanguage language) const
std::string GameListItem::GetName() const std::string GameListItem::GetName() const
{ {
bool wii = m_Platform != DiscIO::IVolume::GAMECUBE_DISC; bool wii = m_Platform != DiscIO::IVolume::GAMECUBE_DISC;
std::string name = GetName(SConfig::GetInstance().m_LocalCoreStartupParameter.GetCurrentLanguage(wii)); std::string name = GetName(SConfig::GetInstance().GetCurrentLanguage(wii));
if (name.empty()) if (name.empty())
{ {
// No usable name, return filename (better than nothing) // No usable name, return filename (better than nothing)

View File

@ -54,7 +54,6 @@
#include "Common/SysConf.h" #include "Common/SysConf.h"
#include "Core/ActionReplay.h" #include "Core/ActionReplay.h"
#include "Core/ConfigManager.h" #include "Core/ConfigManager.h"
#include "Core/CoreParameter.h"
#include "Core/GeckoCodeConfig.h" #include "Core/GeckoCodeConfig.h"
#include "Core/PatchEngine.h" #include "Core/PatchEngine.h"
#include "Core/Boot/Boot.h" #include "Core/Boot/Boot.h"
@ -119,8 +118,8 @@ CISOProperties::CISOProperties(const std::string fileName, wxWindow* parent, wxW
// Load game INIs // Load game INIs
GameIniFileLocal = File::GetUserPath(D_GAMESETTINGS_IDX) + game_id + ".ini"; GameIniFileLocal = File::GetUserPath(D_GAMESETTINGS_IDX) + game_id + ".ini";
GameIniDefault = SCoreStartupParameter::LoadDefaultGameIni(game_id, OpenISO->GetRevision()); GameIniDefault = SConfig::LoadDefaultGameIni(game_id, OpenISO->GetRevision());
GameIniLocal = SCoreStartupParameter::LoadLocalGameIni(game_id, OpenISO->GetRevision()); GameIniLocal = SConfig::LoadLocalGameIni(game_id, OpenISO->GetRevision());
// Setup GUI // Setup GUI
OpenGameListItem = new GameListItem(fileName); OpenGameListItem = new GameListItem(fileName);
@ -190,7 +189,7 @@ CISOProperties::CISOProperties(const std::string fileName, wxWindow* parent, wxW
// Here we set all the info to be shown + we set the window title // Here we set all the info to be shown + we set the window title
bool wii = OpenISO->GetVolumeType() != DiscIO::IVolume::GAMECUBE_DISC; bool wii = OpenISO->GetVolumeType() != DiscIO::IVolume::GAMECUBE_DISC;
ChangeBannerDetails(SConfig::GetInstance().m_LocalCoreStartupParameter.GetCurrentLanguage(wii)); ChangeBannerDetails(SConfig::GetInstance().GetCurrentLanguage(wii));
m_Banner->SetBitmap(OpenGameListItem->GetBitmap()); m_Banner->SetBitmap(OpenGameListItem->GetBitmap());
m_Banner->Bind(wxEVT_RIGHT_DOWN, &CISOProperties::RightClickOnBanner, this); m_Banner->Bind(wxEVT_RIGHT_DOWN, &CISOProperties::RightClickOnBanner, this);
@ -490,7 +489,7 @@ void CISOProperties::CreateGUIControls()
wxStaticText* const m_LangText = new wxStaticText(m_Information, wxID_ANY, _("Show Language:")); wxStaticText* const m_LangText = new wxStaticText(m_Information, wxID_ANY, _("Show Language:"));
bool wii = OpenISO->GetVolumeType() != DiscIO::IVolume::GAMECUBE_DISC; bool wii = OpenISO->GetVolumeType() != DiscIO::IVolume::GAMECUBE_DISC;
DiscIO::IVolume::ELanguage preferred_language = SConfig::GetInstance().m_LocalCoreStartupParameter.GetCurrentLanguage(wii); DiscIO::IVolume::ELanguage preferred_language = SConfig::GetInstance().GetCurrentLanguage(wii);
std::vector<DiscIO::IVolume::ELanguage> languages = OpenGameListItem->GetLanguages(); std::vector<DiscIO::IVolume::ELanguage> languages = OpenGameListItem->GetLanguages();
int preferred_language_index = 0; int preferred_language_index = 0;
@ -628,7 +627,7 @@ void CISOProperties::CreateGUIControls()
// If there is no default gameini, disable the button. // If there is no default gameini, disable the button.
bool game_ini_exists = false; bool game_ini_exists = false;
for (const std::string& ini_filename : SCoreStartupParameter::GetGameIniFilenames(game_id, OpenISO->GetRevision())) for (const std::string& ini_filename : SConfig::GetGameIniFilenames(game_id, OpenISO->GetRevision()))
{ {
if (File::Exists(File::GetSysDirectory() + GAMESETTINGS_DIR DIR_SEP + ini_filename)) if (File::Exists(File::GetSysDirectory() + GAMESETTINGS_DIR DIR_SEP + ini_filename))
{ {
@ -1283,7 +1282,7 @@ void CISOProperties::OnComputeMD5Sum(wxCommandEvent& WXUNUSED (event))
// they will all be opened, but there is usually only one // they will all be opened, but there is usually only one
void CISOProperties::OnShowDefaultConfig(wxCommandEvent& WXUNUSED (event)) void CISOProperties::OnShowDefaultConfig(wxCommandEvent& WXUNUSED (event))
{ {
for (const std::string& filename : SCoreStartupParameter::GetGameIniFilenames(game_id, OpenISO->GetRevision())) for (const std::string& filename : SConfig::GetGameIniFilenames(game_id, OpenISO->GetRevision()))
{ {
std::string path = File::GetSysDirectory() + GAMESETTINGS_DIR DIR_SEP + filename; std::string path = File::GetSysDirectory() + GAMESETTINGS_DIR DIR_SEP + filename;
if (File::Exists(path)) if (File::Exists(path))

View File

@ -30,7 +30,6 @@
#include "Core/ConfigManager.h" #include "Core/ConfigManager.h"
#include "Core/Core.h" #include "Core/Core.h"
#include "Core/CoreParameter.h"
#include "Core/Host.h" #include "Core/Host.h"
#include "Core/Movie.h" #include "Core/Movie.h"
#include "Core/HW/Wiimote.h" #include "Core/HW/Wiimote.h"
@ -210,31 +209,31 @@ bool DolphinApp::OnInit()
if (selectPerfDir) if (selectPerfDir)
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.m_perfDir = SConfig::GetInstance().m_perfDir =
WxStrToStr(perfDir); WxStrToStr(perfDir);
} }
if (selectVideoBackend && videoBackendName != wxEmptyString) if (selectVideoBackend && videoBackendName != wxEmptyString)
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strVideoBackend = SConfig::GetInstance().m_strVideoBackend =
WxStrToStr(videoBackendName); WxStrToStr(videoBackendName);
if (selectAudioEmulation) if (selectAudioEmulation)
{ {
if (audioEmulationName == "HLE") if (audioEmulationName == "HLE")
SConfig::GetInstance().m_LocalCoreStartupParameter.bDSPHLE = true; SConfig::GetInstance().bDSPHLE = true;
else if (audioEmulationName == "LLE") else if (audioEmulationName == "LLE")
SConfig::GetInstance().m_LocalCoreStartupParameter.bDSPHLE = false; SConfig::GetInstance().bDSPHLE = false;
} }
VideoBackend::ActivateBackend(SConfig::GetInstance().m_LocalCoreStartupParameter.m_strVideoBackend); VideoBackend::ActivateBackend(SConfig::GetInstance().m_strVideoBackend);
// Enable the PNG image handler for screenshots // Enable the PNG image handler for screenshots
wxImage::AddHandler(new wxPNGHandler); wxImage::AddHandler(new wxPNGHandler);
int x = SConfig::GetInstance().m_LocalCoreStartupParameter.iPosX; int x = SConfig::GetInstance().iPosX;
int y = SConfig::GetInstance().m_LocalCoreStartupParameter.iPosY; int y = SConfig::GetInstance().iPosY;
int w = SConfig::GetInstance().m_LocalCoreStartupParameter.iWidth; int w = SConfig::GetInstance().iWidth;
int h = SConfig::GetInstance().m_LocalCoreStartupParameter.iHeight; int h = SConfig::GetInstance().iHeight;
if (File::Exists("www.dolphin-emulator.com.txt")) if (File::Exists("www.dolphin-emulator.com.txt"))
{ {
@ -479,7 +478,7 @@ void Host_RequestFullscreen(bool enable_fullscreen)
void Host_SetStartupDebuggingParameters() void Host_SetStartupDebuggingParameters()
{ {
SCoreStartupParameter& StartUp = SConfig::GetInstance().m_LocalCoreStartupParameter; SConfig& StartUp = SConfig::GetInstance();
if (main_frame->g_pCodeWindow) if (main_frame->g_pCodeWindow)
{ {
StartUp.bBootToPause = main_frame->g_pCodeWindow->BootToPause(); StartUp.bBootToPause = main_frame->g_pCodeWindow->BootToPause();

View File

@ -226,7 +226,7 @@ static std::string GetTitle(std::string filename)
/* /*
bool is_wii_title = pVolume->GetVolumeType() != DiscIO::IVolume::GAMECUBE_DISC; bool is_wii_title = pVolume->GetVolumeType() != DiscIO::IVolume::GAMECUBE_DISC;
DiscIO::IVolume::ELanguage language = SConfig::GetInstance().m_LocalCoreStartupParameter.GetCurrentLanguage(is_wii_title); DiscIO::IVolume::ELanguage language = SConfig::GetInstance().GetCurrentLanguage(is_wii_title);
auto it = titles.find(language); auto it = titles.find(language);
if (it != end) if (it != end)
@ -267,7 +267,7 @@ static std::string GetDescription(std::string filename)
/* /*
bool is_wii_title = pVolume->GetVolumeType() != DiscIO::IVolume::GAMECUBE_DISC; bool is_wii_title = pVolume->GetVolumeType() != DiscIO::IVolume::GAMECUBE_DISC;
DiscIO::IVolume::ELanguage language = SConfig::GetInstance().m_LocalCoreStartupParameter.GetCurrentLanguage(is_wii_title); DiscIO::IVolume::ELanguage language = SConfig::GetInstance().GetCurrentLanguage(is_wii_title);
auto it = descriptions.find(language); auto it = descriptions.find(language);
if (it != end) if (it != end)

View File

@ -15,7 +15,6 @@
#include "Core/BootManager.h" #include "Core/BootManager.h"
#include "Core/ConfigManager.h" #include "Core/ConfigManager.h"
#include "Core/Core.h" #include "Core/Core.h"
#include "Core/CoreParameter.h"
#include "Core/Host.h" #include "Core/Host.h"
#include "Core/State.h" #include "Core/State.h"
#include "Core/HW/Wiimote.h" #include "Core/HW/Wiimote.h"
@ -77,7 +76,7 @@ void Host_RequestFullscreen(bool enable_fullscreen) {}
void Host_SetStartupDebuggingParameters() void Host_SetStartupDebuggingParameters()
{ {
SCoreStartupParameter& StartUp = SConfig::GetInstance().m_LocalCoreStartupParameter; SConfig& StartUp = SConfig::GetInstance();
StartUp.bEnableDebugging = false; StartUp.bEnableDebugging = false;
StartUp.bBootToPause = false; StartUp.bBootToPause = false;
} }
@ -99,7 +98,7 @@ bool Host_RendererIsFullscreen()
void Host_ConnectWiimote(int wm_idx, bool connect) void Host_ConnectWiimote(int wm_idx, bool connect)
{ {
if (Core::IsRunning() && SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) if (Core::IsRunning() && SConfig::GetInstance().bWii)
{ {
bool was_unpaused = Core::PauseAndLock(true); bool was_unpaused = Core::PauseAndLock(true);
GetUsbPointer()->AccessWiiMote(wm_idx | 0x100)->Activate(connect); GetUsbPointer()->AccessWiiMote(wm_idx | 0x100)->Activate(connect);
@ -136,10 +135,10 @@ class PlatformX11 : public Platform
} }
win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), win = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy),
SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowXPos, SConfig::GetInstance().iRenderWindowXPos,
SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowYPos, SConfig::GetInstance().iRenderWindowYPos,
SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowWidth, SConfig::GetInstance().iRenderWindowWidth,
SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowHeight, SConfig::GetInstance().iRenderWindowHeight,
0, 0, BlackPixel(dpy, 0)); 0, 0, BlackPixel(dpy, 0));
XSelectInput(dpy, win, KeyPressMask | FocusChangeMask); XSelectInput(dpy, win, KeyPressMask | FocusChangeMask);
Atom wmProtocols[1]; Atom wmProtocols[1];
@ -149,14 +148,14 @@ class PlatformX11 : public Platform
XFlush(dpy); XFlush(dpy);
s_window_handle = (void*)win; s_window_handle = (void*)win;
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bDisableScreenSaver) if (SConfig::GetInstance().bDisableScreenSaver)
X11Utils::InhibitScreensaver(dpy, win, true); X11Utils::InhibitScreensaver(dpy, win, true);
#if defined(HAVE_XRANDR) && HAVE_XRANDR #if defined(HAVE_XRANDR) && HAVE_XRANDR
XRRConfig = new X11Utils::XRRConfiguration(dpy, win); XRRConfig = new X11Utils::XRRConfiguration(dpy, win);
#endif #endif
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor) if (SConfig::GetInstance().bHideCursor)
{ {
// make a blank cursor // make a blank cursor
Pixmap Blank; Pixmap Blank;
@ -176,7 +175,7 @@ class PlatformX11 : public Platform
void MainLoop() override void MainLoop() override
{ {
bool fullscreen = SConfig::GetInstance().m_LocalCoreStartupParameter.bFullscreen; bool fullscreen = SConfig::GetInstance().bFullscreen;
if (fullscreen) if (fullscreen)
{ {
@ -202,13 +201,13 @@ class PlatformX11 : public Platform
{ {
if (Core::GetState() == Core::CORE_RUN) if (Core::GetState() == Core::CORE_RUN)
{ {
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor) if (SConfig::GetInstance().bHideCursor)
XUndefineCursor(dpy, win); XUndefineCursor(dpy, win);
Core::SetState(Core::CORE_PAUSE); Core::SetState(Core::CORE_PAUSE);
} }
else else
{ {
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor) if (SConfig::GetInstance().bHideCursor)
XDefineCursor(dpy, win, blankCursor); XDefineCursor(dpy, win, blankCursor);
Core::SetState(Core::CORE_RUN); Core::SetState(Core::CORE_RUN);
} }
@ -243,13 +242,13 @@ class PlatformX11 : public Platform
break; break;
case FocusIn: case FocusIn:
rendererHasFocus = true; rendererHasFocus = true;
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor && if (SConfig::GetInstance().bHideCursor &&
Core::GetState() != Core::CORE_PAUSE) Core::GetState() != Core::CORE_PAUSE)
XDefineCursor(dpy, win, blankCursor); XDefineCursor(dpy, win, blankCursor);
break; break;
case FocusOut: case FocusOut:
rendererHasFocus = false; rendererHasFocus = false;
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor) if (SConfig::GetInstance().bHideCursor)
XUndefineCursor(dpy, win); XUndefineCursor(dpy, win);
break; break;
case ClientMessage: case ClientMessage:
@ -263,10 +262,10 @@ class PlatformX11 : public Platform
Window winDummy; Window winDummy;
unsigned int borderDummy, depthDummy; unsigned int borderDummy, depthDummy;
XGetGeometry(dpy, win, &winDummy, XGetGeometry(dpy, win, &winDummy,
&SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowXPos, &SConfig::GetInstance().iRenderWindowXPos,
&SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowYPos, &SConfig::GetInstance().iRenderWindowYPos,
(unsigned int *)&SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowWidth, (unsigned int *)&SConfig::GetInstance().iRenderWindowWidth,
(unsigned int *)&SConfig::GetInstance().m_LocalCoreStartupParameter.iRenderWindowHeight, (unsigned int *)&SConfig::GetInstance().iRenderWindowHeight,
&borderDummy, &depthDummy); &borderDummy, &depthDummy);
rendererIsFullscreen = false; rendererIsFullscreen = false;
} }
@ -280,7 +279,7 @@ class PlatformX11 : public Platform
delete XRRConfig; delete XRRConfig;
#endif #endif
if (SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor) if (SConfig::GetInstance().bHideCursor)
XFreeCursor(dpy, blankCursor); XFreeCursor(dpy, blankCursor);
XCloseDisplay(dpy); XCloseDisplay(dpy);

View File

@ -28,7 +28,6 @@
#include "Common/IniFile.h" #include "Common/IniFile.h"
#include "Core/ConfigManager.h" #include "Core/ConfigManager.h"
#include "Core/CoreParameter.h"
#include "Core/NetPlayClient.h" #include "Core/NetPlayClient.h"
#include "Core/NetPlayProto.h" #include "Core/NetPlayProto.h"
#include "Core/NetPlayServer.h" #include "Core/NetPlayServer.h"
@ -251,9 +250,9 @@ void NetPlayDialog::OnChat(wxCommandEvent&)
void NetPlayDialog::GetNetSettings(NetSettings &settings) void NetPlayDialog::GetNetSettings(NetSettings &settings)
{ {
SConfig &instance = SConfig::GetInstance(); SConfig &instance = SConfig::GetInstance();
settings.m_CPUthread = instance.m_LocalCoreStartupParameter.bCPUThread; settings.m_CPUthread = instance.bCPUThread;
settings.m_CPUcore = instance.m_LocalCoreStartupParameter.iCPUCore; settings.m_CPUcore = instance.iCPUCore;
settings.m_DSPHLE = instance.m_LocalCoreStartupParameter.bDSPHLE; settings.m_DSPHLE = instance.bDSPHLE;
settings.m_DSPEnableJIT = instance.m_DSPEnableJIT; settings.m_DSPEnableJIT = instance.m_DSPEnableJIT;
settings.m_WriteToMemcard = m_memcard_write->GetValue(); settings.m_WriteToMemcard = m_memcard_write->GetValue();
settings.m_OCEnable = instance.m_OCEnable; settings.m_OCEnable = instance.m_OCEnable;

View File

@ -31,7 +31,7 @@ public:
Close(); Close();
g_video_backend = new_backend; g_video_backend = new_backend;
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strVideoBackend = g_video_backend->GetName(); SConfig::GetInstance().m_strVideoBackend = g_video_backend->GetName();
g_video_backend->ShowConfig(GetParent()); g_video_backend->ShowConfig(GetParent());
} }

View File

@ -22,7 +22,6 @@
#include "Common/SysConf.h" #include "Common/SysConf.h"
#include "Core/ConfigManager.h" #include "Core/ConfigManager.h"
#include "Core/Core.h" #include "Core/Core.h"
#include "Core/CoreParameter.h"
#include "DolphinWX/Frame.h" #include "DolphinWX/Frame.h"
#include "DolphinWX/Main.h" #include "DolphinWX/Main.h"
#include "DolphinWX/VideoConfigDiag.h" #include "DolphinWX/VideoConfigDiag.h"
@ -282,7 +281,7 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con
RegisterControl(choice_display_resolution, wxGetTranslation(display_res_desc)); RegisterControl(choice_display_resolution, wxGetTranslation(display_res_desc));
choice_display_resolution->Bind(wxEVT_CHOICE, &VideoConfigDiag::Event_DisplayResolution, this); choice_display_resolution->Bind(wxEVT_CHOICE, &VideoConfigDiag::Event_DisplayResolution, this);
choice_display_resolution->SetStringSelection(StrToWxStr(SConfig::GetInstance().m_LocalCoreStartupParameter.strFullscreenResolution)); choice_display_resolution->SetStringSelection(StrToWxStr(SConfig::GetInstance().strFullscreenResolution));
szr_display->Add(label_display_resolution, 1, wxALIGN_CENTER_VERTICAL, 0); szr_display->Add(label_display_resolution, 1, wxALIGN_CENTER_VERTICAL, 0);
szr_display->Add(choice_display_resolution); szr_display->Add(choice_display_resolution);
@ -302,7 +301,7 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con
// various other display options // various other display options
{ {
szr_display->Add(CreateCheckBox(page_general, _("V-Sync"), wxGetTranslation(vsync_desc), vconfig.bVSync)); szr_display->Add(CreateCheckBox(page_general, _("V-Sync"), wxGetTranslation(vsync_desc), vconfig.bVSync));
szr_display->Add(CreateCheckBox(page_general, _("Use Fullscreen"), wxGetTranslation(use_fullscreen_desc), SConfig::GetInstance().m_LocalCoreStartupParameter.bFullscreen)); szr_display->Add(CreateCheckBox(page_general, _("Use Fullscreen"), wxGetTranslation(use_fullscreen_desc), SConfig::GetInstance().bFullscreen));
} }
} }
@ -312,10 +311,10 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con
{ {
szr_other->Add(CreateCheckBox(page_general, _("Show FPS"), wxGetTranslation(show_fps_desc), vconfig.bShowFPS)); szr_other->Add(CreateCheckBox(page_general, _("Show FPS"), wxGetTranslation(show_fps_desc), vconfig.bShowFPS));
szr_other->Add(CreateCheckBox(page_general, _("Log Render Time to File"), wxGetTranslation(log_render_time_to_file_desc), vconfig.bLogRenderTimeToFile)); szr_other->Add(CreateCheckBox(page_general, _("Log Render Time to File"), wxGetTranslation(log_render_time_to_file_desc), vconfig.bLogRenderTimeToFile));
szr_other->Add(CreateCheckBox(page_general, _("Auto adjust Window Size"), wxGetTranslation(auto_window_size_desc), SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderWindowAutoSize)); szr_other->Add(CreateCheckBox(page_general, _("Auto adjust Window Size"), wxGetTranslation(auto_window_size_desc), SConfig::GetInstance().bRenderWindowAutoSize));
szr_other->Add(CreateCheckBox(page_general, _("Keep Window on Top"), wxGetTranslation(keep_window_on_top_desc), SConfig::GetInstance().m_LocalCoreStartupParameter.bKeepWindowOnTop)); szr_other->Add(CreateCheckBox(page_general, _("Keep Window on Top"), wxGetTranslation(keep_window_on_top_desc), SConfig::GetInstance().bKeepWindowOnTop));
szr_other->Add(CreateCheckBox(page_general, _("Hide Mouse Cursor"), wxGetTranslation(hide_mouse_cursor_desc), SConfig::GetInstance().m_LocalCoreStartupParameter.bHideCursor)); szr_other->Add(CreateCheckBox(page_general, _("Hide Mouse Cursor"), wxGetTranslation(hide_mouse_cursor_desc), SConfig::GetInstance().bHideCursor));
szr_other->Add(render_to_main_checkbox = CreateCheckBox(page_general, _("Render to Main Window"), wxGetTranslation(render_to_main_win_desc), SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain)); szr_other->Add(render_to_main_checkbox = CreateCheckBox(page_general, _("Render to Main Window"), wxGetTranslation(render_to_main_win_desc), SConfig::GetInstance().bRenderToMain));
} }
@ -583,9 +582,9 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con
RegisterControl(progressive_scan_checkbox, wxGetTranslation(prog_scan_desc)); RegisterControl(progressive_scan_checkbox, wxGetTranslation(prog_scan_desc));
progressive_scan_checkbox->Bind(wxEVT_CHECKBOX, &VideoConfigDiag::Event_ProgressiveScan, this); progressive_scan_checkbox->Bind(wxEVT_CHECKBOX, &VideoConfigDiag::Event_ProgressiveScan, this);
progressive_scan_checkbox->SetValue(SConfig::GetInstance().m_LocalCoreStartupParameter.bProgressive); progressive_scan_checkbox->SetValue(SConfig::GetInstance().bProgressive);
// A bit strange behavior, but this needs to stay in sync with the main progressive boolean; TODO: Is this still necessary? // A bit strange behavior, but this needs to stay in sync with the main progressive boolean; TODO: Is this still necessary?
SConfig::GetInstance().m_SYSCONF->SetData("IPL.PGS", SConfig::GetInstance().m_LocalCoreStartupParameter.bProgressive); SConfig::GetInstance().m_SYSCONF->SetData("IPL.PGS", SConfig::GetInstance().bProgressive);
szr_misc->Add(progressive_scan_checkbox); szr_misc->Add(progressive_scan_checkbox);
} }
@ -624,7 +623,7 @@ VideoConfigDiag::VideoConfigDiag(wxWindow* parent, const std::string &title, con
void VideoConfigDiag::Event_DisplayResolution(wxCommandEvent &ev) void VideoConfigDiag::Event_DisplayResolution(wxCommandEvent &ev)
{ {
SConfig::GetInstance().m_LocalCoreStartupParameter.strFullscreenResolution = SConfig::GetInstance().strFullscreenResolution =
WxStrToStr(choice_display_resolution->GetStringSelection()); WxStrToStr(choice_display_resolution->GetStringSelection());
#if defined(HAVE_XRANDR) && HAVE_XRANDR #if defined(HAVE_XRANDR) && HAVE_XRANDR
main_frame->m_XRRConfig->Update(); main_frame->m_XRRConfig->Update();

View File

@ -21,7 +21,6 @@
#include "Common/SysConf.h" #include "Common/SysConf.h"
#include "Core/ConfigManager.h" #include "Core/ConfigManager.h"
#include "Core/Core.h" #include "Core/Core.h"
#include "Core/CoreParameter.h"
#include "DolphinWX/PostProcessingConfigDiag.h" #include "DolphinWX/PostProcessingConfigDiag.h"
#include "DolphinWX/WxUtils.h" #include "DolphinWX/WxUtils.h"
#include "VideoCommon/PostProcessing.h" #include "VideoCommon/PostProcessing.h"
@ -103,7 +102,7 @@ protected:
Close(); Close();
g_video_backend = new_backend; g_video_backend = new_backend;
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strVideoBackend = g_video_backend->GetName(); SConfig::GetInstance().m_strVideoBackend = g_video_backend->GetName();
g_video_backend->ShowConfig(GetParent()); g_video_backend->ShowConfig(GetParent());
} }
@ -123,7 +122,7 @@ protected:
void Event_ProgressiveScan(wxCommandEvent &ev) void Event_ProgressiveScan(wxCommandEvent &ev)
{ {
SConfig::GetInstance().m_SYSCONF->SetData("IPL.PGS", ev.GetInt()); SConfig::GetInstance().m_SYSCONF->SetData("IPL.PGS", ev.GetInt());
SConfig::GetInstance().m_LocalCoreStartupParameter.bProgressive = ev.IsChecked(); SConfig::GetInstance().bProgressive = ev.IsChecked();
ev.Skip(); ev.Skip();
} }

View File

@ -9,7 +9,6 @@
#include "Common/Logging/Log.h" #include "Common/Logging/Log.h"
#include "Core/ConfigManager.h" #include "Core/ConfigManager.h"
#include "Core/Core.h" #include "Core/Core.h"
#include "Core/CoreParameter.h"
#include "DolphinWX/X11Utils.h" #include "DolphinWX/X11Utils.h"
extern char **environ; extern char **environ;
@ -112,7 +111,7 @@ XRRConfiguration::~XRRConfiguration()
void XRRConfiguration::Update() void XRRConfiguration::Update()
{ {
if (SConfig::GetInstance().m_LocalCoreStartupParameter.strFullscreenResolution == "Auto") if (SConfig::GetInstance().strFullscreenResolution == "Auto")
return; return;
if (!bValid) if (!bValid)
@ -134,7 +133,7 @@ void XRRConfiguration::Update()
unsigned int fullWidth, fullHeight; unsigned int fullWidth, fullHeight;
char *output_name = nullptr; char *output_name = nullptr;
char auxFlag = '\0'; char auxFlag = '\0';
if (SConfig::GetInstance().m_LocalCoreStartupParameter.strFullscreenResolution.find(':') == if (SConfig::GetInstance().strFullscreenResolution.find(':') ==
std::string::npos) std::string::npos)
{ {
fullWidth = fb_width; fullWidth = fb_width;
@ -142,7 +141,7 @@ void XRRConfiguration::Update()
} }
else else
{ {
sscanf(SConfig::GetInstance().m_LocalCoreStartupParameter.strFullscreenResolution.c_str(), sscanf(SConfig::GetInstance().strFullscreenResolution.c_str(),
"%m[^:]: %ux%u%c", &output_name, &fullWidth, &fullHeight, &auxFlag); "%m[^:]: %ux%u%c", &output_name, &fullWidth, &fullHeight, &auxFlag);
} }
bool want_interlaced = ('i' == auxFlag); bool want_interlaced = ('i' == auxFlag);
@ -161,7 +160,7 @@ void XRRConfiguration::Update()
if (!output_name) if (!output_name)
{ {
output_name = strdup(output_info->name); output_name = strdup(output_info->name);
SConfig::GetInstance().m_LocalCoreStartupParameter.strFullscreenResolution = SConfig::GetInstance().strFullscreenResolution =
StringFromFormat("%s: %ux%u", output_info->name, fullWidth, fullHeight); StringFromFormat("%s: %ux%u", output_info->name, fullWidth, fullHeight);
} }
outputInfo = output_info; outputInfo = output_info;

View File

@ -15,7 +15,7 @@ bool InputConfig::LoadConfig(bool isGC)
std::string profile[MAX_BBMOTES]; std::string profile[MAX_BBMOTES];
std::string path; std::string path;
if (SConfig::GetInstance().m_LocalCoreStartupParameter.GetUniqueID() != "00000000") if (SConfig::GetInstance().GetUniqueID() != "00000000")
{ {
std::string type; std::string type;
if (isGC) if (isGC)
@ -29,7 +29,7 @@ bool InputConfig::LoadConfig(bool isGC)
path = "Profiles/Wiimote/"; path = "Profiles/Wiimote/";
} }
IniFile game_ini = SConfig::GetInstance().m_LocalCoreStartupParameter.LoadGameIni(); IniFile game_ini = SConfig::GetInstance().LoadGameIni();
IniFile::Section* control_section = game_ini.GetOrCreateSection("Controls"); IniFile::Section* control_section = game_ini.GetOrCreateSection("Controls");
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++)

View File

@ -32,9 +32,9 @@ void Init()
#if defined(__LIBUSB__) || defined (_WIN32) #if defined(__LIBUSB__) || defined (_WIN32)
SI_GCAdapter::Init(); SI_GCAdapter::Init();
#endif #endif
VideoBackend::ActivateBackend(SConfig::GetInstance().m_LocalCoreStartupParameter.m_strVideoBackend); VideoBackend::ActivateBackend(SConfig::GetInstance().m_strVideoBackend);
SetEnableAlert(SConfig::GetInstance().m_LocalCoreStartupParameter.bUsePanicHandlers); SetEnableAlert(SConfig::GetInstance().bUsePanicHandlers);
} }
void Shutdown() void Shutdown()

View File

@ -155,7 +155,7 @@ void GeometryShaderCache::Init()
File::CreateDir(File::GetUserPath(D_SHADERCACHE_IDX)); File::CreateDir(File::GetUserPath(D_SHADERCACHE_IDX));
std::string cache_filename = StringFromFormat("%sdx11-%s-gs.cache", File::GetUserPath(D_SHADERCACHE_IDX).c_str(), std::string cache_filename = StringFromFormat("%sdx11-%s-gs.cache", File::GetUserPath(D_SHADERCACHE_IDX).c_str(),
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strUniqueID.c_str()); SConfig::GetInstance().m_strUniqueID.c_str());
GeometryShaderCacheInserter inserter; GeometryShaderCacheInserter inserter;
g_gs_disk_cache.OpenAndRead(cache_filename, inserter); g_gs_disk_cache.OpenAndRead(cache_filename, inserter);

View File

@ -474,7 +474,7 @@ void PixelShaderCache::Init()
SETSTAT(stats.numPixelShadersAlive, 0); SETSTAT(stats.numPixelShadersAlive, 0);
std::string cache_filename = StringFromFormat("%sdx11-%s-ps.cache", File::GetUserPath(D_SHADERCACHE_IDX).c_str(), std::string cache_filename = StringFromFormat("%sdx11-%s-ps.cache", File::GetUserPath(D_SHADERCACHE_IDX).c_str(),
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strUniqueID.c_str()); SConfig::GetInstance().m_strUniqueID.c_str());
PixelShaderCacheInserter inserter; PixelShaderCacheInserter inserter;
g_ps_disk_cache.OpenAndRead(cache_filename, inserter); g_ps_disk_cache.OpenAndRead(cache_filename, inserter);

View File

@ -888,7 +888,7 @@ void Renderer::SwapImpl(u32 xfbAddr, u32 fbWidth, u32 fbStride, u32 fbHeight, co
const bool windowResized = CheckForResize(); const bool windowResized = CheckForResize();
const bool fullscreen = g_ActiveConfig.bFullscreen && !g_ActiveConfig.bBorderlessFullscreen && const bool fullscreen = g_ActiveConfig.bFullscreen && !g_ActiveConfig.bBorderlessFullscreen &&
!SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain; !SConfig::GetInstance().bRenderToMain;
bool xfbchanged = s_last_xfb_mode != g_ActiveConfig.bUseRealXFB; bool xfbchanged = s_last_xfb_mode != g_ActiveConfig.bUseRealXFB;

View File

@ -149,7 +149,7 @@ void VertexShaderCache::Init()
SETSTAT(stats.numVertexShadersAlive, 0); SETSTAT(stats.numVertexShadersAlive, 0);
std::string cache_filename = StringFromFormat("%sdx11-%s-vs.cache", File::GetUserPath(D_SHADERCACHE_IDX).c_str(), std::string cache_filename = StringFromFormat("%sdx11-%s-vs.cache", File::GetUserPath(D_SHADERCACHE_IDX).c_str(),
SConfig::GetInstance().m_LocalCoreStartupParameter.m_strUniqueID.c_str()); SConfig::GetInstance().m_strUniqueID.c_str());
VertexShaderCacheInserter inserter; VertexShaderCacheInserter inserter;
g_vs_disk_cache.OpenAndRead(cache_filename, inserter); g_vs_disk_cache.OpenAndRead(cache_filename, inserter);

Some files were not shown because too many files have changed in this diff Show More