From a6b59f9efe4032479cf5e4422b7f860950d9d9dc Mon Sep 17 00:00:00 2001 From: Stenzek Date: Sat, 17 May 2025 18:12:22 +1000 Subject: [PATCH] GameDatabase: Add traits for disabling disc speedup --- src/core/game_database.cpp | 20 ++++++++++++++++++++ src/core/game_database.h | 2 ++ 2 files changed, 22 insertions(+) diff --git a/src/core/game_database.cpp b/src/core/game_database.cpp index 982703595..53646736f 100644 --- a/src/core/game_database.cpp +++ b/src/core/game_database.cpp @@ -85,6 +85,8 @@ static constexpr const std::array s_trait_names = { "ForceFullBoot", "DisableAutoAnalogMode", "DisableMultitap", + "DisableCDROMReadSpeedup", + "DisableCDROMSeekSpeedup", "DisableTrueColor", "DisableFullTrueColor", "DisableUpscaling", @@ -118,6 +120,8 @@ static constexpr const std::array s_trait_display_names = { TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Force Full Boot", "GameDatabase::Trait"), TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Disable Automatic Analog Mode", "GameDatabase::Trait"), TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Disable Multitap", "GameDatabase::Trait"), + TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Disable CD-ROM Read Speedup", "GameDatabase::Trait"), + TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Disable CD-ROM Seek Speedup", "GameDatabase::Trait"), TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Disable True Color", "GameDatabase::Trait"), TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Disable Full True Color", "GameDatabase::Trait"), TRANSLATE_DISAMBIG_NOOP("GameDatabase", "Disable Upscaling", "GameDatabase::Trait"), @@ -476,6 +480,22 @@ void GameDatabase::Entry::ApplySettings(Settings& settings, bool display_osd_mes settings.multitap_mode = MultitapMode::Disabled; } + if (HasTrait(Trait::DisableCDROMReadSpeedup)) + { + if (settings.cdrom_read_speedup != 1) + APPEND_MESSAGE(TRANSLATE_SV("GameDatabase", "CD-ROM read speedup disabled.")); + + settings.cdrom_read_speedup = 1; + } + + if (HasTrait(Trait::DisableCDROMSeekSpeedup)) + { + if (settings.cdrom_seek_speedup != 1) + APPEND_MESSAGE(TRANSLATE_SV("GameDatabase", "CD-ROM seek speedup disabled.")); + + settings.cdrom_seek_speedup = 1; + } + if (display_crop_mode.has_value()) { if (display_osd_messages && settings.display_crop_mode != display_crop_mode.value()) diff --git a/src/core/game_database.h b/src/core/game_database.h index bbcdff63a..66cca7660 100644 --- a/src/core/game_database.h +++ b/src/core/game_database.h @@ -43,6 +43,8 @@ enum class Trait : u32 ForceFullBoot, DisableAutoAnalogMode, DisableMultitap, + DisableCDROMReadSpeedup, + DisableCDROMSeekSpeedup, DisableTrueColor, DisableFullTrueColor, DisableUpscaling,