From d96a270d27011f83e20672b734cb049f0d8cc72b Mon Sep 17 00:00:00 2001 From: Barry Harris <44396066+barry65536@users.noreply.github.com> Date: Tue, 24 Apr 2012 14:25:31 +0000 Subject: [PATCH] Tidy some CPS-1 custom gfx load routines (avoid loading files unnecessarily!) --- src/burn/drv/capcom/cps.cpp | 175 +++++++++++++++++---------------- src/burn/drv/capcom/cps.h | 9 +- src/burn/drv/capcom/d_cps1.cpp | 139 ++++---------------------- 3 files changed, 113 insertions(+), 210 deletions(-) diff --git a/src/burn/drv/capcom/cps.cpp b/src/burn/drv/capcom/cps.cpp index bb0eb441a..82e0fa21a 100644 --- a/src/burn/drv/capcom/cps.cpp +++ b/src/burn/drv/capcom/cps.cpp @@ -176,9 +176,9 @@ static INT32 CpsLoadOnePang(UINT8 *Tile,INT32 nNum,INT32 nWord,INT32 nShift) 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; INT32 nRomLen1 = 0, nRomLen2 = 0; UINT8 *pt = NULL, *pr = NULL; @@ -191,31 +191,39 @@ static INT32 CpsLoadOneHack160(UINT8 *Tile, INT32 nNum, INT32 nWord, INT32 nOffs if (Rom2 == NULL) { return 1; } - - for (i = 0, pt = Tile, pr = Rom1 + (0x80000 * nOffset); i < 0x80000; pt += 8) { - UINT32 Pix; // Eight pixels - UINT8 b; - b = *pr++; i++; Pix = SepTable[b]; - if (nWord) { - b = *pr++; i++; Pix |= SepTable[b] << 1; - } - - Pix <<= 0; - *((UINT32 *)pt) |= Pix; + + INT32 TileOffset[4] = { 0x000000, 0x000004, 0x200000, 0x200004 }; + if (nType == 1) { + TileOffset[1] = 0x200000; + TileOffset[2] = 0x000004; } - for (i = 0, pt = Tile, pr = Rom2 + (0x80000 * nOffset); i < 0x80000; pt += 8) { - UINT32 Pix; // Eight pixels - UINT8 b; - b = *pr++; i++; Pix = SepTable[b]; - if (nWord) { - b = *pr++; i++; Pix |= SepTable[b] << 1; + 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 + UINT8 b; + b = *pr++; i++; Pix = SepTable[b]; + if (nWord) { + b = *pr++; i++; Pix |= SepTable[b] << 1; + } + + Pix <<= 0; + *((UINT32 *)pt) |= Pix; } - Pix <<= 2; - *((UINT32 *)pt) |= Pix; - } + for (i = 0, pt = Tile + TileOffset[j], pr = Rom2 + (0x80000 * j); i < 0x80000; pt += 8) { + UINT32 Pix; // Eight pixels + UINT8 b; + b = *pr++; i++; Pix = SepTable[b]; + if (nWord) { + b = *pr++; i++; Pix |= SepTable[b] << 1; + } + Pix <<= 2; + *((UINT32 *)pt) |= Pix; + } + } + BurnFree(Rom2); BurnFree(Rom1); return 0; @@ -555,19 +563,9 @@ INT32 CpsLoadTilesPang(UINT8* Tile, INT32 nStart) return 0; } -INT32 CpsLoadTilesHack160(UINT8* Tile, INT32 nStart) +static INT32 CpsLoadTilesBootleg(UINT8 *Tile, INT32 nStart) { - CpsLoadOneHack160(Tile + 0 + 0x000000, nStart, 1, 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 + 0, 0, 0); CpsLoadOneBootleg(Tile, nStart + 1, 0, 1); CpsLoadOneBootleg(Tile, nStart + 2, 0, 2); CpsLoadOneBootleg(Tile, nStart + 3, 0, 3); @@ -575,26 +573,6 @@ INT32 CpsLoadTilesBootleg(UINT8 *Tile, INT32 nStart) 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) { CpsLoadOneSf2ebbl(Tile, nStart + 0, 0, 0); @@ -605,6 +583,30 @@ INT32 CpsLoadTilesSf2ebbl(UINT8 *Tile, INT32 nStart) 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) { CpsLoadOneSf2koryu(CpsGfx + 0x000000, nStart + 0, 1, 0); @@ -619,18 +621,9 @@ INT32 CpsLoadTilesSf2koryu(INT32 nStart) INT32 CpsLoadTilesSf2mdt(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 + 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); + CpsLoadTilesBootlegType3(CpsGfx + 0x000000, nStart + 0); + CpsLoadTilesBootlegType3(CpsGfx + 0x200000, nStart + 4); + CpsLoadTilesBootlegType3(CpsGfx + 0x400000, nStart + 8); return 0; } @@ -649,36 +642,46 @@ INT32 CpsLoadTilesSf2mdta(INT32 nStart) 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); + CpsLoadTilesBootlegType3(CpsGfx + 0x000000, nStart + 0); + CpsLoadTilesBootlegType3(CpsGfx + 0x080000, nStart + 4); + CpsLoadTilesBootlegType3(CpsGfx + 0x100000, nStart + 8); + CpsLoadTilesBootlegType3(CpsGfx + 0x180000, nStart + 12); return 0; } INT32 CpsLoadTilesCawingbl(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); + CpsLoadTilesBootlegType3(CpsGfx + 0x000000, nStart + 0); return 0; } +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; +} + INT32 CpsLoadStars(UINT8* pStar, INT32 nStart) { UINT8* pTemp[2] = { NULL, NULL}; diff --git a/src/burn/drv/capcom/cps.h b/src/burn/drv/capcom/cps.h index ec766659e..4d0f9c06b 100644 --- a/src/burn/drv/capcom/cps.h +++ b/src/burn/drv/capcom/cps.h @@ -37,16 +37,17 @@ INT32 CpsLoadTilesByte(UINT8 *Tile,INT32 nStart); INT32 CpsLoadTilesForgottn(INT32 nStart); INT32 CpsLoadTilesForgottnu(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 CpsLoadTilesHack160(INT32 nStart); +INT32 CpsLoadTilesHack160Alt(INT32 nStart); INT32 CpsLoadTilesSf2koryu(INT32 nStart); INT32 CpsLoadTilesSf2mdt(INT32 nStart); INT32 CpsLoadTilesSf2mdta(INT32 nStart); INT32 CpsLoadTilesFcrash(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 CpsLoadStarsByte(UINT8 *pStar, INT32 nStart); INT32 CpsLoadStarsForgottnAlt(UINT8 *pStar, INT32 nStart); diff --git a/src/burn/drv/capcom/d_cps1.cpp b/src/burn/drv/capcom/d_cps1.cpp index 965e1f449..a77abcca1 100644 --- a/src/burn/drv/capcom/d_cps1.cpp +++ b/src/burn/drv/capcom/d_cps1.cpp @@ -10812,20 +10812,14 @@ static INT32 TwelveMhzInit() static INT32 CaptcommbInit() { - INT32 nRet = 0; - CpsLayer1XOffs = -8; CpsLayer2XOffs = -11; CpsLayer3XOffs = -12; CpsDrawSpritesInReverse = 1; Cps1DetectEndSpriteList8000 = 1; + Cps1GfxLoadCallbackFunction = CpsLoadTilesCaptcommb; - nRet = DrvInit(); - - memset(CpsGfx, 0, nCpsGfxLen); - CpsLoadTilesCaptcomb(CpsGfx, 4); - - return nRet; + return DrvInit(); } static INT32 Captcommb2Init() @@ -11011,15 +11005,12 @@ static INT32 DinopicInit() INT32 nRet = 0; Cps1DisablePSnd = 1; + Cps1GfxLoadCallbackFunction = CpsLoadTilesDinopic; Cps1ObjGetCallbackFunction = DinopicObjGet; Cps1ObjDrawCallbackFunction = FcrashObjDraw; - + nRet = TwelveMhzInit(); - memset(CpsGfx, 0, nCpsGfxLen); - CpsLoadTilesBootleg(CpsGfx + 0x000000, 4); - CpsLoadTilesBootleg(CpsGfx + 0x200000, 8); - CpsBootlegSpriteRam = (UINT8*)BurnMalloc(0x2000); SekOpen(0); @@ -11066,17 +11057,11 @@ static void DinotCallback() static INT32 DinotInit() { - INT32 nRet = 0; - Cps1QsHack = 1; AmendProgRomCallback = DinotCallback; + Cps1GfxLoadCallbackFunction = CpsLoadTilesHack160; - nRet = TwelveMhzInit(); - - memset(CpsGfx, 0, nCpsGfxLen); - CpsLoadTilesHack160(CpsGfx, 2); - - return nRet; + return TwelveMhzInit(); } static INT32 DinotpicInit() @@ -11084,14 +11069,12 @@ static INT32 DinotpicInit() INT32 nRet = 0; Cps1DisablePSnd = 1; + Cps1GfxLoadCallbackFunction = CpsLoadTilesHack160; Cps1ObjGetCallbackFunction = DinopicObjGet; Cps1ObjDrawCallbackFunction = FcrashObjDraw; nRet = TwelveMhzInit(); - memset(CpsGfx, 0, nCpsGfxLen); - CpsLoadTilesHack160(CpsGfx, 2); - CpsBootlegSpriteRam = (UINT8*)BurnMalloc(0x2000); SekOpen(0); @@ -11593,14 +11576,12 @@ static INT32 KodbInit() INT32 nRet = 0; Kodb = 1; + Cps1GfxLoadCallbackFunction = CpsLoadTilesKodb; Cps1ObjGetCallbackFunction = KodbObjGet; Cps1ObjDrawCallbackFunction = FcrashObjDraw; nRet = DrvInit(); - memset(CpsGfx, 0, nCpsGfxLen); - CpsLoadTilesByte(CpsGfx, 2); - SekOpen(0); SekMapHandler(1, 0x980000, 0x99ffff, SM_WRITE); SekSetWriteWordHandler(1, Kodb98WriteWord); @@ -11758,16 +11739,12 @@ static INT32 PunipicInit() Cps1DisablePSnd = 1; bCpsUpdatePalEveryFrame = 1; Cps1OverrideLayers = 1; - + Cps1GfxLoadCallbackFunction = CpsLoadTilesDinopic; Cps1ObjGetCallbackFunction = DinopicObjGet; Cps1ObjDrawCallbackFunction = FcrashObjDraw; INT32 nRet = TwelveMhzInit(); - memset(CpsGfx, 0, nCpsGfxLen); - CpsLoadTilesBootleg(CpsGfx + 0x000000, 4); - CpsLoadTilesBootleg(CpsGfx + 0x200000, 8); - CpsBootlegSpriteRam = (UINT8*)BurnMalloc(0x4000); SekOpen(0); @@ -11786,15 +11763,12 @@ static INT32 Punipic2Init() Cps1DisablePSnd = 1; bCpsUpdatePalEveryFrame = 1; Cps1OverrideLayers = 1; - + Cps1GfxLoadCallbackFunction = CpsLoadTilesHack160Alt; Cps1ObjGetCallbackFunction = DinopicObjGet; Cps1ObjDrawCallbackFunction = FcrashObjDraw; INT32 nRet = TwelveMhzInit(); - memset(CpsGfx, 0, nCpsGfxLen); - CpsLoadTilesPunipic2(CpsGfx, 4); - CpsBootlegSpriteRam = (UINT8*)BurnMalloc(0x4000); SekOpen(0); @@ -11813,15 +11787,12 @@ static INT32 Punipic3Init() Cps1DisablePSnd = 1; bCpsUpdatePalEveryFrame = 1; Cps1OverrideLayers = 1; - + Cps1GfxLoadCallbackFunction = CpsLoadTilesHack160; Cps1ObjGetCallbackFunction = DinopicObjGet; Cps1ObjDrawCallbackFunction = FcrashObjDraw; INT32 nRet = TwelveMhzInit(); - memset(CpsGfx, 0, nCpsGfxLen); - CpsLoadTilesHack160(CpsGfx, 4); - CpsBootlegSpriteRam = (UINT8*)BurnMalloc(0x4000); SekOpen(0); @@ -11846,6 +11817,7 @@ static INT32 Sf2ebblInit() { INT32 nRet = DrvInit(); + // load bootleg tiles over original tiles memset(CpsGfx + 0x400000, 0, 0x80000); CpsLoadTilesSf2ebbl(CpsGfx + 0x400000, 19); @@ -12705,48 +12677,13 @@ static INT32 WofhInit() CpsLayer1XOffs = 0xffc0; CpsLayer2XOffs = 0xffc0; CpsLayer3XOffs = 0xffc0; - + Cps1GfxLoadCallbackFunction = CpsLoadTilesHack160; AmendProgRomCallback = WofhCallback; Cps1ObjGetCallbackFunction = WofhObjGet; Cps1ObjDrawCallbackFunction = FcrashObjDraw; 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); SekMapHandler(3, 0x880000, 0x89ffff, SM_READ | SM_WRITE); SekSetReadByteHandler(3, WofhInputReadByte); @@ -12788,16 +12725,13 @@ static INT32 SgyxzInit() CpsLayer1XOffs = 0xffc0; CpsLayer2XOffs = 0xffc0; CpsLayer3XOffs = 0xffc0; - + Cps1GfxLoadCallbackFunction = CpsLoadTilesHack160; AmendProgRomCallback = SgyxzCallback; Cps1ObjGetCallbackFunction = WofhObjGet; Cps1ObjDrawCallbackFunction = FcrashObjDraw; nRet = TwelveMhzInit(); - memset(CpsGfx, 0, nCpsGfxLen); - CpsLoadTilesHack160(CpsGfx, 2); - SekOpen(0); SekMapHandler(3, 0x880000, 0x89ffff, SM_READ | SM_WRITE); SekSetReadByteHandler(3, WofhInputReadByte); @@ -12934,15 +12868,12 @@ static INT32 Wof3jsaInit() CpsLayer1XOffs = 0xffc0; CpsLayer2XOffs = 0xffc0; CpsLayer3XOffs = 0xffc0; - + Cps1GfxLoadCallbackFunction = CpsLoadTilesHack160; Cps1ObjGetCallbackFunction = WofhObjGet; Cps1ObjDrawCallbackFunction = FcrashObjDraw; INT32 nRet = TwelveMhzInit(); - memset(CpsGfx, 0, nCpsGfxLen); - CpsLoadTilesHack160(CpsGfx, 2); - SekOpen(0); SekMapHandler(3, 0x880000, 0x89ffff, SM_READ | SM_WRITE); SekSetReadByteHandler(3, Wof3jsaInputReadByte); @@ -13044,41 +12975,12 @@ static INT32 Wof3sjInit() CpsLayer1XOffs = 0xffc0; CpsLayer2XOffs = 0xffc0; CpsLayer3XOffs = 0xffc0; - + Cps1GfxLoadCallbackFunction = CpsLoadTilesHack160; Cps1ObjGetCallbackFunction = WofhObjGet; Cps1ObjDrawCallbackFunction = FcrashObjDraw; 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); SekMapHandler(3, 0x880000, 0x89ffff, SM_READ | SM_WRITE); SekSetReadByteHandler(3, Wof3sjInputReadByte); @@ -13246,15 +13148,12 @@ static INT32 WofbInit() CpsLayer1XOffs = 0xffc0; CpsLayer2XOffs = 0xffc0; CpsLayer3XOffs = 0xffc0; + Cps1GfxLoadCallbackFunction = CpsLoadTilesDinopic; Cps1ObjGetCallbackFunction = DinopicObjGet; Cps1ObjDrawCallbackFunction = FcrashObjDraw; INT32 nRet = TwelveMhzInit(); - memset(CpsGfx, 0, nCpsGfxLen); - CpsLoadTilesBootleg(CpsGfx + 0x000000, 4); - CpsLoadTilesBootleg(CpsGfx + 0x200000, 8); - CpsBootlegSpriteRam = (UINT8*)BurnMalloc(0x4000); 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, BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 3, HARDWARE_CAPCOM_CPS1, GBF_SCRFIGHT, 0, NULL, WofhaRomInfo, WofhaRomName, NULL, NULL, WofhfhInputInfo, WofhDIPInfo, - WofhaInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan, + WofhInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan, &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, BDF_GAME_WORKING | BDF_CLONE | BDF_BOOTLEG, 3, HARDWARE_CAPCOM_CPS1, GBF_SCRFIGHT, 0, NULL, Wof3sjaRomInfo, Wof3sjaRomName, NULL, NULL, WofhfhInputInfo, WofhfhDIPInfo, - Wof3sjaInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan, + Wof3sjInit, DrvExit, Cps1Frame, CpsRedraw, CpsAreaScan, &CpsRecalcPal, 0x1000, 384, 224, 4, 3 };