diff options
Diffstat (limited to 'src/mame/drivers/nycaptor.cpp')
-rw-r--r-- | src/mame/drivers/nycaptor.cpp | 248 |
1 files changed, 120 insertions, 128 deletions
diff --git a/src/mame/drivers/nycaptor.cpp b/src/mame/drivers/nycaptor.cpp index f7f5e920e20..722a9e3853a 100644 --- a/src/mame/drivers/nycaptor.cpp +++ b/src/mame/drivers/nycaptor.cpp @@ -732,48 +732,43 @@ void nycaptor_state::machine_reset() m_gfxctrl = 0; } -MACHINE_CONFIG_START(nycaptor_state::nycaptor) - +void nycaptor_state::nycaptor(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80,8000000/2) /* ??? */ - MCFG_DEVICE_PROGRAM_MAP(nycaptor_master_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nycaptor_state, irq0_line_hold) - - MCFG_DEVICE_ADD("sub", Z80,8000000/2) - MCFG_DEVICE_PROGRAM_MAP(nycaptor_slave_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nycaptor_state, irq0_line_hold) /* IRQ generated by ??? */ + Z80(config, m_maincpu, 8000000/2); /* ??? */ + m_maincpu->set_addrmap(AS_PROGRAM, &nycaptor_state::nycaptor_master_map); + m_maincpu->set_vblank_int("screen", FUNC(nycaptor_state::irq0_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80,8000000/2) - MCFG_DEVICE_PROGRAM_MAP(sound_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(nycaptor_state, irq0_line_hold, 2*60) /* IRQ generated by ??? */ + Z80(config, m_subcpu, 8000000/2); + m_subcpu->set_addrmap(AS_PROGRAM, &nycaptor_state::nycaptor_slave_map); + m_subcpu->set_vblank_int("screen", FUNC(nycaptor_state::irq0_line_hold)); /* IRQ generated by ??? */ - MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU,2000000) + Z80(config, m_audiocpu, 8000000/2); + m_audiocpu->set_addrmap(AS_PROGRAM, &nycaptor_state::sound_map); + m_audiocpu->set_periodic_int(FUNC(nycaptor_state::irq0_line_hold), attotime::from_hz(2*60)); /* IRQ generated by ??? */ - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - an high value to ensure proper synchronization of the CPUs */ + TAITO68705_MCU(config, m_bmcu, 2000000); + config.m_minimum_quantum = attotime::from_hz(6000); /* 100 CPU slices per frame - a high value to ensure proper synchronization of the CPUs */ /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(nycaptor_state, screen_update_nycaptor) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_nycaptor) - MCFG_PALETTE_ADD("palette", 512) - MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(32*8, 32*8); + screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(nycaptor_state::screen_update_nycaptor)); + screen.set_palette(m_palette); + GFXDECODE(config, m_gfxdecode, m_palette, gfx_nycaptor); + PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 512); /* sound hardware */ SPEAKER(config, "speaker").front_center(); - GENERIC_LATCH_8(config, m_soundlatch); - m_soundlatch->data_pending_callback().set("soundnmi", FUNC(input_merger_device::in_w<0>)); + GENERIC_LATCH_8(config, m_soundlatch).data_pending_callback().set(m_soundnmi, FUNC(input_merger_device::in_w<0>)); - MCFG_INPUT_MERGER_ALL_HIGH("soundnmi") - MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI)) + INPUT_MERGER_ALL_HIGH(config, m_soundnmi).output_handler().set_inputline(m_audiocpu, INPUT_LINE_NMI); GENERIC_LATCH_8(config, m_soundlatch2); @@ -787,67 +782,63 @@ MACHINE_CONFIG_START(nycaptor_state::nycaptor) ay2.port_b_write_callback().set(FUNC(nycaptor_state::unk_w)); ay2.add_route(ALL_OUTPUTS, "speaker", 0.15); - MCFG_DEVICE_ADD("msm", MSM5232, 2000000) - MCFG_MSM5232_SET_CAPACITORS(0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6) /* 0.65 (???) uF capacitors (match the sample, not verified) */ - MCFG_SOUND_ROUTE(0, "speaker", 1.0) // pin 28 2'-1 - MCFG_SOUND_ROUTE(1, "speaker", 1.0) // pin 29 4'-1 - MCFG_SOUND_ROUTE(2, "speaker", 1.0) // pin 30 8'-1 - MCFG_SOUND_ROUTE(3, "speaker", 1.0) // pin 31 16'-1 - MCFG_SOUND_ROUTE(4, "speaker", 1.0) // pin 36 2'-2 - MCFG_SOUND_ROUTE(5, "speaker", 1.0) // pin 35 4'-2 - MCFG_SOUND_ROUTE(6, "speaker", 1.0) // pin 34 8'-2 - MCFG_SOUND_ROUTE(7, "speaker", 1.0) // pin 33 16'-2 + MSM5232(config, m_msm, 2000000); + m_msm->set_capacitors(0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6); /* 0.65 (???) uF capacitors (match the sample, not verified) */ + m_msm->add_route(0, "speaker", 1.0); // pin 28 2'-1 + m_msm->add_route(1, "speaker", 1.0); // pin 29 4'-1 + m_msm->add_route(2, "speaker", 1.0); // pin 30 8'-1 + m_msm->add_route(3, "speaker", 1.0); // pin 31 16'-1 + m_msm->add_route(4, "speaker", 1.0); // pin 36 2'-2 + m_msm->add_route(5, "speaker", 1.0); // pin 35 4'-2 + m_msm->add_route(6, "speaker", 1.0); // pin 34 8'-2 + m_msm->add_route(7, "speaker", 1.0); // pin 33 16'-2 // pin 1 SOLO 8' not mapped // pin 2 SOLO 16' not mapped // pin 22 Noise Output not mapped - // Does the DAC also exist on this board? nycaptor writes 0x80 to 0xd600 - // Update: of course it exists, sound board seems common Taito design. - MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nycaptor_state::cyclshtg) + DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); + vref.set_output(5.0); + vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); + vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); +} - MCFG_DEVICE_ADD("maincpu", Z80,8000000/2) - MCFG_DEVICE_PROGRAM_MAP(cyclshtg_master_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nycaptor_state, irq0_line_hold) +void nycaptor_state::cyclshtg(machine_config &config) +{ + Z80(config, m_maincpu, 8000000/2); + m_maincpu->set_addrmap(AS_PROGRAM, &nycaptor_state::cyclshtg_master_map); + m_maincpu->set_vblank_int("screen", FUNC(nycaptor_state::irq0_line_hold)); - MCFG_DEVICE_ADD("sub", Z80,8000000/2) - MCFG_DEVICE_PROGRAM_MAP(cyclshtg_slave_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nycaptor_state, irq0_line_hold) + Z80(config, m_subcpu, 8000000/2); + m_subcpu->set_addrmap(AS_PROGRAM, &nycaptor_state::cyclshtg_slave_map); + m_subcpu->set_vblank_int("screen", FUNC(nycaptor_state::irq0_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80,8000000/2) - MCFG_DEVICE_PROGRAM_MAP(sound_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(nycaptor_state, irq0_line_hold, 2*60) + Z80(config, m_audiocpu, 8000000/2); + m_audiocpu->set_addrmap(AS_PROGRAM, &nycaptor_state::sound_map); + m_audiocpu->set_periodic_int(FUNC(nycaptor_state::irq0_line_hold), attotime::from_hz(2*60)); #ifdef USE_MCU - MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU,2000000) + TAITO68705_MCU(config, m_bmcu, 2000000); #endif - MCFG_QUANTUM_TIME(attotime::from_hz(60)) - - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(nycaptor_state, screen_update_nycaptor) - MCFG_SCREEN_PALETTE("palette") + config.m_minimum_quantum = attotime::from_hz(60); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_nycaptor) - MCFG_PALETTE_ADD("palette", 512) - MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(32*8, 32*8); + screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(nycaptor_state::screen_update_nycaptor)); + screen.set_palette(m_palette); + GFXDECODE(config, m_gfxdecode, m_palette, gfx_nycaptor); + PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 512); SPEAKER(config, "speaker").front_center(); - GENERIC_LATCH_8(config, m_soundlatch); - m_soundlatch->data_pending_callback().set("soundnmi", FUNC(input_merger_device::in_w<0>)); + GENERIC_LATCH_8(config, m_soundlatch).data_pending_callback().set(m_soundnmi, FUNC(input_merger_device::in_w<0>)); - MCFG_INPUT_MERGER_ALL_HIGH("soundnmi") - MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI)) + INPUT_MERGER_ALL_HIGH(config, m_soundnmi).output_handler().set_inputline(m_audiocpu, INPUT_LINE_NMI); GENERIC_LATCH_8(config, m_soundlatch2); @@ -861,62 +852,61 @@ MACHINE_CONFIG_START(nycaptor_state::cyclshtg) ay2.port_b_write_callback().set(FUNC(nycaptor_state::unk_w)); ay2.add_route(ALL_OUTPUTS, "speaker", 0.15); - MCFG_DEVICE_ADD("msm", MSM5232, 2000000) - MCFG_MSM5232_SET_CAPACITORS(0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6) /* 0.65 (???) uF capacitors (match the sample, not verified) */ - MCFG_SOUND_ROUTE(0, "speaker", 1.0) // pin 28 2'-1 - MCFG_SOUND_ROUTE(1, "speaker", 1.0) // pin 29 4'-1 - MCFG_SOUND_ROUTE(2, "speaker", 1.0) // pin 30 8'-1 - MCFG_SOUND_ROUTE(3, "speaker", 1.0) // pin 31 16'-1 - MCFG_SOUND_ROUTE(4, "speaker", 1.0) // pin 36 2'-2 - MCFG_SOUND_ROUTE(5, "speaker", 1.0) // pin 35 4'-2 - MCFG_SOUND_ROUTE(6, "speaker", 1.0) // pin 34 8'-2 - MCFG_SOUND_ROUTE(7, "speaker", 1.0) // pin 33 16'-2 + MSM5232(config, m_msm, 2000000); + m_msm->set_capacitors(0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6); /* 0.65 (???) uF capacitors (match the sample, not verified) */ + m_msm->add_route(0, "speaker", 1.0); // pin 28 2'-1 + m_msm->add_route(1, "speaker", 1.0); // pin 29 4'-1 + m_msm->add_route(2, "speaker", 1.0); // pin 30 8'-1 + m_msm->add_route(3, "speaker", 1.0); // pin 31 16'-1 + m_msm->add_route(4, "speaker", 1.0); // pin 36 2'-2 + m_msm->add_route(5, "speaker", 1.0); // pin 35 4'-2 + m_msm->add_route(6, "speaker", 1.0); // pin 34 8'-2 + m_msm->add_route(7, "speaker", 1.0); // pin 33 16'-2 // pin 1 SOLO 8' not mapped // pin 2 SOLO 16' not mapped // pin 22 Noise Output not mapped - MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT) -MACHINE_CONFIG_END - + DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); + vref.set_output(5.0); + vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); + vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); +} -MACHINE_CONFIG_START(nycaptor_state::bronx) - MCFG_DEVICE_ADD("maincpu", Z80,8000000/2) - MCFG_DEVICE_PROGRAM_MAP(bronx_master_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nycaptor_state, irq0_line_hold) +void nycaptor_state::bronx(machine_config &config) +{ + Z80(config, m_maincpu, 8000000/2); + m_maincpu->set_addrmap(AS_PROGRAM, &nycaptor_state::bronx_master_map); + m_maincpu->set_vblank_int("screen", FUNC(nycaptor_state::irq0_line_hold)); - MCFG_DEVICE_ADD("sub", Z80,8000000/2) - MCFG_DEVICE_PROGRAM_MAP(bronx_slave_map) - MCFG_DEVICE_IO_MAP(bronx_slave_io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", nycaptor_state, irq0_line_hold) + Z80(config, m_subcpu, 8000000/2); + m_subcpu->set_addrmap(AS_PROGRAM, &nycaptor_state::bronx_slave_map); + m_subcpu->set_addrmap(AS_IO, &nycaptor_state::bronx_slave_io_map); + m_subcpu->set_vblank_int("screen", FUNC(nycaptor_state::irq0_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80,8000000/2) - MCFG_DEVICE_PROGRAM_MAP(sound_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(nycaptor_state, irq0_line_hold, 2*60) + Z80(config, m_audiocpu, 8000000/2); + m_audiocpu->set_addrmap(AS_PROGRAM, &nycaptor_state::sound_map); + m_audiocpu->set_periodic_int(FUNC(nycaptor_state::irq0_line_hold), attotime::from_hz(2*60)); - MCFG_QUANTUM_TIME(attotime::from_hz(120)) + config.m_minimum_quantum = attotime::from_hz(120); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(nycaptor_state, screen_update_nycaptor) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(32*8, 32*8); + screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(nycaptor_state::screen_update_nycaptor)); + screen.set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_nycaptor) - MCFG_PALETTE_ADD("palette", 512) - MCFG_PALETTE_FORMAT(xxxxBBBBGGGGRRRR) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_nycaptor); + PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 512); SPEAKER(config, "speaker").front_center(); - GENERIC_LATCH_8(config, m_soundlatch); - m_soundlatch->data_pending_callback().set("soundnmi", FUNC(input_merger_device::in_w<0>)); + GENERIC_LATCH_8(config, m_soundlatch).data_pending_callback().set(m_soundnmi, FUNC(input_merger_device::in_w<0>)); - MCFG_INPUT_MERGER_ALL_HIGH("soundnmi") - MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI)) + INPUT_MERGER_ALL_HIGH(config, m_soundnmi).output_handler().set_inputline(m_audiocpu, INPUT_LINE_NMI); GENERIC_LATCH_8(config, m_soundlatch2); @@ -930,24 +920,26 @@ MACHINE_CONFIG_START(nycaptor_state::bronx) ay2.port_b_write_callback().set(FUNC(nycaptor_state::unk_w)); ay2.add_route(ALL_OUTPUTS, "speaker", 0.15); - MCFG_DEVICE_ADD("msm", MSM5232, 2000000) - MCFG_MSM5232_SET_CAPACITORS(0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6) /* 0.65 (???) uF capacitors (match the sample, not verified) */ - MCFG_SOUND_ROUTE(0, "speaker", 1.0) // pin 28 2'-1 - MCFG_SOUND_ROUTE(1, "speaker", 1.0) // pin 29 4'-1 - MCFG_SOUND_ROUTE(2, "speaker", 1.0) // pin 30 8'-1 - MCFG_SOUND_ROUTE(3, "speaker", 1.0) // pin 31 16'-1 - MCFG_SOUND_ROUTE(4, "speaker", 1.0) // pin 36 2'-2 - MCFG_SOUND_ROUTE(5, "speaker", 1.0) // pin 35 4'-2 - MCFG_SOUND_ROUTE(6, "speaker", 1.0) // pin 34 8'-2 - MCFG_SOUND_ROUTE(7, "speaker", 1.0) // pin 33 16'-2 + MSM5232(config, m_msm, 2000000); + m_msm->set_capacitors(0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6, 0.65e-6); /* 0.65 (???) uF capacitors (match the sample, not verified) */ + m_msm->add_route(0, "speaker", 1.0); // pin 28 2'-1 + m_msm->add_route(1, "speaker", 1.0); // pin 29 4'-1 + m_msm->add_route(2, "speaker", 1.0); // pin 30 8'-1 + m_msm->add_route(3, "speaker", 1.0); // pin 31 16'-1 + m_msm->add_route(4, "speaker", 1.0); // pin 36 2'-2 + m_msm->add_route(5, "speaker", 1.0); // pin 35 4'-2 + m_msm->add_route(6, "speaker", 1.0); // pin 34 8'-2 + m_msm->add_route(7, "speaker", 1.0); // pin 33 16'-2 // pin 1 SOLO 8' not mapped // pin 2 SOLO 16' not mapped // pin 22 Noise Output not mapped - MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // unknown DAC - MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) - MCFG_SOUND_ROUTE(0, "dac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "dac", -1.0, DAC_VREF_NEG_INPUT) -MACHINE_CONFIG_END + DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0)); + vref.set_output(5.0); + vref.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); + vref.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); +} |