From eee059607a385e131a96dea433a9c865e5a22dae Mon Sep 17 00:00:00 2001 From: YoshiRulz Date: Fri, 16 Aug 2024 23:43:11 +1000 Subject: [PATCH] (guess) Remove `RamSearchEngine._isSorted` --- .../tools/RamSearchEngine/RamSearchEngine.cs | 11 ++++------- src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs | 2 +- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/BizHawk.Client.Common/tools/RamSearchEngine/RamSearchEngine.cs b/src/BizHawk.Client.Common/tools/RamSearchEngine/RamSearchEngine.cs index 45532855c0..2169959453 100644 --- a/src/BizHawk.Client.Common/tools/RamSearchEngine/RamSearchEngine.cs +++ b/src/BizHawk.Client.Common/tools/RamSearchEngine/RamSearchEngine.cs @@ -23,7 +23,6 @@ namespace BizHawk.Client.Common.RamSearchEngine private IMiniWatch[] _watchList = Array.Empty(); private readonly SearchEngineSettings _settings; private readonly UndoHistory> _history = new UndoHistory>(true, new List()); //TODO use IList instead of IEnumerable and stop calling `.ToArray()` (i.e. cloning) on reads and writes? - private bool _isSorted = true; // Tracks whether or not the array is sorted by address, if it is, binary search can be used for finding watches public RamSearchEngine(SearchEngineSettings settings, IMemoryDomains memoryDomains) { @@ -120,11 +119,11 @@ namespace BizHawk.Client.Common.RamSearchEngine return before - _watchList.Length; } - public bool Preview(long address) + public bool Preview(int index) { - var listOfOne = Enumerable.Repeat(_isSorted - ? _watchList.BinarySearch(w => w.Address, address) - : _watchList.FirstOrDefault(w => w.Address == address), 1); + var addressWatch = _watchList[index]; + addressWatch.Update(PreviousType.Original, _settings.Domain, _settings.BigEndian); + IMiniWatch[] listOfOne = [ addressWatch ]; return _compareTo switch { @@ -249,12 +248,10 @@ namespace BizHawk.Client.Common.RamSearchEngine }; _watchList = (append ? _watchList.Concat(list) : list).ToArray(); - _isSorted = false; //TODO can this be smarter, such as by inserting instead of appending? } public void Sort(string column, bool reverse) { - _isSorted = column == WatchList.Address && !reverse; switch (column) { case WatchList.Address: diff --git a/src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs b/src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs index 1bd1e0d5de..fcf05523e5 100644 --- a/src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs +++ b/src/BizHawk.Client.EmuHawk/tools/Watch/RamSearch.cs @@ -188,7 +188,7 @@ namespace BizHawk.Client.EmuHawk var nextColor = Color.White; var search = _searches[index]; var isCheat = MainForm.CheatList.IsActive(_settings.Domain, search.Address); - var isWeeded = Settings.PreviewMode && !_forcePreviewClear && _searches.Preview(search.Address); + var isWeeded = Settings.PreviewMode && !_forcePreviewClear && _searches.Preview(index); if (!search.IsValid) {