summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Robbbert <robbbert@users.noreply.github.com>2013-03-27 14:00:47 +0000
committer Robbbert <robbbert@users.noreply.github.com>2013-03-27 14:00:47 +0000
commitaebfaf3bd05e8365087ea1413850c7d860db8e97 (patch)
tree8e3b59f477617cd8ead12d01e86eff002131c19f /src
parentdcc2387baee4fdc57b3a399f2ad45a7458460232 (diff)
sf2m3, sf2m8 - fixed remaining gfx issues, marked as WORKING. [Robbbert]
Diffstat (limited to 'src')
-rw-r--r--src/mame/drivers/cps1.c21
-rw-r--r--src/mame/includes/cps1.h1
-rw-r--r--src/mame/video/cps1.c22
3 files changed, 24 insertions, 20 deletions
diff --git a/src/mame/drivers/cps1.c b/src/mame/drivers/cps1.c
index abd3ed15bd1..bdb0c3decca 100644
--- a/src/mame/drivers/cps1.c
+++ b/src/mame/drivers/cps1.c
@@ -646,11 +646,11 @@ static ADDRESS_MAP_START( sf2m3_map, AS_PROGRAM, 16, cps_state )
AM_RANGE(0x800028, 0x80002f) AM_READ(cps1_hack_dsw_r) /* System input ports / Dip Switches */
AM_RANGE(0x800030, 0x800037) AM_WRITE(cps1_coinctrl_w)
AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */
- AM_RANGE(0x800140, 0x80017f) AM_MIRROR(0x80) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") /* CPS-B custom */
+ AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") /* CPS-B custom */
AM_RANGE(0x800186, 0x800187) AM_READ(cps1_in2_r) /* Buttons 4,5,6 for both players */
AM_RANGE(0x800190, 0x800197) AM_WRITE(cps1_soundlatch_w) /* Sound command */
AM_RANGE(0x800198, 0x80019f) AM_WRITE(cps1_soundlatch2_w) /* Sound timer fade */
- AM_RANGE(0x8001a0, 0x8001bf) AM_WRITE(cps1_cps_a_w)
+ AM_RANGE(0x8001a0, 0x8001df) AM_WRITE(sf2m3_layer_w)
AM_RANGE(0x900000, 0x92ffff) AM_RAM_WRITE(cps1_gfxram_w) AM_SHARE("gfxram")
AM_RANGE(0xff0000, 0xffffff) AM_RAM
ADDRESS_MAP_END
@@ -11221,6 +11221,19 @@ DRIVER_INIT_MEMBER(cps_state,dinohunt)
DRIVER_INIT_CALL(cps1);
}
+WRITE16_MEMBER( cps_state::sf2m3_layer_w )
+{
+ if (offset < 0x12)
+ cps1_cps_a_w(space,offset,data);
+ else
+ if (offset == 0x12)
+ cps1_cps_b_w(space,0x0a,data);
+ else
+ logerror("%s: Unknown layer cmd %X %X\n",space.machine().describe_context(),offset<<1,data);
+}
+
+
+/*************************************************** Game Macros *****************************************************/
GAME( 1988, forgottn, 0, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Forgotten Worlds (World)", GAME_SUPPORTS_SAVE ) // (c) Capcom U.S.A. but World "warning"
GAME( 1988, forgottnu, forgottn, cps1_10MHz, forgottn, cps_state, forgottn, ROT0, "Capcom", "Forgotten Worlds (USA, B-Board 88621B-2, Rev. C)", GAME_SUPPORTS_SAVE )
@@ -11336,12 +11349,12 @@ GAME( 1992, sf2amf, sf2ce, cps1_12MHz, sf2amf, cps_state, cps1,
GAME( 1992, sf2dkot2, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (Double K.O. Turbo II, bootleg)", GAME_SUPPORTS_SAVE ) // 902140 !!! - based on USA version
GAME( 1992, sf2m1, sf2ce, cps1_12MHz, sf2, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (M1, bootleg)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE )
GAME( 1992, sf2m2, sf2ce, cps1_12MHz, sf2m2, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M2, bootleg)", GAME_SUPPORTS_SAVE ) // 920313 - based on World version
-GAME( 1992, sf2m3, sf2ce, sf2m3, sf2hack, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (M3, bootleg)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1992, sf2m3, sf2ce, sf2m3, sf2hack, cps_state, cps1, ROT0, "bootleg", "Street Fighter II': Champion Edition (M3, bootleg)", GAME_SUPPORTS_SAVE ) // 920313 - based on USA version
GAME( 1992, sf2m4, sf2ce, cps1_12MHz, sf2m4, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M4, bootleg)", GAME_SUPPORTS_SAVE ) // 920322 - based on Japan version
GAME( 1992, sf2m5, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M5, bootleg)", GAME_SUPPORTS_SAVE ) // 920313 - based on World version
GAME( 1992, sf2m6, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M6, bootleg)", GAME_SUPPORTS_SAVE ) // 811102 !!! - based on World version
GAME( 1992, sf2m7, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (M7, bootleg)", GAME_SUPPORTS_SAVE ) // 920313 - based on World version
-GAME( 1992, sf2m8, sf2ce, sf2m3, sf2hack, cps_state, sf2m8, ROT0, "bootleg", "Street Fighter II': Champion Edition (M8, bootleg)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE )
+GAME( 1992, sf2m8, sf2ce, sf2m3, sf2hack, cps_state, sf2m8, ROT0, "bootleg", "Street Fighter II': Champion Edition (M8, bootleg)", GAME_SUPPORTS_SAVE ) // 920313 - based on USA version
GAME( 1992, sf2yyc, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (YYC, bootleg)", GAME_SUPPORTS_SAVE ) // 920313 - based on World version
GAME( 1992, sf2koryu, sf2ce, cps1_12MHz, sf2hack, cps_state, sf2hack, ROT0, "bootleg", "Street Fighter II': Champion Edition (Xiang Long, Chinese bootleg)", GAME_SUPPORTS_SAVE ) // 811102 !!! - based on World version
GAME( 1992, sf2dongb, sf2ce, cps1_12MHz, sf2, cps_state, sf2dongb, ROT0, "bootleg", "Street Fighter II': Champion Edition (Dongfang Bubai protection, bootleg)", GAME_SUPPORTS_SAVE ) // 920313 - based on World version
diff --git a/src/mame/includes/cps1.h b/src/mame/includes/cps1.h
index c9216e7de26..8e5e7d828e0 100644
--- a/src/mame/includes/cps1.h
+++ b/src/mame/includes/cps1.h
@@ -199,6 +199,7 @@ public:
DECLARE_WRITE16_MEMBER(cps2_objram1_w);
DECLARE_WRITE16_MEMBER(cps2_objram2_w);
DECLARE_WRITE8_MEMBER(cps1_oki_pin7_w);
+ DECLARE_WRITE16_MEMBER(sf2m3_layer_w);
DECLARE_DRIVER_INIT(sf2rb);
DECLARE_DRIVER_INIT(sf2rb2);
DECLARE_DRIVER_INIT(sf2thndr);
diff --git a/src/mame/video/cps1.c b/src/mame/video/cps1.c
index 25ac53827af..d8c91a98d4f 100644
--- a/src/mame/video/cps1.c
+++ b/src/mame/video/cps1.c
@@ -464,7 +464,6 @@ The games seem to use them to mark platforms, kill zones and no-go areas.
#define CPS_B_21_QS4 0x2e,0x0c01, -1, -1, -1, -1, 0x1c,0x1e,0x08, 0x16,{0x00,0x02,0x28,0x2a},0x2c, {0x04,0x08,0x10,0x00,0x00}
#define CPS_B_21_QS5 0x1e,0x0c02, -1, -1, -1, -1, 0x0c, -1, -1, 0x2a,{0x2c,0x2e,0x30,0x32},0x1c, {0x04,0x08,0x10,0x00,0x00}
#define HACK_B_1 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0x14,{0x12,0x10,0x0e,0x0c},0x0a, {0x0e,0x0e,0x0e,0x30,0x30}
-#define HACK_H_3 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0x04,{0x12,0x10,0x0e,0x0c},0x0a, {0x02,0xc4,0x18,0x00,0x00}
/*
CPS_B_21_DEF is CPS-B-21 at default settings (no battery)
@@ -1386,12 +1385,12 @@ static const struct CPS1config cps1_config_table[]=
{"sf2dkot2", CPS_B_21_DEF, mapper_S9263B, 0x36 },
{"sf2m1", CPS_B_21_DEF, mapper_S9263B, 0x36 },
{"sf2m2", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 },
- {"sf2m3", HACK_H_3, mapper_S9263B, 0, 0, 0, 1 },
+ {"sf2m3", HACK_B_1, mapper_S9263B, 0, 0, 0, 1 },
{"sf2m4", HACK_B_1, mapper_S9263B, 0x36, 0, 0, 1 },
{"sf2m5", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 },
{"sf2m6", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 },
{"sf2m7", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 },
- {"sf2m8", HACK_H_3, mapper_S9263B, 0, 0, 0, 1 },
+ {"sf2m8", HACK_B_1, mapper_S9263B, 0, 0, 0, 1 },
{"sf2dongb", CPS_B_21_DEF, mapper_S9263B, 0x36 },
{"sf2yyc", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 },
{"sf2koryu", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 },
@@ -1801,7 +1800,7 @@ DRIVER_INIT_MEMBER(cps_state,cps2_video)
void cps_state::cps1_get_video_base()
{
- int layercontrol, videocontrol, scroll1xoff, scroll2xoff, scroll3xoff;
+ int layercontrol=0, videocontrol=0, scroll1xoff=0, scroll2xoff=0, scroll3xoff=0;
/* Re-calculate the VIDEO RAM base */
if (m_scroll1 != cps1_base(machine(), CPS1_SCROLL1_BASE, m_scroll_size))
@@ -1824,19 +1823,12 @@ void cps_state::cps1_get_video_base()
if (m_game_config->bootleg_kludge == 1)
{
m_cps_a_regs[CPS1_OBJ_BASE] = 0x9100;
- m_obj = cps1_base(machine(), CPS1_OBJ_BASE, m_obj_size);
scroll1xoff = -0x0c;
scroll2xoff = -0x0e;
scroll3xoff = -0x10;
}
- else
- {
- m_obj = cps1_base(machine(), CPS1_OBJ_BASE, m_obj_size);
- scroll1xoff = 0;
- scroll2xoff = 0;
- scroll3xoff = 0;
- }
+ m_obj = cps1_base(machine(), CPS1_OBJ_BASE, m_obj_size);
m_other = cps1_base(machine(), CPS1_OTHER_BASE, m_other_size);
/* Get scroll values */
@@ -2787,14 +2779,12 @@ UINT32 cps_state::screen_update_cps1(screen_device &screen, bitmap_ind16 &bitmap
if (videocontrol & 0x01) /* linescroll enable */
{
int scrly = -m_scroll2y;
- int i;
- int otheroffs;
m_bg_tilemap[1]->set_scroll_rows(1024);
- otheroffs = m_cps_a_regs[CPS1_ROWSCROLL_OFFS];
+ int otheroffs = m_cps_a_regs[CPS1_ROWSCROLL_OFFS];
- for (i = 0; i < 256; i++)
+ for (int i = 0; i < 256; i++)
m_bg_tilemap[1]->set_scrollx((i - scrly) & 0x3ff, m_scroll2x + m_other[(i + otheroffs) & 0x3ff]);
}
else