summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/cps1bl_5205.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/cps1bl_5205.cpp')
-rw-r--r--src/mame/drivers/cps1bl_5205.cpp1384
1 files changed, 0 insertions, 1384 deletions
diff --git a/src/mame/drivers/cps1bl_5205.cpp b/src/mame/drivers/cps1bl_5205.cpp
deleted file mode 100644
index 2481d16c9be..00000000000
--- a/src/mame/drivers/cps1bl_5205.cpp
+++ /dev/null
@@ -1,1384 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:David Haywood
-
-/*
- CPS1 single board bootlegs (thought to be produced by "Playmark")
-
- sound hardware: Z80, YM2151, 2x oki MSM5205 (instead of oki M6295)
-
- Games known to use this h/w:
- Captain Commando 911014 ETC
- Knights of the Round 911127 ETC
- Street Fighter II: The World Warrior 910204 ETC
- Street Fighter II': Champion Edition 920313 ETC * this might be hacked WW (uses WW portraits on character select screen)
- Street Fighter II': Magic Delta Turbo 920313 ETC
- The King of Dragons ? (No dump)
-
- Generally the sound quality is quite poor compared to official Capcom hardware (consequence of M6295->2xM5205 conversion).
- Most noticeable is missing percussion backing of music tracks and no fade in/out effect.
- Often the 2x M5205 are clocked with a 400KHz xtal (should really be 384KHz) so pitch of samples is slightly out as well.
- The sf2 sets seem to have quite a few missing samples?
-
-Status of each game:
---------------------
-sf2mdt, sf2mdtb: OK.
-sf2mdta, sf2ceb: Scroll 2X has strange 0x200 writes that cause missing fighters' portraits at the vs. screen
- and glitched backgrounds during fights. Masking them out seems a hack.
-captcommb2: OK.
-knightsb3: OK.
-
-*/
-
-#include "emu.h"
-#include "includes/fcrash.h"
-
-#include "cpu/z80/z80.h"
-#include "cpu/m68000/m68000.h"
-#include "sound/msm5205.h"
-#include "sound/ym2151.h"
-#include "speaker.h"
-
-
-#define CPS1_ROWSCROLL_OFFS (0x20/2) /* base of row scroll offsets in other RAM */
-#define CODE_SIZE 0x400000
-
-
-class cps1bl_5205_state : public fcrash_state
-{
-public:
- cps1bl_5205_state(const machine_config &mconfig, device_type type, const char *tag)
- : fcrash_state(mconfig, type, tag)
- , m_msm_mux(*this, "msm_mux%u", 1)
- { }
-
- void captcommb2(machine_config &config);
- void knightsb(machine_config &config);
- void sf2b(machine_config &config);
- void sf2mdt(machine_config &config);
-
- void init_captcommb2();
- void init_knightsb();
- void init_sf2b();
- void init_sf2mdt();
- void init_sf2mdta();
- void init_sf2mdtb();
-
-private:
- DECLARE_MACHINE_START(captcommb2);
- DECLARE_MACHINE_RESET(captcommb2);
- DECLARE_MACHINE_START(sf2mdt);
-
- void captcommb2_layer_w(offs_t offset, uint16_t data);
- void captcommb2_soundlatch_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
- uint8_t captcommb2_soundlatch_r();
- void captcommb2_snd_bankswitch_w(uint8_t data);
- DECLARE_WRITE_LINE_MEMBER(captcommb2_mux_select_w);
- void knightsb_layer_w(offs_t offset, uint16_t data);
- void sf2b_layer_w(offs_t offset, uint16_t data);
- void sf2mdt_layer_w(offs_t offset, uint16_t data);
- void sf2mdt_soundlatch_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
- void sf2mdta_layer_w(offs_t offset, uint16_t data);
-
- void captcommb2_map(address_map &map);
- void sf2b_map(address_map &map);
- void sf2mdt_map(address_map &map);
- void captcommb2_z80map(address_map &map);
-
- bool m_captcommb2_mux_toggle;
-
- optional_device_array<ls157_device, 2> m_msm_mux;
-};
-
-class captcommb2_state : public cps1bl_5205_state
-{
-public:
- captcommb2_state(const machine_config &mconfig, device_type type, const char *tag)
- : cps1bl_5205_state(mconfig, type, tag)
- { }
-
-private:
- void bootleg_render_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) override;
-};
-
-
-void cps1bl_5205_state::captcommb2_layer_w(offs_t offset, uint16_t data)
-{
- switch (offset)
- {
- case 0x00:
- m_cps_a_regs[0x0e / 2] = data; // scroll1 y
- break;
- case 0x01:
- m_cps_a_regs[0x0c / 2] = data; // scroll1 x
- break;
- case 0x02:
- m_cps_a_regs[0x12 / 2] = data; // scroll2 y
- m_cps_a_regs[CPS1_ROWSCROLL_OFFS] = data; // probably don't need this
- break;
- case 0x03:
- m_cps_a_regs[0x10 / 2] = data; // scroll2 x
- break;
- case 0x04:
- m_cps_a_regs[0x16 / 2] = data; // scroll3 y
- break;
- case 0x05:
- m_cps_a_regs[0x14 / 2] = data; // scroll3 x
- break;
- case 0x06:
- m_cps_b_regs[m_layer_enable_reg / 2] = data;
- m_cps_a_regs[0x02 / 2] = 0x9000 + ((data & 0x1f) << 5); // scroll1 base
- break;
- case 0x10:
- m_cps_b_regs[m_layer_mask_reg[1] / 2] = data;
- break;
- case 0x11:
- m_cps_b_regs[m_layer_mask_reg[2] / 2] = (data & 0x8000) ? data & 0x7fff : data;
- m_cps_b_regs[m_layer_mask_reg[3] / 2] = (data & 0x8000) ? 0x7fff : 0x07ff;
- break;
- }
-}
-
-void cps1bl_5205_state::captcommb2_soundlatch_w(offs_t offset, uint16_t data, uint16_t mem_mask)
-{
- if (ACCESSING_BITS_0_7)
- {
- m_soundlatch->write(data & 0xff);
- m_audiocpu->set_input_line(0, ASSERT_LINE);
- }
-}
-
-uint8_t cps1bl_5205_state::captcommb2_soundlatch_r()
-{
- uint8_t latch = m_soundlatch->read();
- m_audiocpu->set_input_line(0, CLEAR_LINE);
- return latch;
-}
-
-void cps1bl_5205_state::captcommb2_snd_bankswitch_w(uint8_t data)
-{
- m_msm_1->reset_w(BIT(data, 5));
- m_msm_2->reset_w(BIT(data, 4));
- membank("bank1")->set_entry(data & 0x0f);
-}
-
-WRITE_LINE_MEMBER(cps1bl_5205_state::captcommb2_mux_select_w)
-{
- // toggle both mux select pins (and fire /nmi)
- // vck halved by flipflop IC186 ~2kHz
- if (!state)
- return;
-
- m_captcommb2_mux_toggle = !m_captcommb2_mux_toggle;
- m_msm_mux[0]->select_w(m_captcommb2_mux_toggle);
- m_msm_mux[1]->select_w(m_captcommb2_mux_toggle);
- m_audiocpu->set_input_line(INPUT_LINE_NMI, m_captcommb2_mux_toggle);
-}
-
-void cps1bl_5205_state::knightsb_layer_w(offs_t offset, uint16_t data)
-{
- switch (offset)
- {
- case 0x00:
- m_cps_a_regs[0x0e / 2] = data;
- break;
- case 0x01:
- m_cps_a_regs[0x0c / 2] = data;
- break;
- case 0x02:
- m_cps_a_regs[0x12 / 2] = data;
- m_cps_a_regs[CPS1_ROWSCROLL_OFFS] = data; /* row scroll start */
- break;
- case 0x03:
- m_cps_a_regs[0x10 / 2] = data;
- break;
- case 0x04:
- m_cps_a_regs[0x16 / 2] = data;
- break;
- case 0x05:
- m_cps_a_regs[0x14 / 2] = data;
- break;
- case 0x06:
- {
- switch (data)
- {
- 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;
- break;
- case 0xa000:
- data = 0x24c0;
- break;
- case 0xd800:
- data = 0x1380;
- break;
- default:
- printf ("Unknown control word = %X\n",data);
- data = 0x12c0;
- }
- m_cps_b_regs[m_layer_enable_reg / 2] = data;
- break;
- }
- case 0x10:
- m_cps_b_regs[m_layer_mask_reg[1] / 2] = data;
- break;
- case 0x11:
- m_cps_b_regs[m_layer_mask_reg[2] / 2] = data;
- break;
- case 0x12:
- m_cps_b_regs[m_layer_mask_reg[3] / 2] = data;
- }
-}
-
-void cps1bl_5205_state::sf2b_layer_w(offs_t offset, uint16_t data)
-{
- 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:
- m_cps_a_regs[0x16 / 2] = data; /* scroll 3y */
- break;
- case 0x26:
- m_cps_b_regs[m_layer_enable_reg / 2] = data;
- break;
- default:
- printf("%X:%X ",offset,data);
- }
-}
-
-void cps1bl_5205_state::sf2mdt_layer_w(offs_t offset, uint16_t data)
-{
- /* layer enable and scroll registers are written here - passing them to m_cps_b_regs and m_cps_a_regs for now for drawing routines
- the scroll layers aren't buttery smooth, due to the lack of using the row scroll address tables in the rendering code, this is also
- supported by the fact that the game doesn't write the table address anywhere */
-
- switch (offset)
- {
- case 0x06:
- m_cps_a_regs[0x14 / 2] = data + 0xffce; /* scroll 3x */
- break;
- case 0x07:
- m_cps_a_regs[0x16 / 2] = data; /* scroll 3y */
- break;
- case 0x08:
- m_cps_a_regs[0x10 / 2] = data + 0xffce; /* scroll 2x */
- break;
- case 0x09:
- m_cps_a_regs[0x0c / 2] = data + 0xffca; /* scroll 1x */
- break;
- case 0x0a:
- m_cps_a_regs[0x12 / 2] = data; /* scroll 2y */
- m_cps_a_regs[CPS1_ROWSCROLL_OFFS] = data; /* row scroll start */
- break;
- case 0x0b:
- m_cps_a_regs[0x0e / 2] = data; /* scroll 1y */
- break;
- case 0x26:
- m_cps_b_regs[m_layer_enable_reg / 2] = data;
- }
-}
-
-void cps1bl_5205_state::sf2mdt_soundlatch_w(offs_t offset, uint16_t data, uint16_t mem_mask)
-{
- if (ACCESSING_BITS_8_15)
- {
- m_soundlatch->write(data >> 8);
- m_audiocpu->set_input_line(0, ASSERT_LINE);
- }
-}
-
-void cps1bl_5205_state::sf2mdta_layer_w(offs_t offset, uint16_t data)
-{
- /* layer enable and scroll registers are written here - passing them to m_cps_b_regs and m_cps_a_regs for now for drawing routines
- the scroll layers aren't buttery smooth, due to the lack of using the row scroll address tables in the rendering code, this is also
- supported by the fact that the game doesn't write the table address anywhere */
-
- 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] = 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;
- }
-}
-
-
-void cps1bl_5205_state::captcommb2(machine_config &config)
-{
- // xtals: 30MHz, 24MHz, 400KHz
- M68000(config, m_maincpu, 24000000 / 2); // 12MHz measured on pcb
- m_maincpu->set_addrmap(AS_PROGRAM, &cps1bl_5205_state::captcommb2_map);
- m_maincpu->set_vblank_int("screen", FUNC(cps1bl_5205_state::cps1_interrupt));
- m_maincpu->set_addrmap(m68000_base_device::AS_CPU_SPACE, &cps1bl_5205_state::cpu_space_map);
-
- Z80(config, m_audiocpu, 30000000 / 8); // 3.75MHz measured on pcb
- m_audiocpu->set_addrmap(AS_PROGRAM, &cps1bl_5205_state::captcommb2_z80map);
-
- MCFG_MACHINE_START_OVERRIDE(cps1bl_5205_state, captcommb2)
- MCFG_MACHINE_RESET_OVERRIDE(cps1bl_5205_state, captcommb2)
-
- 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(cps1bl_5205_state::screen_update_fcrash));
- m_screen->screen_vblank().set(FUNC(cps1bl_5205_state::screen_vblank_cps1));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
- PALETTE(config, m_palette, palette_device::BLACK).set_entries(0xc00);
-
- SPEAKER(config, "mono").front_center();
- GENERIC_LATCH_8(config, m_soundlatch);
-
- ym2151_device &ym2151(YM2151(config, "2151", 30000000 / 8)); // 3.75MHz measured on pcb
- // IRQ pin not used
- ym2151.add_route(0, "mono", 0.35);
- ym2151.add_route(1, "mono", 0.35);
-
- LS157(config, m_msm_mux[0], 0);
- m_msm_mux[0]->out_callback().set("msm1", FUNC(msm5205_device::data_w));
-
- LS157(config, m_msm_mux[1], 0);
- m_msm_mux[1]->out_callback().set("msm2", FUNC(msm5205_device::data_w));
-
- MSM5205(config, m_msm_1, 400000); // 400kHz measured on pcb
- m_msm_1->vck_callback().set(FUNC(cps1bl_5205_state::captcommb2_mux_select_w));
- m_msm_1->vck_callback().append(m_msm_2, FUNC(msm5205_device::vclk_w));
- m_msm_1->set_prescaler_selector(msm5205_device::S96_4B);
- m_msm_1->add_route(ALL_OUTPUTS, "mono", 0.25);
-
- MSM5205(config, m_msm_2, 400000);
- m_msm_2->set_prescaler_selector(msm5205_device::SEX_4B);
- m_msm_2->add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-void cps1bl_5205_state::knightsb(machine_config &config)
-{
- captcommb2(config);
- m_msm_1->reset_routes().add_route(ALL_OUTPUTS, "mono", 0.5);
- m_msm_2->reset_routes().add_route(ALL_OUTPUTS, "mono", 0.5);
-}
-
-void cps1bl_5205_state::sf2b(machine_config &config)
-{
- sf2mdt(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &cps1bl_5205_state::sf2b_map);
-}
-
-void cps1bl_5205_state::sf2mdt(machine_config &config)
-{
- /* basic machine hardware */
- M68000(config, m_maincpu, 12000000);
- m_maincpu->set_addrmap(AS_PROGRAM, &cps1bl_5205_state::sf2mdt_map);
- m_maincpu->set_vblank_int("screen", FUNC(cps1bl_5205_state::irq4_line_hold)); /* triggers the sprite ram and scroll writes */
-
- Z80(config, m_audiocpu, 3750000);
- m_audiocpu->set_addrmap(AS_PROGRAM, &cps1bl_5205_state::captcommb2_z80map);
-
- MCFG_MACHINE_START_OVERRIDE(cps1bl_5205_state, sf2mdt)
- MCFG_MACHINE_RESET_OVERRIDE(cps1bl_5205_state, captcommb2)
-
- /* 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(cps1bl_5205_state::screen_update_fcrash));
- m_screen->screen_vblank().set(FUNC(cps1bl_5205_state::screen_vblank_cps1));
- m_screen->set_palette(m_palette);
-
- GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
- PALETTE(config, m_palette, palette_device::BLACK).set_entries(4096);
-
- /* sound hardware */
- SPEAKER(config, "mono").front_center();
-
- GENERIC_LATCH_8(config, m_soundlatch);
-
- YM2151(config, "2151", 3750000).add_route(0, "mono", 0.35).add_route(1, "mono", 0.35);
-
- LS157(config, m_msm_mux[0], 0);
- m_msm_mux[0]->out_callback().set("msm1", FUNC(msm5205_device::data_w));
-
- LS157(config, m_msm_mux[1], 0);
- m_msm_mux[1]->out_callback().set("msm2", FUNC(msm5205_device::data_w));
-
- MSM5205(config, m_msm_1, 400000); // 400kHz ?
- m_msm_1->vck_callback().set(FUNC(cps1bl_5205_state::captcommb2_mux_select_w));
- m_msm_1->vck_callback().append(m_msm_2, FUNC(msm5205_device::vclk_w));
- m_msm_1->set_prescaler_selector(msm5205_device::S96_4B);
- m_msm_1->add_route(ALL_OUTPUTS, "mono", 0.25);
-
- MSM5205(config, m_msm_2, 400000);
- m_msm_2->set_prescaler_selector(msm5205_device::SEX_4B);
- m_msm_2->add_route(ALL_OUTPUTS, "mono", 0.25);
-}
-
-
-void cps1bl_5205_state::captcommb2_map(address_map &map)
-{
- map(0x000000, 0x3fffff).rom();
- map(0x800000, 0x800001).portr("IN1");
- map(0x800002, 0x800003).portr("IN2"); // player 3 + 4 inputs
- map(0x800004, 0x800005).nopw(); // writes 00 here
- map(0x800006, 0x800007).w(FUNC(cps1bl_5205_state::captcommb2_soundlatch_w));
- map(0x800018, 0x80001f).r(FUNC(cps1bl_5205_state::cps1_dsw_r));
- map(0x800030, 0x800031).nopw(); // coinctrl
- map(0x800100, 0x80013f).ram().share("cps_a_regs");
- map(0x800140, 0x80017f).ram().share("cps_b_regs");
- map(0x800180, 0x800181).nopw(); // original sound latch, not used
- map(0x880000, 0x880001).nopw(); // ?
- map(0x900000, 0x92ffff).ram().w(FUNC(cps1bl_5205_state::cps1_gfxram_w)).share("gfxram");
- map(0x980000, 0x980023).w(FUNC(cps1bl_5205_state::captcommb2_layer_w));
- // 0x990000, 0x993fff spriteram
- // 0x990000, 0x990001 sprite buffer flip
- // 0x991000, 0x9917ff sprite buffer #1
- // 0x993000, 0x9937ff sprite buffer #2
- map(0xff0000, 0xffffff).ram().share("mainram");
-}
-
-void cps1bl_5205_state::sf2b_map(address_map &map)
-{
- map(0x000000, 0x3fffff).rom();
- map(0x708100, 0x7081ff).w(FUNC(cps1bl_5205_state::sf2b_layer_w));
- map(0x70c000, 0x70c001).portr("IN1");
- map(0x70c008, 0x70c009).portr("IN2");
- map(0x70c018, 0x70c01f).r(FUNC(cps1bl_5205_state::cps1_hack_dsw_r));
- map(0x70c106, 0x70c107).w(FUNC(cps1bl_5205_state::sf2mdt_soundlatch_w));
- map(0x70d000, 0x70d001).nopw(); // writes FFFF
- //map(0x800030, 0x800031).w(FUNC(cps1bl_5205_state::cps1_coinctrl_w));
- map(0x800100, 0x80013f).ram().share("cps_a_regs"); /* CPS-A custom */
- map(0x800140, 0x80017f).rw(FUNC(cps1bl_5205_state::cps1_cps_b_r), FUNC(cps1bl_5205_state::cps1_cps_b_w)).share("cps_b_regs"); /* CPS-B custom */
- map(0x900000, 0x92ffff).ram().w(FUNC(cps1bl_5205_state::cps1_gfxram_w)).share("gfxram");
- map(0xff0000, 0xffffff).ram().share("mainram");
-}
-
-void cps1bl_5205_state::sf2mdt_map(address_map &map)
-{
- map(0x000000, 0x3fffff).rom();
- map(0x708100, 0x7081ff).w(FUNC(cps1bl_5205_state::sf2mdta_layer_w));
- map(0x70c000, 0x70c001).portr("IN1");
- map(0x70c008, 0x70c009).portr("IN2");
- map(0x70c018, 0x70c01f).r(FUNC(cps1bl_5205_state::cps1_hack_dsw_r));
- map(0x70c106, 0x70c107).w(FUNC(cps1bl_5205_state::sf2mdt_soundlatch_w));
- map(0x70d000, 0x70d001).nopw(); // writes FFFF
- //map(0x800030, 0x800031).w(FUNC(cps1bl_5205_state::cps1_coinctrl_w));
- 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(cps1bl_5205_state::cps1_gfxram_w)).share("gfxram");
- map(0xff0000, 0xffffff).ram().share("mainram");
-}
-
-/*
- * z80 mapper IC7 GAL16V8 + IC19 74LS138
- * 138 pin 15 D000-D7FF R/W ram
- * 138 pin 14 D800-DBFF R/W ym
- * 138 pin 13 - ? pin not used
- * 138 pin 12 DC00-DFFF R/W read sound latch, clear /int
- * 138 pin 11 E800-EBFF W slave 5205
- * 138 pin 10 E000-E3FF W latch bank and 5202 reset lines
- * 138 pin 9 E400-E7FF W master 5205
- * 138 pin 7 EC00-EFFF W ? pin not used
- *
- * gal pin 15 0000-BFFF R rom
- */
-void cps1bl_5205_state::captcommb2_z80map(address_map &map)
-{
- map(0x0000, 0x7fff).rom();
- map(0x8000, 0xbfff).bankr("bank1");
- map(0xd000, 0xd7ff).ram();
- map(0xd800, 0xd801).rw("2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
- map(0xdc00, 0xdc00).r(FUNC(cps1bl_5205_state::captcommb2_soundlatch_r)); // clear /int here
- map(0xe000, 0xe000).w(FUNC(cps1bl_5205_state::captcommb2_snd_bankswitch_w));
- map(0xe400, 0xe400).w("msm_mux1", FUNC(ls157_device::ba_w)); // latch data for mux 1
- map(0xe800, 0xe800).w("msm_mux2", FUNC(ls157_device::ba_w)); // latch data for mux 2
-}
-
-
-MACHINE_START_MEMBER(cps1bl_5205_state, captcommb2)
-{
- membank("bank1")->configure_entries(0, 16, memregion("audiocpu")->base() + 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_scroll1x_offset = 0x3e;
- m_layer_scroll2x_offset = 0x3c;
- m_layer_scroll3x_offset = 0x40;
- //m_sprite_base = 0x1000;
- m_sprite_list_end_marker = 0x8000;
- m_sprite_x_offset = 0;
-
- save_item(NAME(m_captcommb2_mux_toggle));
-}
-
-MACHINE_RESET_MEMBER(cps1bl_5205_state, captcommb2)
-{
- m_captcommb2_mux_toggle = 0;
-}
-
-MACHINE_START_MEMBER(cps1bl_5205_state, sf2mdt)
-{
- membank("bank1")->configure_entries(0, 8, memregion("audiocpu")->base() + 0x10000, 0x4000);
-
- m_layer_enable_reg = 0x26;
- 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 = 0;
- m_layer_scroll2x_offset = 0;
- m_layer_scroll3x_offset = 0;
- m_sprite_base = 0x1000;
- m_sprite_list_end_marker = 0x8000;
- m_sprite_x_offset = 2;
-
- save_item(NAME(m_captcommb2_mux_toggle));
-}
-
-
-void cps1bl_5205_state::init_captcommb2()
-{
- // gfx data bits 2 and 4 swapped
- uint8_t *gfx = memregion("gfx")->base();
- for (int i = 0; i < 0x400000; i++)
- {
- uint8_t x = gfx[i];
- gfx[i] = bitswap(x, 7, 6 ,5, 2, 3, 4, 1, 0);
- }
-
- init_mtwinsb();
-
- // patch - fix invisible test screen at start
- uint8_t *rom = memregion("maincpu")->base();
- rom[0x65c] = 0x68;
- rom[0x7b0] = 0x68;
-}
-
-void cps1bl_5205_state::init_knightsb()
-{
- m_maincpu->space(AS_PROGRAM).unmap_write(0x980000, 0x980023);
- m_maincpu->space(AS_PROGRAM).install_write_handler(0x980000, 0x980025, write16sm_delegate(*this, FUNC(cps1bl_5205_state::knightsb_layer_w)));
-
- init_mtwinsb();
-}
-
-void cps1bl_5205_state::init_sf2b()
-{
- /* extra sprite ram */
- /* both of these need to be mapped - see the "Magic Delta Turbo" text on the title screen */
- m_bootleg_sprite_ram = std::make_unique<uint16_t[]>(0x2000);
- m_maincpu->space(AS_PROGRAM).install_ram(0x700000, 0x703fff, m_bootleg_sprite_ram.get());
- m_maincpu->space(AS_PROGRAM).install_ram(0x704000, 0x707fff, m_bootleg_sprite_ram.get());
-
- init_cps1();
-}
-
-void cps1bl_5205_state::init_sf2mdt()
-{
- m_maincpu->space(AS_PROGRAM).install_write_handler(0x708100, 0x7081ff, write16sm_delegate(*this, FUNC(cps1bl_5205_state::sf2mdt_layer_w)));
-
- /* extra work ram */
- m_bootleg_work_ram = std::make_unique<uint16_t[]>(0x8000);
- m_maincpu->space(AS_PROGRAM).install_ram(0xfc0000, 0xfcffff, m_bootleg_work_ram.get());
-
- init_sf2mdtb();
-}
-
-void cps1bl_5205_state::init_sf2mdta()
-{
- /* extra work ram */
- m_bootleg_work_ram = std::make_unique<uint16_t[]>(0x8000);
- m_maincpu->space(AS_PROGRAM).install_ram(0xfc0000, 0xfcffff, m_bootleg_work_ram.get());
-
- init_sf2b();
-}
-
-void cps1bl_5205_state::init_sf2mdtb()
-{
- uint32_t gfx_size = memregion( "gfx" )->bytes();
- uint8_t *rom = memregion( "gfx" )->base();
- for (int i = 0; i < gfx_size; i += 8)
- {
- uint8_t tmp = rom[i + 1];
- rom[i + 1] = rom[i + 4];
- rom[i + 4] = tmp;
- tmp = rom[i + 3];
- rom[i + 3] = rom[i + 6];
- rom[i + 6] = tmp;
- }
-
- init_sf2b();
-}
-
-
-#define CPS1_COINAGE_1 \
- PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) \
- PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \
- PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) ) \
- PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) ) \
- PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) ) \
- PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) ) \
- PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) ) \
- PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) ) \
- PORT_DIPSETTING( 0x03, DEF_STR( 1C_6C ) ) \
- PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) ) \
- PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \
- PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) ) \
- PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) \
- PORT_DIPSETTING( 0x38, DEF_STR( 1C_1C ) ) \
- PORT_DIPSETTING( 0x30, DEF_STR( 1C_2C ) ) \
- PORT_DIPSETTING( 0x28, DEF_STR( 1C_3C ) ) \
- PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) ) \
- PORT_DIPSETTING( 0x18, DEF_STR( 1C_6C ) )
-
-#define CPS1_DIFFICULTY_1(diploc) \
- PORT_DIPNAME( 0x07, 0x04, DEF_STR( Difficulty ) ) PORT_DIPLOCATION(diploc ":1,2,3") \
- PORT_DIPSETTING( 0x07, "1 (Easiest)" ) \
- PORT_DIPSETTING( 0x06, "2" ) \
- PORT_DIPSETTING( 0x05, "3" ) \
- PORT_DIPSETTING( 0x04, "4 (Normal)" ) \
- PORT_DIPSETTING( 0x03, "5" ) \
- PORT_DIPSETTING( 0x02, "6" ) \
- PORT_DIPSETTING( 0x01, "7" ) \
- PORT_DIPSETTING( 0x00, "8 (Hardest)" )
-
-static INPUT_PORTS_START( captcommb2 )
- PORT_INCLUDE(captcomm)
-
- PORT_MODIFY("IN3")
- PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_MODIFY("IN2") // Player 4
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4)
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4)
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4)
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4)
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4)
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN4 )
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START4 )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( sf2mdt )
- PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
- PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("IN1")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Jab Punch") PORT_PLAYER(1)
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Strong Punch") PORT_PLAYER(1)
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 Fierce Punch") PORT_PLAYER(1)
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Jab Punch") PORT_PLAYER(2)
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P2 Strong Punch") PORT_PLAYER(2)
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P2 Fierce Punch") PORT_PLAYER(2)
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("IN2") /* Extra buttons */
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P1 Short Kick") PORT_PLAYER(1)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P1 Forward Kick") PORT_PLAYER(1)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("P1 Roundhouse Kick") PORT_PLAYER(1)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P2 Short Kick") PORT_PLAYER(2)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P2 Forward Kick") PORT_PLAYER(2)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("P2 Roundhouse Kick") PORT_PLAYER(2)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("DSWA")
- CPS1_COINAGE_1
- PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7")
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" )
-
- PORT_START("DSWB")
- CPS1_DIFFICULTY_1( "SW(B)" )
- PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW(B):4" )
- PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW(B):5" )
- PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(B):6" )
- PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW(B):7" )
- PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(B):8" )
-
- PORT_START("DSWC")
- PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW(C):1" )
- PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW(C):2" )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
- PORT_DIPSETTING( 0x40, DEF_STR( No ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
- PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
- PORT_DIPSETTING( 0x80, "Game" )
- PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( sf2mdtb )
- PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
- PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("IN1")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Jab Punch") PORT_PLAYER(1)
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Strong Punch") PORT_PLAYER(1)
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 Fierce Punch") PORT_PLAYER(1)
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Jab Punch") PORT_PLAYER(2)
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P2 Strong Punch") PORT_PLAYER(2)
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P2 Fierce Punch") PORT_PLAYER(2)
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("IN2") /* Extra buttons */
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P1 Short Kick") PORT_PLAYER(1)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P1 Forward Kick") PORT_PLAYER(1)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("P1 Roundhouse Kick") PORT_PLAYER(1)
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P2 Short Kick") PORT_PLAYER(2)
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P2 Forward Kick") PORT_PLAYER(2)
- PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("P2 Roundhouse Kick") PORT_PLAYER(2)
- PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
-
- PORT_START("DSWA")
- CPS1_COINAGE_1
- PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7")
- PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- // debug mode? depending on other DSW setting get different "game" mode, autoplay, bonus round, etc...
- PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" )
-
- PORT_START("DSWB")
- CPS1_DIFFICULTY_1("SW(B)")
- PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW(B):4" )
- PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW(B):5" )
- PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(B):6" )
- PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW(B):7" )
- PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(B):8" )
-
- PORT_START("DSWC")
- PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW(C):1" )
- PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW(C):2" )
- PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
- PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
- PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
- PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
- PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x00, DEF_STR( On ) )
- PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
- PORT_DIPSETTING( 0x40, DEF_STR( No ) )
- PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
- PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
- PORT_DIPSETTING( 0x80, "Game" )
- PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
-INPUT_PORTS_END
-
-
-void captcommb2_state::bootleg_render_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
-{
- int pos;
- int last_sprite_offset = 0;
- uint16_t tileno, colour, xpos, ypos;
- bool flipx, flipy;
- uint16_t *sprite_ram = m_bootleg_sprite_ram.get();
- int base = (sprite_ram[0] ? 0x3000 : 0x1000) / 2; // writes sprite buffer flip here instead of obj_base register
-
- // end of sprite table marker is 0x8000
- // 1st sprite always 0x100e/0x300e
- // sprites are: [ypos][tile#][color][xpos]
- // no block sprites
- for (pos = base + 7; pos < base + 0x400; pos += 4)
- if (sprite_ram[pos] == m_sprite_list_end_marker)
- {
- last_sprite_offset = pos - 3;
- break;
- }
-
- for (pos = last_sprite_offset - base; pos >= 0; pos -= 4)
- {
- tileno = sprite_ram[base + pos] & 0x7fff; // see below
- xpos = sprite_ram[base + pos + 2] & 0x1ff;
- ypos = sprite_ram[base + pos - 1] & 0x1ff;
- flipx = BIT(sprite_ram[base + pos + 1], 5);
- flipy = BIT(sprite_ram[base + pos + 1], 6);
- colour = sprite_ram[base + pos + 1] & 0x1f;
- ypos = 256 - ypos - 16;
- xpos = xpos + m_sprite_x_offset + 49;
-
- if (flip_screen())
- m_gfxdecode->gfx(2)->prio_transpen(bitmap, cliprect, tileno, colour, !flipx, !flipy, 512-16-xpos, 256-16-ypos, screen.priority(), 2, 15);
- else
- m_gfxdecode->gfx(2)->prio_transpen(bitmap, cliprect, tileno, colour, flipx, flipy, xpos, ypos, screen.priority(), 2, 15);
- }
-
- /* tileno note:
- sets the unused msb for certain tiles eg. middle parts of rocket launcher weapon,
- this means the tile is out of range and therefore transparent,
- most likely just a bug and the real h/w ignores the unused bit so the effect is not seen.
- */
-}
-
-
-// ************************************************************************* CAPTCOMMB2
-
-/*
- Captain Commando:
-
- h/w issues compared to original game (captcomm)
- -----------------------------------------------
- these are present on the real board so are not emulation issues:
-
- * End sequence row scroll effect doesn't work.
- * Capcom copyright text missing on title screen, deliberately shifted down out of visible area by bootleggers.
- * Capcom logo missing from end sequence, as above.
- * Sprite flickering effects eg. when character has invincibility, look a little different to original.
- * Certain static sprites wobble vertically just a pixel or two eg. manhole covers, breakable oil drums etc.
-
- these are present on the real board but are unintentionally "fixed" in emulation:
-
- * All '0' characters are missing in test menu eg. sound test, input test etc.
- * Wrong tile displayed when character select count-down timer reaches zero (superscript '1' with white bar underneath)
-*/
-ROM_START( captcommb2 )
- ROM_REGION( CODE_SIZE, "maincpu", 0 ) // = captcommr1 + additional code mapped on top
- ROM_LOAD16_BYTE( "5.bin", 0x000000, 0x80000, CRC(c3a6ed28) SHA1(f79fed35f7b0dc383837a2ead846acc686dd3487) )
- ROM_LOAD16_BYTE( "3.bin", 0x000001, 0x80000, CRC(28729335) SHA1(6dd23c2d41e4e182434fe80c03d5c90785e6c0ce) )
- ROM_LOAD16_BYTE( "4.bin", 0x100000, 0x20000, CRC(1b526d73) SHA1(3dd8dec61db4f4f5546937602a8fb01c639d72f8) )
- ROM_CONTINUE( 0x000000, 0x04000)
- ROM_CONTINUE( 0x018000, 0x04000)
- ROM_IGNORE( 0x18000)
- ROM_LOAD16_BYTE( "2.bin", 0x100001, 0x20000, CRC(73c99709) SHA1(e122e3771b698c44fb998589af0542b1f2a3876a) )
- ROM_CONTINUE( 0x000001, 0x04000)
- ROM_CONTINUE( 0x018001, 0x04000)
- ROM_IGNORE( 0x18000)
-
- ROM_REGION( 0x400000, "gfx", 0 ) // some data bits are swapped, see init()
- ROM_LOAD64_BYTE( "bnh-01.bin", 0x000000, 0x40000, CRC(ffbc3bdd) SHA1(fcee1befd8279d41a81689394a562e2344191e2a) )
- ROM_CONTINUE( 0x000004, 0x40000)
- ROM_LOAD64_BYTE( "bnh-02.bin", 0x000001, 0x40000, CRC(40e58d52) SHA1(d980d075f4feeaf95ad599e1b95a1b550f6a85d9) )
- ROM_CONTINUE( 0x000005, 0x40000)
- ROM_LOAD64_BYTE( "bnh-03.bin", 0x000002, 0x40000, CRC(58f92cad) SHA1(041cd7d7d325147eefab245cd0610203200be1ce) )
- ROM_CONTINUE( 0x000006, 0x40000)
- ROM_LOAD64_BYTE( "bnh-04.bin", 0x000003, 0x40000, CRC(284eea8a) SHA1(b95cf797b3576d7d62f58d4a70d4b6e64ece7601) )
- ROM_CONTINUE( 0x000007, 0x40000)
- ROM_LOAD64_BYTE( "bnh-05.bin", 0x200000, 0x40000, CRC(d02719b7) SHA1(c67bc53c22030c7a75f2fdde1480f619e2be314c) )
- ROM_CONTINUE( 0x200004, 0x40000)
- ROM_LOAD64_BYTE( "bnh-06.bin", 0x200001, 0x40000, CRC(d9d43b55) SHA1(db462900958e06610cfdc47bb774f37ea1c0a1b7) )
- ROM_CONTINUE( 0x200005, 0x40000)
- ROM_LOAD64_BYTE( "bnh-07.bin", 0x200002, 0x40000, CRC(03b7900d) SHA1(ade31f4b37e8ca50214c5b32a2e5899043f49c8a) )
- ROM_CONTINUE( 0x200006, 0x40000)
- ROM_LOAD64_BYTE( "bnh-08.bin", 0x200003, 0x40000, CRC(327b8da8) SHA1(4bcc6fd637d382ce35b9387568c53d89a55e8ed2) )
- ROM_CONTINUE( 0x200007, 0x40000)
-
- ROM_REGION( 0x50000, "audiocpu", 0 )
- ROM_LOAD( "1.bin", 0x00000, 0x40000, CRC(aed2f4bd) SHA1(3bd567dc350bf6ac3a349548790ad49eb5bd8307) )
- ROM_RELOAD( 0x10000, 0x40000 )
-
- /* pld devices */
- ROM_REGION( 0xc00, "plds", 0 )
- ROM_LOAD( "1_gal20v8.ic169", 0x000, 0x157, CRC(e5cf9f53) SHA1(9c5f88d2dcfaab1c1ba80019e9ec60f0c1fb8c49) ) // all unsecured
- ROM_LOAD( "2_gal16v8.ic7", 0x200, 0x117, CRC(0ebc7cd7) SHA1(95f0cba1f588920634b5f09b85197474201d9aed) )
- ROM_LOAD( "3_gal16v8.ic72", 0x400, 0x117, CRC(ebf1f643) SHA1(d2d1d60ced5665469589122001d9b7b36b7444d2) )
- ROM_LOAD( "4_gal16v8.ic80", 0x600, 0x117, CRC(2c43c330) SHA1(7df648b63bc0c845a579a29722004f28d3e04a10) )
- ROM_LOAD( "5_gal20v8.ic121", 0x800, 0x157, CRC(76fa8969) SHA1(8fce620ece2d70511868c9cdd8c421762a467c11) )
- ROM_LOAD( "6_gal20v8.ic120", 0xa00, 0x157, CRC(6a55a974) SHA1(f4df5a45409eca84c1ac36f7f8dbb218b79b57ac) )
- // ic116 tpc1020afn-084c no dump
-ROM_END
-
-
-// ************************************************************************* KNIGHTSB, KNIGHTSB3
-
-/*
- CPU
- 1x MC68000P12 ic65 main
- 1x Z0840006PSC ic1 sound
- 1x YM2151 ic29 sound
- 1x YM3012 ic30 sound
- 2x LM324 ic15,ic31 sound
- 2x M5205 ic184,ic185 sound
- 1x TDA2003 ic14 sound
- 1x oscillator 24.000000MHz (close to main)
- 1x oscillator 29.821000MHz (close to sound)
-
- ROMs
- 5x M27C2001 1,2,3,4,5 dumped
- 4x mask ROM KA,KB,KC,KD not dumped
-
- RAMs
- 4x KM62256ALP ic112,ic113,ic168,ic170
- 1x SYC6116L ic24
- 1x MCM2018AN ic7,ic8,ic51,ic56,ic70,ic71,ic77,ic78
-
- PLDs
- 1x TPC1020AFN ic116 read protected
- 3x GAL20V8A ic120,ic121,ic169 read protected
- 3x GAL16V8A ic7,ic72,ic80 read protected
-
- Note
- 1x JAMMA edge connector
- 2x 10 legs connector
- 1x trimmer (volume)
- 3x 8x2 switches DIP
-
- FIXME - graphics ROMs are wrong, copied from the other version
- ROMs missing are KA.IC91 KB.IC92 KC.IC93 KD.IC94
-*/
-ROM_START( knightsb )
- ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
- ROM_LOAD16_BYTE( "3.ic173", 0x00001, 0x40000, CRC(c9c6e720) SHA1(e8a1cd73458b548e88fc49d8f659e0dc33a8e756) )
- ROM_LOAD16_BYTE( "5.ic172", 0x00000, 0x40000, CRC(7fd91118) SHA1(d2832b21309a467938891946d7af35d8095787a4) )
- ROM_LOAD16_BYTE( "2.ic175", 0x80001, 0x40000, CRC(1eb91343) SHA1(e02cfbbd7689346f14f2e3455ed17e7f0b51bad0) )
- ROM_LOAD16_BYTE( "4.ic176", 0x80000, 0x40000, CRC(af352703) SHA1(7855ac65752203f45af4ef41af8c291540a1c8a8) )
-
- ROM_REGION( 0x400000, "gfx", 0 ) /* bootleg had 4x 1meg mask ROMs, these need dumping so that the format is known */
- ROM_LOAD64_WORD( "kr_gfx1.rom", 0x000000, 0x80000, BAD_DUMP CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) )
- ROM_LOAD64_WORD( "kr_gfx3.rom", 0x000002, 0x80000, BAD_DUMP CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) )
- ROM_LOAD64_WORD( "kr_gfx2.rom", 0x000004, 0x80000, BAD_DUMP CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) )
- ROM_LOAD64_WORD( "kr_gfx4.rom", 0x000006, 0x80000, BAD_DUMP CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) )
- ROM_LOAD64_WORD( "kr_gfx5.rom", 0x200000, 0x80000, BAD_DUMP CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) )
- ROM_LOAD64_WORD( "kr_gfx7.rom", 0x200002, 0x80000, BAD_DUMP CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) )
- ROM_LOAD64_WORD( "kr_gfx6.rom", 0x200004, 0x80000, BAD_DUMP CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) )
- ROM_LOAD64_WORD( "kr_gfx8.rom", 0x200006, 0x80000, BAD_DUMP CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) )
-
- ROM_REGION( 0x50000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
- ROM_LOAD( "1.ic26", 0x00000, 0x40000, CRC(bd6f9cc1) SHA1(9f33cccef224d2204736a9eae761196866bd6e41) )
- ROM_RELOAD( 0x10000, 0x40000 )
-ROM_END
-
-/*
- Knights of the Round
- pcb marking: ORD 92032
- Very similar to knightsb set:
- maincpu roms are just 1 byte different, vector 1 (stack pointer init) is ff80d6 instead of ff81d6
- knightsb gfx roms are 4x 1MB (but not dumped), these are 8x 512KB (suspect data is same)
- Some sound samples are very quiet on real pcb
- Confirmed clocks (measured) are same as captcommb2:
- xtals: 30MHz, 24MHz, 400KHz
- 68k = 12MHz (P10 model, overclocked)
- z80/ym = 3.75MHz
- 5202 = 400KHz
-*/
-ROM_START( knightsb3 )
- ROM_REGION( CODE_SIZE, "maincpu", 0 )
- ROM_LOAD16_BYTE( "5.bin", 0x00000, 0x80000, CRC(b818272c) SHA1(680b1539bbeebf26706c9367decce2a8de0144e4) ) // 27c040
- ROM_LOAD16_BYTE( "3.bin", 0x00001, 0x80000, CRC(b0b9a4c2) SHA1(7d49b260224756303f9c6cdb67e8c531b0f5689f) ) // 27c040
-
- ROM_REGION( 0x400000, "gfx", 0 ) // = knights but arranged differently
- ROM_LOAD64_BYTE( "svr-01.bin", 0x000000, 0x40000, CRC(b08dc61f) SHA1(9527636ba0ccc7f02db6ba7013e932582ff85a93) )
- ROM_CONTINUE( 0x000004, 0x40000)
- ROM_LOAD64_BYTE( "svr-02.bin", 0x000001, 0x40000, CRC(cca262aa) SHA1(587b25a724a89095299bd1f655d833d26a420c30) )
- ROM_CONTINUE( 0x000005, 0x40000)
- ROM_LOAD64_BYTE( "svr-03.bin", 0x000002, 0x40000, CRC(1fe7056c) SHA1(eb9e5955c6cf2cfef565672cd0efcfd6921fefc3) )
- ROM_CONTINUE( 0x000006, 0x40000)
- ROM_LOAD64_BYTE( "svr-04.bin", 0x000003, 0x40000, CRC(b29ce7cf) SHA1(d8f99c57561c60bec260c6b5daef81ba7856b547) )
- ROM_CONTINUE( 0x000007, 0x40000)
- ROM_LOAD64_BYTE( "svr-05.bin", 0x200000, 0x40000, CRC(1c774671) SHA1(d553b87e8a0f13f404cff64089847325a18d1afb) )
- ROM_CONTINUE( 0x200004, 0x40000)
- ROM_LOAD64_BYTE( "svr-06.bin", 0x200001, 0x40000, CRC(05463aa3) SHA1(27cc2724e22bf74e972283d6c35d31cea2c1a943) )
- ROM_CONTINUE( 0x200005, 0x40000)
- ROM_LOAD64_BYTE( "svr-07.bin", 0x200002, 0x40000, CRC(87944aaa) SHA1(57d4637d5cf10b9cef95e12c64362c04a604cf64) )
- ROM_CONTINUE( 0x200006, 0x40000)
- ROM_LOAD64_BYTE( "svr-08.bin", 0x200003, 0x40000, CRC(aa9d82fb) SHA1(41ff75bc0cc3766c19d79080893b52d9c759a443) )
- ROM_CONTINUE( 0x200007, 0x40000)
-
- // TODO: dump
- ROM_REGION( 0x50000, "audiocpu", 0 )
- ROM_LOAD( "1.ic26", 0x00000, 0x40000, CRC(bd6f9cc1) SHA1(9f33cccef224d2204736a9eae761196866bd6e41) ) // knightsb
- ROM_RELOAD( 0x10000, 0x40000 )
-
- /* pld devices:
- ________________________
- | 4 | (no component reference markings on pcb)
- | |
- == 2 3 |
- == 7 |
- == |
- == |
- == |
- | 1 5 6 |
- |________________________|
-
- #1 palce20v8h secured, bruteforce ok
- #2 palce16v8h secured, bruteforce ok
- #3 palce16v8h secured, registered
- #4 palce16v8h secured, registered
- #5 palce20v8h secured, registered
- #6 palce20v8h secured, registered
- #7 a1020a pl84c unattempted
- */
- ROM_REGION( 0x400, "plds", 0 )
- ROM_LOAD( "1_palce20v8.bin", 0x000, 0x157, CRC(a5078c38) SHA1(59558a514ec60cd7148ede78a5641f5e6c0479c8) )
- ROM_LOAD( "2_palce16v8.bin", 0x200, 0x117, CRC(bad3316b) SHA1(b25141540fbaab028ba563f4fe1796b6039a4d59) )
-ROM_END
-
-
-// ************************************************************************* SF2B, SF2B2
-
-ROM_START( sf2b )
- ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
- ROM_LOAD16_WORD_SWAP( "pf1-2-sg076.bin", 0x000000, 0x100000, CRC(1d15bc7a) SHA1(834627545f191f39de6beb008c89623f2b88c13b) )
-
- ROM_REGION( 0x600000, "gfx", 0 )
- ROM_LOAD32_WORD( "pf4-sg072.bin", 0x000000, 0x100000, CRC(16289710) SHA1(4f3236712b979a1eb2fa97740e32d7913cee0d0d) )
- ROM_LOAD32_WORD( "pf7-sg103.bin", 0x000002, 0x100000, CRC(fb78022e) SHA1(b8974387056dd52db96b01cc4648edc814398c7e) )
- ROM_LOAD32_WORD( "pf5-sg095.bin", 0x200000, 0x100000, CRC(0a6be48b) SHA1(b7e72c94d4e3eb4a6bba6608d9b9a093c8901ad9) )
- ROM_LOAD32_WORD( "pf8-sg101.bin", 0x200002, 0x100000, CRC(6258c7cf) SHA1(4cd7519245c0aa816934a43e6743160f715d7dc2) )
- ROM_LOAD32_WORD( "pf6-sg068.bin", 0x400000, 0x100000, CRC(9b5b09d7) SHA1(698a6aab41e495bd0c37a19aee16a84f04d15797) )
- ROM_LOAD32_WORD( "pf9-sh001.bin", 0x400002, 0x100000, CRC(9f25090e) SHA1(12ff0431ef6550db446985c8914ac7d78eec6b6d) )
-
- ROM_REGION( 0x30000, "audiocpu", 0 ) /* Sound program + samples */
- ROM_LOAD( "3snd.ic28", 0x00000, 0x20000, CRC(d5bee9cc) SHA1(e638cb5ce7a22c18b60296a7defe8b03418da56c) )
- ROM_RELOAD( 0x10000, 0x20000 )
-ROM_END
-
-// this PCB has stickers in Spanish. It's extremely similar to sf2b, but audiocpu ROM is identical to sf2mdt and 11.bin is slightly different.
-ROM_START( sf2b2 )
- ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
- ROM_LOAD16_BYTE( "2.bin", 0x000000, 0x80000, CRC(42809e5a) SHA1(ee91ecfce29bc50cf3f492ff646109c60bf65551) )
- ROM_LOAD16_BYTE( "1.bin", 0x000001, 0x80000, CRC(e58db26c) SHA1(da1a4e063fa770257fd3df5fdb3785c1856511a5) )
-
- ROM_REGION( 0x600000, "gfx", 0 ) /* rearranged in init */
- ROM_LOAD64_WORD( "5.bin", 0x000000, 0x80000, CRC(47fab9ed) SHA1(1709becbe189b21f2c1920acef96f9412eb954e2) )
- ROM_LOAD64_WORD( "8.bin", 0x000002, 0x80000, CRC(b8c39d56) SHA1(ee2939f42e95c926bdd88adf326eee02cba3f37a) )
- ROM_LOAD64_WORD( "11.bin", 0x000004, 0x80000, CRC(6e8c98d8) SHA1(fbd7d788349fd418c48aedd906c40960e41c20f1) )
- ROM_LOAD64_WORD( "14.bin", 0x000006, 0x80000, CRC(672d4f85) SHA1(511a8878d14d3fd39c9a22efb983550098ea8760) )
- ROM_LOAD64_WORD( "4.bin", 0x200000, 0x80000, CRC(69d7b06b) SHA1(b428a0b5dfdee20d4d198673fe3b0147cad2d5bd) )
- ROM_LOAD64_WORD( "7.bin", 0x200002, 0x80000, CRC(ded88f5f) SHA1(71c63fed5a15f6ce1df878dca7aa5d53868e68ee) )
- ROM_LOAD64_WORD( "10.bin", 0x200004, 0x80000, CRC(8c2fca3c) SHA1(a84399e91dbf5790c3fe003385f6d9f4bc9d3366) )
- ROM_LOAD64_WORD( "13.bin", 0x200006, 0x80000, CRC(26f09d38) SHA1(3babc4f502ea9e07f79306b1abc9c94f484f9cc1) )
- ROM_LOAD64_WORD( "6.bin", 0x400000, 0x80000, CRC(b6215991) SHA1(5e20632e1a2d6eebe3b5d314cf2549bb74d7118e) )
- ROM_LOAD64_WORD( "9.bin", 0x400002, 0x80000, CRC(b6a71ed7) SHA1(1850b4b4aa4b5cafc594b174322afefbdf215221) )
- ROM_LOAD64_WORD( "12.bin", 0x400004, 0x80000, CRC(971903fa) SHA1(849ee7200815ef73f75456e656f061f1e852af59) )
- ROM_LOAD64_WORD( "15.bin", 0x400006, 0x80000, CRC(00983914) SHA1(4ead6bbce6ca8c4cc884d55c1f821242d0e67fae) )
-
- ROM_REGION( 0x30000, "audiocpu", 0 ) /* Sound program + samples */
- ROM_LOAD( "3.bin", 0x00000, 0x20000, CRC(17d5ba8a) SHA1(6ff3b8860d7e1fdee3561846f645eb4d3a8965ec) )
- ROM_RELOAD( 0x10000, 0x20000 )
-ROM_END
-
-
-// ************************************************************************* SF2CEB
-
-ROM_START( sf2ceb )
- ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
- ROM_LOAD16_BYTE( "3.ic171", 0x000000, 0x80000, CRC(a2355d90) SHA1(6c9e1294c55a5a9f244f6f1ce46224c51f910bb1) )
- ROM_LOAD16_BYTE( "5.ic171", 0x000001, 0x80000, CRC(c6f86e84) SHA1(546841fe7d423fff05a7772aa57fa3274515c32b) )
- ROM_LOAD16_BYTE( "2.ic171", 0x100000, 0x20000, CRC(74844192) SHA1(99cd546c78cce7f632007af454d8a55eddb6b19b) )
- ROM_LOAD16_BYTE( "4.ic171", 0x100001, 0x20000, CRC(bd98ff15) SHA1(ed902d949b0b5c5beaaea78a4b418ffa6db9e1df) )
-
- ROM_REGION( 0x600000, "gfx", 0 )
- ROM_LOAD32_WORD( "pf4-sg072.ic90", 0x000000, 0x100000, CRC(446575c7) SHA1(2bd769674fbe280d304b389daf74202cf9e4ac22) )
- ROM_LOAD32_WORD( "pf7-sg103.ic88", 0x000002, 0x100000, CRC(fb78022e) SHA1(b8974387056dd52db96b01cc4648edc814398c7e) )
- ROM_LOAD32_WORD( "pf5-sg063.ic91", 0x200000, 0x100000, CRC(0a6be48b) SHA1(b7e72c94d4e3eb4a6bba6608d9b9a093c8901ad9) )
- ROM_LOAD32_WORD( "pf8-sg101.ic93", 0x200002, 0x100000, CRC(6258c7cf) SHA1(4cd7519245c0aa816934a43e6743160f715d7dc2) )
- ROM_LOAD32_WORD( "pf6-sg070.ic86", 0x400000, 0x100000, CRC(9b5b09d7) SHA1(698a6aab41e495bd0c37a19aee16a84f04d15797) )
- ROM_LOAD32_WORD( "pf9-sh001.ic84", 0x400002, 0x100000, CRC(9f25090e) SHA1(12ff0431ef6550db446985c8914ac7d78eec6b6d) )
-
- ROM_REGION( 0x30000, "audiocpu", 0 ) /* Sound program + samples */
- ROM_LOAD( "3.ic28", 0x00000, 0x20000, CRC(d5bee9cc) SHA1(e638cb5ce7a22c18b60296a7defe8b03418da56c) )
- ROM_RELOAD( 0x10000, 0x20000 )
-ROM_END
-
-ROM_START( sf2ceb2 ) // sf2ceeab3 in FBNeo, all ROMs but the first two program ROMs match sf2mdt. Dump has been confirmed on 2 different PCBs
- ROM_REGION( CODE_SIZE, "maincpu", 0 )
- ROM_LOAD16_BYTE( "3.ic172", 0x000000, 0x80000, CRC(11b5fe98) SHA1(6dda11e6c443a7c0ddf17a9840c93be00a424472) )
- ROM_LOAD16_BYTE( "1.ic171", 0x000001, 0x80000, CRC(6d948623) SHA1(0bcdda9ba2ef2051ad70277fbc383035a63540f3) )
- ROM_LOAD16_BYTE( "4.ic176", 0x100000, 0x20000, CRC(1073b7b6) SHA1(81ca1eab65ceac69520584bb23a684ccb9d92f89) )
- ROM_LOAD16_BYTE( "2.ic175", 0x100001, 0x20000, CRC(924c6ce2) SHA1(676a912652bd75da5087f0c7eae047b7681a993c) )
-
- ROM_REGION( 0x600000, "gfx", 0 ) // rearranged in init
- ROM_LOAD64_WORD( "7.ic90", 0x000000, 0x80000, CRC(896eaf48) SHA1(5a13ae8b554e05eed3d5749aaf5845d499bce45b) )
- ROM_LOAD64_WORD( "10.ic88", 0x000002, 0x80000, CRC(ef3f5be8) SHA1(d4e1de7d7caf6977e48544d6701618ae70c717f9) )
- ROM_LOAD64_WORD( "13.ic89", 0x000004, 0x80000, CRC(305dd72a) SHA1(c373b517c23f3b019abb06e21f6b9ab6e1e47909) )
- ROM_LOAD64_WORD( "16.ic87", 0x000006, 0x80000, CRC(e57f6db9) SHA1(b37f95737804002ec0e237472eaacf0bc1e868e8) )
- ROM_LOAD64_WORD( "6.ic91", 0x200000, 0x80000, CRC(054cd5c4) SHA1(07f275e118c141a84ca15a2e9edc81694af37cf2) )
- ROM_LOAD64_WORD( "9.ic93", 0x200002, 0x80000, CRC(818ca33d) SHA1(dfb707e17c83216f8a62e905f8c7cd6d406b417b) )
- ROM_LOAD64_WORD( "12.ic92", 0x200004, 0x80000, CRC(87e069e8) SHA1(cddd3be84f8379134590bfbbb080518f28120e49) )
- ROM_LOAD64_WORD( "15.ic94", 0x200006, 0x80000, CRC(5dfb44d1) SHA1(08e44b8efc84f9cfc829aabf704155ddc700de76) )
- ROM_LOAD64_WORD( "8.ic86", 0x400000, 0x80000, CRC(34bbb3fa) SHA1(7794e89258f12b17d38c3d302dc15c502a8c8eb6) )
- ROM_LOAD64_WORD( "11.ic84", 0x400002, 0x80000, CRC(cea6d1d6) SHA1(9c953db42f0d877e43c0c239f69a00df39a18295) )
- ROM_LOAD64_WORD( "14.ic85", 0x400004, 0x80000, CRC(7d9f1a67) SHA1(6deb7fff867c42b13a32bb11eda798cfdb4cbaa8) )
- ROM_LOAD64_WORD( "17.ic83", 0x400006, 0x80000, CRC(91a9a05d) SHA1(5266ceddd2df925e79b4200843dec2f7aa9297b3) )
-
- ROM_REGION( 0x30000, "audiocpu", 0 ) // Sound program + samples
- ROM_LOAD( "5.ic26", 0x00000, 0x20000, CRC(17d5ba8a) SHA1(6ff3b8860d7e1fdee3561846f645eb4d3a8965ec) )
- ROM_RELOAD( 0x10000, 0x20000 )
-ROM_END
-
-ROM_START( sf2ceb3 ) // sf2ceeab4 in FBNeo, all ROMs but the first match sf2ceb2. Changes do not seem a result of bit-rot
- ROM_REGION( CODE_SIZE, "maincpu", 0 ) // main CPU has a (sic) 'Street Figter III 00325' sticker
- ROM_LOAD16_BYTE( "3.ic172", 0x000000, 0x80000, CRC(30848e16) SHA1(b48809350f033010d33666a8cd5a610f9721f994) )
- ROM_LOAD16_BYTE( "1.ic171", 0x000001, 0x80000, CRC(6d948623) SHA1(0bcdda9ba2ef2051ad70277fbc383035a63540f3) )
- ROM_LOAD16_BYTE( "4.ic176", 0x100000, 0x20000, CRC(1073b7b6) SHA1(81ca1eab65ceac69520584bb23a684ccb9d92f89) )
- ROM_LOAD16_BYTE( "2.ic175", 0x100001, 0x20000, CRC(924c6ce2) SHA1(676a912652bd75da5087f0c7eae047b7681a993c) )
-
- ROM_REGION( 0x600000, "gfx", 0 ) // rearranged in init
- ROM_LOAD64_WORD( "7.ic90", 0x000000, 0x80000, CRC(896eaf48) SHA1(5a13ae8b554e05eed3d5749aaf5845d499bce45b) )
- ROM_LOAD64_WORD( "10.ic88", 0x000002, 0x80000, CRC(ef3f5be8) SHA1(d4e1de7d7caf6977e48544d6701618ae70c717f9) )
- ROM_LOAD64_WORD( "13.ic89", 0x000004, 0x80000, CRC(305dd72a) SHA1(c373b517c23f3b019abb06e21f6b9ab6e1e47909) )
- ROM_LOAD64_WORD( "16.ic87", 0x000006, 0x80000, CRC(e57f6db9) SHA1(b37f95737804002ec0e237472eaacf0bc1e868e8) )
- ROM_LOAD64_WORD( "6.ic91", 0x200000, 0x80000, CRC(054cd5c4) SHA1(07f275e118c141a84ca15a2e9edc81694af37cf2) )
- ROM_LOAD64_WORD( "9.ic93", 0x200002, 0x80000, CRC(818ca33d) SHA1(dfb707e17c83216f8a62e905f8c7cd6d406b417b) )
- ROM_LOAD64_WORD( "12.ic92", 0x200004, 0x80000, CRC(87e069e8) SHA1(cddd3be84f8379134590bfbbb080518f28120e49) )
- ROM_LOAD64_WORD( "15.ic94", 0x200006, 0x80000, CRC(5dfb44d1) SHA1(08e44b8efc84f9cfc829aabf704155ddc700de76) )
- ROM_LOAD64_WORD( "8.ic86", 0x400000, 0x80000, CRC(34bbb3fa) SHA1(7794e89258f12b17d38c3d302dc15c502a8c8eb6) )
- ROM_LOAD64_WORD( "11.ic84", 0x400002, 0x80000, CRC(cea6d1d6) SHA1(9c953db42f0d877e43c0c239f69a00df39a18295) )
- ROM_LOAD64_WORD( "14.ic85", 0x400004, 0x80000, CRC(7d9f1a67) SHA1(6deb7fff867c42b13a32bb11eda798cfdb4cbaa8) )
- ROM_LOAD64_WORD( "17.ic83", 0x400006, 0x80000, CRC(91a9a05d) SHA1(5266ceddd2df925e79b4200843dec2f7aa9297b3) )
-
- ROM_REGION( 0x30000, "audiocpu", 0 ) // Sound program + samples
- ROM_LOAD( "5.ic26", 0x00000, 0x20000, CRC(17d5ba8a) SHA1(6ff3b8860d7e1fdee3561846f645eb4d3a8965ec) )
- ROM_RELOAD( 0x10000, 0x20000 )
-ROM_END
-
-ROM_START( sf2ceb4 ) // sf2ceeab5 in FBNeo, all ROMs but ic171 match sf2ceb2. Dump has been confirmed on 3 different PCBs
- ROM_REGION( CODE_SIZE, "maincpu", 0 )
- ROM_LOAD16_BYTE( "3.ic172", 0x000000, 0x80000, CRC(11b5fe98) SHA1(6dda11e6c443a7c0ddf17a9840c93be00a424472) )
- ROM_LOAD16_BYTE( "5.ic171", 0x000001, 0x80000, CRC(43e85f2c) SHA1(56026e5d0ba4e0fb1bc92b981f69d0fc9d7af1d2) )
- ROM_LOAD16_BYTE( "2.ic176", 0x100000, 0x20000, CRC(1073b7b6) SHA1(81ca1eab65ceac69520584bb23a684ccb9d92f89) )
- ROM_LOAD16_BYTE( "4.ic175", 0x100001, 0x20000, CRC(924c6ce2) SHA1(676a912652bd75da5087f0c7eae047b7681a993c) )
-
- ROM_REGION( 0x600000, "gfx", 0 ) // rearranged in init
- ROM_LOAD64_WORD( "10.ic90", 0x000000, 0x80000, CRC(896eaf48) SHA1(5a13ae8b554e05eed3d5749aaf5845d499bce45b) )
- ROM_LOAD64_WORD( "7.ic88", 0x000002, 0x80000, CRC(ef3f5be8) SHA1(d4e1de7d7caf6977e48544d6701618ae70c717f9) )
- ROM_LOAD64_WORD( "16.ic89", 0x000004, 0x80000, CRC(305dd72a) SHA1(c373b517c23f3b019abb06e21f6b9ab6e1e47909) )
- ROM_LOAD64_WORD( "13.ic87", 0x000006, 0x80000, CRC(e57f6db9) SHA1(b37f95737804002ec0e237472eaacf0bc1e868e8) )
- ROM_LOAD64_WORD( "11.ic91", 0x200000, 0x80000, CRC(054cd5c4) SHA1(07f275e118c141a84ca15a2e9edc81694af37cf2) )
- ROM_LOAD64_WORD( "8.ic93", 0x200002, 0x80000, CRC(818ca33d) SHA1(dfb707e17c83216f8a62e905f8c7cd6d406b417b) )
- ROM_LOAD64_WORD( "17.ic92", 0x200004, 0x80000, CRC(87e069e8) SHA1(cddd3be84f8379134590bfbbb080518f28120e49) )
- ROM_LOAD64_WORD( "14.ic94", 0x200006, 0x80000, CRC(5dfb44d1) SHA1(08e44b8efc84f9cfc829aabf704155ddc700de76) )
- ROM_LOAD64_WORD( "9.ic86", 0x400000, 0x80000, CRC(34bbb3fa) SHA1(7794e89258f12b17d38c3d302dc15c502a8c8eb6) )
- ROM_LOAD64_WORD( "6.ic84", 0x400002, 0x80000, CRC(cea6d1d6) SHA1(9c953db42f0d877e43c0c239f69a00df39a18295) )
- ROM_LOAD64_WORD( "15.ic85", 0x400004, 0x80000, CRC(7d9f1a67) SHA1(6deb7fff867c42b13a32bb11eda798cfdb4cbaa8) )
- ROM_LOAD64_WORD( "12.ic83", 0x400006, 0x80000, CRC(91a9a05d) SHA1(5266ceddd2df925e79b4200843dec2f7aa9297b3) )
-
- ROM_REGION( 0x30000, "audiocpu", 0 ) // Sound program + samples
- ROM_LOAD( "1.ic26", 0x00000, 0x20000, CRC(17d5ba8a) SHA1(6ff3b8860d7e1fdee3561846f645eb4d3a8965ec) )
- ROM_RELOAD( 0x10000, 0x20000 )
-ROM_END
-
-// main PCB is marked "110-09-91 CH35/1 COMP" on component side
-// sub PCB is marked "LS 938" on solder side
-ROM_START( sf2ceb5 ) // sf2ceba in FBNeo, it`s a mix between sf2ceb and sf2mdt
- ROM_REGION( CODE_SIZE, "maincpu", 0 ) // 68000 code
- ROM_LOAD16_BYTE( "3.ic171", 0x000000, 0x80000, CRC(a2355d90) SHA1(6c9e1294c55a5a9f244f6f1ce46224c51f910bb1) )
- ROM_LOAD16_BYTE( "5.ic171", 0x000001, 0x80000, CRC(c6f86e84) SHA1(546841fe7d423fff05a7772aa57fa3274515c32b) )
- ROM_LOAD16_BYTE( "2.ic171", 0x100000, 0x20000, CRC(74844192) SHA1(99cd546c78cce7f632007af454d8a55eddb6b19b) )
- ROM_LOAD16_BYTE( "4.ic171", 0x100001, 0x20000, CRC(bd98ff15) SHA1(ed902d949b0b5c5beaaea78a4b418ffa6db9e1df) )
-
- ROM_REGION( 0x600000, "gfx", 0 )
- ROM_LOAD32_WORD( "pf4-sh058.ic90", 0x000000, 0x100000, CRC(446575c7) SHA1(2bd769674fbe280d304b389daf74202cf9e4ac22) )
- ROM_LOAD32_WORD( "pf7-sh072.ic88", 0x000002, 0x100000, CRC(fb78022e) SHA1(b8974387056dd52db96b01cc4648edc814398c7e) )
- ROM_LOAD32_WORD( "pf5-sh036.ic91", 0x200000, 0x100000, CRC(0a6be48b) SHA1(b7e72c94d4e3eb4a6bba6608d9b9a093c8901ad9) )
- ROM_LOAD32_WORD( "pf8-sh074.ic93", 0x200002, 0x100000, CRC(6258c7cf) SHA1(4cd7519245c0aa816934a43e6743160f715d7dc2) )
- ROM_LOAD32_WORD( "pf6-sh071.ic86", 0x400000, 0x100000, CRC(9b5b09d7) SHA1(698a6aab41e495bd0c37a19aee16a84f04d15797) )
- ROM_LOAD32_WORD( "pf9-sh065.ic84", 0x400002, 0x100000, CRC(9f25090e) SHA1(12ff0431ef6550db446985c8914ac7d78eec6b6d) )
-
- ROM_REGION( 0x30000, "audiocpu", 0 ) // Sound program + samples
- ROM_LOAD( "5.ic26", 0x00000, 0x20000, CRC(17d5ba8a) SHA1(6ff3b8860d7e1fdee3561846f645eb4d3a8965ec) )
- ROM_RELOAD( 0x10000, 0x20000 )
-ROM_END
-
-// ************************************************************************* SF2MDT, SF2MDTA, SF2MDTB
-
-/*
- CPU
- 1x MC68000P12 (main)
- 1x TPC1020AFN-084C (main)
- 1x Z0840006PSC-Z80CPU (sound)
- 1x YM2151 (sound)
- 1x YM3012 (sound)
- 2x M5205 (sound)
- 2x LM324N (sound)
- 1x TDA2003 (sound)
- 1x oscillator 24.000000MHz
- 1x oscillator 30.000MHz
-
- ROMs
- 14x AM27C040 (1,3,6,7,8,9,10,11,12,13,14,15,16,17)
- 3x TMS27C010A (2,4,5)
- 3x PAL 16S20 (ic7,ic72, ic80) (read protected, not dumped)
- 3x GAL20V8A (ic120, ic121, ic169) (read protected, not dumped)
-
- Note
- 1x JAMMA edge connector
- 1x trimmer (volume)
- 3x 8x2 switches dip
-*/
-ROM_START( sf2mdt )
- ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
- ROM_LOAD16_BYTE( "3.ic172", 0x000000, 0x80000, CRC(5301b41f) SHA1(6855a57b21e8c5d74e5cb18f9ce6af650d7fb422) )
- ROM_LOAD16_BYTE( "1.ic171", 0x000001, 0x80000, CRC(c1c803f6) SHA1(9fe18ae2553a63d8e4dcc20bafd5a4634f8b93c4) )
- ROM_LOAD16_BYTE( "4.ic176", 0x100000, 0x20000, CRC(1073b7b6) SHA1(81ca1eab65ceac69520584bb23a684ccb9d92f89) )
- ROM_LOAD16_BYTE( "2.ic175", 0x100001, 0x20000, CRC(924c6ce2) SHA1(676a912652bd75da5087f0c7eae047b7681a993c) )
-
- ROM_REGION( 0x600000, "gfx", 0 ) /* rearranged in init */
- ROM_LOAD64_WORD( "7.ic90", 0x000000, 0x80000, CRC(896eaf48) SHA1(5a13ae8b554e05eed3d5749aaf5845d499bce45b) )
- ROM_LOAD64_WORD( "10.ic88", 0x000002, 0x80000, CRC(ef3f5be8) SHA1(d4e1de7d7caf6977e48544d6701618ae70c717f9) )
- ROM_LOAD64_WORD( "13.ic89", 0x000004, 0x80000, CRC(305dd72a) SHA1(c373b517c23f3b019abb06e21f6b9ab6e1e47909) )
- ROM_LOAD64_WORD( "16.ic87", 0x000006, 0x80000, CRC(e57f6db9) SHA1(b37f95737804002ec0e237472eaacf0bc1e868e8) )
- ROM_LOAD64_WORD( "6.ic91", 0x200000, 0x80000, CRC(054cd5c4) SHA1(07f275e118c141a84ca15a2e9edc81694af37cf2) )
- ROM_LOAD64_WORD( "9.ic93", 0x200002, 0x80000, CRC(818ca33d) SHA1(dfb707e17c83216f8a62e905f8c7cd6d406b417b) )
- ROM_LOAD64_WORD( "12.ic92", 0x200004, 0x80000, CRC(87e069e8) SHA1(cddd3be84f8379134590bfbbb080518f28120e49) )
- ROM_LOAD64_WORD( "15.ic94", 0x200006, 0x80000, CRC(5dfb44d1) SHA1(08e44b8efc84f9cfc829aabf704155ddc700de76) )
- ROM_LOAD64_WORD( "8.ic86", 0x400000, 0x80000, CRC(34bbb3fa) SHA1(7794e89258f12b17d38c3d302dc15c502a8c8eb6) )
- ROM_LOAD64_WORD( "11.ic84", 0x400002, 0x80000, CRC(cea6d1d6) SHA1(9c953db42f0d877e43c0c239f69a00df39a18295) )
- ROM_LOAD64_WORD( "14.ic85", 0x400004, 0x80000, CRC(7d9f1a67) SHA1(6deb7fff867c42b13a32bb11eda798cfdb4cbaa8) )
- ROM_LOAD64_WORD( "17.ic83", 0x400006, 0x80000, CRC(91a9a05d) SHA1(5266ceddd2df925e79b4200843dec2f7aa9297b3) )
-
- ROM_REGION( 0x30000, "audiocpu", 0 ) /* Sound program + samples */
- ROM_LOAD( "5.ic26", 0x00000, 0x20000, CRC(17d5ba8a) SHA1(6ff3b8860d7e1fdee3561846f645eb4d3a8965ec) )
- ROM_RELOAD( 0x10000, 0x20000 )
-ROM_END
-
-ROM_START( sf2mdta )
- /* unconfirmed if working on real hardware, pf4 is a bad dump (bad pin) */
- ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
- ROM_LOAD16_BYTE( "3.mdta", 0x000000, 0x80000, CRC(9f544ef4) SHA1(f784809e59a5fcabd6d15d3f1c36250a5528c9f8) )
- ROM_LOAD16_BYTE( "5.mdta", 0x000001, 0x80000, CRC(d76d6621) SHA1(aa9cea9ddace212a7b3c535b8f6e3fbc50da1f94) )
- ROM_LOAD16_BYTE( "2.mdta", 0x100000, 0x20000, CRC(74844192) SHA1(99cd546c78cce7f632007af454d8a55eddb6b19b) )
- ROM_LOAD16_BYTE( "4.mdta", 0x100001, 0x20000, CRC(bd98ff15) SHA1(ed902d949b0b5c5beaaea78a4b418ffa6db9e1df) )
-
- ROM_REGION( 0x600000, "gfx", 0 )
- ROM_LOAD32_WORD( "pf4 sh058.ic89", 0x000000, 0x100000, CRC(16289710) SHA1(4f3236712b979a1eb2fa97740e32d7913cee0d0d) )
- ROM_LOAD32_WORD( "pf7 sh072.ic92", 0x000002, 0x100000, CRC(fb78022e) SHA1(b8974387056dd52db96b01cc4648edc814398c7e) )
- ROM_LOAD32_WORD( "pf5 sh036.ic90", 0x200000, 0x100000, CRC(0a6be48b) SHA1(b7e72c94d4e3eb4a6bba6608d9b9a093c8901ad9) )
- ROM_LOAD32_WORD( "pf8 sh074.ic93", 0x200002, 0x100000, CRC(6258c7cf) SHA1(4cd7519245c0aa816934a43e6743160f715d7dc2) )
- ROM_LOAD32_WORD( "pf6 sh070.ic88", 0x400000, 0x100000, CRC(9b5b09d7) SHA1(698a6aab41e495bd0c37a19aee16a84f04d15797) )
- ROM_LOAD32_WORD( "pf9 sh001.ic91", 0x400002, 0x100000, CRC(9f25090e) SHA1(12ff0431ef6550db446985c8914ac7d78eec6b6d) )
-
- ROM_REGION( 0x30000, "audiocpu", 0 ) /* Sound program + samples */
- ROM_LOAD( "1.ic28", 0x00000, 0x20000, CRC(d5bee9cc) SHA1(e638cb5ce7a22c18b60296a7defe8b03418da56c) )
- ROM_RELOAD( 0x10000, 0x20000 )
-ROM_END
-
-ROM_START( sf2mdtb )
- ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
- ROM_LOAD16_BYTE( "3.ic172", 0x000000, 0x80000, CRC(0bdb9da2) SHA1(5224ee81d94be70a84ffaa3a56b8093aa36d6b4f) ) // sldh
- ROM_LOAD16_BYTE( "1.ic171", 0x000001, 0x80000, CRC(d88abbce) SHA1(57667a92710bb1d37daed09262c3064d09cbf4af) ) // sldh
- ROM_LOAD16_BYTE( "4.ic176", 0x100000, 0x20000, CRC(74844192) SHA1(99cd546c78cce7f632007af454d8a55eddb6b19b) ) // sldh
- ROM_LOAD16_BYTE( "2.ic175", 0x100001, 0x20000, CRC(bd98ff15) SHA1(ed902d949b0b5c5beaaea78a4b418ffa6db9e1df) ) // sldh
-
- ROM_REGION( 0x600000, "gfx", 0 ) /* rearranged in init */
- ROM_LOAD64_WORD( "7.ic90", 0x000000, 0x80000, CRC(896eaf48) SHA1(5a13ae8b554e05eed3d5749aaf5845d499bce45b) )
- ROM_LOAD64_WORD( "10.ic88", 0x000002, 0x80000, CRC(ef3f5be8) SHA1(d4e1de7d7caf6977e48544d6701618ae70c717f9) )
- ROM_LOAD64_WORD( "13.ic89", 0x000004, 0x80000, CRC(305dd72a) SHA1(c373b517c23f3b019abb06e21f6b9ab6e1e47909) )
- ROM_LOAD64_WORD( "16.ic87", 0x000006, 0x80000, CRC(e57f6db9) SHA1(b37f95737804002ec0e237472eaacf0bc1e868e8) )
- ROM_LOAD64_WORD( "6.ic91", 0x200000, 0x80000, CRC(054cd5c4) SHA1(07f275e118c141a84ca15a2e9edc81694af37cf2) )
- ROM_LOAD64_WORD( "9.ic93", 0x200002, 0x80000, CRC(818ca33d) SHA1(dfb707e17c83216f8a62e905f8c7cd6d406b417b) )
- ROM_LOAD64_WORD( "12.ic92", 0x200004, 0x80000, CRC(87e069e8) SHA1(cddd3be84f8379134590bfbbb080518f28120e49) )
- ROM_LOAD64_WORD( "15.ic94", 0x200006, 0x80000, CRC(5dfb44d1) SHA1(08e44b8efc84f9cfc829aabf704155ddc700de76) )
- ROM_LOAD64_WORD( "8.ic86", 0x400000, 0x80000, CRC(34bbb3fa) SHA1(7794e89258f12b17d38c3d302dc15c502a8c8eb6) )
- ROM_LOAD64_WORD( "11.ic84", 0x400002, 0x80000, CRC(cea6d1d6) SHA1(9c953db42f0d877e43c0c239f69a00df39a18295) )
- ROM_LOAD64_WORD( "14.ic85", 0x400004, 0x80000, CRC(7d9f1a67) SHA1(6deb7fff867c42b13a32bb11eda798cfdb4cbaa8) )
- ROM_LOAD64_WORD( "17.ic83", 0x400006, 0x80000, CRC(91a9a05d) SHA1(5266ceddd2df925e79b4200843dec2f7aa9297b3) )
-
- ROM_REGION( 0x30000, "audiocpu", 0 ) /* Sound program + samples */
- ROM_LOAD( "5.ic28", 0x00000, 0x20000, CRC(d5bee9cc) SHA1(e638cb5ce7a22c18b60296a7defe8b03418da56c) )
- ROM_RELOAD( 0x10000, 0x20000 )
-ROM_END
-
-// ************************************************************************* DRIVER MACROS
-
-GAME( 1991, captcommb2, captcomm, captcommb2, captcommb2, captcommb2_state, init_captcommb2, ROT0, "bootleg", "Captain Commando (bootleg with 2xMSM5205)", MACHINE_SUPPORTS_SAVE ) // 911014 ETC
-
-GAME( 1991, knightsb, knights, knightsb, knights, captcommb2_state, init_knightsb, ROT0, "bootleg", "Knights of the Round (bootleg with 2xMSM5205, set 1)", MACHINE_SUPPORTS_SAVE ) // 911127 ETC
-GAME( 1991, knightsb3, knights, knightsb, knights, captcommb2_state, init_knightsb, ROT0, "bootleg", "Knights of the Round (bootleg with 2xMSM5205, set 2)", MACHINE_SUPPORTS_SAVE ) // 911127 ETC
-
-GAME( 1992, sf2b, sf2, sf2b, sf2mdt, cps1bl_5205_state, init_sf2b, ROT0, "bootleg (Playmark)", "Street Fighter II: The World Warrior (bootleg, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 910204 ETC
-GAME( 1992, sf2b2, sf2, sf2b, sf2mdt, cps1bl_5205_state, init_sf2mdtb, ROT0, "bootleg", "Street Fighter II: The World Warrior (bootleg, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 910204 ETC
-
-GAME( 1992, sf2ceb, sf2ce, sf2mdt, sf2mdt, cps1bl_5205_state, init_sf2mdta, ROT0, "bootleg (Playmark)", "Street Fighter II': Champion Edition (Playmark bootleg, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 ETC
-GAME( 1992, sf2ceb2, sf2ce, sf2mdt, sf2mdt, cps1bl_5205_state, init_sf2mdtb, ROT0, "bootleg", "Street Fighter II': Champion Edition (bootleg, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 ETC
-GAME( 1992, sf2ceb3, sf2ce, sf2mdt, sf2mdt, cps1bl_5205_state, init_sf2mdtb, ROT0, "bootleg", "Street Fighter II': Champion Edition (bootleg, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 ETC
-GAME( 1992, sf2ceb4, sf2ce, sf2mdt, sf2mdt, cps1bl_5205_state, init_sf2mdtb, ROT0, "bootleg (Playmark)", "Street Fighter II': Champion Edition (Playmark bootleg, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 ETC
-GAME( 1992, sf2ceb5, sf2ce, sf2mdt, sf2mdt, cps1bl_5205_state, init_sf2mdta, ROT0, "bootleg (Playmark)", "Street Fighter II': Champion Edition (Playmark bootleg, set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 ETC
-
-GAME( 1992, sf2mdt, sf2ce, sf2mdt, sf2mdt, cps1bl_5205_state, init_sf2mdt, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 ETC
-GAME( 1992, sf2mdta, sf2ce, sf2mdt, sf2mdt, cps1bl_5205_state, init_sf2mdta, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 ETC
-GAME( 1992, sf2mdtb, sf2ce, sf2mdt, sf2mdtb, cps1bl_5205_state, init_sf2mdtb, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 ETC