summaryrefslogtreecommitdiffstats
path: root/src/mame/machine/micro3d.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/machine/micro3d.cpp')
-rw-r--r--src/mame/machine/micro3d.cpp20
1 files changed, 7 insertions, 13 deletions
diff --git a/src/mame/machine/micro3d.cpp b/src/mame/machine/micro3d.cpp
index 5b4758b8767..a5103f2135b 100644
--- a/src/mame/machine/micro3d.cpp
+++ b/src/mame/machine/micro3d.cpp
@@ -125,18 +125,6 @@ static inline int64_t normalised_multiply(int32_t a, int32_t b)
return result >> 14;
}
-void micro3d_state::device_timer(emu_timer &timer, device_timer_id id, int param)
-{
- switch (id)
- {
- case TIMER_MAC_DONE:
- mac_done_callback(param);
- break;
- default:
- throw emu_fatalerror("Unknown id in micro3d_state::device_timer");
- }
-}
-
TIMER_CALLBACK_MEMBER(micro3d_state::mac_done_callback)
{
m_drmath->set_input_line(AM29000_INTR0, ASSERT_LINE);
@@ -334,7 +322,7 @@ void micro3d_state::micro3d_mac2_w(uint32_t data)
/* TODO: Calculate a better estimate for timing */
if (m_mac_stat)
- timer_set(attotime::from_hz(MAC_CLK) * mac_cycles, TIMER_MAC_DONE);
+ m_mac_done_timer->adjust(attotime::from_hz(MAC_CLK) * mac_cycles);
m_mrab11 = mrab11;
m_vtx_addr = vtx_addr;
@@ -530,9 +518,15 @@ void micro3d_state::init_botss()
init_micro3d();
}
+void micro3d_state::machine_start()
+{
+ m_mac_done_timer = timer_alloc(FUNC(micro3d_state::mac_done_callback), this);
+}
+
void micro3d_state::machine_reset()
{
m_vgb->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
m_drmath->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
m_audiocpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE);
+ m_mac_done_timer->adjust(attotime::never);
}