Fix outstanding issues from 011f4bfe03

This commit is contained in:
Morilli 2022-07-07 07:17:49 +02:00
parent 0d3c7b7e0c
commit bdcd37215c
1 changed files with 10 additions and 18 deletions

View File

@ -49,11 +49,8 @@ namespace BizHawk.Client.Common.RamSearchEngine
{ {
_history.Clear(); _history.Clear();
var domain = _settings.Domain; var domain = _settings.Domain;
var listSize = domain.Size; int stepSize = _settings.CheckMisAligned ? 1 : (int)_settings.Size;
if (!_settings.CheckMisAligned) long listSize = domain.Size / stepSize - (int)_settings.Size + stepSize;
{
listSize /= (int)_settings.Size;
}
_watchList = new IMiniWatch[listSize]; _watchList = new IMiniWatch[listSize];
@ -77,29 +74,29 @@ namespace BizHawk.Client.Common.RamSearchEngine
break; break;
case WatchSize.Word: case WatchSize.Word:
for (int i = 0; i < domain.Size - 1; i += _settings.CheckMisAligned ? 1 : 2) for (int i = 0; i < listSize; i++)
{ {
if (_settings.IsDetailed()) if (_settings.IsDetailed())
{ {
_watchList[i] = new MiniWordWatchDetailed(domain, i, _settings.BigEndian); _watchList[i] = new MiniWordWatchDetailed(domain, i * stepSize, _settings.BigEndian);
} }
else else
{ {
_watchList[i] = new MiniWordWatch(domain, i, _settings.BigEndian); _watchList[i] = new MiniWordWatch(domain, i * stepSize, _settings.BigEndian);
} }
} }
break; break;
case WatchSize.DWord: case WatchSize.DWord:
for (int i = 0; i < domain.Size - 3; i += _settings.CheckMisAligned ? 1 : 4) for (int i = 0; i < listSize; i++)
{ {
if (_settings.IsDetailed()) if (_settings.IsDetailed())
{ {
_watchList[i] = new MiniDWordWatchDetailed(domain, i, _settings.BigEndian); _watchList[i] = new MiniDWordWatchDetailed(domain, i * stepSize, _settings.BigEndian);
} }
else else
{ {
_watchList[i] = new MiniDWordWatch(domain, i, _settings.BigEndian); _watchList[i] = new MiniDWordWatch(domain, i * stepSize, _settings.BigEndian);
} }
} }
@ -273,16 +270,11 @@ namespace BizHawk.Client.Common.RamSearchEngine
public void RemoveAddressRange(IEnumerable<long> addresses) public void RemoveAddressRange(IEnumerable<long> addresses)
{ {
_watchList.RemoveAll(w => addresses.Contains(w.Address)); _watchList = _watchList.Where(w => !addresses.Contains(w.Address)).ToArray();
} }
public void AddRange(IEnumerable<long> addresses, bool append) public void AddRange(IEnumerable<long> addresses, bool append)
{ {
if (!append)
{
Array.Clear(_watchList, 0, _watchList.Length);
}
var list = _settings.Size switch var list = _settings.Size switch
{ {
WatchSize.Byte => addresses.ToBytes(_settings), WatchSize.Byte => addresses.ToBytes(_settings),
@ -291,7 +283,7 @@ namespace BizHawk.Client.Common.RamSearchEngine
_ => addresses.ToBytes(_settings) _ => addresses.ToBytes(_settings)
}; };
_watchList.AddRange(list); _watchList = (append ? _watchList.Concat(list) : list).ToArray();
} }
public void Sort(string column, bool reverse) public void Sort(string column, bool reverse)