diff --git a/Core/memory.c b/Core/memory.c index af2d3e9..4053530 100644 --- a/Core/memory.c +++ b/Core/memory.c @@ -833,7 +833,6 @@ static void write_high_memory(GB_gameboy_t *gb, uint16_t addr, uint8_t value) gb->hdma_on_hblank = (value & 0x80) != 0; if (gb->hdma_on_hblank && (gb->io_registers[GB_IO_STAT] & 3) == 0) { gb->hdma_on = true; - gb->hdma_cycles = -8; } gb->io_registers[GB_IO_HDMA5] = value; gb->hdma_steps_left = (gb->io_registers[GB_IO_HDMA5] & 0x7F) + 1; @@ -841,7 +840,7 @@ static void write_high_memory(GB_gameboy_t *gb, uint16_t addr, uint8_t value) if (gb->hdma_current_dest + (gb->hdma_steps_left << 4) > 0xFFFF) { gb->hdma_steps_left = (0x10000 - gb->hdma_current_dest) >> 4; } - gb->hdma_cycles = -8; + gb->hdma_cycles = -12; return; /* Todo: what happens when starting a transfer during a transfer?