From 0015cada9123263cf3f66072d675a72773fe5ce8 Mon Sep 17 00:00:00 2001 From: zeromus Date: Wed, 8 Jun 2011 06:53:11 +0000 Subject: [PATCH] [NES] fix bug in deemph palette that made airwolf invisible and add better tracking and reporting of bad roms (there are bad dumps of airwolf in addition to the game itself being bad) --- BizHawk.Emulation/Consoles/Nintendo/NES/BoardSystem.cs | 3 ++- BizHawk.Emulation/Consoles/Nintendo/NES/Core.cs | 1 - BizHawk.Emulation/Consoles/Nintendo/NES/NES.cs | 7 ++++++- BizHawk.Emulation/Consoles/Nintendo/NES/Palettes.cs | 2 +- BizHawk.MultiClient/output/gamedb.txt | 2 ++ 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/BoardSystem.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/BoardSystem.cs index f7f496a33c..283039fc4e 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/BoardSystem.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/BoardSystem.cs @@ -222,6 +222,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo public short wram_size, vram_size; public byte pad_h, pad_v, mapper; public bool wram_battery; + public bool bad; public string board_type; public string pcb; @@ -305,7 +306,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo if (dict.ContainsKey("PAD_V")) cart.pad_h = byte.Parse(dict["PAD_V"]); if (dict.ContainsKey("bad")) - Console.WriteLine("rom is flagged as BAD!"); + cart.bad = true; return cart; } diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/Core.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/Core.cs index 46a29a8df7..ab46e15456 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/Core.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/Core.cs @@ -210,7 +210,6 @@ namespace BizHawk.Emulation.Consoles.Nintendo { int d = i >> 6; int c = i & 63; - if (d >= 7) continue; int r = palette[c, 0]; int g = palette[c, 1]; int b = palette[c, 2]; diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/NES.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/NES.cs index 3f6496faf2..f7d976f982 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/NES.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/NES.cs @@ -16,7 +16,6 @@ namespace BizHawk.Emulation.Consoles.Nintendo static readonly bool USE_DATABASE = true; //Game issues: - //Air Wolf - Black screen (seems to be mapped properly, and not frozen, but graphics just dont show up. must be ppu bug) //Dragon warrior 3/4 certainly need some additional work done to the mapper wiring to get to the super big PRG (probably SXROM too) //Tecmo superbowl - wobbly "NFL" logo at the end of a game (even skipped game) [zeromus cant test this; how do you skip game?] @@ -35,6 +34,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo //------ //zeromus's new notes: //AD&D Hillsfar (U).nes black screen + //Air Wolf - big graphical glitch. seems to be a real bug, but it should never have been released with this. need to verify for sure that it is a real bug? public NES() { @@ -425,6 +425,11 @@ namespace BizHawk.Emulation.Consoles.Nintendo Console.WriteLine("Final game detection results:"); Console.WriteLine(choice); Console.WriteLine("\"" + game_name + "\""); + if (choice.bad) + { + Console.WriteLine("~~ ONE WAY OR ANOTHER, THIS DUMP IS KNOWN TO BE *BAD* ~~"); + Console.WriteLine("~~ YOU SHOULD FIND A BETTER FILE ~~"); + } Console.WriteLine("END NES rom analysis"); Console.WriteLine("------"); diff --git a/BizHawk.Emulation/Consoles/Nintendo/NES/Palettes.cs b/BizHawk.Emulation/Consoles/Nintendo/NES/Palettes.cs index ef8c1391a5..d3ac0de16c 100644 --- a/BizHawk.Emulation/Consoles/Nintendo/NES/Palettes.cs +++ b/BizHawk.Emulation/Consoles/Nintendo/NES/Palettes.cs @@ -16,7 +16,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo static float[] gtmul = { 0.915f, 1.086f, 0.98f, 1.026f, 0.908f, 0.987f, 0.75f }; static float[] btmul = { 0.743f, 0.882f, 0.653f, 1.277f, 0.979f, 0.101f, 0.75f }; - public static void ApplyDeemphasis(ref int r, ref int g, ref int b, int deemph_bits) + public static void ApplyDeemphasis(ref int r, ref int g, ref int b, int deemph_bits) { //DEEMPH BITS MAY BE ORDERED WRONG. PLEASE CHECK if (deemph_bits == 0) return; diff --git a/BizHawk.MultiClient/output/gamedb.txt b/BizHawk.MultiClient/output/gamedb.txt index 4b4af9ea21..3669be2239 100644 --- a/BizHawk.MultiClient/output/gamedb.txt +++ b/BizHawk.MultiClient/output/gamedb.txt @@ -2275,6 +2275,8 @@ sha1:91CECCFCAC90E417E9AEE80E8F7B560A20EB33CC Ai Sensei No Oshiete - Watashi No sha1:984ADAEB85403EEF1BA85CDCF310FAAECEB409A0 Adventures of Captain Comic, The (Bad Dump) (U) NES board=COLORDREAMS-74*377;PRG=64;CHR=64;WRAM=0;VRAM=0;bad sha1:869111A86FD46872AD8B1BA0ED31B858FA15681F Adventures of Lolo (Bad Dump) (U) NES board=NES-SEROM;PRG=32;CHR=32;WRAM=0;VRAM=0;bad sha1:41BD74F739E008D476989C8296BB789EE57658F0 Adventures of Lolo (Bad Dump 2) (U) NES board=NES-SEROM;PRG=32;CHR=32;WRAM=0;VRAM=0;bad +sha1:10AF069B2AC5DB2FB10768349F4068CB3CDA0EC7 Airwolf (Bad Dump 1) (U) NES board=NES-SH1ROM;PRG=32;CHR=128;bad +sha1:DAD9D1D66018DFB3C30F48741EF188FEFA2B2F68 Airwolf (Bad Dump 2) (U) NES board=NES-SH1ROM;PRG=32;CHR=128;bad ;these roms are from goodNES but they are confusingly messed up somehow sha1:36405B87E66E18DC432690A5959D4529C14B1AEE High Speed (U) NES board=NES-TQROM;PRG=128;CHR=64;VRAM=8;WRAM=0;bad