improve pcehawk memory domains
This commit is contained in:
parent
41128abc37
commit
7c8bd4f98c
|
@ -9,12 +9,13 @@ namespace BizHawk.Emulation.Cores.PCEngine
|
|||
public sealed partial class PCEngine
|
||||
{
|
||||
private readonly Dictionary<string, MemoryDomainByteArray> _byteArrayDomains = new Dictionary<string, MemoryDomainByteArray>();
|
||||
private readonly Dictionary<string, MemoryDomainUshortArray> _ushortArrayDomains = new Dictionary<string, MemoryDomainUshortArray>();
|
||||
private bool _memoryDomainsInit;
|
||||
private MemoryDomainList _memoryDomains;
|
||||
|
||||
private void SetupMemoryDomains()
|
||||
{
|
||||
var domains = new List<MemoryDomain>(2);
|
||||
var domains = new List<MemoryDomain>();
|
||||
|
||||
var systemBusDomain = new MemoryDomainDelegate("System Bus (21 bit)", 0x200000, MemoryDomain.Endian.Little,
|
||||
(addr) =>
|
||||
|
@ -50,10 +51,12 @@ namespace BizHawk.Emulation.Cores.PCEngine
|
|||
|
||||
SyncAllByteArrayDomains();
|
||||
|
||||
_memoryDomains = new MemoryDomainList(domains.Concat(_byteArrayDomains.Values).ToList())
|
||||
{
|
||||
SystemBus = cpuBusDomain, MainMemory = _byteArrayDomains["Main Memory"]
|
||||
};
|
||||
domains.AddRange(_byteArrayDomains.Values);
|
||||
domains.AddRange(_ushortArrayDomains.Values);
|
||||
|
||||
_memoryDomains = new MemoryDomainList(domains);
|
||||
_memoryDomains.SystemBus = cpuBusDomain;
|
||||
_memoryDomains.MainMemory = _byteArrayDomains["Main Memory"];
|
||||
|
||||
((BasicServiceProvider) ServiceProvider).Register<IMemoryDomains>(_memoryDomains);
|
||||
_memoryDomainsInit = true;
|
||||
|
@ -64,6 +67,10 @@ namespace BizHawk.Emulation.Cores.PCEngine
|
|||
SyncByteArrayDomain("Main Memory", Ram);
|
||||
SyncByteArrayDomain("ROM", RomData);
|
||||
|
||||
SyncUshortArrayDomain("VRAM1", VDC1.VRAM);
|
||||
|
||||
SyncUshortArrayDomain("VCEPalette", VCE.VceData);
|
||||
|
||||
if (BRAM != null)
|
||||
SyncByteArrayDomain("Battery RAM", BRAM);
|
||||
|
||||
|
@ -101,5 +108,19 @@ namespace BizHawk.Emulation.Cores.PCEngine
|
|||
_byteArrayDomains.Add(name, m);
|
||||
}
|
||||
}
|
||||
|
||||
private void SyncUshortArrayDomain(string name, ushort[] data)
|
||||
{
|
||||
if (_memoryDomainsInit)
|
||||
{
|
||||
var m = _ushortArrayDomains[name];
|
||||
m.Data = data;
|
||||
}
|
||||
else
|
||||
{
|
||||
var m = new MemoryDomainUshortArray(name, MemoryDomain.Endian.Big, data, true);
|
||||
_ushortArrayDomains.Add(name, m);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue