static int DrvDoReset() { Sh2Reset( *(unsigned int *)(DrvSh2ROM + 0), *(unsigned int *)(DrvSh2ROM + 4) ); memset (AllRam, 0, RamEnd - AllRam); if (EEPROMAvailable() == 0) { EEPROMFill(DrvEEPROM, 0, 0x100); } BurnYMF278BReset(); sample_offs = 0; previous_graphics_bank = -1; return 0; }
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 *)malloc(nLen)) == NULL) { return 1; } memset(Mem, 0, nLen); // blank all memory MemIndex(); // Index the allocated memory EEPROMInit(&eeprom_interface_93C46); if (!EEPROMAvailable()) EEPROMFill(default_eeprom,0, sizeof(default_eeprom)); // 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, 0x10FFFF, SM_RAM); SekMapMemory(CaveTileRAM[1], 0x200000, 0x207FFF, SM_RAM); SekMapMemory(CaveTileRAM[0], 0x300000, 0x307FFF, SM_RAM); SekMapMemory(CaveTileRAM[2] + 0x4000, 0x400000, 0x403FFF, SM_RAM); SekMapMemory(CaveTileRAM[2] + 0x4000, 0x404000, 0x407FFF, SM_RAM); SekMapMemory(CaveSpriteRAM, 0x500000, 0x50FFFF, SM_RAM); SekMapMemory(CavePalSrc, 0xA08000, 0xA08FFF, SM_RAM); // Palette RAM SekSetReadWordHandler(0, donpachiReadWord); SekSetReadByteHandler(0, donpachiReadByte); SekSetWriteWordHandler(0, donpachiWriteWord); SekSetWriteByteHandler(0, donpachiWriteByte); SekClose(); } CavePalInit(0x8000); CaveTileInit(); CaveSpriteInit(0, 0x0800000); CaveTileInitLayer(0, 0x200000, 8, 0x4000); CaveTileInitLayer(1, 0x200000, 8, 0x4000); CaveTileInitLayer(2, 0x080000, 8, 0x4000); MSM6295Init(0, 8000, 50.0, 0); MSM6295Init(1, 16000, 50.0, 0); MSM6295SampleData[0][0] = MSM6295ROM + 0x100000; MSM6295SampleInfo[0][0] = MSM6295ROM + 0x100000 + 0x0000; MSM6295SampleData[0][1] = MSM6295ROM + 0x100000; MSM6295SampleInfo[0][1] = MSM6295ROM + 0x100000 + 0x0100; MSM6295SampleData[0][2] = MSM6295ROM + 0x100000; MSM6295SampleInfo[0][2] = MSM6295ROM + 0x100000 + 0x0200; MSM6295SampleData[0][3] = MSM6295ROM + 0x100000; MSM6295SampleInfo[0][3] = MSM6295ROM + 0x100000 + 0x0300; bDrawScreen = true; #if defined FBA_DEBUG && defined USE_SPEEDHACKS bprintf(PRINT_IMPORTANT, _T(" * Using speed-hacks (detecting idle loops).\n")); #endif DrvDoReset(); // Reset machine return 0; }