From b3cc55080f6c6408403b4b00249dcc6008f5a9a3 Mon Sep 17 00:00:00 2001 From: adelikat <adelikat@tasvideos.org> Date: Sat, 1 Feb 2020 16:41:28 -0600 Subject: [PATCH] Ram Search - use SignExtendAsNeeded in more places, fixes #1819 --- .../tools/RamSearchEngine.cs | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/BizHawk.Client.Common/tools/RamSearchEngine.cs b/BizHawk.Client.Common/tools/RamSearchEngine.cs index 1b72240ab5..742edf25ae 100644 --- a/BizHawk.Client.Common/tools/RamSearchEngine.cs +++ b/BizHawk.Client.Common/tools/RamSearchEngine.cs @@ -497,9 +497,15 @@ namespace BizHawk.Client.Common { default: case ComparisonOperator.Equal: - return watchList.Where(w => GetValue(w.Address) == w.Previous); + if (_settings.Type == DisplayType.Float) + { + return watchList.Where(w => ToFloat(GetValue(w.Address)) == ToFloat(w.Previous)); + } + + return watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) == SignExtendAsNeeded(w.Previous)); + case ComparisonOperator.NotEqual: - return watchList.Where(w => GetValue(w.Address) != w.Previous); + return watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) != SignExtendAsNeeded(w.Previous)); case ComparisonOperator.GreaterThan: if (_settings.Type == DisplayType.Float) @@ -572,14 +578,14 @@ namespace BizHawk.Client.Common return watchList.Where(w => ToFloat(GetValue(w.Address)) == ToFloat(compareValue)); } - return watchList.Where(w => GetValue(w.Address) == CompareValue.Value); + return watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) == SignExtendAsNeeded(CompareValue.Value)); case ComparisonOperator.NotEqual: if (_settings.Type == DisplayType.Float) { return watchList.Where(w => ToFloat(GetValue(w.Address)) != ToFloat(compareValue)); } - return watchList.Where(w => GetValue(w.Address) != compareValue); + return watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) != SignExtendAsNeeded(compareValue)); case ComparisonOperator.GreaterThan: if (_settings.Type == DisplayType.Float) @@ -587,28 +593,28 @@ namespace BizHawk.Client.Common return watchList.Where(w => ToFloat(GetValue(w.Address)) > ToFloat(compareValue)); } - return watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) > compareValue); + return watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) > SignExtendAsNeeded(compareValue)); case ComparisonOperator.GreaterThanEqual: if (_settings.Type == DisplayType.Float) { return watchList.Where(w => ToFloat(GetValue(w.Address)) >= ToFloat(compareValue)); } - return watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) >= compareValue); + return watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) >= SignExtendAsNeeded(compareValue)); case ComparisonOperator.LessThan: if (_settings.Type == DisplayType.Float) { return watchList.Where(w => ToFloat(GetValue(w.Address)) < ToFloat(compareValue)); } - return watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) < compareValue); + return watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) < SignExtendAsNeeded(compareValue)); case ComparisonOperator.LessThanEqual: if (_settings.Type == DisplayType.Float) { return watchList.Where(w => ToFloat(GetValue(w.Address)) <= ToFloat(compareValue)); } - return watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) <= compareValue); + return watchList.Where(w => SignExtendAsNeeded(GetValue(w.Address)) <= SignExtendAsNeeded(compareValue)); case ComparisonOperator.DifferentBy: if (DifferentBy.HasValue) {