summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/ms32.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/ms32.c')
-rw-r--r--src/mame/drivers/ms32.c43
1 files changed, 19 insertions, 24 deletions
diff --git a/src/mame/drivers/ms32.c b/src/mame/drivers/ms32.c
index 918a6788644..10c9a79a60d 100644
--- a/src/mame/drivers/ms32.c
+++ b/src/mame/drivers/ms32.c
@@ -389,16 +389,14 @@ READ16_MEMBER(ms32_state::ms32_extra_r16)
return m_f1superb_extraram_16[offset];
}
-static void irq_raise(running_machine &machine, int level);
-
WRITE32_MEMBER(ms32_state::ms32_irq2_guess_w)
{
- irq_raise(machine(), 2);
+ irq_raise(2);
}
WRITE32_MEMBER(ms32_state::ms32_irq5_guess_w)
{
- irq_raise(machine(), 5);
+ irq_raise(5);
}
static ADDRESS_MAP_START( f1superb_map, AS_PROGRAM, 32, ms32_state )
@@ -1277,38 +1275,35 @@ GFXDECODE_END
*/
-static IRQ_CALLBACK(irq_callback)
+IRQ_CALLBACK_MEMBER(ms32_state::irq_callback)
{
- ms32_state *state = device->machine().driver_data<ms32_state>();
int i;
- for(i=15; i>=0 && !(state->m_irqreq & (1<<i)); i--);
- state->m_irqreq &= ~(1<<i);
- if(!state->m_irqreq)
- device->execute().set_input_line(0, CLEAR_LINE);
+ for(i=15; i>=0 && !(m_irqreq & (1<<i)); i--);
+ m_irqreq &= ~(1<<i);
+ if(!m_irqreq)
+ device.execute().set_input_line(0, CLEAR_LINE);
return i;
}
-static void irq_init(running_machine &machine)
+void ms32_state::irq_init()
{
- ms32_state *state = machine.driver_data<ms32_state>();
- state->m_irqreq = 0;
- machine.device("maincpu")->execute().set_input_line(0, CLEAR_LINE);
- machine.device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
+ m_irqreq = 0;
+ machine().device("maincpu")->execute().set_input_line(0, CLEAR_LINE);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(ms32_state::irq_callback),this));
}
-static void irq_raise(running_machine &machine, int level)
+void ms32_state::irq_raise(int level)
{
- ms32_state *state = machine.driver_data<ms32_state>();
- state->m_irqreq |= (1<<level);
- machine.device("maincpu")->execute().set_input_line(0, ASSERT_LINE);
+ m_irqreq |= (1<<level);
+ machine().device("maincpu")->execute().set_input_line(0, ASSERT_LINE);
}
/* TODO: fix this arrangement (derived from old deprecat lib) */
TIMER_DEVICE_CALLBACK_MEMBER(ms32_state::ms32_interrupt)
{
int scanline = param;
- if( scanline == 0) irq_raise(machine(), 10);
- if( scanline == 8) irq_raise(machine(), 9);
+ if( scanline == 0) irq_raise(10);
+ if( scanline == 8) irq_raise(9);
/* hayaosi1 needs at least 12 IRQ 0 per frame to work (see code at FFE02289)
kirarast needs it too, at least 8 per frame, but waits for a variable amount
47pi2 needs ?? per frame (otherwise it hangs when you lose)
@@ -1317,7 +1312,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(ms32_state::ms32_interrupt)
desertwr
p47aces
*/
- if( (scanline % 8) == 0 && scanline <= 224 ) irq_raise(machine(), 0);
+ if( (scanline % 8) == 0 && scanline <= 224 ) irq_raise(0);
}
@@ -1359,7 +1354,7 @@ WRITE8_MEMBER(ms32_state::ms32_snd_bank_w)
WRITE8_MEMBER(ms32_state::to_main_w)
{
m_to_main=data;
- irq_raise(machine(), 1);
+ irq_raise(1);
}
static ADDRESS_MAP_START( ms32_sound_map, AS_PROGRAM, 8, ms32_state )
@@ -1384,7 +1379,7 @@ void ms32_state::machine_reset()
machine().root_device().membank("bank1")->set_base(machine().root_device().memregion("maincpu")->base());
machine().root_device().membank("bank4")->set_entry(0);
machine().root_device().membank("bank5")->set_entry(1);
- irq_init(machine());
+ irq_init();
}
/********** MACHINE DRIVER **********/