diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/BxROM.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/BxROM.cs
index 7a3ee3373c..b333587a0d 100644
--- a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/BxROM.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/BxROM.cs
@@ -7,14 +7,17 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
 	{
 		//configuration
 		int prg_bank_mask_32k;
+		int chr_bank_mask_8k;
 
 		//state
 		int prg_bank_32k;
+		int chr_bank_8k;
 
 		public override void SyncState(Serializer ser)
 		{
 			base.SyncState(ser);
 			ser.Sync("prg_bank_32k", ref prg_bank_32k);
+			ser.Sync("chr_bank_8k", ref chr_bank_8k);
 		}
 
 		public override bool Configure(NES.EDetectionOrigin origin)
@@ -24,7 +27,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
 				case "AVE-NINA-07": // wally bear and the gang
 					// it's not the NINA_001 but something entirely different; actually a colordreams with VRAM
 					// this actually works
-					AssertPrg(128); AssertChr(0); AssertWram(0); AssertVram(8);
+					AssertPrg(32,128); AssertChr(0,16); AssertWram(0); AssertVram(0,8);
 					break;
 
 				case "IREM-BNROM": //Mashou (J).nes
@@ -37,6 +40,7 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
 			}
 
 			prg_bank_mask_32k = Cart.prg_size / 32 - 1;
+			chr_bank_mask_8k = Cart.chr_size / 8 - 1;
 
 			SetMirrorType(Cart.pad_h, Cart.pad_v);
 
@@ -53,6 +57,26 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
 		{
 			value = HandleNormalPRGConflict(addr, value);
 			prg_bank_32k = value & prg_bank_mask_32k;
+			chr_bank_8k = ((value >> 4) & 0xF) & chr_bank_mask_8k;
+		}
+
+		public override byte ReadPPU(int addr)
+		{
+			if (addr<0x2000)
+			{
+				if (VRAM != null)
+				{
+					return VRAM[addr | (chr_bank_8k << 13)];
+				}
+				else
+				{
+					return VROM[addr | (chr_bank_8k << 13)];
+				}
+			}
+			else
+			{
+				return base.ReadPPU(addr);
+			}
 		}
 
 	}