summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/vectrex.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/vectrex.cpp')
-rw-r--r--src/mame/drivers/vectrex.cpp85
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)