diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentPresenter.java index 92e413e9fa..11cbf9af9a 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentPresenter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentPresenter.java @@ -120,7 +120,15 @@ public final class SettingsFragmentPresenter switch (mMenuTag) { case SettingsFile.FILE_NAME_DOLPHIN: - addCoreSettings(sl); + addConfigSettings(sl); + break; + + case SettingsFile.SECTION_CONFIG_GENERAL: + addGeneralSettings(sl); + break; + + case SettingsFile.SECTION_CONFIG_INTERFACE: + addInterfaceSettings(sl); break; case SettingsFile.FILE_NAME_GFX: @@ -168,7 +176,13 @@ public final class SettingsFragmentPresenter mView.showSettingsList(mSettingsList); } - private void addCoreSettings(ArrayList sl) + private void addConfigSettings(ArrayList sl) + { + sl.add(new SubmenuSetting(null, null, R.string.general_submenu, 0, SettingsFile.SECTION_CONFIG_GENERAL)); + sl.add(new SubmenuSetting(null, null, R.string.interface_submenu, 0, SettingsFile.SECTION_CONFIG_INTERFACE)); + } + + private void addGeneralSettings(ArrayList sl) { Setting cpuCore = null; Setting dualCore = null; @@ -229,6 +243,17 @@ public final class SettingsFragmentPresenter sl.add(new CheckBoxSetting(SettingsFile.KEY_AUDIO_STRETCH, SettingsFile.SECTION_CORE, SettingsFile.SETTINGS_DOLPHIN, R.string.audio_stretch, R.string.audio_stretch_description, false, audioStretch)); } + private void addInterfaceSettings(ArrayList sl) + { + Setting usePanicHandlers = null; + + if (!mSettings.get(SettingsFile.SETTINGS_DOLPHIN).isEmpty()) + { + usePanicHandlers = mSettings.get(SettingsFile.SETTINGS_DOLPHIN).get(SettingsFile.SECTION_INTERFACE).getSetting(SettingsFile.KEY_USE_PANIC_HANDLERS); + } + sl.add(new CheckBoxSetting(SettingsFile.KEY_USE_PANIC_HANDLERS, SettingsFile.SECTION_INTERFACE, SettingsFile.SETTINGS_DOLPHIN, R.string.panic_handlers, R.string.panic_handlers_description, true, usePanicHandlers)); + } + private void addGcPadSettings(ArrayList sl) { if (!mSettings.get(SettingsFile.SETTINGS_DOLPHIN).isEmpty()) @@ -283,8 +308,8 @@ public final class SettingsFragmentPresenter sl.add(new SingleChoiceSetting(SettingsFile.KEY_SHADER_COMPILATION_MODE, SettingsFile.SECTION_GFX_SETTINGS, SettingsFile.SETTINGS_GFX, R.string.shader_compilation_mode, R.string.shader_compilation_mode_descrip, R.array.shaderCompilationModeEntries, R.array.shaderCompilationModeValues, 0, shaderCompilationMode)); sl.add(new CheckBoxSetting(SettingsFile.KEY_WAIT_FOR_SHADERS, SettingsFile.SECTION_GFX_SETTINGS, SettingsFile.SETTINGS_GFX, R.string.wait_for_shaders, 0, false, waitForShaders)); - sl.add(new SubmenuSetting(null, null, R.string.enhancements, 0, SettingsFile.SECTION_GFX_ENHANCEMENTS)); - sl.add(new SubmenuSetting(null, null, R.string.hacks, 0, SettingsFile.SECTION_GFX_HACKS)); + sl.add(new SubmenuSetting(null, null, R.string.enhancements_submenu, 0, SettingsFile.SECTION_GFX_ENHANCEMENTS)); + sl.add(new SubmenuSetting(null, null, R.string.hacks_submenu, 0, SettingsFile.SECTION_GFX_HACKS)); } private void addEnhanceSettings(ArrayList sl) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/SettingsFile.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/SettingsFile.java index 0d1946bb64..aec9b4953c 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/SettingsFile.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/SettingsFile.java @@ -63,6 +63,10 @@ public final class SettingsFile public static final String FILE_NAME_WIIMOTE = "WiimoteNew"; public static final String SECTION_CORE = "Core"; + public static final String SECTION_INTERFACE = "Interface"; + + public static final String SECTION_CONFIG_GENERAL = "General"; + public static final String SECTION_CONFIG_INTERFACE = "Interface"; public static final String SECTION_GFX_SETTINGS = "Settings"; public static final String SECTION_GFX_ENHANCEMENTS = "Enhancements"; @@ -83,6 +87,8 @@ public final class SettingsFile public static final String KEY_SLOT_A_DEVICE = "SlotA"; public static final String KEY_SLOT_B_DEVICE = "SlotB"; + public static final String KEY_USE_PANIC_HANDLERS = "UsePanicHandlers"; + public static final String KEY_SHOW_FPS = "ShowFPS"; public static final String KEY_INTERNAL_RES = "InternalResolution"; public static final String KEY_FSAA = "MSAA"; diff --git a/Source/Android/app/src/main/res/values/strings.xml b/Source/Android/app/src/main/res/values/strings.xml index 4ee7985427..d593a1af42 100644 --- a/Source/Android/app/src/main/res/values/strings.xml +++ b/Source/Android/app/src/main/res/values/strings.xml @@ -108,7 +108,8 @@ Dial Crossfade - + + General CPU Core %s Dual Core @@ -126,13 +127,18 @@ Audio Stretching Stretches audio to reduce stuttering. Increases latency. + + Interface + Use Panic Handlers + Show a message box when a potentially serious error has occurred. Disabling this may avoid annoying and non-fatal messages, but it may result in major crashes having no explanation at all. + Video Backend Select the API used for graphics rendering. Show FPS Show the number of frames rendered per second as a measure of emulation speed. - Enhancements + Enhancements Internal Resolution Specifies the resolution used to render at. A high resolution will improve visual quality a lot but is also quite heavy on performance and might cause glitches in certain games. Full-scene Anti-aliasing @@ -162,7 +168,7 @@ Swap Eyes Swap the left and right eye, mostly useful if you want to view side-by-side cross-eyed. - Hacks + Hacks Embedded Frame Buffer Skip EFB Access from CPU Ignore any requests from the CPU to read/write to the EFB. diff --git a/Source/Core/Core/ConfigManager.cpp b/Source/Core/Core/ConfigManager.cpp index 22cb976620..1dc4f3c23f 100644 --- a/Source/Core/Core/ConfigManager.cpp +++ b/Source/Core/Core/ConfigManager.cpp @@ -806,6 +806,7 @@ void SConfig::LoadDefaults() iLatency = 20; m_audio_stretch = false; m_audio_stretch_max_latency = 80; + bUsePanicHandlers = true; iPosX = INT_MIN; iPosY = INT_MIN;