Added a check to make sure the unpack REALLY overflows, sometimes it can be dead on the limit or count the skip, so it doesn't need to break to slower code.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@995 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
refraction 2009-04-17 00:54:53 +00:00
parent 4704ac9436
commit 170acd854a
1 changed files with 11 additions and 2 deletions

View File

@ -558,8 +558,17 @@ static void VIFunpack(u32 *data, vifCode *v, unsigned int size, const unsigned i
{
//DevCon::Notice("VIF%x Unpack ending %x > %x", params VIFdmanum, tempsize, VIFdmanum ? 0x4000 : 0x1000);
tempsize = size;
size = 0;
if(vifRegs->cycle.cl == 1 && ((u32)(VIFdmanum ? 0x4000 : 0x1000) + ((vifRegs->cycle.cl - vifRegs->cycle.wl) * 16)) == tempsize
|| tempsize == (u32)(VIFdmanum ? 0x4000 : 0x1000))
{
//Its a red herring! so ignore it! SSE unpacks will be much quicker
tempsize = 0;
}
else
{
tempsize = size;
size = 0;
}
} else tempsize = 0;