From 2edcb20930fc1d1a7557d13f509cb89a9ad28873 Mon Sep 17 00:00:00 2001 From: Davide Pesavento Date: Sun, 15 Jun 2025 21:51:43 -0400 Subject: [PATCH] GameDatabase: Add three missing settings to compatibility report --- src/common/ryml_helpers.h | 7 ++++++- src/core/game_database.cpp | 16 ++++++++++++++++ src/duckstation-qt/advancedsettingswidget.cpp | 4 ++-- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/common/ryml_helpers.h b/src/common/ryml_helpers.h index fbc5c3a41..55c3e2257 100644 --- a/src/common/ryml_helpers.h +++ b/src/common/ryml_helpers.h @@ -97,7 +97,12 @@ static inline std::optional GetOptionalTFromObject(const ryml::ConstNodeRef& ret = StringUtil::FromChars(to_stringview(val)); if (!ret.has_value()) { - if constexpr (std::is_floating_point_v) + if constexpr (std::is_same_v) + { + Log::FastWrite(Log::Channel::Log, Log::Level::Error, Log::Color::StrongOrange, + "Unexpected non-bool value in {}", key); + } + else if constexpr (std::is_floating_point_v) { Log::FastWrite(Log::Channel::Log, Log::Level::Error, Log::Color::StrongOrange, "Unexpected non-float value in {}", key); diff --git a/src/core/game_database.cpp b/src/core/game_database.cpp index 06735ba0b..3e010defc 100644 --- a/src/core/game_database.cpp +++ b/src/core/game_database.cpp @@ -850,6 +850,16 @@ static inline void AppendSettingsHeading(SmallStringBase& str, bool& heading) } } +static inline void AppendBoolSetting(SmallStringBase& str, bool& heading, std::string_view title, + const std::optional& value) +{ + if (!value.has_value()) + return; + + AppendSettingsHeading(str, heading); + str.append_format(" - {}: {}\n", title, value.value() ? "Enabled" : "Disabled"); +} + template static inline void AppendIntegerSetting(SmallStringBase& str, bool& heading, std::string_view title, const std::optional& value) @@ -944,11 +954,17 @@ std::string GameDatabase::Entry::GenerateCompatibilityReport() const &Settings::GetDisplayDeinterlacingModeDisplayName, display_deinterlacing_mode); AppendIntegerSetting(ret, settings_heading, TRANSLATE_SV("GameDatabase", "DMA Max Slice Ticks"), dma_max_slice_ticks); AppendIntegerSetting(ret, settings_heading, TRANSLATE_SV("GameDatabase", "DMA Halt Ticks"), dma_halt_ticks); + AppendIntegerSetting(ret, settings_heading, TRANSLATE_SV("GameDatabase", "CD-ROM Max Seek Speedup Cycles"), + cdrom_max_seek_speedup_cycles); + AppendIntegerSetting(ret, settings_heading, TRANSLATE_SV("GameDatabase", "CD-ROM Max Read Speedup Cycles"), + cdrom_max_read_speedup_cycles); AppendIntegerSetting(ret, settings_heading, TRANSLATE_SV("GameDatabase", "GPU FIFO Size"), gpu_fifo_size); AppendIntegerSetting(ret, settings_heading, TRANSLATE_SV("GameDatabase", "GPU Max Runahead"), gpu_max_run_ahead); AppendFloatSetting(ret, settings_heading, TRANSLATE_SV("GameDatabase", "GPU PGXP Tolerance"), gpu_pgxp_tolerance); AppendFloatSetting(ret, settings_heading, TRANSLATE_SV("GameDatabase", "GPU PGXP Depth Threshold"), gpu_pgxp_depth_threshold); + AppendBoolSetting(ret, settings_heading, TRANSLATE_SV("GameDatabase", "GPU PGXP Preserve Projection Precision"), + gpu_pgxp_preserve_proj_fp); AppendEnumSetting(ret, settings_heading, TRANSLATE_SV("GameDatabase", "GPU Line Detect Mode"), &Settings::GetLineDetectModeDisplayName, gpu_line_detect_mode); diff --git a/src/duckstation-qt/advancedsettingswidget.cpp b/src/duckstation-qt/advancedsettingswidget.cpp index aaa54b482..e88c535ba 100644 --- a/src/duckstation-qt/advancedsettingswidget.cpp +++ b/src/duckstation-qt/advancedsettingswidget.cpp @@ -263,7 +263,7 @@ void AdvancedSettingsWidget::addTweakOptions() Settings::DEFAULT_DMA_HALT_TICKS, tr(" cycles")); addIntRangeTweakOption(m_dialog, m_ui.tweakOptionTable, tr("GPU FIFO Size"), "Hacks", "GPUFIFOSize", 16, 4096, Settings::DEFAULT_GPU_FIFO_SIZE, tr(" words")); - addIntRangeTweakOption(m_dialog, m_ui.tweakOptionTable, tr("GPU Max Run-Ahead"), "Hacks", "GPUMaxRunAhead", 0, 1000, + addIntRangeTweakOption(m_dialog, m_ui.tweakOptionTable, tr("GPU Max Runahead"), "Hacks", "GPUMaxRunAhead", 0, 1000, Settings::DEFAULT_GPU_MAX_RUN_AHEAD, tr(" cycles")); addBooleanTweakOption(m_dialog, m_ui.tweakOptionTable, tr("Enable Recompiler Memory Exceptions"), "CPU", @@ -322,7 +322,7 @@ void AdvancedSettingsWidget::onResetToDefaultClicked() setIntRangeTweakOption(m_ui.tweakOptionTable, i++, static_cast(Settings::DEFAULT_GPU_FIFO_SIZE)); // GPU FIFO size setIntRangeTweakOption(m_ui.tweakOptionTable, i++, - static_cast(Settings::DEFAULT_GPU_MAX_RUN_AHEAD)); // GPU max run-ahead + static_cast(Settings::DEFAULT_GPU_MAX_RUN_AHEAD)); // GPU max runahead setBooleanTweakOption(m_ui.tweakOptionTable, i++, false); // Recompiler memory exceptions setBooleanTweakOption(m_ui.tweakOptionTable, i++, true); // Recompiler block linking setChoiceTweakOption(m_ui.tweakOptionTable, i++,