diff --git a/BizHawk.Emulation/BizHawk.Emulation.csproj b/BizHawk.Emulation/BizHawk.Emulation.csproj
index 870f8f3736..9cbefa4c9a 100644
--- a/BizHawk.Emulation/BizHawk.Emulation.csproj
+++ b/BizHawk.Emulation/BizHawk.Emulation.csproj
@@ -78,8 +78,10 @@
+
+
diff --git a/BizHawk.Emulation/Consoles/Atari/2600/Atari2600.Core.cs b/BizHawk.Emulation/Consoles/Atari/2600/Atari2600.Core.cs
index c8105d0aea..58d174cf58 100644
--- a/BizHawk.Emulation/Consoles/Atari/2600/Atari2600.Core.cs
+++ b/BizHawk.Emulation/Consoles/Atari/2600/Atari2600.Core.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.IO;
using BizHawk.Emulation.CPUs.M6502;
using BizHawk.Emulation.Consoles.Atari;
+using BizHawk.Emulation.Consoles.Atari._2600;
namespace BizHawk
{
@@ -109,7 +110,9 @@ namespace BizHawk
{
case "4K": mapper = new m4K(); break;
case "2K": mapper = new m2K(); break;
+ case "CV": mapper = new mCV(); break;
case "F8": mapper = new mF8(); break;
+ case "F6": mapper = new mF6(); break;
default: throw new InvalidOperationException("mapper not supported: " + game.GetOptionsDict()["m"]);
}
mapper.core = this;
diff --git a/BizHawk.Emulation/Consoles/Atari/2600/Mappers/mCV.cs b/BizHawk.Emulation/Consoles/Atari/2600/Mappers/mCV.cs
new file mode 100644
index 0000000000..96f6bd094c
--- /dev/null
+++ b/BizHawk.Emulation/Consoles/Atari/2600/Mappers/mCV.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BizHawk.Emulation.Consoles.Atari._2600
+{
+ class mCV: MapperBase
+ {
+
+ }
+}
diff --git a/BizHawk.Emulation/Consoles/Atari/2600/Mappers/mF6.cs b/BizHawk.Emulation/Consoles/Atari/2600/Mappers/mF6.cs
new file mode 100644
index 0000000000..4d5605beb6
--- /dev/null
+++ b/BizHawk.Emulation/Consoles/Atari/2600/Mappers/mF6.cs
@@ -0,0 +1,38 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BizHawk.Emulation.Consoles.Atari._2600
+{
+ class mF6 : MapperBase
+ {
+ int toggle = 0;
+
+ public override byte ReadMemory(ushort addr)
+ {
+ Address(addr);
+ if (addr < 0x1000) return base.ReadMemory(addr);
+ return core.rom[toggle * 4 * 1024 + (addr & 0xFFF)];
+ }
+ public override void WriteMemory(ushort addr, byte value)
+ {
+ Address(addr);
+ if (addr < 0x1000) base.WriteMemory(addr, value);
+ }
+
+ public override void SyncState(Serializer ser)
+ {
+ base.SyncState(ser);
+ ser.Sync("toggle", ref toggle);
+ }
+
+ void Address(ushort addr)
+ {
+ if (addr == 0x1FF6) toggle = 0;
+ if (addr == 0x1FF7) toggle = 1;
+ if (addr == 0x1FF8) toggle = 2;
+ if (addr == 0x1FF9) toggle = 3;
+ }
+ }
+}