mirror of https://github.com/PCSX2/pcsx2.git
Put a different fix for bad J/JALR jumps (Charlie and the Chocolate Factory)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1024 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
b7ea57a5d9
commit
457b78e70e
|
@ -3859,7 +3859,13 @@ void recVUMI_JR( VURegs* vuu, s32 info )
|
|||
{
|
||||
int fsreg = _allocX86reg(-1, X86TYPE_VI|(s_vu?X86TYPE_VU1:0), _Fs_, MODE_READ);
|
||||
LEA32RStoR(EAX, fsreg, 3);
|
||||
|
||||
|
||||
//Mask the address to something valid
|
||||
if(vuu == &VU0)
|
||||
AND32ItoR(EAX, 0xfff);
|
||||
else
|
||||
AND32ItoR(EAX, 0x3fff);
|
||||
|
||||
if( (s_pCurBlock->type & BLOCKTYPE_HASEOP) || s_vu == 0 ) MOV32RtoM(SuperVUGetVIAddr(REG_TPC, 0), EAX);
|
||||
|
||||
if( !(s_pCurBlock->type & BLOCKTYPE_HASEOP) ) {
|
||||
|
@ -3876,6 +3882,12 @@ void recVUMI_JALR( VURegs* vuu, s32 info )
|
|||
int fsreg = _allocX86reg(-1, X86TYPE_VI|(s_vu?X86TYPE_VU1:0), _Fs_, MODE_READ);
|
||||
LEA32RStoR(EAX, fsreg, 3);
|
||||
|
||||
//Mask the address to something valid
|
||||
if(vuu == &VU0)
|
||||
AND32ItoR(EAX, 0xfff);
|
||||
else
|
||||
AND32ItoR(EAX, 0x3fff);
|
||||
|
||||
if ( _Ft_ ) {
|
||||
_deleteX86reg(X86TYPE_VI|(s_vu?X86TYPE_VU1:0), _Ft_, 2);
|
||||
MOV16ItoM( SuperVUGetVIAddr(_Ft_, 0), (pc+8)>>3 );
|
||||
|
|
Loading…
Reference in New Issue