51 lines
1.0 KiB
C#
51 lines
1.0 KiB
C#
|
namespace MyNes.Core
|
||
|
{
|
||
|
[BoardInfo("BxROM/NINA-001", 34)]
|
||
|
internal class Mapper034 : Board
|
||
|
{
|
||
|
private bool BxROM;
|
||
|
|
||
|
private byte writeData;
|
||
|
|
||
|
internal override void HardReset()
|
||
|
{
|
||
|
base.HardReset();
|
||
|
BxROM = true;
|
||
|
if (base.BoardType.Contains("NINA"))
|
||
|
{
|
||
|
BxROM = false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
internal override void WriteSRM(ref ushort address, ref byte data)
|
||
|
{
|
||
|
base.WriteSRM(ref address, ref data);
|
||
|
if (!BxROM)
|
||
|
{
|
||
|
switch (address)
|
||
|
{
|
||
|
case 32765:
|
||
|
Switch32KPRG(data, PRGArea.Area8000);
|
||
|
break;
|
||
|
case 32766:
|
||
|
Switch04KCHR(data, CHRArea.Area0000);
|
||
|
break;
|
||
|
case 32767:
|
||
|
Switch04KCHR(data, CHRArea.Area1000);
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
internal override void WritePRG(ref ushort address, ref byte data)
|
||
|
{
|
||
|
if (BxROM)
|
||
|
{
|
||
|
ReadPRG(ref address, out writeData);
|
||
|
writeData &= data;
|
||
|
Switch32KPRG(writeData, PRGArea.Area8000);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|