summaryrefslogtreecommitdiffstats
path: root/docs/release/src/hbmame/drivers/fcrash.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'docs/release/src/hbmame/drivers/fcrash.cpp')
-rw-r--r--docs/release/src/hbmame/drivers/fcrash.cpp516
1 files changed, 264 insertions, 252 deletions
diff --git a/docs/release/src/hbmame/drivers/fcrash.cpp b/docs/release/src/hbmame/drivers/fcrash.cpp
index 194f4a21fd9..e2c03b05b64 100644
--- a/docs/release/src/hbmame/drivers/fcrash.cpp
+++ b/docs/release/src/hbmame/drivers/fcrash.cpp
@@ -689,6 +689,7 @@ void cps_state::dinopic_map(address_map &map) {
map(0x800030,0x800037).w(FUNC(cps_state::cps1_coinctrl_w));
map(0x800100,0x80013f).w(FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */
map(0x800140,0x80017f).rw(FUNC(cps_state::cps1_cps_b_r),FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs");
+ map(0x800180,0x800181).nopr(); //w(FUNC(cps_state::fcrash_soundlatch_w)).lr8("sc", [this] { return 0xff; }); /* Sound command */
map(0x800222,0x800223).w(FUNC(cps_state::dinopic_layer2_w));
map(0x880000,0x880001).nopw(); // always 0
map(0x900000,0x92ffff).ram().w(FUNC(cps_state::cps1_gfxram_w)).share("gfxram");
@@ -696,7 +697,7 @@ void cps_state::dinopic_map(address_map &map) {
map(0xf18000,0xf19fff).ram();
map(0xf1c000,0xf1c001).portr("IN2"); /* Player 3 controls (later games) */
map(0xf1c004,0xf1c005).w(FUNC(cps_state::cpsq_coinctrl2_w)); /* Coin control2 (later games) */
- map(0xf1c006,0xf1c007).portr("EEPROMIN");
+ map(0xf1c006,0xf1c007).portr("EEPROMIN").portw("EEPROMOUT");
map(0xff0000,0xffffff).ram();
}
@@ -727,7 +728,7 @@ void cps_state::punipic_map(address_map &map) {
map(0x990000,0x990001).nopw(); // unknown
map(0x991000,0x991017).nopw(); // unknown
map(0xf18000,0xf19fff).ram();
- map(0xf1c006,0xf1c007).portr("EEPROMIN");
+ map(0xf1c006,0xf1c007).portr("EEPROMIN").portw("EEPROMOUT");
map(0xff0000,0xffffff).ram().share("mainram");
}
@@ -790,7 +791,7 @@ void cps_state::sgyxz_map(address_map &map) {
map(0x890000,0x890001).w(FUNC(cps_state::cps1_soundlatch2_w));
map(0x900000,0x92ffff).ram().w(FUNC(cps_state::cps1_gfxram_w)).share("gfxram");
map(0xf1c004,0xf1c005).w(FUNC(cps_state::cpsq_coinctrl2_w)); /* Coin control2 (later games) */
- map(0xf1c006,0xf1c007).portr("EEPROMIN");
+ map(0xf1c006,0xf1c007).portr("EEPROMIN").portw("EEPROMOUT");
map(0xff0000,0xffffff).ram();
}
@@ -809,7 +810,7 @@ void cps_state::slampic_map(address_map &map) {
map(0xf18000,0xf19fff).ram();
map(0xf1c000,0xf1c001).portr("IN2"); /* Player 3 controls (later games) */
map(0xf1c004,0xf1c005).w(FUNC(cps_state::cpsq_coinctrl2_w)); /* Coin control2 (later games) */
- map(0xf1c006,0xf1c007).portr("EEPROMIN");
+ map(0xf1c006,0xf1c007).portr("EEPROMIN").portw("EEPROMOUT");
map(0xf1f000,0xf1ffff).noprw(); // writes 0 to range, then reads F1F6EC
map(0xff0000,0xffffff).ram();
}
@@ -1560,85 +1561,87 @@ MACHINE_RESET_MEMBER(cps_state,fcrash)
m_sample_select2 = 0;
}
-MACHINE_CONFIG_START( cps_state::fcrash )
-
+void cps_state::fcrash(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 10000000)
- MCFG_DEVICE_PROGRAM_MAP(fcrash_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
+ M68000(config, m_maincpu, 10000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::fcrash_map);
+ m_maincpu->set_vblank_int("screen", FUNC(cps_state::cps1_interrupt));
+ m_maincpu->set_irq_acknowledge_callback(FUNC(cps_state::cps1_int_ack));
- MCFG_DEVICE_ADD("audiocpu", Z80, 24000000/6) /* ? */
- MCFG_DEVICE_PROGRAM_MAP(sound_map)
+ Z80(config, m_audiocpu, 24000000/6); /* ? */
+ m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::sound_map);
MCFG_MACHINE_START_OVERRIDE(cps_state,fcrash)
MCFG_MACHINE_RESET_OVERRIDE(cps_state,fcrash)
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- 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, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1))
- MCFG_SCREEN_PALETTE("palette")
-
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
- MCFG_PALETTE_ADD("palette", 4096)
+ 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(64*8, 32*8);
+ m_screen->set_visarea(8*8, (64-8)*8-1, 2*8, 30*8-1 );
+ m_screen->set_screen_update(FUNC(cps_state::screen_update_fcrash));
+ m_screen->screen_vblank().set(FUNC(cps_state::screen_vblank_cps1));
+ m_screen->set_palette(m_palette);
- MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
+ PALETTE(config, m_palette).set_entries(4096);
+
+ MCFG_VIDEO_START_OVERRIDE(cps_state, cps1)
// sound hardware
SPEAKER(config, "mono").front_center();
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("ym1", YM2203, 24000000/6) /* ? */
- 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", 1.0)
+ ym2203_device &ym1(YM2203(config, "ym1", 24000000/6)); /* ? */
+ ym1.add_route(0, "mono", 0.10);
+ ym1.add_route(1, "mono", 0.10);
+ ym1.add_route(2, "mono", 0.10);
+ ym1.add_route(3, "mono", 1.0);
- MCFG_DEVICE_ADD("ym2", YM2203, 24000000/6) /* ? */
- 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", 1.0)
+ ym2203_device &ym2(YM2203(config, "ym2", 24000000/6)); /* ? */
+ ym2.add_route(0, "mono", 0.10);
+ ym2.add_route(1, "mono", 0.10);
+ ym2.add_route(2, "mono", 0.10);
+ ym2.add_route(3, "mono", 1.0);
- MSM5205(config, m_msm_1, 24000000/64); /* ? */
+ MSM5205(config, m_msm_1, 24000000/64); /* ? */
m_msm_1->vck_legacy_callback().set(FUNC(cps_state::m5205_int1)); /* interrupt function */
- m_msm_1->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
+ m_msm_1->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
m_msm_1->add_route(ALL_OUTPUTS, "mono", 0.25);
- MSM5205(config, m_msm_2, 24000000/64); /* ? */
+ MSM5205(config, m_msm_2, 24000000/64); /* ? */
m_msm_2->vck_legacy_callback().set(FUNC(cps_state::m5205_int2)); /* interrupt function */
- m_msm_2->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
+ m_msm_2->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
m_msm_2->add_route(ALL_OUTPUTS, "mono", 0.25);
-MACHINE_CONFIG_END
+}
// HBMAME start
-MACHINE_CONFIG_START( cps_state::cawingb )
-
+void cps_state::cawingb(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 10'000'000 ) /* verified on pcb */
- MCFG_DEVICE_PROGRAM_MAP(fcrash_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, irq6_line_hold) /* needed to write to scroll values */
+ M68000(config, m_maincpu, XTAL(10'000'000)); /* verified on pcb */
+ m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::fcrash_map);
+ m_maincpu->set_vblank_int("screen", FUNC(cps_state::cps1_interrupt));
+ m_maincpu->set_vblank_int("screen", FUNC(cps_state::irq6_line_hold));
+ m_maincpu->set_irq_acknowledge_callback(FUNC(cps_state::cps1_int_ack));
- MCFG_DEVICE_ADD("audiocpu", Z80, 3'579'545) /* verified on pcb */
- MCFG_DEVICE_PROGRAM_MAP(sub_map)
+ Z80(config, m_audiocpu, XTAL(3'579'545)); /* verified on pcb */
+ m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::sub_map);
MCFG_MACHINE_START_OVERRIDE(cps_state, cawingbl)
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_RAW_PARAMS(8'000'000, 518, 64, 448, 259, 16, 240)
- MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1))
- MCFG_SCREEN_PALETTE("palette")
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
- MCFG_PALETTE_ADD("palette", 0xc00)
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_raw(8'000'000, 518, 64, 448, 259, 16, 240);
+ m_screen->set_screen_update(FUNC(cps_state::screen_update_fcrash));
+ m_screen->screen_vblank().set(FUNC(cps_state::screen_vblank_cps1));
+ m_screen->set_palette(m_palette);
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
+ PALETTE(config, m_palette).set_entries(0xc00);
MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
@@ -1652,116 +1655,116 @@ MACHINE_CONFIG_START( cps_state::cawingb )
ym2151.add_route(0, "mono", 0.35);
ym2151.add_route(1, "mono", 0.35);
- MCFG_DEVICE_ADD("oki", OKIM6295, 1'000'000, okim6295_device::PIN7_HIGH)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
-MACHINE_CONFIG_END
+ OKIM6295(config, m_oki, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30);
+}
// HBMAME end
-MACHINE_CONFIG_START( cps_state::cawingbl )
+void cps_state::cawingbl(machine_config &config)
+{
fcrash(config);
/* basic machine hardware */
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, irq6_line_hold) /* needed to write to scroll values */
+ m_maincpu->set_vblank_int("screen", FUNC(cps_state::irq6_line_hold)); /* needed to write to scroll values */
MCFG_MACHINE_START_OVERRIDE(cps_state, cawingbl)
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START( cps_state::kodb )
+}
+void cps_state::kodb(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 10000000)
- MCFG_DEVICE_PROGRAM_MAP(fcrash_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
+ M68000(config, m_maincpu, 10000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::fcrash_map);
+ m_maincpu->set_vblank_int("screen", FUNC(cps_state::cps1_interrupt));
+ m_maincpu->set_irq_acknowledge_callback(FUNC(cps_state::cps1_int_ack));
- MCFG_DEVICE_ADD("audiocpu", Z80, 3579545)
- MCFG_DEVICE_PROGRAM_MAP(kodb_sound_map)
+ Z80(config, m_audiocpu, 3579545);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::kodb_sound_map);
MCFG_MACHINE_START_OVERRIDE(cps_state,kodb)
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- 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, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1))
- MCFG_SCREEN_PALETTE("palette")
-
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
- MCFG_PALETTE_ADD("palette", 0xc00)
+ 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(64*8, 32*8);
+ m_screen->set_visarea(8*8, (64-8)*8-1, 2*8, 30*8-1);
+ m_screen->set_screen_update(FUNC(cps_state::screen_update_fcrash));
+ m_screen->screen_vblank().set(FUNC(cps_state::screen_vblank_cps1));
+ m_screen->set_palette(m_palette);
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
+ PALETTE(config, m_palette).set_entries(0xc00);
MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
/* sound hardware */
SPEAKER(config, "mono").front_center();
+
GENERIC_LATCH_8(config, m_soundlatch);
- ym2151_device &ym2151(YM2151(config, "2151", XTAL(3'579'545)));
+ ym2151_device &ym2151(YM2151(config, "2151", XTAL(3'579'545))); /* verified on pcb */
ym2151.irq_handler().set_inputline(m_audiocpu, 0);
ym2151.add_route(0, "mono", 0.35);
ym2151.add_route(1, "mono", 0.35);
/* CPS PPU is fed by a 16mhz clock,pin 117 outputs a 4mhz clock which is divided by 4 using 2 74ls74 */
- MCFG_DEVICE_ADD("oki", OKIM6295, 1'000'000, okim6295_device::PIN7_HIGH)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START( cps_state::sf2mdt )
+ OKIM6295(config, m_oki, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH); // pin 7 can be changed by the game code, see f006 on z80
+ m_oki->add_route(ALL_OUTPUTS, "mono", 0.30);
+}
+void cps_state::sf2mdt(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
- MCFG_DEVICE_PROGRAM_MAP(sf2mdt_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, irq4_line_hold) /* triggers the sprite ram and scroll writes */
+ M68000(config, m_maincpu, 12000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::sf2mdt_map);
+ m_maincpu->set_vblank_int("screen", FUNC(cps_state::irq4_line_hold)); /* triggers the sprite ram and scroll writes */
- MCFG_DEVICE_ADD("audiocpu", Z80, 3579545)
- MCFG_DEVICE_PROGRAM_MAP(sf2mdt_z80map)
+ Z80(config, m_audiocpu, 3579545);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::sf2mdt_z80map);
MCFG_MACHINE_START_OVERRIDE(cps_state, sf2mdt)
MCFG_MACHINE_RESET_OVERRIDE(cps_state,fcrash)
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- 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, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1))
- MCFG_SCREEN_PALETTE("palette")
-
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
- MCFG_PALETTE_ADD("palette", 4096)
+ 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(64*8, 32*8);
+ m_screen->set_visarea(8*8, (64-8)*8-1, 2*8, 30*8-1);
+ m_screen->set_screen_update(FUNC(cps_state::screen_update_fcrash));
+ m_screen->screen_vblank().set(FUNC(cps_state::screen_vblank_cps1));
+ m_screen->set_palette(m_palette);
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
+ PALETTE(config, m_palette).set_entries(4096);
MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("2151", YM2151, XTAL(3'579'545))
- MCFG_SOUND_ROUTE(0, "mono", 0.35)
- MCFG_SOUND_ROUTE(1, "mono", 0.35)
+ GENERIC_LATCH_8(config, m_soundlatch);
+
+ YM2151(config, "2151", XTAL(3'579'545)).add_route(0, "mono", 0.35).add_route(1, "mono", 0.35);
/* has 2x MSM5205 instead of OKI6295 */
- MSM5205(config, m_msm_1, 24000000/64); /* ? */
- m_msm_1->vck_legacy_callback().set(FUNC(cps_state::m5205_int1)); /* interrupt function */
- m_msm_1->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
+ MSM5205(config, m_msm_1, 24000000/64); /* ? */
+ m_msm_1->vck_legacy_callback().set(FUNC(cps_state::m5205_int1)); /* interrupt function */
+ m_msm_1->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
m_msm_1->add_route(ALL_OUTPUTS, "mono", 0.25);
- MSM5205(config, m_msm_2, 24000000/64); /* ? */
- m_msm_2->vck_legacy_callback().set(FUNC(cps_state::m5205_int2)); /* interrupt function */
- m_msm_2->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
+ MSM5205(config, m_msm_2, 24000000/64); /* ? */
+ m_msm_2->vck_legacy_callback().set(FUNC(cps_state::m5205_int2)); /* interrupt function */
+ m_msm_2->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
m_msm_2->add_route(ALL_OUTPUTS, "mono", 0.25);
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START( cps_state::sf2b )
+void cps_state::sf2b(machine_config &config)
+{
sf2mdt(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(sf2b_map)
-MACHINE_CONFIG_END
-
-MACHINE_CONFIG_START( cps_state::knightsb )
+ m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::sf2b_map);
+}
+void cps_state::knightsb(machine_config &config)
+{
/* basic machine hardware */
M68000(config, m_maincpu, 24000000 / 2);
m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::knightsb_map);
@@ -1808,7 +1811,7 @@ MACHINE_CONFIG_START( cps_state::knightsb )
m_msm_2->vck_legacy_callback().set(FUNC(cps_state::m5205_int2)); /* interrupt function */
m_msm_2->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
m_msm_2->add_route(ALL_OUTPUTS, "mono", 0.25);
-MACHINE_CONFIG_END
+}
#define CODE_SIZE 0x400000
@@ -2163,42 +2166,42 @@ MACHINE_START_MEMBER(cps_state, dinopic)
m_sprite_x_offset = 0;
}
-MACHINE_CONFIG_START( cps_state::dinopic )
-
+void cps_state::dinopic(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
- MCFG_DEVICE_PROGRAM_MAP(dinopic_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
+ M68000(config, m_maincpu, 12000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::dinopic_map);
+ m_maincpu->set_vblank_int("screen", FUNC(cps_state::cps1_interrupt));
+ m_maincpu->set_irq_acknowledge_callback(FUNC(cps_state::cps1_int_ack));
- //MCFG_DEVICE_ADD("audiocpu", PIC16C57, 12000000)
- //MCFG_DEVICE_DISABLE() /* no valid dumps .. */
+ //PIC16C57(config, m_audiocpu, 12000000).set_disable(); /* no valid dumps .. */
MCFG_MACHINE_START_OVERRIDE(cps_state, dinopic)
EEPROM_93C46_8BIT(config, "eeprom");
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- 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, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1))
- MCFG_SCREEN_PALETTE("palette")
-
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
- MCFG_PALETTE_ADD("palette", 0xc00)
+ 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(64*8, 32*8);
+ m_screen->set_visarea(8*8, (64-8)*8-1, 2*8, 30*8-1 );
+ m_screen->set_screen_update(FUNC(cps_state::screen_update_fcrash));
+ m_screen->screen_vblank().set(FUNC(cps_state::screen_vblank_cps1));
+ m_screen->set_palette(m_palette);
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
+ PALETTE(config, m_palette).set_entries(0xc00);
MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("oki", OKIM6295, 1'000'000, okim6295_device::PIN7_HIGH)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
-MACHINE_CONFIG_END
+ GENERIC_LATCH_8(config, m_soundlatch);
+
+ OKIM6295(config, m_oki, 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30);
+}
/*
@@ -2314,8 +2317,7 @@ void cps_state::init_dinopic()
init_cps1();
}
-// see code around BB3A6. If protection fails then it jumps to 100000 which causes an exception.
-// After fixing that, the picture is offset to the left, no sound, no sprites. Eprom required @ F1C006.
+// The picture is offset to the left, no sound, no sprites. Most settings cannot be changed.
ROM_START( dinopic4 )
ROM_REGION( CODE_SIZE, "maincpu", 0 )
ROM_LOAD16_BYTE( "cad_28", 0x000000, 0x040000, CRC(97dc3d86) SHA1(8dbe9dab5682933b3ea2bfcd066f5f4503aad009) )
@@ -2326,6 +2328,8 @@ ROM_START( dinopic4 )
ROM_LOAD16_BYTE( "cad_35", 0x100001, 0x020000, CRC(fbcf4314) SHA1(a59a1d867abea5216367220d8c9d005f451c9d88) )
ROM_LOAD16_BYTE( "cad_30", 0x140000, 0x020000, CRC(bbcafc3b) SHA1(52ff5928b1da862813ef150ea77ac59cff82df5b) )
ROM_LOAD16_BYTE( "cad_34", 0x140001, 0x020000, CRC(481369b8) SHA1(065b5f6b3d2f337def183c3ab5f0ef8c21d0c849) )
+ ROM_FILL(0xbb3b8,1,0x4e) // kill protection
+ ROM_FILL(0xbb3b9,1,0x71)
ROM_REGION( 0x400000, "gfx", 0 )
ROMX_LOAD( "cad_24", 0x000000, 0x040000, CRC(e59e0066) SHA1(de8868ac7c9323c9ce4a22d610f25e8932e09218), ROM_SKIP(7) )
@@ -2364,44 +2368,49 @@ ROM_END
// sound cpu is (239 V 249521 VC5006 KABUKI DL-030P-110V) - recycled Kabuki Z80 from genuine Capcom HW?
// 3x8 dsws
-MACHINE_CONFIG_START( cps_state::sgyxz )
+void cps_state::sgyxz(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
- MCFG_DEVICE_PROGRAM_MAP(sgyxz_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+ M68000(config, m_maincpu, 12000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::sgyxz_map);
+ m_maincpu->set_vblank_int("screen", FUNC(cps_state::cps1_interrupt));
+ m_maincpu->set_irq_acknowledge_callback(FUNC(cps_state::cps1_int_ack));
- MCFG_DEVICE_ADD("audiocpu", Z80, 3579545)
- MCFG_DEVICE_PROGRAM_MAP(sgyxz_sound_map)
+ Z80(config, m_audiocpu, 3579545);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::sgyxz_sound_map);
MCFG_MACHINE_START_OVERRIDE(cps_state,sgyxz)
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- 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, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1))
- MCFG_SCREEN_PALETTE("palette")
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
- MCFG_PALETTE_ADD("palette", 0xc00)
- MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
+ 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(64*8, 32*8);
+ m_screen->set_visarea(8*8, (64-8)*8-1, 2*8, 30*8-1 );
+ m_screen->set_screen_update(FUNC(cps_state::screen_update_fcrash));
+ m_screen->screen_vblank().set(FUNC(cps_state::screen_vblank_cps1));
+ m_screen->set_palette(m_palette);
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
+ PALETTE(config, m_palette).set_entries(0xc00);
+
+ MCFG_VIDEO_START_OVERRIDE(cps_state, cps1)
EEPROM_93C46_8BIT(config, "eeprom");
/* sound hardware */
SPEAKER(config, "mono").front_center();
- ym2151_device &ym2151(YM2151(config, "2151", XTAL(3'579'545)));
+ GENERIC_LATCH_8(config, m_soundlatch);
+ GENERIC_LATCH_8(config, m_soundlatch2);
+
+ ym2151_device &ym2151(YM2151(config, "2151", XTAL(3'579'545))); /* verified on pcb */
ym2151.irq_handler().set_inputline(m_audiocpu, 0);
ym2151.add_route(0, "mono", 0.35);
ym2151.add_route(1, "mono", 0.35);
/* CPS PPU is fed by a 16mhz clock,pin 117 outputs a 4mhz clock which is divided by 4 using 2 74ls74 */
- MCFG_DEVICE_ADD("oki", OKIM6295, 1'000'000, okim6295_device::PIN7_HIGH)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
-MACHINE_CONFIG_END
+ OKIM6295(config, m_oki, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30); // pin 7 can be changed by the game code, see f006 on z80
+}
ROM_START( sgyxz )
ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 Code */
@@ -2454,41 +2463,42 @@ MACHINE_START_MEMBER(cps_state, punipic)
m_sprite_x_offset = 0;
}
-MACHINE_CONFIG_START( cps_state::punipic )
-
+void cps_state::punipic(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
- MCFG_DEVICE_PROGRAM_MAP(punipic_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+ M68000(config, m_maincpu, 12000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::punipic_map);
+ m_maincpu->set_vblank_int("screen", FUNC(cps_state::cps1_interrupt));
+ m_maincpu->set_irq_acknowledge_callback(FUNC(cps_state::cps1_int_ack));
- //MCFG_DEVICE_ADD("audiocpu", PIC16C57, 12000000)
- //MCFG_DEVICE_DISABLE() /* no valid dumps .. */
+ //PIC16C57(config, m_audiocpu, 12000000).set_disable(); /* no valid dumps .. */
MCFG_MACHINE_START_OVERRIDE(cps_state, punipic)
EEPROM_93C46_8BIT(config, "eeprom");
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- 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, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1))
- MCFG_SCREEN_PALETTE("palette")
-
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
- MCFG_PALETTE_ADD("palette", 0xc00)
+ 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(64*8, 32*8);
+ m_screen->set_visarea(8*8, (64-8)*8-1, 2*8, 30*8-1 );
+ m_screen->set_screen_update(FUNC(cps_state::screen_update_fcrash));
+ m_screen->screen_vblank().set(FUNC(cps_state::screen_vblank_cps1));
+ m_screen->set_palette(m_palette);
- MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
+ PALETTE(config, m_palette).set_entries(0xc00);
+
+ MCFG_VIDEO_START_OVERRIDE(cps_state, cps1)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("oki", OKIM6295, 1'000'000, okim6295_device::PIN7_HIGH)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
-MACHINE_CONFIG_END
+ GENERIC_LATCH_8(config, m_soundlatch);
+
+ OKIM6295(config, m_oki, 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30);
+}
/* bootleg with pic, like dinopic / dinopic2 */
ROM_START( punipic )
@@ -2647,38 +2657,41 @@ void cps_state::init_punipic3()
// ************************************************************************* SF2M1
-MACHINE_CONFIG_START( cps_state::sf2m1 )
-
+void cps_state::sf2m1(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 12'000'000 )
- MCFG_DEVICE_PROGRAM_MAP(sf2m1_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+ M68000(config, m_maincpu, XTAL(12'000'000));
+ m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::sf2m1_map);
+ m_maincpu->set_vblank_int("screen", FUNC(cps_state::cps1_interrupt));
+ m_maincpu->set_irq_acknowledge_callback(FUNC(cps_state::cps1_int_ack));
- MCFG_DEVICE_ADD("audiocpu", Z80, 3'579'545)
- MCFG_DEVICE_PROGRAM_MAP(sgyxz_sound_map)
+ Z80(config, m_audiocpu, XTAL(3'579'545));
+ m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::sgyxz_sound_map);
MCFG_MACHINE_START_OVERRIDE(cps_state,sf2m1)
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- MCFG_SCREEN_RAW_PARAMS(CPS_PIXEL_CLOCK, CPS_HTOTAL, CPS_HBEND, CPS_HBSTART, CPS_VTOTAL, CPS_VBEND, CPS_VBSTART)
- MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1))
- MCFG_SCREEN_PALETTE("palette")
-
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
- MCFG_PALETTE_ADD("palette", 0xc00)
- MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
+ SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
+ m_screen->set_raw(CPS_PIXEL_CLOCK, CPS_HTOTAL, CPS_HBEND, CPS_HBSTART, CPS_VTOTAL, CPS_VBEND, CPS_VBSTART);
+ m_screen->set_screen_update(FUNC(cps_state::screen_update_fcrash));
+ m_screen->screen_vblank().set(FUNC(cps_state::screen_vblank_cps1));
+ m_screen->set_palette(m_palette);
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
+ PALETTE(config, m_palette).set_entries(0xc00);
+
+ MCFG_VIDEO_START_OVERRIDE(cps_state, cps1)
/* sound hardware */
SPEAKER(config, "mono").front_center();
+ GENERIC_LATCH_8(config, m_soundlatch);
+ GENERIC_LATCH_8(config, m_soundlatch2);
ym2151_device &ym2151(YM2151(config, "2151", XTAL(3'579'545)));
ym2151.irq_handler().set_inputline(m_audiocpu, 0);
ym2151.add_route(0, "mono", 0.35);
ym2151.add_route(1, "mono", 0.35);
- MCFG_DEVICE_ADD("oki", OKIM6295, 1'000'000, okim6295_device::PIN7_HIGH)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
-MACHINE_CONFIG_END
+ OKIM6295(config, m_oki, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30);
+}
ROM_START( sf2m1 )
ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
@@ -2977,41 +2990,40 @@ MACHINE_START_MEMBER(cps_state, slampic)
m_sprite_x_offset = 0;
}
-MACHINE_CONFIG_START( cps_state::slampic )
-
+void cps_state::slampic(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 12000000)
- MCFG_DEVICE_PROGRAM_MAP(slampic_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
+ M68000(config, m_maincpu, 12000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::slampic_map);
+ m_maincpu->set_vblank_int("screen", FUNC(cps_state::cps1_interrupt));
+ m_maincpu->set_irq_acknowledge_callback(FUNC(cps_state::cps1_int_ack));
- //MCFG_DEVICE_ADD("audiocpu", PIC16C57, 12000000)
- //MCFG_DEVICE_DISABLE() /* no valid dumps .. */
+ //PIC16C57(config, m_audiocpu, 12000000).set_disable(); /* no valid dumps .. */
MCFG_MACHINE_START_OVERRIDE(cps_state, slampic)
EEPROM_93C46_8BIT(config, "eeprom");
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- 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, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_fcrash)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1))
- MCFG_SCREEN_PALETTE("palette")
-
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
- MCFG_PALETTE_ADD("palette", 0xc00)
+ 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(64*8, 32*8);
+ m_screen->set_visarea(8*8, (64-8)*8-1, 2*8, 30*8-1 );
+ m_screen->set_screen_update(FUNC(cps_state::screen_update_fcrash));
+ m_screen->screen_vblank().set(FUNC(cps_state::screen_vblank_cps1));
+ m_screen->set_palette(m_palette);
- MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
+ PALETTE(config, m_palette).set_entries(0xc00);
+
+ MCFG_VIDEO_START_OVERRIDE(cps_state, cps1)
/* sound hardware */
SPEAKER(config, "mono").front_center();
- MCFG_DEVICE_ADD("oki", OKIM6295, 1'000'000, okim6295_device::PIN7_HIGH)
- MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30)
-MACHINE_CONFIG_END
+ OKIM6295(config, m_oki, 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30);
+}
ROM_START( slampic )
ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
@@ -3120,32 +3132,32 @@ MACHINE_START_MEMBER(cps_state, captcommb2)
save_item(NAME(m_sample_select2));
}
-MACHINE_CONFIG_START( cps_state::captcommb2 )
-
+void cps_state::captcommb2(machine_config &config)
+{
/* basic machine hardware */
- MCFG_DEVICE_ADD("maincpu", M68000, 10000000)
- MCFG_DEVICE_PROGRAM_MAP(captcommb2_map)
- MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt)
- MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack)
+ M68000(config, m_maincpu, 10000000);
+ m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::captcommb2_map);
+ m_maincpu->set_vblank_int("screen", FUNC(cps_state::cps1_interrupt));
+ m_maincpu->set_irq_acknowledge_callback(FUNC(cps_state::cps1_int_ack));
- MCFG_DEVICE_ADD("audiocpu", Z80, 3579545)
- MCFG_DEVICE_PROGRAM_MAP(sf2mdt_z80map)
+ Z80(config, m_audiocpu, 3579545);
+ m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::sf2mdt_z80map);
- MCFG_MACHINE_START_OVERRIDE(cps_state,captcommb2)
- MCFG_MACHINE_RESET_OVERRIDE(cps_state,fcrash)
+ MCFG_MACHINE_START_OVERRIDE(cps_state, captcommb2)
+ MCFG_MACHINE_RESET_OVERRIDE(cps_state, fcrash)
/* video hardware */
- MCFG_SCREEN_ADD("screen", RASTER)
- 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, 2*8, 30*8-1 )
- MCFG_SCREEN_UPDATE_DRIVER(cps_state, screen_update_cps1)
- MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1))
- MCFG_SCREEN_PALETTE("palette")
-
- MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1)
- MCFG_PALETTE_ADD("palette", 4096)
+ 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(64*8, 32*8);
+ m_screen->set_visarea(8*8, (64-8)*8-1, 2*8, 30*8-1 );
+ m_screen->set_screen_update(FUNC(cps_state::screen_update_cps1));
+ m_screen->screen_vblank().set(FUNC(cps_state::screen_vblank_cps1));
+ m_screen->set_palette(m_palette);
+
+ GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
+ PALETTE(config, m_palette).set_entries(0xc00);
MCFG_VIDEO_START_OVERRIDE(cps_state,cps1)
@@ -3153,9 +3165,9 @@ MACHINE_CONFIG_START( cps_state::captcommb2 )
SPEAKER(config, "mono").front_center();
GENERIC_LATCH_8(config, m_soundlatch);
- MCFG_DEVICE_ADD("2151", YM2151, XTAL(3'579'545))
- MCFG_SOUND_ROUTE(0, "mono", 0.35)
- MCFG_SOUND_ROUTE(1, "mono", 0.35)
+ ym2151_device &ym2151(YM2151(config, "2151", XTAL(3'579'545)));
+ ym2151.add_route(0, "mono", 0.35);
+ ym2151.add_route(1, "mono", 0.35);
/* has 2x MSM5205 instead of OKI6295 */
MSM5205(config, m_msm_1, 24000000/64); /* ? */
@@ -3167,7 +3179,7 @@ MACHINE_CONFIG_START( cps_state::captcommb2 )
m_msm_2->vck_legacy_callback().set(FUNC(cps_state::m5205_int2)); /* interrupt function */
m_msm_2->set_prescaler_selector(msm5205_device::S96_4B); /* 4KHz 4-bit */
m_msm_2->add_route(ALL_OUTPUTS, "mono", 0.25);
-MACHINE_CONFIG_END
+}
ROM_START( captcommb2 )