diff --git a/CHANGES b/CHANGES index e93d191bd..726d41b64 100644 --- a/CHANGES +++ b/CHANGES @@ -26,6 +26,7 @@ Bugfixes: - GBA Memory: Fix VCOUNT being writable - GBA Memory: Improve initial skipped BIOS state - Qt: Only reset window dimensions when first shown + - GB Memory: Fix starting HDMAs during mode 0 Misc: - SDL: Remove scancode key input - GBA Video: Clean up unused timers diff --git a/src/gb/memory.c b/src/gb/memory.c index 275dab1de..0f874030b 100644 --- a/src/gb/memory.c +++ b/src/gb/memory.c @@ -394,7 +394,7 @@ void GBMemoryWriteHDMA5(struct GB* gb, uint8_t value) { gb->memory.hdmaDest |= 0x8000; bool wasHdma = gb->memory.isHdma; gb->memory.isHdma = value & 0x80; - if (!wasHdma && !gb->memory.isHdma) { + if ((!wasHdma && !gb->memory.isHdma) || gb->video.mode == 0) { gb->memory.hdmaRemaining = ((value & 0x7F) + 1) * 0x10; gb->memory.hdmaNext = gb->cpu->cycles; gb->cpu->nextEvent = gb->cpu->cycles;