diff --git a/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj b/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj index 0aec21131d..c7dff568f1 100644 --- a/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj +++ b/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj @@ -774,6 +774,7 @@ + diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/UNIF/UNIF_UNL-KS7012.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/UNIF/UNIF_UNL-KS7012.cs new file mode 100644 index 0000000000..6e2dac3f15 --- /dev/null +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/UNIF/UNIF_UNL-KS7012.cs @@ -0,0 +1,60 @@ +using BizHawk.Common; + +namespace BizHawk.Emulation.Cores.Nintendo.NES +{ + public class UNIF_UNL_KS7012 : NES.NESBoardBase + { + private int reg; + private byte[] wram = new byte[8192]; + public override bool Configure(NES.EDetectionOrigin origin) + { + switch (Cart.board_type) + { + case "UNIF_UNL-KS7012": + break; + default: + return false; + } + + reg = 0xFF; + + SetMirrorType(Cart.pad_h, Cart.pad_v); + return true; + } + + public override void SyncState(Serializer ser) + { + ser.Sync("reg", ref reg); + base.SyncState(ser); + } + + public override void WritePRG(int addr, byte value) + { + addr += 0x8000; + switch (addr) + { + case 0xE0A0: + reg = 0; break; + case 0xEE36: + reg = 1; break; + } + } + + public override byte ReadWRAM(int addr) + { + return wram[addr]; + //int offset = ROM.Length - 0x2000; + //return ROM[offset + addr]; + } + + public override void WriteWRAM(int addr, byte value) + { + wram[addr] = value; + } + + public override byte ReadPRG(int addr) + { + return ROM[((reg & 1) << 15) + addr]; + } + } +}