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
This commit is contained in:
lightningterror 2022-02-06 15:49:13 +01:00
parent 2f06ed2af8
commit 2aaabdd2ea
5 changed files with 140 additions and 159 deletions

View File

@ -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},

View File

@ -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,
};

View File

@ -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()
{

View File

@ -1829,13 +1829,9 @@ GSRendererHW::Hacks::Hacks()
m_oi_list.push_back(HackEntry<OI_Ptr>(CRC::Jak2, CRC::RegionCount, &GSRendererHW::OI_JakGames));
m_oi_list.push_back(HackEntry<OI_Ptr>(CRC::Jak3, CRC::RegionCount, &GSRendererHW::OI_JakGames));
m_oi_list.push_back(HackEntry<OI_Ptr>(CRC::JakX, CRC::RegionCount, &GSRendererHW::OI_JakGames));
m_oi_list.push_back(HackEntry<OI_Ptr>(CRC::BurnoutTakedown, CRC::RegionCount, &GSRendererHW::OI_BurnoutGames));
m_oi_list.push_back(HackEntry<OI_Ptr>(CRC::BurnoutRevenge, CRC::RegionCount, &GSRendererHW::OI_BurnoutGames));
m_oi_list.push_back(HackEntry<OI_Ptr>(CRC::BurnoutDominator, CRC::RegionCount, &GSRendererHW::OI_BurnoutGames));
m_oi_list.push_back(HackEntry<OI_Ptr>(CRC::BurnoutGames, CRC::RegionCount, &GSRendererHW::OI_BurnoutGames));
m_oo_list.push_back(HackEntry<OO_Ptr>(CRC::BurnoutTakedown, CRC::RegionCount, &GSRendererHW::OO_BurnoutGames));
m_oo_list.push_back(HackEntry<OO_Ptr>(CRC::BurnoutRevenge, CRC::RegionCount, &GSRendererHW::OO_BurnoutGames));
m_oo_list.push_back(HackEntry<OO_Ptr>(CRC::BurnoutDominator, CRC::RegionCount, &GSRendererHW::OO_BurnoutGames));
m_oo_list.push_back(HackEntry<OO_Ptr>(CRC::BurnoutGames, CRC::RegionCount, &GSRendererHW::OO_BurnoutGames));
m_cu_list.push_back(HackEntry<CU_Ptr>(CRC::TalesOfAbyss, CRC::RegionCount, &GSRendererHW::CU_TalesOfAbyss));
}

View File

@ -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;