summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/astrocde.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/astrocde.cpp')
-rw-r--r--src/mame/drivers/astrocde.cpp301
1 files changed, 140 insertions, 161 deletions
diff --git a/src/mame/drivers/astrocde.cpp b/src/mame/drivers/astrocde.cpp
index aae7f09dbe9..21f8df3503e 100644
--- a/src/mame/drivers/astrocde.cpp
+++ b/src/mame/drivers/astrocde.cpp
@@ -1176,26 +1176,24 @@ static const z80_daisy_config tenpin_daisy_chain[] =
*
*************************************/
-MACHINE_CONFIG_START(astrocde_state::astrocade_base)
-
+void astrocde_state::astrocade_base(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", Z80, ASTROCADE_CLOCK/4)
+ Z80(config, m_maincpu, ASTROCADE_CLOCK/4);
/* each game has its own map */
/* video hardware */
- MCFG_PALETTE_ADD("palette", 512)
- MCFG_PALETTE_INIT_OWNER(astrocde_state, astrocde)
-
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_RAW_PARAMS(ASTROCADE_CLOCK, 455, 0, 352, 262, 0, 240)
- MCFG_SCREEN_DEFAULT_POSITION(1.1, 0.0, 1.18, -0.018) /* clip out borders */
- MCFG_SCREEN_UPDATE_DRIVER(astrocde_state, screen_update_astrocde)
- MCFG_SCREEN_PALETTE("palette")
-
-MACHINE_CONFIG_END
+ PALETTE(config, m_palette, 512).set_init(FUNC(astrocde_state::palette_init_astrocde));
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_raw(ASTROCADE_CLOCK, 455, 0, 352, 262, 0, 240);
+ m_screen->set_default_position(1.1, 0.0, 1.18, -0.018); /* clip out borders */
+ m_screen->set_screen_update(FUNC(astrocde_state::screen_update_astrocde));
+ m_screen->set_palette(m_palette);
+}
-MACHINE_CONFIG_START(astrocde_state::astrocade_16color_base)
+void astrocde_state::astrocade_16color_base(machine_config &config)
+{
astrocade_base(config);
/* basic machine hardware */
@@ -1204,44 +1202,41 @@ MACHINE_CONFIG_START(astrocde_state::astrocade_16color_base)
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* video hardware */
- MCFG_PALETTE_MODIFY("palette")
- MCFG_PALETTE_ENTRIES(4096)
+ m_palette->set_entries(4096);
+ m_palette->set_init(FUNC(astrocde_state::palette_init_profpac));
- MCFG_PALETTE_INIT_OWNER(astrocde_state,profpac)
MCFG_VIDEO_START_OVERRIDE(astrocde_state,profpac)
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_DRIVER(astrocde_state, screen_update_profpac)
-MACHINE_CONFIG_END
-
+ m_screen->set_screen_update(FUNC(astrocde_state::screen_update_profpac));
+}
-MACHINE_CONFIG_START(astrocde_state::astrocade_mono_sound)
+void astrocde_state::astrocade_mono_sound(machine_config &config)
+{
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("astrocade1", ASTROCADE_IO, ASTROCADE_CLOCK/4)
- MCFG_ASTROCADE_IO_SI_READ_CB(READ8(*this, astrocde_state, input_mux_r))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
-MACHINE_CONFIG_END
-
+ ASTROCADE_IO(config, m_astrocade_sound1, ASTROCADE_CLOCK/4);
+ m_astrocade_sound1->si_cb().set(FUNC(astrocde_state::input_mux_r));
+ m_astrocade_sound1->add_route(ALL_OUTPUTS, "mono", 1.0);
+}
-MACHINE_CONFIG_START(astrocde_state::astrocade_stereo_sound)
+void astrocde_state::astrocade_stereo_sound(machine_config &config)
+{
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("astrocade1", ASTROCADE_IO, ASTROCADE_CLOCK/4)
- MCFG_ASTROCADE_IO_SI_READ_CB(READ8(*this, astrocde_state, input_mux_r))
- MCFG_ASTROCADE_IO_SO0_STROBE_CB(WRITE8("watchdog", watchdog_timer_device, reset_w))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
+ ASTROCADE_IO(config, m_astrocade_sound1, ASTROCADE_CLOCK/4);
+ m_astrocade_sound1->si_cb().set(FUNC(astrocde_state::input_mux_r));
+ m_astrocade_sound1->so_cb<0>().set("watchdog", FUNC(watchdog_timer_device::reset_w));
+ m_astrocade_sound1->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
- MCFG_DEVICE_ADD("astrocade2", ASTROCADE_IO, ASTROCADE_CLOCK/4)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+ ASTROCADE_IO(config, "astrocade2", ASTROCADE_CLOCK/4).add_route(ALL_OUTPUTS, "rspeaker", 1.0);
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 128); // MC14024B on CPU board at U18, CLK = VERTDR, Q7 used for RESET
-MACHINE_CONFIG_END
+}
@@ -1251,13 +1246,13 @@ MACHINE_CONFIG_END
*
*************************************/
-MACHINE_CONFIG_START(seawolf2_state::seawolf2)
+void seawolf2_state::seawolf2(machine_config &config)
+{
astrocade_base(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(seawolf2_map)
- MCFG_DEVICE_IO_MAP(port_map_discrete)
+ m_maincpu->set_addrmap(AS_PROGRAM, &seawolf2_state::seawolf2_map);
+ m_maincpu->set_addrmap(AS_IO, &seawolf2_state::port_map_discrete);
output_latch_device &lamplatch1(OUTPUT_LATCH(config, "lamplatch1")); // 74174 on game board at N2
lamplatch1.bit_handler<0>().set_output("lamp6"); // right player torpedo 4 available
@@ -1281,66 +1276,62 @@ MACHINE_CONFIG_START(seawolf2_state::seawolf2)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("samples", SAMPLES)
- MCFG_SAMPLES_CHANNELS(10) /* 5*2 channels */
- MCFG_SAMPLES_NAMES(seawolf_sample_names)
- MCFG_SOUND_ROUTE(0, "lspeaker", 0.25)
- MCFG_SOUND_ROUTE(1, "lspeaker", 0.25)
- MCFG_SOUND_ROUTE(2, "lspeaker", 0.25)
- MCFG_SOUND_ROUTE(3, "lspeaker", 0.25)
- MCFG_SOUND_ROUTE(4, "lspeaker", 0.25)
- MCFG_SOUND_ROUTE(5, "rspeaker", 0.25)
- MCFG_SOUND_ROUTE(6, "rspeaker", 0.25)
- MCFG_SOUND_ROUTE(7, "rspeaker", 0.25)
- MCFG_SOUND_ROUTE(8, "rspeaker", 0.25)
- MCFG_SOUND_ROUTE(9, "rspeaker", 0.25)
-MACHINE_CONFIG_END
-
-
-MACHINE_CONFIG_START(ebases_state::ebases)
+ SAMPLES(config, m_samples);
+ m_samples->set_channels(10); /* 5*2 channels */
+ m_samples->set_samples_names(seawolf_sample_names);
+ m_samples->add_route(0, "lspeaker", 0.25);
+ m_samples->add_route(1, "lspeaker", 0.25);
+ m_samples->add_route(2, "lspeaker", 0.25);
+ m_samples->add_route(3, "lspeaker", 0.25);
+ m_samples->add_route(4, "lspeaker", 0.25);
+ m_samples->add_route(5, "rspeaker", 0.25);
+ m_samples->add_route(6, "rspeaker", 0.25);
+ m_samples->add_route(7, "rspeaker", 0.25);
+ m_samples->add_route(8, "rspeaker", 0.25);
+ m_samples->add_route(9, "rspeaker", 0.25);
+}
+
+void ebases_state::ebases(machine_config &config)
+{
astrocade_base(config);
astrocade_mono_sound(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(ebases_map)
- MCFG_DEVICE_IO_MAP(port_map_ebases)
+ m_maincpu->set_addrmap(AS_PROGRAM, &ebases_state::ebases_map);
+ m_maincpu->set_addrmap(AS_IO, &ebases_state::port_map_ebases);
- MCFG_DEVICE_MODIFY("astrocade1")
- MCFG_ASTROCADE_IO_SO1_STROBE_CB(WRITE8("watchdog", watchdog_timer_device, reset_w))
+ m_astrocade_sound1->so_cb<1>().set("watchdog", FUNC(watchdog_timer_device::reset_w));
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 128); // MC14024 on CPU board at U18, CLK = VERTDR, Q7 used for RESET
-MACHINE_CONFIG_END
-
+}
-MACHINE_CONFIG_START(astrocde_state::spacezap)
+void astrocde_state::spacezap(machine_config &config)
+{
astrocade_base(config);
astrocade_mono_sound(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(spacezap_map)
- MCFG_DEVICE_IO_MAP(port_map_mono_pattern)
+ m_maincpu->set_addrmap(AS_PROGRAM, &astrocde_state::spacezap_map);
+ m_maincpu->set_addrmap(AS_IO, &astrocde_state::port_map_mono_pattern);
- MCFG_DEVICE_MODIFY("astrocade1")
- MCFG_ASTROCADE_IO_SO0_STROBE_CB(WRITE8("watchdog", watchdog_timer_device, reset_w))
- MCFG_ASTROCADE_IO_SO3_STROBE_CB(WRITE8("outlatch", output_latch_device, bus_w))
+ m_astrocade_sound1->so_cb<0>().set("watchdog", FUNC(watchdog_timer_device::reset_w));
+ m_astrocade_sound1->so_cb<3>().set("outlatch", FUNC(output_latch_device::bus_w));
- MCFG_DEVICE_ADD("outlatch", OUTPUT_LATCH, 0) // MC14174B on game board at U16
- MCFG_OUTPUT_LATCH_BIT0_HANDLER(WRITELINE(*this, astrocde_state, coin_counter_w<0>))
- MCFG_OUTPUT_LATCH_BIT1_HANDLER(WRITELINE(*this, astrocde_state, coin_counter_w<1>))
+ output_latch_device &outlatch(OUTPUT_LATCH(config, "outlatch", 0)); // MC14174B on game board at U16
+ outlatch.bit_handler<0>().set(FUNC(astrocde_state::coin_counter_w<0>));
+ outlatch.bit_handler<1>().set(FUNC(astrocde_state::coin_counter_w<1>));
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 128); // MC14024 on CPU board at U18, CLK = VERTDR, Q7 used for RESET
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(astrocde_state::wow)
+void astrocde_state::wow(machine_config &config)
+{
astrocade_base(config);
astrocade_stereo_sound(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(wow_map)
- MCFG_DEVICE_IO_MAP(port_map_stereo_pattern)
+ m_maincpu->set_addrmap(AS_PROGRAM, &astrocde_state::wow_map);
+ m_maincpu->set_addrmap(AS_IO, &astrocde_state::port_map_stereo_pattern);
cd4099_device &outlatch(CD4099(config, "outlatch"));
outlatch.q_out_cb<0>().set(FUNC(astrocde_state::coin_counter_w<0>));
@@ -1352,29 +1343,26 @@ MACHINE_CONFIG_START(astrocde_state::wow)
outlatch.q_out_cb<7>().set(FUNC(astrocde_state::coin_counter_w<2>));
/* video hardware */
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_DEFAULT_POSITION(1.0, 0.0, 1.0, 0.0) /* adjusted to match screenshots */
-// MCFG_SCREEN_DEFAULT_POSITION(1.066, -0.004, 1.048, -0.026) /* adjusted to match flyer */
+ m_screen->set_default_position(1.0, 0.0, 1.0, 0.0); /* adjusted to match screenshots */
+// m_screen->set_default_position(1.066, -0.004, 1.048, -0.026); /* adjusted to match flyer */
/* sound hardware */
SPEAKER(config, "center").front_center();
- MCFG_DEVICE_MODIFY("astrocade1")
- MCFG_ASTROCADE_IO_SO5_STROBE_CB(WRITE8("outlatch", cd4099_device, write_nibble_d0))
- MCFG_ASTROCADE_IO_SO7_STROBE_CB(WRITE8(*this, astrocde_state, votrax_speech_w))
-
- MCFG_DEVICE_ADD("votrax", VOTRAX_SC01, 720000)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "center", 0.85)
-MACHINE_CONFIG_END
+ m_astrocade_sound1->so_cb<5>().set("outlatch", FUNC(cd4099_device::write_nibble_d0));
+ m_astrocade_sound1->so_cb<7>().set(FUNC(astrocde_state::votrax_speech_w));
+ VOTRAX_SC01(config, m_votrax, 720000);
+ m_votrax->add_route(ALL_OUTPUTS, "center", 0.85);
+}
-MACHINE_CONFIG_START(astrocde_state::gorf)
+void astrocde_state::gorf(machine_config &config)
+{
astrocade_base(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(wow_map)
- MCFG_DEVICE_IO_MAP(port_map_stereo_pattern)
+ m_maincpu->set_addrmap(AS_PROGRAM, &astrocde_state::wow_map);
+ m_maincpu->set_addrmap(AS_IO, &astrocde_state::port_map_stereo_pattern);
cd4099_device &outlatch(CD4099(config, "outlatch")); // MC14099B on game board at U6
outlatch.q_out_cb<0>().set(FUNC(astrocde_state::coin_counter_w<0>));
@@ -1399,37 +1387,34 @@ MACHINE_CONFIG_START(astrocde_state::gorf)
WATCHDOG_TIMER(config, "watchdog").set_vblank_count("screen", 128); // MC14024 on CPU board at U18, CLK = VERTDR, Q7 used for RESET
/* video hardware */
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_DEFAULT_POSITION(1.0, 0.0, 1.0, 0.0) /* adjusted to match flyer */
+ m_screen->set_default_position(1.0, 0.0, 1.0, 0.0); /* adjusted to match flyer */
/* sound hardware */
SPEAKER(config, "upper", 0.0, 0.0, 1.0);
SPEAKER(config, "lower", 0.0, -0.5, 1.0);
- MCFG_DEVICE_ADD("astrocade1", ASTROCADE_IO, ASTROCADE_CLOCK/4)
- MCFG_ASTROCADE_IO_SI_READ_CB(READ8(*this, astrocde_state, input_mux_r))
- MCFG_ASTROCADE_IO_SO0_STROBE_CB(WRITE8("watchdog", watchdog_timer_device, reset_w))
- MCFG_ASTROCADE_IO_SO5_STROBE_CB(WRITE8("outlatch", cd4099_device, write_nibble_d0))
- MCFG_ASTROCADE_IO_SO6_STROBE_CB(WRITE8("lamplatch", cd4099_device, write_nibble_d0))
- MCFG_ASTROCADE_IO_SO7_STROBE_CB(WRITE8(*this, astrocde_state, votrax_speech_w))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "upper", 1.0)
-
- MCFG_DEVICE_ADD("astrocade2", ASTROCADE_IO, ASTROCADE_CLOCK/4)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lower", 1.0)
+ ASTROCADE_IO(config, m_astrocade_sound1, ASTROCADE_CLOCK/4);
+ m_astrocade_sound1->si_cb().set(FUNC(astrocde_state::input_mux_r));
+ m_astrocade_sound1->so_cb<0>().set("watchdog", FUNC(watchdog_timer_device::reset_w));
+ m_astrocade_sound1->so_cb<5>().set("outlatch", FUNC(cd4099_device::write_nibble_d0));
+ m_astrocade_sound1->so_cb<6>().set("lamplatch", FUNC(cd4099_device::write_nibble_d0));
+ m_astrocade_sound1->so_cb<7>().set(FUNC(astrocde_state::votrax_speech_w));
+ m_astrocade_sound1->add_route(ALL_OUTPUTS, "upper", 1.0);
- MCFG_DEVICE_ADD("votrax", VOTRAX_SC01, 720000)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "upper", 0.85)
-MACHINE_CONFIG_END
+ ASTROCADE_IO(config, "astrocade2", ASTROCADE_CLOCK/4).add_route(ALL_OUTPUTS, "lower", 1.0);
+ VOTRAX_SC01(config, m_votrax, 720000);
+ m_votrax->add_route(ALL_OUTPUTS, "upper", 0.85);
+}
-MACHINE_CONFIG_START(astrocde_state::robby)
+void astrocde_state::robby(machine_config &config)
+{
astrocade_base(config);
astrocade_stereo_sound(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(robby_map)
- MCFG_DEVICE_IO_MAP(port_map_stereo_pattern)
+ m_maincpu->set_addrmap(AS_PROGRAM, &astrocde_state::robby_map);
+ m_maincpu->set_addrmap(AS_IO, &astrocde_state::port_map_stereo_pattern);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); // HM6116LP-4 + battery
@@ -1440,73 +1425,67 @@ MACHINE_CONFIG_START(astrocde_state::robby)
outlatch.q_out_cb<6>().set_output("led0");
outlatch.q_out_cb<7>().set_output("led1");
- MCFG_DEVICE_MODIFY("astrocade1")
- MCFG_ASTROCADE_IO_SO5_STROBE_CB(WRITE8("outlatch", cd4099_device, write_nibble_d0))
-MACHINE_CONFIG_END
-
+ m_astrocade_sound1->so_cb<5>().set("outlatch", FUNC(cd4099_device::write_nibble_d0));
+}
-MACHINE_CONFIG_START(astrocde_state::profpac)
+void astrocde_state::profpac(machine_config &config)
+{
astrocade_16color_base(config);
astrocade_stereo_sound(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(profpac_map)
- MCFG_DEVICE_IO_MAP(port_map_16col_pattern)
+ m_maincpu->set_addrmap(AS_PROGRAM, &astrocde_state::profpac_map);
+ m_maincpu->set_addrmap(AS_IO, &astrocde_state::port_map_16col_pattern);
m_bank4000->set_map(&astrocde_state::profpac_bank4000_map);
m_bank4000->set_addr_width(20);
- MCFG_DEVICE_ADD("outlatch", OUTPUT_LATCH, 0) // 74LS174 on game board at U6
- MCFG_OUTPUT_LATCH_BIT0_HANDLER(WRITELINE(*this, astrocde_state, coin_counter_w<0>))
- MCFG_OUTPUT_LATCH_BIT1_HANDLER(WRITELINE(*this, astrocde_state, coin_counter_w<1>))
- MCFG_OUTPUT_LATCH_BIT2_HANDLER(OUTPUT("led0"))
- MCFG_OUTPUT_LATCH_BIT3_HANDLER(OUTPUT("led1"))
-
- MCFG_DEVICE_ADD("lamplatch", OUTPUT_LATCH, 0) // 74LS174 on game board at U7
- MCFG_OUTPUT_LATCH_BIT0_HANDLER(OUTPUT("lamp0")) // left lamp A
- MCFG_OUTPUT_LATCH_BIT1_HANDLER(OUTPUT("lamp1")) // left lamp B
- MCFG_OUTPUT_LATCH_BIT2_HANDLER(OUTPUT("lamp2")) // left lamp C
- MCFG_OUTPUT_LATCH_BIT4_HANDLER(OUTPUT("lamp3")) // right lamp A
- MCFG_OUTPUT_LATCH_BIT5_HANDLER(OUTPUT("lamp4")) // right lamp B
- MCFG_OUTPUT_LATCH_BIT6_HANDLER(OUTPUT("lamp5")) // right lamp C
-
- MCFG_DEVICE_MODIFY("astrocade1")
- MCFG_ASTROCADE_IO_SO4_STROBE_CB(WRITE8("outlatch", output_latch_device, bus_w))
- MCFG_ASTROCADE_IO_SO5_STROBE_CB(WRITE8("lamplatch", output_latch_device, bus_w))
-MACHINE_CONFIG_END
-
+ output_latch_device &outlatch(OUTPUT_LATCH(config, "outlatch", 0)); // 74LS174 on game board at U6
+ outlatch.bit_handler<0>().set(FUNC(astrocde_state::coin_counter_w<0>));
+ outlatch.bit_handler<1>().set(FUNC(astrocde_state::coin_counter_w<1>));
+ outlatch.bit_handler<2>().set_output("led0");
+ outlatch.bit_handler<3>().set_output("led1");
+
+ output_latch_device &lamplatch(OUTPUT_LATCH(config, "lamplatch", 0)); // 74LS174 on game board at U7
+ lamplatch.bit_handler<0>().set_output("lamp0"); // left lamp A
+ lamplatch.bit_handler<1>().set_output("lamp1"); // left lamp B
+ lamplatch.bit_handler<2>().set_output("lamp2"); // left lamp C
+ lamplatch.bit_handler<4>().set_output("lamp3"); // right lamp A
+ lamplatch.bit_handler<5>().set_output("lamp4"); // right lamp B
+ lamplatch.bit_handler<6>().set_output("lamp5"); // right lamp C
+
+ m_astrocade_sound1->so_cb<4>().set("outlatch", FUNC(output_latch_device::bus_w));
+ m_astrocade_sound1->so_cb<5>().set("lamplatch", FUNC(output_latch_device::bus_w));
+}
-MACHINE_CONFIG_START(demndrgn_state::demndrgn)
+void demndrgn_state::demndrgn(machine_config &config)
+{
astrocade_16color_base(config);
astrocade_mono_sound(config); // used only for I/O
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(demndrgn_map)
- MCFG_DEVICE_IO_MAP(port_map_16col_pattern_demndrgn)
-
- MCFG_DEVICE_ADD("outlatch", OUTPUT_LATCH, 0)
- MCFG_OUTPUT_LATCH_BIT0_HANDLER(WRITELINE(*this, astrocde_state, coin_counter_w<0>))
- MCFG_OUTPUT_LATCH_BIT1_HANDLER(WRITELINE(*this, astrocde_state, coin_counter_w<1>))
- MCFG_OUTPUT_LATCH_BIT2_HANDLER(OUTPUT("led0"))
- MCFG_OUTPUT_LATCH_BIT3_HANDLER(OUTPUT("led1"))
- MCFG_OUTPUT_LATCH_BIT4_HANDLER(WRITELINE(*this, demndrgn_state, input_select_w))
-
- MCFG_DEVICE_MODIFY("astrocade1")
- MCFG_ASTROCADE_IO_SO4_STROBE_CB(WRITE8("outlatch", output_latch_device, bus_w))
- MCFG_ASTROCADE_IO_POT0("FIREX")
- MCFG_ASTROCADE_IO_POT1("FIREY")
-MACHINE_CONFIG_END
-
+ m_maincpu->set_addrmap(AS_PROGRAM, &demndrgn_state::demndrgn_map);
+ m_maincpu->set_addrmap(AS_IO, &demndrgn_state::port_map_16col_pattern_demndrgn);
+
+ output_latch_device &outlatch(OUTPUT_LATCH(config, "outlatch", 0));
+ outlatch.bit_handler<0>().set(FUNC(astrocde_state::coin_counter_w<0>));
+ outlatch.bit_handler<1>().set(FUNC(astrocde_state::coin_counter_w<1>));
+ outlatch.bit_handler<2>().set_output("led0");
+ outlatch.bit_handler<3>().set_output("led1");
+ outlatch.bit_handler<4>().set(FUNC(demndrgn_state::input_select_w));
+
+ m_astrocade_sound1->so_cb<4>().set("outlatch", FUNC(output_latch_device::bus_w));
+ m_astrocade_sound1->set_pot_tag<0>("FIREX");
+ m_astrocade_sound1->set_pot_tag<1>("FIREY");
+}
-MACHINE_CONFIG_START(tenpindx_state::tenpindx)
+void tenpindx_state::tenpindx(machine_config &config)
+{
astrocade_16color_base(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(profpac_map)
- MCFG_DEVICE_IO_MAP(port_map_16col_pattern_tenpindx)
+ m_maincpu->set_addrmap(AS_PROGRAM, &tenpindx_state::profpac_map);
+ m_maincpu->set_addrmap(AS_IO, &tenpindx_state::port_map_16col_pattern_tenpindx);
Z80(config, m_subcpu, ASTROCADE_CLOCK/4); /* real clock unknown */
m_subcpu->set_daisy_config(tenpin_daisy_chain);
@@ -1525,7 +1504,7 @@ MACHINE_CONFIG_START(tenpindx_state::tenpindx)
ay8912_device &aysnd(AY8912(config, "aysnd", ASTROCADE_CLOCK/4)); /* real clock unknown */
aysnd.port_a_read_callback().set_ioport("DIPSW");
aysnd.add_route(ALL_OUTPUTS, "mono", 0.33);
-MACHINE_CONFIG_END
+}