From 2a388ba785a185e5c2ae00ce3d00f275f3b1e0bc Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Sun, 4 Jun 2017 09:17:01 -0700 Subject: [PATCH] GE Debugger: Fix replay FPS. --- Core/HLE/sceKernelModule.cpp | 9 ++++----- GPU/Debugger/Record.cpp | 3 +++ 2 files changed, 7 insertions(+), 5 deletions(-) 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; }