Merge branch 'master' of https://github.com/TASVideos/BizHawk
This commit is contained in:
commit
addb22ea39
|
@ -239,7 +239,9 @@
|
|||
<Compile Include="tools\RamSearchEngine.cs" />
|
||||
<Compile Include="tools\Watch\SeparatorWatch.cs" />
|
||||
<Compile Include="tools\Watch\Watch.cs" />
|
||||
<Compile Include="tools\Watch\WatchList.cs" />
|
||||
<Compile Include="tools\Watch\WatchList\WatchDomainComparer.cs" />
|
||||
<Compile Include="tools\Watch\WatchList\WatchAddressComparer.cs" />
|
||||
<Compile Include="tools\Watch\WatchList\WatchList.cs" />
|
||||
<Compile Include="tools\Watch\WatchSize.cs" />
|
||||
<Compile Include="tools\Watch\WordWatch.cs" />
|
||||
<Compile Include="XmlGame.cs" />
|
||||
|
|
|
@ -248,12 +248,12 @@ namespace BizHawk.Client.Common
|
|||
case WatchSize.Separator:
|
||||
return false;
|
||||
case WatchSize.Byte:
|
||||
return (_watch.Address ?? 0) == addr;
|
||||
return _watch.Address == addr;
|
||||
case WatchSize.Word:
|
||||
return (addr == (_watch.Address ?? 0)) || (addr == (_watch.Address ?? 0) + 1);
|
||||
return (addr == _watch.Address) || (addr == (_watch.Address) + 1);
|
||||
case WatchSize.DWord:
|
||||
return (addr == (_watch.Address ?? 0)) || (addr == (_watch.Address ?? 0) + 1) ||
|
||||
(addr == (_watch.Address ?? 0) + 2) || (addr == (_watch.Address ?? 0) + 3);
|
||||
return (addr == (_watch.Address)) || (addr == (_watch.Address) + 1) ||
|
||||
(addr == (_watch.Address) + 2) || (addr == (_watch.Address) + 3);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -271,22 +271,22 @@ namespace BizHawk.Client.Common
|
|||
case WatchSize.Byte:
|
||||
return (byte?)_val;
|
||||
case WatchSize.Word:
|
||||
if (addr == (_watch.Address ?? 0))
|
||||
if (addr == (_watch.Address))
|
||||
{
|
||||
return (byte)(_val >> 8);
|
||||
}
|
||||
|
||||
return (byte)(_val & 0xFF);
|
||||
case WatchSize.DWord:
|
||||
if (addr == (_watch.Address ?? 0))
|
||||
if (addr == (_watch.Address))
|
||||
{
|
||||
return (byte)((_val >> 24) & 0xFF);
|
||||
}
|
||||
else if (addr == (_watch.Address ?? 0) + 1)
|
||||
else if (addr == (_watch.Address) + 1)
|
||||
{
|
||||
return (byte)((_val >> 16) & 0xFF);
|
||||
}
|
||||
else if (addr == ((_watch.Address ?? 0)) + 2)
|
||||
else if (addr == ((_watch.Address)) + 2)
|
||||
{
|
||||
return (byte)((_val >> 8) & 0xFF);
|
||||
}
|
||||
|
|
|
@ -346,7 +346,7 @@ namespace BizHawk.Client.Common
|
|||
_history.AddState(_watchList);
|
||||
}
|
||||
|
||||
var addresses = watches.Select(x => x.Address ?? 0);
|
||||
var addresses = watches.Select(x => x.Address);
|
||||
var removeList = _watchList.Where(x => !addresses.Contains(x.Address)).ToList();
|
||||
}
|
||||
|
||||
|
|
|
@ -80,136 +80,6 @@ namespace BizHawk.Client.Common
|
|||
_previous = GetByte();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Update the Watch (read it from <see cref="MemoryDomain"/>
|
||||
/// </summary>
|
||||
public override void Update()
|
||||
{
|
||||
switch (Global.Config.RamWatchDefinePrevious)
|
||||
{
|
||||
case PreviousType.Original:
|
||||
return;
|
||||
case PreviousType.LastChange:
|
||||
var temp = _value;
|
||||
_value = GetByte();
|
||||
if (_value != temp)
|
||||
{
|
||||
_previous = _value;
|
||||
_changecount++;
|
||||
}
|
||||
|
||||
break;
|
||||
case PreviousType.LastFrame:
|
||||
_previous = _value;
|
||||
_value = GetByte();
|
||||
if (_value != Previous)
|
||||
{
|
||||
_changecount++;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
//TODO: Implements IFormattable
|
||||
public string FormatValue(byte val)
|
||||
{
|
||||
switch (Type)
|
||||
{
|
||||
default:
|
||||
case DisplayType.Unsigned:
|
||||
return val.ToString();
|
||||
case DisplayType.Signed:
|
||||
return ((sbyte)val).ToString();
|
||||
case DisplayType.Hex:
|
||||
return val.ToHexString(2);
|
||||
case DisplayType.Binary:
|
||||
return Convert.ToString(val, 2).PadLeft(8, '0').Insert(4, " ");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
/*public override string ToString()
|
||||
{
|
||||
return Notes + ": " + ValueString;
|
||||
}*/
|
||||
|
||||
#region Properties
|
||||
|
||||
#region Implements
|
||||
|
||||
/// <summary>
|
||||
/// Get a string representation of difference
|
||||
/// between current value and the previous one
|
||||
/// </summary>
|
||||
public override string Diff
|
||||
{
|
||||
get
|
||||
{
|
||||
string diff = string.Empty;
|
||||
byte diffVal = Convert.ToByte(_value - _previous);
|
||||
if (diffVal > 0)
|
||||
{
|
||||
diff = "+";
|
||||
}
|
||||
else if (diffVal < 0)
|
||||
{
|
||||
diff = "-";
|
||||
}
|
||||
|
||||
return string.Format("{0}{1}", diff, FormatValue(diffVal));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the maximum possible value
|
||||
/// </summary>
|
||||
public override uint MaxValue
|
||||
{
|
||||
get
|
||||
{
|
||||
return byte.MaxValue;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the current value
|
||||
/// </summary>
|
||||
public override int Value
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetByte();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the current value
|
||||
/// but with stuff I don't understand
|
||||
/// </summary>
|
||||
/// <remarks>zero 15-nov-2015 - bypass LIAR LOGIC, see fdc9ea2aa922876d20ba897fb76909bf75fa6c92 https://github.com/TASVideos/BizHawk/issues/326 </remarks>
|
||||
public override int ValueNoFreeze
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetByte(true);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get a string representation of the current value
|
||||
/// </summary>
|
||||
public override string ValueString
|
||||
{
|
||||
get
|
||||
{
|
||||
return FormatValue(_value);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Try to sets the value into the <see cref="MemoryDomain"/>
|
||||
/// at the current <see cref="Watch"/> address
|
||||
|
@ -290,6 +160,131 @@ namespace BizHawk.Client.Common
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Update the Watch (read it from <see cref="MemoryDomain"/>
|
||||
/// </summary>
|
||||
public override void Update()
|
||||
{
|
||||
switch (Global.Config.RamWatchDefinePrevious)
|
||||
{
|
||||
case PreviousType.Original:
|
||||
return;
|
||||
case PreviousType.LastChange:
|
||||
var temp = _value;
|
||||
_value = GetByte();
|
||||
if (_value != temp)
|
||||
{
|
||||
_previous = _value;
|
||||
_changecount++;
|
||||
}
|
||||
|
||||
break;
|
||||
case PreviousType.LastFrame:
|
||||
_previous = _value;
|
||||
_value = GetByte();
|
||||
if (_value != Previous)
|
||||
{
|
||||
_changecount++;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Implements
|
||||
|
||||
//TODO: Implements IFormattable
|
||||
public string FormatValue(byte val)
|
||||
{
|
||||
switch (Type)
|
||||
{
|
||||
default:
|
||||
case DisplayType.Unsigned:
|
||||
return val.ToString();
|
||||
case DisplayType.Signed:
|
||||
return ((sbyte)val).ToString();
|
||||
case DisplayType.Hex:
|
||||
return val.ToHexString(2);
|
||||
case DisplayType.Binary:
|
||||
return Convert.ToString(val, 2).PadLeft(8, '0').Insert(4, " ");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Properties
|
||||
|
||||
#region Implements
|
||||
|
||||
/// <summary>
|
||||
/// Get a string representation of difference
|
||||
/// between current value and the previous one
|
||||
/// </summary>
|
||||
public override string Diff
|
||||
{
|
||||
get
|
||||
{
|
||||
string diff = string.Empty;
|
||||
byte diffVal = Convert.ToByte(_value - _previous);
|
||||
if (diffVal > 0)
|
||||
{
|
||||
diff = "+";
|
||||
}
|
||||
else if (diffVal < 0)
|
||||
{
|
||||
diff = "-";
|
||||
}
|
||||
|
||||
return string.Format("{0}{1}", diff, FormatValue(diffVal));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the maximum possible value
|
||||
/// </summary>
|
||||
public override uint MaxValue
|
||||
{
|
||||
get
|
||||
{
|
||||
return byte.MaxValue;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the current value
|
||||
/// </summary>
|
||||
public override int Value
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetByte();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the current value
|
||||
/// but with stuff I don't understand
|
||||
/// </summary>
|
||||
/// <remarks>zero 15-nov-2015 - bypass LIAR LOGIC, see fdc9ea2aa922876d20ba897fb76909bf75fa6c92 https://github.com/TASVideos/BizHawk/issues/326 </remarks>
|
||||
public override int ValueNoFreeze
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetByte(true);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get a string representation of the current value
|
||||
/// </summary>
|
||||
public override string ValueString
|
||||
{
|
||||
get
|
||||
{
|
||||
return FormatValue(_value);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the previous value
|
||||
/// </summary>
|
||||
|
@ -314,6 +309,6 @@ namespace BizHawk.Client.Common
|
|||
|
||||
#endregion Implements
|
||||
|
||||
#endregion
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,6 +9,9 @@ using System.Text;
|
|||
|
||||
namespace BizHawk.Client.Common
|
||||
{
|
||||
/// <summary>
|
||||
/// This class holds a double word (32 bits) <see cref="Watch"/>
|
||||
/// </summary>
|
||||
public sealed class DWordWatch : Watch
|
||||
{
|
||||
#region Fields
|
||||
|
@ -20,6 +23,18 @@ namespace BizHawk.Client.Common
|
|||
|
||||
#region cTor(s)
|
||||
|
||||
/// <summary>
|
||||
/// Inialize a new instance of <see cref="DWordWatch"/>
|
||||
/// </summary>
|
||||
/// <param name="domain"><see cref="MemoryDomain"/> where you want to track</param>
|
||||
/// <param name="address">The address you want to track</param>
|
||||
/// <param name="type">How you you want to display the value See <see cref="DisplayType"/></param>
|
||||
/// <param name="bigEndian">Specify the endianess. true for big endian</param>
|
||||
/// <param name="note">A custom note about the <see cref="Watch"/></param>
|
||||
/// <param name="value">Current value</param>
|
||||
/// <param name="previous">Previous value</param>
|
||||
/// <param name="changeCount">How many times value has changed</param>
|
||||
/// <exception cref="ArgumentException">Occurs when a <see cref="DisplayType"/> is incompatible with <see cref="WatchSize.DWord"/></exception>
|
||||
internal DWordWatch(MemoryDomain domain, long address, DisplayType type, bool bigEndian, string note, uint value, uint previous, int changeCount)
|
||||
: base(domain, address, WatchSize.DWord, type, bigEndian, note)
|
||||
{
|
||||
|
@ -28,15 +43,13 @@ namespace BizHawk.Client.Common
|
|||
this._changecount = changeCount;
|
||||
}
|
||||
|
||||
internal DWordWatch(MemoryDomain domain, long address, DisplayType type, bool bigEndian, string note)
|
||||
:this(domain, address, type, bigEndian, note, 0, 0, 0)
|
||||
{
|
||||
_previous = GetDWord();
|
||||
_value = GetDWord();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods
|
||||
|
||||
/// <summary>
|
||||
/// Enumerate wich <see cref="DisplayType"/> are valid for a <see cref="DWordWatch"/>
|
||||
/// </summary>
|
||||
public static IEnumerable<DisplayType> ValidTypes
|
||||
{
|
||||
get
|
||||
|
@ -51,80 +64,31 @@ namespace BizHawk.Client.Common
|
|||
}
|
||||
}
|
||||
|
||||
#region Implements
|
||||
|
||||
/// <summary>
|
||||
/// Get a list a <see cref="DisplayType"/> that can be used for this <see cref="DWordWatch"/>
|
||||
/// </summary>
|
||||
/// <returns>An enumartion that contains all valid <see cref="DisplayType"/></returns>
|
||||
public override IEnumerable<DisplayType> AvailableTypes()
|
||||
{
|
||||
yield return DisplayType.Unsigned;
|
||||
yield return DisplayType.Signed;
|
||||
yield return DisplayType.Hex;
|
||||
yield return DisplayType.Binary;
|
||||
yield return DisplayType.FixedPoint_20_12;
|
||||
yield return DisplayType.FixedPoint_16_16;
|
||||
yield return DisplayType.Float;
|
||||
}
|
||||
|
||||
public override int Value
|
||||
{
|
||||
get { return (int)GetDWord(); }
|
||||
}
|
||||
|
||||
public override int ValueNoFreeze
|
||||
{
|
||||
get { return (int)GetDWord(true); }
|
||||
}
|
||||
|
||||
public override int Previous
|
||||
{
|
||||
get { return (int)_previous; }
|
||||
}
|
||||
|
||||
public override string PreviousStr
|
||||
{
|
||||
get { return FormatValue(_previous); }
|
||||
return ValidTypes;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reset the previous value; set it to the current one
|
||||
/// </summary>
|
||||
public override void ResetPrevious()
|
||||
{
|
||||
_previous = GetWord();
|
||||
}
|
||||
|
||||
public override uint MaxValue
|
||||
{
|
||||
get { return uint.MaxValue; }
|
||||
}
|
||||
|
||||
public override string ValueString
|
||||
{
|
||||
get { return FormatValue(GetDWord()); }
|
||||
}
|
||||
|
||||
/*public override string ToString()
|
||||
{
|
||||
return Notes + ": " + ValueString;
|
||||
}*/
|
||||
|
||||
public string FormatValue(uint val)
|
||||
{
|
||||
switch (Type)
|
||||
{
|
||||
default:
|
||||
case DisplayType.Unsigned:
|
||||
return val.ToString();
|
||||
case DisplayType.Signed:
|
||||
return ((int)val).ToString();
|
||||
case DisplayType.Hex:
|
||||
return val.ToHexString(8);
|
||||
case DisplayType.FixedPoint_20_12:
|
||||
return string.Format("{0:0.######}", val / 4096.0);
|
||||
case DisplayType.FixedPoint_16_16:
|
||||
return string.Format("{0:0.######}", val / 65536.0);
|
||||
case DisplayType.Float:
|
||||
var bytes = BitConverter.GetBytes(val);
|
||||
var _float = BitConverter.ToSingle(bytes, 0);
|
||||
//return string.Format("{0:0.######}", _float);
|
||||
return _float.ToString(); // adelikat: decided that we like sci notation instead of spooky rounding
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Try to sets the value into the <see cref="MemoryDomain"/>
|
||||
/// at the current <see cref="Watch"/> address
|
||||
/// </summary>
|
||||
/// <param name="value">Value to set</param>
|
||||
/// <returns>True if value successfully sets; othewise, false</returns>
|
||||
public override bool Poke(string value)
|
||||
{
|
||||
try
|
||||
|
@ -221,11 +185,9 @@ namespace BizHawk.Client.Common
|
|||
}
|
||||
}
|
||||
|
||||
public override string Diff
|
||||
{
|
||||
get { return FormatValue(_previous - _value); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Update the Watch (read it from <see cref="MemoryDomain"/>
|
||||
/// </summary>
|
||||
public override void Update()
|
||||
{
|
||||
switch (Global.Config.RamWatchDefinePrevious)
|
||||
|
@ -253,5 +215,120 @@ namespace BizHawk.Client.Common
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Implements
|
||||
|
||||
//TODO: Implements IFormattable
|
||||
public string FormatValue(uint val)
|
||||
{
|
||||
switch (Type)
|
||||
{
|
||||
default:
|
||||
case DisplayType.Unsigned:
|
||||
return val.ToString();
|
||||
case DisplayType.Signed:
|
||||
return ((int)val).ToString();
|
||||
case DisplayType.Hex:
|
||||
return val.ToHexString(8);
|
||||
case DisplayType.FixedPoint_20_12:
|
||||
return string.Format("{0:0.######}", val / 4096.0);
|
||||
case DisplayType.FixedPoint_16_16:
|
||||
return string.Format("{0:0.######}", val / 65536.0);
|
||||
case DisplayType.Float:
|
||||
var bytes = BitConverter.GetBytes(val);
|
||||
var _float = BitConverter.ToSingle(bytes, 0);
|
||||
//return string.Format("{0:0.######}", _float);
|
||||
return _float.ToString(); // adelikat: decided that we like sci notation instead of spooky rounding
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Properties
|
||||
|
||||
#region Implements
|
||||
|
||||
/// <summary>
|
||||
/// Get a string representation of difference
|
||||
/// between current value and the previous one
|
||||
/// </summary>
|
||||
public override string Diff
|
||||
{
|
||||
get
|
||||
{
|
||||
return FormatValue(_previous - _value);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the maximum possible value
|
||||
/// </summary>
|
||||
public override uint MaxValue
|
||||
{
|
||||
get
|
||||
{
|
||||
return uint.MaxValue;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the current value
|
||||
/// </summary>
|
||||
public override int Value
|
||||
{
|
||||
get
|
||||
{
|
||||
return (int)GetDWord();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the current value
|
||||
/// but with stuff I don't understand
|
||||
/// </summary>
|
||||
public override int ValueNoFreeze
|
||||
{
|
||||
get
|
||||
{
|
||||
return (int)GetDWord(true);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get a string representation of the current value
|
||||
/// </summary>
|
||||
public override string ValueString
|
||||
{
|
||||
get
|
||||
{
|
||||
return FormatValue(GetDWord());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the previous value
|
||||
/// </summary>
|
||||
public override int Previous
|
||||
{
|
||||
get
|
||||
{
|
||||
return (int)_previous;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get a string representation of the previous value
|
||||
/// </summary>
|
||||
public override string PreviousStr
|
||||
{
|
||||
get
|
||||
{
|
||||
return FormatValue(_previous);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Implements
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,69 +3,117 @@ using System.Collections.Generic;
|
|||
|
||||
namespace BizHawk.Client.Common
|
||||
{
|
||||
/// <summary>
|
||||
/// This class holds a separator for RamWatch
|
||||
/// Use the static property Instance to get it
|
||||
/// </summary>
|
||||
public sealed class SeparatorWatch : Watch
|
||||
{
|
||||
/// <summary>
|
||||
/// Initialize a new separator instance
|
||||
/// </summary>
|
||||
internal SeparatorWatch()
|
||||
:base(null, 0, WatchSize.Separator, DisplayType.Separator, true, string.Empty)
|
||||
{ }
|
||||
|
||||
/// <summary>
|
||||
/// Gets the separator instance
|
||||
/// </summary>
|
||||
public static SeparatorWatch Instance
|
||||
{
|
||||
get { return new SeparatorWatch(); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the appropriate DisplayType
|
||||
/// </summary>
|
||||
/// <returns>DisplayType.Separator nothing else</returns>
|
||||
public override IEnumerable<DisplayType> AvailableTypes()
|
||||
{
|
||||
yield return DisplayType.Separator;
|
||||
}
|
||||
|
||||
#region Stuff to ignore
|
||||
|
||||
/// <summary>
|
||||
/// Ignore that stuff
|
||||
/// </summary>
|
||||
public override int Value
|
||||
{
|
||||
get { return 0; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ignore that stuff
|
||||
/// </summary>
|
||||
public override int ValueNoFreeze
|
||||
{
|
||||
get { return 0; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ignore that stuff
|
||||
/// </summary>
|
||||
public override int Previous
|
||||
{
|
||||
get { return 0; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ignore that stuff
|
||||
/// </summary>
|
||||
public override string ValueString
|
||||
{
|
||||
get { return string.Empty; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ignore that stuff
|
||||
/// </summary>
|
||||
public override string PreviousStr
|
||||
{
|
||||
get { return string.Empty; }
|
||||
}
|
||||
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return "----";
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ignore that stuff
|
||||
/// </summary>
|
||||
public override bool Poke(string value)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ignore that stuff
|
||||
/// </summary>
|
||||
public override void ResetPrevious()
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ignore that stuff
|
||||
/// </summary>
|
||||
public override string Diff { get { return string.Empty; } }
|
||||
|
||||
/// <summary>
|
||||
/// Ignore that stuff
|
||||
/// </summary>
|
||||
public override uint MaxValue
|
||||
{
|
||||
get { return 0; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ignore that stuff
|
||||
/// </summary>
|
||||
public override void Update() { return; }
|
||||
|
||||
public override IEnumerable<DisplayType> AvailableTypes()
|
||||
{
|
||||
yield return DisplayType.Separator;
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
|
@ -327,8 +327,8 @@ namespace BizHawk.Client.Common
|
|||
|
||||
#endregion Abstracts
|
||||
|
||||
#region Protected
|
||||
|
||||
#region Protected
|
||||
|
||||
protected byte GetByte(bool bypassFreeze = false)
|
||||
{
|
||||
if (!bypassFreeze && Global.CheatList.IsActive(_domain, _address))
|
||||
|
@ -429,10 +429,16 @@ namespace BizHawk.Client.Common
|
|||
/// <returns>True if both object are equals; otherwise, false</returns>
|
||||
public bool Equals(Watch other)
|
||||
{
|
||||
return !object.ReferenceEquals(other, null) &&
|
||||
this._domain == other._domain &&
|
||||
this._address == other._address &&
|
||||
this._size == other._size;
|
||||
if (object.ReferenceEquals(other, null))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return this._domain == other._domain &&
|
||||
this._address == other._address &&
|
||||
this._size == other._size;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion IEquatable<Watch>
|
||||
|
@ -478,7 +484,7 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
return 1;
|
||||
}
|
||||
else if (_address.Equals(other._address))
|
||||
else if (_address.Equals(other._address))
|
||||
{
|
||||
return ((int)_size).CompareTo((int)other._size);
|
||||
}
|
||||
|
@ -518,7 +524,7 @@ namespace BizHawk.Client.Common
|
|||
/// <returns>int that can serves as a unique representation of current Watch</returns>
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return this.Domain.GetHashCode() + (int)(this.Address ?? 0);
|
||||
return this.Domain.GetHashCode() + (int)(this.Address);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
@ -539,7 +545,7 @@ namespace BizHawk.Client.Common
|
|||
public override string ToString()
|
||||
{
|
||||
return string.Format("{0}\t{1}\t{2}\t{3}\t{4}\t{5}"
|
||||
, (Address ?? 0).ToHexString((Domain.Size - 1).NumHexDigits())
|
||||
, Address.ToHexString((Domain.Size - 1).NumHexDigits())
|
||||
, SizeAsChar
|
||||
, TypeAsChar
|
||||
, Convert.ToInt32(BigEndian)
|
||||
|
@ -605,7 +611,7 @@ namespace BizHawk.Client.Common
|
|||
/// <summary>
|
||||
/// Gets the address in the <see cref="MemoryDomain"/>
|
||||
/// </summary>
|
||||
public long? Address
|
||||
public long Address
|
||||
{
|
||||
get
|
||||
{
|
||||
|
@ -699,9 +705,16 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
return _domain;
|
||||
}
|
||||
set
|
||||
internal set
|
||||
{
|
||||
_domain = value;
|
||||
if (_domain.Name == value.Name)
|
||||
{
|
||||
_domain = value;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new InvalidOperationException("You cannot set diffrent domain to a watch on the fly");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -719,7 +732,7 @@ namespace BizHawk.Client.Common
|
|||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,94 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace BizHawk.Client.Common
|
||||
{
|
||||
/// <summary>
|
||||
/// This class hold a collection <see cref="Watch"/>
|
||||
/// Different memory domain can be mixed
|
||||
/// </summary>
|
||||
public sealed partial class WatchList
|
||||
{
|
||||
/// <summary>
|
||||
/// Netsed private class that define how to compare two <see cref="Watch"/>
|
||||
/// based on their address
|
||||
/// </summary>
|
||||
private struct WatchAddressComparer
|
||||
: IEqualityComparer<Watch>,
|
||||
IComparer<Watch>
|
||||
{
|
||||
/// <summary>
|
||||
/// Compare two <see cref="Watch"/> between them
|
||||
/// and determine wich one comes first.
|
||||
/// If they are equals, comapraison will done one the domain and next on size
|
||||
/// </summary>
|
||||
/// <param name="x">First <see cref="Watch"/></param>
|
||||
/// <returns>True if <see cref="Watch"/> are equal; otherwise, false</returns>
|
||||
/// <returns></returns>
|
||||
public int Compare(Watch x, Watch y)
|
||||
{
|
||||
if (Equals(x, y))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else if (x.Address.Equals(y.Address))
|
||||
{
|
||||
if (x.Domain.Name.Equals(y.Domain.Name))
|
||||
{
|
||||
return x.Size.CompareTo(y.Size);
|
||||
}
|
||||
else
|
||||
{
|
||||
return x.Domain.Name.CompareTo(y.Domain.Name);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return x.Address.CompareTo(y.Address);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determine if two <see cref="Watch"/> are equals
|
||||
/// </summary>
|
||||
/// <param name="x">First <see cref="Watch"/></param>
|
||||
/// <param name="y">Second <see cref="Watch"/></param>
|
||||
/// <returns>True if <see cref="Watch"/> are equal; otherwise, false</returns>
|
||||
public bool Equals(Watch x, Watch y)
|
||||
{
|
||||
if (object.ReferenceEquals(x, null))
|
||||
{
|
||||
if (object.ReferenceEquals(y, null))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (object.ReferenceEquals(y, null))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if (object.ReferenceEquals(x, y))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return x.Address.Equals(y.Address);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the hash value of specified <see cref="Watch"/>
|
||||
/// </summary>
|
||||
/// <param name="obj">Watch to get hash</param>
|
||||
/// <returns>int that can serves as a unique representation of current Watch</returns>
|
||||
public int GetHashCode(Watch obj)
|
||||
{
|
||||
return obj.GetHashCode();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,94 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace BizHawk.Client.Common
|
||||
{
|
||||
/// <summary>
|
||||
/// This class hold a collection <see cref="Watch"/>
|
||||
/// Different memory domain can be mixed
|
||||
/// </summary>
|
||||
public sealed partial class WatchList
|
||||
{
|
||||
/// <summary>
|
||||
/// Netsed private class that define how to compare two <see cref="Watch"/>
|
||||
/// based on their domain
|
||||
/// </summary>
|
||||
private struct WatchDomainComparer
|
||||
: IEqualityComparer<Watch>,
|
||||
IComparer<Watch>
|
||||
{
|
||||
/// <summary>
|
||||
/// Compare two <see cref="Watch"/> between them
|
||||
/// and determine wich one comes first.
|
||||
/// If they are equals, comapraison will done one the address and next on size
|
||||
/// </summary>
|
||||
/// <param name="x">First <see cref="Watch"/></param>
|
||||
/// <returns>True if <see cref="Watch"/> are equal; otherwise, false</returns>
|
||||
/// <returns></returns>
|
||||
public int Compare(Watch x, Watch y)
|
||||
{
|
||||
if(Equals(x, y))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else if(x.Domain.Name.Equals(y.Domain.Name))
|
||||
{
|
||||
if (x.Address.Equals(y.Address))
|
||||
{
|
||||
return x.Size.CompareTo(y.Size);
|
||||
}
|
||||
else
|
||||
{
|
||||
return x.Address.CompareTo(y.Address);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return x.Domain.Name.CompareTo(y.Domain.Name);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Determine if two <see cref="Watch"/> are equals
|
||||
/// </summary>
|
||||
/// <param name="x">First <see cref="Watch"/></param>
|
||||
/// <param name="y">Second <see cref="Watch"/></param>
|
||||
/// <returns>True if <see cref="Watch"/> are equal; otherwise, false</returns>
|
||||
public bool Equals(Watch x, Watch y)
|
||||
{
|
||||
if(object.ReferenceEquals(x, null))
|
||||
{
|
||||
if(object.ReferenceEquals(y, null))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if(object.ReferenceEquals(y, null))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else if(object.ReferenceEquals(x,y))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return x.Domain.Name.Equals(y.Domain.Name);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the hash value of specified <see cref="Watch"/>
|
||||
/// </summary>
|
||||
/// <param name="obj">Watch to get hash</param>
|
||||
/// <returns>int that can serves as a unique representation of current Watch</returns>
|
||||
public int GetHashCode(Watch obj)
|
||||
{
|
||||
return obj.GetHashCode();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,23 +1,27 @@
|
|||
using System.Collections;
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using BizHawk.Common.NumberExtensions;
|
||||
using BizHawk.Common.StringExtensions;
|
||||
using BizHawk.Emulation.Common;
|
||||
|
||||
|
||||
namespace BizHawk.Client.Common
|
||||
{
|
||||
public class WatchList : IList<Watch>
|
||||
/// <summary>
|
||||
/// This class hold a collection <see cref="Watch"/>
|
||||
/// Different memory domain can be mixed
|
||||
/// </summary>
|
||||
public sealed partial class WatchList
|
||||
: IList<Watch>
|
||||
{
|
||||
private IMemoryDomains _memoryDomains;
|
||||
private List<Watch> _watchList = new List<Watch>();
|
||||
private MemoryDomain _domain;
|
||||
private string _currentFilename = string.Empty;
|
||||
private string _systemid;
|
||||
#region Fields
|
||||
|
||||
public const string ADDRESS = "AddressColumn";
|
||||
public const string VALUE = "ValueColumn";
|
||||
|
@ -27,14 +31,62 @@ namespace BizHawk.Client.Common
|
|||
public const string DOMAIN = "DomainColumn";
|
||||
public const string NOTES = "NotesColumn";
|
||||
|
||||
private static readonly WatchDomainComparer domainComparer = new WatchDomainComparer();
|
||||
private static readonly WatchAddressComparer addressComparer = new WatchAddressComparer();
|
||||
|
||||
private static IMemoryDomains _memoryDomains;
|
||||
|
||||
private List<Watch> _watchList = new List<Watch>(0);
|
||||
private MemoryDomain _domain;
|
||||
private string _currentFilename = string.Empty;
|
||||
private string _systemid;
|
||||
|
||||
#endregion
|
||||
|
||||
#region cTor(s)
|
||||
|
||||
/// <summary>
|
||||
/// Initialize a new instance of <see cref="WatchList"/> that will
|
||||
/// contains a set of <see cref="Watch"/>
|
||||
/// </summary>
|
||||
/// <param name="core">All available memomry domains</param>
|
||||
/// <param name="domain">Domain you want to watch</param>
|
||||
/// <param name="systemid">System identifier (NES, SNES, ...)</param>
|
||||
[Obsolete("Use the constructor with two parameters instead")]
|
||||
public WatchList(IMemoryDomains core, MemoryDomain domain, string systemid)
|
||||
{
|
||||
_memoryDomains = core;
|
||||
if (_memoryDomains == null)
|
||||
{
|
||||
_memoryDomains = core;
|
||||
}
|
||||
_domain = domain;
|
||||
_systemid = systemid;
|
||||
}
|
||||
|
||||
public void RefreshDomans(IMemoryDomains core, MemoryDomain domain)
|
||||
/// <summary>
|
||||
/// Initialize a new instance of <see cref="WatchList"/> that will
|
||||
/// contains a set of <see cref="Watch"/>
|
||||
/// </summary>
|
||||
/// <param name="core">All available memomry domains</param>
|
||||
/// <param name="domain">Domain you want to watch</param>
|
||||
/// <param name="systemid">System identifier (NES, SNES, ...)</param>
|
||||
public WatchList(IMemoryDomains core, string systemid)
|
||||
{
|
||||
if (_memoryDomains == null)
|
||||
{
|
||||
_memoryDomains = core;
|
||||
}
|
||||
//TODO: Remove this after tests
|
||||
_domain = core.MainMemory;
|
||||
_systemid = systemid;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods
|
||||
|
||||
[Obsolete("Use the method with single parameter instead")]
|
||||
public void RefreshDomains(IMemoryDomains core, MemoryDomain domain)
|
||||
{
|
||||
_memoryDomains = core;
|
||||
_domain = domain;
|
||||
|
@ -47,8 +99,21 @@ namespace BizHawk.Client.Common
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
public enum WatchPrevDef { LastSearch, Original, LastFrame, LastChange }
|
||||
|
||||
public void RefreshDomains(IMemoryDomains core)
|
||||
{
|
||||
_memoryDomains = core;
|
||||
Parallel.ForEach<Watch>(_watchList, watch =>
|
||||
{
|
||||
watch.Domain = core[watch.Domain.Name];
|
||||
watch.ResetPrevious();
|
||||
watch.Update();
|
||||
watch.ClearChangeCount();
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
public string AddressFormatStr // TODO: this is probably compensating for not using the ToHex string extension
|
||||
{
|
||||
|
@ -65,19 +130,30 @@ namespace BizHawk.Client.Common
|
|||
|
||||
public int Count
|
||||
{
|
||||
get { return _watchList.Count; }
|
||||
get
|
||||
{
|
||||
return _watchList.Count;
|
||||
}
|
||||
}
|
||||
|
||||
public int WatchCount
|
||||
{
|
||||
get { return _watchList.Count(w => !w.IsSeparator); }
|
||||
get
|
||||
{
|
||||
return _watchList.Count<Watch>(watch => !watch.IsSeparator);
|
||||
}
|
||||
}
|
||||
|
||||
[Obsolete("Use count property instead")]
|
||||
public int ItemCount
|
||||
{
|
||||
get { return _watchList.Count; }
|
||||
get
|
||||
{
|
||||
return Count;
|
||||
}
|
||||
}
|
||||
|
||||
[Obsolete("Use domain from individual watch instead")]
|
||||
public MemoryDomain Domain
|
||||
{
|
||||
get { return _domain; }
|
||||
|
@ -117,23 +193,12 @@ namespace BizHawk.Client.Common
|
|||
case ADDRESS:
|
||||
if (reverse)
|
||||
{
|
||||
_watchList = _watchList
|
||||
.OrderByDescending(x => x.Address)
|
||||
.ThenBy(x => x.Domain.Name)
|
||||
.ThenBy(x => x.Size)
|
||||
.ThenBy(x => x.Type)
|
||||
.ThenBy(x => x.BigEndian)
|
||||
.ToList();
|
||||
_watchList.Sort(addressComparer);
|
||||
_watchList.Reverse();
|
||||
}
|
||||
else
|
||||
{
|
||||
_watchList = _watchList
|
||||
.OrderBy(x => x.Address)
|
||||
.ThenBy(x => x.Domain.Name)
|
||||
.ThenBy(x => x.Size)
|
||||
.ThenBy(x => x.Type)
|
||||
.ThenBy(x => x.BigEndian)
|
||||
.ToList();
|
||||
_watchList.Sort();
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -165,7 +230,7 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
_watchList = _watchList
|
||||
.OrderByDescending(x => x.PreviousStr)
|
||||
.ThenBy(x => x.Address ?? 0)
|
||||
.ThenBy(x => x.Address)
|
||||
.ThenBy(x => x.Size)
|
||||
.ThenBy(x => x.Type)
|
||||
.ToList();
|
||||
|
@ -174,7 +239,7 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
_watchList = _watchList
|
||||
.OrderBy(x => x.PreviousStr)
|
||||
.ThenBy(x => x.Address ?? 0)
|
||||
.ThenBy(x => x.Address)
|
||||
.ThenBy(x => x.Size)
|
||||
.ThenBy(x => x.Type)
|
||||
.ToList();
|
||||
|
@ -186,7 +251,7 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
_watchList = _watchList
|
||||
.OrderByDescending(x => x.Diff)
|
||||
.ThenBy(x => x.Address ?? 0)
|
||||
.ThenBy(x => x.Address)
|
||||
.ThenBy(x => x.Size)
|
||||
.ThenBy(x => x.Type)
|
||||
.ToList();
|
||||
|
@ -195,7 +260,7 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
_watchList = _watchList
|
||||
.OrderBy(x => x.Diff)
|
||||
.ThenBy(x => x.Address ?? 0)
|
||||
.ThenBy(x => x.Address)
|
||||
.ThenBy(x => x.Size)
|
||||
.ThenBy(x => x.Type)
|
||||
.ToList();
|
||||
|
@ -207,7 +272,7 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
_watchList = _watchList
|
||||
.OrderByDescending(x => x.ChangeCount)
|
||||
.ThenBy(x => x.Address ?? 0)
|
||||
.ThenBy(x => x.Address)
|
||||
.ThenBy(x => x.Size)
|
||||
.ThenBy(x => x.Type)
|
||||
.ToList();
|
||||
|
@ -216,7 +281,7 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
_watchList = _watchList
|
||||
.OrderBy(x => x.ChangeCount)
|
||||
.ThenBy(x => x.Address ?? 0)
|
||||
.ThenBy(x => x.Address)
|
||||
.ThenBy(x => x.Size)
|
||||
.ThenBy(x => x.Type)
|
||||
.ToList();
|
||||
|
@ -226,23 +291,12 @@ namespace BizHawk.Client.Common
|
|||
case DOMAIN:
|
||||
if (reverse)
|
||||
{
|
||||
_watchList = _watchList
|
||||
.OrderByDescending(x => x.Domain)
|
||||
.ThenBy(x => x.Address ?? 0)
|
||||
.ThenBy(x => x.Size)
|
||||
.ThenBy(x => x.Type)
|
||||
.ThenBy(x => x.BigEndian)
|
||||
.ToList();
|
||||
_watchList.Sort(domainComparer);
|
||||
_watchList.Reverse();
|
||||
}
|
||||
else
|
||||
{
|
||||
_watchList = _watchList
|
||||
.OrderBy(x => x.Domain)
|
||||
.ThenBy(x => x.Address ?? 0)
|
||||
.ThenBy(x => x.Size)
|
||||
.ThenBy(x => x.Type)
|
||||
.ThenBy(x => x.BigEndian)
|
||||
.ToList();
|
||||
_watchList.Sort(domainComparer);
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -251,7 +305,7 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
_watchList = _watchList
|
||||
.OrderByDescending(x => x.Notes)
|
||||
.ThenBy(x => x.Address ?? 0)
|
||||
.ThenBy(x => x.Address)
|
||||
.ThenBy(x => x.Size)
|
||||
.ThenBy(x => x.Type)
|
||||
.ToList();
|
||||
|
@ -260,7 +314,7 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
_watchList = _watchList
|
||||
.OrderBy(x => x.Notes)
|
||||
.ThenBy(x => x.Address ?? 0)
|
||||
.ThenBy(x => x.Address)
|
||||
.ThenBy(x => x.Size)
|
||||
.ThenBy(x => x.Type)
|
||||
.ToList();
|
||||
|
@ -279,11 +333,11 @@ namespace BizHawk.Client.Common
|
|||
|
||||
public void UpdateValues()
|
||||
{
|
||||
foreach (var watch in _watchList)
|
||||
Parallel.ForEach<Watch>(_watchList, watch =>
|
||||
{
|
||||
watch.Update();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public void Add(Watch watch)
|
||||
{
|
||||
|
@ -412,7 +466,7 @@ namespace BizHawk.Client.Common
|
|||
CurrentFileName = file.FullName;
|
||||
return Save();
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -476,7 +530,7 @@ namespace BizHawk.Client.Common
|
|||
{
|
||||
isOldBizHawkWatch = true; // This supports the legacy .wch format from 1.0.5 and earlier
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
continue; // If not 4, something is wrong with this line, ignore it
|
||||
}
|
||||
|
@ -532,9 +586,9 @@ namespace BizHawk.Client.Common
|
|||
memDomain,
|
||||
addr,
|
||||
size,
|
||||
type,
|
||||
type,
|
||||
bigEndian,
|
||||
notes));
|
||||
notes));
|
||||
_domain = _memoryDomains[domain];
|
||||
}
|
||||
|
|
@ -1,13 +1,17 @@
|
|||
using BizHawk.Common.NumberExtensions;
|
||||
using BizHawk.Common.StringExtensions;
|
||||
using BizHawk.Emulation.Common;
|
||||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
|
||||
using BizHawk.Common.NumberExtensions;
|
||||
using BizHawk.Common.StringExtensions;
|
||||
using BizHawk.Emulation.Common;
|
||||
|
||||
namespace BizHawk.Client.Common
|
||||
{
|
||||
/// <summary>
|
||||
/// This class holds a word (16 bits) <see cref="Watch"/>
|
||||
/// </summary>
|
||||
public sealed class WordWatch : Watch
|
||||
{
|
||||
#region Fields
|
||||
|
@ -19,6 +23,18 @@ namespace BizHawk.Client.Common
|
|||
|
||||
#region cTor(s)
|
||||
|
||||
/// <summary>
|
||||
/// Inialize a new instance of <see cref="WordWatch"/>
|
||||
/// </summary>
|
||||
/// <param name="domain"><see cref="MemoryDomain"/> where you want to track</param>
|
||||
/// <param name="address">The address you want to track</param>
|
||||
/// <param name="type">How you you want to display the value See <see cref="DisplayType"/></param>
|
||||
/// <param name="bigEndian">Specify the endianess. true for big endian</param>
|
||||
/// <param name="note">A custom note about the <see cref="Watch"/></param>
|
||||
/// <param name="value">Current value</param>
|
||||
/// <param name="previous">Previous value</param>
|
||||
/// <param name="changeCount">How many times value has changed</param>
|
||||
/// <exception cref="ArgumentException">Occurs when a <see cref="DisplayType"/> is incompatible with <see cref="WatchSize.Word"/></exception>
|
||||
internal WordWatch(MemoryDomain domain, long address, DisplayType type, bool bigEndian, string note, ushort value, ushort previous, int changeCount)
|
||||
: base(domain, address, WatchSize.Word, type, bigEndian, note)
|
||||
{
|
||||
|
@ -27,15 +43,13 @@ namespace BizHawk.Client.Common
|
|||
this._changecount = changeCount;
|
||||
}
|
||||
|
||||
internal WordWatch(MemoryDomain domain, long address, DisplayType type, bool bigEndian, string note)
|
||||
:this(domain, address, type, bigEndian, note, 0, 0, 0)
|
||||
{
|
||||
_previous = GetWord();
|
||||
_value = GetWord();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Methods
|
||||
|
||||
/// <summary>
|
||||
/// Enumerate wich <see cref="DisplayType"/> are valid for a <see cref="WordWatch"/>
|
||||
/// </summary>
|
||||
public static IEnumerable<DisplayType> ValidTypes
|
||||
{
|
||||
get
|
||||
|
@ -48,73 +62,31 @@ namespace BizHawk.Client.Common
|
|||
}
|
||||
}
|
||||
|
||||
#region Implements
|
||||
|
||||
/// <summary>
|
||||
/// Get a list a <see cref="DisplayType"/> that can be used for this <see cref="WordWatch"/>
|
||||
/// </summary>
|
||||
/// <returns>An enumartion that contains all valid <see cref="DisplayType"/></returns>
|
||||
public override IEnumerable<DisplayType> AvailableTypes()
|
||||
{
|
||||
yield return DisplayType.Unsigned;
|
||||
yield return DisplayType.Signed;
|
||||
yield return DisplayType.Hex;
|
||||
yield return DisplayType.Binary;
|
||||
yield return DisplayType.FixedPoint_12_4;
|
||||
}
|
||||
|
||||
public override uint MaxValue
|
||||
{
|
||||
get { return ushort.MaxValue; }
|
||||
}
|
||||
|
||||
public override int Value
|
||||
{
|
||||
get { return GetWord(); }
|
||||
}
|
||||
|
||||
public override int ValueNoFreeze
|
||||
{
|
||||
get { return GetWord(true); }
|
||||
}
|
||||
|
||||
public override int Previous
|
||||
{
|
||||
get { return _previous; }
|
||||
}
|
||||
|
||||
public override string PreviousStr
|
||||
{
|
||||
get { return FormatValue(_previous); }
|
||||
return ValidTypes;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reset the previous value; set it to the current one
|
||||
/// </summary>
|
||||
public override void ResetPrevious()
|
||||
{
|
||||
_previous = GetWord();
|
||||
}
|
||||
|
||||
public override string ValueString
|
||||
{
|
||||
get { return FormatValue(GetWord()); }
|
||||
}
|
||||
|
||||
/*public override string ToString()
|
||||
{
|
||||
return Notes + ": " + ValueString;
|
||||
}*/
|
||||
|
||||
public string FormatValue(ushort val)
|
||||
{
|
||||
switch (Type)
|
||||
{
|
||||
default:
|
||||
case DisplayType.Unsigned:
|
||||
return val.ToString();
|
||||
case DisplayType.Signed:
|
||||
return ((short)val).ToString();
|
||||
case DisplayType.Hex:
|
||||
return val.ToHexString(4);
|
||||
case DisplayType.FixedPoint_12_4:
|
||||
return string.Format("{0:F4}", val / 16.0);
|
||||
case DisplayType.Binary:
|
||||
return Convert.ToString(val, 2).PadLeft(16, '0').Insert(8, " ").Insert(4, " ").Insert(14, " ");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Try to sets the value into the <see cref="MemoryDomain"/>
|
||||
/// at the current <see cref="Watch"/> address
|
||||
/// </summary>
|
||||
/// <param name="value">Value to set</param>
|
||||
/// <returns>True if value successfully sets; othewise, false</returns>
|
||||
public override bool Poke(string value)
|
||||
{
|
||||
try
|
||||
|
@ -199,11 +171,9 @@ namespace BizHawk.Client.Common
|
|||
}
|
||||
}
|
||||
|
||||
public override string Diff
|
||||
{
|
||||
get { return FormatValue((ushort)(_previous - _value)); }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Update the Watch (read it from <see cref="MemoryDomain"/>
|
||||
/// </summary>
|
||||
public override void Update()
|
||||
{
|
||||
switch (Global.Config.RamWatchDefinePrevious)
|
||||
|
@ -232,5 +202,115 @@ namespace BizHawk.Client.Common
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Implements
|
||||
|
||||
//TODO: Implements IFormattable
|
||||
public string FormatValue(ushort val)
|
||||
{
|
||||
switch (Type)
|
||||
{
|
||||
default:
|
||||
case DisplayType.Unsigned:
|
||||
return val.ToString();
|
||||
case DisplayType.Signed:
|
||||
return ((short)val).ToString();
|
||||
case DisplayType.Hex:
|
||||
return val.ToHexString(4);
|
||||
case DisplayType.FixedPoint_12_4:
|
||||
return string.Format("{0:F4}", val / 16.0);
|
||||
case DisplayType.Binary:
|
||||
return Convert.ToString(val, 2).PadLeft(16, '0').Insert(8, " ").Insert(4, " ").Insert(14, " ");
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Properties
|
||||
|
||||
#region Implements
|
||||
|
||||
/// <summary>
|
||||
/// Get a string representation of difference
|
||||
/// between current value and the previous one
|
||||
/// </summary>
|
||||
public override string Diff
|
||||
{
|
||||
get
|
||||
{
|
||||
return FormatValue((ushort)(_previous - _value));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the maximum possible value
|
||||
/// </summary>
|
||||
public override uint MaxValue
|
||||
{
|
||||
get
|
||||
{
|
||||
return ushort.MaxValue;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the current value
|
||||
/// </summary>
|
||||
public override int Value
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetWord();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the current value
|
||||
/// but with stuff I don't understand
|
||||
/// </summary>
|
||||
public override int ValueNoFreeze
|
||||
{
|
||||
get
|
||||
{
|
||||
return GetWord(true);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get a string representation of the current value
|
||||
/// </summary>
|
||||
public override string ValueString
|
||||
{
|
||||
get
|
||||
{
|
||||
return FormatValue(GetWord());
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the previous value
|
||||
/// </summary>
|
||||
public override int Previous
|
||||
{
|
||||
get
|
||||
{
|
||||
return _previous;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get a string representation of the previous value
|
||||
/// </summary>
|
||||
public override string PreviousStr
|
||||
{
|
||||
get
|
||||
{
|
||||
return FormatValue(_previous);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Implements
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
|
@ -42,6 +42,7 @@
|
|||
this.AddMarkerButton = new System.Windows.Forms.Button();
|
||||
this.RemoveMarkerButton = new System.Windows.Forms.Button();
|
||||
this.ScrollToMarkerButton = new System.Windows.Forms.Button();
|
||||
this.AddMarkerWithTextButton = new System.Windows.Forms.Button();
|
||||
this.MarkerView = new BizHawk.Client.EmuHawk.InputRoll();
|
||||
this.MarkerContextMenu.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
|
@ -63,7 +64,7 @@
|
|||
//
|
||||
this.JumpToMarkerToolStripMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.JumpTo;
|
||||
this.JumpToMarkerToolStripMenuItem.Name = "JumpToMarkerToolStripMenuItem";
|
||||
this.JumpToMarkerToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||
this.JumpToMarkerToolStripMenuItem.Size = new System.Drawing.Size(125, 22);
|
||||
this.JumpToMarkerToolStripMenuItem.Text = "Jump To";
|
||||
this.JumpToMarkerToolStripMenuItem.Click += new System.EventHandler(this.JumpToMarkerToolStripMenuItem_Click);
|
||||
//
|
||||
|
@ -71,7 +72,7 @@
|
|||
//
|
||||
this.ScrollToMarkerToolStripMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.ScrollTo;
|
||||
this.ScrollToMarkerToolStripMenuItem.Name = "ScrollToMarkerToolStripMenuItem";
|
||||
this.ScrollToMarkerToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||
this.ScrollToMarkerToolStripMenuItem.Size = new System.Drawing.Size(125, 22);
|
||||
this.ScrollToMarkerToolStripMenuItem.Text = "Scroll To";
|
||||
this.ScrollToMarkerToolStripMenuItem.Click += new System.EventHandler(this.ScrollToMarkerToolStripMenuItem_Click);
|
||||
//
|
||||
|
@ -79,7 +80,7 @@
|
|||
//
|
||||
this.EditMarkerToolStripMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.pencil;
|
||||
this.EditMarkerToolStripMenuItem.Name = "EditMarkerToolStripMenuItem";
|
||||
this.EditMarkerToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||
this.EditMarkerToolStripMenuItem.Size = new System.Drawing.Size(125, 22);
|
||||
this.EditMarkerToolStripMenuItem.Text = "Edit";
|
||||
this.EditMarkerToolStripMenuItem.Click += new System.EventHandler(this.EditMarkerToolStripMenuItem_Click);
|
||||
//
|
||||
|
@ -87,20 +88,20 @@
|
|||
//
|
||||
this.AddMarkerToolStripMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.add;
|
||||
this.AddMarkerToolStripMenuItem.Name = "AddMarkerToolStripMenuItem";
|
||||
this.AddMarkerToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||
this.AddMarkerToolStripMenuItem.Size = new System.Drawing.Size(125, 22);
|
||||
this.AddMarkerToolStripMenuItem.Text = "Add";
|
||||
this.AddMarkerToolStripMenuItem.Click += new System.EventHandler(this.AddMarkerToolStripMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(149, 6);
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(122, 6);
|
||||
//
|
||||
// RemoveMarkerToolStripMenuItem
|
||||
//
|
||||
this.RemoveMarkerToolStripMenuItem.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Delete;
|
||||
this.RemoveMarkerToolStripMenuItem.Name = "RemoveMarkerToolStripMenuItem";
|
||||
this.RemoveMarkerToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||
this.RemoveMarkerToolStripMenuItem.Size = new System.Drawing.Size(125, 22);
|
||||
this.RemoveMarkerToolStripMenuItem.Text = "Remove";
|
||||
this.RemoveMarkerToolStripMenuItem.Click += new System.EventHandler(this.RemoveMarkerToolStripMenuItem_Click);
|
||||
//
|
||||
|
@ -109,7 +110,7 @@
|
|||
this.JumpToMarkerButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.JumpToMarkerButton.Enabled = false;
|
||||
this.JumpToMarkerButton.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.JumpTo;
|
||||
this.JumpToMarkerButton.Location = new System.Drawing.Point(6, 174);
|
||||
this.JumpToMarkerButton.Location = new System.Drawing.Point(61, 174);
|
||||
this.JumpToMarkerButton.Name = "JumpToMarkerButton";
|
||||
this.JumpToMarkerButton.Size = new System.Drawing.Size(23, 23);
|
||||
this.JumpToMarkerButton.TabIndex = 8;
|
||||
|
@ -122,7 +123,7 @@
|
|||
this.EditMarkerButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.EditMarkerButton.Enabled = false;
|
||||
this.EditMarkerButton.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.pencil;
|
||||
this.EditMarkerButton.Location = new System.Drawing.Point(64, 174);
|
||||
this.EditMarkerButton.Location = new System.Drawing.Point(119, 174);
|
||||
this.EditMarkerButton.Name = "EditMarkerButton";
|
||||
this.EditMarkerButton.Size = new System.Drawing.Size(23, 23);
|
||||
this.EditMarkerButton.TabIndex = 9;
|
||||
|
@ -134,11 +135,11 @@
|
|||
//
|
||||
this.AddMarkerButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.AddMarkerButton.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.add;
|
||||
this.AddMarkerButton.Location = new System.Drawing.Point(93, 174);
|
||||
this.AddMarkerButton.Location = new System.Drawing.Point(3, 174);
|
||||
this.AddMarkerButton.Name = "AddMarkerButton";
|
||||
this.AddMarkerButton.Size = new System.Drawing.Size(23, 23);
|
||||
this.AddMarkerButton.TabIndex = 6;
|
||||
this.toolTip1.SetToolTip(this.AddMarkerButton, "Add Marker");
|
||||
this.toolTip1.SetToolTip(this.AddMarkerButton, "Add Marker to Emulated Frame");
|
||||
this.AddMarkerButton.UseVisualStyleBackColor = true;
|
||||
this.AddMarkerButton.Click += new System.EventHandler(this.AddMarkerToolStripMenuItem_Click);
|
||||
//
|
||||
|
@ -147,7 +148,7 @@
|
|||
this.RemoveMarkerButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.RemoveMarkerButton.Enabled = false;
|
||||
this.RemoveMarkerButton.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.Delete;
|
||||
this.RemoveMarkerButton.Location = new System.Drawing.Point(122, 174);
|
||||
this.RemoveMarkerButton.Location = new System.Drawing.Point(148, 174);
|
||||
this.RemoveMarkerButton.Name = "RemoveMarkerButton";
|
||||
this.RemoveMarkerButton.Size = new System.Drawing.Size(23, 23);
|
||||
this.RemoveMarkerButton.TabIndex = 7;
|
||||
|
@ -160,7 +161,7 @@
|
|||
this.ScrollToMarkerButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.ScrollToMarkerButton.Enabled = false;
|
||||
this.ScrollToMarkerButton.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.ScrollTo;
|
||||
this.ScrollToMarkerButton.Location = new System.Drawing.Point(35, 174);
|
||||
this.ScrollToMarkerButton.Location = new System.Drawing.Point(90, 174);
|
||||
this.ScrollToMarkerButton.Name = "ScrollToMarkerButton";
|
||||
this.ScrollToMarkerButton.Size = new System.Drawing.Size(23, 23);
|
||||
this.ScrollToMarkerButton.TabIndex = 10;
|
||||
|
@ -168,6 +169,18 @@
|
|||
this.ScrollToMarkerButton.UseVisualStyleBackColor = true;
|
||||
this.ScrollToMarkerButton.Click += new System.EventHandler(this.ScrollToMarkerToolStripMenuItem_Click);
|
||||
//
|
||||
// AddMarkerWithTextButton
|
||||
//
|
||||
this.AddMarkerWithTextButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.AddMarkerWithTextButton.Image = global::BizHawk.Client.EmuHawk.Properties.Resources.AddEdit;
|
||||
this.AddMarkerWithTextButton.Location = new System.Drawing.Point(32, 174);
|
||||
this.AddMarkerWithTextButton.Name = "AddMarkerWithTextButton";
|
||||
this.AddMarkerWithTextButton.Size = new System.Drawing.Size(23, 23);
|
||||
this.AddMarkerWithTextButton.TabIndex = 11;
|
||||
this.toolTip1.SetToolTip(this.AddMarkerWithTextButton, "Add Marker with Text to Emulated Frame");
|
||||
this.AddMarkerWithTextButton.UseVisualStyleBackColor = true;
|
||||
this.AddMarkerWithTextButton.Click += new System.EventHandler(this.AddMarkerWithTextToolStripMenuItem_Click);
|
||||
//
|
||||
// MarkerView
|
||||
//
|
||||
this.MarkerView.AllowColumnReorder = false;
|
||||
|
@ -202,10 +215,11 @@
|
|||
// MarkerControl
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
|
||||
this.Controls.Add(this.AddMarkerWithTextButton);
|
||||
this.Controls.Add(this.MarkerView);
|
||||
this.Controls.Add(this.EditMarkerButton);
|
||||
this.Controls.Add(this.JumpToMarkerButton);
|
||||
this.Controls.Add(this.ScrollToMarkerButton);
|
||||
this.Controls.Add(this.EditMarkerButton);
|
||||
this.Controls.Add(this.RemoveMarkerButton);
|
||||
this.Controls.Add(this.AddMarkerButton);
|
||||
this.Name = "MarkerControl";
|
||||
|
@ -232,6 +246,7 @@
|
|||
private System.Windows.Forms.ToolStripMenuItem RemoveMarkerToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem JumpToMarkerToolStripMenuItem;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.Button AddMarkerWithTextButton;
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -137,7 +137,13 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
private void AddMarkerToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
AddMarkerPopUp();
|
||||
AddMarker();
|
||||
MarkerView_SelectedIndexChanged(null, null);
|
||||
}
|
||||
|
||||
private void AddMarkerWithTextToolStripMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
AddMarker(editText: true);
|
||||
MarkerView_SelectedIndexChanged(null, null);
|
||||
}
|
||||
|
||||
|
@ -152,31 +158,38 @@ namespace BizHawk.Client.EmuHawk
|
|||
}
|
||||
}
|
||||
|
||||
public void AddMarkerPopUp(int? frame = null)
|
||||
public void AddMarker(bool editText = false, int? frame = null)
|
||||
{
|
||||
// feos: we specify the selected frame if we call it from TasView, otherwise it should be added to the emulated frame
|
||||
// feos: we specify the selected frame if we call this from TasView, otherwise marker should be added to the emulated frame
|
||||
var markerFrame = frame ?? Global.Emulator.Frame;
|
||||
InputPrompt i = new InputPrompt
|
||||
{
|
||||
Text = "Marker for frame " + markerFrame,
|
||||
TextInputType = InputPrompt.InputType.Text,
|
||||
Message = "Enter a message",
|
||||
InitialValue =
|
||||
Markers.IsMarker(markerFrame) ?
|
||||
Markers.PreviousOrCurrent(markerFrame).Message :
|
||||
""
|
||||
};
|
||||
|
||||
var result = i.ShowHawkDialog();
|
||||
|
||||
if (result == DialogResult.OK)
|
||||
if (editText)
|
||||
{
|
||||
Markers.Add(new TasMovieMarker(markerFrame, i.PromptText));
|
||||
InputPrompt i = new InputPrompt
|
||||
{
|
||||
Text = "Marker for frame " + markerFrame,
|
||||
TextInputType = InputPrompt.InputType.Text,
|
||||
Message = "Enter a message",
|
||||
InitialValue =
|
||||
Markers.IsMarker(markerFrame) ?
|
||||
Markers.PreviousOrCurrent(markerFrame).Message :
|
||||
""
|
||||
};
|
||||
var result = i.ShowHawkDialog();
|
||||
if (result == DialogResult.OK)
|
||||
{
|
||||
Markers.Add(new TasMovieMarker(markerFrame, i.PromptText));
|
||||
UpdateValues();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Markers.Add(new TasMovieMarker(markerFrame, ""));
|
||||
UpdateValues();
|
||||
}
|
||||
}
|
||||
|
||||
public void EditMarkerPopUp(TasMovieMarker marker)
|
||||
public bool EditMarkerPopUp(TasMovieMarker marker)
|
||||
{
|
||||
var markerFrame = marker.Frame;
|
||||
InputPrompt i = new InputPrompt
|
||||
|
@ -196,7 +209,9 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
marker.Message = i.PromptText;
|
||||
UpdateValues();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void UpdateValues()
|
||||
|
@ -264,10 +279,5 @@ namespace BizHawk.Client.EmuHawk
|
|||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
private void JumpToMarkerToolStripMenuItem_Click(object sender, MouseEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -123,7 +123,4 @@
|
|||
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>168, 17</value>
|
||||
</metadata>
|
||||
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>168, 17</value>
|
||||
</metadata>
|
||||
</root>
|
|
@ -153,6 +153,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
this.MarkerControl = new BizHawk.Client.EmuHawk.MarkerControl();
|
||||
this.RightClickMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||
this.SetMarkersContextMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.SetMarkerWithTextContextMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.RemoveMarkersContextMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.toolStripSeparator15 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.DeselectContextMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
|
@ -1215,6 +1216,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
//
|
||||
this.RightClickMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.SetMarkersContextMenuItem,
|
||||
this.SetMarkerWithTextContextMenuItem,
|
||||
this.RemoveMarkersContextMenuItem,
|
||||
this.toolStripSeparator15,
|
||||
this.DeselectContextMenuItem,
|
||||
|
@ -1240,32 +1242,39 @@ namespace BizHawk.Client.EmuHawk
|
|||
this.StartNewProjectFromNowMenuItem,
|
||||
this.StartANewProjectFromSaveRamMenuItem});
|
||||
this.RightClickMenu.Name = "RightClickMenu";
|
||||
this.RightClickMenu.Size = new System.Drawing.Size(273, 458);
|
||||
this.RightClickMenu.Size = new System.Drawing.Size(270, 502);
|
||||
this.RightClickMenu.Opened += new System.EventHandler(this.RightClickMenu_Opened);
|
||||
//
|
||||
// SetMarkersContextMenuItem
|
||||
//
|
||||
this.SetMarkersContextMenuItem.Name = "SetMarkersContextMenuItem";
|
||||
this.SetMarkersContextMenuItem.Size = new System.Drawing.Size(272, 22);
|
||||
this.SetMarkersContextMenuItem.Size = new System.Drawing.Size(269, 22);
|
||||
this.SetMarkersContextMenuItem.Text = "Set Markers";
|
||||
this.SetMarkersContextMenuItem.Click += new System.EventHandler(this.SetMarkersMenuItem_Click);
|
||||
//
|
||||
// SetMarkerWithTextContextMenuItem
|
||||
//
|
||||
this.SetMarkerWithTextContextMenuItem.Name = "SetMarkerWithTextContextMenuItem";
|
||||
this.SetMarkerWithTextContextMenuItem.Size = new System.Drawing.Size(269, 22);
|
||||
this.SetMarkerWithTextContextMenuItem.Text = "Set Marker with Text";
|
||||
this.SetMarkerWithTextContextMenuItem.Click += new System.EventHandler(this.SetMarkerWithTextMenuItem_Click);
|
||||
//
|
||||
// RemoveMarkersContextMenuItem
|
||||
//
|
||||
this.RemoveMarkersContextMenuItem.Name = "RemoveMarkersContextMenuItem";
|
||||
this.RemoveMarkersContextMenuItem.Size = new System.Drawing.Size(272, 22);
|
||||
this.RemoveMarkersContextMenuItem.Size = new System.Drawing.Size(269, 22);
|
||||
this.RemoveMarkersContextMenuItem.Text = "Remove Markers";
|
||||
this.RemoveMarkersContextMenuItem.Click += new System.EventHandler(this.RemoveMarkersMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator15
|
||||
//
|
||||
this.toolStripSeparator15.Name = "toolStripSeparator15";
|
||||
this.toolStripSeparator15.Size = new System.Drawing.Size(269, 6);
|
||||
this.toolStripSeparator15.Size = new System.Drawing.Size(266, 6);
|
||||
//
|
||||
// DeselectContextMenuItem
|
||||
//
|
||||
this.DeselectContextMenuItem.Name = "DeselectContextMenuItem";
|
||||
this.DeselectContextMenuItem.Size = new System.Drawing.Size(272, 22);
|
||||
this.DeselectContextMenuItem.Size = new System.Drawing.Size(269, 22);
|
||||
this.DeselectContextMenuItem.Text = "Deselect";
|
||||
this.DeselectContextMenuItem.Click += new System.EventHandler(this.DeselectMenuItem_Click);
|
||||
//
|
||||
|
@ -1274,39 +1283,39 @@ namespace BizHawk.Client.EmuHawk
|
|||
this.SelectBetweenMarkersContextMenuItem.Name = "SelectBetweenMarkersContextMenuItem";
|
||||
this.SelectBetweenMarkersContextMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
|
||||
| System.Windows.Forms.Keys.A)));
|
||||
this.SelectBetweenMarkersContextMenuItem.Size = new System.Drawing.Size(272, 22);
|
||||
this.SelectBetweenMarkersContextMenuItem.Size = new System.Drawing.Size(269, 22);
|
||||
this.SelectBetweenMarkersContextMenuItem.Text = "Select between Markers";
|
||||
this.SelectBetweenMarkersContextMenuItem.Click += new System.EventHandler(this.SelectBetweenMarkersMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator16
|
||||
//
|
||||
this.toolStripSeparator16.Name = "toolStripSeparator16";
|
||||
this.toolStripSeparator16.Size = new System.Drawing.Size(269, 6);
|
||||
this.toolStripSeparator16.Size = new System.Drawing.Size(266, 6);
|
||||
//
|
||||
// UngreenzoneContextMenuItem
|
||||
//
|
||||
this.UngreenzoneContextMenuItem.Name = "UngreenzoneContextMenuItem";
|
||||
this.UngreenzoneContextMenuItem.Size = new System.Drawing.Size(272, 22);
|
||||
this.UngreenzoneContextMenuItem.Size = new System.Drawing.Size(269, 22);
|
||||
this.UngreenzoneContextMenuItem.Text = "Clear Greenzone";
|
||||
this.UngreenzoneContextMenuItem.Click += new System.EventHandler(this.ClearGreenzoneMenuItem_Click);
|
||||
//
|
||||
// CancelSeekContextMenuItem
|
||||
//
|
||||
this.CancelSeekContextMenuItem.Name = "CancelSeekContextMenuItem";
|
||||
this.CancelSeekContextMenuItem.Size = new System.Drawing.Size(272, 22);
|
||||
this.CancelSeekContextMenuItem.Size = new System.Drawing.Size(269, 22);
|
||||
this.CancelSeekContextMenuItem.Text = "Cancel Seek";
|
||||
this.CancelSeekContextMenuItem.Click += new System.EventHandler(this.CancelSeekContextMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator17
|
||||
//
|
||||
this.toolStripSeparator17.Name = "toolStripSeparator17";
|
||||
this.toolStripSeparator17.Size = new System.Drawing.Size(269, 6);
|
||||
this.toolStripSeparator17.Size = new System.Drawing.Size(266, 6);
|
||||
//
|
||||
// copyToolStripMenuItem
|
||||
//
|
||||
this.copyToolStripMenuItem.Name = "copyToolStripMenuItem";
|
||||
this.copyToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+C";
|
||||
this.copyToolStripMenuItem.Size = new System.Drawing.Size(272, 22);
|
||||
this.copyToolStripMenuItem.Size = new System.Drawing.Size(269, 22);
|
||||
this.copyToolStripMenuItem.Text = "Copy";
|
||||
this.copyToolStripMenuItem.Click += new System.EventHandler(this.CopyMenuItem_Click);
|
||||
//
|
||||
|
@ -1314,7 +1323,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
//
|
||||
this.pasteToolStripMenuItem.Name = "pasteToolStripMenuItem";
|
||||
this.pasteToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+V";
|
||||
this.pasteToolStripMenuItem.Size = new System.Drawing.Size(272, 22);
|
||||
this.pasteToolStripMenuItem.Size = new System.Drawing.Size(269, 22);
|
||||
this.pasteToolStripMenuItem.Text = "Paste";
|
||||
this.pasteToolStripMenuItem.Click += new System.EventHandler(this.PasteMenuItem_Click);
|
||||
//
|
||||
|
@ -1322,7 +1331,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
//
|
||||
this.pasteInsertToolStripMenuItem.Name = "pasteInsertToolStripMenuItem";
|
||||
this.pasteInsertToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+Shift+V";
|
||||
this.pasteInsertToolStripMenuItem.Size = new System.Drawing.Size(272, 22);
|
||||
this.pasteInsertToolStripMenuItem.Size = new System.Drawing.Size(269, 22);
|
||||
this.pasteInsertToolStripMenuItem.Text = "Paste Insert";
|
||||
this.pasteInsertToolStripMenuItem.Click += new System.EventHandler(this.PasteInsertMenuItem_Click);
|
||||
//
|
||||
|
@ -1330,20 +1339,20 @@ namespace BizHawk.Client.EmuHawk
|
|||
//
|
||||
this.cutToolStripMenuItem.Name = "cutToolStripMenuItem";
|
||||
this.cutToolStripMenuItem.ShortcutKeyDisplayString = "Ctrl+X";
|
||||
this.cutToolStripMenuItem.Size = new System.Drawing.Size(272, 22);
|
||||
this.cutToolStripMenuItem.Size = new System.Drawing.Size(269, 22);
|
||||
this.cutToolStripMenuItem.Text = "Cut";
|
||||
this.cutToolStripMenuItem.Click += new System.EventHandler(this.CutMenuItem_Click);
|
||||
//
|
||||
// separateToolStripMenuItem
|
||||
//
|
||||
this.separateToolStripMenuItem.Name = "separateToolStripMenuItem";
|
||||
this.separateToolStripMenuItem.Size = new System.Drawing.Size(269, 6);
|
||||
this.separateToolStripMenuItem.Size = new System.Drawing.Size(266, 6);
|
||||
//
|
||||
// ClearContextMenuItem
|
||||
//
|
||||
this.ClearContextMenuItem.Name = "ClearContextMenuItem";
|
||||
this.ClearContextMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Delete)));
|
||||
this.ClearContextMenuItem.Size = new System.Drawing.Size(272, 22);
|
||||
this.ClearContextMenuItem.Size = new System.Drawing.Size(269, 22);
|
||||
this.ClearContextMenuItem.Text = "Clear";
|
||||
this.ClearContextMenuItem.Click += new System.EventHandler(this.ClearMenuItem_Click);
|
||||
//
|
||||
|
@ -1351,7 +1360,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
//
|
||||
this.DeleteFramesContextMenuItem.Name = "DeleteFramesContextMenuItem";
|
||||
this.DeleteFramesContextMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Delete;
|
||||
this.DeleteFramesContextMenuItem.Size = new System.Drawing.Size(272, 22);
|
||||
this.DeleteFramesContextMenuItem.Size = new System.Drawing.Size(269, 22);
|
||||
this.DeleteFramesContextMenuItem.Text = "Delete";
|
||||
this.DeleteFramesContextMenuItem.Click += new System.EventHandler(this.DeleteFramesMenuItem_Click);
|
||||
//
|
||||
|
@ -1359,7 +1368,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
//
|
||||
this.CloneContextMenuItem.Name = "CloneContextMenuItem";
|
||||
this.CloneContextMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Insert)));
|
||||
this.CloneContextMenuItem.Size = new System.Drawing.Size(272, 22);
|
||||
this.CloneContextMenuItem.Size = new System.Drawing.Size(269, 22);
|
||||
this.CloneContextMenuItem.Text = "Clone";
|
||||
this.CloneContextMenuItem.Click += new System.EventHandler(this.CloneMenuItem_Click);
|
||||
//
|
||||
|
@ -1368,7 +1377,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
this.InsertFrameContextMenuItem.Name = "InsertFrameContextMenuItem";
|
||||
this.InsertFrameContextMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
|
||||
| System.Windows.Forms.Keys.Insert)));
|
||||
this.InsertFrameContextMenuItem.Size = new System.Drawing.Size(272, 22);
|
||||
this.InsertFrameContextMenuItem.Size = new System.Drawing.Size(269, 22);
|
||||
this.InsertFrameContextMenuItem.Text = "Insert";
|
||||
this.InsertFrameContextMenuItem.Click += new System.EventHandler(this.InsertFrameMenuItem_Click);
|
||||
//
|
||||
|
@ -1376,45 +1385,45 @@ namespace BizHawk.Client.EmuHawk
|
|||
//
|
||||
this.InsertNumFramesContextMenuItem.Name = "InsertNumFramesContextMenuItem";
|
||||
this.InsertNumFramesContextMenuItem.ShortcutKeys = System.Windows.Forms.Keys.Insert;
|
||||
this.InsertNumFramesContextMenuItem.Size = new System.Drawing.Size(272, 22);
|
||||
this.InsertNumFramesContextMenuItem.Size = new System.Drawing.Size(269, 22);
|
||||
this.InsertNumFramesContextMenuItem.Text = "Insert # of Frames";
|
||||
this.InsertNumFramesContextMenuItem.Click += new System.EventHandler(this.InsertNumFramesMenuItem_Click);
|
||||
//
|
||||
// toolStripSeparator18
|
||||
//
|
||||
this.toolStripSeparator18.Name = "toolStripSeparator18";
|
||||
this.toolStripSeparator18.Size = new System.Drawing.Size(269, 6);
|
||||
this.toolStripSeparator18.Size = new System.Drawing.Size(266, 6);
|
||||
//
|
||||
// TruncateContextMenuItem
|
||||
//
|
||||
this.TruncateContextMenuItem.Name = "TruncateContextMenuItem";
|
||||
this.TruncateContextMenuItem.Size = new System.Drawing.Size(272, 22);
|
||||
this.TruncateContextMenuItem.Size = new System.Drawing.Size(269, 22);
|
||||
this.TruncateContextMenuItem.Text = "Truncate Movie";
|
||||
this.TruncateContextMenuItem.Click += new System.EventHandler(this.TruncateMenuItem_Click);
|
||||
//
|
||||
// BranchContextMenuItem
|
||||
//
|
||||
this.BranchContextMenuItem.Name = "BranchContextMenuItem";
|
||||
this.BranchContextMenuItem.Size = new System.Drawing.Size(272, 22);
|
||||
this.BranchContextMenuItem.Size = new System.Drawing.Size(269, 22);
|
||||
this.BranchContextMenuItem.Text = "&Branch";
|
||||
this.BranchContextMenuItem.Click += new System.EventHandler(this.BranchContextMenuItem_Click);
|
||||
//
|
||||
// StartFromNowSeparator
|
||||
//
|
||||
this.StartFromNowSeparator.Name = "StartFromNowSeparator";
|
||||
this.StartFromNowSeparator.Size = new System.Drawing.Size(269, 6);
|
||||
this.StartFromNowSeparator.Size = new System.Drawing.Size(266, 6);
|
||||
//
|
||||
// StartNewProjectFromNowMenuItem
|
||||
//
|
||||
this.StartNewProjectFromNowMenuItem.Name = "StartNewProjectFromNowMenuItem";
|
||||
this.StartNewProjectFromNowMenuItem.Size = new System.Drawing.Size(272, 22);
|
||||
this.StartNewProjectFromNowMenuItem.Size = new System.Drawing.Size(269, 22);
|
||||
this.StartNewProjectFromNowMenuItem.Text = "Start a new project from Now";
|
||||
this.StartNewProjectFromNowMenuItem.Click += new System.EventHandler(this.StartNewProjectFromNowMenuItem_Click);
|
||||
//
|
||||
// StartANewProjectFromSaveRamMenuItem
|
||||
//
|
||||
this.StartANewProjectFromSaveRamMenuItem.Name = "StartANewProjectFromSaveRamMenuItem";
|
||||
this.StartANewProjectFromSaveRamMenuItem.Size = new System.Drawing.Size(272, 22);
|
||||
this.StartANewProjectFromSaveRamMenuItem.Size = new System.Drawing.Size(269, 22);
|
||||
this.StartANewProjectFromSaveRamMenuItem.Text = "Start a new project from SaveRam";
|
||||
this.StartANewProjectFromSaveRamMenuItem.Click += new System.EventHandler(this.StartANewProjectFromSaveRamMenuItem_Click);
|
||||
//
|
||||
|
@ -1436,6 +1445,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
this.BookMarkControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.BookMarkControl.HoverInterval = 1;
|
||||
this.BookMarkControl.Location = new System.Drawing.Point(-2, 5);
|
||||
this.BookMarkControl.Name = "BookMarkControl";
|
||||
this.BookMarkControl.Size = new System.Drawing.Size(204, 163);
|
||||
|
@ -1677,5 +1687,6 @@ namespace BizHawk.Client.EmuHawk
|
|||
private System.Windows.Forms.ToolStripMenuItem NewFromNowMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem NewFromCurrentSaveRamMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem SetBranchCellHoverIntervalMenuItem;
|
||||
private System.Windows.Forms.ToolStripMenuItem SetMarkerWithTextContextMenuItem;
|
||||
}
|
||||
}
|
|
@ -628,7 +628,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
else
|
||||
{
|
||||
ClearLeftMouseStates();
|
||||
MarkerControl.AddMarkerPopUp(TasView.CurrentCell.RowIndex.Value);
|
||||
MarkerControl.AddMarker(false, TasView.CurrentCell.RowIndex.Value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -583,12 +583,23 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
private void SetMarkersMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (TasView.SelectedRows.Count() > 50)
|
||||
{
|
||||
var result = MessageBox.Show("Are you sure you want to add more than 50 markers?", "Add markers", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
|
||||
if (result != DialogResult.OK)
|
||||
return;
|
||||
}
|
||||
foreach (var index in TasView.SelectedRows)
|
||||
{
|
||||
MarkerControl.AddMarkerPopUp(index);
|
||||
MarkerControl.AddMarker(false, index);
|
||||
}
|
||||
}
|
||||
|
||||
private void SetMarkerWithTextMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
MarkerControl.AddMarker(true, TasView.SelectedRows.FirstOrDefault());
|
||||
}
|
||||
|
||||
private void RemoveMarkersMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
IEnumerable<TasMovieMarker> markers = CurrentTasMovie.Markers.Where(m => TasView.SelectedRows.Contains(m.Frame));
|
||||
|
|
|
@ -172,10 +172,10 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
var nextColor = Color.White;
|
||||
|
||||
var isCheat = Global.CheatList.IsActive(_settings.Domain, _searches[index].Address ?? 0);
|
||||
var isWeeded = Settings.PreviewMode && !_forcePreviewClear && _searches.Preview(_searches[index].Address ?? 0);
|
||||
var isCheat = Global.CheatList.IsActive(_settings.Domain, _searches[index].Address);
|
||||
var isWeeded = Settings.PreviewMode && !_forcePreviewClear && _searches.Preview(_searches[index].Address);
|
||||
|
||||
if (_searches[index].Address.Value >= _searches[index].Domain.Size)
|
||||
if (_searches[index].Address >= _searches[index].Domain.Size)
|
||||
{
|
||||
nextColor = Color.PeachPuff;
|
||||
}
|
||||
|
@ -852,7 +852,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
watches.Load(file.FullName, append);
|
||||
|
||||
var watchList = watches.Where(x => !x.IsSeparator);
|
||||
var addresses = watchList.Select(x => x.Address ?? 0).ToList();
|
||||
var addresses = watchList.Select(x => x.Address).ToList();
|
||||
|
||||
if (truncate)
|
||||
{
|
||||
|
@ -1319,7 +1319,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
private void FreezeAddressMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
var allCheats = SelectedWatches.All(x => Global.CheatList.IsActive(x.Domain, x.Address ?? 0));
|
||||
var allCheats = SelectedWatches.All(x => Global.CheatList.IsActive(x.Domain, x.Address));
|
||||
if (allCheats)
|
||||
{
|
||||
SelectedWatches.UnfreezeAll();
|
||||
|
@ -1463,7 +1463,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
var allCheats = true;
|
||||
foreach (var index in SelectedIndices)
|
||||
{
|
||||
if (!Global.CheatList.IsActive(_settings.Domain, _searches[index].Address ?? 0))
|
||||
if (!Global.CheatList.IsActive(_settings.Domain, _searches[index].Address))
|
||||
{
|
||||
allCheats = false;
|
||||
}
|
||||
|
@ -1490,7 +1490,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
if (SelectedWatches.Any())
|
||||
{
|
||||
ToolHelpers.ViewInHexEditor(_searches.Domain, SelectedWatches.Select(x => x.Address ?? 0), SelectedSize);
|
||||
ToolHelpers.ViewInHexEditor(_searches.Domain, SelectedWatches.Select(x => x.Address), SelectedSize);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -219,7 +219,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
if (_watches != null && !string.IsNullOrWhiteSpace(_watches.CurrentFileName))
|
||||
{
|
||||
_watches.RefreshDomans(_memoryDomains, _memoryDomains.MainMemory);
|
||||
_watches.RefreshDomains(_memoryDomains, _memoryDomains.MainMemory);
|
||||
_watches.Reload();
|
||||
SetPlatformAndMemoryDomainLabel();
|
||||
UpdateStatusBar();
|
||||
|
@ -251,7 +251,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
for (var i = 0; i < _watches.Count; i++)
|
||||
{
|
||||
var frozen = !_watches[i].IsSeparator && Global.CheatList.IsActive(_watches[i].Domain, _watches[i].Address ?? 0);
|
||||
var frozen = !_watches[i].IsSeparator && Global.CheatList.IsActive(_watches[i].Domain, _watches[i].Address);
|
||||
GlobalWin.OSD.AddGUIText(
|
||||
_watches[i].ToString(),
|
||||
Global.Config.DispRamWatchx,
|
||||
|
@ -286,7 +286,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
return true;
|
||||
}
|
||||
|
||||
if (Global.CheatList.IsActive(_watches.Domain, watch.Address ?? 0))
|
||||
if (Global.CheatList.IsActive(_watches.Domain, watch.Address))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -321,7 +321,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
for (var i = 0; i < _watches.Count; i++)
|
||||
{
|
||||
var frozen = !_watches[i].IsSeparator && Global.CheatList.IsActive(_watches[i].Domain, _watches[i].Address ?? 0);
|
||||
var frozen = !_watches[i].IsSeparator && Global.CheatList.IsActive(_watches[i].Domain, _watches[i].Address);
|
||||
GlobalWin.OSD.AddGUIText(
|
||||
_watches[i].ToString(),
|
||||
Global.Config.DispRamWatchx,
|
||||
|
@ -585,7 +585,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
}
|
||||
}
|
||||
|
||||
ErrorIconButton.Visible = _watches.Where(watch => !watch.IsSeparator).Any(watch => (watch.Address ?? 0) >= watch.Domain.Size);
|
||||
ErrorIconButton.Visible = _watches.Where(watch => !watch.IsSeparator).Any(watch => (watch.Address) >= watch.Domain.Size);
|
||||
|
||||
MessageLabel.Text = message;
|
||||
}
|
||||
|
@ -608,11 +608,11 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
color = BackColor;
|
||||
}
|
||||
else if (_watches[index].Address.Value >= _watches[index].Domain.Size)
|
||||
else if (_watches[index].Address >= _watches[index].Domain.Size)
|
||||
{
|
||||
color = Color.PeachPuff;
|
||||
}
|
||||
else if (Global.CheatList.IsActive(_watches.Domain, _watches[index].Address ?? 0))
|
||||
else if (Global.CheatList.IsActive(_watches.Domain, _watches[index].Address))
|
||||
{
|
||||
color = Color.LightCyan;
|
||||
}
|
||||
|
@ -813,7 +813,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
private void FreezeAddressMenuItem_Click(object sender, EventArgs e)
|
||||
{
|
||||
var allCheats = SelectedWatches.All(x => Global.CheatList.IsActive(x.Domain, x.Address ?? 0));
|
||||
var allCheats = SelectedWatches.All(x => Global.CheatList.IsActive(x.Domain, x.Address));
|
||||
if (allCheats)
|
||||
{
|
||||
SelectedWatches.UnfreezeAll();
|
||||
|
@ -1074,7 +1074,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
SelectedIndices.Any() &&
|
||||
SelectedWatches.All(w => w.Domain.CanPoke());
|
||||
|
||||
var allCheats = _watches.All(x => Global.CheatList.IsActive(x.Domain, x.Address ?? 0));
|
||||
var allCheats = _watches.All(x => Global.CheatList.IsActive(x.Domain, x.Address));
|
||||
|
||||
if (allCheats)
|
||||
{
|
||||
|
@ -1108,11 +1108,11 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
if (selected.Select(x => x.Domain).Distinct().Count() > 1)
|
||||
{
|
||||
ToolHelpers.ViewInHexEditor(selected[0].Domain, new List<long> { selected.First().Address ?? 0 }, selected.First().Size);
|
||||
ToolHelpers.ViewInHexEditor(selected[0].Domain, new List<long> { selected.First().Address }, selected.First().Size);
|
||||
}
|
||||
else
|
||||
{
|
||||
ToolHelpers.ViewInHexEditor(selected.First().Domain, selected.Select(x => x.Address ?? 0), selected.First().Size);
|
||||
ToolHelpers.ViewInHexEditor(selected.First().Domain, selected.Select(x => x.Address ), selected.First().Size);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1127,7 +1127,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
foreach (var watch in selected)
|
||||
{
|
||||
debugger.AddBreakpoint((uint)watch.Address.Value, MemoryCallbackType.Read);
|
||||
debugger.AddBreakpoint((uint)watch.Address, MemoryCallbackType.Read);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1142,7 +1142,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
foreach (var watch in selected)
|
||||
{
|
||||
debugger.AddBreakpoint((uint)watch.Address.Value, MemoryCallbackType.Write);
|
||||
debugger.AddBreakpoint((uint)watch.Address, MemoryCallbackType.Write);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1194,7 +1194,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
private void ErrorIconButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
var items = _watches
|
||||
.Where(watch => (watch.Address ?? 0) >= watch.Domain.Size)
|
||||
.Where(watch => (watch.Address) >= watch.Domain.Size)
|
||||
.ToList();
|
||||
|
||||
foreach (var item in items)
|
||||
|
|
|
@ -96,7 +96,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
else
|
||||
{
|
||||
NotesBox.Text = _watchList[0].Notes;
|
||||
AddressBox.SetFromLong(_watchList[0].Address ?? 0);
|
||||
AddressBox.SetFromLong(_watchList[0].Address);
|
||||
}
|
||||
|
||||
SetBigEndianCheckBox();
|
||||
|
@ -267,7 +267,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
_watchList.Add(Watch.GenerateWatch(
|
||||
watch.Domain,
|
||||
watch.Address ?? 0,
|
||||
watch.Address,
|
||||
watch.Size,
|
||||
watch.Type,
|
||||
watch.BigEndian,
|
||||
|
@ -308,7 +308,7 @@ namespace BizHawk.Client.EmuHawk
|
|||
|
||||
_watchList[i] = Watch.GenerateWatch(
|
||||
_watchList[i].Domain,
|
||||
_watchList.Count == 1 ? AddressBox.ToRawInt() ?? 0 : _watchList[i].Address ?? 0,
|
||||
_watchList.Count == 1 ? AddressBox.ToRawInt() ?? 0 : _watchList[i].Address,
|
||||
size,
|
||||
_watchList[i].Type,
|
||||
_watchList[i].BigEndian,
|
||||
|
|
Loading…
Reference in New Issue