diff options
author | AJR <ajrhacker@users.noreply.github.com> | 2018-05-22 10:29:42 -0400 |
---|---|---|
committer | AJR <ajrhacker@users.noreply.github.com> | 2018-05-22 10:29:42 -0400 |
commit | 447cda56672dc0ed1d09287996492516553b19a2 (patch) | |
tree | b03c571d889ef110cfaf5a82309989c4272da099 | |
parent | 9abe0fb272a92cbc3f7be084af984146a3ca84d8 (diff) |
Separate state class for CPS2 (nw)
-rw-r--r-- | src/mame/drivers/cps1.cpp | 2 | ||||
-rw-r--r-- | src/mame/drivers/cps2.cpp | 736 | ||||
-rw-r--r-- | src/mame/drivers/fcrash.cpp | 18 | ||||
-rw-r--r-- | src/mame/includes/cps1.h | 233 | ||||
-rw-r--r-- | src/mame/machine/cps2crypt.cpp | 2 | ||||
-rw-r--r-- | src/mame/video/cps1.cpp | 254 |
6 files changed, 622 insertions, 623 deletions
diff --git a/src/mame/drivers/cps1.cpp b/src/mame/drivers/cps1.cpp index c03ca519e0c..00dae11fb63 100644 --- a/src/mame/drivers/cps1.cpp +++ b/src/mame/drivers/cps1.cpp @@ -3400,8 +3400,6 @@ MACHINE_CONFIG_START(cps_state::cps1_10MHz) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1) MCFG_PALETTE_ADD("palette", 0xc00) - MCFG_VIDEO_START_OVERRIDE(cps_state, cps1) - /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/cps2.cpp b/src/mame/drivers/cps2.cpp index 13f3547fa81..e66cada4221 100644 --- a/src/mame/drivers/cps2.cpp +++ b/src/mame/drivers/cps2.cpp @@ -655,7 +655,7 @@ Stephh's inputs notes (based on some tests on the "parent" set) : * *************************************/ -TIMER_DEVICE_CALLBACK_MEMBER(cps_state::cps2_interrupt) +TIMER_DEVICE_CALLBACK_MEMBER(cps2_state::cps2_interrupt) { /* 2 is vblank, 4 is some sort of scanline interrupt, 6 is both at the same time. */ if (param == 0) @@ -713,7 +713,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(cps_state::cps2_interrupt) * *************************************/ -WRITE16_MEMBER( cps_state::cps2_eeprom_port_w ) +WRITE16_MEMBER( cps2_state::cps2_eeprom_port_w ) { if (ACCESSING_BITS_8_15) { @@ -790,11 +790,9 @@ WRITE16_MEMBER( cps_state::cps2_eeprom_port_w ) * *************************************/ -TIMER_CALLBACK_MEMBER(cps_state::cps2_update_digital_volume) +TIMER_CALLBACK_MEMBER(cps2_state::cps2_update_digital_volume) { - int vol_button_state; - - vol_button_state = ioport("DIGITALVOL")->read(); + int vol_button_state = ioport("DIGITALVOL")->read(); if (vol_button_state & 0x01) m_cps2digitalvolumelevel -= 1; if (vol_button_state & 0x02) m_cps2digitalvolumelevel += 1; @@ -802,11 +800,11 @@ TIMER_CALLBACK_MEMBER(cps_state::cps2_update_digital_volume) if (m_cps2digitalvolumelevel > 39) m_cps2digitalvolumelevel = 39; if (m_cps2digitalvolumelevel < 0) m_cps2digitalvolumelevel = 0; - machine().device<qsound_device>("qsound")->set_output_gain(0, m_cps2digitalvolumelevel / 39.0); - machine().device<qsound_device>("qsound")->set_output_gain(1, m_cps2digitalvolumelevel / 39.0); + m_qsound->set_output_gain(0, m_cps2digitalvolumelevel / 39.0); + m_qsound->set_output_gain(1, m_cps2digitalvolumelevel / 39.0); } -READ16_MEMBER(cps_state::cps2_qsound_volume_r) +READ16_MEMBER(cps2_state::cps2_qsound_volume_r) { static const uint16_t cps2_vol_states[40] = { @@ -840,12 +838,12 @@ READ16_MEMBER(cps_state::cps2_qsound_volume_r) * *************************************/ -READ16_MEMBER(cps_state::kludge_r) +READ16_MEMBER(cps2_state::kludge_r) { return 0xffff; } -READ16_MEMBER(cps_state::joy_or_paddle_r) +READ16_MEMBER(cps2_state::joy_or_paddle_r) { if (m_readpaddle != 0) { @@ -857,7 +855,7 @@ READ16_MEMBER(cps_state::joy_or_paddle_r) } } -READ16_MEMBER(cps_state::joy_or_paddle_ecofghtr_r) +READ16_MEMBER(cps2_state::joy_or_paddle_ecofghtr_r) { if (m_readpaddle == 0 || (m_io_in1->read() & 0x10) == 0x10) // ignore bit if spinner not enabled { @@ -926,64 +924,64 @@ READ16_MEMBER(cps_state::joy_or_paddle_ecofghtr_r) * *************************************/ -void cps_state::cps2_map(address_map &map) +void cps2_state::cps2_map(address_map &map) { map(0x000000, 0x3fffff).rom(); /* 68000 ROM */ map(0x400000, 0x40000b).ram().share("output"); /* CPS2 object output */ - map(0x618000, 0x619fff).rw(this, FUNC(cps_state::qsound_sharedram1_r), FUNC(cps_state::qsound_sharedram1_w)); /* Q RAM */ + map(0x618000, 0x619fff).rw(this, FUNC(cps2_state::qsound_sharedram1_r), FUNC(cps2_state::qsound_sharedram1_w)); /* Q RAM */ map(0x660000, 0x663fff).ram(); /* When bit 14 of 0x804030 equals 0 this space is available. Many games store highscores and other info here if available. */ map(0x662000, 0x662001).ram(); /* Network adapter related, accessed in SSF2TB */ map(0x662008, 0x662009).ram(); /* Network adapter related, accessed in SSF2TB */ map(0x662020, 0x662021).ram(); /* Network adapter related, accessed in SSF2TB */ map(0x664000, 0x664001).ram(); /* Unknown - Only used if 0x660000-0x663fff available (could be RAM enable?) */ - map(0x700000, 0x701fff).w(this, FUNC(cps_state::cps2_objram1_w)).share("objram1"); /* Object RAM, no game seems to use it directly */ - map(0x708000, 0x709fff).mirror(0x006000).rw(this, FUNC(cps_state::cps2_objram2_r), FUNC(cps_state::cps2_objram2_w)).share("objram2"); /* Object RAM */ - map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* mirror (sfa) */ - map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs"); /* mirror (sfa) */ + map(0x700000, 0x701fff).w(this, FUNC(cps2_state::cps2_objram1_w)).share("objram1"); /* Object RAM, no game seems to use it directly */ + map(0x708000, 0x709fff).mirror(0x006000).rw(this, FUNC(cps2_state::cps2_objram2_r), FUNC(cps2_state::cps2_objram2_w)).share("objram2"); /* Object RAM */ + map(0x800100, 0x80013f).w(this, FUNC(cps2_state::cps1_cps_a_w)).share("cps_a_regs"); /* mirror (sfa) */ + map(0x800140, 0x80017f).rw(this, FUNC(cps2_state::cps1_cps_b_r), FUNC(cps2_state::cps1_cps_b_w)).share("cps_b_regs"); /* mirror (sfa) */ map(0x804000, 0x804001).portr("IN0"); /* IN0 */ map(0x804010, 0x804011).portr("IN1"); /* IN1 */ map(0x804020, 0x804021).portr("IN2"); /* IN2 + EEPROM */ - map(0x804030, 0x804031).r(this, FUNC(cps_state::cps2_qsound_volume_r)); /* Master volume. Also when bit 14=0 addon memory is present, when bit 15=0 network adapter present. */ - map(0x804040, 0x804041).w(this, FUNC(cps_state::cps2_eeprom_port_w)); /* EEPROM */ + map(0x804030, 0x804031).r(this, FUNC(cps2_state::cps2_qsound_volume_r)); /* Master volume. Also when bit 14=0 addon memory is present, when bit 15=0 network adapter present. */ + map(0x804040, 0x804041).w(this, FUNC(cps2_state::cps2_eeprom_port_w)); /* EEPROM */ map(0x8040a0, 0x8040a1).nopw(); /* Unknown (reset once on startup) */ - map(0x8040b0, 0x8040b3).r(this, FUNC(cps_state::kludge_r)); /* unknown (xmcotaj hangs if this is 0) */ - map(0x8040e0, 0x8040e1).w(this, FUNC(cps_state::cps2_objram_bank_w)); /* bit 0 = Object ram bank swap */ - map(0x804100, 0x80413f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */ - map(0x804140, 0x80417f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)); /* CPS-B custom */ - map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); /* Video RAM */ + map(0x8040b0, 0x8040b3).r(this, FUNC(cps2_state::kludge_r)); /* unknown (xmcotaj hangs if this is 0) */ + map(0x8040e0, 0x8040e1).w(this, FUNC(cps2_state::cps2_objram_bank_w)); /* bit 0 = Object ram bank swap */ + map(0x804100, 0x80413f).w(this, FUNC(cps2_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */ + map(0x804140, 0x80417f).rw(this, FUNC(cps2_state::cps1_cps_b_r), FUNC(cps2_state::cps1_cps_b_w)); /* CPS-B custom */ + map(0x900000, 0x92ffff).ram().w(this, FUNC(cps2_state::cps1_gfxram_w)).share("gfxram"); /* Video RAM */ map(0xff0000, 0xffffff).ram(); /* RAM */ } -void cps_state::decrypted_opcodes_map(address_map &map) +void cps2_state::decrypted_opcodes_map(address_map &map) { map(0x000000, 0x3fffff).rom().share("decrypted_opcodes"); /* 68000 ROM */ } -void cps_state::dead_cps2_map(address_map &map) +void cps2_state::dead_cps2_map(address_map &map) { map(0x000000, 0x3fffff).rom(); /* 68000 ROM */ map(0x400000, 0x40000b).ram().share("output"); /* CPS2 object output */ - map(0x618000, 0x619fff).rw(this, FUNC(cps_state::qsound_sharedram1_r), FUNC(cps_state::qsound_sharedram1_w)); /* Q RAM */ + map(0x618000, 0x619fff).rw(this, FUNC(cps2_state::qsound_sharedram1_r), FUNC(cps2_state::qsound_sharedram1_w)); /* Q RAM */ map(0x660000, 0x663fff).ram(); /* When bit 14 of 0x804030 equals 0 this space is available. Many games store highscores and other info here if available. */ map(0x662000, 0x662001).ram(); /* Network adapter related, accessed in SSF2TB */ map(0x662008, 0x662009).ram(); /* Network adapter related, accessed in SSF2TB */ map(0x662020, 0x662021).ram(); /* Network adapter related, accessed in SSF2TB */ map(0x664000, 0x664001).ram(); /* Unknown - Only used if 0x660000-0x663fff available (could be RAM enable?) */ - map(0x700000, 0x701fff).w(this, FUNC(cps_state::cps2_objram1_w)).share("objram1"); /* Object RAM, no game seems to use it directly */ - map(0x708000, 0x709fff).mirror(0x006000).rw(this, FUNC(cps_state::cps2_objram2_r), FUNC(cps_state::cps2_objram2_w)).share("objram2"); /* Object RAM */ - map(0x800100, 0x80013f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* mirror (sfa) */ - map(0x800140, 0x80017f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)).share("cps_b_regs"); /* mirror (sfa) */ + map(0x700000, 0x701fff).w(this, FUNC(cps2_state::cps2_objram1_w)).share("objram1"); /* Object RAM, no game seems to use it directly */ + map(0x708000, 0x709fff).mirror(0x006000).rw(this, FUNC(cps2_state::cps2_objram2_r), FUNC(cps2_state::cps2_objram2_w)).share("objram2"); /* Object RAM */ + map(0x800100, 0x80013f).w(this, FUNC(cps2_state::cps1_cps_a_w)).share("cps_a_regs"); /* mirror (sfa) */ + map(0x800140, 0x80017f).rw(this, FUNC(cps2_state::cps1_cps_b_r), FUNC(cps2_state::cps1_cps_b_w)).share("cps_b_regs"); /* mirror (sfa) */ map(0x804000, 0x804001).portr("IN0"); /* IN0 */ map(0x804010, 0x804011).portr("IN1"); /* IN1 */ map(0x804020, 0x804021).portr("IN2"); /* IN2 + EEPROM */ - map(0x804030, 0x804031).r(this, FUNC(cps_state::cps2_qsound_volume_r)); /* Master volume. Also when bit 14=0 addon memory is present, when bit 15=0 network adapter present. */ - map(0x804040, 0x804041).w(this, FUNC(cps_state::cps2_eeprom_port_w)); /* EEPROM */ + map(0x804030, 0x804031).r(this, FUNC(cps2_state::cps2_qsound_volume_r)); /* Master volume. Also when bit 14=0 addon memory is present, when bit 15=0 network adapter present. */ + map(0x804040, 0x804041).w(this, FUNC(cps2_state::cps2_eeprom_port_w)); /* EEPROM */ map(0x8040a0, 0x8040a1).nopw(); /* Unknown (reset once on startup) */ - map(0x8040b0, 0x8040b3).r(this, FUNC(cps_state::kludge_r)); /* unknown (xmcotaj hangs if this is 0) */ - map(0x8040e0, 0x8040e1).w(this, FUNC(cps_state::cps2_objram_bank_w)); /* bit 0 = Object ram bank swap */ - map(0x804100, 0x80413f).w(this, FUNC(cps_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */ - map(0x804140, 0x80417f).rw(this, FUNC(cps_state::cps1_cps_b_r), FUNC(cps_state::cps1_cps_b_w)); /* CPS-B custom */ - map(0x900000, 0x92ffff).ram().w(this, FUNC(cps_state::cps1_gfxram_w)).share("gfxram"); /* Video RAM */ + map(0x8040b0, 0x8040b3).r(this, FUNC(cps2_state::kludge_r)); /* unknown (xmcotaj hangs if this is 0) */ + map(0x8040e0, 0x8040e1).w(this, FUNC(cps2_state::cps2_objram_bank_w)); /* bit 0 = Object ram bank swap */ + map(0x804100, 0x80413f).w(this, FUNC(cps2_state::cps1_cps_a_w)).share("cps_a_regs"); /* CPS-A custom */ + map(0x804140, 0x80417f).rw(this, FUNC(cps2_state::cps1_cps_b_r), FUNC(cps2_state::cps1_cps_b_w)); /* CPS-B custom */ + map(0x900000, 0x92ffff).ram().w(this, FUNC(cps2_state::cps1_gfxram_w)).share("gfxram"); /* Video RAM */ map(0xff0000, 0xffffef).ram(); /* RAM */ map(0xfffff0, 0xfffffb).ram().share("output"); /* CPS2 output */ map(0xfffffc, 0xffffff).ram(); @@ -1297,26 +1295,26 @@ INPUT_PORTS_END * *************************************/ -MACHINE_START_MEMBER(cps_state,cps2) +MACHINE_START_MEMBER(cps2_state,cps2) { if (m_audiocpu != nullptr) // gigaman2 has an AT89C4051 (8051) MCU as an audio cpu, no qsound. membank("bank1")->configure_entries(0, (QSOUND_SIZE - 0x10000) / 0x4000, memregion("audiocpu")->base() + 0x10000, 0x4000); } -MACHINE_CONFIG_START(cps_state::cps2) +MACHINE_CONFIG_START(cps2_state::cps2) /* basic machine hardware */ MCFG_DEVICE_ADD("maincpu", M68000, XTAL(16'000'000)) MCFG_DEVICE_PROGRAM_MAP(cps2_map) MCFG_DEVICE_OPCODES_MAP(decrypted_opcodes_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", cps_state, cps2_interrupt, "screen", 0, 1) + MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", cps2_state, cps2_interrupt, "screen", 0, 1) MCFG_DEVICE_ADD("audiocpu", Z80, XTAL(8'000'000)) MCFG_DEVICE_PROGRAM_MAP(qsound_sub_map) - MCFG_DEVICE_PERIODIC_INT_DRIVER(cps_state, irq0_line_hold, 250) // measured + MCFG_DEVICE_PERIODIC_INT_DRIVER(cps2_state, irq0_line_hold, 250) // measured - MCFG_MACHINE_START_OVERRIDE(cps_state, cps2) + MCFG_MACHINE_START_OVERRIDE(cps2_state, cps2) MCFG_EEPROM_SERIAL_93C46_ADD("eeprom") @@ -1324,15 +1322,13 @@ MACHINE_CONFIG_START(cps_state::cps2) MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) 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_cps1) - MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps_state, screen_vblank_cps1)) + MCFG_SCREEN_UPDATE_DRIVER(cps2_state, screen_update_cps1) + MCFG_SCREEN_VBLANK_CALLBACK(WRITELINE(*this, cps2_state, screen_vblank_cps1)) MCFG_SCREEN_PALETTE("palette") MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1) MCFG_PALETTE_ADD("palette", 0xc00) - MCFG_VIDEO_START_OVERRIDE(cps_state, cps2) - /* sound hardware */ SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); @@ -1343,14 +1339,14 @@ MACHINE_CONFIG_START(cps_state::cps2) MACHINE_CONFIG_END -MACHINE_CONFIG_START(cps_state::dead_cps2) +MACHINE_CONFIG_START(cps2_state::dead_cps2) cps2(config); MCFG_DEVICE_MODIFY("maincpu") MCFG_DEVICE_PROGRAM_MAP(dead_cps2_map) MACHINE_CONFIG_END -MACHINE_CONFIG_START(cps_state::gigaman2) +MACHINE_CONFIG_START(cps2_state::gigaman2) cps2(config); MCFG_DEVICE_REMOVE("audiocpu") @@ -9836,26 +9832,26 @@ ROM_END * *************************************/ -void cps_state::init_digital_volume() +void cps2_state::init_digital_volume() { m_cps2digitalvolumelevel = 39; /* maximum */ m_cps2disabledigitalvolume = 0; /* create a timer to update our volume state from the fake switches - read it every 6 frames or so to enable some granularity */ - m_digital_volume_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(cps_state::cps2_update_digital_volume),this)); + m_digital_volume_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(cps2_state::cps2_update_digital_volume),this)); m_digital_volume_timer->adjust(attotime::from_msec(100), 0, attotime::from_msec(100)); } -void cps_state::init_cps2() +void cps2_state::init_cps2() { /* Decrypt the game - see machine/cps2crypt.cpp */ init_cps2crypt(); init_cps2nc(); } -void cps_state::init_cps2nc() +void cps2_state::init_cps2nc() { /* Initialize some video elements */ init_cps2_video(); @@ -9868,7 +9864,7 @@ void cps_state::init_cps2nc() } -void cps_state::init_ssf2tb() +void cps2_state::init_ssf2tb() { init_cps2(); @@ -9880,7 +9876,7 @@ void cps_state::init_ssf2tb() } -void cps_state::init_pzloop2() +void cps2_state::init_pzloop2() { init_cps2(); @@ -9889,10 +9885,10 @@ void cps_state::init_pzloop2() save_item(NAME(m_readpaddle)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x804000, 0x804001, read16_delegate(FUNC(cps_state::joy_or_paddle_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x804000, 0x804001, read16_delegate(FUNC(cps2_state::joy_or_paddle_r), this)); } -void cps_state::init_singbrd() +void cps2_state::init_singbrd() { init_cps2(); @@ -9901,18 +9897,18 @@ void cps_state::init_singbrd() m_digital_volume_timer->adjust(attotime::never, 0, attotime::never); } -READ16_MEMBER( cps_state::gigaman2_dummyqsound_r ) +READ16_MEMBER( cps2_state::gigaman2_dummyqsound_r ) { return m_gigaman2_dummyqsound_ram[offset]; } -WRITE16_MEMBER( cps_state::gigaman2_dummyqsound_w ) +WRITE16_MEMBER( cps2_state::gigaman2_dummyqsound_w ) { m_gigaman2_dummyqsound_ram[offset] = data; } /* rearrange the graphics data into the normal order */ -void cps_state::gigaman2_gfx_reorder() +void cps2_state::gigaman2_gfx_reorder() { int i; int length = memregion( "gfx" )->bytes(); @@ -9926,7 +9922,7 @@ void cps_state::gigaman2_gfx_reorder() } } -void cps_state::init_gigaman2() +void cps2_state::init_gigaman2() { address_space &space = m_maincpu->space(AS_PROGRAM); @@ -9937,7 +9933,7 @@ void cps_state::init_gigaman2() m_gigaman2_dummyqsound_ram = std::make_unique<uint16_t[]>(0x20000 / 2); save_pointer(NAME(m_gigaman2_dummyqsound_ram.get()), 0x20000 / 2); - space.install_readwrite_handler(0x618000, 0x619fff, read16_delegate(FUNC(cps_state::gigaman2_dummyqsound_r),this), write16_delegate(FUNC(cps_state::gigaman2_dummyqsound_w), this)); // no qsound.. + space.install_readwrite_handler(0x618000, 0x619fff, read16_delegate(FUNC(cps2_state::gigaman2_dummyqsound_r),this), write16_delegate(FUNC(cps2_state::gigaman2_dummyqsound_w), this)); // no qsound.. memcpy(m_decrypted_opcodes, memregion("maincpu")->base()+0x200000, 0x200000); @@ -9945,7 +9941,7 @@ void cps_state::init_gigaman2() m_digital_volume_timer->adjust(attotime::never, 0, attotime::never); } -void cps_state::init_ecofghtr() +void cps2_state::init_ecofghtr() { init_cps2(); @@ -9954,7 +9950,7 @@ void cps_state::init_ecofghtr() save_item(NAME(m_readpaddle)); - m_maincpu->space(AS_PROGRAM).install_read_handler(0x804000, 0x804001, read16_delegate(FUNC(cps_state::joy_or_paddle_ecofghtr_r), this)); + m_maincpu->space(AS_PROGRAM).install_read_handler(0x804000, 0x804001, read16_delegate(FUNC(cps2_state::joy_or_paddle_ecofghtr_r), this)); } @@ -9966,278 +9962,278 @@ void cps_state::init_ecofghtr() * *************************************/ -GAME( 1993, ssf2, 0, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (World 931005)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ssf2r1, ssf2, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (World 930911)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ssf2u, ssf2, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (USA 930911)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ssf2a, ssf2, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Asia 931005)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ssf2ar1, ssf2, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Asia 930914)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ssf2j, ssf2, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Japan 931005)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ssf2jr1, ssf2, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Japan 930911)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ssf2jr2, ssf2, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Japan 930910)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ssf2h, ssf2, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Hispanic 930911)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ssf2tb, ssf2, cps2, cps2_2p6b, cps_state, init_ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (World 931119)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) // works, but not in tournament mode -GAME( 1993, ssf2tbr1, ssf2, cps2, cps2_2p6b, cps_state, init_ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (World 930911)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) // works, but not in tournament mode -GAME( 1993, ssf2tbj, ssf2, cps2, cps2_2p6b, cps_state, init_ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (Japan 931005)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) // works, but not in tournament mode -GAME( 1993, ssf2tbj1, ssf2, cps2, cps2_2p6b, cps_state, init_ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (Japan 930911)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) // works, but not in tournament mode -GAME( 1993, ssf2tba, ssf2, cps2, cps2_2p6b, cps_state, init_ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (Asia 931005)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) // works, but not in tournament mode -GAME( 1993, ssf2tbh, ssf2, cps2, cps2_2p6b, cps_state, init_ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (Hispanic 931005)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) // works, but not in tournament mode -GAME( 1993, ecofghtr, 0, cps2, ecofghtr, cps_state, init_ecofghtr, ROT0, "Capcom", "Eco Fighters (World 931203)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ecofghtru, ecofghtr, cps2, ecofghtr, cps_state, init_ecofghtr, ROT0, "Capcom", "Eco Fighters (USA 940215)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ecofghtru1, ecofghtr, cps2, ecofghtr, cps_state, init_ecofghtr, ROT0, "Capcom", "Eco Fighters (USA 931203)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, uecology, ecofghtr, cps2, ecofghtr, cps_state, init_ecofghtr, ROT0, "Capcom", "Ultimate Ecology (Japan 931203)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ecofghtra, ecofghtr, cps2, ecofghtr, cps_state, init_ecofghtr, ROT0, "Capcom", "Eco Fighters (Asia 931203)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ecofghtrh, ecofghtr, cps2, ecofghtr, cps_state, init_ecofghtr, ROT0, "Capcom", "Eco Fighters (Hispanic 931203)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ddtod, 0, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Euro 940412)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ddtodr1, ddtod, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Euro 940113)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ddtodu, ddtod, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (USA 940125)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ddtodur1, ddtod, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (USA 940113)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ddtodj, ddtod, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Japan 940412)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ddtodjr1, ddtod, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Japan 940125)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ddtodjr2, ddtod, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Japan 940113)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ddtoda, ddtod, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Asia 940412)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ddtodar1, ddtod, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Asia 940113)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ddtodh, ddtod, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Hispanic 940412)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ddtodhr1, ddtod, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Hispanic 940125)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ddtodhr2, ddtod, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Hispanic 940113)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, ssf2t, 0, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II Turbo (World 940223)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, ssf2ta, ssf2t, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II Turbo (Asia 940223)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, ssf2th, ssf2t, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II Turbo (Hispanic 940223)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, ssf2tu, ssf2t, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II Turbo (USA 940323)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, ssf2tur1, ssf2t, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II Turbo (USA 940223)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, ssf2xj, ssf2t, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II X: Grand Master Challenge (Japan 940311)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, ssf2xjr1, ssf2t, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II X: Grand Master Challenge (Japan 940223)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, ssf2xjr1r, ssf2t, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II X: Grand Master Challenge (Japan 940223 rent version)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, avsp, 0, cps2, cps2_3p3b, cps_state, init_cps2, ROT0, "Capcom", "Alien vs. Predator (Euro 940520)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, avspu, avsp, cps2, cps2_3p3b, cps_state, init_cps2, ROT0, "Capcom", "Alien vs. Predator (USA 940520)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, avspj, avsp, cps2, cps2_3p3b, cps_state, init_cps2, ROT0, "Capcom", "Alien vs. Predator (Japan 940520)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, avspa, avsp, cps2, cps2_3p3b, cps_state, init_cps2, ROT0, "Capcom", "Alien vs. Predator (Asia 940520)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, avsph, avsp, cps2, cps2_3p3b, cps_state, init_cps2, ROT0, "Capcom", "Alien vs. Predator (Hispanic 940520)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, dstlk, 0, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Darkstalkers: The Night Warriors (Euro 940705)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, dstlku, dstlk, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Darkstalkers: The Night Warriors (USA 940818)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, dstlkur1, dstlk, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Darkstalkers: The Night Warriors (USA 940705)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, dstlka, dstlk, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Darkstalkers: The Night Warriors (Asia 940705)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, dstlkh, dstlk, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Darkstalkers: The Night Warriors (Hispanic 940818)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, vampj, dstlk, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Vampire: The Night Warriors (Japan 940705)", MACHINE_SUPPORTS_SAVE ) // partial update set? Only rom 04 is "B" revision -GAME( 1994, vampja, dstlk, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Vampire: The Night Warriors (Japan 940705 alt)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, vampjr1, dstlk, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Vampire: The Night Warriors (Japan 940630)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, ringdest, 0, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Ring of Destruction: Slammasters II (Euro 940902)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, ringdesta, ringdest, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Ring of Destruction: Slammasters II (Asia 940831)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, ringdesth, ringdest, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Ring of Destruction: Slammasters II (Hispanic 940902)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, smbomb, ringdest, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Super Muscle Bomber: The International Blowout (Japan 940831)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, smbombr1, ringdest, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Super Muscle Bomber: The International Blowout (Japan 940808)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, armwar, 0, cps2, cps2_3p3b, cps_state, init_cps2, ROT0, "Capcom", "Armored Warriors (Euro 941024)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, armwarr1, armwar, cps2, cps2_3p3b, cps_state, init_cps2, ROT0, "Capcom", "Armored Warriors (Euro 941011)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, armwaru, armwar, cps2, cps2_3p3b, cps_state, init_cps2, ROT0, "Capcom", "Armored Warriors (USA 941024)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, armwaru1, armwar, cps2, cps2_3p3b, cps_state, init_cps2, ROT0, "Capcom", "Armored Warriors (USA 940920)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, pgear, armwar, cps2, cps2_3p3b, cps_state, init_cps2, ROT0, "Capcom", "Powered Gear: Strategic Variant Armor Equipment (Japan 941024)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, pgearr1, armwar, cps2, cps2_3p3b, cps_state, init_cps2, ROT0, "Capcom", "Powered Gear: Strategic Variant Armor Equipment (Japan 940916)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, armwara, armwar, cps2, cps2_3p3b, cps_state, init_cps2, ROT0, "Capcom", "Armored Warriors (Asia 941024)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, armwarar1, armwar, cps2, cps2_3p3b, cps_state, init_cps2, ROT0, "Capcom", "Armored Warriors (Asia 940920)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, xmcota, 0, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Euro 950331)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, xmcotar1, xmcota, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Euro 950105)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, xmcotau, xmcota, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (USA 950105)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, xmcotab, xmcota, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Brazil 950331)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, xmcotah, xmcota, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Hispanic 950331)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, xmcotahr1, xmcota, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Hispanic 950105)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, xmcotaj, xmcota, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Japan 950105)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, xmcotaj1, xmcota, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Japan 941222)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, xmcotaj2, xmcota, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Japan 941219)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, xmcotaj3, xmcota, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Japan 941217)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, xmcotajr, xmcota, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Japan 941208 rent version)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, xmcotaa, xmcota, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Asia 950105)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, xmcotaar1, xmcota, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Asia 941217)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, nwarr, 0, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Night Warriors: Darkstalkers' Revenge (Euro 950316)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, nwarru, nwarr, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Night Warriors: Darkstalkers' Revenge (USA 950406)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, nwarrh, nwarr, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Night Warriors: Darkstalkers' Revenge (Hispanic 950403)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, nwarrb, nwarr, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Night Warriors: Darkstalkers' Revenge (Brazil 950403)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, nwarra, nwarr, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Night Warriors: Darkstalkers' Revenge (Asia 950302)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, vhuntj, nwarr, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Vampire Hunter: Darkstalkers' Revenge (Japan 950316)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, vhuntjr1s, nwarr, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Vampire Hunter: Darkstalkers' Revenge (Japan 950307 stop version)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, vhuntjr1, nwarr, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Vampire Hunter: Darkstalkers' Revenge (Japan 950307)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, vhuntjr2, nwarr, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Vampire Hunter: Darkstalkers' Revenge (Japan 950302)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, cybots, 0, cps2, cybots, cps_state, init_cps2, ROT0, "Capcom", "Cyberbots: Fullmetal Madness (Euro 950424)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, cybotsu, cybots, cps2, cybots, cps_state, init_cps2, ROT0, "Capcom", "Cyberbots: Fullmetal Madness (USA 950424)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, cybotsj, cybots, cps2, cybots, cps_state, init_cps2, ROT0, "Capcom", "Cyberbots: Fullmetal Madness (Japan 950420)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sfa, 0, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha: Warriors' Dreams (Euro 950727)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sfar1, sfa, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha: Warriors' Dreams (Euro 950718)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sfar2, sfa, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha: Warriors' Dreams (Euro 950627)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sfar3, sfa, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha: Warriors' Dreams (Euro 950605)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sfau, sfa, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha: Warriors' Dreams (USA 950627)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sfza, sfa, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero (Asia 950627)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sfzar1, sfa, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero (Asia 950605)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sfzj, sfa, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero (Japan 950727)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sfzjr1, sfa, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero (Japan 950627)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sfzjr2, sfa, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero (Japan 950605)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sfzh, sfa, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero (Hispanic 950718)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sfzhr1, sfa, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero (Hispanic 950627)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sfzb, sfa, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero (Brazil 951109)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sfzbr1, sfa, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero (Brazil 950727)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, mmancp2u, megaman, cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "Capcom", "Mega Man: The Power Battle (CPS2, USA 951006, SAMPLE Version)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, mmancp2ur1, megaman, cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "Capcom", "Mega Man: The Power Battle (CPS2, USA 950926, SAMPLE Version)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, rmancp2j, megaman, cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "Capcom", "Rockman: The Power Battle (CPS2, Japan 950922)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, msh, 0, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes (Euro 951024)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, mshu, msh, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes (USA 951024)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, mshj, msh, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes (Japan 951117)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, mshjr1, msh, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes (Japan 951024)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, msha, msh, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes (Asia 951024)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, mshh, msh, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes (Hispanic 951117)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, mshb, msh, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes (Brazil 951117)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, mshbr1, msh, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes (Brazil 951024)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, 19xx, 0, cps2, cps2_2p2b, cps_state, init_cps2, ROT270, "Capcom", "19XX: The War Against Destiny (USA 951207)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, 19xxa, 19xx, cps2, cps2_2p2b, cps_state, init_cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Asia 960104)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, 19xxar1, 19xx, cps2, cps2_2p2b, cps_state, init_cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Asia 951207)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, 19xxj, 19xx, cps2, cps2_2p2b, cps_state, init_cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Japan 960104, yellow case)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, 19xxjr1, 19xx, cps2, cps2_2p2b, cps_state, init_cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Japan 951225)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, 19xxjr2, 19xx, cps2, cps2_2p2b, cps_state, init_cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Japan 951207)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, 19xxh, 19xx, cps2, cps2_2p2b, cps_state, init_cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Hispanic 951218)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, 19xxb, 19xx, cps2, cps2_2p2b, cps_state, init_cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Brazil 951218)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, ddsom, 0, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Euro 960619)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, ddsomr1, ddsom, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Euro 960223)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, ddsomr2, ddsom, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Euro 960209)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, ddsomr3, ddsom, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Euro 960208)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, ddsomu, ddsom, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (USA 960619)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, ddsomur1, ddsom, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (USA 960209)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, ddsomj, ddsom, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Japan 960619)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, ddsomjr1, ddsom, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Japan 960206)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, ddsomjr2, ddsom, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Japan 960223)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, ddsoma, ddsom, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Asia 960619)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, ddsomar1, ddsom, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Asia 960208)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, ddsomh, ddsom, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Hispanic 960223)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, ddsomb, ddsom, cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Brazil 960223)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, sfa2, 0, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha 2 (Euro 960229)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, sfa2u, sfa2, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha 2 (USA 960430)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, sfa2ur1, sfa2, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha 2 (USA 960306)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, sfz2j, sfa2, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Japan 960430)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, sfz2jr1, sfa2, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Japan 960227)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, sfz2a, sfa2, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Asia 960227)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, sfz2b, sfa2, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Brazil 960531)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, sfz2br1, sfa2, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Brazil 960304)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, sfz2h, sfa2, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Hispanic 960304)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, sfz2n, sfa2, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Oceania 960229)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, sfz2al, 0, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 2 Alpha (Asia 960826)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, sfz2alj, sfz2al, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 2 Alpha (Japan 960805)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, sfz2alh, sfz2al, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 2 Alpha (Hispanic 960813)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, sfz2alb, sfz2al, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 2 Alpha (Brazil 960813)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, spf2t, 0, cps2, cps2_2p2b, cps_state, init_cps2, ROT0, "Capcom", "Super Puzzle Fighter II Turbo (Euro 960529)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, spf2tu, spf2t, cps2, cps2_2p2b, cps_state, init_cps2, ROT0, "Capcom", "Super Puzzle Fighter II Turbo (USA 960620)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, spf2xj, spf2t, cps2, cps2_2p2b, cps_state, init_cps2, ROT0, "Capcom", "Super Puzzle Fighter II X (Japan 960531)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, spf2ta, spf2t, cps2, cps2_2p2b, cps_state, init_cps2, ROT0, "Capcom", "Super Puzzle Fighter II Turbo (Asia 960529)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, spf2th, spf2t, cps2, cps2_2p2b, cps_state, init_cps2, ROT0, "Capcom", "Super Puzzle Fighter II Turbo (Hispanic 960531)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, megaman2, 0, cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "Capcom", "Mega Man 2: The Power Fighters (USA 960708)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, megaman2a, megaman2, cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "Capcom", "Mega Man 2: The Power Fighters (Asia 960708)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, rockman2j, megaman2, cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "Capcom", "Rockman 2: The Power Fighters (Japan 960708)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, megaman2h, megaman2, cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "Capcom", "Mega Man 2: The Power Fighters (Hispanic 960712)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, qndream, 0, cps2, qndream, cps_state, init_cps2, ROT0, "Capcom", "Quiz Nanairo Dreams: Nijiirochou no Kiseki (Japan 960826)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, xmvsf, 0, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Euro 961004)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, xmvsfr1, xmvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Euro 960910)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, xmvsfu, xmvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (USA 961023)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, xmvsfur1, xmvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (USA 961004)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, xmvsfur2, xmvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (USA 960910)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, xmvsfj, xmvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Japan 961023)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, xmvsfjr1, xmvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Japan 961004)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, xmvsfjr2, xmvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Japan 960910)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, xmvsfjr3, xmvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Japan 960909)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, xmvsfa, xmvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Asia 961023)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, xmvsfar1, xmvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Asia 961004)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, xmvsfar2, xmvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Asia 960919)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, xmvsfar3, xmvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Asia 960910)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, xmvsfh, xmvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Hispanic 961004)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, xmvsfb, xmvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Brazil 961023)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, batcir, 0, cps2, cps2_4p2b, cps_state, init_cps2, ROT0, "Capcom", "Battle Circuit (Euro 970319)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, batcira, batcir, cps2, cps2_4p2b, cps_state, init_cps2, ROT0, "Capcom", "Battle Circuit (Asia 970319)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, batcirj, batcir, cps2, cps2_4p2b, cps_state, init_cps2, ROT0, "Capcom", "Battle Circuit (Japan 970319)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, vsav, 0, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Vampire Savior: The Lord of Vampire (Euro 970519)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, vsavu, vsav, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Vampire Savior: The Lord of Vampire (USA 970519)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, vsavj, vsav, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Vampire Savior: The Lord of Vampire (Japan 970519)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, vsava, vsav, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Vampire Savior: The Lord of Vampire (Asia 970519)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, vsavh, vsav, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Vampire Savior: The Lord of Vampire (Hispanic 970519)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, mshvsf, 0, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Euro 970625)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, mshvsfu, mshvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (USA 970827)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, mshvsfu1, mshvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (USA 970625)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, mshvsfj, mshvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Japan 970707)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, mshvsfj1, mshvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Japan 970702)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, mshvsfj2, mshvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Japan 970625)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, mshvsfh, mshvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Hispanic 970625)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, mshvsfa, mshvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Asia 970625)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, mshvsfa1, mshvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Asia 970620)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, mshvsfb, mshvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Brazil 970827)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, mshvsfb1, mshvsf, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Brazil 970625)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, csclub, 0, cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "Capcom", "Capcom Sports Club (Euro 971017)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, csclub1, csclub, cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "Capcom", "Capcom Sports Club (Euro 970722)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, cscluba, csclub, cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "Capcom", "Capcom Sports Club (Asia 970722)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, csclubj, csclub, cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "Capcom", "Capcom Sports Club (Japan 970722)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, csclubjy, csclub, cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "Capcom", "Capcom Sports Club (Japan 970722, yellow case)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, csclubh, csclub, cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "Capcom", "Capcom Sports Club (Hispanic 970722)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, sgemf, 0, cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "Capcom", "Super Gem Fighter Mini Mix (USA 970904)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, pfghtj, sgemf, cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "Capcom", "Pocket Fighter (Japan 970904)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, sgemfa, sgemf, cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "Capcom", "Super Gem Fighter: Mini Mix (Asia 970904)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, sgemfh, sgemf, cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "Capcom", "Super Gem Fighter: Mini Mix (Hispanic 970904)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, vhunt2, 0, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Vampire Hunter 2: Darkstalkers Revenge (Japan 970929)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, vhunt2r1, vhunt2, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Vampire Hunter 2: Darkstalkers Revenge (Japan 970913)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, vsav2, 0, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Vampire Savior 2: The Lord of Vampire (Japan 970913)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, mvsc, 0, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Euro 980123)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, mvscr1, mvsc, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Euro 980112)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, mvscu, mvsc, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (USA 980123)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, mvscur1, mvsc, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (USA 971222)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, mvscj, mvsc, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Japan 980123)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, mvscjr1, mvsc, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Japan 980112)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, mvscjsing, mvsc, cps2, cps2_2p6b, cps_state, init_singbrd, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Japan 980123) (Single PCB)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, mvsca, mvsc, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Asia 980123)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, mvscar1, mvsc, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Asia 980112)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, mvsch, mvsc, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Hispanic 980123)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, mvscb, mvsc, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Brazil 980123)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, sfa3, 0, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (Euro 980904)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, sfa3u, sfa3, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (USA 980904)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, sfa3ur1, sfa3, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (USA 980629)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, sfa3us, sfa3, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (USA 980616, SAMPLE Version)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, sfa3h, sfa3, cps2, cps2_2p6bt, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (Hispanic 980904)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, sfa3hr1, sfa3, cps2, cps2_2p6bt, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (Hispanic 980629)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, sfa3b, sfa3, cps2, cps2_2p6bt, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (Brazil 980629)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, sfz3j, sfa3, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 3 (Japan 980904)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, sfz3jr1, sfa3, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 3 (Japan 980727)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, sfz3jr2, sfa3, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 3 (Japan 980629)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, sfz3a, sfa3, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 3 (Asia 980904)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, sfz3ar1, sfa3, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 3 (Asia 980701)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, jyangoku, 0, cps2, cps2_1p2b, cps_state, init_cps2, ROT0, "Capcom", "Jyangokushi: Haoh no Saihai (Japan 990527)", MACHINE_SUPPORTS_SAVE ) -GAME( 2004, hsf2, 0, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Hyper Street Fighter II: The Anniversary Edition (USA 040202)", MACHINE_SUPPORTS_SAVE ) -GAME( 2004, hsf2a, hsf2, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Hyper Street Fighter II: The Anniversary Edition (Asia 040202)", MACHINE_SUPPORTS_SAVE ) -GAME( 2004, hsf2j, hsf2, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Hyper Street Fighter II: The Anniversary Edition (Japan 040202)", MACHINE_SUPPORTS_SAVE ) -GAME( 2004, hsf2j1, hsf2, cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "Capcom", "Hyper Street Fighter II: The Anniversary Edition (Japan 031222)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ssf2, 0, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (World 931005)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ssf2r1, ssf2, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (World 930911)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ssf2u, ssf2, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (USA 930911)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ssf2a, ssf2, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Asia 931005)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ssf2ar1, ssf2, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Asia 930914)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ssf2j, ssf2, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Japan 931005)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ssf2jr1, ssf2, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Japan 930911)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ssf2jr2, ssf2, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Japan 930910)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ssf2h, ssf2, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II: The New Challengers (Hispanic 930911)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ssf2tb, ssf2, cps2, cps2_2p6b, cps2_state, init_ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (World 931119)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) // works, but not in tournament mode +GAME( 1993, ssf2tbr1, ssf2, cps2, cps2_2p6b, cps2_state, init_ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (World 930911)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) // works, but not in tournament mode +GAME( 1993, ssf2tbj, ssf2, cps2, cps2_2p6b, cps2_state, init_ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (Japan 931005)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) // works, but not in tournament mode +GAME( 1993, ssf2tbj1, ssf2, cps2, cps2_2p6b, cps2_state, init_ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (Japan 930911)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) // works, but not in tournament mode +GAME( 1993, ssf2tba, ssf2, cps2, cps2_2p6b, cps2_state, init_ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (Asia 931005)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) // works, but not in tournament mode +GAME( 1993, ssf2tbh, ssf2, cps2, cps2_2p6b, cps2_state, init_ssf2tb, ROT0, "Capcom", "Super Street Fighter II: The Tournament Battle (Hispanic 931005)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) // works, but not in tournament mode +GAME( 1993, ecofghtr, 0, cps2, ecofghtr, cps2_state, init_ecofghtr, ROT0, "Capcom", "Eco Fighters (World 931203)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ecofghtru, ecofghtr, cps2, ecofghtr, cps2_state, init_ecofghtr, ROT0, "Capcom", "Eco Fighters (USA 940215)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ecofghtru1, ecofghtr, cps2, ecofghtr, cps2_state, init_ecofghtr, ROT0, "Capcom", "Eco Fighters (USA 931203)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, uecology, ecofghtr, cps2, ecofghtr, cps2_state, init_ecofghtr, ROT0, "Capcom", "Ultimate Ecology (Japan 931203)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ecofghtra, ecofghtr, cps2, ecofghtr, cps2_state, init_ecofghtr, ROT0, "Capcom", "Eco Fighters (Asia 931203)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ecofghtrh, ecofghtr, cps2, ecofghtr, cps2_state, init_ecofghtr, ROT0, "Capcom", "Eco Fighters (Hispanic 931203)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ddtod, 0, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Euro 940412)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ddtodr1, ddtod, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Euro 940113)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ddtodu, ddtod, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (USA 940125)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ddtodur1, ddtod, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (USA 940113)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ddtodj, ddtod, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Japan 940412)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ddtodjr1, ddtod, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Japan 940125)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ddtodjr2, ddtod, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Japan 940113)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ddtoda, ddtod, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Asia 940412)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ddtodar1, ddtod, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Asia 940113)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ddtodh, ddtod, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Hispanic 940412)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ddtodhr1, ddtod, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Hispanic 940125)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ddtodhr2, ddtod, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Tower of Doom (Hispanic 940113)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, ssf2t, 0, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II Turbo (World 940223)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, ssf2ta, ssf2t, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II Turbo (Asia 940223)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, ssf2th, ssf2t, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II Turbo (Hispanic 940223)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, ssf2tu, ssf2t, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II Turbo (USA 940323)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, ssf2tur1, ssf2t, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II Turbo (USA 940223)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, ssf2xj, ssf2t, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II X: Grand Master Challenge (Japan 940311)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, ssf2xjr1, ssf2t, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II X: Grand Master Challenge (Japan 940223)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, ssf2xjr1r, ssf2t, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Super Street Fighter II X: Grand Master Challenge (Japan 940223 rent version)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, avsp, 0, cps2, cps2_3p3b, cps2_state, init_cps2, ROT0, "Capcom", "Alien vs. Predator (Euro 940520)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, avspu, avsp, cps2, cps2_3p3b, cps2_state, init_cps2, ROT0, "Capcom", "Alien vs. Predator (USA 940520)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, avspj, avsp, cps2, cps2_3p3b, cps2_state, init_cps2, ROT0, "Capcom", "Alien vs. Predator (Japan 940520)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, avspa, avsp, cps2, cps2_3p3b, cps2_state, init_cps2, ROT0, "Capcom", "Alien vs. Predator (Asia 940520)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, avsph, avsp, cps2, cps2_3p3b, cps2_state, init_cps2, ROT0, "Capcom", "Alien vs. Predator (Hispanic 940520)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, dstlk, 0, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Darkstalkers: The Night Warriors (Euro 940705)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, dstlku, dstlk, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Darkstalkers: The Night Warriors (USA 940818)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, dstlkur1, dstlk, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Darkstalkers: The Night Warriors (USA 940705)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, dstlka, dstlk, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Darkstalkers: The Night Warriors (Asia 940705)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, dstlkh, dstlk, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Darkstalkers: The Night Warriors (Hispanic 940818)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, vampj, dstlk, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Vampire: The Night Warriors (Japan 940705)", MACHINE_SUPPORTS_SAVE ) // partial update set? Only rom 04 is "B" revision +GAME( 1994, vampja, dstlk, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Vampire: The Night Warriors (Japan 940705 alt)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, vampjr1, dstlk, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Vampire: The Night Warriors (Japan 940630)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, ringdest, 0, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Ring of Destruction: Slammasters II (Euro 940902)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, ringdesta, ringdest, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Ring of Destruction: Slammasters II (Asia 940831)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, ringdesth, ringdest, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Ring of Destruction: Slammasters II (Hispanic 940902)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, smbomb, ringdest, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Super Muscle Bomber: The International Blowout (Japan 940831)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, smbombr1, ringdest, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Super Muscle Bomber: The International Blowout (Japan 940808)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, armwar, 0, cps2, cps2_3p3b, cps2_state, init_cps2, ROT0, "Capcom", "Armored Warriors (Euro 941024)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, armwarr1, armwar, cps2, cps2_3p3b, cps2_state, init_cps2, ROT0, "Capcom", "Armored Warriors (Euro 941011)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, armwaru, armwar, cps2, cps2_3p3b, cps2_state, init_cps2, ROT0, "Capcom", "Armored Warriors (USA 941024)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, armwaru1, armwar, cps2, cps2_3p3b, cps2_state, init_cps2, ROT0, "Capcom", "Armored Warriors (USA 940920)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, pgear, armwar, cps2, cps2_3p3b, cps2_state, init_cps2, ROT0, "Capcom", "Powered Gear: Strategic Variant Armor Equipment (Japan 941024)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, pgearr1, armwar, cps2, cps2_3p3b, cps2_state, init_cps2, ROT0, "Capcom", "Powered Gear: Strategic Variant Armor Equipment (Japan 940916)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, armwara, armwar, cps2, cps2_3p3b, cps2_state, init_cps2, ROT0, "Capcom", "Armored Warriors (Asia 941024)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, armwarar1, armwar, cps2, cps2_3p3b, cps2_state, init_cps2, ROT0, "Capcom", "Armored Warriors (Asia 940920)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, xmcota, 0, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Euro 950331)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, xmcotar1, xmcota, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Euro 950105)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, xmcotau, xmcota, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (USA 950105)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, xmcotab, xmcota, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Brazil 950331)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, xmcotah, xmcota, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Hispanic 950331)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, xmcotahr1, xmcota, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Hispanic 950105)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, xmcotaj, xmcota, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Japan 950105)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, xmcotaj1, xmcota, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Japan 941222)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, xmcotaj2, xmcota, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Japan 941219)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, xmcotaj3, xmcota, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Japan 941217)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, xmcotajr, xmcota, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Japan 941208 rent version)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, xmcotaa, xmcota, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Asia 950105)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, xmcotaar1, xmcota, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men: Children of the Atom (Asia 941217)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, nwarr, 0, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Night Warriors: Darkstalkers' Revenge (Euro 950316)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, nwarru, nwarr, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Night Warriors: Darkstalkers' Revenge (USA 950406)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, nwarrh, nwarr, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Night Warriors: Darkstalkers' Revenge (Hispanic 950403)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, nwarrb, nwarr, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Night Warriors: Darkstalkers' Revenge (Brazil 950403)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, nwarra, nwarr, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Night Warriors: Darkstalkers' Revenge (Asia 950302)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, vhuntj, nwarr, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Vampire Hunter: Darkstalkers' Revenge (Japan 950316)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, vhuntjr1s, nwarr, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Vampire Hunter: Darkstalkers' Revenge (Japan 950307 stop version)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, vhuntjr1, nwarr, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Vampire Hunter: Darkstalkers' Revenge (Japan 950307)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, vhuntjr2, nwarr, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Vampire Hunter: Darkstalkers' Revenge (Japan 950302)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, cybots, 0, cps2, cybots, cps2_state, init_cps2, ROT0, "Capcom", "Cyberbots: Fullmetal Madness (Euro 950424)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, cybotsu, cybots, cps2, cybots, cps2_state, init_cps2, ROT0, "Capcom", "Cyberbots: Fullmetal Madness (USA 950424)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, cybotsj, cybots, cps2, cybots, cps2_state, init_cps2, ROT0, "Capcom", "Cyberbots: Fullmetal Madness (Japan 950420)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sfa, 0, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha: Warriors' Dreams (Euro 950727)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sfar1, sfa, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha: Warriors' Dreams (Euro 950718)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sfar2, sfa, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha: Warriors' Dreams (Euro 950627)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sfar3, sfa, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha: Warriors' Dreams (Euro 950605)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sfau, sfa, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha: Warriors' Dreams (USA 950627)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sfza, sfa, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero (Asia 950627)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sfzar1, sfa, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero (Asia 950605)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sfzj, sfa, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero (Japan 950727)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sfzjr1, sfa, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero (Japan 950627)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sfzjr2, sfa, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero (Japan 950605)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sfzh, sfa, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero (Hispanic 950718)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sfzhr1, sfa, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero (Hispanic 950627)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sfzb, sfa, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero (Brazil 951109)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sfzbr1, sfa, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero (Brazil 950727)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, mmancp2u, megaman, cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "Capcom", "Mega Man: The Power Battle (CPS2, USA 951006, SAMPLE Version)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, mmancp2ur1, megaman, cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "Capcom", "Mega Man: The Power Battle (CPS2, USA 950926, SAMPLE Version)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, rmancp2j, megaman, cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "Capcom", "Rockman: The Power Battle (CPS2, Japan 950922)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, msh, 0, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes (Euro 951024)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, mshu, msh, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes (USA 951024)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, mshj, msh, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes (Japan 951117)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, mshjr1, msh, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes (Japan 951024)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, msha, msh, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes (Asia 951024)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, mshh, msh, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes (Hispanic 951117)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, mshb, msh, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes (Brazil 951117)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, mshbr1, msh, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes (Brazil 951024)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, 19xx, 0, cps2, cps2_2p2b, cps2_state, init_cps2, ROT270, "Capcom", "19XX: The War Against Destiny (USA 951207)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, 19xxa, 19xx, cps2, cps2_2p2b, cps2_state, init_cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Asia 960104)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, 19xxar1, 19xx, cps2, cps2_2p2b, cps2_state, init_cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Asia 951207)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, 19xxj, 19xx, cps2, cps2_2p2b, cps2_state, init_cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Japan 960104, yellow case)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, 19xxjr1, 19xx, cps2, cps2_2p2b, cps2_state, init_cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Japan 951225)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, 19xxjr2, 19xx, cps2, cps2_2p2b, cps2_state, init_cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Japan 951207)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, 19xxh, 19xx, cps2, cps2_2p2b, cps2_state, init_cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Hispanic 951218)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, 19xxb, 19xx, cps2, cps2_2p2b, cps2_state, init_cps2, ROT270, "Capcom", "19XX: The War Against Destiny (Brazil 951218)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, ddsom, 0, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Euro 960619)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, ddsomr1, ddsom, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Euro 960223)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, ddsomr2, ddsom, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Euro 960209)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, ddsomr3, ddsom, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Euro 960208)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, ddsomu, ddsom, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (USA 960619)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, ddsomur1, ddsom, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (USA 960209)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, ddsomj, ddsom, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Japan 960619)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, ddsomjr1, ddsom, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Japan 960206)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, ddsomjr2, ddsom, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Japan 960223)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, ddsoma, ddsom, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Asia 960619)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, ddsomar1, ddsom, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Asia 960208)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, ddsomh, ddsom, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Hispanic 960223)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, ddsomb, ddsom, cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "Capcom", "Dungeons & Dragons: Shadow over Mystara (Brazil 960223)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, sfa2, 0, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha 2 (Euro 960229)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, sfa2u, sfa2, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha 2 (USA 960430)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, sfa2ur1, sfa2, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha 2 (USA 960306)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, sfz2j, sfa2, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Japan 960430)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, sfz2jr1, sfa2, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Japan 960227)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, sfz2a, sfa2, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Asia 960227)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, sfz2b, sfa2, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Brazil 960531)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, sfz2br1, sfa2, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Brazil 960304)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, sfz2h, sfa2, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Hispanic 960304)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, sfz2n, sfa2, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 2 (Oceania 960229)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, sfz2al, 0, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 2 Alpha (Asia 960826)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, sfz2alj, sfz2al, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 2 Alpha (Japan 960805)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, sfz2alh, sfz2al, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 2 Alpha (Hispanic 960813)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, sfz2alb, sfz2al, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 2 Alpha (Brazil 960813)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, spf2t, 0, cps2, cps2_2p2b, cps2_state, init_cps2, ROT0, "Capcom", "Super Puzzle Fighter II Turbo (Euro 960529)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, spf2tu, spf2t, cps2, cps2_2p2b, cps2_state, init_cps2, ROT0, "Capcom", "Super Puzzle Fighter II Turbo (USA 960620)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, spf2xj, spf2t, cps2, cps2_2p2b, cps2_state, init_cps2, ROT0, "Capcom", "Super Puzzle Fighter II X (Japan 960531)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, spf2ta, spf2t, cps2, cps2_2p2b, cps2_state, init_cps2, ROT0, "Capcom", "Super Puzzle Fighter II Turbo (Asia 960529)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, spf2th, spf2t, cps2, cps2_2p2b, cps2_state, init_cps2, ROT0, "Capcom", "Super Puzzle Fighter II Turbo (Hispanic 960531)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, megaman2, 0, cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "Capcom", "Mega Man 2: The Power Fighters (USA 960708)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, megaman2a, megaman2, cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "Capcom", "Mega Man 2: The Power Fighters (Asia 960708)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, rockman2j, megaman2, cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "Capcom", "Rockman 2: The Power Fighters (Japan 960708)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, megaman2h, megaman2, cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "Capcom", "Mega Man 2: The Power Fighters (Hispanic 960712)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, qndream, 0, cps2, qndream, cps2_state, init_cps2, ROT0, "Capcom", "Quiz Nanairo Dreams: Nijiirochou no Kiseki (Japan 960826)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, xmvsf, 0, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Euro 961004)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, xmvsfr1, xmvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Euro 960910)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, xmvsfu, xmvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (USA 961023)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, xmvsfur1, xmvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (USA 961004)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, xmvsfur2, xmvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (USA 960910)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, xmvsfj, xmvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Japan 961023)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, xmvsfjr1, xmvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Japan 961004)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, xmvsfjr2, xmvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Japan 960910)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, xmvsfjr3, xmvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Japan 960909)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, xmvsfa, xmvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Asia 961023)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, xmvsfar1, xmvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Asia 961004)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, xmvsfar2, xmvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Asia 960919)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, xmvsfar3, xmvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Asia 960910)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, xmvsfh, xmvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Hispanic 961004)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, xmvsfb, xmvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "X-Men Vs. Street Fighter (Brazil 961023)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, batcir, 0, cps2, cps2_4p2b, cps2_state, init_cps2, ROT0, "Capcom", "Battle Circuit (Euro 970319)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, batcira, batcir, cps2, cps2_4p2b, cps2_state, init_cps2, ROT0, "Capcom", "Battle Circuit (Asia 970319)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, batcirj, batcir, cps2, cps2_4p2b, cps2_state, init_cps2, ROT0, "Capcom", "Battle Circuit (Japan 970319)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, vsav, 0, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Vampire Savior: The Lord of Vampire (Euro 970519)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, vsavu, vsav, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Vampire Savior: The Lord of Vampire (USA 970519)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, vsavj, vsav, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Vampire Savior: The Lord of Vampire (Japan 970519)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, vsava, vsav, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Vampire Savior: The Lord of Vampire (Asia 970519)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, vsavh, vsav, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Vampire Savior: The Lord of Vampire (Hispanic 970519)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, mshvsf, 0, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Euro 970625)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, mshvsfu, mshvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (USA 970827)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, mshvsfu1, mshvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (USA 970625)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, mshvsfj, mshvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Japan 970707)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, mshvsfj1, mshvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Japan 970702)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, mshvsfj2, mshvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Japan 970625)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, mshvsfh, mshvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Hispanic 970625)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, mshvsfa, mshvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Asia 970625)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, mshvsfa1, mshvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Asia 970620)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, mshvsfb, mshvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Brazil 970827)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, mshvsfb1, mshvsf, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Super Heroes Vs. Street Fighter (Brazil 970625)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, csclub, 0, cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "Capcom", "Capcom Sports Club (Euro 971017)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, csclub1, csclub, cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "Capcom", "Capcom Sports Club (Euro 970722)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, cscluba, csclub, cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "Capcom", "Capcom Sports Club (Asia 970722)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, csclubj, csclub, cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "Capcom", "Capcom Sports Club (Japan 970722)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, csclubjy, csclub, cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "Capcom", "Capcom Sports Club (Japan 970722, yellow case)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, csclubh, csclub, cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "Capcom", "Capcom Sports Club (Hispanic 970722)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, sgemf, 0, cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "Capcom", "Super Gem Fighter Mini Mix (USA 970904)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, pfghtj, sgemf, cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "Capcom", "Pocket Fighter (Japan 970904)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, sgemfa, sgemf, cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "Capcom", "Super Gem Fighter: Mini Mix (Asia 970904)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, sgemfh, sgemf, cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "Capcom", "Super Gem Fighter: Mini Mix (Hispanic 970904)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, vhunt2, 0, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Vampire Hunter 2: Darkstalkers Revenge (Japan 970929)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, vhunt2r1, vhunt2, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Vampire Hunter 2: Darkstalkers Revenge (Japan 970913)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, vsav2, 0, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Vampire Savior 2: The Lord of Vampire (Japan 970913)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, mvsc, 0, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Euro 980123)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, mvscr1, mvsc, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Euro 980112)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, mvscu, mvsc, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (USA 980123)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, mvscur1, mvsc, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (USA 971222)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, mvscj, mvsc, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Japan 980123)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, mvscjr1, mvsc, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Japan 980112)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, mvscjsing, mvsc, cps2, cps2_2p6b, cps2_state, init_singbrd, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Japan 980123) (Single PCB)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, mvsca, mvsc, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Asia 980123)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, mvscar1, mvsc, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Asia 980112)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, mvsch, mvsc, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Hispanic 980123)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, mvscb, mvsc, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Marvel Vs. Capcom: Clash of Super Heroes (Brazil 980123)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, sfa3, 0, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (Euro 980904)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, sfa3u, sfa3, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (USA 980904)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, sfa3ur1, sfa3, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (USA 980629)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, sfa3us, sfa3, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (USA 980616, SAMPLE Version)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, sfa3h, sfa3, cps2, cps2_2p6bt, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (Hispanic 980904)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, sfa3hr1, sfa3, cps2, cps2_2p6bt, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (Hispanic 980629)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, sfa3b, sfa3, cps2, cps2_2p6bt, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Alpha 3 (Brazil 980629)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, sfz3j, sfa3, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 3 (Japan 980904)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, sfz3jr1, sfa3, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 3 (Japan 980727)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, sfz3jr2, sfa3, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 3 (Japan 980629)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, sfz3a, sfa3, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 3 (Asia 980904)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, sfz3ar1, sfa3, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Street Fighter Zero 3 (Asia 980701)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, jyangoku, 0, cps2, cps2_1p2b, cps2_state, init_cps2, ROT0, "Capcom", "Jyangokushi: Haoh no Saihai (Japan 990527)", MACHINE_SUPPORTS_SAVE ) +GAME( 2004, hsf2, 0, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Hyper Street Fighter II: The Anniversary Edition (USA 040202)", MACHINE_SUPPORTS_SAVE ) +GAME( 2004, hsf2a, hsf2, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Hyper Street Fighter II: The Anniversary Edition (Asia 040202)", MACHINE_SUPPORTS_SAVE ) +GAME( 2004, hsf2j, hsf2, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Hyper Street Fighter II: The Anniversary Edition (Japan 040202)", MACHINE_SUPPORTS_SAVE ) +GAME( 2004, hsf2j1, hsf2, cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "Capcom", "Hyper Street Fighter II: The Anniversary Edition (Japan 031222)", MACHINE_SUPPORTS_SAVE ) /* Games released on CPS-2 hardware by Takumi */ -GAME( 1999, gigawing, 0, cps2, cps2_2p2b, cps_state, init_cps2, ROT0, "Takumi (Capcom license)", "Giga Wing (USA 990222)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, gigawingj, gigawing, cps2, cps2_2p2b, cps_state, init_cps2, ROT0, "Takumi (Capcom license)", "Giga Wing (Japan 990223)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, gigawinga, gigawing, cps2, cps2_2p2b, cps_state, init_cps2, ROT0, "Takumi (Capcom license)", "Giga Wing (Asia 990222)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, gigawingh, gigawing, cps2, cps2_2p2b, cps_state, init_cps2, ROT0, "Takumi (Capcom license)", "Giga Wing (Hispanic 990222)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, gigawingb, gigawing, cps2, cps2_2p2b, cps_state, init_cps2, ROT0, "Takumi (Capcom license)", "Giga Wing (Brazil 990222)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, mmatrix, 0, cps2, cps2_2p1b, cps_state, init_cps2, ROT0, "Takumi (Capcom license)", "Mars Matrix: Hyper Solid Shooting (USA 000412)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, mmatrixj, mmatrix, cps2, cps2_2p1b, cps_state, init_cps2, ROT0, "Takumi (Capcom license)", "Mars Matrix: Hyper Solid Shooting (Japan 000412)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, gigawing, 0, cps2, cps2_2p2b, cps2_state, init_cps2, ROT0, "Takumi (Capcom license)", "Giga Wing (USA 990222)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, gigawingj, gigawing, cps2, cps2_2p2b, cps2_state, init_cps2, ROT0, "Takumi (Capcom license)", "Giga Wing (Japan 990223)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, gigawinga, gigawing, cps2, cps2_2p2b, cps2_state, init_cps2, ROT0, "Takumi (Capcom license)", "Giga Wing (Asia 990222)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, gigawingh, gigawing, cps2, cps2_2p2b, cps2_state, init_cps2, ROT0, "Takumi (Capcom license)", "Giga Wing (Hispanic 990222)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, gigawingb, gigawing, cps2, cps2_2p2b, cps2_state, init_cps2, ROT0, "Takumi (Capcom license)", "Giga Wing (Brazil 990222)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, mmatrix, 0, cps2, cps2_2p1b, cps2_state, init_cps2, ROT0, "Takumi (Capcom license)", "Mars Matrix: Hyper Solid Shooting (USA 000412)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, mmatrixj, mmatrix, cps2, cps2_2p1b, cps2_state, init_cps2, ROT0, "Takumi (Capcom license)", "Mars Matrix: Hyper Solid Shooting (Japan 000412)", MACHINE_SUPPORTS_SAVE ) /* Games released on CPS-2 hardware by Mitchell */ -GAME( 2000, mpang, 0, cps2, cps2_2p1b, cps_state, init_cps2, ROT0, "Mitchell (Capcom license)", "Mighty! Pang (Euro 001010)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, mpangr1, mpang, cps2, cps2_2p1b, cps_state, init_cps2, ROT0, "Mitchell (Capcom license)", "Mighty! Pang (Euro 000925)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, mpangu, mpang, cps2, cps2_2p1b, cps_state, init_cps2, ROT0, "Mitchell (Capcom license)", "Mighty! Pang (USA 001010)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, mpangj, mpang, cps2, cps2_2p1b, cps_state, init_cps2, ROT0, "Mitchell (Capcom license)", "Mighty! Pang (Japan 001011)", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, pzloop2, 0, cps2, pzloop2, cps_state, init_pzloop2, ROT0, "Mitchell (Capcom license)", "Puzz Loop 2 (Euro 010302)", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, pzloop2j, pzloop2, cps2, pzloop2, cps_state, init_pzloop2, ROT0, "Mitchell (Capcom license)", "Puzz Loop 2 (Japan 010226)", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, pzloop2jr1, pzloop2, cps2, pzloop2, cps_state, init_pzloop2, ROT0, "Mitchell (Capcom license)", "Puzz Loop 2 (Japan 010205)", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, choko, 0, cps2, choko, cps_state, init_cps2, ROT0, "Mitchell (Capcom license)", "Janpai Puzzle Choukou (Japan 010820)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, mpang, 0, cps2, cps2_2p1b, cps2_state, init_cps2, ROT0, "Mitchell (Capcom license)", "Mighty! Pang (Euro 001010)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, mpangr1, mpang, cps2, cps2_2p1b, cps2_state, init_cps2, ROT0, "Mitchell (Capcom license)", "Mighty! Pang (Euro 000925)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, mpangu, mpang, cps2, cps2_2p1b, cps2_state, init_cps2, ROT0, "Mitchell (Capcom license)", "Mighty! Pang (USA 001010)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, mpangj, mpang, cps2, cps2_2p1b, cps2_state, init_cps2, ROT0, "Mitchell (Capcom license)", "Mighty! Pang (Japan 001011)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, pzloop2, 0, cps2, pzloop2, cps2_state, init_pzloop2, ROT0, "Mitchell (Capcom license)", "Puzz Loop 2 (Euro 010302)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, pzloop2j, pzloop2, cps2, pzloop2, cps2_state, init_pzloop2, ROT0, "Mitchell (Capcom license)", "Puzz Loop 2 (Japan 010226)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, pzloop2jr1, pzloop2, cps2, pzloop2, cps2_state, init_pzloop2, ROT0, "Mitchell (Capcom license)", "Puzz Loop 2 (Japan 010205)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, choko, 0, cps2, choko, cps2_state, init_cps2, ROT0, "Mitchell (Capcom license)", "Janpai Puzzle Choukou (Japan 010820)", MACHINE_SUPPORTS_SAVE ) /* Games released on CPS-2 hardware by Eighting/Raizing */ -GAME( 2000, dimahoo, 0, cps2, cps2_2p3b, cps_state, init_cps2, ROT270, "Eighting / Raizing (Capcom license)", "Dimahoo (Euro 000121)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, dimahoou, dimahoo, cps2, cps2_2p3b, cps_state, init_cps2, ROT270, "Eighting / Raizing (Capcom license)", "Dimahoo (USA 000121)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, gmahou, dimahoo, cps2, cps2_2p3b, cps_state, init_cps2, ROT270, "Eighting / Raizing (Capcom license)", "Great Mahou Daisakusen (Japan 000121)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, 1944, 0, cps2, cps2_2p2b, cps_state, init_cps2, ROT0, "Eighting / Raizing (Capcom license)", "1944: The Loop Master (USA 000620)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, 1944j, 1944, cps2, cps2_2p2b, cps_state, init_cps2, ROT0, "Eighting / Raizing (Capcom license)", "1944: The Loop Master (Japan 000620)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, dimahoo, 0, cps2, cps2_2p3b, cps2_state, init_cps2, ROT270, "Eighting / Raizing (Capcom license)", "Dimahoo (Euro 000121)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, dimahoou, dimahoo, cps2, cps2_2p3b, cps2_state, init_cps2, ROT270, "Eighting / Raizing (Capcom license)", "Dimahoo (USA 000121)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, gmahou, dimahoo, cps2, cps2_2p3b, cps2_state, init_cps2, ROT270, "Eighting / Raizing (Capcom license)", "Great Mahou Daisakusen (Japan 000121)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, 1944, 0, cps2, cps2_2p2b, cps2_state, init_cps2, ROT0, "Eighting / Raizing (Capcom license)", "1944: The Loop Master (USA 000620)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, 1944j, 1944, cps2, cps2_2p2b, cps2_state, init_cps2, ROT0, "Eighting / Raizing (Capcom license)", "1944: The Loop Master (Japan 000620)", MACHINE_SUPPORTS_SAVE ) /* Games released on CPS-2 hardware by Cave */ -GAME( 2001, progear, 0, cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "Cave (Capcom license)", "Progear (USA 010117)", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, progearj, progear, cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "Cave (Capcom license)", "Progear no Arashi (Japan 010117)", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, progeara, progear, cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "Cave (Capcom license)", "Progear (Asia 010117)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, progear, 0, cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "Cave (Capcom license)", "Progear (USA 010117)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, progearj, progear, cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "Cave (Capcom license)", "Progear no Arashi (Japan 010117)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, progeara, progear, cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "Cave (Capcom license)", "Progear (Asia 010117)", MACHINE_SUPPORTS_SAVE ) /* ------------------------ @@ -11724,48 +11720,48 @@ ROM_START( sfz2jd ) ROM_END -GAME( 1993, ddtodd, ddtod, dead_cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "bootleg", "Dungeons & Dragons: Tower of Doom (Euro 940412 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ecofghtrd, ecofghtr, dead_cps2, ecofghtr, cps_state, init_ecofghtr, ROT0, "bootleg", "Eco Fighters (World 931203 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ssf2ud, ssf2, dead_cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "bootleg", "Super Street Fighter II: The New Challengers (USA 930911 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1993, ssf2tbd, ssf2, dead_cps2, cps2_2p6b, cps_state, init_ssf2tb, ROT0, "bootleg", "Super Street Fighter II: The Tournament Battle (World 931119 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) -GAME( 1994, armwar1d, armwar, dead_cps2, cps2_3p3b, cps_state, init_cps2, ROT0, "bootleg", "Armored Warriors (Euro 941011 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, avspd, avsp, dead_cps2, cps2_3p3b, cps_state, init_cps2, ROT0, "bootleg", "Alien vs. Predator (Euro 940520 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, dstlku1d, dstlk, dead_cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "bootleg", "Darkstalkers: The Night Warriors (USA 940705 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, ringdstd, ringdest, dead_cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "bootleg", "Ring of Destruction: Slammasters II (Euro 940902 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, ssf2tad, ssf2t, dead_cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "bootleg", "Super Street Fighter II Turbo (Asia 940223 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, ssf2xjr1d, ssf2t, dead_cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "bootleg", "Super Street Fighter II X: Grand Master Challenge (Japan 940223 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1994, xmcotar1d, xmcota, dead_cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "bootleg", "X-Men: Children of the Atom (Euro 950105 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, mshud, msh, dead_cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "bootleg", "Marvel Super Heroes (US 951024 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, cybotsud, cybots, dead_cps2, cybots, cps_state, init_cps2, ROT0, "bootleg", "Cyberbots: Fullmetal Madness (USA 950424 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, cybotsjd, cybots, dead_cps2, cybots, cps_state, init_cps2, ROT0, "bootleg", "Cyberbots: Fullmetal Madness (Japan 950424) (decrypted bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, nwarrud, nwarr, dead_cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "bootleg", "Night Warriors: Darkstalkers' Revenge (USA 950406 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1995, sfad, sfa, dead_cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "bootleg", "Street Fighter Alpha: Warriors' Dreams (Euro 950727 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, 19xxd, 19xx, dead_cps2, cps2_2p2b, cps_state, init_cps2, ROT270, "bootleg", "19XX: The War Against Destiny (USA 951207 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, ddsomud, ddsom, dead_cps2, cps2_4p4b, cps_state, init_cps2, ROT0, "bootleg", "Dungeons & Dragons: Shadow over Mystara (USA 960619 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, gigaman2, megaman2, gigaman2, cps2_2p3b, cps_state, init_gigaman2, ROT0, "bootleg", "Giga Man 2: The Power Fighters (bootleg of Mega Man 2: The Power Fighters)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // different layer offsets and sound system -GAME( 1996, megamn2d, megaman2, dead_cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "bootleg", "Mega Man 2: The Power Fighters (USA 960708 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, sfz2ad, sfa2, dead_cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "bootleg", "Street Fighter Zero 2 (Asia 960227 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, sfz2jd, sfa2, dead_cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "bootleg", "Street Fighter Zero 2 (Japan 960227 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, spf2td, spf2t, dead_cps2, cps2_2p2b, cps_state, init_cps2, ROT0, "bootleg", "Super Puzzle Fighter II Turbo (USA 960620 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, spf2xjd, spf2t, dead_cps2, cps2_2p2b, cps_state, init_cps2, ROT0, "bootleg", "Super Puzzle Fighter II X (Japan 960531 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, sfz2ald, sfz2al, dead_cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "bootleg", "Street Fighter Zero 2 Alpha (Asia 960826 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1996, xmvsfu1d, xmvsf, dead_cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "bootleg", "X-Men Vs. Street Fighter (USA 961004 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, batcird, batcir, dead_cps2, cps2_4p2b, cps_state, init_cps2, ROT0, "bootleg", "Battle Circuit (Euro 970319 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, csclub1d, csclub, dead_cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "bootleg", "Capcom Sports Club (Euro 970722 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, mshvsfu1d, mshvsf, dead_cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "bootleg", "Marvel Super Heroes Vs. Street Fighter (USA 970625 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, sgemfd, sgemf, dead_cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "bootleg", "Super Gem Fighter Mini Mix (USA 970904 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, vsavd, vsav, dead_cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "bootleg", "Vampire Savior: The Lord of Vampire (Euro 970519 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, vhunt2d, vhunt2, dead_cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "bootleg", "Vampire Hunter 2: Darkstalkers Revenge (Japan 970913 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1997, vsav2d, vsav2, dead_cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "bootleg", "Vampire Savior 2: The Lord of Vampire (Japan 970913 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, mvscud, mvsc, dead_cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "bootleg", "Marvel Vs. Capcom: Clash of Super Heroes (USA 980123 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, sfa3ud, sfa3, dead_cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "bootleg", "Street Fighter Alpha 3 (USA 980904 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1998, sfz3jr2d, sfa3, dead_cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "bootleg", "Street Fighter Zero 3 (Japan 980629 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, gigawingd, gigawing, dead_cps2, cps2_2p2b, cps_state, init_cps2, ROT0, "bootleg", "Giga Wing (USA 990222 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 1999, gigawingjd, gigawing, dead_cps2, cps2_2p2b, cps_state, init_cps2, ROT0, "bootleg", "Giga Wing (Japan 990223 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, 1944d, 1944, dead_cps2, cps2_2p2b, cps_state, init_cps2, ROT0, "bootleg", "1944: The Loop Master (USA 000620 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, dimahoud, dimahoo, dead_cps2, cps2_2p3b, cps_state, init_cps2, ROT270, "bootleg", "Dimahoo (USA 000121 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 2000, mmatrixd, mmatrix, dead_cps2, cps2_2p1b, cps_state, init_cps2, ROT0, "bootleg", "Mars Matrix: Hyper Solid Shooting (USA 000412 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, progearud, progear, dead_cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "bootleg", "Progear (USA 010117 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, progearjd, progear, dead_cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "bootleg", "Progear no Arashi (Japan 010117 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) -GAME( 2001, progearjbl, progear, dead_cps2, cps2_2p3b, cps_state, init_cps2, ROT0, "bootleg", "Progear no Arashi (Japan 010117) (decrypted bootleg)", MACHINE_SUPPORTS_SAVE ) // not an actual phoenix set, but works as one -GAME( 2004, hsf2d, hsf2, dead_cps2, cps2_2p6b, cps_state, init_cps2, ROT0, "bootleg", "Hyper Street Fighter II: The Anniversary Edition (Asia 040202 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ddtodd, ddtod, dead_cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "bootleg", "Dungeons & Dragons: Tower of Doom (Euro 940412 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ecofghtrd, ecofghtr, dead_cps2, ecofghtr, cps2_state, init_ecofghtr, ROT0, "bootleg", "Eco Fighters (World 931203 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ssf2ud, ssf2, dead_cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "bootleg", "Super Street Fighter II: The New Challengers (USA 930911 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1993, ssf2tbd, ssf2, dead_cps2, cps2_2p6b, cps2_state, init_ssf2tb, ROT0, "bootleg", "Super Street Fighter II: The Tournament Battle (World 931119 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE | MACHINE_NODEVICE_LAN ) +GAME( 1994, armwar1d, armwar, dead_cps2, cps2_3p3b, cps2_state, init_cps2, ROT0, "bootleg", "Armored Warriors (Euro 941011 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, avspd, avsp, dead_cps2, cps2_3p3b, cps2_state, init_cps2, ROT0, "bootleg", "Alien vs. Predator (Euro 940520 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, dstlku1d, dstlk, dead_cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "bootleg", "Darkstalkers: The Night Warriors (USA 940705 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, ringdstd, ringdest, dead_cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "bootleg", "Ring of Destruction: Slammasters II (Euro 940902 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, ssf2tad, ssf2t, dead_cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "bootleg", "Super Street Fighter II Turbo (Asia 940223 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, ssf2xjr1d, ssf2t, dead_cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "bootleg", "Super Street Fighter II X: Grand Master Challenge (Japan 940223 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1994, xmcotar1d, xmcota, dead_cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "bootleg", "X-Men: Children of the Atom (Euro 950105 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, mshud, msh, dead_cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "bootleg", "Marvel Super Heroes (US 951024 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, cybotsud, cybots, dead_cps2, cybots, cps2_state, init_cps2, ROT0, "bootleg", "Cyberbots: Fullmetal Madness (USA 950424 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, cybotsjd, cybots, dead_cps2, cybots, cps2_state, init_cps2, ROT0, "bootleg", "Cyberbots: Fullmetal Madness (Japan 950424) (decrypted bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, nwarrud, nwarr, dead_cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "bootleg", "Night Warriors: Darkstalkers' Revenge (USA 950406 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1995, sfad, sfa, dead_cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "bootleg", "Street Fighter Alpha: Warriors' Dreams (Euro 950727 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, 19xxd, 19xx, dead_cps2, cps2_2p2b, cps2_state, init_cps2, ROT270, "bootleg", "19XX: The War Against Destiny (USA 951207 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, ddsomud, ddsom, dead_cps2, cps2_4p4b, cps2_state, init_cps2, ROT0, "bootleg", "Dungeons & Dragons: Shadow over Mystara (USA 960619 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, gigaman2, megaman2, gigaman2, cps2_2p3b, cps2_state, init_gigaman2, ROT0, "bootleg", "Giga Man 2: The Power Fighters (bootleg of Mega Man 2: The Power Fighters)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE ) // different layer offsets and sound system +GAME( 1996, megamn2d, megaman2, dead_cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "bootleg", "Mega Man 2: The Power Fighters (USA 960708 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, sfz2ad, sfa2, dead_cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "bootleg", "Street Fighter Zero 2 (Asia 960227 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, sfz2jd, sfa2, dead_cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "bootleg", "Street Fighter Zero 2 (Japan 960227 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, spf2td, spf2t, dead_cps2, cps2_2p2b, cps2_state, init_cps2, ROT0, "bootleg", "Super Puzzle Fighter II Turbo (USA 960620 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, spf2xjd, spf2t, dead_cps2, cps2_2p2b, cps2_state, init_cps2, ROT0, "bootleg", "Super Puzzle Fighter II X (Japan 960531 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, sfz2ald, sfz2al, dead_cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "bootleg", "Street Fighter Zero 2 Alpha (Asia 960826 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1996, xmvsfu1d, xmvsf, dead_cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "bootleg", "X-Men Vs. Street Fighter (USA 961004 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, batcird, batcir, dead_cps2, cps2_4p2b, cps2_state, init_cps2, ROT0, "bootleg", "Battle Circuit (Euro 970319 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, csclub1d, csclub, dead_cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "bootleg", "Capcom Sports Club (Euro 970722 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, mshvsfu1d, mshvsf, dead_cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "bootleg", "Marvel Super Heroes Vs. Street Fighter (USA 970625 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, sgemfd, sgemf, dead_cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "bootleg", "Super Gem Fighter Mini Mix (USA 970904 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, vsavd, vsav, dead_cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "bootleg", "Vampire Savior: The Lord of Vampire (Euro 970519 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, vhunt2d, vhunt2, dead_cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "bootleg", "Vampire Hunter 2: Darkstalkers Revenge (Japan 970913 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1997, vsav2d, vsav2, dead_cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "bootleg", "Vampire Savior 2: The Lord of Vampire (Japan 970913 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, mvscud, mvsc, dead_cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "bootleg", "Marvel Vs. Capcom: Clash of Super Heroes (USA 980123 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, sfa3ud, sfa3, dead_cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "bootleg", "Street Fighter Alpha 3 (USA 980904 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1998, sfz3jr2d, sfa3, dead_cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "bootleg", "Street Fighter Zero 3 (Japan 980629 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, gigawingd, gigawing, dead_cps2, cps2_2p2b, cps2_state, init_cps2, ROT0, "bootleg", "Giga Wing (USA 990222 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1999, gigawingjd, gigawing, dead_cps2, cps2_2p2b, cps2_state, init_cps2, ROT0, "bootleg", "Giga Wing (Japan 990223 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, 1944d, 1944, dead_cps2, cps2_2p2b, cps2_state, init_cps2, ROT0, "bootleg", "1944: The Loop Master (USA 000620 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, dimahoud, dimahoo, dead_cps2, cps2_2p3b, cps2_state, init_cps2, ROT270, "bootleg", "Dimahoo (USA 000121 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 2000, mmatrixd, mmatrix, dead_cps2, cps2_2p1b, cps2_state, init_cps2, ROT0, "bootleg", "Mars Matrix: Hyper Solid Shooting (USA 000412 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, progearud, progear, dead_cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "bootleg", "Progear (USA 010117 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, progearjd, progear, dead_cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "bootleg", "Progear no Arashi (Japan 010117 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 2001, progearjbl, progear, dead_cps2, cps2_2p3b, cps2_state, init_cps2, ROT0, "bootleg", "Progear no Arashi (Japan 010117) (decrypted bootleg)", MACHINE_SUPPORTS_SAVE ) // not an actual phoenix set, but works as one +GAME( 2004, hsf2d, hsf2, dead_cps2, cps2_2p6b, cps2_state, init_cps2, ROT0, "bootleg", "Hyper Street Fighter II: The Anniversary Edition (Asia 040202 Phoenix Edition) (bootleg)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/fcrash.cpp b/src/mame/drivers/fcrash.cpp index 945246f6eb1..915942b4a80 100644 --- a/src/mame/drivers/fcrash.cpp +++ b/src/mame/drivers/fcrash.cpp @@ -1642,8 +1642,6 @@ MACHINE_CONFIG_START(cps_state::fcrash) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1) MCFG_PALETTE_ADD("palette", 4096) - MCFG_VIDEO_START_OVERRIDE(cps_state,cps1) - // sound hardware SPEAKER(config, "mono").front_center(); @@ -1707,8 +1705,6 @@ MACHINE_CONFIG_START(cps_state::kodb) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1) MCFG_PALETTE_ADD("palette", 0xc00) - MCFG_VIDEO_START_OVERRIDE(cps_state,cps1) - /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -1750,8 +1746,6 @@ MACHINE_CONFIG_START(cps_state::sf2mdt) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1) MCFG_PALETTE_ADD("palette", 4096) - MCFG_VIDEO_START_OVERRIDE(cps_state,cps1) - /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -1805,8 +1799,6 @@ MACHINE_CONFIG_START(cps_state::knightsb) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1) MCFG_PALETTE_ADD("palette", 0xc00) - MCFG_VIDEO_START_OVERRIDE(cps_state,cps1) - /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -2190,8 +2182,6 @@ MACHINE_CONFIG_START(cps_state::dinopic) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1) MCFG_PALETTE_ADD("palette", 0xc00) - MCFG_VIDEO_START_OVERRIDE(cps_state,cps1) - /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -2346,7 +2336,6 @@ MACHINE_CONFIG_START(cps_state::sgyxz) MCFG_SCREEN_PALETTE("palette") MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1) MCFG_PALETTE_ADD("palette", 0xc00) - MCFG_VIDEO_START_OVERRIDE(cps_state,cps1) MCFG_EEPROM_SERIAL_93C46_8BIT_ADD("eeprom") @@ -2475,8 +2464,6 @@ MACHINE_CONFIG_START(cps_state::punipic) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1) MCFG_PALETTE_ADD("palette", 0xc00) - MCFG_VIDEO_START_OVERRIDE(cps_state,cps1) - /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -2665,7 +2652,6 @@ MACHINE_CONFIG_START(cps_state::sf2m1) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1) MCFG_PALETTE_ADD("palette", 0xc00) - MCFG_VIDEO_START_OVERRIDE(cps_state,cps1) /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -3048,8 +3034,6 @@ MACHINE_CONFIG_START(cps_state::slampic) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1) MCFG_PALETTE_ADD("palette", 0xc00) - MCFG_VIDEO_START_OVERRIDE(cps_state,cps1) - /* sound hardware */ SPEAKER(config, "mono").front_center(); @@ -3149,8 +3133,6 @@ MACHINE_CONFIG_START(cps_state::varthb) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_cps1) MCFG_PALETTE_ADD("palette", 0xc00) - MCFG_VIDEO_START_OVERRIDE(cps_state,cps1) - /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/includes/cps1.h b/src/mame/includes/cps1.h index fc50fcaa563..77bf9a70af8 100644 --- a/src/mame/includes/cps1.h +++ b/src/mame/includes/cps1.h @@ -100,41 +100,36 @@ struct CPS1config class cps_state : public driver_device { public: - cps_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - m_mainram(*this, "mainram"), - m_gfxram(*this, "gfxram"), - m_cps_a_regs(*this, "cps_a_regs"), - m_cps_b_regs(*this, "cps_b_regs"), - m_qsound_sharedram1(*this, "qsound_ram1"), - m_qsound_sharedram2(*this, "qsound_ram2"), - m_objram1(*this, "objram1"), - m_objram2(*this, "objram2"), - m_output(*this, "output"), - m_io_in0(*this, "IN0"), - m_io_in1(*this, "IN1"), - m_cps2_dial_type(0), - m_ecofghtr_dial_direction0(0), - m_ecofghtr_dial_direction1(0), - m_ecofghtr_dial_last0(0), - m_ecofghtr_dial_last1(0), - m_maincpu(*this, "maincpu"), - m_audiocpu(*this, "audiocpu"), - m_oki(*this, "oki"), - m_m48t35(*this,"m48t35"), - m_msm_1(*this, "msm1"), - m_msm_2(*this, "msm2"), - m_gfxdecode(*this, "gfxdecode"), - m_screen(*this, "screen"), - m_palette(*this, "palette"), - m_soundlatch(*this, "soundlatch"), - m_soundlatch2(*this, "soundlatch2"), - m_decrypted_opcodes(*this, "decrypted_opcodes"), - m_region_key(*this, "key"), - m_region_stars(*this, "stars"), - m_led_cboard(*this, "led_cboard%u", 0U) + cps_state(const machine_config &mconfig, device_type type, const char *tag) + : cps_state(mconfig, type, tag, 1) { } +protected: + cps_state(const machine_config &mconfig, device_type type, const char *tag, int version) + : driver_device(mconfig, type, tag) + , m_mainram(*this, "mainram") + , m_gfxram(*this, "gfxram") + , m_cps_a_regs(*this, "cps_a_regs") + , m_cps_b_regs(*this, "cps_b_regs") + , m_qsound_sharedram1(*this, "qsound_ram1") + , m_qsound_sharedram2(*this, "qsound_ram2") + , m_cps_version(version) + , m_maincpu(*this, "maincpu") + , m_audiocpu(*this, "audiocpu") + , m_oki(*this, "oki") + , m_m48t35(*this,"m48t35") + , m_msm_1(*this, "msm1") + , m_msm_2(*this, "msm2") + , m_gfxdecode(*this, "gfxdecode") + , m_screen(*this, "screen") + , m_palette(*this, "palette") + , m_soundlatch(*this, "soundlatch") + , m_soundlatch2(*this, "soundlatch2") + , m_region_stars(*this, "stars") + , m_led_cboard(*this, "led_cboard%u", 0U) + { } + +public: DECLARE_READ16_MEMBER(cps1_hack_dsw_r); DECLARE_READ16_MEMBER(cps1_in1_r); DECLARE_READ16_MEMBER(cps1_in2_r); @@ -162,11 +157,6 @@ public: DECLARE_READ16_MEMBER(cps1_cps_b_r); DECLARE_WRITE16_MEMBER(cps1_cps_b_w); DECLARE_WRITE16_MEMBER(cps1_gfxram_w); - DECLARE_WRITE16_MEMBER(cps2_objram_bank_w); - DECLARE_READ16_MEMBER(cps2_objram1_r); - DECLARE_READ16_MEMBER(cps2_objram2_r); - DECLARE_WRITE16_MEMBER(cps2_objram1_w); - DECLARE_WRITE16_MEMBER(cps2_objram2_w); DECLARE_WRITE8_MEMBER(cps1_oki_pin7_w); DECLARE_WRITE16_MEMBER(sf2m1_layer_w); DECLARE_WRITE16_MEMBER(sf2m3_layer_w); @@ -186,15 +176,6 @@ public: void init_punisher(); void init_wof(); void init_ganbare(); - void init_cps2_video(); - void init_cps2(); - void init_cps2nc(); - void init_cps2crypt(); - void init_ssf2tb(); - void init_pzloop2(); - void init_singbrd(); - void init_gigaman2(); - void init_ecofghtr(); void init_sf2dongb(); void init_sf2ceblp(); TILEMAP_MAPPER_MEMBER(tilemap0_scan); @@ -204,22 +185,18 @@ public: TILE_GET_INFO_MEMBER(get_tile1_info); TILE_GET_INFO_MEMBER(get_tile2_info); DECLARE_MACHINE_START(cps1); - DECLARE_VIDEO_START(cps1); + virtual void video_start() override; DECLARE_MACHINE_START(common); - DECLARE_MACHINE_START(cps2); - DECLARE_VIDEO_START(cps2); DECLARE_MACHINE_START(qsound); DECLARE_MACHINE_START(ganbare); DECLARE_MACHINE_RESET(cps); - DECLARE_VIDEO_START(cps); DECLARE_MACHINE_START(sf2m1); + virtual void render_layers(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_cps1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); DECLARE_WRITE_LINE_MEMBER(screen_vblank_cps1); INTERRUPT_GEN_MEMBER(cps1_interrupt); TIMER_DEVICE_CALLBACK_MEMBER(ganbare_interrupt); IRQ_CALLBACK_MEMBER(cps1_int_ack); - TIMER_DEVICE_CALLBACK_MEMBER(cps2_interrupt); - TIMER_CALLBACK_MEMBER(cps2_update_digital_volume); void kabuki_setup(void (*decode)(uint8_t *src, uint8_t *dst)); @@ -274,38 +251,19 @@ public: /* cps video */ inline uint16_t *cps1_base( int offset, int boundary ); void cps1_get_video_base(); - void unshuffle(uint64_t *buf, int len); - void cps2_gfx_decode(); int gfxrom_bank_mapper(int type, int code); void cps1_update_transmasks(); void cps1_build_palette(const uint16_t* const palette_base); - void cps1_find_last_sprite(); + virtual void find_last_sprite(); void cps1_render_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void cps2_find_last_sprite(); - void cps2_render_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int *primasks); void cps1_render_stars(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void cps1_render_layer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer, int primask); void cps1_render_high_layer(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int layer); - void cps2_set_sprite_priorities(); - void cps2_objram_latch(); - uint16_t *cps2_objbase(); /* cps2 driver */ - void init_digital_volume(); - DECLARE_READ16_MEMBER(gigaman2_dummyqsound_r); - DECLARE_WRITE16_MEMBER(gigaman2_dummyqsound_w); - void gigaman2_gfx_reorder(); - DECLARE_WRITE16_MEMBER(cps2_eeprom_port_w); - DECLARE_READ16_MEMBER(cps2_qsound_volume_r); - DECLARE_READ16_MEMBER(kludge_r); - DECLARE_READ16_MEMBER(joy_or_paddle_r); - DECLARE_READ16_MEMBER(joy_or_paddle_ecofghtr_r); DECLARE_WRITE_LINE_MEMBER(m5205_int1); DECLARE_WRITE_LINE_MEMBER(m5205_int2); - void cps2(machine_config &config); - void gigaman2(machine_config &config); - void dead_cps2(machine_config &config); void cawingbl(machine_config &config); void sf2mdt(machine_config &config); void sf2m1(machine_config &config); @@ -328,9 +286,6 @@ public: void wofhfh(machine_config &config); void cps1_10MHz(machine_config &config); void pang3(machine_config &config); - void cps2_map(address_map &map); - void dead_cps2_map(address_map &map); - void decrypted_opcodes_map(address_map &map); void dinopic_map(address_map &map); void fcrash_map(address_map &map); void forgottn_map(address_map &map); @@ -372,16 +327,8 @@ protected: optional_shared_ptr<uint8_t> m_qsound_sharedram1; optional_shared_ptr<uint8_t> m_qsound_sharedram2; std::unique_ptr<uint8_t[]> m_decrypt_kabuki; - // cps2 - optional_shared_ptr<uint16_t> m_objram1; - optional_shared_ptr<uint16_t> m_objram2; - optional_shared_ptr<uint16_t> m_output; - optional_ioport m_io_in0; - optional_ioport m_io_in1; - std::unique_ptr<uint16_t[]> m_cps2_buffered_obj; // game-specific - std::unique_ptr<uint16_t[]> m_gigaman2_dummyqsound_ram; uint16_t sf2ceblp_prot; /* video-related */ @@ -403,21 +350,6 @@ protected: int m_stars2x; int m_stars2y; int m_last_sprite_offset; /* Offset of the last sprite */ - int m_cps2_last_sprite_offset; /* Offset of the last sprite */ - int m_pri_ctrl; /* Sprite layer priorities */ - int m_objram_bank; - - /* misc */ - int m_readpaddle; // pzloop2 - int m_cps2networkpresent; - int m_cps2digitalvolumelevel; - int m_cps2disabledigitalvolume; - emu_timer *m_digital_volume_timer; - int m_cps2_dial_type; - int m_ecofghtr_dial_direction0; - int m_ecofghtr_dial_direction1; - int m_ecofghtr_dial_last0; - int m_ecofghtr_dial_last1; /* fcrash sound hw */ @@ -462,12 +394,111 @@ protected: required_device<palette_device> m_palette; optional_device<generic_latch_8_device> m_soundlatch; optional_device<generic_latch_8_device> m_soundlatch2; - optional_shared_ptr<uint16_t> m_decrypted_opcodes; - optional_memory_region m_region_key; optional_memory_region m_region_stars; output_finder<3> m_led_cboard; }; +class cps2_state : public cps_state +{ +public: + cps2_state(const machine_config &mconfig, device_type type, const char *tag) + : cps_state(mconfig, type, tag, 2) + , m_decrypted_opcodes(*this, "decrypted_opcodes") + , m_region_key(*this, "key") + , m_qsound(*this, "qsound") + , m_objram1(*this, "objram1") + , m_objram2(*this, "objram2") + , m_output(*this, "output") + , m_io_in0(*this, "IN0") + , m_io_in1(*this, "IN1") + , m_cps2_dial_type(0) + , m_ecofghtr_dial_direction0(0) + , m_ecofghtr_dial_direction1(0) + , m_ecofghtr_dial_last0(0) + , m_ecofghtr_dial_last1(0) + { } + + void cps2(machine_config &config); + void gigaman2(machine_config &config); + void dead_cps2(machine_config &config); + void init_cps2_video(); + void init_cps2(); + void init_cps2nc(); + void init_cps2crypt(); + void init_gigaman2(); + void init_ssf2tb(); + void init_pzloop2(); + void init_singbrd(); + void init_ecofghtr(); + +private: + void init_digital_volume(); + DECLARE_READ16_MEMBER(gigaman2_dummyqsound_r); + DECLARE_WRITE16_MEMBER(gigaman2_dummyqsound_w); + void gigaman2_gfx_reorder(); + DECLARE_WRITE16_MEMBER(cps2_eeprom_port_w); + DECLARE_READ16_MEMBER(cps2_qsound_volume_r); + DECLARE_READ16_MEMBER(kludge_r); + DECLARE_READ16_MEMBER(joy_or_paddle_r); + DECLARE_READ16_MEMBER(joy_or_paddle_ecofghtr_r); + TIMER_DEVICE_CALLBACK_MEMBER(cps2_interrupt); + TIMER_CALLBACK_MEMBER(cps2_update_digital_volume); + + DECLARE_WRITE16_MEMBER(cps2_objram_bank_w); + DECLARE_READ16_MEMBER(cps2_objram1_r); + DECLARE_READ16_MEMBER(cps2_objram2_r); + DECLARE_WRITE16_MEMBER(cps2_objram1_w); + DECLARE_WRITE16_MEMBER(cps2_objram2_w); + + void unshuffle(uint64_t *buf, int len); + void cps2_gfx_decode(); + virtual void find_last_sprite() override; + void cps2_render_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int *primasks); + void cps2_set_sprite_priorities(); + void cps2_objram_latch(); + uint16_t *cps2_objbase(); + virtual void render_layers(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) override; + + DECLARE_MACHINE_START(cps2); + virtual void video_start() override; + + void cps2_map(address_map &map); + void dead_cps2_map(address_map &map); + void decrypted_opcodes_map(address_map &map); + + optional_shared_ptr<uint16_t> m_decrypted_opcodes; + optional_memory_region m_region_key; + + optional_device<qsound_device> m_qsound; + + required_shared_ptr<uint16_t> m_objram1; + required_shared_ptr<uint16_t> m_objram2; + required_shared_ptr<uint16_t> m_output; + + optional_ioport m_io_in0; + optional_ioport m_io_in1; + + std::unique_ptr<uint16_t[]> m_cps2_buffered_obj; + std::unique_ptr<uint16_t[]> m_gigaman2_dummyqsound_ram; + + /* video-related */ + int m_cps2_last_sprite_offset; /* Offset of the last sprite */ + int m_pri_ctrl; /* Sprite layer priorities */ + int m_objram_bank; + + /* misc */ + int m_readpaddle; // pzloop2 + int m_cps2networkpresent; + int m_cps2digitalvolumelevel; + int m_cps2disabledigitalvolume; + emu_timer *m_digital_volume_timer; + int m_cps2_dial_type; + int m_ecofghtr_dial_direction0; + int m_ecofghtr_dial_direction1; + int m_ecofghtr_dial_last0; + int m_ecofghtr_dial_last1; +}; + /*----------- defined in drivers/cps1.c -----------*/ extern gfx_decode_entry const gfx_cps1[]; diff --git a/src/mame/machine/cps2crypt.cpp b/src/mame/machine/cps2crypt.cpp index 0643ea4c4f7..287dc2e6e33 100644 --- a/src/mame/machine/cps2crypt.cpp +++ b/src/mame/machine/cps2crypt.cpp @@ -741,7 +741,7 @@ struct game_keys -void cps_state::init_cps2crypt() +void cps2_state::init_cps2crypt() { if (m_region_key) { diff --git a/src/mame/video/cps1.cpp b/src/mame/video/cps1.cpp index d623581d9a9..8cec2c8ee30 100644 --- a/src/mame/video/cps1.cpp +++ b/src/mame/video/cps1.cpp @@ -1887,7 +1887,7 @@ WRITE16_MEMBER(cps_state::cps1_cps_b_w) } -void cps_state::unshuffle( uint64_t *buf, int len ) +void cps2_state::unshuffle( uint64_t *buf, int len ) { int i; uint64_t t; @@ -1911,7 +1911,7 @@ void cps_state::unshuffle( uint64_t *buf, int len ) } -void cps_state::cps2_gfx_decode() +void cps2_state::cps2_gfx_decode() { const int banksize = 0x200000; int size = memregion("gfx")->bytes(); @@ -1928,13 +1928,11 @@ void cps_state::init_cps1() m_scanline2 = 0; m_scancalls = 0; m_last_sprite_offset = 0; - m_pri_ctrl = 0; - m_objram_bank = 0; } -void cps_state::init_cps2_video() +void cps2_state::init_cps2_video() { cps2_gfx_decode(); @@ -2243,7 +2241,7 @@ void cps_state::cps1_update_transmasks() } } -VIDEO_START_MEMBER(cps_state,cps) +void cps_state::video_start() { int i; @@ -2274,20 +2272,11 @@ VIDEO_START_MEMBER(cps_state,cps) m_buffered_obj = make_unique_clear<uint16_t[]>(m_obj_size / 2); - if (m_cps_version == 2) - m_cps2_buffered_obj = make_unique_clear<uint16_t[]>(m_cps2_obj_size / 2); - /* clear RAM regions */ memset(m_gfxram, 0, m_gfxram.bytes()); /* Clear GFX RAM */ memset(m_cps_a_regs, 0, 0x40); /* Clear CPS-A registers */ memset(m_cps_b_regs, 0, 0x40); /* Clear CPS-B registers */ - if (m_cps_version == 2) - { - memset(m_objram1, 0, m_cps2_obj_size); - memset(m_objram2, 0, m_cps2_obj_size); - } - /* Put in some defaults */ m_cps_a_regs[CPS1_OBJ_BASE] = 0x9200; m_cps_a_regs[CPS1_SCROLL1_BASE] = 0x9000; @@ -2327,29 +2316,25 @@ VIDEO_START_MEMBER(cps_state,cps) save_item(NAME(m_stars_enabled)); #endif save_item(NAME(m_last_sprite_offset)); - save_item(NAME(m_pri_ctrl)); - save_item(NAME(m_objram_bank)); save_pointer(NAME(m_buffered_obj.get()), m_obj_size / 2); - if (m_cps_version == 2) - { - save_item(NAME(m_cps2_last_sprite_offset)); - save_pointer(NAME(m_cps2_buffered_obj.get()), m_cps2_obj_size / 2); - } machine().save().register_postload(save_prepost_delegate(FUNC(cps_state::cps1_get_video_base), this)); } -VIDEO_START_MEMBER(cps_state,cps1) +void cps2_state::video_start() { - m_cps_version = 1; - VIDEO_START_CALL_MEMBER(cps); -} + cps_state::video_start(); -VIDEO_START_MEMBER(cps_state,cps2) -{ - m_cps_version = 2; - VIDEO_START_CALL_MEMBER(cps); + m_cps2_buffered_obj = make_unique_clear<uint16_t[]>(m_cps2_obj_size / 2); + + memset(m_objram1, 0, m_cps2_obj_size); + memset(m_objram2, 0, m_cps2_obj_size); + + save_item(NAME(m_cps2_last_sprite_offset)); + save_pointer(NAME(m_cps2_buffered_obj.get()), m_cps2_obj_size / 2); + save_item(NAME(m_pri_ctrl)); + save_item(NAME(m_objram_bank)); } /*************************************************************************** @@ -2437,7 +2422,7 @@ void cps_state::cps1_build_palette( const uint16_t* const palette_base ) ***************************************************************************/ -void cps_state::cps1_find_last_sprite() /* Find the offset of last sprite */ +void cps_state::find_last_sprite() /* Find the offset of last sprite */ { int offset = 0; /* Locate the end of table marker */ @@ -2628,13 +2613,13 @@ void cps_state::cps1_render_sprites( screen_device &screen, bitmap_ind16 &bitmap -WRITE16_MEMBER(cps_state::cps2_objram_bank_w) +WRITE16_MEMBER(cps2_state::cps2_objram_bank_w) { if (ACCESSING_BITS_0_7) m_objram_bank = data & 1; } -READ16_MEMBER(cps_state::cps2_objram1_r) +READ16_MEMBER(cps2_state::cps2_objram1_r) { if (m_objram_bank & 1) return m_objram2[offset]; @@ -2642,7 +2627,7 @@ READ16_MEMBER(cps_state::cps2_objram1_r) return m_objram1[offset]; } -READ16_MEMBER(cps_state::cps2_objram2_r) +READ16_MEMBER(cps2_state::cps2_objram2_r) { if (m_objram_bank & 1) return m_objram1[offset]; @@ -2650,7 +2635,7 @@ READ16_MEMBER(cps_state::cps2_objram2_r) return m_objram2[offset]; } -WRITE16_MEMBER(cps_state::cps2_objram1_w) +WRITE16_MEMBER(cps2_state::cps2_objram1_w) { if (m_objram_bank & 1) COMBINE_DATA(&m_objram2[offset]); @@ -2658,7 +2643,7 @@ WRITE16_MEMBER(cps_state::cps2_objram1_w) COMBINE_DATA(&m_objram1[offset]); } -WRITE16_MEMBER(cps_state::cps2_objram2_w) +WRITE16_MEMBER(cps2_state::cps2_objram2_w) { if (m_objram_bank & 1) COMBINE_DATA(&m_objram1[offset]); @@ -2666,7 +2651,7 @@ WRITE16_MEMBER(cps_state::cps2_objram2_w) COMBINE_DATA(&m_objram2[offset]); } -uint16_t *cps_state::cps2_objbase() +uint16_t *cps2_state::cps2_objbase() { int baseptr; baseptr = 0x7000; @@ -2683,8 +2668,10 @@ uint16_t *cps_state::cps2_objbase() } -void cps_state::cps2_find_last_sprite() /* Find the offset of last sprite */ +void cps2_state::find_last_sprite() /* Find the offset of last sprite */ { + cps_state::find_last_sprite(); + int offset = 0; uint16_t *base = m_cps2_buffered_obj.get(); @@ -2704,7 +2691,7 @@ void cps_state::cps2_find_last_sprite() /* Find the offset of last sprite */ m_cps2_last_sprite_offset = m_cps2_obj_size / 2 - 4; } -void cps_state::cps2_render_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int *primasks ) +void cps2_state::cps2_render_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect, int *primasks ) { #define DRAWSPRITE(CODE,COLOR,FLIPX,FLIPY,SX,SY) \ { \ @@ -2954,23 +2941,110 @@ void cps_state::cps1_render_high_layer( screen_device &screen, bitmap_ind16 &bit ***************************************************************************/ +void cps_state::render_layers(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + /* Draw layers (0 = sprites, 1-3 = tilemaps) */ + int layercontrol = m_cps_b_regs[m_game_config->layer_control / 2]; + int l0 = (layercontrol >> 0x06) & 03; + int l1 = (layercontrol >> 0x08) & 03; + int l2 = (layercontrol >> 0x0a) & 03; + int l3 = (layercontrol >> 0x0c) & 03; + screen.priority().fill(0, cliprect); + + if (BIT(m_game_config->bootleg_kludge, 7)) + cps1_build_palette(cps1_base(CPS1_PALETTE_BASE, m_palette_align)); + + cps1_render_layer(screen, bitmap, cliprect, l0, 0); + + if (l1 == 0) + cps1_render_high_layer(screen, bitmap, cliprect, l0); /* prepare mask for sprites */ + + cps1_render_layer(screen, bitmap, cliprect, l1, 0); + + if (l2 == 0) + cps1_render_high_layer(screen, bitmap, cliprect, l1); /* prepare mask for sprites */ + + cps1_render_layer(screen, bitmap, cliprect, l2, 0); + + if (l3 == 0) + cps1_render_high_layer(screen, bitmap, cliprect, l2); /* prepare mask for sprites */ + + cps1_render_layer(screen, bitmap, cliprect, l3, 0); +} + +void cps2_state::render_layers(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + /* Draw layers (0 = sprites, 1-3 = tilemaps) */ + int layercontrol = m_cps_b_regs[m_game_config->layer_control / 2]; + int l0 = (layercontrol >> 0x06) & 03; + int l1 = (layercontrol >> 0x08) & 03; + int l2 = (layercontrol >> 0x0a) & 03; + int l3 = (layercontrol >> 0x0c) & 03; + screen.priority().fill(0, cliprect); + + int primasks[8], i; + int l0pri = (m_pri_ctrl >> 4 * l0) & 0x0f; + int l1pri = (m_pri_ctrl >> 4 * l1) & 0x0f; + int l2pri = (m_pri_ctrl >> 4 * l2) & 0x0f; + int l3pri = (m_pri_ctrl >> 4 * l3) & 0x0f; + +#if 0 +if ( (m_output[CPS2_OBJ_BASE /2] != 0x7080 && m_output[CPS2_OBJ_BASE /2] != 0x7000) || + m_output[CPS2_OBJ_UK1 /2] != 0x807d || + (m_output[CPS2_OBJ_UK2 /2] != 0x0000 && m_output[CPS2_OBJ_UK2 /2] != 0x1101 && m_output[CPS2_OBJ_UK2 /2] != 0x0001)) + popmessage("base %04x uk1 %04x uk2 %04x", + m_output[CPS2_OBJ_BASE /2], + m_output[CPS2_OBJ_UK1 /2], + m_output[CPS2_OBJ_UK2 /2]); + +if (0 && machine().input().code_pressed(KEYCODE_Z)) + popmessage("order: %d (%d) %d (%d) %d (%d) %d (%d)",l0,l0pri,l1,l1pri,l2,l2pri,l3,l3pri); +#endif + + /* take out the CPS1 sprites layer */ + if (l0 == 0) { l0 = l1; l1 = 0; l0pri = l1pri; } + if (l1 == 0) { l1 = l2; l2 = 0; l1pri = l2pri; } + if (l2 == 0) { l2 = l3; l3 = 0; l2pri = l3pri; } + + { + int mask0 = 0xaa; + int mask1 = 0xcc; + if (l0pri > l1pri) mask0 &= ~0x88; + if (l0pri > l2pri) mask0 &= ~0xa0; + if (l1pri > l2pri) mask1 &= ~0xc0; + + primasks[0] = 0xff; + for (i = 1; i < 8; i++) + { + if (i <= l0pri && i <= l1pri && i <= l2pri) + { + primasks[i] = 0xfe; + continue; + } + primasks[i] = 0; + if (i <= l0pri) primasks[i] |= mask0; + if (i <= l1pri) primasks[i] |= mask1; + if (i <= l2pri) primasks[i] |= 0xf0; + } + } + + cps1_render_layer(screen, bitmap, cliprect, l0, 1); + cps1_render_layer(screen, bitmap, cliprect, l1, 2); + cps1_render_layer(screen, bitmap, cliprect, l2, 4); + cps2_render_sprites(screen, bitmap, cliprect, primasks); +} + uint32_t cps_state::screen_update_cps1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - int layercontrol, l0, l1, l2, l3; int videocontrol = m_cps_a_regs[CPS1_VIDEOCONTROL]; flip_screen_set(videocontrol & 0x8000); - layercontrol = m_cps_b_regs[m_game_config->layer_control / 2]; - /* Get video memory base registers */ cps1_get_video_base(); /* Find the offset of the last sprite in the sprite table */ - cps1_find_last_sprite(); - - if (m_cps_version == 2) - cps2_find_last_sprite(); + find_last_sprite(); cps1_update_transmasks(); @@ -3020,89 +3094,7 @@ uint32_t cps_state::screen_update_cps1(screen_device &screen, bitmap_ind16 &bitm cps1_render_stars(screen, bitmap, cliprect); } - /* Draw layers (0 = sprites, 1-3 = tilemaps) */ - l0 = (layercontrol >> 0x06) & 03; - l1 = (layercontrol >> 0x08) & 03; - l2 = (layercontrol >> 0x0a) & 03; - l3 = (layercontrol >> 0x0c) & 03; - screen.priority().fill(0, cliprect); - - if (m_cps_version == 1) - { - if (BIT(m_game_config->bootleg_kludge, 7)) - cps1_build_palette(cps1_base(CPS1_PALETTE_BASE, m_palette_align)); - - cps1_render_layer(screen, bitmap, cliprect, l0, 0); - - if (l1 == 0) - cps1_render_high_layer(screen, bitmap, cliprect, l0); /* prepare mask for sprites */ - - cps1_render_layer(screen, bitmap, cliprect, l1, 0); - - if (l2 == 0) - cps1_render_high_layer(screen, bitmap, cliprect, l1); /* prepare mask for sprites */ - - cps1_render_layer(screen, bitmap, cliprect, l2, 0); - - if (l3 == 0) - cps1_render_high_layer(screen, bitmap, cliprect, l2); /* prepare mask for sprites */ - - cps1_render_layer(screen, bitmap, cliprect, l3, 0); - } - else - { - int l0pri, l1pri, l2pri, l3pri; - int primasks[8], i; - l0pri = (m_pri_ctrl >> 4 * l0) & 0x0f; - l1pri = (m_pri_ctrl >> 4 * l1) & 0x0f; - l2pri = (m_pri_ctrl >> 4 * l2) & 0x0f; - l3pri = (m_pri_ctrl >> 4 * l3) & 0x0f; - -#if 0 -if ( (m_output[CPS2_OBJ_BASE /2] != 0x7080 && m_output[CPS2_OBJ_BASE /2] != 0x7000) || - m_output[CPS2_OBJ_UK1 /2] != 0x807d || - (m_output[CPS2_OBJ_UK2 /2] != 0x0000 && m_output[CPS2_OBJ_UK2 /2] != 0x1101 && m_output[CPS2_OBJ_UK2 /2] != 0x0001)) - popmessage("base %04x uk1 %04x uk2 %04x", - m_output[CPS2_OBJ_BASE /2], - m_output[CPS2_OBJ_UK1 /2], - m_output[CPS2_OBJ_UK2 /2]); - -if (0 && machine().input().code_pressed(KEYCODE_Z)) - popmessage("order: %d (%d) %d (%d) %d (%d) %d (%d)",l0,l0pri,l1,l1pri,l2,l2pri,l3,l3pri); -#endif - - /* take out the CPS1 sprites layer */ - if (l0 == 0) { l0 = l1; l1 = 0; l0pri = l1pri; } - if (l1 == 0) { l1 = l2; l2 = 0; l1pri = l2pri; } - if (l2 == 0) { l2 = l3; l3 = 0; l2pri = l3pri; } - - { - int mask0 = 0xaa; - int mask1 = 0xcc; - if (l0pri > l1pri) mask0 &= ~0x88; - if (l0pri > l2pri) mask0 &= ~0xa0; - if (l1pri > l2pri) mask1 &= ~0xc0; - - primasks[0] = 0xff; - for (i = 1; i < 8; i++) - { - if (i <= l0pri && i <= l1pri && i <= l2pri) - { - primasks[i] = 0xfe; - continue; - } - primasks[i] = 0; - if (i <= l0pri) primasks[i] |= mask0; - if (i <= l1pri) primasks[i] |= mask1; - if (i <= l2pri) primasks[i] |= 0xf0; - } - } - - cps1_render_layer(screen, bitmap, cliprect, l0, 1); - cps1_render_layer(screen, bitmap, cliprect, l1, 2); - cps1_render_layer(screen, bitmap, cliprect, l2, 4); - cps2_render_sprites(screen, bitmap, cliprect, primasks); - } + render_layers(screen, bitmap, cliprect); return 0; } @@ -3123,12 +3115,12 @@ WRITE_LINE_MEMBER(cps_state::screen_vblank_cps1) } } -void cps_state::cps2_set_sprite_priorities() +void cps2_state::cps2_set_sprite_priorities() { m_pri_ctrl = m_output[CPS2_OBJ_PRI /2]; } -void cps_state::cps2_objram_latch() +void cps2_state::cps2_objram_latch() { cps2_set_sprite_priorities(); memcpy(m_cps2_buffered_obj.get(), cps2_objbase(), m_cps2_obj_size); |