static int Cps2LoadOne(unsigned char* Tile, int nNum, int nWord, int nShift) { unsigned char *Rom = NULL; int nRomLen = 0; unsigned char *pt, *pr; LoadUp(&Rom, &nRomLen, nNum); if (Rom == NULL) { return 1; } if (nWord == 0) { unsigned char*Rom2 = NULL; int nRomLen2 = 0; unsigned char*Rom3 = Rom; LoadUp(&Rom2, &nRomLen2, nNum + 1); if (Rom2 == NULL) { return 1; } nRomLen <<= 1; Rom = (unsigned char*)malloc(nRomLen); if (Rom == NULL) { free(Rom2); free(Rom3); return 1; } for (int i = 0; i < nRomLen2; i++) { Rom[(i << 1) + 0] = Rom3[i]; Rom[(i << 1) + 1] = Rom2[i]; } free(Rom2); free(Rom3); } // Go through each section pt = Tile; pr = Rom; for (int b = 0; b < nRomLen >> 19; b++) { Cps2Load100000(pt, pr, nShift); pt += 0x100000; Cps2Load100000(pt, pr + 2, nShift); pt += 0x100000; pr += 0x80000; } free(Rom); return 0; }
static INT32 Cps2LoadOne(UINT8* Tile, INT32 nNum, INT32 nWord, INT32 nShift) { UINT8 *Rom = NULL; INT32 nRomLen = 0; UINT8 *pt, *pr; LoadUp(&Rom, &nRomLen, nNum); if (Rom == NULL) { return 1; } if (nWord == 0) { UINT8*Rom2 = NULL; INT32 nRomLen2 = 0; UINT8*Rom3 = Rom; LoadUp(&Rom2, &nRomLen2, nNum + 1); if (Rom2 == NULL) { return 1; } nRomLen <<= 1; Rom = (UINT8*)BurnMalloc(nRomLen); if (Rom == NULL) { BurnFree(Rom2); BurnFree(Rom3); return 1; } for (INT32 i = 0; i < nRomLen2; i++) { Rom[(i << 1) + 0] = Rom3[i]; Rom[(i << 1) + 1] = Rom2[i]; } BurnFree(Rom2); BurnFree(Rom3); } // Go through each section pt = Tile; pr = Rom; for (INT32 b = 0; b < nRomLen >> 19; b++) { Cps2Load100000(pt, pr, nShift); pt += 0x100000; Cps2Load100000(pt, pr + 2, nShift); pt += 0x100000; pr += 0x80000; } BurnFree(Rom); return 0; }
static int Cps2LoadSplit(unsigned char* Tile, int nNum, int nShift) { unsigned char *Rom = NULL; int nRomLen = 0; unsigned char *pt, *pr; LoadUpSplit(&Rom, &nRomLen, nNum); if (Rom == NULL) { return 1; } // Go through each section pt = Tile; pr = Rom; for (int b = 0; b < nRomLen >> 19; b++) { Cps2Load100000(pt, pr, nShift); pt += 0x100000; Cps2Load100000(pt, pr + 2, nShift); pt += 0x100000; pr += 0x80000; } free(Rom); return 0; }
static INT32 Cps2LoadSplit(UINT8* Tile, INT32 nNum, INT32 nShift, INT32 nNumRomsGroup) { UINT8 *Rom = NULL; INT32 nRomLen = 0; UINT8 *pt, *pr; LoadUpSplit(&Rom, &nRomLen, nNum, nNumRomsGroup); if (Rom == NULL) { return 1; } // Go through each section pt = Tile; pr = Rom; for (INT32 b = 0; b < nRomLen >> 19; b++) { Cps2Load100000(pt, pr, nShift); pt += 0x100000; Cps2Load100000(pt, pr + 2, nShift); pt += 0x100000; pr += 0x80000; } BurnFree(Rom); return 0; }
INT32 Cps2LoadTilesGigaman2(UINT8 *Tile, UINT8 *pSrc) { UINT8 *pt = Tile; UINT8 *pr = pSrc; for (INT32 b = 0; b < 0x200000 >> 19; b++) { Cps2Load100000(pt, pr, 0); pt += 0x100000; Cps2Load100000(pt, pr + 2, 0); pt += 0x100000; pr += 0x80000; } pt = Tile; pr = pSrc + 0x200000; for (INT32 b = 0; b < 0x200000 >> 19; b++) { Cps2Load100000(pt, pr, 2); pt += 0x100000; Cps2Load100000(pt, pr + 2, 2); pt += 0x100000; pr += 0x80000; } pt = Tile + 4; pr = pSrc + 0x400000; for (INT32 b = 0; b < 0x200000 >> 19; b++) { Cps2Load100000(pt, pr, 0); pt += 0x100000; Cps2Load100000(pt, pr + 2, 0); pt += 0x100000; pr += 0x80000; } pt = Tile + 4; pr = pSrc + 0x600000; for (INT32 b = 0; b < 0x200000 >> 19; b++) { Cps2Load100000(pt, pr, 2); pt += 0x100000; Cps2Load100000(pt, pr + 2, 2); pt += 0x100000; pr += 0x80000; } return 0; }