X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=libpcsxcore%2Flightrec%2Fplugin.c;h=27fdc4763d54f56ea3465617b8f510fd0f2492a8;hb=fcf8c153c82b4539cc3bcb80666813843dcaa3fc;hp=22342fef94838eaf67b22d143be450fb9e0a4f7a;hpb=909bfa63d2b065893bfaf2fa2e4491eb1410db9d;p=pcsx_rearmed.git diff --git a/libpcsxcore/lightrec/plugin.c b/libpcsxcore/lightrec/plugin.c index 22342fef..27fdc476 100644 --- a/libpcsxcore/lightrec/plugin.c +++ b/libpcsxcore/lightrec/plugin.c @@ -335,6 +335,14 @@ static void lightrec_enable_ram(struct lightrec_state *state, bool enable) static bool lightrec_can_hw_direct(u32 kaddr, bool is_write, u8 size) { + if (is_write && size != 32) { + // force32 so must go through handlers + if (0x1f801000 <= kaddr && kaddr < 0x1f801024) + return false; + if ((kaddr & 0x1fffff80) == 0x1f801080) // dma + return false; + } + switch (size) { case 8: switch (kaddr) { @@ -563,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 */