diff --git a/BizHawk.Emulation.Cores/CPUs/HuC6280/HuC6280.cs b/BizHawk.Emulation.Cores/CPUs/HuC6280/HuC6280.cs index d5f8a3b295..ec3b8bd9a2 100644 --- a/BizHawk.Emulation.Cores/CPUs/HuC6280/HuC6280.cs +++ b/BizHawk.Emulation.Cores/CPUs/HuC6280/HuC6280.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using BizHawk.Common; using BizHawk.Emulation.Common; @@ -96,6 +97,104 @@ namespace BizHawk.Emulation.Cores.Components.H6280 ser.EndSection(); } + public IDictionary GetCpuFlagsAndRegisters() + { + return new Dictionary + { + ["A"] = A, + ["X"] = X, + ["Y"] = Y, + ["PC"] = PC, + ["S"] = S, + ["MPR-0"] = MPR[0], + ["MPR-1"] = MPR[1], + ["MPR-2"] = MPR[2], + ["MPR-3"] = MPR[3], + ["MPR-4"] = MPR[4], + ["MPR-5"] = MPR[5], + ["MPR-6"] = MPR[6], + ["MPR-7"] = MPR[7], + ["Flag C"] = FlagC, + ["Flag Z"] = FlagZ, + ["Flag I"] = FlagI, + ["Flag D"] = FlagD, + ["Flag B"] = FlagB, + ["Flag T"] = FlagT, + ["Flag V"] = FlagV, + ["Flag N"] = FlagN + }; + } + + public void SetCpuRegister(string register, int value) + { + switch (register) + { + default: + throw new InvalidOperationException(); + + case "A": + A = (byte)value; + break; + case "X": + X = (byte)value; + break; + case "Y": + Y = (byte)value; + break; + case "PC": + PC = (byte)value; + break; + case "MPR-0": + MPR[0] = (byte)value; + break; + case "MPR-1": + MPR[1] = (byte)value; + break; + case "MPR-2": + MPR[2] = (byte)value; + break; + case "MPR-3": + MPR[3] = (byte)value; + break; + case "MPR-4": + MPR[4] = (byte)value; + break; + case "MPR-5": + MPR[5] = (byte)value; + break; + case "MPR-6": + MPR[6] = (byte)value; + break; + case "MPR-7": + MPR[7] = (byte)value; + break; + case "FlagC": + FlagC = value > 0; + break; + case "FlagZ": + FlagZ = value > 0; + break; + case "FlagI": + FlagI = value > 0; + break; + case "FlagD": + FlagD = value > 0; + break; + case "FlagB": + FlagB = value > 0; + break; + case "FlagT": + FlagT = value > 0; + break; + case "FlagV": + FlagV = value > 0; + break; + case "FlagN": + FlagN = value > 0; + break; + } + } + // ==== Interrupts ==== private const ushort ResetVector = 0xFFFE; diff --git a/BizHawk.Emulation.Cores/Consoles/PC Engine/PCEngine.IDebuggable.cs b/BizHawk.Emulation.Cores/Consoles/PC Engine/PCEngine.IDebuggable.cs index 8a24cfbc0f..e2416cf922 100644 --- a/BizHawk.Emulation.Cores/Consoles/PC Engine/PCEngine.IDebuggable.cs +++ b/BizHawk.Emulation.Cores/Consoles/PC Engine/PCEngine.IDebuggable.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; - using BizHawk.Emulation.Common; namespace BizHawk.Emulation.Cores.PCEngine @@ -8,30 +7,10 @@ namespace BizHawk.Emulation.Cores.PCEngine public sealed partial class PCEngine : IDebuggable { public IDictionary GetCpuFlagsAndRegisters() - { - return new Dictionary - { - ["A"] = Cpu.A, - ["X"] = Cpu.X, - ["Y"] = Cpu.Y, - ["PC"] = Cpu.PC, - ["S"] = Cpu.S, - ["MPR-0"] = Cpu.MPR[0], - ["MPR-1"] = Cpu.MPR[1], - ["MPR-2"] = Cpu.MPR[2], - ["MPR-3"] = Cpu.MPR[3], - ["MPR-4"] = Cpu.MPR[4], - ["MPR-5"] = Cpu.MPR[5], - ["MPR-6"] = Cpu.MPR[6], - ["MPR-7"] = Cpu.MPR[7] - }; - } + => Cpu.GetCpuFlagsAndRegisters(); - [FeatureNotImplemented] public void SetCpuRegister(string register, int value) - { - throw new NotImplementedException(); - } + => Cpu.SetCpuRegister(register, value); public IMemoryCallbackSystem MemoryCallbacks { get; } = new MemoryCallbackSystem(new[] { "System Bus" });