From e2e46aa126d32179b9675f56776d26f3e6c02ab3 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Wed, 11 Jul 2018 21:57:42 +0200 Subject: [PATCH] irobot.cpp, cedar_magnet_board.cpp: removed timer_set (nw) --- src/mame/includes/irobot.h | 1 + src/mame/machine/cedar_magnet_board.cpp | 16 ++++++++++++---- src/mame/machine/cedar_magnet_board.h | 5 +++++ src/mame/machine/irobot.cpp | 9 +++++---- 4 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/mame/includes/irobot.h b/src/mame/includes/irobot.h index 605693f8a50..5bb51104587 100644 --- a/src/mame/includes/irobot.h +++ b/src/mame/includes/irobot.h @@ -112,6 +112,7 @@ private: int m_ir_ymin; int m_ir_xmax; int m_ir_ymax; + emu_timer *m_scanline_timer; required_device m_maincpu; required_device m_gfxdecode; diff --git a/src/mame/machine/cedar_magnet_board.cpp b/src/mame/machine/cedar_magnet_board.cpp index 5ed1364246d..700dbf8d193 100644 --- a/src/mame/machine/cedar_magnet_board.cpp +++ b/src/mame/machine/cedar_magnet_board.cpp @@ -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)); +} \ No newline at end of file diff --git a/src/mame/machine/cedar_magnet_board.h b/src/mame/machine/cedar_magnet_board.h index de063591ea4..b0684e9bbdc 100644 --- a/src/mame/machine/cedar_magnet_board.h +++ b/src/mame/machine/cedar_magnet_board.h @@ -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 diff --git a/src/mame/machine/irobot.cpp b/src/mame/machine/irobot.cpp index cf0881456b2..755f29e8312 100644 --- a/src/mame/machine/irobot.cpp +++ b/src/mame/machine/irobot.cpp @@ -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);