diff options
Diffstat (limited to 'src/mame/drivers/fcrash.cpp')
-rw-r--r-- | src/mame/drivers/fcrash.cpp | 643 |
1 files changed, 305 insertions, 338 deletions
diff --git a/src/mame/drivers/fcrash.cpp b/src/mame/drivers/fcrash.cpp index 0bc74f47002..ea196c71bf7 100644 --- a/src/mame/drivers/fcrash.cpp +++ b/src/mame/drivers/fcrash.cpp @@ -68,6 +68,8 @@ dinopic2: no sound, one bad graphics ROM. Copying 8.bin from dinopic fixes it. fcrash, kodb: old sprites show on next screen. Patch used. +knightsb: sprites are entangled with the front layer. + punipic, punipic2: no sound. Problems in Central Park. Patches used. punipic3: same as punipic, and doors are missing. @@ -249,25 +251,13 @@ WRITE16_MEMBER(cps_state::knightsb_layer_w) case 0x0000: case 0x001f: case 0x00ff: - case 0x07ff: data = 0x12f2; break; case 0x2000: - data = 0x06c0; - break; - case 0x5800: - case 0x5f00: - data = 0x12c0; - break; - case 0x80ff: - case 0x87ff: - data = 0x1380; + data = 0x06f2; break; case 0xa000: - data = 0x24c0; - break; - case 0xd800: - data = 0x1380; + data = 0x24d0; break; default: printf ("Unknown control word = %X\n",data); @@ -320,8 +310,6 @@ WRITE16_MEMBER(cps_state::mtwinsb_layer_w) WRITE16_MEMBER(cps_state::punipic_layer_w) { - m_cps_a_regs[0x08/2] = 0; - switch (offset) { case 0x00: @@ -360,12 +348,14 @@ WRITE16_MEMBER(cps_state::punipic_layer_w) break; } + m_cps_a_regs[0x08 / 2] = m_mainram[0xdb90 / 2]; // fixes split objects break; case 0x07: // unknown break; default: logerror("%s: Unknown layer cmd %X %X\n",machine().describe_context(),offset<<1,data); + } } @@ -481,34 +471,6 @@ WRITE16_MEMBER(cps_state::sf2mdta_layer_w) m_cps_a_regs[CPS1_ROWSCROLL_OFFS] = data; /* row scroll start */ break; case 0x0a: - m_cps_a_regs[0x10 / 2] = 0xffce; /* scroll 2x */ - break; - case 0x0b: - m_cps_a_regs[0x16 / 2] = data; /* scroll 3y */ - break; - case 0x26: - m_cps_b_regs[m_layer_enable_reg / 2] = data; - } -} - -WRITE16_MEMBER(cps_state::sf2b_layer_w) -{ - switch (offset) - { - case 0x06: - m_cps_a_regs[0x0c / 2] = data + 0xffbe; /* scroll 1x */ - break; - case 0x07: - m_cps_a_regs[0x0e / 2] = data; /* scroll 1y */ - break; - case 0x08: - m_cps_a_regs[0x14 / 2] = data + 0xffce; /* scroll 3x */ - break; - case 0x09: - m_cps_a_regs[0x12 / 2] = data; /* scroll 2y */ - m_cps_a_regs[CPS1_ROWSCROLL_OFFS] = data; /* row scroll start */ - break; - case 0x0a: m_cps_a_regs[0x10 / 2] = data + 0xffce; /* scroll 2x */ break; case 0x0b: @@ -516,9 +478,6 @@ WRITE16_MEMBER(cps_state::sf2b_layer_w) break; case 0x26: m_cps_b_regs[m_layer_enable_reg / 2] = data; - break; - default: - printf("%X:%X ",offset,data); } } @@ -753,7 +712,7 @@ void cps_state::knightsb_map(address_map &map) map(0x900000, 0x93ffff).ram().w(FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); map(0x980000, 0x98002f).w(FUNC(cps_state::knightsb_layer_w)); map(0x990000, 0x990001).nopw(); // same as 880000 - map(0xff0000, 0xffffff).ram().share("mainram"); + map(0xff0000, 0xffffff).ram(); } void cps_state::dinopic_map(address_map &map) @@ -773,7 +732,7 @@ void cps_state::dinopic_map(address_map &map) 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").portw("EEPROMOUT"); - map(0xff0000, 0xffffff).ram().share("mainram"); + map(0xff0000, 0xffffff).ram(); } void cps_state::fcrash_map(address_map &map) @@ -787,7 +746,7 @@ void cps_state::fcrash_map(address_map &map) map(0x880008, 0x88000f).r(FUNC(cps_state::cps1_dsw_r)); /* System input ports / Dip Switches */ map(0x890000, 0x890001).nopw(); // palette related? map(0x900000, 0x92ffff).ram().w(FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); - map(0xff0000, 0xffffff).ram().share("mainram"); + map(0xff0000, 0xffffff).ram(); } void cps_state::mtwinsb_map(address_map &map) @@ -838,7 +797,7 @@ void cps_state::sf2m1_map(address_map &map) map(0x900000, 0x93ffff).ram().w(FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); map(0x980000, 0x9801ff).w(FUNC(cps_state::sf2m1_layer_w)); map(0x990000, 0x990001).nopw(); // same as 880000 - map(0xff0000, 0xffffff).ram().share("mainram"); + map(0xff0000, 0xffffff).ram(); } void cps_state::sf2mdt_map(address_map &map) @@ -854,13 +813,13 @@ void cps_state::sf2mdt_map(address_map &map) map(0x800100, 0x80013f).ram().share("cps_a_regs"); /* CPS-A custom */ map(0x800140, 0x80017f).ram().share("cps_b_regs"); /* CPS-B custom */ map(0x900000, 0x92ffff).ram().w(FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); - map(0xff0000, 0xffffff).ram().share("mainram"); + map(0xff0000, 0xffffff).ram(); } void cps_state::sf2b_map(address_map &map) { map(0x000000, 0x3fffff).rom(); - map(0x708100, 0x7081ff).w(FUNC(cps_state::sf2b_layer_w)); + map(0x708100, 0x7081ff).w(FUNC(cps_state::sf2mdta_layer_w)); map(0x70c000, 0x70c001).portr("IN1"); map(0x70c008, 0x70c009).portr("IN2"); map(0x70c018, 0x70c01f).r(FUNC(cps_state::cps1_hack_dsw_r)); @@ -870,7 +829,7 @@ void cps_state::sf2b_map(address_map &map) map(0x800100, 0x80013f).ram().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"); /* CPS-B custom */ map(0x900000, 0x92ffff).ram().w(FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); - map(0xff0000, 0xffffff).ram().share("mainram"); + map(0xff0000, 0xffffff).ram(); } void cps_state::sgyxz_map(address_map &map) @@ -887,7 +846,7 @@ void cps_state::sgyxz_map(address_map &map) 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").portw("EEPROMOUT"); - map(0xff0000, 0xffffff).ram().share("mainram"); + map(0xff0000, 0xffffff).ram(); } void cps_state::wofabl_map(address_map &map) @@ -904,7 +863,7 @@ void cps_state::wofabl_map(address_map &map) 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").portw("EEPROMOUT"); - map(0xff0000, 0xffffff).ram().share("mainram"); + map(0xff0000, 0xffffff).ram(); } void cps_state::slampic_map(address_map &map) @@ -925,7 +884,7 @@ void cps_state::slampic_map(address_map &map) map(0xf1c004, 0xf1c005).w(FUNC(cps_state::cpsq_coinctrl2_w)); /* Coin control2 (later games) */ map(0xf1c006, 0xf1c007).portr("EEPROMIN").portw("EEPROMOUT"); map(0xf1f000, 0xf1ffff).noprw(); // writes 0 to range, then reads F1F6EC - map(0xff0000, 0xffffff).ram().share("mainram"); + map(0xff0000, 0xffffff).ram(); } void cps_state::sound_map(address_map &map) @@ -1676,11 +1635,11 @@ MACHINE_START_MEMBER(cps_state, knightsb) membank("bank1")->configure_entries(0, 16, &ROM[0x10000], 0x4000); - m_layer_enable_reg = 0x28; - m_layer_mask_reg[0] = 0x26; - m_layer_mask_reg[1] = 0x24; - m_layer_mask_reg[2] = 0x22; - m_layer_mask_reg[3] = 0x20; + m_layer_enable_reg = 0x30; + m_layer_mask_reg[0] = 0x28; + m_layer_mask_reg[1] = 0x2a; + m_layer_mask_reg[2] = 0x2c; + m_layer_mask_reg[3] = 0x2e; m_layer_scroll1x_offset = 0x3e; //text m_layer_scroll2x_offset = 0x3c; //bricks around scores m_layer_scroll3x_offset = 0x40; //hill with sword going in @@ -1716,95 +1675,95 @@ MACHINE_RESET_MEMBER(cps_state,fcrash) m_sample_select2 = 0; } -void cps_state::fcrash(machine_config &config) -{ +MACHINE_CONFIG_START(cps_state::fcrash) + /* basic machine hardware */ - 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("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) - Z80(config, m_audiocpu, 24000000/6); /* ? */ - m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::sound_map); + MCFG_DEVICE_ADD("audiocpu", Z80, 24000000/6) /* ? */ + MCFG_DEVICE_PROGRAM_MAP(sound_map) MCFG_MACHINE_START_OVERRIDE(cps_state,fcrash) MCFG_MACHINE_RESET_OVERRIDE(cps_state,fcrash) /* video hardware */ - 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_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) // sound hardware SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); - 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); - - 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); /* ? */ - 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 */ - m_msm_2->add_route(ALL_OUTPUTS, "mono", 0.25); -} - -void cps_state::cawingbl(machine_config &config) -{ + 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) + + 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) + + MCFG_DEVICE_ADD("msm1", MSM5205, 24000000/64) /* ? */ + MCFG_MSM5205_VCLK_CB(WRITELINE(*this, cps_state, m5205_int1)) /* interrupt function */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */ + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) + + MCFG_DEVICE_ADD("msm2", MSM5205, 24000000/64) /* ? */ + MCFG_MSM5205_VCLK_CB(WRITELINE(*this, cps_state, m5205_int2)) /* interrupt function */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */ + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END + +MACHINE_CONFIG_START(cps_state::cawingbl) fcrash(config); /* basic machine hardware */ - m_maincpu->set_vblank_int("screen", FUNC(cps_state::irq6_line_hold)); /* needed to write to scroll values */ + MCFG_DEVICE_MODIFY("maincpu") + MCFG_DEVICE_VBLANK_INT_DRIVER("screen", 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 */ - 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("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) - Z80(config, m_audiocpu, 3579545); - m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::kodb_sound_map); + MCFG_DEVICE_ADD("audiocpu", Z80, 3579545) + MCFG_DEVICE_PROGRAM_MAP(kodb_sound_map) MCFG_MACHINE_START_OVERRIDE(cps_state,kodb) /* video hardware */ - 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_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) /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -1817,35 +1776,35 @@ void cps_state::kodb(machine_config &config) 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 */ - 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); -} + MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH) // pin 7 can be changed by the game code, see f006 on z80 + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) +MACHINE_CONFIG_END + +MACHINE_CONFIG_START(cps_state::mtwinsb) -void cps_state::mtwinsb(machine_config &config) -{ /* basic machine hardware */ - M68000(config, m_maincpu, 10000000); - m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::mtwinsb_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("maincpu", M68000, 10000000) + MCFG_DEVICE_PROGRAM_MAP(mtwinsb_map) + MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt) + MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack) - Z80(config, m_audiocpu, 3579545); - m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::sgyxz_sound_map); + MCFG_DEVICE_ADD("audiocpu", Z80, 3579545) + MCFG_DEVICE_PROGRAM_MAP(sgyxz_sound_map) MCFG_MACHINE_START_OVERRIDE(cps_state, mtwinsb) /* video hardware */ - 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_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) /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -1858,35 +1817,35 @@ void cps_state::mtwinsb(machine_config &config) ym2151.add_route(0, "mono", 0.35); ym2151.add_route(1, "mono", 0.35); - OKIM6295(config, m_oki, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH); - m_oki->add_route(ALL_OUTPUTS, "mono", 0.30); -} + MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) +MACHINE_CONFIG_END + +MACHINE_CONFIG_START(cps_state::sf2mdt) -void cps_state::sf2mdt(machine_config &config) -{ /* basic machine hardware */ - 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("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 */ - Z80(config, m_audiocpu, 3579545); - m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::sf2mdt_z80map); + MCFG_DEVICE_ADD("audiocpu", Z80, 3579545) + MCFG_DEVICE_PROGRAM_MAP(sf2mdt_z80map) MCFG_MACHINE_START_OVERRIDE(cps_state, sf2mdt) MCFG_MACHINE_RESET_OVERRIDE(cps_state,fcrash) /* video hardware */ - 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_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) /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -1896,48 +1855,48 @@ void cps_state::sf2mdt(machine_config &config) 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 */ - 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 */ - m_msm_2->add_route(ALL_OUTPUTS, "mono", 0.25); -} - -void cps_state::sf2b(machine_config &config) -{ + MCFG_DEVICE_ADD("msm1", MSM5205, 24000000/64) /* ? */ + MCFG_MSM5205_VCLK_CB(WRITELINE(*this, cps_state, m5205_int1)) /* interrupt function */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */ + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) + + MCFG_DEVICE_ADD("msm2", MSM5205, 24000000/64) /* ? */ + MCFG_MSM5205_VCLK_CB(WRITELINE(*this, cps_state, m5205_int2)) /* interrupt function */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */ + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END + +MACHINE_CONFIG_START(cps_state::sf2b) sf2mdt(config); - m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::sf2b_map); -} + MCFG_DEVICE_MODIFY("maincpu") + MCFG_DEVICE_PROGRAM_MAP(sf2b_map) +MACHINE_CONFIG_END + +MACHINE_CONFIG_START(cps_state::knightsb) -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); - 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("maincpu", M68000, 24000000 / 2) + MCFG_DEVICE_PROGRAM_MAP(knightsb_map) + MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt) + MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack) - Z80(config, m_audiocpu, 29821000 / 8); - m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::knightsb_z80map); + MCFG_DEVICE_ADD("audiocpu", Z80, 29821000 / 8) + MCFG_DEVICE_PROGRAM_MAP(knightsb_z80map) MCFG_MACHINE_START_OVERRIDE(cps_state, knightsb) /* video hardware */ - 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_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) /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -1950,16 +1909,16 @@ void cps_state::knightsb(machine_config &config) ym2151.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 */ - m_msm_1->add_route(ALL_OUTPUTS, "mono", 0.25); + MCFG_DEVICE_ADD("msm1", MSM5205, 24000000/64) /* ? */ + MCFG_MSM5205_VCLK_CB(WRITELINE(*this, cps_state, m5205_int1)) /* interrupt function */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */ + MCFG_SOUND_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 */ - m_msm_2->add_route(ALL_OUTPUTS, "mono", 0.25); -} + MCFG_DEVICE_ADD("msm2", MSM5205, 24000000/64) /* ? */ + MCFG_MSM5205_VCLK_CB(WRITELINE(*this, cps_state, m5205_int2)) /* interrupt function */ + MCFG_MSM5205_PRESCALER_SELECTOR(S96_4B) /* 4KHz 4-bit */ + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) +MACHINE_CONFIG_END #define CODE_SIZE 0x400000 @@ -2294,40 +2253,42 @@ MACHINE_START_MEMBER(cps_state, dinopic) m_sprite_x_offset = 0; } -void cps_state::dinopic(machine_config &config) -{ +MACHINE_CONFIG_START(cps_state::dinopic) + /* basic machine hardware */ - 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("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) - //PIC16C57(config, m_audiocpu, 12000000).set_disable(); /* no valid dumps .. */ + //MCFG_DEVICE_ADD("audiocpu", PIC16C57, 12000000) + //MCFG_DEVICE_DISABLE() /* no valid dumps .. */ MCFG_MACHINE_START_OVERRIDE(cps_state, dinopic) EEPROM_93C46_8BIT(config, "eeprom"); /* video hardware */ - 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_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) /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); - OKIM6295(config, m_oki, 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30); -} + MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) +MACHINE_CONFIG_END /* @@ -2483,30 +2444,29 @@ void cps_state::init_mtwinsb() // sound cpu is (239 V 249521 VC5006 KABUKI DL-030P-110V) - recycled Kabuki Z80 from genuine Capcom HW? // 3x8 dsws -void cps_state::sgyxz(machine_config &config) -{ +MACHINE_CONFIG_START(cps_state::sgyxz) /* basic machine hardware */ - 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("maincpu", M68000, 12000000) + MCFG_DEVICE_PROGRAM_MAP(sgyxz_map) + MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt) + MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack) - Z80(config, m_audiocpu, 3579545); - m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::sgyxz_sound_map); + MCFG_DEVICE_ADD("audiocpu", Z80, 3579545) + MCFG_DEVICE_PROGRAM_MAP(sgyxz_sound_map) MCFG_MACHINE_START_OVERRIDE(cps_state,sgyxz) /* video hardware */ - 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_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) EEPROM_93C46_8BIT(config, "eeprom"); @@ -2522,8 +2482,9 @@ void cps_state::sgyxz(machine_config &config) 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 */ - 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 -} + MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH) // pin 7 can be changed by the game code, see f006 on z80 + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) +MACHINE_CONFIG_END ROM_START( sgyxz ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 Code */ @@ -2558,12 +2519,12 @@ ROM_START( sgyxz ) ROM_LOAD( "sgyxz_snd1.bin", 0x00000, 0x40000, CRC(c15ac0f2) SHA1(8d9e5519d9820e4ac4f70555088c80e64d052c9d) ) ROM_END -void cps_state::wofabl(machine_config &config) -{ +MACHINE_CONFIG_START(cps_state::wofabl) sgyxz(config); - m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::wofabl_map); -} + MCFG_DEVICE_MODIFY("maincpu") + MCFG_DEVICE_PROGRAM_MAP(wofabl_map) +MACHINE_CONFIG_END ROM_START( wofabl ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 Code */ @@ -2606,40 +2567,42 @@ MACHINE_START_MEMBER(cps_state, punipic) m_sprite_x_offset = 0; } -void cps_state::punipic(machine_config &config) -{ +MACHINE_CONFIG_START(cps_state::punipic) + /* basic machine hardware */ - 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("maincpu", M68000, 12000000) + MCFG_DEVICE_PROGRAM_MAP(punipic_map) + MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt) + MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack) - //PIC16C57(config, m_audiocpu, 12000000).set_disable(); /* no valid dumps .. */ + //MCFG_DEVICE_ADD("audiocpu", PIC16C57, 12000000) + //MCFG_DEVICE_DISABLE() /* no valid dumps .. */ MCFG_MACHINE_START_OVERRIDE(cps_state, punipic) EEPROM_93C46_8BIT(config, "eeprom"); /* video hardware */ - 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_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) /* sound hardware */ SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); - OKIM6295(config, m_oki, 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30); -} + MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) +MACHINE_CONFIG_END /* bootleg with pic, like dinopic / dinopic2 */ ROM_START( punipic ) @@ -2798,28 +2761,28 @@ void cps_state::init_punipic3() // ************************************************************************* SF2M1 -void cps_state::sf2m1(machine_config &config) -{ +MACHINE_CONFIG_START(cps_state::sf2m1) + /* basic machine hardware */ - 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("maincpu", M68000, XTAL(12'000'000) ) + MCFG_DEVICE_PROGRAM_MAP(sf2m1_map) + MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt) + MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack) - Z80(config, m_audiocpu, XTAL(3'579'545)); - m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::sgyxz_sound_map); + MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(3'579'545)) + MCFG_DEVICE_PROGRAM_MAP(sgyxz_sound_map) MCFG_MACHINE_START_OVERRIDE(cps_state,sf2m1) /* video hardware */ - 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); + 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") - GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1); - PALETTE(config, m_palette).set_entries(0xc00); + MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1) + MCFG_PALETTE_ADD("palette", 0xc00) /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -2829,8 +2792,9 @@ void cps_state::sf2m1(machine_config &config) ym2151.irq_handler().set_inputline(m_audiocpu, 0); ym2151.add_route(0, "mono", 0.35); ym2151.add_route(1, "mono", 0.35); - OKIM6295(config, m_oki, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30); -} + MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) +MACHINE_CONFIG_END ROM_START( sf2m1 ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ @@ -3173,38 +3137,40 @@ MACHINE_START_MEMBER(cps_state, slampic) m_sprite_x_offset = 0; } -void cps_state::slampic(machine_config &config) -{ +MACHINE_CONFIG_START(cps_state::slampic) + /* basic machine hardware */ - 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("maincpu", M68000, 12000000) + MCFG_DEVICE_PROGRAM_MAP(slampic_map) + MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt) + MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack) - //PIC16C57(config, m_audiocpu, 12000000).set_disable(); /* no valid dumps .. */ + //MCFG_DEVICE_ADD("audiocpu", PIC16C57, 12000000) + //MCFG_DEVICE_DISABLE() /* no valid dumps .. */ MCFG_MACHINE_START_OVERRIDE(cps_state, slampic) EEPROM_93C46_8BIT(config, "eeprom"); /* video hardware */ - 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_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) /* sound hardware */ SPEAKER(config, "mono").front_center(); - OKIM6295(config, m_oki, 1000000, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30); -} + MCFG_DEVICE_ADD("oki", OKIM6295, 1000000, okim6295_device::PIN7_HIGH) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) +MACHINE_CONFIG_END ROM_START( slampic ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ @@ -3272,31 +3238,31 @@ void cps_state::varthb_map(address_map &map) map(0xff0000, 0xffffff).ram().share("mainram"); } -void cps_state::varthb(machine_config &config) -{ +MACHINE_CONFIG_START(cps_state::varthb) + /* basic machine hardware */ - M68000(config, m_maincpu, 12000000); - m_maincpu->set_addrmap(AS_PROGRAM, &cps_state::varthb_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("maincpu", M68000, 12000000) + MCFG_DEVICE_PROGRAM_MAP(varthb_map) + MCFG_DEVICE_VBLANK_INT_DRIVER("screen", cps_state, cps1_interrupt) + MCFG_DEVICE_IRQ_ACKNOWLEDGE_DRIVER(cps_state, cps1_int_ack) - Z80(config, m_audiocpu, 3579545); - m_audiocpu->set_addrmap(AS_PROGRAM, &cps_state::sgyxz_sound_map); + MCFG_DEVICE_ADD("audiocpu", Z80, 3579545) + MCFG_DEVICE_PROGRAM_MAP(sgyxz_sound_map) MCFG_MACHINE_START_OVERRIDE(cps_state,cps1) /* video hardware */ - 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_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", 0xc00) /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -3309,8 +3275,9 @@ void cps_state::varthb(machine_config &config) ym2151.add_route(0, "mono", 0.35); ym2151.add_route(1, "mono", 0.35); - OKIM6295(config, m_oki, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH).add_route(ALL_OUTPUTS, "mono", 0.30); -} + MCFG_DEVICE_ADD("oki", OKIM6295, XTAL(16'000'000)/4/4, okim6295_device::PIN7_HIGH) + MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.30) +MACHINE_CONFIG_END ROM_START( varthb ) ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */ @@ -3360,12 +3327,12 @@ GAME( 1990, ffightbla, ffight, fcrash, fcrash, cps_state, init_cps1, GAME( 1991, kodb, kod, kodb, kodb, cps_state, init_kodb, ROT0, "bootleg (Playmark)", "The King of Dragons (bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 910731 "ETC" -GAME( 1991, knightsb, knights, knightsb, knights, cps_state, init_dinopic, ROT0, "bootleg", "Knights of the Round (bootleg)", MACHINE_SUPPORTS_SAVE ) // 911127 - based on World version +GAME( 1991, knightsb, knights, knightsb, knights, cps_state, init_dinopic, ROT0, "bootleg", "Knights of the Round (bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // 911127 - based on World version GAME( 1993, mtwinsb, mtwins, mtwinsb, mtwins, cps_state, init_mtwinsb, ROT0, "David Inc. (bootleg)", "Twins (Mega Twins bootleg)", MACHINE_SUPPORTS_SAVE ) // based on World version -GAME( 1993, punipic, punisher, punipic, punisher, cps_state, init_punipic, ROT0, "bootleg", "The Punisher (bootleg with PIC16c57, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // 930422 ETC -GAME( 1993, punipic2, punisher, punipic, punisher, cps_state, init_punipic, ROT0, "bootleg", "The Punisher (bootleg with PIC16c57, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // 930422 ETC +GAME( 1993, punipic, punisher, punipic, punisher, cps_state, init_punipic, ROT0, "bootleg", "The Punisher (bootleg with PIC16c57, set 1)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // 930422 ETC +GAME( 1993, punipic2, punisher, punipic, punisher, cps_state, init_punipic, ROT0, "bootleg", "The Punisher (bootleg with PIC16c57, set 2)", MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // 930422 ETC GAME( 1993, punipic3, punisher, punipic, punisher, cps_state, init_punipic3, ROT0, "bootleg", "The Punisher (bootleg with PIC16c57, set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // 930422 ETC GAME( 1992, sf2m1, sf2ce, sf2m1, sf2, cps_state, init_sf2m1, ROT0, "bootleg", "Street Fighter II': Champion Edition (M1, bootleg)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 ETC |