diff --git a/pcsx2/VUops.cpp b/pcsx2/VUops.cpp index 0c35419313..23dc3a31c0 100644 --- a/pcsx2/VUops.cpp +++ b/pcsx2/VUops.cpp @@ -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); } diff --git a/pcsx2/x86/microVU_Compile.inl b/pcsx2/x86/microVU_Compile.inl index dad945817a..d9544fcb1a 100644 --- a/pcsx2/x86/microVU_Compile.inl +++ b/pcsx2/x86/microVU_Compile.inl @@ -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; }