static int crushermInit() { int nLen; BurnSetRefreshRate(CAVE_REFRESHRATE); // Find out how much memory is needed Mem = NULL; MemIndex(); nLen = MemEnd - (unsigned char *)0; if ((Mem = (unsigned char *)BurnMalloc(nLen)) == NULL) { return 1; } memset(Mem, 0, nLen); // blank all memory MemIndex(); // Index the allocated memory EEPROMInit(&eeprom_interface_93C46_8bit); // Load the roms into memory if (crushermLoadRoms()) { return 1; } { SekInit(0, 0x68000); // Allocate 68000 SekOpen(0); // Map 68000 memory: SekMapMemory(Rom01, 0x000000, 0x07FFFF, SM_ROM); // CPU 0 ROM SekMapMemory(CaveTileRAM[0], 0x100000, 0x107FFF, SM_RAM); SekMapMemory(CaveSpriteRAM, 0x180000, 0x187FFF, SM_RAM); SekMapMemory(CavePalSrc, 0x200000, 0x207FFF, SM_RAM); SekMapMemory(Ram01, 0x340000, 0x34FFFF, SM_RAM); SekSetReadWordHandler(0, korokoroReadWord); SekSetReadByteHandler(0, korokoroReadByte); SekSetWriteWordHandler(0, korokoroWriteWord); SekSetWriteByteHandler(0, korokoroWriteByte); SekClose(); } nCaveRowModeOffset = 1; CavePalInit(0x8000); CaveTileInit(); CaveSpriteInit(1, 0x400000); CaveTileInitLayer(0, 0x200000, 4, 0x4400); YMZ280BInit(16934400, &TriggerSoundIRQ, 3); bDrawScreen = true; DrvDoReset(); // Reset machine return 0; }
static int DrvInit() { int nLen; // bToaRotateScreen = true; BurnSetRefreshRate(REFRESHRATE); nBCU2ROMSize = 0x080000; nFCU2ROMSize = 0x080000; // Find out how much memory is needed AllMem = NULL; MemIndex(); nLen = MemEnd - (unsigned char *)0; if ((AllMem = (unsigned char *)malloc(nLen)) == NULL) { return 1; } memset(AllMem, 0, nLen); MemIndex(); if (BurnLoadRom(Drv68KROM + 0x000001, 0, 2)) return 1; if (BurnLoadRom(Drv68KROM + 0x000000, 1, 2)) return 1; if (BurnLoadRom(Drv68KROM + 0x040001, 2, 2)) return 1; if (BurnLoadRom(Drv68KROM + 0x040000, 3, 2)) return 1; ToaLoadTiles(BCU2ROM, 4, nBCU2ROMSize); ToaLoadTiles(FCU2ROM, 8, nFCU2ROMSize); { SekInit(0, 0x68000); SekOpen(0); SekMapMemory(Drv68KROM, 0x000000, 0x07FFFF, SM_ROM); SekMapMemory(Drv68KRAM, 0x0c0000, 0x0c3FFF, SM_RAM); SekMapMemory(DrvPalRAM, 0x104000, 0x1047FF, SM_RAM); SekMapMemory(DrvPalRAM2, 0x106000, 0x1067FF, SM_RAM); SekSetReadWordHandler(0, samesameReadWord); SekSetReadByteHandler(0, samesameReadByte); SekSetWriteWordHandler(0, samesameWriteWord); SekSetWriteByteHandler(0, samesameWriteByte); SekClose(); } ToaInitBCU2(); nToaPalLen = nColCount; ToaPalSrc = DrvPalRAM; ToaPalSrc2 = DrvPalRAM2; ToaPalInit(); // BurnYM3812Init(28000000 / 8, &toaplan1FMIRQHandler, &toaplan1SynchroniseStream, 0); bDrawScreen = true; DrvDoReset(); return 0; }
static INT32 DrvDoReset() { SekOpen(0); SekReset(); SekClose(); MSM6295Reset(0); BurnYM2151Reset(); return 0; }
static int drvDoReset() { SekOpen(0); SekReset(); SekClose(); ZetOpen(0); ZetReset(); ZetClose(); ZetRun(4000000/60); BurnYM2151Reset(); return 0; }
static int DrvDoReset() { SekOpen(0); SekReset(); SekClose(); // BurnYM3812Reset(); bEnableInterrupts = false; return 0; }
static INT32 DrvInit() { INT32 nLen; // bToaRotateScreen = true; BurnSetRefreshRate(REFRESHRATE); nBCU2ROMSize = 0x080000; nFCU2ROMSize = 0x100000; // Find out how much memory is needed AllMem = NULL; MemIndex(); nLen = MemEnd - (UINT8 *)0; if ((AllMem = (UINT8 *)BurnMalloc(nLen)) == NULL) { return 1; } memset(AllMem, 0, nLen); MemIndex(); ToaLoadCode(Drv68KROM, 0, 2); ToaLoadTiles(BCU2ROM, 2, nBCU2ROMSize); ToaLoadGP9001Tiles(FCU2ROM, 6, 3, nFCU2ROMSize); { SekInit(0, 0x68000); SekOpen(0); SekMapMemory(Drv68KROM, 0x000000, 0x03FFFF, SM_ROM); SekMapMemory(DrvPalRAM, 0x404000, 0x4047FF, SM_RAM); SekMapMemory(DrvPalRAM2, 0x406000, 0x4067FF, SM_RAM); SekMapMemory(Drv68KRAM, 0x480000, 0x487FFF, SM_RAM); SekSetReadWordHandler(0, vimanaReadWord); SekSetReadByteHandler(0, vimanaReadByte); SekSetWriteWordHandler(0, vimanaWriteWord); SekSetWriteByteHandler(0, vimanaWriteByte); SekClose(); } ToaInitBCU2(); nToaPalLen = nColCount; ToaPalSrc = DrvPalRAM; ToaPalSrc2 = DrvPalRAM2; ToaPalInit(); // BurnYM3812Init(28000000 / 8, &toaplan1FMIRQHandler, &toaplan1SynchroniseStream, 0); bDrawScreen = true; DrvDoReset(); return 0; }
static INT32 DrvReset() { // Reset machine if (Cps == 2 || PangEEP || Cps1Qs == 1 || CpsBootlegEEPROM) EEPROMReset(); SekOpen(0); SekReset(); SekClose(); if (((Cps & 1) && !Cps1DisablePSnd) || ((Cps == 2) && !Cps2DisableQSnd)) { ZetOpen(0); ZetReset(); ZetClose(); } if (Cps == 2) { // Disable beam-synchronized interrupts *((UINT16*)(CpsReg + 0x4E)) = BURN_ENDIAN_SWAP_INT16(0x0200); *((UINT16*)(CpsReg + 0x50)) = BURN_ENDIAN_SWAP_INT16(nCpsNumScanlines); *((UINT16*)(CpsReg + 0x52)) = BURN_ENDIAN_SWAP_INT16(nCpsNumScanlines); } SekOpen(0); CpsMapObjectBanks(0); SekClose(); nCpsCyclesExtra = 0; if (((Cps == 2) && !Cps2DisableQSnd) || Cps1Qs == 1) { // Sound init (QSound) QsndReset(); } if (CpsRunResetCallbackFunction) { CpsRunResetCallbackFunction(); } HiscoreReset(); return 0; }
static INT32 svg_asic27aScan(INT32 nAction,INT32 *) { struct BurnArea ba; if (nAction & ACB_MEMORY_RAM) { ba.Data = PGMARMShareRAM; ba.nLen = 0x0020000; ba.nAddress = 0x400000; ba.szName = "ARM SHARE RAM #0 (address 500000)"; BurnAcb(&ba); ba.Data = PGMARMShareRAM2; ba.nLen = 0x0020000; ba.nAddress = 0x500000; ba.szName = "ARM SHARE RAM #1"; BurnAcb(&ba); ba.Data = PGMARMRAM0; ba.nLen = 0x0000400; ba.nAddress = 0; ba.szName = "ARM RAM 0"; BurnAcb(&ba); ba.Data = PGMARMRAM1; ba.nLen = 0x0040000; ba.nAddress = 0; ba.szName = "ARM RAM 1"; BurnAcb(&ba); ba.Data = PGMARMRAM2; ba.nLen = 0x0000400; ba.nAddress = 0; ba.szName = "ARM RAM 2"; BurnAcb(&ba); } if (nAction & ACB_DRIVER_DATA) { Arm7Scan(nAction); SCAN_VAR(asic27a_68k_to_arm); SCAN_VAR(asic27a_arm_to_68k); SCAN_VAR(svg_ram_sel); } if (nAction & ACB_WRITE) { SekOpen(0); svg_set_ram_bank(svg_ram_sel); SekClose(); } return 0; }
static void cpu_close() { switch (nCpuType) { case 1: SekClose(); break; case 5: ZetClose(); break; } }
static INT32 DrvDoReset() { SekOpen(0); SekReset(); SekClose(); BurnSampleReset(); #ifdef TOAPLAN_SOUND_SAMPLES_HACK StopAllSamples(); #endif return 0; }
static void TaitoF3SoundReset() { UINT16 *Ram = (UINT16*)TaitoF3SoundRam; UINT16 *Rom = (UINT16*)Taito68KRom3; Ram[0x00] = Rom[0x00]; Ram[0x01] = Rom[0x01]; Ram[0x02] = Rom[0x02]; Ram[0x03] = Rom[0x03]; SekOpen(2); SekReset(); SekClose(); }
static INT32 DrvDoReset() { SekOpen(0); SekReset(); SekClose(); MSM6295Reset(0); MSM6295Reset(1); nPreviousOkiBank = -1; oki_set_bank(0); return 0; }
static INT32 DrvDoReset() { SekOpen(0); SekReset(); SekClose(); ZetOpen(0); ZetReset(); ZetClose(); BurnYM3812Reset(); return 0; }
static INT32 DrvDoReset() { SekOpen(0); SekReset(); SekClose(); MSM6295Reset(0); MSM6295Reset(1); nPreviousOkiBank = 0; memcpy (RomSnd, RomSnd + 0x40000, 0x40000);//? return 0; }
static INT32 DrvDoReset() { SekOpen(0); SekReset(); SekClose(); MSM6295Reset(0); DrvDoOkiBank(0); BlmbyPotWheel = 0; DrvToggle = 0; return 0; }
static int DrvFrame() { if (DrvReset) DrvDoReset(); if (bRecalcPalette) { for (int i=0;i<(0x1000/2); i++) RamCurPal[i] = CalcCol( RamPal[i] ); bRecalcPalette = 0; } DrvInput[0] = 0x00; // Joy1 DrvInput[1] = 0x00; // Joy2 DrvInput[2] = 0x00; // Buttons for (int i = 0; i < 8; i++) { DrvInput[0] |= (DrvJoy1[i] & 1) << i; DrvInput[1] |= (DrvJoy2[i] & 1) << i; DrvInput[2] |= (DrvButton[i] & 1) << i; } SekNewFrame(); SekOpen(0); #if 0 int nCyclesDone = 0; int nCyclesNext = 0; for(int i=0; i<10; i++) { nCyclesNext += (16000000 / 60 / 10); nCyclesDone += SekRun( nCyclesNext - nCyclesDone ); } #else SekRun(16000000 / 60); #endif SekSetIRQLine(4, SEK_IRQSTATUS_AUTO); SekClose(); if (pBurnDraw) DrvDraw(); if (pBurnSoundOut) { memset(pBurnSoundOut, 0, nBurnSoundLen * 4); MSM6295Render(0, pBurnSoundOut, nBurnSoundLen); MSM6295Render(1, pBurnSoundOut, nBurnSoundLen); } return 0; }
static INT32 DrvDoReset() { SekOpen(0); SekReset(); SekClose(); // BurnYM3812Reset(); bEnableInterrupts = false; vimana_latch = 0; vimana_credits = 0; return 0; }
static int DrvDoReset() { SekOpen(0); nIRQPending = 0; SekSetIRQLine(0, SEK_IRQSTATUS_NONE); SekReset(); SekClose(); ZetReset(); MSM6295Reset(0); BurnYM2151Reset(); return 0; }
static INT32 DrvDoReset() { SekOpen(0); SekReset(); SekClose(); ZetOpen(0); ZetReset(); ZetClose(); BurnYM3812Reset(); bEnableInterrupts = false; return 0; }
void TmntReset() { SekOpen(0); SekReset(); SekClose(); ZetOpen(0); ZetReset(); ZetClose(); bInt5=0; tmnt_soundlatch = 0; BurnYM2151Reset(); UPD7759Reset(); }
static INT32 DrvDoReset() { SekOpen(0); SekReset(); SekClose(); VezOpen(0); VezReset(); VezClose(); BurnYM2151Reset(); v25_reset = 1; return 0; }
static int DrvDoReset() { SekOpen(0); SekSetIRQLine(0, SEK_IRQSTATUS_NONE); SekReset(); SekClose(); MSM6295Reset(0); MSM6295Reset(1); m6295bank[0] = 1; m6295bank[1] = 1; sndSetBank(0, 0); return 0; }
// Hack to bypass the missing sub-cpu. All games except the taito // set check the crc and rather than dealing with that, I'm seperating // the opcodes and data and just patching the opcodes. // Taito set patches from MAME 0.36b10. static void map_hack(INT32 hack_off) { INT32 cpy_off = hack_off & ~0x3ff; memcpy (Drv68KROM + 0x40000, Drv68KROM + cpy_off, 0x400); hack_off -= cpy_off; hack_off += 0x40000; *((UINT16*)(Drv68KROM + hack_off + 0)) = 0x4e71; *((UINT16*)(Drv68KROM + hack_off + 8)) = 0x600a; SekOpen(0); SekMapMemory(Drv68KROM + 0x40000, cpy_off, cpy_off + 0x3ff, SM_FETCH); SekClose(); }
// Hack to bypass the missing sub-cpu. All games except the taito // set check the crc and rather than dealing with that, I'm seperating // the opcodes and data and just patching the opcodes. // Taito set patches from MAME 0.36b10. static void map_hack(int hack_off) { int cpy_off = hack_off & ~0x3ff; memcpy (Drv68KROM + 0x40000, Drv68KROM + cpy_off, 0x400); hack_off -= cpy_off; hack_off += 0x40000; *((unsigned short*)(Drv68KROM + hack_off + 0)) = 0x4e71; *((unsigned short*)(Drv68KROM + hack_off + 8)) = 0x600a; SekOpen(0); SekMapMemory(Drv68KROM + 0x40000, cpy_off, cpy_off + 0x3ff, SM_FETCH); SekClose(); }
// Scan ram static INT32 drvScan(INT32 nAction, INT32* pnMin) { struct BurnArea ba; if (pnMin) { // Return minimum compatible version *pnMin = 0x029496; } if (nAction & ACB_VOLATILE) { // Scan volatile ram memset(&ba, 0, sizeof(ba)); ba.Data = RamStart; ba.nLen = RamEnd - RamStart; ba.szName = "RAM"; BurnAcb(&ba); SekScan(nAction); // Scan 68000 ZetScan(nAction); // Scan Z80 SCAN_VAR(nCurrentBank); MSM6295Scan(0, nAction); MSM6295Scan(1, nAction); BurnYM2151Scan(nAction); ToaScanGP9001(nAction, pnMin); SCAN_VAR(nIRQPending); SCAN_VAR(nTextROMStatus); SCAN_VAR(drvInput); if (nAction & ACB_WRITE) { INT32 n = nTextROMStatus; nTextROMStatus = -1; SekOpen(0); Map68KTextROM(n); SekClose(); n = nCurrentBank; nCurrentBank = -1; ZetOpen(0); drvZ80Bankswitch(n); ZetClose(); } } return 0; }
static INT32 DrvDoReset() { memset (AllRam, 0, RamEnd - AllRam); SekOpen(0); SekReset(); SekClose(); KonamiICReset(); YMZ280BReset(); for (INT32 i = 0; i < 4; i++) layer_colorbase[i] = i << 6; return 0; }
static int DrvDoReset() { SekOpen(0); SekReset(); SekClose(); ZetOpen(0); ZetReset(); ZetClose(); BurnYM3812Reset(); bEnableInterrupts = false; demonwld_hack = 0; return 0; }
int MiaFrame() { TmntInpMake(); SekOpen(0); if (bInt5) { SekSetIRQLine(5, SEK_IRQSTATUS_AUTO); } SekRun(8000000/60); // 8mhz SekClose(); if (pBurnDraw!=NULL) { TmntDraw(); } return 0; }
static int DrvDoReset() { SekOpen(0); SekReset(); SekClose(); VezOpen(0); VezReset(); VezClose(); BurnYM2151Reset(); MSM6295Reset(0); v25_reset = 1; return 0; }
int MiaInit() { int nRet=0; int nLen=0; // Find out how much memory is needed Mem=NULL; MiaIndex(); nLen=MemEnd-(unsigned char *)0; Mem=(unsigned char *)malloc(nLen); if (Mem==NULL) return 1; memset(Mem,0,nLen); // blank all memory MiaIndex(); // Index the allocated memory nRet=MiaLoadRoms(); if (nRet!=0) return 1; // Load the roms into memory SekInit(0,0x68000); // Allocate 68000 SekOpen(0); // Map in memory: // ----------------- Cpu 1 ------------------------ SekMapMemory( Tmnt68KROM01 ,0x000000,0x03FFFF,SM_ROM); // 68000 Rom SekMapMemory( TmntRam06,0x040000,0x063FFF,SM_RAM); SekMapMemory(TmntRam08,0x080000,0x080FFF,SM_ROM); // Write goes through handler SekMapMemory( PriRam,0x0c0000,0x0c00FF,SM_RAM); SekMapMemory(TmntRam10,0x100000,0x107FFF,SM_RAM); SekMapMemory( K051960Ram,0x140000,0x1407FF,SM_RAM); SekSetReadWordHandler(0,TmntReadWord); SekSetWriteWordHandler(0,TmntWriteWord); SekSetReadByteHandler(0,TmntReadByte); SekSetWriteByteHandler(0,TmntWriteByte); // ------------------------------------------------ SekReset(); bInt5=0; SekClose(); MiaReset(); GenericTilesInit(); TmntPalInit(); return 0; }