summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2016-09-02 05:18:01 +0200
committerbunnei <bunneidev@gmail.com>2016-09-15 23:49:27 +0200
commit14085ec670330b72d897d19ee844da87402ef39c (patch)
tree9333fe92f18a558da45ca0c4eb3444f026fb23e7
parentdynarmic: Implement ARM CPU interface. (diff)
downloadyuzu-14085ec670330b72d897d19ee844da87402ef39c.tar
yuzu-14085ec670330b72d897d19ee844da87402ef39c.tar.gz
yuzu-14085ec670330b72d897d19ee844da87402ef39c.tar.bz2
yuzu-14085ec670330b72d897d19ee844da87402ef39c.tar.lz
yuzu-14085ec670330b72d897d19ee844da87402ef39c.tar.xz
yuzu-14085ec670330b72d897d19ee844da87402ef39c.tar.zst
yuzu-14085ec670330b72d897d19ee844da87402ef39c.zip
-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() {
Settings::values.pad_circle_modifier_scale = (float)sdl2_config->GetReal("Controls", "pad_circle_modifier_scale", 0.5);
// Core
+ Settings::values.use_cpu_jit = sdl2_config->GetBoolean("Core", "use_cpu_jit", true);
Settings::values.frame_skip = sdl2_config->GetInteger("Core", "frame_skip", 0);
// 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 =
pad_circle_modifier_scale =
[Core]
+# Whether to use the Just-In-Time (JIT) compiler for CPU emulation
+# 0: Interpreter (slow), 1 (default): JIT (fast)
+use_cpu_jit =
+
# The applied frameskip amount. Must be a power of two.
# 0 (default): No frameskip, 1: x2 frameskip, 2: x4 frameskip, 3: x8 frameskip, etc.
frame_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() {
qt_config->endGroup();
qt_config->beginGroup("Core");
+ Settings::values.use_cpu_jit = qt_config->value("use_cpu_jit", true).toBool();
Settings::values.frame_skip = qt_config->value("frame_skip", 0).toInt();
qt_config->endGroup();
@@ -134,6 +135,7 @@ void Config::SaveValues() {
qt_config->endGroup();
qt_config->beginGroup("Core");
+ qt_config->setValue("use_cpu_jit", Settings::values.use_cpu_jit);
qt_config->setValue("frame_skip", Settings::values.frame_skip);
qt_config->endGroup();
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 @@
#include "common/logging/log.h"
-#include "core/core.h"
-#include "core/core_timing.h"
-
#include "core/arm/arm_interface.h"
+#include "core/arm/dynarmic/arm_dynarmic.h"
#include "core/arm/dyncom/arm_dyncom.h"
+#include "core/core.h"
+#include "core/core_timing.h"
+#include "core/gdbstub/gdbstub.h"
#include "core/hle/hle.h"
#include "core/hle/kernel/thread.h"
#include "core/hw/hw.h"
-
-#include "core/gdbstub/gdbstub.h"
+#include "core/settings.h"
namespace Core {
@@ -73,8 +73,13 @@ void Stop() {
/// Initialize the core
void Init() {
- g_sys_core = std::make_unique<ARM_DynCom>(USER32MODE);
- g_app_core = std::make_unique<ARM_DynCom>(USER32MODE);
+ if (Settings::values.use_cpu_jit) {
+ g_sys_core = std::make_unique<ARM_Dynarmic>(USER32MODE);
+ g_app_core = std::make_unique<ARM_Dynarmic>(USER32MODE);
+ } else {
+ g_sys_core = std::make_unique<ARM_DynCom>(USER32MODE);
+ g_app_core = std::make_unique<ARM_DynCom>(USER32MODE);
+ }
LOG_DEBUG(Core, "Initialized OK");
}
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 {
float pad_circle_modifier_scale;
// Core
+ bool use_cpu_jit;
int frame_skip;
// Data Storage