From 8fbd3ab5ca55e4632cb431b8c9132d2d632b971e Mon Sep 17 00:00:00 2001 From: Barry Harris <44396066+barry65536@users.noreply.github.com> Date: Mon, 2 Jul 2012 12:59:48 +0000 Subject: [PATCH] Add sf2amf, sf2stt, sf2de (Barry, JacKc, smitdogg) --- src/burn/drv/capcom/cps.cpp | 55 +++++++++ src/burn/drv/capcom/cps.h | 1 + src/burn/drv/capcom/d_cps1.cpp | 203 +++++++++++++++++++++++++++++++-- 3 files changed, 251 insertions(+), 8 deletions(-) diff --git a/src/burn/drv/capcom/cps.cpp b/src/burn/drv/capcom/cps.cpp index a00e2d32b..a24162b0e 100644 --- a/src/burn/drv/capcom/cps.cpp +++ b/src/burn/drv/capcom/cps.cpp @@ -481,6 +481,49 @@ static INT32 CpsLoadOneSf2koryu(UINT8* Tile, INT32 nNum, INT32 nWord, INT32 nShi return 0; } +static INT32 CpsLoadOneSf2stt(UINT8* Tile, INT32 nNum, INT32 nWord, INT32 nShift) +{ + UINT8 *Rom = NULL; INT32 nRomLen=0; + UINT8 *pt = NULL, *pr = NULL; + INT32 i; + + LoadUp(&Rom, &nRomLen, nNum); + if (Rom == NULL) { + return 1; + } + + nRomLen &= ~1; // make sure even + + for (i = 0, pt = Tile, pr = Rom + (nRomLen >> 1); i < nRomLen >> 1; pt += 8) { + UINT32 Pix; // Eight pixels + UINT8 b; + b = *pr++; i++; Pix = SepTable[b]; + if (nWord) { + b = *pr++; i++; Pix |= SepTable[b] << 1; + } + + Pix <<= nShift; + *((UINT32 *)pt) |= Pix; + } + + Tile += 4; + + for (i = 0, pt = Tile, pr = Rom; i < nRomLen >> 1; pt += 8) { + UINT32 Pix; // Eight pixels + UINT8 b; + b = *pr++; i++; Pix = SepTable[b]; + if (nWord) { + b = *pr++; i++; Pix |= SepTable[b] << 1; + } + + Pix <<= nShift; + *((UINT32 *)pt) |= Pix; + } + + BurnFree(Rom); + return 0; +} + INT32 CpsLoadTiles(UINT8* Tile, INT32 nStart) { // left side of 16x16 tiles @@ -620,6 +663,18 @@ INT32 CpsLoadTilesSf2koryu(INT32 nStart) return 0; } +INT32 CpsLoadTilesSf2stt(INT32 nStart) +{ + CpsLoadOneSf2stt(CpsGfx + 0x000000, nStart + 0, 1, 0); + CpsLoadOneSf2stt(CpsGfx + 0x000000, nStart + 1, 1, 2); + CpsLoadOneSf2stt(CpsGfx + 0x200000, nStart + 2, 1, 0); + CpsLoadOneSf2stt(CpsGfx + 0x200000, nStart + 3, 1, 2); + CpsLoadOneSf2stt(CpsGfx + 0x400000, nStart + 4, 1, 0); + CpsLoadOneSf2stt(CpsGfx + 0x400000, nStart + 5, 1, 2); + + return 0; +} + INT32 CpsLoadTilesSf2mdt(INT32 nStart) { CpsLoadTilesBootlegType3(CpsGfx + 0x000000, nStart + 0); diff --git a/src/burn/drv/capcom/cps.h b/src/burn/drv/capcom/cps.h index 59453e60b..5cffc06b6 100644 --- a/src/burn/drv/capcom/cps.h +++ b/src/burn/drv/capcom/cps.h @@ -42,6 +42,7 @@ INT32 CpsLoadTilesSf2ebbl(UINT8 *Tile, INT32 nStart); INT32 CpsLoadTilesHack160(INT32 nStart); INT32 CpsLoadTilesHack160Alt(INT32 nStart); INT32 CpsLoadTilesSf2koryu(INT32 nStart); +INT32 CpsLoadTilesSf2stt(INT32 nStart); INT32 CpsLoadTilesSf2mdt(INT32 nStart); INT32 CpsLoadTilesSf2mdta(INT32 nStart); INT32 CpsLoadTilesFcrash(INT32 nStart); diff --git a/src/burn/drv/capcom/d_cps1.cpp b/src/burn/drv/capcom/d_cps1.cpp index d84d444f1..9a736f2f4 100644 --- a/src/burn/drv/capcom/d_cps1.cpp +++ b/src/burn/drv/capcom/d_cps1.cpp @@ -7140,6 +7140,62 @@ static struct BurnRomInfo Sf2ebblRomDesc[] = { STD_ROM_PICK(Sf2ebbl) STD_ROM_FN(Sf2ebbl) +static struct BurnRomInfo Sf2sttRomDesc[] = { + { "12.bin", 0x040000, 0xa258b4d5, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP }, // from sf2ebbl - missing from dump (empty space on pcb near ce91e-b and ce91e-a)? + { "09.bin", 0x040000, 0x59ccd474, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP }, // from sf2ebbl - missing from dump (empty space on pcb near ce91e-b and ce91e-a)? + { "ce91e-b", 0x040000, 0x0862386e, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP }, + { "ce91e-a", 0x040000, 0x0c83844d, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP }, + + { "stt-a-910913", 0x100000, 0x10a7036d, BRF_GRA | CPS1_TILES }, + { "stt-d-910913", 0x100000, 0x3580b124, BRF_GRA | CPS1_TILES }, + { "stt-b-910913", 0x100000, 0x7a09224e, BRF_GRA | CPS1_TILES }, + { "stt-e-910913", 0x100000, 0x382a612c, BRF_GRA | CPS1_TILES }, + { "stt-c-910913", 0x100000, 0x11701b8f, BRF_GRA | CPS1_TILES }, + { "stt-f-910913", 0x100000, 0x101a0b72, BRF_GRA | CPS1_TILES }, + + { "stt3", 0x010000, 0xa4823a1b, BRF_PRG | CPS1_Z80_PROGRAM }, + + { "stt2", 0x020000, 0x7f162009, BRF_SND | CPS1_OKIM6295_SAMPLES }, + { "stt1", 0x020000, 0xbeade53f, BRF_SND | CPS1_OKIM6295_SAMPLES }, + + { "stt5", 0x020000, 0xa505621e, BRF_GRA }, // extra graphics - map over normal roms to remove CAPCOM logo + { "stt7", 0x020000, 0xde6271fb, BRF_GRA }, + { "stt6", 0x020000, 0x23775344, BRF_GRA }, + { "stt8", 0x020000, 0x81c9550f, BRF_GRA }, + + { "stt4", 0x010000, 0x13ea1c44, BRF_OPT }, // unknown +}; + +STD_ROM_PICK(Sf2stt) +STD_ROM_FN(Sf2stt) + +static struct BurnRomInfo Sf2deRomDesc[] = { + // this is missing lots of code (PCB has lots of empty rom slots) + { "w-6", 0x020000, 0xbb4af315, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP }, // second half of 11.bin (sf2ebbl) + { "w-5", 0x020000, 0xc02a13eb, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP }, // second half of 10.bin (sf2ebbl) + + { "01", 0x100000, 0x4296de4d, BRF_GRA | CPS1_TILES }, + { "03", 0x100000, 0x16cf11d0, BRF_GRA | CPS1_TILES }, + { "02", 0x100000, 0x68ca7fce, BRF_GRA | CPS1_TILES }, + { "04", 0x100000, 0x9f46f926, BRF_GRA | CPS1_TILES }, + { "05", 0x100000, 0x4c161fa9, BRF_GRA | CPS1_TILES }, + { "06", 0x100000, 0xec949f8c, BRF_GRA | CPS1_TILES }, + + { "de1", 0x010000, 0xa4823a1b, BRF_PRG | CPS1_Z80_PROGRAM }, + + { "w-7", 0x020000, 0xbeade53f, BRF_SND | CPS1_OKIM6295_SAMPLES }, + + { "w-1", 0x010000, 0x124b9ffc, BRF_GRA }, // extra graphics - map over normal roms to remove CAPCOM logo + { "w-3", 0x010000, 0x5992783a, BRF_GRA }, + { "w-2", 0x010000, 0x11d715f7, BRF_GRA }, + { "w-4", 0x010000, 0xdb0dd977, BRF_GRA }, + + { "de2", 0x010000, 0x13ea1c44, BRF_OPT }, // unknown +}; + +STD_ROM_PICK(Sf2de) +STD_ROM_FN(Sf2de) + static struct BurnRomInfo Sf2uaRomDesc[] = { { "sf2u_30a.11e", 0x020000, 0x08beb861, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP }, { "sf2u_37a.11f", 0x020000, 0xb7638d69, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP }, @@ -8008,9 +8064,9 @@ static struct BurnRomInfo Sf2accRomDesc[] = { STD_ROM_PICK(Sf2acc) STD_ROM_FN(Sf2acc) -static struct BurnRomInfo Sf2acc2RomDesc[] = { +static struct BurnRomInfo Sf2accaRomDesc[] = { { "sf2ca_23-c.8f", 0x080000, 0x35f9517b, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_NO_BYTESWAP }, - { "sf2ca_22-c.bin", 0x080000, 0x99f1cca4, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_NO_BYTESWAP }, + { "sf2ca_22-c.7f", 0x080000, 0x99f1cca4, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_NO_BYTESWAP }, { "sf2ca_21-c.6f", 0x080000, 0x2ab2034f, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_NO_BYTESWAP }, { "s92_01.bin", 0x080000, 0x03b0d852, BRF_GRA | CPS1_TILES }, @@ -8032,8 +8088,8 @@ static struct BurnRomInfo Sf2acc2RomDesc[] = { { "s92_19.bin", 0x020000, 0xbeade53f, BRF_SND | CPS1_OKIM6295_SAMPLES }, }; -STD_ROM_PICK(Sf2acc2) -STD_ROM_FN(Sf2acc2) +STD_ROM_PICK(Sf2acca) +STD_ROM_FN(Sf2acca) static struct BurnRomInfo Sf2accp2RomDesc[] = { { "sf2ca-23.bin", 0x080000, 0x36c3ba2f, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_NO_BYTESWAP }, @@ -8485,6 +8541,35 @@ static struct BurnRomInfo Sf2koryu2RomDesc[] = { STD_ROM_PICK(Sf2koryu2) STD_ROM_FN(Sf2koryu2) +static struct BurnRomInfo Sf2amfRomDesc[] = { + { "amf5", 0x080000, 0x03991fba, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP }, + { "amf4", 0x080000, 0x39f15a1e, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP }, + { "sfu9-2.020", 0x0040000, 0x0b3fe5dd, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP }, // wasn't in original dump (amf5 has a lot in common with sfu9-1.040 from sf2m10, and the extra graphics roms are for a turbo hack, so using this from those sets) + { "sfu9-4.020", 0x0040000, 0xdbee7b18, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP }, // wasn't in original dump (amf5 has a lot in common with sfu9-3.040 from sf2m10, and the extra graphics roms are for a turbo hack, so using this from those sets) + + { "y.c.e.c-m.k.r-001", 0x100000, 0xa258de13, BRF_GRA | CPS1_TILES }, + { "y.c.e.c-m.k.r-003", 0x100000, 0xc781bf87, BRF_GRA | CPS1_TILES }, + { "y.c.e.c-m.k.r-002", 0x100000, 0x5726cab8, BRF_GRA | CPS1_TILES }, + { "y.c.e.c-d.w.c-011", 0x100000, 0xbc90c12f, BRF_GRA | CPS1_TILES }, + { "y.c.e.c-d.w.c-012", 0x100000, 0x187667cc, BRF_GRA | CPS1_TILES }, + { "y.c.e.c-d.w.c-013", 0x100000, 0x5b585071, BRF_GRA | CPS1_TILES }, + + { "amf3", 0x010000, 0xa4823a1b, BRF_PRG | CPS1_Z80_PROGRAM }, + + { "amf2", 0x020000, 0x7f162009, BRF_SND | CPS1_OKIM6295_SAMPLES }, + { "amf1", 0x020000, 0xbeade53f, BRF_SND | CPS1_OKIM6295_SAMPLES }, + + { "amf6", 0x020000, 0x3a85a275, BRF_GRA }, // extra graphics - map over normal roms to remove CAPCOM logo + { "amf9", 0x020000, 0x9156472f, BRF_GRA }, + { "amf8", 0x020000, 0xecdb083b, BRF_GRA }, + { "amf10", 0x020000, 0x8fea8384, BRF_GRA }, + + { "amf7", 0x010000, 0x13ea1c44, BRF_OPT }, // unknown +}; + +STD_ROM_PICK(Sf2amf) +STD_ROM_FN(Sf2amf) + static struct BurnRomInfo Sf2mdtRomDesc[] = { { "3.ic172", 0x0080000, 0x5301b41f, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP }, { "1.ic171", 0x0080000, 0xc1c803f6, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP }, @@ -10578,6 +10663,8 @@ static const struct GameConfig ConfigTable[] = { "sf2eb" , CPS_B_17 , mapper_STF29 , 0, NULL }, { "sf2ee" , CPS_B_18 , mapper_STF29 , 0, NULL }, { "sf2ebbl" , CPS_B_17 , mapper_STF29 , 0, NULL }, + { "sf2stt" , CPS_B_17 , mapper_STF29 , 0, NULL }, + { "sf2de" , CPS_B_17 , mapper_STF29 , 0, NULL }, { "sf2ua" , CPS_B_17 , mapper_STF29 , 0, NULL }, { "sf2ub" , CPS_B_17 , mapper_STF29 , 0, NULL }, { "sf2uc" , CPS_B_12 , mapper_STF29 , 0, NULL }, @@ -10607,7 +10694,7 @@ static const struct GameConfig ConfigTable[] = { "sf2red" , CPS_B_21_DEF, mapper_S9263B, 0, NULL }, { "sf2v004" , CPS_B_21_DEF, mapper_S9263B, 0, NULL }, { "sf2acc" , CPS_B_21_DEF, mapper_S9263B, 0, NULL }, - { "sf2acc2" , CPS_B_21_DEF, mapper_S9263B, 0, NULL }, + { "sf2acca" , CPS_B_21_DEF, mapper_S9263B, 0, NULL }, { "sf2accp2" , CPS_B_21_DEF, mapper_S9263B, 0, NULL }, { "sf2dkot2" , CPS_B_21_DEF, mapper_S9263B, 0, NULL }, { "sf2mdt" , CPS_B_21_DEF, mapper_S9263B, 0, NULL }, @@ -10635,6 +10722,7 @@ static const struct GameConfig ConfigTable[] = { "sf2yyc" , CPS_B_21_DEF, mapper_S9263B, 0, NULL }, { "sf2koryu" , CPS_B_21_DEF, mapper_S9263B, 0, NULL }, { "sf2koryu2" , CPS_B_21_DEF, mapper_S9263B, 0, NULL }, + { "sf2amf" , CPS_B_21_DEF, mapper_S9263B, 0, NULL }, { "sf2hf" , CPS_B_21_DEF, mapper_S9263B, 0, NULL }, { "sf2hfu" , CPS_B_21_DEF, mapper_S9263B, 0, NULL }, { "sf2hfj" , CPS_B_21_DEF, mapper_S9263B, 0, NULL }, @@ -12248,8 +12336,57 @@ static INT32 Sf2ebblInit() Cps1LockSpriteList910000 = 1; CpsLayer1XOffs = -12; + CpsLayer1YOffs = 1; CpsLayer2XOffs = -14; + CpsLayer2YOffs = 1; CpsLayer3XOffs = -16; + CpsLayer3YOffs = 1; + CpsDrawSpritesInReverse = 1; + + return nRet; +} + +static INT32 Sf2sttInit() +{ + Cps1GfxLoadCallbackFunction = CpsLoadTilesSf2stt; + + INT32 nRet = DrvInit(); + + // load bootleg tiles over original tiles + memset(CpsGfx + 0x400000, 0, 0x80000); + CpsLoadTilesSf2ebbl(CpsGfx + 0x400000, 13); + + Cps1LockSpriteList910000 = 1; + + CpsLayer1XOffs = -12; + CpsLayer1YOffs = 1; + CpsLayer2XOffs = -14; + CpsLayer2YOffs = 1; + CpsLayer3XOffs = -16; + CpsLayer3YOffs = 1; + CpsDrawSpritesInReverse = 1; + + return nRet; +} + +static INT32 Sf2deInit() +{ + Cps1GfxLoadCallbackFunction = CpsLoadTilesSf2stt; + + INT32 nRet = DrvInit(); + + // load bootleg tiles over original tiles + memset(CpsGfx + 0x400000, 0, 0x80000); + CpsLoadTilesSf2ebbl(CpsGfx + 0x400000, 10); + + Cps1LockSpriteList910000 = 1; + + CpsLayer1XOffs = -12; + CpsLayer1YOffs = 1; + CpsLayer2XOffs = -14; + CpsLayer2YOffs = 1; + CpsLayer3XOffs = -16; + CpsLayer3YOffs = 1; CpsDrawSpritesInReverse = 1; return nRet; @@ -12430,6 +12567,26 @@ static INT32 Sf2koryu2Init() return Sf2ceInit(); } +static INT32 Sf2amfInit() +{ + Cps1GfxLoadCallbackFunction = CpsLoadTilesSf2koryu; + + INT32 nRet = Sf2ceInit(); + + // load bootleg tiles over original tiles + memset(CpsGfx + 0x400000, 0, 0x80000); + CpsLoadTilesSf2ebbl(CpsGfx + 0x400000, 13); + + Cps1LockSpriteList910000 = 1; + + CpsLayer1XOffs = -12; + CpsLayer2XOffs = -14; + CpsLayer3XOffs = -16; + CpsDrawSpritesInReverse = 1; + + return nRet; +} + UINT8 __fastcall Sf2mdtReadByte(UINT32 a) { switch (a) { @@ -14827,6 +14984,26 @@ struct BurnDriver BurnDrvCpsSf2ebbl = { &CpsRecalcPal, 0x1000, 384, 224, 4, 3 }; +struct BurnDriver BurnDrvCpsSf2stt = { + "sf2stt", "sf2", NULL, NULL, "1992", + "Street Fighter II - the world warrior (STT, TAB Austria bootleg, 910214 etc)\0", NULL, "bootleg", "CPS1", + NULL, NULL, NULL, NULL, + BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 2, HARDWARE_CAPCOM_CPS1, GBF_VSFIGHT, FBF_SF, + NULL, Sf2sttRomInfo, Sf2sttRomName, NULL, NULL, Sf2yycInputInfo, Sf2DIPInfo, + Sf2sttInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan, + &CpsRecalcPal, 0x1000, 384, 224, 4, 3 +}; + +struct BurnDriverD BurnDrvCpsSf2de = { + "sf2de", "sf2", NULL, NULL, "1992", + "Street Fighter II - the world warrior (DE 920201, TAB Austria bootleg)\0", NULL, "bootleg", "CPS1", + NULL, NULL, NULL, NULL, + BDF_CLONE | BDF_BOOTLEG, 2, HARDWARE_CAPCOM_CPS1, GBF_VSFIGHT, FBF_SF, + NULL, Sf2deRomInfo, Sf2deRomName, NULL, NULL, Sf2yycInputInfo, Sf2DIPInfo, + Sf2deInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan, + &CpsRecalcPal, 0x1000, 384, 224, 4, 3 +}; + struct BurnDriver BurnDrvCpsSf2ua = { "sf2ua", "sf2", NULL, NULL, "1991", "Street Fighter II - the world warrior (910206 USA)\0", NULL, "Capcom", "CPS1", @@ -15067,12 +15244,12 @@ struct BurnDriver BurnDrvCpsSf2acc = { &CpsRecalcPal, 0x1000, 384, 224, 4, 3 }; -struct BurnDriver BurnDrvCpsSf2acc2 = { - "sf2acc2", "sf2ce", NULL, NULL, "1992", +struct BurnDriver BurnDrvCpsSf2acca = { + "sf2acca", "sf2ce", NULL, NULL, "1992", "Street Fighter II' - champion edition (Accelerator! bootleg set 2, 920310 Accelerator!)\0", NULL, "Capcom", "CPS1", NULL, NULL, NULL, NULL, BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 2,HARDWARE_CAPCOM_CPS1, GBF_VSFIGHT, FBF_SF, - NULL, Sf2acc2RomInfo, Sf2acc2RomName, NULL, NULL, Sf2InputInfo, Sf2DIPInfo, + NULL, Sf2accaRomInfo, Sf2accaRomName, NULL, NULL, Sf2InputInfo, Sf2DIPInfo, Sf2ceInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan, &CpsRecalcPal, 0x1000, 384, 224, 4, 3 }; @@ -15227,6 +15404,16 @@ struct BurnDriver BurnDrvCpsSf2koryu2 = { &CpsRecalcPal, 0x1000, 384, 224, 4, 3 }; +struct BurnDriver BurnDrvCpsSf2amf = { + "sf2amf", "sf2ce", NULL, NULL, "1992", + "Street Fighter II - champion edition (Alpha Magic-F, 920313 etc)\0", NULL, "bootleg", "CPS1", + NULL, NULL, NULL, NULL, + BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 2, HARDWARE_CAPCOM_CPS1, GBF_VSFIGHT, FBF_SF, + NULL, Sf2amfRomInfo, Sf2amfRomName, NULL, NULL, Sf2yycInputInfo, Sf2DIPInfo, + Sf2amfInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan, + &CpsRecalcPal, 0x1000, 384, 224, 4, 3 +}; + struct BurnDriver BurnDrvCpsSf2mdt = { "sf2mdt", "sf2ce", NULL, NULL, "1992", "Street Fighter II' - Magic Delta Turbo (bootleg set 1 (with YM2151 + 2xMSM5205), 920313 etc)\0", NULL, "Capcom", "CPS1",