diff options
Diffstat (limited to 'src/mame/drivers/spinb.cpp')
-rw-r--r-- | src/mame/drivers/spinb.cpp | 106 |
1 files changed, 57 insertions, 49 deletions
diff --git a/src/mame/drivers/spinb.cpp b/src/mame/drivers/spinb.cpp index f86b60db8b9..b4233cadbd0 100644 --- a/src/mame/drivers/spinb.cpp +++ b/src/mame/drivers/spinb.cpp @@ -137,7 +137,7 @@ private: required_device<cpu_device> m_maincpu; required_device<cpu_device> m_audiocpu; required_device<cpu_device> m_musiccpu; - required_device<cpu_device> m_dmdcpu; + required_device<i8031_device> m_dmdcpu; required_device<msm5205_device> m_msm_a; required_device<msm5205_device> m_msm_m; required_device<ttl7474_device> m_ic5a; @@ -640,47 +640,53 @@ uint32_t spinb_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, return 0; } -MACHINE_CONFIG_START(spinb_state::spinb) +void spinb_state::spinb(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(5'000'000) / 2) - MCFG_DEVICE_PROGRAM_MAP(spinb_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(spinb_state, irq0_line_hold, 160) // NE556 adjustable (if faster, then jolypark has a stack problem) - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(5'000'000) / 2) - MCFG_DEVICE_PROGRAM_MAP(spinb_audio_map) - MCFG_DEVICE_ADD("musiccpu", Z80, XTAL(5'000'000) / 2) - MCFG_DEVICE_PROGRAM_MAP(spinb_music_map) - MCFG_DEVICE_ADD("dmdcpu",I8031, XTAL(16'000'000)) - MCFG_DEVICE_PROGRAM_MAP(dmd_mem) - MCFG_DEVICE_IO_MAP(dmd_io) - MCFG_MCS51_PORT_P1_OUT_CB(WRITE8(*this, spinb_state, p1_w)) - MCFG_MCS51_PORT_P3_IN_CB(READ8(*this, spinb_state, p3_r)) - MCFG_MCS51_PORT_P3_OUT_CB(WRITE8(*this, spinb_state, p3_w)) + Z80(config, m_maincpu, XTAL(5'000'000) / 2); + m_maincpu->set_addrmap(AS_PROGRAM, &spinb_state::spinb_map); + m_maincpu->set_periodic_int(FUNC(spinb_state::irq0_line_hold), attotime::from_hz(160)); // NE556 adjustable (if faster, then jolypark has a stack problem) + + Z80(config, m_audiocpu, XTAL(5'000'000) / 2); + m_audiocpu->set_addrmap(AS_PROGRAM, &spinb_state::spinb_audio_map); + + Z80(config, m_musiccpu, XTAL(5'000'000) / 2); + m_musiccpu->set_addrmap(AS_PROGRAM, &spinb_state::spinb_music_map); + + I8031(config, m_dmdcpu, XTAL(16'000'000)); + m_dmdcpu->set_addrmap(AS_PROGRAM, &spinb_state::dmd_mem); + m_dmdcpu->set_addrmap(AS_IO, &spinb_state::dmd_io); + m_dmdcpu->port_out_cb<1>().set(FUNC(spinb_state::p1_w)); + m_dmdcpu->port_in_cb<3>().set(FUNC(spinb_state::p3_r)); + m_dmdcpu->port_out_cb<3>().set(FUNC(spinb_state::p3_w)); NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_1); /* Video */ - MCFG_SCREEN_ADD("screen", LCD) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) - MCFG_SCREEN_UPDATE_DRIVER(spinb_state, screen_update) - MCFG_SCREEN_SIZE(128, 32) - MCFG_SCREEN_VISIBLE_AREA(0, 127, 0, 31) - MCFG_SCREEN_PALETTE("palette") - MCFG_PALETTE_ADD( "palette", 3 ) - MCFG_PALETTE_INIT_OWNER(spinb_state, spinb) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_LCD)); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); + screen.set_screen_update(FUNC(spinb_state::screen_update)); + screen.set_size(128, 32); + screen.set_visarea(0, 127, 0, 31); + screen.set_palette("palette"); + + PALETTE(config, "palette", 3).set_init(FUNC(spinb_state::palette_init_spinb)); /* Sound */ genpin_audio(config); + SPEAKER(config, "msmavol").front_center(); - MCFG_DEVICE_ADD("msm_a", MSM5205, XTAL(384'000)) - MCFG_MSM5205_VCK_CALLBACK(WRITELINE("ic5a", ttl7474_device, clock_w)) - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 4KHz 4-bit */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "msmavol", 1.0) + MSM5205(config, m_msm_a, XTAL(384'000)); + m_msm_a->vck_callback().set("ic5a", FUNC(ttl7474_device::clock_w)); + m_msm_a->set_prescaler_selector(msm5205_device::S48_4B); /* 4KHz 4-bit */ + m_msm_a->add_route(ALL_OUTPUTS, "msmavol", 1.0); + SPEAKER(config, "msmmvol").front_center(); - MCFG_DEVICE_ADD("msm_m", MSM5205, XTAL(384'000)) - MCFG_MSM5205_VCK_CALLBACK(WRITELINE("ic5m", ttl7474_device, clock_w)) - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 4KHz 4-bit */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "msmmvol", 1.0) + MSM5205(config, m_msm_m, XTAL(384'000)); + m_msm_m->vck_callback().set("ic5m", FUNC(ttl7474_device::clock_w)); + m_msm_m->set_prescaler_selector(msm5205_device::S48_4B); /* 4KHz 4-bit */ + m_msm_m->add_route(ALL_OUTPUTS, "msmmvol", 1.0); /* Devices */ i8255_device &ppi60(I8255A(config, "ppi60")); @@ -738,26 +744,28 @@ MACHINE_CONFIG_START(spinb_state::spinb) HC157(config, m_ic14m, 0); // actually IC15 on Jolly Park m_ic14m->out_callback().set("msm_m", FUNC(msm5205_device::data_w)); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(spinb_state::jolypark) +void spinb_state::jolypark(machine_config &config) +{ spinb(config); - MCFG_DEVICE_REPLACE("msm_a", MSM6585, XTAL(640'000)) - MCFG_MSM6585_VCK_CALLBACK(WRITELINE("ic5a", ttl7474_device, clock_w)) - MCFG_MSM6585_PRESCALER_SELECTOR(S40) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "msmavol", 1.0) - MCFG_DEVICE_REPLACE("msm_m", MSM6585, XTAL(640'000)) - MCFG_MSM6585_VCK_CALLBACK(WRITELINE("ic5m", ttl7474_device, clock_w)) - MCFG_MSM6585_PRESCALER_SELECTOR(S40) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "msmmvol", 1.0) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(spinb_state::vrnwrld) + + MSM6585(config.replace(), m_msm_a, XTAL(640'000)); + m_msm_a->vck_callback().set("ic5a", FUNC(ttl7474_device::clock_w)); + m_msm_a->set_prescaler_selector(msm6585_device::S40); + m_msm_a->add_route(ALL_OUTPUTS, "msmavol", 1.0); + + MSM6585(config.replace(), m_msm_m, XTAL(640'000)); + m_msm_m->vck_callback().set("ic5m", FUNC(ttl7474_device::clock_w)); + m_msm_m->set_prescaler_selector(msm6585_device::S40); + m_msm_m->add_route(ALL_OUTPUTS, "msmmvol", 1.0); +} + +void spinb_state::vrnwrld(machine_config &config) +{ jolypark(config); - /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(vrnwrld_map) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &spinb_state::vrnwrld_map); +} /*------------------------------------------------------------------- |