namespace MyNes.Core { [BoardInfo("100-in-1 Contra Function 16", 15)] internal class Mapper015 : Board { private int temp; internal override void WritePRG(ref ushort address, ref byte data) { switch (address & 3) { case 0: Switch16KPRG(data & 0x3F, PRGArea.Area8000); Switch16KPRG((data & 0x3F) | 1, PRGArea.AreaC000); break; case 1: Switch16KPRG(data & 0x3F, PRGArea.Area8000); Switch16KPRG(PRG_ROM_16KB_Mask, PRGArea.AreaC000); break; case 2: temp = data << 1; temp = ((data & 0x3F) << 1) | ((data >> 7) & 1); Switch08KPRG(temp, PRGArea.Area8000); Switch08KPRG(temp, PRGArea.AreaA000); Switch08KPRG(temp, PRGArea.AreaC000); Switch08KPRG(temp, PRGArea.AreaE000); break; case 3: Switch16KPRG(data & 0x3F, PRGArea.Area8000); Switch16KPRG(data & 0x3F, PRGArea.AreaC000); break; } Switch01KNMTFromMirroring(((data & 0x40) == 64) ? Mirroring.Horz : Mirroring.Vert); } } }