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 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; }
INT32 CpsMemInit() { if (AllocateMemory()) { return 1; } SekOpen(0); SekSetResetCallback(CPSResetCallback); // Map in memory: // 68000 Rom (as seen as is, through read) SekMapMemory(CpsRom, 0, nCpsRomLen - 1, SM_READ); // 68000 Rom (as seen decrypted, through fetch) if (nCpsCodeLen > 0) { // Decoded part (up to nCpsCodeLen) SekMapMemory(CpsCode, 0, nCpsCodeLen - 1, SM_FETCH); } if (nCpsRomLen > nCpsCodeLen) { // The rest (up to nCpsRomLen) SekMapMemory(CpsRom + nCpsCodeLen, nCpsCodeLen, nCpsRomLen - 1, SM_FETCH); } nCpsObjectBank = -1; CpsMapObjectBanks(0); #if 0 SekMapHandler(3, 0x660000, 0x663FFF, SM_RAM); SekSetReadByteHandler(3, CPSExtraNVRAMReadByte); SekSetWriteByteHandler(3, CPSExtraNVRAMWriteByte); #else SekMapMemory(CpsRam660, 0x660000, 0x663FFF, SM_RAM); #endif // SekMapHandler(4, 0x708000, 0x709FFF, SM_WRITE); // SekMapHandler(4, 0x70A000, 0x70BFFF, SM_WRITE); // SekMapHandler(4, 0x70C000, 0x70DFFF, SM_WRITE); // SekMapHandler(4, 0x70E000, 0x70FFFF, SM_WRITE); // SekSetWriteByteHandler(4, CpsWriteSpriteByte); // SekSetWriteWordHandler(4, CpsWriteSpriteWord); SekMapMemory(CpsRam90, 0x900000, 0x92FFFF, SM_RAM); // Gfx Ram SekMapMemory(CpsRamFF, 0xFF0000, 0xFFFFFF, SM_RAM); // Work Ram SekSetReadByteHandler(0, CpsReadByte); SekSetWriteByteHandler(0, CpsWriteByte); SekSetReadWordHandler(0, CpsReadWord); SekSetWriteWordHandler(0, CpsWriteWord); // QSound if (!Cps2DisableQSnd) { SekMapHandler(1, 0x618000, 0x619FFF, SM_RAM); SekSetReadByteHandler(1, CPSQSoundC0ReadByte); SekSetWriteByteHandler(1, CPSQSoundC0WriteByte); } SekClose(); return 0; }
INT32 CpsMemInit() { if (AllocateMemory()) { return 1; } SekOpen(0); SekSetResetCallback(CPSResetCallback); // Map in memory: // 68000 Rom (as seen as is, through read) SekMapMemory(CpsRom, 0, nCpsRomLen - 1, SM_READ); // 68000 Rom (as seen decrypted, through fetch) if (nCpsCodeLen > 0) { // Decoded part (up to nCpsCodeLen) SekMapMemory(CpsCode, 0, nCpsCodeLen - 1, SM_FETCH); } if (nCpsRomLen > nCpsCodeLen) { // The rest (up to nCpsRomLen) SekMapMemory(CpsRom + nCpsCodeLen, nCpsCodeLen, nCpsRomLen - 1, SM_FETCH); } if (Cps == 2) { nCpsObjectBank = -1; CpsMapObjectBanks(0); #if 0 SekMapHandler(3, 0x660000, 0x663FFF, SM_RAM); SekSetReadByteHandler(3, CPSExtraNVRAMReadByte); SekSetWriteByteHandler(3, CPSExtraNVRAMWriteByte); #else SekMapMemory(CpsRam660, 0x660000, 0x663FFF, SM_RAM); #endif // SekMapHandler(4, 0x708000, 0x709FFF, SM_WRITE); // SekMapHandler(4, 0x70A000, 0x70BFFF, SM_WRITE); // SekMapHandler(4, 0x70C000, 0x70DFFF, SM_WRITE); // SekMapHandler(4, 0x70E000, 0x70FFFF, SM_WRITE); // SekSetWriteByteHandler(4, CpsWriteSpriteByte); // SekSetWriteWordHandler(4, CpsWriteSpriteWord); } SekMapMemory(CpsRam90, 0x900000, 0x92FFFF, SM_RAM); // Gfx Ram SekMapMemory(CpsRamFF, 0xFF0000, 0xFFFFFF, SM_RAM); // Work Ram SekSetReadByteHandler(0, CpsReadByte); SekSetWriteByteHandler(0, CpsWriteByte); SekSetReadWordHandler(0, CpsReadWord); SekSetWriteWordHandler(0, CpsWriteWord); // QSound if ((Cps == 2) && !Cps2DisableQSnd) { SekMapHandler(1, 0x618000, 0x619FFF, SM_RAM); SekSetReadByteHandler(1, CPSQSoundC0ReadByte); SekSetWriteByteHandler(1, CPSQSoundC0WriteByte); } if (Cps1Qs == 1) { // Map the 1st 32KB of the QSound ROM into the 68K address space for (INT32 i = 0x7FFF; i >= 0; i--) { CpsEncZRom[(i << 1) + 0] = CpsEncZRom[i]; CpsEncZRom[(i << 1) + 1] = 0xFF; } SekMapMemory(CpsEncZRom, 0xF00000, 0xF0FFFF, SM_ROM); // QSound shared RAM SekMapHandler(1, 0xF18000, 0xF19FFF, SM_RAM); SekMapHandler(2, 0xF1E000, 0xF1FFFF, SM_RAM); SekSetReadByteHandler(1, CPSQSoundC0ReadByte); SekSetWriteByteHandler(1, CPSQSoundC0WriteByte); SekSetReadByteHandler(2, CPSQSoundF0ReadByte); SekSetWriteByteHandler(2, CPSQSoundF0WriteByte); } SekClose(); return 0; }