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);
|
advance_fetcher_state_machine(gb, &cycles);
|
||||||
dma_sync(gb, &cycles);
|
dma_sync(gb, &cycles);
|
||||||
gb->object_low_line_address = get_object_line_address(gb,
|
gb->mode2_y_bus = oam_read(gb, gb->visible_objs[gb->n_visible_objs - 1] * 4 + 2);
|
||||||
gb->objects_y[gb->n_visible_objs - 1],
|
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->cycles_for_line += 2;
|
||||||
GB_SLEEP(gb, display, 20, 2);
|
GB_SLEEP(gb, display, 20, 2);
|
||||||
if (gb->object_fetch_aborted) {
|
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 */
|
/* TODO: timing not verified */
|
||||||
dma_sync(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,
|
||||||
|
gb->object_flags);
|
||||||
gb->object_tile_data[0] = vram_read(gb, gb->object_low_line_address);
|
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;
|
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->during_object_fetch = false;
|
||||||
gb->cycles_for_line++;
|
gb->cycles_for_line++;
|
||||||
GB_SLEEP(gb, display, 40, 1);
|
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;
|
uint8_t palette = (gb->object_flags & 0x10) ? 1 : 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user