diff --git a/src/BizHawk.Emulation.Cores/Consoles/PC Engine/PCEngine.IMemoryDomains.cs b/src/BizHawk.Emulation.Cores/Consoles/PC Engine/PCEngine.IMemoryDomains.cs index a96ea7cea5..5d1861cf38 100644 --- a/src/BizHawk.Emulation.Cores/Consoles/PC Engine/PCEngine.IMemoryDomains.cs +++ b/src/BizHawk.Emulation.Cores/Consoles/PC Engine/PCEngine.IMemoryDomains.cs @@ -9,12 +9,13 @@ namespace BizHawk.Emulation.Cores.PCEngine public sealed partial class PCEngine { private readonly Dictionary _byteArrayDomains = new Dictionary(); + private readonly Dictionary _ushortArrayDomains = new Dictionary(); private bool _memoryDomainsInit; private MemoryDomainList _memoryDomains; private void SetupMemoryDomains() { - var domains = new List(2); + var domains = new List(); 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(_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); + } + } } }