Make a start on fcrash

This commit is contained in:
Barry Harris 2012-04-10 10:30:53 +00:00
parent b738053e2b
commit ecaf416adc
3 changed files with 154 additions and 0 deletions

View File

@ -599,6 +599,28 @@ INT32 CpsLoadTilesSf2mdt(INT32 nStart)
return 0; return 0;
} }
INT32 CpsLoadTilesFcrash(INT32 nStart)
{
CpsLoadOneBootlegType3(CpsGfx + 0x000000, nStart + 0, 0, 0);
CpsLoadOneBootlegType3(CpsGfx + 0x000000, nStart + 1, 0, 1);
CpsLoadOneBootlegType3(CpsGfx + 0x000000, nStart + 2, 0, 2);
CpsLoadOneBootlegType3(CpsGfx + 0x000000, nStart + 3, 0, 3);
CpsLoadOneBootlegType3(CpsGfx + 0x080000, nStart + 4, 0, 0);
CpsLoadOneBootlegType3(CpsGfx + 0x080000, nStart + 5, 0, 1);
CpsLoadOneBootlegType3(CpsGfx + 0x080000, nStart + 6, 0, 2);
CpsLoadOneBootlegType3(CpsGfx + 0x080000, nStart + 7, 0, 3);
CpsLoadOneBootlegType3(CpsGfx + 0x100000, nStart + 8, 0, 0);
CpsLoadOneBootlegType3(CpsGfx + 0x100000, nStart + 9, 0, 1);
CpsLoadOneBootlegType3(CpsGfx + 0x100000, nStart + 10, 0, 2);
CpsLoadOneBootlegType3(CpsGfx + 0x100000, nStart + 11, 0, 3);
CpsLoadOneBootlegType3(CpsGfx + 0x180000, nStart + 12, 0, 0);
CpsLoadOneBootlegType3(CpsGfx + 0x180000, nStart + 13, 0, 1);
CpsLoadOneBootlegType3(CpsGfx + 0x180000, nStart + 14, 0, 2);
CpsLoadOneBootlegType3(CpsGfx + 0x180000, nStart + 15, 0, 3);
return 0;
}
INT32 CpsLoadStars(UINT8* pStar, INT32 nStart) INT32 CpsLoadStars(UINT8* pStar, INT32 nStart)
{ {
UINT8* pTemp[2] = { NULL, NULL}; UINT8* pTemp[2] = { NULL, NULL};

View File

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

View File

@ -4882,6 +4882,39 @@ static struct BurnRomInfo FfightjhRomDesc[] = {
STD_ROM_PICK(Ffightjh) STD_ROM_PICK(Ffightjh)
STD_ROM_FN(Ffightjh) STD_ROM_FN(Ffightjh)
static struct BurnRomInfo FcrashRomDesc[] = {
{ "9.bin", 0x020000, 0xc6854c91, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
{ "5.bin", 0x020000, 0x77f7c2b3, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
{ "8.bin", 0x020000, 0x1895b3df, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
{ "4.bin", 0x020000, 0xbbd411ee, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
{ "7.bin", 0x020000, 0x5b23ebf2, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
{ "3.bin", 0x020000, 0xaba2aebe, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
{ "6.bin", 0x020000, 0xd4bf37f6, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
{ "2.bin", 0x020000, 0x07ac8f43, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
{ "18.bin", 0x020000, 0xf1eee6d9, BRF_GRA | CPS1_TILES },
{ "20.bin", 0x020000, 0x675f4537, BRF_GRA | CPS1_TILES },
{ "22.bin", 0x020000, 0xdb8a32ac, BRF_GRA | CPS1_TILES },
{ "24.bin", 0x020000, 0xf4113e57, BRF_GRA | CPS1_TILES },
{ "10.bin", 0x020000, 0xd478853e, BRF_GRA | CPS1_TILES },
{ "12.bin", 0x020000, 0x25055642, BRF_GRA | CPS1_TILES },
{ "14.bin", 0x020000, 0xb77d0328, BRF_GRA | CPS1_TILES },
{ "16.bin", 0x020000, 0xea111a79, BRF_GRA | CPS1_TILES },
{ "19.bin", 0x020000, 0xb3aa1f48, BRF_GRA | CPS1_TILES },
{ "21.bin", 0x020000, 0x04d175c9, BRF_GRA | CPS1_TILES },
{ "23.bin", 0x020000, 0xe592ba4f, BRF_GRA | CPS1_TILES },
{ "25.bin", 0x020000, 0xb89a740f, BRF_GRA | CPS1_TILES },
{ "11.bin", 0x020000, 0xd4457a60, BRF_GRA | CPS1_TILES },
{ "13.bin", 0x020000, 0x3b26a37d, BRF_GRA | CPS1_TILES },
{ "15.bin", 0x020000, 0x6d837e09, BRF_GRA | CPS1_TILES },
{ "17.bin", 0x020000, 0xc59a4d6c, BRF_GRA | CPS1_TILES },
{ "1.bin", 0x020000, 0x5b276c14, BRF_PRG | CPS1_Z80_PROGRAM },
};
STD_ROM_PICK(Fcrash)
STD_ROM_FN(Fcrash)
static struct BurnRomInfo ForgottnRomDesc[] = { static struct BurnRomInfo ForgottnRomDesc[] = {
{ "lw11.12f", 0x020000, 0x73e920b7, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP }, { "lw11.12f", 0x020000, 0x73e920b7, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
{ "lw15.12h", 0x020000, 0x50d7012d, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP }, { "lw15.12h", 0x020000, 0x50d7012d, BRF_ESS | BRF_PRG | CPS1_68K_PROGRAM_BYTESWAP },
@ -10335,6 +10368,7 @@ static const struct GameConfig ConfigTable[] =
{ "ffightj1" , CPS_B_01 , mapper_S224B , 0, NULL }, { "ffightj1" , CPS_B_01 , mapper_S224B , 0, NULL },
{ "ffightj2" , CPS_B_02 , mapper_S224B , 0, NULL }, { "ffightj2" , CPS_B_02 , mapper_S224B , 0, NULL },
{ "ffightjh" , CPS_B_01 , mapper_S224B , 0, NULL }, { "ffightjh" , CPS_B_01 , mapper_S224B , 0, NULL },
{ "fcrash" , HACK_B_3 , mapper_S224B , 0, NULL },
{ "forgottn" , CPS_B_01 , mapper_LW621 , 1, NULL }, { "forgottn" , CPS_B_01 , mapper_LW621 , 1, NULL },
{ "forgottnu" , CPS_B_01 , mapper_LW621 , 1, NULL }, { "forgottnu" , CPS_B_01 , mapper_LW621 , 1, NULL },
{ "forgottnu1" , CPS_B_01 , mapper_LWCHR , 1, NULL }, { "forgottnu1" , CPS_B_01 , mapper_LWCHR , 1, NULL },
@ -11045,6 +11079,93 @@ static INT32 DinohuntInit()
return nRet; return nRet;
} }
UINT8 __fastcall FcrashInputReadByte(UINT32 a)
{
switch (a) {
case 0x880000: {
return ~Inp000;
}
case 0x880008: {
return ~Inp018;
}
case 0x88000a: {
return ~Cpi01A;
}
case 0x88000c: {
return ~Cpi01C;
}
case 0x88000e: {
return ~Cpi01E;
}
default: {
bprintf(PRINT_NORMAL, _T("Input Read Byte %x\n"), a);
}
}
return 0;
}
UINT16 __fastcall FcrashInputReadWord(UINT32 a)
{
switch (a) {
case 0x880000: {
return (~Inp000 << 8) | ~Inp001;
}
default: {
bprintf(PRINT_NORMAL, _T("Input Read Word %x\n"), a);
}
}
return 0;
}
void __fastcall FcrashInputWriteByte(UINT32 a, UINT8 d)
{
switch (a) {
default: {
bprintf(PRINT_NORMAL, _T("Input Write Byte %x, %x\n"), a, d);
}
}
}
void __fastcall FcrashInputWriteWord(UINT32 a, UINT16 d)
{
switch (a) {
default: {
bprintf(PRINT_NORMAL, _T("Input Write word %x, %x\n"), a, d);
}
}
}
static INT32 FcrashInit()
{
Cps1DisablePSnd = 1;
bCpsUpdatePalEveryFrame = 1;
CpsLayer1XOffs = -0x3f;
CpsLayer2XOffs = -0x3c;
CpsLayer3XOffs = 0xffc0;
Cps1GfxLoadCallbackFunction = CpsLoadTilesFcrash;
INT32 nRet = DrvInit();
SekOpen(0);
SekMapHandler(1, 0x880000, 0x89ffff, SM_READ | SM_WRITE);
SekSetReadByteHandler(1, FcrashInputReadByte);
SekSetReadWordHandler(1, FcrashInputReadWord);
SekSetWriteByteHandler(1, FcrashInputWriteByte);
SekSetWriteWordHandler(1, FcrashInputWriteWord);
SekClose();
return nRet;
}
static INT32 ForgottnInit() static INT32 ForgottnInit()
{ {
INT32 nRet = 0; INT32 nRet = 0;
@ -12732,6 +12853,16 @@ struct BurnDriver BurnDrvCpsFfightjh = {
&CpsRecalcPal, 0x1000, 384, 224, 4, 3 &CpsRecalcPal, 0x1000, 384, 224, 4, 3
}; };
struct BurnDriver BurnDrvCpsFcrash = {
"fcrash", "ffight", NULL, NULL, "1990",
"Final Crash (bootleg)\0", NULL, "Playmark", "CPS1",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 2, HARDWARE_CAPCOM_CPS1, GBF_SCRFIGHT, 0,
NULL, FcrashRomInfo, FcrashRomName, NULL, NULL, FfightInputInfo, FfightDIPInfo,
FcrashInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan,
&CpsRecalcPal, 0x1000, 384, 224, 4, 3
};
struct BurnDriver BurnDrvCpsForgottn = { struct BurnDriver BurnDrvCpsForgottn = {
"forgottn", NULL, NULL, NULL, "1988", "forgottn", NULL, NULL, NULL, "1988",
"Forgotten Worlds (World)\0", NULL, "Capcom", "CPS1", "Forgotten Worlds (World)\0", NULL, "Capcom", "CPS1",