diff --git a/BizHawk.Emulation.Cores/CPUs/LR35902/Registers.cs b/BizHawk.Emulation.Cores/CPUs/LR35902/Registers.cs index 3692dedeff..1b7b15ce24 100644 --- a/BizHawk.Emulation.Cores/CPUs/LR35902/Registers.cs +++ b/BizHawk.Emulation.Cores/CPUs/LR35902/Registers.cs @@ -1,3 +1,7 @@ +using System; +using System.Collections.Generic; +using BizHawk.Emulation.Common; + namespace BizHawk.Emulation.Cores.Components.LR35902 { public partial class LR35902 @@ -66,5 +70,85 @@ namespace BizHawk.Emulation.Cores.Components.LR35902 } } + public IDictionary GetCpuFlagsAndRegisters() + { + return new Dictionary + { + [nameof(PCl)] = Regs[PCl], + [nameof(PCh)] = Regs[PCh], + [nameof(SPl)] = Regs[SPl], + [nameof(SPh)] = Regs[SPh], + [nameof(A)] = Regs[A], + [nameof(F)] = Regs[F], + [nameof(B)] = Regs[B], + [nameof(C)] = Regs[C], + [nameof(D)] = Regs[D], + [nameof(E)] = Regs[E], + [nameof(H)] = Regs[H], + [nameof(L)] = Regs[L], + [nameof(W)] = Regs[W], + [nameof(Z)] = Regs[Z], + ["PC"] = RegPC, + ["Flag I"] = FlagI, + ["Flag C"] = FlagC, + ["Flag H"] = FlagH, + ["Flag N"] = FlagN, + ["Flag Z"] = FlagZ + }; + } + + public void SetCpuRegister(string register, int value) + { + switch (register) + { + default: + throw new InvalidOperationException(); + case nameof(PCl): + Regs[PCl] = (ushort)value; + break; + case nameof(PCh): + Regs[PCh] = (ushort)value; + break; + case nameof(SPl): + Regs[SPl] = (ushort)value; + break; + case nameof(SPh): + Regs[SPh] = (ushort)value; + break; + case nameof(A): + Regs[A] = (ushort)value; + break; + case nameof(F): + Regs[F] = (ushort)value; + break; + case nameof(B): + Regs[B] = (ushort)value; + break; + case nameof(C): + Regs[C] = (ushort)value; + break; + case nameof(D): + Regs[D] = (ushort)value; + break; + case nameof(E): + Regs[E] = (ushort)value; + break; + case nameof(H): + Regs[H] = (ushort)value; + break; + case nameof(L): + Regs[L] = (ushort)value; + break; + case nameof(W): + Regs[W] = (ushort)value; + break; + case nameof(Z): + Regs[Z] = (ushort)value; + break; + case "PC": + RegPC = (ushort) value; + break; + } + } } } \ No newline at end of file diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBHawk.IDebuggable.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBHawk.IDebuggable.cs index 0891ae41a6..97e7456582 100644 --- a/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBHawk.IDebuggable.cs +++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/GBHawk/GBHawk.IDebuggable.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; - using BizHawk.Emulation.Common; namespace BizHawk.Emulation.Cores.Nintendo.GBHawk @@ -8,53 +7,10 @@ namespace BizHawk.Emulation.Cores.Nintendo.GBHawk public partial class GBHawk : IDebuggable { public IDictionary GetCpuFlagsAndRegisters() - { - return new Dictionary - { - /* - ["A"] = cpu.A, - ["X"] = cpu.X, - ["Y"] = cpu.Y, - ["S"] = cpu.S, - ["PC"] = cpu.PC, - ["Flag C"] = cpu.FlagC, - ["Flag Z"] = cpu.FlagZ, - ["Flag I"] = cpu.FlagI, - ["Flag D"] = cpu.FlagD, - ["Flag B"] = cpu.FlagB, - ["Flag V"] = cpu.FlagV, - ["Flag N"] = cpu.FlagN, - ["Flag T"] = cpu.FlagT - */ - }; - } + => cpu.GetCpuFlagsAndRegisters(); public void SetCpuRegister(string register, int value) - { - switch (register) - { - default: - throw new InvalidOperationException(); - case "A": - //cpu.A = (byte)value; - break; - case "X": - //cpu.X = (byte)value; - break; - case "Y": - //cpu.Y = (byte)value; - break; - case "S": - //cpu.S = (byte)value; - break; - case "PC": - //cpu.PC = (ushort)value; - break; - case "Flag I": - //cpu.FlagI = value > 0; - break; - } - } + => cpu.SetCpuRegister(register, value); public IMemoryCallbackSystem MemoryCallbacks { get; } = new MemoryCallbackSystem(new[] { "System Bus" }); diff --git a/BizHawk.sln.DotSettings b/BizHawk.sln.DotSettings index 64e6948e7d..a08ea811cc 100644 --- a/BizHawk.sln.DotSettings +++ b/BizHawk.sln.DotSettings @@ -92,6 +92,7 @@ IO IPS IRQ + LR MGBA NES NMI @@ -376,6 +377,7 @@ True True True + True True True True