static INT32 DrvInit() { INT32 nLen; #ifdef DRIVER_ROTATION bToaRotateScreen = false; #endif nGP9001ROMSize[0] = 0x800000; // 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 (LoadRoms()) { return 1; } { SekInit(0, 0x68000); // Allocate 68000 SekOpen(0); SekMapMemory(Rom01, 0x000000, 0x07FFFF, SM_ROM); SekMapMemory(Ram01, 0x100000, 0x103FFF, SM_RAM); SekMapMemory(RamPal, 0x400000, 0x400FFF, SM_RAM); SekSetReadWordHandler(0, kbash2ReadWord); SekSetReadByteHandler(0, kbash2ReadByte); SekSetWriteWordHandler(0, kbash2WriteWord); SekSetWriteByteHandler(0, kbash2WriteByte); SekClose(); } MSM6295Init(0, 1000000 / 132, 100.0, 1); MSM6295Init(1, 1000000 / 132, 100.0, 1); nSpriteYOffset = 0x0011; nLayer0XOffset = -0x01D6; nLayer1XOffset = -0x01D8; nLayer2XOffset = -0x01DA; ToaInitGP9001(); nToaPalLen = nColCount; ToaPalSrc = RamPal; ToaPalInit(); bDrawScreen = true; DrvDoReset(); // Reset machine return 0; }
void init_dec0_aud(int romNumPrg, int romNumSamples) { Ram = (unsigned char*) malloc(0x0600); Rom = (unsigned char*) malloc(0x8000); memset(Ram,0x00, sizeof(Ram)); MSM6295ROM = (unsigned char*) malloc(0x10000); BurnLoadRom(Rom, romNumPrg,1 ); BurnLoadRom(MSM6295ROM,romNumSamples,1); m6502Init(1); m6502Open(0); m6502MapMemory(Ram, 0x0000, 0x05ff, M6502_RAM); // Ram m6502MapMemory(Rom, 0x8000, 0xffff, M6502_ROM); // Rom m6502SetReadHandler(dec0_aud_read_byte); m6502SetWriteHandler(dec0_aud_write_byte); m6502Close(); BurnYM3812Init(3000000, &dec0YMxxxxIrqHandler, &dec0SynchroniseStream, 1); BurnYM2203Init(1, 1500000, &dec0YMxxxxIrqHandler, dec0SynchroniseStream, DrvGetTime, 0); // Setup the OKIM6295 emulation MSM6295Init(0, 1023924/132, 30.0, 1); BurnTimerAttachSek(10000000); }
int PsmInit() { int nMemLen, nRate, nRet; bPsmOkay = 0; // not OK yet if (nBurnSoundRate > 0) { nRate = nBurnSoundRate; } else { nRate = 11025; } if (BurnYM2151Init(3579540, 50.0)) { // Init FM sound chip return 1; } // Allocate a buffer for the intermediate sound (between YM2151 and pBurnSoundOut) nMemLen = nBurnSoundLen * 2 * sizeof(short); WaveBuf = (short*)malloc(nMemLen); if (WaveBuf == NULL) { PsmExit(); return 1; } memset(WaveBuf, 0, nMemLen); // Init to silence // Init ADPCM MSM6295ROM = CpsAd; if (Forgottn) { nRet = MSM6295Init(0, 6061, 21.5, 1); } else { nRet = MSM6295Init(0, 7576, 21.5, 1); } if (nRet!=0) { PsmExit(); return 1; } bPsmOkay = 1; // OK return 0; }
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 INT32 DrvInit() { AllMem = NULL; MemIndex(); INT32 nLen = MemEnd - (UINT8 *)0; if ((AllMem = (UINT8 *)BurnMalloc(nLen)) == NULL) return 1; memset(AllMem, 0, nLen); MemIndex(); { if (BurnLoadRom(DrvZ80ROM0 + 0x000000, 0, 1)) return 1; memmove (DrvZ80ROM0 + 0x10000, DrvZ80ROM0 + 0x08000, 0x78000); if (BurnLoadRom(DrvZ80ROM1 + 0x000000, 1, 1)) return 1; if (BurnLoadRom(DrvGfxROM0 + 0x000000, 2, 1)) return 1; memcpy (DrvSndROM + 0x000000, DrvGfxROM0 + 0x000000, 0x020000); memcpy (DrvSndROM + 0x040000, DrvGfxROM0 + 0x000000, 0x020000); memcpy (DrvSndROM + 0x080000, DrvGfxROM0 + 0x000000, 0x020000); memcpy (DrvSndROM + 0x0c0000, DrvGfxROM0 + 0x000000, 0x020000); memcpy (DrvSndROM + 0x020000, DrvGfxROM0 + 0x000000, 0x020000); memcpy (DrvSndROM + 0x060000, DrvGfxROM0 + 0x020000, 0x020000); memcpy (DrvSndROM + 0x0a0000, DrvGfxROM0 + 0x040000, 0x020000); memcpy (DrvSndROM + 0x0e0000, DrvGfxROM0 + 0x060000, 0x020000); if (BurnLoadRom(DrvGfxROM0 + 0x000000, 3, 1)) return 1; if (BurnLoadRom(DrvGfxROM0 + 0x020000, 4, 1)) return 1; if (BurnLoadRom(DrvGfxROM0 + 0x040000, 5, 1)) return 1; if (BurnLoadRom(DrvGfxROM0 + 0x060000, 6, 1)) return 1; if (BurnLoadRom(DrvGfxROM1 + 0x000000, 7, 1)) return 1; if (BurnLoadRom(DrvGfxROM1 + 0x020000, 8, 1)) return 1; DrvGfxDecode(); } ZetInit(0); ZetOpen(0); ZetMapArea(0x0000, 0x7fff, 0, DrvZ80ROM0); ZetMapArea(0x0000, 0x7fff, 2, DrvZ80ROM0); ZetMapArea(0x8000, 0x87ff, 0, DrvPalRAM); // ZetMapArea(0x8000, 0x87ff, 1, DrvPalRAM); ZetMapArea(0x8000, 0x87ff, 2, DrvPalRAM); ZetMapArea(0x8800, 0x8fff, 0, DrvAttrRAM); ZetMapArea(0x8800, 0x8fff, 1, DrvAttrRAM); ZetMapArea(0x8800, 0x8fff, 2, DrvAttrRAM); ZetMapArea(0xa000, 0xbfff, 0, DrvZ80RAM0); ZetMapArea(0xa000, 0xbfff, 1, DrvZ80RAM0); ZetMapArea(0xa000, 0xbfff, 2, DrvZ80RAM0); ZetSetWriteHandler(speedspn_main_write); ZetSetOutHandler(speedspn_main_write_port); ZetSetInHandler(speedspn_main_read_port); ZetClose(); ZetInit(1); ZetOpen(1); ZetMapArea(0x0000, 0x7fff, 0, DrvZ80ROM1); ZetMapArea(0x0000, 0x7fff, 2, DrvZ80ROM1); ZetMapArea(0x8000, 0x87ff, 0, DrvZ80RAM1); ZetMapArea(0x8000, 0x87ff, 1, DrvZ80RAM1); ZetMapArea(0x8000, 0x87ff, 2, DrvZ80RAM1); ZetSetWriteHandler(speedspn_sound_write); ZetSetReadHandler(speedspn_sound_read); ZetClose(); MSM6295Init(0, 1122000 / 132, 0); MSM6295SetRoute(0, 1.00, BURN_SND_ROUTE_BOTH); DrvDoReset(); GenericTilesInit(); return 0; }
static INT32 DrvInit() { INT32 nLen; #ifdef DRIVER_ROTATION bToaRotateScreen = false; #endif nGP9001ROMSize[0] = 0x800000; // 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 (LoadRoms()) { return 1; } { SekInit(0, 0x68000); // Allocate 68000 SekOpen(0); SekMapMemory(Rom01, 0x000000, 0x07FFFF, MAP_ROM); // CPU 0 ROM SekMapMemory(Ram01, 0x100000, 0x103FFF, MAP_RAM); SekMapMemory(RamPal, 0x400000, 0x400FFF, MAP_RAM); // Palette RAM SekSetReadWordHandler(0, kbashReadWord); SekSetReadByteHandler(0, kbashReadByte); SekSetWriteWordHandler(0, kbashWriteWord); SekSetWriteByteHandler(0, kbashWriteByte); SekClose(); VezInit(0, V25_TYPE, 16000000 /*before divider*/); VezOpen(0); VezMapArea(0x00000, 0x007ff, 0, ShareRAM); VezMapArea(0x00000, 0x007ff, 1, ShareRAM); VezMapArea(0x00000, 0x007ff, 2, ShareRAM); for (INT32 i = 0x80000; i < 0x100000; i += 0x8000) { VezMapArea(i, i + 0x7fff, 0, Rom02); VezMapArea(i, i + 0x7fff, 1, Rom02); VezMapArea(i, i + 0x7fff, 2, Rom02); } VezSetReadHandler(kbash_v25_read); VezSetWriteHandler(kbash_v25_write); VezSetReadPort(kbash_v25_read_port); VezSetDecode(nitro_decryption_table); VezClose(); } BurnYM2151Init(3375000); BurnYM2151SetAllRoutes(0.50, BURN_SND_ROUTE_BOTH); MSM6295Init(0, 1000000 / 132, 1); MSM6295SetRoute(0, 0.50, BURN_SND_ROUTE_BOTH); nSpriteYOffset = 0x0011; nLayer0XOffset = -0x01D6; nLayer1XOffset = -0x01D8; nLayer2XOffset = -0x01DA; ToaInitGP9001(); nToaPalLen = nColCount; ToaPalSrc = RamPal; ToaPalInit(); bDrawScreen = true; DrvDoReset(); // Reset machine return 0; }
static int DrvInit() { 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(Rom68K + 0x000000, 0, 2); if (nRet != 0) return 1; nRet = BurnLoadRom(Rom68K + 0x000001, 1, 2); if (nRet != 0) return 1; BurnLoadRom(RomSpr + 0, 2, 2); BurnLoadRom(RomSpr + 1, 3, 2); // decode sprites unsigned char * tmp = RomSpr; for (int i=0; i<(0x400000/4); i++) { unsigned char c = tmp[2]; tmp[2] = tmp[1]; tmp[1] = c; tmp += 4; } BurnLoadRom(RomBg, 4, 1); BurnLoadRom(MSM6295ROM + 0x00000, 5, 1); BurnLoadRom(MSM6295ROM + 0x80000, 6, 1); { SekInit(0, 0x68000); // Allocate 68000 SekOpen(0); // Map 68000 memory: SekMapMemory(Rom68K, 0x000000, 0x0FFFFF, SM_ROM); // CPU 0 ROM SekMapMemory(Ram68K, 0x100000, 0x10FFFF, SM_RAM); // CPU 0 RAM SekMapMemory((unsigned char *)RamPal, 0x200000, 0x200FFF, SM_ROM); // palette SekMapMemory((unsigned char *)RamSpr0, 0x240000, 0x240FFF, SM_RAM); // sprites 0 SekMapMemory((unsigned char *)RamSpr1, 0x280000, 0x280FFF, SM_RAM); // sprites 1 SekMapMemory((unsigned char *)RamBg, 0x2C0000, 0x2C0FFF, SM_RAM); // back ground SekMapMemory(Ram68K+0x10000,0x8C0000, 0x8CFFFF, SM_RAM); // not used? SekMapHandler(1, 0x200000, 0x200FFF, SM_WRITE); SekSetReadWordHandler(0, k1945iiiReadWord); // SekSetReadByteHandler(0, k1945iiiReadByte); SekSetWriteWordHandler(0, k1945iiiWriteWord); SekSetWriteByteHandler(0, k1945iiiWriteByte); // SekSetWriteByteHandler(1, k1945iiiWriteBytePalette); SekSetWriteWordHandler(1, k1945iiiWriteWordPalette); SekClose(); } MSM6295Init(0, 7500, 80, 1); MSM6295Init(1, 7500, 80, 1); DrvDoReset(); 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(1024, 16); // EEPROM has 1024 bits, uses 16-bit words // 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(); 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; }
static INT32 battlegInit() { INT32 nLen; #ifdef DRIVER_ROTATION bToaRotateScreen = true; #endif nGP9001ROMSize[0] = 0x800000; // 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 (Bgareggabla) { if (LoadRomsBla()) { return 1; } } else { if (Bgareggabl) { if (LoadRomsBl()) { return 1; } } else { if (LoadRoms()) { return 1; } } } { SekInit(0, 0x68000); // Allocate 68000 SekOpen(0); // Map 68000 memory: SekMapMemory(Rom01, 0x000000, 0x0FFFFF, MAP_ROM); // CPU 0 ROM SekMapMemory(Ram01, 0x100000, 0x10FFFF, MAP_RAM); SekMapMemory(RamPal, 0x400000, 0x400FFF, MAP_RAM); // Palette RAM SekMapMemory(Ram02, 0x401000, 0x4017FF, MAP_RAM); // Unused SekMapMemory(ExtraTRAM, 0x500000, 0x501FFF, MAP_RAM); SekMapMemory(ExtraTSelect, 0x502000, 0x502FFF, MAP_RAM); // 0x502000 - Scroll; 0x502200 - RAM SekMapMemory(ExtraTScroll, 0x503000, 0x503FFF, MAP_RAM); // 0x203000 - Offset; 0x503200 - RAM SekSetReadWordHandler(0, battlegReadWord); SekSetReadByteHandler(0, battlegReadByte); SekSetWriteWordHandler(0, battlegWriteWord); SekSetWriteByteHandler(0, battlegWriteByte); SekClose(); } nSpriteXOffset = 0x0024; nSpriteYOffset = 0x0001; nLayer0XOffset = -0x01D6; nLayer1XOffset = -0x01D8; nLayer2XOffset = -0x01DA; ToaInitGP9001(); nExtraTXOffset = 0x2C; ToaExtraTextInit(); if (Bgareggabl) nExtraTXOffset = 0; DrvZ80Init(); // Initialize Z80 BurnYM2151Init(32000000 / 8); BurnYM2151SetAllRoutes(1.00, BURN_SND_ROUTE_BOTH); MSM6295Init(0, 32000000 / 16 / 132, 1); MSM6295SetRoute(0, 1.00, BURN_SND_ROUTE_BOTH); nToaPalLen = nColCount; ToaPalSrc = RamPal; ToaPalInit(); bDrawScreen = true; // mar 2 1996 & apr 2 1996 ver: 0x0009AC - 0x0009B8 & 0x001F5E - 0x001F64 & 0x003A1C - 0x003A22 // feb 2 1996 ver: 0x0009AC - 0x0009B8 & 0x001F2E - 0x001F34 & 0x0039EC - 0x0039F2 DrvDoReset(); // Reset machine return 0; }
static INT32 DrvInit() { INT32 nLen; #ifdef DRIVER_ROTATION bToaRotateScreen = false; #endif nGP9001ROMSize[0] = 0x400000; // 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 (LoadRoms()) { return 1; } { SekInit(0, 0x68000); // Allocate 68000 SekOpen(0); // Map 68000 memory: SekMapMemory(Rom01, 0x000000, 0x07FFFF, MAP_ROM); // CPU 0 ROM SekMapMemory(Ram01, 0x100000, 0x10FFFF, MAP_RAM); SekMapMemory(RamPal, 0x400000, 0x400FFF, MAP_RAM); // Palette RAM SekSetReadWordHandler(0, snowbro2ReadWord); SekSetReadByteHandler(0, snowbro2ReadByte); SekSetWriteWordHandler(0, snowbro2WriteWord); SekSetWriteByteHandler(0, snowbro2WriteByte); SekClose(); } nLayer0XOffset = -0x01D6; nLayer1XOffset = -0x01D8; nLayer2XOffset = -0x01DA; nSpriteYOffset = 0x0011; ToaInitGP9001(); nToaPalLen = nColCount; ToaPalSrc = RamPal; ToaPalInit(); BurnYM2151Init(27000000 / 8); BurnYM2151SetAllRoutes(1.00, BURN_SND_ROUTE_BOTH); MSM6295Init(0, 27000000 / 10 / 132, 1); MSM6295SetRoute(0, 1.00, BURN_SND_ROUTE_BOTH); bDrawScreen = true; DrvDoReset(); // Reset machine return 0; }
static int DrvInit() { int nLen; #ifdef DRIVER_ROTATION bToaRotateScreen = true; #endif nGP9001ROMSize[0] = 0x200000; nGP9001ROMSize[1] = 0x400000; // 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); 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, dogyuunReadWord); SekSetReadByteHandler(0, dogyuunReadByte); SekSetWriteWordHandler(0, dogyuunWriteWord); SekSetWriteByteHandler(0, dogyuunWriteByte); SekClose(); VezInit(0, V25_TYPE, 12500000 /*before divider*/); VezOpen(0); for (int i = 0x80000; i < 0x100000; i += 0x8000) { VezMapArea(i, i + 0x7fff, 0, ShareRAM); VezMapArea(i, i + 0x7fff, 1, ShareRAM); VezMapArea(i, i + 0x7fff, 2, ShareRAM); } VezSetReadHandler(dogyuun_v25_read); VezSetWriteHandler(dogyuun_v25_write); VezSetReadPort(dogyuun_v25_read_port); VezSetDecode(nitro_decryption_table); VezClose(); } BurnYM2151Init(3375000, 50.0); MSM6295Init(0, 1041667 / 132, 50.0, 1); nSpriteXOffset = 0x0024; nSpriteYOffset = 0x0001; nLayer0XOffset = -0x01D6; nLayer1XOffset = -0x01D8; nLayer2XOffset = -0x01DA; ToaInitGP9001(2); nToaPalLen = nColCount; ToaPalSrc = RamPal; ToaPalInit(); 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; }
static int battlegInit() { int nLen; #ifdef DRIVER_ROTATION bToaRotateScreen = true; #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, 0x0FFFFF, SM_ROM); // CPU 0 ROM SekMapMemory(Ram01, 0x100000, 0x10FFFF, SM_RAM); SekMapMemory(RamPal, 0x400000, 0x400FFF, SM_RAM); // Palette RAM SekMapMemory(Ram02, 0x401000, 0x4017FF, SM_RAM); // Unused SekMapMemory(ExtraTRAM, 0x500000, 0x501FFF, SM_RAM); SekMapMemory(ExtraTSelect, 0x502000, 0x502FFF, SM_RAM); // 0x502000 - Scroll; 0x502200 - RAM SekMapMemory(ExtraTScroll, 0x503000, 0x503FFF, SM_RAM); // 0x203000 - Offset; 0x503200 - RAM SekSetReadWordHandler(0, battlegReadWord); SekSetReadByteHandler(0, battlegReadByte); SekSetWriteWordHandler(0, battlegWriteWord); SekSetWriteByteHandler(0, battlegWriteByte); SekClose(); } nSpriteXOffset = 0x0024; nSpriteYOffset = 0x0001; nLayer0XOffset = -0x01D6; nLayer1XOffset = -0x01D8; nLayer2XOffset = -0x01DA; ToaInitGP9001(); nExtraTXOffset = 0x2C; ToaExtraTextInit(); DrvZ80Init(); // Initialize Z80 BurnYM2151Init(32000000 / 8, 50.0); MSM6295Init(0, 32000000 / 16 / 132, 50.0, 1); nToaPalLen = nColCount; ToaPalSrc = RamPal; ToaPalInit(); bDrawScreen = true; // mar 2 1996 & apr 2 1996 ver: 0x0009AC - 0x0009B8 & 0x001F5E - 0x001F64 & 0x003A1C - 0x003A22 // feb 2 1996 ver: 0x0009AC - 0x0009B8 & 0x001F2E - 0x001F34 & 0x0039EC - 0x0039F2 nSpeedHackOffset = 0; if (strcmp(BurnDrvGetTextA(DRV_NAME), "bgaregga") == 0) { nSpeedHackOffset = 0x30; } #if defined FBA_DEBUG && defined USE_SPEEDHACKS bprintf(PRINT_IMPORTANT, _T(" * Using speed-hacks (detecting idle loops).\n")); #endif DrvDoReset(); // Reset machine return 0; }
static int DrvInit() { int nLen; #ifdef DRIVER_ROTATION bToaRotateScreen = true; #endif nGP9001ROMSize[0] = 0x400000; nGP9001ROMSize[1] = 0x200000; // 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); SekMapMemory(Rom01, 0x000000, 0x07FFFF, SM_ROM); // CPU 0 ROM SekMapMemory(Ram01, 0x100000, 0x10FFFF, SM_RAM); SekMapMemory(RamPal, 0x400000, 0x400FFF, SM_RAM); // Palette RAM SekSetReadWordHandler(0, batsugunReadWord); SekSetReadByteHandler(0, batsugunReadByte); SekSetWriteWordHandler(0, batsugunWriteWord); SekSetWriteByteHandler(0, batsugunWriteByte); SekClose(); VezInit(0, V25_TYPE, 16000000 /*before divider*/); VezOpen(0); for (int i = 0x80000; i < 0x100000; i += 0x8000) { VezMapArea(i, i + 0x7fff, 0, ShareRAM); VezMapArea(i, i + 0x7fff, 1, ShareRAM); VezMapArea(i, i + 0x7fff, 2, ShareRAM); } VezSetReadHandler(batsugun_v25_read); VezSetWriteHandler(batsugun_v25_write); VezSetReadPort(batsugun_v25_read_port); VezClose(); } BurnYM2151Init(3375000, 50.0); MSM6295Init(0, 4000000 / 132, 50.0, 1); nSpriteYOffset = 0x0001; nLayer0XOffset = -0x01D6; nLayer1XOffset = -0x01D8; nLayer2XOffset = -0x01DA; ToaInitGP9001(3); nToaPalLen = nColCount; ToaPalSrc = RamPal; ToaPalInit(); 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; }