summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/citra/config.cpp1
-rw-r--r--src/citra/default_ini.h4
-rw-r--r--src/citra_qt/config.cpp2
-rw-r--r--src/core/core.cpp19
-rw-r--r--src/core/settings.h1
5 files changed, 20 insertions, 7 deletions
diff --git a/src/citra/config.cpp b/src/citra/config.cpp
index 110b883fb..1a09f0e55 100644
--- a/src/citra/config.cpp
+++ b/src/citra/config.cpp
@@ -65,6 +65,7 @@ void Config::ReadValues() {
65 Settings::values.pad_circle_modifier_scale = (float)sdl2_config->GetReal("Controls", "pad_circle_modifier_scale", 0.5); 65 Settings::values.pad_circle_modifier_scale = (float)sdl2_config->GetReal("Controls", "pad_circle_modifier_scale", 0.5);
66 66
67 // Core 67 // Core
68 Settings::values.use_cpu_jit = sdl2_config->GetBoolean("Core", "use_cpu_jit", true);
68 Settings::values.frame_skip = sdl2_config->GetInteger("Core", "frame_skip", 0); 69 Settings::values.frame_skip = sdl2_config->GetInteger("Core", "frame_skip", 0);
69 70
70 // Renderer 71 // Renderer
diff --git a/src/citra/default_ini.h b/src/citra/default_ini.h
index 2031620a5..788174508 100644
--- a/src/citra/default_ini.h
+++ b/src/citra/default_ini.h
@@ -38,6 +38,10 @@ pad_circle_modifier =
38pad_circle_modifier_scale = 38pad_circle_modifier_scale =
39 39
40[Core] 40[Core]
41# Whether to use the Just-In-Time (JIT) compiler for CPU emulation
42# 0: Interpreter (slow), 1 (default): JIT (fast)
43use_cpu_jit =
44
41# The applied frameskip amount. Must be a power of two. 45# The applied frameskip amount. Must be a power of two.
42# 0 (default): No frameskip, 1: x2 frameskip, 2: x4 frameskip, 3: x8 frameskip, etc. 46# 0 (default): No frameskip, 1: x2 frameskip, 2: x4 frameskip, 3: x8 frameskip, etc.
43frame_skip = 47frame_skip =
diff --git a/src/citra_qt/config.cpp b/src/citra_qt/config.cpp
index fa3fa210c..cf1c09930 100644
--- a/src/citra_qt/config.cpp
+++ b/src/citra_qt/config.cpp
@@ -41,6 +41,7 @@ void Config::ReadValues() {
41 qt_config->endGroup(); 41 qt_config->endGroup();
42 42
43 qt_config->beginGroup("Core"); 43 qt_config->beginGroup("Core");
44 Settings::values.use_cpu_jit = qt_config->value("use_cpu_jit", true).toBool();
44 Settings::values.frame_skip = qt_config->value("frame_skip", 0).toInt(); 45 Settings::values.frame_skip = qt_config->value("frame_skip", 0).toInt();
45 qt_config->endGroup(); 46 qt_config->endGroup();
46 47
@@ -134,6 +135,7 @@ void Config::SaveValues() {
134 qt_config->endGroup(); 135 qt_config->endGroup();
135 136
136 qt_config->beginGroup("Core"); 137 qt_config->beginGroup("Core");
138 qt_config->setValue("use_cpu_jit", Settings::values.use_cpu_jit);
137 qt_config->setValue("frame_skip", Settings::values.frame_skip); 139 qt_config->setValue("frame_skip", Settings::values.frame_skip);
138 qt_config->endGroup(); 140 qt_config->endGroup();
139 141
diff --git a/src/core/core.cpp b/src/core/core.cpp
index cabab744a..a3834adae 100644
--- a/src/core/core.cpp
+++ b/src/core/core.cpp
@@ -6,16 +6,16 @@
6 6
7#include "common/logging/log.h" 7#include "common/logging/log.h"
8 8
9#include "core/core.h"
10#include "core/core_timing.h"
11
12#include "core/arm/arm_interface.h" 9#include "core/arm/arm_interface.h"
10#include "core/arm/dynarmic/arm_dynarmic.h"
13#include "core/arm/dyncom/arm_dyncom.h" 11#include "core/arm/dyncom/arm_dyncom.h"
12#include "core/core.h"
13#include "core/core_timing.h"
14#include "core/gdbstub/gdbstub.h"
14#include "core/hle/hle.h" 15#include "core/hle/hle.h"
15#include "core/hle/kernel/thread.h" 16#include "core/hle/kernel/thread.h"
16#include "core/hw/hw.h" 17#include "core/hw/hw.h"
17 18#include "core/settings.h"
18#include "core/gdbstub/gdbstub.h"
19 19
20namespace Core { 20namespace Core {
21 21
@@ -73,8 +73,13 @@ void Stop() {
73 73
74/// Initialize the core 74/// Initialize the core
75void Init() { 75void Init() {
76 g_sys_core = std::make_unique<ARM_DynCom>(USER32MODE); 76 if (Settings::values.use_cpu_jit) {
77 g_app_core = std::make_unique<ARM_DynCom>(USER32MODE); 77 g_sys_core = std::make_unique<ARM_Dynarmic>(USER32MODE);
78 g_app_core = std::make_unique<ARM_Dynarmic>(USER32MODE);
79 } else {
80 g_sys_core = std::make_unique<ARM_DynCom>(USER32MODE);
81 g_app_core = std::make_unique<ARM_DynCom>(USER32MODE);
82 }
78 83
79 LOG_DEBUG(Core, "Initialized OK"); 84 LOG_DEBUG(Core, "Initialized OK");
80} 85}
diff --git a/src/core/settings.h b/src/core/settings.h
index fb3fbe391..fcd14c6f3 100644
--- a/src/core/settings.h
+++ b/src/core/settings.h
@@ -60,6 +60,7 @@ struct Values {
60 float pad_circle_modifier_scale; 60 float pad_circle_modifier_scale;
61 61
62 // Core 62 // Core
63 bool use_cpu_jit;
63 int frame_skip; 64 int frame_skip;
64 65
65 // Data Storage 66 // Data Storage