From 580b7c94fbef8f5be343fe96d0ad20aaf7977966 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Thu, 5 Jan 2023 22:14:33 +1000 Subject: [PATCH] GS/HW: Remove AfterDraw function Not needed. --- bin/resources/GameIndex.yaml | 45 ++++-------------- pcsx2/Config.h | 1 - pcsx2/Docs/gamedb-schema.json | 3 -- pcsx2/GS/GS.cpp | 3 +- pcsx2/GS/GS.h | 1 - pcsx2/GS/Renderers/HW/GSHwHack.cpp | 64 +++++++++----------------- pcsx2/GS/Renderers/HW/GSHwHack.h | 4 +- pcsx2/GS/Renderers/HW/GSRendererHW.cpp | 3 -- pcsx2/GS/Renderers/HW/GSRendererHW.h | 2 - pcsx2/GameDatabase.cpp | 13 +----- pcsx2/GameDatabase.h | 1 - pcsx2/Pcsx2Config.cpp | 1 - 12 files changed, 35 insertions(+), 106 deletions(-) diff --git a/bin/resources/GameIndex.yaml b/bin/resources/GameIndex.yaml index 54dbaffef1..0f38798a06 100644 --- a/bin/resources/GameIndex.yaml +++ b/bin/resources/GameIndex.yaml @@ -8984,7 +8984,6 @@ SLAJ-25053: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLAJ-25055: name: "Def Jam - Fight for N.Y." region: "NTSC-Unk" @@ -9023,7 +9022,6 @@ SLAJ-25066: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" memcardFilters: - "SLAJ-25066" - "SLPM-66108" @@ -9092,8 +9090,8 @@ SLAJ-25078: roundSprite: 1 # Fixes lighting misalignment such as the street poles and the sun. mipmap: 2 # Fixes over sharpening. trilinearFiltering: 1 # Smoothes out mipmapping. + getSkipCount: "GSC_BlackAndBurnoutSky" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLAJ-25079: name: "Shin Sangoku Musou 4 - Empires" region: "NTSC-Unk" @@ -9146,7 +9144,6 @@ SLAJ-25094: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLAJ-25095: name: "Medal of Honor - Vanguard" region: "NTSC-Unk" @@ -9311,7 +9308,6 @@ SLED-52597: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLED-52852: name: "Forgotten Realms - Demon Stone [Demo]" region: "PAL-E" @@ -9378,7 +9374,6 @@ SLED-53512: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLED-53537: name: "187 - Ride or Die [Demo]" region: "PAL-E" @@ -9426,8 +9421,8 @@ SLED-53937: roundSprite: 1 # Fixes lighting misalignment such as the street poles and the sun. mipmap: 2 # Fixes over sharpening. trilinearFiltering: 1 # Smoothes out mipmapping. + getSkipCount: "GSC_BlackAndBurnoutSky" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLED-53951: name: "Honda Demo [Demo]" region: "PAL-E" @@ -15067,7 +15062,6 @@ SLES-52584: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLES-52585: name: "Burnout 3 - Takedown" region: "PAL-F-G-I" @@ -15082,7 +15076,6 @@ SLES-52585: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLES-52587: name: "Army Men - Sarge's War" region: "PAL-M5" @@ -17265,7 +17258,6 @@ SLES-53506: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" memcardFilters: - "SLES-53506" - "SLES-53507" @@ -17287,7 +17279,6 @@ SLES-53507: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" memcardFilters: - "SLES-53506" - "SLES-53507" @@ -18394,8 +18385,8 @@ SLES-53886: roundSprite: 1 # Fixes lighting misalignment such as the street poles and the sun. mipmap: 2 # Fixes over sharpening. trilinearFiltering: 1 # Smoothes out mipmapping. + getSkipCount: "GSC_BlackAndBurnoutSky" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" patches: ADDFF505: content: |- @@ -18732,8 +18723,8 @@ SLES-54030: roundSprite: 1 # Fixes lighting misalignment such as the street poles and the sun. mipmap: 2 # Fixes over sharpening. trilinearFiltering: 1 # Smoothes out mipmapping. + getSkipCount: "GSC_BlackAndBurnoutSky" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" patches: CAA04879: content: |- @@ -20202,7 +20193,6 @@ SLES-54627: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLES-54628: name: "Skate Attack [Promo]" region: "PAL-E" @@ -20377,7 +20367,6 @@ SLES-54681: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLES-54683: name: "Medal of Honor - Vanguard" region: "PAL-M9" @@ -23620,7 +23609,6 @@ SLKA-25206: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLKA-25207: name: "Sakura Taisen V - Episode 0 - Samurai Girl of Wild" region: "NTSC-K" @@ -23914,7 +23902,6 @@ SLKA-25304: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLKA-25307: name: "Dragon Ball Z Sparking" region: "NTSC-K" @@ -24229,7 +24216,6 @@ SLPM-55004: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLPM-55005: name: "Mana Khemia 2 - Ochita Gakuen to Renkinjutsushi Tachi" region: "NTSC-J" @@ -24271,7 +24257,6 @@ SLPM-55036: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLPM-55039: name: "Soukoku no Kusabi - Hiiro no Kakera 3 [Limited Edition]" region: "NTSC-J" @@ -24850,7 +24835,6 @@ SLPM-60246: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLPM-60251: name: "Devil May Cry 3 [Trial Version]" region: "NTSC-J" @@ -29701,7 +29685,6 @@ SLPM-65719: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLPM-65720: name: "Shin Sangoku Musou 2 Mushoden [Koei the Best]" region: "NTSC-J" @@ -30532,7 +30515,6 @@ SLPM-65958: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLPM-65959: name: "Standard Daisenryaku - Ushinawareta Shouri" region: "NTSC-J" @@ -31086,7 +31068,6 @@ SLPM-66108: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" memcardFilters: - "SLAJ-25066" - "SLPM-66108" @@ -32028,8 +32009,8 @@ SLPM-66354: roundSprite: 1 # Fixes lighting misalignment such as the street poles and the sun. mipmap: 2 # Fixes over sharpening. trilinearFiltering: 1 # Smoothes out mipmapping. + getSkipCount: "GSC_BlackAndBurnoutSky" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" patches: B3A9F9ED: content: |- @@ -33148,7 +33129,6 @@ SLPM-66652: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" memcardFilters: - "SLAJ-25066" - "SLPM-66108" @@ -33482,8 +33462,8 @@ SLPM-66731: roundSprite: 1 # Fixes lighting misalignment such as the street poles and the sun. mipmap: 2 # Fixes over sharpening. trilinearFiltering: 1 # Smoothes out mipmapping. + getSkipCount: "GSC_BlackAndBurnoutSky" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLPM-66732: name: "Iinazuke [Limited Edition]" region: "NTSC-J" @@ -33533,7 +33513,6 @@ SLPM-66739: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLPM-66740: name: "Sentou Kokka Kai - Legend [DX Pack]" region: "NTSC-J" @@ -34254,8 +34233,8 @@ SLPM-66961: roundSprite: 1 # Fixes lighting misalignment such as the street poles and the sun. mipmap: 2 # Fixes over sharpening. trilinearFiltering: 1 # Smoothes out mipmapping. + getSkipCount: "GSC_BlackAndBurnoutSky" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLPM-66962: name: "Burnout 3 - Takedown [EA-SY! 1980]" region: "NTSC-J" @@ -34270,7 +34249,6 @@ SLPM-66962: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLPM-66963: name: "Medal of Honor - Frontline [EA-SY! 1980]" region: "NTSC-J" @@ -45229,7 +45207,6 @@ SLUS-21050: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLUS-21051: name: "FIFA 2005" region: "NTSC-U" @@ -46204,7 +46181,6 @@ SLUS-21242: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" memcardFilters: # Reads Burnout 3 and NFL 06 saves for unlockables. - "SLUS-21242" - "SLUS-21050" @@ -47003,8 +46979,8 @@ SLUS-21376: roundSprite: 1 # Fixes lighting misalignment such as the street poles and the sun. mipmap: 2 # Fixes over sharpening. trilinearFiltering: 1 # Smoothes out mipmapping. + getSkipCount: "GSC_BlackAndBurnoutSky" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" patches: 5C891FF1: content: |- @@ -47998,7 +47974,6 @@ SLUS-21596: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLUS-21597: name: "Medal of Honor - Vanguard" region: "NTSC-U" @@ -50166,7 +50141,6 @@ SLUS-29113: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLUS-29116: name: "WWE SmackDown! vs. RAW [Public Beta Vol.1.0]" region: "NTSC-U" @@ -50282,7 +50256,6 @@ SLUS-29153: cpuCLUTRender: 1 # Fixes sun penetrating bridges (along with HPO special). getSkipCount: "GSC_BurnoutGames" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLUS-29154: name: "NHL '06 [Demo]" region: "NTSC-U" @@ -50384,8 +50357,8 @@ SLUS-29180: roundSprite: 1 # Fixes lighting misalignment such as the street poles and the sun. mipmap: 2 # Fixes over sharpening. trilinearFiltering: 1 # Smoothes out mipmapping. + getSkipCount: "GSC_BlackAndBurnoutSky" beforeDraw: "OI_BurnoutGames" - afterDraw: "OO_BurnoutGames" SLUS-29183: name: "Fight Night - Round 3 [Demo]" region: "NTSC-U" diff --git a/pcsx2/Config.h b/pcsx2/Config.h index b68470b1be..ff8c8b45a5 100644 --- a/pcsx2/Config.h +++ b/pcsx2/Config.h @@ -717,7 +717,6 @@ struct Pcsx2Config int TVShader{0}; s16 GetSkipCountFunctionId{-1}; s16 BeforeDrawFunctionId{-1}; - s16 AfterDrawFunctionId{-1}; int SkipDrawStart{0}; int SkipDrawEnd{0}; diff --git a/pcsx2/Docs/gamedb-schema.json b/pcsx2/Docs/gamedb-schema.json index 580e21db14..10c573473f 100644 --- a/pcsx2/Docs/gamedb-schema.json +++ b/pcsx2/Docs/gamedb-schema.json @@ -231,9 +231,6 @@ }, "beforeDraw": { "type": "string" - }, - "afterDraw": { - "type": "string" } }, "additionalProperties": false diff --git a/pcsx2/GS/GS.cpp b/pcsx2/GS/GS.cpp index 30df87d2b7..fe95f028fa 100644 --- a/pcsx2/GS/GS.cpp +++ b/pcsx2/GS/GS.cpp @@ -707,8 +707,7 @@ void GSUpdateConfig(const Pcsx2Config::GSOptions& new_config) if (GSConfig.CRCHack != old_config.CRCHack || GSConfig.UpscaleMultiplier != old_config.UpscaleMultiplier || GSConfig.GetSkipCountFunctionId != old_config.GetSkipCountFunctionId || - GSConfig.BeforeDrawFunctionId != old_config.BeforeDrawFunctionId || - GSConfig.AfterDrawFunctionId != old_config.BeforeDrawFunctionId) + GSConfig.BeforeDrawFunctionId != old_config.BeforeDrawFunctionId) { g_gs_renderer->UpdateCRCHacks(); } diff --git a/pcsx2/GS/GS.h b/pcsx2/GS/GS.h index 6442b24365..844b623531 100644 --- a/pcsx2/GS/GS.h +++ b/pcsx2/GS/GS.h @@ -51,7 +51,6 @@ class HostDisplay; // Returns the ID for the specified function, otherwise -1. s16 GSLookupGetSkipCountFunctionId(const std::string_view& name); s16 GSLookupBeforeDrawFunctionId(const std::string_view& name); -s16 GSLookupAfterDrawFunctionId(const std::string_view& name); int GSinit(); void GSshutdown(); diff --git a/pcsx2/GS/Renderers/HW/GSHwHack.cpp b/pcsx2/GS/Renderers/HW/GSHwHack.cpp index b54f3b024a..82ba9c4446 100644 --- a/pcsx2/GS/Renderers/HW/GSHwHack.cpp +++ b/pcsx2/GS/Renderers/HW/GSHwHack.cpp @@ -335,6 +335,28 @@ bool GSHwHack::GSC_BurnoutGames(GSRendererHW& r, const GSFrameInfo& fi, int& ski } } + return GSC_BlackAndBurnoutSky(r, fi, skip); +} + +bool GSHwHack::GSC_BlackAndBurnoutSky(GSRendererHW& r, const GSFrameInfo& fi, int& skip) +{ + if (skip != 0) + return true; + + const GIFRegTEX0& TEX0 = RCONTEXT->TEX0; + const GIFRegALPHA& ALPHA = RCONTEXT->ALPHA; + const GIFRegFRAME& FRAME = RCONTEXT->FRAME; + if (RPRIM->PRIM == GS_SPRITE && !RPRIM->IIP && RPRIM->TME && !RPRIM->FGE && RPRIM->ABE && !RPRIM->AA1 && !RPRIM->FST && !RPRIM->FIX && TEX0.TBW == 16 && TEX0.TW == 10 && TEX0.TCC && !TEX0.TFX && TEX0.PSM == PSM_PSMT8 && TEX0.CPSM == PSM_PSMCT32 && !TEX0.CSM && TEX0.TH == 8 && ALPHA.A == ALPHA.B && ALPHA.D == 0 && FRAME.FBW == 16 && FRAME.PSM == PSM_PSMCT32) + { + // Readback clouds being rendered during level loading. + // Later the alpha channel from the 32 bit frame buffer is used as an 8 bit indexed texture to draw + // the clouds on top of the sky at each frame. + // Burnout 3 PAL 50Hz: 0x3ba0 => 0x1e80. + GL_INS("OO_BurnoutGames - Readback clouds renderered from TEX0.TBP0 = 0x%04x (TEX0.CBP = 0x%04x) to FBP = 0x%04x", TEX0.TBP0, TEX0.CBP, FRAME.Block()); + r.SwPrimRender(r); + skip = 1; + } + return true; } @@ -1153,24 +1175,6 @@ bool GSHwHack::OI_BurnoutGames(GSRendererHW& r, GSTexture* rt, GSTexture* ds, GS return false; } -// OO (others output?) hacks: invalidate extra local memory after the draw call - -void GSHwHack::OO_BurnoutGames(GSRendererHW& r) -{ - const GIFRegTEX0& TEX0 = RCONTEXT->TEX0; - const GIFRegALPHA& ALPHA = RCONTEXT->ALPHA; - const GIFRegFRAME& FRAME = RCONTEXT->FRAME; - if (RPRIM->PRIM == GS_SPRITE && !RPRIM->IIP && RPRIM->TME && !RPRIM->FGE && RPRIM->ABE && !RPRIM->AA1 && !RPRIM->FST && !RPRIM->FIX && TEX0.TBW == 16 && TEX0.TW == 10 && TEX0.TCC && !TEX0.TFX && TEX0.PSM == PSM_PSMT8 && TEX0.CPSM == PSM_PSMCT32 && !TEX0.CSM && TEX0.TH == 8 && ALPHA.A == ALPHA.B && ALPHA.D == 0 && FRAME.FBW == 16 && FRAME.PSM == PSM_PSMCT32) - { - // Readback clouds being rendered during level loading. - // Later the alpha channel from the 32 bit frame buffer is used as an 8 bit indexed texture to draw - // the clouds on top of the sky at each frame. - // Burnout 3 PAL 50Hz: 0x3ba0 => 0x1e80. - GL_INS("OO_BurnoutGames - Readback clouds renderered from TEX0.TBP0 = 0x%04x (TEX0.CBP = 0x%04x) to FBP = 0x%04x", TEX0.TBP0, TEX0.CBP, FRAME.Block()); - r.m_tc->InvalidateLocalMem(RCONTEXT->offset.fb, r.m_r); - } -} - #undef RCONTEXT #undef RPRIM @@ -1200,6 +1204,7 @@ const GSHwHack::Entry GSHwHack::s_get_skip_count_function CRC_F(GSC_TombRaiderUnderWorld, CRCHackLevel::Partial), CRC_F(GSC_UrbanReign, CRCHackLevel::Partial), CRC_F(GSC_ZettaiZetsumeiToshi2, CRCHackLevel::Partial), + CRC_F(GSC_BlackAndBurnoutSky, CRCHackLevel::Partial), // Channel Effect CRC_F(GSC_CrashBandicootWoC, CRCHackLevel::Partial), @@ -1252,10 +1257,6 @@ const GSHwHack::Entry GSHwHack::s_before_draw_functions[] CRC_F(OI_BurnoutGames, CRCHackLevel::Minimum), }; -const GSHwHack::Entry GSHwHack::s_after_draw_functions[] = { - CRC_F(OO_BurnoutGames, CRCHackLevel::Minimum), -}; - #undef CRC_F s16 GSLookupGetSkipCountFunctionId(const std::string_view& name) @@ -1280,17 +1281,6 @@ s16 GSLookupBeforeDrawFunctionId(const std::string_view& name) return -1; } -s16 GSLookupAfterDrawFunctionId(const std::string_view& name) -{ - for (u32 i = 0; i < std::size(GSHwHack::s_after_draw_functions); i++) - { - if (name == GSHwHack::s_after_draw_functions[i].name) - return static_cast(i); - } - - return -1; -} - void GSRendererHW::UpdateCRCHacks() { GSRenderer::UpdateCRCHacks(); @@ -1303,7 +1293,6 @@ void GSRendererHW::UpdateCRCHacks() m_gsc = nullptr; m_oi = nullptr; - m_oo = nullptr; if (real_level != CRCHackLevel::Off) { @@ -1320,13 +1309,6 @@ void GSRendererHW::UpdateCRCHacks() { m_oi = GSHwHack::s_before_draw_functions[GSConfig.BeforeDrawFunctionId].ptr; } - - if (GSConfig.AfterDrawFunctionId >= 0 && - static_cast(GSConfig.AfterDrawFunctionId) < std::size(GSHwHack::s_after_draw_functions) && - real_level >= GSHwHack::s_after_draw_functions[GSConfig.AfterDrawFunctionId].level) - { - m_oo = GSHwHack::s_after_draw_functions[GSConfig.AfterDrawFunctionId].ptr; - } } } diff --git a/pcsx2/GS/Renderers/HW/GSHwHack.h b/pcsx2/GS/Renderers/HW/GSHwHack.h index 7231052bdc..6ee26233a1 100644 --- a/pcsx2/GS/Renderers/HW/GSHwHack.h +++ b/pcsx2/GS/Renderers/HW/GSHwHack.h @@ -33,6 +33,7 @@ public: static bool GSC_TombRaiderLegend(GSRendererHW& r, const GSFrameInfo& fi, int& skip); static bool GSC_TombRaiderUnderWorld(GSRendererHW& r, const GSFrameInfo& fi, int& skip); static bool GSC_BurnoutGames(GSRendererHW& r, const GSFrameInfo& fi, int& skip); + static bool GSC_BlackAndBurnoutSky(GSRendererHW& r, const GSFrameInfo& fi, int& skip); static bool GSC_MidnightClub3(GSRendererHW& r, const GSFrameInfo& fi, int& skip); static bool GSC_TalesOfLegendia(GSRendererHW& r, const GSFrameInfo& fi, int& skip); static bool GSC_Kunoichi(GSRendererHW& r, const GSFrameInfo& fi, int& skip); @@ -67,8 +68,6 @@ public: static bool OI_JakGames(GSRendererHW& r, GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t); static bool OI_BurnoutGames(GSRendererHW& r, GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t); - static void OO_BurnoutGames(GSRendererHW& r); - template struct Entry { @@ -79,5 +78,4 @@ public: static const Entry s_get_skip_count_functions[]; static const Entry s_before_draw_functions[]; - static const Entry s_after_draw_functions[]; }; diff --git a/pcsx2/GS/Renderers/HW/GSRendererHW.cpp b/pcsx2/GS/Renderers/HW/GSRendererHW.cpp index 50c52fd266..e62f059415 100644 --- a/pcsx2/GS/Renderers/HW/GSRendererHW.cpp +++ b/pcsx2/GS/Renderers/HW/GSRendererHW.cpp @@ -1943,9 +1943,6 @@ void GSRendererHW::Draw() // - if (m_oo) - m_oo(*this); - if (GSConfig.DumpGSData) { const u64 frame = g_perfmon.GetFrame(); diff --git a/pcsx2/GS/Renderers/HW/GSRendererHW.h b/pcsx2/GS/Renderers/HW/GSRendererHW.h index e8ff18ca24..35bdd70461 100644 --- a/pcsx2/GS/Renderers/HW/GSRendererHW.h +++ b/pcsx2/GS/Renderers/HW/GSRendererHW.h @@ -54,7 +54,6 @@ private: using GSC_Ptr = bool(*)(GSRendererHW& r, const GSFrameInfo& fi, int& skip); // GSC - Get Skip Count using OI_Ptr = bool(*)(GSRendererHW& r, GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t); // OI - Before draw - using OO_Ptr = void(*)(GSRendererHW& r); // OO - After draw // Require special argument bool OI_BlitFMV(GSTextureCache::Target* _rt, GSTextureCache::Source* t, const GSVector4i& r_draw); @@ -96,7 +95,6 @@ private: bool IsBadFrame(); GSC_Ptr m_gsc = nullptr; OI_Ptr m_oi = nullptr; - OO_Ptr m_oo = nullptr; int m_skip = 0; int m_skip_offset = 0; diff --git a/pcsx2/GameDatabase.cpp b/pcsx2/GameDatabase.cpp index 9abd360bd1..d1149335c4 100644 --- a/pcsx2/GameDatabase.cpp +++ b/pcsx2/GameDatabase.cpp @@ -242,15 +242,13 @@ void GameDatabase::parseAndInsert(const std::string_view& serial, const c4::yml: const std::string_view id_name(n.key().data(), n.key().size()); std::optional id = GameDatabaseSchema::parseHWFixName(id_name); std::optional value; - if (id.has_value() && (id.value() == GameDatabaseSchema::GSHWFixId::GetSkipCount || id.value() == GameDatabaseSchema::GSHWFixId::BeforeDraw || id.value() == GameDatabaseSchema::GSHWFixId::AfterDraw)) + if (id.has_value() && (id.value() == GameDatabaseSchema::GSHWFixId::GetSkipCount || id.value() == GameDatabaseSchema::GSHWFixId::BeforeDraw)) { const std::string_view str_value(n.has_val() ? std::string_view(n.val().data(), n.val().size()) : std::string_view()); if (id.value() == GameDatabaseSchema::GSHWFixId::GetSkipCount) value = GSLookupGetSkipCountFunctionId(str_value); else if (id.value() == GameDatabaseSchema::GSHWFixId::BeforeDraw) value = GSLookupBeforeDrawFunctionId(str_value); - else if (id.value() == GameDatabaseSchema::GSHWFixId::AfterDraw) - value = GSLookupAfterDrawFunctionId(str_value); if (value.value_or(-1) < 0) { @@ -366,7 +364,6 @@ static const char* s_gs_hw_fix_names[] = { "gpuPaletteConversion", "getSkipCount", "beforeDraw", - "afterDraw" }; static_assert(std::size(s_gs_hw_fix_names) == static_cast(GameDatabaseSchema::GSHWFixId::Count), "HW fix name lookup is correct size"); @@ -396,7 +393,6 @@ bool GameDatabaseSchema::isUserHackHWFix(GSHWFixId id) case GSHWFixId::TrilinearFiltering: case GSHWFixId::GetSkipCount: case GSHWFixId::BeforeDraw: - case GSHWFixId::AfterDraw: return false; default: return true; @@ -617,9 +613,6 @@ bool GameDatabaseSchema::GameEntry::configMatchesHWFix(const Pcsx2Config::GSOpti case GSHWFixId::BeforeDraw: return (static_cast(config.BeforeDrawFunctionId) == value); - case GSHWFixId::AfterDraw: - return (static_cast(config.AfterDrawFunctionId) == value); - default: return false; } @@ -778,10 +771,6 @@ u32 GameDatabaseSchema::GameEntry::applyGSHardwareFixes(Pcsx2Config::GSOptions& config.BeforeDrawFunctionId = static_cast(value); break; - case GSHWFixId::AfterDraw: - config.AfterDrawFunctionId = static_cast(value); - break; - default: break; } diff --git a/pcsx2/GameDatabase.h b/pcsx2/GameDatabase.h index 46e76c2633..c7ad063082 100644 --- a/pcsx2/GameDatabase.h +++ b/pcsx2/GameDatabase.h @@ -86,7 +86,6 @@ namespace GameDatabaseSchema GPUPaletteConversion, GetSkipCount, BeforeDraw, - AfterDraw, Count }; diff --git a/pcsx2/Pcsx2Config.cpp b/pcsx2/Pcsx2Config.cpp index 1b0c323e0b..f3a8348444 100644 --- a/pcsx2/Pcsx2Config.cpp +++ b/pcsx2/Pcsx2Config.cpp @@ -495,7 +495,6 @@ bool Pcsx2Config::GSOptions::OptionsAreEqual(const GSOptions& right) const OpEqu(TVShader) && OpEqu(GetSkipCountFunctionId) && OpEqu(BeforeDrawFunctionId) && - OpEqu(AfterDrawFunctionId) && OpEqu(SkipDrawEnd) && OpEqu(SkipDrawStart) &&