Fix a regression while emulating object size change during fetch
This commit is contained in:
parent
bef1529bb2
commit
36e2896ec7
@ -1656,12 +1656,9 @@ void GB_display_run(GB_gameboy_t *gb, unsigned cycles, bool force)
|
||||
|
||||
advance_fetcher_state_machine(gb, &cycles);
|
||||
dma_sync(gb, &cycles);
|
||||
gb->object_low_line_address = get_object_line_address(gb,
|
||||
gb->objects_y[gb->n_visible_objs - 1],
|
||||
gb->mode2_y_bus = oam_read(gb, gb->visible_objs[gb->n_visible_objs - 1] * 4 + 2),
|
||||
gb->object_flags = oam_read(gb, gb->visible_objs[gb->n_visible_objs - 1] * 4 + 3)
|
||||
);
|
||||
|
||||
gb->mode2_y_bus = oam_read(gb, gb->visible_objs[gb->n_visible_objs - 1] * 4 + 2);
|
||||
gb->object_flags = oam_read(gb, gb->visible_objs[gb->n_visible_objs - 1] * 4 + 3);
|
||||
|
||||
gb->cycles_for_line += 2;
|
||||
GB_SLEEP(gb, display, 20, 2);
|
||||
if (gb->object_fetch_aborted) {
|
||||
@ -1670,6 +1667,10 @@ void GB_display_run(GB_gameboy_t *gb, unsigned cycles, bool force)
|
||||
|
||||
/* TODO: timing not verified */
|
||||
dma_sync(gb, &cycles);
|
||||
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->object_tile_data[0] = vram_read(gb, gb->object_low_line_address);
|
||||
|
||||
|
||||
@ -1679,14 +1680,16 @@ void GB_display_run(GB_gameboy_t *gb, unsigned cycles, bool force)
|
||||
goto abort_fetching_object;
|
||||
}
|
||||
|
||||
/* TODO: timing not verified */
|
||||
dma_sync(gb, &cycles);
|
||||
gb->object_tile_data[1] = vram_read(gb, gb->object_low_line_address + 1);
|
||||
|
||||
|
||||
gb->during_object_fetch = false;
|
||||
gb->cycles_for_line++;
|
||||
GB_SLEEP(gb, display, 40, 1);
|
||||
|
||||
/* TODO: timing not verified */
|
||||
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);
|
||||
|
||||
|
||||
uint8_t palette = (gb->object_flags & 0x10) ? 1 : 0;
|
||||
|
Loading…
Reference in New Issue
Block a user