57 lines
1.1 KiB
C#
57 lines
1.1 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Diagnostics;
|
|
|
|
namespace BizHawk.Emulation.Consoles.Nintendo
|
|
{
|
|
public class Mapper012 : MMC3Board_Base
|
|
{
|
|
public override bool Configure(NES.EDetectionOrigin origin)
|
|
{
|
|
//analyze board type
|
|
switch (Cart.board_type)
|
|
{
|
|
case "MAPPER012":
|
|
break;
|
|
default:
|
|
return false;
|
|
}
|
|
|
|
BaseSetup();
|
|
mmc3.MMC3Type = MMC3.EMMC3Type.MMC3A;
|
|
|
|
return true;
|
|
}
|
|
|
|
public override void SyncState(Serializer ser)
|
|
{
|
|
base.SyncState(ser);
|
|
ser.Sync("block0", ref block0);
|
|
ser.Sync("block1", ref block1);
|
|
}
|
|
|
|
int block0, block1;
|
|
|
|
public override void WritePRG(int addr, byte value)
|
|
{
|
|
base.WritePRG(addr, value);
|
|
}
|
|
|
|
public override void WriteEXP(int addr, byte value)
|
|
{
|
|
base.WriteEXP(addr, value);
|
|
block0 = value & 1;
|
|
block1 = (value >> 4) & 1;
|
|
}
|
|
|
|
protected override int Get_CHRBank_1K(int addr)
|
|
{
|
|
int bank_1k = base.Get_CHRBank_1K(addr);
|
|
if (addr < 0x1000)
|
|
bank_1k += (block0 << 8);
|
|
else bank_1k += (block1 << 8);
|
|
return bank_1k;
|
|
}
|
|
|
|
}
|
|
} |