예제 #1
0
        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),
                new MemoryDomainDelegate(
                    "RAM",
                    0x10000,
                    MemoryDomain.Endian.Little,
                    (addr) => LibMSX.MSX_getram(MSX_Pntr, (int)(addr & 0xFFFF)),
                    (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;
        }