diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/devices/video/hd44780.h | 4 | ||||
-rw-r--r-- | src/mame/drivers/model1.cpp | 147 | ||||
-rw-r--r-- | src/mame/drivers/model2.cpp | 129 | ||||
-rw-r--r-- | src/mame/machine/m1comm.h | 5 | ||||
-rw-r--r-- | src/mame/machine/m2comm.h | 3 | ||||
-rw-r--r-- | src/mame/machine/model1io.h | 80 | ||||
-rw-r--r-- | src/mame/machine/model1io2.cpp | 22 | ||||
-rw-r--r-- | src/mame/machine/model1io2.h | 99 |
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); |