lightrec: Improve hack around icache emulation
authorPaul Cercueil <paul@crapouillou.net>
Sun, 26 Nov 2023 14:04:07 +0000 (15:04 +0100)
committernotaz <notasas@gmail.com>
Sun, 26 Nov 2023 22:07:09 +0000 (00:07 +0200)
Invalidate the whole code buffer on each call to the .clear callback.
This fixes a crash after finishing a race in F1 Arcade, and does not
seem to cause issues with the other F1 games.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
libpcsxcore/lightrec/plugin.c

index 70d01bf..27fdc47 100644 (file)
@@ -571,7 +571,8 @@ static void lightrec_plugin_execute_block(enum blockExecCaller caller)
 
 static void lightrec_plugin_clear(u32 addr, u32 size)
 {
-       if (addr == 0 && size == UINT32_MAX)
+       if ((addr == 0 && size == UINT32_MAX)
+           || (lightrec_hacks & LIGHTREC_OPT_INV_DMA_ONLY))
                lightrec_invalidate_all(lightrec_state);
        else
                /* size * 4: PCSX uses DMA units */