GSdx: CRC hackfix for Midnight Club 3, fixes the huge vram usage when moving.

Small change to the Burnout hackfix, was skipping too much for NTSC.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@4791 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
shadowladyngemu 2011-07-04 08:19:24 +00:00
parent 5f20a11cd5
commit 75070d6aaf
3 changed files with 25 additions and 2 deletions

View File

@ -285,6 +285,8 @@ CRC::Game CRC::m_games[] =
{0x7E83CC5B, BurnoutRevenge, EU, 0}, {0x7E83CC5B, BurnoutRevenge, EU, 0},
{0x8C9576A1, BurnoutDominator, US, 0}, {0x8C9576A1, BurnoutDominator, US, 0},
{0x8C9576B4, BurnoutDominator, EU, 0}, {0x8C9576B4, BurnoutDominator, EU, 0},
{0x4A0E5B3A, MidnightClub3, US, 0},
{0x60A42FF5, MidnightClub3, US, 0}, //remix
}; };
hash_map<uint32, CRC::Game*> CRC::m_map; hash_map<uint32, CRC::Game*> CRC::m_map;

View File

@ -114,6 +114,7 @@ public:
BurnoutTakedown, BurnoutTakedown,
BurnoutRevenge, BurnoutRevenge,
BurnoutDominator, BurnoutDominator,
MidnightClub3,
TitleCount, TitleCount,
}; };

View File

@ -3006,9 +3006,16 @@ bool GSC_Burnout(const GSFrameInfo& fi, int& skip)
{ {
skip = 4; skip = 4;
} }
else if (fi.TME && (fi.FBP == 0x008c0 || fi.FBP == 0x00a00) && fi.FPSM == PSM_PSMCT16 && (fi.TBP0 == 0x01a40 || fi.TBP0 == 0x01e00) && fi.TPSM == PSM_PSMZ16) else if(fi.TME && fi.FPSM == PSM_PSMCT16 && fi.TPSM == PSM_PSMZ16) //fog
{ {
skip = 4; //fog if(fi.FBP == 0x00a00 && fi.TBP0 == 0x01e00)
{
skip = 4; //pal
}
if(fi.FBP == 0x008c0 && fi.TBP0 == 0x01a40)
{
skip = 3; //ntsc
}
} }
else if (fi.TME && (fi.FBP == 0x02d60 || fi.FBP == 0x033a0) && fi.FPSM == fi.TPSM && (fi.TBP0 == 0x02d60 || fi.TBP0 == 0x033a0) && fi.TPSM == PSM_PSMCT32 && fi.FBMSK == 0x0) else if (fi.TME && (fi.FBP == 0x02d60 || fi.FBP == 0x033a0) && fi.FPSM == fi.TPSM && (fi.TBP0 == 0x02d60 || fi.TBP0 == 0x033a0) && fi.TPSM == PSM_PSMCT32 && fi.FBMSK == 0x0)
{ {
@ -3019,6 +3026,19 @@ bool GSC_Burnout(const GSFrameInfo& fi, int& skip)
return true; return true;
} }
bool GSC_MidnightClub3(const GSFrameInfo& fi, int& skip)
{
if(skip == 0)
{
if(fi.TME && (fi.FBP > 0x01d00 && fi.FBP <= 0x02a00) && fi.FPSM == PSM_PSMCT32 && (fi.FBP >= 0x01600 && fi.FBP < 0x03260) && fi.TPSM == PSM_PSMT8H)
{
skip = 1;
}
}
return true;
}
bool GSState::IsBadFrame(int& skip, int UserHacks_SkipDraw) bool GSState::IsBadFrame(int& skip, int UserHacks_SkipDraw)
{ {