diff --git a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/ExROM.cs b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/ExROM.cs
index 7ba87fafe7..2b15a83408 100644
--- a/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/ExROM.cs
+++ b/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/Boards/ExROM.cs
@@ -195,9 +195,12 @@ namespace BizHawk.Emulation.Cores.Nintendo.NES
 			{
 				int exram_addr = last_nt_read;
 				int bank_4k = EXRAM[exram_addr] & 0x3F;
-				
+
 				bank_1k = bank_4k * 4;
-				bank_1k += chr_reg_high<<2;
+				// low 12 bits of address come from PPU
+				// next 6 bits of address come from exram table
+				// top 2 bits of address come from chr_reg_high
+				bank_1k += chr_reg_high << 8;
 				ofs = addr & (4 * 1024 - 1);
 				goto MAPPED;
 			}