Esempio n. 1
0
 public GameBoyCartiridge(uint size, byte mbcType)
 {
     romMemory = new List <byte>(new byte[size]);
     ramMemory = new List <byte>(new byte[maxRamSize]);
     switch (mbcType)
     {
     case (byte)(MBCType.TESTCARTNOMBC):
         mbc = new GameBoyTestCartNoMBC(romMemory);
         break;
     }
 }
Esempio n. 2
0
    public void LoadRom(string rom)
    {
        byte[] bytes = File.ReadAllBytes(rom);
        romMemory = new List <byte>(bytes);
        for (ushort b = 0x134; b < 0x143; b++)
        {
            Title = Title + (char)(romMemory[b]);
        }
        IsGameBoyColor = romMemory[0x143] == 0x80 || romMemory[0x143] == 0xC0;
        CartiridgeType = romMemory[0x147];
        RomSize        = romMemory[0x148];
        RamSize        = romMemory[0x149];
        IsNonJapanese  = romMemory[0x014A];
        switch (CartiridgeType)
        {
        case (byte)(MBCType.TESTCARTNOMBC):     // Use 0xFF to indicate test cartridge
            mbc = new GameBoyTestCartNoMBC(romMemory);
            break;

        case (byte)(MBCType.NoMBC):
            mbc = new GameBoyNoMBC(romMemory);
            break;

        case (byte)(MBCType.MBC1):
            mbc = new GameBoyMBC1(romMemory, ramMemory, RomSize, RamSize, false, false);
            break;

        case (byte)(MBCType.MBC1RAM):
            mbc = new GameBoyMBC1(romMemory, ramMemory, RomSize, RamSize, false, false);
            break;

        case (byte)(MBCType.MBC1RAMBATT):
            mbc = new GameBoyMBC1(romMemory, ramMemory, RomSize, RamSize, false, true);
            break;

        case (byte)(MBCType.MBC2):
            mbc = new GameBoyMBC2(romMemory, ramMemory, RomSize, false);
            break;

        case (byte)(MBCType.MBC2BATT):
            mbc = new GameBoyMBC2(romMemory, ramMemory, RomSize, true);
            break;

        case (byte)(MBCType.MBC3RAMBATT):
            mbc = new GameBoyMBC3(romMemory, ramMemory, RomSize, RamSize, false, true, false);
            break;

        case (byte)(MBCType.MBC3TIMERBATT):
            mbc = new GameBoyMBC3(romMemory, ramMemory, RomSize, RamSize, false, true, true);
            break;

        case (byte)(MBCType.MBC3RAMTIMERBATT):
            mbc = new GameBoyMBC3(romMemory, ramMemory, RomSize, RamSize, false, true, true);
            break;

        case (byte)(MBCType.MBC5):
            mbc = new GameBoyMBC5(romMemory, ramMemory, RomSize, RamSize, false, false);
            break;

        case (byte)(MBCType.MBC5RAMBATT):
            mbc = new GameBoyMBC5(romMemory, ramMemory, RomSize, RamSize, false, true);
            break;

        case (byte)(MBCType.MBC5RAMBATTRum):
            mbc = new GameBoyMBC5(romMemory, ramMemory, RomSize, RamSize, false, true);
            break;
        }
    }