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",