From 839eabac2e81036834a94dfea226dcf7c115d4e6 Mon Sep 17 00:00:00 2001 From: adelikat Date: Fri, 28 Oct 2016 15:40:30 -0500 Subject: [PATCH] NesHawk - support board UNIF_UNL-KS7013B --- .../BizHawk.Emulation.Cores.csproj | 1 + .../NES/Boards/UNIF/UNIF_UNL-KS7013B.cs | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/UNIF/UNIF_UNL-KS7013B.cs diff --git a/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj b/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj index c7dff568f1..58dd4df88e 100644 --- a/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj +++ b/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj @@ -775,6 +775,7 @@ + diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/UNIF/UNIF_UNL-KS7013B.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/UNIF/UNIF_UNL-KS7013B.cs new file mode 100644 index 0000000000..43550ef399 --- /dev/null +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/UNIF/UNIF_UNL-KS7013B.cs @@ -0,0 +1,52 @@ +using BizHawk.Common; +using BizHawk.Common.NumberExtensions; + +namespace BizHawk.Emulation.Cores.Nintendo.NES +{ + public sealed class UNIF_UNL_KS7013B : NES.NESBoardBase + { + private byte reg; + private int prg_mask_16k; + + public override bool Configure(NES.EDetectionOrigin origin) + { + switch (Cart.board_type) + { + case "UNIF_UNL-KS7013B": + break; + default: + return false; + } + + prg_mask_16k = Cart.prg_size / 16 - 1; + + return true; + } + + public override void SyncState(Serializer ser) + { + ser.Sync("reg", ref reg); + base.SyncState(ser); + } + + public override void WriteWRAM(int addr, byte value) + { + reg = value; + } + + public override void WritePRG(int addr, byte value) + { + SetMirrorType(value.Bit(0) ? EMirrorType.Horizontal : EMirrorType.Vertical); + } + + public override byte ReadPRG(int addr) + { + if (addr < 0x4000) + { + return ROM[((reg & prg_mask_16k) << 14) + (addr & 0x3FFF)]; + } + + return ROM[(prg_mask_16k << 14) + (addr & 0x3FFF)]; + } + } +}