Fixed a problem around the VU clip code, introduced in r659. GoW and Persona (and more) now work without a gamefix.

I'll remove the gamefix if there is no problem.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@783 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
tmkkmac 2009-03-14 16:59:03 +00:00
parent c483f17331
commit 2b843ce49d
1 changed files with 6 additions and 5 deletions

View File

@ -3002,21 +3002,22 @@ void VuInstruction::Recompile(list<VuInstruction>::iterator& itinst, u32 vuxyz)
if( !CHECK_VUCLIPFLAGHACK && pparentinst != NULL ) { if( !CHECK_VUCLIPFLAGHACK && pparentinst != NULL ) {
if( pparentinst->pClipWrite == 0 ) {
pparentinst->pClipWrite = (uptr)SuperVUStaticAlloc(4);
}
if( nParentCheckForExecution >= 0 ) { if( nParentCheckForExecution >= 0 ) {
if( pparentinst->pClipWrite == 0 )
pparentinst->pClipWrite = (uptr)SuperVUStaticAlloc(4);
if( s_ClipRead == 0 ) if( s_ClipRead == 0 )
s_ClipRead = (uptr)&VU->VI[REG_CLIP_FLAG]; s_ClipRead = (uptr)&VU->VI[REG_CLIP_FLAG];
CMP32ItoM((uptr)&g_nLastBlockExecuted, nParentCheckForExecution); CMP32ItoM((uptr)&g_nLastBlockExecuted, nParentCheckForExecution);
u8* jptr = JNE8(0); u8* jptr = JNE8(0);
CMP32ItoM((uptr)&s_ClipRead, (uptr)&VU->VI[REG_CLIP_FLAG]);
u8* jptr2 = JE8(0);
MOV32MtoR(EAX, pparentinst->pClipWrite); MOV32MtoR(EAX, pparentinst->pClipWrite);
MOV32RtoM(s_ClipRead, EAX); MOV32RtoM(s_ClipRead, EAX);
x86SetJ8(jptr); x86SetJ8(jptr);
x86SetJ8(jptr2);
} }
else s_ClipRead = (uptr)&VU->VI[REG_CLIP_FLAG];
} }
else s_ClipRead = (uptr)&VU->VI[REG_CLIP_FLAG]; else s_ClipRead = (uptr)&VU->VI[REG_CLIP_FLAG];
} }