all repos — mgba @ 3c5db2b7a160108b1296e2435944136ee60796f4

mGBA Game Boy Advance Emulator

GBA Memory: Ensure changing the timing of a DMA reschedules it
Jeffrey Pfau jeffrey@endrift.com
Mon, 06 Apr 2015 03:47:42 -0700
commit

3c5db2b7a160108b1296e2435944136ee60796f4

parent

7ed38b0a6d07b8f90a6c420c5cfc01bf70c42fca

2 files changed, 6 insertions(+), 0 deletions(-)

jump to
M CHANGESCHANGES

@@ -6,6 +6,7 @@ - Qt: Fix Display object leak when closing a window

- Qt: Fix .deb dependencies - GBA Audio: FIFOs should not poll DMAs that are not scheduled for audio - Qt: Fix "QOpenGLContext::swapBuffers() called with non-exposed window" warning + - GBA Memory: Ensure changing the timing of a DMA reschedules it 0.2.0: (2015-04-03) Features:
M src/gba/memory.csrc/gba/memory.c

@@ -1252,6 +1252,11 @@ uint16_t GBAMemoryWriteDMACNT_HI(struct GBA* gba, int dma, uint16_t control) {

struct GBAMemory* memory = &gba->memory; struct GBADMA* currentDma = &memory->dma[dma]; int wasEnabled = GBADMARegisterIsEnable(currentDma->reg); + int oldTiming = GBADMARegisterGetTiming(currentDma->reg); + int newTiming = GBADMARegisterGetTiming(control); + if (oldTiming && oldTiming != newTiming) { + wasEnabled = false; + } currentDma->reg = control; if (GBADMARegisterIsDRQ(currentDma->reg)) {