diff --git a/BizHawk.Emulation/BizHawk.Emulation.csproj b/BizHawk.Emulation/BizHawk.Emulation.csproj index 99e1888f05..dd55d39be0 100644 --- a/BizHawk.Emulation/BizHawk.Emulation.csproj +++ b/BizHawk.Emulation/BizHawk.Emulation.csproj @@ -195,6 +195,7 @@ + diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/MMC3_family/Mapper074.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/MMC3_family/Mapper074.cs index 871d932689..f36e028c36 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/MMC3_family/Mapper074.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/MMC3_family/Mapper074.cs @@ -8,8 +8,6 @@ namespace BizHawk.Emulation.Consoles.Nintendo class Mapper074 : MMC3Board_Base { //http://wiki.nesdev.com/w/index.php/INES_Mapper_074 - - //TODO: fix CHR-RAM behavior public override bool Configure(NES.EDetectionOrigin origin) { @@ -52,23 +50,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo int bank = GetBankNum(addr); if (bank == 0x08) { - byte value = VRAM[addr & 0x03FF]; - - - //adelikat: value ==255 is a hack to prevent a regression. - //Without any chr-ram mapping this game works fine other than the missing chinese characters. This current mapping does not fix that issue. - //In addition, the blue caret on the title screen is missing without this hack, so I put it in to prevent a regression. - //Note: FCEUX and Nintendulator are missing this blue caret (and chinese characters) suggesting a possible logical flaw in the mapper documentation. - //Nestopia achieves the correct behavior but I was unable to determine how its logic was any different. - if (value == 255) - { - return VROM[(addr & 0x03FF) + 0x2000]; - } - else - { - return value; - } - + return VRAM[addr & 0x03FF]; } else if (bank == 0x09) { diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/MMC3_family/Mapper194.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/MMC3_family/Mapper194.cs new file mode 100644 index 0000000000..d15b454765 --- /dev/null +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/MMC3_family/Mapper194.cs @@ -0,0 +1,69 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace BizHawk.Emulation.Consoles.Nintendo +{ + class Mapper194 : MMC3Board_Base + { + //http://wiki.nesdev.com/w/index.php/INES_Mapper_194 + + public override bool Configure(NES.EDetectionOrigin origin) + { + //analyze board type + switch (Cart.board_type) + { + case "MAPPER194": + break; + default: + return false; + } + + BaseSetup(); + return true; + } + + public override void WritePPU(int addr, byte value) + { + if (addr < 0x2000) + { + VRAM[addr & 0x7FF] = value; + } + else + { + base.WritePPU(addr, value); + } + } + + private int GetBankNum(int addr) + { + int bank_1k = Get_CHRBank_1K(addr); + bank_1k &= chr_mask; + return bank_1k; + } + + public override byte ReadPPU(int addr) + { + if (addr < 0x2000) + { + int bank = GetBankNum(addr); + if (bank == 0x00) + { + return VRAM[addr & 0x03FF]; + } + else if (bank == 0x01) + { + return VRAM[(addr & 0x03FF) + 0x400]; + } + else + { + addr = MapCHR(addr); + return VROM[addr + extra_vrom]; + } + + } + else return base.ReadPPU(addr); + } + } +} diff --git a/BizHawk.MultiClient/output/gamedb.txt b/BizHawk.MultiClient/output/gamedb.txt index 434c79b014..35d2f00060 100644 --- a/BizHawk.MultiClient/output/gamedb.txt +++ b/BizHawk.MultiClient/output/gamedb.txt @@ -134,8 +134,11 @@ sha1:B6D1C372A38D196112AA98905C709AD844BD6627 Super 35-in-1 (6-in-1 VT5201) NES sha1:BFA31777E077E64AF0E274B5A22B57C6765D36E1 Fan Kong Jing Ying (Unl) (Ch) NES board=MAPPER241;MIR=H sha1:17473C223453D2D80FCB9DCFA317947287DC5C52 Xing He Zhan Shi (Ch) NES board=MAPPER176 sha1:0B58E16B7FD5ABE62B1D9B1841875582DF5A9195 Ying Lie Qun Xia Zhuan (Ch) NES board=MAPPER192 -sha1:27CB8AEAF0EA97A6C69D3D90BC056C5EB61695F6 Dai-2-Ji - Super Robot Taisen (Ch) NES board=MAPPER074;VRAM=2 +sha1:27CB8AEAF0EA97A6C69D3D90BC056C5EB61695F6 Dai-2-Ji - Super Robot Taisen (Ch) NES board=MAPPER194;VRAM=2 sha1:0B58E16B7FD5ABE62B1D9B1841875582DF5A9195 Ying Lie Qun Xia Zhuan (Ch) NES board=MAPPER192;VRAM=4 +sha1:F5FA7807F2B70ADFE5707D9BF88F90DAC1436DB0 Di 4 Ci - Ji Qi Ren Dai Zhan (Ch) NES board=MAPPER074;VRAM=2 +sha1:A9887C308C5D0659C3AA45D003A603C9DFFB148A B Ji Jia Zhan Shi (Asia) NES board=MAPPER074;VRAM=2 +sha1:5084F25F14A61AB2799BD85D363B57B9B494601D Ji Jia Zhan Shi (Asia) NES board=MAPPER074;VRAM=2 ;;;;;;;;;;;;;;;;;;;----------------------------------------------------------------------- ;;;;;;;;;;;;;;;;;;;-----------------------------------------------------------------------