using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace BizHawk.Client.EmuHawk { //Data structure for a watch item in the RAM Watch Dialog public enum atype { BYTE, WORD, DWORD, SEPARATOR }; //TODO: more custom types too like 12.4 and 24.12 fixed point public enum asigned { SIGNED, UNSIGNED, HEX }; public class Watch { public Watch() { address = 0; value = 0; type = atype.BYTE; signed = asigned.UNSIGNED; bigendian = true; notes = ""; } public Watch(int Address, int Value, atype Type, asigned Signed, bool BigEndian, string Notes) { address = Address; value = Value; type = Type; signed = Signed; bigendian = BigEndian; notes = Notes; } public int address { get; set; } public int value { get; set; } //Current value public atype type { get; set; } //Address type (byte, word, dword, etc public asigned signed { get; set; } //Signed/Unsigned? public bool bigendian { get; set; } public string notes { get; set; } //User notes public bool SetTypeByChar(char c) //b = byte, w = word, d = dword { switch (c) { case 'b': type = atype.BYTE; return true; case 'w': type = atype.WORD; return true; case 'd': type = atype.DWORD; return true; case 'S': type = atype.SEPARATOR; return true; default: return false; } } public char GetTypeByChar() { switch (type) { case atype.BYTE: return 'b'; case atype.WORD: return 'w'; case atype.DWORD: return 'd'; case atype.SEPARATOR: return 'S'; default: return 'b'; //Just in case } } public bool SetSignedByChar(char c) //s = signed, u = unsigned, h = hex { switch (c) { case 's': signed = asigned.SIGNED; return true; case 'u': signed = asigned.UNSIGNED; return true; case 'h': signed = asigned.HEX; return true; default: return false; } } public char GetSignedByChar() { switch (signed) { case asigned.SIGNED: return 's'; case asigned.UNSIGNED: return 'u'; case asigned.HEX: return 'h'; default: return 's'; //Just in case } } } }