diff --git a/BizHawk.Emulation/BizHawk.Emulation.csproj b/BizHawk.Emulation/BizHawk.Emulation.csproj
index 665d27efe0..e07f5d693b 100644
--- a/BizHawk.Emulation/BizHawk.Emulation.csproj
+++ b/BizHawk.Emulation/BizHawk.Emulation.csproj
@@ -161,6 +161,7 @@
+
diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper233.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper233.cs
new file mode 100644
index 0000000000..171a18b99a
--- /dev/null
+++ b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper233.cs
@@ -0,0 +1,127 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace BizHawk.Emulation.Consoles.Nintendo
+{
+ class Mapper233 : NES.NESBoardBase
+ {
+ /*
+ Here are Disch's original notes:
+ ========================
+ = Mapper 233 =
+ ========================
+
+
+ Example Game:
+ --------------------------
+ ???? "42-in-1" ????
+
+
+ Notes:
+ ---------------------------
+ Sources report this mapper as "42-in-1" with description layed out below. I did not test this,
+ since I could not find a copy of the ROM in question. The only ROM I have that's marked as
+ 233 is "Unknown Multicart 1", and it does *not* follow the description in this doc at all.
+
+ There is a "Super 42-in-1"... but that is mapper 226. 226, by the way, is strikingly similar
+ to the below description. I wonder if below description really applies to 233?
+
+
+
+ Registers:
+ ---------------------------
+
+ $8000-FFFF: [MMOP PPPP]
+ M = Mirroring
+ O = PRG Mode
+ P = PRG Page
+
+
+ PRG Setup:
+ ---------------------------
+
+ $8000 $A000 $C000 $E000
+ +-------------------------------+
+ PRG Mode 0: | <$8000> |
+ +-------------------------------+
+ PRG Mode 1: | $8000 | $8000 |
+ +---------------+---------------+
+
+
+ Mirroring:
+ ---------------------------
+
+ 'M' mirroring bits:
+ %00 = See below
+ %01 = Vert
+ %10 = Horz
+ %11 = 1ScB
+
+
+ Mode %00 (almost, but not quite 1ScA):
+ [ NTA ][ NTA ]
+ [ NTA ][ NTB ]
+ */
+
+ public int prg_page;
+ public bool prg_mode;
+
+ public override bool Configure(NES.EDetectionOrigin origin)
+ {
+ switch (Cart.board_type)
+ {
+ case "MAPPER233":
+ break;
+ default:
+ return false;
+ }
+
+ prg_mode = false;
+ return true;
+ }
+
+ public override void SyncState(Serializer ser)
+ {
+ ser.Sync("prg_page", ref prg_page);
+ ser.Sync("prg_mode", ref prg_mode);
+ base.SyncState(ser);
+ }
+
+ public override void WritePRG(int addr, byte value)
+ {
+ prg_page = value & 0x1F;
+ prg_mode = value.Bit(5);
+
+ int mirror = value >> 6;
+ switch (mirror)
+ {
+ case 0:
+ SetMirroring(0, 0, 0, 1);
+ break;
+ case 1:
+ SetMirrorType(EMirrorType.Vertical);
+ break;
+ case 2:
+ SetMirrorType(EMirrorType.Horizontal);
+ break;
+ case 3:
+ SetMirrorType(EMirrorType.OneScreenB);
+ break;
+ }
+ }
+
+ public override byte ReadPRG(int addr)
+ {
+ if (prg_mode == false)
+ {
+ return ROM[((prg_page >> 1) * 0x8000) + addr];
+ }
+ else
+ {
+ return ROM[(prg_page * 0x4000) + (addr & 0x03FFF)];
+ }
+ }
+ }
+}