Ejemplo n.º 1
0
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;
}
Ejemplo n.º 2
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;
}