static TIMER_CALLBACK( vblank_interrupt_callback ) { neogeo_state *state = machine.driver_data<neogeo_state>(); if (LOG_VIDEO_SYSTEM) logerror("+++ VBLANK @ %d,%d\n", machine.primary_screen->vpos(), machine.primary_screen->hpos()); /* add a timer tick to the pd4990a */ upd4990a_addretrace(state->m_upd4990a); state->m_vblank_interrupt_pending = 1; update_interrupts(machine); /* set timer for next screen */ state->m_vblank_interrupt_timer->adjust(machine.primary_screen->time_until_pos(NEOGEO_VBSTART)); }
static TIMER_CALLBACK( vblank_interrupt_callback ) { const device_config *upd4990a = devtag_get_device(machine, "upd4990a"); if (LOG_VIDEO_SYSTEM) logerror("+++ VBLANK @ %d,%d\n", video_screen_get_vpos(machine->primary_screen), video_screen_get_hpos(machine->primary_screen)); /* add a timer tick to the pd4990a */ upd4990a_addretrace(upd4990a); vblank_interrupt_pending = 1; update_interrupts(machine); /* set timer for next screen */ timer_adjust_oneshot(vblank_interrupt_timer, video_screen_get_time_until_pos(machine->primary_screen, NEOGEO_VBSTART, 0), 0); }