using System.Collections.Generic; namespace BizHawk.Emulation.Common { public interface IDebuggable : IEmulatorService { /// /// Returns a list of Cpu registers and their current state /// /// IDictionary GetCpuFlagsAndRegisters(); /// /// Sets a given Cpu register to the given value /// /// /// void SetCpuRegister(string register, int value); IMemoryCallbackSystem MemoryCallbacks { get; } /// /// Informs the calling code whether or not the given step type is implemented, /// if false, a NotImplementedException will be thrown if Step is called with the given value /// bool CanStep(StepType type); /// /// Advances the core based on the given Step type /// void Step(StepType type); } public class RegisterValue { public ulong Value { get; set; } public byte BitSize { get; set; } public static implicit operator RegisterValue(bool val) { return new RegisterValue { Value = (ulong)(val ? 1 : 0), BitSize = 1 }; } public static implicit operator RegisterValue(byte val) { return new RegisterValue { Value = val, BitSize = 8 }; } public static implicit operator RegisterValue(ushort val) { return new RegisterValue { Value = val, BitSize = 16 }; } public static implicit operator RegisterValue(int val) { return new RegisterValue { Value = (ulong)val, BitSize = 32 }; } public static implicit operator RegisterValue(uint val) { return new RegisterValue { Value = val, BitSize = 32 }; } public static implicit operator RegisterValue(long val) { return new RegisterValue { Value = (ulong)val, BitSize = 64 }; } public static implicit operator RegisterValue(ulong val) { return new RegisterValue { Value = val, BitSize = 64 }; } } }