rendered paste bodyIndex: pcsx2/R3000A.h===================================================================--- pcsx2/R3000A.h (revision 3603)+++ pcsx2/R3000A.h (working copy)@@ -108,6 +108,7 @@ u32 pc; /* Program counter */ u32 code; /* The instruction */ u32 cycle;+ u32 cyclefrac; u32 interrupt; u32 sCycle[32]; // start cycle for signaled ints s32 eCycle[32]; // cycle delta for signaled ints (sCycle + eCycle == branch cycle)Index: pcsx2/x86/iR3000A.cpp===================================================================--- pcsx2/x86/iR3000A.cpp (revision 3603)+++ pcsx2/x86/iR3000A.cpp (working copy)@@ -1043,15 +1043,18 @@ } else {- xMOV(eax, ptr32[&psxRegs.cycle]);- xADD(eax, blockCycles);- xMOV(ptr32[&psxRegs.cycle], eax); // update cycles+ xADD(ptr32[&psxRegs.cyclefrac], blockCycles);+ xMOV(eax, ptr32[&psxRegs.cyclefrac]);+ xSHR(eax, 3);+ xADD(ptr32[&psxRegs.cycle], eax); // update cycles+ xAND(ptr32[&psxRegs.cyclefrac], 7); // jump if psxCycleEE <= 0 (iop's timeslice timed out, so time to return control to the EE)- xSUB(ptr32[&psxCycleEE], blockCycles*8);+ xSUB(ptr32[&psxCycleEE], blockCycles*1); xJLE(iopExitRecompiledCode); // check if an event is pending+ xMOV(eax, ptr32[&psxRegs.cycle]); xSUB(eax, ptr32[&g_psxNextBranchCycle]); xForwardJS<u8> nointerruptpending;