From 48a83d5c2f5734672571c251fe45bc7d889faba7 Mon Sep 17 00:00:00 2001 From: mooglyguy Date: Sun, 30 Dec 2018 13:23:51 +0100 Subject: [PATCH] -2203intf: Removed MCFG macro, nw -drivers/angelkds, argus, blktiger, chinagat, deadang, gaiden, goal92, himesiki, lastduel, lkage, megasys1, nmk16, pkscram, powerins, psychic5, sfkick, sidearms, splash, vigilant: Removed MACHINE_CONFIG macros, nw --- src/devices/sound/2203intf.h | 3 - src/mame/drivers/angelkds.cpp | 58 +- src/mame/drivers/argus.cpp | 170 +++--- src/mame/drivers/blktiger.cpp | 56 +- src/mame/drivers/chinagat.cpp | 125 ++-- src/mame/drivers/deadang.cpp | 85 ++- src/mame/drivers/gaiden.cpp | 165 +++--- src/mame/drivers/goal92.cpp | 52 +- src/mame/drivers/himesiki.cpp | 46 +- src/mame/drivers/lastduel.cpp | 101 ++-- src/mame/drivers/lkage.cpp | 117 ++-- src/mame/drivers/megasys1.cpp | 249 ++++---- src/mame/drivers/nmk16.cpp | 1025 ++++++++++++++++----------------- src/mame/drivers/pkscram.cpp | 34 +- src/mame/drivers/powerins.cpp | 84 ++- src/mame/drivers/psychic5.cpp | 106 ++-- src/mame/drivers/sfkick.cpp | 34 +- src/mame/drivers/sidearms.cpp | 162 +++--- src/mame/drivers/splash.cpp | 145 +++-- src/mame/drivers/vigilant.cpp | 203 ++++--- src/mame/includes/deadang.h | 6 +- src/mame/includes/megasys1.h | 2 + src/mame/includes/nmk16.h | 13 +- src/mame/includes/powerins.h | 2 + 24 files changed, 1504 insertions(+), 1539 deletions(-) diff --git a/src/devices/sound/2203intf.h b/src/devices/sound/2203intf.h index 5020702707b..93e09d9a9dc 100644 --- a/src/devices/sound/2203intf.h +++ b/src/devices/sound/2203intf.h @@ -11,9 +11,6 @@ struct ssg_callbacks; -#define MCFG_YM2203_IRQ_HANDLER(cb) \ - downcast(*device).set_irq_handler((DEVCB_##cb)); - class ym2203_device : public ay8910_device { public: diff --git a/src/mame/drivers/angelkds.cpp b/src/mame/drivers/angelkds.cpp index a9848d90c41..61d9033b961 100644 --- a/src/mame/drivers/angelkds.cpp +++ b/src/mame/drivers/angelkds.cpp @@ -517,16 +517,16 @@ void angelkds_state::machine_reset() m_bgtopbank = 0; } -MACHINE_CONFIG_START(angelkds_state::angelkds) +void angelkds_state::angelkds(machine_config &config) +{ + Z80(config, m_maincpu, XTAL(6'000'000)); + m_maincpu->set_addrmap(AS_PROGRAM, &angelkds_state::main_map); + m_maincpu->set_addrmap(AS_IO, &angelkds_state::main_portmap); + m_maincpu->set_vblank_int("screen", FUNC(angelkds_state::irq0_line_hold)); - MCFG_DEVICE_ADD(m_maincpu, Z80, XTAL(6'000'000)) - MCFG_DEVICE_PROGRAM_MAP(main_map) - MCFG_DEVICE_IO_MAP(main_portmap) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", angelkds_state, irq0_line_hold) - - MCFG_DEVICE_ADD("sub", Z80, XTAL(4'000'000)) - MCFG_DEVICE_PROGRAM_MAP(sub_map) - MCFG_DEVICE_IO_MAP(sub_portmap) + Z80(config, m_subcpu, XTAL(4'000'000)); + m_subcpu->set_addrmap(AS_PROGRAM, &angelkds_state::sub_map); + m_subcpu->set_addrmap(AS_IO, &angelkds_state::sub_portmap); i8255_device &ppi0(I8255A(config, "ppi8255_0")); ppi0.in_pa_callback().set_ioport("I40"); @@ -539,35 +539,35 @@ MACHINE_CONFIG_START(angelkds_state::angelkds) ppi1.in_pb_callback().set_ioport("I81"); ppi1.in_pc_callback().set_ioport("I82"); - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) + config.m_minimum_quantum = attotime::from_hz(6000); /* video hardware */ - 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(angelkds_state, screen_update_angelkds) - MCFG_SCREEN_PALETTE("palette") + 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(angelkds_state::screen_update_angelkds)); + screen.set_palette("palette"); GFXDECODE(config, m_gfxdecode, "palette", gfx_angelkds); PALETTE(config, "palette").set_format(palette_device::xBGR_444, 0x100); SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("ym1", YM2203, XTAL(4'000'000)) - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("sub", 0)) - MCFG_SOUND_ROUTE(0, "mono", 0.65) - MCFG_SOUND_ROUTE(1, "mono", 0.65) - MCFG_SOUND_ROUTE(2, "mono", 0.65) - MCFG_SOUND_ROUTE(3, "mono", 0.45) + ym2203_device &ym1(YM2203(config, "ym1", XTAL(4'000'000))); + ym1.irq_handler().set_inputline(m_subcpu, 0); + ym1.add_route(0, "mono", 0.65); + ym1.add_route(1, "mono", 0.65); + ym1.add_route(2, "mono", 0.65); + ym1.add_route(3, "mono", 0.45); - MCFG_DEVICE_ADD("ym2", YM2203, XTAL(4'000'000)) - MCFG_SOUND_ROUTE(0, "mono", 0.65) - MCFG_SOUND_ROUTE(1, "mono", 0.65) - MCFG_SOUND_ROUTE(2, "mono", 0.65) - MCFG_SOUND_ROUTE(3, "mono", 0.45) -MACHINE_CONFIG_END + ym2203_device &ym2(YM2203(config, "ym2", XTAL(4'000'000))); + ym2.add_route(0, "mono", 0.65); + ym2.add_route(1, "mono", 0.65); + ym2.add_route(2, "mono", 0.65); + ym2.add_route(3, "mono", 0.45); +} void angelkds_state::spcpostn(machine_config &config) { diff --git a/src/mame/drivers/argus.cpp b/src/mame/drivers/argus.cpp index 9ccbf38d2b1..682dd01889d 100644 --- a/src/mame/drivers/argus.cpp +++ b/src/mame/drivers/argus.cpp @@ -483,31 +483,31 @@ static GFXDECODE_START( gfx_butasan ) GFXDECODE_END -MACHINE_CONFIG_START(argus_state::argus) - +void argus_state::argus(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 5000000) /* 4 MHz */ - MCFG_DEVICE_PROGRAM_MAP(argus_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", argus_state, scanline, "screen", 0, 1) + Z80(config, m_maincpu, 5000000); /* 4 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &argus_state::argus_map); + TIMER(config, "scantimer").configure_scanline(FUNC(argus_state::scanline), "screen", 0, 1); - MCFG_DEVICE_ADD("audiocpu", Z80, 5000000) - MCFG_DEVICE_PROGRAM_MAP(sound_map_a) - MCFG_DEVICE_IO_MAP(sound_portmap_1) + Z80(config, m_audiocpu, 5000000); + m_audiocpu->set_addrmap(AS_PROGRAM, &argus_state::sound_map_a); + m_audiocpu->set_addrmap(AS_IO, &argus_state::sound_portmap_1); - MCFG_QUANTUM_TIME(attotime::from_hz(600)) + config.m_minimum_quantum = attotime::from_hz(600); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(54) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* This value is referred to psychic5 driver */) - MCFG_SCREEN_SIZE(32*16, 32*16) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(argus_state, screen_update_argus) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(54); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); /* This value is referred to psychic5 driver */ + m_screen->set_size(32*16, 32*16); + m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(argus_state::screen_update_argus)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_argus) - MCFG_PALETTE_ADD("palette", 896) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_argus); + PALETTE(config, m_palette).set_entries(896); - MCFG_DEVICE_ADD("blend", JALECO_BLEND, 0) + JALECO_BLEND(config, m_blend, 0); MCFG_VIDEO_START_OVERRIDE(argus_state,argus) MCFG_VIDEO_RESET_OVERRIDE(argus_state,argus) @@ -517,39 +517,39 @@ MACHINE_CONFIG_START(argus_state::argus) GENERIC_LATCH_8(config, "soundlatch"); - MCFG_DEVICE_ADD("ym1", YM2203, 6000000 / 4) - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) - MCFG_SOUND_ROUTE(0, "mono", 0.15) - MCFG_SOUND_ROUTE(1, "mono", 0.15) - MCFG_SOUND_ROUTE(2, "mono", 0.15) - MCFG_SOUND_ROUTE(3, "mono", 0.50) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(argus_state::valtric) + ym2203_device &ym1(YM2203(config, "ym1", 6000000 / 4)); + ym1.irq_handler().set_inputline(m_audiocpu, 0); + ym1.add_route(0, "mono", 0.15); + ym1.add_route(1, "mono", 0.15); + ym1.add_route(2, "mono", 0.15); + ym1.add_route(3, "mono", 0.50); +} +void argus_state::valtric(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 5000000) /* 5 MHz */ - MCFG_DEVICE_PROGRAM_MAP(valtric_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", argus_state, scanline, "screen", 0, 1) + Z80(config, m_maincpu, 5000000); /* 5 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &argus_state::valtric_map); + TIMER(config, "scantimer").configure_scanline(FUNC(argus_state::scanline), "screen", 0, 1); - MCFG_DEVICE_ADD("audiocpu", Z80, 5000000) - MCFG_DEVICE_PROGRAM_MAP(sound_map_a) - MCFG_DEVICE_IO_MAP(sound_portmap_2) + Z80(config, m_audiocpu, 5000000); + m_audiocpu->set_addrmap(AS_PROGRAM, &argus_state::sound_map_a); + m_audiocpu->set_addrmap(AS_IO, &argus_state::sound_portmap_2); - MCFG_QUANTUM_TIME(attotime::from_hz(600)) + config.m_minimum_quantum = attotime::from_hz(600); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(54) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* This value is referred to psychic5 driver */) - MCFG_SCREEN_SIZE(32*16, 32*16) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(argus_state, screen_update_valtric) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(54); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); /* This value is referred to psychic5 driver */ + m_screen->set_size(32*16, 32*16); + m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(argus_state::screen_update_valtric)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_valtric) - MCFG_PALETTE_ADD("palette", 768) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_valtric); + PALETTE(config, m_palette).set_entries(768); - MCFG_DEVICE_ADD("blend", JALECO_BLEND, 0) + JALECO_BLEND(config, m_blend, 0); MCFG_VIDEO_START_OVERRIDE(argus_state,valtric) MCFG_VIDEO_RESET_OVERRIDE(argus_state,valtric) @@ -559,45 +559,45 @@ MACHINE_CONFIG_START(argus_state::valtric) GENERIC_LATCH_8(config, "soundlatch"); - MCFG_DEVICE_ADD("ym1", YM2203, 6000000 / 4) - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) - MCFG_SOUND_ROUTE(0, "mono", 0.15) - MCFG_SOUND_ROUTE(1, "mono", 0.15) - MCFG_SOUND_ROUTE(2, "mono", 0.15) - MCFG_SOUND_ROUTE(3, "mono", 0.50) + ym2203_device &ym1(YM2203(config, "ym1", 6000000 / 4)); + ym1.irq_handler().set_inputline(m_audiocpu, 0); + ym1.add_route(0, "mono", 0.15); + ym1.add_route(1, "mono", 0.15); + ym1.add_route(2, "mono", 0.15); + ym1.add_route(3, "mono", 0.50); - MCFG_DEVICE_ADD("ym2", YM2203, 6000000 / 4) - MCFG_SOUND_ROUTE(0, "mono", 0.15) - MCFG_SOUND_ROUTE(1, "mono", 0.15) - MCFG_SOUND_ROUTE(2, "mono", 0.15) - MCFG_SOUND_ROUTE(3, "mono", 0.50) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(argus_state::butasan) + ym2203_device &ym2(YM2203(config, "ym2", 6000000 / 4)); + ym2.add_route(0, "mono", 0.15); + ym2.add_route(1, "mono", 0.15); + ym2.add_route(2, "mono", 0.15); + ym2.add_route(3, "mono", 0.50); +} +void argus_state::butasan(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 5000000) /* 5 MHz */ - MCFG_DEVICE_PROGRAM_MAP(butasan_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", argus_state, butasan_scanline, "screen", 0, 1) + Z80(config, m_maincpu, 5000000); /* 5 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &argus_state::butasan_map); + TIMER(config, "scantimer").configure_scanline(FUNC(argus_state::butasan_scanline), "screen", 0, 1); - MCFG_DEVICE_ADD("audiocpu", Z80, 5000000) - MCFG_DEVICE_PROGRAM_MAP(sound_map_b) - MCFG_DEVICE_IO_MAP(sound_portmap_2) + Z80(config, m_audiocpu, 5000000); + m_audiocpu->set_addrmap(AS_PROGRAM, &argus_state::sound_map_b); + m_audiocpu->set_addrmap(AS_IO, &argus_state::sound_portmap_2); - MCFG_QUANTUM_TIME(attotime::from_hz(600)) + config.m_minimum_quantum = attotime::from_hz(600); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(54) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0) /* This value is taken from psychic5 driver */) - MCFG_SCREEN_SIZE(32*16, 32*16) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) - MCFG_SCREEN_UPDATE_DRIVER(argus_state, screen_update_butasan) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(54); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); /* This value is taken from psychic5 driver */ + m_screen->set_size(32*16, 32*16); + m_screen->set_visarea(0*8, 32*8-1, 1*8, 31*8-1); + m_screen->set_screen_update(FUNC(argus_state::screen_update_butasan)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_butasan) - MCFG_PALETTE_ADD("palette", 768) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_butasan); + PALETTE(config, m_palette).set_entries(768); - MCFG_DEVICE_ADD("blend", JALECO_BLEND, 0) + JALECO_BLEND(config, m_blend, 0); MCFG_VIDEO_START_OVERRIDE(argus_state,butasan) MCFG_VIDEO_RESET_OVERRIDE(argus_state,butasan) @@ -607,19 +607,19 @@ MACHINE_CONFIG_START(argus_state::butasan) GENERIC_LATCH_8(config, "soundlatch"); - MCFG_DEVICE_ADD("ym1", YM2203, 6000000 / 4) - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) - MCFG_SOUND_ROUTE(0, "mono", 0.30) - MCFG_SOUND_ROUTE(1, "mono", 0.30) - MCFG_SOUND_ROUTE(2, "mono", 0.30) - MCFG_SOUND_ROUTE(3, "mono", 1.0) + ym2203_device &ym1(YM2203(config, "ym1", 6000000 / 4)); + ym1.irq_handler().set_inputline(m_audiocpu, 0); + ym1.add_route(0, "mono", 0.30); + ym1.add_route(1, "mono", 0.30); + ym1.add_route(2, "mono", 0.30); + ym1.add_route(3, "mono", 1.0); - MCFG_DEVICE_ADD("ym2", YM2203, 6000000 / 4) - MCFG_SOUND_ROUTE(0, "mono", 0.30) - MCFG_SOUND_ROUTE(1, "mono", 0.30) - MCFG_SOUND_ROUTE(2, "mono", 0.30) - MCFG_SOUND_ROUTE(3, "mono", 1.0) -MACHINE_CONFIG_END + ym2203_device &ym2(YM2203(config, "ym2", 6000000 / 4)); + ym2.add_route(0, "mono", 0.30); + ym2.add_route(1, "mono", 0.30); + ym2.add_route(2, "mono", 0.30); + ym2.add_route(3, "mono", 1.0); +} /*************************************************************************** diff --git a/src/mame/drivers/blktiger.cpp b/src/mame/drivers/blktiger.cpp index 646a6272b9b..65828878eb4 100644 --- a/src/mame/drivers/blktiger.cpp +++ b/src/mame/drivers/blktiger.cpp @@ -289,16 +289,16 @@ void blktiger_state::machine_reset() m_i8751_latch = 0; } -MACHINE_CONFIG_START(blktiger_state::blktiger) - +void blktiger_state::blktiger(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(24'000'000)/4) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(blktiger_map) - MCFG_DEVICE_IO_MAP(blktiger_io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", blktiger_state, irq0_line_hold) + Z80(config, m_maincpu, XTAL(24'000'000)/4); /* verified on pcb */ + m_maincpu->set_addrmap(AS_PROGRAM, &blktiger_state::blktiger_map); + m_maincpu->set_addrmap(AS_IO, &blktiger_state::blktiger_io_map); + m_maincpu->set_vblank_int("screen", FUNC(blktiger_state::irq0_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545)) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(blktiger_sound_map) + Z80(config, m_audiocpu, XTAL(3'579'545)); /* verified on pcb */ + m_audiocpu->set_addrmap(AS_PROGRAM, &blktiger_state::blktiger_sound_map); I8751(config, m_mcu, XTAL(24'000'000)/4); /* ??? */ m_mcu->port_in_cb<0>().set(FUNC(blktiger_state::blktiger_from_main_r)); @@ -309,16 +309,16 @@ MACHINE_CONFIG_START(blktiger_state::blktiger) WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - 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, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(blktiger_state, screen_update_blktiger) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) - 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(0)); + screen.set_size(32*8, 32*8); + screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(blktiger_state::screen_update_blktiger)); + screen.screen_vblank().set("spriteram", FUNC(buffered_spriteram8_device::vblank_copy_rising)); + screen.set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_blktiger) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_blktiger); PALETTE(config, m_palette).set_format(palette_device::xBRG_444, 1024); @@ -329,21 +329,21 @@ MACHINE_CONFIG_START(blktiger_state::blktiger) GENERIC_LATCH_8(config, "soundlatch"); - MCFG_DEVICE_ADD("ym1", YM2203, XTAL(3'579'545)) /* verified on pcb */ - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) + ym2203_device &ym1(YM2203(config, "ym1", XTAL(3'579'545))); /* verified on pcb */ + ym1.irq_handler().set_inputline(m_audiocpu, 0); + ym1.add_route(ALL_OUTPUTS, "mono", 0.15); - MCFG_DEVICE_ADD("ym2", YM2203, XTAL(3'579'545)) /* verified on pcb */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) -MACHINE_CONFIG_END + ym2203_device &ym2(YM2203(config, "ym2", XTAL(3'579'545))); /* verified on pcb */ + ym2.add_route(ALL_OUTPUTS, "mono", 0.15); +} -MACHINE_CONFIG_START(blktiger_state::blktigerbl) +void blktiger_state::blktigerbl(machine_config &config) +{ blktiger(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_IO_MAP(blktigerbl_io_map) + m_maincpu->set_addrmap(AS_IO, &blktiger_state::blktigerbl_io_map); - MCFG_DEVICE_REMOVE("mcu") -MACHINE_CONFIG_END + config.device_remove("mcu"); +} /*************************************************************************** diff --git a/src/mame/drivers/chinagat.cpp b/src/mame/drivers/chinagat.cpp index e7280b4014e..cee77a87de1 100644 --- a/src/mame/drivers/chinagat.cpp +++ b/src/mame/drivers/chinagat.cpp @@ -571,26 +571,26 @@ void chinagat_state::machine_reset() } -MACHINE_CONFIG_START(chinagat_state::chinagat) - +void chinagat_state::chinagat(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", HD6309, MAIN_CLOCK / 2) /* 1.5 MHz (12MHz oscillator / 4 internally) */ - MCFG_DEVICE_PROGRAM_MAP(main_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", chinagat_state, chinagat_scanline, "screen", 0, 1) + HD6309(config, m_maincpu, MAIN_CLOCK / 2); /* 1.5 MHz (12MHz oscillator / 4 internally) */ + m_maincpu->set_addrmap(AS_PROGRAM, &chinagat_state::main_map); + TIMER(config, "scantimer").configure_scanline(FUNC(chinagat_state::chinagat_scanline), "screen", 0, 1); - MCFG_DEVICE_ADD("sub", HD6309, MAIN_CLOCK / 2) /* 1.5 MHz (12MHz oscillator / 4 internally) */ - MCFG_DEVICE_PROGRAM_MAP(sub_map) + HD6309(config, m_subcpu, MAIN_CLOCK / 2); /* 1.5 MHz (12MHz oscillator / 4 internally) */ + m_subcpu->set_addrmap(AS_PROGRAM, &chinagat_state::sub_map); - MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(3'579'545)) /* 3.579545 MHz */ - MCFG_DEVICE_PROGRAM_MAP(sound_map) + Z80(config, m_soundcpu, XTAL(3'579'545)); /* 3.579545 MHz */ + m_soundcpu->set_addrmap(AS_PROGRAM, &chinagat_state::sound_map); - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* heavy interleaving to sync up sprite<->main cpu's */ + config.m_minimum_quantum = attotime::from_hz(6000); /* heavy interleaving to sync up sprite<->main cpu's */ /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240) /* based on ddragon driver */ - MCFG_SCREEN_UPDATE_DRIVER(chinagat_state, screen_update_ddragon) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240); /* based on ddragon driver */ + m_screen->set_screen_update(FUNC(chinagat_state::screen_update_ddragon)); + m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_chinagat); PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 384); @@ -606,22 +606,22 @@ MACHINE_CONFIG_START(chinagat_state::chinagat) ymsnd.add_route(0, "mono", 0.80); ymsnd.add_route(1, "mono", 0.80); - MCFG_DEVICE_ADD("oki", OKIM6295, 1065000, okim6295_device::PIN7_HIGH) // pin 7 not verified, clock frequency estimated with recording - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(chinagat_state::saiyugoub1) + okim6295_device &oki(OKIM6295(config, "oki", 1065000, okim6295_device::PIN7_HIGH)); // pin 7 not verified, clock frequency estimated with recording + oki.add_route(ALL_OUTPUTS, "mono", 0.80); +} +void chinagat_state::saiyugoub1(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", MC6809E, MAIN_CLOCK / 8) /* 68B09EP 1.5 MHz (12MHz oscillator) */ - MCFG_DEVICE_PROGRAM_MAP(main_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", chinagat_state, chinagat_scanline, "screen", 0, 1) + MC6809E(config, m_maincpu, MAIN_CLOCK / 8); /* 68B09EP 1.5 MHz (12MHz oscillator) */ + m_maincpu->set_addrmap(AS_PROGRAM, &chinagat_state::main_map); + TIMER(config, "scantimer").configure_scanline(FUNC(chinagat_state::chinagat_scanline), "screen", 0, 1); - MCFG_DEVICE_ADD("sub", MC6809E, MAIN_CLOCK / 8) /* 68B09EP 1.5 MHz (12MHz oscillator) */ - MCFG_DEVICE_PROGRAM_MAP(sub_map) + MC6809E(config, m_subcpu, MAIN_CLOCK / 8); /* 68B09EP 1.5 MHz (12MHz oscillator) */ + m_subcpu->set_addrmap(AS_PROGRAM, &chinagat_state::sub_map); - MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(3'579'545)) /* 3.579545 MHz oscillator */ - MCFG_DEVICE_PROGRAM_MAP(saiyugoub1_sound_map) + Z80(config, m_soundcpu, XTAL(3'579'545)); /* 3.579545 MHz oscillator */ + m_soundcpu->set_addrmap(AS_PROGRAM, &chinagat_state::saiyugoub1_sound_map); i8748_device &mcu(I8748(config, "mcu", 9263750)); /* 9.263750 MHz oscillator, divided by 3*5 internally */ mcu.set_addrmap(AS_PROGRAM, &chinagat_state::i8748_map); @@ -631,14 +631,13 @@ MACHINE_CONFIG_START(chinagat_state::saiyugoub1) mcu.p1_out_cb().set(FUNC(chinagat_state::saiyugoub1_adpcm_rom_addr_w)); mcu.p2_out_cb().set(FUNC(chinagat_state::saiyugoub1_adpcm_control_w)); - - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* heavy interleaving to sync up sprite<->main cpu's */ + config.m_minimum_quantum = attotime::from_hz(6000); /* heavy interleaving to sync up sprite<->main cpu's */ /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240) /* based on ddragon driver */ - MCFG_SCREEN_UPDATE_DRIVER(chinagat_state, screen_update_ddragon) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240); /* based on ddragon driver */ + m_screen->set_screen_update(FUNC(chinagat_state::screen_update_ddragon)); + m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_chinagat); PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 384); @@ -654,32 +653,32 @@ MACHINE_CONFIG_START(chinagat_state::saiyugoub1) ymsnd.add_route(0, "mono", 0.80); ymsnd.add_route(1, "mono", 0.80); - MCFG_DEVICE_ADD("adpcm", MSM5205, 9263750 / 24) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, chinagat_state, saiyugoub1_m5205_irq_w)) /* Interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(S64_4B) /* vclk input mode (6030Hz, 4-bit) */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(chinagat_state::saiyugoub2) + MSM5205(config, m_adpcm, 9263750 / 24); + m_adpcm->vck_legacy_callback().set(FUNC(chinagat_state::saiyugoub1_m5205_irq_w)); /* Interrupt function */ + m_adpcm->set_prescaler_selector(msm5205_device::S64_4B); /* vclk input mode (6030Hz, 4-bit) */ + m_adpcm->add_route(ALL_OUTPUTS, "mono", 0.60); +} +void chinagat_state::saiyugoub2(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", MC6809E, MAIN_CLOCK / 8) /* 1.5 MHz (12MHz oscillator) */ - MCFG_DEVICE_PROGRAM_MAP(main_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", chinagat_state, chinagat_scanline, "screen", 0, 1) + MC6809E(config, m_maincpu, MAIN_CLOCK / 8); /* 1.5 MHz (12MHz oscillator) */ + m_maincpu->set_addrmap(AS_PROGRAM, &chinagat_state::main_map); + TIMER(config, "scantimer").configure_scanline(FUNC(chinagat_state::chinagat_scanline), "screen", 0, 1); - MCFG_DEVICE_ADD("sub", MC6809E, MAIN_CLOCK / 8) /* 1.5 MHz (12MHz oscillator) */ - MCFG_DEVICE_PROGRAM_MAP(sub_map) + MC6809E(config, m_subcpu, MAIN_CLOCK / 8); /* 1.5 MHz (12MHz oscillator) */ + m_subcpu->set_addrmap(AS_PROGRAM, &chinagat_state::sub_map); - MCFG_DEVICE_ADD("soundcpu", Z80, XTAL(3'579'545)) /* 3.579545 MHz oscillator */ - MCFG_DEVICE_PROGRAM_MAP(ym2203c_sound_map) + Z80(config, m_soundcpu, XTAL(3'579'545)); /* 3.579545 MHz oscillator */ + m_soundcpu->set_addrmap(AS_PROGRAM, &chinagat_state::ym2203c_sound_map); - MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* heavy interleaving to sync up sprite<->main cpu's */ + config.m_minimum_quantum = attotime::from_hz(6000); /* heavy interleaving to sync up sprite<->main cpu's */ /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240) /* based on ddragon driver */ - MCFG_SCREEN_UPDATE_DRIVER(chinagat_state, screen_update_ddragon) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_raw(PIXEL_CLOCK, 384, 0, 256, 272, 0, 240); /* based on ddragon driver */ + m_screen->set_screen_update(FUNC(chinagat_state::screen_update_ddragon)); + m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_chinagat); PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 384); @@ -690,19 +689,19 @@ MACHINE_CONFIG_START(chinagat_state::saiyugoub2) GENERIC_LATCH_8(config, m_soundlatch); m_soundlatch->data_pending_callback().set_inputline(m_soundcpu, INPUT_LINE_NMI); - MCFG_DEVICE_ADD("ym1", YM2203, 3579545) - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) - MCFG_SOUND_ROUTE(0, "mono", 0.50) - MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_SOUND_ROUTE(2, "mono", 0.50) - MCFG_SOUND_ROUTE(3, "mono", 0.80) + ym2203_device &ym1(YM2203(config, "ym1", 3579545)); + ym1.irq_handler().set_inputline(m_soundcpu, 0); + ym1.add_route(0, "mono", 0.50); + ym1.add_route(1, "mono", 0.50); + ym1.add_route(2, "mono", 0.50); + ym1.add_route(3, "mono", 0.80); - MCFG_DEVICE_ADD("ym2", YM2203, 3579545) - MCFG_SOUND_ROUTE(0, "mono", 0.50) - MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_SOUND_ROUTE(2, "mono", 0.50) - MCFG_SOUND_ROUTE(3, "mono", 0.80) -MACHINE_CONFIG_END + ym2203_device &ym2(YM2203(config, "ym2", 3579545)); + ym2.add_route(0, "mono", 0.50); + ym2.add_route(1, "mono", 0.50); + ym2.add_route(2, "mono", 0.50); + ym2.add_route(3, "mono", 0.80); +} /*************************************************************************** diff --git a/src/mame/drivers/deadang.cpp b/src/mame/drivers/deadang.cpp index 14cc5b78b46..8132cb4d8c7 100644 --- a/src/mame/drivers/deadang.cpp +++ b/src/mame/drivers/deadang.cpp @@ -344,36 +344,36 @@ TIMER_DEVICE_CALLBACK_MEMBER(deadang_state::sub_scanline) /* Machine Drivers */ -MACHINE_CONFIG_START(deadang_state::deadang) - +void deadang_state::deadang(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", V30,XTAL(16'000'000)/2) /* Sony 8623h9 CXQ70116D-8 (V30 compatible) */ - MCFG_DEVICE_PROGRAM_MAP(main_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer1", deadang_state, main_scanline, "screen", 0, 1) + V30(config, m_maincpu, XTAL(16'000'000)/2); /* Sony 8623h9 CXQ70116D-8 (V30 compatible) */ + m_maincpu->set_addrmap(AS_PROGRAM, &deadang_state::main_map); + TIMER(config, "scantimer1").configure_scanline(FUNC(deadang_state::main_scanline), "screen", 0, 1); - MCFG_DEVICE_ADD("sub", V30,XTAL(16'000'000)/2) /* Sony 8623h9 CXQ70116D-8 (V30 compatible) */ - MCFG_DEVICE_PROGRAM_MAP(sub_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer2", deadang_state, sub_scanline, "screen", 0, 1) + V30(config, m_subcpu, XTAL(16'000'000)/2); /* Sony 8623h9 CXQ70116D-8 (V30 compatible) */ + m_subcpu->set_addrmap(AS_PROGRAM, &deadang_state::sub_map); + TIMER(config, "scantimer2").configure_scanline(FUNC(deadang_state::sub_scanline), "screen", 0, 1); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(14'318'181)/4) - 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(14'318'181)/4); + m_audiocpu->set_addrmap(AS_PROGRAM, &deadang_state::sound_map); + m_audiocpu->set_addrmap(AS_OPCODES, &deadang_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"); - MCFG_QUANTUM_TIME(attotime::from_hz(60)) // the game stops working with higher interleave rates.. + config.m_minimum_quantum = attotime::from_hz(60); // the game stops working with higher interleave rates.. WATCHDOG_TIMER(config, "watchdog"); /* 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(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(deadang_state, screen_update) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(deadang_state::screen_update)); + m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_deadang); PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 2048); @@ -382,48 +382,45 @@ MACHINE_CONFIG_START(deadang_state::deadang) SPEAKER(config, "mono").front_center(); SEIBU_SOUND(config, m_seibu_sound, 0); - m_seibu_sound->int_callback().set_inputline("audiocpu", 0); + m_seibu_sound->int_callback().set_inputline(m_audiocpu, 0); m_seibu_sound->set_rom_tag("audiocpu"); m_seibu_sound->set_rombank_tag("seibu_bank1"); m_seibu_sound->ym_read_callback().set("ym1", FUNC(ym2203_device::read)); m_seibu_sound->ym_write_callback().set("ym1", FUNC(ym2203_device::write)); - MCFG_DEVICE_ADD("ym1", YM2203, XTAL(14'318'181)/4) - MCFG_YM2203_IRQ_HANDLER(WRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) + ym2203_device &ym1(YM2203(config, "ym1", XTAL(14'318'181)/4)); + ym1.irq_handler().set("seibu_sound", FUNC(seibu_sound_device::fm_irqhandler)); + ym1.add_route(ALL_OUTPUTS, "mono", 0.15); - MCFG_DEVICE_ADD("ym2", YM2203, XTAL(14'318'181)/4) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) + ym2203_device &ym2(YM2203(config, "ym2", XTAL(14'318'181)/4)); + ym2.add_route(ALL_OUTPUTS, "mono", 0.15); SEIBU_ADPCM(config, m_adpcm1, 8000).add_route(ALL_OUTPUTS, "mono", 0.40); SEIBU_ADPCM(config, m_adpcm2, 8000).add_route(ALL_OUTPUTS, "mono", 0.40); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(popnrun_state::popnrun) +void popnrun_state::popnrun(machine_config &config) +{ deadang(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(popnrun_main_map) + m_maincpu->set_addrmap(AS_PROGRAM, &popnrun_state::popnrun_main_map); - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_PROGRAM_MAP(popnrun_sub_map) + m_subcpu->set_addrmap(AS_PROGRAM, &popnrun_state::popnrun_sub_map); - MCFG_DEVICE_MODIFY("audiocpu") - MCFG_DEVICE_PROGRAM_MAP(popnrun_sound_map) - MCFG_DEVICE_OPCODES_MAP(sound_decrypted_opcodes_map) + m_audiocpu->set_addrmap(AS_PROGRAM, &popnrun_state::popnrun_sound_map); + m_audiocpu->set_addrmap(AS_OPCODES, &popnrun_state::sound_decrypted_opcodes_map); - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(popnrun_state, popnrun_screen_update) + m_screen->set_screen_update(FUNC(popnrun_state::popnrun_screen_update)); - MCFG_DEVICE_REMOVE("watchdog") + config.device_remove("watchdog"); - MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_popnrun) + m_gfxdecode->set_info(gfx_popnrun); - MCFG_DEVICE_REMOVE("ym1") - MCFG_DEVICE_REMOVE("ym2") - MCFG_DEVICE_REMOVE("adpcm1") - MCFG_DEVICE_REMOVE("adpcm2") + config.device_remove("ym1"); + config.device_remove("ym2"); + config.device_remove("adpcm1"); + config.device_remove("adpcm2"); m_seibu_sound->ym_read_callback().set("ymsnd", FUNC(ym2151_device::read)); m_seibu_sound->ym_write_callback().set("ymsnd", FUNC(ym2151_device::write)); @@ -432,7 +429,7 @@ MACHINE_CONFIG_START(popnrun_state::popnrun) ymsnd.irq_handler().set(m_seibu_sound, FUNC(seibu_sound_device::fm_irqhandler)); ymsnd.add_route(0, "mono", 0.50); ymsnd.add_route(1, "mono", 0.50); -MACHINE_CONFIG_END +} /* ROMs */ diff --git a/src/mame/drivers/gaiden.cpp b/src/mame/drivers/gaiden.cpp index ec6cde3d944..1e487fed8b8 100644 --- a/src/mame/drivers/gaiden.cpp +++ b/src/mame/drivers/gaiden.cpp @@ -750,28 +750,27 @@ static GFXDECODE_START( gfx_drgnbowl ) GFXDECODE_END -MACHINE_CONFIG_START(gaiden_state::shadoww) - +void gaiden_state::shadoww(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 18432000/2) /* 9.216 MHz */ - MCFG_DEVICE_PROGRAM_MAP(gaiden_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gaiden_state, irq5_line_assert) + M68000(config, m_maincpu, 18432000/2); /* 9.216 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &gaiden_state::gaiden_map); + m_maincpu->set_vblank_int("screen", FUNC(gaiden_state::irq5_line_assert)); - MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) /* 4 MHz */ - MCFG_DEVICE_PROGRAM_MAP(sound_map) - /* IRQs are triggered by the YM2203 */ + Z80(config, m_audiocpu, 4000000); /* 4 MHz */ + m_audiocpu->set_addrmap(AS_PROGRAM, &gaiden_state::sound_map); /* IRQs are triggered by the YM2203 */ WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ BUFFERED_SPRITERAM16(config, m_spriteram); - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(59.17) /* verified on pcb */ - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 4*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(gaiden_state, screen_update_gaiden) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(59.17); /* verified on pcb */ + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 4*8, 32*8-1); + m_screen->set_screen_update(FUNC(gaiden_state::screen_update_gaiden)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_gaiden); PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 4096); @@ -794,71 +793,67 @@ MACHINE_CONFIG_START(gaiden_state::shadoww) GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI); - MCFG_DEVICE_ADD("ym1", YM2203, 4000000) - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) - MCFG_SOUND_ROUTE(0, "mono", 0.15) - MCFG_SOUND_ROUTE(1, "mono", 0.15) - MCFG_SOUND_ROUTE(2, "mono", 0.15) - MCFG_SOUND_ROUTE(3, "mono", 0.60) + ym2203_device &ym1(YM2203(config, "ym1", 4000000)); + ym1.irq_handler().set_inputline(m_audiocpu, 0); + ym1.add_route(0, "mono", 0.15); + ym1.add_route(1, "mono", 0.15); + ym1.add_route(2, "mono", 0.15); + ym1.add_route(3, "mono", 0.60); - MCFG_DEVICE_ADD("ym2", YM2203, 4000000) - MCFG_SOUND_ROUTE(0, "mono", 0.15) - MCFG_SOUND_ROUTE(1, "mono", 0.15) - MCFG_SOUND_ROUTE(2, "mono", 0.15) - MCFG_SOUND_ROUTE(3, "mono", 0.60) + ym2203_device &ym2(YM2203(config, "ym2", 4000000)); + ym2.add_route(0, "mono", 0.15); + ym2.add_route(1, "mono", 0.15); + ym2.add_route(2, "mono", 0.15); + ym2.add_route(3, "mono", 0.60); - MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) -MACHINE_CONFIG_END + okim6295_device &oki(OKIM6295(config, "oki", 1000000, okim6295_device::PIN7_HIGH)); + oki.add_route(ALL_OUTPUTS, "mono", 0.20); +} -MACHINE_CONFIG_START(gaiden_state::wildfang) +void gaiden_state::wildfang(machine_config &config) +{ shadoww(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(wildfang_map) + m_maincpu->set_addrmap(AS_PROGRAM, &gaiden_state::wildfang_map); - MCFG_DEVICE_ADD("mcu", I8749, 4_MHz_XTAL) - MCFG_DEVICE_DISABLE() -MACHINE_CONFIG_END + I8749(config, "mcu", 4_MHz_XTAL).set_disable(); +} -MACHINE_CONFIG_START(gaiden_state::raiga) +void gaiden_state::raiga(machine_config &config) +{ shadoww(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(raiga_map) + m_maincpu->set_addrmap(AS_PROGRAM, &gaiden_state::raiga_map); - MCFG_DEVICE_ADD("mcu", I8749, 4_MHz_XTAL) - MCFG_DEVICE_DISABLE() + I8749(config, "mcu", 4_MHz_XTAL).set_disable(); MCFG_MACHINE_RESET_OVERRIDE(gaiden_state,raiga) MCFG_VIDEO_START_OVERRIDE(gaiden_state,raiga) - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(gaiden_state, screen_update_raiga) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) - -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(gaiden_state::drgnbowl) + m_screen->set_screen_update(FUNC(gaiden_state::screen_update_raiga)); + m_screen->screen_vblank().set("spriteram", FUNC(buffered_spriteram16_device::vblank_copy_rising)); +} +void gaiden_state::drgnbowl(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 20000000/2) /* 10 MHz */ - MCFG_DEVICE_PROGRAM_MAP(drgnbowl_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gaiden_state, irq5_line_assert) + M68000(config, m_maincpu, 20000000/2); /* 10 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &gaiden_state::drgnbowl_map); + m_maincpu->set_vblank_int("screen", FUNC(gaiden_state::irq5_line_assert)); - MCFG_DEVICE_ADD("audiocpu", Z80, 12000000/2) /* 6 MHz */ - MCFG_DEVICE_PROGRAM_MAP(drgnbowl_sound_map) - MCFG_DEVICE_IO_MAP(drgnbowl_sound_port_map) + Z80(config, m_audiocpu, 12000000/2); /* 6 MHz */ + m_audiocpu->set_addrmap(AS_PROGRAM, &gaiden_state::drgnbowl_sound_map); + m_audiocpu->set_addrmap(AS_IO, &gaiden_state::drgnbowl_sound_port_map); /* video hardware */ BUFFERED_SPRITERAM16(config, m_spriteram); - 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, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(gaiden_state, screen_update_drgnbowl) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(gaiden_state::screen_update_drgnbowl)); + m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_drgnbowl); PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 4096); @@ -875,7 +870,7 @@ MACHINE_CONFIG_START(gaiden_state::drgnbowl) YM2151(config, "ymsnd", 4000000).add_route(ALL_OUTPUTS, "mono", 0.40); OKIM6295(config, "oki", 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.50); -MACHINE_CONFIG_END +} /* Master Ninja @@ -991,15 +986,15 @@ void gaiden_state::mastninj_map(address_map &map) map(0x07e000, 0x07e000).w(FUNC(gaiden_state::drgnbowl_irq_ack_w)); } -MACHINE_CONFIG_START(gaiden_state::mastninj) - +void gaiden_state::mastninj(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 10000000) /* 10 MHz? */ - MCFG_DEVICE_PROGRAM_MAP(mastninj_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", gaiden_state, irq5_line_assert) + M68000(config, m_maincpu, 10000000); /* 10 MHz? */ + m_maincpu->set_addrmap(AS_PROGRAM, &gaiden_state::mastninj_map); + m_maincpu->set_vblank_int("screen", FUNC(gaiden_state::irq5_line_assert)); - MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) /* ?? MHz */ - MCFG_DEVICE_PROGRAM_MAP(mastninj_sound_map) + Z80(config, m_audiocpu, 4000000); /* ?? MHz */ + m_audiocpu->set_addrmap(AS_PROGRAM, &gaiden_state::mastninj_sound_map); MCFG_MACHINE_START_OVERRIDE(gaiden_state,mastninj) @@ -1008,13 +1003,13 @@ MACHINE_CONFIG_START(gaiden_state::mastninj) /* video hardware */ BUFFERED_SPRITERAM16(config, m_spriteram); - 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, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(gaiden_state, screen_update_drgnbowl) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(gaiden_state::screen_update_drgnbowl)); + m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_mastninj); PALETTE(config, m_palette).set_format(palette_device::xBGR_444, 4096); @@ -1029,17 +1024,17 @@ MACHINE_CONFIG_START(gaiden_state::mastninj) GENERIC_LATCH_8(config, "soundlatch").data_pending_callback().set_inputline(m_audiocpu, 0); // YM2203 clocks chosen by analogy with Automat; actual rate unknown, but 4 MHz is obviously too fast - MCFG_DEVICE_ADD("ym1", YM2203, 1250000) - MCFG_SOUND_ROUTE(0, "mono", 0.15) - MCFG_SOUND_ROUTE(1, "mono", 0.15) - MCFG_SOUND_ROUTE(2, "mono", 0.15) - MCFG_SOUND_ROUTE(3, "mono", 0.60) + ym2203_device &ym1(YM2203(config, "ym1", 1250000)); + ym1.add_route(0, "mono", 0.15); + ym1.add_route(1, "mono", 0.15); + ym1.add_route(2, "mono", 0.15); + ym1.add_route(3, "mono", 0.60); - MCFG_DEVICE_ADD("ym2", YM2203, 1250000) - MCFG_SOUND_ROUTE(0, "mono", 0.15) - MCFG_SOUND_ROUTE(1, "mono", 0.15) - MCFG_SOUND_ROUTE(2, "mono", 0.15) - MCFG_SOUND_ROUTE(3, "mono", 0.60) + ym2203_device &ym2(YM2203(config, "ym2", 1250000)); + ym2.add_route(0, "mono", 0.15); + ym2.add_route(1, "mono", 0.15); + ym2.add_route(2, "mono", 0.15); + ym2.add_route(3, "mono", 0.60); LS157(config, m_adpcm_select[0], 0); m_adpcm_select[0]->out_callback().set("msm1", FUNC(msm5205_device::data_w)); @@ -1056,7 +1051,7 @@ MACHINE_CONFIG_START(gaiden_state::mastninj) MSM5205(config, m_msm[1], 384000); m_msm[1]->set_prescaler_selector(msm5205_device::SEX_4B); m_msm[1]->add_route(ALL_OUTPUTS, "mono", 0.20); -MACHINE_CONFIG_END +} /*************************************************************************** diff --git a/src/mame/drivers/goal92.cpp b/src/mame/drivers/goal92.cpp index e2d09b2b45f..3d1477d42d7 100644 --- a/src/mame/drivers/goal92.cpp +++ b/src/mame/drivers/goal92.cpp @@ -296,27 +296,25 @@ void goal92_state::machine_reset() m_adpcm_toggle = 0; } -MACHINE_CONFIG_START(goal92_state::goal92) - +void goal92_state::goal92(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000,12000000) - MCFG_DEVICE_PROGRAM_MAP(goal92_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", goal92_state, irq6_line_hold) /* VBL */ - - MCFG_DEVICE_ADD("audiocpu", Z80, 2500000) - MCFG_DEVICE_PROGRAM_MAP(sound_cpu) - /* IRQs are triggered by the main CPU */ + M68000(config, m_maincpu, 12000000); + m_maincpu->set_addrmap(AS_PROGRAM, &goal92_state::goal92_map); + m_maincpu->set_vblank_int("screen", FUNC(goal92_state::irq6_line_hold)); /* VBL */ + Z80(config, m_audiocpu, 2500000); + m_audiocpu->set_addrmap(AS_PROGRAM, &goal92_state::sound_cpu); /* IRQs are triggered by the main CPU */ /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(40*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 40*8-1, 1*8, 31*8-1) // black border at bottom is a game bug... - MCFG_SCREEN_UPDATE_DRIVER(goal92_state, screen_update_goal92) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, goal92_state, screen_vblank_goal92)) - 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(0)); + screen.set_size(40*8, 32*8); + screen.set_visarea(0*8, 40*8-1, 1*8, 31*8-1); // black border at bottom is a game bug... + screen.set_screen_update(FUNC(goal92_state::screen_update_goal92)); + screen.screen_vblank().set(FUNC(goal92_state::screen_vblank_goal92)); + screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_goal92); PALETTE(config, m_palette).set_format(palette_device::xBGR_555, 128*16); @@ -326,18 +324,18 @@ MACHINE_CONFIG_START(goal92_state::goal92) GENERIC_LATCH_8(config, m_soundlatch); - MCFG_DEVICE_ADD("ym1", YM2203, 2500000/2) - MCFG_YM2203_IRQ_HANDLER(WRITELINE(*this, goal92_state, irqhandler)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) + ym2203_device &ym1(YM2203(config, "ym1", 2500000/2)); + ym1.irq_handler().set(FUNC(goal92_state::irqhandler)); + ym1.add_route(ALL_OUTPUTS, "mono", 0.25); - MCFG_DEVICE_ADD("ym2", YM2203, 2500000/2) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) + ym2203_device &ym2(YM2203(config, "ym2", 2500000/2)); + ym2.add_route(ALL_OUTPUTS, "mono", 0.25); - MCFG_DEVICE_ADD("msm", MSM5205, 384000) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, goal92_state, goal92_adpcm_int)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) -MACHINE_CONFIG_END + MSM5205(config, m_msm, 384000); + m_msm->vck_legacy_callback().set(FUNC(goal92_state::goal92_adpcm_int)); /* interrupt function */ + m_msm->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */ + m_msm->add_route(ALL_OUTPUTS, "mono", 0.60); +} /* diff --git a/src/mame/drivers/himesiki.cpp b/src/mame/drivers/himesiki.cpp index a89a22b5091..11450a4f99c 100644 --- a/src/mame/drivers/himesiki.cpp +++ b/src/mame/drivers/himesiki.cpp @@ -426,17 +426,17 @@ void himesiki_state::machine_reset() m_flipscreen = 0; } -MACHINE_CONFIG_START(himesiki_state::himesiki) - +void himesiki_state::himesiki(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, CLK2) /* it's a 6.000 MHz rated part, but near the 8 Mhz XTAL?? - Android skips lots of frames at 6, crashes at 4 */ - MCFG_DEVICE_PROGRAM_MAP(himesiki_prm0) - MCFG_DEVICE_IO_MAP(himesiki_iom0) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", himesiki_state, irq0_line_hold) + Z80(config, m_maincpu, CLK2); /* it's a 6.000 MHz rated part, but near the 8 Mhz XTAL?? - Android skips lots of frames at 6, crashes at 4 */ + m_maincpu->set_addrmap(AS_PROGRAM, &himesiki_state::himesiki_prm0); + m_maincpu->set_addrmap(AS_IO, &himesiki_state::himesiki_iom0); + m_maincpu->set_vblank_int("screen", FUNC(himesiki_state::irq0_line_hold)); - MCFG_DEVICE_ADD("sub", Z80, CLK2/2) /* 4.000 MHz (4Mhz rated part, near the 8 Mhz XTAL) */ - MCFG_DEVICE_PROGRAM_MAP(himesiki_prm1) - MCFG_DEVICE_IO_MAP(himesiki_iom1) + Z80(config, m_subcpu, CLK2/2); /* 4.000 MHz (4Mhz rated part, near the 8 Mhz XTAL) */ + m_subcpu->set_addrmap(AS_PROGRAM, &himesiki_state::himesiki_prm1); + m_subcpu->set_addrmap(AS_IO, &himesiki_state::himesiki_iom1); i8255_device &ppi0(I8255A(config, "ppi8255_0")); ppi0.in_pa_callback().set_ioport("1P"); @@ -449,13 +449,13 @@ MACHINE_CONFIG_START(himesiki_state::himesiki) ppi1.out_pc_callback().set(FUNC(himesiki_state::himesiki_rombank_w)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 0*8, 24*8-1) - MCFG_SCREEN_UPDATE_DRIVER(himesiki_state, screen_update_himesiki) - 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)); + screen.set_size(32*8, 32*8); + screen.set_visarea(0*8, 32*8-1, 0*8, 24*8-1); + screen.set_screen_update(FUNC(himesiki_state::screen_update_himesiki)); + screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_himesiki); PALETTE(config, m_palette, palette_device::BLACK).set_format(palette_device::xRGB_555, 1024); @@ -465,14 +465,14 @@ MACHINE_CONFIG_START(himesiki_state::himesiki) GENERIC_LATCH_8(config, m_soundlatch); - MCFG_DEVICE_ADD("ym2203", YM2203, CLK2/4) // ?? - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("sub", 0)) - MCFG_SOUND_ROUTE(0, "mono", 0.10) - MCFG_SOUND_ROUTE(1, "mono", 0.10) - MCFG_SOUND_ROUTE(2, "mono", 0.10) - MCFG_SOUND_ROUTE(3, "mono", 0.50) + ym2203_device &ym2203(YM2203(config, "ym2203", CLK2/4)); // ?? + ym2203.irq_handler().set_inputline("sub", 0); + ym2203.add_route(0, "mono", 0.10); + ym2203.add_route(1, "mono", 0.10); + ym2203.add_route(2, "mono", 0.10); + ym2203.add_route(3, "mono", 0.50); +} -MACHINE_CONFIG_END /****************************************************************************/ diff --git a/src/mame/drivers/lastduel.cpp b/src/mame/drivers/lastduel.cpp index 175f33b37d6..1a261cf2dab 100644 --- a/src/mame/drivers/lastduel.cpp +++ b/src/mame/drivers/lastduel.cpp @@ -514,33 +514,33 @@ void lastduel_state::machine_reset() m_vctrl[i] = 0; } -MACHINE_CONFIG_START(lastduel_state::lastduel) - +void lastduel_state::lastduel(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 10000000) // Unconfirmed - could be 8MHz - MCFG_DEVICE_PROGRAM_MAP(lastduel_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lastduel_state, irq2_line_hold) - MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_irq", lastduel_state, lastduel_timer_cb, attotime::from_hz(120)) + M68000(config, m_maincpu, 10000000); // Unconfirmed - could be 8MHz + m_maincpu->set_addrmap(AS_PROGRAM, &lastduel_state::lastduel_map); + m_maincpu->set_vblank_int("screen", FUNC(lastduel_state::irq2_line_hold)); + TIMER(config, "timer_irq").configure_periodic(FUNC(lastduel_state::lastduel_timer_cb), attotime::from_hz(120)); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545)) - MCFG_DEVICE_PROGRAM_MAP(sound_map) + Z80(config, m_audiocpu, XTAL(3'579'545)); + m_audiocpu->set_addrmap(AS_PROGRAM, &lastduel_state::sound_map); MCFG_MACHINE_START_OVERRIDE(lastduel_state,lastduel) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) - MCFG_SCREEN_REFRESH_RATE(60) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(lastduel_state, screen_update_lastduel) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) - MCFG_SCREEN_PALETTE(m_palette) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); + screen.set_refresh_hz(60); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(64*8, 32*8); + screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1); + screen.set_screen_update(FUNC(lastduel_state::screen_update_lastduel)); + screen.screen_vblank().set("spriteram", FUNC(buffered_spriteram16_device::vblank_copy_rising)); + screen.set_palette(m_palette); BUFFERED_SPRITERAM16(config, m_spriteram); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_lastduel) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_lastduel); PALETTE(config, m_palette).set_format(2, &lastduel_state::lastduel_RRRRGGGGBBBBIIII, 1024); MCFG_VIDEO_START_OVERRIDE(lastduel_state,lastduel) @@ -550,42 +550,41 @@ MACHINE_CONFIG_START(lastduel_state::lastduel) GENERIC_LATCH_8(config, m_soundlatch); - MCFG_DEVICE_ADD("ym1", YM2203, XTAL(3'579'545)) - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) + ym2203_device &ym1(YM2203(config, "ym1", XTAL(3'579'545))); + ym1.irq_handler().set_inputline(m_audiocpu, 0); + ym1.add_route(ALL_OUTPUTS, "mono", 0.40); - MCFG_DEVICE_ADD("ym2", YM2203, XTAL(3'579'545)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(lastduel_state::madgear) + ym2203_device &ym2(YM2203(config, "ym2", XTAL(3'579'545))); + ym2.add_route(ALL_OUTPUTS, "mono", 0.40); +} +void lastduel_state::madgear(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, XTAL(10'000'000)) - MCFG_DEVICE_PROGRAM_MAP(madgear_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lastduel_state, irq5_line_hold) - MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_irq", lastduel_state, madgear_timer_cb, attotime::from_hz(120)) + M68000(config, m_maincpu, XTAL(10'000'000)); + m_maincpu->set_addrmap(AS_PROGRAM, &lastduel_state::madgear_map); + m_maincpu->set_vblank_int("screen", FUNC(lastduel_state::irq5_line_hold)); + TIMER(config, "timer_irq").configure_periodic(FUNC(lastduel_state::madgear_timer_cb), attotime::from_hz(120)); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545)) - MCFG_DEVICE_PROGRAM_MAP(madgear_sound_map) + Z80(config, m_audiocpu, XTAL(3'579'545)); + m_audiocpu->set_addrmap(AS_PROGRAM, &lastduel_state::madgear_sound_map); MCFG_MACHINE_START_OVERRIDE(lastduel_state,madgear) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) - MCFG_SCREEN_REFRESH_RATE(57.4444) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 1*8, 31*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(lastduel_state, screen_update_madgear) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram16_device, vblank_copy_rising)) - MCFG_SCREEN_PALETTE(m_palette) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_video_attributes(VIDEO_UPDATE_BEFORE_VBLANK); + screen.set_refresh_hz(57.4444); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); + screen.set_size(64*8, 32*8); + screen.set_visarea(8*8, (64-8)*8-1, 1*8, 31*8-1); + screen.set_screen_update(FUNC(lastduel_state::screen_update_madgear)); + screen.screen_vblank().set("spriteram", FUNC(buffered_spriteram16_device::vblank_copy_rising)); + screen.set_palette(m_palette); BUFFERED_SPRITERAM16(config, m_spriteram); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_lastduel) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_lastduel); PALETTE(config, m_palette).set_format(2, &lastduel_state::lastduel_RRRRGGGGBBBBIIII, 1024); MCFG_VIDEO_START_OVERRIDE(lastduel_state,madgear) @@ -595,16 +594,16 @@ MACHINE_CONFIG_START(lastduel_state::madgear) GENERIC_LATCH_8(config, m_soundlatch); - MCFG_DEVICE_ADD("ym1", YM2203, XTAL(3'579'545)) - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) + ym2203_device &ym1(YM2203(config, "ym1", XTAL(3'579'545))); + ym1.irq_handler().set_inputline(m_audiocpu, 0); + ym1.add_route(ALL_OUTPUTS, "mono", 0.40); - MCFG_DEVICE_ADD("ym2", YM2203, XTAL(3'579'545)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) + ym2203_device &ym2(YM2203(config, "ym2", XTAL(3'579'545))); + ym2.add_route(ALL_OUTPUTS, "mono", 0.40); - MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(10'000'000)/10, okim6295_device::PIN7_HIGH) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.98) -MACHINE_CONFIG_END + okim6295_device &oki(OKIM6295(config, "oki", XTAL(10'000'000)/10, okim6295_device::PIN7_HIGH)); + oki.add_route(ALL_OUTPUTS, "mono", 0.98); +} /******************************************************************************/ diff --git a/src/mame/drivers/lkage.cpp b/src/mame/drivers/lkage.cpp index 224e9b69ee5..9c98ce24ecc 100644 --- a/src/mame/drivers/lkage.cpp +++ b/src/mame/drivers/lkage.cpp @@ -488,34 +488,31 @@ void lkage_state::machine_reset() m_soundnmi->in_w<1>(0); } -MACHINE_CONFIG_START(lkage_state::lkage) - +void lkage_state::lkage(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, MAIN_CPU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(lkage_map_mcu) - MCFG_DEVICE_IO_MAP(lkage_io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lkage_state, irq0_line_hold) + Z80(config, m_maincpu, MAIN_CPU_CLOCK); + m_maincpu->set_addrmap(AS_PROGRAM, &lkage_state::lkage_map_mcu); + m_maincpu->set_addrmap(AS_IO, &lkage_state::lkage_io_map); + m_maincpu->set_vblank_int("screen", FUNC(lkage_state::irq0_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CPU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(lkage_sound_map) - /* IRQs are triggered by the YM2203 */ - - MCFG_DEVICE_ADD("bmcu", TAITO68705_MCU,MCU_CLOCK) + Z80(config, m_audiocpu, SOUND_CPU_CLOCK); + m_audiocpu->set_addrmap(AS_PROGRAM, &lkage_state::lkage_sound_map); /* IRQs are triggered by the YM2203 */ + TAITO68705_MCU(config, m_bmcu, MCU_CLOCK); /* 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(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(2*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(lkage_state, screen_update_lkage) - 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(32*8, 32*8); + screen.set_visarea(2*8, 32*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(lkage_state::screen_update_lkage)); + screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_lkage); PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 1024); - /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -523,47 +520,43 @@ MACHINE_CONFIG_START(lkage_state::lkage) INPUT_MERGER_ALL_HIGH(config, m_soundnmi).output_handler().set_inputline(m_audiocpu, INPUT_LINE_NMI); - MCFG_DEVICE_ADD("ym1", YM2203, AUDIO_CLOCK ) - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) - MCFG_SOUND_ROUTE(0, "mono", 0.15) - MCFG_SOUND_ROUTE(1, "mono", 0.15) - MCFG_SOUND_ROUTE(2, "mono", 0.15) - MCFG_SOUND_ROUTE(3, "mono", 0.40) + ym2203_device &ym1(YM2203(config, "ym1", AUDIO_CLOCK)); + ym1.irq_handler().set_inputline(m_audiocpu, 0); + ym1.add_route(0, "mono", 0.15); + ym1.add_route(1, "mono", 0.15); + ym1.add_route(2, "mono", 0.15); + ym1.add_route(3, "mono", 0.40); - MCFG_DEVICE_ADD("ym2", YM2203, AUDIO_CLOCK ) - MCFG_SOUND_ROUTE(0, "mono", 0.15) - MCFG_SOUND_ROUTE(1, "mono", 0.15) - MCFG_SOUND_ROUTE(2, "mono", 0.15) - MCFG_SOUND_ROUTE(3, "mono", 0.40) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(lkage_state::lkageb) + ym2203_device &ym2(YM2203(config, "ym2", AUDIO_CLOCK)); + ym2.add_route(0, "mono", 0.15); + ym2.add_route(1, "mono", 0.15); + ym2.add_route(2, "mono", 0.15); + ym2.add_route(3, "mono", 0.40); +} +void lkage_state::lkageb(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80,MAIN_CPU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(lkage_map_boot) - MCFG_DEVICE_IO_MAP(lkage_io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", lkage_state, irq0_line_hold) - - MCFG_DEVICE_ADD("audiocpu", Z80, SOUND_CPU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(lkage_sound_map) - /* IRQs are triggered by the YM2203 */ + Z80(config, m_maincpu, MAIN_CPU_CLOCK); + m_maincpu->set_addrmap(AS_PROGRAM, &lkage_state::lkage_map_boot); + m_maincpu->set_addrmap(AS_IO, &lkage_state::lkage_io_map); + m_maincpu->set_vblank_int("screen", FUNC(lkage_state::irq0_line_hold)); + Z80(config, m_audiocpu, SOUND_CPU_CLOCK); + m_audiocpu->set_addrmap(AS_PROGRAM, &lkage_state::lkage_sound_map); /* IRQs are triggered by the YM2203 */ /* 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(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(2*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(lkage_state, screen_update_lkage) - 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(32*8, 32*8); + screen.set_visarea(2*8, 32*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(lkage_state::screen_update_lkage)); + screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_lkage); PALETTE(config, m_palette).set_format(palette_device::xRGB_444, 1024); - /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -571,19 +564,19 @@ MACHINE_CONFIG_START(lkage_state::lkageb) INPUT_MERGER_ALL_HIGH(config, m_soundnmi).output_handler().set_inputline(m_audiocpu, INPUT_LINE_NMI); - MCFG_DEVICE_ADD("ym1", YM2203, AUDIO_CLOCK) - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) - MCFG_SOUND_ROUTE(0, "mono", 0.15) - MCFG_SOUND_ROUTE(1, "mono", 0.15) - MCFG_SOUND_ROUTE(2, "mono", 0.15) - MCFG_SOUND_ROUTE(3, "mono", 0.40) + ym2203_device &ym1(YM2203(config, "ym1", AUDIO_CLOCK)); + ym1.irq_handler().set_inputline("audiocpu", 0); + ym1.add_route(0, "mono", 0.15); + ym1.add_route(1, "mono", 0.15); + ym1.add_route(2, "mono", 0.15); + ym1.add_route(3, "mono", 0.40); - MCFG_DEVICE_ADD("ym2", YM2203, AUDIO_CLOCK) - MCFG_SOUND_ROUTE(0, "mono", 0.15) - MCFG_SOUND_ROUTE(1, "mono", 0.15) - MCFG_SOUND_ROUTE(2, "mono", 0.15) - MCFG_SOUND_ROUTE(3, "mono", 0.40) -MACHINE_CONFIG_END + ym2203_device &ym2(YM2203(config, "ym2", AUDIO_CLOCK)); + ym2.add_route(0, "mono", 0.15); + ym2.add_route(1, "mono", 0.15); + ym2.add_route(2, "mono", 0.15); + ym2.add_route(3, "mono", 0.40); +} ROM_START( lkage ) ROM_REGION( 0x14000, "maincpu", 0 ) /* Z80 code (main CPU) */ diff --git a/src/mame/drivers/megasys1.cpp b/src/mame/drivers/megasys1.cpp index 642e39daf2e..00a17eb9fe9 100644 --- a/src/mame/drivers/megasys1.cpp +++ b/src/mame/drivers/megasys1.cpp @@ -1681,31 +1681,30 @@ GFXDECODE_END /* Provided by Jim Hernandez: 3.5MHz for FM, 30KHz (!) for ADPCM */ -MACHINE_CONFIG_START(megasys1_state::system_A) - +void megasys1_state::system_A(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, SYS_A_CPU_CLOCK) /* 6MHz verified */ - MCFG_DEVICE_PROGRAM_MAP(megasys1A_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", megasys1_state, megasys1A_scanline, "screen", 0, 1) + M68000(config, m_maincpu, SYS_A_CPU_CLOCK); /* 6MHz verified */ + m_maincpu->set_addrmap(AS_PROGRAM, &megasys1_state::megasys1A_map); + TIMER(config, m_scantimer).configure_scanline(FUNC(megasys1_state::megasys1A_scanline), "screen", 0, 1); - MCFG_DEVICE_ADD("audiocpu", M68000, SOUND_CPU_CLOCK) /* 7MHz verified */ - MCFG_DEVICE_PROGRAM_MAP(megasys1A_sound_map) + M68000(config, m_audiocpu, SOUND_CPU_CLOCK); /* 7MHz verified */ + m_audiocpu->set_addrmap(AS_PROGRAM, &megasys1_state::megasys1A_sound_map); - MCFG_QUANTUM_TIME(attotime::from_hz(120000)) + config.m_minimum_quantum = attotime::from_hz(120000); MCFG_MACHINE_RESET_OVERRIDE(megasys1_state,megasys1) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - //MCFG_SCREEN_REFRESH_RATE(56.18) // same as nmk16.cpp based on YT videos. - MCFG_SCREEN_RAW_PARAMS(SYS_A_CPU_CLOCK,406,0,256,263,16,240) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + //m_screen->set_refresh_hz(56.18); // same as nmk16.cpp based on YT videos. + m_screen->set_raw(SYS_A_CPU_CLOCK,406,0,256,263,16,240); + m_screen->set_screen_update(FUNC(megasys1_state::screen_update)); + m_screen->screen_vblank().set(FUNC(megasys1_state::screen_vblank)); + m_screen->set_palette(m_palette); + m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE); - MCFG_SCREEN_UPDATE_DRIVER(megasys1_state, screen_update) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, megasys1_state, screen_vblank)) - MCFG_SCREEN_PALETTE(m_palette) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) - - MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_abc) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_abc); PALETTE(config, m_palette, FUNC(megasys1_state::megasys1_palette)).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024); MCFG_VIDEO_START_OVERRIDE(megasys1_state,megasys1) @@ -1725,25 +1724,26 @@ MACHINE_CONFIG_START(megasys1_state::system_A) ymsnd.add_route(0, "lspeaker", 0.80); ymsnd.add_route(1, "rspeaker", 0.80); - MCFG_DEVICE_ADD("oki1", OKIM6295, OKI4_SOUND_CLOCK, okim6295_device::PIN7_HIGH) /* 4MHz verified */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30) + OKIM6295(config, m_oki1, OKI4_SOUND_CLOCK, okim6295_device::PIN7_HIGH); /* 4MHz verified */ + m_oki1->add_route(ALL_OUTPUTS, "lspeaker", 0.30); + m_oki1->add_route(ALL_OUTPUTS, "rspeaker", 0.30); - MCFG_DEVICE_ADD("oki2", OKIM6295, OKI4_SOUND_CLOCK, okim6295_device::PIN7_HIGH) /* 4MHz verified */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30) -MACHINE_CONFIG_END + OKIM6295(config, m_oki2, OKI4_SOUND_CLOCK, okim6295_device::PIN7_HIGH); /* 4MHz verified */ + m_oki2->add_route(ALL_OUTPUTS, "lspeaker", 0.30); + m_oki2->add_route(ALL_OUTPUTS, "rspeaker", 0.30); +} -MACHINE_CONFIG_START(megasys1_state::system_A_hachoo) +void megasys1_state::system_A_hachoo(machine_config &config) +{ system_A(config); MCFG_MACHINE_RESET_OVERRIDE(megasys1_state,megasys1_hachoo) -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(megasys1_state::system_A_iganinju) +void megasys1_state::system_A_iganinju(machine_config &config) +{ system_A(config); - config.device_remove("scantimer"); - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", megasys1_state, megasys1A_iganinju_scanline, "screen", 0, 1) -MACHINE_CONFIG_END + TIMER(config.replace(), m_scantimer).configure_scanline(FUNC(megasys1_state::megasys1A_iganinju_scanline), "screen", 0, 1); +} void megasys1_state::system_A_soldam(machine_config &config) { @@ -1752,63 +1752,60 @@ void megasys1_state::system_A_soldam(machine_config &config) m_tmap[1]->set_8x8_scroll_factor(4); } -MACHINE_CONFIG_START(megasys1_state::kickoffb) +void megasys1_state::kickoffb(machine_config &config) +{ system_A(config); - MCFG_DEVICE_MODIFY("audiocpu") - MCFG_DEVICE_PROGRAM_MAP(kickoffb_sound_map) + m_audiocpu->set_addrmap(AS_PROGRAM, &megasys1_state::kickoffb_sound_map); config.device_remove("ymsnd"); config.device_remove("oki2"); - MCFG_DEVICE_ADD("ymsnd", YM2203, SOUND_CPU_CLOCK / 2) - MCFG_YM2203_IRQ_HANDLER(WRITELINE(*this, megasys1_state, sound_irq)) // TODO: needs to be checked - MCFG_SOUND_ROUTE(0, "lspeaker", 0.80) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.80) -MACHINE_CONFIG_END + ym2203_device &ymsnd(YM2203(config, "ymsnd", SOUND_CPU_CLOCK / 2)); + ymsnd.irq_handler().set(FUNC(megasys1_state::sound_irq)); // TODO: needs to be checked + ymsnd.add_route(0, "lspeaker", 0.80); + ymsnd.add_route(1, "rspeaker", 0.80); +} -MACHINE_CONFIG_START(megasys1_state::system_B) +void megasys1_state::system_B(machine_config &config) +{ system_A(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_CLOCK(SYS_B_CPU_CLOCK) /* 8MHz */ - MCFG_DEVICE_PROGRAM_MAP(megasys1B_map) - MCFG_TIMER_MODIFY("scantimer") - MCFG_TIMER_DRIVER_CALLBACK(megasys1_state, megasys1B_scanline) + m_maincpu->set_clock(SYS_B_CPU_CLOCK); /* 8MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &megasys1_state::megasys1B_map); + m_scantimer->set_callback(FUNC(megasys1_state::megasys1B_scanline)); - MCFG_DEVICE_MODIFY("audiocpu") - MCFG_DEVICE_PROGRAM_MAP(megasys1B_sound_map) -MACHINE_CONFIG_END + m_audiocpu->set_addrmap(AS_PROGRAM, &megasys1_state::megasys1B_sound_map); +} - -MACHINE_CONFIG_START(megasys1_state::system_B_monkelf) +void megasys1_state::system_B_monkelf(machine_config &config) +{ system_B(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(megasys1B_monkelf_map) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(megasys1_state::system_Bbl) + m_maincpu->set_addrmap(AS_PROGRAM, &megasys1_state::megasys1B_monkelf_map); +} +void megasys1_state::system_Bbl(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, SYS_B_CPU_CLOCK) - MCFG_DEVICE_PROGRAM_MAP(megasys1B_edfbl_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", megasys1_state, megasys1B_scanline, "screen", 0, 1) + M68000(config, m_maincpu, SYS_B_CPU_CLOCK); + m_maincpu->set_addrmap(AS_PROGRAM, &megasys1_state::megasys1B_edfbl_map); + TIMER(config, m_scantimer).configure_scanline(FUNC(megasys1_state::megasys1B_scanline), "screen", 0, 1); MCFG_MACHINE_RESET_OVERRIDE(megasys1_state,megasys1) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(56.18) // same as nmk16.cpp based on YT videos. - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(megasys1_state, screen_update) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, megasys1_state, screen_vblank)) - MCFG_SCREEN_PALETTE(m_palette) - MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_ALWAYS_UPDATE) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(56.18); // same as nmk16.cpp based on YT videos. + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(megasys1_state::screen_update)); + m_screen->screen_vblank().set(FUNC(megasys1_state::screen_vblank)); + m_screen->set_palette(m_palette); + m_screen->set_video_attributes(VIDEO_ALWAYS_UPDATE); - MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_abc) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_abc); PALETTE(config, m_palette, FUNC(megasys1_state::megasys1_palette)).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024); MCFG_VIDEO_START_OVERRIDE(megasys1_state,megasys1) @@ -1821,39 +1818,37 @@ MACHINE_CONFIG_START(megasys1_state::system_Bbl) SPEAKER(config, "rspeaker").front_right(); /* just the one OKI, used for sound and music */ - MCFG_DEVICE_ADD("oki1", OKIM6295, OKI4_SOUND_CLOCK, okim6295_device::PIN7_HIGH) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30) -MACHINE_CONFIG_END + OKIM6295(config, m_oki1, OKI4_SOUND_CLOCK, okim6295_device::PIN7_HIGH); + m_oki1->add_route(ALL_OUTPUTS, "lspeaker", 0.30); + m_oki1->add_route(ALL_OUTPUTS, "rspeaker", 0.30); +} -MACHINE_CONFIG_START(megasys1_state::system_B_hayaosi1) +void megasys1_state::system_B_hayaosi1(machine_config &config) +{ system_B(config); /* basic machine hardware */ - MCFG_DEVICE_REPLACE("oki1", OKIM6295, 2000000, okim6295_device::PIN7_HIGH) /* correct speed, but unknown OSC + divider combo */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30) + OKIM6295(config.replace(), m_oki1, 2000000, okim6295_device::PIN7_HIGH); /* correct speed, but unknown OSC + divider combo */ + m_oki1->add_route(ALL_OUTPUTS, "lspeaker", 0.30); + m_oki1->add_route(ALL_OUTPUTS, "rspeaker", 0.30); - MCFG_DEVICE_REPLACE("oki2", OKIM6295, 2000000, okim6295_device::PIN7_HIGH) /* correct speed, but unknown OSC + divider combo */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.30) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.30) -MACHINE_CONFIG_END + OKIM6295(config.replace(), m_oki2, 2000000, okim6295_device::PIN7_HIGH); /* correct speed, but unknown OSC + divider combo */ + m_oki2->add_route(ALL_OUTPUTS, "lspeaker", 0.30); + m_oki2->add_route(ALL_OUTPUTS, "rspeaker", 0.30); +} - -MACHINE_CONFIG_START(megasys1_state::system_C) +void megasys1_state::system_C(machine_config &config) +{ system_A(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_CLOCK(SYS_C_CPU_CLOCK) /* 12MHz */ - MCFG_DEVICE_PROGRAM_MAP(megasys1C_map) - MCFG_TIMER_MODIFY("scantimer") - MCFG_TIMER_DRIVER_CALLBACK(megasys1_state, megasys1B_scanline) + m_maincpu->set_clock(SYS_C_CPU_CLOCK); /* 12MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &megasys1_state::megasys1C_map); + m_scantimer->set_callback(FUNC(megasys1_state::megasys1B_scanline)); - MCFG_DEVICE_MODIFY("audiocpu") - MCFG_DEVICE_PROGRAM_MAP(megasys1B_sound_map) -MACHINE_CONFIG_END + m_audiocpu->set_addrmap(AS_PROGRAM, &megasys1_state::megasys1B_sound_map); +} /*************************************************************************** @@ -1867,26 +1862,26 @@ MACHINE_CONFIG_END ***************************************************************************/ -MACHINE_CONFIG_START(megasys1_state::system_D) - +void megasys1_state::system_D(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, SYS_D_CPU_CLOCK) /* 8MHz */ - MCFG_DEVICE_PROGRAM_MAP(megasys1D_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", megasys1_state, megasys1D_irq) + M68000(config, m_maincpu, SYS_D_CPU_CLOCK); /* 8MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &megasys1_state::megasys1D_map); + m_maincpu->set_vblank_int("screen", FUNC(megasys1_state::megasys1D_irq)); MCFG_MACHINE_RESET_OVERRIDE(megasys1_state,megasys1) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(56.18) // same as nmk16.cpp based on YT videos. - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(megasys1_state, screen_update) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, megasys1_state, screen_vblank)) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(56.18); // same as nmk16.cpp based on YT videos. + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(megasys1_state::screen_update)); + m_screen->screen_vblank().set(FUNC(megasys1_state::screen_vblank)); + m_screen->set_palette(m_palette); - MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_abc) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_abc); PALETTE(config, m_palette, FUNC(megasys1_state::megasys1_palette)).set_format(palette_device::RGBx_555, 1024); MCFG_VIDEO_START_OVERRIDE(megasys1_state,megasys1) @@ -1896,10 +1891,10 @@ MACHINE_CONFIG_START(megasys1_state::system_D) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("oki1", OKIM6295, SYS_D_CPU_CLOCK/4, okim6295_device::PIN7_HIGH) /* 2MHz (8MHz / 4) */ - MCFG_DEVICE_ADDRESS_MAP(0, megasys1D_oki_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + OKIM6295(config, m_oki1, SYS_D_CPU_CLOCK/4, okim6295_device::PIN7_HIGH); /* 2MHz (8MHz / 4) */ + m_oki1->set_addrmap(0, &megasys1_state::megasys1D_oki_map); + m_oki1->add_route(ALL_OUTPUTS, "mono", 1.0); +} @@ -1915,27 +1910,27 @@ MACHINE_CONFIG_END ***************************************************************************/ -MACHINE_CONFIG_START(megasys1_state::system_Z) - +void megasys1_state::system_Z(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, SYS_A_CPU_CLOCK) /* 6MHz (12MHz / 2) */ - MCFG_DEVICE_PROGRAM_MAP(megasys1Z_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", megasys1_state, megasys1A_scanline, "screen", 0, 1) + M68000(config, m_maincpu, SYS_A_CPU_CLOCK); /* 6MHz (12MHz / 2) */ + m_maincpu->set_addrmap(AS_PROGRAM, &megasys1_state::megasys1Z_map); + TIMER(config, m_scantimer).configure_scanline(FUNC(megasys1_state::megasys1A_scanline), "screen", 0, 1); - MCFG_DEVICE_ADD("audiocpu", Z80, 3000000) /* OSC 12MHz divided by 4 ??? */ - MCFG_DEVICE_PROGRAM_MAP(z80_sound_map) - MCFG_DEVICE_IO_MAP(z80_sound_io_map) + Z80(config, m_audiocpu, 3000000); /* OSC 12MHz divided by 4 ??? */ + m_audiocpu->set_addrmap(AS_PROGRAM, &megasys1_state::z80_sound_map); + m_audiocpu->set_addrmap(AS_IO, &megasys1_state::z80_sound_io_map); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(56.18) // same as nmk16.cpp based on YT videos. - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(32*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(megasys1_state, screen_update) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(56.18); // same as nmk16.cpp based on YT videos. + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_screen_update(FUNC(megasys1_state::screen_update)); + m_screen->set_palette(m_palette); - MCFG_DEVICE_ADD(m_gfxdecode, GFXDECODE, m_palette, gfx_z) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_z); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 768); MCFG_VIDEO_START_OVERRIDE(megasys1_state,megasys1) @@ -1948,10 +1943,10 @@ MACHINE_CONFIG_START(megasys1_state::system_Z) GENERIC_LATCH_8(config, m_soundlatch_z); - MCFG_DEVICE_ADD("ymsnd", YM2203, 1500000) - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + ym2203_device &ymsnd(YM2203(config, "ymsnd", 1500000)); + ymsnd.irq_handler().set_inputline(m_audiocpu, 0); + ymsnd.add_route(ALL_OUTPUTS, "mono", 0.50); +} /************************************* diff --git a/src/mame/drivers/nmk16.cpp b/src/mame/drivers/nmk16.cpp index 7e7cb1b77d7..04fe51922c5 100644 --- a/src/mame/drivers/nmk16.cpp +++ b/src/mame/drivers/nmk16.cpp @@ -3998,39 +3998,45 @@ TIMER_DEVICE_CALLBACK_MEMBER(nmk16_state::nmk16_scanline) m_maincpu->set_input_line(1, HOLD_LINE); } -#define NMK_HACKY_INTERRUPT_TIMING \ - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", nmk16_state, nmk16_scanline, "screen", 0, 1) -#define NMK_HACKY_SCREEN_LOWRES \ - MCFG_SCREEN_ADD("screen", RASTER) \ - MCFG_SCREEN_REFRESH_RATE(56.18) \ - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3450)) \ - MCFG_SCREEN_SIZE(256, 256) \ - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) \ - MCFG_SCREEN_PALETTE("palette") +void nmk16_state::set_hacky_interrupt_timing(machine_config &config) +{ + TIMER(config, "scantimer").configure_scanline(FUNC(nmk16_state::nmk16_scanline), "screen", 0, 1); +} -#define NMK_HACKY_SCREEN_HIRES \ - MCFG_SCREEN_ADD("screen", RASTER) \ - MCFG_SCREEN_REFRESH_RATE(56.18) \ - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(3450)) \ - MCFG_SCREEN_SIZE(512, 256) \ - MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 30*8-1) \ - MCFG_SCREEN_PALETTE("palette") +void nmk16_state::set_hacky_screen_lowres(machine_config &config) +{ + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(56.18); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(3450)); + m_screen->set_size(256, 256); + m_screen->set_visarea(0*8, 32*8-1, 2*8, 30*8-1); + m_screen->set_palette(m_palette); +} +void nmk16_state::set_hacky_screen_hires(machine_config &config) +{ + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(56.18); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(3450)); + m_screen->set_size(512, 256); + m_screen->set_visarea(0*8, 48*8-1, 2*8, 30*8-1); + m_screen->set_palette(m_palette); +} -MACHINE_CONFIG_START(nmk16_state::tharrier) - +void nmk16_state::tharrier(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 10_MHz_XTAL) // TMP68000P-12, 10 MHz - MCFG_DEVICE_PROGRAM_MAP(tharrier_map) - NMK_HACKY_INTERRUPT_TIMING + M68000(config, m_maincpu, 10_MHz_XTAL); // TMP68000P-12, 10 MHz + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::tharrier_map); + set_hacky_interrupt_timing(config); - MCFG_DEVICE_ADD("audiocpu", Z80, 3000000) // Z0840006PSC, Unknown MHz - MCFG_DEVICE_PROGRAM_MAP(tharrier_sound_map) - MCFG_DEVICE_IO_MAP(tharrier_sound_io_map) + Z80(config, m_audiocpu, 3000000); // Z0840006PSC, Unknown MHz + m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_state::tharrier_sound_map); + m_audiocpu->set_addrmap(AS_IO, &nmk16_state::tharrier_sound_io_map); /* video hardware */ - NMK_HACKY_SCREEN_LOWRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_tharrier) + set_hacky_screen_lowres(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_tharrier)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_tharrier); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 512); @@ -4042,36 +4048,35 @@ MACHINE_CONFIG_START(nmk16_state::tharrier) GENERIC_LATCH_8(config, m_soundlatch); GENERIC_LATCH_8(config, "soundlatch2"); - MCFG_DEVICE_ADD("ymsnd", YM2203, 12_MHz_XTAL / 8) - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) - MCFG_SOUND_ROUTE(0, "mono", 0.50) - MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_SOUND_ROUTE(2, "mono", 0.50) - MCFG_SOUND_ROUTE(3, "mono", 1.20) + ym2203_device &ymsnd(YM2203(config, "ymsnd", 12_MHz_XTAL / 8)); + ymsnd.irq_handler().set_inputline("audiocpu", 0); + ymsnd.add_route(0, "mono", 0.50); + ymsnd.add_route(1, "mono", 0.50); + ymsnd.add_route(2, "mono", 0.50); + ymsnd.add_route(3, "mono", 1.20); - MCFG_DEVICE_ADD("oki1", OKIM6295, 4_MHz_XTAL, okim6295_device::PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) + OKIM6295(config, m_oki[0], 4_MHz_XTAL, okim6295_device::PIN7_LOW); + m_oki[0]->set_addrmap(0, &nmk16_state::oki1_map); + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.10); - MCFG_DEVICE_ADD("oki2", OKIM6295, 4_MHz_XTAL, okim6295_device::PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nmk16_state::mustang) + OKIM6295(config, m_oki[1], 4_MHz_XTAL, okim6295_device::PIN7_LOW); + m_oki[1]->set_addrmap(0, &nmk16_state::oki2_map); + m_oki[1]->add_route(ALL_OUTPUTS, "mono", 0.10); +} +void nmk16_state::mustang(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 10000000) /* 10 MHz ? */ - MCFG_DEVICE_PROGRAM_MAP(mustang_map) - NMK_HACKY_INTERRUPT_TIMING + M68000(config, m_maincpu, 10000000); /* 10 MHz ? */ + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::mustang_map); + set_hacky_interrupt_timing(config); /* video hardware */ - NMK_HACKY_SCREEN_LOWRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross) + set_hacky_screen_lowres(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross) /* sound hardware */ @@ -4080,51 +4085,49 @@ MACHINE_CONFIG_START(nmk16_state::mustang) NMK004(config, m_nmk004, 8000000); m_nmk004->reset_cb().set_inputline(m_maincpu, INPUT_LINE_RESET); - MCFG_DEVICE_ADD("ymsnd", YM2203, 1500000) - MCFG_YM2203_IRQ_HANDLER(WRITELINE("nmk004", nmk004_device, ym2203_irq_handler)) - MCFG_SOUND_ROUTE(0, "mono", 0.50) - MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_SOUND_ROUTE(2, "mono", 0.50) - MCFG_SOUND_ROUTE(3, "mono", 1.20) + ym2203_device &ymsnd(YM2203(config, "ymsnd", 1500000)); + ymsnd.irq_handler().set("nmk004", FUNC(nmk004_device::ym2203_irq_handler)); + ymsnd.add_route(0, "mono", 0.50); + ymsnd.add_route(1, "mono", 0.50); + ymsnd.add_route(2, "mono", 0.50); + ymsnd.add_route(3, "mono", 1.20); - MCFG_DEVICE_ADD("oki1", OKIM6295, 16000000/4, okim6295_device::PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) + OKIM6295(config, m_oki[0], 16000000/4, okim6295_device::PIN7_LOW); + m_oki[0]->set_addrmap(0, &nmk16_state::oki1_map); + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.10); - MCFG_DEVICE_ADD("oki2", OKIM6295, 16000000/4, okim6295_device::PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nmk16_state::mustangb) + OKIM6295(config, m_oki[1], 16000000/4, okim6295_device::PIN7_LOW); + m_oki[1]->set_addrmap(0, &nmk16_state::oki2_map); + m_oki[1]->add_route(ALL_OUTPUTS, "mono", 0.10); +} +void nmk16_state::mustangb(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 10000000) /* 10 MHz ? */ - MCFG_DEVICE_PROGRAM_MAP(mustangb_map) - NMK_HACKY_INTERRUPT_TIMING + M68000(config, m_maincpu, 10000000); /* 10 MHz ? */ + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::mustangb_map); + set_hacky_interrupt_timing(config); - MCFG_DEVICE_ADD("audiocpu", Z80, 14318180/4) - MCFG_DEVICE_PROGRAM_MAP(seibu_sound_map) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("seibu_sound", seibu_sound_device, im0_vector_cb) + Z80(config, m_audiocpu, 14318180/4); + m_audiocpu->set_addrmap(AS_PROGRAM, &seibu_sound_common::seibu_sound_map); + m_audiocpu->set_irq_acknowledge_callback("seibu_sound", FUNC(seibu_sound_device::im0_vector_cb)); /* video hardware */ - NMK_HACKY_SCREEN_LOWRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross) + set_hacky_screen_lowres(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("ymsnd", YM3812, 14318180/4) - MCFG_YM3812_IRQ_HANDLER(WRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + ym3812_device &ymsnd(YM3812(config, "ymsnd", 14318180/4)); + ymsnd.irq_handler().set("seibu_sound", FUNC(seibu_sound_device::fm_irqhandler)); + ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0); - MCFG_DEVICE_ADD("oki", OKIM6295, 1320000, okim6295_device::PIN7_LOW) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) + OKIM6295(config, "oki", 1320000, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 0.40); seibu_sound_device &seibu_sound(SEIBU_SOUND(config, "seibu_sound", 0)); seibu_sound.int_callback().set_inputline(m_audiocpu, 0); @@ -4132,25 +4135,24 @@ MACHINE_CONFIG_START(nmk16_state::mustangb) seibu_sound.set_rombank_tag("seibu_bank1"); seibu_sound.ym_read_callback().set("ymsnd", FUNC(ym3812_device::read)); seibu_sound.ym_write_callback().set("ymsnd", FUNC(ym3812_device::write)); -MACHINE_CONFIG_END +} #define BIOSHIP_CRYSTAL1 10000000 #define BIOSHIP_CRYSTAL2 12000000 -MACHINE_CONFIG_START(nmk16_state::bioship) - +void nmk16_state::bioship(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, BIOSHIP_CRYSTAL1 ) /* 10.0 MHz (verified) */ - MCFG_DEVICE_PROGRAM_MAP(bioship_map) - NMK_HACKY_INTERRUPT_TIMING + M68000(config, m_maincpu, BIOSHIP_CRYSTAL1); /* 10.0 MHz (verified) */ + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::bioship_map); + set_hacky_interrupt_timing(config); /* video hardware */ - NMK_HACKY_SCREEN_LOWRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_strahl) + set_hacky_screen_lowres(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_strahl)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_bioship); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,bioship) /* sound hardware */ @@ -4159,36 +4161,35 @@ MACHINE_CONFIG_START(nmk16_state::bioship) NMK004(config, m_nmk004, 8000000); m_nmk004->reset_cb().set_inputline(m_maincpu, INPUT_LINE_RESET); - MCFG_DEVICE_ADD("ymsnd", YM2203, BIOSHIP_CRYSTAL2 / 8) /* 1.5 Mhz (verified) */ - MCFG_YM2203_IRQ_HANDLER(WRITELINE("nmk004", nmk004_device, ym2203_irq_handler)) - MCFG_SOUND_ROUTE(0, "mono", 0.50) - MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_SOUND_ROUTE(2, "mono", 0.50) - MCFG_SOUND_ROUTE(3, "mono", 1.20) + ym2203_device &ymsnd(YM2203(config, "ymsnd", BIOSHIP_CRYSTAL2 / 8)); /* 1.5 Mhz (verified) */ + ymsnd.irq_handler().set("nmk004", FUNC(nmk004_device::ym2203_irq_handler)); + ymsnd.add_route(0, "mono", 0.50); + ymsnd.add_route(1, "mono", 0.50); + ymsnd.add_route(2, "mono", 0.50); + ymsnd.add_route(3, "mono", 1.20); - MCFG_DEVICE_ADD("oki1", OKIM6295, BIOSHIP_CRYSTAL2 / 3 , okim6295_device::PIN7_LOW) /* 4.0 Mhz, Pin 7 High (verified) */ - MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) + OKIM6295(config, m_oki[0], BIOSHIP_CRYSTAL2 / 3 , okim6295_device::PIN7_LOW); /* 4.0 Mhz, Pin 7 High (verified) */ + m_oki[0]->set_addrmap(0, &nmk16_state::oki1_map); + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.10); - MCFG_DEVICE_ADD("oki2", OKIM6295, BIOSHIP_CRYSTAL2 / 3 , okim6295_device::PIN7_LOW) /* 4.0 Mhz, Pin 7 High (verified) */ - MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nmk16_state::vandyke) + OKIM6295(config, m_oki[1], BIOSHIP_CRYSTAL2 / 3 , okim6295_device::PIN7_LOW); /* 4.0 Mhz, Pin 7 High (verified) */ + m_oki[1]->set_addrmap(0, &nmk16_state::oki2_map); + m_oki[1]->add_route(ALL_OUTPUTS, "mono", 0.10); +} +void nmk16_state::vandyke(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, XTAL(10'000'000)) /* 68000p12 running at 10Mhz, verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(vandyke_map) - NMK_HACKY_INTERRUPT_TIMING + M68000(config, m_maincpu, XTAL(10'000'000)); /* 68000p12 running at 10Mhz, verified on pcb */ + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::vandyke_map); + set_hacky_interrupt_timing(config); /* video hardware */ - NMK_HACKY_SCREEN_LOWRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross) + set_hacky_screen_lowres(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross) /* sound hardware */ @@ -4197,63 +4198,60 @@ MACHINE_CONFIG_START(nmk16_state::vandyke) NMK004(config, m_nmk004, 8000000); m_nmk004->reset_cb().set_inputline(m_maincpu, INPUT_LINE_RESET); - MCFG_DEVICE_ADD("ymsnd", YM2203, XTAL(12'000'000)/8) /* verified on pcb */ - MCFG_YM2203_IRQ_HANDLER(WRITELINE("nmk004", nmk004_device, ym2203_irq_handler)) - MCFG_SOUND_ROUTE(0, "mono", 0.50) - MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_SOUND_ROUTE(2, "mono", 0.50) - MCFG_SOUND_ROUTE(3, "mono", 1.20) + ym2203_device &ymsnd(YM2203(config, "ymsnd", XTAL(12'000'000)/8)); /* verified on pcb */ + ymsnd.irq_handler().set("nmk004", FUNC(nmk004_device::ym2203_irq_handler)); + ymsnd.add_route(0, "mono", 0.50); + ymsnd.add_route(1, "mono", 0.50); + ymsnd.add_route(2, "mono", 0.50); + ymsnd.add_route(3, "mono", 1.20); - MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(12'000'000)/3, okim6295_device::PIN7_LOW) /* verified on pcb */ - MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) + OKIM6295(config, m_oki[0], XTAL(12'000'000)/3, okim6295_device::PIN7_LOW); /* verified on pcb */ + m_oki[0]->set_addrmap(0, &nmk16_state::oki1_map); + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.10); - MCFG_DEVICE_ADD("oki2", OKIM6295, XTAL(12'000'000)/3, okim6295_device::PIN7_LOW) /* verified on pcb */ - MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nmk16_state::vandykeb) + OKIM6295(config, m_oki[1], XTAL(12'000'000)/3, okim6295_device::PIN7_LOW); /* verified on pcb */ + m_oki[1]->set_addrmap(0, &nmk16_state::oki2_map); + m_oki[1]->add_route(ALL_OUTPUTS, "mono", 0.10); +} +void nmk16_state::vandykeb(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 10000000) /* 10 MHz ? */ - MCFG_DEVICE_PROGRAM_MAP(vandykeb_map) - NMK_HACKY_INTERRUPT_TIMING + M68000(config, m_maincpu, 10000000); /* 10 MHz ? */ + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::vandykeb_map); + set_hacky_interrupt_timing(config); - MCFG_DEVICE_ADD("mcu", PIC16C57, 12000000) /* 3MHz */ - MCFG_DEVICE_DISABLE() + PIC16C57(config, "mcu", 12000000).set_disable(); /* 3MHz */ /* video hardware */ - NMK_HACKY_SCREEN_LOWRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross) + set_hacky_screen_lowres(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("oki1", OKIM6295, 16000000/16, okim6295_device::PIN7_LOW) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) - MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nmk16_state::acrobatm) + OKIM6295(config, m_oki[0], 16000000/16, okim6295_device::PIN7_LOW); + m_oki[0]->set_addrmap(0, &nmk16_state::oki1_map); + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.20); +} +void nmk16_state::acrobatm(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 10000000) /* 10 MHz (verified on pcb) */ - MCFG_DEVICE_PROGRAM_MAP(acrobatm_map) - NMK_HACKY_INTERRUPT_TIMING + M68000(config, m_maincpu, 10000000); /* 10 MHz (verified on pcb) */ + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::acrobatm_map); + set_hacky_interrupt_timing(config); /* video hardware */ - NMK_HACKY_SCREEN_LOWRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross) + set_hacky_screen_lowres(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 768); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross) /* sound hardware */ @@ -4262,52 +4260,49 @@ MACHINE_CONFIG_START(nmk16_state::acrobatm) NMK004(config, m_nmk004, 8000000); m_nmk004->reset_cb().set_inputline(m_maincpu, INPUT_LINE_RESET); - MCFG_DEVICE_ADD("ymsnd", YM2203, 1500000) /* (verified on pcb) */ - MCFG_YM2203_IRQ_HANDLER(WRITELINE("nmk004", nmk004_device, ym2203_irq_handler)) - MCFG_SOUND_ROUTE(0, "mono", 0.50) - MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_SOUND_ROUTE(2, "mono", 0.50) - MCFG_SOUND_ROUTE(3, "mono", 1.20) + ym2203_device &ymsnd(YM2203(config, "ymsnd", 1500000)); /* (verified on pcb) */ + ymsnd.irq_handler().set("nmk004", FUNC(nmk004_device::ym2203_irq_handler)); + ymsnd.add_route(0, "mono", 0.50); + ymsnd.add_route(1, "mono", 0.50); + ymsnd.add_route(2, "mono", 0.50); + ymsnd.add_route(3, "mono", 1.20); - MCFG_DEVICE_ADD("oki1", OKIM6295, 16000000/4, okim6295_device::PIN7_LOW) /* (verified on pcb) on the pcb pin7 is not connected to gnd or +5v! */ - MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) + OKIM6295(config, m_oki[0], 16000000/4, okim6295_device::PIN7_LOW); /* (verified on pcb) on the pcb pin7 is not connected to gnd or +5v! */ + m_oki[0]->set_addrmap(0, &nmk16_state::oki1_map); + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.10); - MCFG_DEVICE_ADD("oki2", OKIM6295, 16000000/4, okim6295_device::PIN7_LOW) /* (verified on pcb) on the pcb pin7 is not connected to gnd or +5v! */ - MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(nmk16_state::tdragonb) /* bootleg using Raiden sound hardware */ + OKIM6295(config, m_oki[1], 16000000/4, okim6295_device::PIN7_LOW); /* (verified on pcb) on the pcb pin7 is not connected to gnd or +5v! */ + m_oki[1]->set_addrmap(0, &nmk16_state::oki2_map); + m_oki[1]->add_route(ALL_OUTPUTS, "mono", 0.10); +} +void nmk16_state::tdragonb(machine_config &config) /* bootleg using Raiden sound hardware */ +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 10000000) - MCFG_DEVICE_PROGRAM_MAP(tdragonb_map) - NMK_HACKY_INTERRUPT_TIMING + M68000(config, m_maincpu, 10000000); + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::tdragonb_map); + set_hacky_interrupt_timing(config); - MCFG_DEVICE_ADD("audiocpu", Z80, 14318180/4) - MCFG_DEVICE_PROGRAM_MAP(seibu_sound_map) - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("seibu_sound", seibu_sound_device, im0_vector_cb) + Z80(config, m_audiocpu, 14318180/4); + m_audiocpu->set_addrmap(AS_PROGRAM, &seibu_sound_common::seibu_sound_map); + m_audiocpu->set_irq_acknowledge_callback("seibu_sound", FUNC(seibu_sound_device::im0_vector_cb)); /* video hardware */ - NMK_HACKY_SCREEN_LOWRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross) + set_hacky_screen_lowres(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("ymsnd", YM3812, 14318180/4) - MCFG_YM3812_IRQ_HANDLER(WRITELINE("seibu_sound", seibu_sound_device, fm_irqhandler)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + ym3812_device &ymsnd(YM3812(config, "ymsnd", 14318180/4)); + ymsnd.irq_handler().set("seibu_sound", FUNC(seibu_sound_device::fm_irqhandler)); + ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0); - MCFG_DEVICE_ADD("oki", OKIM6295, 1320000, okim6295_device::PIN7_LOW) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.40) + OKIM6295(config, "oki", 1320000, okim6295_device::PIN7_LOW).add_route(ALL_OUTPUTS, "mono", 0.40); seibu_sound_device &seibu_sound(SEIBU_SOUND(config, "seibu_sound", 0)); seibu_sound.int_callback().set_inputline(m_audiocpu, 0); @@ -4315,22 +4310,21 @@ MACHINE_CONFIG_START(nmk16_state::tdragonb) /* bootleg using Raiden sound har seibu_sound.set_rombank_tag("seibu_bank1"); seibu_sound.ym_read_callback().set("ymsnd", FUNC(ym3812_device::read)); seibu_sound.ym_write_callback().set("ymsnd", FUNC(ym3812_device::write)); -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nmk16_state::tdragon) +} +void nmk16_state::tdragon(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, XTAL(8'000'000)) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(tdragon_map) - NMK_HACKY_INTERRUPT_TIMING + M68000(config, m_maincpu, XTAL(8'000'000)); /* verified on pcb */ + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::tdragon_map); + set_hacky_interrupt_timing(config); /* video hardware */ - NMK_HACKY_SCREEN_LOWRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross) + set_hacky_screen_lowres(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross) /* sound hardware */ @@ -4339,44 +4333,44 @@ MACHINE_CONFIG_START(nmk16_state::tdragon) NMK004(config, m_nmk004, 8000000); m_nmk004->reset_cb().set_inputline(m_maincpu, INPUT_LINE_RESET); - MCFG_DEVICE_ADD("ymsnd", YM2203, XTAL(12'000'000)/8) /* verified on pcb */ - MCFG_YM2203_IRQ_HANDLER(WRITELINE("nmk004", nmk004_device, ym2203_irq_handler)) - MCFG_SOUND_ROUTE(0, "mono", 0.50) - MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_SOUND_ROUTE(2, "mono", 0.50) - MCFG_SOUND_ROUTE(3, "mono", 1.20) + ym2203_device &ymsnd(YM2203(config, "ymsnd", XTAL(12'000'000)/8)); /* verified on pcb */ + ymsnd.irq_handler().set("nmk004", FUNC(nmk004_device::ym2203_irq_handler)); + ymsnd.add_route(0, "mono", 0.50); + ymsnd.add_route(1, "mono", 0.50); + ymsnd.add_route(2, "mono", 0.50); + ymsnd.add_route(3, "mono", 1.20); - MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(8'000'000)/2, okim6295_device::PIN7_LOW) /* verified on pcb */ - MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) + OKIM6295(config, m_oki[0], XTAL(8'000'000)/2, okim6295_device::PIN7_LOW); /* verified on pcb */ + m_oki[0]->set_addrmap(0, &nmk16_state::oki1_map); + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.10); - MCFG_DEVICE_ADD("oki2", OKIM6295, XTAL(8'000'000)/2, okim6295_device::PIN7_LOW) /* verified on pcb */ - MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) -MACHINE_CONFIG_END + OKIM6295(config, m_oki[1], XTAL(8'000'000)/2, okim6295_device::PIN7_LOW); /* verified on pcb */ + m_oki[1]->set_addrmap(0, &nmk16_state::oki2_map); + m_oki[1]->add_route(ALL_OUTPUTS, "mono", 0.10); +} -MACHINE_CONFIG_START(nmk16_state::tdragon_prot) +void nmk16_state::tdragon_prot(machine_config &config) +{ tdragon(config); - MCFG_TIMER_DRIVER_ADD_PERIODIC("coinsim", nmk16_state, tdragon_mcu_sim, attotime::from_hz(10000)) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nmk16_state::ssmissin) + TIMER(config, "coinsim").configure_periodic(FUNC(nmk16_state::tdragon_mcu_sim), attotime::from_hz(10000)); +} +void nmk16_state::ssmissin(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 8000000) /* 8 Mhz */ - MCFG_DEVICE_PROGRAM_MAP(ssmissin_map) - NMK_HACKY_INTERRUPT_TIMING + M68000(config, m_maincpu, 8000000); /* 8 Mhz */ + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::ssmissin_map); + set_hacky_interrupt_timing(config); - MCFG_DEVICE_ADD("audiocpu", Z80, 8000000/2) /* 4 Mhz */ - MCFG_DEVICE_PROGRAM_MAP(ssmissin_sound_map) + Z80(config, m_audiocpu, 8000000/2); /* 4 Mhz */ + m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_state::ssmissin_sound_map); /* video hardware */ - NMK_HACKY_SCREEN_LOWRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross) + set_hacky_screen_lowres(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross) /* sound hardware */ @@ -4385,26 +4379,24 @@ MACHINE_CONFIG_START(nmk16_state::ssmissin) GENERIC_LATCH_8(config, m_soundlatch); m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0); - MCFG_DEVICE_ADD("oki1", OKIM6295, 8000000/8, okim6295_device::PIN7_HIGH) /* 1 Mhz, pin 7 high */ - MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nmk16_state::strahl) + OKIM6295(config, m_oki[0], 8000000/8, okim6295_device::PIN7_HIGH); /* 1 Mhz, pin 7 high */ + m_oki[0]->set_addrmap(0, &nmk16_state::oki1_map); + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.0); +} +void nmk16_state::strahl(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 12000000) /* 12 MHz ? */ - MCFG_DEVICE_PROGRAM_MAP(strahl_map) - NMK_HACKY_INTERRUPT_TIMING + M68000(config, m_maincpu, 12000000); /* 12 MHz ? */ + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::strahl_map); + set_hacky_interrupt_timing(config); /* video hardware */ - NMK_HACKY_SCREEN_LOWRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_strahl) + set_hacky_screen_lowres(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_strahl)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_strahl); PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 1024); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,strahl) /* sound hardware */ @@ -4413,36 +4405,35 @@ MACHINE_CONFIG_START(nmk16_state::strahl) NMK004(config, m_nmk004, 8000000); m_nmk004->reset_cb().set_inputline(m_maincpu, INPUT_LINE_RESET); - MCFG_DEVICE_ADD("ymsnd", YM2203, 1500000) - MCFG_YM2203_IRQ_HANDLER(WRITELINE("nmk004", nmk004_device, ym2203_irq_handler)) - MCFG_SOUND_ROUTE(0, "mono", 0.50) - MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_SOUND_ROUTE(2, "mono", 0.50) - MCFG_SOUND_ROUTE(3, "mono", 1.20) + ym2203_device &ymsnd(YM2203(config, "ymsnd", 1500000)); + ymsnd.irq_handler().set("nmk004", FUNC(nmk004_device::ym2203_irq_handler)); + ymsnd.add_route(0, "mono", 0.50); + ymsnd.add_route(1, "mono", 0.50); + ymsnd.add_route(2, "mono", 0.50); + ymsnd.add_route(3, "mono", 1.20); - MCFG_DEVICE_ADD("oki1", OKIM6295, 16000000/4, okim6295_device::PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) + OKIM6295(config, m_oki[0], 16000000/4, okim6295_device::PIN7_LOW); + m_oki[0]->set_addrmap(0, &nmk16_state::oki1_map); + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.10); - MCFG_DEVICE_ADD("oki2", OKIM6295, 16000000/4, okim6295_device::PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nmk16_state::hachamf) + OKIM6295(config, m_oki[1], 16000000/4, okim6295_device::PIN7_LOW); + m_oki[1]->set_addrmap(0, &nmk16_state::oki2_map); + m_oki[1]->add_route(ALL_OUTPUTS, "mono", 0.10); +} +void nmk16_state::hachamf(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 10000000) /* 10 MHz ? */ - MCFG_DEVICE_PROGRAM_MAP(hachamf_map) - NMK_HACKY_INTERRUPT_TIMING + M68000(config, m_maincpu, 10000000); /* 10 MHz ? */ + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::hachamf_map); + set_hacky_interrupt_timing(config); /* video hardware */ - NMK_HACKY_SCREEN_LOWRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross) + set_hacky_screen_lowres(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross) /* sound hardware */ @@ -4451,42 +4442,42 @@ MACHINE_CONFIG_START(nmk16_state::hachamf) NMK004(config, m_nmk004, 8000000); m_nmk004->reset_cb().set_inputline(m_maincpu, INPUT_LINE_RESET); - MCFG_DEVICE_ADD("ymsnd", YM2203, 1500000) - MCFG_YM2203_IRQ_HANDLER(WRITELINE("nmk004", nmk004_device, ym2203_irq_handler)) - MCFG_SOUND_ROUTE(0, "mono", 0.50) - MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_SOUND_ROUTE(2, "mono", 0.50) - MCFG_SOUND_ROUTE(3, "mono", 1.20) + ym2203_device &ymsnd(YM2203(config, "ymsnd", 1500000)); + ymsnd.irq_handler().set("nmk004", FUNC(nmk004_device::ym2203_irq_handler)); + ymsnd.add_route(0, "mono", 0.50); + ymsnd.add_route(1, "mono", 0.50); + ymsnd.add_route(2, "mono", 0.50); + ymsnd.add_route(3, "mono", 1.20); - MCFG_DEVICE_ADD("oki1", OKIM6295, 16000000/4, okim6295_device::PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) + OKIM6295(config, m_oki[0], 16000000/4, okim6295_device::PIN7_LOW); + m_oki[0]->set_addrmap(0, &nmk16_state::oki1_map); + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.10); - MCFG_DEVICE_ADD("oki2", OKIM6295, 16000000/4, okim6295_device::PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) -MACHINE_CONFIG_END + OKIM6295(config, m_oki[1], 16000000/4, okim6295_device::PIN7_LOW); + m_oki[1]->set_addrmap(0, &nmk16_state::oki2_map); + m_oki[1]->add_route(ALL_OUTPUTS, "mono", 0.10); +} -MACHINE_CONFIG_START(nmk16_state::hachamf_prot) +void nmk16_state::hachamf_prot(machine_config &config) +{ hachamf(config); - MCFG_TIMER_DRIVER_ADD_PERIODIC("coinsim", nmk16_state, hachamf_mcu_sim, attotime::from_hz(10000)) -MACHINE_CONFIG_END + TIMER(config, "coinsim").configure_periodic(FUNC(nmk16_state::hachamf_mcu_sim), attotime::from_hz(10000)); +} -MACHINE_CONFIG_START(nmk16_state::macross) - +void nmk16_state::macross(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 10000000) /* 10 MHz ? */ - MCFG_DEVICE_PROGRAM_MAP(macross_map) - NMK_HACKY_INTERRUPT_TIMING + M68000(config, m_maincpu, 10000000); /* 10 MHz ? */ + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::macross_map); + set_hacky_interrupt_timing(config); /* video hardware */ - NMK_HACKY_SCREEN_LOWRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross) + set_hacky_screen_lowres(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross) /* sound hardware */ @@ -4495,36 +4486,35 @@ MACHINE_CONFIG_START(nmk16_state::macross) NMK004(config, m_nmk004, 8000000); m_nmk004->reset_cb().set_inputline(m_maincpu, INPUT_LINE_RESET); - MCFG_DEVICE_ADD("ymsnd", YM2203, 1500000) - MCFG_YM2203_IRQ_HANDLER(WRITELINE("nmk004", nmk004_device, ym2203_irq_handler)) - MCFG_SOUND_ROUTE(0, "mono", 0.50) - MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_SOUND_ROUTE(2, "mono", 0.50) - MCFG_SOUND_ROUTE(3, "mono", 1.20) + ym2203_device &ymsnd(YM2203(config, "ymsnd", 1500000)); + ymsnd.irq_handler().set("nmk004", FUNC(nmk004_device::ym2203_irq_handler)); + ymsnd.add_route(0, "mono", 0.50); + ymsnd.add_route(1, "mono", 0.50); + ymsnd.add_route(2, "mono", 0.50); + ymsnd.add_route(3, "mono", 1.20); - MCFG_DEVICE_ADD("oki1", OKIM6295, 16000000/4, okim6295_device::PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) + OKIM6295(config, m_oki[0], 16000000/4, okim6295_device::PIN7_LOW); + m_oki[0]->set_addrmap(0, &nmk16_state::oki1_map); + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.10); - MCFG_DEVICE_ADD("oki2", OKIM6295, 16000000/4, okim6295_device::PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nmk16_state::blkheart) + OKIM6295(config, m_oki[1], 16000000/4, okim6295_device::PIN7_LOW); + m_oki[1]->set_addrmap(0, &nmk16_state::oki2_map); + m_oki[1]->add_route(ALL_OUTPUTS, "mono", 0.10); +} +void nmk16_state::blkheart(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, XTAL(8'000'000)) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(macross_map) - NMK_HACKY_INTERRUPT_TIMING + M68000(config, m_maincpu, XTAL(8'000'000)); /* verified on pcb */ + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::macross_map); + set_hacky_interrupt_timing(config); /* video hardware */ - NMK_HACKY_SCREEN_LOWRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross) + set_hacky_screen_lowres(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross) /* sound hardware */ @@ -4533,36 +4523,35 @@ MACHINE_CONFIG_START(nmk16_state::blkheart) NMK004(config, m_nmk004, 8000000); m_nmk004->reset_cb().set_inputline(m_maincpu, INPUT_LINE_RESET); - MCFG_DEVICE_ADD("ymsnd", YM2203, XTAL(12'000'000)/8 ) /* verified on pcb */ - MCFG_YM2203_IRQ_HANDLER(WRITELINE("nmk004", nmk004_device, ym2203_irq_handler)) - MCFG_SOUND_ROUTE(0, "mono", 0.50) - MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_SOUND_ROUTE(2, "mono", 0.50) - MCFG_SOUND_ROUTE(3, "mono", 1.20) + ym2203_device &ymsnd(YM2203(config, "ymsnd", XTAL(12'000'000)/8)); /* verified on pcb */ + ymsnd.irq_handler().set("nmk004", FUNC(nmk004_device::ym2203_irq_handler)); + ymsnd.add_route(0, "mono", 0.50); + ymsnd.add_route(1, "mono", 0.50); + ymsnd.add_route(2, "mono", 0.50); + ymsnd.add_route(3, "mono", 1.20); - MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(8'000'000)/2, okim6295_device::PIN7_LOW) /* verified on pcb */ - MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) + OKIM6295(config, m_oki[0], XTAL(8'000'000)/2, okim6295_device::PIN7_LOW); /* verified on pcb */ + m_oki[0]->set_addrmap(0, &nmk16_state::oki1_map); + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.10); - MCFG_DEVICE_ADD("oki2", OKIM6295, XTAL(8'000'000)/2, okim6295_device::PIN7_LOW) /* verified on pcb */ - MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nmk16_state::gunnail) + OKIM6295(config, m_oki[1], XTAL(8'000'000)/2, okim6295_device::PIN7_LOW); /* verified on pcb */ + m_oki[1]->set_addrmap(0, &nmk16_state::oki2_map); + m_oki[1]->add_route(ALL_OUTPUTS, "mono", 0.10); +} +void nmk16_state::gunnail(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, XTAL(10'000'000)) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(gunnail_map) - NMK_HACKY_INTERRUPT_TIMING + M68000(config, m_maincpu, XTAL(10'000'000)); /* verified on pcb */ + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::gunnail_map); + set_hacky_interrupt_timing(config); /* video hardware */ - NMK_HACKY_SCREEN_HIRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross) + set_hacky_screen_hires(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,gunnail) /* sound hardware */ @@ -4571,40 +4560,39 @@ MACHINE_CONFIG_START(nmk16_state::gunnail) NMK004(config, m_nmk004, XTAL(16'000'000)/2); /* verified on pcb */ m_nmk004->reset_cb().set_inputline(m_maincpu, INPUT_LINE_RESET); - MCFG_DEVICE_ADD("ymsnd", YM2203, XTAL(12'000'000)/8) /* verified on pcb */ - MCFG_YM2203_IRQ_HANDLER(WRITELINE("nmk004", nmk004_device, ym2203_irq_handler)) - MCFG_SOUND_ROUTE(0, "mono", 0.50) - MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_SOUND_ROUTE(2, "mono", 0.50) - MCFG_SOUND_ROUTE(3, "mono", 1.20) + ym2203_device &ymsnd(YM2203(config, "ymsnd", XTAL(12'000'000)/8)); /* verified on pcb */ + ymsnd.irq_handler().set("nmk004", FUNC(nmk004_device::ym2203_irq_handler)); + ymsnd.add_route(0, "mono", 0.50); + ymsnd.add_route(1, "mono", 0.50); + ymsnd.add_route(2, "mono", 0.50); + ymsnd.add_route(3, "mono", 1.20); - MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(16'000'000)/4, okim6295_device::PIN7_LOW) /* verified on pcb */ - MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) + OKIM6295(config, m_oki[0], XTAL(16'000'000)/4, okim6295_device::PIN7_LOW); /* verified on pcb */ + m_oki[0]->set_addrmap(0, &nmk16_state::oki1_map); + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.10); - MCFG_DEVICE_ADD("oki2", OKIM6295, XTAL(16'000'000)/4, okim6295_device::PIN7_LOW) /* verified on pcb */ - MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nmk16_state::macross2) + OKIM6295(config, m_oki[1], XTAL(16'000'000)/4, okim6295_device::PIN7_LOW); /* verified on pcb */ + m_oki[1]->set_addrmap(0, &nmk16_state::oki2_map); + m_oki[1]->add_route(ALL_OUTPUTS, "mono", 0.10); +} +void nmk16_state::macross2(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 10000000) /* 10 MHz ? */ - MCFG_DEVICE_PROGRAM_MAP(macross2_map) - NMK_HACKY_INTERRUPT_TIMING + M68000(config, m_maincpu, 10000000); /* 10 MHz ? */ + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::macross2_map); + set_hacky_interrupt_timing(config); - MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) /* 4 MHz ? */ - MCFG_DEVICE_PROGRAM_MAP(macross2_sound_map) - MCFG_DEVICE_IO_MAP(macross2_sound_io_map) + Z80(config, m_audiocpu, 4000000); /* 4 MHz ? */ + m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_state::macross2_sound_map); + m_audiocpu->set_addrmap(AS_IO, &nmk16_state::macross2_sound_io_map); /* video hardware */ - NMK_HACKY_SCREEN_HIRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross) + set_hacky_screen_hires(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross2); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross2) /* sound hardware */ @@ -4613,42 +4601,41 @@ MACHINE_CONFIG_START(nmk16_state::macross2) GENERIC_LATCH_8(config, m_soundlatch); GENERIC_LATCH_8(config, "soundlatch2"); - MCFG_DEVICE_ADD("ymsnd", YM2203, 1500000) - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) - MCFG_SOUND_ROUTE(0, "mono", 0.50) - MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_SOUND_ROUTE(2, "mono", 0.50) - MCFG_SOUND_ROUTE(3, "mono", 1.20) + ym2203_device &ymsnd(YM2203(config, "ymsnd", 1500000)); + ymsnd.irq_handler().set_inputline(m_audiocpu, 0); + ymsnd.add_route(0, "mono", 0.50); + ymsnd.add_route(1, "mono", 0.50); + ymsnd.add_route(2, "mono", 0.50); + ymsnd.add_route(3, "mono", 1.20); - MCFG_DEVICE_ADD("oki1", OKIM6295, 16000000/4, okim6295_device::PIN7_LOW) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) + OKIM6295(config, m_oki[0], 16000000/4, okim6295_device::PIN7_LOW); + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.10); - MCFG_DEVICE_ADD("oki2", OKIM6295, 16000000/4, okim6295_device::PIN7_LOW) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) + OKIM6295(config, m_oki[1], 16000000/4, okim6295_device::PIN7_LOW); + m_oki[1]->add_route(ALL_OUTPUTS, "mono", 0.10); nmk112_device &nmk112(NMK112(config, "nmk112", 0)); nmk112.set_rom0_tag("oki1"); nmk112.set_rom1_tag("oki2"); -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nmk16_state::tdragon2) +} +void nmk16_state::tdragon2(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 10000000) /* 10 MHz */ - MCFG_DEVICE_PROGRAM_MAP(macross2_map) - NMK_HACKY_INTERRUPT_TIMING + M68000(config, m_maincpu, 10000000); /* 10 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::macross2_map); + set_hacky_interrupt_timing(config); - MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) /* 4 MHz */ - MCFG_DEVICE_PROGRAM_MAP(macross2_sound_map) - MCFG_DEVICE_IO_MAP(macross2_sound_io_map) + Z80(config, m_audiocpu, 4000000); /* 4 MHz */ + m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_state::macross2_sound_map); + m_audiocpu->set_addrmap(AS_IO, &nmk16_state::macross2_sound_io_map); /* video hardware */ - NMK_HACKY_SCREEN_HIRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_tdragon2) + set_hacky_screen_hires(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_tdragon2)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross2); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross2) /* sound hardware */ @@ -4657,49 +4644,48 @@ MACHINE_CONFIG_START(nmk16_state::tdragon2) GENERIC_LATCH_8(config, m_soundlatch); GENERIC_LATCH_8(config, "soundlatch2"); - MCFG_DEVICE_ADD("ymsnd", YM2203, 1500000) - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) - MCFG_SOUND_ROUTE(0, "mono", 0.50) - MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_SOUND_ROUTE(2, "mono", 0.50) - MCFG_SOUND_ROUTE(3, "mono", 1.20) + ym2203_device &ymsnd(YM2203(config, "ymsnd", 1500000)); + ymsnd.irq_handler().set_inputline(m_audiocpu, 0); + ymsnd.add_route(0, "mono", 0.50); + ymsnd.add_route(1, "mono", 0.50); + ymsnd.add_route(2, "mono", 0.50); + ymsnd.add_route(3, "mono", 1.20); - MCFG_DEVICE_ADD("oki1", OKIM6295, 16000000/4, okim6295_device::PIN7_LOW) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) + OKIM6295(config, m_oki[0], 16000000/4, okim6295_device::PIN7_LOW); + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.10); - MCFG_DEVICE_ADD("oki2", OKIM6295, 16000000/4, okim6295_device::PIN7_LOW) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) + OKIM6295(config, m_oki[1], 16000000/4, okim6295_device::PIN7_LOW); + m_oki[1]->add_route(ALL_OUTPUTS, "mono", 0.10); nmk112_device &nmk112(NMK112(config, "nmk112", 0)); nmk112.set_rom0_tag("oki1"); nmk112.set_rom1_tag("oki2"); -MACHINE_CONFIG_END +} // TODO : Sound system is different -MACHINE_CONFIG_START(nmk16_state::tdragon3h) +void nmk16_state::tdragon3h(machine_config &config) +{ tdragon2(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(tdragon3h_map) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::tdragon3h_map); +} -MACHINE_CONFIG_START(nmk16_state::raphero) - +void nmk16_state::raphero(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 14000000) /* 14 MHz measured */ - MCFG_DEVICE_PROGRAM_MAP(raphero_map) - NMK_HACKY_INTERRUPT_TIMING + M68000(config, m_maincpu, 14000000); /* 14 MHz measured */ + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::raphero_map); + set_hacky_interrupt_timing(config); - MCFG_DEVICE_ADD("audiocpu",TMP90841, 8000000) - MCFG_DEVICE_PROGRAM_MAP(raphero_sound_mem_map) + TMP90841(config, m_audiocpu, 8000000); + m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_state::raphero_sound_mem_map); /* video hardware */ - NMK_HACKY_SCREEN_HIRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_tdragon2) + set_hacky_screen_hires(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_tdragon2)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross2); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,gunnail) /* sound hardware */ @@ -4708,53 +4694,52 @@ MACHINE_CONFIG_START(nmk16_state::raphero) GENERIC_LATCH_8(config, m_soundlatch); GENERIC_LATCH_8(config, "soundlatch2"); - MCFG_DEVICE_ADD("ymsnd", YM2203, 1500000) - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) - MCFG_SOUND_ROUTE(0, "mono", 0.50) - MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_SOUND_ROUTE(2, "mono", 0.50) - MCFG_SOUND_ROUTE(3, "mono", 1.20) + ym2203_device &ymsnd(YM2203(config, "ymsnd", 1500000)); + ymsnd.irq_handler().set_inputline(m_audiocpu, 0); + ymsnd.add_route(0, "mono", 0.50); + ymsnd.add_route(1, "mono", 0.50); + ymsnd.add_route(2, "mono", 0.50); + ymsnd.add_route(3, "mono", 1.20); - MCFG_DEVICE_ADD("oki1", OKIM6295, 16000000/4, okim6295_device::PIN7_LOW) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) + OKIM6295(config, m_oki[0], 16000000/4, okim6295_device::PIN7_LOW); + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.10); - MCFG_DEVICE_ADD("oki2", OKIM6295, 16000000/4, okim6295_device::PIN7_LOW) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) + OKIM6295(config, m_oki[1], 16000000/4, okim6295_device::PIN7_LOW); + m_oki[1]->add_route(ALL_OUTPUTS, "mono", 0.10); nmk112_device &nmk112(NMK112(config, "nmk112", 0)); nmk112.set_rom0_tag("oki1"); nmk112.set_rom1_tag("oki2"); -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nmk16_state::bjtwin) +} +void nmk16_state::bjtwin(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 10000000) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(bjtwin_map) - NMK_HACKY_INTERRUPT_TIMING + M68000(config, m_maincpu, 10000000); /* verified on pcb */ + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::bjtwin_map); + set_hacky_interrupt_timing(config); /* video hardware */ - NMK_HACKY_SCREEN_HIRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_bjtwin) + set_hacky_screen_hires(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_bjtwin)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_bjtwin); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,bjtwin) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("oki1", OKIM6295, 16000000/4, okim6295_device::PIN7_LOW) /* verified on pcb */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) + OKIM6295(config, m_oki[0], 16000000/4, okim6295_device::PIN7_LOW); /* verified on pcb */ + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.20); - MCFG_DEVICE_ADD("oki2", OKIM6295, 16000000/4, okim6295_device::PIN7_LOW) /* verified on pcb */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.20) + OKIM6295(config, m_oki[1], 16000000/4, okim6295_device::PIN7_LOW); /* verified on pcb */ + m_oki[1]->add_route(ALL_OUTPUTS, "mono", 0.20); nmk112_device &nmk112(NMK112(config, "nmk112", 0)); nmk112.set_rom0_tag("oki1"); nmk112.set_rom1_tag("oki2"); -MACHINE_CONFIG_END +} TIMER_DEVICE_CALLBACK_MEMBER(nmk16_state::manybloc_scanline) @@ -4776,31 +4761,29 @@ TIMER_DEVICE_CALLBACK_MEMBER(nmk16_state::manybloc_scanline) } // non-nmk board, different to the others, very timing sensitive -MACHINE_CONFIG_START(nmk16_state::manybloc) - +void nmk16_state::manybloc(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 10000000) /* 10? MHz - check */ - MCFG_DEVICE_PROGRAM_MAP(manybloc_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(nmk16_state, irq1_line_hold, 56)/* this needs to equal the framerate on this, rather than being double it .. */ - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", nmk16_state, manybloc_scanline, "screen", 0, 1) + M68000(config, m_maincpu, 10000000); /* 10? MHz - check */ + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::manybloc_map); + m_maincpu->set_periodic_int(FUNC(nmk16_state::irq1_line_hold), attotime::from_hz(56)); /* this needs to equal the framerate on this, rather than being double it .. */ + TIMER(config, "scantimer").configure_scanline(FUNC(nmk16_state::manybloc_scanline), "screen", 0, 1); - MCFG_DEVICE_ADD("audiocpu", Z80, 3000000) - MCFG_DEVICE_PROGRAM_MAP(tharrier_sound_map) - MCFG_DEVICE_IO_MAP(tharrier_sound_io_map) + Z80(config, m_audiocpu, 3000000); + m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_state::tharrier_sound_map); + m_audiocpu->set_addrmap(AS_IO, &nmk16_state::tharrier_sound_io_map); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(56) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(256, 256) - MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_manybloc) - - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(56); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + m_screen->set_size(256, 256); + m_screen->set_visarea(0*8, 32*8-1, 1*8, 31*8-1); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_manybloc)); + m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_tharrier); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 512); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross) /* sound hardware */ @@ -4809,42 +4792,41 @@ MACHINE_CONFIG_START(nmk16_state::manybloc) GENERIC_LATCH_8(config, m_soundlatch); GENERIC_LATCH_8(config, "soundlatch2"); - MCFG_DEVICE_ADD("ymsnd", YM2203, 1500000) - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) - MCFG_SOUND_ROUTE(0, "mono", 0.50) - MCFG_SOUND_ROUTE(1, "mono", 0.50) - MCFG_SOUND_ROUTE(2, "mono", 0.50) - MCFG_SOUND_ROUTE(3, "mono", 1.20) + ym2203_device &ymsnd(YM2203(config, "ymsnd", 1500000)); + ymsnd.irq_handler().set_inputline(m_audiocpu, 0); + ymsnd.add_route(0, "mono", 0.50); + ymsnd.add_route(1, "mono", 0.50); + ymsnd.add_route(2, "mono", 0.50); + ymsnd.add_route(3, "mono", 1.20); - MCFG_DEVICE_ADD("oki1", OKIM6295, 16000000/4, okim6295_device::PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(0, oki1_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) + OKIM6295(config, m_oki[0], 16000000/4, okim6295_device::PIN7_LOW); + m_oki[0]->set_addrmap(0, &nmk16_state::oki1_map); + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.10); - MCFG_DEVICE_ADD("oki2", OKIM6295, 16000000/4, okim6295_device::PIN7_LOW) - MCFG_DEVICE_ADDRESS_MAP(0, oki2_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.10) -MACHINE_CONFIG_END + OKIM6295(config, m_oki[1], 16000000/4, okim6295_device::PIN7_LOW); + m_oki[1]->set_addrmap(0, &nmk16_state::oki2_map); + m_oki[1]->add_route(ALL_OUTPUTS, "mono", 0.10); +} // non-nmk board, clearly cloned hw tho, all clocks need checking. -MACHINE_CONFIG_START(nmk16_tomagic_state::tomagic) - +void nmk16_tomagic_state::tomagic(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 12000000) /* 12? MHz */ - MCFG_DEVICE_PROGRAM_MAP(tomagic_map) - NMK_HACKY_INTERRUPT_TIMING + M68000(config, m_maincpu, 12000000); /* 12? MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_tomagic_state::tomagic_map); + set_hacky_interrupt_timing(config); - MCFG_DEVICE_ADD("audiocpu", Z80, 12000000/4) /* 3 Mhz? */ - MCFG_DEVICE_PROGRAM_MAP(tomagic_sound_map) - MCFG_DEVICE_IO_MAP(tomagic_sound_io_map) + Z80(config, m_audiocpu, 12000000/4); /* 3 Mhz? */ + m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_tomagic_state::tomagic_sound_map); + m_audiocpu->set_addrmap(AS_IO, &nmk16_tomagic_state::tomagic_sound_io_map); /* video hardware */ - NMK_HACKY_SCREEN_HIRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross) + set_hacky_screen_hires(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,gunnail) /* sound hardware */ @@ -4853,13 +4835,13 @@ MACHINE_CONFIG_START(nmk16_tomagic_state::tomagic) GENERIC_LATCH_8(config, m_soundlatch); m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI); - MCFG_DEVICE_ADD("ymsnd", YM3812, 12000000/4) // K-666 (YM3812) 3Mhz? */ - MCFG_YM3812_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + ym3812_device &ymsnd(YM3812(config, "ymsnd", 12000000/4)); // K-666 (YM3812) 3Mhz? */ + ymsnd.irq_handler().set_inputline(m_audiocpu, 0); + ymsnd.add_route(ALL_OUTPUTS, "mono", 0.50); - MCFG_DEVICE_ADD("oki1", OKIM6295, 12000000/4, okim6295_device::PIN7_LOW) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) -MACHINE_CONFIG_END + OKIM6295(config, m_oki[0], 12000000/4, okim6295_device::PIN7_LOW); + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.50); +} uint8_t nmk16_state::decode_byte(uint8_t src, const uint8_t *bitp) @@ -5351,23 +5333,22 @@ GFXDECODE_END ***************************************************************************/ -MACHINE_CONFIG_START(nmk16_state::stagger1) - +void nmk16_state::stagger1(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000,XTAL(12'000'000)) /* 68000p10 running at 12mhz, verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(afega_map) - NMK_HACKY_INTERRUPT_TIMING + M68000(config, m_maincpu, XTAL(12'000'000)); /* 68000p10 running at 12mhz, verified on pcb */ + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::afega_map); + set_hacky_interrupt_timing(config); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(4'000'000)) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(afega_sound_cpu) + Z80(config, m_audiocpu, XTAL(4'000'000)); /* verified on pcb */ + m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_state::afega_sound_cpu); /* video hardware */ - NMK_HACKY_SCREEN_LOWRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_afega) + set_hacky_screen_lowres(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_afega)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_stagger1); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 768); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,afega) /* sound hardware */ @@ -5382,81 +5363,76 @@ MACHINE_CONFIG_START(nmk16_state::stagger1) ymsnd.add_route(0, "lspeaker", 0.30); ymsnd.add_route(1, "rspeaker", 0.30); - MCFG_DEVICE_ADD("oki1", OKIM6295, XTAL(4'000'000)/4, okim6295_device::PIN7_HIGH) /* verified on pcb */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.70) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.70) -MACHINE_CONFIG_END + OKIM6295(config, m_oki[0], XTAL(4'000'000)/4, okim6295_device::PIN7_HIGH); /* verified on pcb */ + m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 0.70); + m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 0.70); +} -MACHINE_CONFIG_START(nmk16_state::redhawki) +void nmk16_state::redhawki(machine_config &config) +{ stagger1(config); /* basic machine hardware */ /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_redhawki) -MACHINE_CONFIG_END + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_redhawki)); +} -MACHINE_CONFIG_START(nmk16_state::redhawkb) +void nmk16_state::redhawkb(machine_config &config) +{ stagger1(config); /* basic machine hardware */ /* video hardware */ - MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_redhawkb) - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_redhawkb) -MACHINE_CONFIG_END + m_gfxdecode->set_info(gfx_redhawkb); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_redhawkb)); +} -MACHINE_CONFIG_START(nmk16_state::grdnstrm) +void nmk16_state::grdnstrm(machine_config &config) +{ stagger1(config); /* basic machine hardware */ /* video hardware */ - MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_grdnstrm) + m_gfxdecode->set_info(gfx_grdnstrm); MCFG_VIDEO_START_OVERRIDE(nmk16_state,grdnstrm) - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_firehawk) -MACHINE_CONFIG_END + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_firehawk)); +} -MACHINE_CONFIG_START(nmk16_state::grdnstrmk) /* Side by side with PCB, the music seems too fast as well */ +void nmk16_state::grdnstrmk(machine_config &config) /* Side by side with PCB, the music seems too fast as well */ +{ stagger1(config); - /* basic machine hardware */ - /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_REFRESH_RATE(57) /* Side by side with PCB, MAME is too fast at 56 */ - MCFG_GFXDECODE_MODIFY("gfxdecode", gfx_grdnstrm) + m_screen->set_refresh_hz(57); /* Side by side with PCB, MAME is too fast at 56 */ + m_gfxdecode->set_info(gfx_grdnstrm); MCFG_VIDEO_START_OVERRIDE(nmk16_state,grdnstrm) -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(nmk16_state::popspops) +void nmk16_state::popspops(machine_config &config) +{ grdnstrm(config); + /* video hardware */ + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_bubl2000)); +} + +void nmk16_state::firehawk(machine_config &config) +{ /* basic machine hardware */ + M68000(config, m_maincpu, 12000000); + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::firehawk_map); + set_hacky_interrupt_timing(config); + + Z80(config, m_audiocpu, 4000000); + m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_state::firehawk_sound_cpu); /* video hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_bubl2000) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(nmk16_state::firehawk) - - /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000,12000000) - MCFG_DEVICE_PROGRAM_MAP(firehawk_map) - NMK_HACKY_INTERRUPT_TIMING - - MCFG_DEVICE_ADD("audiocpu", Z80,4000000) - MCFG_DEVICE_PROGRAM_MAP(firehawk_sound_cpu) - - /* video hardware */ - NMK_HACKY_SCREEN_LOWRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_firehawk) + set_hacky_screen_lowres(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_firehawk)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_grdnstrm); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 768); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,grdnstrm) /* sound hardware */ @@ -5465,37 +5441,36 @@ MACHINE_CONFIG_START(nmk16_state::firehawk) GENERIC_LATCH_8(config, m_soundlatch); m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0); - MCFG_DEVICE_ADD("oki1", OKIM6295, 1000000, okim6295_device::PIN7_HIGH) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + OKIM6295(config, m_oki[0], 1000000, okim6295_device::PIN7_HIGH); + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.0); - MCFG_DEVICE_ADD("oki2", OKIM6295, 1000000, okim6295_device::PIN7_HIGH) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + OKIM6295(config, m_oki[1], 1000000, okim6295_device::PIN7_HIGH); + m_oki[1]->add_route(ALL_OUTPUTS, "mono", 1.0); +} -MACHINE_CONFIG_START(nmk16_state::spec2k) +void nmk16_state::spec2k(machine_config &config) +{ firehawk(config); - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(afega_map) -MACHINE_CONFIG_END + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::afega_map); +} -MACHINE_CONFIG_START(nmk16_state::twinactn) - +void nmk16_state::twinactn(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000,12000000) - MCFG_DEVICE_PROGRAM_MAP(twinactn_map) - NMK_HACKY_INTERRUPT_TIMING + M68000(config, m_maincpu, 12000000); + m_maincpu->set_addrmap(AS_PROGRAM, &nmk16_state::twinactn_map); + set_hacky_interrupt_timing(config); - MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) - MCFG_DEVICE_PROGRAM_MAP(twinactn_sound_cpu) + Z80(config, m_audiocpu, 4000000); + m_audiocpu->set_addrmap(AS_PROGRAM, &nmk16_state::twinactn_sound_cpu); /* video hardware */ - NMK_HACKY_SCREEN_LOWRES - MCFG_SCREEN_UPDATE_DRIVER(nmk16_state, screen_update_macross) + set_hacky_screen_lowres(config); + m_screen->set_screen_update(FUNC(nmk16_state::screen_update_macross)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_macross); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 1024); - MCFG_VIDEO_START_OVERRIDE(nmk16_state,macross) /* sound hardware */ @@ -5504,9 +5479,9 @@ MACHINE_CONFIG_START(nmk16_state::twinactn) GENERIC_LATCH_8(config, m_soundlatch); m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0); - MCFG_DEVICE_ADD("oki1", OKIM6295, 1000000, okim6295_device::PIN7_HIGH) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + OKIM6295(config, m_oki[0], 1000000, okim6295_device::PIN7_HIGH); + m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.0); +} /*************************************************************************** diff --git a/src/mame/drivers/pkscram.cpp b/src/mame/drivers/pkscram.cpp index 6b5ee993352..7fb4b3a5f8c 100644 --- a/src/mame/drivers/pkscram.cpp +++ b/src/mame/drivers/pkscram.cpp @@ -313,25 +313,25 @@ void pkscram_state::machine_reset() m_scan_timer->adjust(m_screen->time_until_pos(interrupt_scanline), interrupt_scanline); } -MACHINE_CONFIG_START(pkscram_state::pkscramble) +void pkscram_state::pkscramble(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 8000000 ) - MCFG_DEVICE_PROGRAM_MAP(pkscramble_map) - //MCFG_DEVICE_VBLANK_INT_DRIVER("screen", pkscram_state, irq1_line_hold) /* only valid irq */ + M68000(config, m_maincpu, 8000000); + m_maincpu->set_addrmap(AS_PROGRAM, &pkscram_state::pkscramble_map); + //m_maincpu->set_vblank_int("screen", FUNC(pkscram_state::irq1_line_hold)); /* only valid irq */ NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0); - - MCFG_TIMER_DRIVER_ADD("scan_timer", pkscram_state, scanline_callback) + TIMER(config, m_scan_timer).configure_generic(FUNC(pkscram_state::scanline_callback)); /* video hardware */ - 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, 0*8, 24*8-1) - MCFG_SCREEN_UPDATE_DRIVER(pkscram_state, screen_update_pkscramble) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 0*8, 24*8-1); + m_screen->set_screen_update(FUNC(pkscram_state::screen_update_pkscramble)); + m_screen->set_palette("palette"); PALETTE(config, "palette").set_format(palette_device::xRGB_555, 0x800); GFXDECODE(config, m_gfxdecode, "palette", gfx_pkscram); @@ -339,10 +339,10 @@ MACHINE_CONFIG_START(pkscram_state::pkscramble) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("ymsnd", YM2203, 12000000/4) - MCFG_YM2203_IRQ_HANDLER(WRITELINE(*this, pkscram_state, irqhandler)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.60) -MACHINE_CONFIG_END + ym2203_device &ymsnd(YM2203(config, "ymsnd", 12000000/4)); + ymsnd.irq_handler().set(FUNC(pkscram_state::irqhandler)); + ymsnd.add_route(ALL_OUTPUTS, "mono", 0.60); +} ROM_START( pkscram ) diff --git a/src/mame/drivers/powerins.cpp b/src/mame/drivers/powerins.cpp index fadeef8e1d3..a2b80a27c06 100644 --- a/src/mame/drivers/powerins.cpp +++ b/src/mame/drivers/powerins.cpp @@ -287,25 +287,25 @@ MACHINE_START_MEMBER(powerins_state, powerinsa) m_okibank->configure_entries(0, 5, memregion("oki1")->base() + 0x30000, 0x10000); } -MACHINE_CONFIG_START(powerins_state::powerins) - +void powerins_state::powerins(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, 12000000) /* 12MHz */ - MCFG_DEVICE_PROGRAM_MAP(powerins_map) + M68000(config, m_maincpu, 12000000); /* 12MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &powerins_state::powerins_map); - MCFG_DEVICE_ADD("soundcpu", Z80, 6000000) /* 6 MHz */ - MCFG_DEVICE_PROGRAM_MAP(powerins_sound_map) - MCFG_DEVICE_IO_MAP(powerins_sound_io_map) + Z80(config, m_soundcpu, 6000000); /* 6 MHz */ + m_soundcpu->set_addrmap(AS_PROGRAM, &powerins_state::powerins_sound_map); + m_soundcpu->set_addrmap(AS_IO, &powerins_state::powerins_sound_io_map); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(56) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) - MCFG_SCREEN_SIZE(320, 256) - MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0+16, 256-16-1) - MCFG_SCREEN_UPDATE_DRIVER(powerins_state, screen_update) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, powerins_state, screen_vblank)) - MCFG_SCREEN_PALETTE(m_palette) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(56); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(320, 256); + m_screen->set_visarea(0, 320-1, 0+16, 256-16-1); + m_screen->set_screen_update(FUNC(powerins_state::screen_update)); + m_screen->screen_vblank().set(FUNC(powerins_state::screen_vblank)); + m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_powerins); PALETTE(config, m_palette).set_format(palette_device::RRRRGGGGBBBBRGBx, 2048); @@ -315,59 +315,57 @@ MACHINE_CONFIG_START(powerins_state::powerins) GENERIC_LATCH_8(config, "soundlatch"); - MCFG_DEVICE_ADD("oki1", OKIM6295, 4000000, okim6295_device::PIN7_LOW) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) + okim6295_device &oki1(OKIM6295(config, "oki1", 4000000, okim6295_device::PIN7_LOW)); + oki1.add_route(ALL_OUTPUTS, "mono", 0.15); - MCFG_DEVICE_ADD("oki2", OKIM6295, 4000000, okim6295_device::PIN7_LOW) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.15) + okim6295_device &oki2(OKIM6295(config, "oki2", 4000000, okim6295_device::PIN7_LOW)); + oki2.add_route(ALL_OUTPUTS, "mono", 0.15); - MCFG_DEVICE_ADD("ym2203", YM2203, 12000000 / 8) - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("soundcpu", 0)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0) + ym2203_device &ym2203(YM2203(config, "ym2203", 12000000 / 8)); + ym2203.irq_handler().set_inputline(m_soundcpu, 0); + ym2203.add_route(ALL_OUTPUTS, "mono", 2.0); nmk112_device &nmk112(NMK112(config, "nmk112", 0)); nmk112.set_rom0_tag("oki1"); nmk112.set_rom1_tag("oki2"); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(powerins_state::powerinsa) +void powerins_state::powerinsa(machine_config &config) +{ powerins(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(powerinsa_map) + m_maincpu->set_addrmap(AS_PROGRAM, &powerins_state::powerinsa_map); - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_REFRESH_RATE(60) + m_screen->set_refresh_hz(60); - MCFG_DEVICE_REMOVE("soundcpu") + config.device_remove("soundcpu"); MCFG_MACHINE_START_OVERRIDE(powerins_state, powerinsa) - MCFG_DEVICE_REPLACE("oki1", OKIM6295, 990000, okim6295_device::PIN7_LOW) // pin7 not verified - MCFG_DEVICE_ADDRESS_MAP(0, powerinsa_oki_map) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + okim6295_device &oki1(OKIM6295(config.replace(), "oki1", 990000, okim6295_device::PIN7_LOW)); // pin7 not verified + oki1.set_addrmap(0, &powerins_state::powerinsa_oki_map); + oki1.add_route(ALL_OUTPUTS, "mono", 1.0); - MCFG_DEVICE_REMOVE("oki2") - MCFG_DEVICE_REMOVE("ym2203") + config.device_remove("oki2"); + config.device_remove("ym2203"); config.device_remove("nmk112"); -MACHINE_CONFIG_END +} -MACHINE_CONFIG_START(powerins_state::powerinsb) +void powerins_state::powerinsb(machine_config &config) +{ powerins(config); /* basic machine hardware */ - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_REFRESH_RATE(60) + m_screen->set_refresh_hz(60); - MCFG_DEVICE_MODIFY("soundcpu") /* 6 MHz */ - MCFG_DEVICE_IO_MAP(powerinsb_sound_io_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(powerins_state, irq0_line_hold, 120) // YM2203 rate is at 150?? + m_soundcpu->set_addrmap(AS_IO, &powerins_state::powerinsb_sound_io_map); + m_soundcpu->set_periodic_int(FUNC(powerins_state::irq0_line_hold), attotime::from_hz(120)); // YM2203 rate is at 150?? - MCFG_DEVICE_REMOVE("ym2203") // Sound code talks to one, but it's not fitted on the board -MACHINE_CONFIG_END + config.device_remove("ym2203"); // Sound code talks to one, but it's not fitted on the board +} /*************************************************************************** diff --git a/src/mame/drivers/psychic5.cpp b/src/mame/drivers/psychic5.cpp index a7fc82b6f20..c697838d8f9 100644 --- a/src/mame/drivers/psychic5.cpp +++ b/src/mame/drivers/psychic5.cpp @@ -720,32 +720,32 @@ static GFXDECODE_START( gfx_bombsa ) GFXDECODE_END -MACHINE_CONFIG_START(psychic5_state::psychic5) - +void psychic5_state::psychic5(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2) - MCFG_DEVICE_PROGRAM_MAP(psychic5_main_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", psychic5_state, scanline, "screen", 0, 1) + Z80(config, m_maincpu, XTAL(12'000'000)/2); + m_maincpu->set_addrmap(AS_PROGRAM, &psychic5_state::psychic5_main_map); + TIMER(config, "scantimer").configure_scanline(FUNC(psychic5_state::scanline), "screen", 0, 1); ADDRESS_MAP_BANK(config, "vrambank").set_map(&psychic5_state::psychic5_vrambank_map).set_options(ENDIANNESS_LITTLE, 8, 14, 0x2000); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(5'000'000)) - MCFG_DEVICE_PROGRAM_MAP(psychic5_sound_map) - MCFG_DEVICE_IO_MAP(psychic5_soundport_map) + Z80(config, m_audiocpu, XTAL(5'000'000)); + m_audiocpu->set_addrmap(AS_PROGRAM, &psychic5_state::psychic5_sound_map); + m_audiocpu->set_addrmap(AS_IO, &psychic5_state::psychic5_soundport_map); - MCFG_QUANTUM_TIME(attotime::from_hz(600)) /* Allow time for 2nd cpu to interleave */ + config.m_minimum_quantum = attotime::from_hz(600); /* Allow time for 2nd cpu to interleave */ MCFG_MACHINE_START_OVERRIDE(psychic5_state,psychic5) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL(12'000'000)/2,394, 0, 256, 282, 16, 240) // was 53.8 Hz before, assume same as Bombs Away - MCFG_SCREEN_UPDATE_DRIVER(psychic5_state, screen_update_psychic5) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_raw(XTAL(12'000'000)/2,394, 0, 256, 282, 16, 240); // was 53.8 Hz before, assume same as Bombs Away + screen.set_screen_update(FUNC(psychic5_state::screen_update_psychic5)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_psychic5) - MCFG_PALETTE_ADD("palette", 768) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_psychic5); + PALETTE(config, m_palette).set_entries(768); - MCFG_DEVICE_ADD("blend", JALECO_BLEND, 0) + JALECO_BLEND(config, m_blend, 0); MCFG_VIDEO_START_OVERRIDE(psychic5_state,psychic5) MCFG_VIDEO_RESET_OVERRIDE(psychic5_state,psychic5) @@ -755,44 +755,44 @@ MACHINE_CONFIG_START(psychic5_state::psychic5) GENERIC_LATCH_8(config, "soundlatch"); - MCFG_DEVICE_ADD("ym1", YM2203, XTAL(12'000'000)/8) - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) - MCFG_SOUND_ROUTE(0, "mono", 0.15) - MCFG_SOUND_ROUTE(1, "mono", 0.15) - MCFG_SOUND_ROUTE(2, "mono", 0.15) - MCFG_SOUND_ROUTE(3, "mono", 0.50) + ym2203_device &ym1(YM2203(config, "ym1", XTAL(12'000'000)/8)); + ym1.irq_handler().set_inputline(m_audiocpu, 0); + ym1.add_route(0, "mono", 0.15); + ym1.add_route(1, "mono", 0.15); + ym1.add_route(2, "mono", 0.15); + ym1.add_route(3, "mono", 0.50); - MCFG_DEVICE_ADD("ym2", YM2203, XTAL(12'000'000)/8) - MCFG_SOUND_ROUTE(0, "mono", 0.15) - MCFG_SOUND_ROUTE(1, "mono", 0.15) - MCFG_SOUND_ROUTE(2, "mono", 0.15) - MCFG_SOUND_ROUTE(3, "mono", 0.50) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(psychic5_state::bombsa) + ym2203_device &ym2(YM2203(config, "ym2", XTAL(12'000'000)/8)); + ym2.add_route(0, "mono", 0.15); + ym2.add_route(1, "mono", 0.15); + ym2.add_route(2, "mono", 0.15); + ym2.add_route(3, "mono", 0.50); +} +void psychic5_state::bombsa(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(12'000'000)/2 ) /* 6 MHz */ - MCFG_DEVICE_PROGRAM_MAP(bombsa_main_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", psychic5_state, scanline, "screen", 0, 1) + Z80(config, m_maincpu, XTAL(12'000'000)/2); /* 6 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &psychic5_state::bombsa_main_map); + TIMER(config, "scantimer").configure_scanline(FUNC(psychic5_state::scanline), "screen", 0, 1); ADDRESS_MAP_BANK(config, "vrambank").set_map(&psychic5_state::bombsa_vrambank_map).set_options(ENDIANNESS_LITTLE, 8, 14, 0x2000); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(5'000'000) ) - MCFG_DEVICE_PROGRAM_MAP(bombsa_sound_map) - MCFG_DEVICE_IO_MAP(bombsa_soundport_map) + Z80(config, m_audiocpu, XTAL(5'000'000)); + m_audiocpu->set_addrmap(AS_PROGRAM, &psychic5_state::bombsa_sound_map); + m_audiocpu->set_addrmap(AS_IO, &psychic5_state::bombsa_soundport_map); - MCFG_QUANTUM_TIME(attotime::from_hz(600)) + config.m_minimum_quantum = attotime::from_hz(600); MCFG_MACHINE_START_OVERRIDE(psychic5_state,bombsa) /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_RAW_PARAMS(XTAL(12'000'000)/2,394, 0, 256, 282, 16, 240) /* Guru says : VSync - 54Hz . HSync - 15.25kHz */ - MCFG_SCREEN_UPDATE_DRIVER(psychic5_state, screen_update_bombsa) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_raw(XTAL(12'000'000)/2,394, 0, 256, 282, 16, 240); /* Measured as: VSync 54Hz, HSync 15.25kHz */ + screen.set_screen_update(FUNC(psychic5_state::screen_update_bombsa)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_bombsa) - MCFG_PALETTE_ADD("palette", 768) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_bombsa); + PALETTE(config, m_palette).set_entries(768); MCFG_VIDEO_START_OVERRIDE(psychic5_state,bombsa) MCFG_VIDEO_RESET_OVERRIDE(psychic5_state,psychic5) @@ -802,19 +802,19 @@ MACHINE_CONFIG_START(psychic5_state::bombsa) GENERIC_LATCH_8(config, "soundlatch"); - MCFG_DEVICE_ADD("ym1", YM2203, XTAL(12'000'000)/8) - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) - MCFG_SOUND_ROUTE(0, "mono", 0.30) - MCFG_SOUND_ROUTE(1, "mono", 0.30) - MCFG_SOUND_ROUTE(2, "mono", 0.30) - MCFG_SOUND_ROUTE(3, "mono", 1.0) + ym2203_device &ym1(YM2203(config, "ym1", XTAL(12'000'000)/8)); + ym1.irq_handler().set_inputline(m_audiocpu, 0); + ym1.add_route(0, "mono", 0.30); + ym1.add_route(1, "mono", 0.30); + ym1.add_route(2, "mono", 0.30); + ym1.add_route(3, "mono", 1.0); - MCFG_DEVICE_ADD("ym2", YM2203, XTAL(12'000'000)/8) - MCFG_SOUND_ROUTE(0, "mono", 0.30) - MCFG_SOUND_ROUTE(1, "mono", 0.30) - MCFG_SOUND_ROUTE(2, "mono", 0.30) - MCFG_SOUND_ROUTE(3, "mono", 1.0) -MACHINE_CONFIG_END + ym2203_device &ym2(YM2203(config, "ym2", XTAL(12'000'000)/8)); + ym2.add_route(0, "mono", 0.30); + ym2.add_route(1, "mono", 0.30); + ym2.add_route(2, "mono", 0.30); + ym2.add_route(3, "mono", 1.0); +} /*************************************************************************** diff --git a/src/mame/drivers/sfkick.cpp b/src/mame/drivers/sfkick.cpp index e951a72d06b..8293d136236 100644 --- a/src/mame/drivers/sfkick.cpp +++ b/src/mame/drivers/sfkick.cpp @@ -591,17 +591,17 @@ WRITE_LINE_MEMBER(sfkick_state::irqhandler) m_soundcpu->set_input_line_and_vector(0, state ? ASSERT_LINE : CLEAR_LINE, 0xff); } -MACHINE_CONFIG_START(sfkick_state::sfkick) +void sfkick_state::sfkick(machine_config &config) +{ + Z80(config, m_maincpu, MASTER_CLOCK/6); + m_maincpu->set_addrmap(AS_PROGRAM, &sfkick_state::sfkick_map); + m_maincpu->set_addrmap(AS_IO, &sfkick_state::sfkick_io_map); - MCFG_DEVICE_ADD("maincpu",Z80,MASTER_CLOCK/6) - MCFG_DEVICE_PROGRAM_MAP(sfkick_map) - MCFG_DEVICE_IO_MAP(sfkick_io_map) + config.m_minimum_quantum = attotime::from_hz(60000); - MCFG_QUANTUM_TIME(attotime::from_hz(60000)) - - MCFG_DEVICE_ADD("soundcpu",Z80,MASTER_CLOCK/6) - MCFG_DEVICE_PROGRAM_MAP(sfkick_sound_map) - MCFG_DEVICE_IO_MAP(sfkick_sound_io_map) + Z80(config, m_soundcpu, MASTER_CLOCK/6); + m_soundcpu->set_addrmap(AS_PROGRAM, &sfkick_state::sfkick_sound_map); + m_soundcpu->set_addrmap(AS_IO, &sfkick_state::sfkick_sound_io_map); v9938_device &v9938(V9938(config, "v9938", MASTER_CLOCK)); v9938.set_screen_ntsc("screen"); @@ -618,15 +618,13 @@ MACHINE_CONFIG_START(sfkick_state::sfkick) GENERIC_LATCH_8(config, "soundlatch"); - MCFG_DEVICE_ADD("ym1", YM2203, MASTER_CLOCK/6) - MCFG_YM2203_IRQ_HANDLER(WRITELINE(*this, sfkick_state, irqhandler)) - - MCFG_SOUND_ROUTE(0, "mono", 0.25) - MCFG_SOUND_ROUTE(1, "mono", 0.25) - MCFG_SOUND_ROUTE(2, "mono", 0.25) - MCFG_SOUND_ROUTE(3, "mono", 0.50) - -MACHINE_CONFIG_END + ym2203_device &ym1(YM2203(config, "ym1", MASTER_CLOCK/6)); + ym1.irq_handler().set(FUNC(sfkick_state::irqhandler)); + ym1.add_route(0, "mono", 0.25); + ym1.add_route(1, "mono", 0.25); + ym1.add_route(2, "mono", 0.25); + ym1.add_route(3, "mono", 0.50); +} void sfkick_state::init_sfkick() { diff --git a/src/mame/drivers/sidearms.cpp b/src/mame/drivers/sidearms.cpp index cf30f9fd529..57daf438900 100644 --- a/src/mame/drivers/sidearms.cpp +++ b/src/mame/drivers/sidearms.cpp @@ -599,32 +599,31 @@ static GFXDECODE_START( gfx_turtship ) GFXDECODE_END -MACHINE_CONFIG_START(sidearms_state::sidearms) - +void sidearms_state::sidearms(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* 4 MHz (?) */ - MCFG_DEVICE_PROGRAM_MAP(sidearms_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sidearms_state, irq0_line_hold) + Z80(config, m_maincpu, 4000000); /* 4 MHz (?) */ + m_maincpu->set_addrmap(AS_PROGRAM, &sidearms_state::sidearms_map); + m_maincpu->set_vblank_int("screen", FUNC(sidearms_state::irq0_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) /* 4 MHz (?) */ - MCFG_DEVICE_PROGRAM_MAP(sidearms_sound_map) + Z80(config, m_audiocpu, 4000000); /* 4 MHz (?) */ + m_audiocpu->set_addrmap(AS_PROGRAM, &sidearms_state::sidearms_sound_map); WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM8) + BUFFERED_SPRITERAM8(config, m_spriteram); - 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(8*8, (64-8)*8-1, 2*8, 30*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(sidearms_state, screen_update) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) - MCFG_SCREEN_PALETTE(m_palette) - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_sidearms) + 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(8*8, (64-8)*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(sidearms_state::screen_update)); + screen.screen_vblank().set("spriteram", FUNC(buffered_spriteram8_device::vblank_copy_rising)); + screen.set_palette(m_palette); + GFXDECODE(config, m_gfxdecode, m_palette, gfx_sidearms); PALETTE(config, m_palette).set_format(palette_device::xBRG_444, 1024); /* sound hardware */ @@ -632,47 +631,45 @@ MACHINE_CONFIG_START(sidearms_state::sidearms) GENERIC_LATCH_8(config, "soundlatch"); - MCFG_DEVICE_ADD("ym1", YM2203, 4000000) - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) - MCFG_SOUND_ROUTE(0, "mono", 0.15) - MCFG_SOUND_ROUTE(1, "mono", 0.15) - MCFG_SOUND_ROUTE(2, "mono", 0.15) - MCFG_SOUND_ROUTE(3, "mono", 0.25) + ym2203_device &ym1(YM2203(config, "ym1", 4000000)); + ym1.irq_handler().set_inputline(m_audiocpu, 0); + ym1.add_route(0, "mono", 0.15); + ym1.add_route(1, "mono", 0.15); + ym1.add_route(2, "mono", 0.15); + ym1.add_route(3, "mono", 0.25); - MCFG_DEVICE_ADD("ym2", YM2203, 4000000) - MCFG_SOUND_ROUTE(0, "mono", 0.15) - MCFG_SOUND_ROUTE(1, "mono", 0.15) - MCFG_SOUND_ROUTE(2, "mono", 0.15) - MCFG_SOUND_ROUTE(3, "mono", 0.25) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(sidearms_state::turtship) + ym2203_device &ym2(YM2203(config, "ym2", 4000000)); + ym2.add_route(0, "mono", 0.15); + ym2.add_route(1, "mono", 0.15); + ym2.add_route(2, "mono", 0.15); + ym2.add_route(3, "mono", 0.25); +} +void sidearms_state::turtship(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* 4 MHz (?) */ - MCFG_DEVICE_PROGRAM_MAP(turtship_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sidearms_state, irq0_line_hold) + Z80(config, m_maincpu, 4000000); /* 4 MHz (?) */ + m_maincpu->set_addrmap(AS_PROGRAM, &sidearms_state::turtship_map); + m_maincpu->set_vblank_int("screen", FUNC(sidearms_state::irq0_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) /* 4 MHz (?) */ - MCFG_DEVICE_PROGRAM_MAP(sidearms_sound_map) + Z80(config, m_audiocpu, 4000000); /* 4 MHz (?) */ + m_audiocpu->set_addrmap(AS_PROGRAM, &sidearms_state::sidearms_sound_map); WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM8) + BUFFERED_SPRITERAM8(config, m_spriteram); - 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(8*8, (64-8)*8-1, 2*8, 30*8-1 ) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) - MCFG_SCREEN_UPDATE_DRIVER(sidearms_state, screen_update) - MCFG_SCREEN_PALETTE(m_palette) - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_turtship) + 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(8*8, (64-8)*8-1, 2*8, 30*8-1); + screen.screen_vblank().set("spriteram", FUNC(buffered_spriteram8_device::vblank_copy_rising)); + screen.set_screen_update(FUNC(sidearms_state::screen_update)); + screen.set_palette(m_palette); + GFXDECODE(config, m_gfxdecode, m_palette, gfx_turtship); PALETTE(config, m_palette).set_format(palette_device::xBRG_444, 1024); /* sound hardware */ @@ -680,50 +677,49 @@ MACHINE_CONFIG_START(sidearms_state::turtship) GENERIC_LATCH_8(config, "soundlatch"); - MCFG_DEVICE_ADD("ym1", YM2203, 4000000) - MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0)) - MCFG_SOUND_ROUTE(0, "mono", 0.15) - MCFG_SOUND_ROUTE(1, "mono", 0.15) - MCFG_SOUND_ROUTE(2, "mono", 0.15) - MCFG_SOUND_ROUTE(3, "mono", 0.25) + ym2203_device &ym1(YM2203(config, "ym1", 4000000)); + ym1.irq_handler().set_inputline(m_audiocpu, 0); + ym1.add_route(0, "mono", 0.15); + ym1.add_route(1, "mono", 0.15); + ym1.add_route(2, "mono", 0.15); + ym1.add_route(3, "mono", 0.25); - MCFG_DEVICE_ADD("ym2", YM2203, 4000000) - MCFG_SOUND_ROUTE(0, "mono", 0.15) - MCFG_SOUND_ROUTE(1, "mono", 0.15) - MCFG_SOUND_ROUTE(2, "mono", 0.15) - MCFG_SOUND_ROUTE(3, "mono", 0.25) -MACHINE_CONFIG_END - -MACHINE_CONFIG_START(sidearms_state::whizz) + ym2203_device &ym2(YM2203(config, "ym2", 4000000)); + ym2.add_route(0, "mono", 0.15); + ym2.add_route(1, "mono", 0.15); + ym2.add_route(2, "mono", 0.15); + ym2.add_route(3, "mono", 0.25); +} +void sidearms_state::whizz(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 4000000) /* 4 MHz (?) */ - MCFG_DEVICE_PROGRAM_MAP(whizz_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sidearms_state, irq0_line_hold) + Z80(config, m_maincpu, 4000000); /* 4 MHz (?) */ + m_maincpu->set_addrmap(AS_PROGRAM, &sidearms_state::whizz_map); + m_maincpu->set_vblank_int("screen", FUNC(sidearms_state::irq0_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) - MCFG_DEVICE_PROGRAM_MAP(whizz_sound_map) - MCFG_DEVICE_IO_MAP(whizz_io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", sidearms_state, irq0_line_hold) + Z80(config, m_audiocpu, 4000000); + m_audiocpu->set_addrmap(AS_PROGRAM, &sidearms_state::whizz_sound_map); + m_audiocpu->set_addrmap(AS_IO, &sidearms_state::whizz_io_map); + m_audiocpu->set_vblank_int("screen", FUNC(sidearms_state::irq0_line_hold)); - MCFG_QUANTUM_TIME(attotime::from_hz(60000)) + config.m_minimum_quantum = attotime::from_hz(60000); WATCHDOG_TIMER(config, "watchdog"); /* video hardware */ - MCFG_DEVICE_ADD("spriteram", BUFFERED_SPRITERAM8) + BUFFERED_SPRITERAM8(config, m_spriteram); - 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(8*8, (64-8)*8-1, 2*8, 30*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(sidearms_state, screen_update) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE("spriteram", buffered_spriteram8_device, vblank_copy_rising)) - MCFG_SCREEN_PALETTE(m_palette) - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_turtship) + 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(8*8, (64-8)*8-1, 2*8, 30*8-1); + screen.set_screen_update(FUNC(sidearms_state::screen_update)); + screen.screen_vblank().set("spriteram", FUNC(buffered_spriteram8_device::vblank_copy_rising)); + screen.set_palette(m_palette); + GFXDECODE(config, m_gfxdecode, m_palette, gfx_turtship); PALETTE(config, m_palette).set_format(palette_device::xBRG_444, 1024); /* sound hardware */ @@ -735,7 +731,7 @@ MACHINE_CONFIG_START(sidearms_state::whizz) ymsnd.irq_handler().set_inputline(m_audiocpu, 0); ymsnd.add_route(0, "mono", 1.0); ymsnd.add_route(1, "mono", 1.0); -MACHINE_CONFIG_END +} diff --git a/src/mame/drivers/splash.cpp b/src/mame/drivers/splash.cpp index a0b4dc908a1..97d028a96b9 100644 --- a/src/mame/drivers/splash.cpp +++ b/src/mame/drivers/splash.cpp @@ -485,16 +485,16 @@ MACHINE_RESET_MEMBER(splash_state,splash) m_ret = 0x100; } -MACHINE_CONFIG_START(splash_state::splash) - +void splash_state::splash(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/2) /* 12MHz (24/2) */ - MCFG_DEVICE_PROGRAM_MAP(splash_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", splash_state, irq6_line_hold) + M68000(config, m_maincpu, XTAL(24'000'000)/2); /* 12MHz (24/2) */ + m_maincpu->set_addrmap(AS_PROGRAM, &splash_state::splash_map); + m_maincpu->set_vblank_int("screen", FUNC(splash_state::irq6_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(30'000'000)/8) /* 3.75MHz (30/8) */ - MCFG_DEVICE_PROGRAM_MAP(splash_sound_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(splash_state, nmi_line_pulse, 60*64) /* needed for the msm5205 to play the samples */ + Z80(config, m_audiocpu, XTAL(30'000'000)/8); /* 3.75MHz (30/8) */ + m_audiocpu->set_addrmap(AS_PROGRAM, &splash_state::splash_sound_map); + m_audiocpu->set_periodic_int(FUNC(splash_state::nmi_line_pulse), attotime::from_hz(60*64)); /* needed for the msm5205 to play the samples */ LS259(config, m_outlatch); // A8 m_outlatch->q_out_cb<0>().set(FUNC(splash_state::coin1_lockout_w)); @@ -503,15 +503,15 @@ MACHINE_CONFIG_START(splash_state::splash) m_outlatch->q_out_cb<3>().set(FUNC(splash_state::coin2_counter_w)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(58) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(64*8, 64*8) - MCFG_SCREEN_VISIBLE_AREA(2*8, 48*8-1, 2*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(splash_state, screen_update) - MCFG_SCREEN_PALETTE(m_palette) + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(58); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(64*8, 64*8); + screen.set_visarea(2*8, 48*8-1, 2*8, 32*8-1); + screen.set_screen_update(FUNC(splash_state::screen_update)); + screen.set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_splash) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_splash); PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048); MCFG_MACHINE_START_OVERRIDE(splash_state, splash ) @@ -523,14 +523,13 @@ MACHINE_CONFIG_START(splash_state::splash) GENERIC_LATCH_8(config, m_soundlatch); m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0); - MCFG_DEVICE_ADD("ymsnd", YM3812, XTAL(30'000'000)/8) /* 3.75MHz (30/8) */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) + YM3812(config, "ymsnd", XTAL(30'000'000)/8).add_route(ALL_OUTPUTS, "mono", 0.80); /* 3.75MHz (30/8) */ - MCFG_DEVICE_ADD("msm", MSM5205, XTAL(384'000)) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, splash_state, splash_msm5205_int)) /* IRQ handler */ - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 8KHz */ /* Sample rate = 384kHz/48 */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) -MACHINE_CONFIG_END + MSM5205(config, m_msm, XTAL(384'000)); + m_msm->vck_legacy_callback().set(FUNC(splash_state::splash_msm5205_int)); /* IRQ handler */ + m_msm->set_prescaler_selector(msm5205_device::S48_4B); /* 8KHz */ /* Sample rate = 384kHz/48 */ + m_msm->add_route(ALL_OUTPUTS, "mono", 0.80); +} MACHINE_START_MEMBER(splash_state, roldfrog) @@ -546,17 +545,17 @@ INTERRUPT_GEN_MEMBER(splash_state::roldfrog_interrupt) roldfrog_update_irq(); } -MACHINE_CONFIG_START(splash_state::roldfrog) - +void splash_state::roldfrog(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/2) /* 12 MHz - verified */ - MCFG_DEVICE_PROGRAM_MAP(roldfrog_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", splash_state, irq6_line_hold) + M68000(config, m_maincpu, XTAL(24'000'000)/2); /* 12 MHz - verified */ + m_maincpu->set_addrmap(AS_PROGRAM, &splash_state::roldfrog_map); + m_maincpu->set_vblank_int("screen", FUNC(splash_state::irq6_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(24'000'000)/8) /* 3 MHz - verified */ - MCFG_DEVICE_PROGRAM_MAP(roldfrog_sound_map) - MCFG_DEVICE_IO_MAP(roldfrog_sound_io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", splash_state, roldfrog_interrupt) + Z80(config, m_audiocpu, XTAL(24'000'000)/8); /* 3 MHz - verified */ + m_audiocpu->set_addrmap(AS_PROGRAM, &splash_state::roldfrog_sound_map); + m_audiocpu->set_addrmap(AS_IO, &splash_state::roldfrog_sound_io_map); + m_audiocpu->set_vblank_int("screen", FUNC(splash_state::roldfrog_interrupt)); LS259(config, m_outlatch); m_outlatch->q_out_cb<1>().set(FUNC(splash_state::coin1_lockout_w)); @@ -565,15 +564,15 @@ MACHINE_CONFIG_START(splash_state::roldfrog) m_outlatch->q_out_cb<3>().set(FUNC(splash_state::coin2_counter_w)); /* 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, 64*8) - MCFG_SCREEN_VISIBLE_AREA(2*8, 48*8-1, 2*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(splash_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(64*8, 64*8); + screen.set_visarea(2*8, 48*8-1, 2*8, 32*8-1); + screen.set_screen_update(FUNC(splash_state::screen_update)); + screen.set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_splash) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_splash); PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048); MCFG_MACHINE_START_OVERRIDE(splash_state, roldfrog ) @@ -586,13 +585,13 @@ MACHINE_CONFIG_START(splash_state::roldfrog) m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI); m_soundlatch->set_separate_acknowledge(true); - MCFG_DEVICE_ADD("ymsnd", YM2203, XTAL(24'000'000) / 8) - MCFG_YM2203_IRQ_HANDLER(WRITELINE(*this, splash_state, ym_irq)) - 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", 1.0) -MACHINE_CONFIG_END + ym2203_device &ymsnd(YM2203(config, "ymsnd", XTAL(24'000'000) / 8)); + ymsnd.irq_handler().set(FUNC(splash_state::ym_irq)); + ymsnd.add_route(0, "mono", 0.20); + ymsnd.add_route(1, "mono", 0.20); + ymsnd.add_route(2, "mono", 0.20); + ymsnd.add_route(3, "mono", 1.0); +} WRITE_LINE_MEMBER(funystrp_state::adpcm_int1) { @@ -639,29 +638,29 @@ void funystrp_state::machine_start() save_item(NAME(m_snd_interrupt_enable2)); } -MACHINE_CONFIG_START(funystrp_state::funystrp) - +void funystrp_state::funystrp(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", M68000, XTAL(24'000'000)/2) /* 12 MHz (24/2) */ - MCFG_DEVICE_PROGRAM_MAP(funystrp_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", funystrp_state, irq6_line_hold) + M68000(config, m_maincpu, XTAL(24'000'000)/2); /* 12 MHz (24/2) */ + m_maincpu->set_addrmap(AS_PROGRAM, &funystrp_state::funystrp_map); + m_maincpu->set_vblank_int("screen", FUNC(funystrp_state::irq6_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(24'000'000)/4) /* 6MHz (24/4) */ - MCFG_DEVICE_PROGRAM_MAP(funystrp_sound_map) - MCFG_DEVICE_IO_MAP(funystrp_sound_io_map) + Z80(config, m_audiocpu, XTAL(24'000'000)/4); /* 6MHz (24/4) */ + m_audiocpu->set_addrmap(AS_PROGRAM, &funystrp_state::funystrp_sound_map); + m_audiocpu->set_addrmap(AS_IO, &funystrp_state::funystrp_sound_io_map); - EEPROM_93C46_16BIT(config, "eeprom"); + EEPROM_93C46_16BIT(config, m_eeprom); /* 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, 64*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 48*8-1, 2*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(funystrp_state, screen_update_funystrp) - 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(64*8, 64*8); + screen.set_visarea(0*8, 48*8-1, 2*8, 32*8-1); + screen.set_screen_update(FUNC(funystrp_state::screen_update_funystrp)); + screen.set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, m_palette, gfx_splash) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_splash); PALETTE(config, m_palette).set_format(palette_device::xRGB_555, 2048); /* sound hardware */ @@ -670,16 +669,16 @@ MACHINE_CONFIG_START(funystrp_state::funystrp) GENERIC_LATCH_8(config, m_soundlatch); m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI); - MCFG_DEVICE_ADD("msm1", MSM5205, XTAL(400'000)) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, funystrp_state, adpcm_int1)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(S48_4B) /* 1 / 48 */ /* Sample rate = 400kHz/64 */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) + MSM5205(config, m_msm1, XTAL(400'000)); + m_msm1->vck_legacy_callback().set(FUNC(funystrp_state::adpcm_int1)); /* interrupt function */ + m_msm1->set_prescaler_selector(msm5205_device::S48_4B); /* 1 / 48 */ /* Sample rate = 400kHz/64 */ + m_msm1->add_route(ALL_OUTPUTS, "mono", 0.80); - MCFG_DEVICE_ADD("msm2", MSM5205, XTAL(400'000)) - MCFG_MSM5205_VCLK_CB(WRITELINE(*this, funystrp_state, adpcm_int2)) /* interrupt function */ - MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 1 / 96 */ /* Sample rate = 400kHz/96 */ - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80) -MACHINE_CONFIG_END + MSM5205(config, m_msm2, XTAL(400'000)); + m_msm2->vck_legacy_callback().set(FUNC(funystrp_state::adpcm_int2)); /* interrupt function */ + m_msm2->set_prescaler_selector(msm5205_device::S96_4B); /* 1 / 96 */ /* Sample rate = 400kHz/96 */ + m_msm2->add_route(ALL_OUTPUTS, "mono", 0.80); +} /*************************************************************************** diff --git a/src/mame/drivers/vigilant.cpp b/src/mame/drivers/vigilant.cpp index a9973a82d25..9b966e38e5e 100644 --- a/src/mame/drivers/vigilant.cpp +++ b/src/mame/drivers/vigilant.cpp @@ -480,32 +480,32 @@ static GFXDECODE_START( gfx_kikcubic ) GFXDECODE_END -MACHINE_CONFIG_START(vigilant_state::vigilant) - +void vigilant_state::vigilant(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 3.579545_MHz_XTAL) - MCFG_DEVICE_PROGRAM_MAP(vigilant_map) - MCFG_DEVICE_IO_MAP(vigilant_io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", vigilant_state, irq0_line_hold) + Z80(config, m_maincpu, 3.579545_MHz_XTAL); + m_maincpu->set_addrmap(AS_PROGRAM, &vigilant_state::vigilant_map); + m_maincpu->set_addrmap(AS_IO, &vigilant_state::vigilant_io_map); + m_maincpu->set_vblank_int("screen", FUNC(vigilant_state::irq0_line_hold)); - MCFG_DEVICE_ADD("soundcpu", Z80, 3.579545_MHz_XTAL) - MCFG_DEVICE_PROGRAM_MAP(sound_map) - MCFG_DEVICE_IO_MAP(sound_io_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(vigilant_state, nmi_line_pulse, 128*55) /* clocked by V1 */ - /* IRQs are generated by main Z80 and YM2151 */ - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("soundirq", rst_neg_buffer_device, inta_cb) + z80_device &soundcpu(Z80(config, "soundcpu", 3.579545_MHz_XTAL)); + soundcpu.set_addrmap(AS_PROGRAM, &vigilant_state::sound_map); + soundcpu.set_addrmap(AS_IO, &vigilant_state::sound_io_map); + soundcpu.set_periodic_int(FUNC(vigilant_state::nmi_line_pulse), attotime::from_hz(128*55)); /* clocked by V1 */ + /* IRQs are generated by main Z80 and YM2151 */ + soundcpu.set_irq_acknowledge_callback("soundirq", FUNC(rst_neg_buffer_device::inta_cb)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(55) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA((16*8)-1, (64-16)*8-4, 0*8, 32*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(vigilant_state, screen_update_vigilant) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(55); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(64*8, 32*8); + screen.set_visarea((16*8)-1, (64-16)*8-4, 0*8, 32*8-1); + screen.set_screen_update(FUNC(vigilant_state::screen_update_vigilant)); + screen.set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_vigilant) - MCFG_PALETTE_ADD("palette", 512+32) /* 512 real palette, 32 virtual palette */ + GFXDECODE(config, m_gfxdecode, m_palette, gfx_vigilant); + PALETTE(config, m_palette).set_entries(512+32); /* 512 real palette, 32 virtual palette */ /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); @@ -517,45 +517,48 @@ MACHINE_CONFIG_START(vigilant_state::vigilant) RST_NEG_BUFFER(config, "soundirq", 0).int_callback().set_inputline("soundcpu", 0); - MCFG_DEVICE_ADD("m72", IREM_M72_AUDIO) + IREM_M72_AUDIO(config, m_audio); ym2151_device &ymsnd(YM2151(config, "ymsnd", 3.579545_MHz_XTAL)); ymsnd.irq_handler().set("soundirq", FUNC(rst_neg_buffer_device::rst28_w)); ymsnd.add_route(0, "lspeaker", 0.55); ymsnd.add_route(1, "rspeaker", 0.55); - MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) // 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(vigilant_state::buccanrs) + dac_8bit_r2r_device &dac(DAC_8BIT_R2R(config, "dac", 0)); // unknown DAC + dac.add_route(ALL_OUTPUTS, "lspeaker", 1.0); + dac.add_route(ALL_OUTPUTS, "rspeaker", 1.0); + 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); +} +void vigilant_state::buccanrs(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 5688800) /* 5.688800 MHz */ - MCFG_DEVICE_PROGRAM_MAP(vigilant_map) - MCFG_DEVICE_IO_MAP(vigilant_io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", vigilant_state, irq0_line_hold) + Z80(config, m_maincpu, 5688800); /* 5.688800 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &vigilant_state::vigilant_map); + m_maincpu->set_addrmap(AS_IO, &vigilant_state::vigilant_io_map); + m_maincpu->set_vblank_int("screen", FUNC(vigilant_state::irq0_line_hold)); - MCFG_DEVICE_ADD("soundcpu", Z80, 18432000/6) /* 3.072000 MHz */ - MCFG_DEVICE_PROGRAM_MAP(sound_map) - MCFG_DEVICE_IO_MAP(buccanrs_sound_io_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(vigilant_state, nmi_line_pulse, 128*55) /* clocked by V1 */ + z80_device &soundcpu(Z80(config, "soundcpu", 18432000/6)); /* 3.072000 MHz */ + soundcpu.set_addrmap(AS_PROGRAM, &vigilant_state::sound_map); + soundcpu.set_addrmap(AS_IO, &vigilant_state::buccanrs_sound_io_map); + soundcpu.set_periodic_int(FUNC(vigilant_state::nmi_line_pulse), attotime::from_hz(128*55)); /* clocked by V1 */ /* IRQs are generated by main Z80 and YM2151 */ - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("soundirq", rst_neg_buffer_device, inta_cb) + soundcpu.set_irq_acknowledge_callback("soundirq", FUNC(rst_neg_buffer_device::inta_cb)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(55) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(16*8, (64-16)*8-1, 0*8, 32*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(vigilant_state, screen_update_vigilant) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_buccanrs) - MCFG_PALETTE_ADD("palette", 512+32) /* 512 real palette, 32 virtual palette */ + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(55); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(64*8, 32*8); + screen.set_visarea(16*8, (64-16)*8-1, 0*8, 32*8-1); + screen.set_screen_update(FUNC(vigilant_state::screen_update_vigilant)); + screen.set_palette(m_palette); + GFXDECODE(config, m_gfxdecode, m_palette, gfx_buccanrs); + PALETTE(config, m_palette).set_entries(512+32); /* 512 real palette, 32 virtual palette */ /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); @@ -567,60 +570,64 @@ MACHINE_CONFIG_START(vigilant_state::buccanrs) RST_NEG_BUFFER(config, "soundirq", 0).int_callback().set_inputline("soundcpu", 0); - MCFG_DEVICE_ADD("m72", IREM_M72_AUDIO) + IREM_M72_AUDIO(config, m_audio); - MCFG_DEVICE_ADD("ym1", YM2203, 18432000/6) - MCFG_YM2203_IRQ_HANDLER(WRITELINE("soundirq", rst_neg_buffer_device, rst28_w)) - MCFG_SOUND_ROUTE(0, "lspeaker", 0.35) - MCFG_SOUND_ROUTE(0, "rspeaker", 0.35) - MCFG_SOUND_ROUTE(1, "lspeaker", 0.35) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.35) - MCFG_SOUND_ROUTE(2, "lspeaker", 0.35) - MCFG_SOUND_ROUTE(2, "rspeaker", 0.35) - MCFG_SOUND_ROUTE(3, "lspeaker", 0.50) - MCFG_SOUND_ROUTE(3, "rspeaker", 0.50) + ym2203_device &ym1(YM2203(config, "ym1", 18432000/6)); + ym1.irq_handler().set("soundirq", FUNC(rst_neg_buffer_device::rst28_w)); + ym1.add_route(0, "lspeaker", 0.35); + ym1.add_route(0, "rspeaker", 0.35); + ym1.add_route(1, "lspeaker", 0.35); + ym1.add_route(1, "rspeaker", 0.35); + ym1.add_route(2, "lspeaker", 0.35); + ym1.add_route(2, "rspeaker", 0.35); + ym1.add_route(3, "lspeaker", 0.50); + ym1.add_route(3, "rspeaker", 0.50); - MCFG_DEVICE_ADD("ym2", YM2203, 18432000/6) - MCFG_SOUND_ROUTE(0, "lspeaker", 0.35) - MCFG_SOUND_ROUTE(0, "rspeaker", 0.35) - MCFG_SOUND_ROUTE(1, "lspeaker", 0.35) - MCFG_SOUND_ROUTE(1, "rspeaker", 0.35) - MCFG_SOUND_ROUTE(2, "lspeaker", 0.35) - MCFG_SOUND_ROUTE(2, "rspeaker", 0.35) - MCFG_SOUND_ROUTE(3, "lspeaker", 0.50) - MCFG_SOUND_ROUTE(3, "rspeaker", 0.50) + ym2203_device &ym2(YM2203(config, "ym2", 18432000/6));; + ym2.add_route(0, "lspeaker", 0.35); + ym2.add_route(0, "rspeaker", 0.35); + ym2.add_route(1, "lspeaker", 0.35); + ym2.add_route(1, "rspeaker", 0.35); + ym2.add_route(2, "lspeaker", 0.35); + ym2.add_route(2, "rspeaker", 0.35); + ym2.add_route(3, "lspeaker", 0.50); + ym2.add_route(3, "rspeaker", 0.50); - MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 0.35) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 0.35) // 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(vigilant_state::kikcubic) + dac_8bit_r2r_device &dac(DAC_8BIT_R2R(config, "dac", 0)); // unknown DAC + dac.add_route(ALL_OUTPUTS, "lspeaker", 0.35); + dac.add_route(ALL_OUTPUTS, "rspeaker", 0.35); + 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); +} +void vigilant_state::kikcubic(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 3.579545_MHz_XTAL) - MCFG_DEVICE_PROGRAM_MAP(kikcubic_map) - MCFG_DEVICE_IO_MAP(kikcubic_io_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", vigilant_state, irq0_line_hold) + Z80(config, m_maincpu, 3.579545_MHz_XTAL); + m_maincpu->set_addrmap(AS_PROGRAM, &vigilant_state::kikcubic_map); + m_maincpu->set_addrmap(AS_IO, &vigilant_state::kikcubic_io_map); + m_maincpu->set_vblank_int("screen", FUNC(vigilant_state::irq0_line_hold)); - MCFG_DEVICE_ADD("soundcpu", Z80, 3.579545_MHz_XTAL) - MCFG_DEVICE_PROGRAM_MAP(sound_map) - MCFG_DEVICE_IO_MAP(sound_io_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(vigilant_state, nmi_line_pulse, 128*55) /* clocked by V1 */ + z80_device &soundcpu(Z80(config, "soundcpu", 3.579545_MHz_XTAL)); + soundcpu.set_addrmap(AS_PROGRAM, &vigilant_state::sound_map); + soundcpu.set_addrmap(AS_IO, &vigilant_state::sound_io_map); + soundcpu.set_periodic_int(FUNC(vigilant_state::nmi_line_pulse), attotime::from_hz(128*55)); /* clocked by V1 */ /* IRQs are generated by main Z80 and YM2151 */ - MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("soundirq", rst_neg_buffer_device, inta_cb) + soundcpu.set_irq_acknowledge_callback("soundirq", FUNC(rst_neg_buffer_device::inta_cb)); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(55) - MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) - MCFG_SCREEN_SIZE(64*8, 32*8) - MCFG_SCREEN_VISIBLE_AREA(8*8, (64-8)*8-1, 0*8, 32*8-1 ) - MCFG_SCREEN_UPDATE_DRIVER(vigilant_state, screen_update_kikcubic) - MCFG_SCREEN_PALETTE("palette") + screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); + screen.set_refresh_hz(55); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); /* not accurate */ + screen.set_size(64*8, 32*8); + screen.set_visarea(8*8, (64-8)*8-1, 0*8, 32*8-1); + screen.set_screen_update(FUNC(vigilant_state::screen_update_kikcubic)); + screen.set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_kikcubic) - MCFG_PALETTE_ADD("palette", 256) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_kikcubic); + PALETTE(config, m_palette).set_entries(256); /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); @@ -632,17 +639,21 @@ MACHINE_CONFIG_START(vigilant_state::kikcubic) RST_NEG_BUFFER(config, "soundirq", 0).int_callback().set_inputline("soundcpu", 0); - MCFG_DEVICE_ADD("m72", IREM_M72_AUDIO) + IREM_M72_AUDIO(config, m_audio); ym2151_device &ymsnd(YM2151(config, "ymsnd", 3.579545_MHz_XTAL)); ymsnd.irq_handler().set("soundirq", FUNC(rst_neg_buffer_device::rst28_w)); ymsnd.add_route(0, "lspeaker", 0.55); ymsnd.add_route(1, "rspeaker", 0.55); - MCFG_DEVICE_ADD("dac", DAC_8BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) // 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 + dac_8bit_r2r_device &dac(DAC_8BIT_R2R(config, "dac", 0)); // unknown DAC + dac.add_route(ALL_OUTPUTS, "lspeaker", 1.0); + dac.add_route(ALL_OUTPUTS, "rspeaker", 1.0); + 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); +} diff --git a/src/mame/includes/deadang.h b/src/mame/includes/deadang.h index 4b9466dfa9b..23a880b08c4 100644 --- a/src/mame/includes/deadang.h +++ b/src/mame/includes/deadang.h @@ -9,6 +9,7 @@ #include "machine/timer.h" #include "sound/ym2151.h" #include "emupal.h" +#include "screen.h" class deadang_state : public driver_device { @@ -20,10 +21,12 @@ public: m_video_data(*this, "video_data"), m_spriteram(*this, "spriteram"), m_gfxdecode(*this, "gfxdecode"), + m_screen(*this, "screen"), m_palette(*this, "palette"), m_seibu_sound(*this, "seibu_sound"), m_maincpu(*this, "maincpu"), m_subcpu(*this, "sub"), + m_audiocpu(*this, "audiocpu"), m_adpcm1(*this, "adpcm1"), m_adpcm2(*this, "adpcm2") { } @@ -51,6 +54,7 @@ protected: required_shared_ptr m_video_data; required_shared_ptr m_spriteram; required_device m_gfxdecode; + required_device m_screen; required_device m_palette; required_device m_seibu_sound; @@ -68,9 +72,9 @@ protected: void sound_decrypted_opcodes_map(address_map &map); void sound_map(address_map &map); -private: required_device m_maincpu; required_device m_subcpu; + required_device m_audiocpu; optional_device m_adpcm1; optional_device m_adpcm2; diff --git a/src/mame/includes/megasys1.h b/src/mame/includes/megasys1.h index 158e18277a9..e37c8e402fa 100644 --- a/src/mame/includes/megasys1.h +++ b/src/mame/includes/megasys1.h @@ -38,6 +38,7 @@ public: m_soundlatch(*this, "soundlatch"), m_soundlatch2(*this, "soundlatch2"), m_soundlatch_z(*this, "soundlatch_z"), + m_scantimer(*this, "scantimer"), m_rom_maincpu(*this, "maincpu"), m_io_system(*this, "SYSTEM"), m_io_p1(*this, "P1"), @@ -100,6 +101,7 @@ private: optional_device m_soundlatch; optional_device m_soundlatch2; optional_device m_soundlatch_z; + optional_device m_scantimer; required_region_ptr m_rom_maincpu; required_ioport m_io_system; required_ioport m_io_p1; diff --git a/src/mame/includes/nmk16.h b/src/mame/includes/nmk16.h index 8e86d1a8048..852762fe337 100644 --- a/src/mame/includes/nmk16.h +++ b/src/mame/includes/nmk16.h @@ -6,14 +6,15 @@ #pragma once -#include "sound/okim6295.h" #include "audio/seibu.h" -#include "machine/nmk004.h" #include "machine/gen_latch.h" +#include "machine/nmk004.h" #include "machine/timer.h" +#include "sound/okim6295.h" #include "emupal.h" +#include "screen.h" -class nmk16_state : public driver_device, protected seibu_sound_common +class nmk16_state : public driver_device, public seibu_sound_common { public: nmk16_state(const machine_config &mconfig, device_type type, const char *tag) : @@ -22,6 +23,7 @@ public: m_audiocpu(*this, "audiocpu"), m_oki(*this, "oki%u", 1U), m_gfxdecode(*this, "gfxdecode"), + m_screen(*this, "screen"), m_palette(*this, "palette"), m_nmk004(*this, "nmk004"), m_soundlatch(*this, "soundlatch"), @@ -106,6 +108,7 @@ protected: optional_device m_audiocpu; optional_device_array m_oki; required_device m_gfxdecode; + required_device m_screen; required_device m_palette; optional_device m_nmk004; optional_device m_soundlatch; @@ -171,6 +174,10 @@ protected: DECLARE_WRITE16_MEMBER(nmk16_bioship_x0016_w); void save_protregs(); + void set_hacky_interrupt_timing(machine_config &config); + void set_hacky_screen_lowres(machine_config &config); + void set_hacky_screen_hires(machine_config &config); + TILEMAP_MAPPER_MEMBER(tilemap_scan_pages); template TILE_GET_INFO_MEMBER(common_get_bg_tile_info); TILE_GET_INFO_MEMBER(common_get_tx_tile_info); diff --git a/src/mame/includes/powerins.h b/src/mame/includes/powerins.h index 81189214703..22de62c80bf 100644 --- a/src/mame/includes/powerins.h +++ b/src/mame/includes/powerins.h @@ -12,6 +12,7 @@ public: powerins_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), + m_soundcpu(*this, "soundcpu"), m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen"), m_palette(*this, "palette"), @@ -27,6 +28,7 @@ public: private: required_device m_maincpu; + optional_device m_soundcpu; required_device m_gfxdecode; required_device m_screen; required_device m_palette;