From 2aaabdd2eaed4c1137c175d8a7b51754c7cf3817 Mon Sep 17 00:00:00 2001 From: lightningterror <18107717+lightningterror@users.noreply.github.com> Date: Sun, 6 Feb 2022 15:49:13 +0100 Subject: [PATCH] GS-hw: Cleanup crc stuff. Merge the following crc lists, gets rid of duplication since code is shared: BurnoutDominator, BurnoutRevenge, BurnoutTakedown ->BurnoutGames GetaWay, GetaWayBlackMonday ->GetaWayGames GT3, GT4, GTConcept, TouristTrophy ->PolyphonyDigitalGames Yakuza, Yakuza2 -> YakuzaGames ValkyrieProfile2, StarOcean3, RadiataStories -> TriAceGames Rename defines Dx_and_OGL to CRC_Partial, Dx_only to CRC_Full, Aggressive to CRC_Aggressive --- pcsx2/GS/GSCrc.cpp | 200 ++++++++++++------------ pcsx2/GS/GSCrc.h | 19 +-- pcsx2/GS/Renderers/HW/GSHwHack.cpp | 70 ++++----- pcsx2/GS/Renderers/HW/GSRendererHW.cpp | 8 +- pcsx2/GS/Renderers/HW/GSRendererNew.cpp | 2 +- 5 files changed, 140 insertions(+), 159 deletions(-) diff --git a/pcsx2/GS/GSCrc.cpp b/pcsx2/GS/GSCrc.cpp index c7131306d7..c74a4a3921 100644 --- a/pcsx2/GS/GSCrc.cpp +++ b/pcsx2/GS/GSCrc.cpp @@ -107,39 +107,42 @@ const CRC::Game CRC::m_games[] = {0x5C991F4E, ICO, EU, 0}, {0x788D8B4F, ICO, EU, 0}, {0x29C28734, ICO, CH, 0}, - {0x60013EBD, GTConcept, EU, 0}, - {0x6810C3BC, GTConcept, CH, 0}, // Gran Turismo Concept 2002 Tokyo-Geneva - {0x0EEF32A3, GTConcept, KO, 0}, // Gran Turismo Concept 2002 Tokyo-Seoul - {0x3E9D448A, GT3, CH, 0}, // cutie comment - {0xAD66643C, GT3, CH, 0}, // cutie comment - {0x85AE91B3, GT3, US, 0}, - {0x8AA991B0, GT3, US, 0}, - {0xC220951A, GT3, JP, 0}, - {0x9DE5CF65, GT3, JP, 0}, - {0x706DFF80, GT3, JP, 0}, // GT3 Store Disc Vol. 2 - {0x55CE5111, GT3, JP, 0}, // Gran Turismo 2000 Body Omen - {0xE9A7E08D, GT3, JP, 0}, // Gran Turismo 2000 Body Omen - {0xB590CE04, GT3, EU, 0}, - {0xC02C653E, GT4, CH, 0}, - {0x7ABDBB5E, GT4, CH, 0}, // cutie comment - {0xAEAD1CA3, GT4, JP, 0}, - {0xA3AF15A0, GT4, JP, 0}, // GT4 PS2 Racing Pack - {0xE906EA37, GT4, JP, 0}, // GT4 First Preview - {0xCA6243B9, GT4, JP, 0}, // GT4 Prologue - {0xDD764BBE, GT4, JP, 0}, // GT4 Prologue - {0xE1258846, GT4, JP, 0}, // GT4 Prologue - {0x27B8F05F, GT4, JP, 0}, // GT4 Prius Trial Version - {0x30E41D93, GT4, KO, 0}, - {0x715CF2EC, GT4, EU, 0}, - {0x44A61C8F, GT4, EU, 0}, - {0x0086E35B, GT4, EU, 0}, - {0x3FB69323, GT4, EU, 0}, // GT4 Prologue - {0x77E61C8A, GT4, US, 0}, - {0x33C6E35E, GT4, US, 0}, - {0x70538747, GT4, US, 0}, // Toyota Prius Trial - {0x32A1C752, GT4, US, 0}, // GT4 Online Beta - {0x2A84A1E2, GT4, US, 0}, // Mazda MX-5 Edition - {0x0087EEC4, GT4, NoRegion, 0}, // JP and US versions have the same CRC - GT4 Online Beta + {0x60013EBD, PolyphonyDigitalGames, EU, 0}, // Gran Turismo Concept + {0x6810C3BC, PolyphonyDigitalGames, CH, 0}, // Gran Turismo Concept 2002 Tokyo-Geneva + {0x0EEF32A3, PolyphonyDigitalGames, KO, 0}, // Gran Turismo Concept 2002 Tokyo-Seoul + {0x3E9D448A, PolyphonyDigitalGames, CH, 0}, // GT3 + {0xAD66643C, PolyphonyDigitalGames, CH, 0}, // GT3 + {0x85AE91B3, PolyphonyDigitalGames, US, 0}, // GT3 + {0x8AA991B0, PolyphonyDigitalGames, US, 0}, // GT3 + {0xC220951A, PolyphonyDigitalGames, JP, 0}, // GT3 + {0x9DE5CF65, PolyphonyDigitalGames, JP, 0}, // GT3 + {0x706DFF80, PolyphonyDigitalGames, JP, 0}, // GT3 Store Disc Vol. 2 + {0x55CE5111, PolyphonyDigitalGames, JP, 0}, // Gran Turismo 2000 Body Omen + {0xE9A7E08D, PolyphonyDigitalGames, JP, 0}, // Gran Turismo 2000 Body Omen + {0xB590CE04, PolyphonyDigitalGames, EU, 0}, // GT3 + {0xC02C653E, PolyphonyDigitalGames, CH, 0}, // GT4 + {0x7ABDBB5E, PolyphonyDigitalGames, CH, 0}, // GT4 + {0xAEAD1CA3, PolyphonyDigitalGames, JP, 0}, // GT4 + {0xA3AF15A0, PolyphonyDigitalGames, JP, 0}, // GT4 PS2 Racing Pack + {0xE906EA37, PolyphonyDigitalGames, JP, 0}, // GT4 First Preview + {0xCA6243B9, PolyphonyDigitalGames, JP, 0}, // GT4 Prologue + {0xDD764BBE, PolyphonyDigitalGames, JP, 0}, // GT4 Prologue + {0xE1258846, PolyphonyDigitalGames, JP, 0}, // GT4 Prologue + {0x27B8F05F, PolyphonyDigitalGames, JP, 0}, // GT4 Prius Trial Version + {0x30E41D93, PolyphonyDigitalGames, KO, 0}, // GT4 + {0x715CF2EC, PolyphonyDigitalGames, EU, 0}, // GT4 + {0x44A61C8F, PolyphonyDigitalGames, EU, 0}, // GT4 + {0x0086E35B, PolyphonyDigitalGames, EU, 0}, // GT4 + {0x3FB69323, PolyphonyDigitalGames, EU, 0}, // GT4 Prologue + {0x77E61C8A, PolyphonyDigitalGames, US, 0}, // GT4 + {0x33C6E35E, PolyphonyDigitalGames, US, 0}, // GT4 + {0x70538747, PolyphonyDigitalGames, US, 0}, // GT4 Toyota Prius Trial + {0x32A1C752, PolyphonyDigitalGames, US, 0}, // GT4 Online Beta + {0x2A84A1E2, PolyphonyDigitalGames, US, 0}, // GT4 Mazda MX-5 Edition + {0x0087EEC4, PolyphonyDigitalGames, NoRegion, 0}, // GT4 Online Beta, JP and US versions have the same CRC + {0x5AC7E79C, PolyphonyDigitalGames, CH, 0}, // TouristTrophy + {0xFF9C0E93, PolyphonyDigitalGames, US, 0}, // TouristTrophy + {0xCA9AA903, PolyphonyDigitalGames, EU, 0}, // TouristTrophy {0x8B029334, Manhunt2, EU, 0}, {0x3B0ADBEF, Manhunt2, US, 0}, {0x09F49E37, CrashBandicootWoC, NoRegion, 0}, @@ -182,10 +185,10 @@ const CRC::Game CRC::m_games[] = {0x9567B7D6, GodOfWar, KO, 0}, {0x9B5C97BA, GodOfWar, KO, 0}, {0xE23D532B, GodOfWar, NoRegion, 0}, - {0x1A85E924, GodOfWar, NoRegion, 0}, // cutie comment - {0x608ACBD3, GodOfWar, CH, 0}, // cutie comment + {0x1A85E924, GodOfWar, NoRegion, 0}, + {0x608ACBD3, GodOfWar, CH, 0}, // {0x1A85E924, GodOfWar, NoRegion, 0}, // same CRC as {0x1A85E924, DevilMayCry3, CH, 0} - {0x2F123FD8, GodOfWar2, US, 0}, // same CRC as RU + {0x2F123FD8, GodOfWar2, US, 0}, {0x44A8A22A, GodOfWar2, EU, 0}, {0x60BC362B, GodOfWar2, EU, 0}, {0x4340C7C6, GodOfWar2, KO, 0}, @@ -195,8 +198,8 @@ const CRC::Game CRC::m_games[] = {0x5990866F, GodOfWar2, NoRegion, 0}, {0xC4C4FD5F, GodOfWar2, CH, 0}, {0xDCD9A9F7, GodOfWar2, EU, 0}, - {0xFA0DF523, GodOfWar2, CH, 0}, // cutie comment - {0x9FEE3466, GodOfWar2, CH, 0}, // cutie comment + {0xFA0DF523, GodOfWar2, CH, 0}, + {0x9FEE3466, GodOfWar2, CH, 0}, {0x95CC86EF, GiTS, US, 0}, // same CRC also reported as EU {0x2C5BF134, GiTS, US, 0}, // Demo {0xA5768F53, GiTS, JP, 0}, @@ -209,18 +212,18 @@ const CRC::Game CRC::m_games[] = {0xAA5EC3A3, TalesOfAbyss, JP, 0}, {0xFB236A46, SonicUnleashed, US, 0}, {0x8C913264, SonicUnleashed, EU, 0}, - {0xE04EA200, StarOcean3, EU, 0}, - {0x23A97857, StarOcean3, US, 0}, - {0xBEC32D49, StarOcean3, JP, 0}, - {0x8192A241, StarOcean3, JP, 0}, // NTSC JP special directors cut limited extra sugar on top edition (the special one :p) - {0xCC96CE93, ValkyrieProfile2, US, 0}, - {0x774DE8E2, ValkyrieProfile2, JP, 0}, - {0x04CCB600, ValkyrieProfile2, EU, 0}, - {0xB65E141B, ValkyrieProfile2, DE, 0}, // PAL German - {0x8510854E, ValkyrieProfile2, FR, 0}, - {0xC70FC973, ValkyrieProfile2, IT, 0}, - {0x47B9B2FD, RadiataStories, US, 0}, - {0xAC73005E, RadiataStories, JP, 0}, + {0xE04EA200, TriAceGames, EU, 0}, // StarOcean3 + {0x23A97857, TriAceGames, US, 0}, // StarOcean3 + {0xBEC32D49, TriAceGames, JP, 0}, // StarOcean3 + {0x8192A241, TriAceGames, JP, 0}, // StarOcean3 directors cut + {0xCC96CE93, TriAceGames, US, 0}, // ValkyrieProfile2 + {0x774DE8E2, TriAceGames, JP, 0}, // ValkyrieProfile2 + {0x04CCB600, TriAceGames, EU, 0}, // ValkyrieProfile2 + {0xB65E141B, TriAceGames, DE, 0}, // ValkyrieProfile2 + {0x8510854E, TriAceGames, FR, 0}, // ValkyrieProfile2 + {0xC70FC973, TriAceGames, IT, 0}, // ValkyrieProfile2 + {0x47B9B2FD, TriAceGames, US, 0}, // RadiataStories + {0xAC73005E, TriAceGames, JP, 0}, // RadiataStories {0xE8FCF8EC, SMTNocturne, US, 0}, {0xF0A31EE3, SMTNocturne, EU, 0}, // SMTNocturne (Lucifers Call in EU) {0xAE0DE7B7, SMTNocturne, EU, 0}, // SMTNocturne (Lucifers Call in EU) @@ -236,43 +239,43 @@ const CRC::Game CRC::m_games[] = {0xDD93DA88, BigMuthaTruckers, JP, 0}, // Bakusou Convoy Densetsu - Otoko Hanamichi America Roman {0xE169BAF8, RedDeadRevolver, US, 0}, {0xE2E67E23, RedDeadRevolver, EU, 0}, - {0xCBB87BF9, EvangelionJo, JP, 0}, // cutie comment - {0xC5B75C7C, Oneechanbara2Special, JP, 0}, // cutie comment + {0xCBB87BF9, EvangelionJo, JP, 0}, + {0xC5B75C7C, Oneechanbara2Special, JP, 0}, {0xC725CC6C, Oneechanbara2Special, JP, 0}, {0x07608CA2, Oneechanbara2Special, EU, 0}, // Zombie Hunters 2 - {0xE0347841, XenosagaE3, JP, TextureInsideRt}, // cutie comment + {0xE0347841, XenosagaE3, JP, TextureInsideRt}, {0xA707236E, XenosagaE3, JP, TextureInsideRt}, // Demo {0xA4E88698, XenosagaE3, CH, TextureInsideRt}, {0x2088950A, XenosagaE3, US, TextureInsideRt}, - {0xB1995E29, ShadowofRome, EU, 0}, // cutie comment + {0xB1995E29, ShadowofRome, EU, 0}, {0x958DCA28, ShadowofRome, EU, 0}, {0x57818AF6, ShadowofRome, US, 0}, {0x1E210E60, ShadowofRome, US, 0}, // Demo {0x36393CD3, ShadowofRome, JP, 0}, - {0x694A998E, TombRaiderUnderworld, JP, 0}, // cutie comment + {0x694A998E, TombRaiderUnderworld, JP, 0}, {0x8E214549, TombRaiderUnderworld, EU, 0}, {0x618769D6, TombRaiderUnderworld, US, 0}, {0xB639EB17, TombRaiderAnniversary, US, 0}, // Also needed for automatic mipmapping - {0xB05805B6, TombRaiderAnniversary, JP, 0}, // cutie comment + {0xB05805B6, TombRaiderAnniversary, JP, 0}, {0xA629A376, TombRaiderAnniversary, EU, 0}, - {0xBC8B3F50, TombRaiderLegend, US, 0}, // cutie comment + {0xBC8B3F50, TombRaiderLegend, US, 0}, {0x365172A0, TombRaiderLegend, JP, 0}, {0x05177ECE, TombRaiderLegend, EU, 0}, - {0xBEBF8793, BurnoutTakedown, US, 0}, - {0xBB2E845F, BurnoutTakedown, JP, 0}, - {0x5F060991, BurnoutTakedown, KO, 0}, - {0x75BECC18, BurnoutTakedown, EU, 0}, - {0xCE49B0DE, BurnoutTakedown, EU, 0}, - {0x381EE9EF, BurnoutTakedown, EU, 0}, // E3 Demo - {0xD224D348, BurnoutRevenge, US, 0}, - {0x878E7A1D, BurnoutRevenge, JP, 0}, - {0xEEA60511, BurnoutRevenge, KO, 0}, - {0x7E83CC5B, BurnoutRevenge, EU, 0}, - {0x2CAC3DBC, BurnoutRevenge, EU, 0}, - {0x8C9576A1, BurnoutDominator, US, 0}, - {0xDDF76A98, BurnoutDominator, JP, 0}, - {0x8C9576B4, BurnoutDominator, EU, 0}, - {0x8C9C76B4, BurnoutDominator, EU, 0}, + {0xBEBF8793, BurnoutGames, US, 0}, // BurnoutTakedown + {0xBB2E845F, BurnoutGames, JP, 0}, // BurnoutTakedown + {0x5F060991, BurnoutGames, KO, 0}, // BurnoutTakedown + {0x75BECC18, BurnoutGames, EU, 0}, // BurnoutTakedown + {0xCE49B0DE, BurnoutGames, EU, 0}, // BurnoutTakedown + {0x381EE9EF, BurnoutGames, EU, 0}, // BurnoutTakedown E3 Demo + {0xD224D348, BurnoutGames, US, 0}, // BurnoutRevenge + {0x878E7A1D, BurnoutGames, JP, 0}, // BurnoutRevenge + {0xEEA60511, BurnoutGames, KO, 0}, // BurnoutRevenge + {0x7E83CC5B, BurnoutGames, EU, 0}, // BurnoutRevenge + {0x2CAC3DBC, BurnoutGames, EU, 0}, // BurnoutRevenge + {0x8C9576A1, BurnoutGames, US, 0}, // BurnoutDominator + {0xDDF76A98, BurnoutGames, JP, 0}, // BurnoutDominator + {0x8C9576B4, BurnoutGames, EU, 0}, // BurnoutDominator + {0x8C9C76B4, BurnoutGames, EU, 0}, // BurnoutDominator {0x4A0E5B3A, MidnightClub3, US, 0}, // dub {0xEBE1972D, MidnightClub3, EU, 0}, // dub {0x60A42FF5, MidnightClub3, US, 0}, // remix @@ -284,16 +287,16 @@ const CRC::Game CRC::m_games[] = {0x086D198E, Kunoichi, CH, 0}, {0x3B470BBD, Kunoichi, EU, 0}, {0x6BA65DD8, Kunoichi, KO, 0}, - {0XD3F182A3, Yakuza, EU, 0}, - {0x6F9F99F8, Yakuza, EU, 0}, - {0x388F687B, Yakuza, US, 0}, - {0xC1B91FC5, Yakuza, US, 0}, // Demo - {0xB7B3800A, Yakuza, JP, 0}, - {0xA60C2E65, Yakuza2, EU, 0}, - {0x800E3E5A, Yakuza2, EU, 0}, - {0x97E9C87E, Yakuza2, US, 0}, - {0xB1EBD841, Yakuza2, US, 0}, - {0xC6B95C48, Yakuza2, JP, 0}, + {0XD3F182A3, YakuzaGames, EU, 0}, // Yakuza + {0x6F9F99F8, YakuzaGames, EU, 0}, // Yakuza + {0x388F687B, YakuzaGames, US, 0}, // Yakuza + {0xC1B91FC5, YakuzaGames, US, 0}, // Yakuza Demo + {0xB7B3800A, YakuzaGames, JP, 0}, // Yakuza2 + {0xA60C2E65, YakuzaGames, EU, 0}, // Yakuza2 + {0x800E3E5A, YakuzaGames, EU, 0}, // Yakuza2 + {0x97E9C87E, YakuzaGames, US, 0}, // Yakuza2 + {0xB1EBD841, YakuzaGames, US, 0}, // Yakuza2 + {0xC6B95C48, YakuzaGames, JP, 0}, // Yakuza2 {0x9000252A, SkyGunner, JP, 0}, {0x93092623, SkyGunner, JP, 0}, {0xA9461CB2, SkyGunner, US, 0}, @@ -312,36 +315,33 @@ const CRC::Game CRC::m_games[] = {0x812C5A96, ShinOnimusha, EU, 0}, {0xFE44479E, ShinOnimusha, US, 0}, {0xFFDE85E9, ShinOnimusha, US, 0}, - {0xE21404E2, GetaWay, US, TextureInsideRt}, - {0xE8249852, GetaWay, JP, TextureInsideRt}, - {0x458485EF, GetaWay, EU, TextureInsideRt}, - {0x5DFBE144, GetaWay, EU, TextureInsideRt}, - {0xE78971DF, GetaWayBlackMonday, US, TextureInsideRt}, - {0x342D97FA, GetaWayBlackMonday, US, TextureInsideRt}, // Demo - {0xE8C0AD1A, GetaWayBlackMonday, JP, TextureInsideRt}, - {0x09C3DF79, GetaWayBlackMonday, EU, TextureInsideRt}, - {0x1130BF23, SakuraTaisen, CH, 0}, // cutie comment + {0xE21404E2, GetawayGames, US, TextureInsideRt}, // Getaway + {0xE8249852, GetawayGames, JP, TextureInsideRt}, // Getaway + {0x458485EF, GetawayGames, EU, TextureInsideRt}, // Getaway + {0x5DFBE144, GetawayGames, EU, TextureInsideRt}, // Getaway + {0xE78971DF, GetawayGames, US, TextureInsideRt}, // GetawayBlackMonday + {0x342D97FA, GetawayGames, US, TextureInsideRt}, // GetawayBlackMonday Demo + {0xE8C0AD1A, GetawayGames, JP, TextureInsideRt}, // GetawayBlackMonday + {0x09C3DF79, GetawayGames, EU, TextureInsideRt}, // GetawayBlackMonday + {0x1130BF23, SakuraTaisen, CH, 0}, {0x4FAE8B83, SakuraTaisen, KO, 0}, - {0xEF06DBD6, SakuraWarsSoLongMyLove, JP, 0}, // cutie comment - {0xDD41054D, SakuraWarsSoLongMyLove, US, 0}, // cutie comment + {0xEF06DBD6, SakuraWarsSoLongMyLove, JP, 0}, + {0xDD41054D, SakuraWarsSoLongMyLove, US, 0}, {0xC2E3A7A4, SakuraWarsSoLongMyLove, KO, 0}, - {0x4A4B623A, FightingBeautyWulong, JP, 0}, // cutie comment - {0x5AC7E79C, TouristTrophy, CH, 0}, // cutie comment - {0xFF9C0E93, TouristTrophy, US, 0}, - {0xCA9AA903, TouristTrophy, EU, 0}, + {0x4A4B623A, FightingBeautyWulong, JP, 0}, {0xAEDAEE99, GodHand, JP, 0}, {0x6FB69282, GodHand, US, 0}, {0x924C4AA6, GodHand, KO, 0}, {0xDE9722A5, GodHand, EU, 0}, {0x9637D496, KnightsOfTheTemple2, NoRegion, 0}, // // EU and JP versions have the same CRC - {0x4E811100, UltramanFightingEvolution, JP, 0}, // cutie comment - {0xF7F181C3, DeathByDegreesTekkenNinaWilliams, CH, 0}, // cutie comment + {0x4E811100, UltramanFightingEvolution, JP, 0}, + {0xF7F181C3, DeathByDegreesTekkenNinaWilliams, CH, 0}, {0xF088FA5B, DeathByDegreesTekkenNinaWilliams, KO, 0}, {0xE1D6F85E, DeathByDegreesTekkenNinaWilliams, US, 0}, {0x59683BB0, DeathByDegreesTekkenNinaWilliams, EU, 0}, {0x830B6FB1, TalesofSymphonia, JP, 0}, {0xFC0F8A5B, Simple2000Vol114, JP, 0}, - {0xBDD9BAAD, UrbanReign, US, 0}, // cutie comment + {0xBDD9BAAD, UrbanReign, US, 0}, {0x0418486E, UrbanReign, RU, 0}, {0xAE4BEBD3, UrbanReign, EU, 0}, {0x48AC09BC, SteambotChronicles, EU, 0}, diff --git a/pcsx2/GS/GSCrc.h b/pcsx2/GS/GSCrc.h index 828d53d5d6..a06223dbca 100644 --- a/pcsx2/GS/GSCrc.h +++ b/pcsx2/GS/GSCrc.h @@ -32,9 +32,7 @@ public: BeyondGoodAndEvil, BigMuthaTruckers, BrianLaraInternationalCricket, - BurnoutDominator, - BurnoutRevenge, - BurnoutTakedown, + BurnoutGames, Clannad, CrashBandicootWoC, DarkCloud, @@ -53,15 +51,11 @@ public: FIFA04, FIFA05, FightingBeautyWulong, - GetaWay, - GetaWayBlackMonday, + GetawayGames, GiTS, GodHand, GodOfWar, GodOfWar2, - GT3, - GT4, - GTConcept, HarleyDavidson, HarryPotterATCOS, HarryPotterATGOF, @@ -93,9 +87,9 @@ public: OneTwentyYenStories, Persona3, PiaCarroteYoukosoGPGakuenPrincess, + PolyphonyDigitalGames, ProjectSnowblind, Quake3Revolution, - RadiataStories, RatchetAndClank, RatchetAndClank2, RatchetAndClank3, @@ -120,7 +114,6 @@ public: SoTC, SoulReaver2, Spartan, - StarOcean3, SteambotChronicles, SSX3, SuperManReturns, @@ -133,17 +126,15 @@ public: TombRaiderAnniversary, TombRaiderLegend, TombRaiderUnderworld, + TriAceGames, TribesAerialAssault, TomoyoAfter, - TouristTrophy, UltramanFightingEvolution, UrbanReign, - ValkyrieProfile2, Whiplash, WildArms4, XenosagaE3, - Yakuza, - Yakuza2, + YakuzaGames, ZettaiZetsumeiToshi2, TitleCount, }; diff --git a/pcsx2/GS/Renderers/HW/GSHwHack.cpp b/pcsx2/GS/Renderers/HW/GSHwHack.cpp index 765e39645f..11dec7f69c 100644 --- a/pcsx2/GS/Renderers/HW/GSHwHack.cpp +++ b/pcsx2/GS/Renderers/HW/GSHwHack.cpp @@ -20,9 +20,9 @@ bool s_nativeres; static CRCHackLevel s_crc_hack_level = CRCHackLevel::Full; // hacks -#define Dx_and_OGL (s_crc_hack_level >= CRCHackLevel::Partial) -#define Dx_only (s_crc_hack_level >= CRCHackLevel::Full) -#define Aggressive (s_crc_hack_level >= CRCHackLevel::Aggressive) +#define CRC_Partial (s_crc_hack_level >= CRCHackLevel::Partial) +#define CRC_Full (s_crc_hack_level >= CRCHackLevel::Full) +#define CRC_Aggressive (s_crc_hack_level >= CRCHackLevel::Aggressive) CRC::Region g_crc_region = CRC::NoRegion; @@ -53,7 +53,7 @@ bool GSC_DBZBT3(const GSFrameInfo& fi, int& skip) { if (skip == 0) { - if ((Aggressive || !s_nativeres) && fi.TME && (fi.FBP == 0x03400 || fi.FBP == 0x02e00) && fi.FPSM == fi.TPSM && fi.TBP0 == 0x03f00 && fi.TPSM == PSM_PSMCT32) + if ((CRC_Aggressive || !s_nativeres) && fi.TME && (fi.FBP == 0x03400 || fi.FBP == 0x02e00) && fi.FPSM == fi.TPSM && fi.TBP0 == 0x03f00 && fi.TPSM == PSM_PSMCT32) { // Ghosting/Blur effect. Upscaling issue. // Can be fixed with TC X,Y offsets. @@ -71,13 +71,13 @@ bool GSC_DeathByDegreesTekkenNinaWilliams(const GSFrameInfo& fi, int& skip) // See https://forums.pcsx2.net/Thread-GSDX-Texture-Cache-Bug-Report-Death-By-Degrees-SLUS-20934-NTSC if (skip == 0) { - if ((Aggressive || !s_nativeres) && fi.TME && fi.FBP == 0 && fi.TBP0 == 0x34a0 && fi.TPSM == PSM_PSMCT32) + if ((CRC_Aggressive || !s_nativeres) && fi.TME && fi.FBP == 0 && fi.TBP0 == 0x34a0 && fi.TPSM == PSM_PSMCT32) { // Don't enable hack on native res if crc is below aggressive. // Upscaling issue similar to Tekken 5. skip = 1; // Animation pane } - else if (Aggressive && fi.FBP == 0x3500 && fi.TPSM == PSM_PSMT8 && fi.FBMSK == 0xFFFF00FF) + else if (CRC_Aggressive && fi.FBP == 0x3500 && fi.TPSM == PSM_PSMT8 && fi.FBMSK == 0xFFFF00FF) { // Needs to be further tested so put it on Aggressive for now, likely channel shuffle. skip = 4; // Underwater white fog @@ -85,7 +85,7 @@ bool GSC_DeathByDegreesTekkenNinaWilliams(const GSFrameInfo& fi, int& skip) } else { - if ((Aggressive || !s_nativeres) && fi.TME && (fi.FBP | fi.TBP0 | fi.FPSM | fi.TPSM) && fi.FBMSK == 0x00FFFFFF) + if ((CRC_Aggressive || !s_nativeres) && fi.TME && (fi.FBP | fi.TBP0 | fi.FPSM | fi.TPSM) && fi.FBMSK == 0x00FFFFFF) { // Needs to be further tested so assume it's related with the upscaling hack. skip = 1; // Animation speed @@ -113,12 +113,12 @@ bool GSC_GodOfWar2(const GSFrameInfo& fi, int& skip) { if (skip == 0) { - if (Aggressive && fi.TME && fi.TPSM == PSM_PSMCT24 && fi.FBP == 0x1300 && (fi.TBP0 == 0x0F00 || fi.TBP0 == 0x1300 || fi.TBP0 == 0x2b00)) // || fi.FBP == 0x0100 + if (CRC_Aggressive && fi.TME && fi.TPSM == PSM_PSMCT24 && fi.FBP == 0x1300 && (fi.TBP0 == 0x0F00 || fi.TBP0 == 0x1300 || fi.TBP0 == 0x2b00)) // || fi.FBP == 0x0100 { // Ghosting when upscaling, HPO helps but isn't perfect. skip = 1; // global haze/halo } - else if ((Aggressive || !s_nativeres) && fi.TME && fi.TPSM == PSM_PSMCT24 && (fi.FBP == 0x0100 || fi.FBP == 0x2100) && (fi.TBP0 == 0x2b00 || fi.TBP0 == 0x2e80 || fi.TBP0 == 0x3100)) // 480P 2e80, interlaced 3100 + else if ((CRC_Aggressive || !s_nativeres) && fi.TME && fi.TPSM == PSM_PSMCT24 && (fi.FBP == 0x0100 || fi.FBP == 0x2100) && (fi.TBP0 == 0x2b00 || fi.TBP0 == 0x2e80 || fi.TBP0 == 0x3100)) // 480P 2e80, interlaced 3100 { // Upscaling issue. // Don't enable hack on native res if crc is below aggressive. @@ -227,7 +227,7 @@ bool GSC_IkkiTousen(const GSFrameInfo& fi, int& skip) { if (skip == 0) { - if ((Aggressive || !s_nativeres) && fi.TME && fi.FBP == 0x00700 && fi.FPSM == PSM_PSMZ24 && fi.TBP0 == 0x01180 && fi.TPSM == PSM_PSMZ24) + if ((CRC_Aggressive || !s_nativeres) && fi.TME && fi.FBP == 0x00700 && fi.FPSM == PSM_PSMZ24 && fi.TBP0 == 0x01180 && fi.TPSM == PSM_PSMZ24) { // Might not be needed if any of the upscaling hacks fix the issues, needs to be further tested. // Don't enable hack on native res if crc is below aggressive. @@ -242,7 +242,7 @@ bool GSC_EvangelionJo(const GSFrameInfo& fi, int& skip) { if (skip == 0) { - if ((Aggressive || !s_nativeres) && fi.TME && fi.TBP0 == 0x2BC0 || (fi.FBP == 0 || fi.FBP == 0x1180) && (fi.FPSM | fi.TPSM) == 0) + if ((CRC_Aggressive || !s_nativeres) && fi.TME && fi.TBP0 == 0x2BC0 || (fi.FBP == 0 || fi.FBP == 0x1180) && (fi.FPSM | fi.TPSM) == 0) { // Don't enable hack on native res if crc is below aggressive. // Removes blur/glow. Fixes ghosting when resolution is upscaled. @@ -257,7 +257,7 @@ bool GSC_Oneechanbara2Special(const GSFrameInfo& fi, int& skip) { if (skip == 0) { - if ((Aggressive || !s_nativeres) && fi.TPSM == PSM_PSMCT24 && fi.TME && fi.FBP == 0x01180) + if ((CRC_Aggressive || !s_nativeres) && fi.TPSM == PSM_PSMCT24 && fi.TME && fi.FBP == 0x01180) { // Don't enable hack on native res if crc is below aggressive. // Ghosting upscaling issue, bottom and right red lines also by upscaling. @@ -343,7 +343,7 @@ bool GSC_Tekken5(const GSFrameInfo& fi, int& skip) { if (skip == 0) { - if ((Aggressive || !s_nativeres) && fi.TME && (fi.FBP == 0x02d60 || fi.FBP == 0x02d80 || fi.FBP == 0x02ea0 || fi.FBP == 0x03620 || fi.FBP == 0x03640) && fi.FPSM == fi.TPSM && fi.TBP0 == 0x00000 && fi.TPSM == PSM_PSMCT32) + if ((CRC_Aggressive || !s_nativeres) && fi.TME && (fi.FBP == 0x02d60 || fi.FBP == 0x02d80 || fi.FBP == 0x02ea0 || fi.FBP == 0x03620 || fi.FBP == 0x03640) && fi.FPSM == fi.TPSM && fi.TBP0 == 0x00000 && fi.TPSM == PSM_PSMCT32) { // Don't enable hack on native res if crc is below aggressive. // Fixes/removes ghosting/blur effect and white lines appearing in stages: Moonfit Wilderness, Acid Rain - caused by upscaling. @@ -571,7 +571,7 @@ bool GSC_FightingBeautyWulong(const GSFrameInfo& fi, int& skip) { if (skip == 0) { - if ((Aggressive || !s_nativeres) && fi.TME && (fi.TBP0 == 0x0700 || fi.TBP0 == 0x0a80) && (fi.TPSM == PSM_PSMCT32 || fi.TPSM == PSM_PSMCT24)) + if ((CRC_Aggressive || !s_nativeres) && fi.TME && (fi.TBP0 == 0x0700 || fi.TBP0 == 0x0a80) && (fi.TPSM == PSM_PSMCT32 || fi.TPSM == PSM_PSMCT24)) { // Don't enable hack on native res if crc is below aggressive. // removes glow/blur which cause ghosting and other sprite issues similar to Tekken 5 @@ -616,7 +616,7 @@ bool GSC_UltramanFightingEvolution(const GSFrameInfo& fi, int& skip) { if (skip == 0) { - if ((Aggressive || !s_nativeres) && fi.TME && fi.FBP == 0x2a00 && fi.FPSM == PSM_PSMZ24 && fi.TBP0 == 0x1c00 && fi.TPSM == PSM_PSMZ24) + if ((CRC_Aggressive || !s_nativeres) && fi.TME && fi.FBP == 0x2a00 && fi.FPSM == PSM_PSMZ24 && fi.TBP0 == 0x1c00 && fi.TPSM == PSM_PSMZ24) { // Don't enable hack on native res if crc is below aggressive. skip = 5; // blur @@ -647,7 +647,7 @@ bool GSC_Simple2000Vol114(const GSFrameInfo& fi, int& skip) { if (skip == 0) { - if ((Aggressive || !s_nativeres) && fi.TME == 0 && (fi.FBP == 0x1500) && (fi.TBP0 == 0x2c97 || fi.TBP0 == 0x2ace || fi.TBP0 == 0x03d0 || fi.TBP0 == 0x2448) && (fi.FBMSK == 0x0000)) + if ((CRC_Aggressive || !s_nativeres) && fi.TME == 0 && (fi.FBP == 0x1500) && (fi.TBP0 == 0x2c97 || fi.TBP0 == 0x2ace || fi.TBP0 == 0x03d0 || fi.TBP0 == 0x2448) && (fi.FBMSK == 0x0000)) { // Don't enable hack on native res if crc is below aggressive. // Upscaling issues, removes glow/blur effect which fixes ghosting. @@ -704,7 +704,7 @@ bool GSC_SteambotChronicles(const GSFrameInfo& fi, int& skip) { skip = 100; // deletes most others(too high deletes the buggy sea completely;c, too low causes glitches to be visible) } - else if (Aggressive && fi.FBP != 0) // Aggressive CRC + else if (CRC_Aggressive && fi.FBP != 0) { skip = 19; // "speedhack", makes the game very light, vaporized water can disappear when not looked at directly, possibly some interface still, other value to try: 6 breaks menu background, possibly nothing(?) during gameplay, but it's slower, hence not much of a speedhack anymore } @@ -718,7 +718,7 @@ bool GSC_YakuzaGames(const GSFrameInfo& fi, int& skip) { if (skip == 0) { - if ((Aggressive || !s_nativeres) && !fi.TME && (fi.FBP == 0x1c20 || fi.FBP == 0x1e20 || fi.FBP == 0x1620) && (fi.TBP0 == 0xe00 || fi.TBP0 == 0x1000 || fi.TBP0 == 0x800) && fi.TPSM == PSM_PSMZ24 && fi.FPSM == PSM_PSMCT32 + if ((CRC_Aggressive || !s_nativeres) && !fi.TME && (fi.FBP == 0x1c20 || fi.FBP == 0x1e20 || fi.FBP == 0x1620) && (fi.TBP0 == 0xe00 || fi.TBP0 == 0x1000 || fi.TBP0 == 0x800) && fi.TPSM == PSM_PSMZ24 && fi.FPSM == PSM_PSMCT32 /*&& fi.FBMSK == 0xffffff && fi.TZTST && !GSUtil::HasSharedBits(fi.FBP, fi.FPSM, fi.TBP0, fi.TPSM)*/) { // Don't enable hack on native res if crc is below aggressive. @@ -734,7 +734,7 @@ bool GSC_YakuzaGames(const GSFrameInfo& fi, int& skip) // Correctly emulated on OpenGL but can be used as potential speed hack //////////////////////////////////////////////////////////////////////////////// -bool GSC_GetaWayGames(const GSFrameInfo& fi, int& skip) +bool GSC_GetawayGames(const GSFrameInfo& fi, int& skip) { if (skip == 0) { @@ -953,9 +953,8 @@ void GSState::SetupCrcHack() memset(lut, 0, sizeof(lut)); - if (Dx_and_OGL) + if (CRC_Partial) { - lut[CRC::CrashBandicootWoC] = GSC_CrashBandicootWoC; lut[CRC::GodHand] = GSC_GodHand; lut[CRC::KnightsOfTheTemple2] = GSC_KnightsOfTheTemple2; lut[CRC::Kunoichi] = GSC_Kunoichi; @@ -966,7 +965,6 @@ void GSState::SetupCrcHack() lut[CRC::SakuraWarsSoLongMyLove] = GSC_SakuraWarsSoLongMyLove; lut[CRC::ShadowofRome] = GSC_ShadowofRome; lut[CRC::Simple2000Vol114] = GSC_Simple2000Vol114; - lut[CRC::Spartan] = GSC_Spartan; lut[CRC::SFEX3] = GSC_SFEX3; lut[CRC::TalesOfLegendia] = GSC_TalesOfLegendia; lut[CRC::TalesofSymphonia] = GSC_TalesofSymphonia; @@ -977,14 +975,14 @@ void GSState::SetupCrcHack() lut[CRC::ZettaiZetsumeiToshi2] = GSC_ZettaiZetsumeiToshi2; // Channel Effect + lut[CRC::CrashBandicootWoC] = GSC_CrashBandicootWoC; lut[CRC::GiTS] = GSC_GiTS; lut[CRC::SkyGunner] = GSC_SkyGunner; // Maybe not a channel effect + lut[CRC::Spartan] = GSC_Spartan; lut[CRC::SteambotChronicles] = GSC_SteambotChronicles; // Depth Issue - lut[CRC::BurnoutDominator] = GSC_BurnoutGames; - lut[CRC::BurnoutRevenge] = GSC_BurnoutGames; - lut[CRC::BurnoutTakedown] = GSC_BurnoutGames; + lut[CRC::BurnoutGames] = GSC_BurnoutGames; // Half Screen bottom issue lut[CRC::Tekken5] = GSC_Tekken5; @@ -1001,26 +999,22 @@ void GSState::SetupCrcHack() lut[CRC::IkkiTousen] = GSC_IkkiTousen; lut[CRC::Oneechanbara2Special] = GSC_Oneechanbara2Special; lut[CRC::UltramanFightingEvolution] = GSC_UltramanFightingEvolution; - lut[CRC::Yakuza] = GSC_YakuzaGames; - lut[CRC::Yakuza2] = GSC_YakuzaGames; + lut[CRC::YakuzaGames] = GSC_YakuzaGames; } // Hacks that were fixed on OpenGL - if (Dx_only) + if (CRC_Full) { // Accurate Blending - lut[CRC::GetaWay] = GSC_GetaWayGames; // Blending High - lut[CRC::GetaWayBlackMonday] = GSC_GetaWayGames; // Blending High + lut[CRC::GetawayGames] = GSC_GetawayGames; // Blending High - // These games emulate a stencil buffer with the alpha channel of the RT (too slow to move to Aggressive) + // These games emulate a stencil buffer with the alpha channel of the RT (too slow to move to CRC_Aggressive) // Needs at least Basic Blending, // see https://github.com/PCSX2/pcsx2/pull/2921 - lut[CRC::RadiataStories] = GSC_TriAceGames; - lut[CRC::StarOcean3] = GSC_TriAceGames; - lut[CRC::ValkyrieProfile2] = GSC_TriAceGames; + lut[CRC::TriAceGames] = GSC_TriAceGames; } - if (Aggressive) + if (CRC_Aggressive) { lut[CRC::AceCombat4] = GSC_AceCombat4; lut[CRC::FFX2] = GSC_FFXGames; @@ -1039,9 +1033,9 @@ void GSState::SetupCrcHack() g_crc_region = m_game.region; } -#undef Dx_and_OGL -#undef Dx_only -#undef Aggressive +#undef CRC_Partial +#undef CRC_Full +#undef CRC_Aggressive bool GSState::IsBadFrame() { diff --git a/pcsx2/GS/Renderers/HW/GSRendererHW.cpp b/pcsx2/GS/Renderers/HW/GSRendererHW.cpp index ea556f9786..cc6caaf0d4 100644 --- a/pcsx2/GS/Renderers/HW/GSRendererHW.cpp +++ b/pcsx2/GS/Renderers/HW/GSRendererHW.cpp @@ -1829,13 +1829,9 @@ GSRendererHW::Hacks::Hacks() m_oi_list.push_back(HackEntry(CRC::Jak2, CRC::RegionCount, &GSRendererHW::OI_JakGames)); m_oi_list.push_back(HackEntry(CRC::Jak3, CRC::RegionCount, &GSRendererHW::OI_JakGames)); m_oi_list.push_back(HackEntry(CRC::JakX, CRC::RegionCount, &GSRendererHW::OI_JakGames)); - m_oi_list.push_back(HackEntry(CRC::BurnoutTakedown, CRC::RegionCount, &GSRendererHW::OI_BurnoutGames)); - m_oi_list.push_back(HackEntry(CRC::BurnoutRevenge, CRC::RegionCount, &GSRendererHW::OI_BurnoutGames)); - m_oi_list.push_back(HackEntry(CRC::BurnoutDominator, CRC::RegionCount, &GSRendererHW::OI_BurnoutGames)); + m_oi_list.push_back(HackEntry(CRC::BurnoutGames, CRC::RegionCount, &GSRendererHW::OI_BurnoutGames)); - m_oo_list.push_back(HackEntry(CRC::BurnoutTakedown, CRC::RegionCount, &GSRendererHW::OO_BurnoutGames)); - m_oo_list.push_back(HackEntry(CRC::BurnoutRevenge, CRC::RegionCount, &GSRendererHW::OO_BurnoutGames)); - m_oo_list.push_back(HackEntry(CRC::BurnoutDominator, CRC::RegionCount, &GSRendererHW::OO_BurnoutGames)); + m_oo_list.push_back(HackEntry(CRC::BurnoutGames, CRC::RegionCount, &GSRendererHW::OO_BurnoutGames)); m_cu_list.push_back(HackEntry(CRC::TalesOfAbyss, CRC::RegionCount, &GSRendererHW::CU_TalesOfAbyss)); } diff --git a/pcsx2/GS/Renderers/HW/GSRendererNew.cpp b/pcsx2/GS/Renderers/HW/GSRendererNew.cpp index b4fe71674c..2fcd41d801 100644 --- a/pcsx2/GS/Renderers/HW/GSRendererNew.cpp +++ b/pcsx2/GS/Renderers/HW/GSRendererNew.cpp @@ -360,7 +360,7 @@ void GSRendererNew::EmulateChannelShuffle(const GSTextureCache::Source* tex) // First let's check we really have a channel shuffle effect if (m_channel_shuffle) { - if (m_game.title == CRC::GT4 || m_game.title == CRC::GT3 || m_game.title == CRC::GTConcept || m_game.title == CRC::TouristTrophy) + if (m_game.title == CRC::PolyphonyDigitalGames) { GL_INS("Gran Turismo RGB Channel"); m_conf.ps.channel = ChannelFetch_RGB;