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<