summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
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
commit447cda56672dc0ed1d09287996492516553b19a2 (patch)
treeb03c571d889ef110cfaf5a82309989c4272da099
parent9abe0fb272a92cbc3f7be084af984146a3ca84d8 (diff)
Separate state class for CPS2 (nw)
-rw-r--r--src/mame/drivers/cps1.cpp2
-rw-r--r--src/mame/drivers/cps2.cpp736
-rw-r--r--src/mame/drivers/fcrash.cpp18
-rw-r--r--src/mame/includes/cps1.h233
-rw-r--r--src/mame/machine/cps2crypt.cpp2
-rw-r--r--src/mame/video/cps1.cpp254
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);