diff options
Diffstat (limited to 'src/mame/drivers/vectrex.cpp')
-rw-r--r-- | src/mame/drivers/vectrex.cpp | 85 |
1 files changed, 43 insertions, 42 deletions
diff --git a/src/mame/drivers/vectrex.cpp b/src/mame/drivers/vectrex.cpp index e5944eea796..158ce9e9208 100644 --- a/src/mame/drivers/vectrex.cpp +++ b/src/mame/drivers/vectrex.cpp @@ -90,59 +90,61 @@ static INPUT_PORTS_START(vectrex) INPUT_PORTS_END -static void vectrex_cart(device_slot_interface &device) +void vectrex_base_state::vectrex_cart(device_slot_interface &device) { device.option_add_internal("vec_rom", VECTREX_ROM_STD); device.option_add_internal("vec_rom64k", VECTREX_ROM_64K); device.option_add_internal("vec_sram", VECTREX_ROM_SRAM); } -MACHINE_CONFIG_START(vectrex_base_state::vectrex_base) - /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", MC6809, 6_MHz_XTAL) // 68A09 +void vectrex_base_state::vectrex_base(machine_config &config) +{ + MC6809(config, m_maincpu, 6_MHz_XTAL); // 68A09 /* video hardware */ - MCFG_VECTOR_ADD("vector") - MCFG_SCREEN_ADD("screen", VECTOR) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_SIZE(400, 300) - MCFG_SCREEN_VISIBLE_AREA(0, 399, 0, 299) - MCFG_SCREEN_UPDATE_DRIVER(vectrex_base_state, screen_update_vectrex) + VECTOR(config, m_vector, 0); + SCREEN(config, m_screen, SCREEN_TYPE_VECTOR); + m_screen->set_refresh_hz(60); + m_screen->set_size(400, 300); + m_screen->set_visarea(0, 399, 0, 299); + m_screen->set_screen_update(FUNC(vectrex_base_state::screen_update_vectrex)); /* sound hardware */ SPEAKER(config, "speaker").front_center(); - MCFG_DEVICE_ADD("dac", MC1408, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.25) // mc1408.ic301 (also used for vector generation) - 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) + MC1408(config, m_dac, 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // mc1408.ic301 (also used for vector generation) + voltage_regulator_device &vreg(VOLTAGE_REGULATOR(config, "vref", 0)); + vreg.set_output(5.0); + vreg.add_route(0, "dac", 1.0, DAC_VREF_POS_INPUT); + vreg.add_route(0, "dac", -1.0, DAC_VREF_NEG_INPUT); - MCFG_DEVICE_ADD("ay8912", AY8912, 6_MHz_XTAL / 4) - MCFG_AY8910_PORT_A_READ_CB(IOPORT("BUTTONS")) - MCFG_AY8910_PORT_A_WRITE_CB(WRITE8(*this, vectrex_base_state, vectrex_psg_port_w)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) + AY8912(config, m_ay8912, 6_MHz_XTAL / 4); + m_ay8912->port_a_read_callback().set_ioport("BUTTONS"); + m_ay8912->port_a_write_callback().set(FUNC(vectrex_base_state::vectrex_psg_port_w)); + m_ay8912->add_route(ALL_OUTPUTS, "speaker", 0.2); /* via */ - MCFG_DEVICE_ADD("via6522_0", VIA6522, 6_MHz_XTAL / 4) - MCFG_VIA6522_READPA_HANDLER(READ8(*this, vectrex_base_state, vectrex_via_pa_r)) - MCFG_VIA6522_READPB_HANDLER(READ8(*this, vectrex_base_state, vectrex_via_pb_r)) - MCFG_VIA6522_WRITEPA_HANDLER(WRITE8(*this, vectrex_base_state, v_via_pa_w)) - MCFG_VIA6522_WRITEPB_HANDLER(WRITE8(*this, vectrex_base_state, v_via_pb_w)) - MCFG_VIA6522_CA2_HANDLER(WRITELINE(*this, vectrex_base_state, v_via_ca2_w)) - MCFG_VIA6522_CB2_HANDLER(WRITELINE(*this, vectrex_base_state, v_via_cb2_w)) - MCFG_VIA6522_IRQ_HANDLER(WRITELINE(*this, vectrex_base_state, vectrex_via_irq)) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(vectrex_state::vectrex) + VIA6522(config, m_via6522_0, 6_MHz_XTAL / 4); + m_via6522_0->readpa_handler().set(FUNC(vectrex_base_state::vectrex_via_pa_r)); + m_via6522_0->readpb_handler().set(FUNC(vectrex_base_state::vectrex_via_pb_r)); + m_via6522_0->writepa_handler().set(FUNC(vectrex_base_state::v_via_pa_w)); + m_via6522_0->writepb_handler().set(FUNC(vectrex_base_state::v_via_pb_w)); + m_via6522_0->ca2_handler().set(FUNC(vectrex_base_state::v_via_ca2_w)); + m_via6522_0->cb2_handler().set(FUNC(vectrex_base_state::v_via_cb2_w)); + m_via6522_0->irq_handler().set(FUNC(vectrex_base_state::vectrex_via_irq)); +} + +void vectrex_state::vectrex(machine_config &config) +{ vectrex_base(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(vectrex_map) + m_maincpu->set_addrmap(AS_PROGRAM, &vectrex_state::vectrex_map); - /* cartridge */ - MCFG_VECTREX_CARTRIDGE_ADD("cartslot", vectrex_cart, nullptr) + vectrex_cart_slot_device &slot(VECTREX_CART_SLOT(config, "cartslot", 0)); + vectrex_cart(slot); /* software lists */ - MCFG_SOFTWARE_LIST_ADD("cart_list","vectrex") -MACHINE_CONFIG_END + SOFTWARE_LIST(config, "cart_list").set_type("vectrex", SOFTWARE_LIST_ORIGINAL_SYSTEM); +} ROM_START(vectrex) ROM_REGION(0x2000,"maincpu", 0) @@ -224,17 +226,16 @@ static INPUT_PORTS_START(raaspec) INPUT_PORTS_END -MACHINE_CONFIG_START(raaspec_state::raaspec) +void raaspec_state::raaspec(machine_config &config) +{ vectrex_base(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(raaspec_map) - MCFG_NVRAM_ADD_0FILL("nvram") + m_maincpu->set_addrmap(AS_PROGRAM, &raaspec_state::raaspec_map); - /* via */ - MCFG_DEVICE_MODIFY("via6522_0") - MCFG_VIA6522_READPB_HANDLER(READ8(*this, raaspec_state, vectrex_s1_via_pb_r)) -MACHINE_CONFIG_END + NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); + + m_via6522_0->readpb_handler().set(FUNC(raaspec_state::vectrex_s1_via_pb_r)); +} ROM_START(raaspec) ROM_REGION(0x10000,"maincpu", 0) |