From 87491f9d2f8d5720dd4552ea281ce66f3dc6f8d3 Mon Sep 17 00:00:00 2001 From: Robbbert Date: Sat, 30 Mar 2013 13:43:47 +0000 Subject: [PATCH] sf2m1 - game is working apart from some very minor gfx glitches. --- src/mame/drivers/fcrash.c | 20 ++++++++++++-------- src/mame/includes/cps1.h | 1 + src/mame/video/cps1.c | 2 +- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/mame/drivers/fcrash.c b/src/mame/drivers/fcrash.c index 8d52fee4e25..ac2068ddda4 100644 --- a/src/mame/drivers/fcrash.c +++ b/src/mame/drivers/fcrash.c @@ -245,7 +245,6 @@ WRITE16_MEMBER(cps_state::sf2m1_layer_w) m_cps_a_regs[0x14 / 2] = data; break; case 0x06: - { switch (data) { case 0: @@ -267,16 +266,13 @@ WRITE16_MEMBER(cps_state::sf2m1_layer_w) data = 0x0b4e; break; } + case 0xb3: m_cps_b_regs[m_layer_enable_reg / 2] = data; break; - } case 0x0b: case 0x1b: m_cps_a_regs[0x06 / 2] = data; break; - case 0xb3: - m_cps_b_regs[0x26 / 2] = data; - break; default: logerror("%s: Unknown layer cmd %X %X\n",space.machine().describe_context(),offset<<1,data); @@ -547,7 +543,7 @@ UINT32 cps_state::screen_update_fcrash(screen_device &screen, bitmap_ind16 &bitm static ADDRESS_MAP_START( knightsb_map, AS_PROGRAM, 16, cps_state ) AM_RANGE(0x000000, 0x3fffff) AM_ROM AM_RANGE(0x800000, 0x800001) AM_READ_PORT("IN1") /* Player input ports */ - AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN2")//(cps1_in2_r) /* Player 3 controls */ + AM_RANGE(0x800002, 0x800003) AM_READ_PORT("IN2") /* Player 3 controls */ AM_RANGE(0x800004, 0x800005) AM_WRITENOP // writes 0000 here AM_RANGE(0x800006, 0x800007) AM_WRITE(fcrash_soundlatch_w) /* Sound command */ AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */ @@ -582,7 +578,7 @@ static ADDRESS_MAP_START( sf2m1_map, AS_PROGRAM, 16, cps_state ) AM_RANGE(0x800012, 0x800013) AM_READ(cps1_in2_r) /* Buttons 4,5,6 for both players */ AM_RANGE(0x800018, 0x80001f) AM_READ(cps1_dsw_r) /* System input ports / Dip Switches */ AM_RANGE(0x800100, 0x80013f) AM_WRITE(cps1_cps_a_w) AM_SHARE("cps_a_regs") /* CPS-A custom */ - AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") // area not used + AM_RANGE(0x800140, 0x80017f) AM_READWRITE(cps1_cps_b_r, cps1_cps_b_w) AM_SHARE("cps_b_regs") AM_RANGE(0x800180, 0x800181) AM_WRITENOP // only once at boot, for 80010c AM_RANGE(0x800188, 0x80018f) AM_WRITE(cps1_soundlatch2_w) /* Sound timer fade */ AM_RANGE(0x880000, 0x880001) AM_WRITENOP // unknown @@ -1988,13 +1984,21 @@ ROM_START( sf2m1 ) ROM_LOAD( "s92_19.bin", 0x20000, 0x20000, CRC(beade53f) SHA1(277c397dc12752719ec6b47d2224750bd1c07f79) ) ROM_END +DRIVER_INIT_MEMBER(cps_state, sf2m1) +{ + UINT16 *mem16 = (UINT16 *)memregion("maincpu")->base(); + mem16[0x64E/2] = 0x6046; // fix priorities + + DRIVER_INIT_CALL(knightsb); +} + GAME( 1990, fcrash, ffight, fcrash, fcrash, cps_state, cps1, ROT0, "bootleg (Playmark)", "Final Crash (bootleg of Final Fight)", GAME_SUPPORTS_SAVE ) GAME( 1991, kodb, kod, kodb, kodb, cps_state, kodb, ROT0, "bootleg (Playmark)", "The King of Dragons (bootleg)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // 910731 "ETC" GAME( 1991, knightsb, knights, knightsb, knights, cps_state, knightsb, ROT0, "bootleg", "Knights of the Round (bootleg)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) // 911127 - based on World version GAME( 1990, cawingbl, cawing, cawingbl, cawingbl, cps_state, cawingbl, ROT0, "bootleg", "Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM205 set 1)", GAME_SUPPORTS_SAVE ) GAME( 1990, cawingb2, cawing, cawingbl, cawingbl, cps_state, cawingbl, ROT0, "bootleg", "Carrier Air Wing (bootleg with 2xYM2203 + 2xMSM205 set 2)", GAME_SUPPORTS_SAVE ) -GAME( 1992, sf2m1, sf2ce, sf2m1, sf2, cps_state, knightsb, ROT0, "bootleg", "Street Fighter II': Champion Edition (M1, bootleg)", GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) +GAME( 1992, sf2m1, sf2ce, sf2m1, sf2, cps_state, sf2m1, ROT0, "bootleg", "Street Fighter II': Champion Edition (M1, bootleg)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // 920313 ETC GAME( 1992, sf2mdt, sf2ce, sf2mdt, sf2mdt, cps_state, sf2mdt, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 1)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // 920313 - based on (heavily modified) World version GAME( 1992, sf2mdta, sf2ce, sf2mdt, sf2mdt, cps_state, sf2mdta, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 2)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // 920313 - based on World version GAME( 1999, sgyxz, wof, sgyxz, sgyxz, cps_state, cps1, ROT0, "bootleg (All-In Electronic)", "Warriors of Fate ('sgyxz' bootleg)", GAME_IMPERFECT_GRAPHICS | GAME_SUPPORTS_SAVE ) // 921005 - Sangokushi 2 diff --git a/src/mame/includes/cps1.h b/src/mame/includes/cps1.h index 2880ee25b40..72764cb0248 100644 --- a/src/mame/includes/cps1.h +++ b/src/mame/includes/cps1.h @@ -253,6 +253,7 @@ public: DECLARE_DRIVER_INIT(kodb); DECLARE_DRIVER_INIT(cawingbl); DECLARE_DRIVER_INIT(knightsb); + DECLARE_DRIVER_INIT(sf2m1); DECLARE_DRIVER_INIT(sf2mdt); DECLARE_DRIVER_INIT(sf2mdta); DECLARE_MACHINE_START(fcrash); diff --git a/src/mame/video/cps1.c b/src/mame/video/cps1.c index b5c5c46a707..d8c91a98d4f 100644 --- a/src/mame/video/cps1.c +++ b/src/mame/video/cps1.c @@ -1383,7 +1383,7 @@ static const struct CPS1config cps1_config_table[]= {"sf2accp2", CPS_B_21_DEF, mapper_S9263B, 0x36 }, {"sf2amf", CPS_B_21_DEF, mapper_S9263B, 0x36, 0, 0, 1 }, // probably wrong but this set is not completely dumped anyway {"sf2dkot2", CPS_B_21_DEF, mapper_S9263B, 0x36 }, - //{"sf2m1", 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_B_1, mapper_S9263B, 0, 0, 0, 1 }, {"sf2m4", HACK_B_1, mapper_S9263B, 0x36, 0, 0, 1 },