mirror of
https://github.com/holub/mame
synced 2025-10-06 17:08:28 +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 )
|
TIMER_CALLBACK_MEMBER( deco_irq_device::scanline_callback )
|
||||||
{
|
{
|
||||||
const rectangle visible = m_screen->visible_area();
|
const rectangle visible = m_screen->visible_area();
|
||||||
uint16_t y = m_screen->vpos();
|
const u16 y = m_screen->vpos();
|
||||||
|
|
||||||
// raster irq?
|
// raster irq?
|
||||||
if (m_raster_irq_scanline >= visible.top() && m_raster_irq_scanline <= visible.bottom() && y == m_raster_irq_scanline)
|
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
|
// 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)
|
void deco_irq_device::map(address_map &map)
|
||||||
{
|
{
|
||||||
map(0x0, 0x0).w(FUNC(deco_irq_device::control_w));
|
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));
|
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?
|
// 765----- unused?
|
||||||
// ---4---- raster irq target
|
// ---4---- raster irq target
|
||||||
@ -151,37 +158,35 @@ WRITE8_MEMBER( deco_irq_device::control_w )
|
|||||||
m_raster_irq_masked = bool(BIT(data, 1));
|
m_raster_irq_masked = bool(BIT(data, 1));
|
||||||
|
|
||||||
if (m_raster_irq_masked)
|
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;
|
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;
|
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;
|
if (!machine().side_effects_disabled())
|
||||||
m_raster1_irq_cb(CLEAR_LINE);
|
raster_irq_ack();
|
||||||
m_raster2_irq_cb(CLEAR_LINE);
|
|
||||||
|
|
||||||
return 0xff;
|
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 = false;
|
||||||
m_vblank_irq_cb(CLEAR_LINE);
|
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
|
// 7------- unknown
|
||||||
// -6------ lightgun irq
|
// -6------ lightgun irq
|
||||||
|
@ -39,12 +39,14 @@ public:
|
|||||||
|
|
||||||
void map(address_map &map);
|
void map(address_map &map);
|
||||||
|
|
||||||
DECLARE_WRITE8_MEMBER(control_w);
|
void control_w(u8 data);
|
||||||
DECLARE_READ8_MEMBER(scanline_r);
|
u8 scanline_r();
|
||||||
DECLARE_WRITE8_MEMBER(scanline_w);
|
void scanline_w(u8 data);
|
||||||
DECLARE_READ8_MEMBER(raster_irq_ack_r);
|
u8 raster_irq_ack_r();
|
||||||
DECLARE_WRITE8_MEMBER(vblank_irq_ack_w);
|
void vblank_irq_ack_w(u8 data);
|
||||||
DECLARE_READ8_MEMBER(status_r);
|
u8 status_r();
|
||||||
|
|
||||||
|
void raster_irq_ack();
|
||||||
|
|
||||||
DECLARE_WRITE_LINE_MEMBER(lightgun1_trigger_w);
|
DECLARE_WRITE_LINE_MEMBER(lightgun1_trigger_w);
|
||||||
DECLARE_WRITE_LINE_MEMBER(lightgun2_trigger_w);
|
DECLARE_WRITE_LINE_MEMBER(lightgun2_trigger_w);
|
||||||
@ -77,9 +79,9 @@ private:
|
|||||||
|
|
||||||
int m_raster_irq_target;
|
int m_raster_irq_target;
|
||||||
bool m_raster_irq_masked;
|
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