37 lines
1.0 KiB
C#
37 lines
1.0 KiB
C#
|
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);
|
||
|
}
|
||
|
}
|
||
|
}
|