static void __fastcall gradius3_main_write_byte(UINT32 address, UINT8 data) { if ((address & 0xfe0000) == 0x180000) { DrvShareRAM2[(address & 0x1ffff)^1] = data; expand_graphics_single(address); return; } switch (address) { case 0x0c0000: case 0x0c0001: { // if enabling CPU B, burn off some cycles to keep things sync'd. if (gradius3_cpub_enable & 8 && ~data & 8) { INT32 cycles_to_burn = SekTotalCycles(); SekClose(); SekOpen(1); SekIdle(cycles_to_burn - SekTotalCycles()); SekClose(); SekOpen(0); } gradius3_priority =(data & 0x04)>>2; gradius3_cpub_enable = data & 0x08; irqA_enable = data & 0x20; } return; case 0x0d8000: case 0x0d8001: interrupt_triggered = irqB_mask & 0x04; return; case 0x0e0000: case 0x0e0001: // watchdog return; case 0x0e8000: *soundlatch = data; return; case 0x0f0000: ZetSetVector(0xff); ZetSetIRQLine(0, CPU_IRQSTATUS_ACK); return; } if (address >= 0x14c000 && address <= 0x153fff) { address -= 0x14c000; K052109Write(address / 2, data); return; } }
/* this function checks the cache to see if the current state is cached, if it is then it copies the cached data to the user region where code is executed from, if its not cached then it gets decrypted to the current cache position using the functions in fd1094.c */ static void fd1094_setstate_and_decrypt(INT32 state) { INT32 i; UINT32 addr; // force a flush of the prefetch cache m68k_set_reg(M68K_REG_PREF_ADDR, 0x1000); /* set the FD1094 state ready to decrypt.. */ state = fd1094_set_state(fd1094_key,state); /* first check the cache, if its cached we don't need to decrypt it, just copy */ for (i=0; i<S16_NUMCACHE; i++) { if (fd1094_cached_states[i] == state) { /* copy cached state */ fd1094_userregion=fd1094_cacheregion[i]; SekOpen(nFD1094CPU); SekMapMemory((UINT8*)fd1094_userregion, 0x000000, 0x0fffff, SM_FETCH); if (System18Banking) SekMapMemory((UINT8*)fd1094_userregion + 0x200000, 0x200000, 0x27ffff, SM_FETCH); SekClose(); return; } } /* mark it as cached (because it will be once we decrypt it) */ fd1094_cached_states[fd1094_current_cacheposition]=state; for (addr=0; addr<fd1094_cpuregionsize/2; addr++) { UINT16 dat; dat = fd1094_decode(addr,fd1094_cpuregion[addr],fd1094_key,0); fd1094_cacheregion[fd1094_current_cacheposition][addr]=dat; } /* copy newly decrypted data to user region */ fd1094_userregion=fd1094_cacheregion[fd1094_current_cacheposition]; SekOpen(nFD1094CPU); SekMapMemory((UINT8*)fd1094_userregion, 0x000000, 0x0fffff, SM_FETCH); if (System18Banking) SekMapMemory((UINT8*)fd1094_userregion + 0x200000, 0x200000, 0x27ffff, SM_FETCH); SekClose(); fd1094_current_cacheposition++; if (fd1094_current_cacheposition>=S16_NUMCACHE) { #if 1 && defined FBA_DEBUG bprintf(PRINT_NORMAL, _T("out of cache, performance may suffer, increase S16_NUMCACHE!\n")); #endif fd1094_current_cacheposition=0; } }
void __fastcall gradius3_main_write_byte(unsigned int address, unsigned char data) { switch (address) { case 0x0c0000: case 0x0c0001: { // if enabling CPU B, burn off some cycles to keep things sync'd. if (gradius3_cpub_enable & 8 && ~data & 8) { int cycles_to_burn = SekTotalCycles(); SekClose(); SekOpen(1); SekIdle(cycles_to_burn - SekTotalCycles()); SekClose(); SekOpen(0); } gradius3_priority = data & 0x04; gradius3_cpub_enable = data & 0x08; irqA_enable = data & 0x20; } return; case 0x0d8000: case 0x0d8001: interrupt_triggered = irqB_mask & 0x04; return; case 0x0e0000: case 0x0e0001: // watchdog return; case 0x0e8000: *soundlatch = data; return; case 0x0f0000: ZetSetVector(0xff); ZetSetIRQLine(0, ZET_IRQSTATUS_ACK); return; } if (address >= 0x14c000 && address <= 0x153fff) { address -= 0x14c000; K052109Write(address / 2, data); return; } }
static INT32 DrvReset() { // Reset machine if (Cps == 2 || PangEEP || Cps1Qs == 1 || CpsBootlegEEPROM) EEPROMReset(); //HACK if (glob_ffingeron&&virtual_stick_on) { wait_control=60; glob_framecpt=0; glob_replay_last_dx16=glob_replay_last_dy16=0; glob_delta_dy16=0; glob_replay_last_fingerOn=0; } // 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 drvDoReset() { // Insert region code into 68K ROM, code by BisonSAS UINT8 nRegion = drvRegion & 0x1F; if (nRegion<=25) { Rom01[0x00000^1]=(UINT8)(nRegion<<13) | (drvRegion & 0x1F); } SekOpen(0); nIRQPending = 0; SekSetIRQLine(0, SEK_IRQSTATUS_NONE); Map68KTextROM(true); SekReset(); SekClose(); ZetOpen(0); ZetReset(); ZetClose(); MSM6295Reset(0); MSM6295Reset(1); BurnYM2151Reset(); return 0; }
static INT32 crushermInit() { INT32 nLen; BurnSetRefreshRate(CAVE_REFRESHRATE); // Find out how much memory is needed Mem = NULL; MemIndex(); nLen = MemEnd - (UINT8 *)0; if ((Mem = (UINT8 *)BurnMalloc(nLen)) == NULL) { return 1; } memset(Mem, 0, nLen); // blank all memory MemIndex(); // Index the allocated memory // Load the roms into memory if (crushermLoadRoms()) { return 1; } EEPROMInit(&eeprom_interface_93C46_8bit); { SekInit(0, 0x68000); // Allocate 68000 SekOpen(0); // Map 68000 memory: SekMapMemory(Rom01, 0x000000, 0x07FFFF, MAP_ROM); // CPU 0 ROM SekMapMemory(CaveTileRAM[0], 0x100000, 0x107FFF, MAP_RAM); SekMapMemory(CaveSpriteRAM, 0x180000, 0x187FFF, MAP_RAM); SekMapMemory(CavePalSrc, 0x200000, 0x207FFF, MAP_RAM); SekMapMemory(Ram01, 0x340000, 0x34FFFF, MAP_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, 0x200000); YMZ280BSetRoute(BURN_SND_YMZ280B_YMZ280B_ROUTE_1, 1.00, BURN_SND_ROUTE_LEFT); YMZ280BSetRoute(BURN_SND_YMZ280B_YMZ280B_ROUTE_2, 1.00, BURN_SND_ROUTE_RIGHT); bDrawScreen = true; DrvDoReset(); // Reset machine return 0; }
void install_protection_asic27a_svg() { nPGMArm7Type = 3; pPgmScanCallback = svg_asic27aScan; svg_ram_sel = 0; svg_ram[0] = PGMARMShareRAM; svg_ram[1] = PGMARMShareRAM2; SekOpen(0); SekMapHandler(5, 0x500000, 0x5fffff, MAP_RAM); SekSetReadWordHandler(5, svg_read_word); SekSetWriteWordHandler(5, svg_write_word); SekSetWriteByteHandler(5, svg_write_byte); SekClose(); Arm7Init(0); Arm7Open(0); Arm7MapMemory(PGMARMROM, 0x00000000, 0x00003fff, MAP_ROM); Arm7MapMemory(PGMUSER0, 0x08000000, 0x08000000 | (nPGMExternalARMLen-1), MAP_ROM); Arm7MapMemory(PGMARMRAM0, 0x10000000, 0x100003ff, MAP_RAM); Arm7MapMemory(PGMARMRAM1, 0x18000000, 0x1803ffff, MAP_RAM); Arm7MapMemory(svg_ram[1], 0x38000000, 0x3800ffff, MAP_RAM); Arm7MapMemory(PGMARMRAM2, 0x50000000, 0x500003ff, MAP_RAM); Arm7SetWriteByteHandler(svg_arm7_write_byte); Arm7SetReadByteHandler(svg_arm7_read_byte); Arm7Close(); }
static INT32 DrvDoReset() { SekOpen(0); SekReset(); SekClose(); // BurnYM3812Reset(); BurnSampleReset(); #ifdef TOAPLAN_SOUND_SAMPLES_HACK StopAllSamples(); for (INT32 i = 0; i <= 0x28; i++) { BurnSampleSetAllRoutes(i, 1.00, BURN_SND_ROUTE_BOTH); BurnSampleSetLoop(i, 0); } HiscoreReset(); FadeoutReady = 0; FadeoutStop = 0; Playing1 = 0xff; Playing2 = 0xff; Play1 = 0; Counter1 = 0; Vol1 = 0; Wait = 0; Start = 0; Start2 = 0; #endif bEnableInterrupts = false; return 0; }
static INT32 DrvInit() { GenericTilesInit(); AllMem = NULL; MemIndex(); INT32 nLen = MemEnd - (UINT8 *)0; if ((AllMem = (UINT8 *)BurnMalloc(nLen)) == NULL) return 1; memset(AllMem, 0, nLen); MemIndex(); { if (BurnLoadRom(Drv68KROM + 0x000000, 0, 1)) return 1; if (BurnLoadRom(Drv68KROM + 0x080000, 1, 1)) return 1; if (BurnLoadRom(DrvGfxROM + 0x000000, 2, 2)) return 1; if (BurnLoadRom(DrvGfxROM + 0x000001, 3, 2)) return 1; if (BurnLoadRom(DrvGfxROM + 0x100000, 4, 2)) return 1; if (BurnLoadRom(DrvGfxROM + 0x100001, 5, 2)) return 1; if (BurnLoadRom(YMZ280BROM + 0x000000, 6, 1)) return 1; if (BurnLoadRom(YMZ280BROM + 0x080000, 7, 1)) return 1; if (BurnLoadRom(YMZ280BROM + 0x100000, 8, 1)) return 1; if (BurnLoadRom(YMZ280BROM + 0x180000, 9, 1)) return 1; DrvGfxDecode(); } SekInit(0, 0x68000); SekOpen(0); SekMapMemory(Drv68KROM, 0x000000, 0x0fffff, MAP_ROM); SekMapMemory(Drv68KRAM, 0x400000, 0x407fff, MAP_RAM); SekMapMemory(DrvPalRAM, 0xb00000, 0xb03fff, MAP_RAM); SekMapMemory(DrvPalRAM, 0xb04000, 0xb047ff, MAP_ROM); SekSetWriteWordHandler(0, bishi_write_word); SekSetWriteByteHandler(0, bishi_write_byte); SekSetReadWordHandler(0, bishi_read_word); SekSetReadByteHandler(0, bishi_read_byte); SekClose(); K055555Init(); K054338Init(); K056832Init(DrvGfxROM, DrvGfxROMExp, 0x200000, bishi_tile_callback); K056832SetGlobalOffsets(29, 16); K056832SetLayerOffsets(0, -2, 0); K056832SetLayerOffsets(1, 2, 0); K056832SetLayerOffsets(2, 4, 0); K056832SetLayerOffsets(3, 6, 0); K056832SetLayerAssociation(0); YMZ280BInit(16934400, bishi_sound_irq); YMZ280BSetRoute(BURN_SND_YMZ280B_YMZ280B_ROUTE_1, 1.00, BURN_SND_ROUTE_LEFT); YMZ280BSetRoute(BURN_SND_YMZ280B_YMZ280B_ROUTE_2, 1.00, BURN_SND_ROUTE_RIGHT); DrvDoReset(); return 0; }
static int DrvInit() { int nLen; #ifdef DRIVER_ROTATION bToaRotateScreen = false; #endif nGP9001ROMSize[0] = 0x800000; // Find out how much memory is needed Mem = NULL; MemIndex(); nLen = MemEnd - (unsigned char *)0; if ((Mem = (unsigned char *)malloc(nLen)) == NULL) { return 1; } memset(Mem, 0, nLen); // blank all memory MemIndex(); // Index the allocated memory // Load the roms into memory if (LoadRoms()) { return 1; } { SekInit(0, 0x68000); // Allocate 68000 SekOpen(0); // Map 68000 memory: SekMapMemory(Rom01, 0x000000, 0x07FFFF, SM_ROM); // CPU 0 ROM SekMapMemory(Ram01, 0x100000, 0x103FFF, SM_RAM); SekMapMemory(RamPal, 0x400000, 0x400FFF, SM_RAM); // Palette RAM SekSetReadWordHandler(0, kbashReadWord); SekSetReadByteHandler(0, kbashReadByte); SekSetWriteWordHandler(0, kbashWriteWord); SekSetWriteByteHandler(0, kbashWriteByte); SekClose(); } nSpriteYOffset = 0x0011; nLayer0XOffset = -0x01D6; nLayer1XOffset = -0x01D8; nLayer2XOffset = -0x01DA; ToaInitGP9001(); nToaPalLen = nColCount; ToaPalSrc = RamPal; ToaPalInit(); bDrawScreen = true; DrvDoReset(); // Reset machine return 0; }
static int DrvDoReset() { SekOpen(0); SekReset(); SekClose(); return 0; }
void MiaReset() { bInt5=0; tmnt_soundlatch = 0; SekOpen(0); SekReset(); SekClose(); }
static int DrvInit() { 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 (LoadRoms()) { 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, 0x300000, 0x30FFFF, SM_RAM); SekSetReadWordHandler(0, korokoroReadWord); SekSetReadByteHandler(0, korokoroReadByte); SekSetWriteWordHandler(0, korokoroWriteWord); SekSetWriteByteHandler(0, korokoroWriteByte); SekClose(); } nCaveRowModeOffset = 1; CavePalInit(0x8000); CaveTileInit(); CaveSpriteInit(1, 0x300000); 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 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 int DrvDoReset() { SekOpen(0); SekReset(); SekClose(); // BurnYM3812Reset(); bEnableInterrupts = false; return 0; }
static int drvDoReset() { SekOpen(0); SekReset(); SekClose(); ZetOpen(0); ZetReset(); ZetClose(); ZetRun(4000000/60); BurnYM2151Reset(); 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_open(INT32 nCpu) { switch (nCpuType) { case 1: SekOpen(nCpu); break; case 5: ZetOpen(nCpu); break; } }
static INT32 DrvDoReset() { SekOpen(0); SekReset(); SekClose(); BurnSampleReset(); #ifdef TOAPLAN_SOUND_SAMPLES_HACK StopAllSamples(); #endif return 0; }
static INT32 DrvDoReset() { SekOpen(0); SekReset(); SekClose(); MSM6295Reset(0); MSM6295Reset(1); nPreviousOkiBank = 0; memcpy (RomSnd, RomSnd + 0x40000, 0x40000);//? 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); 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 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; }