protected IMemoryMapping MapPpuRange(IMemoryMappedDevice device, int startAddress, int endAddress) { IMemoryMapping mapping = this.PpuBus.RegisterMappedDevice(device, startAddress, endAddress); this.ppuMappings.Add(mapping); return(mapping); }
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)); }
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(); } }
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)); } } }