summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/cave.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/cave.cpp')
-rw-r--r--src/mame/drivers/cave.cpp675
1 files changed, 266 insertions, 409 deletions
diff --git a/src/mame/drivers/cave.cpp b/src/mame/drivers/cave.cpp
index 855ae2f1248..7d564233867 100644
--- a/src/mame/drivers/cave.cpp
+++ b/src/mame/drivers/cave.cpp
@@ -2010,278 +2010,215 @@ void cave_state::machine_reset()
m_agallet_vblank_irq = 0;
}
+void cave_state::add_base_config(machine_config &config)
+{
+ M68000(config, m_maincpu, 16_MHz_XTAL);
+ m_maincpu->set_vblank_int("screen", FUNC(cave_state::interrupt));
+
+ TIMER(config, m_int_timer).configure_generic(FUNC(cave_state::vblank_start));
+
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_refresh_hz(15625/271.5);
+ m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ m_screen->set_size(320, 240);
+ m_screen->set_visarea(0, 320-1, 0, 240-1);
+ m_screen->set_screen_update(FUNC(cave_state::screen_update));
+
+ PALETTE(config, m_palette, 0x8000);
+ m_palette->set_init(FUNC(cave_state::palette_init_cave));
+}
+
+void cave_state::add_ymz(machine_config &config)
+{
+ SPEAKER(config, "mono").front_center();
+
+ ymz280b_device &ymz(YMZ280B(config, "ymz", 16.9344_MHz_XTAL));
+ ymz.irq_handler().set(FUNC(cave_state::sound_irq_gen));
+ ymz.add_route(ALL_OUTPUTS, "mono", 1.0);
+}
+
/***************************************************************************
Dangun Feveron
***************************************************************************/
-MACHINE_CONFIG_START(cave_state::dfeveron)
+void cave_state::dfeveron(machine_config &config)
+{
+ add_base_config(config);
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
- MCFG_DEVICE_PROGRAM_MAP(dfeveron_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
+ m_maincpu->set_addrmap(AS_PROGRAM, &cave_state::dfeveron_map);
EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
-
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(15625/271.5)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(320, 240)
- MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
-
GFXDECODE(config, m_gfxdecode, m_palette, gfx_dfeveron);
- PALETTE(config, m_palette, 0x8000); /* $8000 palette entries for consistency with the other games */
- m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_dfeveron), this));
+ /* $8000 palette entries for consistency with the other games */
+ m_palette->set_init(FUNC(cave_state::palette_init_dfeveron));
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_2_layers)
/* sound hardware */
- SPEAKER(config, "mono").front_center();
-
- MCFG_DEVICE_ADD("ymz", YMZ280B, 16.9344_MHz_XTAL)
- MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(*this, cave_state, sound_irq_gen))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
-MACHINE_CONFIG_END
+ add_ymz(config);
+}
/***************************************************************************
Dodonpachi
***************************************************************************/
-
-MACHINE_CONFIG_START(cave_state::ddonpach)
+void cave_state::ddonpach(machine_config &config)
+{
+ add_base_config(config);
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
- MCFG_DEVICE_PROGRAM_MAP(ddonpach_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
+ m_maincpu->set_addrmap(AS_PROGRAM, &cave_state::ddonpach_map);
EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
-
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(15625/271.5)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(320, 240)
- MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
-
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ddonpach);
- PALETTE(config, m_palette, 0x8000);
- m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_cave), this));
-
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
/* sound hardware */
- SPEAKER(config, "mono").front_center();
-
- MCFG_DEVICE_ADD("ymz", YMZ280B, 16.9344_MHz_XTAL)
- MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(*this, cave_state, sound_irq_gen))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
-MACHINE_CONFIG_END
+ add_ymz(config);
+}
/***************************************************************************
Donpachi
***************************************************************************/
-MACHINE_CONFIG_START(cave_state::donpachi)
+void cave_state::donpachi(machine_config &config)
+{
+ add_base_config(config);
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
- MCFG_DEVICE_PROGRAM_MAP(donpachi_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
+ m_maincpu->set_addrmap(AS_PROGRAM, &cave_state::donpachi_map);
EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
-
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(15625/271.5)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(320, 240)
- MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
-
GFXDECODE(config, m_gfxdecode, m_palette, gfx_donpachi);
- PALETTE(config, m_palette, 0x8000); /* $8000 palette entries for consistency with the other games */
- m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_dfeveron), this));
+ /* $8000 palette entries for consistency with the other games */
+ m_palette->set_init(FUNC(cave_state::palette_init_dfeveron));
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("oki1", OKIM6295, 4.224_MHz_XTAL/4, okim6295_device::PIN7_HIGH) // pin 7 not verified
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.60)
+ OKIM6295(config, m_oki[0], 4.224_MHz_XTAL/4, okim6295_device::PIN7_HIGH); // pin 7 not verified
+ m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.60);
- MCFG_DEVICE_ADD("oki2", OKIM6295, 4.224_MHz_XTAL/2, okim6295_device::PIN7_HIGH) // pin 7 not verified
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
+ OKIM6295(config, m_oki[1], 4.224_MHz_XTAL/2, okim6295_device::PIN7_HIGH); // pin 7 not verified
+ m_oki[1]->add_route(ALL_OUTPUTS, "mono", 1.0);
nmk112_device &nmk112(NMK112(config, "nmk112", 0));
nmk112.set_rom0_tag("oki1");
nmk112.set_rom1_tag("oki2");
nmk112.set_page_mask(1 << 0); // chip #0 (music) is not paged
-MACHINE_CONFIG_END
+}
/***************************************************************************
Esprade
***************************************************************************/
-MACHINE_CONFIG_START(cave_state::esprade)
+void cave_state::esprade(machine_config &config)
+{
+ add_base_config(config);
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
- MCFG_DEVICE_PROGRAM_MAP(esprade_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
+ m_maincpu->set_addrmap(AS_PROGRAM, &cave_state::esprade_map);
EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
-
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(15625/271.5)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(320, 240)
- MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
-
GFXDECODE(config, m_gfxdecode, m_palette, gfx_esprade);
- PALETTE(config, m_palette, 0x8000);
- m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_cave), this));
-
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
/* sound hardware */
- SPEAKER(config, "mono").front_center();
-
- MCFG_DEVICE_ADD("ymz", YMZ280B, 16.9344_MHz_XTAL)
- MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(*this, cave_state, sound_irq_gen))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
-MACHINE_CONFIG_END
+ add_ymz(config);
+}
/***************************************************************************
Gaia Crusaders
***************************************************************************/
-MACHINE_CONFIG_START(cave_state::gaia)
+void cave_state::gaia(machine_config &config)
+{
+ add_base_config(config);
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
- MCFG_DEVICE_PROGRAM_MAP(gaia_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
-
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
+ m_maincpu->set_addrmap(AS_PROGRAM, &cave_state::gaia_map);
WATCHDOG_TIMER(config, "watchdog");
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(15625/271.5)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(320, 240)
- MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
+ m_screen->set_visarea(0, 320-1, 0, 224-1);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_esprade);
- PALETTE(config, m_palette, 0x8000);
- m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_cave), this));
-
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
/* sound hardware */
- SPEAKER(config, "mono").front_center();
-
- MCFG_DEVICE_ADD("ymz", YMZ280B, 16.9344_MHz_XTAL)
- MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(*this, cave_state, sound_irq_gen))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
-MACHINE_CONFIG_END
+ add_ymz(config);
+}
/***************************************************************************
Guwange
***************************************************************************/
-MACHINE_CONFIG_START(cave_state::guwange)
+void cave_state::guwange(machine_config &config)
+{
+ add_base_config(config);
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
- MCFG_DEVICE_PROGRAM_MAP(guwange_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
+ m_maincpu->set_addrmap(AS_PROGRAM, &cave_state::guwange_map);
EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
-
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(15625/271.5)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(320, 240)
- MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
-
GFXDECODE(config, m_gfxdecode, m_palette, gfx_esprade);
- PALETTE(config, m_palette, 0x8000);
- m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_cave), this));
-
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
/* sound hardware */
- SPEAKER(config, "mono").front_center();
-
- MCFG_DEVICE_ADD("ymz", YMZ280B, 16.9344_MHz_XTAL)
- MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(*this, cave_state, sound_irq_gen))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
-MACHINE_CONFIG_END
+ add_ymz(config);
+}
/***************************************************************************
Hotdog Storm
***************************************************************************/
-MACHINE_CONFIG_START(cave_state::hotdogst)
+void cave_state::hotdogst(machine_config &config)
+{
+ add_base_config(config);
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 32_MHz_XTAL/2)
- MCFG_DEVICE_PROGRAM_MAP(hotdogst_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
+ m_maincpu->set_clock(32_MHz_XTAL/2);
+ m_maincpu->set_addrmap(AS_PROGRAM, &cave_state::hotdogst_map);
- MCFG_DEVICE_ADD("audiocpu", Z80, 32_MHz_XTAL/8)
- MCFG_DEVICE_PROGRAM_MAP(hotdogst_sound_map)
- MCFG_DEVICE_IO_MAP(hotdogst_sound_portmap)
+ Z80(config, m_audiocpu, 32_MHz_XTAL/8);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &cave_state::hotdogst_sound_map);
+ m_audiocpu->set_addrmap(AS_IO, &cave_state::hotdogst_sound_portmap);
EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
-
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(15625/271.5)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(384, 240)
- MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
+ m_screen->set_size(384, 240);
+ m_screen->set_visarea(0, 384-1, 0, 240-1);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_hotdogst);
- PALETTE(config, m_palette, 0x8000); /* $8000 palette entries for consistency with the other games */
- m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_dfeveron), this));
+ /* $8000 palette entries for consistency with the other games */
+ m_palette->set_init(FUNC(cave_state::palette_init_dfeveron));
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
@@ -2291,97 +2228,80 @@ MACHINE_CONFIG_START(cave_state::hotdogst)
GENERIC_LATCH_16(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- MCFG_DEVICE_ADD("ymsnd", YM2203, 32_MHz_XTAL/8)
- MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "mono", 0.20)
- MCFG_SOUND_ROUTE(1, "mono", 0.20)
- MCFG_SOUND_ROUTE(2, "mono", 0.20)
- MCFG_SOUND_ROUTE(3, "mono", 0.80)
+ ym2203_device &ymsnd(YM2203(config, "ymsnd", 32_MHz_XTAL/8));
+ ymsnd.irq_handler().set_inputline("audiocpu", 0);
+ 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", 0.80);
- MCFG_DEVICE_ADD("oki1", OKIM6295, 32_MHz_XTAL/16, okim6295_device::PIN7_HIGH) // pin 7 not verified
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
-MACHINE_CONFIG_END
+ OKIM6295(config, m_oki[0], 32_MHz_XTAL/16, okim6295_device::PIN7_HIGH); // pin 7 not verified
+ m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.0);
+ m_oki[0]->set_addrmap(0, &cave_state::oki_map);
+}
/***************************************************************************
Koro Koro Quest
***************************************************************************/
-MACHINE_CONFIG_START(cave_state::korokoro)
+void cave_state::korokoro(machine_config &config)
+{
+ add_base_config(config);
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
- MCFG_DEVICE_PROGRAM_MAP(korokoro_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
+ m_maincpu->set_addrmap(AS_PROGRAM, &cave_state::korokoro_map);
EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
-
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(15625/271.5)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(320, 240)
- MCFG_SCREEN_VISIBLE_AREA(0, 320-1-2, 0, 240-1-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
+ m_screen->set_visarea(0, 320-1-2, 0, 240-1-1);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_korokoro);
- PALETTE(config, m_palette, 0x8000); /* $8000 palette entries for consistency with the other games */
- m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_korokoro), this));
+ /* $8000 palette entries for consistency with the other games */
+ m_palette->set_init(FUNC(cave_state::palette_init_korokoro));
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_1_layer)
/* sound hardware */
- SPEAKER(config, "mono").front_center();
-
- MCFG_DEVICE_ADD("ymz", YMZ280B, 16.9344_MHz_XTAL)
- MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(*this, cave_state, sound_irq_gen))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
-MACHINE_CONFIG_END
+ add_ymz(config);
+}
-MACHINE_CONFIG_START(cave_state::crusherm)
+void cave_state::crusherm(machine_config &config)
+{
korokoro(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(crusherm_map)
-MACHINE_CONFIG_END
+ m_maincpu->set_addrmap(AS_PROGRAM, &cave_state::crusherm_map);
+}
/***************************************************************************
Mazinger Z
***************************************************************************/
-MACHINE_CONFIG_START(cave_state::mazinger)
+void cave_state::mazinger(machine_config &config)
+{
+ add_base_config(config);
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
- MCFG_DEVICE_PROGRAM_MAP(mazinger_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
+ m_maincpu->set_addrmap(AS_PROGRAM, &cave_state::mazinger_map);
- MCFG_DEVICE_ADD("audiocpu", Z80, 4_MHz_XTAL) // Bidirectional communication
- MCFG_DEVICE_PROGRAM_MAP(mazinger_sound_map)
- MCFG_DEVICE_IO_MAP(mazinger_sound_portmap)
+ Z80(config, m_audiocpu, 4_MHz_XTAL); // Bidirectional communication
+ m_audiocpu->set_addrmap(AS_PROGRAM, &cave_state::mazinger_sound_map);
+ m_audiocpu->set_addrmap(AS_IO, &cave_state::mazinger_sound_portmap);
WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_seconds(3)); /* a guess, and certainly wrong */
EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
-
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(15625/271.5)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(384, 240)
- MCFG_SCREEN_VISIBLE_AREA(0, 384-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
+ m_screen->set_size(384, 240);
+ m_screen->set_visarea(0, 384-1, 0, 240-1);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_mazinger);
- PALETTE(config, m_palette, 0x8000); /* $8000 palette entries for consistency with the other games */
- m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_mazinger), this));
+ /* $8000 palette entries for consistency with the other games */
+ m_palette->set_init(FUNC(cave_state::palette_init_mazinger));
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_2_layers)
@@ -2391,52 +2311,47 @@ MACHINE_CONFIG_START(cave_state::mazinger)
GENERIC_LATCH_16(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- MCFG_DEVICE_ADD("ymsnd", YM2203, 4_MHz_XTAL)
- MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "mono", 0.20)
- MCFG_SOUND_ROUTE(1, "mono", 0.20)
- MCFG_SOUND_ROUTE(2, "mono", 0.20)
- MCFG_SOUND_ROUTE(3, "mono", 0.60)
+ ym2203_device &ymsnd(YM2203(config, "ymsnd", 4_MHz_XTAL));
+ ymsnd.irq_handler().set_inputline("audiocpu", 0);
+ 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", 0.60);
- MCFG_DEVICE_ADD("oki1", OKIM6295, 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 2.0)
- MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
-MACHINE_CONFIG_END
+ OKIM6295(config, m_oki[0], 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
+ m_oki[0]->add_route(ALL_OUTPUTS, "mono", 2.0);
+ m_oki[0]->set_addrmap(0, &cave_state::oki_map);
+}
/***************************************************************************
Metamoqester
***************************************************************************/
-MACHINE_CONFIG_START(cave_state::metmqstr)
+void cave_state::metmqstr(machine_config &config)
+{
+ add_base_config(config);
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 32_MHz_XTAL / 2)
- MCFG_DEVICE_PROGRAM_MAP(metmqstr_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
+ m_maincpu->set_clock(32_MHz_XTAL / 2);
+ m_maincpu->set_addrmap(AS_PROGRAM, &cave_state::metmqstr_map);
- MCFG_DEVICE_ADD("audiocpu", Z80, 32_MHz_XTAL / 4)
- MCFG_DEVICE_PROGRAM_MAP(metmqstr_sound_map)
- MCFG_DEVICE_IO_MAP(metmqstr_sound_portmap)
+ Z80(config, m_audiocpu, 32_MHz_XTAL / 4);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &cave_state::metmqstr_sound_map);
+ m_audiocpu->set_addrmap(AS_IO, &cave_state::metmqstr_sound_portmap);
WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_seconds(3)); /* a guess, and certainly wrong */
EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
-
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(15625/271.5)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(0x200, 240)
- MCFG_SCREEN_VISIBLE_AREA(0x7d, 0x7d + 0x180-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
+ m_screen->set_size(0x200, 240);
+ m_screen->set_visarea(0x7d, 0x7d + 0x180-1, 0, 240-1);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_donpachi);
- PALETTE(config, m_palette, 0x8000); /* $8000 palette entries for consistency with the other games */
- m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_dfeveron), this));
+ /* $8000 palette entries for consistency with the other games */
+ m_palette->set_init(FUNC(cave_state::palette_init_dfeveron));
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_3_layers)
@@ -2450,69 +2365,62 @@ MACHINE_CONFIG_START(cave_state::metmqstr)
ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
ymsnd.add_route(ALL_OUTPUTS, "mono", 0.6);
- MCFG_DEVICE_ADD("oki1", OKIM6295, 32_MHz_XTAL / 16 , okim6295_device::PIN7_HIGH)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
- MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+ OKIM6295(config, m_oki[0], 32_MHz_XTAL / 16, okim6295_device::PIN7_HIGH);
+ m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.5);
+ m_oki[0]->set_addrmap(0, &cave_state::oki_map);
- MCFG_DEVICE_ADD("oki2", OKIM6295, 32_MHz_XTAL / 16 , okim6295_device::PIN7_HIGH)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.5)
- MCFG_DEVICE_ADDRESS_MAP(0, oki2_map)
-MACHINE_CONFIG_END
+ OKIM6295(config, m_oki[1], 32_MHz_XTAL / 16, okim6295_device::PIN7_HIGH);
+ m_oki[1]->add_route(ALL_OUTPUTS, "mono", 0.5);
+ m_oki[1]->set_addrmap(0, &cave_state::oki2_map);
+}
/***************************************************************************
Pac-Slot
***************************************************************************/
-MACHINE_CONFIG_START(cave_state::pacslot)
+void cave_state::pacslot(machine_config &config)
+{
+ add_base_config(config);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 28_MHz_XTAL / 2)
- MCFG_DEVICE_PROGRAM_MAP(pacslot_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
+ m_maincpu->set_clock(28_MHz_XTAL / 2);
+ m_maincpu->set_addrmap(AS_PROGRAM, &cave_state::pacslot_map);
WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_seconds(3)); /* a guess, and certainly wrong */
EEPROM_93C46_16BIT(config, m_eeprom, eeprom_serial_streaming::ENABLE);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
-
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(15625/271.5)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(0x200, 240)
- MCFG_SCREEN_VISIBLE_AREA(0x80, 0x80 + 0x140-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
+ m_screen->set_size(0x200, 240);
+ m_screen->set_visarea(0x80, 0x80 + 0x140-1, 0, 240-1);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_uopoko);
- PALETTE(config, m_palette, 0x8000);
- m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_cave), this));
-
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_1_layer)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("oki1", OKIM6295, 28_MHz_XTAL / 28, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+ OKIM6295(config, m_oki[0], 28_MHz_XTAL / 28, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
+ m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
+ m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
// oki2 chip is present but its rom socket is unpopulated
- MCFG_DEVICE_ADD("oki2", OKIM6295, 28_MHz_XTAL / 28, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
-MACHINE_CONFIG_END
+ OKIM6295(config, m_oki[1], 28_MHz_XTAL / 28, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
+ m_oki[1]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
+ m_oki[1]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
+}
-MACHINE_CONFIG_START(cave_state::paceight)
+void cave_state::paceight(machine_config &config)
+{
pacslot(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(paceight_map)
-MACHINE_CONFIG_END
+ m_maincpu->set_addrmap(AS_PROGRAM, &cave_state::paceight_map);
+}
+
/***************************************************************************
Poka Poka Satan
***************************************************************************/
@@ -2522,48 +2430,41 @@ TIMER_DEVICE_CALLBACK_MEMBER( cave_state::timer_lev2_cb )
m_maincpu->set_input_line(M68K_IRQ_2, HOLD_LINE); // ppsatan: read touch screens
}
-MACHINE_CONFIG_START(cave_state::ppsatan)
+void cave_state::ppsatan(machine_config &config)
+{
+ add_base_config(config);
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
- MCFG_DEVICE_PROGRAM_MAP(ppsatan_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt_ppsatan)
+ m_maincpu->set_addrmap(AS_PROGRAM, &cave_state::ppsatan_map);
WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_seconds(1)); /* a guess, and certainly wrong */
EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD_PERIODIC("timer_lev2", cave_state, timer_lev2_cb, attotime::from_hz(60))
+ TIMER(config, "timer_lev2").configure_periodic(FUNC(cave_state::timer_lev2_cb), attotime::from_hz(60));
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER) // Top
- MCFG_SCREEN_REFRESH_RATE(15625/271.5)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(320, 240)
- MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_ppsatan_top)
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
-
- MCFG_SCREEN_ADD("screen_left", RASTER)
- MCFG_SCREEN_REFRESH_RATE(15625/271.5)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(320, 240)
- MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_ppsatan_left)
- MCFG_TIMER_DRIVER_ADD("int_timer_left", cave_state, vblank_start_left)
-
- MCFG_SCREEN_ADD("screen_right", RASTER)
- MCFG_SCREEN_REFRESH_RATE(15625/271.5)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(320, 240)
- MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 224-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update_ppsatan_right)
- MCFG_TIMER_DRIVER_ADD("int_timer_right", cave_state, vblank_start_right)
+ m_screen->set_visarea(0, 320-1, 0, 224-1);
+
+ screen_device &screen_left(SCREEN(config, "screen_left", SCREEN_TYPE_RASTER));
+ screen_left.set_refresh_hz(15625/271.5);
+ screen_left.set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ screen_left.set_size(320, 240);
+ screen_left.set_visarea(0, 320-1, 0, 224-1);
+ screen_left.set_screen_update(FUNC(cave_state::screen_update_ppsatan_left));
+ TIMER(config, "int_timer_left").configure_generic(FUNC(cave_state::vblank_start_left));
+
+ screen_device &screen_right(SCREEN(config, "screen_right", SCREEN_TYPE_RASTER));
+ screen_right.set_refresh_hz(15625/271.5);
+ screen_right.set_vblank_time(ATTOSECONDS_IN_USEC(0));
+ screen_right.set_size(320, 240);
+ screen_right.set_visarea(0, 320-1, 0, 224-1);
+ screen_right.set_screen_update(FUNC(cave_state::screen_update_ppsatan_right));
+ TIMER(config, "int_timer_right").configure_generic(FUNC(cave_state::vblank_start_right));
GFXDECODE(config, m_gfxdecode, m_palette, gfx_ppsatan);
- PALETTE(config, m_palette, 0x8000);
- m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_ppsatan), this));
+ m_palette->set_init(FUNC(cave_state::palette_init_ppsatan));
config.set_default_layout(layout_ppsatan);
@@ -2573,10 +2474,10 @@ MACHINE_CONFIG_START(cave_state::ppsatan)
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("oki1", OKIM6295, 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 2.0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 2.0)
-MACHINE_CONFIG_END
+ OKIM6295(config, m_oki[0], 1.056_MHz_XTAL, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
+ m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 2.0);
+ m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 2.0);
+}
/***************************************************************************
@@ -2585,33 +2486,27 @@ MACHINE_CONFIG_END
/* X1 = 12 MHz, X2 = 28 MHz, X3 = 16 MHz. OKI: / 165 mode A ; / 132 mode B */
-MACHINE_CONFIG_START(cave_state::pwrinst2)
+void cave_state::pwrinst2(machine_config &config)
+{
+ add_base_config(config);
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL) /* 16 MHz */
- MCFG_DEVICE_PROGRAM_MAP(pwrinst2_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
+ m_maincpu->set_addrmap(AS_PROGRAM, &cave_state::pwrinst2_map);
- MCFG_DEVICE_ADD("audiocpu", Z80, 16_MHz_XTAL / 2) /* 8 MHz */
- MCFG_DEVICE_PROGRAM_MAP(pwrinst2_sound_map)
- MCFG_DEVICE_IO_MAP(pwrinst2_sound_portmap)
+ Z80(config, m_audiocpu, 16_MHz_XTAL / 2); /* 8 MHz */
+ m_audiocpu->set_addrmap(AS_PROGRAM, &cave_state::pwrinst2_sound_map);
+ m_audiocpu->set_addrmap(AS_IO, &cave_state::pwrinst2_sound_portmap);
EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
-
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(15625/271.5)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(0x200, 240)
- MCFG_SCREEN_VISIBLE_AREA(0x70, 0x70 + 0x140-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
+ m_screen->set_size(0x200, 240);
+ m_screen->set_visarea(0x70, 0x70 + 0x140-1, 0, 240-1);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_pwrinst2);
- PALETTE(config, m_palette, 0x8000+0x2800);
- m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_pwrinst2), this));
+ m_palette->set_entries(0x8000+0x2800);
+ m_palette->set_init(FUNC(cave_state::palette_init_pwrinst2));
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_4_layers)
@@ -2621,23 +2516,23 @@ MACHINE_CONFIG_START(cave_state::pwrinst2)
GENERIC_LATCH_16(config, m_soundlatch);
m_soundlatch->data_pending_callback().set_inputline(m_audiocpu, INPUT_LINE_NMI);
- MCFG_DEVICE_ADD("ymsnd", YM2203, 16_MHz_XTAL / 4)
- MCFG_YM2203_IRQ_HANDLER(INPUTLINE("audiocpu", 0))
- MCFG_SOUND_ROUTE(0, "mono", 0.40)
- MCFG_SOUND_ROUTE(1, "mono", 0.40)
- MCFG_SOUND_ROUTE(2, "mono", 0.40)
- MCFG_SOUND_ROUTE(3, "mono", 0.80)
+ ym2203_device &ym2203(YM2203(config, "ymsnd", 16_MHz_XTAL / 4));
+ ym2203.irq_handler().set_inputline("audiocpu", 0);
+ ym2203.add_route(0, "mono", 0.40);
+ ym2203.add_route(1, "mono", 0.40);
+ ym2203.add_route(2, "mono", 0.40);
+ ym2203.add_route(3, "mono", 0.80);
- MCFG_DEVICE_ADD("oki1", OKIM6295, 3_MHz_XTAL, okim6295_device::PIN7_LOW)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.80)
+ OKIM6295(config, m_oki[0], 3_MHz_XTAL, okim6295_device::PIN7_LOW);
+ m_oki[0]->add_route(ALL_OUTPUTS, "mono", 0.80);
- MCFG_DEVICE_ADD("oki2", OKIM6295, 3_MHz_XTAL, okim6295_device::PIN7_LOW)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
+ OKIM6295(config, m_oki[1], 3_MHz_XTAL, okim6295_device::PIN7_LOW);
+ m_oki[1]->add_route(ALL_OUTPUTS, "mono", 1.00);
nmk112_device &nmk112(NMK112(config, "nmk112", 0));
nmk112.set_rom0_tag("oki1");
nmk112.set_rom1_tag("oki2");
-MACHINE_CONFIG_END
+}
/***************************************************************************
@@ -2655,39 +2550,33 @@ MACHINE_RESET_MEMBER(cave_state,sailormn)
m_startup->adjust(attotime::from_usec(1000), 0, attotime::zero);
}
-MACHINE_CONFIG_START(cave_state::sailormn)
+void cave_state::sailormn(machine_config &config)
+{
+ add_base_config(config);
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
- MCFG_DEVICE_PROGRAM_MAP(sailormn_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
+ m_maincpu->set_addrmap(AS_PROGRAM, &cave_state::sailormn_map);
// could be a wachdog, but if it is then our watchdog address is incorrect as there are periods where the game doesn't write it.
- MCFG_TIMER_DRIVER_ADD(m_startup, cave_state, sailormn_startup)
+ TIMER(config, m_startup).configure_generic(FUNC(cave_state::sailormn_startup));
- MCFG_DEVICE_ADD("audiocpu", Z80, 8_MHz_XTAL) // Bidirectional Communication
- MCFG_DEVICE_PROGRAM_MAP(sailormn_sound_map)
- MCFG_DEVICE_IO_MAP(sailormn_sound_portmap)
+ Z80(config, m_audiocpu, 8_MHz_XTAL); // Bidirectional Communication
+ m_audiocpu->set_addrmap(AS_PROGRAM, &cave_state::sailormn_sound_map);
+ m_audiocpu->set_addrmap(AS_IO, &cave_state::sailormn_sound_portmap);
-// MCFG_QUANTUM_TIME(attotime::from_hz(600))
+// config.m_minimum_quantum = attotime::from_hz(600);
MCFG_MACHINE_RESET_OVERRIDE(cave_state,sailormn)
EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
-
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(15625/271.5)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(320+1, 240)
- MCFG_SCREEN_VISIBLE_AREA(0+1, 320+1-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
+ m_screen->set_size(320+1, 240);
+ m_screen->set_visarea(0+1, 320+1-1, 0, 240-1);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_sailormn);
- PALETTE(config, m_palette, 0x8000); /* $8000 palette entries for consistency with the other games */
- m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_sailormn), this)); // 4 bit sprites, 6 bit tiles
+ /* $8000 palette entries for consistency with the other games */
+ m_palette->set_init(FUNC(cave_state::palette_init_sailormn)); // 4 bit sprites, 6 bit tiles
MCFG_VIDEO_START_OVERRIDE(cave_state,sailormn_3_layers) /* Layer 2 has 1 banked ROM */
@@ -2701,153 +2590,121 @@ MACHINE_CONFIG_START(cave_state::sailormn)
ymsnd.irq_handler().set_inputline(m_audiocpu, 0);
ymsnd.add_route(ALL_OUTPUTS, "mono", 0.30);
- MCFG_DEVICE_ADD("oki1", OKIM6295, 2112000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- MCFG_DEVICE_ADDRESS_MAP(0, oki_map)
+ OKIM6295(config, m_oki[0], 2112000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
+ m_oki[0]->add_route(ALL_OUTPUTS, "mono", 1.0);
+ m_oki[0]->set_addrmap(0, &cave_state::oki_map);
- MCFG_DEVICE_ADD("oki2", OKIM6295, 2112000, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
- MCFG_DEVICE_ADDRESS_MAP(0, oki2_map)
+ OKIM6295(config, m_oki[1], 2112000, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
+ m_oki[1]->add_route(ALL_OUTPUTS, "mono", 1.0);
+ m_oki[1]->set_addrmap(0, &cave_state::oki2_map);
-MACHINE_CONFIG_END
+}
/***************************************************************************
Tekken Card World
***************************************************************************/
-MACHINE_CONFIG_START(cave_state::tekkencw)
+void cave_state::tekkencw(machine_config &config)
+{
+ add_base_config(config);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 28_MHz_XTAL / 2)
- MCFG_DEVICE_PROGRAM_MAP(tekkencw_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
+ m_maincpu->set_clock(28_MHz_XTAL / 2);
+ m_maincpu->set_addrmap(AS_PROGRAM, &cave_state::tekkencw_map);
WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_seconds(3)); /* a guess, and certainly wrong */
EEPROM_93C46_16BIT(config, m_eeprom, eeprom_serial_streaming::ENABLE);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
-
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(15625/271.5)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(0x200, 240)
- MCFG_SCREEN_VISIBLE_AREA(0x80, 0x80 + 0x140-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
+ m_screen->set_size(0x200, 240);
+ m_screen->set_visarea(0x80, 0x80 + 0x140-1, 0, 240-1);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_uopoko);
- PALETTE(config, m_palette, 0x8000);
- m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_cave), this));
-
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_1_layer)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("oki1", OKIM6295, 28_MHz_XTAL / 28, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+ OKIM6295(config, m_oki[0], 28_MHz_XTAL / 28, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
+ m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
+ m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
// oki2 chip spot and rom socket are both unpopulated
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(cave_state::tekkenbs)
+void cave_state::tekkenbs(machine_config &config)
+{
tekkencw(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(tekkenbs_map)
-MACHINE_CONFIG_END
+ m_maincpu->set_addrmap(AS_PROGRAM, &cave_state::tekkenbs_map);
+}
/***************************************************************************
Tobikose! Jumpman
***************************************************************************/
-MACHINE_CONFIG_START(cave_state::tjumpman)
+void cave_state::tjumpman(machine_config &config)
+{
+ add_base_config(config);
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 28_MHz_XTAL / 2)
- MCFG_DEVICE_PROGRAM_MAP(tjumpman_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
+ m_maincpu->set_clock(28_MHz_XTAL / 2);
+ m_maincpu->set_addrmap(AS_PROGRAM, &cave_state::tjumpman_map);
WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_seconds(3)); /* a guess, and certainly wrong */
EEPROM_93C46_16BIT(config, m_eeprom, eeprom_serial_streaming::ENABLE);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
-
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(15625/271.5)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(0x200, 240)
- MCFG_SCREEN_VISIBLE_AREA(0x80, 0x80 + 0x140-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
+ m_screen->set_size(0x200, 240);
+ m_screen->set_visarea(0x80, 0x80 + 0x140-1, 0, 240-1);
GFXDECODE(config, m_gfxdecode, m_palette, gfx_uopoko);
- PALETTE(config, m_palette, 0x8000);
- m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_cave), this));
-
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_1_layer)
/* sound hardware */
SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right();
- MCFG_DEVICE_ADD("oki1", OKIM6295, 28_MHz_XTAL / 28, okim6295_device::PIN7_HIGH) // clock frequency & pin 7 not verified
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0)
+ OKIM6295(config, m_oki[0], 28_MHz_XTAL / 28, okim6295_device::PIN7_HIGH); // clock frequency & pin 7 not verified
+ m_oki[0]->add_route(ALL_OUTPUTS, "lspeaker", 1.0);
+ m_oki[0]->add_route(ALL_OUTPUTS, "rspeaker", 1.0);
// oki2 chip spot and rom socket are both unpopulated
-MACHINE_CONFIG_END
+}
/***************************************************************************
Uo Poko
***************************************************************************/
-MACHINE_CONFIG_START(cave_state::uopoko)
+void cave_state::uopoko(machine_config &config)
+{
+ add_base_config(config);
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 16_MHz_XTAL)
- MCFG_DEVICE_PROGRAM_MAP(uopoko_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cave_state, interrupt)
+ m_maincpu->set_addrmap(AS_PROGRAM, &cave_state::uopoko_map);
EEPROM_93C46_16BIT(config, m_eeprom);
- MCFG_TIMER_DRIVER_ADD("int_timer", cave_state, vblank_start)
-
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_REFRESH_RATE(15625/271.5)
- MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
- MCFG_SCREEN_SIZE(320, 240)
- MCFG_SCREEN_VISIBLE_AREA(0, 320-1, 0, 240-1)
- MCFG_SCREEN_UPDATE_DRIVER(cave_state, screen_update)
-
GFXDECODE(config, m_gfxdecode, m_palette, gfx_uopoko);
- PALETTE(config, m_palette, 0x8000);
- m_palette->set_init(palette_init_delegate(FUNC(cave_state::palette_init_cave), this));
-
MCFG_VIDEO_START_OVERRIDE(cave_state,cave_1_layer)
/* sound hardware */
- SPEAKER(config, "mono").front_center();
-
- MCFG_DEVICE_ADD("ymz", YMZ280B, 16.9344_MHz_XTAL)
- MCFG_YMZ280B_IRQ_HANDLER(WRITELINE(*this, cave_state, sound_irq_gen))
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0)
-MACHINE_CONFIG_END
+ add_ymz(config);
+}
/***************************************************************************