static INT32 drvInit() { INT32 nLen; #ifdef DRIVER_ROTATION bToaRotateScreen = true; #endif nGP9001ROMSize[0] = 0x01000000; // 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); // Zero memory MemIndex(); // Index the allocated memory if (LoadRoms()) { return 1; } { SekInit(0, 0x68000); // Allocate 68000 SekOpen(0); // Map 68000 memory: SekMapMemory(Rom01, 0x000000, 0x1FFFFF, SM_ROM); // CPU 0 ROM SekMapMemory(Ram02, 0x208000, 0x20FFFF, SM_RAM); Map68KTextROM(true); SekSetReadWordHandler(0, batriderReadWord); SekSetReadByteHandler(0, batriderReadByte); SekSetWriteWordHandler(0, batriderWriteWord); SekSetWriteByteHandler(0, batriderWriteByte); SekMapHandler(1, 0x400000, 0x400400, SM_RAM); // GP9001 addresses SekSetReadWordHandler(1, batriderReadWordGP9001); SekSetWriteWordHandler(1, batriderWriteWordGP9001); SekMapHandler(2, 0x300000, 0x37FFFF, SM_ROM); // Z80 ROM SekSetReadByteHandler(2, batriderReadByteZ80ROM); SekSetReadWordHandler(2, batriderReadWordZ80ROM); SekClose(); } nSpriteYOffset = 0x0001; nLayer0XOffset = -0x01D6; nLayer1XOffset = -0x01D8; nLayer2XOffset = -0x01DA; ToaInitGP9001(); nExtraTXOffset = 0x2C; ToaExtraTextInit(); drvZInit(); // Initialize Z80 BurnYM2151Init(32000000 / 8); BurnYM2151SetAllRoutes(1.00, BURN_SND_ROUTE_BOTH); MSM6295Init(0, 32000000 / 10 / 132, 1); MSM6295Init(1, 32000000 / 10 / 165, 1); MSM6295SetRoute(0, 1.00, BURN_SND_ROUTE_BOTH); MSM6295SetRoute(1, 1.00, BURN_SND_ROUTE_BOTH); nToaPalLen = nColCount; ToaPalSrc = RamPal; ToaPalInit(); nTextROMStatus = -1; bDrawScreen = true; drvDoReset(); // Reset machine return 0; }
static int drvInit() { int nLen; #ifdef DRIVER_ROTATION bToaRotateScreen = true; #endif nGP9001ROMSize[0] = 0x01000000; // 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); // Zero memory MemIndex(); // Index the allocated memory if (LoadRoms()) { return 1; } { SekInit(0, 0x68000); // Allocate 68000 SekOpen(0); // Map 68000 memory: SekMapMemory(Rom01, 0x000000, 0x1FFFFF, SM_ROM); // CPU 0 ROM SekMapMemory(Ram02, 0x208000, 0x20FFFF, SM_RAM); Map68KTextROM(true); SekSetReadWordHandler(0, batriderReadWord); SekSetReadByteHandler(0, batriderReadByte); SekSetWriteWordHandler(0, batriderWriteWord); SekSetWriteByteHandler(0, batriderWriteByte); SekMapHandler(1, 0x400000, 0x400400, SM_RAM); // GP9001 addresses SekSetReadWordHandler(1, batriderReadWordGP9001); SekSetWriteWordHandler(1, batriderWriteWordGP9001); SekMapHandler(2, 0x300000, 0x37FFFF, SM_ROM); // Z80 ROM SekSetReadByteHandler(2, batriderReadByteZ80ROM); SekSetReadWordHandler(2, batriderReadWordZ80ROM); SekClose(); } nSpriteYOffset = 0x0001; nLayer0XOffset = -0x01D6; nLayer1XOffset = -0x01D8; nLayer2XOffset = -0x01DA; ToaInitGP9001(); nExtraTXOffset = 0x2C; ToaExtraTextInit(); drvZInit(); // Initialize Z80 BurnYM2151Init(32000000 / 8, 50.0); MSM6295Init(0, 32000000 / 10 / 132, 50.0, 1); MSM6295Init(1, 32000000 / 10 / 165, 50.0, 1); nToaPalLen = nColCount; ToaPalSrc = RamPal; ToaPalInit(); nTextROMStatus = -1; 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; }