public CartridgeMapCrimeBusters(Cartridge cartridge) : base(cartridge) { programBankCount = cartridge.ProgramRom.Count / 0x8000; programBank = 0; characterBank = 0; }
public CartridgeMapKonamiVrc6(Cartridge cartridge, Variant variant) : base(cartridge) { this.variant = variant; if (variant == Variant.Vrc6a) { mapperName = "VRC6 Rev A"; } else { mapperName = "VRC6 Rev B"; } programBankCount16K = cartridge.ProgramRom.Count / 0x4000; programBankCount8K = programBankCount16K * 2; programBank8kLastAddress = cartridge.ProgramRom.Count - 0x2000; characterBankCount = cartridge.CharacterRom.Length / 0x400; characterBank = new int[8]; nameTableBankIndex = new int[4]; nameTableBankIndex[0] = 6; nameTableBankIndex[1] = 6; nameTableBankIndex[2] = 7; nameTableBankIndex[3] = 7; }
public CartridgeMapCpRom(Cartridge cartridge) : base(cartridge) { characterBank = 0; // CHR bank 2 and 3 characterRam = new byte[0x2000]; }
public CartridgeMapUnrom512(Cartridge cartridge) : base(cartridge) { // note - self flashing functionality not implemented programLastAddress16k = Cartridge.ProgramRom.Count - 0x4000; flashMemory = new FlashMemory(Cartridge.ProgramRom.ToArray()); }
public CartridgeMapColourDreams(Cartridge cartridge) : base(cartridge) { int programBankCount = cartridge.ProgramRom.Count / 0x4000; characterBank = 0; programBank = 0; }
public CartridgeMapCnRom(Cartridge cartridge) : base(cartridge) { int programBankCount = cartridge.ProgramRom.Count / 0x4000; characterBank = 0; programBank1 = 0; programBank2 = programBankCount - 1; }
public CartridgeMapMmc2(Cartridge cartridge) : base(cartridge) { programBankCount = (byte)(Cartridge.ProgramRom.Count / 0x2000); programBank = 0; characterBank1 = 0; characterBank2 = 0; latch0 = 0xFD; latch1 = 0xFE; }
public CartridgeMapAxRom(Cartridge cartridge) : base(cartridge) { programBank = 0; if (Cartridge.Crc == 0x279710DC) { battleToadsHack = new PpuStatusSpinHack(); } }
public CartridgeMapTaitoTc0190(Cartridge cartridge) : base(cartridge) { programBankCount = Cartridge.ProgramRom.Count / 0x2000; programBankLast16kAddress = Cartridge.ProgramRom.Count - 0x4000; characterBankCount2k = Cartridge.CharacterRom.Length / 0x800; characterBankCount1k = characterBankCount2k * 2; characterBank2k = new int[2]; characterBank1k = new int[4]; }
public CartridgeMapMicroGenius36(Cartridge cartridge) : base(cartridge) { programBankCount = Cartridge.ProgramRom.Count / 0x8000; characterBankCount = Cartridge.CharacterRom.Length / 0x2000; programBank = programBankCount - 1; if (Cartridge.Crc == 0x143DF524) { strikeWolfHack = new PpuStatusSpinHack(); } }
public CartridgeMap(Cartridge cartridge) { Cartridge = cartridge; // set initial mirror mode MirrorMode = cartridge.MirrorMode; // basic nametable ram supports 2 actual pages nameTableRam = new byte[0x800]; // default implementation provides no samples WriteAudioSample = (sample) => { }; }
public CartridgeMapJalecoSs88006(Cartridge cartridge) : base(cartridge) { programRomBank = new int[4]; characterRomBank = new int[8]; int programBankCount = cartridge.ProgramRom.Count / 0x2000; programRomBank[0] = 0; programRomBank[1] = 1; programRomBank[2] = programBankCount - 2; programRomBank[3] = programBankCount - 1; }
public CartridgeMapKonamiVrc2(Cartridge cartridge, Variant variant) : base(cartridge) { this.variant = variant; mapperName = variant == Variant.Vrc2a ? "Konami VRC2 Rev A" : "Konami VRC2 Rev B"; programRam = new byte[0x2000]; programBankCount = Cartridge.ProgramRom.Count / 0x2000; programLastTwoBanksAddress = (programBankCount - 2) * 0x2000; characterBankCount = Cartridge.CharacterRom.Length / 0x400; characterBank = new int[8]; }
public CartridgeMapMmc3(Cartridge cartridge, bool mmc3AVariant = false) : base(cartridge) { this.mmc3AVariant = mmc3AVariant; registers = new byte[8]; programBankOffsets = new int[4]; characterBankOffsets = new int[8]; programBankOffsets[0] = GetProgramBankOffset(0); programBankOffsets[1] = GetProgramBankOffset(1); programBankOffsets[2] = GetProgramBankOffset(-2); programBankOffsets[3] = GetProgramBankOffset(-1); }
public CartridgeMapMultiMmc3(Cartridge cartridge) : base(cartridge) { registers = new byte[8]; programBankOffsets = new int[4]; characterBankOffsets = new int[8]; SelectOuterBank(0); programBankOffsets[0] = GetProgramBankOffset(0); programBankOffsets[1] = GetProgramBankOffset(1); programBankOffsets[2] = GetProgramBankOffset(-2); programBankOffsets[3] = GetProgramBankOffset(-1); }
public CartridgeMapMmc5(Cartridge cartridge) : base(cartridge) { // 64K ram total (switchable 8 banks of 8K) programRam = new byte[0x10000]; // 1K expansion ram extendedRam = new byte[0x400]; programBankMode = 3; SetCharacterBankMode(0); programRomBank = (byte)(Cartridge.ProgramRom.Count / 0x2000 - 1); characterBanks = new ushort[12]; }
public CartridgeMapMmc1(Cartridge cartridge) : base(cartridge) { programBankOffsets = new int[2]; characterBankOffsets = new int[2]; outerProgramRomBankSupported = cartridge.ProgramRom.Count > 0x40000; programRamBanksSupported = cartridge.CharacterRom.Count() == 0x2000; if (programRamBanksSupported) { programRam = new byte[0x2000 * 0x04]; } shiftRegister = 0x10; programBankOffsets[1] = GetProgramBankOffset(-1); }
public CartridgeMapBandaiFcg(Cartridge cartridge, Variant variants) : base(cartridge) { this.variants = variants; // build name dynamically from variants // and determine variant characteristics outerProgramBankSupported = false; characterBanksSupported = true; registerBase = 0x6000; // mapper 16 lumps FCG1/2, LZ93D50 and LZ93D50with24C02 together, so assume $6000 to catch all register cases List <String> variantNames = new List <string>(); foreach (Variant variant in Enum.GetValues(typeof(Variant))) { if ((variants & variant) != 0) { variantNames.Add(variant.ToString().Replace("_", " ")); if (variant == Variant.Datach_Joint_Rom_System) { characterBanksSupported = false; registerBase = 0x8000; // Datach has registers based at $8000 } if (variant == Variant.LZ93D50_with_SRAM) { outerProgramBankSupported = true; characterBanksSupported = false; registerBase = 0x8000; // SRAM variant has registers based at $8000 so that SRAM us based in $6000-$7FFF } } } this.variantName = string.Join(" / ", variantNames); this.saveRamSupported = this.variants == Variant.LZ93D50_with_SRAM; programBankCount = cartridge.ProgramRom.Count / 0x4000; programBank = 0; if (outerProgramBankSupported) { lastProgramBankBase = (programBankCount / 2 - 1) * 0x4000; } else { lastProgramBankBase = (programBankCount - 1) * 0x4000; } characterBank = new int[8]; }
public CartridgeMapBnRomNina001(Cartridge cartridge) : base(cartridge) { board = Cartridge.CharacterRom.Length > 0x2000 ? Board.Nina001 : Board.BnRom; programBankCount = Cartridge.ProgramRom.Count / 0x8000; programBank = programBankCount - 1; if (board == Board.BnRom) { mapperName = "BNROM"; } else //if (board == Board.Nina001) { mapperName = "NINA-001"; characterBank = new int[2]; programRam = new byte[0x2000]; } }
public CartridgeMapCaltron6in1(Cartridge cartridge) : base(cartridge) { }
public CartridgeMapSuperHiK4in1(Cartridge cartridge) : base(cartridge, false) { }
public CartridgeMapMapper58(Cartridge cartridge) : base(cartridge) { }
public CartridgeMapTaitoTc0690(Cartridge cartridge) : base(cartridge) { }
public CartridgeMap100In1(Cartridge cartridge) : base(cartridge) { bankMode = 0; programRam = new byte[0x2000]; }
public CartridgeMapIremG101(Cartridge cartridge) : base(cartridge) { programBankCount = cartridge.ProgramRom.Count / 0x2000; characterBankCount = cartridge.CharacterRom.Length / 0x400; characterBank = new int[8]; }
public CartridgeMapCamerica71(Cartridge cartridge) : base(cartridge) { }
public CartridgeMapGk47in1(Cartridge cartridge) : base(cartridge) { }
public CartridgeMapHomeBrew29(Cartridge cartridge) : base(cartridge) { MirrorMode = MirrorMode.Vertical; programLastAddress16k = Cartridge.ProgramRom.Count - 0x4000; }
public CartridgeMapRumbleStation(Cartridge cartridge) : base(cartridge) { programBank = 0; characterBank = 0; }
public CartridgeMapSmb2LostLevels(Cartridge cartridge) : base(cartridge) { }