diff --git a/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj b/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj index 5efa164f0e..09b371a9f5 100644 --- a/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj +++ b/BizHawk.Emulation.Cores/BizHawk.Emulation.Cores.csproj @@ -176,6 +176,7 @@ + diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.IMemoryDomains.cs b/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.IMemoryDomains.cs new file mode 100644 index 0000000000..a55a85c696 --- /dev/null +++ b/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.IMemoryDomains.cs @@ -0,0 +1,63 @@ +using System.Collections.Generic; +using BizHawk.Emulation.Common; + +namespace BizHawk.Emulation.Cores.Atari.Atari2600 +{ + public partial class Atari2600 : IMemoryDomains + { + public MemoryDomainList MemoryDomains { get; private set; } + + private void SetupMemoryDomains() + { + var domains = new List + { + new MemoryDomain( + "Main RAM", + 128, + MemoryDomain.Endian.Little, + addr => Ram[addr], + (addr, value) => Ram[addr] = value), + new MemoryDomain( + "TIA", + 16, + MemoryDomain.Endian.Little, + addr => _tia.ReadMemory((ushort)addr, true), + (addr, value) => this._tia.WriteMemory((ushort)addr, value)), + new MemoryDomain( + "PIA", + 1024, + MemoryDomain.Endian.Little, + addr => M6532.ReadMemory((ushort)addr, true), + (addr, value) => M6532.WriteMemory((ushort)addr, value)), + new MemoryDomain( + "System Bus", + 8192, + MemoryDomain.Endian.Little, + addr => _mapper.PeekMemory((ushort) addr), + (addr, value) => _mapper.PokeMemory((ushort) addr, value)) + }; + + if (_mapper is mDPC) // TODO: also mDPCPlus + { + domains.Add(new MemoryDomain( + "DPC", + 2048, + MemoryDomain.Endian.Little, + addr => (_mapper as mDPC).DspData[addr], + (addr, value) => (_mapper as mDPC).DspData[addr] = value)); + } + + if (_mapper.HasCartRam) + { + domains.Add(new MemoryDomain( + "Cart Ram", + _mapper.CartRam.Len, + MemoryDomain.Endian.Little, + addr => _mapper.CartRam[addr], + (addr, value) => _mapper.CartRam[addr] = value)); + } + + MemoryDomains = new MemoryDomainList(domains); + } + } +} diff --git a/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.cs b/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.cs index 48b597e1e1..cadcb4fc3b 100644 --- a/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.cs +++ b/BizHawk.Emulation.Cores/Consoles/Atari/2600/Atari2600.cs @@ -30,34 +30,6 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600 Settings = (A2600Settings)settings ?? new A2600Settings(); SyncSettings = (A2600SyncSettings)syncSettings ?? new A2600SyncSettings(); - var domains = new List - { - new MemoryDomain( - "Main RAM", - 128, - MemoryDomain.Endian.Little, - addr => Ram[addr], - (addr, value) => Ram[addr] = value), - new MemoryDomain( - "TIA", - 16, - MemoryDomain.Endian.Little, - addr => _tia.ReadMemory((ushort)addr, true), - (addr, value) => this._tia.WriteMemory((ushort)addr, value)), - new MemoryDomain( - "PIA", - 1024, - MemoryDomain.Endian.Little, - addr => M6532.ReadMemory((ushort)addr, true), - (addr, value) => M6532.WriteMemory((ushort)addr, value)), - new MemoryDomain( - "System Bus", - 8192, - MemoryDomain.Endian.Little, - addr => _mapper.PeekMemory((ushort) addr), - (addr, value) => _mapper.PokeMemory((ushort) addr, value)) - }; - CoreComm.CpuTraceAvailable = true; Rom = rom; _game = game; @@ -69,28 +41,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600 Console.WriteLine("Game uses mapper " + game.GetOptionsDict()["m"]); RebootCore(); - - if (_mapper is mDPC) // TODO: also mDPCPlus - { - domains.Add(new MemoryDomain( - "DPC", - 2048, - MemoryDomain.Endian.Little, - addr => (_mapper as mDPC).DspData[addr], - (addr, value) => (_mapper as mDPC).DspData[addr] = value)); - } - - if (_mapper.HasCartRam) - { - domains.Add(new MemoryDomain( - "Cart Ram", - _mapper.CartRam.Len, - MemoryDomain.Endian.Little, - addr => _mapper.CartRam[addr], - (addr, value) => _mapper.CartRam[addr] = value)); - } - - MemoryDomains = new MemoryDomainList(domains); + SetupMemoryDomains(); } public string SystemId { get { return "A26"; } } @@ -132,8 +83,6 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600 public A2600SyncSettings SyncSettings { get; private set; } - public MemoryDomainList MemoryDomains { get; private set; } - public static readonly ControllerDefinition Atari2600ControllerDefinition = new ControllerDefinition { Name = "Atari 2600 Basic Controller",