From d17934b395cd9fa235fc35181c3d6fc1cf0e07c9 Mon Sep 17 00:00:00 2001 From: "andres.delikat" Date: Sat, 24 Sep 2011 14:04:21 +0000 Subject: [PATCH] Fix TAITO_74_161_161_32 board (mapper 152), arkanoid 2 now works. Added Goodnes3.14's version of arkanoid 2 to the gamedb (even though it is actually a bad dump, our policy is to support 3.14 roms). Fixes to other mappers, Holy Diver now works properly (among other games). --- .../Consoles/Nintendo/NES/Boards/HVC_UN1ROM.cs | 1 - .../Consoles/Nintendo/NES/Boards/Mapper078.cs | 2 +- .../Consoles/Nintendo/NES/Boards/Mapper089.cs | 2 +- .../Consoles/Nintendo/NES/Boards/Mapper093.cs | 1 - .../Nintendo/NES/Boards/TAITO_74_161_161_32.cs | 17 +++++++++++------ BizHawk.MultiClient/output/gamedb.txt | 1 + 6 files changed, 14 insertions(+), 10 deletions(-) diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/HVC_UN1ROM.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/HVC_UN1ROM.cs index 3a7f6d8745..776bc9dc5f 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/HVC_UN1ROM.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/HVC_UN1ROM.cs @@ -10,7 +10,6 @@ namespace BizHawk.Emulation.Consoles.Nintendo class HVC_UN1ROM : NES.NESBoardBase { - int prg; int prg_bank_mask_16k; byte prg_bank_16k; ByteBuffer prg_banks_16k = new ByteBuffer(2); diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper078.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper078.cs index 5fe570b4e2..155fff3f2d 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper078.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper078.cs @@ -59,7 +59,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo prg_bank_16k = (byte)(value & 7); SyncPRG(); - if (value.Bit(3)) + if (value.Bit(3) == false) { if (holydiver) SetMirrorType(EMirrorType.Horizontal); diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper089.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper089.cs index 641c33b085..0903dc375e 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper089.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper089.cs @@ -58,7 +58,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo prg_bank_16k = (byte)((value >> 4) & 7); SyncPRG(); - if (value.Bit(3)) + if (value.Bit(3) == false) SetMirrorType(EMirrorType.OneScreenA); else SetMirrorType(EMirrorType.OneScreenB); diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper093.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper093.cs index 4595ddaed2..cae624d922 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper093.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/Mapper093.cs @@ -5,7 +5,6 @@ using System.Diagnostics; namespace BizHawk.Emulation.Consoles.Nintendo { //AKA shanghai (although a lot of shanghais have been hacked to use a different mapper, so.... - //TODO - this hasnt been tested yet and isnt even close to right class MAPPER93 : NES.NESBoardBase { int prg_bank_mask_16k; diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/TAITO_74_161_161_32.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/TAITO_74_161_161_32.cs index 33d464ad0a..72653d8de8 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/TAITO_74_161_161_32.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/Boards/TAITO_74_161_161_32.cs @@ -5,6 +5,10 @@ using System.Text; namespace BizHawk.Emulation.Consoles.Nintendo { + //Mapper 152 + //Arkanoid 2 (J) + //Gegege no Kitarou 2 + class TAITO_74_161_161_32 : NES.NESBoardBase { int chr; @@ -23,7 +27,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo } SetMirrorType(Cart.pad_h, Cart.pad_v); prg_bank_mask_16k = (Cart.prg_size / 16) - 1; - prg_banks_16k[0] = 0xFF; + prg_banks_16k[1] = 0xFF; return true; } @@ -36,6 +40,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo public override void SyncState(Serializer ser) { base.SyncState(ser); + ser.Sync("chr", ref chr); ser.Sync("prg_bank_mask_16k", ref prg_bank_mask_16k); ser.Sync("prg_bank_16k", ref prg_bank_16k); ser.Sync("prg_banks_16k", ref prg_banks_16k); @@ -43,7 +48,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo void SyncPRG() { - prg_banks_16k[1] = prg_bank_16k; + prg_banks_16k[0] = prg_bank_16k; } public override void WritePRG(int addr, byte value) @@ -52,8 +57,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo prg_bank_16k = (byte)((value >> 4) & 7); SyncPRG(); - int m = value >> 6; - if (value.Bit(7) == true) + if (value.Bit(7)) SetMirrorType(EMirrorType.OneScreenB); else SetMirrorType(EMirrorType.OneScreenA); @@ -72,8 +76,9 @@ namespace BizHawk.Emulation.Consoles.Nintendo public override byte ReadPPU(int addr) { if (addr < 0x2000) - return VROM[addr + (chr * 0x2000)]; - return base.ReadPPU(addr); + return VROM[(addr & 0x1FFF) + (chr * 0x2000)]; + else + return base.ReadPPU(addr); } } } diff --git a/BizHawk.MultiClient/output/gamedb.txt b/BizHawk.MultiClient/output/gamedb.txt index 847cbd5f72..34a690627a 100644 --- a/BizHawk.MultiClient/output/gamedb.txt +++ b/BizHawk.MultiClient/output/gamedb.txt @@ -76,6 +76,7 @@ sha1:8C7D33753649A2BAF2EAAF8D5FFC2AE8E9316A13 Akira (J) NES board=TAITO-TC0190 sha1:0AE47BD83202A5A2235B0BC16278F56D66038AB5 Deathbots (U) NES board=AVE-NINA-06;PRG=64;CHR=64;PAD_H=1;PAD_V=0 ;these roms are in goodNES but theyre junk +sha1:A1D674D1C7C633A317CFD516EFB9A0350CD0E45E H Arkanoid II (J) NES board=TAITO-74*161/161/32;PRG=128;CHR=128;WRAM=8 sha1:4D6117577CE301BB987C5C32FEEF7B132A21B046 H Afro Man (Mega Man 3 Hack) (UNL) NES board=TXROM-HOMEBREW;PRG=256;CHR=128;WRAM=8 sha1:7BD102770FE7766BF8430ACDB3C17EE51E30478C H Mike Tyson's Punch-Out!! (Hacked) (U) NES board=NES-PNROM;PRG=128;CHR=128;WRAM=0 sha1:536D623BA02A622BDE8E2D7D514AE9785B5E0357 H Punch Out!! Kirby (Hack) (U) NES board=NES-PNROM;PRG=128;CHR=128;WRAM=0