From 5a06bb1808af3ad9789002fd5afc4b50f200fdef Mon Sep 17 00:00:00 2001 From: lat9nq Date: Mon, 8 Jun 2020 17:12:40 -0400 Subject: [PATCH] Switch game settings to use a pointer In order to add full per-game settings, we need to be able to tell yuzu to switch to using either the global or game configuration. Using a pointer makes it easier to switch. --- src/audio_core/audio_out.cpp | 2 +- src/audio_core/cubeb_sink.cpp | 2 +- src/core/arm/dynarmic/arm_dynarmic_64.cpp | 2 +- src/core/core.cpp | 12 +- src/core/crypto/key_manager.cpp | 4 +- src/core/file_sys/bis_factory.cpp | 6 +- src/core/file_sys/patch_manager.cpp | 16 +- src/core/file_sys/sdmc_factory.cpp | 2 +- src/core/frontend/applets/profile_select.cpp | 2 +- src/core/frontend/framebuffer_layout.cpp | 4 +- src/core/frontend/framebuffer_layout.h | 2 +- src/core/hle/kernel/process.cpp | 2 +- src/core/hle/service/acc/profile_manager.cpp | 2 +- src/core/hle/service/am/am.cpp | 14 +- src/core/hle/service/aoc/aoc_u.cpp | 4 +- src/core/hle/service/apm/controller.cpp | 2 +- src/core/hle/service/bcat/backend/boxcat.cpp | 6 +- src/core/hle/service/bcat/module.cpp | 2 +- .../hle/service/hid/controllers/debug_pad.cpp | 8 +- .../hle/service/hid/controllers/keyboard.cpp | 4 +- .../hle/service/hid/controllers/mouse.cpp | 6 +- src/core/hle/service/hid/controllers/npad.cpp | 18 +- .../service/hid/controllers/touchscreen.cpp | 12 +- src/core/hle/service/hid/hid.cpp | 4 +- src/core/hle/service/nifm/nifm.cpp | 6 +- src/core/hle/service/ns/ns.cpp | 2 +- src/core/hle/service/set/set.cpp | 8 +- src/core/hle/service/spl/module.cpp | 2 +- src/core/hle/service/time/time_manager.cpp | 2 +- src/core/hle/service/vi/vi.cpp | 22 +- src/core/loader/nro.cpp | 4 +- src/core/loader/nso.cpp | 6 +- src/core/perf_stats.cpp | 6 +- src/core/reporter.cpp | 2 +- src/core/settings.cpp | 66 ++-- src/core/settings.h | 8 +- src/core/telemetry_session.cpp | 34 +- src/input_common/udp/udp.cpp | 8 +- src/video_core/buffer_cache/buffer_cache.h | 4 +- src/video_core/gpu.cpp | 2 +- src/video_core/macro/macro.cpp | 2 +- src/video_core/query_cache.h | 2 +- src/video_core/renderer_base.cpp | 2 +- src/video_core/renderer_opengl/gl_device.cpp | 4 +- .../renderer_opengl/gl_shader_disk_cache.cpp | 2 +- .../renderer_opengl/renderer_opengl.cpp | 6 +- .../renderer_vulkan/renderer_vulkan.cpp | 6 +- src/video_core/renderer_vulkan/vk_device.cpp | 2 +- src/video_core/texture_cache/texture_cache.h | 2 +- src/video_core/textures/texture.cpp | 2 +- src/video_core/video_core.cpp | 8 +- src/yuzu/bootmanager.cpp | 10 +- src/yuzu/configuration/config.cpp | 308 +++++++++--------- src/yuzu/configuration/configure_audio.cpp | 16 +- src/yuzu/configuration/configure_debug.cpp | 40 +-- .../configuration/configure_filesystem.cpp | 36 +- src/yuzu/configuration/configure_general.cpp | 10 +- src/yuzu/configuration/configure_graphics.cpp | 30 +- .../configure_graphics_advanced.cpp | 24 +- src/yuzu/configuration/configure_input.cpp | 42 +-- .../configuration/configure_input_player.cpp | 38 +-- .../configuration/configure_input_simple.cpp | 36 +- .../configure_mouse_advanced.cpp | 4 +- .../configuration/configure_per_general.cpp | 6 +- .../configure_profile_manager.cpp | 8 +- src/yuzu/configuration/configure_service.cpp | 4 +- src/yuzu/configuration/configure_system.cpp | 36 +- .../configure_touchscreen_advanced.cpp | 16 +- src/yuzu/configuration/configure_web.cpp | 14 +- src/yuzu/main.cpp | 48 +-- src/yuzu_cmd/config.cpp | 174 +++++----- .../emu_window/emu_window_sdl2_gl.cpp | 4 +- src/yuzu_cmd/yuzu.cpp | 14 +- src/yuzu_tester/config.cpp | 102 +++--- src/yuzu_tester/yuzu.cpp | 4 +- 75 files changed, 694 insertions(+), 688 deletions(-) diff --git a/src/audio_core/audio_out.cpp b/src/audio_core/audio_out.cpp index 8619a3f030..02d461915a 100644 --- a/src/audio_core/audio_out.cpp +++ b/src/audio_core/audio_out.cpp @@ -30,7 +30,7 @@ StreamPtr AudioOut::OpenStream(Core::Timing::CoreTiming& core_timing, u32 sample u32 num_channels, std::string&& name, Stream::ReleaseCallback&& release_callback) { if (!sink) { - sink = CreateSinkFromID(Settings::values.sink_id, Settings::values.audio_device_id); + sink = CreateSinkFromID(Settings::values->sink_id, Settings::values->audio_device_id); } return std::make_shared( diff --git a/src/audio_core/cubeb_sink.cpp b/src/audio_core/cubeb_sink.cpp index c4e0e30fed..d1b6791d42 100644 --- a/src/audio_core/cubeb_sink.cpp +++ b/src/audio_core/cubeb_sink.cpp @@ -193,7 +193,7 @@ long CubebSinkStream::DataCallback(cubeb_stream* stream, void* user_data, const const std::size_t samples_to_write = num_channels * num_frames; std::size_t samples_written; - if (Settings::values.enable_audio_stretching) { + if (Settings::values->enable_audio_stretching) { const std::vector in{impl->queue.Pop()}; const std::size_t num_in{in.size() / num_channels}; s16* const out{reinterpret_cast(buffer)}; diff --git a/src/core/arm/dynarmic/arm_dynarmic_64.cpp b/src/core/arm/dynarmic/arm_dynarmic_64.cpp index 7909810346..5ac87a6308 100644 --- a/src/core/arm/dynarmic/arm_dynarmic_64.cpp +++ b/src/core/arm/dynarmic/arm_dynarmic_64.cpp @@ -192,7 +192,7 @@ std::shared_ptr ARM_Dynarmic_64::MakeJit(Common::PageTable& config.define_unpredictable_behaviour = true; // Optimizations - if (Settings::values.disable_cpu_opt) { + if (Settings::values->disable_cpu_opt) { config.enable_optimizations = false; config.enable_fast_dispatch = false; } diff --git a/src/core/core.cpp b/src/core/core.cpp index 1a243c515a..0321e474bf 100644 --- a/src/core/core.cpp +++ b/src/core/core.cpp @@ -161,8 +161,8 @@ struct System::Impl { const auto current_time = std::chrono::duration_cast( std::chrono::system_clock::now().time_since_epoch()); - Settings::values.custom_rtc_differential = - Settings::values.custom_rtc.value_or(current_time) - current_time; + Settings::values->custom_rtc_differential = + Settings::values->custom_rtc.value_or(current_time) - current_time; // Create a default fs if one doesn't already exist. if (virtual_filesystem == nullptr) @@ -241,12 +241,12 @@ struct System::Impl { main_process->Run(load_parameters->main_thread_priority, load_parameters->main_thread_stack_size); - if (Settings::values.gamecard_inserted) { - if (Settings::values.gamecard_current_game) { + if (Settings::values->gamecard_inserted) { + if (Settings::values->gamecard_current_game) { fs_controller.SetGameCard(GetGameFileFromPath(virtual_filesystem, filepath)); - } else if (!Settings::values.gamecard_path.empty()) { + } else if (!Settings::values->gamecard_path.empty()) { fs_controller.SetGameCard( - GetGameFileFromPath(virtual_filesystem, Settings::values.gamecard_path)); + GetGameFileFromPath(virtual_filesystem, Settings::values->gamecard_path)); } } diff --git a/src/core/crypto/key_manager.cpp b/src/core/crypto/key_manager.cpp index 8997c70824..70bb4886fe 100644 --- a/src/core/crypto/key_manager.cpp +++ b/src/core/crypto/key_manager.cpp @@ -487,7 +487,7 @@ KeyManager::KeyManager() { // Initialize keys const std::string hactool_keys_dir = FileUtil::GetHactoolConfigurationPath(); const std::string yuzu_keys_dir = FileUtil::GetUserPath(FileUtil::UserPath::KeysDir); - if (Settings::values.use_dev_keys) { + if (Settings::values->use_dev_keys) { dev_mode = true; AttemptLoadKeyFile(yuzu_keys_dir, hactool_keys_dir, "dev.keys", false); AttemptLoadKeyFile(yuzu_keys_dir, yuzu_keys_dir, "dev.keys_autogenerated", false); @@ -766,7 +766,7 @@ bool KeyManager::KeyFileExists(bool title) { FileUtil::Exists(yuzu_keys_dir + DIR_SEP + "title.keys"); } - if (Settings::values.use_dev_keys) { + if (Settings::values->use_dev_keys) { return FileUtil::Exists(hactool_keys_dir + DIR_SEP + "dev.keys") || FileUtil::Exists(yuzu_keys_dir + DIR_SEP + "dev.keys"); } diff --git a/src/core/file_sys/bis_factory.cpp b/src/core/file_sys/bis_factory.cpp index 8935a62c30..f49dbce08b 100644 --- a/src/core/file_sys/bis_factory.cpp +++ b/src/core/file_sys/bis_factory.cpp @@ -117,7 +117,7 @@ u64 BISFactory::GetSystemNANDFreeSpace() const { } u64 BISFactory::GetSystemNANDTotalSpace() const { - return static_cast(Settings::values.nand_system_size); + return static_cast(Settings::values->nand_system_size); } u64 BISFactory::GetUserNANDFreeSpace() const { @@ -129,11 +129,11 @@ u64 BISFactory::GetUserNANDFreeSpace() const { } u64 BISFactory::GetUserNANDTotalSpace() const { - return static_cast(Settings::values.nand_user_size); + return static_cast(Settings::values->nand_user_size); } u64 BISFactory::GetFullNANDTotalSpace() const { - return static_cast(Settings::values.nand_total_size); + return static_cast(Settings::values->nand_total_size); } VirtualDir BISFactory::GetBCATDirectory(u64 title_id) const { diff --git a/src/core/file_sys/patch_manager.cpp b/src/core/file_sys/patch_manager.cpp index c47ff863ec..c86e0b5871 100644 --- a/src/core/file_sys/patch_manager.cpp +++ b/src/core/file_sys/patch_manager.cpp @@ -80,7 +80,7 @@ VirtualDir PatchManager::PatchExeFS(VirtualDir exefs) const { if (exefs == nullptr) return exefs; - if (Settings::values.dump_exefs) { + if (Settings::values->dump_exefs) { LOG_INFO(Loader, "Dumping ExeFS for title_id={:016X}", title_id); const auto dump_dir = Core::System::GetInstance().GetFileSystemController().GetModificationDumpRoot(title_id); @@ -92,7 +92,7 @@ VirtualDir PatchManager::PatchExeFS(VirtualDir exefs) const { const auto& installed = Core::System::GetInstance().GetContentProvider(); - const auto& disabled = Settings::values.disabled_addons[title_id]; + const auto& disabled = Settings::values->disabled_addons[title_id]; const auto update_disabled = std::find(disabled.cbegin(), disabled.cend(), "Update") != disabled.cend(); @@ -140,7 +140,7 @@ VirtualDir PatchManager::PatchExeFS(VirtualDir exefs) const { std::vector PatchManager::CollectPatches(const std::vector& patch_dirs, const std::string& build_id) const { - const auto& disabled = Settings::values.disabled_addons[title_id]; + const auto& disabled = Settings::values->disabled_addons[title_id]; std::vector out; out.reserve(patch_dirs.size()); @@ -192,7 +192,7 @@ std::vector PatchManager::PatchNSO(const std::vector& nso, const std::st const auto build_id_raw = Common::HexToString(header.build_id); const auto build_id = build_id_raw.substr(0, build_id_raw.find_last_not_of('0') + 1); - if (Settings::values.dump_nso) { + if (Settings::values->dump_nso) { LOG_INFO(Loader, "Dumping NSO for name={}, build_id={}, title_id={:016X}", name, build_id, title_id); const auto dump_dir = @@ -302,7 +302,7 @@ std::vector PatchManager::CreateCheatList( return {}; } - const auto& disabled = Settings::values.disabled_addons[title_id]; + const auto& disabled = Settings::values->disabled_addons[title_id]; auto patch_dirs = load_dir->GetSubdirectories(); std::sort(patch_dirs.begin(), patch_dirs.end(), [](const VirtualDir& l, const VirtualDir& r) { return l->GetName() < r->GetName(); }); @@ -344,7 +344,7 @@ static void ApplyLayeredFS(VirtualFile& romfs, u64 title_id, ContentRecordType t return; } - const auto& disabled = Settings::values.disabled_addons[title_id]; + const auto& disabled = Settings::values->disabled_addons[title_id]; auto patch_dirs = load_dir->GetSubdirectories(); std::sort(patch_dirs.begin(), patch_dirs.end(), [](const VirtualDir& l, const VirtualDir& r) { return l->GetName() < r->GetName(); }); @@ -409,7 +409,7 @@ VirtualFile PatchManager::PatchRomFS(VirtualFile romfs, u64 ivfc_offset, Content const auto update_tid = GetUpdateTitleID(title_id); const auto update = installed.GetEntryRaw(update_tid, type); - const auto& disabled = Settings::values.disabled_addons[title_id]; + const auto& disabled = Settings::values->disabled_addons[title_id]; const auto update_disabled = std::find(disabled.cbegin(), disabled.cend(), "Update") != disabled.cend(); @@ -453,7 +453,7 @@ std::map> PatchManager::GetPatchVersionNam return {}; std::map> out; const auto& installed = Core::System::GetInstance().GetContentProvider(); - const auto& disabled = Settings::values.disabled_addons[title_id]; + const auto& disabled = Settings::values->disabled_addons[title_id]; // Game Updates const auto update_tid = GetUpdateTitleID(title_id); diff --git a/src/core/file_sys/sdmc_factory.cpp b/src/core/file_sys/sdmc_factory.cpp index 5113a1ca64..b1d284511c 100644 --- a/src/core/file_sys/sdmc_factory.cpp +++ b/src/core/file_sys/sdmc_factory.cpp @@ -46,7 +46,7 @@ u64 SDMCFactory::GetSDMCFreeSpace() const { } u64 SDMCFactory::GetSDMCTotalSpace() const { - return static_cast(Settings::values.sdmc_size); + return static_cast(Settings::values->sdmc_size); } } // namespace FileSys diff --git a/src/core/frontend/applets/profile_select.cpp b/src/core/frontend/applets/profile_select.cpp index 4df3574d26..af66c57628 100644 --- a/src/core/frontend/applets/profile_select.cpp +++ b/src/core/frontend/applets/profile_select.cpp @@ -13,7 +13,7 @@ ProfileSelectApplet::~ProfileSelectApplet() = default; void DefaultProfileSelectApplet::SelectProfile( std::function)> callback) const { Service::Account::ProfileManager manager; - callback(manager.GetUser(Settings::values.current_user).value_or(Common::UUID{})); + callback(manager.GetUser(Settings::values->current_user).value_or(Common::UUID{})); LOG_INFO(Service_ACC, "called, selecting current user instead of prompting..."); } diff --git a/src/core/frontend/framebuffer_layout.cpp b/src/core/frontend/framebuffer_layout.cpp index d0c43447c0..b262a81b26 100644 --- a/src/core/frontend/framebuffer_layout.cpp +++ b/src/core/frontend/framebuffer_layout.cpp @@ -29,7 +29,7 @@ FramebufferLayout DefaultFrameLayout(u32 width, u32 height) { const float window_aspect_ratio = static_cast(height) / width; const float emulation_aspect_ratio = EmulationAspectRatio( - static_cast(Settings::values.aspect_ratio), window_aspect_ratio); + static_cast(Settings::values->aspect_ratio), window_aspect_ratio); const Common::Rectangle screen_window_area{0, 0, width, height}; Common::Rectangle screen = MaxRectangle(screen_window_area, emulation_aspect_ratio); @@ -47,7 +47,7 @@ FramebufferLayout DefaultFrameLayout(u32 width, u32 height) { FramebufferLayout FrameLayoutFromResolutionScale(u32 res_scale) { u32 width, height; - if (Settings::values.use_docked_mode) { + if (Settings::values->use_docked_mode) { width = ScreenDocked::Width * res_scale; height = ScreenDocked::Height * res_scale; } else { diff --git a/src/core/frontend/framebuffer_layout.h b/src/core/frontend/framebuffer_layout.h index 91ecc30ab4..46f4a02b19 100644 --- a/src/core/frontend/framebuffer_layout.h +++ b/src/core/frontend/framebuffer_layout.h @@ -63,7 +63,7 @@ FramebufferLayout FrameLayoutFromResolutionScale(u32 res_scale); /** * Convenience method to determine emulation aspect ratio - * @param aspect Represents the index of aspect ratio stored in Settings::values.aspect_ratio + * @param aspect Represents the index of aspect ratio stored in Settings::values->aspect_ratio * @param window_aspect_ratio Current window aspect ratio * @return Emulation render window aspect ratio */ diff --git a/src/core/hle/kernel/process.cpp b/src/core/hle/kernel/process.cpp index f9d7c024d0..6e7180ddca 100644 --- a/src/core/hle/kernel/process.cpp +++ b/src/core/hle/kernel/process.cpp @@ -123,7 +123,7 @@ std::shared_ptr Process::Create(Core::System& system, std::string name, : kernel.CreateNewUserProcessID(); process->capabilities.InitializeForMetadatalessProcess(); - std::mt19937 rng(Settings::values.rng_seed.value_or(0)); + std::mt19937 rng(Settings::values->rng_seed.value_or(0)); std::uniform_int_distribution distribution; std::generate(process->random_entropy.begin(), process->random_entropy.end(), [&] { return distribution(rng); }); diff --git a/src/core/hle/service/acc/profile_manager.cpp b/src/core/hle/service/acc/profile_manager.cpp index eb8c816453..2ca652d64b 100644 --- a/src/core/hle/service/acc/profile_manager.cpp +++ b/src/core/hle/service/acc/profile_manager.cpp @@ -43,7 +43,7 @@ ProfileManager::ProfileManager() { if (user_count == 0) CreateNewUser(UUID::Generate(), "yuzu"); - auto current = std::clamp(Settings::values.current_user, 0, MAX_USERS - 1); + auto current = std::clamp(Settings::values->current_user, 0, MAX_USERS - 1); if (UserExistsIndex(current)) current = 0; diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp index 24cfb370bb..d2916a31c8 100644 --- a/src/core/hle/service/am/am.cpp +++ b/src/core/hle/service/am/am.cpp @@ -729,16 +729,16 @@ void ICommonStateGetter::GetDefaultDisplayResolution(Kernel::HLERequestContext& IPC::ResponseBuilder rb{ctx, 4}; rb.Push(RESULT_SUCCESS); - if (Settings::values.use_docked_mode) { + if (Settings::values->use_docked_mode) { rb.Push(static_cast(Service::VI::DisplayResolution::DockedWidth) * - static_cast(Settings::values.resolution_factor)); + static_cast(Settings::values->resolution_factor)); rb.Push(static_cast(Service::VI::DisplayResolution::DockedHeight) * - static_cast(Settings::values.resolution_factor)); + static_cast(Settings::values->resolution_factor)); } else { rb.Push(static_cast(Service::VI::DisplayResolution::UndockedWidth) * - static_cast(Settings::values.resolution_factor)); + static_cast(Settings::values->resolution_factor)); rb.Push(static_cast(Service::VI::DisplayResolution::UndockedHeight) * - static_cast(Settings::values.resolution_factor)); + static_cast(Settings::values->resolution_factor)); } } @@ -802,7 +802,7 @@ void IStorage::Open(Kernel::HLERequestContext& ctx) { } void ICommonStateGetter::GetOperationMode(Kernel::HLERequestContext& ctx) { - const bool use_docked_mode{Settings::values.use_docked_mode}; + const bool use_docked_mode{Settings::values->use_docked_mode}; LOG_DEBUG(Service_AM, "called, use_docked_mode={}", use_docked_mode); IPC::ResponseBuilder rb{ctx, 3}; @@ -1289,7 +1289,7 @@ void IApplicationFunctions::PopLaunchParameter(Kernel::HLERequestContext& ctx) { params.is_account_selected = 1; Account::ProfileManager profile_manager{}; - const auto uuid = profile_manager.GetUser(Settings::values.current_user); + const auto uuid = profile_manager.GetUser(Settings::values->current_user); ASSERT(uuid); params.current_user = uuid->uuid; diff --git a/src/core/hle/service/aoc/aoc_u.cpp b/src/core/hle/service/aoc/aoc_u.cpp index 8e79f707ba..d62c6b9f5d 100644 --- a/src/core/hle/service/aoc/aoc_u.cpp +++ b/src/core/hle/service/aoc/aoc_u.cpp @@ -91,7 +91,7 @@ void AOC_U::CountAddOnContent(Kernel::HLERequestContext& ctx) { const auto current = system.CurrentProcess()->GetTitleID(); - const auto& disabled = Settings::values.disabled_addons[current]; + const auto& disabled = Settings::values->disabled_addons[current]; if (std::find(disabled.begin(), disabled.end(), "DLC") != disabled.end()) { rb.Push(0); return; @@ -119,7 +119,7 @@ void AOC_U::ListAddOnContent(Kernel::HLERequestContext& ctx) { const auto current = system.CurrentProcess()->GetTitleID(); std::vector out; - const auto& disabled = Settings::values.disabled_addons[current]; + const auto& disabled = Settings::values->disabled_addons[current]; if (std::find(disabled.begin(), disabled.end(), "DLC") == disabled.end()) { for (u64 content_id : add_on_content) { if ((content_id & DLC_BASE_TITLE_ID_MASK) != current) { diff --git a/src/core/hle/service/apm/controller.cpp b/src/core/hle/service/apm/controller.cpp index 25a886238c..6848e8ac28 100644 --- a/src/core/hle/service/apm/controller.cpp +++ b/src/core/hle/service/apm/controller.cpp @@ -69,7 +69,7 @@ void Controller::SetFromCpuBoostMode(CpuBoostMode mode) { } PerformanceMode Controller::GetCurrentPerformanceMode() const { - return Settings::values.use_docked_mode ? PerformanceMode::Docked : PerformanceMode::Handheld; + return Settings::values->use_docked_mode ? PerformanceMode::Docked : PerformanceMode::Handheld; } PerformanceConfiguration Controller::GetCurrentPerformanceConfiguration(PerformanceMode mode) { diff --git a/src/core/hle/service/bcat/backend/boxcat.cpp b/src/core/hle/service/bcat/backend/boxcat.cpp index d29e78d7eb..fccdb17fd1 100644 --- a/src/core/hle/service/bcat/backend/boxcat.cpp +++ b/src/core/hle/service/bcat/backend/boxcat.cpp @@ -271,7 +271,7 @@ void SynchronizeInternal(AM::Applets::AppletManager& applet_manager, DirectoryGe std::optional dir_name = {}) { progress.SetNeedHLELock(true); - if (Settings::values.bcat_boxcat_local) { + if (Settings::values->bcat_boxcat_local) { LOG_INFO(Service_BCAT, "Boxcat using local data by override, skipping download."); const auto dir = dir_getter(title.title_id); if (dir) @@ -384,7 +384,7 @@ bool Boxcat::SynchronizeDirectory(TitleIDVersion title, std::string name, } bool Boxcat::Clear(u64 title_id) { - if (Settings::values.bcat_boxcat_local) { + if (Settings::values->bcat_boxcat_local) { LOG_INFO(Service_BCAT, "Boxcat using local data by override, skipping clear."); return true; } @@ -412,7 +412,7 @@ void Boxcat::SetPassphrase(u64 title_id, const Passphrase& passphrase) { std::optional> Boxcat::GetLaunchParameter(TitleIDVersion title) { const auto path{GetBINFilePath(title.title_id)}; - if (Settings::values.bcat_boxcat_local) { + if (Settings::values->bcat_boxcat_local) { LOG_INFO(Service_BCAT, "Boxcat using local data by override, skipping download."); } else { Boxcat::Client client{path, title.title_id, title.build_id}; diff --git a/src/core/hle/service/bcat/module.cpp b/src/core/hle/service/bcat/module.cpp index 603b64d4fa..82f161618e 100644 --- a/src/core/hle/service/bcat/module.cpp +++ b/src/core/hle/service/bcat/module.cpp @@ -571,7 +571,7 @@ void Module::Interface::CreateDeliveryCacheStorageServiceWithApplicationId( std::unique_ptr CreateBackendFromSettings([[maybe_unused]] Core::System& system, DirectoryGetter getter) { #ifdef YUZU_ENABLE_BOXCAT - if (Settings::values.bcat_backend == "boxcat") { + if (Settings::values->bcat_backend == "boxcat") { return std::make_unique(system.GetAppletManager(), std::move(getter)); } #endif diff --git a/src/core/hle/service/hid/controllers/debug_pad.cpp b/src/core/hle/service/hid/controllers/debug_pad.cpp index cb35919e93..9da40a98ee 100644 --- a/src/core/hle/service/hid/controllers/debug_pad.cpp +++ b/src/core/hle/service/hid/controllers/debug_pad.cpp @@ -71,12 +71,12 @@ void Controller_DebugPad::OnUpdate(const Core::Timing::CoreTiming& core_timing, } void Controller_DebugPad::OnLoadInputDevices() { - std::transform(Settings::values.debug_pad_buttons.begin(), - Settings::values.debug_pad_buttons.begin() + + std::transform(Settings::values->debug_pad_buttons.begin(), + Settings::values->debug_pad_buttons.begin() + Settings::NativeButton::NUM_BUTTONS_HID, buttons.begin(), Input::CreateDevice); - std::transform(Settings::values.debug_pad_analogs.begin(), - Settings::values.debug_pad_analogs.end(), analogs.begin(), + std::transform(Settings::values->debug_pad_analogs.begin(), + Settings::values->debug_pad_analogs.end(), analogs.begin(), Input::CreateDevice); } } // namespace Service::HID diff --git a/src/core/hle/service/hid/controllers/keyboard.cpp b/src/core/hle/service/hid/controllers/keyboard.cpp index feae89525a..ae37cf09e9 100644 --- a/src/core/hle/service/hid/controllers/keyboard.cpp +++ b/src/core/hle/service/hid/controllers/keyboard.cpp @@ -53,9 +53,9 @@ void Controller_Keyboard::OnUpdate(const Core::Timing::CoreTiming& core_timing, } void Controller_Keyboard::OnLoadInputDevices() { - std::transform(Settings::values.keyboard_keys.begin(), Settings::values.keyboard_keys.end(), + std::transform(Settings::values->keyboard_keys.begin(), Settings::values->keyboard_keys.end(), keyboard_keys.begin(), Input::CreateDevice); - std::transform(Settings::values.keyboard_mods.begin(), Settings::values.keyboard_mods.end(), + std::transform(Settings::values->keyboard_mods.begin(), Settings::values->keyboard_mods.end(), keyboard_mods.begin(), Input::CreateDevice); } } // namespace Service::HID diff --git a/src/core/hle/service/hid/controllers/mouse.cpp b/src/core/hle/service/hid/controllers/mouse.cpp index ac40989c58..7154e74905 100644 --- a/src/core/hle/service/hid/controllers/mouse.cpp +++ b/src/core/hle/service/hid/controllers/mouse.cpp @@ -36,7 +36,7 @@ void Controller_Mouse::OnUpdate(const Core::Timing::CoreTiming& core_timing, u8* cur_entry.sampling_number = last_entry.sampling_number + 1; cur_entry.sampling_number2 = cur_entry.sampling_number; - if (Settings::values.mouse_enabled) { + if (Settings::values->mouse_enabled) { const auto [px, py, sx, sy] = mouse_device->GetStatus(); const auto x = static_cast(px * Layout::ScreenUndocked::Width); const auto y = static_cast(py * Layout::ScreenUndocked::Height); @@ -56,8 +56,8 @@ void Controller_Mouse::OnUpdate(const Core::Timing::CoreTiming& core_timing, u8* } void Controller_Mouse::OnLoadInputDevices() { - mouse_device = Input::CreateDevice(Settings::values.mouse_device); - std::transform(Settings::values.mouse_buttons.begin(), Settings::values.mouse_buttons.end(), + mouse_device = Input::CreateDevice(Settings::values->mouse_device); + std::transform(Settings::values->mouse_buttons.begin(), Settings::values->mouse_buttons.end(), mouse_button_devices.begin(), Input::CreateDevice); } } // namespace Service::HID diff --git a/src/core/hle/service/hid/controllers/npad.cpp b/src/core/hle/service/hid/controllers/npad.cpp index ef67ad6902..0963a3ba45 100644 --- a/src/core/hle/service/hid/controllers/npad.cpp +++ b/src/core/hle/service/hid/controllers/npad.cpp @@ -159,11 +159,11 @@ void Controller_NPad::InitNewlyAddedControler(std::size_t controller_idx) { controller.single_color.button_color = 0; controller.dual_color_error = ColorReadError::ReadOk; - controller.left_color.body_color = Settings::values.players[controller_idx].body_color_left; - controller.left_color.button_color = Settings::values.players[controller_idx].button_color_left; - controller.right_color.body_color = Settings::values.players[controller_idx].body_color_right; + controller.left_color.body_color = Settings::values->players[controller_idx].body_color_left; + controller.left_color.button_color = Settings::values->players[controller_idx].button_color_left; + controller.right_color.body_color = Settings::values->players[controller_idx].body_color_right; controller.right_color.button_color = - Settings::values.players[controller_idx].button_color_right; + Settings::values->players[controller_idx].button_color_right; controller.battery_level[0] = BATTERY_FULL; controller.battery_level[1] = BATTERY_FULL; @@ -193,7 +193,7 @@ void Controller_NPad::OnInit() { } std::transform( - Settings::values.players.begin(), Settings::values.players.end(), + Settings::values->players.begin(), Settings::values->players.end(), connected_controllers.begin(), [](const Settings::PlayerInput& player) { return ControllerHolder{MapSettingsTypeToNPad(player.type), player.connected}; }); @@ -227,7 +227,7 @@ void Controller_NPad::OnInit() { } void Controller_NPad::OnLoadInputDevices() { - const auto& players = Settings::values.players; + const auto& players = Settings::values->players; for (std::size_t i = 0; i < players.size(); ++i) { std::transform(players[i].buttons.begin() + Settings::NativeButton::BUTTON_HID_BEGIN, players[i].buttons.begin() + Settings::NativeButton::BUTTON_HID_END, @@ -459,7 +459,7 @@ void Controller_NPad::SetSupportedNPadIdTypes(u8* data, std::size_t length) { continue; } const auto requested_controller = - i <= MAX_NPAD_ID ? MapSettingsTypeToNPad(Settings::values.players[i].type) + i <= MAX_NPAD_ID ? MapSettingsTypeToNPad(Settings::values->players[i].type) : NPadControllerType::Handheld; if (!IsControllerSupported(requested_controller)) { const auto is_handheld = requested_controller == NPadControllerType::Handheld; @@ -685,7 +685,7 @@ bool Controller_NPad::IsControllerSupported(NPadControllerType controller) const return false; } // Handheld should not be supported in docked mode - if (Settings::values.use_docked_mode) { + if (Settings::values->use_docked_mode) { return false; } @@ -718,7 +718,7 @@ Controller_NPad::NPadControllerType Controller_NPad::DecideBestController( if (IsControllerSupported(priority)) { return priority; } - const auto is_docked = Settings::values.use_docked_mode; + const auto is_docked = Settings::values->use_docked_mode; if (is_docked && priority == NPadControllerType::Handheld) { priority = NPadControllerType::JoyDual; if (IsControllerSupported(priority)) { diff --git a/src/core/hle/service/hid/controllers/touchscreen.cpp b/src/core/hle/service/hid/controllers/touchscreen.cpp index e326f8f5c4..759f9b168e 100644 --- a/src/core/hle/service/hid/controllers/touchscreen.cpp +++ b/src/core/hle/service/hid/controllers/touchscreen.cpp @@ -43,16 +43,16 @@ void Controller_Touchscreen::OnUpdate(const Core::Timing::CoreTiming& core_timin const auto [x, y, pressed] = touch_device->GetStatus(); auto& touch_entry = cur_entry.states[0]; touch_entry.attribute.raw = 0; - if (pressed && Settings::values.touchscreen.enabled) { + if (pressed && Settings::values->touchscreen.enabled) { touch_entry.x = static_cast(x * Layout::ScreenUndocked::Width); touch_entry.y = static_cast(y * Layout::ScreenUndocked::Height); - touch_entry.diameter_x = Settings::values.touchscreen.diameter_x; - touch_entry.diameter_y = Settings::values.touchscreen.diameter_y; - touch_entry.rotation_angle = Settings::values.touchscreen.rotation_angle; + touch_entry.diameter_x = Settings::values->touchscreen.diameter_x; + touch_entry.diameter_y = Settings::values->touchscreen.diameter_y; + touch_entry.rotation_angle = Settings::values->touchscreen.rotation_angle; const u64 tick = core_timing.GetCPUTicks(); touch_entry.delta_time = tick - last_touch; last_touch = tick; - touch_entry.finger = Settings::values.touchscreen.finger; + touch_entry.finger = Settings::values->touchscreen.finger; cur_entry.entry_count = 1; } else { cur_entry.entry_count = 0; @@ -62,6 +62,6 @@ void Controller_Touchscreen::OnUpdate(const Core::Timing::CoreTiming& core_timin } void Controller_Touchscreen::OnLoadInputDevices() { - touch_device = Input::CreateDevice(Settings::values.touchscreen.device); + touch_device = Input::CreateDevice(Settings::values->touchscreen.device); } } // namespace Service::HID diff --git a/src/core/hle/service/hid/hid.cpp b/src/core/hle/service/hid/hid.cpp index e9020e0dc7..086ac0b199 100644 --- a/src/core/hle/service/hid/hid.cpp +++ b/src/core/hle/service/hid/hid.cpp @@ -110,7 +110,7 @@ void IAppletResource::GetSharedMemoryHandle(Kernel::HLERequestContext& ctx) { void IAppletResource::UpdateControllers(u64 userdata, s64 ns_late) { auto& core_timing = system.CoreTiming(); - const bool should_reload = Settings::values.is_device_reload_pending.exchange(false); + const bool should_reload = Settings::values->is_device_reload_pending.exchange(false); for (const auto& controller : controllers) { if (should_reload) { controller->OnLoadInputDevices(); @@ -1281,7 +1281,7 @@ public: }; void ReloadInputDevices() { - Settings::values.is_device_reload_pending.store(true); + Settings::values->is_device_reload_pending.store(true); } void InstallInterfaces(SM::ServiceManager& service_manager, Core::System& system) { diff --git a/src/core/hle/service/nifm/nifm.cpp b/src/core/hle/service/nifm/nifm.cpp index 01ddcdbd6a..3e25d210a1 100644 --- a/src/core/hle/service/nifm/nifm.cpp +++ b/src/core/hle/service/nifm/nifm.cpp @@ -88,7 +88,7 @@ private: IPC::ResponseBuilder rb{ctx, 3}; rb.Push(RESULT_SUCCESS); - if (Settings::values.bcat_backend == "none") { + if (Settings::values->bcat_backend == "none") { rb.PushEnum(RequestState::NotSubmitted); } else { rb.PushEnum(RequestState::Connected); @@ -201,7 +201,7 @@ private: IPC::ResponseBuilder rb{ctx, 3}; rb.Push(RESULT_SUCCESS); - if (Settings::values.bcat_backend == "none") { + if (Settings::values->bcat_backend == "none") { rb.Push(0); } else { rb.Push(1); @@ -212,7 +212,7 @@ private: IPC::ResponseBuilder rb{ctx, 3}; rb.Push(RESULT_SUCCESS); - if (Settings::values.bcat_backend == "none") { + if (Settings::values->bcat_backend == "none") { rb.Push(0); } else { rb.Push(1); diff --git a/src/core/hle/service/ns/ns.cpp b/src/core/hle/service/ns/ns.cpp index 7e5ceccdb4..1357a6c74a 100644 --- a/src/core/hle/service/ns/ns.cpp +++ b/src/core/hle/service/ns/ns.cpp @@ -366,7 +366,7 @@ ResultVal IApplicationManagerInterface::GetApplicationDesiredLanguage( LOG_DEBUG(Service_NS, "called with supported_languages={:08X}", supported_languages); // Get language code from settings - const auto language_code = Set::GetLanguageCodeFromIndex(Settings::values.language_index); + const auto language_code = Set::GetLanguageCodeFromIndex(Settings::values->language_index); // Convert to application language, get priority list const auto application_language = ConvertToApplicationLanguage(language_code); diff --git a/src/core/hle/service/set/set.cpp b/src/core/hle/service/set/set.cpp index e5cfd21018..b32aa08eb3 100644 --- a/src/core/hle/service/set/set.cpp +++ b/src/core/hle/service/set/set.cpp @@ -159,15 +159,15 @@ void SET::GetQuestFlag(Kernel::HLERequestContext& ctx) { IPC::ResponseBuilder rb{ctx, 3}; rb.Push(RESULT_SUCCESS); - rb.Push(static_cast(Settings::values.quest_flag)); + rb.Push(static_cast(Settings::values->quest_flag)); } void SET::GetLanguageCode(Kernel::HLERequestContext& ctx) { - LOG_DEBUG(Service_SET, "called {}", Settings::values.language_index); + LOG_DEBUG(Service_SET, "called {}", Settings::values->language_index); IPC::ResponseBuilder rb{ctx, 4}; rb.Push(RESULT_SUCCESS); - rb.PushEnum(available_language_codes[Settings::values.language_index]); + rb.PushEnum(available_language_codes[Settings::values->language_index]); } void SET::GetRegionCode(Kernel::HLERequestContext& ctx) { @@ -175,7 +175,7 @@ void SET::GetRegionCode(Kernel::HLERequestContext& ctx) { IPC::ResponseBuilder rb{ctx, 3}; rb.Push(RESULT_SUCCESS); - rb.Push(Settings::values.region_index); + rb.Push(Settings::values->region_index); } void SET::GetKeyCodeMap(Kernel::HLERequestContext& ctx) { diff --git a/src/core/hle/service/spl/module.cpp b/src/core/hle/service/spl/module.cpp index e724d4ab80..b74d014c47 100644 --- a/src/core/hle/service/spl/module.cpp +++ b/src/core/hle/service/spl/module.cpp @@ -19,7 +19,7 @@ namespace Service::SPL { Module::Interface::Interface(std::shared_ptr module, const char* name) : ServiceFramework(name), module(std::move(module)), - rng(Settings::values.rng_seed.value_or(std::time(nullptr))) {} + rng(Settings::values->rng_seed.value_or(std::time(nullptr))) {} Module::Interface::~Interface() = default; diff --git a/src/core/hle/service/time/time_manager.cpp b/src/core/hle/service/time/time_manager.cpp index b4dfe45e5e..79926481b6 100644 --- a/src/core/hle/service/time/time_manager.cpp +++ b/src/core/hle/service/time/time_manager.cpp @@ -19,7 +19,7 @@ constexpr Clock::TimeSpanType standard_network_clock_accuracy{0x0009356907420000 static std::chrono::seconds GetSecondsSinceEpoch() { return std::chrono::duration_cast( std::chrono::system_clock::now().time_since_epoch()) + - Settings::values.custom_rtc_differential; + Settings::values->custom_rtc_differential; } static s64 GetExternalTimeZoneOffset() { diff --git a/src/core/hle/service/vi/vi.cpp b/src/core/hle/service/vi/vi.cpp index 1570920746..0a97692394 100644 --- a/src/core/hle/service/vi/vi.cpp +++ b/src/core/hle/service/vi/vi.cpp @@ -519,9 +519,9 @@ private: IGBPConnectRequestParcel request{ctx.ReadBuffer()}; IGBPConnectResponseParcel response{ static_cast(static_cast(DisplayResolution::UndockedWidth) * - Settings::values.resolution_factor), + Settings::values->resolution_factor), static_cast(static_cast(DisplayResolution::UndockedHeight) * - Settings::values.resolution_factor)}; + Settings::values->resolution_factor)}; ctx.WriteBuffer(response.Serialize()); break; } @@ -746,16 +746,16 @@ private: IPC::ResponseBuilder rb{ctx, 6}; rb.Push(RESULT_SUCCESS); - if (Settings::values.use_docked_mode) { + if (Settings::values->use_docked_mode) { rb.Push(static_cast(Service::VI::DisplayResolution::DockedWidth) * - static_cast(Settings::values.resolution_factor)); + static_cast(Settings::values->resolution_factor)); rb.Push(static_cast(Service::VI::DisplayResolution::DockedHeight) * - static_cast(Settings::values.resolution_factor)); + static_cast(Settings::values->resolution_factor)); } else { rb.Push(static_cast(Service::VI::DisplayResolution::UndockedWidth) * - static_cast(Settings::values.resolution_factor)); + static_cast(Settings::values->resolution_factor)); rb.Push(static_cast(Service::VI::DisplayResolution::UndockedHeight) * - static_cast(Settings::values.resolution_factor)); + static_cast(Settings::values->resolution_factor)); } rb.PushRaw(60.0f); // This wouldn't seem to be correct for 30 fps games. @@ -1029,9 +1029,9 @@ private: // between docked and undocked dimensions. We take the liberty of applying // the resolution scaling factor here. rb.Push(static_cast(DisplayResolution::UndockedWidth) * - static_cast(Settings::values.resolution_factor)); + static_cast(Settings::values->resolution_factor)); rb.Push(static_cast(DisplayResolution::UndockedHeight) * - static_cast(Settings::values.resolution_factor)); + static_cast(Settings::values->resolution_factor)); } void SetLayerScalingMode(Kernel::HLERequestContext& ctx) { @@ -1064,8 +1064,8 @@ private: LOG_WARNING(Service_VI, "(STUBBED) called"); DisplayInfo display_info; - display_info.width *= static_cast(Settings::values.resolution_factor); - display_info.height *= static_cast(Settings::values.resolution_factor); + display_info.width *= static_cast(Settings::values->resolution_factor); + display_info.height *= static_cast(Settings::values->resolution_factor); ctx.WriteBuffer(&display_info, sizeof(DisplayInfo)); IPC::ResponseBuilder rb{ctx, 4}; rb.Push(RESULT_SUCCESS); diff --git a/src/core/loader/nro.cpp b/src/core/loader/nro.cpp index 906544bc95..8da7319881 100644 --- a/src/core/loader/nro.cpp +++ b/src/core/loader/nro.cpp @@ -157,8 +157,8 @@ static bool LoadNroImpl(Kernel::Process& process, const std::vector& data, codeset.segments[i].size = PageAlignSize(nro_header.segments[i].size); } - if (!Settings::values.program_args.empty()) { - const auto arg_data = Settings::values.program_args; + if (!Settings::values->program_args.empty()) { + const auto arg_data = Settings::values->program_args; codeset.DataSegment().size += NSO_ARGUMENT_DATA_ALLOCATION_SIZE; NSOArgumentHeader args_header{ NSO_ARGUMENT_DATA_ALLOCATION_SIZE, static_cast(arg_data.size()), {}}; diff --git a/src/core/loader/nso.cpp b/src/core/loader/nso.cpp index 575330a86d..0bf6ca239d 100644 --- a/src/core/loader/nso.cpp +++ b/src/core/loader/nso.cpp @@ -105,8 +105,8 @@ std::optional AppLoader_NSO::LoadModule(Kernel::Process& process, codeset.segments[i].size = nso_header.segments[i].size; } - if (should_pass_arguments && !Settings::values.program_args.empty()) { - const auto arg_data{Settings::values.program_args}; + if (should_pass_arguments && !Settings::values->program_args.empty()) { + const auto arg_data{Settings::values->program_args}; codeset.DataSegment().size += NSO_ARGUMENT_DATA_ALLOCATION_SIZE; NSOArgumentHeader args_header{ @@ -129,7 +129,7 @@ std::optional AppLoader_NSO::LoadModule(Kernel::Process& process, } // Apply patches if necessary - if (pm && (pm->HasNSOPatch(nso_header.build_id) || Settings::values.dump_nso)) { + if (pm && (pm->HasNSOPatch(nso_header.build_id) || Settings::values->dump_nso)) { std::vector pi_header; pi_header.insert(pi_header.begin(), reinterpret_cast(&nso_header), reinterpret_cast(&nso_header) + sizeof(NSOHeader)); diff --git a/src/core/perf_stats.cpp b/src/core/perf_stats.cpp index 9f3a6b8113..42efefcfc3 100644 --- a/src/core/perf_stats.cpp +++ b/src/core/perf_stats.cpp @@ -30,7 +30,7 @@ namespace Core { PerfStats::PerfStats(u64 title_id) : title_id(title_id) {} PerfStats::~PerfStats() { - if (!Settings::values.record_frame_times || title_id == 0) { + if (!Settings::values->record_frame_times || title_id == 0) { return; } @@ -119,13 +119,13 @@ double PerfStats::GetLastFrameTimeScale() { } void FrameLimiter::DoFrameLimiting(microseconds current_system_time_us) { - if (!Settings::values.use_frame_limit || Settings::values.use_multi_core) { + if (!Settings::values->use_frame_limit || Settings::values->use_multi_core) { return; } auto now = Clock::now(); - const double sleep_scale = Settings::values.frame_limit / 100.0; + const double sleep_scale = Settings::values->frame_limit / 100.0; // Max lag caused by slow frames. Shouldn't be more than the length of a frame at the current // speed percent or it will clamp too much and prevent this from properly limiting to that diff --git a/src/core/reporter.cpp b/src/core/reporter.cpp index 76cfa5a173..594c69302c 100644 --- a/src/core/reporter.cpp +++ b/src/core/reporter.cpp @@ -439,7 +439,7 @@ void Reporter::SaveUserReport() const { } bool Reporter::IsReportingEnabled() const { - return Settings::values.reporting_services; + return Settings::values->reporting_services; } } // namespace Core diff --git a/src/core/settings.cpp b/src/core/settings.cpp index 56df5e925d..aeabfda058 100644 --- a/src/core/settings.cpp +++ b/src/core/settings.cpp @@ -61,7 +61,9 @@ const std::array mapping = {{ }}; } -Values values = {}; +Values global_values; +Values game_values; +Values *values = &global_values; std::string GetTimeZoneString() { static constexpr std::array timezones{{ @@ -73,14 +75,14 @@ std::string GetTimeZoneString() { "UCT", "Universal", "UTC", "W-SU", "WET", "Zulu", }}; - ASSERT(Settings::values.time_zone_index < timezones.size()); + ASSERT(Settings::values->time_zone_index < timezones.size()); - return timezones[Settings::values.time_zone_index]; + return timezones[Settings::values->time_zone_index]; } void Apply() { - GDBStub::SetServerPort(values.gdbstub_port); - GDBStub::ToggleServer(values.use_gdbstub); + GDBStub::SetServerPort(values->gdbstub_port); + GDBStub::ToggleServer(values->use_gdbstub); auto& system_instance = Core::System::GetInstance(); if (system_instance.IsPoweredOn()) { @@ -97,34 +99,34 @@ void LogSetting(const std::string& name, const T& value) { void LogSettings() { LOG_INFO(Config, "yuzu Configuration:"); - LogSetting("System_UseDockedMode", Settings::values.use_docked_mode); - LogSetting("System_RngSeed", Settings::values.rng_seed.value_or(0)); - LogSetting("System_CurrentUser", Settings::values.current_user); - LogSetting("System_LanguageIndex", Settings::values.language_index); - LogSetting("System_RegionIndex", Settings::values.region_index); - LogSetting("System_TimeZoneIndex", Settings::values.time_zone_index); - LogSetting("Core_UseMultiCore", Settings::values.use_multi_core); - LogSetting("Renderer_UseResolutionFactor", Settings::values.resolution_factor); - LogSetting("Renderer_UseFrameLimit", Settings::values.use_frame_limit); - LogSetting("Renderer_FrameLimit", Settings::values.frame_limit); - LogSetting("Renderer_UseDiskShaderCache", Settings::values.use_disk_shader_cache); - LogSetting("Renderer_GPUAccuracyLevel", Settings::values.gpu_accuracy); + LogSetting("System_UseDockedMode", Settings::values->use_docked_mode); + LogSetting("System_RngSeed", Settings::values->rng_seed.value_or(0)); + LogSetting("System_CurrentUser", Settings::values->current_user); + LogSetting("System_LanguageIndex", Settings::values->language_index); + LogSetting("System_RegionIndex", Settings::values->region_index); + LogSetting("System_TimeZoneIndex", Settings::values->time_zone_index); + LogSetting("Core_UseMultiCore", Settings::values->use_multi_core); + LogSetting("Renderer_UseResolutionFactor", Settings::values->resolution_factor); + LogSetting("Renderer_UseFrameLimit", Settings::values->use_frame_limit); + LogSetting("Renderer_FrameLimit", Settings::values->frame_limit); + LogSetting("Renderer_UseDiskShaderCache", Settings::values->use_disk_shader_cache); + LogSetting("Renderer_GPUAccuracyLevel", Settings::values->gpu_accuracy); LogSetting("Renderer_UseAsynchronousGpuEmulation", - Settings::values.use_asynchronous_gpu_emulation); - LogSetting("Renderer_UseVsync", Settings::values.use_vsync); - LogSetting("Renderer_UseAssemblyShaders", Settings::values.use_assembly_shaders); - LogSetting("Renderer_AnisotropicFilteringLevel", Settings::values.max_anisotropy); - LogSetting("Audio_OutputEngine", Settings::values.sink_id); - LogSetting("Audio_EnableAudioStretching", Settings::values.enable_audio_stretching); - LogSetting("Audio_OutputDevice", Settings::values.audio_device_id); - LogSetting("DataStorage_UseVirtualSd", Settings::values.use_virtual_sd); + Settings::values->use_asynchronous_gpu_emulation); + LogSetting("Renderer_UseVsync", Settings::values->use_vsync); + LogSetting("Renderer_UseAssemblyShaders", Settings::values->use_assembly_shaders); + LogSetting("Renderer_AnisotropicFilteringLevel", Settings::values->max_anisotropy); + LogSetting("Audio_OutputEngine", Settings::values->sink_id); + LogSetting("Audio_EnableAudioStretching", Settings::values->enable_audio_stretching); + LogSetting("Audio_OutputDevice", Settings::values->audio_device_id); + LogSetting("DataStorage_UseVirtualSd", Settings::values->use_virtual_sd); LogSetting("DataStorage_NandDir", FileUtil::GetUserPath(FileUtil::UserPath::NANDDir)); LogSetting("DataStorage_SdmcDir", FileUtil::GetUserPath(FileUtil::UserPath::SDMCDir)); - LogSetting("Debugging_UseGdbstub", Settings::values.use_gdbstub); - LogSetting("Debugging_GdbstubPort", Settings::values.gdbstub_port); - LogSetting("Debugging_ProgramArgs", Settings::values.program_args); - LogSetting("Services_BCATBackend", Settings::values.bcat_backend); - LogSetting("Services_BCATBoxcatLocal", Settings::values.bcat_boxcat_local); + LogSetting("Debugging_UseGdbstub", Settings::values->use_gdbstub); + LogSetting("Debugging_GdbstubPort", Settings::values->gdbstub_port); + LogSetting("Debugging_ProgramArgs", Settings::values->program_args); + LogSetting("Services_BCATBackend", Settings::values->bcat_backend); + LogSetting("Services_BCATBoxcatLocal", Settings::values->bcat_boxcat_local); } float Volume() { @@ -135,11 +137,11 @@ float Volume() { } bool IsGPULevelExtreme() { - return values.gpu_accuracy == GPUAccuracy::Extreme; + return values->gpu_accuracy == GPUAccuracy::Extreme; } bool IsGPULevelHigh() { - return values.gpu_accuracy == GPUAccuracy::Extreme || values.gpu_accuracy == GPUAccuracy::High; + return values->gpu_accuracy == GPUAccuracy::Extreme || values->gpu_accuracy == GPUAccuracy::High; } } // namespace Settings diff --git a/src/core/settings.h b/src/core/settings.h index a598ccbc17..c53297187d 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -382,7 +382,7 @@ enum class GPUAccuracy : u32 { Extreme = 2, }; -struct Values { +typedef struct Values_t { // System bool use_docked_mode; std::optional rng_seed; @@ -489,7 +489,11 @@ struct Values { // Add-Ons std::map> disabled_addons; -} extern values; +} Values; + +extern Values global_values; +extern Values game_values; +extern Values *values; float Volume(); diff --git a/src/core/telemetry_session.cpp b/src/core/telemetry_session.cpp index c781b3cfcf..7a4a70ad61 100644 --- a/src/core/telemetry_session.cpp +++ b/src/core/telemetry_session.cpp @@ -116,7 +116,7 @@ u64 RegenerateTelemetryId() { bool VerifyLogin(const std::string& username, const std::string& token) { #ifdef ENABLE_WEB_SERVICE - return WebService::VerifyLogin(Settings::values.web_api_url, username, token); + return WebService::VerifyLogin(Settings::values->web_api_url, username, token); #else return false; #endif @@ -133,14 +133,14 @@ TelemetrySession::~TelemetrySession() { #ifdef ENABLE_WEB_SERVICE auto backend = std::make_unique( - Settings::values.web_api_url, Settings::values.yuzu_username, Settings::values.yuzu_token); + Settings::values->web_api_url, Settings::values->yuzu_username, Settings::values->yuzu_token); #else auto backend = std::make_unique(); #endif // Complete the session, submitting to the web service backend if necessary field_collection.Accept(*backend); - if (Settings::values.enable_telemetry) { + if (Settings::values->enable_telemetry) { backend->Complete(); } } @@ -188,27 +188,27 @@ void TelemetrySession::AddInitialInfo(Loader::AppLoader& app_loader) { // Log user configuration information constexpr auto field_type = Telemetry::FieldType::UserConfig; - AddField(field_type, "Audio_SinkId", Settings::values.sink_id); - AddField(field_type, "Audio_EnableAudioStretching", Settings::values.enable_audio_stretching); - AddField(field_type, "Core_UseMultiCore", Settings::values.use_multi_core); - AddField(field_type, "Renderer_Backend", TranslateRenderer(Settings::values.renderer_backend)); - AddField(field_type, "Renderer_ResolutionFactor", Settings::values.resolution_factor); - AddField(field_type, "Renderer_UseFrameLimit", Settings::values.use_frame_limit); - AddField(field_type, "Renderer_FrameLimit", Settings::values.frame_limit); - AddField(field_type, "Renderer_UseDiskShaderCache", Settings::values.use_disk_shader_cache); + AddField(field_type, "Audio_SinkId", Settings::values->sink_id); + AddField(field_type, "Audio_EnableAudioStretching", Settings::values->enable_audio_stretching); + AddField(field_type, "Core_UseMultiCore", Settings::values->use_multi_core); + AddField(field_type, "Renderer_Backend", TranslateRenderer(Settings::values->renderer_backend)); + AddField(field_type, "Renderer_ResolutionFactor", Settings::values->resolution_factor); + AddField(field_type, "Renderer_UseFrameLimit", Settings::values->use_frame_limit); + AddField(field_type, "Renderer_FrameLimit", Settings::values->frame_limit); + AddField(field_type, "Renderer_UseDiskShaderCache", Settings::values->use_disk_shader_cache); AddField(field_type, "Renderer_GPUAccuracyLevel", - TranslateGPUAccuracyLevel(Settings::values.gpu_accuracy)); + TranslateGPUAccuracyLevel(Settings::values->gpu_accuracy)); AddField(field_type, "Renderer_UseAsynchronousGpuEmulation", - Settings::values.use_asynchronous_gpu_emulation); - AddField(field_type, "Renderer_UseVsync", Settings::values.use_vsync); - AddField(field_type, "Renderer_UseAssemblyShaders", Settings::values.use_assembly_shaders); - AddField(field_type, "System_UseDockedMode", Settings::values.use_docked_mode); + Settings::values->use_asynchronous_gpu_emulation); + AddField(field_type, "Renderer_UseVsync", Settings::values->use_vsync); + AddField(field_type, "Renderer_UseAssemblyShaders", Settings::values->use_assembly_shaders); + AddField(field_type, "System_UseDockedMode", Settings::values->use_docked_mode); } bool TelemetrySession::SubmitTestcase() { #ifdef ENABLE_WEB_SERVICE auto backend = std::make_unique( - Settings::values.web_api_url, Settings::values.yuzu_username, Settings::values.yuzu_token); + Settings::values->web_api_url, Settings::values->yuzu_username, Settings::values->yuzu_token); field_collection.Accept(*backend); return backend->SubmitTestcase(); #else diff --git a/src/input_common/udp/udp.cpp b/src/input_common/udp/udp.cpp index 8c6ef13949..4f86866eca 100644 --- a/src/input_common/udp/udp.cpp +++ b/src/input_common/udp/udp.cpp @@ -74,8 +74,8 @@ private: State::State() { auto status = std::make_shared(); client = - std::make_unique(status, Settings::values.udp_input_address, - Settings::values.udp_input_port, Settings::values.udp_pad_index); + std::make_unique(status, Settings::values->udp_input_address, + Settings::values->udp_input_port, Settings::values->udp_pad_index); Input::RegisterFactory("cemuhookudp", std::make_shared(status)); @@ -89,8 +89,8 @@ State::~State() { } void State::ReloadUDPClient() { - client->ReloadSocket(Settings::values.udp_input_address, Settings::values.udp_input_port, - Settings::values.udp_pad_index); + client->ReloadSocket(Settings::values->udp_input_address, Settings::values->udp_input_port, + Settings::values->udp_pad_index); } std::unique_ptr Init() { diff --git a/src/video_core/buffer_cache/buffer_cache.h b/src/video_core/buffer_cache/buffer_cache.h index c6479af9f9..565add42d6 100644 --- a/src/video_core/buffer_cache/buffer_cache.h +++ b/src/video_core/buffer_cache/buffer_cache.h @@ -96,7 +96,7 @@ public: } if (is_written) { map->MarkAsModified(true, GetModifiedTicks()); - if (Settings::IsGPULevelHigh() && Settings::values.use_asynchronous_gpu_emulation) { + if (Settings::IsGPULevelHigh() && Settings::values->use_asynchronous_gpu_emulation) { MarkForAsyncFlush(map); } if (!map->is_written) { @@ -369,7 +369,7 @@ private: } if (modified_inheritance) { map->MarkAsModified(true, GetModifiedTicks()); - if (Settings::IsGPULevelHigh() && Settings::values.use_asynchronous_gpu_emulation) { + if (Settings::IsGPULevelHigh() && Settings::values->use_asynchronous_gpu_emulation) { MarkForAsyncFlush(map); } } diff --git a/src/video_core/gpu.cpp b/src/video_core/gpu.cpp index 482e497118..18db410985 100644 --- a/src/video_core/gpu.cpp +++ b/src/video_core/gpu.cpp @@ -157,7 +157,7 @@ u64 GPU::GetTicks() const { constexpr u64 gpu_ticks_den = 625; u64 nanoseconds = system.CoreTiming().GetGlobalTimeNs().count(); - if (Settings::values.use_fast_gpu_time) { + if (Settings::values->use_fast_gpu_time) { nanoseconds /= 256; } const u64 nanoseconds_num = nanoseconds / gpu_ticks_den; diff --git a/src/video_core/macro/macro.cpp b/src/video_core/macro/macro.cpp index a50e7b4e0b..3e0869b047 100644 --- a/src/video_core/macro/macro.cpp +++ b/src/video_core/macro/macro.cpp @@ -78,7 +78,7 @@ void MacroEngine::Execute(Engines::Maxwell3D& maxwell3d, u32 method, } std::unique_ptr GetMacroEngine(Engines::Maxwell3D& maxwell3d) { - if (Settings::values.disable_macro_jit) { + if (Settings::values->disable_macro_jit) { return std::make_unique(maxwell3d); } #ifdef ARCHITECTURE_x86_64 diff --git a/src/video_core/query_cache.h b/src/video_core/query_cache.h index e12dab8999..64fbd7f8a6 100644 --- a/src/video_core/query_cache.h +++ b/src/video_core/query_cache.h @@ -132,7 +132,7 @@ public: } query->BindCounter(Stream(type).Current(), timestamp); - if (Settings::values.use_asynchronous_gpu_emulation) { + if (Settings::values->use_asynchronous_gpu_emulation) { AsyncFlushQuery(cpu_addr); } } diff --git a/src/video_core/renderer_base.cpp b/src/video_core/renderer_base.cpp index 919d1f2d4d..adacb4f58c 100644 --- a/src/video_core/renderer_base.cpp +++ b/src/video_core/renderer_base.cpp @@ -18,7 +18,7 @@ RendererBase::~RendererBase() = default; void RendererBase::RefreshBaseSettings() { UpdateCurrentFramebufferLayout(); - renderer_settings.use_framelimiter = Settings::values.use_frame_limit; + renderer_settings.use_framelimiter = Settings::values->use_frame_limit; renderer_settings.set_background_color = true; } diff --git a/src/video_core/renderer_opengl/gl_device.cpp b/src/video_core/renderer_opengl/gl_device.cpp index 208fc6167d..f525237375 100644 --- a/src/video_core/renderer_opengl/gl_device.cpp +++ b/src/video_core/renderer_opengl/gl_device.cpp @@ -229,7 +229,7 @@ Device::Device() // uniform buffers as "push constants" has_fast_buffer_sub_data = is_nvidia && !disable_fast_buffer_sub_data; - use_assembly_shaders = Settings::values.use_assembly_shaders && GLAD_GL_NV_gpu_program5 && + use_assembly_shaders = Settings::values->use_assembly_shaders && GLAD_GL_NV_gpu_program5 && GLAD_GL_NV_compute_program5 && GLAD_GL_NV_transform_feedback && GLAD_GL_NV_transform_feedback2; @@ -237,7 +237,7 @@ Device::Device() LOG_INFO(Render_OpenGL, "Renderer_ComponentIndexingBug: {}", has_component_indexing_bug); LOG_INFO(Render_OpenGL, "Renderer_PreciseBug: {}", has_precise_bug); - if (Settings::values.use_assembly_shaders && !use_assembly_shaders) { + if (Settings::values->use_assembly_shaders && !use_assembly_shaders) { LOG_ERROR(Render_OpenGL, "Assembly shaders enabled but not supported"); } } diff --git a/src/video_core/renderer_opengl/gl_shader_disk_cache.cpp b/src/video_core/renderer_opengl/gl_shader_disk_cache.cpp index 653c3f2f96..46ca2faa45 100644 --- a/src/video_core/renderer_opengl/gl_shader_disk_cache.cpp +++ b/src/video_core/renderer_opengl/gl_shader_disk_cache.cpp @@ -213,7 +213,7 @@ ShaderDiskCacheOpenGL::~ShaderDiskCacheOpenGL() = default; std::optional> ShaderDiskCacheOpenGL::LoadTransferable() { // Skip games without title id const bool has_title_id = system.CurrentProcess()->GetTitleID() != 0; - if (!Settings::values.use_disk_shader_cache || !has_title_id) { + if (!Settings::values->use_disk_shader_cache || !has_title_id) { return {}; } diff --git a/src/video_core/renderer_opengl/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp index c40adb6e77..1f27ad280b 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.cpp +++ b/src/video_core/renderer_opengl/renderer_opengl.cpp @@ -455,7 +455,7 @@ void RendererOpenGL::LoadColorToActiveGLTexture(u8 color_r, u8 color_g, u8 color void RendererOpenGL::InitOpenGLObjects() { frame_mailbox = std::make_unique(); - glClearColor(Settings::values.bg_red, Settings::values.bg_green, Settings::values.bg_blue, + glClearColor(Settings::values->bg_red, Settings::values->bg_green, Settings::values->bg_blue, 0.0f); // Create shader programs @@ -561,7 +561,7 @@ void RendererOpenGL::ConfigureFramebufferTexture(TextureInfo& texture, void RendererOpenGL::DrawScreen(const Layout::FramebufferLayout& layout) { if (renderer_settings.set_background_color) { // Update background color before drawing - glClearColor(Settings::values.bg_red, Settings::values.bg_green, Settings::values.bg_blue, + glClearColor(Settings::values->bg_red, Settings::values->bg_green, Settings::values->bg_blue, 0.0f); } @@ -766,7 +766,7 @@ void RendererOpenGL::RenderScreenshot() { } bool RendererOpenGL::Init() { - if (Settings::values.renderer_debug && GLAD_GL_KHR_debug) { + if (Settings::values->renderer_debug && GLAD_GL_KHR_debug) { glEnable(GL_DEBUG_OUTPUT); glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS); glDebugMessageCallback(DebugHandler, nullptr); diff --git a/src/video_core/renderer_vulkan/renderer_vulkan.cpp b/src/video_core/renderer_vulkan/renderer_vulkan.cpp index 2d9b18ed97..1883a5ada6 100644 --- a/src/video_core/renderer_vulkan/renderer_vulkan.cpp +++ b/src/video_core/renderer_vulkan/renderer_vulkan.cpp @@ -287,7 +287,7 @@ bool RendererVulkan::TryPresent(int /*timeout_ms*/) { bool RendererVulkan::Init() { library = OpenVulkanLibrary(); instance = CreateInstance(library, dld, render_window.GetWindowInfo().type, - Settings::values.renderer_debug); + Settings::values->renderer_debug); if (!instance || !CreateDebugCallback() || !CreateSurface() || !PickDevices()) { return false; } @@ -335,7 +335,7 @@ void RendererVulkan::ShutDown() { } bool RendererVulkan::CreateDebugCallback() { - if (!Settings::values.renderer_debug) { + if (!Settings::values->renderer_debug) { return true; } debug_callback = instance.TryCreateDebugCallback(DebugCallback); @@ -409,7 +409,7 @@ bool RendererVulkan::PickDevices() { return false; } - const s32 device_index = Settings::values.vulkan_device; + const s32 device_index = Settings::values->vulkan_device; if (device_index < 0 || device_index >= static_cast(devices->size())) { LOG_ERROR(Render_Vulkan, "Invalid device index {}!", device_index); return false; diff --git a/src/video_core/renderer_vulkan/vk_device.cpp b/src/video_core/renderer_vulkan/vk_device.cpp index fdaea42108..bab8888b0f 100644 --- a/src/video_core/renderer_vulkan/vk_device.cpp +++ b/src/video_core/renderer_vulkan/vk_device.cpp @@ -571,7 +571,7 @@ std::vector VKDevice::LoadExtensions() { false); Test(extension, has_ext_extended_dynamic_state, VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME, false); - if (Settings::values.renderer_debug) { + if (Settings::values->renderer_debug) { Test(extension, nv_device_diagnostics_config, VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME, true); } diff --git a/src/video_core/texture_cache/texture_cache.h b/src/video_core/texture_cache/texture_cache.h index 6207d8dfe0..3da947c600 100644 --- a/src/video_core/texture_cache/texture_cache.h +++ b/src/video_core/texture_cache/texture_cache.h @@ -249,7 +249,7 @@ public: auto& surface = render_targets[index].target; surface->MarkAsRenderTarget(false, NO_RT); const auto& cr_params = surface->GetSurfaceParams(); - if (!cr_params.is_tiled && Settings::values.use_asynchronous_gpu_emulation) { + if (!cr_params.is_tiled && Settings::values->use_asynchronous_gpu_emulation) { AsyncFlushSurface(surface); } } diff --git a/src/video_core/textures/texture.cpp b/src/video_core/textures/texture.cpp index d1939d744b..b8b6b559b7 100644 --- a/src/video_core/textures/texture.cpp +++ b/src/video_core/textures/texture.cpp @@ -48,7 +48,7 @@ constexpr std::array SRGB_CONVERSION_LUT = { }; unsigned SettingsMinimumAnisotropy() noexcept { - switch (static_cast(Settings::values.max_anisotropy)) { + switch (static_cast(Settings::values->max_anisotropy)) { default: case Anisotropy::Default: return 1U; diff --git a/src/video_core/video_core.cpp b/src/video_core/video_core.cpp index f60bdc60a5..c2ed74602e 100644 --- a/src/video_core/video_core.cpp +++ b/src/video_core/video_core.cpp @@ -19,7 +19,7 @@ namespace { std::unique_ptr CreateRenderer(Core::Frontend::EmuWindow& emu_window, Core::System& system, Core::Frontend::GraphicsContext& context) { - switch (Settings::values.renderer_backend) { + switch (Settings::values->renderer_backend) { case Settings::RendererBackend::OpenGL: return std::make_unique(emu_window, system, context); #ifdef HAS_VULKAN @@ -42,7 +42,7 @@ std::unique_ptr CreateGPU(Core::Frontend::EmuWindow& emu_window, Cor return nullptr; } - if (Settings::values.use_asynchronous_gpu_emulation) { + if (Settings::values->use_asynchronous_gpu_emulation) { return std::make_unique(system, std::move(renderer), std::move(context)); } @@ -51,8 +51,8 @@ std::unique_ptr CreateGPU(Core::Frontend::EmuWindow& emu_window, Cor u16 GetResolutionScaleFactor(const RendererBase& renderer) { return static_cast( - Settings::values.resolution_factor != 0 - ? Settings::values.resolution_factor + Settings::values->resolution_factor != 0 + ? Settings::values->resolution_factor : renderer.GetRenderWindow().GetFramebufferLayout().GetScalingRatio()); } diff --git a/src/yuzu/bootmanager.cpp b/src/yuzu/bootmanager.cpp index 4bfce48a4b..57bac9c8a8 100644 --- a/src/yuzu/bootmanager.cpp +++ b/src/yuzu/bootmanager.cpp @@ -126,7 +126,7 @@ public: format.setVersion(4, 3); format.setProfile(QSurfaceFormat::CompatibilityProfile); format.setOption(QSurfaceFormat::FormatOption::DeprecatedFunctions); - if (Settings::values.renderer_debug) { + if (Settings::values->renderer_debug) { format.setOption(QSurfaceFormat::FormatOption::DebugContext); } // TODO: expose a setting for buffer value (ie default/single/double/triple) @@ -145,7 +145,7 @@ public: // disable vsync for any shared contexts auto format = share_context->format(); - format.setSwapInterval(main_surface ? Settings::values.use_vsync : 0); + format.setSwapInterval(main_surface ? Settings::values->use_vsync : 0); context = std::make_unique(); context->setShareContext(share_context); @@ -495,7 +495,7 @@ void GRenderWindow::resizeEvent(QResizeEvent* event) { std::unique_ptr GRenderWindow::CreateSharedContext() const { #ifdef HAS_OPENGL - if (Settings::values.renderer_backend == Settings::RendererBackend::OpenGL) { + if (Settings::values->renderer_backend == Settings::RendererBackend::OpenGL) { auto c = static_cast(main_context.get()); // Bind the shared contexts to the main surface in case the backend wants to take over // presentation @@ -511,7 +511,7 @@ bool GRenderWindow::InitRenderTarget() { first_frame = false; - switch (Settings::values.renderer_backend) { + switch (Settings::values->renderer_backend) { case Settings::RendererBackend::OpenGL: if (!InitializeOpenGL()) { return false; @@ -538,7 +538,7 @@ bool GRenderWindow::InitRenderTarget() { OnFramebufferSizeChanged(); BackupGeometry(); - if (Settings::values.renderer_backend == Settings::RendererBackend::OpenGL) { + if (Settings::values->renderer_backend == Settings::RendererBackend::OpenGL) { if (!LoadOpenGL()) { return false; } diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index 5e0d0e7af6..6294b27cfb 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -232,8 +232,8 @@ const std::array Config::default_hotkeys{{ // clang-format on void Config::ReadPlayerValues() { - for (std::size_t p = 0; p < Settings::values.players.size(); ++p) { - auto& player = Settings::values.players[p]; + for (std::size_t p = 0; p < Settings::values->players.size(); ++p) { + auto& player = Settings::values->players[p]; player.connected = ReadSetting(QStringLiteral("player_%1_connected").arg(p), false).toBool(); @@ -297,19 +297,19 @@ void Config::ReadPlayerValues() { } std::stable_partition( - Settings::values.players.begin(), - Settings::values.players.begin() + + Settings::values->players.begin(), + Settings::values->players.begin() + Service::HID::Controller_NPad::NPadIdToIndex(Service::HID::NPAD_HANDHELD), [](const auto& player) { return player.connected; }); } void Config::ReadDebugValues() { - Settings::values.debug_pad_enabled = + Settings::values->debug_pad_enabled = ReadSetting(QStringLiteral("debug_pad_enabled"), false).toBool(); for (int i = 0; i < Settings::NativeButton::NumButtons; ++i) { const std::string default_param = InputCommon::GenerateKeyboardParam(default_buttons[i]); - auto& debug_pad_buttons = Settings::values.debug_pad_buttons[i]; + auto& debug_pad_buttons = Settings::values->debug_pad_buttons[i]; debug_pad_buttons = qt_config ->value(QStringLiteral("debug_pad_") + @@ -326,7 +326,7 @@ void Config::ReadDebugValues() { const std::string default_param = InputCommon::GenerateAnalogParamFromKeys( default_analogs[i][0], default_analogs[i][1], default_analogs[i][2], default_analogs[i][3], default_analogs[i][4], 0.5f); - auto& debug_pad_analogs = Settings::values.debug_pad_analogs[i]; + auto& debug_pad_analogs = Settings::values->debug_pad_analogs[i]; debug_pad_analogs = qt_config ->value(QStringLiteral("debug_pad_") + @@ -341,26 +341,26 @@ void Config::ReadDebugValues() { } void Config::ReadKeyboardValues() { - Settings::values.keyboard_enabled = + Settings::values->keyboard_enabled = ReadSetting(QStringLiteral("keyboard_enabled"), false).toBool(); std::transform(default_keyboard_keys.begin(), default_keyboard_keys.end(), - Settings::values.keyboard_keys.begin(), InputCommon::GenerateKeyboardParam); + Settings::values->keyboard_keys.begin(), InputCommon::GenerateKeyboardParam); std::transform(default_keyboard_mods.begin(), default_keyboard_mods.end(), - Settings::values.keyboard_keys.begin() + + Settings::values->keyboard_keys.begin() + Settings::NativeKeyboard::LeftControlKey, InputCommon::GenerateKeyboardParam); std::transform(default_keyboard_mods.begin(), default_keyboard_mods.end(), - Settings::values.keyboard_mods.begin(), InputCommon::GenerateKeyboardParam); + Settings::values->keyboard_mods.begin(), InputCommon::GenerateKeyboardParam); } void Config::ReadMouseValues() { - Settings::values.mouse_enabled = ReadSetting(QStringLiteral("mouse_enabled"), false).toBool(); + Settings::values->mouse_enabled = ReadSetting(QStringLiteral("mouse_enabled"), false).toBool(); for (int i = 0; i < Settings::NativeMouseButton::NumMouseButtons; ++i) { const std::string default_param = InputCommon::GenerateKeyboardParam(default_mouse_buttons[i]); - auto& mouse_buttons = Settings::values.mouse_buttons[i]; + auto& mouse_buttons = Settings::values->mouse_buttons[i]; mouse_buttons = qt_config ->value(QStringLiteral("mouse_") + @@ -375,25 +375,25 @@ void Config::ReadMouseValues() { } void Config::ReadTouchscreenValues() { - Settings::values.touchscreen.enabled = + Settings::values->touchscreen.enabled = ReadSetting(QStringLiteral("touchscreen_enabled"), true).toBool(); - Settings::values.touchscreen.device = + Settings::values->touchscreen.device = ReadSetting(QStringLiteral("touchscreen_device"), QStringLiteral("engine:emu_window")) .toString() .toStdString(); - Settings::values.touchscreen.finger = + Settings::values->touchscreen.finger = ReadSetting(QStringLiteral("touchscreen_finger"), 0).toUInt(); - Settings::values.touchscreen.rotation_angle = + Settings::values->touchscreen.rotation_angle = ReadSetting(QStringLiteral("touchscreen_angle"), 0).toUInt(); - Settings::values.touchscreen.diameter_x = + Settings::values->touchscreen.diameter_x = ReadSetting(QStringLiteral("touchscreen_diameter_x"), 15).toUInt(); - Settings::values.touchscreen.diameter_y = + Settings::values->touchscreen.diameter_y = ReadSetting(QStringLiteral("touchscreen_diameter_y"), 15).toUInt(); } void Config::ApplyDefaultProfileIfInputInvalid() { - if (!std::any_of(Settings::values.players.begin(), Settings::values.players.end(), + if (!std::any_of(Settings::values->players.begin(), Settings::values->players.end(), [](const Settings::PlayerInput& in) { return in.connected; })) { ApplyInputProfileConfiguration(UISettings::values.profile_index); } @@ -402,16 +402,16 @@ void Config::ApplyDefaultProfileIfInputInvalid() { void Config::ReadAudioValues() { qt_config->beginGroup(QStringLiteral("Audio")); - Settings::values.sink_id = ReadSetting(QStringLiteral("output_engine"), QStringLiteral("auto")) + Settings::values->sink_id = ReadSetting(QStringLiteral("output_engine"), QStringLiteral("auto")) .toString() .toStdString(); - Settings::values.enable_audio_stretching = + Settings::values->enable_audio_stretching = ReadSetting(QStringLiteral("enable_audio_stretching"), true).toBool(); - Settings::values.audio_device_id = + Settings::values->audio_device_id = ReadSetting(QStringLiteral("output_device"), QStringLiteral("auto")) .toString() .toStdString(); - Settings::values.volume = ReadSetting(QStringLiteral("volume"), 1).toFloat(); + Settings::values->volume = ReadSetting(QStringLiteral("volume"), 1).toFloat(); qt_config->endGroup(); } @@ -425,20 +425,20 @@ void Config::ReadControlValues() { ReadMouseValues(); ReadTouchscreenValues(); - Settings::values.motion_device = + Settings::values->motion_device = ReadSetting(QStringLiteral("motion_device"), QStringLiteral("engine:motion_emu,update_period:100,sensitivity:0.01")) .toString() .toStdString(); - Settings::values.udp_input_address = + Settings::values->udp_input_address = ReadSetting(QStringLiteral("udp_input_address"), QString::fromUtf8(InputCommon::CemuhookUDP::DEFAULT_ADDR)) .toString() .toStdString(); - Settings::values.udp_input_port = static_cast( + Settings::values->udp_input_port = static_cast( ReadSetting(QStringLiteral("udp_input_port"), InputCommon::CemuhookUDP::DEFAULT_PORT) .toInt()); - Settings::values.udp_pad_index = + Settings::values->udp_pad_index = static_cast(ReadSetting(QStringLiteral("udp_pad_index"), 0).toUInt()); qt_config->endGroup(); @@ -447,7 +447,7 @@ void Config::ReadControlValues() { void Config::ReadCoreValues() { qt_config->beginGroup(QStringLiteral("Core")); - Settings::values.use_multi_core = ReadSetting(QStringLiteral("use_multi_core"), false).toBool(); + Settings::values->use_multi_core = ReadSetting(QStringLiteral("use_multi_core"), false).toBool(); qt_config->endGroup(); } @@ -455,7 +455,7 @@ void Config::ReadCoreValues() { void Config::ReadDataStorageValues() { qt_config->beginGroup(QStringLiteral("Data Storage")); - Settings::values.use_virtual_sd = ReadSetting(QStringLiteral("use_virtual_sd"), true).toBool(); + Settings::values->use_virtual_sd = ReadSetting(QStringLiteral("use_virtual_sd"), true).toBool(); FileUtil::GetUserPath( FileUtil::UserPath::NANDDir, qt_config @@ -491,25 +491,25 @@ void Config::ReadDataStorageValues() { QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::CacheDir))) .toString() .toStdString()); - Settings::values.gamecard_inserted = + Settings::values->gamecard_inserted = ReadSetting(QStringLiteral("gamecard_inserted"), false).toBool(); - Settings::values.gamecard_current_game = + Settings::values->gamecard_current_game = ReadSetting(QStringLiteral("gamecard_current_game"), false).toBool(); - Settings::values.gamecard_path = + Settings::values->gamecard_path = ReadSetting(QStringLiteral("gamecard_path"), QStringLiteral("")).toString().toStdString(); - Settings::values.nand_total_size = static_cast( + Settings::values->nand_total_size = static_cast( ReadSetting(QStringLiteral("nand_total_size"), QVariant::fromValue(static_cast(Settings::NANDTotalSize::S29_1GB))) .toULongLong()); - Settings::values.nand_user_size = static_cast( + Settings::values->nand_user_size = static_cast( ReadSetting(QStringLiteral("nand_user_size"), QVariant::fromValue(static_cast(Settings::NANDUserSize::S26GB))) .toULongLong()); - Settings::values.nand_system_size = static_cast( + Settings::values->nand_system_size = static_cast( ReadSetting(QStringLiteral("nand_system_size"), QVariant::fromValue(static_cast(Settings::NANDSystemSize::S2_5GB))) .toULongLong()); - Settings::values.sdmc_size = static_cast( + Settings::values->sdmc_size = static_cast( ReadSetting(QStringLiteral("sdmc_size"), QVariant::fromValue(static_cast(Settings::SDMCSize::S16GB))) .toULongLong()); @@ -521,20 +521,20 @@ void Config::ReadDebuggingValues() { qt_config->beginGroup(QStringLiteral("Debugging")); // Intentionally not using the QT default setting as this is intended to be changed in the ini - Settings::values.record_frame_times = + Settings::values->record_frame_times = qt_config->value(QStringLiteral("record_frame_times"), false).toBool(); - Settings::values.use_gdbstub = ReadSetting(QStringLiteral("use_gdbstub"), false).toBool(); - Settings::values.gdbstub_port = ReadSetting(QStringLiteral("gdbstub_port"), 24689).toInt(); - Settings::values.program_args = + Settings::values->use_gdbstub = ReadSetting(QStringLiteral("use_gdbstub"), false).toBool(); + Settings::values->gdbstub_port = ReadSetting(QStringLiteral("gdbstub_port"), 24689).toInt(); + Settings::values->program_args = ReadSetting(QStringLiteral("program_args"), QStringLiteral("")).toString().toStdString(); - Settings::values.dump_exefs = ReadSetting(QStringLiteral("dump_exefs"), false).toBool(); - Settings::values.dump_nso = ReadSetting(QStringLiteral("dump_nso"), false).toBool(); - Settings::values.reporting_services = + Settings::values->dump_exefs = ReadSetting(QStringLiteral("dump_exefs"), false).toBool(); + Settings::values->dump_nso = ReadSetting(QStringLiteral("dump_nso"), false).toBool(); + Settings::values->reporting_services = ReadSetting(QStringLiteral("reporting_services"), false).toBool(); - Settings::values.quest_flag = ReadSetting(QStringLiteral("quest_flag"), false).toBool(); - Settings::values.disable_cpu_opt = + Settings::values->quest_flag = ReadSetting(QStringLiteral("quest_flag"), false).toBool(); + Settings::values->disable_cpu_opt = ReadSetting(QStringLiteral("disable_cpu_opt"), false).toBool(); - Settings::values.disable_macro_jit = + Settings::values->disable_macro_jit = ReadSetting(QStringLiteral("disable_macro_jit"), false).toBool(); qt_config->endGroup(); @@ -542,11 +542,11 @@ void Config::ReadDebuggingValues() { void Config::ReadServiceValues() { qt_config->beginGroup(QStringLiteral("Services")); - Settings::values.bcat_backend = + Settings::values->bcat_backend = ReadSetting(QStringLiteral("bcat_backend"), QStringLiteral("null")) .toString() .toStdString(); - Settings::values.bcat_boxcat_local = + Settings::values->bcat_boxcat_local = ReadSetting(QStringLiteral("bcat_boxcat_local"), false).toBool(); qt_config->endGroup(); } @@ -565,7 +565,7 @@ void Config::ReadDisabledAddOnValues() { ReadSetting(QStringLiteral("d"), QStringLiteral("")).toString().toStdString()); } qt_config->endArray(); - Settings::values.disabled_addons.insert_or_assign(title_id, out); + Settings::values->disabled_addons.insert_or_assign(title_id, out); } qt_config->endArray(); @@ -574,11 +574,11 @@ void Config::ReadDisabledAddOnValues() { void Config::ReadMiscellaneousValues() { qt_config->beginGroup(QStringLiteral("Miscellaneous")); - Settings::values.log_filter = + Settings::values->log_filter = ReadSetting(QStringLiteral("log_filter"), QStringLiteral("*:Info")) .toString() .toStdString(); - Settings::values.use_dev_keys = ReadSetting(QStringLiteral("use_dev_keys"), false).toBool(); + Settings::values->use_dev_keys = ReadSetting(QStringLiteral("use_dev_keys"), false).toBool(); qt_config->endGroup(); } @@ -628,32 +628,32 @@ void Config::ReadPathValues() { void Config::ReadRendererValues() { qt_config->beginGroup(QStringLiteral("Renderer")); - Settings::values.renderer_backend = + Settings::values->renderer_backend = static_cast(ReadSetting(QStringLiteral("backend"), 0).toInt()); - Settings::values.renderer_debug = ReadSetting(QStringLiteral("debug"), false).toBool(); - Settings::values.vulkan_device = ReadSetting(QStringLiteral("vulkan_device"), 0).toInt(); - Settings::values.aspect_ratio = ReadSetting(QStringLiteral("aspect_ratio"), 0).toInt(); - Settings::values.max_anisotropy = ReadSetting(QStringLiteral("max_anisotropy"), 0).toInt(); - Settings::values.use_frame_limit = + Settings::values->renderer_debug = ReadSetting(QStringLiteral("debug"), false).toBool(); + Settings::values->vulkan_device = ReadSetting(QStringLiteral("vulkan_device"), 0).toInt(); + Settings::values->aspect_ratio = ReadSetting(QStringLiteral("aspect_ratio"), 0).toInt(); + Settings::values->max_anisotropy = ReadSetting(QStringLiteral("max_anisotropy"), 0).toInt(); + Settings::values->use_frame_limit = ReadSetting(QStringLiteral("use_frame_limit"), true).toBool(); - Settings::values.frame_limit = ReadSetting(QStringLiteral("frame_limit"), 100).toUInt(); - Settings::values.use_disk_shader_cache = + Settings::values->frame_limit = ReadSetting(QStringLiteral("frame_limit"), 100).toInt(); + Settings::values->use_disk_shader_cache = ReadSetting(QStringLiteral("use_disk_shader_cache"), true).toBool(); const int gpu_accuracy_level = ReadSetting(QStringLiteral("gpu_accuracy"), 0).toInt(); - Settings::values.gpu_accuracy = static_cast(gpu_accuracy_level); - Settings::values.use_asynchronous_gpu_emulation = + Settings::values->gpu_accuracy = static_cast(gpu_accuracy_level); + Settings::values->use_asynchronous_gpu_emulation = ReadSetting(QStringLiteral("use_asynchronous_gpu_emulation"), false).toBool(); - Settings::values.use_vsync = ReadSetting(QStringLiteral("use_vsync"), true).toBool(); - Settings::values.use_assembly_shaders = + Settings::values->use_vsync = ReadSetting(QStringLiteral("use_vsync"), true).toBool(); + Settings::values->use_assembly_shaders = ReadSetting(QStringLiteral("use_assembly_shaders"), false).toBool(); - Settings::values.use_fast_gpu_time = + Settings::values->use_fast_gpu_time = ReadSetting(QStringLiteral("use_fast_gpu_time"), true).toBool(); - Settings::values.force_30fps_mode = + Settings::values->force_30fps_mode = ReadSetting(QStringLiteral("force_30fps_mode"), false).toBool(); - Settings::values.bg_red = ReadSetting(QStringLiteral("bg_red"), 0.0).toFloat(); - Settings::values.bg_green = ReadSetting(QStringLiteral("bg_green"), 0.0).toFloat(); - Settings::values.bg_blue = ReadSetting(QStringLiteral("bg_blue"), 0.0).toFloat(); + Settings::values->bg_red = ReadSetting(QStringLiteral("bg_red"), 0.0).toFloat(); + Settings::values->bg_green = ReadSetting(QStringLiteral("bg_green"), 0.0).toFloat(); + Settings::values->bg_blue = ReadSetting(QStringLiteral("bg_blue"), 0.0).toFloat(); qt_config->endGroup(); } @@ -682,35 +682,35 @@ void Config::ReadShortcutValues() { void Config::ReadSystemValues() { qt_config->beginGroup(QStringLiteral("System")); - Settings::values.use_docked_mode = + Settings::values->use_docked_mode = ReadSetting(QStringLiteral("use_docked_mode"), false).toBool(); - Settings::values.current_user = std::clamp( + Settings::values->current_user = std::clamp( ReadSetting(QStringLiteral("current_user"), 0).toInt(), 0, Service::Account::MAX_USERS - 1); - Settings::values.language_index = ReadSetting(QStringLiteral("language_index"), 1).toInt(); + Settings::values->language_index = ReadSetting(QStringLiteral("language_index"), 1).toInt(); - Settings::values.region_index = ReadSetting(QStringLiteral("region_index"), 1).toInt(); + Settings::values->region_index = ReadSetting(QStringLiteral("region_index"), 1).toInt(); - Settings::values.time_zone_index = ReadSetting(QStringLiteral("time_zone_index"), 0).toInt(); + Settings::values->time_zone_index = ReadSetting(QStringLiteral("time_zone_index"), 0).toInt(); const auto rng_seed_enabled = ReadSetting(QStringLiteral("rng_seed_enabled"), false).toBool(); if (rng_seed_enabled) { - Settings::values.rng_seed = ReadSetting(QStringLiteral("rng_seed"), 0).toULongLong(); + Settings::values->rng_seed = ReadSetting(QStringLiteral("rng_seed"), 0).toULongLong(); } else { - Settings::values.rng_seed = std::nullopt; + Settings::values->rng_seed = std::nullopt; } const auto custom_rtc_enabled = ReadSetting(QStringLiteral("custom_rtc_enabled"), false).toBool(); if (custom_rtc_enabled) { - Settings::values.custom_rtc = + Settings::values->custom_rtc = std::chrono::seconds(ReadSetting(QStringLiteral("custom_rtc"), 0).toULongLong()); } else { - Settings::values.custom_rtc = std::nullopt; + Settings::values->custom_rtc = std::nullopt; } - Settings::values.sound_index = ReadSetting(QStringLiteral("sound_index"), 1).toInt(); + Settings::values->sound_index = ReadSetting(QStringLiteral("sound_index"), 1).toInt(); qt_config->endGroup(); } @@ -789,15 +789,15 @@ void Config::ReadUILayoutValues() { void Config::ReadWebServiceValues() { qt_config->beginGroup(QStringLiteral("WebService")); - Settings::values.enable_telemetry = + Settings::values->enable_telemetry = ReadSetting(QStringLiteral("enable_telemetry"), true).toBool(); - Settings::values.web_api_url = + Settings::values->web_api_url = ReadSetting(QStringLiteral("web_api_url"), QStringLiteral("https://api.yuzu-emu.org")) .toString() .toStdString(); - Settings::values.yuzu_username = + Settings::values->yuzu_username = ReadSetting(QStringLiteral("yuzu_username")).toString().toStdString(); - Settings::values.yuzu_token = + Settings::values->yuzu_token = ReadSetting(QStringLiteral("yuzu_token")).toString().toStdString(); qt_config->endGroup(); @@ -819,8 +819,8 @@ void Config::ReadValues() { } void Config::SavePlayerValues() { - for (std::size_t p = 0; p < Settings::values.players.size(); ++p) { - const auto& player = Settings::values.players[p]; + for (std::size_t p = 0; p < Settings::values->players.size(); ++p) { + const auto& player = Settings::values->players[p]; WriteSetting(QStringLiteral("player_%1_connected").arg(p), player.connected, false); WriteSetting(QStringLiteral("player_%1_type").arg(p), static_cast(player.type), @@ -856,12 +856,12 @@ void Config::SavePlayerValues() { } void Config::SaveDebugValues() { - WriteSetting(QStringLiteral("debug_pad_enabled"), Settings::values.debug_pad_enabled, false); + WriteSetting(QStringLiteral("debug_pad_enabled"), Settings::values->debug_pad_enabled, false); for (int i = 0; i < Settings::NativeButton::NumButtons; ++i) { const std::string default_param = InputCommon::GenerateKeyboardParam(default_buttons[i]); WriteSetting(QStringLiteral("debug_pad_") + QString::fromStdString(Settings::NativeButton::mapping[i]), - QString::fromStdString(Settings::values.debug_pad_buttons[i]), + QString::fromStdString(Settings::values->debug_pad_buttons[i]), QString::fromStdString(default_param)); } for (int i = 0; i < Settings::NativeAnalog::NumAnalogs; ++i) { @@ -870,26 +870,26 @@ void Config::SaveDebugValues() { default_analogs[i][3], default_analogs[i][4], 0.5f); WriteSetting(QStringLiteral("debug_pad_") + QString::fromStdString(Settings::NativeAnalog::mapping[i]), - QString::fromStdString(Settings::values.debug_pad_analogs[i]), + QString::fromStdString(Settings::values->debug_pad_analogs[i]), QString::fromStdString(default_param)); } } void Config::SaveMouseValues() { - WriteSetting(QStringLiteral("mouse_enabled"), Settings::values.mouse_enabled, false); + WriteSetting(QStringLiteral("mouse_enabled"), Settings::values->mouse_enabled, false); for (int i = 0; i < Settings::NativeMouseButton::NumMouseButtons; ++i) { const std::string default_param = InputCommon::GenerateKeyboardParam(default_mouse_buttons[i]); WriteSetting(QStringLiteral("mouse_") + QString::fromStdString(Settings::NativeMouseButton::mapping[i]), - QString::fromStdString(Settings::values.mouse_buttons[i]), + QString::fromStdString(Settings::values->mouse_buttons[i]), QString::fromStdString(default_param)); } } void Config::SaveTouchscreenValues() { - const auto& touchscreen = Settings::values.touchscreen; + const auto& touchscreen = Settings::values->touchscreen; WriteSetting(QStringLiteral("touchscreen_enabled"), touchscreen.enabled, true); WriteSetting(QStringLiteral("touchscreen_device"), QString::fromStdString(touchscreen.device), @@ -919,13 +919,13 @@ void Config::SaveValues() { void Config::SaveAudioValues() { qt_config->beginGroup(QStringLiteral("Audio")); - WriteSetting(QStringLiteral("output_engine"), QString::fromStdString(Settings::values.sink_id), + WriteSetting(QStringLiteral("output_engine"), QString::fromStdString(Settings::values->sink_id), QStringLiteral("auto")); WriteSetting(QStringLiteral("enable_audio_stretching"), - Settings::values.enable_audio_stretching, true); + Settings::values->enable_audio_stretching, true); WriteSetting(QStringLiteral("output_device"), - QString::fromStdString(Settings::values.audio_device_id), QStringLiteral("auto")); - WriteSetting(QStringLiteral("volume"), Settings::values.volume, 1.0f); + QString::fromStdString(Settings::values->audio_device_id), QStringLiteral("auto")); + WriteSetting(QStringLiteral("volume"), Settings::values->volume, 1.0f); qt_config->endGroup(); } @@ -939,15 +939,15 @@ void Config::SaveControlValues() { SaveTouchscreenValues(); WriteSetting(QStringLiteral("motion_device"), - QString::fromStdString(Settings::values.motion_device), + QString::fromStdString(Settings::values->motion_device), QStringLiteral("engine:motion_emu,update_period:100,sensitivity:0.01")); - WriteSetting(QStringLiteral("keyboard_enabled"), Settings::values.keyboard_enabled, false); + WriteSetting(QStringLiteral("keyboard_enabled"), Settings::values->keyboard_enabled, false); WriteSetting(QStringLiteral("udp_input_address"), - QString::fromStdString(Settings::values.udp_input_address), + QString::fromStdString(Settings::values->udp_input_address), QString::fromUtf8(InputCommon::CemuhookUDP::DEFAULT_ADDR)); - WriteSetting(QStringLiteral("udp_input_port"), Settings::values.udp_input_port, + WriteSetting(QStringLiteral("udp_input_port"), Settings::values->udp_input_port, InputCommon::CemuhookUDP::DEFAULT_PORT); - WriteSetting(QStringLiteral("udp_pad_index"), Settings::values.udp_pad_index, 0); + WriteSetting(QStringLiteral("udp_pad_index"), Settings::values->udp_pad_index, 0); qt_config->endGroup(); } @@ -955,7 +955,7 @@ void Config::SaveControlValues() { void Config::SaveCoreValues() { qt_config->beginGroup(QStringLiteral("Core")); - WriteSetting(QStringLiteral("use_multi_core"), Settings::values.use_multi_core, false); + WriteSetting(QStringLiteral("use_multi_core"), Settings::values->use_multi_core, false); qt_config->endGroup(); } @@ -963,7 +963,7 @@ void Config::SaveCoreValues() { void Config::SaveDataStorageValues() { qt_config->beginGroup(QStringLiteral("Data Storage")); - WriteSetting(QStringLiteral("use_virtual_sd"), Settings::values.use_virtual_sd, true); + WriteSetting(QStringLiteral("use_virtual_sd"), Settings::values->use_virtual_sd, true); WriteSetting(QStringLiteral("nand_directory"), QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::NANDDir)), QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::NANDDir))); @@ -979,22 +979,22 @@ void Config::SaveDataStorageValues() { WriteSetting(QStringLiteral("cache_directory"), QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::CacheDir)), QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::CacheDir))); - WriteSetting(QStringLiteral("gamecard_inserted"), Settings::values.gamecard_inserted, false); - WriteSetting(QStringLiteral("gamecard_current_game"), Settings::values.gamecard_current_game, + WriteSetting(QStringLiteral("gamecard_inserted"), Settings::values->gamecard_inserted, false); + WriteSetting(QStringLiteral("gamecard_current_game"), Settings::values->gamecard_current_game, false); WriteSetting(QStringLiteral("gamecard_path"), - QString::fromStdString(Settings::values.gamecard_path), QStringLiteral("")); + QString::fromStdString(Settings::values->gamecard_path), QStringLiteral("")); WriteSetting(QStringLiteral("nand_total_size"), - QVariant::fromValue(static_cast(Settings::values.nand_total_size)), + QVariant::fromValue(static_cast(Settings::values->nand_total_size)), QVariant::fromValue(static_cast(Settings::NANDTotalSize::S29_1GB))); WriteSetting(QStringLiteral("nand_user_size"), - QVariant::fromValue(static_cast(Settings::values.nand_user_size)), + QVariant::fromValue(static_cast(Settings::values->nand_user_size)), QVariant::fromValue(static_cast(Settings::NANDUserSize::S26GB))); WriteSetting(QStringLiteral("nand_system_size"), - QVariant::fromValue(static_cast(Settings::values.nand_system_size)), + QVariant::fromValue(static_cast(Settings::values->nand_system_size)), QVariant::fromValue(static_cast(Settings::NANDSystemSize::S2_5GB))); WriteSetting(QStringLiteral("sdmc_size"), - QVariant::fromValue(static_cast(Settings::values.sdmc_size)), + QVariant::fromValue(static_cast(Settings::values->sdmc_size)), QVariant::fromValue(static_cast(Settings::SDMCSize::S16GB))); qt_config->endGroup(); } @@ -1003,16 +1003,16 @@ void Config::SaveDebuggingValues() { qt_config->beginGroup(QStringLiteral("Debugging")); // Intentionally not using the QT default setting as this is intended to be changed in the ini - qt_config->setValue(QStringLiteral("record_frame_times"), Settings::values.record_frame_times); - WriteSetting(QStringLiteral("use_gdbstub"), Settings::values.use_gdbstub, false); - WriteSetting(QStringLiteral("gdbstub_port"), Settings::values.gdbstub_port, 24689); + qt_config->setValue(QStringLiteral("record_frame_times"), Settings::values->record_frame_times); + WriteSetting(QStringLiteral("use_gdbstub"), Settings::values->use_gdbstub, false); + WriteSetting(QStringLiteral("gdbstub_port"), Settings::values->gdbstub_port, 24689); WriteSetting(QStringLiteral("program_args"), - QString::fromStdString(Settings::values.program_args), QStringLiteral("")); - WriteSetting(QStringLiteral("dump_exefs"), Settings::values.dump_exefs, false); - WriteSetting(QStringLiteral("dump_nso"), Settings::values.dump_nso, false); - WriteSetting(QStringLiteral("quest_flag"), Settings::values.quest_flag, false); - WriteSetting(QStringLiteral("disable_cpu_opt"), Settings::values.disable_cpu_opt, false); - WriteSetting(QStringLiteral("disable_macro_jit"), Settings::values.disable_macro_jit, false); + QString::fromStdString(Settings::values->program_args), QStringLiteral("")); + WriteSetting(QStringLiteral("dump_exefs"), Settings::values->dump_exefs, false); + WriteSetting(QStringLiteral("dump_nso"), Settings::values->dump_nso, false); + WriteSetting(QStringLiteral("quest_flag"), Settings::values->quest_flag, false); + WriteSetting(QStringLiteral("disable_cpu_opt"), Settings::values->disable_cpu_opt, false); + WriteSetting(QStringLiteral("disable_macro_jit"), Settings::values->disable_macro_jit, false); qt_config->endGroup(); } @@ -1020,8 +1020,8 @@ void Config::SaveDebuggingValues() { void Config::SaveServiceValues() { qt_config->beginGroup(QStringLiteral("Services")); WriteSetting(QStringLiteral("bcat_backend"), - QString::fromStdString(Settings::values.bcat_backend), QStringLiteral("null")); - WriteSetting(QStringLiteral("bcat_boxcat_local"), Settings::values.bcat_boxcat_local, false); + QString::fromStdString(Settings::values->bcat_backend), QStringLiteral("null")); + WriteSetting(QStringLiteral("bcat_boxcat_local"), Settings::values->bcat_boxcat_local, false); qt_config->endGroup(); } @@ -1029,7 +1029,7 @@ void Config::SaveDisabledAddOnValues() { qt_config->beginWriteArray(QStringLiteral("DisabledAddOns")); int i = 0; - for (const auto& elem : Settings::values.disabled_addons) { + for (const auto& elem : Settings::values->disabled_addons) { qt_config->setArrayIndex(i); WriteSetting(QStringLiteral("title_id"), QVariant::fromValue(elem.first), 0); qt_config->beginWriteArray(QStringLiteral("disabled")); @@ -1048,9 +1048,9 @@ void Config::SaveDisabledAddOnValues() { void Config::SaveMiscellaneousValues() { qt_config->beginGroup(QStringLiteral("Miscellaneous")); - WriteSetting(QStringLiteral("log_filter"), QString::fromStdString(Settings::values.log_filter), + WriteSetting(QStringLiteral("log_filter"), QString::fromStdString(Settings::values->log_filter), QStringLiteral("*:Info")); - WriteSetting(QStringLiteral("use_dev_keys"), Settings::values.use_dev_keys, false); + WriteSetting(QStringLiteral("use_dev_keys"), Settings::values->use_dev_keys, false); qt_config->endGroup(); } @@ -1078,29 +1078,29 @@ void Config::SavePathValues() { void Config::SaveRendererValues() { qt_config->beginGroup(QStringLiteral("Renderer")); - WriteSetting(QStringLiteral("backend"), static_cast(Settings::values.renderer_backend), 0); - WriteSetting(QStringLiteral("debug"), Settings::values.renderer_debug, false); - WriteSetting(QStringLiteral("vulkan_device"), Settings::values.vulkan_device, 0); - WriteSetting(QStringLiteral("aspect_ratio"), Settings::values.aspect_ratio, 0); - WriteSetting(QStringLiteral("max_anisotropy"), Settings::values.max_anisotropy, 0); - WriteSetting(QStringLiteral("use_frame_limit"), Settings::values.use_frame_limit, true); - WriteSetting(QStringLiteral("frame_limit"), Settings::values.frame_limit, 100); - WriteSetting(QStringLiteral("use_disk_shader_cache"), Settings::values.use_disk_shader_cache, + WriteSetting(QStringLiteral("backend"), static_cast(Settings::values->renderer_backend), 0); + WriteSetting(QStringLiteral("debug"), Settings::values->renderer_debug, false); + WriteSetting(QStringLiteral("vulkan_device"), Settings::values->vulkan_device, 0); + WriteSetting(QStringLiteral("aspect_ratio"), Settings::values->aspect_ratio, 0); + WriteSetting(QStringLiteral("max_anisotropy"), Settings::values->max_anisotropy, 0); + WriteSetting(QStringLiteral("use_frame_limit"), Settings::values->use_frame_limit, true); + WriteSetting(QStringLiteral("frame_limit"), Settings::values->frame_limit, 100); + WriteSetting(QStringLiteral("use_disk_shader_cache"), Settings::values->use_disk_shader_cache, true); - WriteSetting(QStringLiteral("gpu_accuracy"), static_cast(Settings::values.gpu_accuracy), + WriteSetting(QStringLiteral("gpu_accuracy"), static_cast(Settings::values->gpu_accuracy), 0); WriteSetting(QStringLiteral("use_asynchronous_gpu_emulation"), - Settings::values.use_asynchronous_gpu_emulation, false); - WriteSetting(QStringLiteral("use_vsync"), Settings::values.use_vsync, true); - WriteSetting(QStringLiteral("use_assembly_shaders"), Settings::values.use_assembly_shaders, + Settings::values->use_asynchronous_gpu_emulation, false); + WriteSetting(QStringLiteral("use_vsync"), Settings::values->use_vsync, true); + WriteSetting(QStringLiteral("use_assembly_shaders"), Settings::values->use_assembly_shaders, false); - WriteSetting(QStringLiteral("use_fast_gpu_time"), Settings::values.use_fast_gpu_time, true); - WriteSetting(QStringLiteral("force_30fps_mode"), Settings::values.force_30fps_mode, false); + WriteSetting(QStringLiteral("use_fast_gpu_time"), Settings::values->use_fast_gpu_time, true); + WriteSetting(QStringLiteral("force_30fps_mode"), Settings::values->force_30fps_mode, false); // Cast to double because Qt's written float values are not human-readable - WriteSetting(QStringLiteral("bg_red"), static_cast(Settings::values.bg_red), 0.0); - WriteSetting(QStringLiteral("bg_green"), static_cast(Settings::values.bg_green), 0.0); - WriteSetting(QStringLiteral("bg_blue"), static_cast(Settings::values.bg_blue), 0.0); + WriteSetting(QStringLiteral("bg_red"), static_cast(Settings::values->bg_red), 0.0); + WriteSetting(QStringLiteral("bg_green"), static_cast(Settings::values->bg_green), 0.0); + WriteSetting(QStringLiteral("bg_blue"), static_cast(Settings::values->bg_blue), 0.0); qt_config->endGroup(); } @@ -1128,23 +1128,23 @@ void Config::SaveShortcutValues() { void Config::SaveSystemValues() { qt_config->beginGroup(QStringLiteral("System")); - WriteSetting(QStringLiteral("use_docked_mode"), Settings::values.use_docked_mode, false); - WriteSetting(QStringLiteral("current_user"), Settings::values.current_user, 0); - WriteSetting(QStringLiteral("language_index"), Settings::values.language_index, 1); - WriteSetting(QStringLiteral("region_index"), Settings::values.region_index, 1); - WriteSetting(QStringLiteral("time_zone_index"), Settings::values.time_zone_index, 0); + WriteSetting(QStringLiteral("use_docked_mode"), Settings::values->use_docked_mode, false); + WriteSetting(QStringLiteral("current_user"), Settings::values->current_user, 0); + WriteSetting(QStringLiteral("language_index"), Settings::values->language_index, 1); + WriteSetting(QStringLiteral("region_index"), Settings::values->region_index, 1); + WriteSetting(QStringLiteral("time_zone_index"), Settings::values->time_zone_index, 0); - WriteSetting(QStringLiteral("rng_seed_enabled"), Settings::values.rng_seed.has_value(), false); - WriteSetting(QStringLiteral("rng_seed"), Settings::values.rng_seed.value_or(0), 0); + WriteSetting(QStringLiteral("rng_seed_enabled"), Settings::values->rng_seed.has_value(), false); + WriteSetting(QStringLiteral("rng_seed"), Settings::values->rng_seed.value_or(0), 0); - WriteSetting(QStringLiteral("custom_rtc_enabled"), Settings::values.custom_rtc.has_value(), + WriteSetting(QStringLiteral("custom_rtc_enabled"), Settings::values->custom_rtc.has_value(), false); WriteSetting(QStringLiteral("custom_rtc"), QVariant::fromValue( - Settings::values.custom_rtc.value_or(std::chrono::seconds{}).count()), + Settings::values->custom_rtc.value_or(std::chrono::seconds{}).count()), 0); - WriteSetting(QStringLiteral("sound_index"), Settings::values.sound_index, 1); + WriteSetting(QStringLiteral("sound_index"), Settings::values->sound_index, 1); qt_config->endGroup(); } @@ -1211,13 +1211,13 @@ void Config::SaveUILayoutValues() { void Config::SaveWebServiceValues() { qt_config->beginGroup(QStringLiteral("WebService")); - WriteSetting(QStringLiteral("enable_telemetry"), Settings::values.enable_telemetry, true); + WriteSetting(QStringLiteral("enable_telemetry"), Settings::values->enable_telemetry, true); WriteSetting(QStringLiteral("web_api_url"), - QString::fromStdString(Settings::values.web_api_url), + QString::fromStdString(Settings::values->web_api_url), QStringLiteral("https://api.yuzu-emu.org")); WriteSetting(QStringLiteral("yuzu_username"), - QString::fromStdString(Settings::values.yuzu_username)); - WriteSetting(QStringLiteral("yuzu_token"), QString::fromStdString(Settings::values.yuzu_token)); + QString::fromStdString(Settings::values->yuzu_username)); + WriteSetting(QStringLiteral("yuzu_token"), QString::fromStdString(Settings::values->yuzu_token)); qt_config->endGroup(); } diff --git a/src/yuzu/configuration/configure_audio.cpp b/src/yuzu/configuration/configure_audio.cpp index f370c690fe..9e778b3fa5 100644 --- a/src/yuzu/configuration/configure_audio.cpp +++ b/src/yuzu/configuration/configure_audio.cpp @@ -41,8 +41,8 @@ void ConfigureAudio::SetConfiguration() { SetAudioDeviceFromDeviceID(); - ui->toggle_audio_stretching->setChecked(Settings::values.enable_audio_stretching); - ui->volume_slider->setValue(Settings::values.volume * ui->volume_slider->maximum()); + ui->toggle_audio_stretching->setChecked(Settings::values->enable_audio_stretching); + ui->volume_slider->setValue(Settings::values->volume * ui->volume_slider->maximum()); SetVolumeIndicatorText(ui->volume_slider->sliderPosition()); } @@ -50,7 +50,7 @@ void ConfigureAudio::SetOutputSinkFromSinkID() { [[maybe_unused]] const QSignalBlocker blocker(ui->output_sink_combo_box); int new_sink_index = 0; - const QString sink_id = QString::fromStdString(Settings::values.sink_id); + const QString sink_id = QString::fromStdString(Settings::values->sink_id); for (int index = 0; index < ui->output_sink_combo_box->count(); index++) { if (ui->output_sink_combo_box->itemText(index) == sink_id) { new_sink_index = index; @@ -64,7 +64,7 @@ void ConfigureAudio::SetOutputSinkFromSinkID() { void ConfigureAudio::SetAudioDeviceFromDeviceID() { int new_device_index = -1; - const QString device_id = QString::fromStdString(Settings::values.audio_device_id); + const QString device_id = QString::fromStdString(Settings::values->audio_device_id); for (int index = 0; index < ui->audio_device_combo_box->count(); index++) { if (ui->audio_device_combo_box->itemText(index) == device_id) { new_device_index = index; @@ -80,14 +80,14 @@ void ConfigureAudio::SetVolumeIndicatorText(int percentage) { } void ConfigureAudio::ApplyConfiguration() { - Settings::values.sink_id = + Settings::values->sink_id = ui->output_sink_combo_box->itemText(ui->output_sink_combo_box->currentIndex()) .toStdString(); - Settings::values.enable_audio_stretching = ui->toggle_audio_stretching->isChecked(); - Settings::values.audio_device_id = + Settings::values->enable_audio_stretching = ui->toggle_audio_stretching->isChecked(); + Settings::values->audio_device_id = ui->audio_device_combo_box->itemText(ui->audio_device_combo_box->currentIndex()) .toStdString(); - Settings::values.volume = + Settings::values->volume = static_cast(ui->volume_slider->sliderPosition()) / ui->volume_slider->maximum(); } diff --git a/src/yuzu/configuration/configure_debug.cpp b/src/yuzu/configuration/configure_debug.cpp index 2c77441fdf..ea43eb183c 100644 --- a/src/yuzu/configuration/configure_debug.cpp +++ b/src/yuzu/configuration/configure_debug.cpp @@ -27,36 +27,36 @@ ConfigureDebug::ConfigureDebug(QWidget* parent) : QWidget(parent), ui(new Ui::Co ConfigureDebug::~ConfigureDebug() = default; void ConfigureDebug::SetConfiguration() { - ui->toggle_gdbstub->setChecked(Settings::values.use_gdbstub); - ui->gdbport_spinbox->setEnabled(Settings::values.use_gdbstub); - ui->gdbport_spinbox->setValue(Settings::values.gdbstub_port); + ui->toggle_gdbstub->setChecked(Settings::values->use_gdbstub); + ui->gdbport_spinbox->setEnabled(Settings::values->use_gdbstub); + ui->gdbport_spinbox->setValue(Settings::values->gdbstub_port); ui->toggle_console->setEnabled(!Core::System::GetInstance().IsPoweredOn()); ui->toggle_console->setChecked(UISettings::values.show_console); - ui->log_filter_edit->setText(QString::fromStdString(Settings::values.log_filter)); - ui->homebrew_args_edit->setText(QString::fromStdString(Settings::values.program_args)); - ui->reporting_services->setChecked(Settings::values.reporting_services); - ui->quest_flag->setChecked(Settings::values.quest_flag); - ui->disable_cpu_opt->setChecked(Settings::values.disable_cpu_opt); + ui->log_filter_edit->setText(QString::fromStdString(Settings::values->log_filter)); + ui->homebrew_args_edit->setText(QString::fromStdString(Settings::values->program_args)); + ui->reporting_services->setChecked(Settings::values->reporting_services); + ui->quest_flag->setChecked(Settings::values->quest_flag); + ui->disable_cpu_opt->setChecked(Settings::values->disable_cpu_opt); ui->enable_graphics_debugging->setEnabled(!Core::System::GetInstance().IsPoweredOn()); - ui->enable_graphics_debugging->setChecked(Settings::values.renderer_debug); + ui->enable_graphics_debugging->setChecked(Settings::values->renderer_debug); ui->disable_macro_jit->setEnabled(!Core::System::GetInstance().IsPoweredOn()); - ui->disable_macro_jit->setChecked(Settings::values.disable_macro_jit); + ui->disable_macro_jit->setChecked(Settings::values->disable_macro_jit); } void ConfigureDebug::ApplyConfiguration() { - Settings::values.use_gdbstub = ui->toggle_gdbstub->isChecked(); - Settings::values.gdbstub_port = ui->gdbport_spinbox->value(); + Settings::values->use_gdbstub = ui->toggle_gdbstub->isChecked(); + Settings::values->gdbstub_port = ui->gdbport_spinbox->value(); UISettings::values.show_console = ui->toggle_console->isChecked(); - Settings::values.log_filter = ui->log_filter_edit->text().toStdString(); - Settings::values.program_args = ui->homebrew_args_edit->text().toStdString(); - Settings::values.reporting_services = ui->reporting_services->isChecked(); - Settings::values.quest_flag = ui->quest_flag->isChecked(); - Settings::values.disable_cpu_opt = ui->disable_cpu_opt->isChecked(); - Settings::values.renderer_debug = ui->enable_graphics_debugging->isChecked(); - Settings::values.disable_macro_jit = ui->disable_macro_jit->isChecked(); + Settings::values->log_filter = ui->log_filter_edit->text().toStdString(); + Settings::values->program_args = ui->homebrew_args_edit->text().toStdString(); + Settings::values->reporting_services = ui->reporting_services->isChecked(); + Settings::values->quest_flag = ui->quest_flag->isChecked(); + Settings::values->disable_cpu_opt = ui->disable_cpu_opt->isChecked(); + Settings::values->renderer_debug = ui->enable_graphics_debugging->isChecked(); + Settings::values->disable_macro_jit = ui->disable_macro_jit->isChecked(); Debugger::ToggleConsole(); Log::Filter filter; - filter.ParseFilterString(Settings::values.log_filter); + filter.ParseFilterString(Settings::values->log_filter); Log::SetGlobalFilter(filter); } diff --git a/src/yuzu/configuration/configure_filesystem.cpp b/src/yuzu/configuration/configure_filesystem.cpp index 835ee821cd..e68a444bc9 100644 --- a/src/yuzu/configuration/configure_filesystem.cpp +++ b/src/yuzu/configuration/configure_filesystem.cpp @@ -58,7 +58,7 @@ void ConfigureFilesystem::setConfiguration() { QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::NANDDir))); ui->sdmc_directory_edit->setText( QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::SDMCDir))); - ui->gamecard_path_edit->setText(QString::fromStdString(Settings::values.gamecard_path)); + ui->gamecard_path_edit->setText(QString::fromStdString(Settings::values->gamecard_path)); ui->dump_path_edit->setText( QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::DumpDir))); ui->load_path_edit->setText( @@ -66,17 +66,17 @@ void ConfigureFilesystem::setConfiguration() { ui->cache_directory_edit->setText( QString::fromStdString(FileUtil::GetUserPath(FileUtil::UserPath::CacheDir))); - ui->gamecard_inserted->setChecked(Settings::values.gamecard_inserted); - ui->gamecard_current_game->setChecked(Settings::values.gamecard_current_game); - ui->dump_exefs->setChecked(Settings::values.dump_exefs); - ui->dump_nso->setChecked(Settings::values.dump_nso); + ui->gamecard_inserted->setChecked(Settings::values->gamecard_inserted); + ui->gamecard_current_game->setChecked(Settings::values->gamecard_current_game); + ui->dump_exefs->setChecked(Settings::values->dump_exefs); + ui->dump_nso->setChecked(Settings::values->dump_nso); ui->cache_game_list->setChecked(UISettings::values.cache_game_list); - SetComboBoxFromData(ui->nand_size, Settings::values.nand_total_size); - SetComboBoxFromData(ui->usrnand_size, Settings::values.nand_user_size); - SetComboBoxFromData(ui->sysnand_size, Settings::values.nand_system_size); - SetComboBoxFromData(ui->sdmc_size, Settings::values.sdmc_size); + SetComboBoxFromData(ui->nand_size, Settings::values->nand_total_size); + SetComboBoxFromData(ui->usrnand_size, Settings::values->nand_user_size); + SetComboBoxFromData(ui->sysnand_size, Settings::values->nand_system_size); + SetComboBoxFromData(ui->sdmc_size, Settings::values->sdmc_size); UpdateEnabledControls(); } @@ -90,22 +90,22 @@ void ConfigureFilesystem::applyConfiguration() { FileUtil::GetUserPath(FileUtil::UserPath::LoadDir, ui->load_path_edit->text().toStdString()); FileUtil::GetUserPath(FileUtil::UserPath::CacheDir, ui->cache_directory_edit->text().toStdString()); - Settings::values.gamecard_path = ui->gamecard_path_edit->text().toStdString(); + Settings::values->gamecard_path = ui->gamecard_path_edit->text().toStdString(); - Settings::values.gamecard_inserted = ui->gamecard_inserted->isChecked(); - Settings::values.gamecard_current_game = ui->gamecard_current_game->isChecked(); - Settings::values.dump_exefs = ui->dump_exefs->isChecked(); - Settings::values.dump_nso = ui->dump_nso->isChecked(); + Settings::values->gamecard_inserted = ui->gamecard_inserted->isChecked(); + Settings::values->gamecard_current_game = ui->gamecard_current_game->isChecked(); + Settings::values->dump_exefs = ui->dump_exefs->isChecked(); + Settings::values->dump_nso = ui->dump_nso->isChecked(); UISettings::values.cache_game_list = ui->cache_game_list->isChecked(); - Settings::values.nand_total_size = static_cast( + Settings::values->nand_total_size = static_cast( ui->nand_size->itemData(ui->nand_size->currentIndex()).toULongLong()); - Settings::values.nand_system_size = static_cast( + Settings::values->nand_system_size = static_cast( ui->nand_size->itemData(ui->sysnand_size->currentIndex()).toULongLong()); - Settings::values.nand_user_size = static_cast( + Settings::values->nand_user_size = static_cast( ui->nand_size->itemData(ui->usrnand_size->currentIndex()).toULongLong()); - Settings::values.sdmc_size = static_cast( + Settings::values->sdmc_size = static_cast( ui->nand_size->itemData(ui->sdmc_size->currentIndex()).toULongLong()); } diff --git a/src/yuzu/configuration/configure_general.cpp b/src/yuzu/configuration/configure_general.cpp index 74b2ad537b..8b0ad68052 100644 --- a/src/yuzu/configuration/configure_general.cpp +++ b/src/yuzu/configuration/configure_general.cpp @@ -33,9 +33,9 @@ void ConfigureGeneral::SetConfiguration() { ui->toggle_background_pause->setChecked(UISettings::values.pause_when_in_background); ui->toggle_hide_mouse->setChecked(UISettings::values.hide_mouse); - ui->toggle_frame_limit->setChecked(Settings::values.use_frame_limit); + ui->toggle_frame_limit->setChecked(Settings::values->use_frame_limit); ui->frame_limit->setEnabled(ui->toggle_frame_limit->isChecked()); - ui->frame_limit->setValue(Settings::values.frame_limit); + ui->frame_limit->setValue(Settings::values->frame_limit); } void ConfigureGeneral::ApplyConfiguration() { @@ -44,9 +44,9 @@ void ConfigureGeneral::ApplyConfiguration() { UISettings::values.pause_when_in_background = ui->toggle_background_pause->isChecked(); UISettings::values.hide_mouse = ui->toggle_hide_mouse->isChecked(); - Settings::values.use_frame_limit = ui->toggle_frame_limit->isChecked(); - Settings::values.frame_limit = ui->frame_limit->value(); - Settings::values.use_multi_core = ui->use_multi_core->isChecked(); + Settings::values->use_frame_limit = ui->toggle_frame_limit->isChecked(); + Settings::values->frame_limit = ui->frame_limit->value(); + Settings::values->use_multi_core = ui->use_multi_core->isChecked(); } void ConfigureGeneral::changeEvent(QEvent* event) { diff --git a/src/yuzu/configuration/configure_graphics.cpp b/src/yuzu/configuration/configure_graphics.cpp index 431f51d731..ef6acf301f 100644 --- a/src/yuzu/configuration/configure_graphics.cpp +++ b/src/yuzu/configuration/configure_graphics.cpp @@ -21,7 +21,7 @@ ConfigureGraphics::ConfigureGraphics(QWidget* parent) : QWidget(parent), ui(new Ui::ConfigureGraphics) { - vulkan_device = Settings::values.vulkan_device; + vulkan_device = Settings::values->vulkan_device; RetrieveVulkanDevices(); ui->setupUi(this); @@ -57,27 +57,27 @@ void ConfigureGraphics::SetConfiguration() { const bool runtime_lock = !Core::System::GetInstance().IsPoweredOn(); ui->api->setEnabled(runtime_lock); - ui->api->setCurrentIndex(static_cast(Settings::values.renderer_backend)); - ui->aspect_ratio_combobox->setCurrentIndex(Settings::values.aspect_ratio); + ui->api->setCurrentIndex(static_cast(Settings::values->renderer_backend)); + ui->aspect_ratio_combobox->setCurrentIndex(Settings::values->aspect_ratio); ui->use_disk_shader_cache->setEnabled(runtime_lock); - ui->use_disk_shader_cache->setChecked(Settings::values.use_disk_shader_cache); + ui->use_disk_shader_cache->setChecked(Settings::values->use_disk_shader_cache); ui->use_asynchronous_gpu_emulation->setEnabled(runtime_lock); - ui->use_asynchronous_gpu_emulation->setChecked(Settings::values.use_asynchronous_gpu_emulation); - UpdateBackgroundColorButton(QColor::fromRgbF(Settings::values.bg_red, Settings::values.bg_green, - Settings::values.bg_blue)); + ui->use_asynchronous_gpu_emulation->setChecked(Settings::values->use_asynchronous_gpu_emulation); + UpdateBackgroundColorButton(QColor::fromRgbF(Settings::values->bg_red, Settings::values->bg_green, + Settings::values->bg_blue)); UpdateDeviceComboBox(); } void ConfigureGraphics::ApplyConfiguration() { - Settings::values.renderer_backend = GetCurrentGraphicsBackend(); - Settings::values.vulkan_device = vulkan_device; - Settings::values.aspect_ratio = ui->aspect_ratio_combobox->currentIndex(); - Settings::values.use_disk_shader_cache = ui->use_disk_shader_cache->isChecked(); - Settings::values.use_asynchronous_gpu_emulation = + Settings::values->renderer_backend = GetCurrentGraphicsBackend(); + Settings::values->vulkan_device = vulkan_device; + Settings::values->aspect_ratio = ui->aspect_ratio_combobox->currentIndex(); + Settings::values->use_disk_shader_cache = ui->use_disk_shader_cache->isChecked(); + Settings::values->use_asynchronous_gpu_emulation = ui->use_asynchronous_gpu_emulation->isChecked(); - Settings::values.bg_red = static_cast(bg_color.redF()); - Settings::values.bg_green = static_cast(bg_color.greenF()); - Settings::values.bg_blue = static_cast(bg_color.blueF()); + Settings::values->bg_red = static_cast(bg_color.redF()); + Settings::values->bg_green = static_cast(bg_color.greenF()); + Settings::values->bg_blue = static_cast(bg_color.blueF()); } void ConfigureGraphics::changeEvent(QEvent* event) { diff --git a/src/yuzu/configuration/configure_graphics_advanced.cpp b/src/yuzu/configuration/configure_graphics_advanced.cpp index be5006ad3b..e59b816210 100644 --- a/src/yuzu/configuration/configure_graphics_advanced.cpp +++ b/src/yuzu/configuration/configure_graphics_advanced.cpp @@ -19,26 +19,26 @@ ConfigureGraphicsAdvanced::~ConfigureGraphicsAdvanced() = default; void ConfigureGraphicsAdvanced::SetConfiguration() { const bool runtime_lock = !Core::System::GetInstance().IsPoweredOn(); - ui->gpu_accuracy->setCurrentIndex(static_cast(Settings::values.gpu_accuracy)); + ui->gpu_accuracy->setCurrentIndex(static_cast(Settings::values->gpu_accuracy)); ui->use_vsync->setEnabled(runtime_lock); - ui->use_vsync->setChecked(Settings::values.use_vsync); + ui->use_vsync->setChecked(Settings::values->use_vsync); ui->use_assembly_shaders->setEnabled(runtime_lock); - ui->use_assembly_shaders->setChecked(Settings::values.use_assembly_shaders); - ui->use_fast_gpu_time->setChecked(Settings::values.use_fast_gpu_time); + ui->use_assembly_shaders->setChecked(Settings::values->use_assembly_shaders); + ui->use_fast_gpu_time->setChecked(Settings::values->use_fast_gpu_time); ui->force_30fps_mode->setEnabled(runtime_lock); - ui->force_30fps_mode->setChecked(Settings::values.force_30fps_mode); + ui->force_30fps_mode->setChecked(Settings::values->force_30fps_mode); ui->anisotropic_filtering_combobox->setEnabled(runtime_lock); - ui->anisotropic_filtering_combobox->setCurrentIndex(Settings::values.max_anisotropy); + ui->anisotropic_filtering_combobox->setCurrentIndex(Settings::values->max_anisotropy); } void ConfigureGraphicsAdvanced::ApplyConfiguration() { auto gpu_accuracy = static_cast(ui->gpu_accuracy->currentIndex()); - Settings::values.gpu_accuracy = gpu_accuracy; - Settings::values.use_vsync = ui->use_vsync->isChecked(); - Settings::values.use_assembly_shaders = ui->use_assembly_shaders->isChecked(); - Settings::values.use_fast_gpu_time = ui->use_fast_gpu_time->isChecked(); - Settings::values.force_30fps_mode = ui->force_30fps_mode->isChecked(); - Settings::values.max_anisotropy = ui->anisotropic_filtering_combobox->currentIndex(); + Settings::values->gpu_accuracy = gpu_accuracy; + Settings::values->use_vsync = ui->use_vsync->isChecked(); + Settings::values->use_assembly_shaders = ui->use_assembly_shaders->isChecked(); + Settings::values->use_fast_gpu_time = ui->use_fast_gpu_time->isChecked(); + Settings::values->force_30fps_mode = ui->force_30fps_mode->isChecked(); + Settings::values->max_anisotropy = ui->anisotropic_filtering_combobox->currentIndex(); } void ConfigureGraphicsAdvanced::changeEvent(QEvent* event) { diff --git a/src/yuzu/configuration/configure_input.cpp b/src/yuzu/configuration/configure_input.cpp index f2977719ce..066eab7622 100644 --- a/src/yuzu/configuration/configure_input.cpp +++ b/src/yuzu/configuration/configure_input.cpp @@ -119,26 +119,26 @@ void ConfigureInput::ApplyConfiguration() { for (std::size_t i = 0; i < players_controller.size(); ++i) { const auto controller_type_index = players_controller[i]->currentIndex(); - Settings::values.players[i].connected = controller_type_index != 0; + Settings::values->players[i].connected = controller_type_index != 0; if (controller_type_index > 0) { - Settings::values.players[i].type = + Settings::values->players[i].type = static_cast(controller_type_index - 1); } else { - Settings::values.players[i].type = Settings::ControllerType::DualJoycon; + Settings::values->players[i].type = Settings::ControllerType::DualJoycon; } } - const bool pre_docked_mode = Settings::values.use_docked_mode; - Settings::values.use_docked_mode = ui->use_docked_mode->isChecked(); - OnDockedModeChanged(pre_docked_mode, Settings::values.use_docked_mode); + const bool pre_docked_mode = Settings::values->use_docked_mode; + Settings::values->use_docked_mode = ui->use_docked_mode->isChecked(); + OnDockedModeChanged(pre_docked_mode, Settings::values->use_docked_mode); Settings::values - .players[Service::HID::Controller_NPad::NPadIdToIndex(Service::HID::NPAD_HANDHELD)] + ->players[Service::HID::Controller_NPad::NPadIdToIndex(Service::HID::NPAD_HANDHELD)] .connected = ui->handheld_connected->isChecked(); - Settings::values.debug_pad_enabled = ui->debug_enabled->isChecked(); - Settings::values.mouse_enabled = ui->mouse_enabled->isChecked(); - Settings::values.keyboard_enabled = ui->keyboard_enabled->isChecked(); - Settings::values.touchscreen.enabled = ui->touchscreen_enabled->isChecked(); + Settings::values->debug_pad_enabled = ui->debug_enabled->isChecked(); + Settings::values->mouse_enabled = ui->mouse_enabled->isChecked(); + Settings::values->keyboard_enabled = ui->keyboard_enabled->isChecked(); + Settings::values->touchscreen.enabled = ui->touchscreen_enabled->isChecked(); } void ConfigureInput::changeEvent(QEvent* event) { @@ -194,31 +194,31 @@ void ConfigureInput::UpdateUIEnabled() { void ConfigureInput::LoadConfiguration() { std::stable_partition( - Settings::values.players.begin(), - Settings::values.players.begin() + + Settings::values->players.begin(), + Settings::values->players.begin() + Service::HID::Controller_NPad::NPadIdToIndex(Service::HID::NPAD_HANDHELD), [](const auto& player) { return player.connected; }); LoadPlayerControllerIndices(); - ui->use_docked_mode->setChecked(Settings::values.use_docked_mode); + ui->use_docked_mode->setChecked(Settings::values->use_docked_mode); ui->handheld_connected->setChecked( Settings::values - .players[Service::HID::Controller_NPad::NPadIdToIndex(Service::HID::NPAD_HANDHELD)] + ->players[Service::HID::Controller_NPad::NPadIdToIndex(Service::HID::NPAD_HANDHELD)] .connected); - ui->debug_enabled->setChecked(Settings::values.debug_pad_enabled); - ui->mouse_enabled->setChecked(Settings::values.mouse_enabled); - ui->keyboard_enabled->setChecked(Settings::values.keyboard_enabled); - ui->touchscreen_enabled->setChecked(Settings::values.touchscreen.enabled); + ui->debug_enabled->setChecked(Settings::values->debug_pad_enabled); + ui->mouse_enabled->setChecked(Settings::values->mouse_enabled); + ui->keyboard_enabled->setChecked(Settings::values->keyboard_enabled); + ui->touchscreen_enabled->setChecked(Settings::values->touchscreen.enabled); UpdateUIEnabled(); } void ConfigureInput::LoadPlayerControllerIndices() { for (std::size_t i = 0; i < players_controller.size(); ++i) { - const auto connected = Settings::values.players[i].connected; + const auto connected = Settings::values->players[i].connected; players_controller[i]->setCurrentIndex( - connected ? static_cast(Settings::values.players[i].type) + 1 : 0); + connected ? static_cast(Settings::values->players[i].type) + 1 : 0); } } diff --git a/src/yuzu/configuration/configure_input_player.cpp b/src/yuzu/configuration/configure_input_player.cpp index 00433926d3..29ab544a64 100644 --- a/src/yuzu/configuration/configure_input_player.cpp +++ b/src/yuzu/configuration/configure_input_player.cpp @@ -205,7 +205,7 @@ ConfigureInputPlayer::ConfigureInputPlayer(QWidget* parent, std::size_t player_i ui->buttonScreenshot, ui->labelScreenshot, }; - auto layout = Settings::values.players[player_index].type; + auto layout = Settings::values->players[player_index].type; if (debug) layout = Settings::ControllerType::DualJoycon; @@ -432,9 +432,9 @@ ConfigureInputPlayer::~ConfigureInputPlayer() = default; void ConfigureInputPlayer::ApplyConfiguration() { auto& buttons = - debug ? Settings::values.debug_pad_buttons : Settings::values.players[player_index].buttons; + debug ? Settings::values->debug_pad_buttons : Settings::values->players[player_index].buttons; auto& analogs = - debug ? Settings::values.debug_pad_analogs : Settings::values.players[player_index].analogs; + debug ? Settings::values->debug_pad_analogs : Settings::values->players[player_index].analogs; std::transform(buttons_param.begin(), buttons_param.end(), buttons.begin(), [](const Common::ParamPackage& param) { return param.Serialize(); }); @@ -448,10 +448,10 @@ void ConfigureInputPlayer::ApplyConfiguration() { std::transform(controller_colors.begin(), controller_colors.end(), colors.begin(), [](QColor color) { return color.rgb(); }); - Settings::values.players[player_index].body_color_left = colors[0]; - Settings::values.players[player_index].button_color_left = colors[1]; - Settings::values.players[player_index].body_color_right = colors[2]; - Settings::values.players[player_index].button_color_right = colors[3]; + Settings::values->players[player_index].body_color_left = colors[0]; + Settings::values->players[player_index].button_color_left = colors[1]; + Settings::values->players[player_index].body_color_right = colors[2]; + Settings::values->players[player_index].button_color_right = colors[3]; } void ConfigureInputPlayer::changeEvent(QEvent* event) { @@ -478,18 +478,18 @@ void ConfigureInputPlayer::OnControllerButtonClick(int i) { void ConfigureInputPlayer::LoadConfiguration() { if (debug) { - std::transform(Settings::values.debug_pad_buttons.begin(), - Settings::values.debug_pad_buttons.end(), buttons_param.begin(), + std::transform(Settings::values->debug_pad_buttons.begin(), + Settings::values->debug_pad_buttons.end(), buttons_param.begin(), [](const std::string& str) { return Common::ParamPackage(str); }); - std::transform(Settings::values.debug_pad_analogs.begin(), - Settings::values.debug_pad_analogs.end(), analogs_param.begin(), + std::transform(Settings::values->debug_pad_analogs.begin(), + Settings::values->debug_pad_analogs.end(), analogs_param.begin(), [](const std::string& str) { return Common::ParamPackage(str); }); } else { - std::transform(Settings::values.players[player_index].buttons.begin(), - Settings::values.players[player_index].buttons.end(), buttons_param.begin(), + std::transform(Settings::values->players[player_index].buttons.begin(), + Settings::values->players[player_index].buttons.end(), buttons_param.begin(), [](const std::string& str) { return Common::ParamPackage(str); }); - std::transform(Settings::values.players[player_index].analogs.begin(), - Settings::values.players[player_index].analogs.end(), analogs_param.begin(), + std::transform(Settings::values->players[player_index].analogs.begin(), + Settings::values->players[player_index].analogs.end(), analogs_param.begin(), [](const std::string& str) { return Common::ParamPackage(str); }); } @@ -499,10 +499,10 @@ void ConfigureInputPlayer::LoadConfiguration() { return; std::array colors = { - Settings::values.players[player_index].body_color_left, - Settings::values.players[player_index].button_color_left, - Settings::values.players[player_index].body_color_right, - Settings::values.players[player_index].button_color_right, + Settings::values->players[player_index].body_color_left, + Settings::values->players[player_index].button_color_left, + Settings::values->players[player_index].body_color_right, + Settings::values->players[player_index].button_color_right, }; std::transform(colors.begin(), colors.end(), controller_colors.begin(), diff --git a/src/yuzu/configuration/configure_input_simple.cpp b/src/yuzu/configuration/configure_input_simple.cpp index 0e0e8f1139..a01d3291f8 100644 --- a/src/yuzu/configuration/configure_input_simple.cpp +++ b/src/yuzu/configuration/configure_input_simple.cpp @@ -39,33 +39,33 @@ constexpr std::size_t PLAYER_0_INDEX = 0; constexpr std::size_t HANDHELD_INDEX = 8; void HandheldOnProfileSelect() { - Settings::values.players[HANDHELD_INDEX].connected = true; - Settings::values.players[HANDHELD_INDEX].type = Settings::ControllerType::DualJoycon; + Settings::values->players[HANDHELD_INDEX].connected = true; + Settings::values->players[HANDHELD_INDEX].type = Settings::ControllerType::DualJoycon; for (std::size_t player = 0; player < HANDHELD_INDEX; ++player) { - Settings::values.players[player].connected = false; + Settings::values->players[player].connected = false; } - Settings::values.use_docked_mode = false; - Settings::values.keyboard_enabled = false; - Settings::values.mouse_enabled = false; - Settings::values.debug_pad_enabled = false; - Settings::values.touchscreen.enabled = true; + Settings::values->use_docked_mode = false; + Settings::values->keyboard_enabled = false; + Settings::values->mouse_enabled = false; + Settings::values->debug_pad_enabled = false; + Settings::values->touchscreen.enabled = true; } void DualJoyconsDockedOnProfileSelect() { - Settings::values.players[PLAYER_0_INDEX].connected = true; - Settings::values.players[PLAYER_0_INDEX].type = Settings::ControllerType::DualJoycon; + Settings::values->players[PLAYER_0_INDEX].connected = true; + Settings::values->players[PLAYER_0_INDEX].type = Settings::ControllerType::DualJoycon; for (std::size_t player = 1; player <= HANDHELD_INDEX; ++player) { - Settings::values.players[player].connected = false; + Settings::values->players[player].connected = false; } - Settings::values.use_docked_mode = true; - Settings::values.keyboard_enabled = false; - Settings::values.mouse_enabled = false; - Settings::values.debug_pad_enabled = false; - Settings::values.touchscreen.enabled = true; + Settings::values->use_docked_mode = true; + Settings::values->keyboard_enabled = false; + Settings::values->mouse_enabled = false; + Settings::values->debug_pad_enabled = false; + Settings::values->touchscreen.enabled = true; } // Name, OnProfileSelect (called when selected in drop down), OnConfigure (called when configure @@ -142,9 +142,9 @@ void ConfigureInputSimple::LoadConfiguration() { } void ConfigureInputSimple::OnSelectProfile(int index) { - const auto old_docked = Settings::values.use_docked_mode; + const auto old_docked = Settings::values->use_docked_mode; ApplyInputProfileConfiguration(index); - OnDockedModeChanged(old_docked, Settings::values.use_docked_mode); + OnDockedModeChanged(old_docked, Settings::values->use_docked_mode); } void ConfigureInputSimple::OnConfigure() { diff --git a/src/yuzu/configuration/configure_mouse_advanced.cpp b/src/yuzu/configuration/configure_mouse_advanced.cpp index e0647ea5bc..035f650e3d 100644 --- a/src/yuzu/configuration/configure_mouse_advanced.cpp +++ b/src/yuzu/configuration/configure_mouse_advanced.cpp @@ -129,12 +129,12 @@ ConfigureMouseAdvanced::~ConfigureMouseAdvanced() = default; void ConfigureMouseAdvanced::ApplyConfiguration() { std::transform(buttons_param.begin(), buttons_param.end(), - Settings::values.mouse_buttons.begin(), + Settings::values->mouse_buttons.begin(), [](const Common::ParamPackage& param) { return param.Serialize(); }); } void ConfigureMouseAdvanced::LoadConfiguration() { - std::transform(Settings::values.mouse_buttons.begin(), Settings::values.mouse_buttons.end(), + std::transform(Settings::values->mouse_buttons.begin(), Settings::values->mouse_buttons.end(), buttons_param.begin(), [](const std::string& str) { return Common::ParamPackage(str); }); UpdateButtonLabels(); diff --git a/src/yuzu/configuration/configure_per_general.cpp b/src/yuzu/configuration/configure_per_general.cpp index d7f259f12a..ff4bc99dba 100644 --- a/src/yuzu/configuration/configure_per_general.cpp +++ b/src/yuzu/configuration/configure_per_general.cpp @@ -81,7 +81,7 @@ void ConfigurePerGameGeneral::ApplyConfiguration() { disabled_addons.push_back(item.front()->text().toStdString()); } - auto current = Settings::values.disabled_addons[title_id]; + auto current = Settings::values->disabled_addons[title_id]; std::sort(disabled_addons.begin(), disabled_addons.end()); std::sort(current.begin(), current.end()); if (disabled_addons != current) { @@ -89,7 +89,7 @@ void ConfigurePerGameGeneral::ApplyConfiguration() { "game_list" + DIR_SEP + fmt::format("{:016X}.pv.txt", title_id)); } - Settings::values.disabled_addons[title_id] = disabled_addons; + Settings::values->disabled_addons[title_id] = disabled_addons; } void ConfigurePerGameGeneral::changeEvent(QEvent* event) { @@ -161,7 +161,7 @@ void ConfigurePerGameGeneral::LoadConfiguration() { FileSys::VirtualFile update_raw; loader->ReadUpdateRaw(update_raw); - const auto& disabled = Settings::values.disabled_addons[title_id]; + const auto& disabled = Settings::values->disabled_addons[title_id]; for (const auto& patch : pm.GetPatchVersionNames(update_raw)) { const auto name = diff --git a/src/yuzu/configuration/configure_profile_manager.cpp b/src/yuzu/configuration/configure_profile_manager.cpp index f53423440d..2d699691ea 100644 --- a/src/yuzu/configuration/configure_profile_manager.cpp +++ b/src/yuzu/configuration/configure_profile_manager.cpp @@ -165,7 +165,7 @@ void ConfigureProfileManager::PopulateUserList() { void ConfigureProfileManager::UpdateCurrentUser() { ui->pm_add->setEnabled(profile_manager->GetUserCount() < Service::Account::MAX_USERS); - const auto& current_user = profile_manager->GetUser(Settings::values.current_user); + const auto& current_user = profile_manager->GetUser(Settings::values->current_user); ASSERT(current_user); const auto username = GetAccountUsername(*profile_manager, *current_user); @@ -184,7 +184,7 @@ void ConfigureProfileManager::ApplyConfiguration() { } void ConfigureProfileManager::SelectUser(const QModelIndex& index) { - Settings::values.current_user = + Settings::values->current_user = std::clamp(index.row(), 0, static_cast(profile_manager->GetUserCount() - 1)); UpdateCurrentUser(); @@ -247,8 +247,8 @@ void ConfigureProfileManager::DeleteUser() { if (confirm == QMessageBox::No) return; - if (Settings::values.current_user == tree_view->currentIndex().row()) - Settings::values.current_user = 0; + if (Settings::values->current_user == tree_view->currentIndex().row()) + Settings::values->current_user = 0; UpdateCurrentUser(); if (!profile_manager->RemoveUser(*uuid)) diff --git a/src/yuzu/configuration/configure_service.cpp b/src/yuzu/configuration/configure_service.cpp index 0de7a4f0bb..a6cc287d54 100644 --- a/src/yuzu/configuration/configure_service.cpp +++ b/src/yuzu/configuration/configure_service.cpp @@ -54,7 +54,7 @@ ConfigureService::ConfigureService(QWidget* parent) ConfigureService::~ConfigureService() = default; void ConfigureService::ApplyConfiguration() { - Settings::values.bcat_backend = ui->bcat_source->currentText().toLower().toStdString(); + Settings::values->bcat_backend = ui->bcat_source->currentText().toLower().toStdString(); } void ConfigureService::RetranslateUi() { @@ -63,7 +63,7 @@ void ConfigureService::RetranslateUi() { void ConfigureService::SetConfiguration() { const int index = - ui->bcat_source->findData(QString::fromStdString(Settings::values.bcat_backend)); + ui->bcat_source->findData(QString::fromStdString(Settings::values->bcat_backend)); ui->bcat_source->setCurrentIndex(index == -1 ? 0 : index); } diff --git a/src/yuzu/configuration/configure_system.cpp b/src/yuzu/configuration/configure_system.cpp index 10315e7a63..35a7b7c6d8 100644 --- a/src/yuzu/configuration/configure_system.cpp +++ b/src/yuzu/configuration/configure_system.cpp @@ -55,23 +55,23 @@ void ConfigureSystem::RetranslateUI() { void ConfigureSystem::SetConfiguration() { enabled = !Core::System::GetInstance().IsPoweredOn(); - ui->combo_language->setCurrentIndex(Settings::values.language_index); - ui->combo_region->setCurrentIndex(Settings::values.region_index); - ui->combo_time_zone->setCurrentIndex(Settings::values.time_zone_index); - ui->combo_sound->setCurrentIndex(Settings::values.sound_index); + ui->combo_language->setCurrentIndex(Settings::values->language_index); + ui->combo_region->setCurrentIndex(Settings::values->region_index); + ui->combo_time_zone->setCurrentIndex(Settings::values->time_zone_index); + ui->combo_sound->setCurrentIndex(Settings::values->sound_index); - ui->rng_seed_checkbox->setChecked(Settings::values.rng_seed.has_value()); - ui->rng_seed_edit->setEnabled(Settings::values.rng_seed.has_value()); + ui->rng_seed_checkbox->setChecked(Settings::values->rng_seed.has_value()); + ui->rng_seed_edit->setEnabled(Settings::values->rng_seed.has_value()); const auto rng_seed = QStringLiteral("%1") - .arg(Settings::values.rng_seed.value_or(0), 8, 16, QLatin1Char{'0'}) + .arg(Settings::values->rng_seed.value_or(0), 8, 16, QLatin1Char{'0'}) .toUpper(); ui->rng_seed_edit->setText(rng_seed); - ui->custom_rtc_checkbox->setChecked(Settings::values.custom_rtc.has_value()); - ui->custom_rtc_edit->setEnabled(Settings::values.custom_rtc.has_value()); + ui->custom_rtc_checkbox->setChecked(Settings::values->custom_rtc.has_value()); + ui->custom_rtc_edit->setEnabled(Settings::values->custom_rtc.has_value()); - const auto rtc_time = Settings::values.custom_rtc.value_or( + const auto rtc_time = Settings::values->custom_rtc.value_or( std::chrono::seconds(QDateTime::currentSecsSinceEpoch())); ui->custom_rtc_edit->setDateTime(QDateTime::fromSecsSinceEpoch(rtc_time.count())); } @@ -83,22 +83,22 @@ void ConfigureSystem::ApplyConfiguration() { return; } - Settings::values.language_index = ui->combo_language->currentIndex(); - Settings::values.region_index = ui->combo_region->currentIndex(); - Settings::values.time_zone_index = ui->combo_time_zone->currentIndex(); - Settings::values.sound_index = ui->combo_sound->currentIndex(); + Settings::values->language_index = ui->combo_language->currentIndex(); + Settings::values->region_index = ui->combo_region->currentIndex(); + Settings::values->time_zone_index = ui->combo_time_zone->currentIndex(); + Settings::values->sound_index = ui->combo_sound->currentIndex(); if (ui->rng_seed_checkbox->isChecked()) { - Settings::values.rng_seed = ui->rng_seed_edit->text().toULongLong(nullptr, 16); + Settings::values->rng_seed = ui->rng_seed_edit->text().toULongLong(nullptr, 16); } else { - Settings::values.rng_seed = std::nullopt; + Settings::values->rng_seed = std::nullopt; } if (ui->custom_rtc_checkbox->isChecked()) { - Settings::values.custom_rtc = + Settings::values->custom_rtc = std::chrono::seconds(ui->custom_rtc_edit->dateTime().toSecsSinceEpoch()); } else { - Settings::values.custom_rtc = std::nullopt; + Settings::values->custom_rtc = std::nullopt; } Settings::Apply(); diff --git a/src/yuzu/configuration/configure_touchscreen_advanced.cpp b/src/yuzu/configuration/configure_touchscreen_advanced.cpp index 7d7cc00b72..2b5897012f 100644 --- a/src/yuzu/configuration/configure_touchscreen_advanced.cpp +++ b/src/yuzu/configuration/configure_touchscreen_advanced.cpp @@ -33,17 +33,17 @@ void ConfigureTouchscreenAdvanced::RetranslateUI() { } void ConfigureTouchscreenAdvanced::ApplyConfiguration() { - Settings::values.touchscreen.finger = ui->finger_box->value(); - Settings::values.touchscreen.diameter_x = ui->diameter_x_box->value(); - Settings::values.touchscreen.diameter_y = ui->diameter_y_box->value(); - Settings::values.touchscreen.rotation_angle = ui->angle_box->value(); + Settings::values->touchscreen.finger = ui->finger_box->value(); + Settings::values->touchscreen.diameter_x = ui->diameter_x_box->value(); + Settings::values->touchscreen.diameter_y = ui->diameter_y_box->value(); + Settings::values->touchscreen.rotation_angle = ui->angle_box->value(); } void ConfigureTouchscreenAdvanced::LoadConfiguration() { - ui->finger_box->setValue(Settings::values.touchscreen.finger); - ui->diameter_x_box->setValue(Settings::values.touchscreen.diameter_x); - ui->diameter_y_box->setValue(Settings::values.touchscreen.diameter_y); - ui->angle_box->setValue(Settings::values.touchscreen.rotation_angle); + ui->finger_box->setValue(Settings::values->touchscreen.finger); + ui->diameter_x_box->setValue(Settings::values->touchscreen.diameter_x); + ui->diameter_y_box->setValue(Settings::values->touchscreen.diameter_y); + ui->angle_box->setValue(Settings::values->touchscreen.rotation_angle); } void ConfigureTouchscreenAdvanced::RestoreDefaults() { diff --git a/src/yuzu/configuration/configure_web.cpp b/src/yuzu/configuration/configure_web.cpp index 8637f5b3c1..344fd233eb 100644 --- a/src/yuzu/configuration/configure_web.cpp +++ b/src/yuzu/configuration/configure_web.cpp @@ -88,15 +88,15 @@ void ConfigureWeb::SetConfiguration() { ui->web_signup_link->setOpenExternalLinks(true); ui->web_token_info_link->setOpenExternalLinks(true); - if (Settings::values.yuzu_username.empty()) { + if (Settings::values->yuzu_username.empty()) { ui->username->setText(tr("Unspecified")); } else { - ui->username->setText(QString::fromStdString(Settings::values.yuzu_username)); + ui->username->setText(QString::fromStdString(Settings::values->yuzu_username)); } - ui->toggle_telemetry->setChecked(Settings::values.enable_telemetry); + ui->toggle_telemetry->setChecked(Settings::values->enable_telemetry); ui->edit_token->setText(QString::fromStdString( - GenerateDisplayToken(Settings::values.yuzu_username, Settings::values.yuzu_token))); + GenerateDisplayToken(Settings::values->yuzu_username, Settings::values->yuzu_token))); // Connect after setting the values, to avoid calling OnLoginChanged now connect(ui->edit_token, &QLineEdit::textChanged, this, &ConfigureWeb::OnLoginChanged); @@ -107,12 +107,12 @@ void ConfigureWeb::SetConfiguration() { } void ConfigureWeb::ApplyConfiguration() { - Settings::values.enable_telemetry = ui->toggle_telemetry->isChecked(); + Settings::values->enable_telemetry = ui->toggle_telemetry->isChecked(); UISettings::values.enable_discord_presence = ui->toggle_discordrpc->isChecked(); if (user_verified) { - Settings::values.yuzu_username = + Settings::values->yuzu_username = UsernameFromDisplayToken(ui->edit_token->text().toStdString()); - Settings::values.yuzu_token = TokenFromDisplayToken(ui->edit_token->text().toStdString()); + Settings::values->yuzu_token = TokenFromDisplayToken(ui->edit_token->text().toStdString()); } else { QMessageBox::warning( this, tr("Token not verified"), diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 9844e47647..90386c953b 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -162,7 +162,7 @@ void GMainWindow::ShowTelemetryCallout() { "data is collected to help improve yuzu. " "

Would you like to share your usage data with us?"); if (QMessageBox::question(this, tr("Telemetry"), telemetry_message) != QMessageBox::Yes) { - Settings::values.enable_telemetry = false; + Settings::values->enable_telemetry = false; Settings::Apply(); } } @@ -171,7 +171,7 @@ const int GMainWindow::max_recent_files_item; static void InitializeLogging() { Log::Filter log_filter; - log_filter.ParseFilterString(Settings::values.log_filter); + log_filter.ParseFilterString(Settings::values->log_filter); Log::SetGlobalFilter(log_filter); const std::string& log_dir = FileUtil::GetUserPath(FileUtil::UserPath::LogDir); @@ -517,13 +517,13 @@ void GMainWindow::InitializeWidgets() { dock_status_button->setObjectName(QStringLiteral("TogglableStatusBarButton")); dock_status_button->setFocusPolicy(Qt::NoFocus); connect(dock_status_button, &QPushButton::clicked, [&] { - Settings::values.use_docked_mode = !Settings::values.use_docked_mode; - dock_status_button->setChecked(Settings::values.use_docked_mode); - OnDockedModeChanged(!Settings::values.use_docked_mode, Settings::values.use_docked_mode); + Settings::values->use_docked_mode = !Settings::values->use_docked_mode; + dock_status_button->setChecked(Settings::values->use_docked_mode); + OnDockedModeChanged(!Settings::values->use_docked_mode, Settings::values->use_docked_mode); }); dock_status_button->setText(tr("DOCK")); dock_status_button->setCheckable(true); - dock_status_button->setChecked(Settings::values.use_docked_mode); + dock_status_button->setChecked(Settings::values->use_docked_mode); statusBar()->insertPermanentWidget(0, dock_status_button); // Setup ASync button @@ -581,16 +581,16 @@ void GMainWindow::InitializeWidgets() { renderer_status_button->setCheckable(false); renderer_status_button->setDisabled(true); #else - renderer_status_button->setChecked(Settings::values.renderer_backend == + renderer_status_button->setChecked(Settings::values->renderer_backend == Settings::RendererBackend::Vulkan); connect(renderer_status_button, &QPushButton::clicked, [=] { if (emulation_running) { return; } if (renderer_status_button->isChecked()) { - Settings::values.renderer_backend = Settings::RendererBackend::Vulkan; + Settings::values->renderer_backend = Settings::RendererBackend::Vulkan; } else { - Settings::values.renderer_backend = Settings::RendererBackend::OpenGL; + Settings::values->renderer_backend = Settings::RendererBackend::OpenGL; } Settings::Apply(); @@ -727,21 +727,21 @@ void GMainWindow::InitializeHotkeys() { }); connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Toggle Speed Limit"), this), &QShortcut::activated, this, [&] { - Settings::values.use_frame_limit = !Settings::values.use_frame_limit; + Settings::values->use_frame_limit = !Settings::values->use_frame_limit; UpdateStatusBar(); }); constexpr u16 SPEED_LIMIT_STEP = 5; connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Increase Speed Limit"), this), &QShortcut::activated, this, [&] { - if (Settings::values.frame_limit < 9999 - SPEED_LIMIT_STEP) { - Settings::values.frame_limit += SPEED_LIMIT_STEP; + if (Settings::values->frame_limit < 9999 - SPEED_LIMIT_STEP) { + Settings::values->frame_limit += SPEED_LIMIT_STEP; UpdateStatusBar(); } }); connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Decrease Speed Limit"), this), &QShortcut::activated, this, [&] { - if (Settings::values.frame_limit > SPEED_LIMIT_STEP) { - Settings::values.frame_limit -= SPEED_LIMIT_STEP; + if (Settings::values->frame_limit > SPEED_LIMIT_STEP) { + Settings::values->frame_limit -= SPEED_LIMIT_STEP; UpdateStatusBar(); } }); @@ -759,10 +759,10 @@ void GMainWindow::InitializeHotkeys() { }); connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Change Docked Mode"), this), &QShortcut::activated, this, [&] { - Settings::values.use_docked_mode = !Settings::values.use_docked_mode; - OnDockedModeChanged(!Settings::values.use_docked_mode, - Settings::values.use_docked_mode); - dock_status_button->setChecked(Settings::values.use_docked_mode); + Settings::values->use_docked_mode = !Settings::values->use_docked_mode; + OnDockedModeChanged(!Settings::values->use_docked_mode, + Settings::values->use_docked_mode); + dock_status_button->setChecked(Settings::values->use_docked_mode); }); connect(hotkey_registry.GetHotkey(main_window, QStringLiteral("Mute Audio"), this), &QShortcut::activated, this, @@ -1032,7 +1032,7 @@ void GMainWindow::SelectAndSetCurrentUser() { return; } - Settings::values.current_user = dialog.GetIndex(); + Settings::values->current_user = dialog.GetIndex(); } void GMainWindow::BootGame(const QString& filename) { @@ -1831,7 +1831,7 @@ void GMainWindow::ErrorDisplayDisplayError(QString body) { } void GMainWindow::OnMenuReportCompatibility() { - if (!Settings::values.yuzu_token.empty() && !Settings::values.yuzu_username.empty()) { + if (!Settings::values->yuzu_token.empty() && !Settings::values->yuzu_username.empty()) { CompatDB compatdb{this}; compatdb.exec(); } else { @@ -1926,7 +1926,7 @@ void GMainWindow::ToggleWindowMode() { void GMainWindow::ResetWindowSize() { const auto aspect_ratio = Layout::EmulationAspectRatio( - static_cast(Settings::values.aspect_ratio), + static_cast(Settings::values->aspect_ratio), static_cast(Layout::ScreenUndocked::Height) / Layout::ScreenUndocked::Width); if (!ui.action_Single_Window_Mode->isChecked()) { render_window->resize(Layout::ScreenUndocked::Height / aspect_ratio, @@ -1981,7 +1981,7 @@ void GMainWindow::OnConfigure() { async_status_button->setChecked(Settings::values.use_asynchronous_gpu_emulation); #ifdef HAS_VULKAN - renderer_status_button->setChecked(Settings::values.renderer_backend == + renderer_status_button->setChecked(Settings::values->renderer_backend == Settings::RendererBackend::Vulkan); #endif } @@ -2097,10 +2097,10 @@ void GMainWindow::UpdateStatusBar() { auto results = Core::System::GetInstance().GetAndResetPerfStats(); - if (Settings::values.use_frame_limit) { + if (Settings::values->use_frame_limit) { emu_speed_label->setText(tr("Speed: %1% / %2%") .arg(results.emulation_speed * 100.0, 0, 'f', 0) - .arg(Settings::values.frame_limit)); + .arg(Settings::values->frame_limit)); } else { emu_speed_label->setText(tr("Speed: %1%").arg(results.emulation_speed * 100.0, 0, 'f', 0)); } diff --git a/src/yuzu_cmd/config.cpp b/src/yuzu_cmd/config.cpp index 659b9f7010..221217a60b 100644 --- a/src/yuzu_cmd/config.cpp +++ b/src/yuzu_cmd/config.cpp @@ -226,94 +226,94 @@ static const std::array keyboard_mods{ void Config::ReadValues() { // Controls - for (std::size_t p = 0; p < Settings::values.players.size(); ++p) { + for (std::size_t p = 0; p < Settings::values->players.size(); ++p) { const auto group = fmt::format("ControlsP{}", p); for (int i = 0; i < Settings::NativeButton::NumButtons; ++i) { std::string default_param = InputCommon::GenerateKeyboardParam(default_buttons[i]); - Settings::values.players[p].buttons[i] = + Settings::values->players[p].buttons[i] = sdl2_config->Get(group, Settings::NativeButton::mapping[i], default_param); - if (Settings::values.players[p].buttons[i].empty()) - Settings::values.players[p].buttons[i] = default_param; + if (Settings::values->players[p].buttons[i].empty()) + Settings::values->players[p].buttons[i] = default_param; } for (int i = 0; i < Settings::NativeAnalog::NumAnalogs; ++i) { std::string default_param = InputCommon::GenerateAnalogParamFromKeys( default_analogs[i][0], default_analogs[i][1], default_analogs[i][2], default_analogs[i][3], default_analogs[i][4], 0.5f); - Settings::values.players[p].analogs[i] = + Settings::values->players[p].analogs[i] = sdl2_config->Get(group, Settings::NativeAnalog::mapping[i], default_param); - if (Settings::values.players[p].analogs[i].empty()) - Settings::values.players[p].analogs[i] = default_param; + if (Settings::values->players[p].analogs[i].empty()) + Settings::values->players[p].analogs[i] = default_param; } } - Settings::values.mouse_enabled = + Settings::values->mouse_enabled = sdl2_config->GetBoolean("ControlsGeneral", "mouse_enabled", false); for (int i = 0; i < Settings::NativeMouseButton::NumMouseButtons; ++i) { std::string default_param = InputCommon::GenerateKeyboardParam(default_mouse_buttons[i]); - Settings::values.mouse_buttons[i] = sdl2_config->Get( + Settings::values->mouse_buttons[i] = sdl2_config->Get( "ControlsGeneral", std::string("mouse_") + Settings::NativeMouseButton::mapping[i], default_param); - if (Settings::values.mouse_buttons[i].empty()) - Settings::values.mouse_buttons[i] = default_param; + if (Settings::values->mouse_buttons[i].empty()) + Settings::values->mouse_buttons[i] = default_param; } - Settings::values.motion_device = sdl2_config->Get( + Settings::values->motion_device = sdl2_config->Get( "ControlsGeneral", "motion_device", "engine:motion_emu,update_period:100,sensitivity:0.01"); - Settings::values.keyboard_enabled = + Settings::values->keyboard_enabled = sdl2_config->GetBoolean("ControlsGeneral", "keyboard_enabled", false); - Settings::values.debug_pad_enabled = + Settings::values->debug_pad_enabled = sdl2_config->GetBoolean("ControlsGeneral", "debug_pad_enabled", false); for (int i = 0; i < Settings::NativeButton::NumButtons; ++i) { std::string default_param = InputCommon::GenerateKeyboardParam(default_buttons[i]); - Settings::values.debug_pad_buttons[i] = sdl2_config->Get( + Settings::values->debug_pad_buttons[i] = sdl2_config->Get( "ControlsGeneral", std::string("debug_pad_") + Settings::NativeButton::mapping[i], default_param); - if (Settings::values.debug_pad_buttons[i].empty()) - Settings::values.debug_pad_buttons[i] = default_param; + if (Settings::values->debug_pad_buttons[i].empty()) + Settings::values->debug_pad_buttons[i] = default_param; } for (int i = 0; i < Settings::NativeAnalog::NumAnalogs; ++i) { std::string default_param = InputCommon::GenerateAnalogParamFromKeys( default_analogs[i][0], default_analogs[i][1], default_analogs[i][2], default_analogs[i][3], default_analogs[i][4], 0.5f); - Settings::values.debug_pad_analogs[i] = sdl2_config->Get( + Settings::values->debug_pad_analogs[i] = sdl2_config->Get( "ControlsGeneral", std::string("debug_pad_") + Settings::NativeAnalog::mapping[i], default_param); - if (Settings::values.debug_pad_analogs[i].empty()) - Settings::values.debug_pad_analogs[i] = default_param; + if (Settings::values->debug_pad_analogs[i].empty()) + Settings::values->debug_pad_analogs[i] = default_param; } - Settings::values.touchscreen.enabled = + Settings::values->touchscreen.enabled = sdl2_config->GetBoolean("ControlsGeneral", "touch_enabled", true); - Settings::values.touchscreen.device = + Settings::values->touchscreen.device = sdl2_config->Get("ControlsGeneral", "touch_device", "engine:emu_window"); - Settings::values.touchscreen.finger = + Settings::values->touchscreen.finger = sdl2_config->GetInteger("ControlsGeneral", "touch_finger", 0); - Settings::values.touchscreen.rotation_angle = + Settings::values->touchscreen.rotation_angle = sdl2_config->GetInteger("ControlsGeneral", "touch_angle", 0); - Settings::values.touchscreen.diameter_x = + Settings::values->touchscreen.diameter_x = sdl2_config->GetInteger("ControlsGeneral", "touch_diameter_x", 15); - Settings::values.touchscreen.diameter_y = + Settings::values->touchscreen.diameter_y = sdl2_config->GetInteger("ControlsGeneral", "touch_diameter_y", 15); - Settings::values.udp_input_address = + Settings::values->udp_input_address = sdl2_config->Get("Controls", "udp_input_address", InputCommon::CemuhookUDP::DEFAULT_ADDR); - Settings::values.udp_input_port = static_cast(sdl2_config->GetInteger( + Settings::values->udp_input_port = static_cast(sdl2_config->GetInteger( "Controls", "udp_input_port", InputCommon::CemuhookUDP::DEFAULT_PORT)); std::transform(keyboard_keys.begin(), keyboard_keys.end(), - Settings::values.keyboard_keys.begin(), InputCommon::GenerateKeyboardParam); + Settings::values->keyboard_keys.begin(), InputCommon::GenerateKeyboardParam); std::transform(keyboard_mods.begin(), keyboard_mods.end(), - Settings::values.keyboard_keys.begin() + + Settings::values->keyboard_keys.begin() + Settings::NativeKeyboard::LeftControlKey, InputCommon::GenerateKeyboardParam); std::transform(keyboard_mods.begin(), keyboard_mods.end(), - Settings::values.keyboard_mods.begin(), InputCommon::GenerateKeyboardParam); + Settings::values->keyboard_mods.begin(), InputCommon::GenerateKeyboardParam); // Data Storage - Settings::values.use_virtual_sd = + Settings::values->use_virtual_sd = sdl2_config->GetBoolean("Data Storage", "use_virtual_sd", true); FileUtil::GetUserPath(FileUtil::UserPath::NANDDir, sdl2_config->Get("Data Storage", "nand_directory", @@ -330,107 +330,107 @@ void Config::ReadValues() { FileUtil::GetUserPath(FileUtil::UserPath::CacheDir, sdl2_config->Get("Data Storage", "cache_directory", FileUtil::GetUserPath(FileUtil::UserPath::CacheDir))); - Settings::values.gamecard_inserted = + Settings::values->gamecard_inserted = sdl2_config->GetBoolean("Data Storage", "gamecard_inserted", false); - Settings::values.gamecard_current_game = + Settings::values->gamecard_current_game = sdl2_config->GetBoolean("Data Storage", "gamecard_current_game", false); - Settings::values.gamecard_path = sdl2_config->Get("Data Storage", "gamecard_path", ""); - Settings::values.nand_total_size = static_cast(sdl2_config->GetInteger( + Settings::values->gamecard_path = sdl2_config->Get("Data Storage", "gamecard_path", ""); + Settings::values->nand_total_size = static_cast(sdl2_config->GetInteger( "Data Storage", "nand_total_size", static_cast(Settings::NANDTotalSize::S29_1GB))); - Settings::values.nand_user_size = static_cast(sdl2_config->GetInteger( + Settings::values->nand_user_size = static_cast(sdl2_config->GetInteger( "Data Storage", "nand_user_size", static_cast(Settings::NANDUserSize::S26GB))); - Settings::values.nand_system_size = static_cast( + Settings::values->nand_system_size = static_cast( sdl2_config->GetInteger("Data Storage", "nand_system_size", static_cast(Settings::NANDSystemSize::S2_5GB))); - Settings::values.sdmc_size = static_cast(sdl2_config->GetInteger( + Settings::values->sdmc_size = static_cast(sdl2_config->GetInteger( "Data Storage", "sdmc_size", static_cast(Settings::SDMCSize::S16GB))); // System - Settings::values.use_docked_mode = sdl2_config->GetBoolean("System", "use_docked_mode", false); + Settings::values->use_docked_mode = sdl2_config->GetBoolean("System", "use_docked_mode", false); const auto size = sdl2_config->GetInteger("System", "users_size", 0); - Settings::values.current_user = std::clamp( + Settings::values->current_user = std::clamp( sdl2_config->GetInteger("System", "current_user", 0), 0, Service::Account::MAX_USERS - 1); 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 = sdl2_config->GetInteger("System", "rng_seed", 0); } else { - Settings::values.rng_seed = std::nullopt; + Settings::values->rng_seed = std::nullopt; } const auto custom_rtc_enabled = sdl2_config->GetBoolean("System", "custom_rtc_enabled", false); if (custom_rtc_enabled) { - Settings::values.custom_rtc = + Settings::values->custom_rtc = std::chrono::seconds(sdl2_config->GetInteger("System", "custom_rtc", 0)); } else { - Settings::values.custom_rtc = std::nullopt; + Settings::values->custom_rtc = 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 = sdl2_config->GetInteger("System", "language_index", 1); + Settings::values->time_zone_index = 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 = sdl2_config->GetBoolean("Core", "use_multi_core", false); // Renderer const int renderer_backend = sdl2_config->GetInteger( "Renderer", "backend", static_cast(Settings::RendererBackend::OpenGL)); - Settings::values.renderer_backend = static_cast(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->renderer_backend = static_cast(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.aspect_ratio = + Settings::values->aspect_ratio = static_cast(sdl2_config->GetInteger("Renderer", "aspect_ratio", 0)); - Settings::values.max_anisotropy = + Settings::values->max_anisotropy = static_cast(sdl2_config->GetInteger("Renderer", "max_anisotropy", 0)); - Settings::values.use_frame_limit = sdl2_config->GetBoolean("Renderer", "use_frame_limit", true); - Settings::values.frame_limit = + Settings::values->use_frame_limit = sdl2_config->GetBoolean("Renderer", "use_frame_limit", true); + Settings::values->frame_limit = static_cast(sdl2_config->GetInteger("Renderer", "frame_limit", 100)); - Settings::values.use_disk_shader_cache = + Settings::values->use_disk_shader_cache = 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(gpu_accuracy_level); - Settings::values.use_asynchronous_gpu_emulation = + Settings::values->gpu_accuracy = static_cast(gpu_accuracy_level); + Settings::values->use_asynchronous_gpu_emulation = sdl2_config->GetBoolean("Renderer", "use_asynchronous_gpu_emulation", false); - Settings::values.use_vsync = + Settings::values->use_vsync = static_cast(sdl2_config->GetInteger("Renderer", "use_vsync", 1)); - Settings::values.use_assembly_shaders = + Settings::values->use_assembly_shaders = sdl2_config->GetBoolean("Renderer", "use_assembly_shaders", false); - Settings::values.use_fast_gpu_time = + Settings::values->use_fast_gpu_time = sdl2_config->GetBoolean("Renderer", "use_fast_gpu_time", true); - Settings::values.bg_red = static_cast(sdl2_config->GetReal("Renderer", "bg_red", 0.0)); - Settings::values.bg_green = + Settings::values->bg_red = static_cast(sdl2_config->GetReal("Renderer", "bg_red", 0.0)); + Settings::values->bg_green = static_cast(sdl2_config->GetReal("Renderer", "bg_green", 0.0)); - Settings::values.bg_blue = static_cast(sdl2_config->GetReal("Renderer", "bg_blue", 0.0)); + Settings::values->bg_blue = static_cast(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 = + 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.audio_device_id = sdl2_config->Get("Audio", "output_device", "auto"); - Settings::values.volume = static_cast(sdl2_config->GetReal("Audio", "volume", 1)); + Settings::values->audio_device_id = sdl2_config->Get("Audio", "output_device", "auto"); + Settings::values->volume = static_cast(sdl2_config->GetReal("Audio", "volume", 1)); // Miscellaneous - Settings::values.log_filter = sdl2_config->Get("Miscellaneous", "log_filter", "*:Trace"); - Settings::values.use_dev_keys = sdl2_config->GetBoolean("Miscellaneous", "use_dev_keys", false); + Settings::values->log_filter = sdl2_config->Get("Miscellaneous", "log_filter", "*:Trace"); + Settings::values->use_dev_keys = sdl2_config->GetBoolean("Miscellaneous", "use_dev_keys", false); // Debugging - Settings::values.record_frame_times = + Settings::values->record_frame_times = sdl2_config->GetBoolean("Debugging", "record_frame_times", false); - Settings::values.use_gdbstub = sdl2_config->GetBoolean("Debugging", "use_gdbstub", false); - Settings::values.gdbstub_port = + Settings::values->use_gdbstub = sdl2_config->GetBoolean("Debugging", "use_gdbstub", false); + Settings::values->gdbstub_port = static_cast(sdl2_config->GetInteger("Debugging", "gdbstub_port", 24689)); - Settings::values.program_args = sdl2_config->Get("Debugging", "program_args", ""); - Settings::values.dump_exefs = sdl2_config->GetBoolean("Debugging", "dump_exefs", false); - Settings::values.dump_nso = sdl2_config->GetBoolean("Debugging", "dump_nso", false); - Settings::values.reporting_services = + Settings::values->program_args = sdl2_config->Get("Debugging", "program_args", ""); + Settings::values->dump_exefs = sdl2_config->GetBoolean("Debugging", "dump_exefs", false); + Settings::values->dump_nso = sdl2_config->GetBoolean("Debugging", "dump_nso", false); + Settings::values->reporting_services = sdl2_config->GetBoolean("Debugging", "reporting_services", false); - Settings::values.quest_flag = sdl2_config->GetBoolean("Debugging", "quest_flag", false); - Settings::values.disable_cpu_opt = + 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 = + Settings::values->disable_macro_jit = sdl2_config->GetBoolean("Debugging", "disable_macro_jit", false); const auto title_list = sdl2_config->Get("AddOns", "title_ids", ""); @@ -447,20 +447,20 @@ void Config::ReadValues() { out.push_back(inner_line); } - Settings::values.disabled_addons.insert_or_assign(title_id, out); + Settings::values->disabled_addons.insert_or_assign(title_id, out); } // Web Service - Settings::values.enable_telemetry = + Settings::values->enable_telemetry = sdl2_config->GetBoolean("WebService", "enable_telemetry", true); - Settings::values.web_api_url = + Settings::values->web_api_url = sdl2_config->Get("WebService", "web_api_url", "https://api.yuzu-emu.org"); - Settings::values.yuzu_username = sdl2_config->Get("WebService", "yuzu_username", ""); - Settings::values.yuzu_token = sdl2_config->Get("WebService", "yuzu_token", ""); + Settings::values->yuzu_username = sdl2_config->Get("WebService", "yuzu_username", ""); + Settings::values->yuzu_token = sdl2_config->Get("WebService", "yuzu_token", ""); // Services - Settings::values.bcat_backend = sdl2_config->Get("Services", "bcat_backend", "null"); - Settings::values.bcat_boxcat_local = + Settings::values->bcat_backend = sdl2_config->Get("Services", "bcat_backend", "null"); + Settings::values->bcat_boxcat_local = sdl2_config->GetBoolean("Services", "bcat_boxcat_local", false); } 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 09cc0a3b59..cf5a3ab844 100644 --- a/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp +++ b/src/yuzu_cmd/emu_window/emu_window_sdl2_gl.cpp @@ -98,7 +98,7 @@ 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) { + if (Settings::values->renderer_debug) { SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_DEBUG_FLAG); } SDL_GL_SetSwapInterval(0); @@ -165,7 +165,7 @@ std::unique_ptr 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 ? 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 e6c6a839de..cb923723ae 100644 --- a/src/yuzu_cmd/yuzu.cpp +++ b/src/yuzu_cmd/yuzu.cpp @@ -77,7 +77,7 @@ static void PrintVersion() { static void InitializeLogging() { Log::Filter log_filter(Log::Level::Debug); - log_filter.ParseFilterString(Settings::values.log_filter); + log_filter.ParseFilterString(Settings::values->log_filter); Log::SetGlobalFilter(log_filter); Log::AddBackend(std::make_unique()); @@ -96,8 +96,8 @@ int main(int argc, char** argv) { Config config; int option_index = 0; - bool use_gdbstub = Settings::values.use_gdbstub; - u32 gdb_port = static_cast(Settings::values.gdbstub_port); + bool use_gdbstub = Settings::values->use_gdbstub; + u32 gdb_port = static_cast(Settings::values->gdbstub_port); InitializeLogging(); @@ -147,7 +147,7 @@ int main(int argc, char** argv) { PrintVersion(); return 0; case 'p': - Settings::values.program_args = argv[optind]; + Settings::values->program_args = argv[optind]; ++optind; break; } @@ -174,14 +174,14 @@ int main(int argc, char** argv) { } // Apply the command line arguments - Settings::values.gdbstub_port = gdb_port; - Settings::values.use_gdbstub = use_gdbstub; + Settings::values->gdbstub_port = gdb_port; + Settings::values->use_gdbstub = use_gdbstub; Settings::Apply(); Core::System& system{Core::System::GetInstance()}; std::unique_ptr emu_window; - switch (Settings::values.renderer_backend) { + switch (Settings::values->renderer_backend) { case Settings::RendererBackend::OpenGL: emu_window = std::make_unique(system, fullscreen); break; diff --git a/src/yuzu_tester/config.cpp b/src/yuzu_tester/config.cpp index 1566c2e3f7..31de655cc3 100644 --- a/src/yuzu_tester/config.cpp +++ b/src/yuzu_tester/config.cpp @@ -46,43 +46,43 @@ bool Config::LoadINI(const std::string& default_contents, bool retry) { void Config::ReadValues() { // Controls - for (std::size_t p = 0; p < Settings::values.players.size(); ++p) { + for (std::size_t p = 0; p < Settings::values->players.size(); ++p) { for (int i = 0; i < Settings::NativeButton::NumButtons; ++i) { - Settings::values.players[p].buttons[i] = ""; + Settings::values->players[p].buttons[i] = ""; } for (int i = 0; i < Settings::NativeAnalog::NumAnalogs; ++i) { - Settings::values.players[p].analogs[i] = ""; + Settings::values->players[p].analogs[i] = ""; } } - Settings::values.mouse_enabled = false; + Settings::values->mouse_enabled = false; for (int i = 0; i < Settings::NativeMouseButton::NumMouseButtons; ++i) { - Settings::values.mouse_buttons[i] = ""; + Settings::values->mouse_buttons[i] = ""; } - Settings::values.motion_device = ""; + Settings::values->motion_device = ""; - Settings::values.keyboard_enabled = false; + Settings::values->keyboard_enabled = false; - Settings::values.debug_pad_enabled = false; + Settings::values->debug_pad_enabled = false; for (int i = 0; i < Settings::NativeButton::NumButtons; ++i) { - Settings::values.debug_pad_buttons[i] = ""; + Settings::values->debug_pad_buttons[i] = ""; } for (int i = 0; i < Settings::NativeAnalog::NumAnalogs; ++i) { - Settings::values.debug_pad_analogs[i] = ""; + Settings::values->debug_pad_analogs[i] = ""; } - Settings::values.touchscreen.enabled = ""; - Settings::values.touchscreen.device = ""; - Settings::values.touchscreen.finger = 0; - Settings::values.touchscreen.rotation_angle = 0; - Settings::values.touchscreen.diameter_x = 15; - Settings::values.touchscreen.diameter_y = 15; + Settings::values->touchscreen.enabled = ""; + Settings::values->touchscreen.device = ""; + Settings::values->touchscreen.finger = 0; + Settings::values->touchscreen.rotation_angle = 0; + Settings::values->touchscreen.diameter_x = 15; + Settings::values->touchscreen.diameter_y = 15; // Data Storage - Settings::values.use_virtual_sd = + Settings::values->use_virtual_sd = sdl2_config->GetBoolean("Data Storage", "use_virtual_sd", true); FileUtil::GetUserPath(FileUtil::UserPath::NANDDir, sdl2_config->Get("Data Storage", "nand_directory", @@ -92,67 +92,67 @@ void Config::ReadValues() { FileUtil::GetUserPath(FileUtil::UserPath::SDMCDir))); // System - Settings::values.use_docked_mode = sdl2_config->GetBoolean("System", "use_docked_mode", false); + Settings::values->use_docked_mode = sdl2_config->GetBoolean("System", "use_docked_mode", false); - Settings::values.current_user = std::clamp( + Settings::values->current_user = std::clamp( sdl2_config->GetInteger("System", "current_user", 0), 0, Service::Account::MAX_USERS - 1); 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 = sdl2_config->GetInteger("System", "rng_seed", 0); } else { - Settings::values.rng_seed = std::nullopt; + Settings::values->rng_seed = std::nullopt; } const auto custom_rtc_enabled = sdl2_config->GetBoolean("System", "custom_rtc_enabled", false); if (custom_rtc_enabled) { - Settings::values.custom_rtc = + Settings::values->custom_rtc = std::chrono::seconds(sdl2_config->GetInteger("System", "custom_rtc", 0)); } else { - Settings::values.custom_rtc = std::nullopt; + Settings::values->custom_rtc = std::nullopt; } // Core - Settings::values.use_multi_core = sdl2_config->GetBoolean("Core", "use_multi_core", false); + Settings::values->use_multi_core = sdl2_config->GetBoolean("Core", "use_multi_core", false); // Renderer - Settings::values.aspect_ratio = + Settings::values->aspect_ratio = static_cast(sdl2_config->GetInteger("Renderer", "aspect_ratio", 0)); - Settings::values.max_anisotropy = + Settings::values->max_anisotropy = static_cast(sdl2_config->GetInteger("Renderer", "max_anisotropy", 0)); - Settings::values.use_frame_limit = false; - Settings::values.frame_limit = 100; - Settings::values.use_disk_shader_cache = + Settings::values->use_frame_limit = false; + Settings::values->frame_limit = 100; + Settings::values->use_disk_shader_cache = 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(gpu_accuracy_level); - Settings::values.use_asynchronous_gpu_emulation = + Settings::values->gpu_accuracy = static_cast(gpu_accuracy_level); + Settings::values->use_asynchronous_gpu_emulation = sdl2_config->GetBoolean("Renderer", "use_asynchronous_gpu_emulation", false); - Settings::values.use_fast_gpu_time = + Settings::values->use_fast_gpu_time = sdl2_config->GetBoolean("Renderer", "use_fast_gpu_time", true); - Settings::values.bg_red = static_cast(sdl2_config->GetReal("Renderer", "bg_red", 0.0)); - Settings::values.bg_green = + Settings::values->bg_red = static_cast(sdl2_config->GetReal("Renderer", "bg_red", 0.0)); + Settings::values->bg_green = static_cast(sdl2_config->GetReal("Renderer", "bg_green", 0.0)); - Settings::values.bg_blue = static_cast(sdl2_config->GetReal("Renderer", "bg_blue", 0.0)); + Settings::values->bg_blue = static_cast(sdl2_config->GetReal("Renderer", "bg_blue", 0.0)); // Audio - Settings::values.sink_id = "null"; - Settings::values.enable_audio_stretching = false; - Settings::values.audio_device_id = "auto"; - Settings::values.volume = 0; + Settings::values->sink_id = "null"; + Settings::values->enable_audio_stretching = false; + Settings::values->audio_device_id = "auto"; + Settings::values->volume = 0; - Settings::values.language_index = sdl2_config->GetInteger("System", "language_index", 1); + Settings::values->language_index = sdl2_config->GetInteger("System", "language_index", 1); // Miscellaneous - Settings::values.log_filter = sdl2_config->Get("Miscellaneous", "log_filter", "*:Trace"); - Settings::values.use_dev_keys = sdl2_config->GetBoolean("Miscellaneous", "use_dev_keys", false); + Settings::values->log_filter = sdl2_config->Get("Miscellaneous", "log_filter", "*:Trace"); + Settings::values->use_dev_keys = sdl2_config->GetBoolean("Miscellaneous", "use_dev_keys", false); // Debugging - Settings::values.use_gdbstub = false; - Settings::values.program_args = ""; - Settings::values.dump_exefs = sdl2_config->GetBoolean("Debugging", "dump_exefs", false); - Settings::values.dump_nso = sdl2_config->GetBoolean("Debugging", "dump_nso", false); + Settings::values->use_gdbstub = false; + Settings::values->program_args = ""; + Settings::values->dump_exefs = sdl2_config->GetBoolean("Debugging", "dump_exefs", false); + Settings::values->dump_nso = sdl2_config->GetBoolean("Debugging", "dump_nso", false); const auto title_list = sdl2_config->Get("AddOns", "title_ids", ""); std::stringstream ss(title_list); @@ -168,16 +168,16 @@ void Config::ReadValues() { out.push_back(inner_line); } - Settings::values.disabled_addons.insert_or_assign(title_id, out); + Settings::values->disabled_addons.insert_or_assign(title_id, out); } // Web Service - Settings::values.enable_telemetry = + Settings::values->enable_telemetry = sdl2_config->GetBoolean("WebService", "enable_telemetry", true); - Settings::values.web_api_url = + Settings::values->web_api_url = sdl2_config->Get("WebService", "web_api_url", "https://api.yuzu-emu.org"); - Settings::values.yuzu_username = sdl2_config->Get("WebService", "yuzu_username", ""); - Settings::values.yuzu_token = sdl2_config->Get("WebService", "yuzu_token", ""); + Settings::values->yuzu_username = sdl2_config->Get("WebService", "yuzu_username", ""); + Settings::values->yuzu_token = sdl2_config->Get("WebService", "yuzu_token", ""); } void Config::Reload() { diff --git a/src/yuzu_tester/yuzu.cpp b/src/yuzu_tester/yuzu.cpp index 083667baf1..c9269147ac 100644 --- a/src/yuzu_tester/yuzu.cpp +++ b/src/yuzu_tester/yuzu.cpp @@ -73,7 +73,7 @@ static void PrintVersion() { static void InitializeLogging(bool console) { Log::Filter log_filter(Log::Level::Debug); - log_filter.ParseFilterString(Settings::values.log_filter); + log_filter.ParseFilterString(Settings::values->log_filter); Log::SetGlobalFilter(log_filter); if (console) @@ -160,7 +160,7 @@ int main(int argc, char** argv) { return -1; } - Settings::values.use_gdbstub = false; + Settings::values->use_gdbstub = false; Settings::Apply(); std::unique_ptr emu_window{std::make_unique()};