From 5eaf27e510ab2e4e85f0702d9011fedfb85115b1 Mon Sep 17 00:00:00 2001 From: zeromus Date: Tue, 17 Jul 2012 06:24:36 +0000 Subject: [PATCH] nes-fix mapper 231 --- .../Consoles/Nintendo/NES/Boards/Mapper231.cs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper231.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper231.cs index a219e7ded2..a3175ffcae 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper231.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper231.cs @@ -40,7 +40,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo | $8000 AND $1E | $8000 | +---------------+---------------+ */ - public int reg; + public int prg_reg; public bool low; public int prg_bank_mask_16k; @@ -60,8 +60,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo public override void SyncState(Serializer ser) { - ser.Sync("reg", ref reg); - ser.Sync("low", ref low); + ser.Sync("prg_reg", ref prg_reg); base.SyncState(ser); } @@ -76,20 +75,23 @@ namespace BizHawk.Emulation.Consoles.Nintendo SetMirrorType(EMirrorType.Vertical); } - low = addr.Bit(5); - reg = addr & 0x1E; + int prg_reg_P = (addr >> 1) & 0xF; + int prg_reg_L = (addr >> 5) & 1; + prg_reg = (prg_reg_P<<1) | prg_reg_L; + prg_reg &= prg_bank_mask_16k; } public override byte ReadPRG(int addr) { if (low) { - int bank = ((reg >> 1) & 0x0F) & (prg_bank_mask_16k >> 1); - return ROM[(bank * 0x8000) + addr]; + int bank = prg_reg & 0x1E; + return ROM[(bank * 0x4000) + addr]; } else { - return ROM[((reg & prg_bank_mask_16k) * 0x4000) + addr]; + int bank = prg_reg; + return ROM[(bank * 0x4000) + addr - 0x4000]; } }