static int s1945iiInit() { int nRet; Mem = NULL; MemIndex(); int nLen = MemEnd - (unsigned char *)0; if ((Mem = (unsigned char *)malloc(nLen)) == NULL) return 1; memset(Mem, 0, nLen); // blank all memory MemIndex(); nRet = BurnLoadRom(RomSH2 + 0x000000, 0, 2); if (nRet != 0) return 1; nRet = BurnLoadRom(RomSH2 + 0x000001, 1, 2); if (nRet != 0) return 1; be_to_le( RomSH2, 0x100000 ); #if 0 FILE * f = fopen("d.bin", "wb+"); fwrite(RomSH2, 1, 0x100000, f); fclose(f); #endif { Sh2Init(1); Sh2Open(0); // Map 68000 memory: Sh2MapMemory(RomSH2, 0x00000000, 0x000fffff, SM_ROM); Sh2MapMemory(RamSpr, 0x03000000, 0x0300ffff, SM_RAM); Sh2MapMemory((unsigned char *) RamPal, 0x03040000, 0x03044fff, SM_RAM); Sh2MapMemory(RamVReg, 0x03050000, 0x0305ffff, SM_WRITE); Sh2MapMemory(RamSH2, 0x06000000, 0x060fffff, SM_RAM); Sh2SetReadByteHandler (0, ps3v1ReadByte); Sh2SetReadWordHandler (0, ps3v1ReadWord); Sh2SetReadLongHandler (0, ps3v1ReadLong); Sh2SetWriteByteHandler(0, ps3v1WriteByte); Sh2SetWriteWordHandler(0, ps3v1WriteWord); Sh2SetWriteLongHandler(0, ps3v1WriteLong); } DrvDoReset(); return 0; }
static int CyvernInit() { int nRet = 0, nLen; BurnSetRefreshRate(59.5971); // Allocate and Blank all required memory Mem = NULL; MemIndex(); nLen = MemEnd - (unsigned char *)0; if ((Mem = (unsigned char *)malloc(nLen)) == NULL) return 1; memset(Mem, 0, nLen); MemIndex(); DrvTempRom = (unsigned char *)malloc(0x800000); // Load BIOS Rom nRet = BurnLoadRom(DrvBiosRom + 0x000000, 0, 1); if (nRet != 0) return 1; be_to_le(DrvBiosRom, 0x00080000); // Load Program Rom nRet = BurnLoadRom(DrvPrgRom + 0x000000, 1, 2); if (nRet != 0) return 1; nRet = BurnLoadRom(DrvPrgRom + 0x000001, 2, 2); if (nRet != 0) return 1; be_to_le(DrvPrgRom, 0x00200000); free(DrvTempRom); // Setup the 68000 emulation Sh2Init(1); Sh2Open(0); Sh2MapMemory(DrvBiosRom , 0x00000000, 0x0007ffff, SM_ROM); Sh2MapMemory(DrvSpriteRam , 0x02000000, 0x02003fff, SM_RAM); Sh2MapMemory(DrvSpriteRegs , 0x02100000, 0x0210003f, SM_RAM); Sh2MapMemory(DrvTileRegs , 0x02400000, 0x0240007f, SM_RAM); Sh2MapMemory(DrvTileARam , 0x02500000, 0x02503fff, SM_RAM); Sh2MapMemory(DrvTileBRam , 0x02504000, 0x02507fff, SM_RAM); Sh2MapMemory(DrvTileLineRam , 0x02600000, 0x02607fff, SM_RAM); Sh2MapMemory(DrvPaletteRegs , 0x02a00000, 0x02a0001f, SM_RAM); Sh2MapMemory(DrvPaletteRam , 0x02a40000, 0x02a5ffff, SM_RAM); Sh2MapMemory(DrvPrgRom , 0x04000000, 0x041fffff, SM_ROM); Sh2MapMemory(DrvTileBTilesRam , 0x04800000, 0x0483ffff, SM_RAM); Sh2MapMemory(DrvPrgRam , 0x06000000, 0x06ffffff, SM_RAM); // Sh2MapMemory(DrvPrgRam , 0x06000000, 0x06ffffff, SM_WRITE); Sh2MapMemory(DrvCacheRam , 0xc0000000, 0xc0000fff, SM_RAM); // Sh2MapHandler(1 , 0x06000028, 0x0600002b, SM_READ); Sh2SetReadByteHandler (0, CyvernReadByte); Sh2SetReadWordHandler (0, CyvernReadWord); Sh2SetReadLongHandler (0, CyvernReadLong); Sh2SetWriteByteHandler(0, CyvernWriteByte); Sh2SetWriteWordHandler(0, CyvernWriteWord); Sh2SetWriteLongHandler(0, CyvernWriteLong); // Sh2SetReadByteHandler (1, BiosSkipReadByte); // Sh2SetReadWordHandler (1, BiosSkipReadWord); // Sh2SetReadLongHandler (1, BiosSkipReadLong); Sh2Close(); GenericTilesInit(); // Reset the driver DrvDoReset(); return 0; }