diff options
Diffstat (limited to 'src/NDSCart.cpp')
-rw-r--r-- | src/NDSCart.cpp | 10 |
1 files 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); |