speedup HashRegion/ReadByteRange/WriteByteRange for waterbox cores (doesn't do anything for non-wbx cores)
This commit is contained in:
parent
5906fd154e
commit
352977c7ea
|
@ -232,7 +232,10 @@ namespace BizHawk.Client.Common
|
||||||
throw new ArgumentOutOfRangeException(error);
|
throw new ArgumentOutOfRangeException(error);
|
||||||
}
|
}
|
||||||
var data = new byte[count];
|
var data = new byte[count];
|
||||||
for (var i = 0; i < count; i++) data[i] = d.PeekByte(addr + i);
|
using (d.EnterExit())
|
||||||
|
{
|
||||||
|
for (var i = 0; i < count; i++) data[i] = d.PeekByte(addr + i);
|
||||||
|
}
|
||||||
return SHA256Checksum.ComputeDigestHex(data);
|
return SHA256Checksum.ComputeDigestHex(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -247,7 +250,10 @@ namespace BizHawk.Client.Common
|
||||||
var lastReqAddr = addr + length - 1;
|
var lastReqAddr = addr + length - 1;
|
||||||
var indexAfterLast = Math.Min(lastReqAddr, d.Size - 1) - addr + 1;
|
var indexAfterLast = Math.Min(lastReqAddr, d.Size - 1) - addr + 1;
|
||||||
var bytes = new byte[length];
|
var bytes = new byte[length];
|
||||||
for (var i = addr < 0 ? -addr : 0; i != indexAfterLast; i++) bytes[i] = d.PeekByte(addr + i);
|
using (d.EnterExit())
|
||||||
|
{
|
||||||
|
for (var i = addr < 0 ? -addr : 0; i != indexAfterLast; i++) bytes[i] = d.PeekByte(addr + i);
|
||||||
|
}
|
||||||
if (lastReqAddr >= d.Size) LogCallback($"Warning: Attempted reads on addresses {d.Size}..{lastReqAddr} outside range of domain {d.Name} in {nameof(ReadByteRange)}()");
|
if (lastReqAddr >= d.Size) LogCallback($"Warning: Attempted reads on addresses {d.Size}..{lastReqAddr} outside range of domain {d.Name} in {nameof(ReadByteRange)}()");
|
||||||
return bytes.ToList();
|
return bytes.ToList();
|
||||||
}
|
}
|
||||||
|
@ -263,7 +269,10 @@ namespace BizHawk.Client.Common
|
||||||
if (addr < 0) LogCallback($"Warning: Attempted reads on addresses {addr}..-1 outside range of domain {d.Name} in {nameof(WriteByteRange)}()");
|
if (addr < 0) LogCallback($"Warning: Attempted reads on addresses {addr}..-1 outside range of domain {d.Name} in {nameof(WriteByteRange)}()");
|
||||||
var lastReqAddr = addr + memoryblock.Count - 1;
|
var lastReqAddr = addr + memoryblock.Count - 1;
|
||||||
var indexAfterLast = Math.Min(lastReqAddr, d.Size - 1) - addr + 1;
|
var indexAfterLast = Math.Min(lastReqAddr, d.Size - 1) - addr + 1;
|
||||||
for (var i = addr < 0 ? (int) -addr : 0; i != indexAfterLast; i++) d.PokeByte(addr + i, memoryblock[i]);
|
using (d.EnterExit())
|
||||||
|
{
|
||||||
|
for (var i = addr < 0 ? (int)-addr : 0; i != indexAfterLast; i++) d.PokeByte(addr + i, memoryblock[i]);
|
||||||
|
}
|
||||||
if (lastReqAddr >= d.Size) LogCallback($"Warning: Attempted reads on addresses {d.Size}..{lastReqAddr} outside range of domain {d.Name} in {nameof(WriteByteRange)}()");
|
if (lastReqAddr >= d.Size) LogCallback($"Warning: Attempted reads on addresses {d.Size}..{lastReqAddr} outside range of domain {d.Name} in {nameof(WriteByteRange)}()");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue