From be9bc0274219fe6b5e76d5042ebe5d99adefb9f6 Mon Sep 17 00:00:00 2001 From: cam900 Date: Mon, 6 May 2019 22:46:10 +0900 Subject: [PATCH] deco_irq.cpp : Updates Simplify handlers, Fix debugger issue, Use shorter / correct type values --- src/mame/machine/deco_irq.cpp | 31 ++++++++++++++++++------------- src/mame/machine/deco_irq.h | 18 ++++++++++-------- 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/src/mame/machine/deco_irq.cpp b/src/mame/machine/deco_irq.cpp index 28144df49c3..c8cef7fc0fe 100644 --- a/src/mame/machine/deco_irq.cpp +++ b/src/mame/machine/deco_irq.cpp @@ -90,7 +90,7 @@ void deco_irq_device::device_reset() TIMER_CALLBACK_MEMBER( deco_irq_device::scanline_callback ) { const rectangle visible = m_screen->visible_area(); - uint16_t y = m_screen->vpos(); + const u16 y = m_screen->vpos(); // raster irq? if (m_raster_irq_scanline >= visible.top() && m_raster_irq_scanline <= visible.bottom() && y == m_raster_irq_scanline) @@ -130,6 +130,13 @@ TIMER_CALLBACK_MEMBER( deco_irq_device::scanline_callback ) // INTERFACE //************************************************************************** +void deco_irq_device::raster_irq_ack() +{ + m_raster_irq = false; + m_raster1_irq_cb(CLEAR_LINE); + m_raster2_irq_cb(CLEAR_LINE); +} + void deco_irq_device::map(address_map &map) { map(0x0, 0x0).w(FUNC(deco_irq_device::control_w)); @@ -138,7 +145,7 @@ void deco_irq_device::map(address_map &map) map(0x3, 0x3).r(FUNC(deco_irq_device::status_r)); } -WRITE8_MEMBER( deco_irq_device::control_w ) +void deco_irq_device::control_w(u8 data) { // 765----- unused? // ---4---- raster irq target @@ -151,37 +158,35 @@ WRITE8_MEMBER( deco_irq_device::control_w ) m_raster_irq_masked = bool(BIT(data, 1)); if (m_raster_irq_masked) - raster_irq_ack_r(space, 0); + raster_irq_ack(); } -READ8_MEMBER( deco_irq_device::scanline_r ) +u8 deco_irq_device::scanline_r() { return m_raster_irq_scanline; } -WRITE8_MEMBER( deco_irq_device::scanline_w ) +void deco_irq_device::scanline_w(u8 data) { m_raster_irq_scanline = data; } -READ8_MEMBER( deco_irq_device::raster_irq_ack_r ) +u8 deco_irq_device::raster_irq_ack_r() { - m_raster_irq = false; - m_raster1_irq_cb(CLEAR_LINE); - m_raster2_irq_cb(CLEAR_LINE); - + if (!machine().side_effects_disabled()) + raster_irq_ack(); return 0xff; } -WRITE8_MEMBER( deco_irq_device::vblank_irq_ack_w ) +void deco_irq_device::vblank_irq_ack_w(u8 data) { m_vblank_irq = false; m_vblank_irq_cb(CLEAR_LINE); } -READ8_MEMBER( deco_irq_device::status_r ) +u8 deco_irq_device::status_r() { - uint8_t data = 0; + u8 data = 0; // 7------- unknown // -6------ lightgun irq diff --git a/src/mame/machine/deco_irq.h b/src/mame/machine/deco_irq.h index 80dcbf5e60c..3accd37f700 100644 --- a/src/mame/machine/deco_irq.h +++ b/src/mame/machine/deco_irq.h @@ -39,12 +39,14 @@ public: void map(address_map &map); - DECLARE_WRITE8_MEMBER(control_w); - DECLARE_READ8_MEMBER(scanline_r); - DECLARE_WRITE8_MEMBER(scanline_w); - DECLARE_READ8_MEMBER(raster_irq_ack_r); - DECLARE_WRITE8_MEMBER(vblank_irq_ack_w); - DECLARE_READ8_MEMBER(status_r); + void control_w(u8 data); + u8 scanline_r(); + void scanline_w(u8 data); + u8 raster_irq_ack_r(); + void vblank_irq_ack_w(u8 data); + u8 status_r(); + + void raster_irq_ack(); DECLARE_WRITE_LINE_MEMBER(lightgun1_trigger_w); DECLARE_WRITE_LINE_MEMBER(lightgun2_trigger_w); @@ -77,9 +79,9 @@ private: int m_raster_irq_target; bool m_raster_irq_masked; - uint8_t m_raster_irq_scanline; + u8 m_raster_irq_scanline; - uint8_t m_lightgun_latch; + u8 m_lightgun_latch; };