diff options
Diffstat (limited to 'src/mame/drivers/astrocde.cpp')
-rw-r--r-- | src/mame/drivers/astrocde.cpp | 301 |
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 +} |