diff options
author | Arisotura <thetotalworm@gmail.com> | 2019-03-26 18:34:01 +0100 |
---|---|---|
committer | Arisotura <thetotalworm@gmail.com> | 2019-03-26 18:34:01 +0100 |
commit | 633fb0f555c29f19f6c7a875ee50f121a627ab12 (patch) | |
tree | 4f6d110014fad4acffaff567dc18e0048706ab02 /src | |
parent | 5941d57236382619f08a9c5d0bd9941ea73d3c2b (diff) |
NDSCart: KEY1-gap delays don't apply when the WR bit is set. fixes #377
Diffstat (limited to 'src')
-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); |