using System; using System.Collections.Generic; using System.Linq; using BizHawk.Emulation.Common; namespace BizHawk.Emulation.Cores.Nintendo.GBHawk { public partial class GBHawk { private IMemoryDomains MemoryDomains; public void SetupMemoryDomains() { var domains = new List { new MemoryDomainDelegate( "Main RAM", RAM.Length, MemoryDomain.Endian.Little, addr => RAM[addr], (addr, value) => RAM[addr] = value, 1), new MemoryDomainDelegate( "Zero Page RAM", ZP_RAM.Length, MemoryDomain.Endian.Little, addr => ZP_RAM[addr], (addr, value) => ZP_RAM[addr] = value, 1), new MemoryDomainDelegate( "System Bus", 0X10000, MemoryDomain.Endian.Little, addr => PeekSystemBus(addr), (addr, value) => PokeSystemBus(addr, value), 1) }; MemoryDomains = new MemoryDomainList(domains); (ServiceProvider as BasicServiceProvider).Register(MemoryDomains); } private byte PeekSystemBus(long addr) { ushort addr2 = (ushort)(addr & 0xFFFF); return ReadMemory(addr2); } private void PokeSystemBus(long addr, byte value) { ushort addr2 = (ushort)(addr & 0xFFFF); WriteMemory(addr2, value); } } }