RamSearchEngine - cleanup code slightly by making ToFloat() an extension method, also fix CompareDifrerent by float comparisons that were all incorrect
This commit is contained in:
parent
51dcd3db46
commit
e460394d41
|
@ -0,0 +1,13 @@
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
|
{
|
||||||
|
internal static class Extensions
|
||||||
|
{
|
||||||
|
public static float ToFloat(this long val)
|
||||||
|
{
|
||||||
|
var bytes = BitConverter.GetBytes((int)val);
|
||||||
|
return BitConverter.ToSingle(bytes, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -473,26 +473,26 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
default:
|
default:
|
||||||
case ComparisonOperator.Equal:
|
case ComparisonOperator.Equal:
|
||||||
return _settings.Type == DisplayType.Float
|
return _settings.Type == DisplayType.Float
|
||||||
? watchList.Where(w => ToFloat(GetValue(w.Address)) == ToFloat(w.Previous))
|
? watchList.Where(w => GetValue(w.Address).ToFloat() == w.Previous.ToFloat())
|
||||||
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) == SignExtendAsNeeded(w.Previous));
|
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) == SignExtendAsNeeded(w.Previous));
|
||||||
case ComparisonOperator.NotEqual:
|
case ComparisonOperator.NotEqual:
|
||||||
return watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) != SignExtendAsNeeded(w.Previous));
|
return watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) != SignExtendAsNeeded(w.Previous));
|
||||||
case ComparisonOperator.GreaterThan:
|
case ComparisonOperator.GreaterThan:
|
||||||
return _settings.Type == DisplayType.Float
|
return _settings.Type == DisplayType.Float
|
||||||
? watchList.Where(w => ToFloat(GetValue(w.Address)) > ToFloat(w.Previous))
|
? watchList.Where(w => GetValue(w.Address).ToFloat() > w.Previous.ToFloat())
|
||||||
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) > SignExtendAsNeeded(w.Previous));
|
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) > SignExtendAsNeeded(w.Previous));
|
||||||
case ComparisonOperator.GreaterThanEqual:
|
case ComparisonOperator.GreaterThanEqual:
|
||||||
return _settings.Type == DisplayType.Float
|
return _settings.Type == DisplayType.Float
|
||||||
? watchList.Where(w => ToFloat(GetValue(w.Address)) >= ToFloat(w.Previous))
|
? watchList.Where(w => GetValue(w.Address).ToFloat() >= w.Previous.ToFloat())
|
||||||
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) >= SignExtendAsNeeded(w.Previous));
|
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) >= SignExtendAsNeeded(w.Previous));
|
||||||
|
|
||||||
case ComparisonOperator.LessThan:
|
case ComparisonOperator.LessThan:
|
||||||
return _settings.Type == DisplayType.Float
|
return _settings.Type == DisplayType.Float
|
||||||
? watchList.Where(w => ToFloat(GetValue(w.Address)) < ToFloat(w.Previous))
|
? watchList.Where(w => GetValue(w.Address).ToFloat() < w.Previous.ToFloat())
|
||||||
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) < SignExtendAsNeeded(w.Previous));
|
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) < SignExtendAsNeeded(w.Previous));
|
||||||
case ComparisonOperator.LessThanEqual:
|
case ComparisonOperator.LessThanEqual:
|
||||||
return _settings.Type == DisplayType.Float
|
return _settings.Type == DisplayType.Float
|
||||||
? watchList.Where(w => ToFloat(GetValue(w.Address)) <= ToFloat(w.Previous))
|
? watchList.Where(w => GetValue(w.Address).ToFloat() <= w.Previous.ToFloat())
|
||||||
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) <= SignExtendAsNeeded(w.Previous));
|
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) <= SignExtendAsNeeded(w.Previous));
|
||||||
case ComparisonOperator.DifferentBy:
|
case ComparisonOperator.DifferentBy:
|
||||||
if (DifferentBy.HasValue)
|
if (DifferentBy.HasValue)
|
||||||
|
@ -500,8 +500,8 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
var differentBy = DifferentBy.Value;
|
var differentBy = DifferentBy.Value;
|
||||||
if (_settings.Type == DisplayType.Float)
|
if (_settings.Type == DisplayType.Float)
|
||||||
{
|
{
|
||||||
return watchList.Where(w => ToFloat(GetValue(w.Address)) + differentBy == ToFloat(w.Previous)
|
return watchList.Where(w => GetValue(w.Address).ToFloat() + differentBy == w.Previous.ToFloat()
|
||||||
|| ToFloat(GetValue(w.Address)) - differentBy == ToFloat(w.Previous));
|
|| GetValue(w.Address).ToFloat() - differentBy == w.Previous.ToFloat());
|
||||||
}
|
}
|
||||||
|
|
||||||
return watchList.Where(w =>
|
return watchList.Where(w =>
|
||||||
|
@ -529,28 +529,28 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
default:
|
default:
|
||||||
case ComparisonOperator.Equal:
|
case ComparisonOperator.Equal:
|
||||||
return _settings.Type == DisplayType.Float
|
return _settings.Type == DisplayType.Float
|
||||||
? watchList.Where(w => ToFloat(GetValue(w.Address)) == ToFloat(compareValue))
|
? watchList.Where(w => GetValue(w.Address).ToFloat() == compareValue.ToFloat())
|
||||||
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) == SignExtendAsNeeded(CompareValue.Value));
|
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) == SignExtendAsNeeded(CompareValue.Value));
|
||||||
case ComparisonOperator.NotEqual:
|
case ComparisonOperator.NotEqual:
|
||||||
return _settings.Type == DisplayType.Float
|
return _settings.Type == DisplayType.Float
|
||||||
? watchList.Where(w => ToFloat(GetValue(w.Address)) != ToFloat(compareValue))
|
? watchList.Where(w => GetValue(w.Address).ToFloat() != compareValue.ToFloat())
|
||||||
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) != SignExtendAsNeeded(compareValue));
|
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) != SignExtendAsNeeded(compareValue));
|
||||||
case ComparisonOperator.GreaterThan:
|
case ComparisonOperator.GreaterThan:
|
||||||
return _settings.Type == DisplayType.Float
|
return _settings.Type == DisplayType.Float
|
||||||
? watchList.Where(w => ToFloat(GetValue(w.Address)) > ToFloat(compareValue))
|
? watchList.Where(w => GetValue(w.Address).ToFloat() > compareValue.ToFloat())
|
||||||
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) > SignExtendAsNeeded(compareValue));
|
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) > SignExtendAsNeeded(compareValue));
|
||||||
case ComparisonOperator.GreaterThanEqual:
|
case ComparisonOperator.GreaterThanEqual:
|
||||||
return _settings.Type == DisplayType.Float
|
return _settings.Type == DisplayType.Float
|
||||||
? watchList.Where(w => ToFloat(GetValue(w.Address)) >= ToFloat(compareValue))
|
? watchList.Where(w => GetValue(w.Address).ToFloat() >= compareValue.ToFloat())
|
||||||
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) >= SignExtendAsNeeded(compareValue));
|
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) >= SignExtendAsNeeded(compareValue));
|
||||||
case ComparisonOperator.LessThan:
|
case ComparisonOperator.LessThan:
|
||||||
return _settings.Type == DisplayType.Float
|
return _settings.Type == DisplayType.Float
|
||||||
? watchList.Where(w => ToFloat(GetValue(w.Address)) < ToFloat(compareValue))
|
? watchList.Where(w => GetValue(w.Address).ToFloat() < compareValue.ToFloat())
|
||||||
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) < SignExtendAsNeeded(compareValue));
|
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) < SignExtendAsNeeded(compareValue));
|
||||||
|
|
||||||
case ComparisonOperator.LessThanEqual:
|
case ComparisonOperator.LessThanEqual:
|
||||||
return _settings.Type == DisplayType.Float
|
return _settings.Type == DisplayType.Float
|
||||||
? watchList.Where(w => ToFloat(GetValue(w.Address)) <= ToFloat(compareValue))
|
? watchList.Where(w => GetValue(w.Address).ToFloat() <= compareValue.ToFloat())
|
||||||
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) <= SignExtendAsNeeded(compareValue));
|
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) <= SignExtendAsNeeded(compareValue));
|
||||||
|
|
||||||
case ComparisonOperator.DifferentBy:
|
case ComparisonOperator.DifferentBy:
|
||||||
|
@ -559,8 +559,8 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
var differentBy = DifferentBy.Value;
|
var differentBy = DifferentBy.Value;
|
||||||
if (_settings.Type == DisplayType.Float)
|
if (_settings.Type == DisplayType.Float)
|
||||||
{
|
{
|
||||||
return watchList.Where(w => ToFloat(GetValue(w.Address)) + differentBy == compareValue
|
return watchList.Where(w => GetValue(w.Address).ToFloat() + differentBy == compareValue
|
||||||
|| ToFloat(GetValue(w.Address)) - differentBy == compareValue);
|
|| GetValue(w.Address).ToFloat() - differentBy == compareValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
return watchList.Where(w
|
return watchList.Where(w
|
||||||
|
@ -667,27 +667,27 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
default:
|
default:
|
||||||
case ComparisonOperator.Equal:
|
case ComparisonOperator.Equal:
|
||||||
return _settings.Type == DisplayType.Float
|
return _settings.Type == DisplayType.Float
|
||||||
? watchList.Where(w => ToFloat(GetValue(w.Address)) - ToFloat(w.Previous) == compareValue)
|
? watchList.Where(w => GetValue(w.Address).ToFloat() - w.Previous.ToFloat() == compareValue)
|
||||||
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) - SignExtendAsNeeded(w.Previous) == compareValue);
|
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) - SignExtendAsNeeded(w.Previous) == compareValue);
|
||||||
case ComparisonOperator.NotEqual:
|
case ComparisonOperator.NotEqual:
|
||||||
return _settings.Type == DisplayType.Float
|
return _settings.Type == DisplayType.Float
|
||||||
? watchList.Where(w => ToFloat(GetValue(w.Address)) - w.Previous != compareValue)
|
? watchList.Where(w => GetValue(w.Address).ToFloat() - w.Previous.ToFloat() != compareValue)
|
||||||
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) - SignExtendAsNeeded(w.Previous) != compareValue);
|
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) - SignExtendAsNeeded(w.Previous) != compareValue);
|
||||||
case ComparisonOperator.GreaterThan:
|
case ComparisonOperator.GreaterThan:
|
||||||
return _settings.Type == DisplayType.Float
|
return _settings.Type == DisplayType.Float
|
||||||
? watchList.Where(w => ToFloat(GetValue(w.Address)) - w.Previous > compareValue)
|
? watchList.Where(w => GetValue(w.Address).ToFloat() - w.Previous.ToFloat() > compareValue)
|
||||||
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) - SignExtendAsNeeded(w.Previous) > compareValue);
|
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) - SignExtendAsNeeded(w.Previous) > compareValue);
|
||||||
case ComparisonOperator.GreaterThanEqual:
|
case ComparisonOperator.GreaterThanEqual:
|
||||||
return _settings.Type == DisplayType.Float
|
return _settings.Type == DisplayType.Float
|
||||||
? watchList.Where(w => ToFloat(GetValue(w.Address)) - w.Previous >= compareValue)
|
? watchList.Where(w => GetValue(w.Address).ToFloat() - w.Previous.ToFloat() >= compareValue)
|
||||||
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) - SignExtendAsNeeded(w.Previous) >= compareValue);
|
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) - SignExtendAsNeeded(w.Previous) >= compareValue);
|
||||||
case ComparisonOperator.LessThan:
|
case ComparisonOperator.LessThan:
|
||||||
return _settings.Type == DisplayType.Float
|
return _settings.Type == DisplayType.Float
|
||||||
? watchList.Where(w => ToFloat(GetValue(w.Address)) - w.Previous < compareValue)
|
? watchList.Where(w => GetValue(w.Address).ToFloat() - w.Previous.ToFloat() < compareValue)
|
||||||
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) - SignExtendAsNeeded(w.Previous) < compareValue);
|
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) - SignExtendAsNeeded(w.Previous) < compareValue);
|
||||||
case ComparisonOperator.LessThanEqual:
|
case ComparisonOperator.LessThanEqual:
|
||||||
return _settings.Type == DisplayType.Float
|
return _settings.Type == DisplayType.Float
|
||||||
? watchList.Where(w => ToFloat(GetValue(w.Address)) - w.Previous <= compareValue)
|
? watchList.Where(w => GetValue(w.Address).ToFloat() - w.Previous.ToFloat() <= compareValue)
|
||||||
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) - SignExtendAsNeeded(w.Previous) <= compareValue);
|
: watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) - SignExtendAsNeeded(w.Previous) <= compareValue);
|
||||||
case ComparisonOperator.DifferentBy:
|
case ComparisonOperator.DifferentBy:
|
||||||
if (DifferentBy.HasValue)
|
if (DifferentBy.HasValue)
|
||||||
|
@ -695,8 +695,8 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
var differentBy = DifferentBy.Value;
|
var differentBy = DifferentBy.Value;
|
||||||
if (_settings.Type == DisplayType.Float)
|
if (_settings.Type == DisplayType.Float)
|
||||||
{
|
{
|
||||||
return watchList.Where(w => ToFloat(GetValue(w.Address)) - w.Previous + differentBy == compareValue
|
return watchList.Where(w => GetValue(w.Address).ToFloat() - w.Previous.ToFloat() + differentBy == compareValue
|
||||||
|| ToFloat(GetValue(w.Address)) - w.Previous - differentBy == w.Previous);
|
|| GetValue(w.Address).ToFloat() - w.Previous.ToFloat() - differentBy == w.Previous);
|
||||||
}
|
}
|
||||||
|
|
||||||
return watchList.Where(w
|
return watchList.Where(w
|
||||||
|
@ -715,12 +715,6 @@ namespace BizHawk.Client.Common.RamSearchEngine
|
||||||
|
|
||||||
#region Private parts
|
#region Private parts
|
||||||
|
|
||||||
private static float ToFloat(long val)
|
|
||||||
{
|
|
||||||
var bytes = BitConverter.GetBytes((int)val);
|
|
||||||
return BitConverter.ToSingle(bytes, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
private long SignExtendAsNeeded(long val)
|
private long SignExtendAsNeeded(long val)
|
||||||
{
|
{
|
||||||
if (_settings.Type != DisplayType.Signed)
|
if (_settings.Type != DisplayType.Signed)
|
||||||
|
|
Loading…
Reference in New Issue