mirror of https://github.com/PCSX2/pcsx2.git
microVU: Reverted original Xtreme G Racing 3 change as that was a hack, found the real problem. Evil jumps on E-bits, could it get any worse????
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@5604 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
9cc306c74f
commit
75284c9b76
|
@ -172,6 +172,15 @@ void normJumpCompile(mV, microFlagCycles& mFC, bool isEvilJump) {
|
|||
if (doJumpCaching) xMOV(gprT3, (uptr)mVUpBlock);
|
||||
else xMOV(gprT3, (uptr)&mVUpBlock->pStateEnd);
|
||||
|
||||
if(mVUup.eBit && isEvilJump)// E-bit EvilJump
|
||||
{
|
||||
//Xtreme G 3 does 2 conditional jumps, the first contains an E Bit on the first instruction
|
||||
//So if it is taken, you need to end the program, else you get infinite loops.
|
||||
mVUendProgram(mVU, &mFC, 2);
|
||||
xMOV(ptr32[&mVU.regs().VI[REG_TPC].UL], gprT2);
|
||||
xJMP(mVU.exitFunct);
|
||||
}
|
||||
|
||||
if (!mVU.index) xCALL(mVUcompileJIT<0>); //(u32 startPC, uptr pState)
|
||||
else xCALL(mVUcompileJIT<1>);
|
||||
|
||||
|
|
|
@ -1245,7 +1245,7 @@ void setBranchA(mP, int x, int _x_) {
|
|||
void condEvilBranch(mV, int JMPcc) {
|
||||
if (mVUlow.badBranch) {
|
||||
xMOV(ptr32[&mVU.branch], gprT1);
|
||||
xMOV(ptr32[&mVU.badBranch], branchAddr);
|
||||
xMOV(ptr32[&mVU.badBranch], branchAddrN);
|
||||
|
||||
xCMP(gprT1b, 0);
|
||||
xForwardJump8 cJMP((JccComparisonType)JMPcc);
|
||||
|
|
Loading…
Reference in New Issue