diff --git a/data/resources/gamedb.yaml b/data/resources/gamedb.yaml index 2ccb08115..37f574f02 100644 --- a/data/resources/gamedb.yaml +++ b/data/resources/gamedb.yaml @@ -21128,6 +21128,8 @@ SCES-02105: - AnalogController - DigitalController - NeGcon + traits: + - DisablePGXPPreserveProjFP libcrypt: true metadata: publisher: "Sony" @@ -21157,6 +21159,8 @@ SCUS-94426: - AnalogController - DigitalController - NeGcon + traits: + - DisablePGXPPreserveProjFP metadata: publisher: "Sony" developer: "Naughty Dog" @@ -21173,6 +21177,8 @@ SCUS-94426: linkCable: false SCUS-94459: name: "CTR - Crash Team Racing (USA) (Demo)" + traits: + - DisablePGXPPreserveProjFP SLUS-01391: name: "Cabela's Big Game Hunter - Ultimate Challenge (USA)" controllers: @@ -30290,6 +30296,8 @@ SCPS-45470: - AnalogController - DigitalController - NeGcon + traits: + - DisablePGXPPreserveProjFP metadata: publisher: "Sony" developer: "Naughty Dog" @@ -30310,6 +30318,8 @@ SCPS-10118: - AnalogController - DigitalController - NeGcon + traits: + - DisablePGXPPreserveProjFP codes: - SCPS-10118 - SCPS-91328 @@ -30329,12 +30339,16 @@ SCPS-10118: linkCable: false PCPX-96183: name: "Crash Bandicoot Racing (Japan) (Demo)" + traits: + - DisablePGXPPreserveProjFP SCPS-91230: name: "Crash Bandicoot Racing [Playstation the Best for Family]" controllers: - AnalogController - DigitalController - NeGcon + traits: + - DisablePGXPPreserveProjFP metadata: publisher: "Sony" developer: "Naughty Dog" diff --git a/src/core/game_database.cpp b/src/core/game_database.cpp index cc8451f52..0a0802627 100644 --- a/src/core/game_database.cpp +++ b/src/core/game_database.cpp @@ -76,6 +76,7 @@ static constexpr const std::array(GameDatabase::Tr "DisablePGXPTextureCorrection", "DisablePGXPColorCorrection", "DisablePGXPDepthBuffer", + "DisablePGXPPreserveProjFP", "ForcePGXPVertexCache", "ForcePGXPCPUMode", "ForceRecompilerMemoryExceptions", @@ -535,6 +536,19 @@ void GameDatabase::Entry::ApplySettings(Settings& settings, bool display_osd_mes settings.gpu_pgxp_color_correction = false; } + if (HasTrait(Trait::DisablePGXPPreserveProjFP)) + { + if (display_osd_messages && settings.gpu_pgxp_enable && settings.gpu_pgxp_preserve_proj_fp) + { + Host::AddIconOSDMessage( + "gamedb_disable_pgxp_texture", ICON_FA_MAGIC, + TRANSLATE_STR("OSDMessage", "PGXP projection precision preservation disabled by compatibility settings."), + osd_duration); + } + + settings.gpu_pgxp_preserve_proj_fp = false; + } + if (HasTrait(Trait::ForcePGXPVertexCache)) { if (display_osd_messages && settings.gpu_pgxp_enable && !settings.gpu_pgxp_vertex_cache) diff --git a/src/core/game_database.h b/src/core/game_database.h index daabaae77..fd77eccb3 100644 --- a/src/core/game_database.h +++ b/src/core/game_database.h @@ -43,6 +43,7 @@ enum class Trait : u32 DisablePGXPTextureCorrection, DisablePGXPColorCorrection, DisablePGXPDepthBuffer, + DisablePGXPPreserveProjFP, ForcePGXPVertexCache, ForcePGXPCPUMode, ForceRecompilerMemoryExceptions,