From 650652db4213cfef60f4c2dcdee2942d572ec344 Mon Sep 17 00:00:00 2001 From: rainmakerv2 <30595646+rainmakerv3@users.noreply.github.com> Date: Thu, 26 Mar 2026 06:13:43 +0800 Subject: [PATCH] Vblank frequency setting fix + utf 8 encoding for paths (#4174) * vblank frequency setting fix * force utf-8 encoding upon json serialization/deserialization for path strings --- src/core/emulator_settings.cpp | 9 ++++++--- src/core/emulator_settings.h | 15 ++++++++------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/core/emulator_settings.cpp b/src/core/emulator_settings.cpp index f738dc1b5..79d9a86f8 100644 --- a/src/core/emulator_settings.cpp +++ b/src/core/emulator_settings.cpp @@ -25,10 +25,13 @@ namespace nlohmann { template <> struct adl_serializer { static void to_json(json& j, const std::filesystem::path& p) { - j = p.string(); + const auto u8 = p.u8string(); + j = std::string(reinterpret_cast(u8.data()), u8.size()); } static void from_json(const json& j, std::filesystem::path& p) { - p = j.get(); + const std::string s = j.get(); + p = std::filesystem::path( + std::u8string_view(reinterpret_cast(s.data()), s.size())); } }; } // namespace nlohmann @@ -647,4 +650,4 @@ std::vector EmulatorSettingsImpl::GetAllOverrideableKeys() const { addGroup(m_gpu.GetOverrideableFields()); addGroup(m_vulkan.GetOverrideableFields()); return keys; -} \ No newline at end of file +} diff --git a/src/core/emulator_settings.h b/src/core/emulator_settings.h index ad9cfe227..370fb0ab0 100644 --- a/src/core/emulator_settings.h +++ b/src/core/emulator_settings.h @@ -594,16 +594,17 @@ public: SETTING_FORWARD_BOOL_READONLY(m_gpu, PatchShaders, patch_shaders) u32 GetVblankFrequency() { - if (m_gpu.vblank_frequency.value < 60) { - m_gpu.vblank_frequency.value = 60; + if (m_gpu.vblank_frequency.value < 30) { + return 30; } - return m_gpu.vblank_frequency.value; + return m_gpu.vblank_frequency.get(); } - void SetVblankFrequency(const u32& v) { - if (v < 60) { - m_gpu.vblank_frequency.value = 60; + void SetVblankFrequency(const u32& v, bool is_specific = false) { + u32 val = v < 30 ? 30 : v; + if (is_specific) { + m_gpu.vblank_frequency.game_specific_value = val; } else { - m_gpu.vblank_frequency.value = v; + m_gpu.vblank_frequency.value = val; } }