mirror of https://github.com/PCSX2/pcsx2.git
GSdx: CRC hackfixes for Red Dead Revolver, Heavy Metal Thunder, Spiderman Web of Shadows (if anybody cares about this one :p).
Also a few changes for Tekken 5, "City at sunset" stage, hopefully there's nothing else wrong with this game anymore. git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4585 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
39c8fe121a
commit
741b623b97
|
@ -6302,6 +6302,7 @@ Serial = SLUS-21059
|
|||
Name = Tekken 5
|
||||
Region = NTSC-U
|
||||
Compat = 5
|
||||
eeClampMode = 1
|
||||
---------------------------------------------
|
||||
Serial = SLUS-21060
|
||||
Name = WWE SmackDown! vs. RAW
|
||||
|
@ -6765,6 +6766,7 @@ Compat = 5
|
|||
Serial = SLUS-21160
|
||||
Name = Tekken 5 [Demo]
|
||||
Region = NTSC-U
|
||||
eeClampMode = 1
|
||||
---------------------------------------------
|
||||
Serial = SLUS-21161
|
||||
Name = Fight Night - Round 2
|
||||
|
@ -11358,10 +11360,12 @@ Region = NTSC-Unk
|
|||
Serial = SCAJ-20125
|
||||
Name = Tekken 5
|
||||
Region = NTSC-Unk
|
||||
eeClampMode = 1
|
||||
---------------------------------------------
|
||||
Serial = SCAJ-20126
|
||||
Name = Tekken 5
|
||||
Region = NTSC-Unk
|
||||
eeClampMode = 1
|
||||
---------------------------------------------
|
||||
Serial = SCAJ-20127
|
||||
Name = EyeToy - Play 2 [with Camera]
|
||||
|
@ -11643,6 +11647,7 @@ Region = NTSC-Unk
|
|||
Serial = SCAJ-20199
|
||||
Name = Tekken 5 [PlayStation 2 the Best]
|
||||
Region = NTSC-Unk
|
||||
eeClampMode = 1
|
||||
---------------------------------------------
|
||||
Serial = SCAJ-25002
|
||||
Name = Shinobi
|
||||
|
@ -11800,6 +11805,7 @@ Region = NTSC-K
|
|||
Serial = SCKA-20049
|
||||
Name = Tekken 5
|
||||
Region = NTSC-K
|
||||
eeClampMode = 1
|
||||
---------------------------------------------
|
||||
Serial = SCKA-20050
|
||||
Name = Tales of Legendia
|
||||
|
@ -11879,6 +11885,7 @@ VuAddSubHack = 1
|
|||
Serial = SCKA-20081
|
||||
Name = Tekken 5 [PlayStation 2 Big Hit Series]
|
||||
Region = NTSC-K
|
||||
eeClampMode = 1
|
||||
---------------------------------------------
|
||||
Serial = SCKA-20086
|
||||
Name = Shin Onimusha - Dawn of Dreams [Disc1of2]
|
||||
|
@ -26581,6 +26588,7 @@ Serial = SLPS-25510
|
|||
Name = Tekken 5
|
||||
Region = NTSC-J
|
||||
Compat = 5
|
||||
eeClampMode = 1
|
||||
---------------------------------------------
|
||||
Serial = SLPS-25511
|
||||
Name = Rasetsu Alternative
|
||||
|
@ -28153,6 +28161,7 @@ Region = NTSC-J
|
|||
Serial = SLPS-73223
|
||||
Name = Tekken 5 [PlayStation 2 The Best]
|
||||
Region = NTSC-J
|
||||
eeClampMode = 1
|
||||
---------------------------------------------
|
||||
Serial = SLPS-73224
|
||||
Name = Xenosaga Episode II - Jenseits von Gut und Bose [PlayStation 2 The Best] [Disc1of2]
|
||||
|
@ -29437,6 +29446,7 @@ Serial = SCES-53202
|
|||
Name = Tekken 5
|
||||
Region = PAL-Unk
|
||||
Compat = 5
|
||||
eeClampMode = 1
|
||||
---------------------------------------------
|
||||
Serial = SCES-53247
|
||||
Name = WRC - World Rally Championship - Rally Evolved
|
||||
|
|
|
@ -209,6 +209,10 @@ CRC::Game CRC::m_games[] =
|
|||
{0xC818BEC2, LordOfTheRingsTwoTowers, US, 0},
|
||||
{0x9ABF90FB, LordOfTheRingsTwoTowers, ES, 0},
|
||||
{0xC0E909E9, LordOfTheRingsTwoTowers, JP, 0},
|
||||
{0xE169BAF8, RedDeadRevolver, US, 0},
|
||||
{0xE2E67E23, RedDeadRevolver, EU, 0},
|
||||
{0xEDDD6573, SpidermanWoS, US, 0}, //Web of Shadows
|
||||
{0xF56C7948, HeavyMetalThunder, JP, 0},
|
||||
};
|
||||
|
||||
hash_map<uint32, CRC::Game*> CRC::m_map;
|
||||
|
|
|
@ -93,6 +93,9 @@ public:
|
|||
TimeSplitters2,
|
||||
ReZ,
|
||||
LordOfTheRingsTwoTowers,
|
||||
RedDeadRevolver,
|
||||
SpidermanWoS,
|
||||
HeavyMetalThunder,
|
||||
TitleCount,
|
||||
};
|
||||
|
||||
|
|
|
@ -245,6 +245,22 @@ class GSRendererHW : public GSRendererT<Vertex>
|
|||
return true;
|
||||
}
|
||||
|
||||
bool OI_SpidermanWoS(GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t)
|
||||
{
|
||||
uint32 FBP = m_context->FRAME.Block();
|
||||
uint32 FPSM = m_context->FRAME.PSM;
|
||||
|
||||
if((FBP == 0x025a0 || FBP == 0x02a60) && FPSM == PSM_PSMCT32)
|
||||
{
|
||||
//only top half of the screen clears
|
||||
m_dev->ClearDepth(ds, 0);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool OI_PointListPalette(GSTexture* rt, GSTexture* ds, GSTextureCache::Source* t)
|
||||
{
|
||||
if(m_vt.m_primclass == GS_POINT_CLASS && !PRIM->TME)
|
||||
|
@ -425,6 +441,7 @@ class GSRendererHW : public GSRendererT<Vertex>
|
|||
m_oi_list.push_back(HackEntry<OI_Ptr>(CRC::GodOfWar2, CRC::RegionCount, &GSRendererHW::OI_GodOfWar2));
|
||||
m_oi_list.push_back(HackEntry<OI_Ptr>(CRC::SimpsonsGame, CRC::RegionCount, &GSRendererHW::OI_SimpsonsGame));
|
||||
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_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));
|
||||
|
|
|
@ -2264,14 +2264,18 @@ bool GSC_Tekken5(const GSFrameInfo& fi, int& skip)
|
|||
{
|
||||
if(skip == 0)
|
||||
{
|
||||
if(fi.TME && (fi.FBP == 0x02d60 || fi.FBP == 0x02d80 || fi.FBP == 0x02ea0 || fi.FBP == 0x03620) && fi.FPSM == PSM_PSMCT32 && fi.TBP0 == 0x00000 && fi.TPSM == PSM_PSMCT32)
|
||||
if(fi.TME && (fi.FBP == 0x02d60 || fi.FBP == 0x02d80 || fi.FBP == 0x02ea0 || fi.FBP == 0x03620) && fi.FPSM == fi.TPSM && fi.TBP0 == 0x00000 && fi.TPSM == PSM_PSMCT32)
|
||||
{
|
||||
skip = 95;
|
||||
}
|
||||
else if(fi.TME && (fi.FBP == 0x02bc0 || fi.FBP == 0x02be0) && fi.FPSM == fi.TPSM && fi.TBP0 == 0x00000 && fi.TPSM == PSM_PSMCT32)
|
||||
else if(fi.TME && (fi.FBP == 0x02bc0 || fi.FBP == 0x02be0 || fi.FBP == 0x02d00) && fi.FPSM == fi.TPSM && fi.TBP0 == 0x00000 && fi.TPSM == PSM_PSMCT32)
|
||||
{
|
||||
skip = 2;
|
||||
}
|
||||
else if(fi.TME && fi.FBP == 0x00000 && fi.FPSM == fi.TPSM && fi.TPSM == PSM_PSMCT32 && fi.FBMSK == 0x00FFFFFF)
|
||||
{
|
||||
skip = 5; //city at sunset's... sun...
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -2682,6 +2686,54 @@ bool GSC_LordOfTheRingsTwoTowers(const GSFrameInfo& fi, int& skip)
|
|||
return true;
|
||||
}
|
||||
|
||||
bool GSC_RedDeadRevolver(const GSFrameInfo& fi, int& skip)
|
||||
{
|
||||
if(skip == 0)
|
||||
{
|
||||
if(!fi.TME && (fi.FBP == 0x02420 || fi.FBP == 0x025e0) && fi.FPSM == PSM_PSMCT24)
|
||||
{
|
||||
skip = 1200;
|
||||
}
|
||||
else if(fi.TME && (fi.FBP == 0x00800 || fi.FBP == 0x009c0) && fi.FPSM == fi.TPSM && (fi.TBP0 == 0x01600 || fi.TBP0 == 0x017c0) && fi.TPSM == PSM_PSMCT32)
|
||||
{
|
||||
skip = 2; //filter
|
||||
}
|
||||
else if(fi.FBP == 0x03700 && fi.FPSM == PSM_PSMCT32 && fi.TPSM == PSM_PSMCT24)
|
||||
{
|
||||
skip = 2; //blur
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(fi.TME && (fi.FBP == 0x00800 || fi.FBP == 0x009c0) && fi.FPSM == PSM_PSMCT32)
|
||||
{
|
||||
skip = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GSC_HeavyMetalThunder(const GSFrameInfo& fi, int& skip)
|
||||
{
|
||||
if(skip == 0)
|
||||
{
|
||||
if(fi.TME && fi.FBP == 0x03100 && fi.FPSM == fi.TPSM && fi.TBP0 == 0x01c00 && fi.TPSM == PSM_PSMZ32)
|
||||
{
|
||||
skip = 100;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(fi.TME && fi.FBP == 0x00e00 && fi.FPSM == fi.TPSM && fi.TBP0 == 0x02a00 && fi.TPSM == PSM_PSMCT32)
|
||||
{
|
||||
skip = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GSState::IsBadFrame(int& skip, int UserHacks_SkipDraw)
|
||||
{
|
||||
GSFrameInfo fi;
|
||||
|
@ -2748,6 +2800,8 @@ 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::RedDeadRevolver] = GSC_RedDeadRevolver;
|
||||
map[CRC::HeavyMetalThunder] = GSC_HeavyMetalThunder;
|
||||
}
|
||||
|
||||
// TODO: just set gsc in SetGameCRC once
|
||||
|
|
Loading…
Reference in New Issue