diff options
Diffstat (limited to 'src/mame/drivers/trackfld.cpp')
-rw-r--r-- | src/mame/drivers/trackfld.cpp | 165 |
1 files changed, 85 insertions, 80 deletions
diff --git a/src/mame/drivers/trackfld.cpp b/src/mame/drivers/trackfld.cpp index ca74ca65707..28c5ac49af7 100644 --- a/src/mame/drivers/trackfld.cpp +++ b/src/mame/drivers/trackfld.cpp @@ -895,14 +895,14 @@ WRITE_LINE_MEMBER(trackfld_state::vblank_nmi) m_maincpu->set_input_line(INPUT_LINE_NMI, ASSERT_LINE); } -MACHINE_CONFIG_START(trackfld_state::trackfld) - +void trackfld_state::trackfld(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD(m_maincpu, KONAMI1, MASTER_CLOCK/6/2) /* a guess for now */ - MCFG_DEVICE_PROGRAM_MAP(main_map) + KONAMI1(config, m_maincpu, MASTER_CLOCK/6/2); /* a guess for now */ + m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::main_map); - MCFG_DEVICE_ADD(m_audiocpu, Z80, SOUND_CLOCK/4) - MCFG_DEVICE_PROGRAM_MAP(sound_map) + Z80(config, m_audiocpu, SOUND_CLOCK/4); + m_audiocpu->set_addrmap(AS_PROGRAM, &trackfld_state::sound_map); MCFG_MACHINE_START_OVERRIDE(trackfld_state,trackfld) MCFG_MACHINE_RESET_OVERRIDE(trackfld_state,trackfld) @@ -922,14 +922,14 @@ MACHINE_CONFIG_START(trackfld_state::trackfld) WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD(m_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(trackfld_state, screen_update_trackfld) - MCFG_SCREEN_PALETTE(m_palette) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, trackfld_state, vblank_irq)) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(trackfld_state::screen_update_trackfld)); + m_screen->set_palette(m_palette); + m_screen->screen_vblank().set(FUNC(trackfld_state::vblank_irq)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_trackfld); PALETTE(config, m_palette, FUNC(trackfld_state::trackfld_palette), 16*16+16*16, 32); @@ -940,26 +940,27 @@ MACHINE_CONFIG_START(trackfld_state::trackfld) GENERIC_LATCH_8(config, "soundlatch"); - MCFG_DEVICE_ADD(m_soundbrd, TRACKFLD_AUDIO, 0, m_audiocpu, m_vlm) + TRACKFLD_AUDIO(config, m_soundbrd, 0, m_audiocpu, m_vlm); - MCFG_DEVICE_ADD(m_dac, DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // ls374.8e + r34-r47(20k) + r35-r53(10k) + r54(20k) + upc324.8f - 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) + DAC_8BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.4); // ls374.8e + r34-r47(20k) + r35-r53(10k) + r54(20k) + upc324.8f + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 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(m_sn, SN76496, SOUND_CLOCK/8) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) + SN76496(config, m_sn, SOUND_CLOCK/8); + m_sn->add_route(ALL_OUTPUTS, "speaker", 1.0); - MCFG_DEVICE_ADD(m_vlm, VLM5030, VLM_CLOCK) - MCFG_DEVICE_ADDRESS_MAP(0, vlm_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) -MACHINE_CONFIG_END + VLM5030(config, m_vlm, VLM_CLOCK); + m_vlm->set_addrmap(0, &trackfld_state::vlm_map); + m_vlm->add_route(ALL_OUTPUTS, "speaker", 1.0); +} -MACHINE_CONFIG_START(trackfld_state::trackfldu) +void trackfld_state::trackfldu(machine_config &config) +{ trackfld(config); - MCFG_DEVICE_REPLACE("maincpu", MC6809E, MASTER_CLOCK/6/2) /* exact M6809 model unknown */ - MCFG_DEVICE_PROGRAM_MAP(main_map) - -MACHINE_CONFIG_END + MC6809E(config.replace(), m_maincpu, MASTER_CLOCK/6/2); /* exact M6809 model unknown */ + m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::main_map); +} INTERRUPT_GEN_MEMBER(trackfld_state::yieartf_timer_irq) { @@ -967,16 +968,16 @@ INTERRUPT_GEN_MEMBER(trackfld_state::yieartf_timer_irq) device.execute().set_input_line(INPUT_LINE_NMI, ASSERT_LINE); } -MACHINE_CONFIG_START(trackfld_state::yieartf) - +void trackfld_state::yieartf(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD(m_maincpu, MC6809E, MASTER_CLOCK/6/2) /* a guess for now */ - MCFG_DEVICE_PROGRAM_MAP(yieartf_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(trackfld_state, yieartf_timer_irq, 480) + MC6809E(config, m_maincpu, MASTER_CLOCK/6/2); /* a guess for now */ + m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::yieartf_map); + m_maincpu->set_periodic_int(FUNC(trackfld_state::yieartf_timer_irq), attotime::from_hz(480)); // z80 isn't used -// MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CLOCK/4) -// MCFG_DEVICE_PROGRAM_MAP(sound_map) +// Z80(config, m_audiocpu, SOUND_CLOCK/4); +// m_audiocpu->set_addrmap(AS_PROGRAM, &trackfld_state::sound_map); MCFG_MACHINE_START_OVERRIDE(trackfld_state,trackfld) MCFG_MACHINE_RESET_OVERRIDE(trackfld_state,trackfld) @@ -996,14 +997,14 @@ MACHINE_CONFIG_START(trackfld_state::yieartf) WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_SCREEN_ADD(m_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(trackfld_state, screen_update_trackfld) - MCFG_SCREEN_PALETTE(m_palette) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, trackfld_state, vblank_irq)) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(trackfld_state::screen_update_trackfld)); + m_screen->set_palette(m_palette); + m_screen->screen_vblank().set(FUNC(trackfld_state::vblank_irq)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_trackfld); PALETTE(config, m_palette, FUNC(trackfld_state::trackfld_palette), 16*16+16*16, 32); @@ -1014,19 +1015,20 @@ MACHINE_CONFIG_START(trackfld_state::yieartf) GENERIC_LATCH_8(config, "soundlatch"); - MCFG_DEVICE_ADD(m_soundbrd, TRACKFLD_AUDIO, 0, finder_base::DUMMY_TAG, m_vlm) + TRACKFLD_AUDIO(config, m_soundbrd, 0, finder_base::DUMMY_TAG, m_vlm); - MCFG_DEVICE_ADD(m_dac, DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.4) // ls374.8e + r34-r47(20k) + r35-r53(10k) + r54(20k) + upc324.8f - 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) + DAC_8BIT_R2R(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.4); // ls374.8e + r34-r47(20k) + r35-r53(10k) + r54(20k) + upc324.8f + voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 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(m_sn, SN76496, MASTER_CLOCK/6/2) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) + SN76496(config, m_sn, MASTER_CLOCK/6/2); + m_sn->add_route(ALL_OUTPUTS, "speaker", 1.0); - MCFG_DEVICE_ADD(m_vlm, VLM5030, VLM_CLOCK) - MCFG_DEVICE_ADDRESS_MAP(0, vlm_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) -MACHINE_CONFIG_END + VLM5030(config, m_vlm, VLM_CLOCK); + m_vlm->set_addrmap(0, &trackfld_state::vlm_map); + m_vlm->add_route(ALL_OUTPUTS, "speaker", 1.0); +} void trackfld_state::hyprolyb_adpcm_map(address_map &map) { @@ -1053,7 +1055,8 @@ void trackfld_state::hyprolyb_adpcm_map(address_map &map) /* same as the original, but uses ADPCM instead of VLM5030 */ /* also different memory handlers do handle that */ -MACHINE_CONFIG_START(trackfld_state::hyprolyb) +void trackfld_state::hyprolyb(machine_config &config) +{ trackfld(config); m_audiocpu->set_addrmap(AS_PROGRAM, address_map_constructor(&std::remove_pointer_t<decltype(this)>::hyprolyb_sound_map, tag(), this)); @@ -1062,59 +1065,61 @@ MACHINE_CONFIG_START(trackfld_state::hyprolyb) MCFG_MACHINE_RESET_OVERRIDE(trackfld_state,trackfld) /* sound hardware */ - MCFG_DEVICE_REMOVE("vlm") - MCFG_DEVICE_ADD("adpcm", M6802, XTAL(14'318'181)/8) /* unknown clock */ - MCFG_DEVICE_PROGRAM_MAP(hyprolyb_adpcm_map) + config.device_remove("vlm"); + M6802(config, "adpcm", XTAL(14'318'181)/8).set_addrmap(AS_PROGRAM, &trackfld_state::hyprolyb_adpcm_map); /* unknown clock */ GENERIC_LATCH_8(config, "soundlatch2"); - MCFG_DEVICE_ADD("hyprolyb_adpcm", HYPROLYB_ADPCM, 0) + HYPROLYB_ADPCM(config, "hyprolyb_adpcm", 0); - MCFG_DEVICE_ADD("msm", MSM5205, 384000) - MCFG_MSM5205_VCLK_CB(WRITELINE("hyprolyb_adpcm", hyprolyb_adpcm_device, vck_callback)) /* VCK function */ - MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4 kHz */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.5) -MACHINE_CONFIG_END + msm5205_device &msm(MSM5205(config, "msm", 384000)); + msm.vck_legacy_callback().set("hyprolyb_adpcm", FUNC(hyprolyb_adpcm_device::vck_callback)); + msm.set_prescaler_selector(msm5205_device::S96_4B); /* 4 kHz */ + msm.add_route(ALL_OUTPUTS, "speaker", 0.5); +} -MACHINE_CONFIG_START(trackfld_state::atlantol) +void trackfld_state::atlantol(machine_config &config) +{ hyprolyb(config); MCFG_VIDEO_START_OVERRIDE(trackfld_state,atlantol) -MACHINE_CONFIG_END - +} -MACHINE_CONFIG_START(trackfld_state::mastkin) +void trackfld_state::mastkin(machine_config &config) +{ trackfld(config); /* basic machine hardware */ - MCFG_DEVICE_REPLACE(m_maincpu, MC6809E, MASTER_CLOCK/6/2) /* a guess for now */ - MCFG_DEVICE_PROGRAM_MAP(mastkin_map) + MC6809E(config.replace(), m_maincpu, MASTER_CLOCK/6/2); /* a guess for now */ + m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::mastkin_map); m_mainlatch->q_out_cb<3>().set_nop(); // actually not used m_mainlatch->q_out_cb<4>().set_nop(); // actually not used -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(trackfld_state::wizzquiz) +void trackfld_state::wizzquiz(machine_config &config) +{ trackfld(config); /* basic machine hardware */ // right cpu? - MCFG_DEVICE_REPLACE(m_maincpu, M6800, 2048000) /* 1.400 MHz ??? */ - MCFG_DEVICE_PROGRAM_MAP(wizzquiz_map) + M6800(config.replace(), m_maincpu, 2048000); /* 1.400 MHz ??? */ + m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::wizzquiz_map); m_screen->set_screen_vblank(DEVCB_WRITELINE(*this, trackfld_state, vblank_nmi)); m_mainlatch->q_out_cb<7>().set(FUNC(trackfld_state::nmi_mask_w)); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(trackfld_state::reaktor) +void trackfld_state::reaktor(machine_config &config) +{ trackfld(config); /* basic machine hardware */ - MCFG_DEVICE_REPLACE(m_maincpu, Z80, MASTER_CLOCK/6) - MCFG_DEVICE_PROGRAM_MAP(reaktor_map) - MCFG_DEVICE_IO_MAP(reaktor_io_map) -MACHINE_CONFIG_END + Z80(config.replace(), m_maincpu, MASTER_CLOCK/6); + m_maincpu->set_addrmap(AS_PROGRAM, &trackfld_state::reaktor_map); + m_maincpu->set_addrmap(AS_IO, &trackfld_state::reaktor_io_map); +} /*************************************************************************** |