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()
{
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;
}
@ -447,7 +447,7 @@ void GSRendererHW::Draw()
#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
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)();
}

View File

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