gsdx: Don't set CRC function pointer when disabled

Less costly than an extra check for each draw calls
This commit is contained in:
Gregory Hainaut 2015-06-14 10:19:15 +02:00
parent 1699289162
commit f765a195e2
2 changed files with 121 additions and 119 deletions

View File

@ -98,7 +98,7 @@ void GSRendererHW::SetGameCRC(uint32 crc, int options)
bool GSRendererHW::CanUpscale() bool GSRendererHW::CanUpscale()
{ {
if(m_crc_hack_level && m_hacks.m_cu && !(this->*m_hacks.m_cu)()) if(m_hacks.m_cu && !(this->*m_hacks.m_cu)())
{ {
return false; return false;
} }
@ -447,7 +447,7 @@ void GSRendererHW::Draw()
#endif #endif
} }
if(m_crc_hack_level && m_hacks.m_oi && !(this->*m_hacks.m_oi)(rt->m_texture, ds->m_texture, tex)) if(m_hacks.m_oi && !(this->*m_hacks.m_oi)(rt->m_texture, ds->m_texture, tex))
{ {
s_n += 1; // keep counter sync s_n += 1; // keep counter sync
GL_POP(); GL_POP();
@ -542,7 +542,7 @@ void GSRendererHW::Draw()
// //
if(m_crc_hack_level && m_hacks.m_oo) if(m_hacks.m_oo)
{ {
(this->*m_hacks.m_oo)(); (this->*m_hacks.m_oo)();
} }

View File

@ -2306,7 +2306,7 @@ void GSState::SetGameCRC(uint32 crc, int options)
{ {
m_crc = crc; m_crc = crc;
m_options = options; m_options = options;
m_game = CRC::Lookup(m_crc_hack_level < 2 ? 0 : crc); m_game = CRC::Lookup(m_crc_hack_level ? crc : 0);
} }
// //
@ -5421,121 +5421,123 @@ bool GSState::IsBadFrame(int& skip, int UserHacks_SkipDraw)
memset(map, 0, sizeof(map)); memset(map, 0, sizeof(map));
map[CRC::Okami] = GSC_Okami; if (s_crc_hack_level > 1) {
map[CRC::MetalGearSolid3] = GSC_MetalGearSolid3; map[CRC::Okami] = GSC_Okami;
map[CRC::DBZBT2] = GSC_DBZBT2; map[CRC::MetalGearSolid3] = GSC_MetalGearSolid3;
map[CRC::DBZBT3] = GSC_DBZBT3; map[CRC::DBZBT2] = GSC_DBZBT2;
map[CRC::SFEX3] = GSC_SFEX3; map[CRC::DBZBT3] = GSC_DBZBT3;
map[CRC::Bully] = GSC_Bully; map[CRC::SFEX3] = GSC_SFEX3;
map[CRC::BullyCC] = GSC_BullyCC; map[CRC::Bully] = GSC_Bully;
map[CRC::SoTC] = GSC_SoTC; map[CRC::BullyCC] = GSC_BullyCC;
map[CRC::OnePieceGrandAdventure] = GSC_OnePieceGrandAdventure; map[CRC::SoTC] = GSC_SoTC;
map[CRC::OnePieceGrandBattle] = GSC_OnePieceGrandBattle; map[CRC::OnePieceGrandAdventure] = GSC_OnePieceGrandAdventure;
map[CRC::ICO] = GSC_ICO; map[CRC::OnePieceGrandBattle] = GSC_OnePieceGrandBattle;
map[CRC::GT4] = GSC_GT4; map[CRC::ICO] = GSC_ICO;
map[CRC::GT3] = GSC_GT3; map[CRC::GT4] = GSC_GT4;
map[CRC::GTConcept] = GSC_GTConcept; map[CRC::GT3] = GSC_GT3;
map[CRC::WildArms4] = GSC_WildArms4; map[CRC::GTConcept] = GSC_GTConcept;
map[CRC::WildArms5] = GSC_WildArms5; map[CRC::WildArms4] = GSC_WildArms4;
map[CRC::Manhunt2] = GSC_Manhunt2; map[CRC::WildArms5] = GSC_WildArms5;
map[CRC::CrashBandicootWoC] = GSC_CrashBandicootWoC; map[CRC::Manhunt2] = GSC_Manhunt2;
map[CRC::ResidentEvil4] = GSC_ResidentEvil4; map[CRC::CrashBandicootWoC] = GSC_CrashBandicootWoC;
map[CRC::Spartan] = GSC_Spartan; map[CRC::ResidentEvil4] = GSC_ResidentEvil4;
map[CRC::AceCombat4] = GSC_AceCombat4; map[CRC::Spartan] = GSC_Spartan;
map[CRC::Drakengard2] = GSC_Drakengard2; map[CRC::AceCombat4] = GSC_AceCombat4;
map[CRC::Tekken5] = GSC_Tekken5; map[CRC::Drakengard2] = GSC_Drakengard2;
map[CRC::IkkiTousen] = GSC_IkkiTousen; map[CRC::Tekken5] = GSC_Tekken5;
map[CRC::GodOfWar] = GSC_GodOfWar; map[CRC::IkkiTousen] = GSC_IkkiTousen;
map[CRC::GodOfWar2] = GSC_GodOfWar2; map[CRC::GodOfWar] = GSC_GodOfWar;
map[CRC::GiTS] = GSC_GiTS; map[CRC::GodOfWar2] = GSC_GodOfWar2;
map[CRC::Onimusha3] = GSC_Onimusha3; map[CRC::GiTS] = GSC_GiTS;
map[CRC::TalesOfAbyss] = GSC_TalesOfAbyss; map[CRC::Onimusha3] = GSC_Onimusha3;
map[CRC::SonicUnleashed] = GSC_SonicUnleashed; map[CRC::TalesOfAbyss] = GSC_TalesOfAbyss;
map[CRC::SimpsonsGame] = GSC_SimpsonsGame; map[CRC::SonicUnleashed] = GSC_SonicUnleashed;
map[CRC::Genji] = GSC_Genji; map[CRC::SimpsonsGame] = GSC_SimpsonsGame;
map[CRC::RadiataStories] = GSC_RadiataStories; map[CRC::Genji] = GSC_Genji;
map[CRC::HauntingGround] = GSC_HauntingGround; map[CRC::RadiataStories] = GSC_RadiataStories;
map[CRC::EvangelionJo] = GSC_EvangelionJo; map[CRC::HauntingGround] = GSC_HauntingGround;
map[CRC::SuikodenTactics] = GSC_SuikodenTactics; map[CRC::EvangelionJo] = GSC_EvangelionJo;
map[CRC::CaptainTsubasa] = GSC_CaptainTsubasa; map[CRC::SuikodenTactics] = GSC_SuikodenTactics;
map[CRC::Oneechanbara2Special] = GSC_Oneechanbara2Special; map[CRC::CaptainTsubasa] = GSC_CaptainTsubasa;
map[CRC::NarutimateAccel] = GSC_NarutimateAccel; map[CRC::Oneechanbara2Special] = GSC_Oneechanbara2Special;
map[CRC::Naruto] = GSC_Naruto; map[CRC::NarutimateAccel] = GSC_NarutimateAccel;
map[CRC::EternalPoison] = GSC_EternalPoison; map[CRC::Naruto] = GSC_Naruto;
map[CRC::LegoBatman] = GSC_LegoBatman; map[CRC::EternalPoison] = GSC_EternalPoison;
map[CRC::SakuraTaisen] = GSC_SakuraTaisen; map[CRC::LegoBatman] = GSC_LegoBatman;
map[CRC::TenchuWoH] = GSC_Tenchu; map[CRC::SakuraTaisen] = GSC_SakuraTaisen;
map[CRC::TenchuFS] = GSC_Tenchu; map[CRC::TenchuWoH] = GSC_Tenchu;
map[CRC::Sly3] = GSC_Sly3; map[CRC::TenchuFS] = GSC_Tenchu;
map[CRC::Sly2] = GSC_Sly2; map[CRC::Sly3] = GSC_Sly3;
map[CRC::ShadowofRome] = GSC_ShadowofRome; map[CRC::Sly2] = GSC_Sly2;
map[CRC::FFXII] = GSC_FFXII; map[CRC::ShadowofRome] = GSC_ShadowofRome;
map[CRC::FFX2] = GSC_FFX2; map[CRC::FFXII] = GSC_FFXII;
map[CRC::FFX] = GSC_FFX; map[CRC::FFX2] = GSC_FFX2;
map[CRC::ArctheLad] = GSC_ArctheLad; map[CRC::FFX] = GSC_FFX;
map[CRC::DemonStone] = GSC_DemonStone; map[CRC::ArctheLad] = GSC_ArctheLad;
map[CRC::BigMuthaTruckers] = GSC_BigMuthaTruckers; map[CRC::DemonStone] = GSC_DemonStone;
map[CRC::TimeSplitters2] = GSC_TimeSplitters2; map[CRC::BigMuthaTruckers] = GSC_BigMuthaTruckers;
map[CRC::ReZ] = GSC_ReZ; map[CRC::TimeSplitters2] = GSC_TimeSplitters2;
map[CRC::LordOfTheRingsTwoTowers] = GSC_LordOfTheRingsTwoTowers; map[CRC::ReZ] = GSC_ReZ;
map[CRC::LordOfTheRingsThirdAge] = GSC_LordOfTheRingsThirdAge; map[CRC::LordOfTheRingsTwoTowers] = GSC_LordOfTheRingsTwoTowers;
map[CRC::RedDeadRevolver] = GSC_RedDeadRevolver; map[CRC::LordOfTheRingsThirdAge] = GSC_LordOfTheRingsThirdAge;
map[CRC::HeavyMetalThunder] = GSC_HeavyMetalThunder; map[CRC::RedDeadRevolver] = GSC_RedDeadRevolver;
map[CRC::BleachBladeBattlers] = GSC_BleachBladeBattlers; map[CRC::HeavyMetalThunder] = GSC_HeavyMetalThunder;
map[CRC::CrashNburn] = GSC_CrashNburn; map[CRC::BleachBladeBattlers] = GSC_BleachBladeBattlers;
map[CRC::TombRaiderUnderworld] = GSC_TombRaiderUnderWorld; map[CRC::CrashNburn] = GSC_CrashNburn;
map[CRC::TombRaiderAnniversary] = GSC_TombRaider; map[CRC::TombRaiderUnderworld] = GSC_TombRaiderUnderWorld;
map[CRC::TombRaiderLegend] = GSC_TombRaiderLegend; map[CRC::TombRaiderAnniversary] = GSC_TombRaider;
map[CRC::SSX3] = GSC_SSX3; map[CRC::TombRaiderLegend] = GSC_TombRaiderLegend;
map[CRC::Black] = GSC_Black; map[CRC::SSX3] = GSC_SSX3;
map[CRC::FFVIIDoC] = GSC_FFVIIDoC; map[CRC::Black] = GSC_Black;
map[CRC::StarWarsForceUnleashed] = GSC_StarWarsForceUnleashed; map[CRC::FFVIIDoC] = GSC_FFVIIDoC;
map[CRC::StarWarsBattlefront] = GSC_StarWarsBattlefront; map[CRC::StarWarsForceUnleashed] = GSC_StarWarsForceUnleashed;
map[CRC::StarWarsBattlefront2] = GSC_StarWarsBattlefront2; map[CRC::StarWarsBattlefront] = GSC_StarWarsBattlefront;
map[CRC::BlackHawkDown] = GSC_BlackHawkDown; map[CRC::StarWarsBattlefront2] = GSC_StarWarsBattlefront2;
map[CRC::DevilMayCry3] = GSC_DevilMayCry3; map[CRC::BlackHawkDown] = GSC_BlackHawkDown;
map[CRC::BurnoutTakedown] = GSC_Burnout; map[CRC::DevilMayCry3] = GSC_DevilMayCry3;
map[CRC::BurnoutRevenge] = GSC_Burnout; map[CRC::BurnoutTakedown] = GSC_Burnout;
map[CRC::BurnoutDominator] = GSC_Burnout; map[CRC::BurnoutRevenge] = GSC_Burnout;
map[CRC::MidnightClub3] = GSC_MidnightClub3; map[CRC::BurnoutDominator] = GSC_Burnout;
map[CRC::SpyroNewBeginning] = GSC_SpyroNewBeginning; map[CRC::MidnightClub3] = GSC_MidnightClub3;
map[CRC::SpyroEternalNight] = GSC_SpyroEternalNight; map[CRC::SpyroNewBeginning] = GSC_SpyroNewBeginning;
map[CRC::TalesOfLegendia] = GSC_TalesOfLegendia; map[CRC::SpyroEternalNight] = GSC_SpyroEternalNight;
map[CRC::NanoBreaker] = GSC_NanoBreaker; map[CRC::TalesOfLegendia] = GSC_TalesOfLegendia;
map[CRC::Kunoichi] = GSC_Kunoichi; map[CRC::NanoBreaker] = GSC_NanoBreaker;
map[CRC::Yakuza] = GSC_Yakuza; map[CRC::Kunoichi] = GSC_Kunoichi;
map[CRC::Yakuza2] = GSC_Yakuza2; map[CRC::Yakuza] = GSC_Yakuza;
map[CRC::SkyGunner] = GSC_SkyGunner; map[CRC::Yakuza2] = GSC_Yakuza2;
map[CRC::JamesBondEverythingOrNothing] = GSC_JamesBondEverythingOrNothing; map[CRC::SkyGunner] = GSC_SkyGunner;
map[CRC::ZettaiZetsumeiToshi2] = GSC_ZettaiZetsumeiToshi2; map[CRC::JamesBondEverythingOrNothing] = GSC_JamesBondEverythingOrNothing;
map[CRC::ShinOnimusha] = GSC_ShinOnimusha; map[CRC::ZettaiZetsumeiToshi2] = GSC_ZettaiZetsumeiToshi2;
map[CRC::XE3] = GSC_XE3; map[CRC::ShinOnimusha] = GSC_ShinOnimusha;
map[CRC::GetaWay] = GSC_GetaWay; map[CRC::XE3] = GSC_XE3;
map[CRC::GetaWayBlackMonday] = GSC_GetaWay; map[CRC::GetaWay] = GSC_GetaWay;
map[CRC::SakuraWarsSoLongMyLove] = GSC_SakuraWarsSoLongMyLove; map[CRC::GetaWayBlackMonday] = GSC_GetaWay;
map[CRC::FightingBeautyWulong] = GSC_FightingBeautyWulong; map[CRC::SakuraWarsSoLongMyLove] = GSC_SakuraWarsSoLongMyLove;
map[CRC::TouristTrophy] = GSC_TouristTrophy; map[CRC::FightingBeautyWulong] = GSC_FightingBeautyWulong;
map[CRC::GTASanAndreas] = GSC_GTASanAndreas; map[CRC::TouristTrophy] = GSC_TouristTrophy;
map[CRC::FrontMission5] = GSC_FrontMission5; map[CRC::GTASanAndreas] = GSC_GTASanAndreas;
map[CRC::GodHand] = GSC_GodHand; map[CRC::FrontMission5] = GSC_FrontMission5;
map[CRC::KnightsOfTheTemple2] = GSC_KnightsOfTheTemple2; map[CRC::GodHand] = GSC_GodHand;
map[CRC::UltramanFightingEvolution] = GSC_UltramanFightingEvolution; map[CRC::KnightsOfTheTemple2] = GSC_KnightsOfTheTemple2;
map[CRC::DeathByDegreesTekkenNinaWilliams] = GSC_DeathByDegreesTekkenNinaWilliams; map[CRC::UltramanFightingEvolution] = GSC_UltramanFightingEvolution;
map[CRC::AlpineRacer3] = GSC_AlpineRacer3; map[CRC::DeathByDegreesTekkenNinaWilliams] = GSC_DeathByDegreesTekkenNinaWilliams;
map[CRC::HummerBadlands] = GSC_HummerBadlands; map[CRC::AlpineRacer3] = GSC_AlpineRacer3;
map[CRC::SengokuBasara] = GSC_SengokuBasara; map[CRC::HummerBadlands] = GSC_HummerBadlands;
map[CRC::Grandia3] = GSC_Grandia3; map[CRC::SengokuBasara] = GSC_SengokuBasara;
map[CRC::FinalFightStreetwise] = GSC_FinalFightStreetwise; map[CRC::Grandia3] = GSC_Grandia3;
map[CRC::TalesofSymphonia] = GSC_TalesofSymphonia; map[CRC::FinalFightStreetwise] = GSC_FinalFightStreetwise;
map[CRC::SoulCalibur2] = GSC_SoulCalibur2; map[CRC::TalesofSymphonia] = GSC_TalesofSymphonia;
map[CRC::SoulCalibur3] = GSC_SoulCalibur3; map[CRC::SoulCalibur2] = GSC_SoulCalibur2;
map[CRC::Simple2000Vol114] = GSC_Simple2000Vol114; map[CRC::SoulCalibur3] = GSC_SoulCalibur3;
map[CRC::UrbanReign] = GSC_UrbanReign; map[CRC::Simple2000Vol114] = GSC_Simple2000Vol114;
map[CRC::SteambotChronicles] = GSC_SteambotChronicles; map[CRC::UrbanReign] = GSC_UrbanReign;
map[CRC::SacredBlaze] = GSC_SacredBlaze; map[CRC::SteambotChronicles] = GSC_SteambotChronicles;
map[CRC::SMTNocturne] = GSC_SMTNocturneDDS<0x2054E870>; map[CRC::SacredBlaze] = GSC_SacredBlaze;
map[CRC::SMTDDS1] = GSC_SMTNocturneDDS<0x203BA820>; map[CRC::SMTNocturne] = GSC_SMTNocturneDDS<0x2054E870>;
map[CRC::SMTDDS2] = GSC_SMTNocturneDDS<0x20435BF0>; map[CRC::SMTDDS1] = GSC_SMTNocturneDDS<0x203BA820>;
map[CRC::SMTDDS2] = GSC_SMTNocturneDDS<0x20435BF0>;
}
// Hack that were fixed on openGL // Hack that were fixed on openGL
if (Dx_only) { if (Dx_only) {