Пример #1
0
        protected IMemoryMapping MapPpuRange(IMemoryMappedDevice device, int startAddress, int endAddress)
        {
            IMemoryMapping mapping = this.PpuBus.RegisterMappedDevice(device, startAddress, endAddress);

            this.ppuMappings.Add(mapping);

            return(mapping);
        }
Пример #2
0
        public Memory(string name, IMemoryBus bus, int startAddress, int size)
        {
            this.Name     = name;
            this.contents = new byte[size];
            this.bus      = bus;

            this.startAddress = startAddress;
            this.size         = size;

            this.mapping = bus.RegisterMappedDevice(this, startAddress, startAddress + (size - 1));
        }
Пример #3
0
        void IMemoryBus.RemoveMapping(IMemoryMapping mapping)
        {
            MemoryMapping mappingToRemove = this.mappings.FirstOrDefault(m =>
                                                                         m.Device == mapping.Device &&
                                                                         m.StartAddress == mapping.StartAddress &&
                                                                         m.EndAddress == mapping.EndAddress);

            if (mappingToRemove != null)
            {
                this.mappings.Remove(mappingToRemove);
                this.mappingsArray = this.mappings.ToArray();
            }
        }
Пример #4
0
        public void Remap(int newStartAddress)
        {
            if (this.startAddress != newStartAddress)
            {
                this.startAddress = newStartAddress;

                this.bus.RemoveMapping(this.mapping);

                if (newStartAddress != -1)
                {
                    this.mapping = this.bus.RegisterMappedDevice(this, this.startAddress, this.startAddress + (this.size - 1));
                }
            }
        }