diff --git a/Core/HLE/sceKernelModule.cpp b/Core/HLE/sceKernelModule.cpp index 38b307b417..575f9c0a83 100644 --- a/Core/HLE/sceKernelModule.cpp +++ b/Core/HLE/sceKernelModule.cpp @@ -1646,8 +1646,11 @@ bool __KernelLoadGEDump(std::string *error_string) { const static u32_le runDumpCode[] = { MIPS_MAKE_LUI(MIPS_REG_RA, mipsr4k.pc >> 16), - MIPS_MAKE_JR_RA(), MIPS_MAKE_SYSCALL("FakeSysCalls", "__KernelGPUReplay"), + MIPS_MAKE_LUI(MIPS_REG_A0, 0), + MIPS_MAKE_SYSCALL("sceGe_user", "sceGeDrawSync"), + MIPS_MAKE_JR_RA(), + MIPS_MAKE_SYSCALL("sceDisplay", "sceDisplayWaitVblankStart"), MIPS_MAKE_BREAK(0), }; @@ -1671,13 +1674,9 @@ bool __KernelLoadGEDump(std::string *error_string) { } void __KernelGPUReplay() { - u64 destTicks = CoreTiming::GetTicks() + msToCycles(1001.0f / 60.0f); if (!GPURecord::RunMountedReplay()) { Core_Stop(); } - if (destTicks < CoreTiming::GetTicks()) { - hleEatCycles(destTicks - CoreTiming::GetTicks()); - } } int sceKernelLoadExec(const char *filename, u32 paramPtr) diff --git a/GPU/Debugger/Record.cpp b/GPU/Debugger/Record.cpp index 61062a2f0c..8375c67b8b 100644 --- a/GPU/Debugger/Record.cpp +++ b/GPU/Debugger/Record.cpp @@ -675,6 +675,9 @@ static bool ExecuteSubmitCmds(void *p, u32 sz) { execListQueue.clear(); + // Make sure downcount doesn't overflow. + CoreTiming::ForceCheck(); + return true; }