summaryrefslogtreecommitdiff
path: root/src/yuzu_cmd
diff options
context:
space:
mode:
Diffstat (limited to 'src/yuzu_cmd')
-rw-r--r--src/yuzu_cmd/config.cpp87
-rw-r--r--src/yuzu_cmd/default_ini.h7
-rw-r--r--src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp5
-rw-r--r--src/yuzu_cmd/yuzu.cpp7
-rw-r--r--src/yuzu_cmd/yuzu.rc2
5 files changed, 60 insertions, 48 deletions
diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp
index c20d48c42..23763144f 100644
--- a/src/yuzu_cmd/config.cpp
+++ b/src/yuzu_cmd/config.cpp
@@ -354,65 +354,72 @@ void Config::ReadValues() {
const auto rng_seed_enabled = sdl2_config->GetBoolean("System", "rng_seed_enabled", false);
if (rng_seed_enabled) {
- Settings::values.rng_seed = sdl2_config->GetInteger("System", "rng_seed", 0);
+ Settings::values.rng_seed.SetValue(sdl2_config->GetInteger("System", "rng_seed", 0));
} else {
- Settings::values.rng_seed = std::nullopt;
+ Settings::values.rng_seed.SetValue(std::nullopt);
}
const auto custom_rtc_enabled = sdl2_config->GetBoolean("System", "custom_rtc_enabled", false);
if (custom_rtc_enabled) {
- Settings::values.custom_rtc =
- std::chrono::seconds(sdl2_config->GetInteger("System", "custom_rtc", 0));
+ Settings::values.custom_rtc.SetValue(
+ std::chrono::seconds(sdl2_config->GetInteger("System", "custom_rtc", 0)));
} else {
- Settings::values.custom_rtc = std::nullopt;
+ Settings::values.custom_rtc.SetValue(std::nullopt);
}
- Settings::values.language_index = sdl2_config->GetInteger("System", "language_index", 1);
- Settings::values.time_zone_index = sdl2_config->GetInteger("System", "time_zone_index", 0);
+ Settings::values.language_index.SetValue(
+ sdl2_config->GetInteger("System", "language_index", 1));
+ Settings::values.time_zone_index.SetValue(
+ sdl2_config->GetInteger("System", "time_zone_index", 0));
// Core
- Settings::values.use_multi_core = sdl2_config->GetBoolean("Core", "use_multi_core", false);
+ Settings::values.use_multi_core.SetValue(
+ sdl2_config->GetBoolean("Core", "use_multi_core", false));
// Renderer
const int renderer_backend = sdl2_config->GetInteger(
"Renderer", "backend", static_cast<int>(Settings::RendererBackend::OpenGL));
- Settings::values.renderer_backend = static_cast<Settings::RendererBackend>(renderer_backend);
+ Settings::values.renderer_backend.SetValue(
+ static_cast<Settings::RendererBackend>(renderer_backend));
Settings::values.renderer_debug = sdl2_config->GetBoolean("Renderer", "debug", false);
- Settings::values.vulkan_device = sdl2_config->GetInteger("Renderer", "vulkan_device", 0);
-
- Settings::values.resolution_factor =
- static_cast<float>(sdl2_config->GetReal("Renderer", "resolution_factor", 1.0));
- Settings::values.aspect_ratio =
- static_cast<int>(sdl2_config->GetInteger("Renderer", "aspect_ratio", 0));
- Settings::values.max_anisotropy =
- static_cast<int>(sdl2_config->GetInteger("Renderer", "max_anisotropy", 0));
- Settings::values.use_frame_limit = sdl2_config->GetBoolean("Renderer", "use_frame_limit", true);
- Settings::values.frame_limit =
- static_cast<u16>(sdl2_config->GetInteger("Renderer", "frame_limit", 100));
- Settings::values.use_disk_shader_cache =
- sdl2_config->GetBoolean("Renderer", "use_disk_shader_cache", false);
+ Settings::values.vulkan_device.SetValue(
+ sdl2_config->GetInteger("Renderer", "vulkan_device", 0));
+
+ Settings::values.aspect_ratio.SetValue(
+ static_cast<int>(sdl2_config->GetInteger("Renderer", "aspect_ratio", 0)));
+ Settings::values.max_anisotropy.SetValue(
+ static_cast<int>(sdl2_config->GetInteger("Renderer", "max_anisotropy", 0)));
+ Settings::values.use_frame_limit.SetValue(
+ sdl2_config->GetBoolean("Renderer", "use_frame_limit", true));
+ Settings::values.frame_limit.SetValue(
+ static_cast<u16>(sdl2_config->GetInteger("Renderer", "frame_limit", 100)));
+ Settings::values.use_disk_shader_cache.SetValue(
+ sdl2_config->GetBoolean("Renderer", "use_disk_shader_cache", false));
const int gpu_accuracy_level = sdl2_config->GetInteger("Renderer", "gpu_accuracy", 0);
- Settings::values.gpu_accuracy = static_cast<Settings::GPUAccuracy>(gpu_accuracy_level);
- Settings::values.use_asynchronous_gpu_emulation =
- sdl2_config->GetBoolean("Renderer", "use_asynchronous_gpu_emulation", false);
- Settings::values.use_vsync =
- static_cast<u16>(sdl2_config->GetInteger("Renderer", "use_vsync", 1));
- Settings::values.use_assembly_shaders =
- sdl2_config->GetBoolean("Renderer", "use_assembly_shaders", false);
- Settings::values.use_fast_gpu_time =
- sdl2_config->GetBoolean("Renderer", "use_fast_gpu_time", true);
-
- Settings::values.bg_red = static_cast<float>(sdl2_config->GetReal("Renderer", "bg_red", 0.0));
- Settings::values.bg_green =
- static_cast<float>(sdl2_config->GetReal("Renderer", "bg_green", 0.0));
- Settings::values.bg_blue = static_cast<float>(sdl2_config->GetReal("Renderer", "bg_blue", 0.0));
+ Settings::values.gpu_accuracy.SetValue(static_cast<Settings::GPUAccuracy>(gpu_accuracy_level));
+ Settings::values.use_asynchronous_gpu_emulation.SetValue(
+ sdl2_config->GetBoolean("Renderer", "use_asynchronous_gpu_emulation", false));
+ Settings::values.use_vsync.SetValue(
+ static_cast<u16>(sdl2_config->GetInteger("Renderer", "use_vsync", 1)));
+ Settings::values.use_assembly_shaders.SetValue(
+ sdl2_config->GetBoolean("Renderer", "use_assembly_shaders", false));
+ Settings::values.use_fast_gpu_time.SetValue(
+ sdl2_config->GetBoolean("Renderer", "use_fast_gpu_time", true));
+
+ Settings::values.bg_red.SetValue(
+ static_cast<float>(sdl2_config->GetReal("Renderer", "bg_red", 0.0)));
+ Settings::values.bg_green.SetValue(
+ static_cast<float>(sdl2_config->GetReal("Renderer", "bg_green", 0.0)));
+ Settings::values.bg_blue.SetValue(
+ static_cast<float>(sdl2_config->GetReal("Renderer", "bg_blue", 0.0)));
// Audio
Settings::values.sink_id = sdl2_config->Get("Audio", "output_engine", "auto");
- Settings::values.enable_audio_stretching =
- sdl2_config->GetBoolean("Audio", "enable_audio_stretching", true);
+ Settings::values.enable_audio_stretching.SetValue(
+ sdl2_config->GetBoolean("Audio", "enable_audio_stretching", true));
Settings::values.audio_device_id = sdl2_config->Get("Audio", "output_device", "auto");
- Settings::values.volume = static_cast<float>(sdl2_config->GetReal("Audio", "volume", 1));
+ Settings::values.volume.SetValue(
+ static_cast<float>(sdl2_config->GetReal("Audio", "volume", 1)));
// Miscellaneous
Settings::values.log_filter = sdl2_config->Get("Miscellaneous", "log_filter", "*:Trace");
@@ -432,6 +439,8 @@ void Config::ReadValues() {
Settings::values.quest_flag = sdl2_config->GetBoolean("Debugging", "quest_flag", false);
Settings::values.disable_cpu_opt =
sdl2_config->GetBoolean("Debugging", "disable_cpu_opt", false);
+ Settings::values.disable_macro_jit =
+ sdl2_config->GetBoolean("Debugging", "disable_macro_jit", false);
const auto title_list = sdl2_config->Get("AddOns", "title_ids", "");
std::stringstream ss(title_list);
diff --git a/src/yuzu_cmd/default_ini.h b/src/yuzu_cmd/default_ini.h
index abc6e6e65..45c07ed5d 100644
--- a/src/yuzu_cmd/default_ini.h
+++ b/src/yuzu_cmd/default_ini.h
@@ -117,11 +117,6 @@ use_hw_renderer =
# 0: Interpreter (slow), 1 (default): JIT (fast)
use_shader_jit =
-# Resolution scale factor
-# 0: Auto (scales resolution to window size), 1: Native Switch screen resolution, Otherwise a scale
-# factor for the Switch resolution
-resolution_factor =
-
# Aspect ratio
# 0: Default (16:9), 1: Force 4:3, 2: Force 21:9, 3: Stretch to Window
aspect_ratio =
@@ -291,6 +286,8 @@ quest_flag =
# Determines whether or not JIT CPU optimizations are enabled
# false: Optimizations Enabled, true: Optimizations Disabled
disable_cpu_opt =
+# Enables/Disables the macro JIT compiler
+disable_macro_jit=false
[WebService]
# Whether or not to enable telemetry
diff --git a/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp b/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp
index 411e7e647..e78025737 100644
--- a/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp
+++ b/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp
@@ -98,6 +98,9 @@ EmuWindow_SDL2_GL::EmuWindow_SDL2_GL(Core::System& system, bool fullscreen)
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 0);
SDL_GL_SetAttribute(SDL_GL_SHARE_WITH_CURRENT_CONTEXT, 1);
+ if (Settings::values.renderer_debug) {
+ SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_DEBUG_FLAG);
+ }
SDL_GL_SetSwapInterval(0);
std::string window_title = fmt::format("yuzu {} | {}-{}", Common::g_build_fullname,
@@ -162,7 +165,7 @@ std::unique_ptr<Core::Frontend::GraphicsContext> EmuWindow_SDL2_GL::CreateShared
void EmuWindow_SDL2_GL::Present() {
SDL_GL_MakeCurrent(render_window, window_context);
- SDL_GL_SetSwapInterval(Settings::values.use_vsync ? 1 : 0);
+ SDL_GL_SetSwapInterval(Settings::values.use_vsync.GetValue() ? 1 : 0);
while (IsOpen()) {
system.Renderer().TryPresent(100);
SDL_GL_SwapWindow(render_window);
diff --git a/src/yuzu_cmd/yuzu.cpp b/src/yuzu_cmd/yuzu.cpp
index 4d2ea7e9e..512b060a7 100644
--- a/src/yuzu_cmd/yuzu.cpp
+++ b/src/yuzu_cmd/yuzu.cpp
@@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
+#include <chrono>
#include <iostream>
#include <memory>
#include <string>
@@ -180,7 +181,7 @@ int main(int argc, char** argv) {
Core::System& system{Core::System::GetInstance()};
std::unique_ptr<EmuWindow_SDL2> emu_window;
- switch (Settings::values.renderer_backend) {
+ switch (Settings::values.renderer_backend.GetValue()) {
case Settings::RendererBackend::OpenGL:
emu_window = std::make_unique<EmuWindow_SDL2_GL>(system, fullscreen);
break;
@@ -236,9 +237,11 @@ int main(int argc, char** argv) {
system.Renderer().Rasterizer().LoadDiskResources();
std::thread render_thread([&emu_window] { emu_window->Present(); });
+ system.Run();
while (emu_window->IsOpen()) {
- system.RunLoop();
+ std::this_thread::sleep_for(std::chrono::milliseconds(1));
}
+ system.Pause();
render_thread.join();
system.Shutdown();
diff --git a/src/yuzu_cmd/yuzu.rc b/src/yuzu_cmd/yuzu.rc
index 7de8ef3d9..0cde75e2f 100644
--- a/src/yuzu_cmd/yuzu.rc
+++ b/src/yuzu_cmd/yuzu.rc
@@ -14,4 +14,4 @@ YUZU_ICON ICON "../../dist/yuzu.ico"
// RT_MANIFEST
//
-1 RT_MANIFEST "../../dist/yuzu.manifest"
+0 RT_MANIFEST "../../dist/yuzu.manifest"