summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/lwings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/lwings.cpp')
-rw-r--r--src/mame/drivers/lwings.cpp170
1 files changed, 81 insertions, 89 deletions
diff --git a/src/mame/drivers/lwings.cpp b/src/mame/drivers/lwings.cpp
index 251394647bb..f96736b6c7e 100644
--- a/src/mame/drivers/lwings.cpp
+++ b/src/mame/drivers/lwings.cpp
@@ -931,33 +931,33 @@ void lwings_state::machine_reset()
m_adpcm = 0;
}
-MACHINE_CONFIG_START(lwings_state::lwings)
-
+void lwings_state::lwings(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2) /* verified on PCB */
- MCFG_DEVICE_PROGRAM_MAP(lwings_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lwings_state, lwings_interrupt)
+ Z80(config, m_maincpu, XTAL(12'000'000)/2); /* verified on PCB */
+ m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::lwings_map);
+ m_maincpu->set_vblank_int("screen", FUNC(lwings_state::lwings_interrupt));
- MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(12'000'000)/4) /* verified on PCB */
- MCFG_DEVICE_PROGRAM_MAP(lwings_sound_map)
- MCFG_DEVICE_PERIODIC_INT_DRIVER(lwings_state, irq0_line_hold, 222) // approximation from pcb music recording - where is the frequency actually derived from??
+ Z80(config, m_soundcpu, XTAL(12'000'000)/4); /* verified on PCB */
+ m_soundcpu->set_addrmap(AS_PROGRAM, &lwings_state::lwings_sound_map);
+ m_soundcpu->set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(222));
+ // above frequency is an approximation from PCB music recording - where is the frequency actually derived from?
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM8)
-
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(32*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(lwings_state, screen_update_lwings)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising))
- MCFG_SCREEN_PALETTE(m_palette)
-
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_lwings)
-
+ BUFFERED_SPRITERAM8(config, m_spriteram);
+
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ screen.set_size(32*8, 32*8);
+ screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1);
+ screen.set_screen_update(FUNC(lwings_state::screen_update_lwings));
+ screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
+ screen.set_palette(m_palette);
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_lwings);
PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 1024);
/* sound hardware */
@@ -965,48 +965,45 @@ MACHINE_CONFIG_START(lwings_state::lwings)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("2203a", YM2203, XTAL(12'000'000)/8) /* verified on PCB */
- MCFG_SOUND_ROUTE(0, "mono", 0.20)
- MCFG_SOUND_ROUTE(1, "mono", 0.20)
- MCFG_SOUND_ROUTE(2, "mono", 0.20)
- MCFG_SOUND_ROUTE(3, "mono", 0.10)
-
- MCFG_DEVICE_ADD("2203b", YM2203, XTAL(12'000'000)/8) /* verified on PCB */
- MCFG_SOUND_ROUTE(0, "mono", 0.20)
- MCFG_SOUND_ROUTE(1, "mono", 0.20)
- MCFG_SOUND_ROUTE(2, "mono", 0.20)
- MCFG_SOUND_ROUTE(3, "mono", 0.10)
-MACHINE_CONFIG_END
-
-
-
-MACHINE_CONFIG_START(lwings_state::fball)
+ ym2203_device &ym2203a(YM2203(config, "2203a", XTAL(12'000'000)/8)); /* verified on PCB */
+ ym2203a.add_route(0, "mono", 0.20);
+ ym2203a.add_route(1, "mono", 0.20);
+ ym2203a.add_route(2, "mono", 0.20);
+ ym2203a.add_route(3, "mono", 0.10);
+
+ ym2203_device &ym2203b(YM2203(config, "2203b", XTAL(12'000'000)/8)); /* verified on PCB */
+ ym2203b.add_route(0, "mono", 0.20);
+ ym2203b.add_route(1, "mono", 0.20);
+ ym2203b.add_route(2, "mono", 0.20);
+ ym2203b.add_route(3, "mono", 0.10);
+}
+void lwings_state::fball(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2)
- MCFG_DEVICE_PROGRAM_MAP(fball_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lwings_state, avengers_interrupt)
+ Z80(config, m_maincpu, XTAL(12'000'000)/2);
+ m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::fball_map);
+ m_maincpu->set_vblank_int("screen", FUNC(lwings_state::avengers_interrupt));
- MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(12'000'000)/4) // ?
- MCFG_DEVICE_PROGRAM_MAP(fball_sound_map)
-// MCFG_DEVICE_PERIODIC_INT_DRIVER(lwings_state, irq0_line_hold, 222)
+ Z80(config, m_soundcpu, XTAL(12'000'000)/4); // ?
+ m_soundcpu->set_addrmap(AS_PROGRAM, &lwings_state::fball_sound_map);
+// m_soundcpu->set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(222));
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM8)
-
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(60)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(32*8, 32*8)
- MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) // the 16-pixel black border on left edge is correct, test mode actually uses that area
- MCFG_SCREEN_UPDATE_DRIVER(lwings_state, screen_update_lwings)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising))
- MCFG_SCREEN_PALETTE(m_palette)
-
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_lwings)
-
+ BUFFERED_SPRITERAM8(config, m_spriteram);
+
+ screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
+ screen.set_refresh_hz(60);
+ screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ screen.set_size(32*8, 32*8);
+ screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1); // the 16-pixel black border on left edge is correct, test mode actually uses that area
+ screen.set_screen_update(FUNC(lwings_state::screen_update_lwings));
+ screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising));
+ screen.set_palette(m_palette);
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_lwings);
PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 1024);
/* sound hardware */
@@ -1014,65 +1011,60 @@ MACHINE_CONFIG_START(lwings_state::fball)
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(12'000'000)/12, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- MCFG_DEVICE_ADDRESS_MAP(0, fball_oki_map)
-
-MACHINE_CONFIG_END
-
+ okim6295_device &oki(OKIM6295(config, "oki", XTAL(12'000'000)/12, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified
+ oki.add_route(ALL_OUTPUTS, "mono", 1.0);
+ oki.set_addrmap(0, &lwings_state::fball_oki_map);
+}
-MACHINE_CONFIG_START(lwings_state::trojan)
+void lwings_state::trojan(machine_config &config)
+{
lwings(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_CLOCK(XTAL(12'000'000)/4) /* verified on PCB */
- MCFG_DEVICE_PROGRAM_MAP(trojan_map)
+ m_maincpu->set_clock(XTAL(12'000'000)/4); /* verified on PCB */
+ m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::trojan_map);
- MCFG_DEVICE_MODIFY("soundcpu")
- MCFG_DEVICE_CLOCK(XTAL(12'000'000)/4) /* verified on PCB */
+ m_soundcpu->set_clock(XTAL(12'000'000)/4); /* verified on PCB */
- MCFG_DEVICE_ADD("adpcm", Z80, XTAL(12'000'000)/4) /* verified on PCB */
- MCFG_DEVICE_PROGRAM_MAP(trojan_adpcm_map)
- MCFG_DEVICE_IO_MAP(trojan_adpcm_io_map)
- MCFG_DEVICE_PERIODIC_INT_DRIVER(lwings_state, irq0_line_hold, 4000)
+ z80_device &adpcm(Z80(config, "adpcm", XTAL(12'000'000)/4)); /* verified on PCB */
+ adpcm.set_addrmap(AS_PROGRAM, &lwings_state::trojan_adpcm_map);
+ adpcm.set_addrmap(AS_IO, &lwings_state::trojan_adpcm_io_map);
+ adpcm.set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(4000));
/* video hardware */
- MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_trojan)
+ m_gfxdecode->set_info(gfx_trojan);
MCFG_VIDEO_START_OVERRIDE(lwings_state,trojan)
- MCFG_SCREEN_MODIFY("screen")
- MCFG_SCREEN_UPDATE_DRIVER(lwings_state, screen_update_trojan)
+ subdevice<screen_device>("screen")->set_screen_update(FUNC(lwings_state::screen_update_trojan));
/* sound hardware */
-
GENERIC_LATCH_8(config, "soundlatch2");
- MCFG_DEVICE_ADD("5205", MSM5205, XTAL(384'000)) /* verified on PCB */
- MCFG_MSM5205_PRESCALER_SELECTOR(SEX_4B) /* slave mode */
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50)
-MACHINE_CONFIG_END
+ MSM5205(config, m_msm, XTAL(384'000)); /* verified on PCB */
+ m_msm->set_prescaler_selector(msm5205_device::SEX_4B); /* slave mode */
+ m_msm->add_route(ALL_OUTPUTS, "mono", 0.50);
+}
-MACHINE_CONFIG_START(lwings_state::avengers)
+void lwings_state::avengers(machine_config &config)
+{
trojan(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(avengers_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lwings_state, avengers_interrupt) // RST 38h triggered by software
+ m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::avengers_map);
+ m_maincpu->set_vblank_int("screen", FUNC(lwings_state::avengers_interrupt)); // RST 38h triggered by software
- MCFG_DEVICE_MODIFY("adpcm")
- MCFG_DEVICE_IO_MAP(avengers_adpcm_io_map)
+ subdevice<cpu_device>("adpcm")->set_addrmap(AS_IO, &lwings_state::avengers_adpcm_io_map);
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(lwings_state,avengers)
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(lwings_state::avengersb)
+void lwings_state::avengersb(machine_config &config)
+{
avengers(config);
/* video hardware */
MCFG_VIDEO_START_OVERRIDE(lwings_state,avengersb)
-MACHINE_CONFIG_END
+}
/*************************************