Add another sf2mdt set (dumped by f205v), looks like maybe one or more of the graphics roms are bad?

This commit is contained in:
Barry Harris 2012-04-23 12:45:05 +00:00
parent 765fd5b2ff
commit a32bb7c06a
3 changed files with 105 additions and 1 deletions

View File

@ -326,6 +326,34 @@ static INT32 CpsLoadOneBootlegType2(UINT8* Tile, INT32 nNum, INT32 nWord, INT32
}
static INT32 CpsLoadOneBootlegType3(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; i < nRomLen; pt += 4) {
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 CpsLoadOneBootlegType3Swap(UINT8 *Tile, INT32 nNum, INT32 nWord, INT32 nShift)
{
UINT8 *Rom = NULL; int nRomLen=0;
UINT8 *pt = NULL, *pr = NULL;
@ -347,6 +375,14 @@ static INT32 CpsLoadOneBootlegType3(UINT8 *Tile, INT32 nNum, INT32 nWord, INT32
Pix <<= nShift;
*((UINT32 *)pt) |= Pix;
b = *pr++; i++; Pix = SepTable[b];
if (nWord) {
b = *pr++; i++; Pix |= SepTable[b] << 1;
}
Pix <<= (nShift + 1);
*((UINT32 *)pt) |= Pix;
}
BurnFree(Rom);
@ -599,6 +635,18 @@ INT32 CpsLoadTilesSf2mdt(INT32 nStart)
return 0;
}
INT32 CpsLoadTilesSf2mdta(INT32 nStart)
{
CpsLoadOneBootlegType3Swap(CpsGfx + 0x000000, nStart + 0, 0, 0);
CpsLoadOneBootlegType3Swap(CpsGfx + 0x000000, nStart + 1, 0, 2);
CpsLoadOneBootlegType3Swap(CpsGfx + 0x200000, nStart + 2, 0, 0);
CpsLoadOneBootlegType3Swap(CpsGfx + 0x200000, nStart + 3, 0, 2);
CpsLoadOneBootlegType3Swap(CpsGfx + 0x400000, nStart + 4, 0, 0);
CpsLoadOneBootlegType3Swap(CpsGfx + 0x400000, nStart + 5, 0, 2);
return 0;
}
INT32 CpsLoadTilesFcrash(INT32 nStart)
{
CpsLoadOneBootlegType3(CpsGfx + 0x000000, nStart + 0, 0, 0);

View File

@ -44,6 +44,7 @@ INT32 CpsLoadTilesPunipic2(UINT8 *Tile, INT32 nStart);
INT32 CpsLoadTilesSf2ebbl(UINT8 *Tile, INT32 nStart);
INT32 CpsLoadTilesSf2koryu(INT32 nStart);
INT32 CpsLoadTilesSf2mdt(INT32 nStart);
INT32 CpsLoadTilesSf2mdta(INT32 nStart);
INT32 CpsLoadTilesFcrash(INT32 nStart);
INT32 CpsLoadTilesCawingbl(INT32 nStart);
INT32 CpsLoadStars(UINT8 *pStar, INT32 nStart);

View File

@ -8342,6 +8342,26 @@ static struct BurnRomInfo Sf2mdtRomDesc[] = {
STD_ROM_PICK(Sf2mdt)
STD_ROM_FN(Sf2mdt)
static struct BurnRomInfo Sf2mdtaRomDesc[] = {
{ "3.bin", 0x0080000, 0x9f544ef4, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
{ "5.bin", 0x0080000, 0xd76d6621, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
{ "2.bin", 0x0020000, 0x74844192, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
{ "4.bin", 0x0020000, 0xbd98ff15, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
// is there a bad dump here? some of the sprites have vertical lines, whilst others are fine
{ "pf4-sh058.ic89", 0x0100000, 0x40fdf624, BRF_GRA | CPS1_TILES },
{ "pf7-sh072.ic92", 0x0100000, 0xfb78022e, BRF_GRA | CPS1_TILES },
{ "pf5-sh036.ic90", 0x0100000, 0x0a6be48b, BRF_GRA | CPS1_TILES },
{ "pf8-sh074.ic93", 0x0100000, 0x6258c7cf, BRF_GRA | CPS1_TILES },
{ "pf6-sh070.ic88", 0x0100000, 0x9b5b09d7, BRF_GRA | CPS1_TILES },
{ "pf9-sh001.ic91", 0x0100000, 0x9f25090e, BRF_GRA | CPS1_TILES },
{ "1.ic28", 0x0020000, 0xd5bee9cc, BRF_PRG | CPS1_Z80_PROGRAM },
};
STD_ROM_PICK(Sf2mdta)
STD_ROM_FN(Sf2mdta)
static struct BurnRomInfo Sf2m1RomDesc[] = {
{ "222e", 0x0080000, 0x1e20d0a3, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
{ "196e", 0x0080000, 0x88cc38a3, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
@ -10422,6 +10442,7 @@ static const struct GameConfig ConfigTable[] =
{ "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 },
{ "sf2mdta" , CPS_B_21_DEF, mapper_S9263B, 0, NULL },
{ "sf2m1" , CPS_B_21_DEF, mapper_S9263B, 0, NULL },
{ "sf2m2" , CPS_B_21_DEF, mapper_S9263B, 0, NULL },
{ "sf2m3" , HACK_B_2 , mapper_S9263B, 0, NULL },
@ -12071,6 +12092,30 @@ static INT32 Sf2mdtInit()
return nRet;
}
static INT32 Sf2mdtaInit()
{
Cps1GfxLoadCallbackFunction = CpsLoadTilesSf2mdta;
Cps1DisablePSnd = 1;
CpsRunInitCallbackFunction = Sf2mdtSoundInit;
CpsRunResetCallbackFunction = Sf2mdtSoundReset;
CpsRunExitCallbackFunction = Sf2mdtSoundExit;
CpsRunFrameStartCallbackFunction = Sf2mdtSoundFrameStart;
CpsRunFrameEndCallbackFunction = Sf2mdtSoundFrameEnd;
CpsRWSoundCommandCallbackFunction = Sf2mdtSoundCommand;
INT32 nRet = Sf2ceInit();
SekOpen(0);
SekMapMemory(CpsRamFF, 0xfc0000, 0xfcffff, SM_RAM);
SekMapHandler(1, 0x70c000, 0x70cfff, SM_READ);
SekSetReadByteHandler(1, Sf2mdtReadByte);
SekSetReadWordHandler(1, Sf2mdtReadWord);
SekClose();
return nRet;
}
void __fastcall Sf2hfjbWriteByte(UINT32 a, UINT8 d)
{
CpsWritePort(a & 0x1ff, d);
@ -14787,7 +14832,7 @@ struct BurnDriver BurnDrvCpsSf2koryu2 = {
struct BurnDriverD BurnDrvCpsSf2mdt = {
"sf2mdt", "sf2ce", NULL, NULL, "1992",
"Street Fighter II' - Magic Delta Turbo (bootleg)\0", "Incorrect graphics", "Capcom", "CPS1",
"Street Fighter II' - Magic Delta Turbo (bootleg set 1)\0", "Incorrect graphics", "Capcom", "CPS1",
NULL, NULL, NULL, NULL,
BDF_CLONE | BDF_BOOTLEG, 2, HARDWARE_CAPCOM_CPS1, GBF_VSFIGHT, FBF_SF,
NULL, Sf2mdtRomInfo, Sf2mdtRomName, NULL, NULL, Sf2InputInfo, Sf2DIPInfo,
@ -14795,6 +14840,16 @@ struct BurnDriverD BurnDrvCpsSf2mdt = {
&CpsRecalcPal, 0x1000, 384, 224, 4, 3
};
struct BurnDriverD BurnDrvCpsSf2mdta = {
"sf2mdta", "sf2ce", NULL, NULL, "1992",
"Street Fighter II' - Magic Delta Turbo (bootleg set 2)\0", "Incorrect graphics", "Capcom", "CPS1",
NULL, NULL, NULL, NULL,
BDF_CLONE | BDF_BOOTLEG, 2, HARDWARE_CAPCOM_CPS1, GBF_VSFIGHT, FBF_SF,
NULL, Sf2mdtaRomInfo, Sf2mdtaRomName, NULL, NULL, Sf2InputInfo, Sf2DIPInfo,
Sf2mdtaInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan,
&CpsRecalcPal, 0x1000, 384, 224, 4, 3
};
struct BurnDriver BurnDrvCpsSf2m1 = {
"sf2m1", "sf2ce", NULL, NULL, "1992",
"Street Fighter II' - champion edition (bootleg, M1)\0", NULL, "Capcom", "CPS1",