diff options
Diffstat (limited to 'src/mame/drivers/lwings.cpp')
-rw-r--r-- | src/mame/drivers/lwings.cpp | 170 |
1 files changed, 89 insertions, 81 deletions
diff --git a/src/mame/drivers/lwings.cpp b/src/mame/drivers/lwings.cpp index f96736b6c7e..251394647bb 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; } -void lwings_state::lwings(machine_config &config) -{ +MACHINE_CONFIG_START(lwings_state::lwings) + /* basic machine hardware */ - 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("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_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? + 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?? WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - 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); + 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) + PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 1024); /* sound hardware */ @@ -965,45 +965,48 @@ void lwings_state::lwings(machine_config &config) GENERIC_LATCH_8(config, m_soundlatch); - 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); -} + 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) -void lwings_state::fball(machine_config &config) -{ /* basic machine hardware */ - 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("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_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)); + 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) WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - 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); + 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) + PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 1024); /* sound hardware */ @@ -1011,60 +1014,65 @@ void lwings_state::fball(machine_config &config) GENERIC_LATCH_8(config, m_soundlatch); - 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); -} + 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) -void lwings_state::trojan(machine_config &config) -{ +MACHINE_CONFIG_END + + +MACHINE_CONFIG_START(lwings_state::trojan) lwings(config); /* basic machine hardware */ - 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("maincpu") + MCFG_DEVICE_CLOCK(XTAL(12'000'000)/4) /* verified on PCB */ + MCFG_DEVICE_PROGRAM_MAP(trojan_map) - m_soundcpu->set_clock(XTAL(12'000'000)/4); /* verified on PCB */ + MCFG_DEVICE_MODIFY("soundcpu") + MCFG_DEVICE_CLOCK(XTAL(12'000'000)/4) /* verified on PCB */ - 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)); + 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) /* video hardware */ - m_gfxdecode->set_info(gfx_trojan); + MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_trojan) MCFG_VIDEO_START_OVERRIDE(lwings_state,trojan) - subdevice<screen_device>("screen")->set_screen_update(FUNC(lwings_state::screen_update_trojan)); + MCFG_SCREEN_MODIFY("screen") + MCFG_SCREEN_UPDATE_DRIVER(lwings_state, screen_update_trojan) /* sound hardware */ + GENERIC_LATCH_8(config, "soundlatch2"); - 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); -} + 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 -void lwings_state::avengers(machine_config &config) -{ +MACHINE_CONFIG_START(lwings_state::avengers) trojan(config); /* basic machine hardware */ - 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("maincpu") + MCFG_DEVICE_PROGRAM_MAP(avengers_map) + MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lwings_state, avengers_interrupt) // RST 38h triggered by software - subdevice<cpu_device>("adpcm")->set_addrmap(AS_IO, &lwings_state::avengers_adpcm_io_map); + MCFG_DEVICE_MODIFY("adpcm") + MCFG_DEVICE_IO_MAP(avengers_adpcm_io_map) /* video hardware */ MCFG_VIDEO_START_OVERRIDE(lwings_state,avengers) -} +MACHINE_CONFIG_END -void lwings_state::avengersb(machine_config &config) -{ +MACHINE_CONFIG_START(lwings_state::avengersb) avengers(config); /* video hardware */ MCFG_VIDEO_START_OVERRIDE(lwings_state,avengersb) -} +MACHINE_CONFIG_END /************************************* |