some timer_set removal (nw)

This commit is contained in:
Ivan Vangelista 2017-05-05 18:44:44 +02:00
parent 536990e77b
commit 4d69550c26
5 changed files with 11 additions and 4 deletions

View File

@ -156,6 +156,7 @@ INPUT_CHANGED_MEMBER(segag80r_state::service_switch)
void segag80r_state::machine_start()
{
m_vblank_latch_clear_timer = timer_alloc(TIMER_VBLANK_LATCH_CLEAR);
/* register for save states */
}

View File

@ -48,6 +48,8 @@ public:
uint8_t m_firq_select;
uint8_t m_palettebank_io;
uint8_t m_palettebank_vis;
emu_timer *m_beam_firq_timer;
emu_timer *m_collide_firq_timer;
DECLARE_WRITE8_MEMBER(bankram_w);
DECLARE_READ8_MEMBER(exidy440_input_port_3_r);
DECLARE_READ8_MEMBER(sound_command_ack_r);

View File

@ -158,6 +158,7 @@ public:
protected:
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
emu_timer *m_vblank_latch_clear_timer;
};

View File

@ -50,6 +50,9 @@ VIDEO_START_MEMBER(exidy440_state,exidy440)
/* allocate a buffer for palette RAM */
m_local_paletteram = std::make_unique<uint8_t[]>(512 * 2);
memset(m_local_paletteram.get(), 0, 512 * 2);
m_collide_firq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(exidy440_state::collide_firq_callback), this));
m_beam_firq_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(exidy440_state::beam_firq_callback), this));
}
@ -349,7 +352,7 @@ void exidy440_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, c
/* check the collisions bit */
if (check_collision && (palette[2 * pen] & 0x80) && (count++ < 128))
screen.machine().scheduler().timer_set(screen.time_until_pos(yoffs, currx), timer_expired_delegate(FUNC(exidy440_state::collide_firq_callback), this), currx);
m_collide_firq_timer->adjust(screen.time_until_pos(yoffs, currx), currx);
}
currx++;
@ -362,7 +365,7 @@ void exidy440_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, c
/* check the collisions bit */
if (check_collision && (palette[2 * pen] & 0x80) && (count++ < 128))
screen.machine().scheduler().timer_set(screen.time_until_pos(yoffs, currx), timer_expired_delegate(FUNC(exidy440_state::collide_firq_callback), this), currx);
m_collide_firq_timer->adjust(screen.time_until_pos(yoffs, currx), currx);
}
currx++;
}
@ -430,7 +433,7 @@ uint32_t exidy440_state::screen_update_exidy440(screen_device &screen, bitmap_in
attotime time = screen.time_until_pos(beamy, beamx) - increment * 6;
for (i = 0; i <= 12; i++)
{
machine().scheduler().timer_set(time, timer_expired_delegate(FUNC(exidy440_state::beam_firq_callback),this), beamx);
m_beam_firq_timer->adjust(time, beamx);
time += increment;
}
}

View File

@ -39,7 +39,7 @@ void segag80r_state::vblank_latch_set()
/* set a timer to mimic the 555 timer that drives the EDGINT signal */
/* the 555 is run in monostable mode with R=56000 and C=1000pF */
m_vblank_latch = 1;
timer_set(PERIOD_OF_555_MONOSTABLE(CAP_P(1000), RES_K(56)), TIMER_VBLANK_LATCH_CLEAR);
m_vblank_latch_clear_timer->adjust(PERIOD_OF_555_MONOSTABLE(CAP_P(1000), RES_K(56)));
/* latch the current flip state at the same time */
m_video_flip = m_video_control & 1;