diff options
Diffstat (limited to 'src/mame/drivers/namcos12.cpp')
-rw-r--r-- | src/mame/drivers/namcos12.cpp | 139 |
1 files changed, 68 insertions, 71 deletions
diff --git a/src/mame/drivers/namcos12.cpp b/src/mame/drivers/namcos12.cpp index acde409417b..d8a18996bb5 100644 --- a/src/mame/drivers/namcos12.cpp +++ b/src/mame/drivers/namcos12.cpp @@ -1106,8 +1106,8 @@ class namcos12_state : public driver_device public: namcos12_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag) - , m_ram(*this, "maincpu:ram") , m_maincpu(*this, "maincpu") + , m_ram(*this, "maincpu:ram") , m_sub(*this, "sub") , m_adc(*this, "sub:adc") , m_rtc(*this, "rtc") @@ -1149,11 +1149,11 @@ protected: void tdjvsmap(address_map &map); void tektagt_map(address_map &map); + required_device<psxcpu_device> m_maincpu; required_device<ram_device> m_ram; + required_device<h83002_device> m_sub; private: - required_device<psxcpu_device> m_maincpu; - required_device<h83002_device> m_sub; required_device<h8_adc_device> m_adc; required_device<rtc4543_device> m_rtc; required_device<namco_settings_device> m_settings; @@ -1724,12 +1724,12 @@ void namcos12_state::init_golgo13() } // SYSTEM12 MOTHER PCB -MACHINE_CONFIG_START(namcos12_state::namcos12_mobo) - +void namcos12_state::namcos12_mobo(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD(m_sub, H83002, 16934400) // frequency based on research (superctr) - MCFG_DEVICE_PROGRAM_MAP(s12h8rwmap) - MCFG_DEVICE_IO_MAP(s12h8iomap) + H83002(config, m_sub, 16934400); // frequency based on research (superctr) + m_sub->set_addrmap(AS_PROGRAM, &namcos12_state::s12h8rwmap); + m_sub->set_addrmap(AS_IO, &namcos12_state::s12h8iomap); NAMCO_SETTINGS(config, m_settings, 0); @@ -1742,78 +1742,74 @@ MACHINE_CONFIG_START(namcos12_state::namcos12_mobo) sub_sci1.clk_handler().set(m_rtc, FUNC(rtc4543_device::clk_w)).invert(); sub_sci1.clk_handler().append(m_settings, FUNC(namco_settings_device::clk_w)); - MCFG_DEVICE_ADD("at28c16", AT28C16, 0) + AT28C16(config, "at28c16", 0); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - MCFG_DEVICE_ADD("c352", C352, 25401600, 288) - MCFG_SOUND_ROUTE(0, "lspeaker", 1.00) - MCFG_SOUND_ROUTE(1, "rspeaker", 1.00) - //MCFG_SOUND_ROUTE(2, "lspeaker", 1.00) // Second DAC not present. - //MCFG_SOUND_ROUTE(3, "rspeaker", 1.00) -MACHINE_CONFIG_END + c352_device &c352(C352(config, "c352", 25401600, 288)); + c352.add_route(0, "lspeaker", 1.00); + c352.add_route(1, "rspeaker", 1.00); + //c352.add_route(2, "lspeaker", 1.00); // Second DAC not present. + //c352.add_route(3, "rspeaker", 1.00); +} // CPU PCB COH700 -MACHINE_CONFIG_START(namcos12_state::coh700) +void namcos12_state::coh700(machine_config &config) +{ namcos12_mobo(config); /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", CXD8661R, XTAL(100'000'000)) - MCFG_DEVICE_PROGRAM_MAP( namcos12_map) - - subdevice<ram_device>("maincpu:ram")->set_default_size("4M"); - - MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psxdma_device::read_delegate(&namcos12_state::namcos12_rom_read, this )) + CXD8661R(config, m_maincpu, XTAL(100'000'000)); + m_maincpu->set_addrmap(AS_PROGRAM, &namcos12_state::namcos12_map); + m_maincpu->subdevice<ram_device>("ram")->set_default_size("4M"); + m_maincpu->subdevice<psxdma_device>("dma")->install_read_handler(5, psxdma_device::read_delegate(&namcos12_state::namcos12_rom_read, this)); /* video hardware */ - MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8654Q, 0x200000, XTAL(53'693'175) ) - MCFG_VIDEO_SET_SCREEN("screen") + CXD8654Q(config, "gpu", XTAL(53'693'175), 0x200000, subdevice<psxcpu_device>("maincpu")).set_screen("screen"); SCREEN(config, "screen", SCREEN_TYPE_RASTER).screen_vblank().set(FUNC(namcos12_state::namcos12_sub_irq)); -MACHINE_CONFIG_END +} // CPU PCB COH716 -MACHINE_CONFIG_START(namcos12_state::coh716) +void namcos12_state::coh716(machine_config &config) +{ namcos12_mobo(config); /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", CXD8606BQ, XTAL(100'000'000)) - MCFG_DEVICE_PROGRAM_MAP( namcos12_map) - - subdevice<ram_device>("maincpu:ram")->set_default_size("16M"); - - MCFG_PSX_DMA_CHANNEL_READ( "maincpu", 5, psxdma_device::read_delegate(&namcos12_state::namcos12_rom_read, this )) + CXD8606BQ(config, m_maincpu, XTAL(100'000'000)); + m_maincpu->set_addrmap(AS_PROGRAM, &namcos12_state::namcos12_map); + m_maincpu->subdevice<ram_device>("ram")->set_default_size("16M"); + m_maincpu->subdevice<psxdma_device>("dma")->install_read_handler(5, psxdma_device::read_delegate(&namcos12_state::namcos12_rom_read, this)); /* video hardware */ - MCFG_PSXGPU_ADD( "maincpu", "gpu", CXD8561CQ, 0x400000, XTAL(53'693'175) ) - MCFG_VIDEO_SET_SCREEN("screen") + CXD8561CQ(config, "gpu", XTAL(53'693'175), 0x400000, subdevice<psxcpu_device>("maincpu")).set_screen("screen"); SCREEN(config, "screen", SCREEN_TYPE_RASTER).screen_vblank().set(FUNC(namcos12_state::namcos12_sub_irq)); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(namcos12_boothack_state::ptblank2) +void namcos12_boothack_state::ptblank2(machine_config &config) +{ coh700(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP( ptblank2_map ) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &namcos12_boothack_state::ptblank2_map); +} -MACHINE_CONFIG_START(namcos12_boothack_state::tektagt) +void namcos12_boothack_state::tektagt(machine_config &config) +{ coh700(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP( tektagt_map ) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &namcos12_boothack_state::tektagt_map); +} -MACHINE_CONFIG_START(namcos12_boothack_state::golgo13) +void namcos12_boothack_state::golgo13(machine_config &config) +{ coh700(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_IO_MAP(golgo13_h8iomap) -MACHINE_CONFIG_END + m_sub->set_addrmap(AS_IO, &namcos12_boothack_state::golgo13_h8iomap); +} #define JVSCLOCK (XTAL(14'745'600)) void namcos12_state::jvsmap(address_map &map) @@ -1827,20 +1823,21 @@ void namcos12_state::jvsiomap(address_map &map) } -MACHINE_CONFIG_START(namcos12_boothack_state::truckk) +void namcos12_boothack_state::truckk(machine_config &config) +{ coh700(config); // Timer at 115200*16 for the jvs serial clock subdevice<h8_sci_device>("sub:sci0")->set_external_clock_period(attotime::from_hz(JVSCLOCK/8)); - MCFG_DEVICE_ADD("iocpu", H83334, JVSCLOCK ) - MCFG_DEVICE_PROGRAM_MAP( jvsmap ) - MCFG_DEVICE_IO_MAP( jvsiomap ) + h83334_device &iocpu(H83334(config, "iocpu", JVSCLOCK)); + iocpu.set_addrmap(AS_PROGRAM, &namcos12_boothack_state::jvsmap); + iocpu.set_addrmap(AS_IO, &namcos12_boothack_state::jvsiomap); subdevice<h8_sci_device>("iocpu:sci0")->tx_handler().set("sub:sci0", FUNC(h8_sci_device::rx_w)); subdevice<h8_sci_device>("sub:sci0")->tx_handler().set("iocpu:sci0", FUNC(h8_sci_device::rx_w)); - MCFG_QUANTUM_TIME(attotime::from_hz(2*115200)) -MACHINE_CONFIG_END + config.m_minimum_quantum = attotime::from_hz(2*115200); +} READ16_MEMBER(namcos12_state::iob_p4_r) { @@ -1898,45 +1895,45 @@ void namcos12_state::plarailjvsiomap(address_map &map) map(h8_device::ADC_2, h8_device::ADC_2).noprw(); } -MACHINE_CONFIG_START(namcos12_boothack_state::technodr) +void namcos12_boothack_state::technodr(machine_config &config) +{ coh700(config); // Timer at 115200*16 for the jvs serial clock subdevice<h8_sci_device>("sub:sci0")->set_external_clock_period(attotime::from_hz(JVSCLOCK/8)); // modify H8/3002 map to omit direct-connected controls - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_PROGRAM_MAP(s12h8rwjvsmap) - MCFG_DEVICE_IO_MAP(s12h8jvsiomap) + m_sub->set_addrmap(AS_PROGRAM, &namcos12_boothack_state::s12h8rwjvsmap); + m_sub->set_addrmap(AS_IO, &namcos12_boothack_state::s12h8jvsiomap); - MCFG_DEVICE_ADD("iocpu", H83334, JVSCLOCK ) - MCFG_DEVICE_PROGRAM_MAP( tdjvsmap ) - MCFG_DEVICE_IO_MAP( tdjvsiomap ) + h83334_device &iocpu(H83334(config, "iocpu", JVSCLOCK)); + iocpu.set_addrmap(AS_PROGRAM, &namcos12_boothack_state::tdjvsmap); + iocpu.set_addrmap(AS_IO, &namcos12_boothack_state::tdjvsiomap); subdevice<h8_sci_device>("iocpu:sci0")->tx_handler().set("sub:sci0", FUNC(h8_sci_device::rx_w)); subdevice<h8_sci_device>("sub:sci0")->tx_handler().set("iocpu:sci0", FUNC(h8_sci_device::rx_w)); - MCFG_QUANTUM_TIME(attotime::from_hz(2*115200)) -MACHINE_CONFIG_END + config.m_minimum_quantum = attotime::from_hz(2*115200); +} -MACHINE_CONFIG_START(namcos12_boothack_state::aplarail) +void namcos12_boothack_state::aplarail(machine_config &config) +{ coh700(config); // Timer at 115200*16 for the jvs serial clock subdevice<h8_sci_device>("sub:sci0")->set_external_clock_period(attotime::from_hz(JVSCLOCK/8)); // modify H8/3002 map to omit direct-connected controls - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_PROGRAM_MAP(s12h8rwjvsmap) - MCFG_DEVICE_IO_MAP(s12h8railiomap) + m_sub->set_addrmap(AS_PROGRAM, &namcos12_boothack_state::s12h8rwjvsmap); + m_sub->set_addrmap(AS_IO, &namcos12_boothack_state::s12h8railiomap); - MCFG_DEVICE_ADD("iocpu", H83334, JVSCLOCK ) - MCFG_DEVICE_PROGRAM_MAP( plarailjvsmap ) - MCFG_DEVICE_IO_MAP( plarailjvsiomap ) + h83334_device &iocpu(H83334(config, "iocpu", JVSCLOCK)); + iocpu.set_addrmap(AS_PROGRAM, &namcos12_boothack_state::plarailjvsmap); + iocpu.set_addrmap(AS_IO, &namcos12_boothack_state::plarailjvsiomap); subdevice<h8_sci_device>("iocpu:sci0")->tx_handler().set("sub:sci0", FUNC(h8_sci_device::rx_w)); subdevice<h8_sci_device>("sub:sci0")->tx_handler().set("iocpu:sci0", FUNC(h8_sci_device::rx_w)); - MCFG_QUANTUM_TIME(attotime::from_hz(2*115200)) -MACHINE_CONFIG_END + config.m_minimum_quantum = attotime::from_hz(2*115200); +} static INPUT_PORTS_START( namcos12 ) PORT_START("DSW") |