From 247402dbb3cc4c2a9484158c06d692d2c57e3b00 Mon Sep 17 00:00:00 2001 From: goyuken Date: Mon, 24 Sep 2012 01:08:36 +0000 Subject: [PATCH] for fun, find a copy of "vs castlevania" with ines header and load it. watch the pretty colors TODO: Everything --- BizHawk.Emulation/BizHawk.Emulation.csproj | 1 + .../Consoles/Nintendo/NES/Boards/VsUnisys.cs | 73 +++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 BizHawk.Emulation/Consoles/Nintendo/NES/Boards/VsUnisys.cs diff --git a/BizHawk.Emulation/BizHawk.Emulation.csproj b/BizHawk.Emulation/BizHawk.Emulation.csproj index 8dd4fb7040..1b5269469b 100644 --- a/BizHawk.Emulation/BizHawk.Emulation.csproj +++ b/BizHawk.Emulation/BizHawk.Emulation.csproj @@ -248,6 +248,7 @@ + diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/VsUnisys.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/VsUnisys.cs new file mode 100644 index 0000000000..c29d14d283 --- /dev/null +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/VsUnisys.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace BizHawk.Emulation.Consoles.Nintendo +{ + public class VsUnisys : NES.NESBoardBase + { + + // this is a copy of UNROM until i figure out what the hell is going on + + int prg_mask; + int vram_byte_mask; + + int prg; + + + public override bool Configure(NES.EDetectionOrigin origin) + { + switch (Cart.board_type) + { + case "MAPPER099": + break; + default: + return false; + } + + vram_byte_mask = (Cart.vram_size * 1024) - 1; + prg_mask = (Cart.prg_size / 16) - 1; + SetMirrorType(Cart.pad_h, Cart.pad_v); + + return true; + } + + public override byte ReadPRG(int addr) + { + int block = addr >> 14; + int page = block == 1 ? prg_mask : prg; + int ofs = addr & 0x3FFF; + return ROM[(page << 14) | ofs]; + } + public override void WritePRG(int addr, byte value) + { + prg = value & prg_mask; + } + + public override byte ReadPPU(int addr) + { + if (addr < 0x2000) + { + return VRAM[addr & vram_byte_mask]; + } + else return base.ReadPPU(addr); + } + + public override void WritePPU(int addr, byte value) + { + if (addr < 0x2000) + { + VRAM[addr & vram_byte_mask] = value; + } + else base.WritePPU(addr, value); + } + + public override void SyncState(Serializer ser) + { + base.SyncState(ser); + ser.Sync("prg", ref prg); + } + + } +}