diff --git a/src/audio_core/audio_out.cpp b/src/audio_core/audio_out.cpp index 0c8f5b18e0..cb7e0effe0 100644 --- a/src/audio_core/audio_out.cpp +++ b/src/audio_core/audio_out.cpp @@ -30,8 +30,8 @@ static Stream::Format ChannelsToStreamFormat(u32 num_channels) { StreamPtr AudioOut::OpenStream(u32 sample_rate, u32 num_channels, std::string&& name, Stream::ReleaseCallback&& release_callback) { if (!sink) { - const SinkDetails& sink_details = GetSinkDetails(Settings::values.sink_id); - sink = sink_details.factory(Settings::values.audio_device_id); + const SinkDetails& sink_details = GetSinkDetails(Settings::values->sink_id); + sink = sink_details.factory(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 3920396880..fae9d1cdd5 100644 --- a/src/audio_core/cubeb_sink.cpp +++ b/src/audio_core/cubeb_sink.cpp @@ -163,7 +163,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/audio_core/stream.cpp b/src/audio_core/stream.cpp index 742a5e0a0f..dc2f87e0a5 100644 --- a/src/audio_core/stream.cpp +++ b/src/audio_core/stream.cpp @@ -63,7 +63,7 @@ s64 Stream::GetBufferReleaseCycles(const Buffer& buffer) const { } static void VolumeAdjustSamples(std::vector& samples) { - const float volume{std::clamp(Settings::values.volume, 0.0f, 1.0f)}; + const float volume{std::clamp(Settings::values->volume, 0.0f, 1.0f)}; if (volume == 1.0f) { return; diff --git a/src/core/hle/service/am/am.cpp b/src/core/hle/service/am/am.cpp index 59aafd6160..c22ddda283 100644 --- a/src/core/hle/service/am/am.cpp +++ b/src/core/hle/service/am/am.cpp @@ -427,7 +427,7 @@ 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)); rb.Push(static_cast(Service::VI::DisplayResolution::DockedHeight)); } else { @@ -439,7 +439,7 @@ void ICommonStateGetter::GetDefaultDisplayResolution(Kernel::HLERequestContext& } 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}; IPC::ResponseBuilder rb{ctx, 3}; rb.Push(RESULT_SUCCESS); rb.Push(static_cast(use_docked_mode ? OperationMode::Docked : OperationMode::Handheld)); @@ -448,7 +448,7 @@ void ICommonStateGetter::GetOperationMode(Kernel::HLERequestContext& ctx) { } void ICommonStateGetter::GetPerformanceMode(Kernel::HLERequestContext& ctx) { - const bool use_docked_mode{Settings::values.use_docked_mode}; + const bool use_docked_mode{Settings::values->use_docked_mode}; IPC::ResponseBuilder rb{ctx, 3}; rb.Push(RESULT_SUCCESS); rb.Push(static_cast(use_docked_mode ? APM::PerformanceMode::Docked diff --git a/src/core/hle/service/vi/vi.cpp b/src/core/hle/service/vi/vi.cpp index 184537daa4..39a9df1a1f 100644 --- a/src/core/hle/service/vi/vi.cpp +++ b/src/core/hle/service/vi/vi.cpp @@ -668,7 +668,7 @@ 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)); rb.Push(static_cast(Service::VI::DisplayResolution::DockedHeight)); } else { @@ -877,7 +877,7 @@ 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(DisplayResolution::DockedWidth)); rb.Push(static_cast(DisplayResolution::DockedHeight)); } else { diff --git a/src/core/loader/nro.cpp b/src/core/loader/nro.cpp index 243b499f2c..5564b7362d 100644 --- a/src/core/loader/nro.cpp +++ b/src/core/loader/nro.cpp @@ -150,8 +150,8 @@ bool AppLoader_NRO::LoadNro(const FileSys::VfsFile& file, VAddr load_base) { 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 68efca5c0d..598e9cef97 100644 --- a/src/core/loader/nso.cpp +++ b/src/core/loader/nso.cpp @@ -122,8 +122,8 @@ std::optional AppLoader_NSO::LoadModule(const FileSys::VfsFile& file, VAd codeset.segments[i].size = PageAlignSize(static_cast(data.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{ NSO_ARGUMENT_DATA_ALLOCATION_SIZE, static_cast(arg_data.size()), {}}; diff --git a/src/core/perf_stats.cpp b/src/core/perf_stats.cpp index c716a462ba..5ab4dc561d 100644 --- a/src/core/perf_stats.cpp +++ b/src/core/perf_stats.cpp @@ -80,7 +80,7 @@ void FrameLimiter::DoFrameLimiting(microseconds current_system_time_us) { 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/settings.h b/src/core/settings.h index 1ecc157c36..d28b5f8be3 100644 --- a/src/core/settings.h +++ b/src/core/settings.h @@ -129,7 +129,6 @@ struct PerGameValues { float resolution_factor; bool use_frame_limit; u16 frame_limit; - bool use_accurate_gpu_emulation; float bg_red; float bg_green; @@ -176,7 +175,7 @@ struct Values { int language_index; // Renderer - bool use_accurate_framebuffers; + bool use_accurate_gpu_emulation; // Input std::atomic_bool is_device_reload_pending{true}; diff --git a/src/core/telemetry_session.cpp b/src/core/telemetry_session.cpp index 0de13edd35..c3267d4afa 100644 --- a/src/core/telemetry_session.cpp +++ b/src/core/telemetry_session.cpp @@ -152,21 +152,22 @@ TelemetrySession::TelemetrySession() { Telemetry::AppendOSInfo(field_collection); // Log user configuration information - AddField(Telemetry::FieldType::UserConfig, "Audio_SinkId", Settings::values.sink_id); + AddField(Telemetry::FieldType::UserConfig, "Audio_SinkId", Settings::values->sink_id); AddField(Telemetry::FieldType::UserConfig, "Audio_EnableAudioStretching", - Settings::values.enable_audio_stretching); + Settings::values->enable_audio_stretching); AddField(Telemetry::FieldType::UserConfig, "Core_UseCpuJit", Settings::values.use_cpu_jit); AddField(Telemetry::FieldType::UserConfig, "Core_UseMultiCore", Settings::values.use_multi_core); AddField(Telemetry::FieldType::UserConfig, "Renderer_ResolutionFactor", - Settings::values.resolution_factor); + Settings::values->resolution_factor); AddField(Telemetry::FieldType::UserConfig, "Renderer_UseFrameLimit", - Settings::values.use_frame_limit); - AddField(Telemetry::FieldType::UserConfig, "Renderer_FrameLimit", Settings::values.frame_limit); - AddField(Telemetry::FieldType::UserConfig, "Renderer_UseAccurateGpuEmulation", + Settings::values->use_frame_limit); + AddField(Telemetry::FieldType::UserConfig, "Renderer_FrameLimit", + Settings::values->frame_limit); + AddField(Telemetry::FieldType::UserConfig, "Renderer_UseAccurateFramebuffers", Settings::values.use_accurate_gpu_emulation); AddField(Telemetry::FieldType::UserConfig, "System_UseDockedMode", - Settings::values.use_docked_mode); + Settings::values->use_docked_mode); } TelemetrySession::~TelemetrySession() { diff --git a/src/video_core/renderer_base.cpp b/src/video_core/renderer_base.cpp index 0df3725c29..bf8e7938fb 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/renderer_opengl.cpp b/src/video_core/renderer_opengl/renderer_opengl.cpp index 96d916b072..fc1e24b389 100644 --- a/src/video_core/renderer_opengl/renderer_opengl.cpp +++ b/src/video_core/renderer_opengl/renderer_opengl.cpp @@ -222,7 +222,7 @@ void RendererOpenGL::LoadColorToActiveGLTexture(u8 color_r, u8 color_g, u8 color * Initializes the OpenGL state and creates persistent objects. */ void RendererOpenGL::InitOpenGLObjects() { - 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); // Link shaders and get variable locations @@ -371,8 +371,8 @@ void RendererOpenGL::DrawScreenTriangles(const ScreenInfo& screen_info, float x, void RendererOpenGL::DrawScreen() { if (renderer_settings.set_background_color) { // Update background color before drawing - glClearColor(Settings::values.bg_red, Settings::values.bg_green, Settings::values.bg_blue, - 0.0f); + glClearColor(Settings::values->bg_red, Settings::values->bg_green, + Settings::values->bg_blue, 0.0f); } const auto& layout = render_window.GetFramebufferLayout(); diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 55508b1e11..ee5cd10062 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -339,21 +339,21 @@ void GMainWindow::InitializeHotkeys() { }); connect(hotkey_registry.GetHotkey("Main Window", "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", "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", "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(); } }); @@ -1375,10 +1375,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/yuzu.cpp b/src/yuzu_cmd/yuzu.cpp index c8b93b85b4..2ed60f252d 100644 --- a/src/yuzu_cmd/yuzu.cpp +++ b/src/yuzu_cmd/yuzu.cpp @@ -135,7 +135,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; }