summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/ssv.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/ssv.c')
-rw-r--r--src/mame/drivers/ssv.c26
1 files changed, 11 insertions, 15 deletions
diff --git a/src/mame/drivers/ssv.c b/src/mame/drivers/ssv.c
index 55b1814df5c..63528eb6654 100644
--- a/src/mame/drivers/ssv.c
+++ b/src/mame/drivers/ssv.c
@@ -176,23 +176,19 @@ Notes:
***************************************************************************/
/* Update the IRQ state based on all possible causes */
-static void update_irq_state(running_machine &machine)
+void ssv_state::update_irq_state()
{
- ssv_state *state = machine.driver_data<ssv_state>();
-
- machine.device("maincpu")->execute().set_input_line(0, (state->m_requested_int & state->m_irq_enable)? ASSERT_LINE : CLEAR_LINE);
+ machine().device("maincpu")->execute().set_input_line(0, (m_requested_int & m_irq_enable)? ASSERT_LINE : CLEAR_LINE);
}
-static IRQ_CALLBACK(ssv_irq_callback)
+IRQ_CALLBACK_MEMBER(ssv_state::ssv_irq_callback)
{
- ssv_state *state = device->machine().driver_data<ssv_state>();
-
int i;
for ( i = 0; i <= 7; i++ )
{
- if (state->m_requested_int & (1 << i))
+ if (m_requested_int & (1 << i))
{
- UINT16 vector = state->m_irq_vectors[i * (16/2)] & 7;
+ UINT16 vector = m_irq_vectors[i * (16/2)] & 7;
return vector;
}
}
@@ -205,7 +201,7 @@ WRITE16_MEMBER(ssv_state::ssv_irq_ack_w)
m_requested_int &= ~(1 << level);
- update_irq_state(machine());
+ update_irq_state();
}
/*
@@ -240,13 +236,13 @@ TIMER_DEVICE_CALLBACK_MEMBER(ssv_state::ssv_interrupt)
if (m_interrupt_ultrax)
{
m_requested_int |= 1 << 1; // needed by ultrax to coin up, breaks cairblad
- update_irq_state(machine());
+ update_irq_state();
}
}
else if(scanline == 240)
{
m_requested_int |= 1 << 3; // vblank
- update_irq_state(machine());
+ update_irq_state();
}
}
@@ -257,12 +253,12 @@ TIMER_DEVICE_CALLBACK_MEMBER(ssv_state::gdfs_interrupt)
if ((scanline % 64) == 0)
{
m_requested_int |= 1 << 6; // reads lightgun (4 times for 4 axis)
- update_irq_state(machine());
+ update_irq_state();
}
else if(scanline == 240)
{
m_requested_int |= 1 << 3; // vblank
- update_irq_state(machine());
+ update_irq_state();
}
}
@@ -321,7 +317,7 @@ WRITE16_MEMBER(ssv_state::ssv_lockout_inv_w)
void ssv_state::machine_reset()
{
m_requested_int = 0;
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(ssv_irq_callback);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(ssv_state::ssv_irq_callback),this));
membank("bank1")->set_base(memregion("user1")->base());
}