Fix second instance runahead without breaking reset
authorZachary Cook <zachcook1991@gmail.com>
Fri, 21 Feb 2020 01:17:27 +0000 (20:17 -0500)
committerZachary Cook <zachcook1991@gmail.com>
Fri, 21 Feb 2020 17:28:59 +0000 (12:28 -0500)
libpcsxcore/lightrec/plugin.c
libpcsxcore/misc.c

index 64587be..8c64c67 100644 (file)
@@ -553,8 +553,11 @@ static void lightrec_plugin_execute(void)
 
 static void lightrec_plugin_clear(u32 addr, u32 size)
 {
-       /* size * 4: PCSX uses DMA units */
-       lightrec_invalidate(lightrec_state, addr, size * 4);
+       if (addr == 0 && size == UINT32_MAX)
+               lightrec_invalidate_all(lightrec_state);
+       else
+               /* size * 4: PCSX uses DMA units */
+               lightrec_invalidate(lightrec_state, addr, size * 4);
 }
 
 static void lightrec_plugin_shutdown(void)
index 56b7552..d877513 100644 (file)
@@ -657,6 +657,11 @@ int LoadState(const char *file) {
        if (Config.HLE)
                psxBiosInit();
 
+#if defined(LIGHTREC)
+       if (Config.Cpu != CPU_INTERPRETER)
+               psxCpu->Clear(0, UINT32_MAX); //clear all
+       else
+#endif
        psxCpu->Reset();
        SaveFuncs.seek(f, 128 * 96 * 3, SEEK_CUR);