Promote sf2b to working, Haze provided full dump (well, full as in "all we have").

This commit is contained in:
Barry Harris 2013-03-30 20:20:42 +00:00
parent c575886338
commit da2f3f9ac5
3 changed files with 103 additions and 23 deletions

View File

@ -506,6 +506,46 @@ static INT32 CpsLoadOneSf2ebbl(UINT8* Tile, INT32 nNum, INT32 nWord, INT32 nShif
return 0;
}
static INT32 CpsLoadOneSf2b(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 + 4, pr = Rom; i < 0x10000; 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;
}
for (i = 0, pt = Tile, pr = Rom + 0x10000; i < 0x10000; 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;
}
static INT32 CpsLoadOneSf2koryu(UINT8* Tile, INT32 nNum, INT32 nWord, INT32 nShift)
{
UINT8 *Rom = NULL; INT32 nRomLen=0;
@ -957,6 +997,16 @@ INT32 CpsLoadTilesSf2ebbl(UINT8 *Tile, INT32 nStart)
return 0;
}
INT32 CpsLoadTilesSf2b(UINT8 *Tile, INT32 nStart)
{
CpsLoadOneSf2b(Tile, nStart + 0, 0, 0);
CpsLoadOneSf2b(Tile, nStart + 1, 0, 2);
CpsLoadOneSf2b(Tile, nStart + 2, 0, 1);
CpsLoadOneSf2b(Tile, nStart + 3, 0, 3);
return 0;
}
INT32 CpsLoadTilesSf2koryuExtra(UINT8* Tile, INT32 nStart)
{
CpsLoadOneSf2koryu(Tile, nStart + 0, 1, 0);

View File

@ -39,6 +39,7 @@ INT32 CpsLoadTilesForgottn(INT32 nStart);
INT32 CpsLoadTilesForgottnu(INT32 nStart);
INT32 CpsLoadTilesPang(UINT8 *Tile,INT32 nStart);
INT32 CpsLoadTilesSf2ebbl(UINT8 *Tile, INT32 nStart);
INT32 CpsLoadTilesSf2b(UINT8 *Tile, INT32 nStart);
INT32 CpsLoadTilesSf2koryuExtra(UINT8 *Tile, INT32 nStart);
INT32 CpsLoadTilesHack160(INT32 nStart);
INT32 CpsLoadTilesHack160Alt(INT32 nStart);

View File

@ -11,6 +11,7 @@
#define CPS1_EXTRA_TILES_SF2EBBL_400000 8
#define CPS1_EXTRA_TILES_400000 9
#define CPS1_EXTRA_TILES_SF2KORYU_400000 10
#define CPS1_EXTRA_TILES_SF2B_400000 11
typedef INT32 (*Cps1Callback)(INT32);
static Cps1Callback Cps1GfxLoadCallbackFunction = NULL;
@ -8142,25 +8143,37 @@ STD_ROM_PICK(Sf2thndr)
STD_ROM_FN(Sf2thndr)
static struct BurnRomInfo Sf2bRomDesc[] = {
{ "u3.bin", 0x020000, 0x2c9ece7c, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
{ "u4.bin", 0x020000, 0x4efb4c7a, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
{ "sf2_31a.bin", 0x020000, 0xa673143d, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
{ "sf2_38a.bin", 0x020000, 0x4c2ccef7, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
/*Street Fighter 2 bootleg
// { "sf2-4.bin", 0x020000, 0x76f9f91f, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
// { "sf2-3.bin", 0x020000, 0xe8f14362, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
This game runs on a single bootleg PCB.
It uses 2 square PLCC custom graphics chips by Altera
On chips are written ...
ALTERA EP1810LC
I have seen a similar ALTERA chip on a Killer Instinct PCB
CPU: 68000-10, Z8400 (Z80A)
SND: YM2151, OKI6295, YM3012A
OSC: 16.000Mhz, 10.000Mhz, 3.5795Mhz
Developers:
This PCB also has some 42 Pin Mask roms which are not dumped
as my reader will only accept up to 40 pin roms.
Hopefully, the existing dumped gfx roms will be the same.
If you need more info, contact me.
theguru@emuunlim.com*/
{ "sf2e_30b.11e", 0x020000, 0x57bd7051, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP }, // missing from dump (u6.bin and u5.bin match this set closest)
{ "sf2e_37b.11f", 0x020000, 0x62691cdd, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP }, // missing from dump (u6.bin and u5.bin match this set closest)
{ "sf2e_31b.12e", 0x020000, 0xa673143d, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP }, // missing from dump (u6.bin and u5.bin match this set closest)
{ "sf2e_38b.12f", 0x020000, 0x4c2ccef7, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP }, // missing from dump (u6.bin and u5.bin match this set closest)
{ "u6.bin", 0x020000, 0x5cfc3f39, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
{ "u5.bin", 0x020000, 0x47dd24b6, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
{ "sf2_29a.bin", 0x020000, 0xbb4af315, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
{ "sf2_36a.bin", 0x020000, 0xc02a13eb, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
// { "sf2-1.bin", 0x020000, 0x6de44671, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
// { "sf2-2.bin", 0x020000, 0xbf0cd819, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
{ "sf2_29b.10e", 0x020000, 0xbb4af315, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP }, // missing from dump (u6.bin and u5.bin match this set closest)
{ "sf2_36b.10f", 0x020000, 0xc02a13eb, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP }, // missing from dump (u6.bin and u5.bin match this set closest)
{ "sf2_06.bin", 0x080000, 0x22c9cc8e, BRF_GRA | CPS1_TILES },
{ "sf2_08.bin", 0x080000, 0x57213be8, BRF_GRA | CPS1_TILES },
@ -8175,10 +8188,19 @@ static struct BurnRomInfo Sf2bRomDesc[] = {
{ "sf2_24.bin", 0x080000, 0xc1befaa8, BRF_GRA | CPS1_TILES },
{ "sf2_26.bin", 0x080000, 0x0627c831, BRF_GRA | CPS1_TILES },
{ "sf2_09.bin", 0x010000, 0xa4823a1b, BRF_PRG | CPS1_Z80_PROGRAM },
{ "u7.bin", 0x010000, 0xa4823a1b, BRF_PRG | CPS1_Z80_PROGRAM },
{ "sf2_18.bin", 0x020000, 0x7f162009, BRF_SND | CPS1_OKIM6295_SAMPLES },
{ "sf2_19.bin", 0x020000, 0xbeade53f, BRF_SND | CPS1_OKIM6295_SAMPLES },
{ "u8.bin", 0x040000, 0x6cfffb11, BRF_SND | CPS1_OKIM6295_SAMPLES },
{ "sf2-1.bin", 0x020000, 0x6de44671, BRF_GRA | CPS1_EXTRA_TILES_SF2B_400000 },
{ "sf2-3.bin", 0x020000, 0xe8f14362, BRF_GRA | CPS1_EXTRA_TILES_SF2B_400000 },
{ "sf2-2.bin", 0x020000, 0xbf0cd819, BRF_GRA | CPS1_EXTRA_TILES_SF2B_400000 },
{ "sf2-4.bin", 0x020000, 0x76f9f91f, BRF_GRA | CPS1_EXTRA_TILES_SF2B_400000 },
{ "sf2-5.bin", 0x010000, 0x13ea1c44, BRF_OPT }, // unknown
{ "u3.bin", 0x020000, 0x2c9ece7c, BRF_OPT }, // seems to have most in common with some extra gfx roms, but also some program roms, maybe bad dump or maybe needing data from Altera chip?
{ "u4.bin", 0x020000, 0x4efb4c7a, BRF_OPT }, // seems to have most in common with some extra gfx roms, but also some program roms, maybe bad dump or maybe needing data from Altera chip?
};
STD_ROM_PICK(Sf2b)
@ -11691,7 +11713,7 @@ static INT32 Cps1LoadRoms(INT32 bLoad)
nCpsQSamLen += ri.nLen;
nCpsQsoundRomNum++;
}
if (((ri.nType & 0xff) == CPS1_EXTRA_TILES_SF2EBBL_400000) || ((ri.nType & 0xff) == CPS1_EXTRA_TILES_400000) || ((ri.nType & 0xff) == CPS1_EXTRA_TILES_SF2KORYU_400000)) {
if (((ri.nType & 0xff) == CPS1_EXTRA_TILES_SF2EBBL_400000) || ((ri.nType & 0xff) == CPS1_EXTRA_TILES_400000) || ((ri.nType & 0xff) == CPS1_EXTRA_TILES_SF2KORYU_400000) || ((ri.nType & 0xff) == CPS1_EXTRA_TILES_SF2B_400000)) {
nCpsExtraGfxLen += ri.nLen;
nCpsExtraTilesRomNum++;
}
@ -11879,6 +11901,13 @@ static INT32 Cps1LoadRoms(INT32 bLoad)
i += 2;
}
if ((ri.nType & 0xff) == CPS1_EXTRA_TILES_SF2B_400000) {
memset(CpsGfx + 0x400000, 0, nCpsExtraGfxLen);
CpsLoadTilesSf2b(CpsGfx + 0x400000, i);
i += 4;
}
}
}
}
@ -16329,11 +16358,11 @@ struct BurnDriver BurnDrvCpsSf2thndr = {
&CpsRecalcPal, 0x1000, 384, 224, 4, 3
};
struct BurnDriverX BurnDrvCpsSf2b = {
struct BurnDriver BurnDrvCpsSf2b = {
"sf2b", "sf2", NULL, NULL, "1991",
"Street Fighter II - the world warrior (bootleg)\0", "Bad dump?, Resets itself", "Capcom", "CPS1",
"Street Fighter II - the world warrior (bootleg, 910214 etc)\0", NULL, "Capcom", "CPS1",
NULL, NULL, NULL, NULL,
BDF_CLONE | BDF_BOOTLEG, 2, HARDWARE_CAPCOM_CPS1, GBF_VSFIGHT, FBF_SF,
BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 2, HARDWARE_CAPCOM_CPS1, GBF_VSFIGHT, FBF_SF,
NULL, Sf2bRomInfo, Sf2bRomName, NULL, NULL, Sf2InputInfo, Sf2DIPInfo,
DrvInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan,
&CpsRecalcPal, 0x1000, 384, 224, 4, 3