summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2018-07-07 05:05:25 +1000
committer Vas Crabb <vas@vastheman.com>2018-07-07 05:05:25 +1000
commitcecad654da92fc4902ad44a7d7cd383a320688fb (patch)
tree9b4ca42d1deee0ea1e84076bf45d0a58bf40a528 /src
parentc3fb11c2c98a5c28ece6a27093a0f9def350ac64 (diff)
remove more macros (nw)
Diffstat (limited to 'src')
-rw-r--r--src/devices/video/hd44780.h4
-rw-r--r--src/mame/drivers/model1.cpp147
-rw-r--r--src/mame/drivers/model2.cpp129
-rw-r--r--src/mame/machine/m1comm.h5
-rw-r--r--src/mame/machine/m2comm.h3
-rw-r--r--src/mame/machine/model1io.h80
-rw-r--r--src/mame/machine/model1io2.cpp22
-rw-r--r--src/mame/machine/model1io2.h99
8 files changed, 170 insertions, 319 deletions
diff --git a/src/devices/video/hd44780.h b/src/devices/video/hd44780.h
index 001c9bf3c13..45750c0475c 100644
--- a/src/devices/video/hd44780.h
+++ b/src/devices/video/hd44780.h
@@ -22,7 +22,7 @@
downcast<hd44780_device &>(*device).set_lcd_size(_lines, _chars);
#define MCFG_HD44780_PIXEL_UPDATE_CB(_class, _method) \
- downcast<hd44780_device &>(*device).set_pixel_update_cb(hd44780_device::pixel_update_delegate(&_class::_method, #_class "::" #_method, this));
+ downcast<hd44780_device &>(*device).set_pixel_update_cb(&_class::_method, #_class "::" #_method, this);
//**************************************************************************
// TYPE DEFINITIONS
@@ -43,7 +43,7 @@ public:
// static configuration helpers
void set_lcd_size(int lines, int chars) { m_lines = lines; m_chars = chars; }
- template <typename Object> void set_pixel_update_cb(Object &&cb) { m_pixel_update_cb = std::forward<Object>(cb); }
+ template <typename... T> void set_pixel_update_cb(T &&... args) { m_pixel_update_cb = pixel_update_delegate(std::forward<T>(args)...); }
// device interface
virtual DECLARE_WRITE8_MEMBER(write);
diff --git a/src/mame/drivers/model1.cpp b/src/mame/drivers/model1.cpp
index 257946d3c71..9eb184b0fa7 100644
--- a/src/mame/drivers/model1.cpp
+++ b/src/mame/drivers/model1.cpp
@@ -1688,13 +1688,13 @@ MACHINE_CONFIG_START(model1_state::model1)
MCFG_MACHINE_START_OVERRIDE(model1_state,model1)
MCFG_MACHINE_RESET_OVERRIDE(model1_state,model1)
- MCFG_DEVICE_ADD("ioboard", SEGA_MODEL1IO, 0)
- MCFG_MODEL1IO_READ_CB(READ8("dpram", mb8421_device, left_r))
- MCFG_MODEL1IO_WRITE_CB(WRITE8("dpram", mb8421_device, left_w))
- MCFG_MODEL1IO_IN0_CB(IOPORT("IN.0"))
- MCFG_MODEL1IO_IN1_CB(IOPORT("IN.1"))
+ model1io_device &ioboard(SEGA_MODEL1IO(config, "ioboard", 0));
+ ioboard.read_callback().set(m_dpram, FUNC(mb8421_device::left_r));
+ ioboard.write_callback().set(m_dpram, FUNC(mb8421_device::left_w));
+ ioboard.in_callback<0>().set_ioport("IN.0");
+ ioboard.in_callback<1>().set_ioport("IN.1");
- MCFG_DEVICE_ADD("dpram", MB8421, 0)
+ MB8421(config, m_dpram, 0);
MCFG_DEVICE_ADD("tile", S24TILE, 0, 0x3fff)
MCFG_GFX_PALETTE("palette")
@@ -1727,62 +1727,64 @@ MACHINE_CONFIG_START(model1_state::model1_hle)
MCFG_DEVICE_REMOVE("tgp_copro")
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(model1_state::vf)
+void model1_state::vf(machine_config &config)
+{
model1_hle(config);
- MCFG_DEVICE_MODIFY("ioboard")
- MCFG_DEVICE_BIOS("epr14869b");
- MCFG_MODEL1IO_IN2_CB(IOPORT("IN.2"))
- MCFG_MODEL1IO_OUTPUT_CB(WRITE8(*this, model1_state, vf_outputs_w))
-MACHINE_CONFIG_END
+ model1io_device &ioboard(*subdevice<model1io_device>("ioboard"));
+ ioboard.set_default_bios_tag("epr14869b");
+ ioboard.in_callback<2>().set_ioport("IN.2");
+ ioboard.output_callback().set(FUNC(model1_state::vf_outputs_w));
+}
-MACHINE_CONFIG_START(model1_state::vr)
+void model1_state::vr(machine_config &config)
+{
model1(config);
- MCFG_DEVICE_MODIFY("ioboard")
- MCFG_MODEL1IO_AN0_CB(IOPORT("WHEEL"))
- MCFG_MODEL1IO_AN1_CB(IOPORT("ACCEL"))
- MCFG_MODEL1IO_AN2_CB(IOPORT("BRAKE"))
- MCFG_MODEL1IO_OUTPUT_CB(WRITE8(*this, model1_state, vr_outputs_w))
+ model1io_device &ioboard(*subdevice<model1io_device>("ioboard"));
+ ioboard.an_callback<0>().set_ioport("WHEEL");
+ ioboard.an_callback<1>().set_ioport("ACCEL");
+ ioboard.an_callback<2>().set_ioport("BRAKE");
+ ioboard.output_callback().set(FUNC(model1_state::vr_outputs_w));
- MCFG_M1COMM_ADD(M1COMM_TAG)
- MCFG_DEVICE_BIOS("epr15112");
-MACHINE_CONFIG_END
+ M1COMM(config, "m1comm", 0).set_default_bios_tag("epr15112");
+}
-MACHINE_CONFIG_START(model1_state::vformula)
+void model1_state::vformula(machine_config &config)
+{
model1(config);
- MCFG_DEVICE_MODIFY("ioboard")
- MCFG_MODEL1IO_AN0_CB(IOPORT("WHEEL"))
- MCFG_MODEL1IO_AN1_CB(IOPORT("ACCEL"))
- MCFG_MODEL1IO_AN2_CB(IOPORT("BRAKE"))
- MCFG_MODEL1IO_OUTPUT_CB(WRITE8(*this, model1_state, vr_outputs_w))
+ model1io_device &ioboard(*subdevice<model1io_device>("ioboard"));
+ ioboard.an_callback<0>().set_ioport("WHEEL");
+ ioboard.an_callback<1>().set_ioport("ACCEL");
+ ioboard.an_callback<2>().set_ioport("BRAKE");
+ ioboard.output_callback().set(FUNC(model1_state::vr_outputs_w));
- MCFG_M1COMM_ADD(M1COMM_TAG)
- MCFG_DEVICE_BIOS("epr15624");
-MACHINE_CONFIG_END
+ M1COMM(config, "m1comm", 0).set_default_bios_tag("epr15624");
+}
-MACHINE_CONFIG_START(model1_state::swa)
+void model1_state::swa(machine_config &config)
+{
model1_hle(config);
- MCFG_DEVICE_MODIFY("ioboard")
- MCFG_DEVICE_BIOS("epr14869b");
- MCFG_MODEL1IO_AN0_CB(IOPORT("STICK1X"))
- MCFG_MODEL1IO_AN1_CB(IOPORT("STICK1Y"))
- MCFG_MODEL1IO_AN2_CB(IOPORT("THROTTLE"))
- MCFG_MODEL1IO_AN4_CB(IOPORT("STICK2X"))
- MCFG_MODEL1IO_AN5_CB(IOPORT("STICK2Y"))
- MCFG_MODEL1IO_OUTPUT_CB(WRITE8(*this, model1_state, swa_outputs_w))
+ model1io_device &ioboard(*subdevice<model1io_device>("ioboard"));
+ ioboard.set_default_bios_tag("epr14869b");
+ ioboard.an_callback<0>().set_ioport("STICK1X");
+ ioboard.an_callback<1>().set_ioport("STICK1Y");
+ ioboard.an_callback<2>().set_ioport("THROTTLE");
+ ioboard.an_callback<4>().set_ioport("STICK2X");
+ ioboard.an_callback<5>().set_ioport("STICK2Y");
+ ioboard.output_callback().set(FUNC(model1_state::swa_outputs_w));
SPEAKER(config, "dleft").front_left();
SPEAKER(config, "dright").front_right();
- MCFG_DSBZ80_ADD(DSBZ80_TAG)
- MCFG_SOUND_ROUTE(0, "dleft", 1.0)
- MCFG_SOUND_ROUTE(1, "dright", 1.0)
+ DSBZ80(config, m_dsbz80, 0);
+ m_dsbz80->add_route(0, "dleft", 1.0);
+ m_dsbz80->add_route(1, "dright", 1.0);
// Apparently m1audio has to filter out commands the DSB shouldn't see
m_m1audio->rxd_handler().append(m_dsbz80, FUNC(dsbz80_device::write_txd));
-MACHINE_CONFIG_END
+}
MACHINE_CONFIG_START(model1_state::wingwar)
model1_hle(config);
@@ -1790,33 +1792,31 @@ MACHINE_CONFIG_START(model1_state::wingwar)
MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(model1_comm_mem)
- MCFG_DEVICE_REMOVE("ioboard")
-
- MCFG_DEVICE_ADD("ioboard", SEGA_MODEL1IO2, 0)
- MCFG_DEVICE_BIOS("epr16891");
- MCFG_MODEL1IO2_READ_CB(READ8("dpram", mb8421_device, left_r))
- MCFG_MODEL1IO2_WRITE_CB(WRITE8("dpram", mb8421_device, left_w))
- MCFG_MODEL1IO2_IN0_CB(IOPORT("IN.0"))
- MCFG_MODEL1IO2_IN1_CB(IOPORT("IN.1"))
- MCFG_MODEL1IO2_AN0_CB(IOPORT("STICKX"))
- MCFG_MODEL1IO2_AN1_CB(IOPORT("STICKY"))
- MCFG_MODEL1IO2_AN2_CB(IOPORT("THROTTLE"))
- MCFG_MODEL1IO2_OUTPUT_CB(WRITE8(*this, model1_state, wingwar_outputs_w))
+ model1io2_device &ioboard(SEGA_MODEL1IO2(config.replace(), "ioboard", 0));
+ ioboard.set_default_bios_tag("epr16891");
+ ioboard.read_callback().set(m_dpram, FUNC(mb8421_device::left_r));
+ ioboard.write_callback().set(m_dpram, FUNC(mb8421_device::left_w));
+ ioboard.in_callback<0>().set_ioport("IN.0");
+ ioboard.in_callback<1>().set_ioport("IN.1");
+ ioboard.an_callback<0>().set_ioport("STICKX");
+ ioboard.an_callback<1>().set_ioport("STICKY");
+ ioboard.an_callback<2>().set_ioport("THROTTLE");
+ ioboard.output_callback().set(FUNC(model1_state::wingwar_outputs_w));
MCFG_DEFAULT_LAYOUT(layout_model1io2)
- MCFG_M1COMM_ADD(M1COMM_TAG)
- MCFG_DEVICE_BIOS("epr15112");
+ M1COMM(config, "m1comm", 0).set_default_bios_tag("epr15112");
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(model1_state::wingwar360)
+void model1_state::wingwar360(machine_config &config)
+{
wingwar(config);
- MCFG_DEVICE_MODIFY("ioboard")
- MCFG_MODEL1IO2_IN2_CB(READ8(*this, model1_state, r360_r))
- MCFG_MODEL1IO2_DRIVE_WRITE_CB(WRITE8(*this, model1_state, r360_w))
- MCFG_MODEL1IO2_AN2_CB(CONSTANT(0))
- MCFG_MODEL1IO2_OUTPUT_CB(WRITE8(*this, model1_state, wingwar360_outputs_w))
+ model1io2_device &ioboard(*subdevice<model1io2_device>("ioboard"));
+ ioboard.in_callback<2>().set(FUNC(model1_state::r360_r));
+ ioboard.drive_write_callback().set(FUNC(model1_state::r360_w));
+ ioboard.an_callback<2>().set_constant(0);
+ ioboard.output_callback().set(FUNC(model1_state::wingwar360_outputs_w));
MCFG_DEFAULT_LAYOUT(layout_model1io2)
MACHINE_CONFIG_END
@@ -1833,17 +1833,16 @@ MACHINE_CONFIG_START(model1_state::netmerc)
MCFG_DEVICE_ADD("polhemus", I386SX, 16000000)
MCFG_DEVICE_PROGRAM_MAP(polhemus_map)
- MCFG_DEVICE_REMOVE("ioboard")
-
- MCFG_DEVICE_ADD("ioboard", SEGA_MODEL1IO2, 0)
- MCFG_DEVICE_BIOS("epr18021");
- MCFG_MODEL1IO2_READ_CB(READ8("dpram", mb8421_device, left_r))
- MCFG_MODEL1IO2_WRITE_CB(WRITE8("dpram", mb8421_device, left_w))
- MCFG_MODEL1IO2_IN0_CB(IOPORT("IN.0"))
- MCFG_MODEL1IO2_IN1_CB(IOPORT("IN.1"))
- MCFG_MODEL1IO2_AN0_CB(IOPORT("STICKX"))
- MCFG_MODEL1IO2_AN2_CB(IOPORT("STICKY"))
- MCFG_MODEL1IO2_OUTPUT_CB(WRITE8(*this, model1_state, netmerc_outputs_w))
+ model1io2_device &ioboard(SEGA_MODEL1IO2(config.replace(), "ioboard", 0));
+ ioboard.set_default_bios_tag("epr18021");
+ ioboard.read_callback().set(m_dpram, FUNC(mb8421_device::left_r));
+ ioboard.write_callback().set(m_dpram, FUNC(mb8421_device::left_w));
+ ioboard.in_callback<0>().set_ioport("IN.0");
+ ioboard.in_callback<1>().set_ioport("IN.1");
+ ioboard.an_callback<0>().set_ioport("STICKX");
+ ioboard.an_callback<2>().set_ioport("STICKY");
+ ioboard.output_callback().set(FUNC(model1_state::netmerc_outputs_w));
+
MCFG_DEFAULT_LAYOUT(layout_model1io2)
MACHINE_CONFIG_END
diff --git a/src/mame/drivers/model2.cpp b/src/mame/drivers/model2.cpp
index 5972bda7232..f5034f7bb24 100644
--- a/src/mame/drivers/model2.cpp
+++ b/src/mame/drivers/model2.cpp
@@ -2466,30 +2466,30 @@ MACHINE_CONFIG_START(model2o_state::model2o)
MCFG_DEVICE_IO_MAP(copro_tgp_io_map)
MCFG_DEVICE_ADDRESS_MAP(mb86233_device::AS_RF, copro_tgp_rf_map)
- MCFG_DEVICE_ADD("copro_tgp_bank", ADDRESS_MAP_BANK, 0)
- MCFG_DEVICE_PROGRAM_MAP(copro_tgp_bank_map)
- MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
- MCFG_ADDRESS_MAP_BANK_DATA_WIDTH(32)
- MCFG_ADDRESS_MAP_BANK_ADDR_WIDTH(17)
- MCFG_ADDRESS_MAP_BANK_SHIFT(-2)
- MCFG_ADDRESS_MAP_BANK_STRIDE(0x10000)
+ ADDRESS_MAP_BANK(config, m_copro_tgp_bank, 0);
+ m_copro_tgp_bank->set_addrmap(0, &model2o_state::copro_tgp_bank_map);
+ m_copro_tgp_bank->set_endianness(ENDIANNESS_LITTLE);
+ m_copro_tgp_bank->set_data_width(32);
+ m_copro_tgp_bank->set_addr_width(17);
+ m_copro_tgp_bank->set_shift(-2);
+ m_copro_tgp_bank->set_stride(0x10000);
- MCFG_DEVICE_ADD("copro_fifo_in", GENERIC_FIFO_U32, 0)
- MCFG_DEVICE_ADD("copro_fifo_out", GENERIC_FIFO_U32, 0)
+ GENERIC_FIFO_U32(config, m_copro_fifo_in, 0);
+ GENERIC_FIFO_U32(config, m_copro_fifo_out, 0);
MCFG_MACHINE_START_OVERRIDE(model2_tgp_state,model2_tgp)
MCFG_MACHINE_RESET_OVERRIDE(model2o_state,model2o)
MCFG_NVRAM_ADD_1FILL("backup1")
- MCFG_DEVICE_ADD("ioboard", SEGA_MODEL1IO, 0)
- MCFG_DEVICE_BIOS("epr14869c");
- MCFG_MODEL1IO_READ_CB(READ8("dpram", mb8421_device, left_r))
- MCFG_MODEL1IO_WRITE_CB(WRITE8("dpram", mb8421_device, left_w))
- MCFG_MODEL1IO_IN0_CB(IOPORT("IN0"))
- MCFG_MODEL1IO_IN1_CB(IOPORT("IN1"))
+ model1io_device &ioboard(SEGA_MODEL1IO(config, "ioboard", 0));
+ ioboard.set_default_bios_tag("epr14869c");
+ ioboard.read_callback().set("dpram", FUNC(mb8421_device::left_r));
+ ioboard.write_callback().set("dpram", FUNC(mb8421_device::left_w));
+ ioboard.in_callback<0>().set_ioport("IN0");
+ ioboard.in_callback<1>().set_ioport("IN1");
- MCFG_DEVICE_ADD("dpram", MB8421, 0)
+ MB8421(config, "dpram", 0);
model2_timers(config);
model2_screen(config);
@@ -2504,7 +2504,7 @@ MACHINE_CONFIG_START(model2o_state::model2o)
uart_clock.signal_handler().set(m_uart, FUNC(i8251_device::write_txc));
uart_clock.signal_handler().append(m_uart, FUNC(i8251_device::write_rxc));
- MCFG_M2COMM_ADD("m2comm")
+ M2COMM(config, "m2comm", 0);
MACHINE_CONFIG_END
READ8_MEMBER(model2_state::driveio_portg_r)
@@ -2554,17 +2554,18 @@ MACHINE_CONFIG_START(model2_state::sj25_0207_01)
MSM6253(config, "driveadc", 0);
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(model2o_state::daytona)
+void model2o_state::daytona(machine_config &config)
+{
model2o(config);
sj25_0207_01(config);
- MCFG_DEVICE_MODIFY("ioboard")
- MCFG_MODEL1IO_DRIVE_WRITE_CB(WRITE8(*this, model2o_state, drive_board_w))
- MCFG_MODEL1IO_AN0_CB(IOPORT("STEER"))
- MCFG_MODEL1IO_AN1_CB(IOPORT("ACCEL"))
- MCFG_MODEL1IO_AN2_CB(IOPORT("BRAKE"))
- MCFG_MODEL1IO_OUTPUT_CB(WRITE8(*this, model2o_state, daytona_output_w))
-MACHINE_CONFIG_END
+ model1io_device &ioboard(*subdevice<model1io_device>("ioboard"));
+ ioboard.drive_write_callback().set(FUNC(model2o_state::drive_board_w));
+ ioboard.an_callback<0>().set_ioport("STEER");
+ ioboard.an_callback<1>().set_ioport("ACCEL");
+ ioboard.an_callback<2>().set_ioport("BRAKE");
+ ioboard.output_callback().set(FUNC(model2o_state::daytona_output_w));
+}
MACHINE_CONFIG_START(model2o_maxx_state::daytona_maxx)
daytona(config);
@@ -2580,33 +2581,32 @@ MACHINE_CONFIG_START(model2o_gtx_state::daytona_gtx)
MCFG_DEVICE_PROGRAM_MAP(model2o_gtx_mem)
MACHINE_CONFIG_END
-MACHINE_CONFIG_START(model2o_state::desert)
+void model2o_state::desert(machine_config &config)
+{
model2o(config);
- MCFG_DEVICE_MODIFY("ioboard")
- MCFG_MODEL1IO_AN0_CB(IOPORT("STEER"))
- MCFG_MODEL1IO_AN1_CB(IOPORT("ACCEL"))
- MCFG_MODEL1IO_AN2_CB(IOPORT("BRAKE"))
- MCFG_MODEL1IO_OUTPUT_CB(WRITE8(*this, model2o_state, desert_output_w))
-MACHINE_CONFIG_END
+ model1io_device &ioboard(*subdevice<model1io_device>("ioboard"));
+ ioboard.an_callback<0>().set_ioport("STEER");
+ ioboard.an_callback<1>().set_ioport("ACCEL");
+ ioboard.an_callback<2>().set_ioport("BRAKE");
+ ioboard.output_callback().set(FUNC(model2o_state::desert_output_w));
+}
MACHINE_CONFIG_START(model2o_state::vcop)
model2o(config);
- MCFG_DEVICE_REMOVE("ioboard")
-
- MCFG_DEVICE_ADD("ioboard", SEGA_MODEL1IO2, 0)
- MCFG_DEVICE_BIOS("epr17181");
- MCFG_MODEL1IO2_READ_CB(READ8("dpram", mb8421_device, left_r))
- MCFG_MODEL1IO2_WRITE_CB(WRITE8("dpram", mb8421_device, left_w))
- MCFG_MODEL1IO2_IN0_CB(IOPORT("IN0"))
- MCFG_MODEL1IO2_IN1_CB(IOPORT("IN1"))
- MCFG_MODEL1IO2_IN2_CB(IOPORT("IN2"))
- MCFG_MODEL1IO2_OUTPUT_CB(WRITE8(*this, model2o_state, vcop_output_w))
- MCFG_MODEL1IO2_LIGHTGUN_P1X_TAG("P1_X")
- MCFG_MODEL1IO2_LIGHTGUN_P1Y_TAG("P1_Y")
- MCFG_MODEL1IO2_LIGHTGUN_P2X_TAG("P2_X")
- MCFG_MODEL1IO2_LIGHTGUN_P2Y_TAG("P2_Y")
+ model1io2_device &ioboard(SEGA_MODEL1IO2(config.replace(), "ioboard", 0));
+ ioboard.set_default_bios_tag("epr17181");
+ ioboard.read_callback().set("dpram", FUNC(mb8421_device::left_r));
+ ioboard.write_callback().set("dpram", FUNC(mb8421_device::left_w));
+ ioboard.in_callback<0>().set_ioport("IN0");
+ ioboard.in_callback<1>().set_ioport("IN1");
+ ioboard.in_callback<2>().set_ioport("IN2");
+ ioboard.output_callback().set(FUNC(model2o_state::vcop_output_w));
+ ioboard.set_lightgun_p1x_tag("P1_X");
+ ioboard.set_lightgun_p1y_tag("P1_Y");
+ ioboard.set_lightgun_p2x_tag("P2_X");
+ ioboard.set_lightgun_p2y_tag("P2_Y");
MCFG_DEFAULT_LAYOUT(layout_model1io2)
MACHINE_CONFIG_END
@@ -2623,16 +2623,16 @@ MACHINE_CONFIG_START(model2a_state::model2a)
MCFG_DEVICE_IO_MAP(copro_tgp_io_map)
MCFG_DEVICE_ADDRESS_MAP(mb86233_device::AS_RF, copro_tgp_rf_map)
- MCFG_DEVICE_ADD("copro_tgp_bank", ADDRESS_MAP_BANK, 0)
- MCFG_DEVICE_PROGRAM_MAP(copro_tgp_bank_map)
- MCFG_ADDRESS_MAP_BANK_ENDIANNESS(ENDIANNESS_LITTLE)
- MCFG_ADDRESS_MAP_BANK_DATA_WIDTH(32)
- MCFG_ADDRESS_MAP_BANK_ADDR_WIDTH(17)
- MCFG_ADDRESS_MAP_BANK_SHIFT(-2)
- MCFG_ADDRESS_MAP_BANK_STRIDE(0x10000)
+ ADDRESS_MAP_BANK(config, m_copro_tgp_bank, 0);
+ m_copro_tgp_bank->set_addrmap(0, &model2a_state::copro_tgp_bank_map);
+ m_copro_tgp_bank->set_endianness(ENDIANNESS_LITTLE);
+ m_copro_tgp_bank->set_data_width(32);
+ m_copro_tgp_bank->set_addr_width(17);
+ m_copro_tgp_bank->set_shift(-2);
+ m_copro_tgp_bank->set_stride(0x10000);
- MCFG_DEVICE_ADD("copro_fifo_in", GENERIC_FIFO_U32, 0)
- MCFG_DEVICE_ADD("copro_fifo_out", GENERIC_FIFO_U32, 0)
+ GENERIC_FIFO_U32(config, m_copro_fifo_in, 0);
+ GENERIC_FIFO_U32(config, m_copro_fifo_out, 0);
MCFG_MACHINE_START_OVERRIDE(model2_tgp_state,model2_tgp)
MCFG_MACHINE_RESET_OVERRIDE(model2a_state,model2a)
@@ -2650,7 +2650,7 @@ MACHINE_CONFIG_START(model2a_state::model2a)
model2_screen(config);
model2_scsp(config);
- MCFG_M2COMM_ADD("m2comm")
+ M2COMM(config, "m2comm", 0);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(model2a_state::manxtt)
@@ -2663,14 +2663,15 @@ MACHINE_CONFIG_START(model2a_state::manxtt)
MACHINE_CONFIG_END
// Includes a Model 1 Sound board for additional sounds - Deluxe version only
-MACHINE_CONFIG_START(model2a_state::manxttdx)
+void model2a_state::manxttdx(machine_config &config)
+{
manxtt(config);
SEGAM1AUDIO(config, m_m1audio, 0);
m_m1audio->rxd_handler().set(m_uart, FUNC(i8251_device::write_rxd));
m_uart->txd_handler().set(m_m1audio, FUNC(segam1audio_device::write_txd));
-MACHINE_CONFIG_END
+}
MACHINE_CONFIG_START( model2a_state::srallyc )
model2a(config);
@@ -2744,8 +2745,8 @@ MACHINE_CONFIG_START(model2b_state::model2b)
MCFG_QUANTUM_TIME(attotime::from_hz(18000))
- MCFG_DEVICE_ADD("copro_fifo_in", GENERIC_FIFO_U32, 0)
- MCFG_DEVICE_ADD("copro_fifo_out", GENERIC_FIFO_U32, 0)
+ GENERIC_FIFO_U32(config, m_copro_fifo_in, 0);
+ GENERIC_FIFO_U32(config, m_copro_fifo_out, 0);
MCFG_MACHINE_START_OVERRIDE(model2b_state,model2b)
MCFG_MACHINE_RESET_OVERRIDE(model2b_state,model2b)
@@ -2763,7 +2764,7 @@ MACHINE_CONFIG_START(model2b_state::model2b)
model2_screen(config);
model2_scsp(config);
- MCFG_M2COMM_ADD("m2comm")
+ M2COMM(config, "m2comm", 0);
MACHINE_CONFIG_END
MACHINE_CONFIG_START(model2b_state::model2b_5881)
@@ -2859,8 +2860,8 @@ MACHINE_CONFIG_START(model2c_state::model2c)
MCFG_MB86235_FIFOIN("copro_fifo_in")
MCFG_MB86235_FIFOOUT0("copro_fifo_out")
- MCFG_DEVICE_ADD("copro_fifo_in", GENERIC_FIFO_U32, 0)
- MCFG_DEVICE_ADD("copro_fifo_out", GENERIC_FIFO_U32, 0)
+ GENERIC_FIFO_U32(config, m_copro_fifo_in, 0);
+ GENERIC_FIFO_U32(config, m_copro_fifo_out, 0);
MCFG_MACHINE_START_OVERRIDE(model2c_state,model2c)
MCFG_MACHINE_RESET_OVERRIDE(model2c_state,model2c)
@@ -2878,7 +2879,7 @@ MACHINE_CONFIG_START(model2c_state::model2c)
model2_screen(config);
model2_scsp(config);
- MCFG_M2COMM_ADD("m2comm")
+ M2COMM(config, "m2comm", 0);
MACHINE_CONFIG_END
MACHINE_CONFIG_START( model2c_state::skisuprg )
diff --git a/src/mame/machine/m1comm.h b/src/mame/machine/m1comm.h
index beafcc2e241..f3efa33abee 100644
--- a/src/mame/machine/m1comm.h
+++ b/src/mame/machine/m1comm.h
@@ -12,11 +12,6 @@
#include "machine/am9517a.h"
#include "machine/mb89374.h"
-#define M1COMM_TAG "m1comm"
-#define M1COMM_CPU_REGION "m1comm:commcpu"
-
-#define MCFG_M1COMM_ADD(_tag ) \
- MCFG_DEVICE_ADD(_tag, M1COMM, 0)
//**************************************************************************
// TYPE DEFINITIONS
diff --git a/src/mame/machine/m2comm.h b/src/mame/machine/m2comm.h
index 93b6145ac9d..852c1136f1c 100644
--- a/src/mame/machine/m2comm.h
+++ b/src/mame/machine/m2comm.h
@@ -9,9 +9,6 @@
#include "osdcore.h"
-#define MCFG_M2COMM_ADD(_tag ) \
- MCFG_DEVICE_ADD(_tag, M2COMM, 0)
-
//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
diff --git a/src/mame/machine/model1io.h b/src/mame/machine/model1io.h
index 7c78ab2cf18..854836b183a 100644
--- a/src/mame/machine/model1io.h
+++ b/src/mame/machine/model1io.h
@@ -19,59 +19,6 @@
//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_MODEL1IO_READ_CB(_devcb) \
- downcast<model1io_device &>(*device).set_read_callback(DEVCB_##_devcb);
-
-#define MCFG_MODEL1IO_WRITE_CB(_devcb) \
- downcast<model1io_device &>(*device).set_write_callback(DEVCB_##_devcb);
-
-#define MCFG_MODEL1IO_IN0_CB(_devcb) \
- downcast<model1io_device &>(*device).set_in_callback(DEVCB_##_devcb, 0);
-
-#define MCFG_MODEL1IO_IN1_CB(_devcb) \
- downcast<model1io_device &>(*device).set_in_callback(DEVCB_##_devcb, 1);
-
-#define MCFG_MODEL1IO_IN2_CB(_devcb) \
- downcast<model1io_device &>(*device).set_in_callback(DEVCB_##_devcb, 2);
-
-#define MCFG_MODEL1IO_DRIVE_READ_CB(_devcb) \
- downcast<model1io_device &>(*device).set_drive_read_callback(DEVCB_##_devcb);
-
-#define MCFG_MODEL1IO_DRIVE_WRITE_CB(_devcb) \
- downcast<model1io_device &>(*device).set_drive_write_callback(DEVCB_##_devcb);
-
-#define MCFG_MODEL1IO_AN0_CB(_devcb) \
- downcast<model1io_device &>(*device).set_an_callback(DEVCB_##_devcb, 0);
-
-#define MCFG_MODEL1IO_AN1_CB(_devcb) \
- downcast<model1io_device &>(*device).set_an_callback(DEVCB_##_devcb, 1);
-
-#define MCFG_MODEL1IO_AN2_CB(_devcb) \
- downcast<model1io_device &>(*device).set_an_callback(DEVCB_##_devcb, 2);
-
-#define MCFG_MODEL1IO_AN3_CB(_devcb) \
- downcast<model1io_device &>(*device).set_an_callback(DEVCB_##_devcb, 3);
-
-#define MCFG_MODEL1IO_AN4_CB(_devcb) \
- downcast<model1io_device &>(*device).set_an_callback(DEVCB_##_devcb, 4);
-
-#define MCFG_MODEL1IO_AN5_CB(_devcb) \
- downcast<model1io_device &>(*device).set_an_callback(DEVCB_##_devcb, 5);
-
-#define MCFG_MODEL1IO_AN6_CB(_devcb) \
- downcast<model1io_device &>(*device).set_an_callback(DEVCB_##_devcb, 6);
-
-#define MCFG_MODEL1IO_AN7_CB(_devcb) \
- downcast<model1io_device &>(*device).set_an_callback(DEVCB_##_devcb, 7);
-
-#define MCFG_MODEL1IO_OUTPUT_CB(_devcb) \
- downcast<model1io_device &>(*device).set_output_callback(DEVCB_##_devcb);
-
-
-//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -82,26 +29,13 @@ public:
model1io_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// configuration
- template <class Object> devcb_base &set_read_callback(Object &&cb)
- { return m_read_cb.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> devcb_base &set_write_callback(Object &&cb)
- { return m_write_cb.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> devcb_base &set_in_callback(Object &&cb, int index)
- { return m_in_cb[index].set_callback(std::forward<Object>(cb)); }
-
- template <class Object> devcb_base &set_drive_read_callback(Object &&cb)
- { return m_drive_read_cb.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> devcb_base &set_drive_write_callback(Object &&cb)
- { return m_drive_write_cb.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> devcb_base &set_an_callback(Object &&cb, int index)
- { return m_an_cb[index].set_callback(std::forward<Object>(cb)); }
-
- template <class Object> devcb_base &set_output_callback(Object &&cb)
- { return m_output_cb.set_callback(std::forward<Object>(cb)); }
+ auto read_callback() { return m_read_cb.bind(); }
+ auto write_callback() { return m_write_cb.bind(); }
+ template <unsigned N> auto in_callback() { return m_in_cb[N].bind(); }
+ auto drive_read_callback() { return m_drive_read_cb.bind(); }
+ auto drive_write_callback() { return m_drive_write_cb.bind(); }
+ template <unsigned N> auto an_callback() { return m_an_cb[N].bind(); }
+ auto output_callback() { return m_output_cb.bind(); }
void mem_map(address_map &map);
diff --git a/src/mame/machine/model1io2.cpp b/src/mame/machine/model1io2.cpp
index 4d142f5c5a8..bc298ca0fa5 100644
--- a/src/mame/machine/model1io2.cpp
+++ b/src/mame/machine/model1io2.cpp
@@ -187,21 +187,21 @@ MACHINE_CONFIG_START( model1io2_device::device_add_mconfig )
adc.set_input_cb<2>(FUNC(model1io2_device::analog2_r), this);
adc.set_input_cb<3>(FUNC(model1io2_device::analog3_r), this);
- // diagnostic lcd display
- MCFG_SCREEN_ADD("screen", LCD)
- MCFG_SCREEN_REFRESH_RATE(50)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) // not accurate
- MCFG_SCREEN_SIZE(6*20+1, 19)
- MCFG_SCREEN_VISIBLE_AREA(0, 6*20, 0, 19-1)
- MCFG_SCREEN_UPDATE_DEVICE("lcd", hd44780_device, screen_update)
- MCFG_SCREEN_PALETTE("palette")
+ // diagnostic LCD display
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD));
+ screen.set_refresh_hz(50);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate
+ screen.set_size(6*20+1, 19);
+ screen.set_visarea(0, 6*20, 0, 19-1);
+ screen.set_screen_update("lcd", FUNC(hd44780_device::screen_update));
+ screen.set_palette("palette");
MCFG_PALETTE_ADD("palette", 3)
MCFG_PALETTE_INIT_OWNER(model1io2_device, lcd)
- MCFG_HD44780_ADD("lcd")
- MCFG_HD44780_LCD_SIZE(2, 20)
- MCFG_HD44780_PIXEL_UPDATE_CB(model1io2_device, lcd_pixel_update)
+ HD44780(config, m_lcd, 0);
+ m_lcd->set_lcd_size(2, 20);
+ m_lcd->set_pixel_update_cb(FUNC(model1io2_device::lcd_pixel_update), this);
MACHINE_CONFIG_END
diff --git a/src/mame/machine/model1io2.h b/src/mame/machine/model1io2.h
index 90e43430ff9..11784ec0cb0 100644
--- a/src/mame/machine/model1io2.h
+++ b/src/mame/machine/model1io2.h
@@ -18,71 +18,6 @@
//**************************************************************************
-// INTERFACE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_MODEL1IO2_READ_CB(_devcb) \
- downcast<model1io2_device &>(*device).set_read_callback(DEVCB_##_devcb);
-
-#define MCFG_MODEL1IO2_WRITE_CB(_devcb) \
- downcast<model1io2_device &>(*device).set_write_callback(DEVCB_##_devcb);
-
-#define MCFG_MODEL1IO2_IN0_CB(_devcb) \
- downcast<model1io2_device &>(*device).set_in_callback<0>(DEVCB_##_devcb);
-
-#define MCFG_MODEL1IO2_IN1_CB(_devcb) \
- downcast<model1io2_device &>(*device).set_in_callback<1>(DEVCB_##_devcb);
-
-#define MCFG_MODEL1IO2_IN2_CB(_devcb) \
- downcast<model1io2_device &>(*device).set_in_callback<2>(DEVCB_##_devcb);
-
-#define MCFG_MODEL1IO2_DRIVE_READ_CB(_devcb) \
- downcast<model1io2_device &>(*device).set_drive_read_callback(DEVCB_##_devcb);
-
-#define MCFG_MODEL1IO2_DRIVE_WRITE_CB(_devcb) \
- downcast<model1io2_device &>(*device).set_drive_write_callback(DEVCB_##_devcb);
-
-#define MCFG_MODEL1IO2_AN0_CB(_devcb) \
- downcast<model1io2_device &>(*device).set_an_callback<0>(DEVCB_##_devcb);
-
-#define MCFG_MODEL1IO2_AN1_CB(_devcb) \
- downcast<model1io2_device &>(*device).set_an_callback<1>(DEVCB_##_devcb);
-
-#define MCFG_MODEL1IO2_AN2_CB(_devcb) \
- downcast<model1io2_device &>(*device).set_an_callback<2>(DEVCB_##_devcb);
-
-#define MCFG_MODEL1IO2_AN3_CB(_devcb) \
- downcast<model1io2_device &>(*device).set_an_callback<3>(DEVCB_##_devcb);
-
-#define MCFG_MODEL1IO2_AN4_CB(_devcb) \
- downcast<model1io2_device &>(*device).set_an_callback<4>(DEVCB_##_devcb);
-
-#define MCFG_MODEL1IO2_AN5_CB(_devcb) \
- downcast<model1io2_device &>(*device).set_an_callback<5>(DEVCB_##_devcb);
-
-#define MCFG_MODEL1IO2_AN6_CB(_devcb) \
- downcast<model1io2_device &>(*device).set_an_callback<6>(DEVCB_##_devcb);
-
-#define MCFG_MODEL1IO2_AN7_CB(_devcb) \
- downcast<model1io2_device &>(*device).set_an_callback<7>(DEVCB_##_devcb);
-
-#define MCFG_MODEL1IO2_OUTPUT_CB(_devcb) \
- downcast<model1io2_device &>(*device).set_output_callback(DEVCB_##_devcb);
-
-#define MCFG_MODEL1IO2_LIGHTGUN_P1Y_TAG(_tag) \
- downcast<model1io2_device &>(*device).set_lightgun_tag<0>(_tag);
-
-#define MCFG_MODEL1IO2_LIGHTGUN_P1X_TAG(_tag) \
- downcast<model1io2_device &>(*device).set_lightgun_tag<1>(_tag);
-
-#define MCFG_MODEL1IO2_LIGHTGUN_P2Y_TAG(_tag) \
- downcast<model1io2_device &>(*device).set_lightgun_tag<2>(_tag);
-
-#define MCFG_MODEL1IO2_LIGHTGUN_P2X_TAG(_tag) \
- downcast<model1io2_device &>(*device).set_lightgun_tag<3>(_tag);
-
-
-//**************************************************************************
// TYPE DEFINITIONS
//**************************************************************************
@@ -93,28 +28,18 @@ public:
model1io2_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
// configuration
- template <class Object> devcb_base &set_read_callback(Object &&cb)
- { return m_read_cb.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> devcb_base &set_write_callback(Object &&cb)
- { return m_write_cb.set_callback(std::forward<Object>(cb)); }
-
- template <int Index, class Object> devcb_base &set_in_callback(Object &&cb)
- { return m_in_cb[Index].set_callback(std::forward<Object>(cb)); }
-
- template <class Object> devcb_base &set_drive_read_callback(Object &&cb)
- { return m_drive_read_cb.set_callback(std::forward<Object>(cb)); }
-
- template <class Object> devcb_base &set_drive_write_callback(Object &&cb)
- { return m_drive_write_cb.set_callback(std::forward<Object>(cb)); }
-
- template <int Index, class Object> devcb_base &set_an_callback(Object &&cb)
- { return m_an_cb[Index].set_callback(std::forward<Object>(cb)); }
-
- template <class Object> devcb_base &set_output_callback(Object &&cb)
- { return m_output_cb.set_callback(std::forward<Object>(cb)); }
-
- template <int Index> void set_lightgun_tag(const char *tag) { m_lightgun_ports[Index].set_tag(tag); }
+ auto read_callback() { return m_read_cb.bind(); }
+ auto write_callback() { return m_write_cb.bind(); }
+ template <unsigned N> auto in_callback() { return m_in_cb[N].bind(); }
+ auto drive_read_callback() { return m_drive_read_cb.bind(); }
+ auto drive_write_callback() { return m_drive_write_cb.bind(); }
+ template <unsigned N> auto an_callback() { return m_an_cb[N].bind(); }
+ auto output_callback() { return m_output_cb.bind(); }
+
+ template <typename T> void set_lightgun_p1y_tag(T && tag) { m_lightgun_ports[0].set_tag(std::forward<T>(tag)); }
+ template <typename T> void set_lightgun_p1x_tag(T && tag) { m_lightgun_ports[1].set_tag(std::forward<T>(tag)); }
+ template <typename T> void set_lightgun_p2y_tag(T && tag) { m_lightgun_ports[2].set_tag(std::forward<T>(tag)); }
+ template <typename T> void set_lightgun_p2x_tag(T && tag) { m_lightgun_ports[3].set_tag(std::forward<T>(tag)); }
void mem_map(address_map &map);
void io_map(address_map &map);