VU: Correct XGKick timing when using XGKickSync

This commit is contained in:
refractionpcsx2 2022-12-04 15:35:49 +00:00
parent eedea5cbf7
commit 40cb41399f
2 changed files with 6 additions and 2 deletions

View File

@ -2721,7 +2721,9 @@ static __ri void _vuXGKICK(VURegs* VU)
VU->xgkicksizeremaining = 0;
VU->xgkickendpacket = false;
VU->xgkicklastcycle = VU->cycle;
VU->xgkickcyclecount = 0;
// XGKick command counts as one cycle for the transfer.
// Can be tested with Resident Evil: Outbreak, Kingdom Hearts, CART Fury.
VU->xgkickcyclecount = 1;
VU0.VI[REG_VPU_STAT].UL |= (1 << 12);
VUM_LOG("XGKICK addr %x", addr);
}

View File

@ -681,7 +681,9 @@ void* mVUcompile(microVU& mVU, u32 startPC, uptr pState)
}
else
{
mVUregs.xgkickcycles = 0;
// XGKick command counts as one cycle for the transfer.
// Can be tested with Resident Evil: Outbreak, Kingdom Hearts, CART Fury.
mVUregs.xgkickcycles = 1;
mVUlow.kickcycles = 0;
}