diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/common/settings.cpp | 2 | ||||
| -rw-r--r-- | src/common/settings.h | 2 | ||||
| -rw-r--r-- | src/core/arm/dynarmic/arm_dynarmic_32.cpp | 2 | ||||
| -rw-r--r-- | src/core/arm/dynarmic/arm_dynarmic_64.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu/CMakeLists.txt | 3 | ||||
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 2 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure.ui | 50 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_cpu.cpp | 18 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_cpu.h | 1 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_cpu.ui | 5 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_cpu_debug.h | 1 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_cpu_debug.ui | 94 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_debug.cpp | 3 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_debug.ui | 63 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_debug_tab.cpp | 38 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_debug_tab.h | 32 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_debug_tab.ui | 52 | ||||
| -rw-r--r-- | src/yuzu/configuration/configure_dialog.cpp | 6 |
18 files changed, 244 insertions, 132 deletions
diff --git a/src/common/settings.cpp b/src/common/settings.cpp index 0061e29cc..e1973af85 100644 --- a/src/common/settings.cpp +++ b/src/common/settings.cpp | |||
| @@ -93,7 +93,7 @@ bool IsGPULevelHigh() { | |||
| 93 | } | 93 | } |
| 94 | 94 | ||
| 95 | bool IsFastmemEnabled() { | 95 | bool IsFastmemEnabled() { |
| 96 | if (values.cpu_accuracy.GetValue() == CPUAccuracy::DebugMode) { | 96 | if (values.cpu_debug_mode) { |
| 97 | return static_cast<bool>(values.cpuopt_fastmem); | 97 | return static_cast<bool>(values.cpuopt_fastmem); |
| 98 | } | 98 | } |
| 99 | return true; | 99 | return true; |
diff --git a/src/common/settings.h b/src/common/settings.h index 9f7e1096b..d2e91a2c9 100644 --- a/src/common/settings.h +++ b/src/common/settings.h | |||
| @@ -34,7 +34,6 @@ enum class CPUAccuracy : u32 { | |||
| 34 | Auto = 0, | 34 | Auto = 0, |
| 35 | Accurate = 1, | 35 | Accurate = 1, |
| 36 | Unsafe = 2, | 36 | Unsafe = 2, |
| 37 | DebugMode = 3, | ||
| 38 | }; | 37 | }; |
| 39 | 38 | ||
| 40 | /** The BasicSetting class is a simple resource manager. It defines a label and default value | 39 | /** The BasicSetting class is a simple resource manager. It defines a label and default value |
| @@ -288,6 +287,7 @@ struct Values { | |||
| 288 | Setting<CPUAccuracy> cpu_accuracy{CPUAccuracy::Auto, "cpu_accuracy"}; | 287 | Setting<CPUAccuracy> cpu_accuracy{CPUAccuracy::Auto, "cpu_accuracy"}; |
| 289 | // TODO: remove cpu_accuracy_first_time, migration setting added 8 July 2021 | 288 | // TODO: remove cpu_accuracy_first_time, migration setting added 8 July 2021 |
| 290 | BasicSetting<bool> cpu_accuracy_first_time{true, "cpu_accuracy_first_time"}; | 289 | BasicSetting<bool> cpu_accuracy_first_time{true, "cpu_accuracy_first_time"}; |
| 290 | BasicSetting<bool> cpu_debug_mode{false, "cpu_debug_mode"}; | ||
| 291 | 291 | ||
| 292 | BasicSetting<bool> cpuopt_page_tables{true, "cpuopt_page_tables"}; | 292 | BasicSetting<bool> cpuopt_page_tables{true, "cpuopt_page_tables"}; |
| 293 | BasicSetting<bool> cpuopt_block_linking{true, "cpuopt_block_linking"}; | 293 | BasicSetting<bool> cpuopt_block_linking{true, "cpuopt_block_linking"}; |
diff --git a/src/core/arm/dynarmic/arm_dynarmic_32.cpp b/src/core/arm/dynarmic/arm_dynarmic_32.cpp index c915bed2e..b0d89c539 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_32.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_32.cpp | |||
| @@ -150,7 +150,7 @@ std::shared_ptr<Dynarmic::A32::Jit> ARM_Dynarmic_32::MakeJit(Common::PageTable* | |||
| 150 | config.far_code_offset = 400_MiB; | 150 | config.far_code_offset = 400_MiB; |
| 151 | 151 | ||
| 152 | // Safe optimizations | 152 | // Safe optimizations |
| 153 | if (Settings::values.cpu_accuracy.GetValue() == Settings::CPUAccuracy::DebugMode) { | 153 | if (Settings::values.cpu_debug_mode) { |
| 154 | if (!Settings::values.cpuopt_page_tables) { | 154 | if (!Settings::values.cpuopt_page_tables) { |
| 155 | config.page_table = nullptr; | 155 | config.page_table = nullptr; |
| 156 | } | 156 | } |
diff --git a/src/core/arm/dynarmic/arm_dynarmic_64.cpp b/src/core/arm/dynarmic/arm_dynarmic_64.cpp index 9c203e4d6..bf27ffe71 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_64.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_64.cpp | |||
| @@ -190,7 +190,7 @@ std::shared_ptr<Dynarmic::A64::Jit> ARM_Dynarmic_64::MakeJit(Common::PageTable* | |||
| 190 | config.far_code_offset = 400_MiB; | 190 | config.far_code_offset = 400_MiB; |
| 191 | 191 | ||
| 192 | // Safe optimizations | 192 | // Safe optimizations |
| 193 | if (Settings::values.cpu_accuracy.GetValue() == Settings::CPUAccuracy::DebugMode) { | 193 | if (Settings::values.cpu_debug_mode) { |
| 194 | if (!Settings::values.cpuopt_page_tables) { | 194 | if (!Settings::values.cpuopt_page_tables) { |
| 195 | config.page_table = nullptr; | 195 | config.page_table = nullptr; |
| 196 | } | 196 | } |
diff --git a/src/yuzu/CMakeLists.txt b/src/yuzu/CMakeLists.txt index 634fe66a5..f870b33b1 100644 --- a/src/yuzu/CMakeLists.txt +++ b/src/yuzu/CMakeLists.txt | |||
| @@ -52,6 +52,9 @@ add_executable(yuzu | |||
| 52 | configuration/configure_debug_controller.cpp | 52 | configuration/configure_debug_controller.cpp |
| 53 | configuration/configure_debug_controller.h | 53 | configuration/configure_debug_controller.h |
| 54 | configuration/configure_debug_controller.ui | 54 | configuration/configure_debug_controller.ui |
| 55 | configuration/configure_debug_tab.cpp | ||
| 56 | configuration/configure_debug_tab.h | ||
| 57 | configuration/configure_debug_tab.ui | ||
| 55 | configuration/configure_dialog.cpp | 58 | configuration/configure_dialog.cpp |
| 56 | configuration/configure_dialog.h | 59 | configuration/configure_dialog.h |
| 57 | configuration/configure_filesystem.cpp | 60 | configuration/configure_filesystem.cpp |
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index 1e77c1e51..e3ed75fe3 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp | |||
| @@ -808,6 +808,7 @@ void Config::ReadCpuValues() { | |||
| 808 | ReadGlobalSetting(Settings::values.cpuopt_unsafe_fastmem_check); | 808 | ReadGlobalSetting(Settings::values.cpuopt_unsafe_fastmem_check); |
| 809 | 809 | ||
| 810 | if (global) { | 810 | if (global) { |
| 811 | ReadBasicSetting(Settings::values.cpu_debug_mode); | ||
| 811 | ReadBasicSetting(Settings::values.cpuopt_page_tables); | 812 | ReadBasicSetting(Settings::values.cpuopt_page_tables); |
| 812 | ReadBasicSetting(Settings::values.cpuopt_block_linking); | 813 | ReadBasicSetting(Settings::values.cpuopt_block_linking); |
| 813 | ReadBasicSetting(Settings::values.cpuopt_return_stack_buffer); | 814 | ReadBasicSetting(Settings::values.cpuopt_return_stack_buffer); |
| @@ -1328,6 +1329,7 @@ void Config::SaveCpuValues() { | |||
| 1328 | WriteGlobalSetting(Settings::values.cpuopt_unsafe_fastmem_check); | 1329 | WriteGlobalSetting(Settings::values.cpuopt_unsafe_fastmem_check); |
| 1329 | 1330 | ||
| 1330 | if (global) { | 1331 | if (global) { |
| 1332 | WriteBasicSetting(Settings::values.cpu_debug_mode); | ||
| 1331 | WriteBasicSetting(Settings::values.cpuopt_page_tables); | 1333 | WriteBasicSetting(Settings::values.cpuopt_page_tables); |
| 1332 | WriteBasicSetting(Settings::values.cpuopt_block_linking); | 1334 | WriteBasicSetting(Settings::values.cpuopt_block_linking); |
| 1333 | WriteBasicSetting(Settings::values.cpuopt_return_stack_buffer); | 1335 | WriteBasicSetting(Settings::values.cpuopt_return_stack_buffer); |
diff --git a/src/yuzu/configuration/configure.ui b/src/yuzu/configuration/configure.ui index f92c3aff3..fca9aed5f 100644 --- a/src/yuzu/configuration/configure.ui +++ b/src/yuzu/configuration/configure.ui | |||
| @@ -41,7 +41,7 @@ | |||
| 41 | <item> | 41 | <item> |
| 42 | <widget class="QTabWidget" name="tabWidget"> | 42 | <widget class="QTabWidget" name="tabWidget"> |
| 43 | <property name="currentIndex"> | 43 | <property name="currentIndex"> |
| 44 | <number>0</number> | 44 | <number>11</number> |
| 45 | </property> | 45 | </property> |
| 46 | <widget class="ConfigureGeneral" name="generalTab"> | 46 | <widget class="ConfigureGeneral" name="generalTab"> |
| 47 | <property name="accessibleName"> | 47 | <property name="accessibleName"> |
| @@ -107,14 +107,6 @@ | |||
| 107 | <string>CPU</string> | 107 | <string>CPU</string> |
| 108 | </attribute> | 108 | </attribute> |
| 109 | </widget> | 109 | </widget> |
| 110 | <widget class="ConfigureCpuDebug" name="cpuDebugTab"> | ||
| 111 | <property name="accessibleName"> | ||
| 112 | <string>Debug</string> | ||
| 113 | </property> | ||
| 114 | <attribute name="title"> | ||
| 115 | <string>Debug</string> | ||
| 116 | </attribute> | ||
| 117 | </widget> | ||
| 118 | <widget class="ConfigureGraphics" name="graphicsTab"> | 110 | <widget class="ConfigureGraphics" name="graphicsTab"> |
| 119 | <property name="accessibleName"> | 111 | <property name="accessibleName"> |
| 120 | <string>Graphics</string> | 112 | <string>Graphics</string> |
| @@ -139,7 +131,7 @@ | |||
| 139 | <string>Audio</string> | 131 | <string>Audio</string> |
| 140 | </attribute> | 132 | </attribute> |
| 141 | </widget> | 133 | </widget> |
| 142 | <widget class="ConfigureDebug" name="debugTab"> | 134 | <widget class="ConfigureDebugTab" name="debugTab"> |
| 143 | <property name="accessibleName"> | 135 | <property name="accessibleName"> |
| 144 | <string>Debug</string> | 136 | <string>Debug</string> |
| 145 | </property> | 137 | </property> |
| @@ -208,24 +200,12 @@ | |||
| 208 | <container>1</container> | 200 | <container>1</container> |
| 209 | </customwidget> | 201 | </customwidget> |
| 210 | <customwidget> | 202 | <customwidget> |
| 211 | <class>ConfigureDebug</class> | ||
| 212 | <extends>QWidget</extends> | ||
| 213 | <header>configuration/configure_debug.h</header> | ||
| 214 | <container>1</container> | ||
| 215 | </customwidget> | ||
| 216 | <customwidget> | ||
| 217 | <class>ConfigureCpu</class> | 203 | <class>ConfigureCpu</class> |
| 218 | <extends>QWidget</extends> | 204 | <extends>QWidget</extends> |
| 219 | <header>configuration/configure_cpu.h</header> | 205 | <header>configuration/configure_cpu.h</header> |
| 220 | <container>1</container> | 206 | <container>1</container> |
| 221 | </customwidget> | 207 | </customwidget> |
| 222 | <customwidget> | 208 | <customwidget> |
| 223 | <class>ConfigureCpuDebug</class> | ||
| 224 | <extends>QWidget</extends> | ||
| 225 | <header>configuration/configure_cpu_debug.h</header> | ||
| 226 | <container>1</container> | ||
| 227 | </customwidget> | ||
| 228 | <customwidget> | ||
| 229 | <class>ConfigureGraphics</class> | 209 | <class>ConfigureGraphics</class> |
| 230 | <extends>QWidget</extends> | 210 | <extends>QWidget</extends> |
| 231 | <header>configuration/configure_graphics.h</header> | 211 | <header>configuration/configure_graphics.h</header> |
| @@ -267,6 +247,12 @@ | |||
| 267 | <header>configuration/configure_service.h</header> | 247 | <header>configuration/configure_service.h</header> |
| 268 | <container>1</container> | 248 | <container>1</container> |
| 269 | </customwidget> | 249 | </customwidget> |
| 250 | <customwidget> | ||
| 251 | <class>ConfigureDebugTab</class> | ||
| 252 | <extends>QWidget</extends> | ||
| 253 | <header>configuration/configure_debug_tab.h</header> | ||
| 254 | <container>1</container> | ||
| 255 | </customwidget> | ||
| 270 | </customwidgets> | 256 | </customwidgets> |
| 271 | <resources/> | 257 | <resources/> |
| 272 | <connections> | 258 | <connections> |
| @@ -275,12 +261,32 @@ | |||
| 275 | <signal>accepted()</signal> | 261 | <signal>accepted()</signal> |
| 276 | <receiver>ConfigureDialog</receiver> | 262 | <receiver>ConfigureDialog</receiver> |
| 277 | <slot>accept()</slot> | 263 | <slot>accept()</slot> |
| 264 | <hints> | ||
| 265 | <hint type="sourcelabel"> | ||
| 266 | <x>20</x> | ||
| 267 | <y>20</y> | ||
| 268 | </hint> | ||
| 269 | <hint type="destinationlabel"> | ||
| 270 | <x>20</x> | ||
| 271 | <y>20</y> | ||
| 272 | </hint> | ||
| 273 | </hints> | ||
| 278 | </connection> | 274 | </connection> |
| 279 | <connection> | 275 | <connection> |
| 280 | <sender>buttonBox</sender> | 276 | <sender>buttonBox</sender> |
| 281 | <signal>rejected()</signal> | 277 | <signal>rejected()</signal> |
| 282 | <receiver>ConfigureDialog</receiver> | 278 | <receiver>ConfigureDialog</receiver> |
| 283 | <slot>reject()</slot> | 279 | <slot>reject()</slot> |
| 280 | <hints> | ||
| 281 | <hint type="sourcelabel"> | ||
| 282 | <x>20</x> | ||
| 283 | <y>20</y> | ||
| 284 | </hint> | ||
| 285 | <hint type="destinationlabel"> | ||
| 286 | <x>20</x> | ||
| 287 | <y>20</y> | ||
| 288 | </hint> | ||
| 289 | </hints> | ||
| 284 | </connection> | 290 | </connection> |
| 285 | </connections> | 291 | </connections> |
| 286 | </ui> | 292 | </ui> |
diff --git a/src/yuzu/configuration/configure_cpu.cpp b/src/yuzu/configuration/configure_cpu.cpp index 13db2ba98..8d7171487 100644 --- a/src/yuzu/configuration/configure_cpu.cpp +++ b/src/yuzu/configuration/configure_cpu.cpp | |||
| @@ -20,8 +20,6 @@ ConfigureCpu::ConfigureCpu(QWidget* parent) : QWidget(parent), ui(new Ui::Config | |||
| 20 | 20 | ||
| 21 | SetConfiguration(); | 21 | SetConfiguration(); |
| 22 | 22 | ||
| 23 | connect(ui->accuracy, qOverload<int>(&QComboBox::activated), this, | ||
| 24 | &ConfigureCpu::AccuracyUpdated); | ||
| 25 | connect(ui->accuracy, qOverload<int>(&QComboBox::currentIndexChanged), this, | 23 | connect(ui->accuracy, qOverload<int>(&QComboBox::currentIndexChanged), this, |
| 26 | &ConfigureCpu::UpdateGroup); | 24 | &ConfigureCpu::UpdateGroup); |
| 27 | } | 25 | } |
| @@ -58,20 +56,6 @@ void ConfigureCpu::SetConfiguration() { | |||
| 58 | UpdateGroup(ui->accuracy->currentIndex()); | 56 | UpdateGroup(ui->accuracy->currentIndex()); |
| 59 | } | 57 | } |
| 60 | 58 | ||
| 61 | void ConfigureCpu::AccuracyUpdated(int index) { | ||
| 62 | if (Settings::IsConfiguringGlobal() && | ||
| 63 | static_cast<Settings::CPUAccuracy>(index) == Settings::CPUAccuracy::DebugMode) { | ||
| 64 | const auto result = QMessageBox::warning(this, tr("Setting CPU to Debug Mode"), | ||
| 65 | tr("CPU Debug Mode is only intended for developer " | ||
| 66 | "use. Are you sure you want to enable this?"), | ||
| 67 | QMessageBox::Yes | QMessageBox::No); | ||
| 68 | if (result == QMessageBox::No) { | ||
| 69 | ui->accuracy->setCurrentIndex(static_cast<int>(Settings::CPUAccuracy::Accurate)); | ||
| 70 | UpdateGroup(static_cast<int>(Settings::CPUAccuracy::Accurate)); | ||
| 71 | } | ||
| 72 | } | ||
| 73 | } | ||
| 74 | |||
| 75 | void ConfigureCpu::UpdateGroup(int index) { | 59 | void ConfigureCpu::UpdateGroup(int index) { |
| 76 | if (!Settings::IsConfiguringGlobal()) { | 60 | if (!Settings::IsConfiguringGlobal()) { |
| 77 | index -= ConfigurationShared::USE_GLOBAL_OFFSET; | 61 | index -= ConfigurationShared::USE_GLOBAL_OFFSET; |
| @@ -134,8 +118,6 @@ void ConfigureCpu::SetupPerGameUI() { | |||
| 134 | ConfigurationShared::SetColoredComboBox( | 118 | ConfigurationShared::SetColoredComboBox( |
| 135 | ui->accuracy, ui->widget_accuracy, | 119 | ui->accuracy, ui->widget_accuracy, |
| 136 | static_cast<u32>(Settings::values.cpu_accuracy.GetValue(true))); | 120 | static_cast<u32>(Settings::values.cpu_accuracy.GetValue(true))); |
| 137 | ui->accuracy->removeItem(static_cast<u32>(Settings::CPUAccuracy::DebugMode) + | ||
| 138 | ConfigurationShared::USE_GLOBAL_OFFSET); | ||
| 139 | 121 | ||
| 140 | ConfigurationShared::SetColoredTristate(ui->cpuopt_unsafe_unfuse_fma, | 122 | ConfigurationShared::SetColoredTristate(ui->cpuopt_unsafe_unfuse_fma, |
| 141 | Settings::values.cpuopt_unsafe_unfuse_fma, | 123 | Settings::values.cpuopt_unsafe_unfuse_fma, |
diff --git a/src/yuzu/configuration/configure_cpu.h b/src/yuzu/configuration/configure_cpu.h index b2b5f1671..154931482 100644 --- a/src/yuzu/configuration/configure_cpu.h +++ b/src/yuzu/configuration/configure_cpu.h | |||
| @@ -29,7 +29,6 @@ private: | |||
| 29 | void changeEvent(QEvent* event) override; | 29 | void changeEvent(QEvent* event) override; |
| 30 | void RetranslateUI(); | 30 | void RetranslateUI(); |
| 31 | 31 | ||
| 32 | void AccuracyUpdated(int index); | ||
| 33 | void UpdateGroup(int index); | 32 | void UpdateGroup(int index); |
| 34 | 33 | ||
| 35 | void SetConfiguration(); | 34 | void SetConfiguration(); |
diff --git a/src/yuzu/configuration/configure_cpu.ui b/src/yuzu/configuration/configure_cpu.ui index 49e30bdbb..5b9457faf 100644 --- a/src/yuzu/configuration/configure_cpu.ui +++ b/src/yuzu/configuration/configure_cpu.ui | |||
| @@ -49,11 +49,6 @@ | |||
| 49 | <string>Unsafe</string> | 49 | <string>Unsafe</string> |
| 50 | </property> | 50 | </property> |
| 51 | </item> | 51 | </item> |
| 52 | <item> | ||
| 53 | <property name="text"> | ||
| 54 | <string>Enable Debug Mode</string> | ||
| 55 | </property> | ||
| 56 | </item> | ||
| 57 | </widget> | 52 | </widget> |
| 58 | </item> | 53 | </item> |
| 59 | </layout> | 54 | </layout> |
diff --git a/src/yuzu/configuration/configure_cpu_debug.h b/src/yuzu/configuration/configure_cpu_debug.h index 10de55099..1b0d8050c 100644 --- a/src/yuzu/configuration/configure_cpu_debug.h +++ b/src/yuzu/configuration/configure_cpu_debug.h | |||
| @@ -6,7 +6,6 @@ | |||
| 6 | 6 | ||
| 7 | #include <memory> | 7 | #include <memory> |
| 8 | #include <QWidget> | 8 | #include <QWidget> |
| 9 | #include "common/settings.h" | ||
| 10 | 9 | ||
| 11 | namespace Ui { | 10 | namespace Ui { |
| 12 | class ConfigureCpuDebug; | 11 | class ConfigureCpuDebug; |
diff --git a/src/yuzu/configuration/configure_cpu_debug.ui b/src/yuzu/configuration/configure_cpu_debug.ui index c43f89a5a..abf469b55 100644 --- a/src/yuzu/configuration/configure_cpu_debug.ui +++ b/src/yuzu/configuration/configure_cpu_debug.ui | |||
| @@ -6,8 +6,8 @@ | |||
| 6 | <rect> | 6 | <rect> |
| 7 | <x>0</x> | 7 | <x>0</x> |
| 8 | <y>0</y> | 8 | <y>0</y> |
| 9 | <width>400</width> | 9 | <width>592</width> |
| 10 | <height>321</height> | 10 | <height>503</height> |
| 11 | </rect> | 11 | </rect> |
| 12 | </property> | 12 | </property> |
| 13 | <property name="windowTitle"> | 13 | <property name="windowTitle"> |
| @@ -17,140 +17,132 @@ | |||
| 17 | <item> | 17 | <item> |
| 18 | <layout class="QVBoxLayout"> | 18 | <layout class="QVBoxLayout"> |
| 19 | <item> | 19 | <item> |
| 20 | <widget class="QGroupBox"> | 20 | <widget class="QGroupBox" name="groupBox"> |
| 21 | <property name="title"> | 21 | <property name="title"> |
| 22 | <string>Toggle CPU Optimizations</string> | 22 | <string>Toggle CPU Optimizations</string> |
| 23 | </property> | 23 | </property> |
| 24 | <layout class="QVBoxLayout"> | 24 | <layout class="QVBoxLayout"> |
| 25 | <item> | 25 | <item> |
| 26 | <widget class="QLabel"> | 26 | <widget class="QLabel" name="label"> |
| 27 | <property name="wordWrap"> | ||
| 28 | <bool>1</bool> | ||
| 29 | </property> | ||
| 30 | <property name="text"> | 27 | <property name="text"> |
| 31 | <string> | 28 | <string><html><head/><body><p><span style=" font-weight:600;">For debugging only.</span><br/>If you're not sure what these do, keep all of these enabled. <br/>These settings, when disabled, only take effect when CPU Debugging is enabled. </p></body></html></string> |
| 32 | <div> | 29 | </property> |
| 33 | <b>For debugging only.</b> | 30 | <property name="wordWrap"> |
| 34 | <br> | 31 | <bool>false</bool> |
| 35 | If you're not sure what these do, keep all of these enabled. | ||
| 36 | <br> | ||
| 37 | These settings, when disabled, only take effect when CPU Accuracy is "Debug Mode". | ||
| 38 | </div> | ||
| 39 | </string> | ||
| 40 | </property> | 32 | </property> |
| 41 | </widget> | 33 | </widget> |
| 42 | </item> | 34 | </item> |
| 43 | <item> | 35 | <item> |
| 44 | <widget class="QCheckBox" name="cpuopt_page_tables"> | 36 | <widget class="QCheckBox" name="cpuopt_page_tables"> |
| 45 | <property name="text"> | ||
| 46 | <string>Enable inline page tables</string> | ||
| 47 | </property> | ||
| 48 | <property name="toolTip"> | 37 | <property name="toolTip"> |
| 49 | <string> | 38 | <string> |
| 50 | <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> | 39 | <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> |
| 51 | <div style="white-space: nowrap">Enabling it inlines accesses to PageTable::pointers into emitted code.</div> | 40 | <div style="white-space: nowrap">Enabling it inlines accesses to PageTable::pointers into emitted code.</div> |
| 52 | <div style="white-space: nowrap">Disabling this forces all memory accesses to go through the Memory::Read/Memory::Write functions.</div> | 41 | <div style="white-space: nowrap">Disabling this forces all memory accesses to go through the Memory::Read/Memory::Write functions.</div> |
| 53 | </string> | 42 | </string> |
| 54 | </property> | 43 | </property> |
| 44 | <property name="text"> | ||
| 45 | <string>Enable inline page tables</string> | ||
| 46 | </property> | ||
| 55 | </widget> | 47 | </widget> |
| 56 | </item> | 48 | </item> |
| 57 | <item> | 49 | <item> |
| 58 | <widget class="QCheckBox" name="cpuopt_block_linking"> | 50 | <widget class="QCheckBox" name="cpuopt_block_linking"> |
| 59 | <property name="text"> | ||
| 60 | <string>Enable block linking</string> | ||
| 61 | </property> | ||
| 62 | <property name="toolTip"> | 51 | <property name="toolTip"> |
| 63 | <string> | 52 | <string> |
| 64 | <div>This optimization avoids dispatcher lookups by allowing emitted basic blocks to jump directly to other basic blocks if the destination PC is static.</div> | 53 | <div>This optimization avoids dispatcher lookups by allowing emitted basic blocks to jump directly to other basic blocks if the destination PC is static.</div> |
| 65 | </string> | 54 | </string> |
| 66 | </property> | 55 | </property> |
| 56 | <property name="text"> | ||
| 57 | <string>Enable block linking</string> | ||
| 58 | </property> | ||
| 67 | </widget> | 59 | </widget> |
| 68 | </item> | 60 | </item> |
| 69 | <item> | 61 | <item> |
| 70 | <widget class="QCheckBox" name="cpuopt_return_stack_buffer"> | 62 | <widget class="QCheckBox" name="cpuopt_return_stack_buffer"> |
| 71 | <property name="text"> | ||
| 72 | <string>Enable return stack buffer</string> | ||
| 73 | </property> | ||
| 74 | <property name="toolTip"> | 63 | <property name="toolTip"> |
| 75 | <string> | 64 | <string> |
| 76 | <div>This optimization avoids dispatcher lookups by keeping track potential return addresses of BL instructions. This approximates what happens with a return stack buffer on a real CPU.</div> | 65 | <div>This optimization avoids dispatcher lookups by keeping track potential return addresses of BL instructions. This approximates what happens with a return stack buffer on a real CPU.</div> |
| 77 | </string> | 66 | </string> |
| 78 | </property> | 67 | </property> |
| 68 | <property name="text"> | ||
| 69 | <string>Enable return stack buffer</string> | ||
| 70 | </property> | ||
| 79 | </widget> | 71 | </widget> |
| 80 | </item> | 72 | </item> |
| 81 | <item> | 73 | <item> |
| 82 | <widget class="QCheckBox" name="cpuopt_fast_dispatcher"> | 74 | <widget class="QCheckBox" name="cpuopt_fast_dispatcher"> |
| 83 | <property name="text"> | ||
| 84 | <string>Enable fast dispatcher</string> | ||
| 85 | </property> | ||
| 86 | <property name="toolTip"> | 75 | <property name="toolTip"> |
| 87 | <string> | 76 | <string> |
| 88 | <div>Enable a two-tiered dispatch system. A faster dispatcher written in assembly has a small MRU cache of jump destinations is used first. If that fails, dispatch falls back to the slower C++ dispatcher.</div> | 77 | <div>Enable a two-tiered dispatch system. A faster dispatcher written in assembly has a small MRU cache of jump destinations is used first. If that fails, dispatch falls back to the slower C++ dispatcher.</div> |
| 89 | </string> | 78 | </string> |
| 90 | </property> | 79 | </property> |
| 80 | <property name="text"> | ||
| 81 | <string>Enable fast dispatcher</string> | ||
| 82 | </property> | ||
| 91 | </widget> | 83 | </widget> |
| 92 | </item> | 84 | </item> |
| 93 | <item> | 85 | <item> |
| 94 | <widget class="QCheckBox" name="cpuopt_context_elimination"> | 86 | <widget class="QCheckBox" name="cpuopt_context_elimination"> |
| 95 | <property name="text"> | ||
| 96 | <string>Enable context elimination</string> | ||
| 97 | </property> | ||
| 98 | <property name="toolTip"> | 87 | <property name="toolTip"> |
| 99 | <string> | 88 | <string> |
| 100 | <div>Enables an IR optimization that reduces unnecessary accesses to the CPU context structure.</div> | 89 | <div>Enables an IR optimization that reduces unnecessary accesses to the CPU context structure.</div> |
| 101 | </string> | 90 | </string> |
| 102 | </property> | 91 | </property> |
| 92 | <property name="text"> | ||
| 93 | <string>Enable context elimination</string> | ||
| 94 | </property> | ||
| 103 | </widget> | 95 | </widget> |
| 104 | </item> | 96 | </item> |
| 105 | <item> | 97 | <item> |
| 106 | <widget class="QCheckBox" name="cpuopt_const_prop"> | 98 | <widget class="QCheckBox" name="cpuopt_const_prop"> |
| 107 | <property name="text"> | ||
| 108 | <string>Enable constant propagation</string> | ||
| 109 | </property> | ||
| 110 | <property name="toolTip"> | 99 | <property name="toolTip"> |
| 111 | <string> | 100 | <string> |
| 112 | <div>Enables IR optimizations that involve constant propagation.</div> | 101 | <div>Enables IR optimizations that involve constant propagation.</div> |
| 113 | </string> | 102 | </string> |
| 114 | </property> | 103 | </property> |
| 104 | <property name="text"> | ||
| 105 | <string>Enable constant propagation</string> | ||
| 106 | </property> | ||
| 115 | </widget> | 107 | </widget> |
| 116 | </item> | 108 | </item> |
| 117 | <item> | 109 | <item> |
| 118 | <widget class="QCheckBox" name="cpuopt_misc_ir"> | 110 | <widget class="QCheckBox" name="cpuopt_misc_ir"> |
| 119 | <property name="text"> | ||
| 120 | <string>Enable miscellaneous optimizations</string> | ||
| 121 | </property> | ||
| 122 | <property name="toolTip"> | 111 | <property name="toolTip"> |
| 123 | <string> | 112 | <string> |
| 124 | <div>Enables miscellaneous IR optimizations.</div> | 113 | <div>Enables miscellaneous IR optimizations.</div> |
| 125 | </string> | 114 | </string> |
| 126 | </property> | 115 | </property> |
| 116 | <property name="text"> | ||
| 117 | <string>Enable miscellaneous optimizations</string> | ||
| 118 | </property> | ||
| 127 | </widget> | 119 | </widget> |
| 128 | </item> | 120 | </item> |
| 129 | <item> | 121 | <item> |
| 130 | <widget class="QCheckBox" name="cpuopt_reduce_misalign_checks"> | 122 | <widget class="QCheckBox" name="cpuopt_reduce_misalign_checks"> |
| 131 | <property name="text"> | ||
| 132 | <string>Enable misalignment check reduction</string> | ||
| 133 | </property> | ||
| 134 | <property name="toolTip"> | 123 | <property name="toolTip"> |
| 135 | <string> | 124 | <string> |
| 136 | <div style="white-space: nowrap">When enabled, a misalignment is only triggered when an access crosses a page boundary.</div> | 125 | <div style="white-space: nowrap">When enabled, a misalignment is only triggered when an access crosses a page boundary.</div> |
| 137 | <div style="white-space: nowrap">When disabled, a misalignment is triggered on all misaligned accesses.</div> | 126 | <div style="white-space: nowrap">When disabled, a misalignment is triggered on all misaligned accesses.</div> |
| 138 | </string> | 127 | </string> |
| 139 | </property> | 128 | </property> |
| 129 | <property name="text"> | ||
| 130 | <string>Enable misalignment check reduction</string> | ||
| 131 | </property> | ||
| 140 | </widget> | 132 | </widget> |
| 141 | </item> | 133 | </item> |
| 142 | <item> | 134 | <item> |
| 143 | <widget class="QCheckBox" name="cpuopt_fastmem"> | 135 | <widget class="QCheckBox" name="cpuopt_fastmem"> |
| 144 | <property name="text"> | ||
| 145 | <string>Enable Host MMU Emulation</string> | ||
| 146 | </property> | ||
| 147 | <property name="toolTip"> | 136 | <property name="toolTip"> |
| 148 | <string> | 137 | <string> |
| 149 | <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> | 138 | <div style="white-space: nowrap">This optimization speeds up memory accesses by the guest program.</div> |
| 150 | <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> | 139 | <div style="white-space: nowrap">Enabling it causes guest memory reads/writes to be done directly into memory and make use of Host's MMU.</div> |
| 151 | <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> | 140 | <div style="white-space: nowrap">Disabling this forces all memory accesses to use Software MMU Emulation.</div> |
| 152 | </string> | 141 | </string> |
| 153 | </property> | 142 | </property> |
| 143 | <property name="text"> | ||
| 144 | <string>Enable Host MMU Emulation</string> | ||
| 145 | </property> | ||
| 154 | </widget> | 146 | </widget> |
| 155 | </item> | 147 | </item> |
| 156 | </layout> | 148 | </layout> |
diff --git a/src/yuzu/configuration/configure_debug.cpp b/src/yuzu/configuration/configure_debug.cpp index cbe45a305..8fceb3878 100644 --- a/src/yuzu/configuration/configure_debug.cpp +++ b/src/yuzu/configuration/configure_debug.cpp | |||
| @@ -43,6 +43,8 @@ void ConfigureDebug::SetConfiguration() { | |||
| 43 | ui->use_auto_stub->setChecked(Settings::values.use_auto_stub.GetValue()); | 43 | ui->use_auto_stub->setChecked(Settings::values.use_auto_stub.GetValue()); |
| 44 | ui->enable_graphics_debugging->setEnabled(runtime_lock); | 44 | ui->enable_graphics_debugging->setEnabled(runtime_lock); |
| 45 | ui->enable_graphics_debugging->setChecked(Settings::values.renderer_debug.GetValue()); | 45 | ui->enable_graphics_debugging->setChecked(Settings::values.renderer_debug.GetValue()); |
| 46 | ui->enable_cpu_debugging->setEnabled(runtime_lock); | ||
| 47 | ui->enable_cpu_debugging->setChecked(Settings::values.cpu_debug_mode.GetValue()); | ||
| 46 | ui->disable_macro_jit->setEnabled(runtime_lock); | 48 | ui->disable_macro_jit->setEnabled(runtime_lock); |
| 47 | ui->disable_macro_jit->setChecked(Settings::values.disable_macro_jit.GetValue()); | 49 | ui->disable_macro_jit->setChecked(Settings::values.disable_macro_jit.GetValue()); |
| 48 | ui->extended_logging->setChecked(Settings::values.extended_logging.GetValue()); | 50 | ui->extended_logging->setChecked(Settings::values.extended_logging.GetValue()); |
| @@ -58,6 +60,7 @@ void ConfigureDebug::ApplyConfiguration() { | |||
| 58 | Settings::values.use_debug_asserts = ui->use_debug_asserts->isChecked(); | 60 | Settings::values.use_debug_asserts = ui->use_debug_asserts->isChecked(); |
| 59 | Settings::values.use_auto_stub = ui->use_auto_stub->isChecked(); | 61 | Settings::values.use_auto_stub = ui->use_auto_stub->isChecked(); |
| 60 | Settings::values.renderer_debug = ui->enable_graphics_debugging->isChecked(); | 62 | Settings::values.renderer_debug = ui->enable_graphics_debugging->isChecked(); |
| 63 | Settings::values.cpu_debug_mode = ui->enable_cpu_debugging->isChecked(); | ||
| 61 | Settings::values.disable_macro_jit = ui->disable_macro_jit->isChecked(); | 64 | Settings::values.disable_macro_jit = ui->disable_macro_jit->isChecked(); |
| 62 | Settings::values.extended_logging = ui->extended_logging->isChecked(); | 65 | Settings::values.extended_logging = ui->extended_logging->isChecked(); |
| 63 | Debugger::ToggleConsole(); | 66 | Debugger::ToggleConsole(); |
diff --git a/src/yuzu/configuration/configure_debug.ui b/src/yuzu/configuration/configure_debug.ui index c8087542f..1260ad6f0 100644 --- a/src/yuzu/configuration/configure_debug.ui +++ b/src/yuzu/configuration/configure_debug.ui | |||
| @@ -7,7 +7,7 @@ | |||
| 7 | <x>0</x> | 7 | <x>0</x> |
| 8 | <y>0</y> | 8 | <y>0</y> |
| 9 | <width>400</width> | 9 | <width>400</width> |
| 10 | <height>486</height> | 10 | <height>777</height> |
| 11 | </rect> | 11 | </rect> |
| 12 | </property> | 12 | </property> |
| 13 | <property name="windowTitle"> | 13 | <property name="windowTitle"> |
| @@ -192,34 +192,41 @@ | |||
| 192 | </property> | 192 | </property> |
| 193 | </widget> | 193 | </widget> |
| 194 | </item> | 194 | </item> |
| 195 | <item> | ||
| 196 | <widget class="QCheckBox" name="use_debug_asserts"> | ||
| 197 | <property name="text"> | ||
| 198 | <string>Enable Debug Asserts</string> | ||
| 199 | </property> | ||
| 200 | </widget> | ||
| 201 | </item> | ||
| 202 | <item> | ||
| 203 | <widget class="QCheckBox" name="use_auto_stub"> | ||
| 204 | <property name="text"> | ||
| 205 | <string>Enable Auto-Stub</string> | ||
| 206 | </property> | ||
| 207 | </widget> | ||
| 208 | </item> | ||
| 209 | <item> | 195 | <item> |
| 210 | <widget class="QLabel" name="label_5"> | 196 | <widget class="QCheckBox" name="enable_cpu_debugging"> |
| 211 | <property name="font"> | 197 | <property name="text"> |
| 212 | <font> | 198 | <string>Enable CPU Debugging</string> |
| 213 | <italic>true</italic> | 199 | </property> |
| 214 | </font> | 200 | </widget> |
| 215 | </property> | 201 | </item> |
| 216 | <property name="text"> | 202 | <item> |
| 217 | <string>This will be reset automatically when yuzu closes.</string> | 203 | <widget class="QCheckBox" name="use_debug_asserts"> |
| 218 | </property> | 204 | <property name="text"> |
| 219 | <property name="indent"> | 205 | <string>Enable Debug Asserts</string> |
| 220 | <number>20</number> | 206 | </property> |
| 221 | </property> | 207 | </widget> |
| 222 | </widget> | 208 | </item> |
| 209 | <item> | ||
| 210 | <widget class="QCheckBox" name="use_auto_stub"> | ||
| 211 | <property name="text"> | ||
| 212 | <string>Enable Auto-Stub</string> | ||
| 213 | </property> | ||
| 214 | </widget> | ||
| 215 | </item> | ||
| 216 | <item> | ||
| 217 | <widget class="QLabel" name="label_5"> | ||
| 218 | <property name="font"> | ||
| 219 | <font> | ||
| 220 | <italic>true</italic> | ||
| 221 | </font> | ||
| 222 | </property> | ||
| 223 | <property name="text"> | ||
| 224 | <string>This will be reset automatically when yuzu closes.</string> | ||
| 225 | </property> | ||
| 226 | <property name="indent"> | ||
| 227 | <number>20</number> | ||
| 228 | </property> | ||
| 229 | </widget> | ||
| 223 | </item> | 230 | </item> |
| 224 | </layout> | 231 | </layout> |
| 225 | </widget> | 232 | </widget> |
diff --git a/src/yuzu/configuration/configure_debug_tab.cpp b/src/yuzu/configuration/configure_debug_tab.cpp new file mode 100644 index 000000000..67d369249 --- /dev/null +++ b/src/yuzu/configuration/configure_debug_tab.cpp | |||
| @@ -0,0 +1,38 @@ | |||
| 1 | // Copyright 2021 yuzu Emulator Project | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #include "ui_configure_debug_tab.h" | ||
| 6 | #include "yuzu/configuration/configure_debug_tab.h" | ||
| 7 | |||
| 8 | ConfigureDebugTab::ConfigureDebugTab(QWidget* parent) | ||
| 9 | : QWidget(parent), ui(new Ui::ConfigureDebugTab) { | ||
| 10 | ui->setupUi(this); | ||
| 11 | |||
| 12 | SetConfiguration(); | ||
| 13 | } | ||
| 14 | |||
| 15 | ConfigureDebugTab::~ConfigureDebugTab() = default; | ||
| 16 | |||
| 17 | void ConfigureDebugTab::ApplyConfiguration() { | ||
| 18 | ui->debugTab->ApplyConfiguration(); | ||
| 19 | ui->cpuDebugTab->ApplyConfiguration(); | ||
| 20 | } | ||
| 21 | |||
| 22 | void ConfigureDebugTab::SetCurrentIndex(int index) { | ||
| 23 | ui->tabWidget->setCurrentIndex(index); | ||
| 24 | } | ||
| 25 | |||
| 26 | void ConfigureDebugTab::changeEvent(QEvent* event) { | ||
| 27 | if (event->type() == QEvent::LanguageChange) { | ||
| 28 | RetranslateUI(); | ||
| 29 | } | ||
| 30 | |||
| 31 | QWidget::changeEvent(event); | ||
| 32 | } | ||
| 33 | |||
| 34 | void ConfigureDebugTab::RetranslateUI() { | ||
| 35 | ui->retranslateUi(this); | ||
| 36 | } | ||
| 37 | |||
| 38 | void ConfigureDebugTab::SetConfiguration() {} | ||
diff --git a/src/yuzu/configuration/configure_debug_tab.h b/src/yuzu/configuration/configure_debug_tab.h new file mode 100644 index 000000000..0a96d43d0 --- /dev/null +++ b/src/yuzu/configuration/configure_debug_tab.h | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | // Copyright 2021 yuzu Emulator Project | ||
| 2 | // Licensed under GPLv2 or any later version | ||
| 3 | // Refer to the license.txt file included. | ||
| 4 | |||
| 5 | #pragma once | ||
| 6 | |||
| 7 | #include <memory> | ||
| 8 | #include <QWidget> | ||
| 9 | |||
| 10 | namespace Ui { | ||
| 11 | class ConfigureDebugTab; | ||
| 12 | } | ||
| 13 | |||
| 14 | class ConfigureDebugTab : public QWidget { | ||
| 15 | Q_OBJECT | ||
| 16 | |||
| 17 | public: | ||
| 18 | explicit ConfigureDebugTab(QWidget* parent = nullptr); | ||
| 19 | ~ConfigureDebugTab() override; | ||
| 20 | |||
| 21 | void ApplyConfiguration(); | ||
| 22 | |||
| 23 | void SetCurrentIndex(int index); | ||
| 24 | |||
| 25 | private: | ||
| 26 | void changeEvent(QEvent* event) override; | ||
| 27 | void RetranslateUI(); | ||
| 28 | |||
| 29 | void SetConfiguration(); | ||
| 30 | |||
| 31 | std::unique_ptr<Ui::ConfigureDebugTab> ui; | ||
| 32 | }; | ||
diff --git a/src/yuzu/configuration/configure_debug_tab.ui b/src/yuzu/configuration/configure_debug_tab.ui new file mode 100644 index 000000000..7dc6dd704 --- /dev/null +++ b/src/yuzu/configuration/configure_debug_tab.ui | |||
| @@ -0,0 +1,52 @@ | |||
| 1 | <?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | <ui version="4.0"> | ||
| 3 | <class>ConfigureDebugTab</class> | ||
| 4 | <widget class="QWidget" name="ConfigureDebugTab"> | ||
| 5 | <property name="geometry"> | ||
| 6 | <rect> | ||
| 7 | <x>0</x> | ||
| 8 | <y>0</y> | ||
| 9 | <width>320</width> | ||
| 10 | <height>240</height> | ||
| 11 | </rect> | ||
| 12 | </property> | ||
| 13 | <property name="windowTitle"> | ||
| 14 | <string>Form</string> | ||
| 15 | </property> | ||
| 16 | <layout class="QVBoxLayout" name="verticalLayout"> | ||
| 17 | <item> | ||
| 18 | <widget class="QTabWidget" name="tabWidget"> | ||
| 19 | <property name="currentIndex"> | ||
| 20 | <number>1</number> | ||
| 21 | </property> | ||
| 22 | <widget class="ConfigureDebug" name="debugTab"> | ||
| 23 | <attribute name="title"> | ||
| 24 | <string>General</string> | ||
| 25 | </attribute> | ||
| 26 | </widget> | ||
| 27 | <widget class="ConfigureCpuDebug" name="cpuDebugTab"> | ||
| 28 | <attribute name="title"> | ||
| 29 | <string>CPU</string> | ||
| 30 | </attribute> | ||
| 31 | </widget> | ||
| 32 | </widget> | ||
| 33 | </item> | ||
| 34 | </layout> | ||
| 35 | </widget> | ||
| 36 | <customwidgets> | ||
| 37 | <customwidget> | ||
| 38 | <class>ConfigureDebug</class> | ||
| 39 | <extends>QWidget</extends> | ||
| 40 | <header>configuration/configure_debug.h</header> | ||
| 41 | <container>1</container> | ||
| 42 | </customwidget> | ||
| 43 | <customwidget> | ||
| 44 | <class>ConfigureCpuDebug</class> | ||
| 45 | <extends>QWidget</extends> | ||
| 46 | <header>configuration/configure_cpu_debug.h</header> | ||
| 47 | <container>1</container> | ||
| 48 | </customwidget> | ||
| 49 | </customwidgets> | ||
| 50 | <resources/> | ||
| 51 | <connections/> | ||
| 52 | </ui> | ||
diff --git a/src/yuzu/configuration/configure_dialog.cpp b/src/yuzu/configuration/configure_dialog.cpp index 371bc01b1..bc009b6b3 100644 --- a/src/yuzu/configuration/configure_dialog.cpp +++ b/src/yuzu/configuration/configure_dialog.cpp | |||
| @@ -8,6 +8,7 @@ | |||
| 8 | #include <QListWidgetItem> | 8 | #include <QListWidgetItem> |
| 9 | #include <QPushButton> | 9 | #include <QPushButton> |
| 10 | #include <QSignalBlocker> | 10 | #include <QSignalBlocker> |
| 11 | #include <QTabWidget> | ||
| 11 | #include "common/settings.h" | 12 | #include "common/settings.h" |
| 12 | #include "core/core.h" | 13 | #include "core/core.h" |
| 13 | #include "ui_configure.h" | 14 | #include "ui_configure.h" |
| @@ -32,6 +33,8 @@ ConfigureDialog::ConfigureDialog(QWidget* parent, HotkeyRegistry& registry, | |||
| 32 | SetConfiguration(); | 33 | SetConfiguration(); |
| 33 | PopulateSelectionList(); | 34 | PopulateSelectionList(); |
| 34 | 35 | ||
| 36 | connect(ui->tabWidget, &QTabWidget::currentChanged, this, | ||
| 37 | [this]() { ui->debugTab->SetCurrentIndex(0); }); | ||
| 35 | connect(ui->uiTab, &ConfigureUi::LanguageChanged, this, &ConfigureDialog::OnLanguageChanged); | 38 | connect(ui->uiTab, &ConfigureUi::LanguageChanged, this, &ConfigureDialog::OnLanguageChanged); |
| 36 | connect(ui->selectorList, &QListWidget::itemSelectionChanged, this, | 39 | connect(ui->selectorList, &QListWidget::itemSelectionChanged, this, |
| 37 | &ConfigureDialog::UpdateVisibleTabs); | 40 | &ConfigureDialog::UpdateVisibleTabs); |
| @@ -59,7 +62,6 @@ void ConfigureDialog::ApplyConfiguration() { | |||
| 59 | ui->inputTab->ApplyConfiguration(); | 62 | ui->inputTab->ApplyConfiguration(); |
| 60 | ui->hotkeysTab->ApplyConfiguration(registry); | 63 | ui->hotkeysTab->ApplyConfiguration(registry); |
| 61 | ui->cpuTab->ApplyConfiguration(); | 64 | ui->cpuTab->ApplyConfiguration(); |
| 62 | ui->cpuDebugTab->ApplyConfiguration(); | ||
| 63 | ui->graphicsTab->ApplyConfiguration(); | 65 | ui->graphicsTab->ApplyConfiguration(); |
| 64 | ui->graphicsAdvancedTab->ApplyConfiguration(); | 66 | ui->graphicsAdvancedTab->ApplyConfiguration(); |
| 65 | ui->audioTab->ApplyConfiguration(); | 67 | ui->audioTab->ApplyConfiguration(); |
| @@ -102,7 +104,7 @@ void ConfigureDialog::PopulateSelectionList() { | |||
| 102 | const std::array<std::pair<QString, QList<QWidget*>>, 6> items{ | 104 | const std::array<std::pair<QString, QList<QWidget*>>, 6> items{ |
| 103 | {{tr("General"), {ui->generalTab, ui->hotkeysTab, ui->uiTab, ui->webTab, ui->debugTab}}, | 105 | {{tr("General"), {ui->generalTab, ui->hotkeysTab, ui->uiTab, ui->webTab, ui->debugTab}}, |
| 104 | {tr("System"), {ui->systemTab, ui->profileManagerTab, ui->serviceTab, ui->filesystemTab}}, | 106 | {tr("System"), {ui->systemTab, ui->profileManagerTab, ui->serviceTab, ui->filesystemTab}}, |
| 105 | {tr("CPU"), {ui->cpuTab, ui->cpuDebugTab}}, | 107 | {tr("CPU"), {ui->cpuTab}}, |
| 106 | {tr("Graphics"), {ui->graphicsTab, ui->graphicsAdvancedTab}}, | 108 | {tr("Graphics"), {ui->graphicsTab, ui->graphicsAdvancedTab}}, |
| 107 | {tr("Audio"), {ui->audioTab}}, | 109 | {tr("Audio"), {ui->audioTab}}, |
| 108 | {tr("Controls"), ui->inputTab->GetSubTabs()}}, | 110 | {tr("Controls"), ui->inputTab->GetSubTabs()}}, |