mirror of
https://github.com/holub/mame
synced 2025-10-05 16:50:57 +03:00
deco_irq.cpp : Updates
Simplify handlers, Fix debugger issue, Use shorter / correct type values
This commit is contained in:
parent
03839b914a
commit
be9bc02742
@ -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
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user