summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar bunnei2018-03-27 10:22:08 -0400
committerGravatar GitHub2018-03-27 10:22:08 -0400
commita5e9745380bf9e247d34c42009cd9eb66f4e97a8 (patch)
tree3c31fcb4375793542daff053665be555c2dfaa7f /src
parentMerge pull request #282 from N00byKing/patch-2 (diff)
parentsettings: Remove unused CpuCore class. (diff)
downloadyuzu-a5e9745380bf9e247d34c42009cd9eb66f4e97a8.tar.gz
yuzu-a5e9745380bf9e247d34c42009cd9eb66f4e97a8.tar.xz
yuzu-a5e9745380bf9e247d34c42009cd9eb66f4e97a8.zip
Merge pull request #284 from bunnei/docked-config
Add config for "Docked" mode and various settings cleanup
Diffstat (limited to 'src')
-rw-r--r--src/core/core.cpp10
-rw-r--r--src/core/hle/service/am/am.cpp8
-rw-r--r--src/core/settings.h10
-rw-r--r--src/core/telemetry_session.cpp5
-rw-r--r--src/yuzu/configuration/config.cpp13
-rw-r--r--src/yuzu/configuration/configure_general.cpp10
-rw-r--r--src/yuzu/configuration/configure_general.ui77
-rw-r--r--src/yuzu_cmd/config.cpp6
-rw-r--r--src/yuzu_cmd/default_ini.h10
9 files changed, 88 insertions, 61 deletions
diff --git a/src/core/core.cpp b/src/core/core.cpp
index d55621de8..11654d4da 100644
--- a/src/core/core.cpp
+++ b/src/core/core.cpp
@@ -148,19 +148,15 @@ System::ResultStatus System::Init(EmuWindow* emu_window, u32 system_mode) {
148 148
149 current_process = Kernel::Process::Create("main"); 149 current_process = Kernel::Process::Create("main");
150 150
151 switch (Settings::values.cpu_core) { 151 if (Settings::values.use_cpu_jit) {
152 case Settings::CpuCore::Unicorn:
153 cpu_core = std::make_shared<ARM_Unicorn>();
154 break;
155 case Settings::CpuCore::Dynarmic:
156 default:
157#ifdef ARCHITECTURE_x86_64 152#ifdef ARCHITECTURE_x86_64
158 cpu_core = std::make_shared<ARM_Dynarmic>(); 153 cpu_core = std::make_shared<ARM_Dynarmic>();
159#else 154#else
160 cpu_core = std::make_shared<ARM_Unicorn>(); 155 cpu_core = std::make_shared<ARM_Unicorn>();
161 LOG_WARNING(Core, "CPU JIT requested, but Dynarmic not available"); 156 LOG_WARNING(Core, "CPU JIT requested, but Dynarmic not available");
162#endif 157#endif
163 break; 158 } else {
159 cpu_core = std::make_shared<ARM_Unicorn>();
164 } 160 }
165 161
166 gpu_core = std::make_unique<Tegra::GPU>(); 162 gpu_core = std::make_unique<Tegra::GPU>();
diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp
index d9f003ed4..bab338205 100644
--- a/src/core/hle/service/am/am.cpp
+++ b/src/core/hle/service/am/am.cpp
@@ -12,6 +12,7 @@
12#include "core/hle/service/apm/apm.h" 12#include "core/hle/service/apm/apm.h"
13#include "core/hle/service/filesystem/filesystem.h" 13#include "core/hle/service/filesystem/filesystem.h"
14#include "core/hle/service/nvflinger/nvflinger.h" 14#include "core/hle/service/nvflinger/nvflinger.h"
15#include "core/settings.h"
15 16
16namespace Service { 17namespace Service {
17namespace AM { 18namespace AM {
@@ -241,17 +242,20 @@ void ICommonStateGetter::GetCurrentFocusState(Kernel::HLERequestContext& ctx) {
241} 242}
242 243
243void ICommonStateGetter::GetOperationMode(Kernel::HLERequestContext& ctx) { 244void ICommonStateGetter::GetOperationMode(Kernel::HLERequestContext& ctx) {
245 const bool use_docked_mode{Settings::values.use_docked_mode};
244 IPC::ResponseBuilder rb{ctx, 3}; 246 IPC::ResponseBuilder rb{ctx, 3};
245 rb.Push(RESULT_SUCCESS); 247 rb.Push(RESULT_SUCCESS);
246 rb.Push(static_cast<u8>(OperationMode::Handheld)); 248 rb.Push(static_cast<u8>(use_docked_mode ? OperationMode::Docked : OperationMode::Handheld));
247 249
248 LOG_WARNING(Service_AM, "(STUBBED) called"); 250 LOG_WARNING(Service_AM, "(STUBBED) called");
249} 251}
250 252
251void ICommonStateGetter::GetPerformanceMode(Kernel::HLERequestContext& ctx) { 253void ICommonStateGetter::GetPerformanceMode(Kernel::HLERequestContext& ctx) {
254 const bool use_docked_mode{Settings::values.use_docked_mode};
252 IPC::ResponseBuilder rb{ctx, 3}; 255 IPC::ResponseBuilder rb{ctx, 3};
253 rb.Push(RESULT_SUCCESS); 256 rb.Push(RESULT_SUCCESS);
254 rb.Push(static_cast<u32>(APM::PerformanceMode::Handheld)); 257 rb.Push(static_cast<u32>(use_docked_mode ? APM::PerformanceMode::Docked
258 : APM::PerformanceMode::Handheld));
255 259
256 LOG_WARNING(Service_AM, "(STUBBED) called"); 260 LOG_WARNING(Service_AM, "(STUBBED) called");
257} 261}
diff --git a/src/core/settings.h b/src/core/settings.h
index 6f8cd0f03..2c94caab7 100644
--- a/src/core/settings.h
+++ b/src/core/settings.h
@@ -105,12 +105,10 @@ static const std::array<const char*, NumAnalogs> mapping = {{
105}}; 105}};
106} // namespace NativeAnalog 106} // namespace NativeAnalog
107 107
108enum class CpuCore {
109 Unicorn,
110 Dynarmic,
111};
112
113struct Values { 108struct Values {
109 // System
110 bool use_docked_mode;
111
114 // Controls 112 // Controls
115 std::array<std::string, NativeButton::NumButtons> buttons; 113 std::array<std::string, NativeButton::NumButtons> buttons;
116 std::array<std::string, NativeAnalog::NumAnalogs> analogs; 114 std::array<std::string, NativeAnalog::NumAnalogs> analogs;
@@ -118,7 +116,7 @@ struct Values {
118 std::string touch_device; 116 std::string touch_device;
119 117
120 // Core 118 // Core
121 CpuCore cpu_core; 119 bool use_cpu_jit;
122 120
123 // Data Storage 121 // Data Storage
124 bool use_virtual_sd; 122 bool use_virtual_sd;
diff --git a/src/core/telemetry_session.cpp b/src/core/telemetry_session.cpp
index bea05a09b..b3ffcd443 100644
--- a/src/core/telemetry_session.cpp
+++ b/src/core/telemetry_session.cpp
@@ -154,12 +154,13 @@ TelemetrySession::TelemetrySession() {
154#endif 154#endif
155 155
156 // Log user configuration information 156 // Log user configuration information
157 AddField(Telemetry::FieldType::UserConfig, "Core_CpuCore", 157 AddField(Telemetry::FieldType::UserConfig, "Core_UseCpuJit", Settings::values.use_cpu_jit);
158 static_cast<int>(Settings::values.cpu_core));
159 AddField(Telemetry::FieldType::UserConfig, "Renderer_ResolutionFactor", 158 AddField(Telemetry::FieldType::UserConfig, "Renderer_ResolutionFactor",
160 Settings::values.resolution_factor); 159 Settings::values.resolution_factor);
161 AddField(Telemetry::FieldType::UserConfig, "Renderer_ToggleFramelimit", 160 AddField(Telemetry::FieldType::UserConfig, "Renderer_ToggleFramelimit",
162 Settings::values.toggle_framelimit); 161 Settings::values.toggle_framelimit);
162 AddField(Telemetry::FieldType::UserConfig, "System_UseDockedMode",
163 Settings::values.use_docked_mode);
163} 164}
164 165
165TelemetrySession::~TelemetrySession() { 166TelemetrySession::~TelemetrySession() {
diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp
index 71dc58e5d..4b4216eec 100644
--- a/src/yuzu/configuration/config.cpp
+++ b/src/yuzu/configuration/config.cpp
@@ -77,8 +77,7 @@ void Config::ReadValues() {
77 qt_config->endGroup(); 77 qt_config->endGroup();
78 78
79 qt_config->beginGroup("Core"); 79 qt_config->beginGroup("Core");
80 Settings::values.cpu_core = 80 Settings::values.use_cpu_jit = qt_config->value("use_cpu_jit", true).toBool();
81 static_cast<Settings::CpuCore>(qt_config->value("cpu_core", 1).toInt());
82 qt_config->endGroup(); 81 qt_config->endGroup();
83 82
84 qt_config->beginGroup("Renderer"); 83 qt_config->beginGroup("Renderer");
@@ -94,6 +93,10 @@ void Config::ReadValues() {
94 Settings::values.use_virtual_sd = qt_config->value("use_virtual_sd", true).toBool(); 93 Settings::values.use_virtual_sd = qt_config->value("use_virtual_sd", true).toBool();
95 qt_config->endGroup(); 94 qt_config->endGroup();
96 95
96 qt_config->beginGroup("System");
97 Settings::values.use_docked_mode = qt_config->value("use_docked_mode", true).toBool();
98 qt_config->endGroup();
99
97 qt_config->beginGroup("Miscellaneous"); 100 qt_config->beginGroup("Miscellaneous");
98 Settings::values.log_filter = qt_config->value("log_filter", "*:Info").toString().toStdString(); 101 Settings::values.log_filter = qt_config->value("log_filter", "*:Info").toString().toStdString();
99 qt_config->endGroup(); 102 qt_config->endGroup();
@@ -171,7 +174,7 @@ void Config::SaveValues() {
171 qt_config->endGroup(); 174 qt_config->endGroup();
172 175
173 qt_config->beginGroup("Core"); 176 qt_config->beginGroup("Core");
174 qt_config->setValue("cpu_core", static_cast<int>(Settings::values.cpu_core)); 177 qt_config->setValue("use_cpu_jit", Settings::values.use_cpu_jit);
175 qt_config->endGroup(); 178 qt_config->endGroup();
176 179
177 qt_config->beginGroup("Renderer"); 180 qt_config->beginGroup("Renderer");
@@ -188,6 +191,10 @@ void Config::SaveValues() {
188 qt_config->setValue("use_virtual_sd", Settings::values.use_virtual_sd); 191 qt_config->setValue("use_virtual_sd", Settings::values.use_virtual_sd);
189 qt_config->endGroup(); 192 qt_config->endGroup();
190 193
194 qt_config->beginGroup("System");
195 qt_config->setValue("use_docked_mode", Settings::values.use_docked_mode);
196 qt_config->endGroup();
197
191 qt_config->beginGroup("Miscellaneous"); 198 qt_config->beginGroup("Miscellaneous");
192 qt_config->setValue("log_filter", QString::fromStdString(Settings::values.log_filter)); 199 qt_config->setValue("log_filter", QString::fromStdString(Settings::values.log_filter));
193 qt_config->endGroup(); 200 qt_config->endGroup();
diff --git a/src/yuzu/configuration/configure_general.cpp b/src/yuzu/configuration/configure_general.cpp
index 92fd6ab02..616a67f9f 100644
--- a/src/yuzu/configuration/configure_general.cpp
+++ b/src/yuzu/configuration/configure_general.cpp
@@ -15,7 +15,8 @@ ConfigureGeneral::ConfigureGeneral(QWidget* parent)
15 15
16 this->setConfiguration(); 16 this->setConfiguration();
17 17
18 ui->cpu_core_combobox->setEnabled(!Core::System::GetInstance().IsPoweredOn()); 18 ui->use_cpu_jit->setEnabled(!Core::System::GetInstance().IsPoweredOn());
19 ui->use_docked_mode->setEnabled(!Core::System::GetInstance().IsPoweredOn());
19} 20}
20 21
21ConfigureGeneral::~ConfigureGeneral() {} 22ConfigureGeneral::~ConfigureGeneral() {}
@@ -23,13 +24,14 @@ ConfigureGeneral::~ConfigureGeneral() {}
23void ConfigureGeneral::setConfiguration() { 24void ConfigureGeneral::setConfiguration() {
24 ui->toggle_deepscan->setChecked(UISettings::values.gamedir_deepscan); 25 ui->toggle_deepscan->setChecked(UISettings::values.gamedir_deepscan);
25 ui->toggle_check_exit->setChecked(UISettings::values.confirm_before_closing); 26 ui->toggle_check_exit->setChecked(UISettings::values.confirm_before_closing);
26 ui->cpu_core_combobox->setCurrentIndex(static_cast<int>(Settings::values.cpu_core)); 27 ui->use_cpu_jit->setChecked(Settings::values.use_cpu_jit);
28 ui->use_docked_mode->setChecked(Settings::values.use_docked_mode);
27} 29}
28 30
29void ConfigureGeneral::applyConfiguration() { 31void ConfigureGeneral::applyConfiguration() {
30 UISettings::values.gamedir_deepscan = ui->toggle_deepscan->isChecked(); 32 UISettings::values.gamedir_deepscan = ui->toggle_deepscan->isChecked();
31 UISettings::values.confirm_before_closing = ui->toggle_check_exit->isChecked(); 33 UISettings::values.confirm_before_closing = ui->toggle_check_exit->isChecked();
32 Settings::values.cpu_core = 34 Settings::values.use_cpu_jit = ui->use_cpu_jit->isChecked();
33 static_cast<Settings::CpuCore>(ui->cpu_core_combobox->currentIndex()); 35 Settings::values.use_docked_mode = ui->use_docked_mode->isChecked();
34 Settings::Apply(); 36 Settings::Apply();
35} 37}
diff --git a/src/yuzu/configuration/configure_general.ui b/src/yuzu/configuration/configure_general.ui
index 573c4cb0e..5ff68f079 100644
--- a/src/yuzu/configuration/configure_general.ui
+++ b/src/yuzu/configuration/configure_general.ui
@@ -13,17 +13,17 @@
13 <property name="windowTitle"> 13 <property name="windowTitle">
14 <string>Form</string> 14 <string>Form</string>
15 </property> 15 </property>
16 <layout class="QHBoxLayout" name="horizontalLayout"> 16 <layout class="QHBoxLayout" name="HorizontalLayout">
17 <item> 17 <item>
18 <layout class="QVBoxLayout" name="verticalLayout"> 18 <layout class="QVBoxLayout" name="VerticalLayout">
19 <item> 19 <item>
20 <widget class="QGroupBox" name="groupBox"> 20 <widget class="QGroupBox" name="GeneralGroupBox">
21 <property name="title"> 21 <property name="title">
22 <string>General</string> 22 <string>General</string>
23 </property> 23 </property>
24 <layout class="QHBoxLayout" name="horizontalLayout_3"> 24 <layout class="QHBoxLayout" name="GeneralHorizontalLayout">
25 <item> 25 <item>
26 <layout class="QVBoxLayout" name="verticalLayout_2"> 26 <layout class="QVBoxLayout" name="GeneralVerticalLayout">
27 <item> 27 <item>
28 <widget class="QCheckBox" name="toggle_deepscan"> 28 <widget class="QCheckBox" name="toggle_deepscan">
29 <property name="text"> 29 <property name="text">
@@ -44,40 +44,53 @@
44 </widget> 44 </widget>
45 </item> 45 </item>
46 <item> 46 <item>
47 <widget class="QGroupBox" name="groupBox_2"> 47 <widget class="QGroupBox" name="PerformanceGroupBox">
48 <property name="title"> 48 <property name="title">
49 <string>CPU Core</string> 49 <string>Performance</string>
50 </property> 50 </property>
51 <layout class="QHBoxLayout" name="horizontalLayout_7"> 51 <layout class="QHBoxLayout" name="PerformanceHorizontalLayout">
52 <item> 52 <item>
53 <layout class="QVBoxLayout" name="verticalLayout_5"> 53 <layout class="QVBoxLayout" name="PerformanceVerticalLayout">
54 <item> 54 <item>
55 <widget class="QComboBox" name="cpu_core_combobox"> 55 <widget class="QCheckBox" name="use_cpu_jit">
56 <item> 56 <property name="text">
57 <property name="text"> 57 <string>Enable CPU JIT</string>
58 <string>Unicorn</string> 58 </property>
59 </property> 59 </widget>
60 </item> 60 </item>
61 <item>
62 <property name="text">
63 <string>Dynarmic</string>
64 </property>
65 </item>
66 </widget>
67 </item>
68 </layout>
69 </item>
70 </layout> 61 </layout>
71 </widget> 62 </item>
63 </layout>
64 </widget>
65 </item>
66 <item>
67 <widget class="QGroupBox" name="EmulationGroupBox">
68 <property name="title">
69 <string>Emulation</string>
70 </property>
71 <layout class="QHBoxLayout" name="EmulationHorizontalLayout">
72 <item>
73 <layout class="QVBoxLayout" name="EmulationVerticalLayout">
74 <item>
75 <widget class="QCheckBox" name="use_docked_mode">
76 <property name="text">
77 <string>Enable docked mode</string>
78 </property>
79 </widget>
80 </item>
81 </layout>
82 </item>
83 </layout>
84 </widget>
72 </item> 85 </item>
73 <item> 86 <item>
74 <widget class="QGroupBox" name="groupBox_3"> 87 <widget class="QGroupBox" name="HotKeysGroupBox">
75 <property name="title"> 88 <property name="title">
76 <string>Hotkeys</string> 89 <string>Hotkeys</string>
77 </property> 90 </property>
78 <layout class="QHBoxLayout" name="horizontalLayout_4"> 91 <layout class="QHBoxLayout" name="HotKeysHorizontalLayout">
79 <item> 92 <item>
80 <layout class="QVBoxLayout" name="verticalLayout_4"> 93 <layout class="QVBoxLayout" name="HotKeysVerticalLayout">
81 <item> 94 <item>
82 <widget class="GHotkeysDialog" name="widget" native="true"/> 95 <widget class="GHotkeysDialog" name="widget" native="true"/>
83 </item> 96 </item>
diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp
index 342ad3850..8b479bc6d 100644
--- a/src/yuzu_cmd/config.cpp
+++ b/src/yuzu_cmd/config.cpp
@@ -90,8 +90,7 @@ void Config::ReadValues() {
90 sdl2_config->Get("Controls", "touch_device", "engine:emu_window"); 90 sdl2_config->Get("Controls", "touch_device", "engine:emu_window");
91 91
92 // Core 92 // Core
93 Settings::values.cpu_core = 93 Settings::values.use_cpu_jit = sdl2_config->GetBoolean("Core", "use_cpu_jit", true);
94 static_cast<Settings::CpuCore>(sdl2_config->GetInteger("Core", "cpu_core", 1));
95 94
96 // Renderer 95 // Renderer
97 Settings::values.resolution_factor = 96 Settings::values.resolution_factor =
@@ -107,6 +106,9 @@ void Config::ReadValues() {
107 Settings::values.use_virtual_sd = 106 Settings::values.use_virtual_sd =
108 sdl2_config->GetBoolean("Data Storage", "use_virtual_sd", true); 107 sdl2_config->GetBoolean("Data Storage", "use_virtual_sd", true);
109 108
109 // System
110 Settings::values.use_docked_mode = sdl2_config->GetBoolean("System", "use_docked_mode", true);
111
110 // Miscellaneous 112 // Miscellaneous
111 Settings::values.log_filter = sdl2_config->Get("Miscellaneous", "log_filter", "*:Trace"); 113 Settings::values.log_filter = sdl2_config->Get("Miscellaneous", "log_filter", "*:Trace");
112 114
diff --git a/src/yuzu_cmd/default_ini.h b/src/yuzu_cmd/default_ini.h
index fe104fb81..cf157bf27 100644
--- a/src/yuzu_cmd/default_ini.h
+++ b/src/yuzu_cmd/default_ini.h
@@ -76,9 +76,9 @@ motion_device=
76touch_device= 76touch_device=
77 77
78[Core] 78[Core]
79# Which CPU core to use for CPU emulation 79# Whether to use the Just-In-Time (JIT) compiler for CPU emulation
80# 0: Unicorn (slow), 1 (default): Dynarmic (faster) 80# 0: Interpreter (slow), 1 (default): JIT (fast)
81cpu_core = 81use_cpu_jit =
82 82
83[Renderer] 83[Renderer]
84# Whether to use software or hardware rendering. 84# Whether to use software or hardware rendering.
@@ -154,6 +154,10 @@ output_device =
154use_virtual_sd = 154use_virtual_sd =
155 155
156[System] 156[System]
157# Whether the system is docked
158# 1 (default): Yes, 0: No
159use_docked_mode =
160
157# The system region that Citra will use during emulation 161# The system region that Citra will use during emulation
158# -1: Auto-select (default), 0: Japan, 1: USA, 2: Europe, 3: Australia, 4: China, 5: Korea, 6: Taiwan 162# -1: Auto-select (default), 0: Japan, 1: USA, 2: Europe, 3: Australia, 4: China, 5: Korea, 6: Taiwan
159region_value = 163region_value =