diff options
Diffstat (limited to 'src/common')
-rw-r--r-- | src/common/settings.h | 101 |
1 files changed, 57 insertions, 44 deletions
diff --git a/src/common/settings.h b/src/common/settings.h index 82ec18e27..dd2d8d4d8 100644 --- a/src/common/settings.h +++ b/src/common/settings.h @@ -37,8 +37,9 @@ enum class CPUAccuracy : u32 { template <typename Type> class Setting final { public: - Setting() = default; - explicit Setting(Type val) : global{val} {} + explicit Setting(Type val) : global{val} { + default_value = val; + } ~Setting() = default; void SetGlobal(bool to_global) { use_global = to_global; @@ -59,11 +60,15 @@ public: local = value; } } + Type GetDefault() const { + return default_value; + } private: bool use_global = true; Type global{}; Type local{}; + Type default_value{}; }; /** @@ -108,14 +113,14 @@ struct Values { std::string audio_device_id; std::string sink_id; bool audio_muted; - Setting<bool> enable_audio_stretching; - Setting<float> volume; + Setting<bool> enable_audio_stretching{true}; + Setting<float> volume{1.0f}; // Core - Setting<bool> use_multi_core; + Setting<bool> use_multi_core{true}; // Cpu - Setting<CPUAccuracy> cpu_accuracy; + Setting<CPUAccuracy> cpu_accuracy{CPUAccuracy::Accurate}; bool cpuopt_page_tables; bool cpuopt_block_linking; @@ -127,61 +132,69 @@ struct Values { bool cpuopt_reduce_misalign_checks; bool cpuopt_fastmem; - Setting<bool> cpuopt_unsafe_unfuse_fma; - Setting<bool> cpuopt_unsafe_reduce_fp_error; - Setting<bool> cpuopt_unsafe_ignore_standard_fpcr; - Setting<bool> cpuopt_unsafe_inaccurate_nan; - Setting<bool> cpuopt_unsafe_fastmem_check; + Setting<bool> cpuopt_unsafe_unfuse_fma{true}; + Setting<bool> cpuopt_unsafe_reduce_fp_error{true}; + Setting<bool> cpuopt_unsafe_ignore_standard_fpcr{true}; + Setting<bool> cpuopt_unsafe_inaccurate_nan{true}; + Setting<bool> cpuopt_unsafe_fastmem_check{true}; // Renderer - Setting<RendererBackend> renderer_backend; + Setting<RendererBackend> renderer_backend{RendererBackend::OpenGL}; bool renderer_debug; - Setting<int> vulkan_device; - - Setting<u16> resolution_factor{1}; - Setting<int> fullscreen_mode; - Setting<int> aspect_ratio; - Setting<int> max_anisotropy; - Setting<bool> use_frame_limit; - Setting<u16> frame_limit; - Setting<bool> use_disk_shader_cache; - Setting<GPUAccuracy> gpu_accuracy; - Setting<bool> use_asynchronous_gpu_emulation; - Setting<bool> use_nvdec_emulation; - Setting<bool> accelerate_astc; - Setting<bool> use_vsync; - Setting<bool> disable_fps_limit; - Setting<bool> use_assembly_shaders; - Setting<bool> use_asynchronous_shaders; - Setting<bool> use_fast_gpu_time; - Setting<bool> use_caches_gc; - - Setting<float> bg_red; - Setting<float> bg_green; - Setting<float> bg_blue; + Setting<int> vulkan_device{0}; + + Setting<u16> resolution_factor{0}; + // *nix platforms may have issues with the borderless windowed fullscreen mode. + // Default to exclusive fullscreen on these platforms for now. + Setting<int> fullscreen_mode{ +#ifdef _WIN32 + 0 +#else + 1 +#endif + }; + Setting<int> aspect_ratio{0}; + Setting<int> max_anisotropy{0}; + Setting<bool> use_frame_limit{true}; + Setting<u16> frame_limit{100}; + Setting<bool> use_disk_shader_cache{true}; + Setting<GPUAccuracy> gpu_accuracy{GPUAccuracy::High}; + Setting<bool> use_asynchronous_gpu_emulation{true}; + Setting<bool> use_nvdec_emulation{true}; + Setting<bool> accelerate_astc{true}; + Setting<bool> use_vsync{true}; + Setting<bool> disable_fps_limit{false}; + Setting<bool> use_assembly_shaders{false}; + Setting<bool> use_asynchronous_shaders{false}; + Setting<bool> use_fast_gpu_time{true}; + Setting<bool> use_caches_gc{false}; + + Setting<float> bg_red{0.0f}; + Setting<float> bg_green{0.0f}; + Setting<float> bg_blue{0.0f}; // System - Setting<std::optional<u32>> rng_seed; + Setting<std::optional<u32>> rng_seed{std::optional<u32>()}; // Measured in seconds since epoch std::optional<std::chrono::seconds> custom_rtc; // Set on game boot, reset on stop. Seconds difference between current time and `custom_rtc` std::chrono::seconds custom_rtc_differential; s32 current_user; - Setting<s32> language_index; - Setting<s32> region_index; - Setting<s32> time_zone_index; - Setting<s32> sound_index; + Setting<s32> language_index{1}; + Setting<s32> region_index{1}; + Setting<s32> time_zone_index{0}; + Setting<s32> sound_index{1}; // Controls InputSetting<std::array<PlayerInput, 10>> players; - Setting<bool> use_docked_mode; + Setting<bool> use_docked_mode{true}; - Setting<bool> vibration_enabled; - Setting<bool> enable_accurate_vibrations; + Setting<bool> vibration_enabled{true}; + Setting<bool> enable_accurate_vibrations{false}; - Setting<bool> motion_enabled; + Setting<bool> motion_enabled{true}; std::string motion_device; std::string udp_input_servers; |