summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/cabal.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/cabal.cpp')
-rw-r--r--src/mame/drivers/cabal.cpp113
1 files changed, 56 insertions, 57 deletions
diff --git a/src/mame/drivers/cabal.cpp b/src/mame/drivers/cabal.cpp
index 81c28ec9354..3b8ecee8592 100644
--- a/src/mame/drivers/cabal.cpp
+++ b/src/mame/drivers/cabal.cpp
@@ -501,28 +501,28 @@ static GFXDECODE_START( gfx_cabal )
GFXDECODE_END
-MACHINE_CONFIG_START(cabal_state::cabal)
-
+void cabal_state::cabal(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, XTAL(20'000'000)/2) /* verified on pcb */
- MCFG_DEVICE_PROGRAM_MAP(main_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cabal_state, irq1_line_hold)
+ M68000(config, m_maincpu, XTAL(20'000'000)/2); /* verified on pcb */
+ m_maincpu->set_addrmap(AS_PROGRAM, &cabal_state::main_map);
+ m_maincpu->set_vblank_int("screen", FUNC(cabal_state::irq1_line_hold));
- MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545)) /* verified on pcb */
- MCFG_DEVICE_PROGRAM_MAP(sound_map)
- MCFG_DEVICE_OPCODES_MAP(sound_decrypted_opcodes_map)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("seibu_sound", seibu_sound_device, im0_vector_cb)
+ Z80(config, m_audiocpu, XTAL(3'579'545)); /* verified on pcb */
+ m_audiocpu->set_addrmap(AS_PROGRAM, &cabal_state::sound_map);
+ m_audiocpu->set_addrmap(AS_OPCODES, &cabal_state::sound_decrypted_opcodes_map);
+ m_audiocpu->set_irq_acknowledge_callback("seibu_sound", FUNC(seibu_sound_device::im0_vector_cb));
SEI80BU(config, "sei80bu", 0).set_device_rom_tag("audiocpu");
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(59.60) /* verified on pcb */
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */)
- MCFG_SCREEN_SIZE(256, 256)
- MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(cabal_state, screen_update)
- MCFG_SCREEN_PALETTE(m_palette)
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(59.60); /* verified on pcb */
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */
+ screen.set_size(256, 256);
+ screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
+ screen.set_screen_update(FUNC(cabal_state::screen_update));
+ screen.set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_cabal);
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 1024);
@@ -541,14 +541,13 @@ MACHINE_CONFIG_START(cabal_state::cabal)
ymsnd.add_route(ALL_OUTPUTS, "mono", 0.80);
SEIBU_ADPCM(config, m_adpcm1, 8000).add_route(ALL_OUTPUTS, "mono", 0.40); /* it should use the msm5205 */
-
SEIBU_ADPCM(config, m_adpcm2, 8000).add_route(ALL_OUTPUTS, "mono", 0.40); /* it should use the msm5205 */
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(cabal_state::cabalt)
+void cabal_state::cabalt(machine_config &config)
+{
cabal(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(trackball_main_map)
+ m_maincpu->set_addrmap(AS_PROGRAM, &cabal_state::trackball_main_map);
upd4701_device &upd4701l(UPD4701A(config, "upd4701l"));
upd4701l.set_portx_tag("IN0");
@@ -557,53 +556,53 @@ MACHINE_CONFIG_START(cabal_state::cabalt)
upd4701_device &upd4701h(UPD4701A(config, "upd4701h"));
upd4701h.set_portx_tag("IN2");
upd4701h.set_porty_tag("IN3");
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(cabal_state::cabalbl2)
+void cabal_state::cabalbl2(machine_config &config)
+{
cabal(config);
config.device_remove("sei80bu");
- MCFG_DEVICE_MODIFY("audiocpu")
- MCFG_DEVICE_PROGRAM_MAP(cabalbl2_sound_map)
- MCFG_DEVICE_OPCODES_MAP(cabalbl2_predecrypted_opcodes_map)
-MACHINE_CONFIG_END
+ m_audiocpu->set_addrmap(AS_PROGRAM, &cabal_state::cabalbl2_sound_map);
+ m_audiocpu->set_addrmap(AS_OPCODES, &cabal_state::cabalbl2_predecrypted_opcodes_map);
+}
/* the bootleg has different sound hardware (2 extra Z80s for ADPCM playback) */
-MACHINE_CONFIG_START(cabal_state::cabalbl)
-
+void cabal_state::cabalbl(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, XTAL(20'000'000)/2) /* verified on pcb */
- MCFG_DEVICE_PROGRAM_MAP(cabalbl_main_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cabal_state, irq1_line_hold)
+ M68000(config, m_maincpu, XTAL(20'000'000)/2); /* verified on pcb */
+ m_maincpu->set_addrmap(AS_PROGRAM, &cabal_state::cabalbl_main_map);
+ m_maincpu->set_vblank_int("screen", FUNC(cabal_state::irq1_line_hold));
- MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545)) /* verified on pcb */
- MCFG_DEVICE_PROGRAM_MAP(cabalbl_sound_map)
+ Z80(config, m_audiocpu, XTAL(3'579'545)); /* verified on pcb */
+ m_audiocpu->set_addrmap(AS_PROGRAM, &cabal_state::cabalbl_sound_map);
/* there are 2x z80s for the ADPCM */
- MCFG_DEVICE_ADD("adpcm_1", Z80, XTAL(3'579'545)) /* verified on pcb */
- MCFG_DEVICE_PROGRAM_MAP(cabalbl_talk1_map)
- MCFG_DEVICE_IO_MAP(cabalbl_talk1_portmap)
- MCFG_DEVICE_PERIODIC_INT_DRIVER(cabal_state, irq0_line_hold, 8000)
+ z80_device &adpcm_1(Z80(config, "adpcm_1", XTAL(3'579'545))); /* verified on pcb */
+ adpcm_1.set_addrmap(AS_PROGRAM, &cabal_state::cabalbl_talk1_map);
+ adpcm_1.set_addrmap(AS_IO, &cabal_state::cabalbl_talk1_portmap);
+ adpcm_1.set_periodic_int(FUNC(cabal_state::irq0_line_hold), attotime::from_hz(8000));
- MCFG_DEVICE_ADD("adpcm_2", Z80, XTAL(3'579'545)) /* verified on pcb */
- MCFG_DEVICE_PROGRAM_MAP(cabalbl_talk2_map)
- MCFG_DEVICE_IO_MAP(cabalbl_talk2_portmap)
- MCFG_DEVICE_PERIODIC_INT_DRIVER(cabal_state, irq0_line_hold, 8000)
+ z80_device &adpcm_2(Z80(config, "adpcm_2", XTAL(3'579'545))); /* verified on pcb */
+ adpcm_2.set_addrmap(AS_PROGRAM, &cabal_state::cabalbl_talk2_map);
+ adpcm_2.set_addrmap(AS_IO, &cabal_state::cabalbl_talk2_portmap);
+ adpcm_2.set_periodic_int(FUNC(cabal_state::irq0_line_hold), attotime::from_hz(8000));
- MCFG_QUANTUM_TIME(attotime::from_hz(600))
+ config.m_minimum_quantum = attotime::from_hz(600);
MCFG_MACHINE_START_OVERRIDE(cabal_state,cabalbl)
MCFG_MACHINE_RESET_OVERRIDE(cabal_state,cabalbl)
/* 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(256, 256)
- MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(cabal_state, screen_update)
- MCFG_SCREEN_PALETTE(m_palette)
+ 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(256, 256);
+ screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1);
+ screen.set_screen_update(FUNC(cabal_state::screen_update));
+ screen.set_palette(m_palette);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_cabal);
PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 1024);
@@ -619,14 +618,14 @@ MACHINE_CONFIG_START(cabal_state::cabalbl)
ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
ymsnd.add_route(ALL_OUTPUTS, "mono", 0.80);
- MCFG_DEVICE_ADD("msm1", MSM5205, XTAL(12'000'000)/32) /* verified on pcb (no resonator) */
- MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
+ MSM5205(config, m_msm1, XTAL(12'000'000)/32); /* verified on pcb (no resonator) */
+ m_msm1->set_prescaler_selector(msm5205_device::SEX_4B);
+ m_msm1->add_route(ALL_OUTPUTS, "mono", 0.60);
- MCFG_DEVICE_ADD("msm2", MSM5205, XTAL(12'000'000)/32) /* verified on pcb (no resonator)*/
- MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60)
-MACHINE_CONFIG_END
+ MSM5205(config, m_msm2, XTAL(12'000'000)/32); /* verified on pcb (no resonator)*/
+ m_msm2->set_prescaler_selector(msm5205_device::SEX_4B);
+ m_msm2->add_route(ALL_OUTPUTS, "mono", 0.60);
+}
ROM_START( cabal )
ROM_REGION( 0x50000, "maincpu", 0 ) /* 64k for cpu code */