summaryrefslogtreecommitdiff
path: root/src/yuzu_cmd/config.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/yuzu_cmd/config.cpp')
-rw-r--r--src/yuzu_cmd/config.cpp196
1 files changed, 85 insertions, 111 deletions
diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp
index 60bf66ec0..325584a1a 100644
--- a/src/yuzu_cmd/config.cpp
+++ b/src/yuzu_cmd/config.cpp
@@ -241,6 +241,24 @@ static const std::array<int, 8> keyboard_mods{
241 SDL_SCANCODE_RCTRL, SDL_SCANCODE_RSHIFT, SDL_SCANCODE_RALT, SDL_SCANCODE_RGUI, 241 SDL_SCANCODE_RCTRL, SDL_SCANCODE_RSHIFT, SDL_SCANCODE_RALT, SDL_SCANCODE_RGUI,
242}; 242};
243 243
244template <>
245void Config::ReadSetting(const std::string& group, Settings::BasicSetting<float>& setting) {
246 setting = sdl2_config->GetReal(group, setting.GetLabel(), setting.GetDefault());
247}
248template <>
249void Config::ReadSetting(const std::string& group, Settings::BasicSetting<std::string>& setting) {
250 setting = sdl2_config->Get(group, setting.GetLabel(), setting.GetDefault());
251}
252template <>
253void Config::ReadSetting(const std::string& group, Settings::BasicSetting<bool>& setting) {
254 setting = sdl2_config->GetBoolean(group, setting.GetLabel(), setting.GetDefault());
255}
256template <typename Type>
257void Config::ReadSetting(const std::string& group, Settings::BasicSetting<Type>& setting) {
258 setting = static_cast<Type>(sdl2_config->GetInteger(group, setting.GetLabel(),
259 static_cast<long>(setting.GetDefault())));
260}
261
244void Config::ReadValues() { 262void Config::ReadValues() {
245 // Controls 263 // Controls
246 for (std::size_t p = 0; p < Settings::values.players.GetValue().size(); ++p) { 264 for (std::size_t p = 0; p < Settings::values.players.GetValue().size(); ++p) {
@@ -264,8 +282,7 @@ void Config::ReadValues() {
264 } 282 }
265 } 283 }
266 284
267 Settings::values.mouse_enabled = 285 ReadSetting("ControlsGeneral", Settings::values.mouse_enabled);
268 sdl2_config->GetBoolean("ControlsGeneral", "mouse_enabled", false);
269 for (int i = 0; i < Settings::NativeMouseButton::NumMouseButtons; ++i) { 286 for (int i = 0; i < Settings::NativeMouseButton::NumMouseButtons; ++i) {
270 std::string default_param = InputCommon::GenerateKeyboardParam(default_mouse_buttons[i]); 287 std::string default_param = InputCommon::GenerateKeyboardParam(default_mouse_buttons[i]);
271 Settings::values.mouse_buttons[i] = sdl2_config->Get( 288 Settings::values.mouse_buttons[i] = sdl2_config->Get(
@@ -275,14 +292,11 @@ void Config::ReadValues() {
275 Settings::values.mouse_buttons[i] = default_param; 292 Settings::values.mouse_buttons[i] = default_param;
276 } 293 }
277 294
278 Settings::values.motion_device = sdl2_config->Get( 295 ReadSetting("ControlsGeneral", Settings::values.motion_device);
279 "ControlsGeneral", "motion_device", "engine:motion_emu,update_period:100,sensitivity:0.01");
280 296
281 Settings::values.keyboard_enabled = 297 ReadSetting("ControlsGeneral", Settings::values.keyboard_enabled);
282 sdl2_config->GetBoolean("ControlsGeneral", "keyboard_enabled", false);
283 298
284 Settings::values.debug_pad_enabled = 299 ReadSetting("ControlsGeneral", Settings::values.debug_pad_enabled);
285 sdl2_config->GetBoolean("ControlsGeneral", "debug_pad_enabled", false);
286 for (int i = 0; i < Settings::NativeButton::NumButtons; ++i) { 300 for (int i = 0; i < Settings::NativeButton::NumButtons; ++i) {
287 std::string default_param = InputCommon::GenerateKeyboardParam(default_buttons[i]); 301 std::string default_param = InputCommon::GenerateKeyboardParam(default_buttons[i]);
288 Settings::values.debug_pad_buttons[i] = sdl2_config->Get( 302 Settings::values.debug_pad_buttons[i] = sdl2_config->Get(
@@ -303,12 +317,9 @@ void Config::ReadValues() {
303 Settings::values.debug_pad_analogs[i] = default_param; 317 Settings::values.debug_pad_analogs[i] = default_param;
304 } 318 }
305 319
306 Settings::values.vibration_enabled.SetValue( 320 ReadSetting("ControlsGeneral", Settings::values.vibration_enabled);
307 sdl2_config->GetBoolean("ControlsGeneral", "vibration_enabled", true)); 321 ReadSetting("ControlsGeneral", Settings::values.enable_accurate_vibrations);
308 Settings::values.enable_accurate_vibrations.SetValue( 322 ReadSetting("ControlsGeneral", Settings::values.motion_enabled);
309 sdl2_config->GetBoolean("ControlsGeneral", "enable_accurate_vibrations", false));
310 Settings::values.motion_enabled.SetValue(
311 sdl2_config->GetBoolean("ControlsGeneral", "motion_enabled", true));
312 Settings::values.touchscreen.enabled = 323 Settings::values.touchscreen.enabled =
313 sdl2_config->GetBoolean("ControlsGeneral", "touch_enabled", true); 324 sdl2_config->GetBoolean("ControlsGeneral", "touch_enabled", true);
314 Settings::values.touchscreen.rotation_angle = 325 Settings::values.touchscreen.rotation_angle =
@@ -349,13 +360,11 @@ void Config::ReadValues() {
349 Settings::TouchFromButtonMap{"default", {}}); 360 Settings::TouchFromButtonMap{"default", {}});
350 num_touch_from_button_maps = 1; 361 num_touch_from_button_maps = 1;
351 } 362 }
352 Settings::values.use_touch_from_button = 363 ReadSetting("ControlsGeneral", Settings::values.use_touch_from_button);
353 sdl2_config->GetBoolean("ControlsGeneral", "use_touch_from_button", false); 364 Settings::values.touch_from_button_map_index = std::clamp(
354 Settings::values.touch_from_button_map_index = 365 Settings::values.touch_from_button_map_index.GetValue(), 0, num_touch_from_button_maps - 1);
355 std::clamp(Settings::values.touch_from_button_map_index, 0, num_touch_from_button_maps - 1);
356 366
357 Settings::values.udp_input_servers = 367 ReadSetting("ControlsGeneral", Settings::values.udp_input_servers);
358 sdl2_config->Get("Controls", "udp_input_address", InputCommon::CemuhookUDP::DEFAULT_SRV);
359 368
360 std::transform(keyboard_keys.begin(), keyboard_keys.end(), 369 std::transform(keyboard_keys.begin(), keyboard_keys.end(),
361 Settings::values.keyboard_keys.begin(), InputCommon::GenerateKeyboardParam); 370 Settings::values.keyboard_keys.begin(), InputCommon::GenerateKeyboardParam);
@@ -367,8 +376,7 @@ void Config::ReadValues() {
367 Settings::values.keyboard_mods.begin(), InputCommon::GenerateKeyboardParam); 376 Settings::values.keyboard_mods.begin(), InputCommon::GenerateKeyboardParam);
368 377
369 // Data Storage 378 // Data Storage
370 Settings::values.use_virtual_sd = 379 ReadSetting("Data Storage", Settings::values.use_virtual_sd);
371 sdl2_config->GetBoolean("Data Storage", "use_virtual_sd", true);
372 FS::SetYuzuPath(FS::YuzuPath::NANDDir, 380 FS::SetYuzuPath(FS::YuzuPath::NANDDir,
373 sdl2_config->Get("Data Storage", "nand_directory", 381 sdl2_config->Get("Data Storage", "nand_directory",
374 FS::GetYuzuPathString(FS::YuzuPath::NANDDir))); 382 FS::GetYuzuPathString(FS::YuzuPath::NANDDir)));
@@ -381,18 +389,16 @@ void Config::ReadValues() {
381 FS::SetYuzuPath(FS::YuzuPath::DumpDir, 389 FS::SetYuzuPath(FS::YuzuPath::DumpDir,
382 sdl2_config->Get("Data Storage", "dump_directory", 390 sdl2_config->Get("Data Storage", "dump_directory",
383 FS::GetYuzuPathString(FS::YuzuPath::DumpDir))); 391 FS::GetYuzuPathString(FS::YuzuPath::DumpDir)));
384 Settings::values.gamecard_inserted = 392 ReadSetting("Data Storage", Settings::values.gamecard_inserted);
385 sdl2_config->GetBoolean("Data Storage", "gamecard_inserted", false); 393 ReadSetting("Data Storage", Settings::values.gamecard_current_game);
386 Settings::values.gamecard_current_game = 394 ReadSetting("Data Storage", Settings::values.gamecard_path);
387 sdl2_config->GetBoolean("Data Storage", "gamecard_current_game", false);
388 Settings::values.gamecard_path = sdl2_config->Get("Data Storage", "gamecard_path", "");
389 395
390 // System 396 // System
391 Settings::values.use_docked_mode.SetValue( 397 ReadSetting("System", Settings::values.use_docked_mode);
392 sdl2_config->GetBoolean("System", "use_docked_mode", true));
393 398
394 Settings::values.current_user = std::clamp<int>( 399 ReadSetting("System", Settings::values.current_user);
395 sdl2_config->GetInteger("System", "current_user", 0), 0, Service::Account::MAX_USERS - 1); 400 Settings::values.current_user = std::clamp<int>(Settings::values.current_user.GetValue(), 0,
401 Service::Account::MAX_USERS - 1);
396 402
397 const auto rng_seed_enabled = sdl2_config->GetBoolean("System", "rng_seed_enabled", false); 403 const auto rng_seed_enabled = sdl2_config->GetBoolean("System", "rng_seed_enabled", false);
398 if (rng_seed_enabled) { 404 if (rng_seed_enabled) {
@@ -409,89 +415,60 @@ void Config::ReadValues() {
409 Settings::values.custom_rtc = std::nullopt; 415 Settings::values.custom_rtc = std::nullopt;
410 } 416 }
411 417
412 Settings::values.language_index.SetValue( 418 ReadSetting("System", Settings::values.language_index);
413 sdl2_config->GetInteger("System", "language_index", 1)); 419 ReadSetting("System", Settings::values.time_zone_index);
414 Settings::values.time_zone_index.SetValue(
415 sdl2_config->GetInteger("System", "time_zone_index", 0));
416 420
417 // Core 421 // Core
418 Settings::values.use_multi_core.SetValue( 422 ReadSetting("Core", Settings::values.use_multi_core);
419 sdl2_config->GetBoolean("Core", "use_multi_core", true));
420 423
421 // Renderer 424 // Renderer
422 const int renderer_backend = sdl2_config->GetInteger( 425 ReadSetting("Renderer", Settings::values.renderer_backend);
423 "Renderer", "backend", static_cast<int>(Settings::RendererBackend::OpenGL)); 426 ReadSetting("Renderer", Settings::values.renderer_debug);
424 Settings::values.renderer_backend.SetValue( 427 ReadSetting("Renderer", Settings::values.vulkan_device);
425 static_cast<Settings::RendererBackend>(renderer_backend)); 428
426 Settings::values.renderer_debug = sdl2_config->GetBoolean("Renderer", "debug", false); 429 ReadSetting("Renderer", Settings::values.aspect_ratio);
427 Settings::values.vulkan_device.SetValue( 430 ReadSetting("Renderer", Settings::values.max_anisotropy);
428 sdl2_config->GetInteger("Renderer", "vulkan_device", 0)); 431 ReadSetting("Renderer", Settings::values.use_frame_limit);
429 432 ReadSetting("Renderer", Settings::values.frame_limit);
430 Settings::values.aspect_ratio.SetValue( 433 ReadSetting("Renderer", Settings::values.use_disk_shader_cache);
431 static_cast<int>(sdl2_config->GetInteger("Renderer", "aspect_ratio", 0))); 434 ReadSetting("Renderer", Settings::values.gpu_accuracy);
432 Settings::values.max_anisotropy.SetValue( 435 ReadSetting("Renderer", Settings::values.use_asynchronous_gpu_emulation);
433 static_cast<int>(sdl2_config->GetInteger("Renderer", "max_anisotropy", 0))); 436 ReadSetting("Renderer", Settings::values.use_vsync);
434 Settings::values.use_frame_limit.SetValue( 437 ReadSetting("Renderer", Settings::values.disable_fps_limit);
435 sdl2_config->GetBoolean("Renderer", "use_frame_limit", true)); 438 ReadSetting("Renderer", Settings::values.use_assembly_shaders);
436 Settings::values.frame_limit.SetValue( 439 ReadSetting("Renderer", Settings::values.use_asynchronous_shaders);
437 static_cast<u16>(sdl2_config->GetInteger("Renderer", "frame_limit", 100))); 440 ReadSetting("Renderer", Settings::values.use_nvdec_emulation);
438 Settings::values.use_disk_shader_cache.SetValue( 441 ReadSetting("Renderer", Settings::values.accelerate_astc);
439 sdl2_config->GetBoolean("Renderer", "use_disk_shader_cache", false)); 442 ReadSetting("Renderer", Settings::values.use_fast_gpu_time);
440 const int gpu_accuracy_level = sdl2_config->GetInteger("Renderer", "gpu_accuracy", 1); 443
441 Settings::values.gpu_accuracy.SetValue(static_cast<Settings::GPUAccuracy>(gpu_accuracy_level)); 444 ReadSetting("Renderer", Settings::values.bg_red);
442 Settings::values.use_asynchronous_gpu_emulation.SetValue( 445 ReadSetting("Renderer", Settings::values.bg_green);
443 sdl2_config->GetBoolean("Renderer", "use_asynchronous_gpu_emulation", true)); 446 ReadSetting("Renderer", Settings::values.bg_blue);
444 Settings::values.use_vsync.SetValue(
445 static_cast<u16>(sdl2_config->GetInteger("Renderer", "use_vsync", 1)));
446 Settings::values.disable_fps_limit.SetValue(
447 sdl2_config->GetBoolean("Renderer", "disable_fps_limit", false));
448 Settings::values.use_assembly_shaders.SetValue(
449 sdl2_config->GetBoolean("Renderer", "use_assembly_shaders", true));
450 Settings::values.use_asynchronous_shaders.SetValue(
451 sdl2_config->GetBoolean("Renderer", "use_asynchronous_shaders", false));
452 Settings::values.use_nvdec_emulation.SetValue(
453 sdl2_config->GetBoolean("Renderer", "use_nvdec_emulation", true));
454 Settings::values.accelerate_astc.SetValue(
455 sdl2_config->GetBoolean("Renderer", "accelerate_astc", true));
456 Settings::values.use_fast_gpu_time.SetValue(
457 sdl2_config->GetBoolean("Renderer", "use_fast_gpu_time", true));
458
459 Settings::values.bg_red.SetValue(
460 static_cast<float>(sdl2_config->GetReal("Renderer", "bg_red", 0.0)));
461 Settings::values.bg_green.SetValue(
462 static_cast<float>(sdl2_config->GetReal("Renderer", "bg_green", 0.0)));
463 Settings::values.bg_blue.SetValue(
464 static_cast<float>(sdl2_config->GetReal("Renderer", "bg_blue", 0.0)));
465 447
466 // Audio 448 // Audio
467 Settings::values.sink_id = sdl2_config->Get("Audio", "output_engine", "auto"); 449 ReadSetting("Audio", Settings::values.sink_id);
468 Settings::values.enable_audio_stretching.SetValue( 450 ReadSetting("Audio", Settings::values.enable_audio_stretching);
469 sdl2_config->GetBoolean("Audio", "enable_audio_stretching", true)); 451 ReadSetting("Audio", Settings::values.audio_device_id);
470 Settings::values.audio_device_id = sdl2_config->Get("Audio", "output_device", "auto"); 452 ReadSetting("Audio", Settings::values.volume);
471 Settings::values.volume.SetValue(
472 static_cast<float>(sdl2_config->GetReal("Audio", "volume", 1)));
473 453
474 // Miscellaneous 454 // Miscellaneous
475 Settings::values.log_filter = sdl2_config->Get("Miscellaneous", "log_filter", "*:Trace"); 455 // log_filter has a different default here than from common
476 Settings::values.use_dev_keys = sdl2_config->GetBoolean("Miscellaneous", "use_dev_keys", false); 456 Settings::values.log_filter =
457 sdl2_config->Get("Miscellaneous", Settings::values.log_filter.GetLabel(), "*:Trace");
458 ReadSetting("Miscellaneous", Settings::values.use_dev_keys);
477 459
478 // Debugging 460 // Debugging
479 Settings::values.record_frame_times = 461 Settings::values.record_frame_times =
480 sdl2_config->GetBoolean("Debugging", "record_frame_times", false); 462 sdl2_config->GetBoolean("Debugging", "record_frame_times", false);
481 Settings::values.program_args = sdl2_config->Get("Debugging", "program_args", ""); 463 ReadSetting("Debugging", Settings::values.program_args);
482 Settings::values.dump_exefs = sdl2_config->GetBoolean("Debugging", "dump_exefs", false); 464 ReadSetting("Debugging", Settings::values.dump_exefs);
483 Settings::values.dump_nso = sdl2_config->GetBoolean("Debugging", "dump_nso", false); 465 ReadSetting("Debugging", Settings::values.dump_nso);
484 Settings::values.enable_fs_access_log = 466 ReadSetting("Debugging", Settings::values.enable_fs_access_log);
485 sdl2_config->GetBoolean("Debugging", "enable_fs_access_log", false); 467 ReadSetting("Debugging", Settings::values.reporting_services);
486 Settings::values.reporting_services = 468 ReadSetting("Debugging", Settings::values.quest_flag);
487 sdl2_config->GetBoolean("Debugging", "reporting_services", false); 469 ReadSetting("Debugging", Settings::values.use_debug_asserts);
488 Settings::values.quest_flag = sdl2_config->GetBoolean("Debugging", "quest_flag", false); 470 ReadSetting("Debugging", Settings::values.use_auto_stub);
489 Settings::values.use_debug_asserts = 471 ReadSetting("Debugging", Settings::values.disable_macro_jit);
490 sdl2_config->GetBoolean("Debugging", "use_debug_asserts", false);
491 Settings::values.use_auto_stub = sdl2_config->GetBoolean("Debugging", "use_auto_stub", false);
492
493 Settings::values.disable_macro_jit =
494 sdl2_config->GetBoolean("Debugging", "disable_macro_jit", false);
495 472
496 const auto title_list = sdl2_config->Get("AddOns", "title_ids", ""); 473 const auto title_list = sdl2_config->Get("AddOns", "title_ids", "");
497 std::stringstream ss(title_list); 474 std::stringstream ss(title_list);
@@ -511,17 +488,14 @@ void Config::ReadValues() {
511 } 488 }
512 489
513 // Web Service 490 // Web Service
514 Settings::values.enable_telemetry = 491 ReadSetting("WebService", Settings::values.enable_telemetry);
515 sdl2_config->GetBoolean("WebService", "enable_telemetry", true); 492 ReadSetting("WebService", Settings::values.web_api_url);
516 Settings::values.web_api_url = 493 ReadSetting("WebService", Settings::values.yuzu_username);
517 sdl2_config->Get("WebService", "web_api_url", "https://api.yuzu-emu.org"); 494 ReadSetting("WebService", Settings::values.yuzu_token);
518 Settings::values.yuzu_username = sdl2_config->Get("WebService", "yuzu_username", "");
519 Settings::values.yuzu_token = sdl2_config->Get("WebService", "yuzu_token", "");
520 495
521 // Services 496 // Services
522 Settings::values.bcat_backend = sdl2_config->Get("Services", "bcat_backend", "none"); 497 ReadSetting("Services", Settings::values.bcat_backend);
523 Settings::values.bcat_boxcat_local = 498 ReadSetting("Services", Settings::values.bcat_boxcat_local);
524 sdl2_config->GetBoolean("Services", "bcat_boxcat_local", false);
525} 499}
526 500
527void Config::Reload() { 501void Config::Reload() {