mirror of https://github.com/PCSX2/pcsx2.git
GSdx: CRC hackixes for...
The Lord of the Rings: the Third Age (Removing fat stripes on screen). Digimon Rumble Arena 2 (Half screen issue). Star Wars - The Force Unleashed (Hiding HUD and 3d issues. Not perfect and NTSC-U only, not sure if it works with PAL). Star Wars Battlefront 1/2 (Huge VRAM usage issue. NTSC-U only, not sure if it works with others). Black Hawk Down - Team Sabre (Half screen issue and removes the night vision filter which was broken and using a lot of VRAM). Minimal changes to other CRC hackfixes and GameDB. git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4766 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
2bb7704fbd
commit
4f89f21f99
|
@ -4803,13 +4803,14 @@ Serial = SLUS-20731
|
|||
Name = Tony Hawk's Underground
|
||||
Region = NTSC-U
|
||||
Compat = 5
|
||||
vuRoundMode = 0 //Crashes without.
|
||||
vuRoundMode = 0 //Crashes without.
|
||||
---------------------------------------------
|
||||
Serial = SLUS-20732
|
||||
Name = Drakengard
|
||||
Region = NTSC-U
|
||||
Compat = 5
|
||||
eeClampMode = 3 //characters are visible in-game.
|
||||
eeClampMode = 3 //characters are visible in-game.
|
||||
EETimingHack = 1 //flickering textures.
|
||||
---------------------------------------------
|
||||
Serial = SLUS-20733
|
||||
Name = Castlevania - Lament of Innocence
|
||||
|
@ -6357,7 +6358,7 @@ Compat = 5
|
|||
Serial = SLUS-21067
|
||||
Name = Digimon Rumble Arena 2
|
||||
Region = NTSC-U
|
||||
Compat = 1
|
||||
Compat = 5
|
||||
FpuCompareHack = 1
|
||||
---------------------------------------------
|
||||
Serial = SLUS-21068
|
||||
|
@ -7809,6 +7810,7 @@ Serial = SLUS-21373
|
|||
Name = Drakengard 2
|
||||
Region = NTSC-U
|
||||
Compat = 5
|
||||
EETimingHack = 1 //flickering textures.
|
||||
---------------------------------------------
|
||||
Serial = SLUS-21374
|
||||
Name = Marvel - Ultimate Alliance
|
||||
|
@ -8403,7 +8405,8 @@ Region = NTSC-U
|
|||
Serial = SLUS-21498
|
||||
Name = Naruto - Uzumaki Chronicles
|
||||
Region = NTSC-U
|
||||
Compat = 4
|
||||
Compat = 5
|
||||
OPHFLagHack = 1
|
||||
---------------------------------------------
|
||||
Serial = SLUS-21499
|
||||
Name = Evolution GT
|
||||
|
@ -8695,6 +8698,7 @@ Compat = 4
|
|||
Serial = SLUS-21594
|
||||
Name = Naruto - Uzumaki Chronicles 2
|
||||
Region = NTSC-U
|
||||
OPHFLagHack = 1
|
||||
---------------------------------------------
|
||||
Serial = SLUS-21595
|
||||
Name = T.M.N.T. - Teenage Mutant Ninja Turtles
|
||||
|
@ -8786,7 +8790,7 @@ Compat = 5
|
|||
Serial = SLUS-21614
|
||||
Name = Star Wars - The Force Unleashed
|
||||
Region = NTSC-U
|
||||
Compat = 4
|
||||
Compat = 5
|
||||
---------------------------------------------
|
||||
Serial = SLUS-21615
|
||||
Name = Wild Arms 5
|
||||
|
@ -19446,6 +19450,7 @@ Region = NTSC-J
|
|||
Serial = SLPM-65926
|
||||
Name = Y's IV - Mask of the Sun - A New Theory
|
||||
Region = NTSC-J
|
||||
eeClampMode = 3
|
||||
---------------------------------------------
|
||||
Serial = SLPM-65927
|
||||
Name = Forgotten Realms - Demon Stone
|
||||
|
@ -25153,7 +25158,7 @@ Region = NTSC-J
|
|||
Serial = SLPS-25074
|
||||
Name = Project Zero
|
||||
Region = NTSC-J
|
||||
Compat = 4
|
||||
Compat = 5
|
||||
---------------------------------------------
|
||||
Serial = SLPS-25075
|
||||
Name = Sidewinder F
|
||||
|
@ -25858,7 +25863,7 @@ Region = NTSC-J
|
|||
Serial = SLPS-25303
|
||||
Name = Zero - Crimson Butterfly
|
||||
Region = NTSC-J
|
||||
Compat = 4
|
||||
Compat = 5
|
||||
---------------------------------------------
|
||||
Serial = SLPS-25304
|
||||
Name = Beast Sapp
|
||||
|
@ -26759,6 +26764,7 @@ Serial = SLPS-25542
|
|||
Name = Naruto Uzumaki Ninden
|
||||
Region = NTSC-J
|
||||
Compat = 4
|
||||
OPHFLagHack = 1
|
||||
---------------------------------------------
|
||||
Serial = SLPS-25543
|
||||
Name = Futakoi - Koi to Mizugi no Survival
|
||||
|
@ -27419,6 +27425,7 @@ Region = NTSC-J
|
|||
Serial = SLPS-25714
|
||||
Name = Naruto - Konoha Spirits
|
||||
Region = NTSC-J
|
||||
OPHFLagHack = 1
|
||||
---------------------------------------------
|
||||
Serial = SLPS-25715
|
||||
Name = Tales of Destiny
|
||||
|
@ -34889,7 +34896,7 @@ Region = PAL-Unk
|
|||
Serial = SLES-52467
|
||||
Name = dot Hack - Part 2 - Mutation
|
||||
Region = PAL-M5
|
||||
Compat = 4
|
||||
Compat = 5
|
||||
---------------------------------------------
|
||||
Serial = SLES-52468
|
||||
Name = dot Hack - Part 4 - Quarantine
|
||||
|
@ -35290,6 +35297,7 @@ Region = PAL-Unk
|
|||
Serial = SLES-52631
|
||||
Name = Digimon Rumble Arena 2
|
||||
Region = PAL-Unk
|
||||
Compat = 5
|
||||
FpuCompareHack = 1
|
||||
---------------------------------------------
|
||||
Serial = SLES-52636
|
||||
|
@ -37667,6 +37675,7 @@ Region = PAL-Unk
|
|||
Serial = SLES-53794
|
||||
Name = Drakengard 2
|
||||
Region = PAL-Unk
|
||||
EETimingHack = 1 //flickering textures.
|
||||
---------------------------------------------
|
||||
Serial = SLES-53796
|
||||
Name = FIFA Street 2
|
||||
|
@ -39465,8 +39474,20 @@ Name = Armored Core - Nexus
|
|||
Region = PAL-Unk
|
||||
---------------------------------------------
|
||||
Serial = SLES-82038
|
||||
Name = Onimusha - Dawn of Dreams
|
||||
Name = Onimusha - Dawn of Dreams [Disc1]
|
||||
Region = PAL-Unk
|
||||
[patches = 812C5A96]
|
||||
comment= patch by Shadow Lady
|
||||
patch=0,EE,00104170,word,00000000
|
||||
[/patches]
|
||||
---------------------------------------------
|
||||
Serial = SLES-82039
|
||||
Name = Onimusha - Dawn of Dreams [Disc2]
|
||||
Region = PAL-Unk
|
||||
[patches = 812C5A96]
|
||||
comment= patch by Shadow Lady
|
||||
patch=0,EE,00104170,word,00000000
|
||||
[/patches]
|
||||
---------------------------------------------
|
||||
Serial = SLES-82042
|
||||
Name = Metal Gear Solid 3 - Subsistance [Disc1of2]
|
||||
|
|
|
@ -137,7 +137,8 @@ CRC::Game CRC::m_games[] =
|
|||
{0x26689C87, Spartan, JP, 0},
|
||||
{0x5ED8FB53, AceCombat4, JP, 0},
|
||||
{0x1B9B7563, AceCombat4, NoRegion, 0},
|
||||
{0xEC432B24, Drakengard2, NoRegion, 0},
|
||||
{0xEC432B24, Drakengard2, EU, 0},
|
||||
{0x1648E3C9, Drakengard2, US, 0},
|
||||
{0xFC46EA61, Tekken5, JP, 0},
|
||||
{0x1F88EE37, Tekken5, EU, 0},
|
||||
{0x1F88BECD, Tekken5, EU, 0}, //language selector...
|
||||
|
@ -160,6 +161,8 @@ CRC::Game CRC::m_games[] =
|
|||
{0xE96E55BD, GodOfWar2, JP, 0},
|
||||
{0xF8CD3DF6, GodOfWar2, NoRegion, 0},
|
||||
{0x0B82BFF7, GodOfWar2, NoRegion, 0},
|
||||
{0x5990866f, GodOfWar2, NoRegion, 0},
|
||||
{0xDCD9A9F7, GodOfWar2, NoRegion, 0},
|
||||
{0x5D482F18, JackieChanAdv, NoRegion, 0},
|
||||
{0xf0a6d880, HarvestMoon, US, 0},
|
||||
{0x75c01a04, NamcoXCapcom, US, 0},
|
||||
|
@ -221,6 +224,7 @@ CRC::Game CRC::m_games[] =
|
|||
{0x8164C614, Sly3, EU, 0},
|
||||
{0x07652DD9, Sly2, US, 0},
|
||||
{0xFDA1CBF6, Sly2, EU, 0},
|
||||
{0x15DD1F6F, Sly2, NoRegion, 0},
|
||||
{0xA9C82AB9, DemonStone, US, 0},
|
||||
{0x7C7578F3, DemonStone, EU, 0},
|
||||
{0x506644B3, BigMuthaTruckers, EU, 0},
|
||||
|
@ -234,6 +238,8 @@ CRC::Game CRC::m_games[] =
|
|||
{0xDC43F2B8, LordOfTheRingsTwoTowers, EU, 0},
|
||||
{0x9ABF90FB, LordOfTheRingsTwoTowers, ES, 0},
|
||||
{0xC0E909E9, LordOfTheRingsTwoTowers, JP, 0},
|
||||
{0xEB198738, LordOfTheRingsThirdAge, US, 0},
|
||||
{0x614F4CF4, LordOfTheRingsThirdAge, EU, 0},
|
||||
{0xE169BAF8, RedDeadRevolver, US, 0},
|
||||
{0xE2E67E23, RedDeadRevolver, EU, 0},
|
||||
{0xEDDD6573, SpidermanWoS, US, 0}, //Web of Shadows
|
||||
|
@ -258,6 +264,15 @@ CRC::Game CRC::m_games[] =
|
|||
{0xB3A9F9ED, Black, JP, 0},
|
||||
{0x4F755D39, TyTasmanianTiger, US, 0},
|
||||
{0xD59D3252, TyTasmanianTiger, EU, 0},
|
||||
{0x44A5FA15, FFVIIDoC, US, 0},
|
||||
{0x33F7D21A, FFVIIDoC, EU, 0},
|
||||
{0xAFAC88EF, FFVIIDoC, JP, 0},
|
||||
{0x568A5C78, DigimonRumbleArena2, US, 0},
|
||||
{0x785E22BB, DigimonRumbleArena2, EU, 0},
|
||||
{0x879CDA5E, StarWarsForceUnleashed, US, 0},
|
||||
{0x503BF9E1, StarWarsBattlefront, US, 0},
|
||||
{0x02F4B541, StarWarsBattlefront2, US, 0},
|
||||
{0xA8DB29DF, BlackHawkDown, EU, 0},
|
||||
};
|
||||
|
||||
hash_map<uint32, CRC::Game*> CRC::m_map;
|
||||
|
|
|
@ -93,6 +93,7 @@ public:
|
|||
TimeSplitters2,
|
||||
ReZ,
|
||||
LordOfTheRingsTwoTowers,
|
||||
LordOfTheRingsThirdAge,
|
||||
RedDeadRevolver,
|
||||
SpidermanWoS,
|
||||
HeavyMetalThunder,
|
||||
|
@ -103,6 +104,12 @@ public:
|
|||
CastlevaniaLoI,
|
||||
Black,
|
||||
TyTasmanianTiger,
|
||||
FFVIIDoC,
|
||||
DigimonRumbleArena2,
|
||||
StarWarsForceUnleashed,
|
||||
StarWarsBattlefront,
|
||||
StarWarsBattlefront2,
|
||||
BlackHawkDown,
|
||||
TitleCount,
|
||||
};
|
||||
|
||||
|
|
|
@ -158,7 +158,7 @@ class GSRendererHW : public GSRendererT<Vertex>
|
|||
uint32 FBW = m_context->FRAME.FBW;
|
||||
uint32 FPSM = m_context->FRAME.PSM;
|
||||
|
||||
if((FBP == 0x00f00 || FBP == 0x00100) && FPSM == PSM_PSMZ24) // ntsc 0xf00, pal 0x100
|
||||
if((FBP == 0x00f00 || FBP == 0x00100 || FBP == 0x01280) && FPSM == PSM_PSMZ24) // ntsc 0xf00, pal 0x100, ntsc "HD" 0x1280
|
||||
{
|
||||
// z buffer clear
|
||||
|
||||
|
@ -254,14 +254,12 @@ class GSRendererHW : public GSRendererT<Vertex>
|
|||
{
|
||||
//only top half of the screen clears
|
||||
m_dev->ClearDepth(ds, 0);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool OI_TyTasmanianTiger(GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t) //fbp 0x3680 ntsc, 0x3200 pal , PSM_PSMCT24
|
||||
bool OI_TyTasmanianTiger(GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t)
|
||||
{
|
||||
uint32 FBP = m_context->FRAME.Block();
|
||||
uint32 FBW = m_context->FRAME.FBW;
|
||||
|
@ -278,6 +276,59 @@ class GSRendererHW : public GSRendererT<Vertex>
|
|||
return true;
|
||||
}
|
||||
|
||||
bool OI_DigimonRumbleArena2(GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t)
|
||||
{
|
||||
uint32 FBP = m_context->FRAME.Block();
|
||||
uint32 FPSM = m_context->FRAME.PSM;
|
||||
|
||||
if(!PRIM->TME)
|
||||
{
|
||||
if((FBP == 0x02300 || FBP == 0x03fc0) && FPSM == PSM_PSMCT32)
|
||||
{
|
||||
//half height buffer clear
|
||||
m_dev->ClearDepth(ds, 0);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool OI_BlackHawkDown(GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t)
|
||||
{
|
||||
uint32 FBP = m_context->FRAME.Block();
|
||||
uint32 FPSM = m_context->FRAME.PSM;
|
||||
|
||||
if(FBP == 0x02000 && FPSM == PSM_PSMZ24)
|
||||
{
|
||||
//half height buffer clear
|
||||
m_dev->ClearDepth(ds, 0);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool OI_StarWarsForceUnleashed(GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t)
|
||||
{
|
||||
uint32 FBP = m_context->FRAME.Block();
|
||||
uint32 FPSM = m_context->FRAME.PSM;
|
||||
|
||||
if(FPSM == PSM_PSMCT24 && FBP == 0x2bc0)
|
||||
{
|
||||
m_dev->ClearDepth(ds, 0);
|
||||
|
||||
return false;
|
||||
}
|
||||
else if((FBP == 0x36e0 || FBP == 0x34a0) && FPSM == PSM_PSMCT24)
|
||||
{
|
||||
m_dev->ClearDepth(ds, 0);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool OI_PointListPalette(GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t)
|
||||
{
|
||||
if(m_vt.m_primclass == GS_POINT_CLASS && !PRIM->TME)
|
||||
|
@ -460,6 +511,9 @@ class GSRendererHW : public GSRendererT<Vertex>
|
|||
m_oi_list.push_back(HackEntry<OI_Ptr>(CRC::RozenMaidenGebetGarden, CRC::RegionCount, &GSRendererHW::OI_RozenMaidenGebetGarden));
|
||||
m_oi_list.push_back(HackEntry<OI_Ptr>(CRC::SpidermanWoS, CRC::RegionCount, &GSRendererHW::OI_SpidermanWoS));
|
||||
m_oi_list.push_back(HackEntry<OI_Ptr>(CRC::TyTasmanianTiger, CRC::RegionCount, &GSRendererHW::OI_TyTasmanianTiger));
|
||||
m_oi_list.push_back(HackEntry<OI_Ptr>(CRC::DigimonRumbleArena2, CRC::RegionCount, &GSRendererHW::OI_DigimonRumbleArena2));
|
||||
m_oi_list.push_back(HackEntry<OI_Ptr>(CRC::StarWarsForceUnleashed, CRC::RegionCount, &GSRendererHW::OI_StarWarsForceUnleashed));
|
||||
m_oi_list.push_back(HackEntry<OI_Ptr>(CRC::BlackHawkDown, CRC::RegionCount, &GSRendererHW::OI_BlackHawkDown));
|
||||
|
||||
m_oo_list.push_back(HackEntry<OO_Ptr>(CRC::DBZBT2, CRC::RegionCount, &GSRendererHW::OO_DBZBT2));
|
||||
m_oo_list.push_back(HackEntry<OO_Ptr>(CRC::MajokkoALaMode2, CRC::RegionCount, &GSRendererHW::OO_MajokkoALaMode2));
|
||||
|
|
|
@ -343,7 +343,7 @@ GSVector2i GSState::GetDeviceSize(int i)
|
|||
}*/
|
||||
|
||||
//Fixme : Just slightly better than the hack above
|
||||
if(m_regs->SMODE2.INT && m_regs->SMODE2.FFMD && h > 1)
|
||||
if(m_regs->SMODE2.INT && !m_regs->SMODE2.FFMD && h > 1)
|
||||
{
|
||||
if (IsEnabled(0) || IsEnabled(1))
|
||||
{
|
||||
|
@ -2402,13 +2402,12 @@ bool GSC_GodOfWar2(const GSFrameInfo& fi, int& skip)
|
|||
{
|
||||
if(fi.TME)
|
||||
{
|
||||
if( (fi.FBP == 0x00100 && fi.FPSM == PSM_PSMCT16 && fi.TBP0 == 0x00100 && fi.TPSM == PSM_PSMCT16 // ntsc
|
||||
if( fi.FBP == 0x00100 && fi.FPSM == PSM_PSMCT16 && fi.TBP0 == 0x00100 && fi.TPSM == PSM_PSMCT16 // ntsc
|
||||
|| fi.FBP == 0x02100 && fi.FPSM == PSM_PSMCT16 && fi.TBP0 == 0x02100 && fi.TPSM == PSM_PSMCT16) // pal
|
||||
&& (GSUtil::HasSharedBits(fi.FBP, fi.FPSM, fi.TBP0, fi.TPSM)) )
|
||||
{
|
||||
skip = 1000; // shadows
|
||||
}
|
||||
if(fi.FBP == 0x00100 && fi.FPSM == PSM_PSMCT32 && (fi.TBP0 & 0x03000) == 0x03000
|
||||
if((fi.FBP == 0x00100 || fi.FBP == 0x02100) && fi.FPSM == PSM_PSMCT32 && (fi.TBP0 & 0x03000) == 0x03000
|
||||
&& (fi.TPSM == PSM_PSMT8 || fi.TPSM == PSM_PSMT4)
|
||||
&& ((fi.TZTST == 2 && fi.FBMSK == 0x00FFFFFF) || (fi.TZTST == 1 && fi.FBMSK == 0x00FFFFFF) || (fi.TZTST == 3 && fi.FBMSK == 0xFF000000)))
|
||||
{
|
||||
|
@ -2481,14 +2480,14 @@ bool GSC_SonicUnleashed(const GSFrameInfo& fi, int& skip)
|
|||
{
|
||||
if(skip == 0)
|
||||
{
|
||||
if(fi.TME && fi.FPSM == PSM_PSMCT16S && fi.TBP0 == 0x00000 && fi.TPSM == PSM_PSMCT16 && fi.FBMSK == 0x00000)
|
||||
if(fi.TME && fi.FPSM == PSM_PSMCT16S && fi.TBP0 == 0x00000 && fi.TPSM == PSM_PSMCT16)
|
||||
{
|
||||
skip = 1000; // shadow
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(fi.TME && fi.FBP == 0x00000 && fi.FPSM == PSM_PSMCT16 && fi.TPSM == PSM_PSMCT16S && fi.FBMSK == 0x00000)
|
||||
if(fi.TME && fi.FBP == 0x00000 && fi.FPSM == PSM_PSMCT16 && fi.TPSM == PSM_PSMCT16S)
|
||||
{
|
||||
skip = 2;
|
||||
}
|
||||
|
@ -2636,20 +2635,7 @@ bool GSC_SuikodenTactics(const GSFrameInfo& fi, int& skip)
|
|||
return true;
|
||||
}
|
||||
|
||||
bool GSC_TenchuWoH(const GSFrameInfo& fi, int& skip)
|
||||
{
|
||||
if(skip == 0)
|
||||
{
|
||||
if(fi.TME && fi.TPSM == PSM_PSMZ16 && fi.FPSM == PSM_PSMCT16 && fi.FBMSK == 0x03FFF)
|
||||
{
|
||||
skip = 3;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GSC_TenchuFS(const GSFrameInfo& fi, int& skip)
|
||||
bool GSC_Tenchu(const GSFrameInfo& fi, int& skip)
|
||||
{
|
||||
if(skip == 0)
|
||||
{
|
||||
|
@ -2786,6 +2772,26 @@ bool GSC_LordOfTheRingsTwoTowers(const GSFrameInfo& fi, int& skip)
|
|||
return true;
|
||||
}
|
||||
|
||||
bool GSC_LordOfTheRingsThirdAge(const GSFrameInfo& fi, int& skip)
|
||||
{
|
||||
if(skip == 0)
|
||||
{
|
||||
if(!fi.TME && fi.FBP == 0x03000 && fi.FPSM == PSM_PSMCT32 && fi.TPSM == PSM_PSMT4 && fi.FBMSK == 0xFF000000)
|
||||
{
|
||||
skip = 1000; //shadows
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (fi.TME && (fi.FBP == 0x0 || fi.FBP == 0x00e00 || fi.FBP == 0x01000) && fi.FPSM == PSM_PSMCT32 && fi.TBP0 == 0x03000 && fi.TPSM == PSM_PSMCT24)
|
||||
{
|
||||
skip = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GSC_RedDeadRevolver(const GSFrameInfo& fi, int& skip)
|
||||
{
|
||||
if(skip == 0)
|
||||
|
@ -2884,6 +2890,88 @@ bool GSC_Black(const GSFrameInfo& fi, int& skip)
|
|||
return true;
|
||||
}
|
||||
|
||||
bool GSC_FFVIIDoC(const GSFrameInfo& fi, int& skip)
|
||||
{
|
||||
if(skip == 0)
|
||||
{
|
||||
if(fi.TME && fi.FBP == 0x01c00 && fi.FPSM == PSM_PSMCT32 && fi.TBP0 == 0x02c00 && fi.TPSM == PSM_PSMCT24)
|
||||
{
|
||||
skip = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GSC_StarWarsForceUnleashed(const GSFrameInfo& fi, int& skip)
|
||||
{
|
||||
if(skip == 0)
|
||||
{
|
||||
if(fi.TME && (fi.FBP == 0x038a0 || fi.FBP == 0x03ae0) && fi.FPSM == fi.TPSM && fi.TBP0 == 0x02300 && fi.TPSM == PSM_PSMZ24)
|
||||
{
|
||||
skip = 1000; //9, shadows
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(fi.TME && fi.FBP == fi.TBP0 && fi.FPSM == fi.TPSM && (fi.TBP0 == 0x034a0 || fi.TBP0 == 0x36e0) && fi.TPSM == PSM_PSMCT16)
|
||||
{
|
||||
skip = 2;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GSC_StarWarsBattlefront(const GSFrameInfo& fi, int& skip)
|
||||
{
|
||||
if(skip == 0)
|
||||
{
|
||||
if(fi.TME && (fi.FBP > 0x0 && fi.FBP < 0x00e00) && fi.FPSM == PSM_PSMCT32 && (fi.TBP0 > 0x02000 && fi.TBP0 < 0x02e00) && fi.TPSM == PSM_PSMT8)
|
||||
{
|
||||
skip = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GSC_StarWarsBattlefront2(const GSFrameInfo& fi, int& skip)
|
||||
{
|
||||
if(skip == 0)
|
||||
{
|
||||
if(fi.TME && (fi.FBP > 0x01000 && fi.FBP < 0x01e00) && fi.FPSM == PSM_PSMCT32 && (fi.TBP0 > 0x0 && fi.TBP0 < 0x00e00) && fi.TPSM == PSM_PSMT8)
|
||||
{
|
||||
skip = 1;
|
||||
}
|
||||
if(fi.TME && (fi.FBP > 0x01000 && fi.FBP < 0x01e00) && fi.FPSM == PSM_PSMZ32 && (fi.TBP0 > 0x0 && fi.TBP0 < 0x0e00) && fi.TPSM == PSM_PSMT8)
|
||||
{
|
||||
skip = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GSC_BlackHawkDown(const GSFrameInfo& fi, int& skip)
|
||||
{
|
||||
if(skip == 0)
|
||||
{
|
||||
if(fi.TME && fi.FBP == 0x00800 && fi.FPSM == PSM_PSMCT16 && fi.TBP0 == 0x01800 && fi.TPSM == PSM_PSMZ16)
|
||||
{
|
||||
skip = 2; //wall of fog
|
||||
}
|
||||
if(fi.TME && fi.FBP == fi.TBP0 && fi.FPSM == PSM_PSMCT32 && fi.TPSM == PSM_PSMT8)
|
||||
{
|
||||
skip = 5; //night filter
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool GSState::IsBadFrame(int& skip, int UserHacks_SkipDraw)
|
||||
{
|
||||
GSFrameInfo fi;
|
||||
|
@ -2942,8 +3030,8 @@ bool GSState::IsBadFrame(int& skip, int UserHacks_SkipDraw)
|
|||
map[CRC::RadiataStories] = GSC_RadiataStories;
|
||||
map[CRC::HauntingGround] = GSC_HauntingGround;
|
||||
map[CRC::SuikodenTactics] = GSC_SuikodenTactics;
|
||||
map[CRC::TenchuWoH] = GSC_TenchuWoH;
|
||||
map[CRC::TenchuFS] = GSC_TenchuFS;
|
||||
map[CRC::TenchuWoH] = GSC_Tenchu;
|
||||
map[CRC::TenchuFS] = GSC_Tenchu;
|
||||
map[CRC::Sly3] = GSC_Sly3;
|
||||
map[CRC::Sly2] = GSC_Sly2;
|
||||
map[CRC::DemonStone] = GSC_DemonStone;
|
||||
|
@ -2951,12 +3039,18 @@ bool GSState::IsBadFrame(int& skip, int UserHacks_SkipDraw)
|
|||
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::CastlevaniaCoD] = GSC_Castlevania;
|
||||
map[CRC::CastlevaniaLoI] = GSC_Castlevania;
|
||||
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;
|
||||
}
|
||||
|
||||
// TODO: just set gsc in SetGameCRC once
|
||||
|
|
Loading…
Reference in New Issue