110 lines
3.3 KiB
C#
110 lines
3.3 KiB
C#
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
|
|
}
|
|
}
|
|
}
|
|
}
|