From c90d2dcd568701c7a3dc24a491d23f1fee78026c Mon Sep 17 00:00:00 2001 From: goyuken Date: Fri, 14 Dec 2012 19:46:01 +0000 Subject: [PATCH] =?UTF-8?q?nes:=20MMC5:=20change=20prg=20ram=20behavior=20?= =?UTF-8?q?to=20mask=20out=20of=20range=20banks.=20=20seems=20to=20fix=20S?= =?UTF-8?q?hin=204=20Nin=20Uchi=20Mahjong:=20Yakuman=20Tengoku=20(?= =?UTF-8?q?=E6=96=B0=EF=BC=94=E4=BA=BA=E6=89=93=E3=81=A1=E3=83=9E=E3=83=BC?= =?UTF-8?q?=E3=82=B8=E3=83=A3=E3=83=B3=20=E5=BD=B9=E6=BA=80=E5=A4=A9?= =?UTF-8?q?=E5=9B=BD).=20=20i=20have=20no=20idea=20what's=20actually=20goi?= =?UTF-8?q?ng=20on?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BizHawk.Emulation/Consoles/Nintendo/NES/Boards/ExROM.cs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/ExROM.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/ExROM.cs index 78f0050ed6..2b6b403c48 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/ExROM.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/ExROM.cs @@ -22,6 +22,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo { //configuraton int prg_bank_mask_8k, chr_bank_mask_1k; //board setup (to be isolated from mmc5 code later, when we need the separate mmc5 class) + int wram_bank_mask_8k; //state int irq_target, irq_counter; @@ -100,7 +101,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo case "MAPPER005": break; case "NES-ELROM": //Castlevania 3 - Dracula's Curse (U) - AssertPrg(128,256); AssertChr(128); + AssertPrg(128, 256); AssertChr(128); break; case "NES-EKROM": //Gemfire (U) AssertPrg(256); AssertChr(256); @@ -111,8 +112,9 @@ namespace BizHawk.Emulation.Consoles.Nintendo return false; } - prg_bank_mask_8k = Cart.prg_size/8-1; + prg_bank_mask_8k = Cart.prg_size / 8 - 1; chr_bank_mask_1k = Cart.chr_size - 1; + wram_bank_mask_8k = Cart.wram_size / 8 - 1; PoweronState(); @@ -138,7 +140,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo int MapWRAM(int addr) { - int bank_8k = wram_bank; + int bank_8k = wram_bank & wram_bank_mask_8k; int ofs = addr & ((1 << 13) - 1); addr = (bank_8k << 13) | ofs; return addr;