diff options
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 |
commit | aebfaf3bd05e8365087ea1413850c7d860db8e97 (patch) | |
tree | 8e3b59f477617cd8ead12d01e86eff002131c19f /src | |
parent | dcc2387baee4fdc57b3a399f2ad45a7458460232 (diff) |
sf2m3, sf2m8 - fixed remaining gfx issues, marked as WORKING. [Robbbert]
Diffstat (limited to 'src')
-rw-r--r-- | src/mame/drivers/cps1.c | 21 | ||||
-rw-r--r-- | src/mame/includes/cps1.h | 1 | ||||
-rw-r--r-- | src/mame/video/cps1.c | 22 |
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 |