From fe3b55f953c5ffbeca1eb5bd12b5abb3145466f3 Mon Sep 17 00:00:00 2001 From: adelikat Date: Sun, 16 Feb 2020 18:06:17 -0600 Subject: [PATCH] uh, what happened to this code in the merge? --- BizHawk.Emulation.Cores/CPUs/Z80A/Z80A.cs | 87 +++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/BizHawk.Emulation.Cores/CPUs/Z80A/Z80A.cs b/BizHawk.Emulation.Cores/CPUs/Z80A/Z80A.cs index 7cbbc0dc35..7912aae0f3 100644 --- a/BizHawk.Emulation.Cores/CPUs/Z80A/Z80A.cs +++ b/BizHawk.Emulation.Cores/CPUs/Z80A/Z80A.cs @@ -155,6 +155,93 @@ namespace BizHawk.Emulation.Cores.Components.Z80A }; } + public void SetCpuRegister(string register, int value) + { + switch (register) + { + default: + throw new InvalidOperationException(); + case "A": + Regs[A] = (ushort)value; + break; + case "AF": + Regs[F] = (ushort)(value & 0xFF); + Regs[A] = (ushort)(value & 0xFF00); + break; + case "B": + Regs[B] = (ushort)value; + break; + case "BC": + Regs[C] = (ushort)(value & 0xFF); + Regs[B] = (ushort)(value & 0xFF00); + break; + case "C": + Regs[C] = (ushort)value; + break; + case "D": + Regs[D] = (ushort)value; + break; + case "DE": + Regs[E] = (ushort)(value & 0xFF); + Regs[D] = (ushort)(value & 0xFF00); + break; + case "E": + Regs[E] = (ushort)value; + break; + case "F": + Regs[F] = (ushort)value; + break; + case "H": + Regs[H] = (ushort)value; + break; + case "HL": + Regs[L] = (ushort)(value & 0xFF); + Regs[H] = (ushort)(value & 0xFF00); + break; + case "I": + Regs[I] = (ushort)value; + break; + case "IX": + Regs[Ixl] = (ushort)(value & 0xFF); + Regs[Ixh] = (ushort)(value & 0xFF00); + break; + case "IY": + Regs[Iyl] = (ushort)(value & 0xFF); + Regs[Iyh] = (ushort)(value & 0xFF00); + break; + case "L": + Regs[L] = (ushort)value; + break; + case "PC": + Regs[PCl] = (ushort)(value & 0xFF); + Regs[PCh] = (ushort)(value & 0xFF00); + break; + case "R": + Regs[R] = (ushort)value; + break; + case "Shadow AF": + Regs[F_s] = (ushort)(value & 0xFF); + Regs[A_s] = (ushort)(value & 0xFF00); + break; + case "Shadow BC": + Regs[C_s] = (ushort)(value & 0xFF); + Regs[B_s] = (ushort)(value & 0xFF00); + break; + case "Shadow DE": + Regs[E_s] = (ushort)(value & 0xFF); + Regs[D_s] = (ushort)(value & 0xFF00); + break; + case "Shadow HL": + Regs[L_s] = (ushort)(value & 0xFF); + Regs[H_s] = (ushort)(value & 0xFF00); + break; + case "SP": + Regs[SPl] = (ushort)(value & 0xFF); + Regs[SPh] = (ushort)(value & 0xFF00); + break; + } + } + public IMemoryCallbackSystem MemoryCallbacks { get; set; } // Memory Access