Starting G/HDMA directly takes one more M-cycle (More research required)

This commit is contained in:
Lior Halphon 2018-09-15 00:48:31 +03:00
parent dbc338a887
commit 11c148c851

View File

@ -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?