deco_irq.cpp : Updates

Simplify handlers, Fix debugger issue, Use shorter / correct type values
This commit is contained in:
cam900 2019-05-06 22:46:10 +09:00
parent 03839b914a
commit be9bc02742
2 changed files with 28 additions and 21 deletions

View File

@ -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

View File

@ -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;
};