summaryrefslogtreecommitdiffstats
path: root/src/mame
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame')
-rw-r--r--src/mame/drivers/bnstars.c14
-rw-r--r--src/mame/drivers/calchase.c8
-rw-r--r--src/mame/drivers/chihiro.c10
-rw-r--r--src/mame/drivers/crystal.c12
-rw-r--r--src/mame/drivers/funkball.c8
-rw-r--r--src/mame/drivers/galgame.c7
-rw-r--r--src/mame/drivers/gamecstl.c8
-rw-r--r--src/mame/drivers/gammagic.c8
-rw-r--r--src/mame/drivers/jaguar.c4
-rw-r--r--src/mame/drivers/mediagx.c8
-rw-r--r--src/mame/drivers/midqslvr.c8
-rw-r--r--src/mame/drivers/model1.c26
-rw-r--r--src/mame/drivers/photon.c5
-rw-r--r--src/mame/drivers/photoply.c8
-rw-r--r--src/mame/drivers/queen.c8
-rw-r--r--src/mame/drivers/rastersp.c22
-rw-r--r--src/mame/drivers/savquest.c8
-rw-r--r--src/mame/drivers/su2000.c8
-rw-r--r--src/mame/drivers/taito_l.c7
-rw-r--r--src/mame/drivers/taitowlf.c8
-rw-r--r--src/mame/drivers/voyager.c8
-rw-r--r--src/mame/drivers/xtom3d.c8
-rw-r--r--src/mame/includes/jaguar.h2
-rw-r--r--src/mame/includes/megadriv.h2
-rw-r--r--src/mame/includes/model1.h3
-rw-r--r--src/mame/includes/taito_l.h1
-rw-r--r--src/mame/machine/megadriv.c38
27 files changed, 128 insertions, 129 deletions
diff --git a/src/mame/drivers/bnstars.c b/src/mame/drivers/bnstars.c
index 8ca40e3888e..f32d197b45a 100644
--- a/src/mame/drivers/bnstars.c
+++ b/src/mame/drivers/bnstars.c
@@ -163,6 +163,7 @@ public:
void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, UINT32 *sprram_top, size_t sprram_size, int region);
void irq_init();
void irq_raise(int level);
+ IRQ_CALLBACK_MEMBER(irq_callback);
};
@@ -1325,14 +1326,13 @@ ADDRESS_MAP_END
#endif
-static IRQ_CALLBACK(irq_callback)
+IRQ_CALLBACK_MEMBER(bnstars_state::irq_callback)
{
- bnstars_state *state = device->machine().driver_data<bnstars_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;
}
@@ -1340,7 +1340,7 @@ void bnstars_state::irq_init()
{
m_irqreq = 0;
machine().device("maincpu")->execute().set_input_line(0, CLEAR_LINE);
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(bnstars_state::irq_callback),this));
}
void bnstars_state::irq_raise(int level)
diff --git a/src/mame/drivers/calchase.c b/src/mame/drivers/calchase.c
index 22d0b1c6d6a..dd8918f6dc1 100644
--- a/src/mame/drivers/calchase.c
+++ b/src/mame/drivers/calchase.c
@@ -181,6 +181,7 @@ public:
DECLARE_DRIVER_INIT(calchase);
virtual void machine_start();
virtual void machine_reset();
+ IRQ_CALLBACK_MEMBER(irq_callback);
};
@@ -803,10 +804,9 @@ static INPUT_PORTS_START( calchase )
INPUT_PORTS_END
#endif
-static IRQ_CALLBACK(irq_callback)
+IRQ_CALLBACK_MEMBER(calchase_state::irq_callback)
{
- calchase_state *state = device->machine().driver_data<calchase_state>();
- return pic8259_acknowledge( state->m_pic8259_1);
+ return pic8259_acknowledge(m_pic8259_1);
}
void calchase_state::machine_start()
@@ -814,7 +814,7 @@ void calchase_state::machine_start()
m_bios_ram = auto_alloc_array(machine(), UINT32, 0x10000/4);
m_bios_ext_ram = auto_alloc_array(machine(), UINT32, 0x10000/4);
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(calchase_state::irq_callback),this));
m_pit8254 = machine().device( "pit8254" );
m_pic8259_1 = machine().device( "pic8259_1" );
diff --git a/src/mame/drivers/chihiro.c b/src/mame/drivers/chihiro.c
index ddf1d264b51..56a5aff573b 100644
--- a/src/mame/drivers/chihiro.c
+++ b/src/mame/drivers/chihiro.c
@@ -418,6 +418,7 @@ public:
DECLARE_READ8_MEMBER(get_slave_ack);
DECLARE_WRITE_LINE_MEMBER(chihiro_pit8254_out0_changed);
DECLARE_WRITE_LINE_MEMBER(chihiro_pit8254_out2_changed);
+ IRQ_CALLBACK_MEMBER(irq_callback);
};
/*
@@ -1575,14 +1576,13 @@ static const struct pic8259_interface chihiro_pic8259_2_config =
DEVCB_NULL
};
-static IRQ_CALLBACK(irq_callback)
+IRQ_CALLBACK_MEMBER(chihiro_state::irq_callback)
{
- chihiro_state *chst=device->machine().driver_data<chihiro_state>();
int r = 0;
- r = pic8259_acknowledge(chst->chihiro_devs.pic8259_2);
+ r = pic8259_acknowledge(chihiro_devs.pic8259_2);
if (r==0)
{
- r = pic8259_acknowledge(chst->chihiro_devs.pic8259_1);
+ r = pic8259_acknowledge(chihiro_devs.pic8259_1);
}
return r;
}
@@ -1805,7 +1805,7 @@ void chihiro_state::machine_start()
smbus_register_device(0x10,smbus_callback_pic16lc);
smbus_register_device(0x45,smbus_callback_cx25871);
smbus_register_device(0x54,smbus_callback_eeprom);
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(chihiro_state::irq_callback),this));
chihiro_devs.pic8259_1 = machine().device( "pic8259_1" );
chihiro_devs.pic8259_2 = machine().device( "pic8259_2" );
chihiro_devs.ide = machine().device( "ide" );
diff --git a/src/mame/drivers/crystal.c b/src/mame/drivers/crystal.c
index 7c6e9576c83..75a1bbdd859 100644
--- a/src/mame/drivers/crystal.c
+++ b/src/mame/drivers/crystal.c
@@ -194,6 +194,7 @@ public:
void screen_eof_crystal(screen_device &screen, bool state);
INTERRUPT_GEN_MEMBER(crystal_interrupt);
TIMER_CALLBACK_MEMBER(Timercb);
+ IRQ_CALLBACK_MEMBER(icallback);
};
static void IntReq( running_machine &machine, int num )
@@ -271,10 +272,9 @@ WRITE32_MEMBER(crystal_state::IntAck_w)
m_IntHigh = (data >> 8) & 7;
}
-static IRQ_CALLBACK( icallback )
+IRQ_CALLBACK_MEMBER(crystal_state::icallback)
{
- crystal_state *state = device->machine().driver_data<crystal_state>();
- address_space &space = device->memory().space(AS_PROGRAM);
+ address_space &space = device.memory().space(AS_PROGRAM);
UINT32 IntPend = space.read_dword(0x01800c0c);
int i;
@@ -282,7 +282,7 @@ static IRQ_CALLBACK( icallback )
{
if (BIT(IntPend, i))
{
- return (state->m_IntHigh << 5) | i;
+ return (m_IntHigh << 5) | i;
}
}
return 0; //This should never happen
@@ -582,7 +582,7 @@ void crystal_state::machine_start()
m_ds1302 = machine().device<ds1302_device>("rtc");
m_vr0video = machine().device("vr0");
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(icallback);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(crystal_state::icallback),this));
for (i = 0; i < 4; i++)
m_Timer[i] = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(crystal_state::Timercb),this), (void*)(FPTR)i);
@@ -611,7 +611,7 @@ void crystal_state::machine_reset()
memset(m_vidregs, 0, 0x10000);
m_FlipCount = 0;
m_IntHigh = 0;
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(icallback);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(crystal_state::icallback),this));
m_Bank = 0;
membank("bank1")->set_base(memregion("user1")->base() + 0);
m_FlashCmd = 0xff;
diff --git a/src/mame/drivers/funkball.c b/src/mame/drivers/funkball.c
index ee92a587178..39795324945 100644
--- a/src/mame/drivers/funkball.c
+++ b/src/mame/drivers/funkball.c
@@ -165,6 +165,7 @@ public:
virtual void machine_start();
virtual void machine_reset();
UINT32 screen_update_funkball(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ IRQ_CALLBACK_MEMBER(irq_callback);
};
void funkball_state::video_start()
@@ -1090,10 +1091,9 @@ static void funkball_set_keyb_int(running_machine &machine, int state)
pic8259_ir1_w(drvstate->m_pic8259_1, state);
}
-static IRQ_CALLBACK(irq_callback)
+IRQ_CALLBACK_MEMBER(funkball_state::irq_callback)
{
- funkball_state *state = device->machine().driver_data<funkball_state>();
- return pic8259_acknowledge( state->m_pic8259_1);
+ return pic8259_acknowledge(m_pic8259_1);
}
void funkball_state::machine_start()
@@ -1102,7 +1102,7 @@ void funkball_state::machine_start()
init_pc_common(machine(), PCCOMMON_KEYBOARD_AT, funkball_set_keyb_int);
- m_maincpu->set_irq_acknowledge_callback(irq_callback);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(funkball_state::irq_callback),this));
kbdc8042_init(machine(), &at8042);
diff --git a/src/mame/drivers/galgame.c b/src/mame/drivers/galgame.c
index 91b595d2adb..f09bf15d209 100644
--- a/src/mame/drivers/galgame.c
+++ b/src/mame/drivers/galgame.c
@@ -49,6 +49,7 @@ public:
virtual void palette_init();
UINT32 screen_update_galaxygame(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(galaxygame_irq);
+ IRQ_CALLBACK_MEMBER(galaxygame_irq_callback);
};
/*************************************
@@ -294,9 +295,9 @@ void galaxygame_state::palette_init()
palette_set_color(machine(),1,RGB_WHITE); /* white */
}
-static IRQ_CALLBACK(galaxygame_irq_callback)
+IRQ_CALLBACK_MEMBER(galaxygame_state::galaxygame_irq_callback)
{
- device->execute().set_input_line(0, CLEAR_LINE);
+ device.execute().set_input_line(0, CLEAR_LINE);
return 0x40;
}
@@ -316,7 +317,7 @@ void galaxygame_state::machine_reset()
m_point_display_list_index = 0;
m_interrupt = 0;
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(galaxygame_irq_callback);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(galaxygame_state::galaxygame_irq_callback),this));
}
static const struct t11_setup t11_data =
diff --git a/src/mame/drivers/gamecstl.c b/src/mame/drivers/gamecstl.c
index 2d95ac83f6a..7c4386808bf 100644
--- a/src/mame/drivers/gamecstl.c
+++ b/src/mame/drivers/gamecstl.c
@@ -120,6 +120,7 @@ public:
virtual void machine_reset();
virtual void video_start();
UINT32 screen_update_gamecstl(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
+ IRQ_CALLBACK_MEMBER(irq_callback);
};
@@ -602,10 +603,9 @@ static INPUT_PORTS_START(gamecstl)
PORT_START("pc_keyboard_7")
INPUT_PORTS_END
-static IRQ_CALLBACK(irq_callback)
+IRQ_CALLBACK_MEMBER(gamecstl_state::irq_callback)
{
- gamecstl_state *state = device->machine().driver_data<gamecstl_state>();
- return pic8259_acknowledge(state->m_pic8259_1);
+ return pic8259_acknowledge(m_pic8259_1);
}
void gamecstl_state::machine_start()
@@ -621,7 +621,7 @@ void gamecstl_state::machine_reset()
{
machine().root_device().membank("bank1")->set_base(machine().root_device().memregion("bios")->base() + 0x30000);
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(gamecstl_state::irq_callback),this));
}
diff --git a/src/mame/drivers/gammagic.c b/src/mame/drivers/gammagic.c
index 6ffee0c690f..9bd26c6c47f 100644
--- a/src/mame/drivers/gammagic.c
+++ b/src/mame/drivers/gammagic.c
@@ -103,6 +103,7 @@ public:
UINT8 m_atapi_data[ATAPI_DATA_SIZE];
DECLARE_DRIVER_INIT(gammagic);
+ IRQ_CALLBACK_MEMBER(irq_callback);
};
//static void atapi_irq(running_machine &machine, int state);
@@ -622,16 +623,15 @@ static INPUT_PORTS_START( gammagic )
INPUT_PORTS_END
#endif
-static IRQ_CALLBACK(irq_callback)
+IRQ_CALLBACK_MEMBER(gammagic_state::irq_callback)
{
- gammagic_state *state = device->machine().driver_data<gammagic_state>();
- return pic8259_acknowledge( state->m_pic8259_1);
+ return pic8259_acknowledge(m_pic8259_1);
}
static MACHINE_START(gammagic)
{
gammagic_state *state = machine.driver_data<gammagic_state>();
- machine.device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
+ machine.device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(gammagic_state::irq_callback),state));
state->m_pit8254 = machine.device( "pit8254" );
state->m_pic8259_1 = machine.device( "pic8259_1" );
diff --git a/src/mame/drivers/jaguar.c b/src/mame/drivers/jaguar.c
index c4b46cb61b7..2130c3e52ab 100644
--- a/src/mame/drivers/jaguar.c
+++ b/src/mame/drivers/jaguar.c
@@ -359,7 +359,7 @@ static DEVICE_IMAGE_LOAD( jaguar );
*
*************************************/
-static IRQ_CALLBACK(jaguar_irq_callback)
+IRQ_CALLBACK_MEMBER(jaguar_state::jaguar_irq_callback)
{
return (irqline == 6) ? 0x40 : -1;
}
@@ -375,7 +375,7 @@ static IRQ_CALLBACK(jaguar_irq_callback)
void jaguar_state::machine_reset()
{
if (!m_is_cojag)
- m_main_cpu->set_irq_acknowledge_callback(jaguar_irq_callback);
+ m_main_cpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(jaguar_state::jaguar_irq_callback),this));
m_protection_check = 0;
diff --git a/src/mame/drivers/mediagx.c b/src/mame/drivers/mediagx.c
index c095ba528de..cca10f4a754 100644
--- a/src/mame/drivers/mediagx.c
+++ b/src/mame/drivers/mediagx.c
@@ -199,6 +199,7 @@ public:
DECLARE_READ32_MEMBER(speedup10_r);
DECLARE_READ32_MEMBER(speedup11_r);
TIMER_DEVICE_CALLBACK_MEMBER(sound_timer_callback);
+ IRQ_CALLBACK_MEMBER(irq_callback);
};
// Display controller registers
@@ -1047,10 +1048,9 @@ static INPUT_PORTS_START(mediagx)
PORT_BIT( 0xf00, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_PLAYER(3)
INPUT_PORTS_END
-static IRQ_CALLBACK(irq_callback)
+IRQ_CALLBACK_MEMBER(mediagx_state::irq_callback)
{
- mediagx_state *state = device->machine().driver_data<mediagx_state>();
- return pic8259_acknowledge( state->m_pic8259_1);
+ return pic8259_acknowledge(m_pic8259_1);
}
void mediagx_state::machine_start()
@@ -1069,7 +1069,7 @@ void mediagx_state::machine_reset()
{
UINT8 *rom = memregion("bios")->base();
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(mediagx_state::irq_callback),this));
memcpy(m_bios_ram, rom, 0x40000);
machine().device("maincpu")->reset();
diff --git a/src/mame/drivers/midqslvr.c b/src/mame/drivers/midqslvr.c
index 7522a8b1a22..a74b5a8a084 100644
--- a/src/mame/drivers/midqslvr.c
+++ b/src/mame/drivers/midqslvr.c
@@ -98,6 +98,7 @@ public:
DECLARE_WRITE_LINE_MEMBER(midqslvr_pic8259_1_set_int_line);
virtual void machine_start();
virtual void machine_reset();
+ IRQ_CALLBACK_MEMBER(irq_callback);
};
@@ -643,10 +644,9 @@ static void midqslvr_set_keyb_int(running_machine &machine, int state)
pic8259_ir1_w(drvstate->m_pic8259_1, state);
}
-static IRQ_CALLBACK(irq_callback)
+IRQ_CALLBACK_MEMBER(midqslvr_state::irq_callback)
{
- midqslvr_state *state = device->machine().driver_data<midqslvr_state>();
- return pic8259_acknowledge( state->m_pic8259_1);
+ return pic8259_acknowledge(m_pic8259_1);
}
void midqslvr_state::machine_start()
@@ -661,7 +661,7 @@ void midqslvr_state::machine_start()
init_pc_common(machine(), PCCOMMON_KEYBOARD_AT, midqslvr_set_keyb_int);
- m_maincpu->set_irq_acknowledge_callback(irq_callback);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(midqslvr_state::irq_callback),this));
intel82439tx_init(machine());
kbdc8042_init(machine(), &at8042);
diff --git a/src/mame/drivers/model1.c b/src/mame/drivers/model1.c
index 7e6f615b9d0..ebe511ac9fe 100644
--- a/src/mame/drivers/model1.c
+++ b/src/mame/drivers/model1.c
@@ -699,19 +699,17 @@ WRITE16_MEMBER(model1_state::bank_w)
-static void irq_raise(running_machine &machine, int level)
+void model1_state::irq_raise(int level)
{
- model1_state *state = machine.driver_data<model1_state>();
// logerror("irq: raising %d\n", level);
// irq_status |= (1 << level);
- state->m_last_irq = level;
- machine.device("maincpu")->execute().set_input_line(0, HOLD_LINE);
+ m_last_irq = level;
+ machine().device("maincpu")->execute().set_input_line(0, HOLD_LINE);
}
-static IRQ_CALLBACK(irq_callback)
+IRQ_CALLBACK_MEMBER(model1_state::irq_callback)
{
- model1_state *state = device->machine().driver_data<model1_state>();
- return state->m_last_irq;
+ return m_last_irq;
}
// vf
// 1 = fe3ed4
@@ -727,10 +725,10 @@ static IRQ_CALLBACK(irq_callback)
// 3 = ff54c
// other = ff568/ff574
-static void irq_init(running_machine &machine)
+void model1_state::irq_init()
{
- machine.device("maincpu")->execute().set_input_line(0, CLEAR_LINE);
- machine.device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
+ machine().device("maincpu")->execute().set_input_line(0, CLEAR_LINE);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(model1_state::irq_callback),this));
}
TIMER_DEVICE_CALLBACK_MEMBER(model1_state::model1_interrupt)
@@ -739,11 +737,11 @@ TIMER_DEVICE_CALLBACK_MEMBER(model1_state::model1_interrupt)
if (scanline == 384)
{
- irq_raise(machine(), 1);
+ irq_raise(1);
}
else if(scanline == 384/2)
{
- irq_raise(machine(), m_sound_irq);
+ irq_raise(m_sound_irq);
// if the FIFO has something in it, signal the 68k too
if (m_fifo_rptr != m_fifo_wptr)
@@ -756,7 +754,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(model1_state::model1_interrupt)
MACHINE_RESET_MEMBER(model1_state,model1)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x1000000);
- irq_init(machine());
+ irq_init();
model1_tgp_reset(machine(), !strcmp(machine().system().name, "swa") || !strcmp(machine().system().name, "wingwar") || !strcmp(machine().system().name, "wingwaru") || !strcmp(machine().system().name, "wingwarj"));
if (!strcmp(machine().system().name, "swa"))
{
@@ -775,7 +773,7 @@ MACHINE_RESET_MEMBER(model1_state,model1)
MACHINE_RESET_MEMBER(model1_state,model1_vr)
{
membank("bank1")->set_base(memregion("maincpu")->base() + 0x1000000);
- irq_init(machine());
+ irq_init();
model1_vr_tgp_reset(machine());
m_sound_irq = 3;
diff --git a/src/mame/drivers/photon.c b/src/mame/drivers/photon.c
index 127c459bf55..7a1e6e021cf 100644
--- a/src/mame/drivers/photon.c
+++ b/src/mame/drivers/photon.c
@@ -38,6 +38,7 @@ public:
virtual void video_start();
UINT32 screen_update_photon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
INTERRUPT_GEN_MEMBER(pk8000_interrupt);
+ IRQ_CALLBACK_MEMBER(pk8000_irq_callback);
};
@@ -191,7 +192,7 @@ INTERRUPT_GEN_MEMBER(photon_state::pk8000_interrupt)
device.execute().set_input_line(0, HOLD_LINE);
}
-static IRQ_CALLBACK(pk8000_irq_callback)
+IRQ_CALLBACK_MEMBER(photon_state::pk8000_irq_callback)
{
return 0xff;
}
@@ -200,7 +201,7 @@ static IRQ_CALLBACK(pk8000_irq_callback)
void photon_state::machine_reset()
{
pk8000_set_bank(machine(),0);
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(pk8000_irq_callback);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(photon_state::pk8000_irq_callback),this));
}
void photon_state::video_start()
diff --git a/src/mame/drivers/photoply.c b/src/mame/drivers/photoply.c
index 3d362bf820b..10b67e04a3e 100644
--- a/src/mame/drivers/photoply.c
+++ b/src/mame/drivers/photoply.c
@@ -57,6 +57,7 @@ public:
DECLARE_WRITE_LINE_MEMBER(at_pit8254_out2_changed);
DECLARE_DRIVER_INIT(photoply);
virtual void machine_start();
+ IRQ_CALLBACK_MEMBER(irq_callback);
};
@@ -226,10 +227,9 @@ static const struct pic8259_interface pic8259_2_config =
DEVCB_NULL
};
-static IRQ_CALLBACK(irq_callback)
+IRQ_CALLBACK_MEMBER(photoply_state::irq_callback)
{
- photoply_state *state = device->machine().driver_data<photoply_state>();
- return pic8259_acknowledge(state->m_pic8259_1);
+ return pic8259_acknowledge(m_pic8259_1);
}
WRITE_LINE_MEMBER(photoply_state::at_pit8254_out0_changed)
@@ -342,7 +342,7 @@ static void photoply_set_keyb_int(running_machine &machine, int state)
void photoply_state::machine_start()
{
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(photoply_state::irq_callback),this));
m_pit8253 = machine().device( "pit8254" );
m_pic8259_1 = machine().device( "pic8259_1" );
m_pic8259_2 = machine().device( "pic8259_2" );
diff --git a/src/mame/drivers/queen.c b/src/mame/drivers/queen.c
index 9b6325136ba..80cc3e75f0d 100644
--- a/src/mame/drivers/queen.c
+++ b/src/mame/drivers/queen.c
@@ -90,6 +90,7 @@ public:
DECLARE_WRITE_LINE_MEMBER(queen_pic8259_1_set_int_line);
virtual void machine_start();
virtual void machine_reset();
+ IRQ_CALLBACK_MEMBER(irq_callback);
};
@@ -507,10 +508,9 @@ static void queen_set_keyb_int(running_machine &machine, int state)
pic8259_ir1_w(drvstate->m_pic8259_1, state);
}
-static IRQ_CALLBACK(irq_callback)
+IRQ_CALLBACK_MEMBER(queen_state::irq_callback)
{
- queen_state *state = device->machine().driver_data<queen_state>();
- return pic8259_acknowledge( state->m_pic8259_1);
+ return pic8259_acknowledge(m_pic8259_1);
}
void queen_state::machine_start()
@@ -520,7 +520,7 @@ void queen_state::machine_start()
init_pc_common(machine(), PCCOMMON_KEYBOARD_AT, queen_set_keyb_int);
- m_maincpu->set_irq_acknowledge_callback(irq_callback);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(queen_state::irq_callback),this));
intel82439tx_init(machine());
kbdc8042_init(machine(), &at8042);
diff --git a/src/mame/drivers/rastersp.c b/src/mame/drivers/rastersp.c
index 21efdd1317a..7b86a52ab32 100644
--- a/src/mame/drivers/rastersp.c
+++ b/src/mame/drivers/rastersp.c
@@ -41,8 +41,6 @@
*
*************************************/
-static IRQ_CALLBACK( irq_callback );
-
class rastersp_state : public driver_device
{
public:
@@ -133,7 +131,7 @@ public:
UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void update_irq(UINT32 which, UINT32 state);
void upload_palette(UINT32 word1, UINT32 word2);
-
+ IRQ_CALLBACK_MEMBER(irq_callback);
protected:
// driver_device overrides
virtual void machine_reset();
@@ -151,7 +149,7 @@ protected:
void rastersp_state::machine_start()
{
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(rastersp_state::irq_callback),this));
m_nvram8 = auto_alloc_array(machine(), UINT8, NVRAM_SIZE);
@@ -358,29 +356,27 @@ UINT32 rastersp_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
*
*************************************/
-static IRQ_CALLBACK( irq_callback )
+IRQ_CALLBACK_MEMBER(rastersp_state::irq_callback)
{
- rastersp_state *state = device->machine().driver_data<rastersp_state>();
-
UINT8 vector = 0;
- if (state->m_irq_status & (1 << rastersp_state::IRQ_SCSI))
+ if (m_irq_status & (1 << IRQ_SCSI))
{
vector = 11;
}
- else if (state->m_irq_status & (1 << rastersp_state::IRQ_DSP))
+ else if (m_irq_status & (1 << IRQ_DSP))
{
- state->update_irq(rastersp_state::IRQ_DSP, CLEAR_LINE);
+ update_irq(IRQ_DSP, CLEAR_LINE);
vector = 12;
}
- else if (state->m_irq_status & (1 << rastersp_state::IRQ_VBLANK))
+ else if (m_irq_status & (1 << IRQ_VBLANK))
{
- state->update_irq(rastersp_state::IRQ_VBLANK, CLEAR_LINE);
+ update_irq(IRQ_VBLANK, CLEAR_LINE);
vector = 13;
}
else
{
- fatalerror("Unknown x86 IRQ (m_irq_status = %x)", state->m_irq_status);
+ fatalerror("Unknown x86 IRQ (m_irq_status = %x)", m_irq_status);
}
return vector;
diff --git a/src/mame/drivers/savquest.c b/src/mame/drivers/savquest.c
index d9428cbdf8d..f83935edbf4 100644
--- a/src/mame/drivers/savquest.c
+++ b/src/mame/drivers/savquest.c
@@ -102,6 +102,7 @@ public:
DECLARE_WRITE_LINE_MEMBER(savquest_pic8259_1_set_int_line);
virtual void machine_start();
virtual void machine_reset();
+ IRQ_CALLBACK_MEMBER(irq_callback);
};
// Intel 82439TX System Controller (MXTC)
@@ -606,10 +607,9 @@ static void savquest_set_keyb_int(running_machine &machine, int state)
pic8259_ir1_w(drvstate->m_pic8259_1, state);
}
-static IRQ_CALLBACK(irq_callback)
+IRQ_CALLBACK_MEMBER(savquest_state::irq_callback)
{
- savquest_state *state = device->machine().driver_data<savquest_state>();
- return pic8259_acknowledge( state->m_pic8259_1);
+ return pic8259_acknowledge(m_pic8259_1);
}
void savquest_state::machine_start()
@@ -622,7 +622,7 @@ void savquest_state::machine_start()
init_pc_common(machine(), PCCOMMON_KEYBOARD_AT, savquest_set_keyb_int);
- m_maincpu->set_irq_acknowledge_callback(irq_callback);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(savquest_state::irq_callback),this));
intel82439tx_init(machine());
kbdc8042_init(machine(), &at8042);
diff --git a/src/mame/drivers/su2000.c b/src/mame/drivers/su2000.c
index 6b40f05861e..abb8c3f7a73 100644
--- a/src/mame/drivers/su2000.c
+++ b/src/mame/drivers/su2000.c
@@ -81,6 +81,7 @@ public:
DECLARE_READ8_MEMBER(get_slave_ack);
virtual void machine_start();
virtual void machine_reset();
+ IRQ_CALLBACK_MEMBER(irq_callback);
};
@@ -236,10 +237,9 @@ static const struct pit8253_config su2000_pit8254_config =
*
*************************************/
-static IRQ_CALLBACK( pc_irq_callback )
+IRQ_CALLBACK_MEMBER(su2000_state::irq_callback)
{
- su2000_state *state = device->machine().driver_data<su2000_state>();
- return pic8259_acknowledge(state->m_pic8259_1);
+ return pic8259_acknowledge(m_pic8259_1);
}
@@ -271,7 +271,7 @@ void su2000_state::machine_start()
space.install_write_bank(0x100000, ram_limit - 1, "hma_bank");
membank("hma_bank")->set_base(m_pc_ram + 0xa0000);
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(pc_irq_callback);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(su2000_state::irq_callback),this));
init_pc_common(machine(), PCCOMMON_KEYBOARD_AT, su2000_set_keyb_int);
diff --git a/src/mame/drivers/taito_l.c b/src/mame/drivers/taito_l.c
index a1923ca2b6d..0155962145f 100644
--- a/src/mame/drivers/taito_l.c
+++ b/src/mame/drivers/taito_l.c
@@ -290,16 +290,15 @@ MACHINE_RESET_MEMBER(taitol_state,horshoes)
}
-static IRQ_CALLBACK( irq_callback )
+IRQ_CALLBACK_MEMBER(taitol_state::irq_callback)
{
- taitol_state *state = device->machine().driver_data<taitol_state>();
- return state->m_irq_adr_table[state->m_last_irq_level];
+ return m_irq_adr_table[m_last_irq_level];
}
TIMER_DEVICE_CALLBACK_MEMBER(taitol_state::vbl_interrupt)
{
int scanline = param;
- m_maincpu->set_irq_acknowledge_callback(irq_callback);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(taitol_state::irq_callback),this));
/* kludge to make plgirls boot */
if (m_maincpu->state_int(Z80_IM) != 2)
diff --git a/src/mame/drivers/taitowlf.c b/src/mame/drivers/taitowlf.c
index 8dce31fa729..f4880c31ae8 100644
--- a/src/mame/drivers/taitowlf.c
+++ b/src/mame/drivers/taitowlf.c
@@ -83,6 +83,7 @@ public:
virtual void machine_reset();
virtual void palette_init();
UINT32 screen_update_taitowlf(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
+ IRQ_CALLBACK_MEMBER(irq_callback);
};
#if !ENABLE_VGA
@@ -532,15 +533,14 @@ static INPUT_PORTS_START(taitowlf)
INPUT_PORTS_END
#endif
-static IRQ_CALLBACK(irq_callback)
+IRQ_CALLBACK_MEMBER(taitowlf_state::irq_callback)
{
- taitowlf_state *state = device->machine().driver_data<taitowlf_state>();
- return pic8259_acknowledge( state->m_pic8259_1);
+ return pic8259_acknowledge(m_pic8259_1);
}
void taitowlf_state::machine_start()
{
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(taitowlf_state::irq_callback),this));
m_pit8254 = machine().device( "pit8254" );
m_pic8259_1 = machine().device( "pic8259_1" );
diff --git a/src/mame/drivers/voyager.c b/src/mame/drivers/voyager.c
index d324c3eedcd..0847a8ba8ea 100644
--- a/src/mame/drivers/voyager.c
+++ b/src/mame/drivers/voyager.c
@@ -69,6 +69,7 @@ public:
DECLARE_DRIVER_INIT(voyager);
virtual void machine_start();
virtual void machine_reset();
+ IRQ_CALLBACK_MEMBER(irq_callback);
};
@@ -644,15 +645,14 @@ static INPUT_PORTS_START( voyager )
INPUT_PORTS_END
#endif
-static IRQ_CALLBACK(irq_callback)
+IRQ_CALLBACK_MEMBER(voyager_state::irq_callback)
{
- voyager_state *state = device->machine().driver_data<voyager_state>();
- return pic8259_acknowledge( state->m_pic8259_1);
+ return pic8259_acknowledge(m_pic8259_1);
}
void voyager_state::machine_start()
{
- machine().device("maincpu")->execute().set_irq_acknowledge_callback(irq_callback);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(voyager_state::irq_callback),this));
m_pit8254 = machine().device( "pit8254" );
m_pic8259_1 = machine().device( "pic8259_1" );
diff --git a/src/mame/drivers/xtom3d.c b/src/mame/drivers/xtom3d.c
index 7c5c122882f..8522d0e06ad 100644
--- a/src/mame/drivers/xtom3d.c
+++ b/src/mame/drivers/xtom3d.c
@@ -115,6 +115,7 @@ public:
DECLARE_WRITE_LINE_MEMBER(xtom3d_pic8259_1_set_int_line);
virtual void machine_start();
virtual void machine_reset();
+ IRQ_CALLBACK_MEMBER(irq_callback);
};
// Intel 82439TX System Controller (MXTC)
@@ -635,10 +636,9 @@ static void xtom3d_set_keyb_int(running_machine &machine, int state)
pic8259_ir1_w(drvstate->m_pic8259_1, state);
}
-static IRQ_CALLBACK(irq_callback)
+IRQ_CALLBACK_MEMBER(xtom3d_state::irq_callback)
{
- xtom3d_state *state = device->machine().driver_data<xtom3d_state>();
- return pic8259_acknowledge( state->m_pic8259_1);
+ return pic8259_acknowledge(m_pic8259_1);
}
void xtom3d_state::machine_start()
@@ -653,7 +653,7 @@ void xtom3d_state::machine_start()
init_pc_common(machine(), PCCOMMON_KEYBOARD_AT, xtom3d_set_keyb_int);
- m_maincpu->set_irq_acknowledge_callback(irq_callback);
+ m_maincpu->set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(xtom3d_state::irq_callback),this));
intel82439tx_init(machine());
kbdc8042_init(machine(), &at8042);
diff --git a/src/mame/includes/jaguar.h b/src/mame/includes/jaguar.h
index 7b044372037..e2f4ace025b 100644
--- a/src/mame/includes/jaguar.h
+++ b/src/mame/includes/jaguar.h
@@ -214,7 +214,7 @@ public:
int quickload(device_image_interface &image, const char *file_type, int quickload_size);
void cart_start();
int cart_load(device_image_interface &image);
-
+ IRQ_CALLBACK_MEMBER(jaguar_irq_callback);
protected:
// timer IDs
enum
diff --git a/src/mame/includes/megadriv.h b/src/mame/includes/megadriv.h
index 708603c1163..5aa60abaf3a 100644
--- a/src/mame/includes/megadriv.h
+++ b/src/mame/includes/megadriv.h
@@ -121,6 +121,8 @@ public:
DECLARE_READ8_MEMBER(megadriv_68k_YM2612_read);
DECLARE_WRITE8_MEMBER(megadriv_68k_YM2612_write);
+ IRQ_CALLBACK_MEMBER(genesis_int_callback);
+ void megadriv_init_common();
};
class md_boot_state : public md_base_state
diff --git a/src/mame/includes/model1.h b/src/mame/includes/model1.h
index c400a034caf..fedb0f4c055 100644
--- a/src/mame/includes/model1.h
+++ b/src/mame/includes/model1.h
@@ -140,6 +140,9 @@ public:
UINT32 screen_update_model1(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
void screen_eof_model1(screen_device &screen, bool state);
TIMER_DEVICE_CALLBACK_MEMBER(model1_interrupt);
+ void irq_raise(int level);
+ void irq_init();
+ IRQ_CALLBACK_MEMBER(irq_callback);
};
diff --git a/src/mame/includes/taito_l.h b/src/mame/includes/taito_l.h
index d248a9279b2..26e27b8fea3 100644
--- a/src/mame/includes/taito_l.h
+++ b/src/mame/includes/taito_l.h
@@ -122,6 +122,7 @@ public:
UINT32 screen_update_taitol(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void screen_eof_taitol(screen_device &screen, bool state);
TIMER_DEVICE_CALLBACK_MEMBER(vbl_interrupt);
+ IRQ_CALLBACK_MEMBER(irq_callback);
};
/*----------- defined in video/taito_l.c -----------*/
diff --git a/src/mame/machine/megadriv.c b/src/mame/machine/megadriv.c
index 858e17976dc..15c17f99c1b 100644
--- a/src/mame/machine/megadriv.c
+++ b/src/mame/machine/megadriv.c
@@ -1091,18 +1091,16 @@ void genesis_vdp_lv4irqline_callback_genesis_68k(running_machine &machine, bool
}
/* Callback when the 68k takes an IRQ */
-static IRQ_CALLBACK(genesis_int_callback)
+IRQ_CALLBACK_MEMBER(md_base_state::genesis_int_callback)
{
- md_base_state *state = device->machine().driver_data<md_base_state>();
-
if (irqline==4)
{
- state->m_vdp->vdp_clear_irq4_pending();
+ m_vdp->vdp_clear_irq4_pending();
}
if (irqline==6)
{
- state->m_vdp->vdp_clear_irq6_pending();
+ m_vdp->vdp_clear_irq6_pending();
}
return (0x60+irqline*4)/4; // vector address
@@ -1335,45 +1333,45 @@ static int megadriv_tas_callback(device_t *device)
return 0; // writeback not allowed
}
-static void megadriv_init_common(running_machine &machine)
+void md_base_state::megadriv_init_common()
{
/* Look to see if this system has the standard Sound Z80 */
- _genesis_snd_z80_cpu = machine.device<cpu_device>("genesis_snd_z80");
+ _genesis_snd_z80_cpu = machine().device<cpu_device>("genesis_snd_z80");
if (_genesis_snd_z80_cpu != NULL)
{
//printf("GENESIS Sound Z80 cpu found '%s'\n", _genesis_snd_z80_cpu->tag() );
- genz80.z80_prgram = auto_alloc_array(machine, UINT8, 0x2000);
- machine.root_device().membank("bank1")->set_base(genz80.z80_prgram );
+ genz80.z80_prgram = auto_alloc_array(machine(), UINT8, 0x2000);
+ machine().root_device().membank("bank1")->set_base(genz80.z80_prgram );
}
/* Look to see if this system has the 32x Master SH2 */
- _32x_master_cpu = machine.device<cpu_device>(_32X_MASTER_TAG);
+ _32x_master_cpu = machine().device<cpu_device>(_32X_MASTER_TAG);
if (_32x_master_cpu != NULL)
{
printf("32x MASTER SH2 cpu found '%s'\n", _32x_master_cpu->tag() );
}
/* Look to see if this system has the 32x Slave SH2 */
- _32x_slave_cpu = machine.device<cpu_device>(_32X_SLAVE_TAG);
+ _32x_slave_cpu = machine().device<cpu_device>(_32X_SLAVE_TAG);
if (_32x_slave_cpu != NULL)
{
printf("32x SLAVE SH2 cpu found '%s'\n", _32x_slave_cpu->tag() );
}
- _svp_cpu = machine.device<cpu_device>("svp");
+ _svp_cpu = machine().device<cpu_device>("svp");
if (_svp_cpu != NULL)
{
printf("SVP (cpu) found '%s'\n", _svp_cpu->tag() );
}
- machine.device("maincpu")->execute().set_irq_acknowledge_callback(genesis_int_callback);
+ machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(md_base_state::genesis_int_callback),this));
megadriv_backupram = NULL;
megadriv_backupram_length = 0;
vdp_get_word_from_68k_mem = vdp_get_word_from_68k_mem_default;
- m68k_set_tas_callback(machine.device("maincpu"), megadriv_tas_callback);
+ m68k_set_tas_callback(machine().device("maincpu"), megadriv_tas_callback);
// the drivers which need 6 buttons pad set this to 1 in their init befare calling the megadrive init
if (megadrive_6buttons_pad)
@@ -1394,7 +1392,7 @@ static void megadriv_init_common(running_machine &machine)
some games specify a single address, (start 200001, end 200001)
this usually means there is serial eeprom instead */
int i;
- UINT16 *rom = (UINT16*)machine.root_device().memregion("maincpu")->base();
+ UINT16 *rom = (UINT16*)machine().root_device().memregion("maincpu")->base();
mame_printf_debug("DEBUG:: Header: Backup RAM string (ignore for games without)\n");
for (i=0;i<12;i++)
@@ -1411,7 +1409,7 @@ static void megadriv_init_common(running_machine &machine)
/* if we have an SVP cpu then do some extra initilization for it */
if (_svp_cpu != NULL)
{
- svp_init(machine);
+ svp_init(machine());
}
@@ -1422,7 +1420,7 @@ DRIVER_INIT_MEMBER(md_base_state,megadriv_c2)
genvdp_use_cram = 0;
genesis_other_hacks = 0;
- megadriv_init_common(machine());
+ megadriv_init_common();
megadriv_framerate = 60;
}
@@ -1433,7 +1431,7 @@ DRIVER_INIT_MEMBER(md_base_state,megadriv)
genvdp_use_cram = 1;
genesis_other_hacks = 1;
- megadriv_init_common(machine());
+ megadriv_init_common();
megadriv_framerate = 60;
}
@@ -1442,7 +1440,7 @@ DRIVER_INIT_MEMBER(md_base_state,megadrij)
genvdp_use_cram = 1;
genesis_other_hacks = 1;
- megadriv_init_common(machine());
+ megadriv_init_common();
megadriv_framerate = 60;
}
@@ -1451,7 +1449,7 @@ DRIVER_INIT_MEMBER(md_base_state,megadrie)
genvdp_use_cram = 1;
genesis_other_hacks = 1;
- megadriv_init_common(machine());
+ megadriv_init_common();
megadriv_framerate = 50;
}