Tidy some CPS-1 custom gfx load routines (avoid loading files unnecessarily!)

This commit is contained in:
Barry Harris 2012-04-24 14:25:31 +00:00
parent e80f5c0413
commit d96a270d27
3 changed files with 113 additions and 210 deletions

View File

@ -176,9 +176,9 @@ static INT32 CpsLoadOnePang(UINT8 *Tile,INT32 nNum,INT32 nWord,INT32 nShift)
return 0; return 0;
} }
static INT32 CpsLoadOneHack160(UINT8 *Tile, INT32 nNum, INT32 nWord, INT32 nOffset) static INT32 CpsLoadOneHack160(UINT8 *Tile, INT32 nNum, INT32 nWord, INT32 nType)
{ {
INT32 i = 0; INT32 i = 0, j = 0;
UINT8 *Rom1 = NULL, *Rom2 = NULL; UINT8 *Rom1 = NULL, *Rom2 = NULL;
INT32 nRomLen1 = 0, nRomLen2 = 0; INT32 nRomLen1 = 0, nRomLen2 = 0;
UINT8 *pt = NULL, *pr = NULL; UINT8 *pt = NULL, *pr = NULL;
@ -192,7 +192,14 @@ static INT32 CpsLoadOneHack160(UINT8 *Tile, INT32 nNum, INT32 nWord, INT32 nOffs
return 1; return 1;
} }
for (i = 0, pt = Tile, pr = Rom1 + (0x80000 * nOffset); i < 0x80000; pt += 8) { INT32 TileOffset[4] = { 0x000000, 0x000004, 0x200000, 0x200004 };
if (nType == 1) {
TileOffset[1] = 0x200000;
TileOffset[2] = 0x000004;
}
for (j = 0; j < 4; j++) {
for (i = 0, pt = Tile + TileOffset[j], pr = Rom1 + (0x80000 * j); i < 0x80000; pt += 8) {
UINT32 Pix; // Eight pixels UINT32 Pix; // Eight pixels
UINT8 b; UINT8 b;
b = *pr++; i++; Pix = SepTable[b]; b = *pr++; i++; Pix = SepTable[b];
@ -204,7 +211,7 @@ static INT32 CpsLoadOneHack160(UINT8 *Tile, INT32 nNum, INT32 nWord, INT32 nOffs
*((UINT32 *)pt) |= Pix; *((UINT32 *)pt) |= Pix;
} }
for (i = 0, pt = Tile, pr = Rom2 + (0x80000 * nOffset); i < 0x80000; pt += 8) { for (i = 0, pt = Tile + TileOffset[j], pr = Rom2 + (0x80000 * j); i < 0x80000; pt += 8) {
UINT32 Pix; // Eight pixels UINT32 Pix; // Eight pixels
UINT8 b; UINT8 b;
b = *pr++; i++; Pix = SepTable[b]; b = *pr++; i++; Pix = SepTable[b];
@ -215,6 +222,7 @@ static INT32 CpsLoadOneHack160(UINT8 *Tile, INT32 nNum, INT32 nWord, INT32 nOffs
Pix <<= 2; Pix <<= 2;
*((UINT32 *)pt) |= Pix; *((UINT32 *)pt) |= Pix;
} }
}
BurnFree(Rom2); BurnFree(Rom2);
BurnFree(Rom1); BurnFree(Rom1);
@ -555,19 +563,9 @@ INT32 CpsLoadTilesPang(UINT8* Tile, INT32 nStart)
return 0; return 0;
} }
INT32 CpsLoadTilesHack160(UINT8* Tile, INT32 nStart) static INT32 CpsLoadTilesBootleg(UINT8 *Tile, INT32 nStart)
{ {
CpsLoadOneHack160(Tile + 0 + 0x000000, nStart, 1, 0); CpsLoadOneBootleg(Tile, nStart + 0, 0, 0);
CpsLoadOneHack160(Tile + 4 + 0x000000, nStart, 1, 1);
CpsLoadOneHack160(Tile + 0 + 0x200000, nStart, 1, 2);
CpsLoadOneHack160(Tile + 4 + 0x200000, nStart, 1, 3);
return 0;
}
INT32 CpsLoadTilesBootleg(UINT8 *Tile, INT32 nStart)
{
CpsLoadOneBootleg(Tile, nStart, 0, 0);
CpsLoadOneBootleg(Tile, nStart + 1, 0, 1); CpsLoadOneBootleg(Tile, nStart + 1, 0, 1);
CpsLoadOneBootleg(Tile, nStart + 2, 0, 2); CpsLoadOneBootleg(Tile, nStart + 2, 0, 2);
CpsLoadOneBootleg(Tile, nStart + 3, 0, 3); CpsLoadOneBootleg(Tile, nStart + 3, 0, 3);
@ -575,26 +573,6 @@ INT32 CpsLoadTilesBootleg(UINT8 *Tile, INT32 nStart)
return 0; return 0;
} }
INT32 CpsLoadTilesCaptcomb(UINT8 *Tile, INT32 nStart)
{
CpsLoadOneBootlegType2(Tile, nStart, 0, 0);
CpsLoadOneBootlegType2(Tile, nStart + 1, 0, 1);
CpsLoadOneBootlegType2(Tile, nStart + 2, 0, 2);
CpsLoadOneBootlegType2(Tile, nStart + 3, 0, 3);
return 0;
}
INT32 CpsLoadTilesPunipic2(UINT8 *Tile, INT32 nStart)
{
CpsLoadOneHack160(Tile + 0 + 0x000000, nStart, 1, 0);
CpsLoadOneHack160(Tile + 0 + 0x200000, nStart, 1, 1);
CpsLoadOneHack160(Tile + 4 + 0x000000, nStart, 1, 2);
CpsLoadOneHack160(Tile + 4 + 0x200000, nStart, 1, 3);
return 0;
}
INT32 CpsLoadTilesSf2ebbl(UINT8 *Tile, INT32 nStart) INT32 CpsLoadTilesSf2ebbl(UINT8 *Tile, INT32 nStart)
{ {
CpsLoadOneSf2ebbl(Tile, nStart + 0, 0, 0); CpsLoadOneSf2ebbl(Tile, nStart + 0, 0, 0);
@ -605,6 +583,30 @@ INT32 CpsLoadTilesSf2ebbl(UINT8 *Tile, INT32 nStart)
return 0; return 0;
} }
static INT32 CpsLoadTilesBootlegType3(UINT8 *Tile, INT32 nStart)
{
CpsLoadOneBootlegType3(Tile, nStart + 0, 0, 0);
CpsLoadOneBootlegType3(Tile, nStart + 1, 0, 1);
CpsLoadOneBootlegType3(Tile, nStart + 2, 0, 2);
CpsLoadOneBootlegType3(Tile, nStart + 3, 0, 3);
return 0;
}
INT32 CpsLoadTilesHack160(INT32 nStart)
{
CpsLoadOneHack160(CpsGfx, nStart, 1, 0);
return 0;
}
INT32 CpsLoadTilesHack160Alt(INT32 nStart)
{
CpsLoadOneHack160(CpsGfx, nStart, 1, 1);
return 0;
}
INT32 CpsLoadTilesSf2koryu(INT32 nStart) INT32 CpsLoadTilesSf2koryu(INT32 nStart)
{ {
CpsLoadOneSf2koryu(CpsGfx + 0x000000, nStart + 0, 1, 0); CpsLoadOneSf2koryu(CpsGfx + 0x000000, nStart + 0, 1, 0);
@ -619,18 +621,9 @@ INT32 CpsLoadTilesSf2koryu(INT32 nStart)
INT32 CpsLoadTilesSf2mdt(INT32 nStart) INT32 CpsLoadTilesSf2mdt(INT32 nStart)
{ {
CpsLoadOneBootlegType3(CpsGfx + 0x000000, nStart + 0, 0, 0); CpsLoadTilesBootlegType3(CpsGfx + 0x000000, nStart + 0);
CpsLoadOneBootlegType3(CpsGfx + 0x000000, nStart + 1, 0, 1); CpsLoadTilesBootlegType3(CpsGfx + 0x200000, nStart + 4);
CpsLoadOneBootlegType3(CpsGfx + 0x000000, nStart + 2, 0, 2); CpsLoadTilesBootlegType3(CpsGfx + 0x400000, nStart + 8);
CpsLoadOneBootlegType3(CpsGfx + 0x000000, nStart + 3, 0, 3);
CpsLoadOneBootlegType3(CpsGfx + 0x200000, nStart + 4, 0, 0);
CpsLoadOneBootlegType3(CpsGfx + 0x200000, nStart + 5, 0, 1);
CpsLoadOneBootlegType3(CpsGfx + 0x200000, nStart + 6, 0, 2);
CpsLoadOneBootlegType3(CpsGfx + 0x200000, nStart + 7, 0, 3);
CpsLoadOneBootlegType3(CpsGfx + 0x400000, nStart + 8, 0, 0);
CpsLoadOneBootlegType3(CpsGfx + 0x400000, nStart + 9, 0, 1);
CpsLoadOneBootlegType3(CpsGfx + 0x400000, nStart + 10, 0, 2);
CpsLoadOneBootlegType3(CpsGfx + 0x400000, nStart + 11, 0, 3);
return 0; return 0;
} }
@ -649,32 +642,42 @@ INT32 CpsLoadTilesSf2mdta(INT32 nStart)
INT32 CpsLoadTilesFcrash(INT32 nStart) INT32 CpsLoadTilesFcrash(INT32 nStart)
{ {
CpsLoadOneBootlegType3(CpsGfx + 0x000000, nStart + 0, 0, 0); CpsLoadTilesBootlegType3(CpsGfx + 0x000000, nStart + 0);
CpsLoadOneBootlegType3(CpsGfx + 0x000000, nStart + 1, 0, 1); CpsLoadTilesBootlegType3(CpsGfx + 0x080000, nStart + 4);
CpsLoadOneBootlegType3(CpsGfx + 0x000000, nStart + 2, 0, 2); CpsLoadTilesBootlegType3(CpsGfx + 0x100000, nStart + 8);
CpsLoadOneBootlegType3(CpsGfx + 0x000000, nStart + 3, 0, 3); CpsLoadTilesBootlegType3(CpsGfx + 0x180000, nStart + 12);
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; return 0;
} }
INT32 CpsLoadTilesCawingbl(INT32 nStart) INT32 CpsLoadTilesCawingbl(INT32 nStart)
{ {
CpsLoadOneBootlegType3(CpsGfx + 0x000000, nStart + 0, 0, 0); CpsLoadTilesBootlegType3(CpsGfx + 0x000000, nStart + 0);
CpsLoadOneBootlegType3(CpsGfx + 0x000000, nStart + 1, 0, 1);
CpsLoadOneBootlegType3(CpsGfx + 0x000000, nStart + 2, 0, 2); return 0;
CpsLoadOneBootlegType3(CpsGfx + 0x000000, nStart + 3, 0, 3); }
INT32 CpsLoadTilesCaptcommb(INT32 nStart)
{
CpsLoadOneBootlegType2(CpsGfx + 0x000000, nStart + 0, 0, 0);
CpsLoadOneBootlegType2(CpsGfx + 0x000000, nStart + 1, 0, 1);
CpsLoadOneBootlegType2(CpsGfx + 0x000000, nStart + 2, 0, 2);
CpsLoadOneBootlegType2(CpsGfx + 0x000000, nStart + 3, 0, 3);
return 0;
}
INT32 CpsLoadTilesDinopic(INT32 nStart)
{
CpsLoadTilesBootleg(CpsGfx + 0x000000, nStart + 0);
CpsLoadTilesBootleg(CpsGfx + 0x200000, nStart + 4);
return 0;
}
INT32 CpsLoadTilesKodb(INT32 nStart)
{
CpsLoadTilesByte(CpsGfx, nStart);
return 0; return 0;
} }

View File

@ -37,16 +37,17 @@ INT32 CpsLoadTilesByte(UINT8 *Tile,INT32 nStart);
INT32 CpsLoadTilesForgottn(INT32 nStart); INT32 CpsLoadTilesForgottn(INT32 nStart);
INT32 CpsLoadTilesForgottnu(INT32 nStart); INT32 CpsLoadTilesForgottnu(INT32 nStart);
INT32 CpsLoadTilesPang(UINT8 *Tile,INT32 nStart); INT32 CpsLoadTilesPang(UINT8 *Tile,INT32 nStart);
INT32 CpsLoadTilesHack160(UINT8 *Tile,INT32 nStart);
INT32 CpsLoadTilesBootleg(UINT8 *Tile, INT32 nStart);
INT32 CpsLoadTilesCaptcomb(UINT8 *Tile, INT32 nStart);
INT32 CpsLoadTilesPunipic2(UINT8 *Tile, INT32 nStart);
INT32 CpsLoadTilesSf2ebbl(UINT8 *Tile, INT32 nStart); INT32 CpsLoadTilesSf2ebbl(UINT8 *Tile, INT32 nStart);
INT32 CpsLoadTilesHack160(INT32 nStart);
INT32 CpsLoadTilesHack160Alt(INT32 nStart);
INT32 CpsLoadTilesSf2koryu(INT32 nStart); INT32 CpsLoadTilesSf2koryu(INT32 nStart);
INT32 CpsLoadTilesSf2mdt(INT32 nStart); INT32 CpsLoadTilesSf2mdt(INT32 nStart);
INT32 CpsLoadTilesSf2mdta(INT32 nStart); INT32 CpsLoadTilesSf2mdta(INT32 nStart);
INT32 CpsLoadTilesFcrash(INT32 nStart); INT32 CpsLoadTilesFcrash(INT32 nStart);
INT32 CpsLoadTilesCawingbl(INT32 nStart); INT32 CpsLoadTilesCawingbl(INT32 nStart);
INT32 CpsLoadTilesCaptcommb(INT32 nStart);
INT32 CpsLoadTilesDinopic(INT32 nStart);
INT32 CpsLoadTilesKodb(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

@ -10812,20 +10812,14 @@ static INT32 TwelveMhzInit()
static INT32 CaptcommbInit() static INT32 CaptcommbInit()
{ {
INT32 nRet = 0;
CpsLayer1XOffs = -8; CpsLayer1XOffs = -8;
CpsLayer2XOffs = -11; CpsLayer2XOffs = -11;
CpsLayer3XOffs = -12; CpsLayer3XOffs = -12;
CpsDrawSpritesInReverse = 1; CpsDrawSpritesInReverse = 1;
Cps1DetectEndSpriteList8000 = 1; Cps1DetectEndSpriteList8000 = 1;
Cps1GfxLoadCallbackFunction = CpsLoadTilesCaptcommb;
nRet = DrvInit(); return DrvInit();
memset(CpsGfx, 0, nCpsGfxLen);
CpsLoadTilesCaptcomb(CpsGfx, 4);
return nRet;
} }
static INT32 Captcommb2Init() static INT32 Captcommb2Init()
@ -11011,15 +11005,12 @@ static INT32 DinopicInit()
INT32 nRet = 0; INT32 nRet = 0;
Cps1DisablePSnd = 1; Cps1DisablePSnd = 1;
Cps1GfxLoadCallbackFunction = CpsLoadTilesDinopic;
Cps1ObjGetCallbackFunction = DinopicObjGet; Cps1ObjGetCallbackFunction = DinopicObjGet;
Cps1ObjDrawCallbackFunction = FcrashObjDraw; Cps1ObjDrawCallbackFunction = FcrashObjDraw;
nRet = TwelveMhzInit(); nRet = TwelveMhzInit();
memset(CpsGfx, 0, nCpsGfxLen);
CpsLoadTilesBootleg(CpsGfx + 0x000000, 4);
CpsLoadTilesBootleg(CpsGfx + 0x200000, 8);
CpsBootlegSpriteRam = (UINT8*)BurnMalloc(0x2000); CpsBootlegSpriteRam = (UINT8*)BurnMalloc(0x2000);
SekOpen(0); SekOpen(0);
@ -11066,17 +11057,11 @@ static void DinotCallback()
static INT32 DinotInit() static INT32 DinotInit()
{ {
INT32 nRet = 0;
Cps1QsHack = 1; Cps1QsHack = 1;
AmendProgRomCallback = DinotCallback; AmendProgRomCallback = DinotCallback;
Cps1GfxLoadCallbackFunction = CpsLoadTilesHack160;
nRet = TwelveMhzInit(); return TwelveMhzInit();
memset(CpsGfx, 0, nCpsGfxLen);
CpsLoadTilesHack160(CpsGfx, 2);
return nRet;
} }
static INT32 DinotpicInit() static INT32 DinotpicInit()
@ -11084,14 +11069,12 @@ static INT32 DinotpicInit()
INT32 nRet = 0; INT32 nRet = 0;
Cps1DisablePSnd = 1; Cps1DisablePSnd = 1;
Cps1GfxLoadCallbackFunction = CpsLoadTilesHack160;
Cps1ObjGetCallbackFunction = DinopicObjGet; Cps1ObjGetCallbackFunction = DinopicObjGet;
Cps1ObjDrawCallbackFunction = FcrashObjDraw; Cps1ObjDrawCallbackFunction = FcrashObjDraw;
nRet = TwelveMhzInit(); nRet = TwelveMhzInit();
memset(CpsGfx, 0, nCpsGfxLen);
CpsLoadTilesHack160(CpsGfx, 2);
CpsBootlegSpriteRam = (UINT8*)BurnMalloc(0x2000); CpsBootlegSpriteRam = (UINT8*)BurnMalloc(0x2000);
SekOpen(0); SekOpen(0);
@ -11593,14 +11576,12 @@ static INT32 KodbInit()
INT32 nRet = 0; INT32 nRet = 0;
Kodb = 1; Kodb = 1;
Cps1GfxLoadCallbackFunction = CpsLoadTilesKodb;
Cps1ObjGetCallbackFunction = KodbObjGet; Cps1ObjGetCallbackFunction = KodbObjGet;
Cps1ObjDrawCallbackFunction = FcrashObjDraw; Cps1ObjDrawCallbackFunction = FcrashObjDraw;
nRet = DrvInit(); nRet = DrvInit();
memset(CpsGfx, 0, nCpsGfxLen);
CpsLoadTilesByte(CpsGfx, 2);
SekOpen(0); SekOpen(0);
SekMapHandler(1, 0x980000, 0x99ffff, SM_WRITE); SekMapHandler(1, 0x980000, 0x99ffff, SM_WRITE);
SekSetWriteWordHandler(1, Kodb98WriteWord); SekSetWriteWordHandler(1, Kodb98WriteWord);
@ -11758,16 +11739,12 @@ static INT32 PunipicInit()
Cps1DisablePSnd = 1; Cps1DisablePSnd = 1;
bCpsUpdatePalEveryFrame = 1; bCpsUpdatePalEveryFrame = 1;
Cps1OverrideLayers = 1; Cps1OverrideLayers = 1;
Cps1GfxLoadCallbackFunction = CpsLoadTilesDinopic;
Cps1ObjGetCallbackFunction = DinopicObjGet; Cps1ObjGetCallbackFunction = DinopicObjGet;
Cps1ObjDrawCallbackFunction = FcrashObjDraw; Cps1ObjDrawCallbackFunction = FcrashObjDraw;
INT32 nRet = TwelveMhzInit(); INT32 nRet = TwelveMhzInit();
memset(CpsGfx, 0, nCpsGfxLen);
CpsLoadTilesBootleg(CpsGfx + 0x000000, 4);
CpsLoadTilesBootleg(CpsGfx + 0x200000, 8);
CpsBootlegSpriteRam = (UINT8*)BurnMalloc(0x4000); CpsBootlegSpriteRam = (UINT8*)BurnMalloc(0x4000);
SekOpen(0); SekOpen(0);
@ -11786,15 +11763,12 @@ static INT32 Punipic2Init()
Cps1DisablePSnd = 1; Cps1DisablePSnd = 1;
bCpsUpdatePalEveryFrame = 1; bCpsUpdatePalEveryFrame = 1;
Cps1OverrideLayers = 1; Cps1OverrideLayers = 1;
Cps1GfxLoadCallbackFunction = CpsLoadTilesHack160Alt;
Cps1ObjGetCallbackFunction = DinopicObjGet; Cps1ObjGetCallbackFunction = DinopicObjGet;
Cps1ObjDrawCallbackFunction = FcrashObjDraw; Cps1ObjDrawCallbackFunction = FcrashObjDraw;
INT32 nRet = TwelveMhzInit(); INT32 nRet = TwelveMhzInit();
memset(CpsGfx, 0, nCpsGfxLen);
CpsLoadTilesPunipic2(CpsGfx, 4);
CpsBootlegSpriteRam = (UINT8*)BurnMalloc(0x4000); CpsBootlegSpriteRam = (UINT8*)BurnMalloc(0x4000);
SekOpen(0); SekOpen(0);
@ -11813,15 +11787,12 @@ static INT32 Punipic3Init()
Cps1DisablePSnd = 1; Cps1DisablePSnd = 1;
bCpsUpdatePalEveryFrame = 1; bCpsUpdatePalEveryFrame = 1;
Cps1OverrideLayers = 1; Cps1OverrideLayers = 1;
Cps1GfxLoadCallbackFunction = CpsLoadTilesHack160;
Cps1ObjGetCallbackFunction = DinopicObjGet; Cps1ObjGetCallbackFunction = DinopicObjGet;
Cps1ObjDrawCallbackFunction = FcrashObjDraw; Cps1ObjDrawCallbackFunction = FcrashObjDraw;
INT32 nRet = TwelveMhzInit(); INT32 nRet = TwelveMhzInit();
memset(CpsGfx, 0, nCpsGfxLen);
CpsLoadTilesHack160(CpsGfx, 4);
CpsBootlegSpriteRam = (UINT8*)BurnMalloc(0x4000); CpsBootlegSpriteRam = (UINT8*)BurnMalloc(0x4000);
SekOpen(0); SekOpen(0);
@ -11846,6 +11817,7 @@ static INT32 Sf2ebblInit()
{ {
INT32 nRet = DrvInit(); INT32 nRet = DrvInit();
// load bootleg tiles over original tiles
memset(CpsGfx + 0x400000, 0, 0x80000); memset(CpsGfx + 0x400000, 0, 0x80000);
CpsLoadTilesSf2ebbl(CpsGfx + 0x400000, 19); CpsLoadTilesSf2ebbl(CpsGfx + 0x400000, 19);
@ -12705,48 +12677,13 @@ static INT32 WofhInit()
CpsLayer1XOffs = 0xffc0; CpsLayer1XOffs = 0xffc0;
CpsLayer2XOffs = 0xffc0; CpsLayer2XOffs = 0xffc0;
CpsLayer3XOffs = 0xffc0; CpsLayer3XOffs = 0xffc0;
Cps1GfxLoadCallbackFunction = CpsLoadTilesHack160;
AmendProgRomCallback = WofhCallback; AmendProgRomCallback = WofhCallback;
Cps1ObjGetCallbackFunction = WofhObjGet; Cps1ObjGetCallbackFunction = WofhObjGet;
Cps1ObjDrawCallbackFunction = FcrashObjDraw; Cps1ObjDrawCallbackFunction = FcrashObjDraw;
nRet = TwelveMhzInit(); nRet = TwelveMhzInit();
memset(CpsGfx, 0, nCpsGfxLen);
CpsLoadTilesHack160(CpsGfx, 1);
SekOpen(0);
SekMapHandler(3, 0x880000, 0x89ffff, SM_READ | SM_WRITE);
SekSetReadByteHandler(3, WofhInputReadByte);
SekSetReadWordHandler(3, WofhInputReadWord);
SekSetWriteByteHandler(3, WofhInputWriteByte);
SekSetWriteWordHandler(3, WofhInputWriteWord);
SekMapHandler(4, 0x135000, 0x135fff, SM_READ);
SekSetReadByteHandler(4, Wofh135ReadByte);
SekSetReadWordHandler(4, Wofh135ReadWord);
SekClose();
return nRet;
}
static INT32 WofhaInit()
{
INT32 nRet = 0;
bCpsUpdatePalEveryFrame = 1;
CpsLayer1XOffs = 0xffc0;
CpsLayer2XOffs = 0xffc0;
CpsLayer3XOffs = 0xffc0;
AmendProgRomCallback = WofhCallback;
Cps1ObjGetCallbackFunction = WofhObjGet;
Cps1ObjDrawCallbackFunction = FcrashObjDraw;
nRet = TwelveMhzInit();
memset(CpsGfx, 0, nCpsGfxLen);
CpsLoadTilesHack160(CpsGfx, 2);
SekOpen(0); SekOpen(0);
SekMapHandler(3, 0x880000, 0x89ffff, SM_READ | SM_WRITE); SekMapHandler(3, 0x880000, 0x89ffff, SM_READ | SM_WRITE);
SekSetReadByteHandler(3, WofhInputReadByte); SekSetReadByteHandler(3, WofhInputReadByte);
@ -12788,16 +12725,13 @@ static INT32 SgyxzInit()
CpsLayer1XOffs = 0xffc0; CpsLayer1XOffs = 0xffc0;
CpsLayer2XOffs = 0xffc0; CpsLayer2XOffs = 0xffc0;
CpsLayer3XOffs = 0xffc0; CpsLayer3XOffs = 0xffc0;
Cps1GfxLoadCallbackFunction = CpsLoadTilesHack160;
AmendProgRomCallback = SgyxzCallback; AmendProgRomCallback = SgyxzCallback;
Cps1ObjGetCallbackFunction = WofhObjGet; Cps1ObjGetCallbackFunction = WofhObjGet;
Cps1ObjDrawCallbackFunction = FcrashObjDraw; Cps1ObjDrawCallbackFunction = FcrashObjDraw;
nRet = TwelveMhzInit(); nRet = TwelveMhzInit();
memset(CpsGfx, 0, nCpsGfxLen);
CpsLoadTilesHack160(CpsGfx, 2);
SekOpen(0); SekOpen(0);
SekMapHandler(3, 0x880000, 0x89ffff, SM_READ | SM_WRITE); SekMapHandler(3, 0x880000, 0x89ffff, SM_READ | SM_WRITE);
SekSetReadByteHandler(3, WofhInputReadByte); SekSetReadByteHandler(3, WofhInputReadByte);
@ -12934,15 +12868,12 @@ static INT32 Wof3jsaInit()
CpsLayer1XOffs = 0xffc0; CpsLayer1XOffs = 0xffc0;
CpsLayer2XOffs = 0xffc0; CpsLayer2XOffs = 0xffc0;
CpsLayer3XOffs = 0xffc0; CpsLayer3XOffs = 0xffc0;
Cps1GfxLoadCallbackFunction = CpsLoadTilesHack160;
Cps1ObjGetCallbackFunction = WofhObjGet; Cps1ObjGetCallbackFunction = WofhObjGet;
Cps1ObjDrawCallbackFunction = FcrashObjDraw; Cps1ObjDrawCallbackFunction = FcrashObjDraw;
INT32 nRet = TwelveMhzInit(); INT32 nRet = TwelveMhzInit();
memset(CpsGfx, 0, nCpsGfxLen);
CpsLoadTilesHack160(CpsGfx, 2);
SekOpen(0); SekOpen(0);
SekMapHandler(3, 0x880000, 0x89ffff, SM_READ | SM_WRITE); SekMapHandler(3, 0x880000, 0x89ffff, SM_READ | SM_WRITE);
SekSetReadByteHandler(3, Wof3jsaInputReadByte); SekSetReadByteHandler(3, Wof3jsaInputReadByte);
@ -13044,41 +12975,12 @@ static INT32 Wof3sjInit()
CpsLayer1XOffs = 0xffc0; CpsLayer1XOffs = 0xffc0;
CpsLayer2XOffs = 0xffc0; CpsLayer2XOffs = 0xffc0;
CpsLayer3XOffs = 0xffc0; CpsLayer3XOffs = 0xffc0;
Cps1GfxLoadCallbackFunction = CpsLoadTilesHack160;
Cps1ObjGetCallbackFunction = WofhObjGet; Cps1ObjGetCallbackFunction = WofhObjGet;
Cps1ObjDrawCallbackFunction = FcrashObjDraw; Cps1ObjDrawCallbackFunction = FcrashObjDraw;
INT32 nRet = TwelveMhzInit(); INT32 nRet = TwelveMhzInit();
memset(CpsGfx, 0, nCpsGfxLen);
CpsLoadTilesHack160(CpsGfx, 2);
SekOpen(0);
SekMapHandler(3, 0x880000, 0x89ffff, SM_READ | SM_WRITE);
SekSetReadByteHandler(3, Wof3sjInputReadByte);
SekSetReadWordHandler(3, Wof3sjInputReadWord);
SekSetWriteByteHandler(3, Wof3sjInputWriteByte);
SekSetWriteWordHandler(3, Wof3sjInputWriteWord);
SekClose();
return nRet;
}
static INT32 Wof3sjaInit()
{
bCpsUpdatePalEveryFrame = 1;
CpsLayer1XOffs = 0xffc0;
CpsLayer2XOffs = 0xffc0;
CpsLayer3XOffs = 0xffc0;
Cps1ObjGetCallbackFunction = WofhObjGet;
Cps1ObjDrawCallbackFunction = FcrashObjDraw;
INT32 nRet = TwelveMhzInit();
memset(CpsGfx, 0, nCpsGfxLen);
CpsLoadTilesHack160(CpsGfx, 1);
SekOpen(0); SekOpen(0);
SekMapHandler(3, 0x880000, 0x89ffff, SM_READ | SM_WRITE); SekMapHandler(3, 0x880000, 0x89ffff, SM_READ | SM_WRITE);
SekSetReadByteHandler(3, Wof3sjInputReadByte); SekSetReadByteHandler(3, Wof3sjInputReadByte);
@ -13246,15 +13148,12 @@ static INT32 WofbInit()
CpsLayer1XOffs = 0xffc0; CpsLayer1XOffs = 0xffc0;
CpsLayer2XOffs = 0xffc0; CpsLayer2XOffs = 0xffc0;
CpsLayer3XOffs = 0xffc0; CpsLayer3XOffs = 0xffc0;
Cps1GfxLoadCallbackFunction = CpsLoadTilesDinopic;
Cps1ObjGetCallbackFunction = DinopicObjGet; Cps1ObjGetCallbackFunction = DinopicObjGet;
Cps1ObjDrawCallbackFunction = FcrashObjDraw; Cps1ObjDrawCallbackFunction = FcrashObjDraw;
INT32 nRet = TwelveMhzInit(); INT32 nRet = TwelveMhzInit();
memset(CpsGfx, 0, nCpsGfxLen);
CpsLoadTilesBootleg(CpsGfx + 0x000000, 4);
CpsLoadTilesBootleg(CpsGfx + 0x200000, 8);
CpsBootlegSpriteRam = (UINT8*)BurnMalloc(0x4000); CpsBootlegSpriteRam = (UINT8*)BurnMalloc(0x4000);
SekOpen(0); SekOpen(0);
@ -15335,7 +15234,7 @@ struct BurnDriver BurnDrvCpsWofha = {
L"\u4E09\u56FD\u5FD7II: \u4E09\u56FD\u82F1\u96C4\u4F20\0Sangokushi II: Sanguo YingXiongZhuan (Chinese bootleg set 2, 921005 Asia)\0", NULL, NULL, NULL, L"\u4E09\u56FD\u5FD7II: \u4E09\u56FD\u82F1\u96C4\u4F20\0Sangokushi II: Sanguo YingXiongZhuan (Chinese bootleg set 2, 921005 Asia)\0", NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 3, HARDWARE_CAPCOM_CPS1, GBF_SCRFIGHT, 0, BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 3, HARDWARE_CAPCOM_CPS1, GBF_SCRFIGHT, 0,
NULL, WofhaRomInfo, WofhaRomName, NULL, NULL, WofhfhInputInfo, WofhDIPInfo, NULL, WofhaRomInfo, WofhaRomName, NULL, NULL, WofhfhInputInfo, WofhDIPInfo,
WofhaInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan, WofhInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan,
&CpsRecalcPal, 0x1000, 384, 224, 4, 3 &CpsRecalcPal, 0x1000, 384, 224, 4, 3
}; };
@ -15385,7 +15284,7 @@ struct BurnDriver BurnDrvCpsWof3sja = {
L"\u4E09\u56FD\u5FD7II: \u4E09\u5723\u5251\0Sangokushi II: San Sheng Jian (Chinese bootleg set 2, 921005 Asia)\0", NULL, NULL, NULL, L"\u4E09\u56FD\u5FD7II: \u4E09\u5723\u5251\0Sangokushi II: San Sheng Jian (Chinese bootleg set 2, 921005 Asia)\0", NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 3, HARDWARE_CAPCOM_CPS1, GBF_SCRFIGHT, 0, BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 3, HARDWARE_CAPCOM_CPS1, GBF_SCRFIGHT, 0,
NULL, Wof3sjaRomInfo, Wof3sjaRomName, NULL, NULL, WofhfhInputInfo, WofhfhDIPInfo, NULL, Wof3sjaRomInfo, Wof3sjaRomName, NULL, NULL, WofhfhInputInfo, WofhfhDIPInfo,
Wof3sjaInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan, Wof3sjInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan,
&CpsRecalcPal, 0x1000, 384, 224, 4, 3 &CpsRecalcPal, 0x1000, 384, 224, 4, 3
}; };