Took out the optimizations in gifTransferDummy.

They broke games still (so3, same stuff as arc the lad earlier).

With this simplified version all the problematic games found so far work.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1893 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
ramapcsx2 2009-09-20 13:59:13 +00:00
parent 48cdfb263b
commit 4e1e2b01ba
1 changed files with 13 additions and 33 deletions

View File

@ -295,42 +295,22 @@ __forceinline int mtgsThreadObject::_gifTransferDummy(GIF_PATH pathidx, const u8
switch(path.tag.FLG) {
case GIF_FLG_PACKED:
path.PrepPackedRegs();
if((path.numregs * path.nloop) < (size-1)) {
//optPrint((path.numregs*path.nloop), 500);
u32 temp1 = (path.numregs - path.curreg);
u32 temp2 = (path.numregs * subVal(path.nloop, 1));
u32 temp3 = temp1 + temp2;
incTag((temp3*16), temp3);
path.nloop = 0;
}
else {
do {
if (path.GetReg() == 0xe) {
gsHandler(pMem);
}
incTag(16, 1);
} while(path.StepReg() && size > 0);
}
break;
do {
if (path.GetReg() == 0xe) {
gsHandler(pMem);
}
incTag(16, 1);
} while(path.StepReg() && size > 0);
break;
case GIF_FLG_REGLIST:
{
u32 numregs = (((path.tag.NREG-1)&0xf)+2)/2;
if((numregs * path.nloop) < (size-1)) {
//optPrint((numregs*path.nloop), 500);
u32 temp1 = (numregs - (((path.curreg&0xf)+1)/2));
u32 temp2 = (numregs * subVal(path.nloop, 1));
u32 temp3 = temp1 + temp2;
incTag((temp3*16), temp3);
path.nloop = 0;
}
else {
size *= 2;
do { incTag(8, 1); }
while(path.StepReg() && size > 0);
size *= 2;
if (size & 1) { incTag(8, 1); }
size /= 2;
}
do { incTag(8, 1); }
while(path.StepReg() && size > 0);
if (size & 1) { incTag(8, 1); }
size /= 2;
}
break;
case GIF_FLG_IMAGE: