irobot.cpp, cedar_magnet_board.cpp: removed timer_set (nw)

This commit is contained in:
Ivan Vangelista 2018-07-11 21:57:42 +02:00
parent 015f9dbdda
commit e2e46aa126
4 changed files with 23 additions and 8 deletions

View File

@ -112,6 +112,7 @@ private:
int m_ir_ymin;
int m_ir_xmax;
int m_ir_ymax;
emu_timer *m_scanline_timer;
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;

View File

@ -57,25 +57,33 @@ void cedar_magnet_board_interface::irq_hold()
void cedar_magnet_board_interface::halt_assert()
{
device().machine().scheduler().timer_set(attotime::from_usec(2), timer_expired_delegate(FUNC(cedar_magnet_board_interface::halt_assert_callback),this));
m_halt_assert_timer->adjust(attotime::from_usec(2));
}
void cedar_magnet_board_interface::halt_clear()
{
device().machine().scheduler().timer_set(attotime::from_usec(2), timer_expired_delegate(FUNC(cedar_magnet_board_interface::halt_clear_callback),this));
m_halt_clear_timer->adjust(attotime::from_usec(2));
}
void cedar_magnet_board_interface::reset_assert()
{
device().machine().scheduler().timer_set(attotime::from_usec(1), timer_expired_delegate(FUNC(cedar_magnet_board_interface::reset_assert_callback),this));
m_reset_assert_timer->adjust(attotime::from_usec(1));
}
void cedar_magnet_board_interface::reset_clear()
{
device().machine().scheduler().timer_set(attotime::from_usec(1), timer_expired_delegate(FUNC(cedar_magnet_board_interface::reset_clear_callback),this));
m_reset_clear_timer->adjust(attotime::from_usec(1));
}
void cedar_magnet_board_interface::interface_pre_reset()
{
halt_assert();
}
void cedar_magnet_board_interface::interface_pre_start()
{
m_halt_assert_timer = device().machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(cedar_magnet_board_interface::halt_assert_callback), this));
m_halt_clear_timer = device().machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(cedar_magnet_board_interface::halt_clear_callback), this));
m_reset_assert_timer = device().machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(cedar_magnet_board_interface::reset_assert_callback), this));
m_reset_clear_timer = device().machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(cedar_magnet_board_interface::reset_clear_callback), this));
}

View File

@ -32,6 +32,7 @@ public:
protected:
virtual void interface_pre_reset() override;
virtual void interface_pre_start() override;
virtual TIMER_CALLBACK_MEMBER(reset_assert_callback);
@ -44,6 +45,10 @@ private:
TIMER_CALLBACK_MEMBER(reset_clear_callback);
bool m_is_running;
emu_timer *m_halt_assert_timer;
emu_timer *m_halt_clear_timer;
emu_timer *m_reset_assert_timer;
emu_timer *m_reset_clear_timer;
};
#endif // MAME_MACHINE_CEDAR_MAGNET_BOARD_H

View File

@ -160,7 +160,7 @@ TIMER_CALLBACK_MEMBER(irobot_state::scanline_callback)
/* set a callback for the next 32-scanline increment */
scanline += 32;
if (scanline >= 256) scanline = 0;
machine().scheduler().timer_set(m_screen->time_until_pos(scanline), timer_expired_delegate(FUNC(irobot_state::scanline_callback),this), scanline);
m_scanline_timer->adjust(m_screen->time_until_pos(scanline), scanline);
}
void irobot_state::machine_start()
@ -168,6 +168,10 @@ void irobot_state::machine_start()
m_leds.resolve();
m_vg_clear = 0;
m_statwr = 0;
/* set an initial timer to go off on scanline 0 */
m_scanline_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(irobot_state::scanline_callback), this));
m_scanline_timer->adjust(m_screen->time_until_pos(0));
}
void irobot_state::machine_reset()
@ -184,9 +188,6 @@ void irobot_state::machine_reset()
m_irvg_running = 0;
m_irmb_running = 0;
/* set an initial timer to go off on scanline 0 */
machine().scheduler().timer_set(m_screen->time_until_pos(0), timer_expired_delegate(FUNC(irobot_state::scanline_callback),this));
address_space &space = machine().dummy_space();
irobot_rom_banksel_w(space, 0, 0);
irobot_out0_w(space, 0, 0);