From 633fb0f555c29f19f6c7a875ee50f121a627ab12 Mon Sep 17 00:00:00 2001 From: Arisotura Date: Tue, 26 Mar 2019 18:34:01 +0100 Subject: NDSCart: KEY1-gap delays don't apply when the WR bit is set. fixes #377 --- src/NDSCart.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/NDSCart.cpp b/src/NDSCart.cpp index a98f8c8..4266639 100644 --- a/src/NDSCart.cpp +++ b/src/NDSCart.cpp @@ -1260,8 +1260,14 @@ void WriteROMCnt(u32 val) // TODO: advance read position if bit28 is set u32 xfercycle = (ROMCnt & (1<<27)) ? 8 : 5; - u32 cmddelay = 8 + (ROMCnt & 0x1FFF); - if (datasize) cmddelay += ((ROMCnt >> 16) & 0x3F); + u32 cmddelay = 8; + + // delays are only applied when the WR bit is cleared + if (!(ROMCnt & (1<<30))) + { + cmddelay += (ROMCnt & 0x1FFF); + if (datasize) cmddelay += ((ROMCnt >> 16) & 0x3F); + } if (datasize == 0) NDS::ScheduleEvent(NDS::Event_ROMTransfer, false, xfercycle*cmddelay, ROMEndTransfer, 0); -- cgit v1.2.3