void SetupMemoryDomains() { var domains = new List <MemoryDomain> { new MemoryDomainDelegate( "System Bus", 0x10000, MemoryDomain.Endian.Little, (addr) => LibMSX.MSX_getsysbus(MSX_Pntr, (int)(addr & 0xFFFF)), (addr, value) => { }, 1), new MemoryDomainDelegate( "VRAM", 0x4000, MemoryDomain.Endian.Little, (addr) => LibMSX.MSX_getvram(MSX_Pntr, (int)(addr & 0x3FFF)), (addr, value) => { }, 1), }; if (SaveRAM != null) { var saveRamDomain = new MemoryDomainDelegate("Save RAM", SaveRAM.Length, MemoryDomain.Endian.Little, addr => SaveRAM[addr], (addr, value) => { SaveRAM[addr] = value; SaveRamModified = true; }, 1); domains.Add(saveRamDomain); } SyncAllByteArrayDomains(); MemoryDomains = new MemoryDomainList(_byteArrayDomains.Values.Concat(domains).ToList()); (ServiceProvider as BasicServiceProvider).Register <IMemoryDomains>(MemoryDomains); _memoryDomainsInit = true; }