From ef2b6c78ff28f1adfff85ab21620eec598c5fbde Mon Sep 17 00:00:00 2001 From: Vicki Pfau Date: Fri, 22 Feb 2019 18:49:23 -0800 Subject: [PATCH] GBA DMA: Fix DMA start/end timing --- CHANGES | 1 + src/gba/dma.c | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGES b/CHANGES index c9646faf8..362272cfd 100644 --- a/CHANGES +++ b/CHANGES @@ -20,6 +20,7 @@ Bugfixes: - Python: Fix crash when deleting files owned by library - Python: Make sure GB link object isn't GC'd before GB object - GBA DMA: Fix Display Start DMAs + - GBA DMA: Fix DMA start/end timing Misc: - GBA Savedata: EEPROM performance fixes - GBA Savedata: Automatically map 1Mbit Flash files as 1Mbit Flash diff --git a/src/gba/dma.c b/src/gba/dma.c index 3aad223ea..eb66635c4 100644 --- a/src/gba/dma.c +++ b/src/gba/dma.c @@ -237,9 +237,6 @@ void GBADMAService(struct GBA* gba, int number, struct GBADMA* info) { gba->cpuBlocked = true; if (info->count == info->nextCount) { - if (sourceRegion < REGION_CART0 || destRegion < REGION_CART0) { - cycles += 2; - } if (width == 4) { cycles += memory->waitstatesNonseq32[sourceRegion] + memory->waitstatesNonseq32[destRegion]; } else { @@ -302,6 +299,9 @@ void GBADMAService(struct GBA* gba, int number, struct GBADMA* info) { info->nextDest = dest; if (!wordsRemaining) { info->nextCount |= 0x80000000; + if (sourceRegion < REGION_CART0 || destRegion < REGION_CART0) { + info->when += 2; + } } GBADMAUpdate(gba); }