From 4db465e60d52ad24a267a88217feff880386ddea Mon Sep 17 00:00:00 2001 From: Jaklyy <102590697+Jaklyy@users.noreply.github.com> Date: Wed, 13 Nov 2024 20:57:00 -0500 Subject: [PATCH] some fixes to write buffer and icache prefetch --- src/CP15.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/CP15.cpp b/src/CP15.cpp index 6c4af0ac..085ba6fa 100644 --- a/src/CP15.cpp +++ b/src/CP15.cpp @@ -1331,14 +1331,18 @@ void ARMv5::WriteBufferWrite(u32 val, u8 flag, u32 addr) if (WBFillPointer == WBWritePointer) // if the write buffer is full then we stall the cpu until room is made WriteBufferHandle<1>(); - else if (WBWritePointer == 16 && (flag != 4)) // indicates empty write buffer + else if (WBWritePointer == 16) // indicates empty write buffer { WBWritePointer = 0; - u64 ts = (NDS.ARM9Regions[addr>>14] == Mem9_MainRAM) ? std::max(MainRAMTimestamp, NDS.ARM9Timestamp + 1) : NDS.ARM9Timestamp + 1; + if (!WBWriting) + { + u64 ts = ((NDS.ARM9Regions[addr>>14] == Mem9_MainRAM) ? std::max(MainRAMTimestamp, (NDS.ARM9Timestamp + 1)) : (NDS.ARM9Timestamp + 1)); - if (!WBWriting && (WBTimestamp < ((ts + ((1<