diff options
Diffstat (limited to 'src/yuzu_cmd')
| -rw-r--r-- | src/yuzu_cmd/config.cpp | 87 | ||||
| -rw-r--r-- | src/yuzu_cmd/default_ini.h | 7 | ||||
| -rw-r--r-- | src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp | 5 | ||||
| -rw-r--r-- | src/yuzu_cmd/yuzu.cpp | 7 | ||||
| -rw-r--r-- | src/yuzu_cmd/yuzu.rc | 2 |
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() { | |||
| 354 | 354 | ||
| 355 | const auto rng_seed_enabled = sdl2_config->GetBoolean("System", "rng_seed_enabled", false); | 355 | const auto rng_seed_enabled = sdl2_config->GetBoolean("System", "rng_seed_enabled", false); |
| 356 | if (rng_seed_enabled) { | 356 | if (rng_seed_enabled) { |
| 357 | Settings::values.rng_seed = sdl2_config->GetInteger("System", "rng_seed", 0); | 357 | Settings::values.rng_seed.SetValue(sdl2_config->GetInteger("System", "rng_seed", 0)); |
| 358 | } else { | 358 | } else { |
| 359 | Settings::values.rng_seed = std::nullopt; | 359 | Settings::values.rng_seed.SetValue(std::nullopt); |
| 360 | } | 360 | } |
| 361 | 361 | ||
| 362 | const auto custom_rtc_enabled = sdl2_config->GetBoolean("System", "custom_rtc_enabled", false); | 362 | const auto custom_rtc_enabled = sdl2_config->GetBoolean("System", "custom_rtc_enabled", false); |
| 363 | if (custom_rtc_enabled) { | 363 | if (custom_rtc_enabled) { |
| 364 | Settings::values.custom_rtc = | 364 | Settings::values.custom_rtc.SetValue( |
| 365 | std::chrono::seconds(sdl2_config->GetInteger("System", "custom_rtc", 0)); | 365 | std::chrono::seconds(sdl2_config->GetInteger("System", "custom_rtc", 0))); |
| 366 | } else { | 366 | } else { |
| 367 | Settings::values.custom_rtc = std::nullopt; | 367 | Settings::values.custom_rtc.SetValue(std::nullopt); |
| 368 | } | 368 | } |
| 369 | 369 | ||
| 370 | Settings::values.language_index = sdl2_config->GetInteger("System", "language_index", 1); | 370 | Settings::values.language_index.SetValue( |
| 371 | Settings::values.time_zone_index = sdl2_config->GetInteger("System", "time_zone_index", 0); | 371 | sdl2_config->GetInteger("System", "language_index", 1)); |
| 372 | Settings::values.time_zone_index.SetValue( | ||
| 373 | sdl2_config->GetInteger("System", "time_zone_index", 0)); | ||
| 372 | 374 | ||
| 373 | // Core | 375 | // Core |
| 374 | Settings::values.use_multi_core = sdl2_config->GetBoolean("Core", "use_multi_core", false); | 376 | Settings::values.use_multi_core.SetValue( |
| 377 | sdl2_config->GetBoolean("Core", "use_multi_core", false)); | ||
| 375 | 378 | ||
| 376 | // Renderer | 379 | // Renderer |
| 377 | const int renderer_backend = sdl2_config->GetInteger( | 380 | const int renderer_backend = sdl2_config->GetInteger( |
| 378 | "Renderer", "backend", static_cast<int>(Settings::RendererBackend::OpenGL)); | 381 | "Renderer", "backend", static_cast<int>(Settings::RendererBackend::OpenGL)); |
| 379 | Settings::values.renderer_backend = static_cast<Settings::RendererBackend>(renderer_backend); | 382 | Settings::values.renderer_backend.SetValue( |
| 383 | static_cast<Settings::RendererBackend>(renderer_backend)); | ||
| 380 | Settings::values.renderer_debug = sdl2_config->GetBoolean("Renderer", "debug", false); | 384 | Settings::values.renderer_debug = sdl2_config->GetBoolean("Renderer", "debug", false); |
| 381 | Settings::values.vulkan_device = sdl2_config->GetInteger("Renderer", "vulkan_device", 0); | 385 | Settings::values.vulkan_device.SetValue( |
| 382 | 386 | sdl2_config->GetInteger("Renderer", "vulkan_device", 0)); | |
| 383 | Settings::values.resolution_factor = | 387 | |
| 384 | static_cast<float>(sdl2_config->GetReal("Renderer", "resolution_factor", 1.0)); | 388 | Settings::values.aspect_ratio.SetValue( |
| 385 | Settings::values.aspect_ratio = | 389 | static_cast<int>(sdl2_config->GetInteger("Renderer", "aspect_ratio", 0))); |
| 386 | static_cast<int>(sdl2_config->GetInteger("Renderer", "aspect_ratio", 0)); | 390 | Settings::values.max_anisotropy.SetValue( |
| 387 | Settings::values.max_anisotropy = | 391 | static_cast<int>(sdl2_config->GetInteger("Renderer", "max_anisotropy", 0))); |
| 388 | static_cast<int>(sdl2_config->GetInteger("Renderer", "max_anisotropy", 0)); | 392 | Settings::values.use_frame_limit.SetValue( |
| 389 | Settings::values.use_frame_limit = sdl2_config->GetBoolean("Renderer", "use_frame_limit", true); | 393 | sdl2_config->GetBoolean("Renderer", "use_frame_limit", true)); |
| 390 | Settings::values.frame_limit = | 394 | Settings::values.frame_limit.SetValue( |
| 391 | static_cast<u16>(sdl2_config->GetInteger("Renderer", "frame_limit", 100)); | 395 | static_cast<u16>(sdl2_config->GetInteger("Renderer", "frame_limit", 100))); |
| 392 | Settings::values.use_disk_shader_cache = | 396 | Settings::values.use_disk_shader_cache.SetValue( |
| 393 | sdl2_config->GetBoolean("Renderer", "use_disk_shader_cache", false); | 397 | sdl2_config->GetBoolean("Renderer", "use_disk_shader_cache", false)); |
| 394 | const int gpu_accuracy_level = sdl2_config->GetInteger("Renderer", "gpu_accuracy", 0); | 398 | const int gpu_accuracy_level = sdl2_config->GetInteger("Renderer", "gpu_accuracy", 0); |
| 395 | Settings::values.gpu_accuracy = static_cast<Settings::GPUAccuracy>(gpu_accuracy_level); | 399 | Settings::values.gpu_accuracy.SetValue(static_cast<Settings::GPUAccuracy>(gpu_accuracy_level)); |
| 396 | Settings::values.use_asynchronous_gpu_emulation = | 400 | Settings::values.use_asynchronous_gpu_emulation.SetValue( |
| 397 | sdl2_config->GetBoolean("Renderer", "use_asynchronous_gpu_emulation", false); | 401 | sdl2_config->GetBoolean("Renderer", "use_asynchronous_gpu_emulation", false)); |
| 398 | Settings::values.use_vsync = | 402 | Settings::values.use_vsync.SetValue( |
| 399 | static_cast<u16>(sdl2_config->GetInteger("Renderer", "use_vsync", 1)); | 403 | static_cast<u16>(sdl2_config->GetInteger("Renderer", "use_vsync", 1))); |
| 400 | Settings::values.use_assembly_shaders = | 404 | Settings::values.use_assembly_shaders.SetValue( |
| 401 | sdl2_config->GetBoolean("Renderer", "use_assembly_shaders", false); | 405 | sdl2_config->GetBoolean("Renderer", "use_assembly_shaders", false)); |
| 402 | Settings::values.use_fast_gpu_time = | 406 | Settings::values.use_fast_gpu_time.SetValue( |
| 403 | sdl2_config->GetBoolean("Renderer", "use_fast_gpu_time", true); | 407 | sdl2_config->GetBoolean("Renderer", "use_fast_gpu_time", true)); |
| 404 | 408 | ||
| 405 | Settings::values.bg_red = static_cast<float>(sdl2_config->GetReal("Renderer", "bg_red", 0.0)); | 409 | Settings::values.bg_red.SetValue( |
| 406 | Settings::values.bg_green = | 410 | static_cast<float>(sdl2_config->GetReal("Renderer", "bg_red", 0.0))); |
| 407 | static_cast<float>(sdl2_config->GetReal("Renderer", "bg_green", 0.0)); | 411 | Settings::values.bg_green.SetValue( |
| 408 | Settings::values.bg_blue = static_cast<float>(sdl2_config->GetReal("Renderer", "bg_blue", 0.0)); | 412 | static_cast<float>(sdl2_config->GetReal("Renderer", "bg_green", 0.0))); |
| 413 | Settings::values.bg_blue.SetValue( | ||
| 414 | static_cast<float>(sdl2_config->GetReal("Renderer", "bg_blue", 0.0))); | ||
| 409 | 415 | ||
| 410 | // Audio | 416 | // Audio |
| 411 | Settings::values.sink_id = sdl2_config->Get("Audio", "output_engine", "auto"); | 417 | Settings::values.sink_id = sdl2_config->Get("Audio", "output_engine", "auto"); |
| 412 | Settings::values.enable_audio_stretching = | 418 | Settings::values.enable_audio_stretching.SetValue( |
| 413 | sdl2_config->GetBoolean("Audio", "enable_audio_stretching", true); | 419 | sdl2_config->GetBoolean("Audio", "enable_audio_stretching", true)); |
| 414 | Settings::values.audio_device_id = sdl2_config->Get("Audio", "output_device", "auto"); | 420 | Settings::values.audio_device_id = sdl2_config->Get("Audio", "output_device", "auto"); |
| 415 | Settings::values.volume = static_cast<float>(sdl2_config->GetReal("Audio", "volume", 1)); | 421 | Settings::values.volume.SetValue( |
| 422 | static_cast<float>(sdl2_config->GetReal("Audio", "volume", 1))); | ||
| 416 | 423 | ||
| 417 | // Miscellaneous | 424 | // Miscellaneous |
| 418 | Settings::values.log_filter = sdl2_config->Get("Miscellaneous", "log_filter", "*:Trace"); | 425 | Settings::values.log_filter = sdl2_config->Get("Miscellaneous", "log_filter", "*:Trace"); |
| @@ -432,6 +439,8 @@ void Config::ReadValues() { | |||
| 432 | Settings::values.quest_flag = sdl2_config->GetBoolean("Debugging", "quest_flag", false); | 439 | Settings::values.quest_flag = sdl2_config->GetBoolean("Debugging", "quest_flag", false); |
| 433 | Settings::values.disable_cpu_opt = | 440 | Settings::values.disable_cpu_opt = |
| 434 | sdl2_config->GetBoolean("Debugging", "disable_cpu_opt", false); | 441 | sdl2_config->GetBoolean("Debugging", "disable_cpu_opt", false); |
| 442 | Settings::values.disable_macro_jit = | ||
| 443 | sdl2_config->GetBoolean("Debugging", "disable_macro_jit", false); | ||
| 435 | 444 | ||
| 436 | const auto title_list = sdl2_config->Get("AddOns", "title_ids", ""); | 445 | const auto title_list = sdl2_config->Get("AddOns", "title_ids", ""); |
| 437 | std::stringstream ss(title_list); | 446 | 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 = | |||
| 117 | # 0: Interpreter (slow), 1 (default): JIT (fast) | 117 | # 0: Interpreter (slow), 1 (default): JIT (fast) |
| 118 | use_shader_jit = | 118 | use_shader_jit = |
| 119 | 119 | ||
| 120 | # Resolution scale factor | ||
| 121 | # 0: Auto (scales resolution to window size), 1: Native Switch screen resolution, Otherwise a scale | ||
| 122 | # factor for the Switch resolution | ||
| 123 | resolution_factor = | ||
| 124 | |||
| 125 | # Aspect ratio | 120 | # Aspect ratio |
| 126 | # 0: Default (16:9), 1: Force 4:3, 2: Force 21:9, 3: Stretch to Window | 121 | # 0: Default (16:9), 1: Force 4:3, 2: Force 21:9, 3: Stretch to Window |
| 127 | aspect_ratio = | 122 | aspect_ratio = |
| @@ -291,6 +286,8 @@ quest_flag = | |||
| 291 | # Determines whether or not JIT CPU optimizations are enabled | 286 | # Determines whether or not JIT CPU optimizations are enabled |
| 292 | # false: Optimizations Enabled, true: Optimizations Disabled | 287 | # false: Optimizations Enabled, true: Optimizations Disabled |
| 293 | disable_cpu_opt = | 288 | disable_cpu_opt = |
| 289 | # Enables/Disables the macro JIT compiler | ||
| 290 | disable_macro_jit=false | ||
| 294 | 291 | ||
| 295 | [WebService] | 292 | [WebService] |
| 296 | # Whether or not to enable telemetry | 293 | # 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) | |||
| 98 | SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); | 98 | SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); |
| 99 | SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 0); | 99 | SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 0); |
| 100 | SDL_GL_SetAttribute(SDL_GL_SHARE_WITH_CURRENT_CONTEXT, 1); | 100 | SDL_GL_SetAttribute(SDL_GL_SHARE_WITH_CURRENT_CONTEXT, 1); |
| 101 | if (Settings::values.renderer_debug) { | ||
| 102 | SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_DEBUG_FLAG); | ||
| 103 | } | ||
| 101 | SDL_GL_SetSwapInterval(0); | 104 | SDL_GL_SetSwapInterval(0); |
| 102 | 105 | ||
| 103 | std::string window_title = fmt::format("yuzu {} | {}-{}", Common::g_build_fullname, | 106 | 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 | |||
| 162 | 165 | ||
| 163 | void EmuWindow_SDL2_GL::Present() { | 166 | void EmuWindow_SDL2_GL::Present() { |
| 164 | SDL_GL_MakeCurrent(render_window, window_context); | 167 | SDL_GL_MakeCurrent(render_window, window_context); |
| 165 | SDL_GL_SetSwapInterval(Settings::values.use_vsync ? 1 : 0); | 168 | SDL_GL_SetSwapInterval(Settings::values.use_vsync.GetValue() ? 1 : 0); |
| 166 | while (IsOpen()) { | 169 | while (IsOpen()) { |
| 167 | system.Renderer().TryPresent(100); | 170 | system.Renderer().TryPresent(100); |
| 168 | SDL_GL_SwapWindow(render_window); | 171 | 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 @@ | |||
| 2 | // Licensed under GPLv2 or any later version | 2 | // Licensed under GPLv2 or any later version |
| 3 | // Refer to the license.txt file included. | 3 | // Refer to the license.txt file included. |
| 4 | 4 | ||
| 5 | #include <chrono> | ||
| 5 | #include <iostream> | 6 | #include <iostream> |
| 6 | #include <memory> | 7 | #include <memory> |
| 7 | #include <string> | 8 | #include <string> |
| @@ -180,7 +181,7 @@ int main(int argc, char** argv) { | |||
| 180 | Core::System& system{Core::System::GetInstance()}; | 181 | Core::System& system{Core::System::GetInstance()}; |
| 181 | 182 | ||
| 182 | std::unique_ptr<EmuWindow_SDL2> emu_window; | 183 | std::unique_ptr<EmuWindow_SDL2> emu_window; |
| 183 | switch (Settings::values.renderer_backend) { | 184 | switch (Settings::values.renderer_backend.GetValue()) { |
| 184 | case Settings::RendererBackend::OpenGL: | 185 | case Settings::RendererBackend::OpenGL: |
| 185 | emu_window = std::make_unique<EmuWindow_SDL2_GL>(system, fullscreen); | 186 | emu_window = std::make_unique<EmuWindow_SDL2_GL>(system, fullscreen); |
| 186 | break; | 187 | break; |
| @@ -236,9 +237,11 @@ int main(int argc, char** argv) { | |||
| 236 | system.Renderer().Rasterizer().LoadDiskResources(); | 237 | system.Renderer().Rasterizer().LoadDiskResources(); |
| 237 | 238 | ||
| 238 | std::thread render_thread([&emu_window] { emu_window->Present(); }); | 239 | std::thread render_thread([&emu_window] { emu_window->Present(); }); |
| 240 | system.Run(); | ||
| 239 | while (emu_window->IsOpen()) { | 241 | while (emu_window->IsOpen()) { |
| 240 | system.RunLoop(); | 242 | std::this_thread::sleep_for(std::chrono::milliseconds(1)); |
| 241 | } | 243 | } |
| 244 | system.Pause(); | ||
| 242 | render_thread.join(); | 245 | render_thread.join(); |
| 243 | 246 | ||
| 244 | system.Shutdown(); | 247 | 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" | |||
| 14 | // RT_MANIFEST | 14 | // RT_MANIFEST |
| 15 | // | 15 | // |
| 16 | 16 | ||
| 17 | 1 RT_MANIFEST "../../dist/yuzu.manifest" | 17 | 0 RT_MANIFEST "../../dist/yuzu.manifest" |