mirror of https://github.com/PCSX2/pcsx2.git
microVU: Changed some VU0 syncing stuff. mVU0 will only exit out early from recompilation for syncing whenever mBit has been set, instead of all the time.
This is a nice speedup in Nanobreaker, as well as fixes the constant recompilation problem. If anything breaks with this let me know :) git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1662 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
cd5934fb57
commit
75a688a530
|
@ -78,14 +78,17 @@ void _vu0WaitMicro() {
|
|||
VU0.flags|= VUFLAG_BREAKONMFLAG;
|
||||
VU0.flags&= ~VUFLAG_MFLAGSET;
|
||||
|
||||
do {
|
||||
CpuVU0.ExecuteBlock();
|
||||
// knockout kings 2002 loops here
|
||||
if( VU0.cycle-startcycle > 0x1000 ) {
|
||||
Console::Notice("VU0 perma-stall, breaking execution..."); // (email zero if gfx are bad)
|
||||
break;
|
||||
}
|
||||
} while ((VU0.VI[REG_VPU_STAT].UL & 0x1) && (VU0.flags & VUFLAG_MFLAGSET) == 0);
|
||||
if (!CHECK_MICROVU0) {
|
||||
do {
|
||||
CpuVU0.ExecuteBlock();
|
||||
// knockout kings 2002 loops here
|
||||
if( VU0.cycle-startcycle > 0x1000 ) {
|
||||
Console::Notice("VU0 perma-stall, breaking execution..."); // (email zero if gfx are bad)
|
||||
break;
|
||||
}
|
||||
} while ((VU0.VI[REG_VPU_STAT].UL & 0x1) && (VU0.flags & VUFLAG_MFLAGSET) == 0);
|
||||
}
|
||||
else CpuVU0.ExecuteBlock(); // Note: Need to test Knockout Kings 2002 with mVU!
|
||||
|
||||
//NEW
|
||||
cpuRegs.cycle += (VU0.cycle-startcycle)*2;
|
||||
|
|
|
@ -285,16 +285,19 @@ void __fastcall mVUprintPC1(u32 PC) { Console::Write("Block PC [%04x] ", params
|
|||
void __fastcall mVUprintPC2(u32 PC) { Console::Write("[%04x]\n", params PC); }
|
||||
|
||||
microVUt(void) mVUtestCycles(mV) {
|
||||
u32* vu0jmp;
|
||||
iPC = mVUstartPC;
|
||||
mVUdebugNOW(0);
|
||||
SUB32ItoM((uptr)&mVU->cycles, mVUcycles);
|
||||
if (IsDevBuild || !isVU1) {
|
||||
u32* jmp32 = JG32(0);
|
||||
if (!isVU1) { AND32ItoM((uptr)&mVU->regs->flags, VUFLAG_MFLAGSET); vu0jmp = JZ32(0); }
|
||||
MOV32ItoR(gprT2, (uptr)mVU);
|
||||
if (isVU1) CALLFunc((uptr)mVUwarning1);
|
||||
//else CALLFunc((uptr)mVUwarning0); // VU0 is allowed early exit for COP2 Interlock Simulation
|
||||
MOV32ItoR(gprR, Roffset); // Restore gprR
|
||||
mVUendProgram(mVU, NULL, 0);
|
||||
if (!isVU1) x86SetJ32(vu0jmp);
|
||||
x86SetJ32(jmp32);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue