Timing adjustments to object line address calculation

This commit is contained in:
Lior Halphon 2023-02-19 00:32:16 +02:00
parent 29e920697a
commit f145f05f15
1 changed files with 8 additions and 5 deletions

View File

@ -1826,14 +1826,17 @@ void GB_display_run(GB_gameboy_t *gb, unsigned cycles, bool force)
gb->during_object_fetch = false;
gb->cycles_for_line++;
gb->object_low_line_address = get_object_line_address(gb,
gb->objects_y[gb->n_visible_objs - 1],
gb->mode2_y_bus,
gb->object_flags);
GB_SLEEP(gb, display, 40, 1);
/* TODO: timing not verified */
/* TODO: timing not verified. Probably happens a cycle earlier, but needs to verify it doesn't
break any DMA tests. { */
dma_sync(gb, &cycles);
gb->object_tile_data[1] = vram_read(gb, get_object_line_address(gb,
gb->objects_y[gb->n_visible_objs - 1],
gb->mode2_y_bus,
gb->object_flags) + 1);
gb->object_tile_data[1] = vram_read(gb, gb->object_low_line_address + 1);
/* } */
uint8_t palette = (gb->object_flags & 0x10) ? 1 : 0;