From 233b00fb7e5a743ffc9da0ed5467f185041ea31d Mon Sep 17 00:00:00 2001 From: zackhow Date: Sun, 2 Dec 2018 23:11:29 -0500 Subject: [PATCH 1/2] ConfigManager: add save/load for Jit debug options --- Source/Core/Core/ConfigManager.cpp | 31 ++++++++++++++++++++++++++++++ Source/Core/Core/ConfigManager.h | 2 ++ 2 files changed, 33 insertions(+) diff --git a/Source/Core/Core/ConfigManager.cpp b/Source/Core/Core/ConfigManager.cpp index dc826fc155..95b1222c17 100644 --- a/Source/Core/Core/ConfigManager.cpp +++ b/Source/Core/Core/ConfigManager.cpp @@ -92,6 +92,7 @@ void SConfig::SaveSettings() SaveBluetoothPassthroughSettings(ini); SaveUSBPassthroughSettings(ini); SaveAutoUpdateSettings(ini); + SaveJitDebugSettings(ini); ini.Save(File::GetUserPath(F_DOLPHINCONFIG_IDX)); @@ -352,6 +353,21 @@ void SConfig::SaveAutoUpdateSettings(IniFile& ini) section->Set("HashOverride", m_auto_update_hash_override); } +void SConfig::SaveJitDebugSettings(IniFile& ini) +{ + IniFile::Section* section = ini.GetOrCreateSection("Debug"); + + section->Set("JitOff", bJITOff); + section->Set("JitLoadStoreOff", bJITLoadStoreOff); + section->Set("JitLoadStoreFloatingOff", bJITLoadStoreFloatingOff); + section->Set("JitLoadStorePairedOff", bJITLoadStorePairedOff); + section->Set("JitFloatingPointOff", bJITFloatingPointOff); + section->Set("JitIntegerOff", bJITIntegerOff); + section->Set("JitPairedOff", bJITPairedOff); + section->Set("JitSystemRegistersOff", bJITSystemRegistersOff); + section->Set("JitBranchOff", bJITBranchOff); +} + void SConfig::LoadSettings() { Config::Load(); @@ -374,6 +390,7 @@ void SConfig::LoadSettings() LoadBluetoothPassthroughSettings(ini); LoadUSBPassthroughSettings(ini); LoadAutoUpdateSettings(ini); + LoadJitDebugSettings(ini); } void SConfig::LoadGeneralSettings(IniFile& ini) @@ -647,6 +664,20 @@ void SConfig::LoadAutoUpdateSettings(IniFile& ini) section->Get("HashOverride", &m_auto_update_hash_override, ""); } +void SConfig::LoadJitDebugSettings(IniFile& ini) +{ + IniFile::Section* section = ini.GetOrCreateSection("Debug"); + section->Get("JitOff", &bJITOff, false); + section->Get("JitLoadStoreOff", &bJITLoadStoreOff, false); + section->Get("JitLoadStoreFloatingOff", &bJITLoadStoreFloatingOff, false); + section->Get("JitLoadStorePairedOff", &bJITLoadStorePairedOff, false); + section->Get("JitFloatingPointOff", &bJITFloatingPointOff, false); + section->Get("JitIntegerOff", &bJITIntegerOff, false); + section->Get("JitPairedOff", &bJITPairedOff, false); + section->Get("JitSystemRegistersOff", &bJITSystemRegistersOff, false); + section->Get("JitBranchOff", &bJITBranchOff, false); +} + void SConfig::ResetRunningGameMetadata() { SetRunningGameMetadata("00000000", 0, 0, Core::TitleDatabase::TitleType::Other); diff --git a/Source/Core/Core/ConfigManager.h b/Source/Core/Core/ConfigManager.h index 2aae8c31d1..8b95fde543 100644 --- a/Source/Core/Core/ConfigManager.h +++ b/Source/Core/Core/ConfigManager.h @@ -349,6 +349,7 @@ private: void SaveBluetoothPassthroughSettings(IniFile& ini); void SaveUSBPassthroughSettings(IniFile& ini); void SaveAutoUpdateSettings(IniFile& ini); + void SaveJitDebugSettings(IniFile& ini); void LoadGeneralSettings(IniFile& ini); void LoadInterfaceSettings(IniFile& ini); @@ -364,6 +365,7 @@ private: void LoadBluetoothPassthroughSettings(IniFile& ini); void LoadUSBPassthroughSettings(IniFile& ini); void LoadAutoUpdateSettings(IniFile& ini); + void LoadJitDebugSettings(IniFile& ini); void SetRunningGameMetadata(const std::string& game_id, u64 title_id, u16 revision, Core::TitleDatabase::TitleType type); From 7b2629717bed9a0fc0baf7fb8adc157f650ba594 Mon Sep 17 00:00:00 2001 From: zackhow Date: Mon, 3 Dec 2018 00:13:27 -0500 Subject: [PATCH 2/2] Android: Add jit debug menu options --- .../features/settings/model/Settings.java | 4 +- .../features/settings/ui/MenuTag.java | 1 + .../ui/SettingsFragmentPresenter.java | 56 +++++++++++++++++++ .../features/settings/utils/SettingsFile.java | 10 ++++ .../app/src/main/res/values/strings.xml | 14 +++++ 5 files changed, 84 insertions(+), 1 deletion(-) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java index 0f3ff9d717..d76d9ec688 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/Settings.java @@ -21,6 +21,8 @@ public class Settings public static final String SECTION_GFX_ENHANCEMENTS = "Enhancements"; public static final String SECTION_GFX_HACKS = "Hacks"; + public static final String SECTION_DEBUG = "Debug"; + public static final String SECTION_STEREOSCOPY = "Stereoscopy"; public static final String SECTION_WIIMOTE = "Wiimote"; @@ -39,7 +41,7 @@ public class Settings { configFileSectionsMap.put(SettingsFile.FILE_NAME_DOLPHIN, Arrays.asList(SECTION_INI_CORE, SECTION_INI_INTERFACE, SECTION_BINDINGS, - SECTION_ANALYTICS)); + SECTION_ANALYTICS, SECTION_DEBUG)); configFileSectionsMap.put(SettingsFile.FILE_NAME_GFX, Arrays.asList(SECTION_GFX_SETTINGS, SECTION_GFX_ENHANCEMENTS, SECTION_GFX_HACKS, SECTION_STEREOSCOPY)); diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java index 56dcd9d63f..a88219b4a1 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java @@ -12,6 +12,7 @@ public enum MenuTag GCPAD_TYPE("gc_pad_type"), GRAPHICS("graphics"), HACKS("hacks"), + DEBUG("debug"), ENHANCEMENTS("enhancements"), STEREOSCOPY("stereoscopy"), GCPAD_1("gcpad", 0), diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java index 31efc23e74..c10ec992bd 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java @@ -161,6 +161,10 @@ public final class SettingsFragmentPresenter addHackSettings(sl); break; + case DEBUG: + addDebugSettings(sl); + break; + case GCPAD_1: case GCPAD_2: case GCPAD_3: @@ -202,6 +206,7 @@ public final class SettingsFragmentPresenter sl.add(new SubmenuSetting(null, null, R.string.gamecube_submenu, 0, MenuTag.CONFIG_GAME_CUBE)); sl.add(new SubmenuSetting(null, null, R.string.wii_submenu, 0, MenuTag.CONFIG_WII)); + sl.add(new SubmenuSetting(null, null, R.string.debug_submenu, 0, MenuTag.DEBUG)); sl.add(new HeaderSetting(null, null, R.string.gametdb_thanks, 0)); } @@ -606,6 +611,57 @@ public final class SettingsFragmentPresenter fastDepth)); } + private void addDebugSettings(ArrayList sl) + { + SettingSection debugSection = mSettings.getSection(Settings.SECTION_DEBUG); + + Setting jitOff = debugSection.getSetting(SettingsFile.KEY_DEBUG_JITOFF); + Setting jitLoadStoreOff = debugSection.getSetting(SettingsFile.KEY_DEBUG_JITLOADSTOREOFF); + Setting jitLoadStoreFloatingPointOff = + debugSection.getSetting(SettingsFile.KEY_DEBUG_JITLOADSTOREFLOATINGPOINTOFF); + Setting jitLoadStorePairedOff = + debugSection.getSetting(SettingsFile.KEY_DEBUG_JITLOADSTOREPAIREDOFF); + Setting jitFloatingPointOff = + debugSection.getSetting(SettingsFile.KEY_DEBUG_JITFLOATINGPOINTOFF); + Setting jitIntegerOff = debugSection.getSetting(SettingsFile.KEY_DEBUG_JITINTEGEROFF); + Setting jitPairedOff = debugSection.getSetting(SettingsFile.KEY_DEBUG_JITPAIREDOFF); + Setting jitSystemRegistersOff = + debugSection.getSetting(SettingsFile.KEY_DEBUG_JITSYSTEMREGISTEROFF); + Setting jitBranchOff = debugSection.getSetting(SettingsFile.KEY_DEBUG_JITBRANCHOFF); + + sl.add(new HeaderSetting(null, null, R.string.debug_warning, 0)); + + sl.add(new HeaderSetting(null, null, R.string.debug_jit_header, 0)); + sl.add(new CheckBoxSetting(SettingsFile.KEY_DEBUG_JITOFF, Settings.SECTION_DEBUG, + R.string.debug_jitoff, 0, false, + jitOff)); + sl.add(new CheckBoxSetting(SettingsFile.KEY_DEBUG_JITLOADSTOREOFF, Settings.SECTION_DEBUG, + R.string.debug_jitloadstoreoff, 0, false, + jitLoadStoreOff)); + sl.add(new CheckBoxSetting(SettingsFile.KEY_DEBUG_JITLOADSTOREFLOATINGPOINTOFF, + Settings.SECTION_DEBUG, + R.string.debug_jitloadstorefloatingoff, 0, false, + jitLoadStoreFloatingPointOff)); + sl.add(new CheckBoxSetting(SettingsFile.KEY_DEBUG_JITLOADSTOREPAIREDOFF, Settings.SECTION_DEBUG, + R.string.debug_jitloadstorepairedoff, 0, false, + jitLoadStorePairedOff)); + sl.add(new CheckBoxSetting(SettingsFile.KEY_DEBUG_JITFLOATINGPOINTOFF, Settings.SECTION_DEBUG, + R.string.debug_jitfloatingpointoff, 0, false, + jitFloatingPointOff)); + sl.add(new CheckBoxSetting(SettingsFile.KEY_DEBUG_JITINTEGEROFF, Settings.SECTION_DEBUG, + R.string.debug_jitintegeroff, 0, false, + jitIntegerOff)); + sl.add(new CheckBoxSetting(SettingsFile.KEY_DEBUG_JITPAIREDOFF, Settings.SECTION_DEBUG, + R.string.debug_jitpairedoff, 0, false, + jitPairedOff)); + sl.add(new CheckBoxSetting(SettingsFile.KEY_DEBUG_JITSYSTEMREGISTEROFF, Settings.SECTION_DEBUG, + R.string.debug_jitsystemregistersoffr, 0, false, + jitSystemRegistersOff)); + sl.add(new CheckBoxSetting(SettingsFile.KEY_DEBUG_JITBRANCHOFF, Settings.SECTION_DEBUG, + R.string.debug_jitbranchoff, 0, false, + jitBranchOff)); + } + private void addStereoSettings(ArrayList sl) { SettingSection stereoScopySection = mSettings.getSection(Settings.SECTION_STEREOSCOPY); diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java index 322e2f0ae8..73eb02dae7 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java @@ -90,6 +90,16 @@ public final class SettingsFile public static final String KEY_SHADER_COMPILATION_MODE = "ShaderCompilationMode"; public static final String KEY_WAIT_FOR_SHADERS = "WaitForShadersBeforeStarting"; + public static final String KEY_DEBUG_JITOFF = "JitOff"; + public static final String KEY_DEBUG_JITLOADSTOREOFF = "JitLoadStoreOff"; + public static final String KEY_DEBUG_JITLOADSTOREFLOATINGPOINTOFF = "JitLoadStoreFloatingOff"; + public static final String KEY_DEBUG_JITLOADSTOREPAIREDOFF = "JitLoadStorePairedOff"; + public static final String KEY_DEBUG_JITFLOATINGPOINTOFF = "JitFloatingPointOff"; + public static final String KEY_DEBUG_JITINTEGEROFF = "JitIntegerOff"; + public static final String KEY_DEBUG_JITPAIREDOFF = "JitPairedOff"; + public static final String KEY_DEBUG_JITSYSTEMREGISTEROFF = "JitSystemRegistersOff"; + public static final String KEY_DEBUG_JITBRANCHOFF = "JitBranchOff"; + public static final String KEY_GCPAD_TYPE = "SIDevice"; public static final String KEY_GCPAD_G_TYPE = "PadType"; diff --git a/Source/Android/app/src/main/res/values/strings.xml b/Source/Android/app/src/main/res/values/strings.xml index ed70092646..72759e1807 100644 --- a/Source/Android/app/src/main/res/values/strings.xml +++ b/Source/Android/app/src/main/res/values/strings.xml @@ -230,6 +230,20 @@ Compile Shaders Before Starting This causes a delay when launching games, but will reduce stuttering early on. + + Debug + Warning: These settings will slow emulation + Jit + Jit Disabled + Jit Load Store Disabled + Jit Load Store Floating Point Disabled + Jit Load Store Paired Disabled + Jit Floating Point Disabled + Jit Integer Disabled + Jit Paired Disabled + Jit System Registers Disabled + Jit Branch Disabled + Yes No