summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2018-12-05 23:15:44 +0100
committer Ivan Vangelista <mesgnet@yahoo.it>2018-12-05 23:15:44 +0100
commit3a0d2248f76ac2530078e09d93e0e53900a8508e (patch)
tree508c087636153fa54df1b2da7d8d5c421087019e
parentdb7e370bd8c7b2653c8c149776eafb80c9478d01 (diff)
src/mame: even more MCFG removal (nw)
-rw-r--r--src/mame/drivers/apollo.cpp74
-rw-r--r--src/mame/drivers/atarig42.cpp4
-rw-r--r--src/mame/drivers/cop01.cpp4
-rw-r--r--src/mame/drivers/crshrace.cpp6
-rw-r--r--src/mame/drivers/dbz.cpp12
-rw-r--r--src/mame/drivers/f1gp.cpp9
-rw-r--r--src/mame/drivers/galaga.cpp162
-rw-r--r--src/mame/drivers/galivan.cpp2
-rw-r--r--src/mame/drivers/gaplus.cpp99
-rw-r--r--src/mame/drivers/harddriv.cpp6
-rw-r--r--src/mame/drivers/igs017.cpp12
-rw-r--r--src/mame/drivers/megadriv.cpp18
-rw-r--r--src/mame/drivers/metro.cpp7
-rw-r--r--src/mame/drivers/namcos12.cpp2
-rw-r--r--src/mame/drivers/namcos23.cpp6
-rw-r--r--src/mame/drivers/next.cpp14
-rw-r--r--src/mame/drivers/pcd.cpp7
-rw-r--r--src/mame/drivers/pce.cpp4
-rw-r--r--src/mame/drivers/pce220.cpp6
-rw-r--r--src/mame/drivers/pgm2.cpp8
-rw-r--r--src/mame/drivers/plygonet.cpp2
-rw-r--r--src/mame/drivers/polepos.cpp24
-rw-r--r--src/mame/drivers/psx.cpp8
-rw-r--r--src/mame/drivers/ql.cpp4
-rw-r--r--src/mame/drivers/rad_eu3a05.cpp4
-rw-r--r--src/mame/drivers/rungun.cpp4
-rw-r--r--src/mame/drivers/suprslam.cpp6
-rw-r--r--src/mame/drivers/terracre.cpp2
-rw-r--r--src/mame/drivers/tmnt.cpp10
-rw-r--r--src/mame/drivers/toypop.cpp37
-rw-r--r--src/mame/drivers/v1050.cpp4
-rw-r--r--src/mame/drivers/xerox820.cpp8
-rw-r--r--src/mame/drivers/z88.cpp10
-rw-r--r--src/mame/includes/apollo.h59
-rw-r--r--src/mame/machine/apollo.cpp36
-rw-r--r--src/mame/machine/asic65.h12
-rw-r--r--src/mame/machine/igs025.h5
-rw-r--r--src/mame/machine/mackbd.h22
-rw-r--r--src/mame/machine/macrtc.h9
-rw-r--r--src/mame/machine/mega32x.h5
-rw-r--r--src/mame/machine/namco06.h63
-rw-r--r--src/mame/machine/namco51.h26
-rw-r--r--src/mame/machine/namco62.h26
-rw-r--r--src/mame/machine/namco_settings.h3
-rw-r--r--src/mame/machine/namcoio.h62
-rw-r--r--src/mame/machine/nb1412m2.h15
-rw-r--r--src/mame/machine/nextkbd.h15
-rw-r--r--src/mame/machine/nextmo.h9
-rw-r--r--src/mame/machine/pcd_kbd.h4
-rw-r--r--src/mame/machine/pce220_ser.h3
-rw-r--r--src/mame/machine/pce_cd.h9
-rw-r--r--src/mame/machine/pgm2_memcard.h7
-rw-r--r--src/mame/machine/pgmprot_igs025_igs012.cpp4
-rw-r--r--src/mame/machine/pgmprot_igs025_igs022.cpp6
-rw-r--r--src/mame/machine/pgmprot_igs025_igs028.cpp6
-rw-r--r--src/mame/machine/psxcd.h8
-rw-r--r--src/mame/machine/qimi.h13
-rw-r--r--src/mame/machine/rad_eu3a05gpio.h15
-rw-r--r--src/mame/machine/tosh1000_bram.h7
-rw-r--r--src/mame/machine/upd65031.h32
-rw-r--r--src/mame/machine/v1050kb.h12
-rw-r--r--src/mame/machine/x68k_hdc.h3
-rw-r--r--src/mame/machine/x820kb.h12
-rw-r--r--src/mame/video/apollo.cpp18
-rw-r--r--src/mame/video/k053936.h6
65 files changed, 376 insertions, 741 deletions
diff --git a/src/mame/drivers/apollo.cpp b/src/mame/drivers/apollo.cpp
index 969b845e321..1102f3cde86 100644
--- a/src/mame/drivers/apollo.cpp
+++ b/src/mame/drivers/apollo.cpp
@@ -701,11 +701,11 @@ void apollo_state::dn3500_map(address_map &map)
// AM_RANGE(DN3500_RAM_BASE, DN3500_RAM_END) AM_RAM /* 8MB RAM */
map(DN3500_RAM_BASE, DN3500_RAM_END).ram().w(FUNC(apollo_state::ram_with_parity_w)).share(RAM_TAG);
- map(0x05d800, 0x05dc07).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_mcr_r), FUNC(apollo_graphics_15i::apollo_mcr_w));
- map(0xfa0000, 0xfdffff).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_mgm_r), FUNC(apollo_graphics_15i::apollo_mgm_w));
+ map(0x05d800, 0x05dc07).rw(m_graphics, FUNC(apollo_graphics_15i::apollo_mcr_r), FUNC(apollo_graphics_15i::apollo_mcr_w));
+ map(0xfa0000, 0xfdffff).rw(m_graphics, FUNC(apollo_graphics_15i::apollo_mgm_r), FUNC(apollo_graphics_15i::apollo_mgm_w));
- map(0x05e800, 0x05ec07).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_ccr_r), FUNC(apollo_graphics_15i::apollo_ccr_w));
- map(0x0a0000, 0x0bffff).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_cgm_r), FUNC(apollo_graphics_15i::apollo_cgm_w));
+ map(0x05e800, 0x05ec07).rw(m_graphics, FUNC(apollo_graphics_15i::apollo_ccr_r), FUNC(apollo_graphics_15i::apollo_ccr_w));
+ map(0x0a0000, 0x0bffff).rw(m_graphics, FUNC(apollo_graphics_15i::apollo_cgm_r), FUNC(apollo_graphics_15i::apollo_cgm_w));
// AM_RANGE(0x03020000, 0x0303ffff) Cache Tag Store (DN4500 only)
// AM_RANGE(0x04000000, 0x0400ffff) Cache Tag Data (DN4500 only)
@@ -773,11 +773,11 @@ void apollo_state::dn3000_map(address_map &map)
// AM_RANGE(DN3000_RAM_BASE, DN3000_RAM_END) AM_RAM /* 8MB RAM */
map(DN3000_RAM_BASE, DN3000_RAM_END).ram().w(FUNC(apollo_state::ram_with_parity_w)).share(RAM_TAG);
- map(0x05d800, 0x05dc07).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_mcr_r), FUNC(apollo_graphics_15i::apollo_mcr_w));
- map(0xfa0000, 0xfdffff).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_mgm_r), FUNC(apollo_graphics_15i::apollo_mgm_w));
+ map(0x05d800, 0x05dc07).rw(m_graphics, FUNC(apollo_graphics_15i::apollo_mcr_r), FUNC(apollo_graphics_15i::apollo_mcr_w));
+ map(0xfa0000, 0xfdffff).rw(m_graphics, FUNC(apollo_graphics_15i::apollo_mgm_r), FUNC(apollo_graphics_15i::apollo_mgm_w));
- map(0x05e800, 0x05ec07).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_ccr_r), FUNC(apollo_graphics_15i::apollo_ccr_w));
- map(0x0a0000, 0x0bffff).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_cgm_r), FUNC(apollo_graphics_15i::apollo_cgm_w));
+ map(0x05e800, 0x05ec07).rw(m_graphics, FUNC(apollo_graphics_15i::apollo_ccr_r), FUNC(apollo_graphics_15i::apollo_ccr_w));
+ map(0x0a0000, 0x0bffff).rw(m_graphics, FUNC(apollo_graphics_15i::apollo_cgm_r), FUNC(apollo_graphics_15i::apollo_cgm_w));
}
void apollo_state::dsp3000_map(address_map &map)
@@ -843,11 +843,11 @@ void apollo_state::dn5500_map(address_map &map)
// AM_RANGE(DN3500_RAM_BASE, DN3500_RAM_END) AM_RAM /* 8MB RAM */
map(DN5500_RAM_BASE, DN5500_RAM_END).ram().w(FUNC(apollo_state::ram_with_parity_w)).share(RAM_TAG);
- map(0x05d800, 0x05dc07).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_mcr_r), FUNC(apollo_graphics_15i::apollo_mcr_w));
- map(0xfa0000, 0xfdffff).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_mgm_r), FUNC(apollo_graphics_15i::apollo_mgm_w));
+ map(0x05d800, 0x05dc07).rw(m_graphics, FUNC(apollo_graphics_15i::apollo_mcr_r), FUNC(apollo_graphics_15i::apollo_mcr_w));
+ map(0xfa0000, 0xfdffff).rw(m_graphics, FUNC(apollo_graphics_15i::apollo_mgm_r), FUNC(apollo_graphics_15i::apollo_mgm_w));
- map(0x05e800, 0x05ec07).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_ccr_r), FUNC(apollo_graphics_15i::apollo_ccr_w));
- map(0x0a0000, 0x0bffff).rw(APOLLO_SCREEN_TAG, FUNC(apollo_graphics_15i::apollo_cgm_r), FUNC(apollo_graphics_15i::apollo_cgm_w));
+ map(0x05e800, 0x05ec07).rw(m_graphics, FUNC(apollo_graphics_15i::apollo_ccr_r), FUNC(apollo_graphics_15i::apollo_ccr_w));
+ map(0x0a0000, 0x0bffff).rw(m_graphics, FUNC(apollo_graphics_15i::apollo_cgm_r), FUNC(apollo_graphics_15i::apollo_cgm_w));
// AM_RANGE(0x03020000, 0x0303ffff) Cache Tag Store (DN4500 only)
// AM_RANGE(0x04000000, 0x0400ffff) Cache Tag Data (DN4500 only)
@@ -1063,8 +1063,8 @@ MACHINE_CONFIG_START(apollo_state::dn3500)
RAM(config, m_ram).set_default_size("8M").set_extra_options("4M,8M,16M,32M");
#ifdef APOLLO_XXL
- MCFG_DEVICE_ADD(APOLLO_STDIO_TAG, APOLLO_STDIO, 0)
- MCFG_APOLLO_STDIO_TX_CALLBACK(WRITELINE(APOLLO_SIO_TAG, apollo_sio, rx_b_w))
+ apollo_stdio_device &stdio(APOLLO_STDIO(config, APOLLO_STDIO_TAG, 0));
+ stdio.tx_callback().set(m_sio, FUNC(apollo_sio::rx_b_w));
#endif
MACHINE_CONFIG_END
@@ -1088,30 +1088,32 @@ MACHINE_CONFIG_START(apollo_state::dsp3500)
config.set_default_layout(layout_apollo_dsp);
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(apollo_state::dn3500_19i)
+void apollo_state::dn3500_19i(machine_config &config)
+{
dn3500(config);
/* video hardware 19" monochrome */
- MCFG_APOLLO_MONO19I_ADD(APOLLO_SCREEN_TAG)
+ APOLLO_MONO19I(config, m_graphics, 0);
APOLLO_KBD(config, m_keyboard, 0);
m_keyboard->tx_cb().set(m_sio, FUNC(apollo_sio::rx_a_w));
m_keyboard->german_cb().set(FUNC(apollo_state::apollo_kbd_is_german));
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(apollo_state::dn3500_15i)
+void apollo_state::dn3500_15i(machine_config &config)
+{
dn3500(config);
/* video hardware is 15" monochrome or color */
- MCFG_APOLLO_GRAPHICS_ADD(APOLLO_SCREEN_TAG)
+ APOLLO_GRAPHICS(config, m_graphics, 0);
APOLLO_KBD(config, m_keyboard, 0);
m_keyboard->tx_cb().set(m_sio, FUNC(apollo_sio::rx_a_w));
m_keyboard->german_cb().set(FUNC(apollo_state::apollo_kbd_is_german));
-MACHINE_CONFIG_END
+}
MACHINE_CONFIG_START(apollo_state::dn3000)
dn3500(config);
MCFG_DEVICE_REPLACE(MAINCPU, M68020PMMU, 12000000) /* 12 MHz */
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(apollo_state,apollo_irq_acknowledge)
MCFG_DEVICE_PROGRAM_MAP(dn3000_map)
- MCFG_DEVICE_REMOVE( APOLLO_SIO2_TAG )
+ config.device_remove( APOLLO_SIO2_TAG );
m_ram->set_default_size("8M").set_extra_options("4M");
// FIXME: is this interrupt really only connected on DN3000?
@@ -1134,29 +1136,31 @@ MACHINE_CONFIG_START(apollo_state::dsp3000)
/* internal ram */
RAM(config, m_ram).set_default_size("8M").set_extra_options("4M");
- MCFG_DEVICE_REMOVE( APOLLO_SIO2_TAG )
+ config.device_remove( APOLLO_SIO2_TAG );
/* terminal hardware */
config.set_default_layout(layout_apollo_dsp);
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(apollo_state::dn3000_19i)
+void apollo_state::dn3000_19i(machine_config &config)
+{
dn3000(config);
/* video hardware 19" monochrome */
- MCFG_APOLLO_MONO19I_ADD(APOLLO_SCREEN_TAG)
+ APOLLO_MONO19I(config, m_graphics, 0);
APOLLO_KBD(config, m_keyboard, 0);
m_keyboard->tx_cb().set(m_sio, FUNC(apollo_sio::rx_a_w));
m_keyboard->german_cb().set(FUNC(apollo_state::apollo_kbd_is_german));
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(apollo_state::dn3000_15i)
+void apollo_state::dn3000_15i(machine_config &config)
+{
dn3000(config);
/* video hardware 15" monochrome */
- MCFG_APOLLO_GRAPHICS_ADD(APOLLO_SCREEN_TAG)
+ APOLLO_GRAPHICS(config, m_graphics, 0);
APOLLO_KBD(config, m_keyboard, 0);
m_keyboard->tx_cb().set(m_sio, FUNC(apollo_sio::rx_a_w));
m_keyboard->german_cb().set(FUNC(apollo_state::apollo_kbd_is_german));
-MACHINE_CONFIG_END
+}
MACHINE_CONFIG_START(apollo_state::dn5500)
dn3500(config);
@@ -1185,23 +1189,25 @@ MACHINE_CONFIG_START(apollo_state::dsp5500)
config.set_default_layout(layout_apollo_dsp);
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(apollo_state::dn5500_19i)
+void apollo_state::dn5500_19i(machine_config &config)
+{
dn5500(config);
/* video hardware 19" monochrome */
- MCFG_APOLLO_MONO19I_ADD(APOLLO_SCREEN_TAG)
+ APOLLO_MONO19I(config, m_graphics, 0);
APOLLO_KBD(config, m_keyboard, 0);
m_keyboard->tx_cb().set(m_sio, FUNC(apollo_sio::rx_a_w));
m_keyboard->german_cb().set(FUNC(apollo_state::apollo_kbd_is_german));
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(apollo_state::dn5500_15i)
+void apollo_state::dn5500_15i(machine_config &config)
+{
dn5500(config);
/* video hardware 15" monochrome */
- MCFG_APOLLO_GRAPHICS_ADD(APOLLO_SCREEN_TAG)
+ APOLLO_GRAPHICS(config, m_graphics, 0);
APOLLO_KBD(config, m_keyboard, 0);
m_keyboard->tx_cb().set(m_sio, FUNC(apollo_sio::rx_a_w));
m_keyboard->german_cb().set(FUNC(apollo_state::apollo_kbd_is_german));
-MACHINE_CONFIG_END
+}
/***************************************************************************
ROM Definitions
diff --git a/src/mame/drivers/atarig42.cpp b/src/mame/drivers/atarig42.cpp
index c1eee3b258b..3ff8c45b96a 100644
--- a/src/mame/drivers/atarig42.cpp
+++ b/src/mame/drivers/atarig42.cpp
@@ -561,7 +561,7 @@ MACHINE_CONFIG_START(atarig42_0x200_state::atarig42_0x200)
m_adc->in_callback<1>().set_ioport("A2D1");
/* ASIC65 */
- MCFG_ASIC65_ADD("asic65", ASIC65_ROMBASED)
+ ASIC65(config, m_asic65, 0, ASIC65_ROMBASED);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(atarig42_0x400_state::atarig42_0x400)
@@ -569,7 +569,7 @@ MACHINE_CONFIG_START(atarig42_0x400_state::atarig42_0x400)
MCFG_ATARIRLE_ADD("rle", modesc_0x400)
/* ASIC65 */
- MCFG_ASIC65_ADD("asic65", ASIC65_GUARDIANS)
+ ASIC65(config, m_asic65, 0, ASIC65_GUARDIANS);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/cop01.cpp b/src/mame/drivers/cop01.cpp
index 99ab4c862c4..d305611a6c9 100644
--- a/src/mame/drivers/cop01.cpp
+++ b/src/mame/drivers/cop01.cpp
@@ -497,8 +497,8 @@ MACHINE_CONFIG_START(mightguy_state::mightguy)
MCFG_DEVICE_PROGRAM_MAP(sound_map)
MCFG_DEVICE_IO_MAP(mightguy_audio_io_map)
- MCFG_DEVICE_ADD("prot_chip", NB1412M2, XTAL(8'000'000)/2) // divided by 2 maybe
- MCFG_NB1412M2_DAC_CB(WRITE8("dac", dac_byte_interface, data_w))
+ NB1412M2(config, m_prot, XTAL(8'000'000)/2); // divided by 2 maybe
+ m_prot->dac_callback().set("dac", FUNC(dac_byte_interface::data_w));
/* video hardware */
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/crshrace.cpp b/src/mame/drivers/crshrace.cpp
index de8c17e0de1..2a4d2d84083 100644
--- a/src/mame/drivers/crshrace.cpp
+++ b/src/mame/drivers/crshrace.cpp
@@ -436,9 +436,9 @@ MACHINE_CONFIG_START(crshrace_state::crshrace)
MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM16)
MCFG_DEVICE_ADD("spriteram2", BUFFERED_SPRITERAM16)
- MCFG_DEVICE_ADD("k053936", K053936, 0)
- MCFG_K053936_WRAP(1)
- MCFG_K053936_OFFSETS(-48, -21)
+ K053936(config, m_k053936, 0);
+ m_k053936->set_wrap(1);
+ m_k053936->set_offsets(-48, -21);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
diff --git a/src/mame/drivers/dbz.cpp b/src/mame/drivers/dbz.cpp
index b318a591adc..097fa5cb891 100644
--- a/src/mame/drivers/dbz.cpp
+++ b/src/mame/drivers/dbz.cpp
@@ -366,13 +366,13 @@ MACHINE_CONFIG_START(dbz_state::dbz)
K053251(config, m_k053251, 0);
- MCFG_DEVICE_ADD("k053936_1", K053936, 0)
- MCFG_K053936_WRAP(1)
- MCFG_K053936_OFFSETS(-46, -16)
+ K053936(config, m_k053936_1, 0);
+ m_k053936_1->set_wrap(1);
+ m_k053936_1->set_offsets(-46, -16);
- MCFG_DEVICE_ADD("k053936_2", K053936, 0)
- MCFG_K053936_WRAP(1)
- MCFG_K053936_OFFSETS(-46, -16)
+ K053936(config, m_k053936_2, 0);
+ m_k053936_2->set_wrap(1);
+ m_k053936_2->set_offsets(-46, -16);
K053252(config, m_k053252, 16000000/2);
m_k053252->int1_ack().set(FUNC(dbz_state::dbz_irq2_ack_w));
diff --git a/src/mame/drivers/f1gp.cpp b/src/mame/drivers/f1gp.cpp
index 00070eb5403..b1f717592bf 100644
--- a/src/mame/drivers/f1gp.cpp
+++ b/src/mame/drivers/f1gp.cpp
@@ -444,9 +444,9 @@ MACHINE_CONFIG_START(f1gp_state::f1gp)
m_spr_old[1]->set_pritype(2);
m_spr_old[1]->set_gfxdecode_tag(m_gfxdecode);
- MCFG_DEVICE_ADD("k053936", K053936, 0)
- MCFG_K053936_WRAP(1)
- MCFG_K053936_OFFSETS(-58, -2)
+ K053936(config, m_k053936, 0);
+ m_k053936->set_wrap(1);
+ m_k053936->set_offsets(-58, -2);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
@@ -530,8 +530,7 @@ MACHINE_CONFIG_START(f1gp2_state::f1gp2)
m_spr->set_gfx_region(1);
m_spr->set_gfxdecode_tag(m_gfxdecode);
- MCFG_DEVICE_MODIFY("k053936")
- MCFG_K053936_OFFSETS(-48, -21)
+ m_k053936->set_offsets(-48, -21);
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/galaga.cpp b/src/mame/drivers/galaga.cpp
index c5deb9401eb..22ca1a5cb55 100644
--- a/src/mame/drivers/galaga.cpp
+++ b/src/mame/drivers/galaga.cpp
@@ -1607,14 +1607,14 @@ MACHINE_CONFIG_START(bosco_state::bosco)
NAMCO_50XX(config, "50xx_1", MASTER_CLOCK/6/2); /* 1.536 MHz */
NAMCO_50XX(config, "50xx_2", MASTER_CLOCK/6/2); /* 1.536 MHz */
- MCFG_NAMCO_51XX_ADD("51xx", MASTER_CLOCK/6/2) /* 1.536 MHz */
- MCFG_NAMCO_51XX_SCREEN("screen")
- MCFG_NAMCO_51XX_INPUT_0_CB(IOPORT("IN0L"))
- MCFG_NAMCO_51XX_INPUT_1_CB(IOPORT("IN0H"))
- MCFG_NAMCO_51XX_INPUT_2_CB(IOPORT("IN1L"))
- MCFG_NAMCO_51XX_INPUT_3_CB(IOPORT("IN1H"))
- MCFG_NAMCO_51XX_OUTPUT_0_CB(WRITE8(*this, galaga_state,out_0))
- MCFG_NAMCO_51XX_OUTPUT_1_CB(WRITE8(*this, galaga_state,out_1))
+ namco_51xx_device &n51xx(NAMCO_51XX(config, "51xx", MASTER_CLOCK/6/2)); /* 1.536 MHz */
+ n51xx.set_screen_tag(m_screen);
+ n51xx.input_callback<0>().set_ioport("IN0L");
+ n51xx.input_callback<1>().set_ioport("IN0H");
+ n51xx.input_callback<2>().set_ioport("IN1L");
+ n51xx.input_callback<3>().set_ioport("IN1H");
+ n51xx.output_callback<0>().set(FUNC(galaga_state::out_0));
+ n51xx.output_callback<1>().set(FUNC(galaga_state::out_1));
namco_52xx_device &n52xx(NAMCO_52XX(config, "52xx", MASTER_CLOCK/6/2)); /* 1.536 MHz */
n52xx.set_discrete("discrete");
@@ -1627,21 +1627,21 @@ MACHINE_CONFIG_START(bosco_state::bosco)
n54xx.set_discrete("discrete");
n54xx.set_basenote(NODE_01);
- MCFG_NAMCO_06XX_ADD("06xx_0", MASTER_CLOCK/6/64)
- MCFG_NAMCO_06XX_MAINCPU("maincpu")
- MCFG_NAMCO_06XX_READ_0_CB(READ8("51xx", namco_51xx_device, read))
- MCFG_NAMCO_06XX_WRITE_0_CB(WRITE8("51xx", namco_51xx_device, write))
- MCFG_NAMCO_06XX_READ_2_CB(READ8("50xx_1", namco_50xx_device, read))
- MCFG_NAMCO_06XX_READ_REQUEST_2_CB(WRITELINE("50xx_1", namco_50xx_device, read_request))
- MCFG_NAMCO_06XX_WRITE_2_CB(WRITE8("50xx_1", namco_50xx_device, write))
- MCFG_NAMCO_06XX_WRITE_3_CB(WRITE8("54xx", namco_54xx_device, write))
-
- MCFG_NAMCO_06XX_ADD("06xx_1", MASTER_CLOCK/6/64)
- MCFG_NAMCO_06XX_MAINCPU("sub")
- MCFG_NAMCO_06XX_READ_0_CB(READ8("50xx_2", namco_50xx_device, read))
- MCFG_NAMCO_06XX_READ_REQUEST_0_CB(WRITELINE("50xx_2", namco_50xx_device, read_request))
- MCFG_NAMCO_06XX_WRITE_0_CB(WRITE8("50xx_2", namco_50xx_device, write))
- MCFG_NAMCO_06XX_WRITE_1_CB(WRITE8("52xx", namco_52xx_device, write))
+ namco_06xx_device &n06xx_0(NAMCO_06XX(config, "06xx_0", MASTER_CLOCK/6/64));
+ n06xx_0.set_maincpu(m_maincpu);
+ n06xx_0.read_callback<0>().set("51xx", FUNC(namco_51xx_device::read));
+ n06xx_0.write_callback<0>().set("51xx", FUNC(namco_51xx_device::write));
+ n06xx_0.read_callback<2>().set("50xx_1", FUNC(namco_50xx_device::read));
+ n06xx_0.read_request_callback<2>().set("50xx_1", FUNC(namco_50xx_device::read_request));
+ n06xx_0.write_callback<2>().set("50xx_1", FUNC(namco_50xx_device::write));
+ n06xx_0.write_callback<3>().set("54xx", FUNC(namco_54xx_device::write));
+
+ namco_06xx_device &n06xx_1(NAMCO_06XX(config, "06xx_1", MASTER_CLOCK/6/64));
+ n06xx_1.set_maincpu(m_subcpu);
+ n06xx_1.read_callback<0>().set("50xx_2", FUNC(namco_50xx_device::read));
+ n06xx_1.read_request_callback<0>().set("50xx_2", FUNC(namco_50xx_device::read_request));
+ n06xx_1.write_callback<0>().set("50xx_2", FUNC(namco_50xx_device::write));
+ n06xx_1.write_callback<1>().set("52xx", FUNC(namco_52xx_device::write));
LS259(config, m_videolatch); // 1B on video board
m_videolatch->q_out_cb<0>().set(FUNC(galaga_state::flip_screen_w)).invert();
@@ -1698,24 +1698,24 @@ MACHINE_CONFIG_START(galaga_state::galaga)
misclatch.q_out_cb<3>().set_inputline("sub", INPUT_LINE_RESET).invert();
misclatch.q_out_cb<3>().append_inputline("sub2", INPUT_LINE_RESET).invert();
- MCFG_NAMCO_51XX_ADD("51xx", MASTER_CLOCK/6/2) /* 1.536 MHz */
- MCFG_NAMCO_51XX_SCREEN("screen")
- MCFG_NAMCO_51XX_INPUT_0_CB(IOPORT("IN0L"))
- MCFG_NAMCO_51XX_INPUT_1_CB(IOPORT("IN0H"))
- MCFG_NAMCO_51XX_INPUT_2_CB(IOPORT("IN1L"))
- MCFG_NAMCO_51XX_INPUT_3_CB(IOPORT("IN1H"))
- MCFG_NAMCO_51XX_OUTPUT_0_CB(WRITE8(*this, galaga_state,out_0))
- MCFG_NAMCO_51XX_OUTPUT_1_CB(WRITE8(*this, galaga_state,out_1))
+ namco_51xx_device &n51xx(NAMCO_51XX(config, "51xx", MASTER_CLOCK/6/2)); /* 1.536 MHz */
+ n51xx.set_screen_tag(m_screen);
+ n51xx.input_callback<0>().set_ioport("IN0L");
+ n51xx.input_callback<1>().set_ioport("IN0H");
+ n51xx.input_callback<2>().set_ioport("IN1L");
+ n51xx.input_callback<3>().set_ioport("IN1H");
+ n51xx.output_callback<0>().set(FUNC(galaga_state::out_0));
+ n51xx.output_callback<1>().set(FUNC(galaga_state::out_1));
namco_54xx_device &n54xx(NAMCO_54XX(config, "54xx", MASTER_CLOCK/6/2)); /* 1.536 MHz */
n54xx.set_discrete("discrete");
n54xx.set_basenote(NODE_01);
- MCFG_NAMCO_06XX_ADD("06xx", MASTER_CLOCK/6/64)
- MCFG_NAMCO_06XX_MAINCPU("maincpu")
- MCFG_NAMCO_06XX_READ_0_CB(READ8("51xx", namco_51xx_device, read))
- MCFG_NAMCO_06XX_WRITE_0_CB(WRITE8("51xx", namco_51xx_device, write))
- MCFG_NAMCO_06XX_WRITE_3_CB(WRITE8("54xx", namco_54xx_device, write))
+ namco_06xx_device &n06xx(NAMCO_06XX(config, "06xx", MASTER_CLOCK/6/64));
+ n06xx.set_maincpu(m_maincpu);
+ n06xx.read_callback<0>().set("51xx", FUNC(namco_51xx_device::read));
+ n06xx.write_callback<0>().set("51xx", FUNC(namco_51xx_device::write));
+ n06xx.write_callback<3>().set("54xx", FUNC(namco_54xx_device::write));
LS259(config, m_videolatch); // 5K on video board
// Q0-Q5 to 05XX for starfield control
@@ -1756,20 +1756,20 @@ MACHINE_CONFIG_START(galaga_state::galagab)
/* basic machine hardware */
- MCFG_DEVICE_REMOVE("54xx")
- MCFG_DEVICE_REMOVE("06xx")
+ config.device_remove("54xx");
+ config.device_remove("06xx");
/* FIXME: bootlegs should not have any Namco custom chip. However, this workaround is needed atm */
- MCFG_NAMCO_06XX_ADD("06xx", MASTER_CLOCK/6/64)
- MCFG_NAMCO_06XX_MAINCPU("maincpu")
- MCFG_NAMCO_06XX_READ_0_CB(READ8("51xx", namco_51xx_device, read))
- MCFG_NAMCO_06XX_WRITE_0_CB(WRITE8("51xx", namco_51xx_device, write))
+ namco_06xx_device &n06xx(NAMCO_06XX(config, "06xx", MASTER_CLOCK/6/64));
+ n06xx.set_maincpu(m_maincpu);
+ n06xx.read_callback<0>().set("51xx", FUNC(namco_51xx_device::read));
+ n06xx.write_callback<0>().set("51xx", FUNC(namco_51xx_device::write));
MCFG_DEVICE_ADD("sub3", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(galaga_mem4)
/* sound hardware */
- MCFG_DEVICE_REMOVE("discrete")
+ config.device_remove("discrete");
MACHINE_CONFIG_END
MACHINE_CONFIG_START(galaga_state::gatsbee)
@@ -1802,27 +1802,27 @@ MACHINE_CONFIG_START(xevious_state::xevious)
NAMCO_50XX(config, "50xx", MASTER_CLOCK/6/2); /* 1.536 MHz */
- MCFG_NAMCO_51XX_ADD("51xx", MASTER_CLOCK/6/2) /* 1.536 MHz */
- MCFG_NAMCO_51XX_SCREEN("screen")
- MCFG_NAMCO_51XX_INPUT_0_CB(IOPORT("IN0L"))
- MCFG_NAMCO_51XX_INPUT_1_CB(IOPORT("IN0H"))
- MCFG_NAMCO_51XX_INPUT_2_CB(IOPORT("IN1L"))
- MCFG_NAMCO_51XX_INPUT_3_CB(IOPORT("IN1H"))
- MCFG_NAMCO_51XX_OUTPUT_0_CB(WRITE8(*this, galaga_state,out_0))
- MCFG_NAMCO_51XX_OUTPUT_1_CB(WRITE8(*this, galaga_state,out_1))
+ namco_51xx_device &n51xx(NAMCO_51XX(config, "51xx", MASTER_CLOCK/6/2)); /* 1.536 MHz */
+ n51xx.set_screen_tag(m_screen);
+ n51xx.input_callback<0>().set_ioport("IN0L");
+ n51xx.input_callback<1>().set_ioport("IN0H");
+ n51xx.input_callback<2>().set_ioport("IN1L");
+ n51xx.input_callback<3>().set_ioport("IN1H");
+ n51xx.output_callback<0>().set(FUNC(galaga_state::out_0));
+ n51xx.output_callback<1>().set(FUNC(galaga_state::out_1));
namco_54xx_device &n54xx(NAMCO_54XX(config, "54xx", MASTER_CLOCK/6/2)); /* 1.536 MHz */
n54xx.set_discrete("discrete");
n54xx.set_basenote(NODE_01);
- MCFG_NAMCO_06XX_ADD("06xx", MASTER_CLOCK/6/64)
- MCFG_NAMCO_06XX_MAINCPU("maincpu")
- MCFG_NAMCO_06XX_READ_0_CB(READ8("51xx", namco_51xx_device, read))
- MCFG_NAMCO_06XX_WRITE_0_CB(WRITE8("51xx", namco_51xx_device, write))
- MCFG_NAMCO_06XX_READ_2_CB(READ8("50xx", namco_50xx_device, read))
- MCFG_NAMCO_06XX_READ_REQUEST_2_CB(WRITELINE("50xx", namco_50xx_device, read_request))
- MCFG_NAMCO_06XX_WRITE_2_CB(WRITE8("50xx", namco_50xx_device, write))
- MCFG_NAMCO_06XX_WRITE_3_CB(WRITE8("54xx", namco_54xx_device, write))
+ namco_06xx_device &n06xx(NAMCO_06XX(config, "06xx", MASTER_CLOCK/6/64));
+ n06xx.set_maincpu(m_maincpu);
+ n06xx.read_callback<0>().set("51xx", FUNC(namco_51xx_device::read));
+ n06xx.write_callback<0>().set("51xx", FUNC(namco_51xx_device::write));
+ n06xx.read_callback<2>().set("50xx", FUNC(namco_50xx_device::read));
+ n06xx.read_request_callback<2>().set("50xx", FUNC(namco_50xx_device::read_request));
+ n06xx.write_callback<2>().set("50xx", FUNC(namco_50xx_device::write));
+ n06xx.write_callback<3>().set("54xx", FUNC(namco_54xx_device::write));
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 8);
MCFG_QUANTUM_TIME(attotime::from_hz(60000)) /* 1000 CPU slices per frame - an high value to ensure proper */
@@ -1857,15 +1857,15 @@ MACHINE_CONFIG_START(battles_state::battles)
xevious(config);
/* basic machine hardware */
- MCFG_DEVICE_REMOVE("50xx")
- MCFG_DEVICE_REMOVE("54xx")
- MCFG_DEVICE_REMOVE("06xx")
+ config.device_remove("50xx");
+ config.device_remove("54xx");
+ config.device_remove("06xx");
/* FIXME: bootlegs should not have any Namco custom chip. However, this workaround is needed atm */
- MCFG_NAMCO_06XX_ADD("06xx", MASTER_CLOCK/6/64)
- MCFG_NAMCO_06XX_MAINCPU("maincpu")
- MCFG_NAMCO_06XX_READ_0_CB(READ8("51xx", namco_51xx_device, read))
- MCFG_NAMCO_06XX_WRITE_0_CB(WRITE8("51xx", namco_51xx_device, write))
+ namco_06xx_device &n06xx(NAMCO_06XX(config, "06xx", MASTER_CLOCK/6/64));
+ n06xx.set_maincpu(m_maincpu);
+ n06xx.read_callback<0>().set("51xx", FUNC(namco_51xx_device::read));
+ n06xx.write_callback<0>().set("51xx", FUNC(namco_51xx_device::write));
MCFG_DEVICE_ADD("sub3", Z80, MASTER_CLOCK/6) /* 3.072 MHz */
MCFG_DEVICE_PROGRAM_MAP(battles_mem4)
@@ -1875,7 +1875,7 @@ MACHINE_CONFIG_START(battles_state::battles)
MCFG_TIMER_DRIVER_ADD("nmi", battles_state, nmi_generate)
/* sound hardware */
- MCFG_DEVICE_REMOVE("discrete")
+ config.device_remove("discrete");
MCFG_DEVICE_ADD("samples", SAMPLES)
MCFG_SAMPLES_CHANNELS(1)
@@ -1903,14 +1903,14 @@ MACHINE_CONFIG_START(digdug_state::digdug)
misclatch.q_out_cb<3>().append_inputline("sub2", INPUT_LINE_RESET).invert();
// Q5-Q7 also used (see below)
- MCFG_NAMCO_51XX_ADD("51xx", MASTER_CLOCK/6/2) /* 1.536 MHz */
- MCFG_NAMCO_51XX_SCREEN("screen")
- MCFG_NAMCO_51XX_INPUT_0_CB(IOPORT("IN0L"))
- MCFG_NAMCO_51XX_INPUT_1_CB(IOPORT("IN0H"))
- MCFG_NAMCO_51XX_INPUT_2_CB(IOPORT("IN1L"))
- MCFG_NAMCO_51XX_INPUT_3_CB(IOPORT("IN1H"))
- MCFG_NAMCO_51XX_OUTPUT_0_CB(WRITE8(*this, galaga_state,out_0))
- MCFG_NAMCO_51XX_OUTPUT_1_CB(WRITE8(*this, galaga_state,out_1))
+ namco_51xx_device &n51xx(NAMCO_51XX(config, "51xx", MASTER_CLOCK/6/2)); /* 1.536 MHz */
+ n51xx.set_screen_tag(m_screen);
+ n51xx.input_callback<0>().set_ioport("IN0L");
+ n51xx.input_callback<1>().set_ioport("IN0H");
+ n51xx.input_callback<2>().set_ioport("IN1L");
+ n51xx.input_callback<3>().set_ioport("IN1H");
+ n51xx.output_callback<0>().set(FUNC(galaga_state::out_0));
+ n51xx.output_callback<1>().set(FUNC(galaga_state::out_1));
namco_53xx_device &n53xx(NAMCO_53XX(config, "53xx", MASTER_CLOCK/6/2)); /* 1.536 MHz */
n53xx.k_port_callback().set("misclatch", FUNC(ls259_device::q7_r)).lshift(3); // MOD 2 = K3
@@ -1922,12 +1922,12 @@ MACHINE_CONFIG_START(digdug_state::digdug)
n53xx.input_callback<2>().set_ioport("DSWB").mask(0x0f);
n53xx.input_callback<3>().set_ioport("DSWB").rshift(4);
- MCFG_NAMCO_06XX_ADD("06xx", MASTER_CLOCK/6/64)
- MCFG_NAMCO_06XX_MAINCPU("maincpu")
- MCFG_NAMCO_06XX_READ_0_CB(READ8("51xx", namco_51xx_device, read))
- MCFG_NAMCO_06XX_WRITE_0_CB(WRITE8("51xx", namco_51xx_device, write))
- MCFG_NAMCO_06XX_READ_1_CB(READ8("53xx", namco_53xx_device, read))
- MCFG_NAMCO_06XX_READ_REQUEST_1_CB(WRITELINE("53xx", namco_53xx_device, read_request))
+ namco_06xx_device &n06xx(NAMCO_06XX(config, "06xx", MASTER_CLOCK/6/64));
+ n06xx.set_maincpu(m_maincpu);
+ n06xx.read_callback<0>().set("51xx", FUNC(namco_51xx_device::read));
+ n06xx.write_callback<0>().set("51xx", FUNC(namco_51xx_device::write));
+ n06xx.read_callback<1>().set("53xx", FUNC(namco_53xx_device::read));
+ n06xx.read_request_callback<1>().set("53xx", FUNC(namco_53xx_device::read_request));
LS259(config, m_videolatch); // 5R
m_videolatch->parallel_out_cb().set(FUNC(digdug_state::bg_select_w)).mask(0x33);
diff --git a/src/mame/drivers/galivan.cpp b/src/mame/drivers/galivan.cpp
index c48aecdf6c0..392d98d0bc9 100644
--- a/src/mame/drivers/galivan.cpp
+++ b/src/mame/drivers/galivan.cpp
@@ -484,7 +484,7 @@ MACHINE_CONFIG_START(dangarj_state::dangarj)
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_IO_MAP(dangarj_io_map)
- MCFG_DEVICE_ADD("prot_chip", NB1412M2, XTAL(8'000'000)) // divided by 2 maybe
+ NB1412M2(config, m_prot, XTAL(8'000'000)); // divided by 2 maybe
MACHINE_CONFIG_END
MACHINE_CONFIG_START(galivan_state::ninjemak)
diff --git a/src/mame/drivers/gaplus.cpp b/src/mame/drivers/gaplus.cpp
index db9c7435619..1d16b83d33e 100644
--- a/src/mame/drivers/gaplus.cpp
+++ b/src/mame/drivers/gaplus.cpp
@@ -529,13 +529,13 @@ MACHINE_CONFIG_START(gaplus_base_state::gaplus_base)
WATCHDOG_TIMER(config, "watchdog");
- MCFG_NAMCO_62XX_ADD("62xx", 24576000 / 6 / 2) /* totally made up - TODO: fix */
- //MCFG_NAMCO_62XX_INPUT_0_CB(IOPORT("IN0L"))
- //MCFG_NAMCO_62XX_INPUT_1_CB(IOPORT("IN0H"))
- //MCFG_NAMCO_62XX_INPUT_2_CB(IOPORT("IN1L"))
- //MCFG_NAMCO_62XX_INPUT_3_CB(IOPORT("IN1H"))
- //MCFG_NAMCO_62XX_OUTPUT_0_CB(WRITE8(*this, gaplus_base_state,out_0))
- //MCFG_NAMCO_62XX_OUTPUT_1_CB(WRITE8(*this, gaplus_base_state,out_1))
+ NAMCO_62XX(config, "62xx", 24576000 / 6 / 2); /* totally made up - TODO: fix */
+ //n62xx.input_callback<0>().set_ioport("IN0L");
+ //n62xx.input_callback<1>().set_ioport("IN0H");
+ //n62xx.input_callback<2>().set_ioport("IN1L");
+ //n62xx.input_callback<3>().set_ioport("IN1H");
+ //n62xx.output_callback<0>().set(FUNC(gaplus_base_state::out_0));
+ //n62xx.output_callback<1>().set(FUNC(gaplus_base_state::out_1));
/* video hardware */
SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
@@ -566,59 +566,62 @@ MACHINE_CONFIG_START(gaplus_base_state::gaplus_base)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(gaplus_state::gaplus)
+void gaplus_state::gaplus(machine_config &config)
+{
gaplus_base(config);
- MCFG_DEVICE_ADD("namcoio_1", NAMCO_56XX, 0)
- MCFG_NAMCO56XX_IN_0_CB(IOPORT("COINS"))
- MCFG_NAMCO56XX_IN_1_CB(IOPORT("P1"))
- MCFG_NAMCO56XX_IN_2_CB(IOPORT("P2"))
- MCFG_NAMCO56XX_IN_3_CB(IOPORT("BUTTONS"))
- MCFG_NAMCO56XX_OUT_0_CB(WRITE8(*this, gaplus_state, out_lamps0))
- MCFG_NAMCO56XX_OUT_1_CB(WRITE8(*this, gaplus_state, out_lamps1))
-
- MCFG_DEVICE_ADD("namcoio_2", NAMCO_58XX, 0)
- MCFG_NAMCO58XX_IN_0_CB(IOPORT("DSWA_HIGH"))
- MCFG_NAMCO58XX_IN_1_CB(IOPORT("DSWB_LOW"))
- MCFG_NAMCO58XX_IN_2_CB(IOPORT("DSWB_HIGH"))
- MCFG_NAMCO58XX_IN_3_CB(IOPORT("DSWA_LOW"))
-MACHINE_CONFIG_END
+ NAMCO_56XX(config, m_namco56xx, 0);
+ m_namco56xx->in_callback<0>().set_ioport("COINS");
+ m_namco56xx->in_callback<1>().set_ioport("P1");
+ m_namco56xx->in_callback<2>().set_ioport("P2");
+ m_namco56xx->in_callback<3>().set_ioport("BUTTONS");
+ m_namco56xx->out_callback<0>().set(FUNC(gaplus_state::out_lamps0));
+ m_namco56xx->out_callback<1>().set(FUNC(gaplus_state::out_lamps1));
+
+ NAMCO_58XX(config, m_namco58xx, 0);
+ m_namco58xx->in_callback<0>().set_ioport("DSWA_HIGH");
+ m_namco58xx->in_callback<1>().set_ioport("DSWB_LOW");
+ m_namco58xx->in_callback<2>().set_ioport("DSWB_HIGH");
+ m_namco58xx->in_callback<3>().set_ioport("DSWA_LOW");
+}
-MACHINE_CONFIG_START(gaplusd_state::gaplusd)
+void gaplusd_state::gaplusd(machine_config &config)
+{
gaplus_base(config);
- MCFG_DEVICE_ADD("namcoio_1", NAMCO_58XX, 0)
- MCFG_NAMCO58XX_IN_0_CB(IOPORT("COINS"))
- MCFG_NAMCO58XX_IN_1_CB(IOPORT("P1"))
- MCFG_NAMCO58XX_IN_2_CB(IOPORT("P2"))
- MCFG_NAMCO58XX_IN_3_CB(IOPORT("BUTTONS"))
-
- MCFG_DEVICE_ADD("namcoio_2", NAMCO_56XX, 0)
- MCFG_NAMCO56XX_IN_0_CB(IOPORT("DSWA_HIGH"))
- MCFG_NAMCO56XX_IN_1_CB(IOPORT("DSWB_LOW"))
- MCFG_NAMCO56XX_IN_2_CB(IOPORT("DSWB_HIGH"))
- MCFG_NAMCO56XX_IN_3_CB(IOPORT("DSWA_LOW"))
-MACHINE_CONFIG_END
+ NAMCO_58XX(config, m_namco58xx, 0);
+ m_namco58xx->in_callback<0>().set_ioport("COINS");
+ m_namco58xx->in_callback<1>().set_ioport("P1");
+ m_namco58xx->in_callback<2>().set_ioport("P2");
+ m_namco58xx->in_callback<3>().set_ioport("BUTTONS");
+
+ NAMCO_56XX(config, m_namco56xx, 0);
+ m_namco56xx->in_callback<0>().set_ioport("DSWA_HIGH");
+ m_namco56xx->in_callback<1>().set_ioport("DSWB_LOW");
+ m_namco56xx->in_callback<2>().set_ioport("DSWB_HIGH");
+ m_namco56xx->in_callback<3>().set_ioport("DSWA_LOW");
+}
-MACHINE_CONFIG_START(gapluso_state::gapluso)
+void gapluso_state::gapluso(machine_config &config)
+{
gaplus_base(config);
/* basic machine hardware */
m_screen->screen_vblank().set(FUNC(gaplus_base_state::screen_vblank));
m_screen->screen_vblank().append(FUNC(gapluso_state::vblank_irq));
- MCFG_DEVICE_ADD("namcoio_1", NAMCO_56XX, 0)
- MCFG_NAMCO56XX_IN_0_CB(IOPORT("COINS"))
- MCFG_NAMCO56XX_IN_1_CB(IOPORT("P1"))
- MCFG_NAMCO56XX_IN_2_CB(IOPORT("P2"))
- MCFG_NAMCO56XX_IN_3_CB(IOPORT("BUTTONS"))
-
- MCFG_DEVICE_ADD("namcoio_2", NAMCO_58XX, 0)
- MCFG_NAMCO58XX_IN_0_CB(IOPORT("DSWA_HIGH"))
- MCFG_NAMCO58XX_IN_1_CB(IOPORT("DSWB_LOW"))
- MCFG_NAMCO58XX_IN_2_CB(IOPORT("DSWB_HIGH"))
- MCFG_NAMCO58XX_IN_3_CB(IOPORT("DSWA_LOW"))
-MACHINE_CONFIG_END
+ NAMCO_56XX(config, m_namco56xx, 0);
+ m_namco56xx->in_callback<0>().set_ioport("COINS");
+ m_namco56xx->in_callback<1>().set_ioport("P1");
+ m_namco56xx->in_callback<2>().set_ioport("P2");
+ m_namco56xx->in_callback<3>().set_ioport("BUTTONS");
+
+ NAMCO_58XX(config, m_namco58xx, 0);
+ m_namco58xx->in_callback<0>().set_ioport("DSWA_HIGH");
+ m_namco58xx->in_callback<1>().set_ioport("DSWB_LOW");
+ m_namco58xx->in_callback<2>().set_ioport("DSWB_HIGH");
+ m_namco58xx->in_callback<3>().set_ioport("DSWA_LOW");
+}
diff --git a/src/mame/drivers/harddriv.cpp b/src/mame/drivers/harddriv.cpp
index 560f20931d7..56be52b9f79 100644
--- a/src/mame/drivers/harddriv.cpp
+++ b/src/mame/drivers/harddriv.cpp
@@ -1654,7 +1654,7 @@ MACHINE_CONFIG_START(harddriv_state::dsk)
EEPROM_2816(config, "dsk_30c"); // MK48Z02
/* ASIC65 */
- MCFG_ASIC65_ADD("asic65", ASIC65_STANDARD)
+ ASIC65(config, m_asic65, 0, ASIC65_STANDARD);
MACHINE_CONFIG_END
@@ -1667,7 +1667,7 @@ MACHINE_CONFIG_START(harddriv_state::dsk2)
MCFG_DEVICE_PROGRAM_MAP(dsk2_dsp32_map)
/* ASIC65 */
- MCFG_ASIC65_ADD("asic65", ASIC65_STANDARD)
+ ASIC65(config, m_asic65, 0, ASIC65_STANDARD);
MACHINE_CONFIG_END
@@ -1933,7 +1933,7 @@ MACHINE_CONFIG_START(steeltal_board_device_state::device_add_mconfig)
config.device_remove("lspeaker");
config.device_remove("rspeaker");
- MCFG_ASIC65_ADD("asic65", ASIC65_STEELTAL) /* ASIC65 on DSPCOM board */
+ ASIC65(config, m_asic65, 0, ASIC65_STEELTAL); /* ASIC65 on DSPCOM board */
/* sund hardware */
SPEAKER(config, "mono").front_center();
diff --git a/src/mame/drivers/igs017.cpp b/src/mame/drivers/igs017.cpp
index 83a839725c7..2224ce4d93d 100644
--- a/src/mame/drivers/igs017.cpp
+++ b/src/mame/drivers/igs017.cpp
@@ -3669,10 +3669,10 @@ MACHINE_CONFIG_START(igs017_state::lhzb2)
ppi.in_pc_callback().set_ioport("DSW2");
// protection
- MCFG_DEVICE_ADD("igs025", IGS025, 0)
- MCFG_IGS025_SET_EXTERNAL_EXECUTE( igs017_state, igs025_to_igs022_callback )
+ IGS025(config, m_igs025, 0);
+ m_igs025->set_external_cb(FUNC(igs017_state::igs025_to_igs022_callback), this);
- MCFG_DEVICE_ADD("igs022", IGS022, 0)
+ IGS022(config, m_igs022, 0);
// video
MCFG_SCREEN_ADD("screen", RASTER)
@@ -3765,10 +3765,10 @@ MACHINE_CONFIG_START(igs017_state::slqz2)
ppi.in_pc_callback().set_ioport("DSW2");
// protection
- MCFG_DEVICE_ADD("igs025", IGS025, 0)
- MCFG_IGS025_SET_EXTERNAL_EXECUTE( igs017_state, igs025_to_igs022_callback )
+ IGS025(config, m_igs025, 0);
+ m_igs025->set_external_cb(FUNC(igs017_state::igs025_to_igs022_callback), this);
- MCFG_DEVICE_ADD("igs022", IGS022, 0)
+ IGS022(config, m_igs022, 0);
// video
MCFG_SCREEN_ADD("screen", RASTER)
diff --git a/src/mame/drivers/megadriv.cpp b/src/mame/drivers/megadriv.cpp
index 7469144511c..d6a7c70cfda 100644
--- a/src/mame/drivers/megadriv.cpp
+++ b/src/mame/drivers/megadriv.cpp
@@ -612,14 +612,14 @@ MACHINE_CONFIG_START(md_cons_state::genesis_32x)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", (0.25)/2)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", (0.25)/2)
- MCFG_DEVICE_ADD("sega32x", SEGA_32X_NTSC, (MASTER_CLOCK_NTSC * 3) / 7, m_maincpu, m_scan_timer)
- MCFG_SEGA_32X_PALETTE("gen_vdp:palette")
+ SEGA_32X_NTSC(config, m_32x, (MASTER_CLOCK_NTSC * 3) / 7, m_maincpu, m_scan_timer);
+ m_32x->set_palette_tag("gen_vdp:palette");
MCFG_SCREEN_MODIFY("megadriv")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, md_cons_state, screen_vblank_console))
// we need to remove and re-add the YM because the balance is different
- // due to MAME / MESS having severe issues if the dac output is > 0.40? (sound is corrupted even if DAC is slient?!)
+ // due to MAME / MESS having severe issues if the dac output is > 0.40? (sound is corrupted even if DAC is silent?!)
MCFG_DEVICE_REMOVE("ymsnd")
MCFG_DEVICE_ADD("ymsnd", YM2612, MASTER_CLOCK_NTSC/7)
@@ -650,14 +650,14 @@ MACHINE_CONFIG_START(md_cons_state::mdj_32x)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", (0.25)/2)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", (0.25)/2)
- MCFG_DEVICE_ADD("sega32x", SEGA_32X_NTSC, (MASTER_CLOCK_NTSC * 3) / 7, m_maincpu, m_scan_timer)
- MCFG_SEGA_32X_PALETTE("gen_vdp:palette")
+ SEGA_32X_NTSC(config, m_32x, (MASTER_CLOCK_NTSC * 3) / 7, m_maincpu, m_scan_timer);
+ m_32x->set_palette_tag("gen_vdp:palette");
MCFG_SCREEN_MODIFY("megadriv")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, md_cons_state, screen_vblank_console))
// we need to remove and re-add the sound system because the balance is different
- // due to MAME / MESS having severe issues if the dac output is > 0.40? (sound is corrupted even if DAC is slient?!)
+ // due to MAME / MESS having severe issues if the dac output is > 0.40? (sound is corrupted even if DAC is silent?!)
MCFG_DEVICE_REMOVE("ymsnd")
MCFG_DEVICE_ADD("ymsnd", YM2612, MASTER_CLOCK_NTSC/7)
@@ -688,14 +688,14 @@ MACHINE_CONFIG_START(md_cons_state::md_32x)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", (0.25)/2)
MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", (0.25)/2)
- MCFG_DEVICE_ADD("sega32x", SEGA_32X_PAL, (MASTER_CLOCK_PAL * 3) / 7, m_maincpu, m_scan_timer)
- MCFG_SEGA_32X_PALETTE("gen_vdp:palette")
+ SEGA_32X_PAL(config, m_32x, (MASTER_CLOCK_PAL * 3) / 7, m_maincpu, m_scan_timer);
+ m_32x->set_palette_tag("gen_vdp:palette");
MCFG_SCREEN_MODIFY("megadriv")
MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, md_cons_state, screen_vblank_console))
// we need to remove and re-add the sound system because the balance is different
- // due to MAME / MESS having severe issues if the dac output is > 0.40? (sound is corrupted even if DAC is slient?!)
+ // due to MAME / MESS having severe issues if the dac output is > 0.40? (sound is corrupted even if DAC is silent?!)
MCFG_DEVICE_REMOVE("ymsnd")
MCFG_DEVICE_ADD("ymsnd", YM2612, MASTER_CLOCK_NTSC/7)
diff --git a/src/mame/drivers/metro.cpp b/src/mame/drivers/metro.cpp
index 8ac503eecf2..4c8978d1015 100644
--- a/src/mame/drivers/metro.cpp
+++ b/src/mame/drivers/metro.cpp
@@ -3682,8 +3682,8 @@ MACHINE_CONFIG_START(metro_state::blzntrnd)
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "vdp2:palette", gfx_blzntrnd)
- MCFG_DEVICE_ADD("k053936", K053936, 0)
- MCFG_K053936_OFFSETS(-77, -21)
+ K053936(config, m_k053936, 0);
+ m_k053936->set_offsets(-77, -21);
/* sound hardware */
// HUM-002 PCB Configuration : Stereo output with second speaker connector
@@ -3706,8 +3706,7 @@ MACHINE_CONFIG_START(metro_state::gstrik2)
MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_gstrik2)
MCFG_VIDEO_START_OVERRIDE(metro_state,gstrik2)
- MCFG_DEVICE_MODIFY("k053936")
- MCFG_K053936_OFFSETS(-77, -19)
+ m_k053936->set_offsets(-77, -19);
m_vdp2->set_tmap_xoffsets(0,-8,0);
diff --git a/src/mame/drivers/namcos12.cpp b/src/mame/drivers/namcos12.cpp
index 737f4ece210..b02df573a32 100644
--- a/src/mame/drivers/namcos12.cpp
+++ b/src/mame/drivers/namcos12.cpp
@@ -1731,7 +1731,7 @@ MACHINE_CONFIG_START(namcos12_state::namcos12_mobo)
MCFG_DEVICE_PROGRAM_MAP(s12h8rwmap)
MCFG_DEVICE_IO_MAP(s12h8iomap)
- MCFG_NAMCO_SETTINGS_ADD("namco_settings")
+ NAMCO_SETTINGS(config, m_settings, 0);
RTC4543(config, m_rtc, XTAL(32'768));
m_rtc->data_cb().set("sub:sci1", FUNC(h8_sci_device::rx_w));
diff --git a/src/mame/drivers/namcos23.cpp b/src/mame/drivers/namcos23.cpp
index 94651f1734e..88d54d326ea 100644
--- a/src/mame/drivers/namcos23.cpp
+++ b/src/mame/drivers/namcos23.cpp
@@ -3622,7 +3622,7 @@ MACHINE_CONFIG_START(namcos23_state::gorgon)
MCFG_QUANTUM_TIME(attotime::from_hz(2*115200))
- MCFG_NAMCO_SETTINGS_ADD("namco_settings")
+ NAMCO_SETTINGS(config, m_settings, 0);
RTC4543(config, m_rtc, XTAL(32'768));
m_rtc->data_cb().set("subcpu:sci1", FUNC(h8_sci_device::rx_w));
@@ -3690,7 +3690,7 @@ MACHINE_CONFIG_START(namcos23_state::s23)
MCFG_QUANTUM_TIME(attotime::from_hz(2*115200))
- MCFG_NAMCO_SETTINGS_ADD("namco_settings")
+ NAMCO_SETTINGS(config, m_settings, 0);
RTC4543(config, m_rtc, XTAL(32'768));
m_rtc->data_cb().set("subcpu:sci1", FUNC(h8_sci_device::rx_w));
@@ -3771,7 +3771,7 @@ MACHINE_CONFIG_START(namcos23_state::ss23)
MCFG_QUANTUM_TIME(attotime::from_hz(2*115200))
- MCFG_NAMCO_SETTINGS_ADD("namco_settings")
+ NAMCO_SETTINGS(config, m_settings, 0);
RTC4543(config, m_rtc, XTAL(32'768));
m_rtc->data_cb().set("subcpu:sci1", FUNC(h8_sci_device::rx_w));
diff --git a/src/mame/drivers/next.cpp b/src/mame/drivers/next.cpp
index bc962a26910..c35c99d64dd 100644
--- a/src/mame/drivers/next.cpp
+++ b/src/mame/drivers/next.cpp
@@ -1021,10 +1021,10 @@ MACHINE_CONFIG_START(next_state::next_base)
SCC8530(config, scc, XTAL(25'000'000));
scc->intrq_callback().set(FUNC(next_state::scc_irq));
- MCFG_DEVICE_ADD("keyboard", NEXTKBD, 0)
- MCFG_NEXTKBD_INT_CHANGE_CALLBACK(WRITELINE(*this, next_state, keyboard_irq))
- MCFG_NEXTKBD_INT_POWER_CALLBACK(WRITELINE(*this, next_state, power_irq))
- MCFG_NEXTKBD_INT_NMI_CALLBACK(WRITELINE(*this, next_state, nmi_irq))
+ NEXTKBD(config, keyboard, 0);
+ keyboard->int_change_wr_callback().set(FUNC(next_state::keyboard_irq));
+ keyboard->int_power_wr_callback().set(FUNC(next_state::power_irq));
+ keyboard->int_nmi_wr_callback().set(FUNC(next_state::nmi_irq));
MCFG_NSCSI_ADD("scsibus:0", next_scsi_devices, "harddisk", false)
MCFG_NSCSI_ADD("scsibus:1", next_scsi_devices, "cdrom", false)
@@ -1042,9 +1042,9 @@ MACHINE_CONFIG_START(next_state::next_base)
net->tx_drq().set(FUNC(next_state::net_tx_drq));
net->rx_drq().set(FUNC(next_state::net_rx_drq));
- MCFG_DEVICE_ADD("mo", NEXTMO, 0)
- MCFG_NEXTMO_IRQ_CALLBACK(WRITELINE(*this, next_state, mo_irq))
- MCFG_NEXTMO_DRQ_CALLBACK(WRITELINE(*this, next_state, mo_drq))
+ NEXTMO(config, mo, 0);
+ mo->irq_wr_callback().set(FUNC(next_state::mo_irq));
+ mo->drq_wr_callback().set(FUNC(next_state::mo_drq));
MACHINE_CONFIG_END
MACHINE_CONFIG_START(next_state::next)
diff --git a/src/mame/drivers/pcd.cpp b/src/mame/drivers/pcd.cpp
index 127530249c7..c95dc57f70a 100644
--- a/src/mame/drivers/pcd.cpp
+++ b/src/mame/drivers/pcd.cpp
@@ -566,8 +566,8 @@ MACHINE_CONFIG_START(pcd_state::pcd)
m_rtc->set_epoch(1900);
m_rtc->set_24hrs(true);
- MCFG_DEVICE_ADD("keyboard", PCD_KEYBOARD, 0)
- MCFG_PCD_KEYBOARD_OUT_TX_HANDLER(WRITELINE(m_usart[1], mc2661_device, rx_w))
+ pcd_keyboard_device &keyboard(PCD_KEYBOARD(config, "keyboard", 0));
+ keyboard.out_tx_handler().set(m_usart[1], FUNC(mc2661_device::rx_w));
MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
MCFG_SCSI_DATA_INPUT_BUFFER("scsi_data_in")
@@ -590,8 +590,7 @@ MACHINE_CONFIG_START(pcd_state::pcx)
pcx_video_device &video(PCX_VIDEO(config.replace(), "video", 0));
video.txd_handler().set("keyboard", FUNC(pcd_keyboard_device::t0_w));
- MCFG_DEVICE_MODIFY("keyboard")
- MCFG_PCD_KEYBOARD_OUT_TX_HANDLER(WRITELINE("video", pcx_video_device, rx_w))
+ subdevice<pcd_keyboard_device>("keyboard")->out_tx_handler().set("video", FUNC(pcx_video_device::rx_w));
m_usart[1]->txd_handler().set_nop();
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/pce.cpp b/src/mame/drivers/pce.cpp
index 82470364102..36d86941249 100644
--- a/src/mame/drivers/pce.cpp
+++ b/src/mame/drivers/pce.cpp
@@ -339,7 +339,7 @@ MACHINE_CONFIG_START(pce_state::pce_common)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_PCE_CD_ADD("pce_cd")
+ PCE_CD(config, m_cd, 0);
MCFG_SOFTWARE_LIST_ADD("cd_list","pcecd")
MACHINE_CONFIG_END
@@ -412,7 +412,7 @@ MACHINE_CONFIG_START(pce_state::sgx)
MCFG_SOFTWARE_LIST_ADD("cart_list","sgx")
MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("pce_list","pce")
- MCFG_PCE_CD_ADD("pce_cd")
+ PCE_CD(config, m_cd, 0);
MCFG_SOFTWARE_LIST_ADD("cd_list","pcecd")
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/pce220.cpp b/src/mame/drivers/pce220.cpp
index 0d5ce207e93..3e494d389a4 100644
--- a/src/mame/drivers/pce220.cpp
+++ b/src/mame/drivers/pce220.cpp
@@ -974,7 +974,7 @@ MACHINE_CONFIG_START(pce220_state::pce220)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K"); // 32K internal + 32K external card
- MCFG_PCE220_SERIAL_ADD(PCE220SERIAL_TAG)
+ PCE220SERIAL(config, m_serial, 0);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(pcg850v_state::pcg815)
@@ -1008,7 +1008,7 @@ MACHINE_CONFIG_START(pcg850v_state::pcg815)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K"); // 32K internal + 32K external card
- MCFG_PCE220_SERIAL_ADD(PCE220SERIAL_TAG)
+ PCE220SERIAL(config, m_serial, 0);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(pcg850v_state::pcg850v)
@@ -1042,7 +1042,7 @@ MACHINE_CONFIG_START(pcg850v_state::pcg850v)
/* internal ram */
RAM(config, RAM_TAG).set_default_size("64K"); // 32K internal + 32K external card
- MCFG_PCE220_SERIAL_ADD(PCE220SERIAL_TAG)
+ PCE220SERIAL(config, m_serial, 0);
MACHINE_CONFIG_END
/* ROM definition */
diff --git a/src/mame/drivers/pgm2.cpp b/src/mame/drivers/pgm2.cpp
index f41a2839172..81741667e96 100644
--- a/src/mame/drivers/pgm2.cpp
+++ b/src/mame/drivers/pgm2.cpp
@@ -812,10 +812,10 @@ MACHINE_CONFIG_START(pgm2_state::pgm2)
MCFG_SOUND_ROUTE(0, "lspeaker", 1.0)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.0)
- MCFG_PGM2_MEMCARD_ADD("memcard_p1")
- MCFG_PGM2_MEMCARD_ADD("memcard_p2")
- MCFG_PGM2_MEMCARD_ADD("memcard_p3")
- MCFG_PGM2_MEMCARD_ADD("memcard_p4")
+ PGM2_MEMCARD(config, m_memcard[0], 0);
+ PGM2_MEMCARD(config, m_memcard[1], 0);
+ PGM2_MEMCARD(config, m_memcard[2], 0);
+ PGM2_MEMCARD(config, m_memcard[3], 0);
MACHINE_CONFIG_END
// not strictly needed as the video code supports changing on the fly, but makes recording easier etc.
diff --git a/src/mame/drivers/plygonet.cpp b/src/mame/drivers/plygonet.cpp
index 75c7a6dd25f..93cba3d29d2 100644
--- a/src/mame/drivers/plygonet.cpp
+++ b/src/mame/drivers/plygonet.cpp
@@ -585,7 +585,7 @@ MACHINE_CONFIG_START(polygonet_state::plygonet)
MCFG_PALETTE_ADD("palette", 32768)
MCFG_PALETTE_FORMAT(XRGB)
- MCFG_DEVICE_ADD("k053936", K053936, 0)
+ K053936(config, m_k053936, 0);
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
diff --git a/src/mame/drivers/polepos.cpp b/src/mame/drivers/polepos.cpp
index 763d1abb9d5..c966a3479d3 100644
--- a/src/mame/drivers/polepos.cpp
+++ b/src/mame/drivers/polepos.cpp
@@ -888,14 +888,14 @@ MACHINE_CONFIG_START(polepos_state::polepos)
n54xx.set_discrete("discrete");
n54xx.set_basenote(NODE_01);
- MCFG_NAMCO_06XX_ADD("06xx", MASTER_CLOCK/8/64)
- MCFG_NAMCO_06XX_MAINCPU("maincpu")
- MCFG_NAMCO_06XX_READ_0_CB(READ8("51xx", namco_51xx_device, read))
- MCFG_NAMCO_06XX_WRITE_0_CB(WRITE8("51xx", namco_51xx_device, write))
- MCFG_NAMCO_06XX_READ_1_CB(READ8("53xx", namco_53xx_device, read))
- MCFG_NAMCO_06XX_READ_REQUEST_1_CB(WRITELINE("53xx", namco_53xx_device, read_request))
- MCFG_NAMCO_06XX_WRITE_2_CB(WRITE8("52xx", namco_52xx_device, write))
- MCFG_NAMCO_06XX_WRITE_3_CB(WRITE8("54xx", namco_54xx_device, write))
+ namco_06xx_device &n06xx(NAMCO_06XX(config, "06xx", MASTER_CLOCK/8/64));
+ n06xx.set_maincpu(m_maincpu);
+ n06xx.read_callback<0>().set("51xx", FUNC(namco_51xx_device::read));
+ n06xx.write_callback<0>().set("51xx", FUNC(namco_51xx_device::write));
+ n06xx.read_callback<1>().set("53xx", FUNC(namco_53xx_device::read));
+ n06xx.read_request_callback<1>().set("53xx", FUNC(namco_53xx_device::read_request));
+ n06xx.write_callback<2>().set("52xx", FUNC(namco_52xx_device::write));
+ n06xx.write_callback<3>().set("54xx", FUNC(namco_54xx_device::write));
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 16); // 128V clocks the same as VBLANK
@@ -1001,10 +1001,10 @@ MACHINE_CONFIG_START(polepos_state::topracern)
n51xx.set_screen_tag(m_screen);
n51xx.input_callback<1>().set_ioport("IN0").rshift(4);
- MCFG_NAMCO_06XX_ADD("06xx", MASTER_CLOCK/8/64)
- MCFG_NAMCO_06XX_MAINCPU("maincpu")
- MCFG_NAMCO_06XX_READ_0_CB(READ8("51xx", namco_51xx_device, read))
- MCFG_NAMCO_06XX_WRITE_0_CB(WRITE8("51xx", namco_51xx_device, write))
+ namco_06xx_device &n06xx(NAMCO_06XX(config, "06xx", MASTER_CLOCK/8/64));
+ n06xx.set_maincpu(m_maincpu);
+ n06xx.read_callback<0>().set("51xx", FUNC(namco_51xx_device::read));
+ n06xx.write_callback<0>().set("51xx", FUNC(namco_51xx_device::write));
WATCHDOG_TIMER(config, "watchdog").set_vblank_count(m_screen, 16); // 128V clocks the same as VBLANK
diff --git a/src/mame/drivers/psx.cpp b/src/mame/drivers/psx.cpp
index 15f9e6f6adf..63cd2c96f85 100644
--- a/src/mame/drivers/psx.cpp
+++ b/src/mame/drivers/psx.cpp
@@ -558,8 +558,8 @@ MACHINE_CONFIG_START(psx1_state::psj)
MCFG_PSX_CD_READ_HANDLER( READ8( PSXCD_TAG, psxcd_device, read ) )
MCFG_PSX_CD_WRITE_HANDLER( WRITE8( PSXCD_TAG, psxcd_device, write ) )
- MCFG_DEVICE_ADD(PSXCD_TAG, PSXCD, "maincpu", "spu")
- MCFG_PSXCD_IRQ_HANDLER(WRITELINE("maincpu:irq", psxirq_device, intin2))
+ PSXCD(config, m_psxcd, m_maincpu, "spu");
+ m_psxcd->irq_handler().set("maincpu:irq", FUNC(psxirq_device::intin2));
MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 3, psxdma_device::read_delegate(&psx1_state::cd_dma_read, this ) )
MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 3, psxdma_device::write_delegate(&psx1_state::cd_dma_write, this ) )
MACHINE_CONFIG_END
@@ -612,8 +612,8 @@ MACHINE_CONFIG_START(psx1_state::pse)
MCFG_PSX_CD_READ_HANDLER( READ8( PSXCD_TAG, psxcd_device, read ) )
MCFG_PSX_CD_WRITE_HANDLER( WRITE8( PSXCD_TAG, psxcd_device, write ) )
- MCFG_DEVICE_ADD(PSXCD_TAG, PSXCD, "maincpu", "spu")
- MCFG_PSXCD_IRQ_HANDLER(WRITELINE("maincpu:irq", psxirq_device, intin2))
+ PSXCD(config, m_psxcd, m_maincpu, "spu");
+ m_psxcd->irq_handler().set("maincpu:irq", FUNC(psxirq_device::intin2));
MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 3, psxdma_device::read_delegate(&psx1_state::cd_dma_read, this ) )
MCFG_PSX_DMA_CHANNEL_WRITE( "maincpu", 3, psxdma_device::write_delegate(&psx1_state::cd_dma_write, this ) )
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/ql.cpp b/src/mame/drivers/ql.cpp
index b6a738e3f02..824b67b4fbd 100644
--- a/src/mame/drivers/ql.cpp
+++ b/src/mame/drivers/ql.cpp
@@ -962,8 +962,8 @@ MACHINE_CONFIG_START(ql_state::ql)
MCFG_DEVICE_ADD("rom", QL_ROM_CARTRIDGE_SLOT, ql_rom_cartridge_cards, nullptr)
- MCFG_DEVICE_ADD(QIMI_TAG, QIMI, 0)
- MCFG_QIMI_EXTINT_CALLBACK(WRITELINE(*this, ql_state, qimi_extintl_w))
+ QIMI(config, m_qimi, 0);
+ m_qimi->extint_wr_callback().set(FUNC(ql_state::qimi_extintl_w));
// software lists
MCFG_SOFTWARE_LIST_ADD("cart_list", "ql_cart")
diff --git a/src/mame/drivers/rad_eu3a05.cpp b/src/mame/drivers/rad_eu3a05.cpp
index 3023e666128..b2f7b73f1b0 100644
--- a/src/mame/drivers/rad_eu3a05.cpp
+++ b/src/mame/drivers/rad_eu3a05.cpp
@@ -1168,8 +1168,8 @@ MACHINE_CONFIG_START(radica_eu3a05_state::radicasi)
MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_radicasi_fake)
- MCFG_DEVICE_ADD("gpio", RADICA6502_GPIO, 0)
- MCFG_RADICA6502_GPIO_READ_PORT0_CB(IOPORT("IN0"))
+ radica6502_gpio_device &gpio(RADICA6502_GPIO(config, "gpio", 0));
+ gpio.read_0_callback().set_ioport("IN0");
/* sound hardware */
SPEAKER(config, "mono").front_center();
diff --git a/src/mame/drivers/rungun.cpp b/src/mame/drivers/rungun.cpp
index 0e20d49a50a..cb332f098f0 100644
--- a/src/mame/drivers/rungun.cpp
+++ b/src/mame/drivers/rungun.cpp
@@ -425,8 +425,8 @@ MACHINE_CONFIG_START(rungun_state::rng)
MCFG_PALETTE_ENABLE_SHADOWS()
MCFG_PALETTE_ENABLE_HILIGHTS()
- MCFG_DEVICE_ADD("k053936", K053936, 0)
- MCFG_K053936_OFFSETS(34, 9)
+ K053936(config, m_k053936, 0);
+ m_k053936->set_offsets(34, 9);
K055673(config, m_k055673, 0);
m_k055673->set_sprite_callback(FUNC(rungun_state::sprite_callback), this);
diff --git a/src/mame/drivers/suprslam.cpp b/src/mame/drivers/suprslam.cpp
index a1bdecb19d3..3b1395c6615 100644
--- a/src/mame/drivers/suprslam.cpp
+++ b/src/mame/drivers/suprslam.cpp
@@ -305,9 +305,9 @@ MACHINE_CONFIG_START(suprslam_state::suprslam)
m_spr->set_gfx_region(1);
m_spr->set_gfxdecode_tag(m_gfxdecode);
- MCFG_DEVICE_ADD("k053936", K053936, 0)
- MCFG_K053936_WRAP(1)
- MCFG_K053936_OFFSETS(-45, -21)
+ K053936(config, m_k053936, 0);
+ m_k053936->set_wrap(1);
+ m_k053936->set_offsets(-45, -21);
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
diff --git a/src/mame/drivers/terracre.cpp b/src/mame/drivers/terracre.cpp
index bea8a9ae9ec..e778c30452b 100644
--- a/src/mame/drivers/terracre.cpp
+++ b/src/mame/drivers/terracre.cpp
@@ -519,7 +519,7 @@ MACHINE_CONFIG_START(amazon_state::amazon_1412m2)
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(amazon_1412m2_map)
- MCFG_DEVICE_ADD("prot_chip", NB1412M2, XTAL(16'000'000)) // divided by 4 maybe
+ NB1412M2(config, m_prot, XTAL(16'000'000)); // divided by 4 maybe
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/tmnt.cpp b/src/mame/drivers/tmnt.cpp
index f38b62c01a0..00b69ab716b 100644
--- a/src/mame/drivers/tmnt.cpp
+++ b/src/mame/drivers/tmnt.cpp
@@ -2321,9 +2321,9 @@ MACHINE_CONFIG_START(tmnt_state::glfgreat)
m_k053245->set_palette(m_palette);
m_k053245->set_sprite_callback(FUNC(tmnt_state::lgtnfght_sprite_callback), this);
- MCFG_DEVICE_ADD("k053936", K053936, 0)
- MCFG_K053936_WRAP(1)
- MCFG_K053936_OFFSETS(85, 0)
+ K053936(config, m_k053936, 0);
+ m_k053936->set_wrap(1);
+ m_k053936->set_offsets(85, 0);
K053251(config, m_k053251, 0);
@@ -2389,8 +2389,8 @@ MACHINE_CONFIG_START(tmnt_state::prmrsocr)
m_k053245->set_palette(m_palette);
m_k053245->set_sprite_callback(FUNC(tmnt_state::prmrsocr_sprite_callback), this);
- MCFG_DEVICE_ADD("k053936", K053936, 0)
- MCFG_K053936_OFFSETS(85, 1)
+ K053936(config, m_k053936, 0);
+ m_k053936->set_offsets(85, 1);
K053251(config, m_k053251, 0);
diff --git a/src/mame/drivers/toypop.cpp b/src/mame/drivers/toypop.cpp
index a09a5ba2c9f..7a59813ea1b 100644
--- a/src/mame/drivers/toypop.cpp
+++ b/src/mame/drivers/toypop.cpp
@@ -703,24 +703,25 @@ MACHINE_CONFIG_START(namcos16_state::liblrabl)
MCFG_DEVICE_PROGRAM_MAP(sound_map)
MCFG_DEVICE_PERIODIC_INT_DRIVER(namcos16_state, irq0_line_hold, 60)
-
- MCFG_DEVICE_ADD("58xx", NAMCO_58XX, 0)
- MCFG_NAMCO58XX_IN_0_CB(IOPORT("COINS"))
- MCFG_NAMCO58XX_IN_1_CB(IOPORT("P1_RIGHT"))
- MCFG_NAMCO58XX_IN_2_CB(IOPORT("P2_RIGHT"))
- MCFG_NAMCO58XX_IN_3_CB(IOPORT("BUTTONS"))
-
- MCFG_DEVICE_ADD("56xx_1", NAMCO_56XX, 0)
- MCFG_NAMCO56XX_IN_0_CB(READ8(*this, namcos16_state, dipA_h))
- MCFG_NAMCO56XX_IN_1_CB(READ8(*this, namcos16_state, dipB_l))
- MCFG_NAMCO56XX_IN_2_CB(READ8(*this, namcos16_state, dipB_h))
- MCFG_NAMCO56XX_IN_3_CB(READ8(*this, namcos16_state, dipA_l))
- MCFG_NAMCO56XX_OUT_0_CB(WRITE8(*this, namcos16_state, flip))
-
- MCFG_DEVICE_ADD("56xx_2", NAMCO_56XX, 0)
- MCFG_NAMCO56XX_IN_1_CB(IOPORT("P1_LEFT"))
- MCFG_NAMCO56XX_IN_2_CB(IOPORT("P2_LEFT"))
- MCFG_NAMCO56XX_IN_3_CB(IOPORT("SERVICE"))
+
+ NAMCO_58XX(config, m_namco58xx, 0);
+ m_namco58xx->in_callback<0>().set_ioport("COINS");
+ m_namco58xx->in_callback<1>().set_ioport("P1_RIGHT");
+ m_namco58xx->in_callback<2>().set_ioport("P2_RIGHT");
+ m_namco58xx->in_callback<3>().set_ioport("BUTTONS");
+
+
+ NAMCO_56XX(config, m_namco56xx_1, 0);
+ m_namco56xx_1->in_callback<0>().set(FUNC(namcos16_state::dipA_h));
+ m_namco56xx_1->in_callback<1>().set(FUNC(namcos16_state::dipB_l));
+ m_namco56xx_1->in_callback<2>().set(FUNC(namcos16_state::dipB_h));
+ m_namco56xx_1->in_callback<3>().set(FUNC(namcos16_state::dipA_l));
+ m_namco56xx_1->out_callback<0>().set(FUNC(namcos16_state::flip));
+
+ NAMCO_56XX(config, m_namco56xx_2, 0);
+ m_namco56xx_2->in_callback<1>().set_ioport("P1_LEFT");
+ m_namco56xx_2->in_callback<2>().set_ioport("P2_LEFT");
+ m_namco56xx_2->in_callback<3>().set_ioport("SERVICE");
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(MASTER_CLOCK,384,0,288,264,0,224) // derived from Galaxian HW, 60.606060
diff --git a/src/mame/drivers/v1050.cpp b/src/mame/drivers/v1050.cpp
index 2508cb7be57..fb66d34e6f7 100644
--- a/src/mame/drivers/v1050.cpp
+++ b/src/mame/drivers/v1050.cpp
@@ -1081,8 +1081,8 @@ MACHINE_CONFIG_START(v1050_state::v1050)
MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, v1050_state, write_keyboard_clock))
// keyboard
- MCFG_DEVICE_ADD(V1050_KEYBOARD_TAG, V1050_KEYBOARD, 0)
- MCFG_V1050_KEYBOARD_OUT_TX_HANDLER(WRITELINE(I8251A_KB_TAG, i8251_device, write_rxd))
+ v1050_keyboard_device &keyboard(V1050_KEYBOARD(config, V1050_KEYBOARD_TAG, 0));
+ keyboard.out_tx_handler().set(m_uart_kb, FUNC(i8251_device::write_rxd));
I8251(config, m_uart_sio, 0/*16_MHz_XTAL/8,*/);
m_uart_sio->txd_handler().set(RS232_TAG, FUNC(rs232_port_device::write_txd));
diff --git a/src/mame/drivers/xerox820.cpp b/src/mame/drivers/xerox820.cpp
index d169429bb69..babdbcab929 100644
--- a/src/mame/drivers/xerox820.cpp
+++ b/src/mame/drivers/xerox820.cpp
@@ -658,8 +658,8 @@ MACHINE_CONFIG_START(xerox820_state::xerox820)
dbrg.fr_handler().append(m_sio, FUNC(z80dart_device::txca_w));
dbrg.ft_handler().set(m_sio, FUNC(z80dart_device::rxtxcb_w));
- MCFG_DEVICE_ADD(KEYBOARD_TAG, XEROX_820_KEYBOARD, 0)
- MCFG_XEROX_820_KEYBOARD_KBSTB_CALLBACK(WRITELINE(m_kbpio, z80pio_device, strobe_b))
+ XEROX_820_KEYBOARD(config, m_kb, 0);
+ m_kb->kbstb_wr_callback().set(m_kbpio, FUNC(z80pio_device::strobe_b));
/* internal ram */
RAM(config, m_ram).set_default_size("64K");
@@ -747,8 +747,8 @@ MACHINE_CONFIG_START(xerox820ii_state::xerox820ii)
dbrg.fr_handler().append(m_sio, FUNC(z80dart_device::txca_w));
dbrg.ft_handler().set(m_sio, FUNC(z80dart_device::rxtxcb_w));
- MCFG_DEVICE_ADD(KEYBOARD_TAG, XEROX_820_KEYBOARD, 0)
- MCFG_XEROX_820_KEYBOARD_KBSTB_CALLBACK(WRITELINE(m_kbpio, z80pio_device, strobe_b))
+ XEROX_820_KEYBOARD(config, m_kb, 0);
+ m_kb->kbstb_wr_callback().set(m_kbpio, FUNC(z80pio_device::strobe_b));
// SASI bus
SCSI_PORT(config, m_sasibus, 0);
diff --git a/src/mame/drivers/z88.cpp b/src/mame/drivers/z88.cpp
index 813853b6730..429c3c28b61 100644
--- a/src/mame/drivers/z88.cpp
+++ b/src/mame/drivers/z88.cpp
@@ -603,24 +603,24 @@ MACHINE_CONFIG_START(z88_state::z88)
m_maincpu->set_addrmap(AS_IO, &z88_state::z88_io);
/* video hardware */
- device = &SCREEN(config, m_screen, SCREEN_TYPE_LCD);
+ SCREEN(config, m_screen, SCREEN_TYPE_LCD);
m_screen->set_refresh_hz(50);
m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
m_screen->set_size(Z88_SCREEN_WIDTH, Z88_SCREEN_HEIGHT);
m_screen->set_visarea(0, (Z88_SCREEN_WIDTH - 1), 0, (Z88_SCREEN_HEIGHT - 1));
m_screen->set_palette(m_palette);
- MCFG_SCREEN_UPDATE_DEVICE("blink", upd65031_device, screen_update)
+ m_screen->set_screen_update("blink", FUNC(upd65031_device::screen_update));
device = &PALETTE(config, m_palette, Z88_NUM_COLOURS);
MCFG_PALETTE_INIT_OWNER(z88_state, z88)
- device = &UPD65031(config, m_blink, XTAL(9'830'400));
+ UPD65031(config, m_blink, XTAL(9'830'400));
m_blink->kb_rd_callback().set(FUNC(z88_state::kb_r));
m_blink->int_wr_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0);
m_blink->nmi_wr_callback().set_inputline(m_maincpu, INPUT_LINE_NMI);
m_blink->spkr_wr_callback().set("speaker", FUNC(speaker_sound_device::level_w));
- MCFG_UPD65031_SCR_UPDATE_CB(z88_state, lcd_update)
- MCFG_UPD65031_MEM_UPDATE_CB(z88_state, bankswitch_update)
+ m_blink->set_screen_update_callback(FUNC(z88_state::lcd_update), this);
+ m_blink->set_memory_update_callback(FUNC(z88_state::bankswitch_update), this);
/* sound hardware */
SPEAKER(config, "mono").front_center();
diff --git a/src/mame/includes/apollo.h b/src/mame/includes/apollo.h
index 7428196a9ca..6c817b4799e 100644
--- a/src/mame/includes/apollo.h
+++ b/src/mame/includes/apollo.h
@@ -64,7 +64,7 @@
// Do *not* report any issues on Mametesters if this is enabled!
// #define APOLLO_XXL
-/*----------- drivers/apollo.c -----------*/
+/*----------- drivers/apollo.cpp -----------*/
// return the current CPU context for log file entries
std::string apollo_cpu_context(running_machine &machine);
@@ -97,7 +97,7 @@ int apollo_instruction_hook(m68000_base_device *device, offs_t curpc);
void apollo_set_cache_status_register(device_t *device,uint8_t mask, uint8_t data);
-/*----------- machine/apollo.c -----------*/
+/*----------- machine/apollo.cpp -----------*/
#define APOLLO_CONF_TAG "conf"
#define APOLLO_DMA1_TAG "dma8237_1"
@@ -270,8 +270,6 @@ public:
void common(machine_config &config);
void apollo(machine_config &config);
void apollo_terminal(machine_config &config);
- void apollo_graphics(machine_config &config);
- void apollo_mono19i(machine_config &config);
void dn3500(machine_config &config);
void dn5500_19i(machine_config &config);
void dn3000(machine_config &config);
@@ -297,7 +295,7 @@ private:
bool m_cur_eop;
};
-/*----------- machine/apollo_config.c -----------*/
+/*----------- machine/apollo_config.cpp -----------*/
// configuration bit definitions
@@ -322,7 +320,7 @@ int apollo_config(int mask);
INPUT_PORTS_EXTERN(apollo_config);
-/*----------- machine/apollo_csr.c -----------*/
+/*----------- machine/apollo_csr.cpp -----------*/
#define APOLLO_CSR_SR_SERVICE 0x0001
#define APOLLO_CSR_SR_ATBUS_IO_TIMEOUT 0x0002
@@ -344,22 +342,7 @@ uint16_t apollo_csr_get_control_register(void);
uint16_t apollo_csr_get_status_register(void);
void apollo_csr_set_status_register(uint16_t mask, uint16_t data);
-/*----------- machine/apollo_sio.c -----------*/
-
-#define MCFG_APOLLO_SIO_ADD(_tag, _clock) \
- MCFG_DEVICE_ADD(_tag, APOLLO_SIO, _clock)
-
-#define MCFG_APOLLO_SIO_IRQ_CALLBACK(_cb) \
- downcast<apollo_sio &>(*device).set_irq_cb(DEVCB_##_cb);
-
-#define MCFG_APOLLO_SIO_A_TX_CALLBACK(_cb) \
- downcast<apollo_sio &>(*device).set_a_tx_cb(DEVCB_##_cb);
-
-#define MCFG_APOLLO_SIO_B_TX_CALLBACK(_cb) \
- downcast<apollo_sio &>(*device).set_b_tx_cb(DEVCB_##_cb);
-
-#define MCFG_APOLLO_SIO_OUTPORT_CALLBACK(_cb) \
- downcast<apollo_sio &>(*device).set_outport_cb(DEVCB_##_cb);
+/*----------- machine/apollo_sio.cpp -----------*/
class apollo_sio: public duart_base_device
{
@@ -378,10 +361,8 @@ private:
DECLARE_DEVICE_TYPE(APOLLO_SIO, apollo_sio)
-/*----------- machine/apollo_ni.c -----------*/
+/*----------- machine/apollo_ni.cpp -----------*/
-#define MCFG_APOLLO_NI_ADD(_tag, _xtal) \
- MCFG_DEVICE_ADD(_tag, APOLLO_NI, _xtal)
/*** Apollo Node ID device ***/
@@ -428,7 +409,7 @@ private:
// device type definition
DECLARE_DEVICE_TYPE(APOLLO_NI, apollo_ni)
-/*----------- video/apollo.c -----------*/
+/*----------- video/apollo.cpp -----------*/
class apollo_graphics_15i : public device_t
{
@@ -468,6 +449,7 @@ protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
+ virtual void device_add_mconfig(machine_config &config) override;
protected:
class lut_fifo;
@@ -666,9 +648,6 @@ private:
DECLARE_DEVICE_TYPE(APOLLO_GRAPHICS, apollo_graphics_15i)
-#define MCFG_APOLLO_GRAPHICS_ADD( _tag) \
- apollo_graphics(config); \
- MCFG_DEVICE_ADD(_tag, APOLLO_GRAPHICS, 0)
class apollo_graphics_19i : public apollo_graphics_15i
{
@@ -678,6 +657,7 @@ protected:
// device-level overrides
virtual void device_start() override;
virtual void device_reset() override;
+ virtual void device_add_mconfig(machine_config &config) override;
private:
// internal state
@@ -685,20 +665,10 @@ private:
DECLARE_DEVICE_TYPE(APOLLO_MONO19I, apollo_graphics_19i)
-#define MCFG_APOLLO_MONO19I_ADD(_tag) \
- apollo_mono19i(config); \
- MCFG_DEVICE_ADD(_tag, APOLLO_MONO19I, 0)
-
#ifdef APOLLO_XXL
-/*----------- machine/apollo_stdio.c -----------*/
+/*----------- machine/apollo_stdio.cpp -----------*/
-//**************************************************************************
-// DEVICE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_APOLLO_STDIO_TX_CALLBACK(_cb) \
- downcast<apollo_stdio_device &>(*device).set_tx_cb(DEVCB_##_cb);
//**************************************************************************
// TYPE DEFINITIONS
@@ -713,12 +683,7 @@ public:
apollo_stdio_device(const machine_config &mconfig, const char *tag,
device_t *owner, uint32_t clock);
- template<class Object> devcb_base &set_tx_cb(Object &&object)
- {
- return m_tx_w.set_callback(std::forward<Object>(object));
- }
-
- devcb_write_line m_tx_w;
+ auto tx_cb() { return m_tx_w.bind(); }
private:
// device-level overrides
@@ -741,6 +706,8 @@ private:
bool m_tx_busy;
emu_timer* m_poll_timer;
+
+ devcb_write_line m_tx_w;
};
// device type definition
diff --git a/src/mame/machine/apollo.cpp b/src/mame/machine/apollo.cpp
index 9a80fae2563..a76920b279a 100644
--- a/src/mame/machine/apollo.cpp
+++ b/src/mame/machine/apollo.cpp
@@ -1108,10 +1108,10 @@ MACHINE_CONFIG_START(apollo_state::common)
m_rtc->set_24hrs(false);
m_rtc->set_epoch(0);
- MCFG_APOLLO_NI_ADD(APOLLO_NI_TAG, 0)
+ APOLLO_NI(config, m_node_id, 0);
- MCFG_APOLLO_SIO_ADD(APOLLO_SIO2_TAG, 3.6864_MHz_XTAL)
- MCFG_APOLLO_SIO_IRQ_CALLBACK(WRITELINE(*this, apollo_state, sio2_irq_handler))
+ APOLLO_SIO(config, m_sio2, 3.6864_MHz_XTAL);
+ m_sio2->irq_cb().set(FUNC(apollo_state::sio2_irq_handler));
ISA16(config, m_isa, 0);
m_isa->set_cputag(MAINCPU);
@@ -1147,17 +1147,18 @@ MACHINE_CONFIG_START(apollo_state::common)
MACHINE_CONFIG_END
// for machines with the keyboard and a graphics head
-MACHINE_CONFIG_START(apollo_state::apollo)
+void apollo_state::apollo(machine_config &config)
+{
common(config);
- MCFG_APOLLO_SIO_ADD(APOLLO_SIO_TAG, 3.6864_MHz_XTAL)
- MCFG_APOLLO_SIO_IRQ_CALLBACK(WRITELINE(*this, apollo_state, sio_irq_handler))
- MCFG_APOLLO_SIO_OUTPORT_CALLBACK(WRITE8(*this, apollo_state, sio_output))
- MCFG_APOLLO_SIO_A_TX_CALLBACK(WRITELINE(m_keyboard, apollo_kbd_device, rx_w))
+ APOLLO_SIO(config, m_sio, 3.6864_MHz_XTAL);
+ m_sio->irq_cb().set(FUNC(apollo_state::sio_irq_handler));
+ m_sio->outport_cb().set(FUNC(apollo_state::sio_output));
+ m_sio->a_tx_cb().set(m_keyboard, FUNC(apollo_kbd_device::rx_w));
#ifdef APOLLO_XXL
- MCFG_APOLLO_SIO_B_TX_CALLBACK(WRITELINE(APOLLO_STDIO_TAG, apollo_stdio_device, rx_w))
+ m_sio->b_tx_cb().set(APOLLO_STDIO_TAG, FUNC(apollo_stdio_device::rx_w));
#endif
-MACHINE_CONFIG_END
+}
static DEVICE_INPUT_DEFAULTS_START( apollo_terminal )
DEVICE_INPUT_DEFAULTS( "RS232_TXBAUD", 0xff, RS232_BAUD_9600 )
@@ -1169,17 +1170,18 @@ static DEVICE_INPUT_DEFAULTS_START( apollo_terminal )
DEVICE_INPUT_DEFAULTS_END
// for headless machines using a serial console
-MACHINE_CONFIG_START(apollo_state::apollo_terminal)
+void apollo_state::apollo_terminal(machine_config &config)
+{
common(config);
- MCFG_APOLLO_SIO_ADD(APOLLO_SIO_TAG, 3.6864_MHz_XTAL)
- MCFG_APOLLO_SIO_IRQ_CALLBACK(WRITELINE(*this, apollo_state, sio_irq_handler))
- MCFG_APOLLO_SIO_OUTPORT_CALLBACK(WRITE8(*this, apollo_state, sio_output))
- MCFG_APOLLO_SIO_B_TX_CALLBACK(WRITELINE("rs232", rs232_port_device, write_txd))
+ APOLLO_SIO(config, m_sio, 3.6864_MHz_XTAL);
+ m_sio->irq_cb().set(FUNC(apollo_state::sio_irq_handler));
+ m_sio->outport_cb().set(FUNC(apollo_state::sio_output));
+ m_sio->b_tx_cb().set("rs232", FUNC(rs232_port_device::write_txd));
rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, "terminal"));
- rs232.rxd_handler().set(APOLLO_SIO_TAG, FUNC(apollo_sio::rx_b_w));
+ rs232.rxd_handler().set(m_sio, FUNC(apollo_sio::rx_b_w));
rs232.set_option_device_input_defaults("terminal", DEVICE_INPUT_DEFAULTS_NAME(apollo_terminal));
-MACHINE_CONFIG_END
+}
void apollo_state::init_apollo()
{
diff --git a/src/mame/machine/asic65.h b/src/mame/machine/asic65.h
index 877bcaaf284..441c26ce17b 100644
--- a/src/mame/machine/asic65.h
+++ b/src/mame/machine/asic65.h
@@ -22,10 +22,16 @@ enum {
class asic65_device : public device_t
{
public:
+ asic65_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock, uint8_t type)
+ : asic65_device(mconfig, tag, owner, clock)
+ {
+ set_type(type);
+ }
+
asic65_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// configuration helpers
- void set_type(int type) { m_asic65_type = type; }
+ void set_type(uint8_t type) { m_asic65_type = type; }
void reset_line(int state);
DECLARE_WRITE16_MEMBER( data_w );
@@ -77,8 +83,4 @@ private:
DECLARE_DEVICE_TYPE(ASIC65, asic65_device)
-#define MCFG_ASIC65_ADD(_tag, _type) \
- MCFG_DEVICE_ADD(_tag, ASIC65, 0) \
- downcast<asic65_device &>(*device).set_type(_type);
-
#endif // MAME_MACHINE_ASIC65_H
diff --git a/src/mame/machine/igs025.h b/src/mame/machine/igs025.h
index 30e0c911ad8..6c00548d8e3 100644
--- a/src/mame/machine/igs025.h
+++ b/src/mame/machine/igs025.h
@@ -9,9 +9,6 @@
// used to connect the 022
typedef device_delegate<void (void)> igs025_execute_external;
-#define MCFG_IGS025_SET_EXTERNAL_EXECUTE( _class, _method) \
- downcast<igs025_device &>(*device).set_external_cb(igs025_execute_external(&_class::_method, #_class "::" #_method, nullptr, (_class *)nullptr));
-
class igs025_device : public device_t
{
public:
@@ -23,7 +20,7 @@ public:
uint32_t m_kb_game_id;
uint32_t m_kb_region;
- template <typename Object> void set_external_cb(Object &&newcb) { m_execute_external = std::forward<Object>(newcb); }
+ template <typename... T> void set_external_cb(T &&... args) { m_execute_external = igs025_execute_external(std::forward<T>(args)...); }
DECLARE_WRITE16_MEMBER( olds_w );
DECLARE_WRITE16_MEMBER( drgw2_d80000_protection_w );
diff --git a/src/mame/machine/mackbd.h b/src/mame/machine/mackbd.h
index f91d6a14d00..ec6f7a061dc 100644
--- a/src/mame/machine/mackbd.h
+++ b/src/mame/machine/mackbd.h
@@ -6,26 +6,6 @@
#pragma once
-
-//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_MACKBD_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, MACKBD, 0)
-
-#define MCFG_MACKBD_REPLACE(_tag) \
- MCFG_DEVICE_REPLACE(_tag, MACKBD, 0)
-
-#define MCFG_MACKBD_REMOVE(_tag) \
- MCFG_DEVICE_REMOVE(_tag)
-
-#define MCFG_MACKBD_CLKOUT_HANDLER(_devcb) \
- devcb = downcast<mackbd_device &>(*device).set_clkout_handler(DEVCB_##_devcb);
-
-#define MCFG_MACKBD_DATAOUT_HANDLER(_devcb) \
- downcast<mackbd_device &>(*device).set_dataout_handler(DEVCB_##_devcb);
-
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -36,8 +16,6 @@ class mackbd_device : public device_t
{
public:
// config helper
- template <class Object> devcb_base &set_clkout_handler(Object &&cb) { return m_clkout_handler.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_dataout_handler(Object &&cb) { return m_dataout_handler.set_callback(std::forward<Object>(cb)); }
auto clkout_handler() { return m_clkout_handler.bind(); }
auto dataout_handler() { return m_dataout_handler.bind(); }
diff --git a/src/mame/machine/macrtc.h b/src/mame/machine/macrtc.h
index 01fba185e20..df8dfce0ff1 100644
--- a/src/mame/machine/macrtc.h
+++ b/src/mame/machine/macrtc.h
@@ -16,15 +16,6 @@
//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_RTC3430042_ADD(_tag, _clock) \
- MCFG_DEVICE_ADD(_tag, RTC3430042, _clock)
-
-
-
-//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
diff --git a/src/mame/machine/mega32x.h b/src/mame/machine/mega32x.h
index ed68d3e4d87..e8dc32e465e 100644
--- a/src/mame/machine/mega32x.h
+++ b/src/mame/machine/mega32x.h
@@ -31,7 +31,7 @@ public:
}
// configuration
- void set_palette_tag(const char *tag) { m_palette.set_tag(tag); }
+ template <typename T> void set_palette_tag(T &&tag) { m_palette.set_tag(std::forward<T>(tag)); }
DECLARE_READ32_MEMBER( _32x_sh2_master_4000_common_4002_r );
DECLARE_READ32_MEMBER( _32x_sh2_slave_4000_common_4002_r );
@@ -247,7 +247,4 @@ protected:
DECLARE_DEVICE_TYPE(SEGA_32X_NTSC, sega_32x_ntsc_device)
DECLARE_DEVICE_TYPE(SEGA_32X_PAL, sega_32x_pal_device)
-#define MCFG_SEGA_32X_PALETTE(_palette_tag) \
- downcast<sega_32x_device &>(*device).set_palette_tag(_palette_tag);
-
#endif // MAME_MACHINE_MEGA32X_H
diff --git a/src/mame/machine/namco06.h b/src/mame/machine/namco06.h
index bce93495248..f3bc2db42c2 100644
--- a/src/mame/machine/namco06.h
+++ b/src/mame/machine/namco06.h
@@ -6,74 +6,19 @@
#pragma once
-struct namco_06xx_config
-{
- const char *nmicpu;
- const char *chip0;
- const char *chip1;
- const char *chip2;
- const char *chip3;
-};
-
-
-#define MCFG_NAMCO_06XX_ADD(_tag, _clock) \
- MCFG_DEVICE_ADD(_tag, NAMCO_06XX, _clock)
-
-#define MCFG_NAMCO_06XX_MAINCPU(_tag) \
- downcast<namco_06xx_device &>(*device).set_maincpu(_tag);
-
-#define MCFG_NAMCO_06XX_READ_0_CB(_devcb) \
- downcast<namco_06xx_device &>(*device).set_read_callback<0>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO_06XX_READ_1_CB(_devcb) \
- downcast<namco_06xx_device &>(*device).set_read_callback<1>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO_06XX_READ_2_CB(_devcb) \
- downcast<namco_06xx_device &>(*device).set_read_callback<2>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO_06XX_READ_3_CB(_devcb) \
- downcast<namco_06xx_device &>(*device).set_read_callback<3>(DEVCB_##_devcb);
-
-
-#define MCFG_NAMCO_06XX_READ_REQUEST_0_CB(_devcb) \
- downcast<namco_06xx_device &>(*device).set_read_request_callback<0>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO_06XX_READ_REQUEST_1_CB(_devcb) \
- downcast<namco_06xx_device &>(*device).set_read_request_callback<1>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO_06XX_READ_REQUEST_2_CB(_devcb) \
- downcast<namco_06xx_device &>(*device).set_read_request_callback<2>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO_06XX_READ_REQUEST_3_CB(_devcb) \
- downcast<namco_06xx_device &>(*device).set_read_request_callback<3>(DEVCB_##_devcb);
-
-
-#define MCFG_NAMCO_06XX_WRITE_0_CB(_devcb) \
- downcast<namco_06xx_device &>(*device).set_write_callback<0>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO_06XX_WRITE_1_CB(_devcb) \
- downcast<namco_06xx_device &>(*device).set_write_callback<1>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO_06XX_WRITE_2_CB(_devcb) \
- downcast<namco_06xx_device &>(*device).set_write_callback<2>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO_06XX_WRITE_3_CB(_devcb) \
- downcast<namco_06xx_device &>(*device).set_write_callback<3>(DEVCB_##_devcb);
-
-
/* device get info callback */
class namco_06xx_device : public device_t
{
public:
namco_06xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- void set_maincpu(const char *tag) { m_nmicpu.set_tag(tag); }
+ template <typename T> void set_maincpu(T &&tag) { m_nmicpu.set_tag(std::forward<T>(tag)); }
- template <unsigned N, class Object> devcb_base &set_read_callback(Object &&cb) { return m_read[N].set_callback(std::forward<Object>(cb)); }
+ template <unsigned N> auto read_callback() { return m_read[N].bind(); }
- template <unsigned N, class Object> devcb_base &set_read_request_callback(Object &&cb) { return m_readreq[N].set_callback(std::forward<Object>(cb)); }
+ template <unsigned N> auto read_request_callback() { return m_readreq[N].bind(); }
- template <unsigned N, class Object> devcb_base &set_write_callback(Object &&cb) { return m_write[N].set_callback(std::forward<Object>(cb)); }
+ template <unsigned N> auto write_callback() { return m_write[N].bind(); }
DECLARE_READ8_MEMBER( data_r );
DECLARE_WRITE8_MEMBER( data_w );
diff --git a/src/mame/machine/namco51.h b/src/mame/machine/namco51.h
index 0ee64727137..67eafc3a026 100644
--- a/src/mame/machine/namco51.h
+++ b/src/mame/machine/namco51.h
@@ -8,38 +8,12 @@
#include "cpu/mb88xx/mb88xx.h"
-#define MCFG_NAMCO_51XX_ADD(_tag, _clock) \
- MCFG_DEVICE_ADD(_tag, NAMCO_51XX, _clock)
-
-#define MCFG_NAMCO_51XX_SCREEN(screen_tag) \
- downcast<namco_51xx_device &>(*device).set_screen_tag(screen_tag);
-
-#define MCFG_NAMCO_51XX_INPUT_0_CB(_devcb) \
- downcast<namco_51xx_device &>(*device).set_input_callback<0>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO_51XX_INPUT_1_CB(_devcb) \
- downcast<namco_51xx_device &>(*device).set_input_callback<1>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO_51XX_INPUT_2_CB(_devcb) \
- downcast<namco_51xx_device &>(*device).set_input_callback<2>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO_51XX_INPUT_3_CB(_devcb) \
- downcast<namco_51xx_device &>(*device).set_input_callback<3>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO_51XX_OUTPUT_0_CB(_devcb) \
- downcast<namco_51xx_device &>(*device).set_output_callback<0>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO_51XX_OUTPUT_1_CB(_devcb) \
- downcast<namco_51xx_device &>(*device).set_output_callback<1>(DEVCB_##_devcb);
-
class namco_51xx_device : public device_t
{
public:
namco_51xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
template <typename T> void set_screen_tag(T &&tag) { m_screen.set_tag(std::forward<T>(tag)); }
- template <unsigned N, class Object> devcb_base &set_input_callback(Object &&cb) { return m_in[N].set_callback(std::forward<Object>(cb)); }
- template <unsigned N, class Object> devcb_base &set_output_callback(Object &&cb) { return m_out[N].set_callback(std::forward<Object>(cb)); }
template <unsigned N> auto input_callback() { return m_in[N].bind(); }
template <unsigned N> auto output_callback() { return m_out[N].bind(); }
diff --git a/src/mame/machine/namco62.h b/src/mame/machine/namco62.h
index 5a2778ec572..7a6f5dae463 100644
--- a/src/mame/machine/namco62.h
+++ b/src/mame/machine/namco62.h
@@ -5,36 +5,14 @@
#include "cpu/mb88xx/mb88xx.h"
-#define MCFG_NAMCO_62XX_ADD(_tag, _clock) \
- MCFG_DEVICE_ADD(_tag, NAMCO_62XX, _clock)
-
-#define MCFG_NAMCO_62XX_INPUT_0_CB(_devcb) \
- downcast<namco_62xx_device &>(*device).set_input_callback<0>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO_62XX_INPUT_1_CB(_devcb) \
- downcast<namco_62xx_device &>(*device).set_input_callback<1>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO_62XX_INPUT_2_CB(_devcb) \
- downcast<namco_62xx_device &>(*device).set_input_callback<2>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO_62XX_INPUT_3_CB(_devcb) \
- downcast<namco_62xx_device &>(*device).set_input_callback<3>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO_62XX_OUTPUT_0_CB(_devcb) \
- downcast<namco_62xx_device &>(*device).set_output_callback<0>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO_62XX_OUTPUT_1_CB(_devcb) \
- downcast<namco_62xx_device &>(*device).set_output_callback<1>(DEVCB_##_devcb);
-
-
class namco_62xx_device : public device_t
{
public:
namco_62xx_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <unsigned N, class Object> devcb_base &set_input_callback(Object &&cb) { return m_in[N].set_callback(std::forward<Object>(cb)); }
+ template <unsigned N> auto input_callback() { return m_in[N].bind(); }
- template <unsigned N, class Object> devcb_base &set_output_callback(Object &&cb) { return m_out[N].set_callback(std::forward<Object>(cb)); }
+ template <unsigned N> auto output_callback() { return m_out[N].bind(); }
protected:
// device-level overrides
diff --git a/src/mame/machine/namco_settings.h b/src/mame/machine/namco_settings.h
index bc25f7db48e..f41166a6610 100644
--- a/src/mame/machine/namco_settings.h
+++ b/src/mame/machine/namco_settings.h
@@ -8,9 +8,6 @@
#pragma once
-#define MCFG_NAMCO_SETTINGS_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, NAMCO_SETTINGS, 0)
-
class namco_settings_device : public device_t {
public:
namco_settings_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
diff --git a/src/mame/machine/namcoio.h b/src/mame/machine/namcoio.h
index b788fd452a6..7f92e741043 100644
--- a/src/mame/machine/namcoio.h
+++ b/src/mame/machine/namcoio.h
@@ -11,8 +11,6 @@
class namcoio_device : public device_t
{
public:
- template <unsigned N, class Object> devcb_base &set_in_callback(Object &&cb) { return m_in_cb[N].set_callback(std::forward<Object>(cb)); }
- template <unsigned N, class Object> devcb_base &set_out_callback(Object &&cb) { return m_out_cb[N].set_callback(std::forward<Object>(cb)); }
template <unsigned N> auto in_callback() { return m_in_cb[N].bind(); }
template <unsigned N> auto out_callback() { return m_out_cb[N].bind(); }
@@ -85,64 +83,4 @@ DECLARE_DEVICE_TYPE(NAMCO_56XX, namco56xx_device)
DECLARE_DEVICE_TYPE(NAMCO_58XX, namco58xx_device)
DECLARE_DEVICE_TYPE(NAMCO_59XX, namco59xx_device)
-/***************************************************************************
- DEVICE CONFIGURATION MACROS
-***************************************************************************/
-
-#define MCFG_NAMCO56XX_IN_0_CB(_devcb) \
- downcast<namcoio_device &>(*device).set_in_callback<0>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO56XX_IN_1_CB(_devcb) \
- downcast<namcoio_device &>(*device).set_in_callback<1>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO56XX_IN_2_CB(_devcb) \
- downcast<namcoio_device &>(*device).set_in_callback<2>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO56XX_IN_3_CB(_devcb) \
- downcast<namcoio_device &>(*device).set_in_callback<3>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO56XX_OUT_0_CB(_devcb) \
- downcast<namcoio_device &>(*device).set_out_callback<0>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO56XX_OUT_1_CB(_devcb) \
- downcast<namcoio_device &>(*device).set_out_callback<1>(DEVCB_##_devcb);
-
-
-#define MCFG_NAMCO58XX_IN_0_CB(_devcb) \
- downcast<namcoio_device &>(*device).set_in_callback<0>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO58XX_IN_1_CB(_devcb) \
- downcast<namcoio_device &>(*device).set_in_callback<1>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO58XX_IN_2_CB(_devcb) \
- downcast<namcoio_device &>(*device).set_in_callback<2>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO58XX_IN_3_CB(_devcb) \
- downcast<namcoio_device &>(*device).set_in_callback<3>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO58XX_OUT_0_CB(_devcb) \
- downcast<namcoio_device &>(*device).set_out_callback<0>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO58XX_OUT_1_CB(_devcb) \
- downcast<namcoio_device &>(*device).set_out_callback<1>(DEVCB_##_devcb);
-
-
-#define MCFG_NAMCO59XX_IN_0_CB(_devcb) \
- downcast<namcoio_device &>(*device).set_in_callback<0>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO59XX_IN_1_CB(_devcb) \
- downcast<namcoio_device &>(*device).set_in_callback<1>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO59XX_IN_2_CB(_devcb) \
- downcast<namcoio_device &>(*device).set_in_callback<2>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO59XX_IN_3_CB(_devcb) \
- downcast<namcoio_device &>(*device).set_in_callback<3>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO59XX_OUT_0_CB(_devcb) \
- downcast<namcoio_device &>(*device).set_out_callback<0>(DEVCB_##_devcb);
-
-#define MCFG_NAMCO59XX_OUT_1_CB(_devcb) \
- downcast<namcoio_device &>(*device).set_out_callback<1>(DEVCB_##_devcb);
-
#endif // MAME_MACHINE_NAMCOIO_H
diff --git a/src/mame/machine/nb1412m2.h b/src/mame/machine/nb1412m2.h
index ae57cf2a1bb..e53ec036148 100644
--- a/src/mame/machine/nb1412m2.h
+++ b/src/mame/machine/nb1412m2.h
@@ -12,18 +12,6 @@ Nichibutsu 1412M2 device emulation
#pragma once
-
-//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_NB1412M2_ADD(tag, freq) \
- MCFG_DEVICE_ADD((tag), NB1412M2, (freq))
-
-#define MCFG_NB1412M2_DAC_CB(_devcb) \
- downcast<nb1412m2_device &>(*device).set_dac_callback(DEVCB_##_devcb);
-
-
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -53,8 +41,7 @@ public:
DECLARE_WRITE8_MEMBER( dac_address_w );
DECLARE_WRITE8_MEMBER( dac_timer_w );
- template <class Object> devcb_base &set_dac_callback(Object &&cb)
- { return m_dac_cb.set_callback(std::forward<Object>(cb)); }
+ auto dac_callback() { return m_dac_cb.bind(); }
void nb1412m2_map(address_map &map);
diff --git a/src/mame/machine/nextkbd.h b/src/mame/machine/nextkbd.h
index 7ec98122c56..ebf3e6615a4 100644
--- a/src/mame/machine/nextkbd.h
+++ b/src/mame/machine/nextkbd.h
@@ -6,22 +6,13 @@
#pragma once
-#define MCFG_NEXTKBD_INT_CHANGE_CALLBACK(_write) \
- downcast<nextkbd_device &>(*device).set_int_change_wr_callback(DEVCB_##_write);
-
-#define MCFG_NEXTKBD_INT_POWER_CALLBACK(_write) \
- downcast<nextkbd_device &>(*device).set_int_power_wr_callback(DEVCB_##_write);
-
-#define MCFG_NEXTKBD_INT_NMI_CALLBACK(_write) \
- downcast<nextkbd_device &>(*device).set_int_nmi_wr_callback(DEVCB_##_write);
-
class nextkbd_device : public device_t {
public:
nextkbd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> devcb_base &set_int_change_wr_callback(Object &&cb) { return int_change_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_int_power_wr_callback(Object &&cb) { return int_power_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_int_nmi_wr_callback(Object &&cb) { return int_nmi_cb.set_callback(std::forward<Object>(cb)); }
+ auto int_change_wr_callback() { return int_change_cb.bind(); }
+ auto int_power_wr_callback() { return int_power_cb.bind(); }
+ auto int_nmi_wr_callback() { return int_nmi_cb.bind(); }
void amap(address_map &map);
diff --git a/src/mame/machine/nextmo.h b/src/mame/machine/nextmo.h
index af88f690f9d..543b37a3022 100644
--- a/src/mame/machine/nextmo.h
+++ b/src/mame/machine/nextmo.h
@@ -5,19 +5,14 @@
#pragma once
-#define MCFG_NEXTMO_IRQ_CALLBACK(_write) \
- downcast<nextmo_device &>(*device).set_irq_wr_callback(DEVCB_##_write);
-
-#define MCFG_NEXTMO_DRQ_CALLBACK(_write) \
- downcast<nextmo_device &>(*device).set_drq_wr_callback(DEVCB_##_write);
class nextmo_device : public device_t
{
public:
nextmo_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> devcb_base &set_irq_wr_callback(Object &&cb) { return irq_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_drq_wr_callback(Object &&cb) { return drq_cb.set_callback(std::forward<Object>(cb)); }
+ auto irq_wr_callback() { return irq_cb.bind(); }
+ auto drq_wr_callback() { return drq_cb.bind(); }
void map(address_map &map);
diff --git a/src/mame/machine/pcd_kbd.h b/src/mame/machine/pcd_kbd.h
index 2fce6e8e31e..46c1de5b739 100644
--- a/src/mame/machine/pcd_kbd.h
+++ b/src/mame/machine/pcd_kbd.h
@@ -5,15 +5,13 @@
#pragma once
-#define MCFG_PCD_KEYBOARD_OUT_TX_HANDLER(_devcb) \
- downcast<pcd_keyboard_device &>(*device).set_out_tx_handler(DEVCB_##_devcb);
class pcd_keyboard_device : public device_t
{
public:
pcd_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> devcb_base &set_out_tx_handler(Object &&cb) { return m_out_tx_handler.set_callback(std::forward<Object>(cb)); }
+ auto out_tx_handler() { return m_out_tx_handler.bind(); }
DECLARE_WRITE_LINE_MEMBER( t0_w );
diff --git a/src/mame/machine/pce220_ser.h b/src/mame/machine/pce220_ser.h
index f8ff2257e58..d80b31a7e38 100644
--- a/src/mame/machine/pce220_ser.h
+++ b/src/mame/machine/pce220_ser.h
@@ -89,7 +89,4 @@ DECLARE_DEVICE_TYPE(PCE220SERIAL, pce220_serial_device)
***************************************************************************/
#define PCE220SERIAL_TAG "serial"
-#define MCFG_PCE220_SERIAL_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, PCE220SERIAL, 0)
-
#endif // MAME_MACHINE_PCE220_SER_H
diff --git a/src/mame/machine/pce_cd.h b/src/mame/machine/pce_cd.h
index c256aec9f14..7932ff88e6e 100644
--- a/src/mame/machine/pce_cd.h
+++ b/src/mame/machine/pce_cd.h
@@ -178,13 +178,4 @@ private:
// device type definition
DECLARE_DEVICE_TYPE(PCE_CD, pce_cd_device)
-
-/***************************************************************************
- DEVICE CONFIGURATION MACROS
- ***************************************************************************/
-
-#define MCFG_PCE_CD_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, PCE_CD, 0)
-
-
#endif // MAME_MACHINE_PCE_CD_H
diff --git a/src/mame/machine/pgm2_memcard.h b/src/mame/machine/pgm2_memcard.h
index cf1dac556f3..6068e7c4482 100644
--- a/src/mame/machine/pgm2_memcard.h
+++ b/src/mame/machine/pgm2_memcard.h
@@ -14,13 +14,6 @@
#pragma once
-//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_PGM2_MEMCARD_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, PGM2_MEMCARD, 0)
-
/***************************************************************************
FUNCTION PROTOTYPES
***************************************************************************/
diff --git a/src/mame/machine/pgmprot_igs025_igs012.cpp b/src/mame/machine/pgmprot_igs025_igs012.cpp
index 617b6c70f11..a188ce5bc95 100644
--- a/src/mame/machine/pgmprot_igs025_igs012.cpp
+++ b/src/mame/machine/pgmprot_igs025_igs012.cpp
@@ -139,8 +139,8 @@ MACHINE_CONFIG_START(pgm_012_025_state::pgm_012_025_drgw2)
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(drgw2_mem)
- MCFG_DEVICE_ADD("igs025", IGS025, 0)
- //MCFG_IGS025_SET_EXTERNAL_EXECUTE( pgm_022_025_state, igs025_to_igs012_callback )
+ IGS025(config, m_igs025, 0);
+ //m_igs025->set_external_cb(FUNC(pgm_022_025_state::igs025_to_igs012_callback), this);
MCFG_MACHINE_RESET_OVERRIDE(pgm_012_025_state,drgw2)
MACHINE_CONFIG_END
diff --git a/src/mame/machine/pgmprot_igs025_igs022.cpp b/src/mame/machine/pgmprot_igs025_igs022.cpp
index e1f485ad9cf..1fa7ac4a75e 100644
--- a/src/mame/machine/pgmprot_igs025_igs022.cpp
+++ b/src/mame/machine/pgmprot_igs025_igs022.cpp
@@ -381,10 +381,10 @@ MACHINE_CONFIG_START(pgm_022_025_state::pgm_022_025)
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(killbld_mem)
- MCFG_DEVICE_ADD("igs025", IGS025, 0)
- MCFG_IGS025_SET_EXTERNAL_EXECUTE( pgm_022_025_state, igs025_to_igs022_callback )
+ IGS025(config, m_igs025, 0);
+ m_igs025->set_external_cb(FUNC(pgm_022_025_state::igs025_to_igs022_callback), this);
- MCFG_DEVICE_ADD("igs022", IGS022, 0)
+ IGS022(config, m_igs022, 0);
MACHINE_CONFIG_END
diff --git a/src/mame/machine/pgmprot_igs025_igs028.cpp b/src/mame/machine/pgmprot_igs025_igs028.cpp
index 1577a627897..cc95946766d 100644
--- a/src/mame/machine/pgmprot_igs025_igs028.cpp
+++ b/src/mame/machine/pgmprot_igs025_igs028.cpp
@@ -192,10 +192,10 @@ MACHINE_CONFIG_START(pgm_028_025_state::pgm_028_025_ol)
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(olds_mem)
- MCFG_DEVICE_ADD("igs025", IGS025, 0)
- MCFG_IGS025_SET_EXTERNAL_EXECUTE( pgm_028_025_state, igs025_to_igs028_callback )
+ IGS025(config, m_igs025, 0);
+ m_igs025->set_external_cb(FUNC(pgm_028_025_state::igs025_to_igs028_callback), this);
- MCFG_DEVICE_ADD("igs028", IGS028, 0)
+ IGS028(config, m_igs028, 0);
MCFG_MACHINE_RESET_OVERRIDE(pgm_028_025_state,olds)
MACHINE_CONFIG_END
diff --git a/src/mame/machine/psxcd.h b/src/mame/machine/psxcd.h
index 2a32e094ff9..1c9b0f6f110 100644
--- a/src/mame/machine/psxcd.h
+++ b/src/mame/machine/psxcd.h
@@ -8,12 +8,6 @@
#include "imagedev/chd_cd.h"
#include "sound/spu.h"
-//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_PSXCD_IRQ_HANDLER(_devcb) \
- downcast<psxcd_device &>(*device).set_irq_handler(DEVCB_##_devcb);
class psxcd_device : public cdrom_image_device
{
@@ -29,7 +23,7 @@ public:
psxcd_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// configuration helpers
- template <class Object> devcb_base &set_irq_handler(Object &&cb) { return m_irq_handler.set_callback(std::forward<Object>(cb)); }
+ auto irq_handler() { return m_irq_handler.bind(); }
virtual image_init_result call_load() override;
virtual void call_unload() override;
diff --git a/src/mame/machine/qimi.h b/src/mame/machine/qimi.h
index 0ebfad9a8a5..1c4f89dff55 100644
--- a/src/mame/machine/qimi.h
+++ b/src/mame/machine/qimi.h
@@ -12,17 +12,6 @@
#pragma once
-
-
-//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_QIMI_EXTINT_CALLBACK(_write) \
- downcast<qimi_device &>(*device).set_exting_wr_callback(DEVCB_##_write);
-
-
-
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -35,7 +24,7 @@ public:
// construction/destruction
qimi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> devcb_base &set_exting_wr_callback(Object &&cb) { return m_write_extint.set_callback(std::forward<Object>(cb)); }
+ auto extint_wr_callback() { return m_write_extint.bind(); }
// optional information overrides
virtual ioport_constructor device_input_ports() const override;
diff --git a/src/mame/machine/rad_eu3a05gpio.h b/src/mame/machine/rad_eu3a05gpio.h
index 329ac588940..b7d55ad2ef4 100644
--- a/src/mame/machine/rad_eu3a05gpio.h
+++ b/src/mame/machine/rad_eu3a05gpio.h
@@ -4,24 +4,15 @@
#ifndef MAME_AUDIO_RAD_EU3A05GPIO_H
#define MAME_AUDIO_RAD_EU3A05GPIO_H
-#define MCFG_RADICA6502_GPIO_READ_PORT0_CB(_devcb) \
- downcast<radica6502_gpio_device &>(*device).set_gpio_read_0_callback(DEVCB_##_devcb);
-
-#define MCFG_RADICA6502_GPIO_READ_PORT1_CB(_devcb) \
- downcast<radica6502_gpio_device &>(*device).set_gpio_read_1_callback(DEVCB_##_devcb);
-
-#define MCFG_RADICA6502_GPIO_READ_PORT2_CB(_devcb) \
- downcast<radica6502_gpio_device &>(*device).set_gpio_read_2_callback(DEVCB_##_devcb);
-
class radica6502_gpio_device : public device_t
{
public:
radica6502_gpio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> devcb_base &set_gpio_read_0_callback(Object &&cb) { return m_space_read0_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_gpio_read_1_callback(Object &&cb) { return m_space_read1_cb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_gpio_read_2_callback(Object &&cb) { return m_space_read2_cb.set_callback(std::forward<Object>(cb)); }
+ auto read_0_callback() { return m_space_read0_cb.bind(); }
+ auto read_1_callback() { return m_space_read1_cb.bind(); }
+ auto read_2_callback() { return m_space_read2_cb.bind(); }
DECLARE_READ8_MEMBER(gpio_r);
DECLARE_WRITE8_MEMBER(gpio_w);
diff --git a/src/mame/machine/tosh1000_bram.h b/src/mame/machine/tosh1000_bram.h
index 9387b3e65c8..56673f68113 100644
--- a/src/mame/machine/tosh1000_bram.h
+++ b/src/mame/machine/tosh1000_bram.h
@@ -13,13 +13,6 @@
#pragma once
-/***************************************************************************
- DEVICE CONFIGURATION MACROS
-***************************************************************************/
-
-#define MCFG_TOSH1000_BRAM_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, TOSH1000_BRAM, 0)
-
// ======================> tosh1000_bram_device
diff --git a/src/mame/machine/upd65031.h b/src/mame/machine/upd65031.h
index 490772f4777..e6c1b6d927c 100644
--- a/src/mame/machine/upd65031.h
+++ b/src/mame/machine/upd65031.h
@@ -12,30 +12,6 @@
#pragma once
-
-//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_UPD65031_KB_CALLBACK(_read) \
- downcast<upd65031_device &>(*device).set_kb_rd_callback(DEVCB_##_read);
-
-#define MCFG_UPD65031_INT_CALLBACK(_write) \
- downcast<upd65031_device &>(*device).set_int_wr_callback(DEVCB_##_write);
-
-#define MCFG_UPD65031_NMI_CALLBACK(_write) \
- downcast<upd65031_device &>(*device).set_nmi_wr_callback(DEVCB_##_write);
-
-#define MCFG_UPD65031_SPKR_CALLBACK(_write) \
- downcast<upd65031_device &>(*device).set_spkr_wr_callback(DEVCB_##_write);
-
-#define MCFG_UPD65031_SCR_UPDATE_CB(_class, _method) \
- downcast<upd65031_device &>(*device).set_screen_update_callback(upd65031_screen_update_delegate(&_class::_method, #_class "::" #_method, this));
-
-#define MCFG_UPD65031_MEM_UPDATE_CB(_class, _method) \
- downcast<upd65031_device &>(*device).set_memory_update_callback(upd65031_memory_update_delegate(&_class::_method, #_class "::" #_method, this));
-
-
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -55,17 +31,13 @@ public:
// construction/destruction
upd65031_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> devcb_base &set_kb_rd_callback(Object &&cb) { return m_read_kb.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_int_wr_callback(Object &&cb) { return m_write_int.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_nmi_wr_callback(Object &&cb) { return m_write_nmi.set_callback(std::forward<Object>(cb)); }
- template <class Object> devcb_base &set_spkr_wr_callback(Object &&cb) { return m_write_spkr.set_callback(std::forward<Object>(cb)); }
auto kb_rd_callback() { return m_read_kb.bind(); }
auto int_wr_callback() { return m_write_int.bind(); }
auto nmi_wr_callback() { return m_write_nmi.bind(); }
auto spkr_wr_callback() { return m_write_spkr.bind(); }
- template <class Object> void set_screen_update_callback(Object &&cb) { m_screen_update_cb = std::forward<Object>(cb); }
- template <class Object> void set_memory_update_callback(Object &&cb) { m_out_mem_cb = std::forward<Object>(cb); }
+ template <typename... T> void set_screen_update_callback(T &&... args) { m_screen_update_cb = upd65031_screen_update_delegate(std::forward<T>(args)...); }
+ template <typename... T> void set_memory_update_callback(T &&... args) { m_out_mem_cb = upd65031_memory_update_delegate(std::forward<T>(args)...); }
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );
diff --git a/src/mame/machine/v1050kb.h b/src/mame/machine/v1050kb.h
index a36280bb425..349766a08e4 100644
--- a/src/mame/machine/v1050kb.h
+++ b/src/mame/machine/v1050kb.h
@@ -15,16 +15,6 @@
#include "sound/discrete.h"
-
-//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_V1050_KEYBOARD_OUT_TX_HANDLER(_devcb) \
- downcast<v1050_keyboard_device &>(*device).set_out_tx_handler(DEVCB_##_devcb);
-
-
-
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -40,7 +30,7 @@ public:
// device flags
static constexpr feature_type imperfect_features() { return feature::KEYBOARD; }
- template <class Object> devcb_base &set_out_tx_handler(Object &&cb) { return m_out_tx_handler.set_callback(std::forward<Object>(cb)); }
+ auto out_tx_handler() { return m_out_tx_handler.bind(); }
DECLARE_WRITE_LINE_MEMBER( si_w );
diff --git a/src/mame/machine/x68k_hdc.h b/src/mame/machine/x68k_hdc.h
index 2c499d7e4c8..728043447c3 100644
--- a/src/mame/machine/x68k_hdc.h
+++ b/src/mame/machine/x68k_hdc.h
@@ -133,7 +133,4 @@ private:
// device type definition
DECLARE_DEVICE_TYPE(X68KHDC, x68k_hdc_image_device)
-#define MCFG_X68KHDC_ADD(_tag) \
- MCFG_DEVICE_ADD(_tag, X68KHDC, 0)
-
#endif // MAME_MACHINE_X68K_HDC_H
diff --git a/src/mame/machine/x820kb.h b/src/mame/machine/x820kb.h
index e3000fe415a..3e6fe6283ee 100644
--- a/src/mame/machine/x820kb.h
+++ b/src/mame/machine/x820kb.h
@@ -14,16 +14,6 @@
#include "cpu/mcs48/mcs48.h"
-
-//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_XEROX_820_KEYBOARD_KBSTB_CALLBACK(_devcb) \
- downcast<xerox_820_keyboard_device &>(*device).set_kbstb_wr_callback(DEVCB_##_devcb);
-
-
-
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -36,7 +26,7 @@ public:
// construction/destruction
xerox_820_keyboard_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
- template <class Object> devcb_base &set_kbstb_wr_callback(Object &&cb) { return m_kbstb_cb.set_callback(std::forward<Object>(cb)); }
+ auto kbstb_wr_callback() { return m_kbstb_cb.bind(); }
uint8_t read() { return m_bus; }
diff --git a/src/mame/video/apollo.cpp b/src/mame/video/apollo.cpp
index 08cae067368..b75ecfeaab3 100644
--- a/src/mame/video/apollo.cpp
+++ b/src/mame/video/apollo.cpp
@@ -1712,19 +1712,19 @@ void apollo_graphics_15i::register_vblank_callback()
MACHINE DRIVERS
***************************************************************************/
-MACHINE_CONFIG_START(apollo_state::apollo_graphics)
+MACHINE_CONFIG_START(apollo_graphics_15i::device_add_mconfig)
config.set_default_layout(layout_apollo_15i);
- MCFG_SCREEN_ADD(VIDEO_SCREEN_TAG, RASTER)
+ MCFG_SCREEN_ADD(m_screen, RASTER)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_RAW_PARAMS(68000000, 1346, 0, 1024, 841, 0, 800)
- MCFG_SCREEN_UPDATE_DEVICE(APOLLO_SCREEN_TAG, apollo_graphics_15i, screen_update)
+ MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, apollo_graphics_15i, screen_update)
MACHINE_CONFIG_END
DEFINE_DEVICE_TYPE(APOLLO_GRAPHICS, apollo_graphics_15i, "apollo_graphics_15i", "Apollo Screen")
apollo_graphics_15i::apollo_graphics_15i(const machine_config &mconfig,const char *tag, device_t *owner, uint32_t clock) :
device_t(mconfig, APOLLO_GRAPHICS, tag, owner, clock),
- m_screen(*this, "^" VIDEO_SCREEN_TAG),
+ m_screen(*this, VIDEO_SCREEN_TAG),
m_lut_fifo(nullptr),
m_bt458(nullptr)
{
@@ -1732,7 +1732,7 @@ apollo_graphics_15i::apollo_graphics_15i(const machine_config &mconfig,const cha
apollo_graphics_15i::apollo_graphics_15i(const machine_config &mconfig,const char *tag, device_t *owner, uint32_t clock, device_type type) :
device_t(mconfig, type, tag, owner, clock),
- m_screen(*this, "^" VIDEO_SCREEN_TAG),
+ m_screen(*this, VIDEO_SCREEN_TAG),
m_lut_fifo(nullptr),
m_bt458(nullptr)
{
@@ -1884,14 +1884,14 @@ void apollo_graphics_15i::device_reset()
//-------------------------------------------------
-MACHINE_CONFIG_START(apollo_state::apollo_mono19i)
+MACHINE_CONFIG_START(apollo_graphics_19i::device_add_mconfig)
config.set_default_layout(layout_apollo);
MCFG_PALETTE_ADD_MONOCHROME("palette")
- MCFG_SCREEN_ADD(VIDEO_SCREEN_TAG, RASTER)
+ MCFG_SCREEN_ADD(m_screen, RASTER)
MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_AFTER_VBLANK)
MCFG_SCREEN_RAW_PARAMS(120000000, 1728, 0, 1280, 1066, 0, 1024)
- MCFG_SCREEN_UPDATE_DEVICE(APOLLO_SCREEN_TAG, apollo_graphics_19i, screen_update)
- MACHINE_CONFIG_END
+ MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, apollo_graphics_19i, screen_update)
+MACHINE_CONFIG_END
DEFINE_DEVICE_TYPE(APOLLO_MONO19I, apollo_graphics_19i, "apollo_graphics_19i", "Apollo 19\" Monochrome Screen")
diff --git a/src/mame/video/k053936.h b/src/mame/video/k053936.h
index 32bf566e182..e19ce7165d5 100644
--- a/src/mame/video/k053936.h
+++ b/src/mame/video/k053936.h
@@ -55,10 +55,4 @@ private:
DECLARE_DEVICE_TYPE(K053936, k053936_device)
-#define MCFG_K053936_WRAP(_wrap) \
- downcast<k053936_device &>(*device).set_wrap(_wrap);
-
-#define MCFG_K053936_OFFSETS(_xoffs, _yoffs) \
- downcast<k053936_device &>(*device).set_offsets(_xoffs, _yoffs);
-
#endif // MAME_VIDEO_K053936_H