diff options
Diffstat (limited to 'src/mame/drivers/snk.cpp')
-rw-r--r-- | src/mame/drivers/snk.cpp | 546 |
1 files changed, 250 insertions, 296 deletions
diff --git a/src/mame/drivers/snk.cpp b/src/mame/drivers/snk.cpp index f6a798caa91..0279c99f658 100644 --- a/src/mame/drivers/snk.cpp +++ b/src/mame/drivers/snk.cpp @@ -3611,38 +3611,38 @@ GFXDECODE_END /**********************************************************************/ -MACHINE_CONFIG_START(snk_state::marvins) - +void snk_state::marvins(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 3360000) /* 3.36 MHz */ - MCFG_DEVICE_PROGRAM_MAP(marvins_cpuA_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold) + Z80(config, m_maincpu, 3360000); /* 3.36 MHz */ + m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::marvins_cpuA_map); + m_maincpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold)); - MCFG_DEVICE_ADD("sub", Z80, 3360000) /* 3.36 MHz */ - MCFG_DEVICE_PROGRAM_MAP(marvins_cpuB_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold) + Z80(config, m_subcpu, 3360000); /* 3.36 MHz */ + m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::marvins_cpuB_map); + m_subcpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) /* verified on schematics */ - MCFG_DEVICE_PROGRAM_MAP(marvins_sound_map) - MCFG_DEVICE_IO_MAP(marvins_sound_portmap) - MCFG_DEVICE_PERIODIC_INT_DRIVER(snk_state, nmi_line_assert, 244) // schematics show a separate 244Hz timer + Z80(config, m_audiocpu, 4000000); /* verified on schematics */ + m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::marvins_sound_map); + m_audiocpu->set_addrmap(AS_IO, &snk_state::marvins_sound_portmap); + m_audiocpu->set_periodic_int(FUNC(snk_state::nmi_line_assert), attotime::from_hz(244)); // schematics show a separate 244Hz timer - 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_SIZE(36*8, 28*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 1*8, 28*8-1) - MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_marvins) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_size(36*8, 28*8); + m_screen->set_visarea(0*8, 36*8-1, 1*8, 28*8-1); + m_screen->set_screen_update(FUNC(snk_state::screen_update_marvins)); + m_screen->set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_marvins) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_marvins); - MCFG_PALETTE_ADD("palette", 0x400) - MCFG_PALETTE_ENABLE_SHADOWS() + PALETTE(config, m_palette, 0x400); + m_palette->enable_shadows(); + m_palette->set_init(FUNC(snk_state::palette_init_tnk3)); - MCFG_PALETTE_INIT_OWNER(snk_state,tnk3) MCFG_VIDEO_START_OVERRIDE(snk_state,marvins) /* sound hardware */ @@ -3652,69 +3652,60 @@ MACHINE_CONFIG_START(snk_state::marvins) m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, 0, HOLD_LINE); AY8910(config, "ay1", 2000000).add_route(ALL_OUTPUTS, "mono", 0.35); /* verified on schematics */ - AY8910(config, "ay2", 2000000).add_route(ALL_OUTPUTS, "mono", 0.35);/* verified on schematics */ - SNKWAVE(config, "wave", 8000000).add_route(ALL_OUTPUTS, "mono", 0.30); /* verified on schematics */ -MACHINE_CONFIG_END - +} -MACHINE_CONFIG_START(snk_state::vangrd2) +void snk_state::vangrd2(machine_config &config) +{ marvins(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(madcrash_cpuA_map) - - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_PROGRAM_MAP(madcrash_cpuB_map) -MACHINE_CONFIG_END - + m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::madcrash_cpuA_map); + m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::madcrash_cpuB_map); +} -MACHINE_CONFIG_START(snk_state::madcrush) +void snk_state::madcrush(machine_config &config) +{ marvins(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(madcrush_cpuA_map) - - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_PROGRAM_MAP(madcrush_cpuB_map) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(snk_state::jcross) + m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::madcrush_cpuA_map); + m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::madcrush_cpuB_map); +} +void snk_state::jcross(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 3350000) /* NOT verified */ - MCFG_DEVICE_PROGRAM_MAP(jcross_cpuA_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold) + Z80(config, m_maincpu, 3350000); /* NOT verified */ + m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::jcross_cpuA_map); + m_maincpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold)); - MCFG_DEVICE_ADD("sub", Z80, 3350000) /* NOT verified */ - MCFG_DEVICE_PROGRAM_MAP(jcross_cpuB_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold) + Z80(config, m_subcpu, 3350000); /* NOT verified */ + m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::jcross_cpuB_map); + m_subcpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) /* NOT verified */ - MCFG_DEVICE_PROGRAM_MAP(jcross_sound_map) - MCFG_DEVICE_IO_MAP(jcross_sound_portmap) - MCFG_DEVICE_PERIODIC_INT_DRIVER(snk_state, irq0_line_assert, 244) // Marvin's frequency, sounds ok + Z80(config, m_audiocpu, 4000000); /* NOT verified */ + m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::jcross_sound_map); + m_audiocpu->set_addrmap(AS_IO, &snk_state::jcross_sound_portmap); + m_audiocpu->set_periodic_int(FUNC(snk_state::irq0_line_assert), attotime::from_hz(244)); // Marvin's frequency, sounds ok - 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_SIZE(36*8, 28*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 1*8, 28*8-1) - MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_tnk3) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_size(36*8, 28*8); + m_screen->set_visarea(0*8, 36*8-1, 1*8, 28*8-1); + m_screen->set_screen_update(FUNC(snk_state::screen_update_tnk3)); + m_screen->set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tnk3) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_tnk3); - MCFG_PALETTE_ADD("palette", 0x400) - MCFG_PALETTE_ENABLE_SHADOWS() + PALETTE(config, m_palette, 0x400); + m_palette->enable_shadows(); + m_palette->set_init(FUNC(snk_state::palette_init_tnk3)); - MCFG_PALETTE_INIT_OWNER(snk_state,tnk3) MCFG_VIDEO_START_OVERRIDE(snk_state,jcross) /* sound hardware */ @@ -3723,79 +3714,70 @@ MACHINE_CONFIG_START(snk_state::jcross) GENERIC_LATCH_8(config, m_soundlatch); AY8910(config, "ay1", 2000000).add_route(ALL_OUTPUTS, "mono", 0.35); /* NOT verified */ - AY8910(config, "ay2", 2000000).add_route(ALL_OUTPUTS, "mono", 0.35); /* NOT verified */ -MACHINE_CONFIG_END - +} -MACHINE_CONFIG_START(snk_state::sgladiat) +void snk_state::sgladiat(machine_config &config) +{ jcross(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(sgladiat_cpuA_map) - - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_PROGRAM_MAP(sgladiat_cpuB_map) + m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::sgladiat_cpuA_map); + m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::sgladiat_cpuB_map); /* video hardware */ /* visible area is correct. Debug info is shown in the black bars at the sides of the screen when the Debug dip switch is on */ MCFG_VIDEO_START_OVERRIDE(snk_state,sgladiat) -MACHINE_CONFIG_END - +} -MACHINE_CONFIG_START(snk_state::hal21) +void snk_state::hal21(machine_config &config) +{ jcross(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(hal21_cpuA_map) - - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_PROGRAM_MAP(hal21_cpuB_map) + m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::hal21_cpuA_map); + m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::hal21_cpuB_map); - MCFG_DEVICE_MODIFY("audiocpu") - MCFG_DEVICE_PROGRAM_MAP(hal21_sound_map) - MCFG_DEVICE_IO_MAP(hal21_sound_portmap) - MCFG_DEVICE_PERIODIC_INT_DRIVER(snk_state, irq0_line_hold, 220) // music tempo, hand tuned + m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::hal21_sound_map); + m_audiocpu->set_addrmap(AS_IO, &snk_state::hal21_sound_portmap); + m_audiocpu->set_periodic_int(FUNC(snk_state::irq0_line_hold), attotime::from_hz(220)); // music tempo, hand tuned /* video hardware */ MCFG_VIDEO_START_OVERRIDE(snk_state,hal21) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(snk_state::tnk3) +} +void snk_state::tnk3(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(13'400'000)/4) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(tnk3_cpuA_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold) + Z80(config, m_maincpu, XTAL(13'400'000)/4); /* verified on pcb */ + m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::tnk3_cpuA_map); + m_maincpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold)); - MCFG_DEVICE_ADD("sub", Z80, XTAL(13'400'000)/4) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(tnk3_cpuB_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold) + Z80(config, m_subcpu, XTAL(13'400'000)/4); /* verified on pcb */ + m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::tnk3_cpuB_map); + m_subcpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(8'000'000)/2) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(tnk3_YM3526_sound_map) + Z80(config, m_audiocpu, XTAL(8'000'000)/2); /* verified on pcb */ + m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::tnk3_YM3526_sound_map); - 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_SIZE(36*8, 28*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 1*8, 28*8-1) - MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_tnk3) - MCFG_SCREEN_PALETTE("palette") + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_size(36*8, 28*8); + m_screen->set_visarea(0*8, 36*8-1, 1*8, 28*8-1); + m_screen->set_screen_update(FUNC(snk_state::screen_update_tnk3)); + m_screen->set_palette(m_palette); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tnk3) + GFXDECODE(config, m_gfxdecode, m_palette, gfx_tnk3); - MCFG_PALETTE_ADD("palette", 0x400) - MCFG_PALETTE_ENABLE_SHADOWS() + PALETTE(config, m_palette, 0x400); + m_palette->enable_shadows(); + m_palette->set_init(FUNC(snk_state::palette_init_tnk3)); - MCFG_PALETTE_INIT_OWNER(snk_state,tnk3) MCFG_VIDEO_START_OVERRIDE(snk_state,tnk3) /* sound hardware */ @@ -3803,100 +3785,92 @@ MACHINE_CONFIG_START(snk_state::tnk3) GENERIC_LATCH_8(config, m_soundlatch); - MCFG_DEVICE_ADD("ym1", YM3526, XTAL(8'000'000)/2) /* verified on pcb */ - MCFG_YM3526_IRQ_HANDLER(WRITELINE(*this, snk_state, ymirq_callback_1)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0) -MACHINE_CONFIG_END - + ym3526_device &ym1(YM3526(config, "ym1", XTAL(8'000'000)/2)); /* verified on pcb */ + ym1.irq_handler().set(FUNC(snk_state::ymirq_callback_1)); + ym1.add_route(ALL_OUTPUTS, "mono", 2.0); +} -MACHINE_CONFIG_START(snk_state::aso) +void snk_state::aso(machine_config &config) +{ tnk3(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(aso_cpuA_map) - - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_PROGRAM_MAP(aso_cpuB_map) - - MCFG_DEVICE_MODIFY("audiocpu") - MCFG_DEVICE_PROGRAM_MAP(aso_YM3526_sound_map) + m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::aso_cpuA_map); + m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::aso_cpuB_map); + m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::aso_YM3526_sound_map); /* video hardware */ MCFG_VIDEO_START_OVERRIDE(snk_state,aso) -MACHINE_CONFIG_END - +} -MACHINE_CONFIG_START(snk_state::athena) +void snk_state::athena(machine_config &config) +{ tnk3(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("audiocpu") - MCFG_DEVICE_PROGRAM_MAP(YM3526_YM3526_sound_map) + m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::YM3526_YM3526_sound_map); /* sound hardware */ - MCFG_DEVICE_ADD("ym2", YM3526, XTAL(8'000'000)/2) /* verified on pcb */ - MCFG_YM3526_IRQ_HANDLER(WRITELINE(*this, snk_state, ymirq_callback_2)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0) -MACHINE_CONFIG_END - + ym3526_device &ym2(YM3526(config, "ym2", XTAL(8'000'000)/2)); /* verified on pcb */ + ym2.irq_handler().set(FUNC(snk_state::ymirq_callback_2)); + ym2.add_route(ALL_OUTPUTS, "mono", 2.0); +} -MACHINE_CONFIG_START(snk_state::fitegolf) +void snk_state::fitegolf(machine_config &config) +{ tnk3(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("audiocpu") // xtal is 4MHz instead of 8MHz/2 but the end result is the same - MCFG_DEVICE_PROGRAM_MAP(YM3812_sound_map) + m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::YM3812_sound_map); /* sound hardware */ - MCFG_DEVICE_REPLACE("ym1", YM3812, XTAL(4'000'000)) /* verified on pcb */ - MCFG_YM3812_IRQ_HANDLER(WRITELINE(*this, snk_state, ymirq_callback_1)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0) -MACHINE_CONFIG_END + ym3812_device &ym1(YM3812(config.replace(), "ym1", XTAL(4'000'000))); /* verified on pcb */ + ym1.irq_handler().set(FUNC(snk_state::ymirq_callback_1)); + ym1.add_route(ALL_OUTPUTS, "mono", 2.0); +} -MACHINE_CONFIG_START(snk_state::fitegolf2) +void snk_state::fitegolf2(machine_config &config) +{ fitegolf(config); - MCFG_SCREEN_MODIFY("screen") - MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_fitegolf2) -MACHINE_CONFIG_END + m_screen->set_screen_update(FUNC(snk_state::screen_update_fitegolf2)); +} -MACHINE_CONFIG_START(snk_state::countryc) +void snk_state::countryc(machine_config &config) +{ fitegolf(config); - /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(countryc_cpuA_map) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(snk_state::ikari) + m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::countryc_cpuA_map); +} +void snk_state::ikari(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(13'400'000)/4) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(ikari_cpuA_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold) + Z80(config, m_maincpu, XTAL(13'400'000)/4); /* verified on pcb */ + m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::ikari_cpuA_map); + m_maincpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold)); - MCFG_DEVICE_ADD("sub", Z80, XTAL(13'400'000)/4) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(ikari_cpuB_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold) + Z80(config, m_subcpu, XTAL(13'400'000)/4); /* verified on pcb */ + m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::ikari_cpuB_map); + m_subcpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(8'000'000)/2) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(YM3526_YM3526_sound_map) + Z80(config, m_audiocpu, XTAL(8'000'000)/2); /* verified on pcb */ + m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::YM3526_YM3526_sound_map); - 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_SIZE(36*8, 28*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 36*8-1, 1*8, 28*8-1) - MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_ikari) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_ikari) - - MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", "proms", 0x400) - MCFG_PALETTE_ENABLE_SHADOWS() + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_size(36*8, 28*8); + m_screen->set_visarea(0*8, 36*8-1, 1*8, 28*8-1); + m_screen->set_screen_update(FUNC(snk_state::screen_update_ikari)); + m_screen->set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_ikari); + PALETTE(config, m_palette, 0x400); + m_palette->set_prom_region("proms"); + m_palette->set_init("palette", FUNC(palette_device::palette_init_RRRRGGGGBBBB_proms)); + m_palette->enable_shadows(); MCFG_VIDEO_START_OVERRIDE(snk_state,ikari) @@ -3905,57 +3879,58 @@ MACHINE_CONFIG_START(snk_state::ikari) GENERIC_LATCH_8(config, m_soundlatch); - MCFG_DEVICE_ADD("ym1", YM3526, XTAL(8'000'000)/2) /* verified on pcb */ - MCFG_YM3526_IRQ_HANDLER(WRITELINE(*this, snk_state, ymirq_callback_1)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0) - - MCFG_DEVICE_ADD("ym2", YM3526, XTAL(8'000'000)/2) /* verified on pcb */ - MCFG_YM3526_IRQ_HANDLER(WRITELINE(*this, snk_state, ymirq_callback_2)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0) -MACHINE_CONFIG_END + ym3526_device &ym1(YM3526(config, "ym1", XTAL(8'000'000)/2)); /* verified on pcb */ + ym1.irq_handler().set(FUNC(snk_state::ymirq_callback_1)); + ym1.add_route(ALL_OUTPUTS, "mono", 2.0); + ym3526_device &ym2(YM3526(config, "ym2", XTAL(8'000'000)/2)); /* verified on pcb */ + ym2.irq_handler().set(FUNC(snk_state::ymirq_callback_2)); + ym2.add_route(ALL_OUTPUTS, "mono", 2.0); +} -MACHINE_CONFIG_START(snk_state::victroad) +void snk_state::victroad(machine_config &config) +{ ikari(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("audiocpu") - MCFG_DEVICE_PROGRAM_MAP(YM3526_Y8950_sound_map) + m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::YM3526_Y8950_sound_map); /* sound hardware */ - MCFG_DEVICE_REPLACE("ym2", Y8950, XTAL(8'000'000)/2) /* verified on pcb */ - MCFG_Y8950_IRQ_HANDLER(WRITELINE(*this, snk_state, ymirq_callback_2)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(snk_state::bermudat) + y8950_device &ym2(Y8950(config.replace(), "ym2", XTAL(8'000'000)/2)); /* verified on pcb */ + ym2.irq().set(FUNC(snk_state::ymirq_callback_2)); + ym2.add_route(ALL_OUTPUTS, "mono", 2.0); +} +void snk_state::bermudat(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, XTAL(8'000'000)/2) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(bermudat_cpuA_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold) + Z80(config, m_maincpu, XTAL(8'000'000)/2); /* verified on pcb */ + m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::bermudat_cpuA_map); + m_maincpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold)); - MCFG_DEVICE_ADD("sub", Z80, XTAL(8'000'000)/2) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(bermudat_cpuB_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold) + Z80(config, m_subcpu, XTAL(8'000'000)/2); /* verified on pcb */ + m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::bermudat_cpuB_map); + m_subcpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(8'000'000)/2) /* verified on pcb */ - MCFG_DEVICE_PROGRAM_MAP(YM3526_Y8950_sound_map) + Z80(config, m_audiocpu, XTAL(8'000'000)/2); /* verified on pcb */ + m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::YM3526_Y8950_sound_map); - MCFG_QUANTUM_TIME(attotime::from_hz(24000)) + config.m_minimum_quantum = attotime::from_hz(24000); /* video hardware */ - MCFG_SCREEN_ADD("screen", RASTER) - MCFG_SCREEN_REFRESH_RATE(60) + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); // this visible area matches the psychos pcb - MCFG_SCREEN_SIZE(50*8, 28*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 50*8-1, 0*8, 28*8-1) - MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_gwar) - MCFG_SCREEN_PALETTE("palette") + m_screen->set_size(50*8, 28*8); + m_screen->set_visarea(0*8, 50*8-1, 0*8, 28*8-1); + m_screen->set_screen_update(FUNC(snk_state::screen_update_gwar)); + m_screen->set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_gwar); + PALETTE(config, m_palette, 0x400); + m_palette->set_prom_region("proms"); + m_palette->set_init("palette", FUNC(palette_device::palette_init_RRRRGGGGBBBB_proms)); - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_gwar) - MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", "proms", 0x400) MCFG_VIDEO_START_OVERRIDE(snk_state,gwar) /* sound hardware */ @@ -3963,103 +3938,83 @@ MACHINE_CONFIG_START(snk_state::bermudat) GENERIC_LATCH_8(config, m_soundlatch); - MCFG_DEVICE_ADD("ym1", YM3526, XTAL(8'000'000)/2) /* verified on pcb */ - MCFG_YM3526_IRQ_HANDLER(WRITELINE(*this, snk_state, ymirq_callback_1)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0) - - MCFG_DEVICE_ADD("ym2", Y8950, XTAL(8'000'000)/2) /* verified on pcb */ - MCFG_Y8950_IRQ_HANDLER(WRITELINE(*this, snk_state, ymirq_callback_2)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0) -MACHINE_CONFIG_END + ym3526_device &ym1(YM3526(config, "ym1", XTAL(8'000'000)/2)); /* verified on pcb */ + ym1.irq_handler().set(FUNC(snk_state::ymirq_callback_1)); + ym1.add_route(ALL_OUTPUTS, "mono", 2.0); + y8950_device &ym2(Y8950(config, "ym2", XTAL(8'000'000)/2)); /* verified on pcb */ + ym2.irq().set(FUNC(snk_state::ymirq_callback_2)); + ym2.add_route(ALL_OUTPUTS, "mono", 2.0); +} -MACHINE_CONFIG_START(snk_state::psychos) +void snk_state::psychos(machine_config &config) +{ bermudat(config); - - /* video hardware */ MCFG_VIDEO_START_OVERRIDE(snk_state,psychos) -MACHINE_CONFIG_END - +} -MACHINE_CONFIG_START(snk_state::gwar) +void snk_state::gwar(machine_config &config) +{ bermudat(config); + m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::gwar_cpuA_map); + m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::gwar_cpuB_map); +} - /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(gwar_cpuA_map) - - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_PROGRAM_MAP(gwar_cpuB_map) - -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(snk_state::gwara) +void snk_state::gwara(machine_config &config) +{ bermudat(config); + m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::gwara_cpuA_map); + m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::gwara_cpuB_map); +} - /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(gwara_cpuA_map) - - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_PROGRAM_MAP(gwara_cpuB_map) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(snk_state::chopper1) +void snk_state::chopper1(machine_config &config) +{ bermudat(config); - - /* basic machine hardware */ - MCFG_DEVICE_MODIFY("sub") - MCFG_DEVICE_PROGRAM_MAP(gwar_cpuB_map) - - MCFG_DEVICE_MODIFY("audiocpu") - MCFG_DEVICE_PROGRAM_MAP(YM3812_Y8950_sound_map) + m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::gwar_cpuB_map); + m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::YM3812_Y8950_sound_map); /* sound hardware */ - MCFG_DEVICE_REPLACE("ym1", YM3812, 4000000) - MCFG_YM3812_IRQ_HANDLER(WRITELINE(*this, snk_state, ymirq_callback_1)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END - + ym3812_device &ym1(YM3812(config.replace(), "ym1", 4000000)); + ym1.irq_handler().set(FUNC(snk_state::ymirq_callback_1)); + ym1.add_route(ALL_OUTPUTS, "mono", 1.0); +} -MACHINE_CONFIG_START(snk_state::choppera) +void snk_state::choppera(machine_config &config) +{ chopper1(config); + m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::gwar_cpuA_map); +} - /* basic machine hardware */ - MCFG_DEVICE_MODIFY("maincpu") - MCFG_DEVICE_PROGRAM_MAP(gwar_cpuA_map) -MACHINE_CONFIG_END - - -MACHINE_CONFIG_START(snk_state::tdfever) +void snk_state::tdfever(machine_config &config) +{ /* basic machine hardware */ - MCFG_DEVICE_ADD("maincpu", Z80, 4000000) - MCFG_DEVICE_PROGRAM_MAP(tdfever_cpuA_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold) + Z80(config, m_maincpu, 4000000); + m_maincpu->set_addrmap(AS_PROGRAM, &snk_state::tdfever_cpuA_map); + m_maincpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold)); - MCFG_DEVICE_ADD("sub", Z80, 4000000) - MCFG_DEVICE_PROGRAM_MAP(tdfever_cpuB_map) - MCFG_DEVICE_VBLANK_INT_DRIVER("screen", snk_state, irq0_line_hold) + Z80(config, m_subcpu, 4000000); + m_subcpu->set_addrmap(AS_PROGRAM, &snk_state::tdfever_cpuB_map); + m_subcpu->set_vblank_int("screen", FUNC(snk_state::irq0_line_hold)); - MCFG_DEVICE_ADD("audiocpu", Z80, 4000000) - MCFG_DEVICE_PROGRAM_MAP(YM3526_Y8950_sound_map) + Z80(config, m_audiocpu, 4000000); + m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::YM3526_Y8950_sound_map); - 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_SIZE(50*8, 28*8) - MCFG_SCREEN_VISIBLE_AREA(0*8, 50*8-1, 0*8, 28*8-1) - MCFG_SCREEN_UPDATE_DRIVER(snk_state, screen_update_tdfever) - MCFG_SCREEN_PALETTE("palette") - - MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_tdfever) - - MCFG_PALETTE_ADD_RRRRGGGGBBBB_PROMS("palette", "proms", 0x400) - MCFG_PALETTE_ENABLE_SHADOWS() + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_size(50*8, 28*8); + m_screen->set_visarea(0*8, 50*8-1, 0*8, 28*8-1); + m_screen->set_screen_update(FUNC(snk_state::screen_update_tdfever)); + m_screen->set_palette(m_palette); + + GFXDECODE(config, m_gfxdecode, m_palette, gfx_tdfever); + PALETTE(config, m_palette, 0x400); + m_palette->set_prom_region("proms"); + m_palette->set_init("palette", FUNC(palette_device::palette_init_RRRRGGGGBBBB_proms)); + m_palette->enable_shadows(); MCFG_VIDEO_START_OVERRIDE(snk_state,tdfever) @@ -4068,29 +4023,28 @@ MACHINE_CONFIG_START(snk_state::tdfever) GENERIC_LATCH_8(config, m_soundlatch); - MCFG_DEVICE_ADD("ym1", YM3526, 4000000) - MCFG_YM3526_IRQ_HANDLER(WRITELINE(*this, snk_state, ymirq_callback_1)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) - - MCFG_DEVICE_ADD("ym2", Y8950, 4000000) - MCFG_Y8950_IRQ_HANDLER(WRITELINE(*this, snk_state, ymirq_callback_2)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) -MACHINE_CONFIG_END + ym3526_device &ym1(YM3526(config, "ym1", 4000000)); + ym1.irq_handler().set(FUNC(snk_state::ymirq_callback_1)); + ym1.add_route(ALL_OUTPUTS, "mono", 1.0); + y8950_device &ym2(Y8950(config, "ym2", 4000000)); + ym2.irq().set(FUNC(snk_state::ymirq_callback_2)); + ym2.add_route(ALL_OUTPUTS, "mono", 1.0); +} -MACHINE_CONFIG_START(snk_state::tdfever2) +void snk_state::tdfever2(machine_config &config) +{ tdfever(config); /* basic machine hardware */ - MCFG_DEVICE_MODIFY("audiocpu") - MCFG_DEVICE_PROGRAM_MAP(Y8950_sound_map) + m_audiocpu->set_addrmap(AS_PROGRAM, &snk_state::Y8950_sound_map); /* sound hardware */ // apparently, no "ym1" in tdfever2 // (registers are written to but they cause sound not to work) - MCFG_DEVICE_REMOVE("ym1") -MACHINE_CONFIG_END + config.device_remove("ym1"); +} /***********************************************************************/ |