INT32 CpsExit() { CpsRunExit(); CpsLayEn[1] = CpsLayEn[2] = CpsLayEn[3] = CpsLayEn[4] = CpsLayEn[5] = 0; nCpsLcReg = 0; nCpsGfxScroll[1] = nCpsGfxScroll[2] = nCpsGfxScroll[3] = 0; nCpsGfxMask = 0; Scroll1TileMask = 0; Scroll2TileMask = 0; Scroll3TileMask = 0; nCpsCodeLen = nCpsRomLen = nCpsGfxLen = nCpsZRomLen = nCpsQSamLen = nCpsAdLen = 0; CpsRom = CpsZRom = CpsAd = CpsStar = NULL; CpsQSam = NULL; // All Memory is allocated to this (this is the only one we can free) BurnFree(CpsGfx); BurnFree(CpsCode); bCpsUpdatePalEveryFrame = 0; nCPS68KClockspeed = 0; Cps = 0; nCpsNumScanlines = 259; return 0; }
INT32 CavePalExit() { BurnFree(CavePalette); BurnFree(CavePalCopy); return 0; }
static INT32 CpsLoadOneHack160(UINT8 *Tile, INT32 nNum, INT32 nWord, INT32 nType) { INT32 i = 0, j = 0; UINT8 *Rom1 = NULL, *Rom2 = NULL; INT32 nRomLen1 = 0, nRomLen2 = 0; UINT8 *pt = NULL, *pr = NULL; LoadUp(&Rom1, &nRomLen1, nNum); if (Rom1 == NULL) { return 1; } LoadUp(&Rom2, &nRomLen2, nNum + 1); if (Rom2 == NULL) { return 1; } 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 UINT8 b; b = *pr++; i++; Pix = SepTable[b]; if (nWord) { b = *pr++; i++; Pix |= SepTable[b] << 1; } Pix <<= 0; *((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; }
void tms34061_exit() { #if defined FBA_DEBUG if (!DebugDev_Tms34061Initted) bprintf(PRINT_ERROR, _T("tms34061_exit called without init\n")); #endif BurnFree(m_vram); m_vram = NULL; BurnFree(m_latchram); m_latchram = NULL; DebugDev_Tms34061Initted = 0; }
void K053936Exit() { for (INT32 i = 0; i < MAX_K053936; i++) { nRamLen[i] = 0; nWidth[i] = 0; nHeight[i] = 0; BurnFree (tscreen[i]); ramptr[i] = NULL; BurnFree (rambuf[i]); K053936Wrap[i] = 0; K053936Offset[i][0] = K053936Offset[i][1] = 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; }
// Allocate space and load up a rom static INT32 LoadUp(UINT8** pRom, INT32* pnRomLen, INT32 nNum) { UINT8 *Rom; struct BurnRomInfo ri; ri.nLen = 0; BurnDrvGetRomInfo(&ri, nNum); // Find out how big the rom is if (ri.nLen <= 0) { return 1; } // Load the rom Rom = (UINT8*)BurnMalloc(ri.nLen); if (Rom == NULL) { return 1; } if (BurnLoadRom(Rom,nNum,1)) { BurnFree(Rom); return 1; } // Success *pRom = Rom; *pnRomLen = ri.nLen; return 0; }
static INT32 LoadUpSplit(UINT8** pRom, INT32* pnRomLen, INT32 nNum, INT32 nNumRomsGroup) { UINT8 *Rom; struct BurnRomInfo ri; UINT32 nRomSize[8], nTotalRomSize = 0; INT32 i; ri.nLen = 0; for (i = 0; i < nNumRomsGroup; i++) { BurnDrvGetRomInfo(&ri, nNum + i); nRomSize[i] = ri.nLen; } for (i = 0; i < nNumRomsGroup; i++) { nTotalRomSize += nRomSize[i]; } if (!nTotalRomSize) return 1; Rom = (UINT8*)BurnMalloc(nTotalRomSize); if (Rom == NULL) return 1; INT32 Offset = 0; for (i = 0; i < nNumRomsGroup; i++) { if (i > 0) Offset += nRomSize[i - 1]; if (BurnLoadRom(Rom + Offset, nNum + i, 1)) { BurnFree(Rom); return 1; } } *pRom = Rom; *pnRomLen = nTotalRomSize; return 0; }
static INT32 DrvExit() { // BurnYM3812Exit(); ToaPalExit(); ToaExitBCU2(); SekExit(); BurnSampleExit(); BurnFree(AllMem); #ifdef TOAPLAN_SOUND_SAMPLES_HACK FadeoutReady = 0; FadeoutStop = 0; Playing1 = 0xff; Playing2 = 0xff; Play1 = 0; Counter1 = 0; Vol1 = 0; Wait = 0; Start = 0; Start2 = 0; #endif return 0; }
static INT32 CpsLoadOneBootlegType3Swap(UINT8 *Tile, INT32 nNum, INT32 nWord, INT32 nShift) { UINT8 *Rom = NULL; int 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; b = *pr++; i++; Pix = SepTable[b]; if (nWord) { b = *pr++; i++; Pix |= SepTable[b] << 1; } Pix <<= (nShift + 1); *((UINT32 *)pt) |= Pix; } BurnFree(Rom); return 0; }
static INT32 DrvGfxDecode() { INT32 Plane0[4] = { 0x200000, 0x300000, 0x000000, 0x100000 }; INT32 XOffs0[8] = { 0x000, 0x001, 0x002, 0x003, 0x004, 0x005, 0x006, 0x007 }; INT32 YOffs0[8] = { 0x038, 0x030, 0x028, 0x020, 0x018, 0x010, 0x008, 0x000 }; INT32 Plane1[4] = { 0x000004, 0x000000, 0x100004, 0x100000 }; INT32 XOffs1[16] = { 0x10b, 0x10a, 0x109, 0x108, 0x103, 0x102, 0x101, 0x100, 0x00b, 0x00a, 0x009, 0x008, 0x003, 0x002, 0x001, 0x000 }; INT32 YOffs1[16] = { 0x0f0, 0x0e0, 0x0d0, 0x0c0, 0x0b0, 0x0a0, 0x090, 0x080, 0x070, 0x060, 0x050, 0x040, 0x030, 0x020, 0x010, 0x000 }; UINT8 *tmp = (UINT8*)BurnMalloc(0x80000); if (tmp == NULL) { return 1; } for (INT32 i = 0; i < 0x80000; i++) tmp[i] = DrvGfxROM0[i] ^ 0xff; GfxDecode(0x4000, 4, 8, 8, Plane0, XOffs0, YOffs0, 0x040, tmp, DrvGfxROM0); for (INT32 i = 0; i < 0x40000; i++) tmp[i] = DrvGfxROM1[i] ^ 0xff; GfxDecode(0x0800, 4, 16, 16, Plane1, XOffs1, YOffs1, 0x200, tmp, DrvGfxROM1); BurnFree (tmp); return 0; }
static INT32 CpsLoadOnePang(UINT8 *Tile,INT32 nNum,INT32 nWord,INT32 nShift) { INT32 i=0; UINT8 *Rom = NULL; INT32 nRomLen = 0; UINT8 *pt = NULL, *pr = NULL; LoadUp(&Rom, &nRomLen, nNum); if (Rom == NULL) { return 1; } nRomLen &= ~1; // make sure even for (i = 0x100000, pt = Tile, pr = Rom + 0x100000; i < nRomLen; pt += 8) { 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 DrvGfxDecode() { INT32 Plane0[4] = { 0, 4, RGN_FRAC(0x04000, 1,2), RGN_FRAC(0x04000, 1,2)+4 }; INT32 Plane1[4] = { 0, 4, RGN_FRAC(0x40000, 1,2), RGN_FRAC(0x40000, 1,2)+4 }; INT32 Plane2[4] = { 0, 4, RGN_FRAC(0x40000, 1,2), RGN_FRAC(0x40000, 1,2)+4 }; INT32 XOffs[16] = { STEP4(0,1), STEP4(8,1), STEP4(16,1), STEP4(24,1) }; INT32 YOffs0[8] = { STEP8(0,16) }; INT32 YOffs1[16] = { STEP16(0,32) }; UINT8 *tmp = (UINT8*)BurnMalloc(0x40000); if (tmp == NULL) { return 1; } memcpy (tmp, DrvGfxROM0, 0x04000); GfxDecode(0x0200, 4, 8, 8, Plane0, XOffs, YOffs0, 0x080, tmp, DrvGfxROM0); memcpy (tmp, DrvGfxROM1, 0x40000); GfxDecode(0x0800, 4, 16, 16, Plane1, XOffs, YOffs1, 0x200, tmp, DrvGfxROM1); memcpy (tmp, DrvGfxROM2, 0x40000); GfxDecode(0x0800, 4, 16, 16, Plane2, XOffs, YOffs1, 0x200, tmp, DrvGfxROM2); BurnFree (tmp); return 0; }
void K053247Exit() { K053247Temp = NULL; BurnFree (K053247Ram); K053247Flags = 0; memset (K053247Regs, 0, 16 * sizeof(UINT16)); }
int Adsp2100Exit() { adsp21xx_exit(pADSP); BurnFree(pADSP); delete pMemMap; pMemMap = nullptr; #if ENABLE_TRACE fclose(pTrace); #endif return 0; }
static INT32 DrvExit() { GenericTilesExit(); ZetExit(); t5182Exit(); BurnFree (AllMem); return 0; }
static INT32 DrvExit() { // BurnYM3812Exit(); ToaPalExit(); ToaExitBCU2(); SekExit(); BurnFree(AllMem); return 0; }
void PC090OJExit() { BurnFree(PC090OJRam); PC090OJNumTiles = 0; PC090OJXOffset = 0; PC090OJYOffset = 0; PC090OJUseBuffer = 0; PC090OJPaletteOffset = 0; PC090OJSpriteCtrl = 0; }
static INT32 DrvExit() { ToaPalExit(); ToaExitGP9001(); SekExit(); // Deallocate 68000s BurnSampleExit(); BurnFree(Mem); return 0; }
void DACExit() { #if defined FBA_DEBUG if (!DebugSnd_DACInitted) bprintf(PRINT_ERROR, _T("DACExit called without init\n")); #endif struct dac_info *ptr; for (INT32 i = 0; i < DAC_NUM; i++) { ptr = &dac_table[i]; ptr->Initialized = 0; ptr->pSyncCallback = NULL; } NumChips = 0; DebugSnd_DACInitted = 0; BurnFree (lBuffer); BurnFree (rBuffer); }
static INT32 DrvExit() { ToaPalExit(); BurnYM3812Exit(); ToaExitGP9001(); SekExit(); // Deallocate 68000s ZetExit(); BurnFree(Mem); return 0; }
INT32 CpsLoadStarsForgottnAlt(UINT8* pStar, INT32 nStart) { UINT8* pTemp[2] = { NULL, NULL}; INT32 nLen; for (INT32 i = 0; i < 2; i++) { if (LoadUp(&pTemp[i], &nLen, nStart + (i * 3))) { BurnFree(pTemp[0]); BurnFree(pTemp[1]); } } for (INT32 i = 0; i < 0x1000; i++) { pStar[i] = pTemp[0][i << 1]; pStar[0x01000 + i] = pTemp[1][i << 1]; } BurnFree(pTemp[0]); BurnFree(pTemp[1]); return 0; }
static INT32 DrvExit() { BurnYM3812Exit(); ToaPalExit(); ToaExitBCU2(); ToaZExit(); // Z80 exit SekExit(); // Deallocate 68000s BurnFree(Mem); return 0; }
void pic16c5xExit() { #if defined FBA_DEBUG if (!DebugCPU_PIC16C5XInitted) bprintf(PRINT_ERROR, _T("pic16c5xExit called without init\n")); #endif pic16c5x_rom = NULL; nPic16c5xCpuType = -1; BurnFree(pic16c5x_ram); DebugCPU_PIC16C5XInitted = 0; }
static INT32 DrvExit() { GenericTilesExit(); KonamiICExit(); SekExit(); YMZ280BExit(); BurnFree (AllMem); return 0; }
static INT32 DrvExit() { MSM6295Exit(0); BurnYM2151Exit(); ToaPalExit(); ToaExitGP9001(); SekExit(); // Deallocate 68000s BurnFree(Mem); return 0; }
static INT32 DrvExit() { GenericTilesExit(); ZetExit(); MSM6295Exit(0); BurnFree (AllMem); MSM6295ROM = NULL; return 0; }
static INT32 DrvExit() { BurnYM3812Exit(); ToaPalExit(); ToaExitBCU2(); ToaZExit(); SekExit(); BurnFree(AllMem); Rallybik = 0; return 0; }
static INT32 drvExit() { MSM6295Exit(0); MSM6295Exit(1); BurnYM2151Exit(); ToaPalExit(); ToaExitGP9001(); ToaExtraTextExit(); ToaZExit(); // Z80 exit SekExit(); // Deallocate 68000 BurnFree(Mem); return 0; }
void pgm_decode_kovqhsgs_gfx_block(UINT8 *src) { INT32 i, j; UINT8 *dec = (UINT8*)BurnMalloc(0x800000); for (i = 0; i < 0x800000; i++) { j = BITSWAP24(i, 23, 10, 9, 22, 19, 18, 20, 21, 17, 16, 15, 14, 13, 12, 11, 8, 7, 6, 5, 4, 3, 2, 1, 0); dec[j] = src[i]; } memcpy (src, dec, 0x800000); BurnFree (dec); }