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; } }
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; } }