summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/40love.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/40love.cpp')
-rw-r--r--src/mame/drivers/40love.cpp147
1 files changed, 49 insertions, 98 deletions
diff --git a/src/mame/drivers/40love.cpp b/src/mame/drivers/40love.cpp
index 5d566abf5ad..e1fc7b48704 100644
--- a/src/mame/drivers/40love.cpp
+++ b/src/mame/drivers/40love.cpp
@@ -672,131 +672,82 @@ void fortyl_state::machine_reset()
m_snd_ctrl3 = 0;
}
-MACHINE_CONFIG_START(fortyl_state::_40love)
-
+void fortyl_state::common(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu",Z80,8000000/2) /* OK */
- MCFG_DEVICE_PROGRAM_MAP(_40love_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", fortyl_state, irq0_line_hold)
+ Z80(config, m_maincpu, 8000000/2);
+ m_maincpu->set_vblank_int("screen", FUNC(fortyl_state::irq0_line_hold));
- MCFG_DEVICE_ADD("audiocpu",Z80,8000000/2) /* OK */
- MCFG_DEVICE_PROGRAM_MAP(sound_map)
- MCFG_DEVICE_PERIODIC_INT_DRIVER(fortyl_state, irq0_line_hold, 2*60) /* source/number of IRQs is unknown */
+ Z80(config, m_audiocpu, 8000000/2);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &fortyl_state::sound_map);
+ m_audiocpu->set_periodic_int(FUNC(fortyl_state::irq0_line_hold), attotime::from_hz(2*60)); /* source/number of IRQs is unknown */
GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set("soundnmi", FUNC(input_merger_device::in_w<0>));
GENERIC_LATCH_8(config, m_soundlatch2);
- MCFG_INPUT_MERGER_ALL_HIGH("soundnmi")
- MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI))
+ INPUT_MERGER_ALL_HIGH(config, "soundnmi").output_handler().set_inputline("audiocpu", INPUT_LINE_NMI);
- MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU, 18432000/6) /* OK */
+ TAITO68705_MCU(config, m_bmcu, 18432000/6); /* OK */
- MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* high interleave to ensure proper synchronization of CPUs */
+ config.m_minimum_quantum = attotime::from_hz(6000); /* high interleave to ensure proper synchronization of CPUs */
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(128,128+255, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(fortyl_state, screen_update_fortyl)
- MCFG_SCREEN_PALETTE("palette")
-
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_40love)
- MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", "proms", 1024)
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
+ screen.set_size(64*8, 32*8);
+ screen.set_visarea(128,128+255, 2*8, 30*8-1);
+ screen.set_screen_update(FUNC(fortyl_state::screen_update_fortyl));
+ screen.set_palette(m_palette);
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_40love);
+ PALETTE(config, m_palette, 1024);
+ m_palette->set_prom_region("proms");
+ m_palette->set_init("palette", FUNC(palette_device::palette_init_RRRRGGGGBBBB_proms));
/* sound hardware */
SPEAKER(config, "speaker").front_center();
- MCFG_TA7630_ADD("ta7630")
+ TA7630(config, m_ta7630);
YM2149(config, m_ay, 2000000);
m_ay->port_a_write_callback().set(FUNC(fortyl_state::sound_control_2_w));
m_ay->port_b_write_callback().set(FUNC(fortyl_state::sound_control_3_w));
m_ay->add_route(ALL_OUTPUTS, "speaker", 0.1);
- MCFG_DEVICE_ADD("msm", MSM5232, 8000000/4)
- MCFG_MSM5232_SET_CAPACITORS(1.0e-6, 1.0e-6, 1.0e-6, 1.0e-6, 1.0e-6, 1.0e-6, 1.0e-6, 1.0e-6) /* 1.0 uF capacitors (verified on real PCB) */
- MCFG_SOUND_ROUTE(0, "speaker", 1.0) // pin 28 2'-1
- MCFG_SOUND_ROUTE(1, "speaker", 1.0) // pin 29 4'-1
- MCFG_SOUND_ROUTE(2, "speaker", 1.0) // pin 30 8'-1
- MCFG_SOUND_ROUTE(3, "speaker", 1.0) // pin 31 16'-1
- MCFG_SOUND_ROUTE(4, "speaker", 1.0) // pin 36 2'-2
- MCFG_SOUND_ROUTE(5, "speaker", 1.0) // pin 35 4'-2
- MCFG_SOUND_ROUTE(6, "speaker", 1.0) // pin 34 8'-2
- MCFG_SOUND_ROUTE(7, "speaker", 1.0) // pin 33 16'-2
+ MSM5232(config, m_msm, 8000000/4);
+ m_msm->set_capacitors(1.0e-6, 1.0e-6, 1.0e-6, 1.0e-6, 1.0e-6, 1.0e-6, 1.0e-6, 1.0e-6); /* 1.0 uF capacitors (verified on real PCB) */
+ m_msm->add_route(0, "speaker", 1.0); // pin 28 2'-1
+ m_msm->add_route(1, "speaker", 1.0); // pin 29 4'-1
+ m_msm->add_route(2, "speaker", 1.0); // pin 30 8'-1
+ m_msm->add_route(3, "speaker", 1.0); // pin 31 16'-1
+ m_msm->add_route(4, "speaker", 1.0); // pin 36 2'-2
+ m_msm->add_route(5, "speaker", 1.0); // pin 35 4'-2
+ m_msm->add_route(6, "speaker", 1.0); // pin 34 8'-2
+ m_msm->add_route(7, "speaker", 1.0); // pin 33 16'-2
// pin 1 SOLO 8' not mapped
// pin 2 SOLO 16' not mapped
// pin 22 Noise Output not mapped
- MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // unknown DAC
- 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)
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START(fortyl_state::undoukai)
-
- /* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu",Z80,8000000/2)
- MCFG_DEVICE_PROGRAM_MAP(undoukai_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", fortyl_state, irq0_line_hold)
-
- MCFG_DEVICE_ADD("audiocpu",Z80,8000000/2)
- MCFG_DEVICE_PROGRAM_MAP(sound_map)
- MCFG_DEVICE_PERIODIC_INT_DRIVER(fortyl_state, irq0_line_hold, 2*60) /* source/number of IRQs is unknown */
-
- GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set("soundnmi", FUNC(input_merger_device::in_w<0>));
-
- GENERIC_LATCH_8(config, m_soundlatch2);
-
- MCFG_INPUT_MERGER_ALL_HIGH("soundnmi")
- MCFG_INPUT_MERGER_OUTPUT_HANDLER(INPUTLINE("audiocpu", INPUT_LINE_NMI))
-
- MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU, 18432000/6)
-
- MCFG_QUANTUM_TIME(attotime::from_hz(6000))
-
- /* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_SIZE(64*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(128,128+255, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(fortyl_state, screen_update_fortyl)
- MCFG_SCREEN_PALETTE("palette")
-
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_40love)
- MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", "proms", 1024)
-
- /* sound hardware */
- SPEAKER(config, "speaker").front_center();
-
- MCFG_TA7630_ADD("ta7630")
-
- YM2149(config, m_ay, 2000000);
- m_ay->port_a_write_callback().set(FUNC(fortyl_state::sound_control_2_w));
- m_ay->port_b_write_callback().set(FUNC(fortyl_state::sound_control_3_w));
- m_ay->add_route(ALL_OUTPUTS, "speaker", 0.1);
+ DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.2); // unknown DAC
+ voltage_regulator_device &vref(VOLTAGE_REGULATOR(config, "vref", 0));
+ vref.set_output(5.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("msm", MSM5232, 8000000/4)
- MCFG_MSM5232_SET_CAPACITORS(1.0e-6, 1.0e-6, 1.0e-6, 1.0e-6, 1.0e-6, 1.0e-6, 1.0e-6, 1.0e-6) /* 1.0 uF capacitors (verified on real PCB) */
- MCFG_SOUND_ROUTE(0, "speaker", 1.0) // pin 28 2'-1
- MCFG_SOUND_ROUTE(1, "speaker", 1.0) // pin 29 4'-1
- MCFG_SOUND_ROUTE(2, "speaker", 1.0) // pin 30 8'-1
- MCFG_SOUND_ROUTE(3, "speaker", 1.0) // pin 31 16'-1
- MCFG_SOUND_ROUTE(4, "speaker", 1.0) // pin 36 2'-2
- MCFG_SOUND_ROUTE(5, "speaker", 1.0) // pin 35 4'-2
- MCFG_SOUND_ROUTE(6, "speaker", 1.0) // pin 34 8'-2
- MCFG_SOUND_ROUTE(7, "speaker", 1.0) // pin 33 16'-2
- // pin 1 SOLO 8' not mapped
- // pin 2 SOLO 16' not mapped
- // pin 22 Noise Output not mapped
+void fortyl_state::_40love(machine_config &config)
+{
+ common(config);
+ m_maincpu->set_addrmap(AS_PROGRAM, &fortyl_state::_40love_map);
+}
- MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 0.2) // unknown DAC
- 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)
-MACHINE_CONFIG_END
+void fortyl_state::undoukai(machine_config &config)
+{
+ common(config);
+ m_maincpu->set_addrmap(AS_PROGRAM, &fortyl_state::undoukai_map);
+}
/*******************************************************************************/