[NES] game recognition tweaks and additions
This commit is contained in:
parent
c6ddf5fd68
commit
8247fca267
|
@ -16,11 +16,6 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
|||
case "NES-TQROM": //high speed and pinbot
|
||||
AssertPrg(128); AssertChr(64); AssertVram(8); AssertWram(0);
|
||||
break;
|
||||
case "NES-TQROM-BAD": //high speed bad dumps
|
||||
Cart.vram_size = 8;
|
||||
Cart.wram_size = 0;
|
||||
AssertPrg(128); AssertChr(128);
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
@ -31,7 +26,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
|||
}
|
||||
|
||||
public override byte ReadPPU(int addr)
|
||||
{
|
||||
{
|
||||
if (addr < 0x2000)
|
||||
{
|
||||
int bank_1k = mapper.Get_CHRBank_1K(addr);
|
||||
|
|
|
@ -56,7 +56,8 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
|||
AssertPrg(64); AssertChr(64); AssertVram(0); AssertWram(0);
|
||||
AssertBattery(false);
|
||||
break;
|
||||
case "NES-TEROM": //Adv of lolo 2
|
||||
case "NES-TEROM": //Adventures of lolo 2
|
||||
case "HVC-TEROM": //Adventures of Lolo (J)
|
||||
AssertPrg(32); AssertChr(32); AssertVram(0); AssertWram(0);
|
||||
AssertBattery(false);
|
||||
break;
|
||||
|
@ -65,6 +66,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
|||
AssertBattery(false);
|
||||
break;
|
||||
case "NES-TGROM": //mega man 4 & 6
|
||||
case "HVC-TGROM": //Aa Yakyuu Jinsei Icchokusen (J)
|
||||
AssertPrg(128, 256, 512); AssertChr(0); AssertVram(8); AssertWram(0);
|
||||
AssertBattery(false);
|
||||
break;
|
||||
|
@ -72,6 +74,7 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
|||
AssertPrg(128, 256, 512); AssertChr(128, 256); AssertVram(0); AssertWram(8);
|
||||
break;
|
||||
case "NES-TLROM": //mega man 3
|
||||
case "HVC-TLROM": //8 eyes (J)
|
||||
AssertPrg(128, 256, 512); AssertChr(128, 256); AssertVram(0); AssertWram(0);
|
||||
AssertBattery(false);
|
||||
break;
|
||||
|
|
|
@ -24,8 +24,11 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
|||
|
||||
class MMC1
|
||||
{
|
||||
public MMC1()
|
||||
NES.NESBoardBase board;
|
||||
public MMC1(NES.NESBoardBase board)
|
||||
{
|
||||
this.board = board;
|
||||
|
||||
//collect data about whether this is required here:
|
||||
//kid icarus requires it
|
||||
//zelda doesnt; nor megaman2; nor blastermaster; nor metroid
|
||||
|
@ -120,8 +123,8 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
|||
wram_disable = (value >> 4) & 1;
|
||||
break;
|
||||
}
|
||||
//Console.WriteLine("mapping.. chr_mode={0}, chr={1},{2}", chr_mode, chr_0, chr_1);
|
||||
//Console.WriteLine("mapping.. prg_mode={0}, prg_slot{1}, prg={2}", prg_mode, prg_slot, prg);
|
||||
//board.NES.LogLine("mapping.. chr_mode={0}, chr={1},{2}", chr_mode, chr_0, chr_1);
|
||||
//board.NES.LogLine("mapping.. prg_mode={0}, prg_slot{1}, prg={2}", prg_mode, prg_slot, prg);
|
||||
}
|
||||
|
||||
public int Get_PRGBank(int addr)
|
||||
|
@ -254,69 +257,70 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
|||
case "NES-SCROM": //mechanized attack
|
||||
case "NES-SC1ROM": //knight rider
|
||||
AssertPrg(64); AssertChr(128); AssertVram(0); AssertWram(0);
|
||||
break;
|
||||
break;
|
||||
case "NES-SEROM": //lolo
|
||||
case "HVC-SEROM": //dr. mario
|
||||
AssertPrg(32); AssertChr(32); AssertVram(0); AssertWram(0);
|
||||
break;
|
||||
break;
|
||||
case "NES-SFROM": //bubble bobble
|
||||
AssertPrg(128,256); AssertChr(16,32,64); AssertVram(0); AssertWram(0);
|
||||
break;
|
||||
AssertPrg(128, 256); AssertChr(16, 32, 64); AssertVram(0); AssertWram(0);
|
||||
break;
|
||||
case "NES-SGROM": //bionic commando
|
||||
AssertPrg(128, 256); AssertChr(0); AssertVram(8); AssertWram(0);
|
||||
break;
|
||||
break;
|
||||
case "NES-SHROM": //family feud
|
||||
case "NES-SH1ROM": //airwolf
|
||||
AssertPrg(32); AssertChr(128); AssertVram(0); AssertWram(0);
|
||||
break;
|
||||
break;
|
||||
case "HVC-SIROM": //Igo: Kyuu Roban Taikyoku
|
||||
AssertPrg(32); AssertChr(16); AssertVram(0); AssertWram(8);
|
||||
break;
|
||||
break;
|
||||
case "NES-SJROM": //air fortress
|
||||
AssertPrg(128,256); AssertChr(16,32,64); AssertVram(0); AssertWram(8);
|
||||
break;
|
||||
AssertPrg(128, 256); AssertChr(16, 32, 64); AssertVram(0); AssertWram(8);
|
||||
break;
|
||||
case "NES-SKROM": //zelda 2
|
||||
case "HVC-SKROM": //ad&d dragons of flame (J)
|
||||
AssertPrg(128, 256); AssertChr(128); AssertVram(0); AssertWram(8);
|
||||
break;
|
||||
break;
|
||||
case "NES-SLROM": //castlevania 2
|
||||
case "KONAMI-SLROM": //bayou billy
|
||||
case "HVC-SLROM": //Adventures of Lolo 2 (J)
|
||||
AssertPrg(128, 256); AssertChr(128); AssertVram(0); AssertWram(0);
|
||||
break;
|
||||
break;
|
||||
case "NES-SL1ROM": //hoops
|
||||
AssertPrg(64, 128, 256); AssertChr(128); AssertVram(0); AssertWram(0);
|
||||
break;
|
||||
break;
|
||||
case "NES-SL2ROM": //blaster master
|
||||
AssertPrg(128); AssertChr(128); AssertVram(0); AssertWram(0);
|
||||
break;
|
||||
break;
|
||||
case "NES-SL3ROM": //goal!
|
||||
AssertPrg(256); AssertChr(128); AssertVram(0); AssertWram(0);
|
||||
break;
|
||||
break;
|
||||
case "NES-SLRROM": //tecmo bowl
|
||||
AssertPrg(128); AssertChr(128); AssertVram(0); AssertWram(0);
|
||||
break;
|
||||
break;
|
||||
case "HVC-SMROM": //Hokkaidou Rensa Satsujin: Okhotsu ni Shoyu
|
||||
AssertPrg(256); AssertChr(0); AssertVram(8); AssertWram(0);
|
||||
break;
|
||||
break;
|
||||
case "NES-SNROM": //dragon warrior 2
|
||||
case "HVC-SNROM":
|
||||
//prg=16 is unexpected but blargg's tests use it
|
||||
AssertPrg(16, 128, 256); AssertChr(0); AssertVram(8); AssertWram(8);
|
||||
//TODO - consider making a unique board type for homebrew, as i discover how more of them are working
|
||||
case "HVC-SNROM":
|
||||
AssertPrg(128, 256); AssertChr(0); AssertVram(8); AssertWram(8);
|
||||
break;
|
||||
case "NES-SOROM": //Nobunaga's Ambition
|
||||
AssertPrg(128, 256); AssertChr(0); AssertVram(8); AssertWram(16);
|
||||
break;
|
||||
break;
|
||||
case "NES-SUROM": //dragon warrior 4
|
||||
case "HVC-SUROM":
|
||||
AssertPrg(512); AssertChr(0); AssertVram(8); AssertWram(8);
|
||||
break;
|
||||
break;
|
||||
case "HVC-SXROM": //final fantasy 1& 2
|
||||
AssertPrg(128,256,512); AssertChr(0); AssertVram(8); AssertWram(32);
|
||||
break;
|
||||
AssertPrg(128, 256, 512); AssertChr(0); AssertVram(8); AssertWram(32);
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
||||
mmc1 = new MMC1();
|
||||
mmc1 = new MMC1(this);
|
||||
prg_mask = (Cart.prg_size / 16) - 1;
|
||||
vram_mask = (Cart.vram_size*1024) - 1;
|
||||
wram_mask = (Cart.wram_size*1024) - 1;
|
||||
|
|
|
@ -32,6 +32,10 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
|||
//JJ - Tobidase Daisakusen Part 2 (J) - same as 3-D World Runner
|
||||
//Knight Rider - very glitchy and seems to be a good timing case! (seems to run same as nintendulator and fceux now.. which may not be entirely accurate)
|
||||
|
||||
//------
|
||||
//zeromus's new notes:
|
||||
//AD&D Hillsfar (U).nes black screen
|
||||
|
||||
public NES()
|
||||
{
|
||||
BootGodDB.Initialize();
|
||||
|
@ -372,7 +376,9 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
|||
{
|
||||
choice = IdentifyFromGameDB(hash_md5);
|
||||
if (choice == null)
|
||||
{
|
||||
choice = IdentifyFromGameDB(hash_sha1);
|
||||
}
|
||||
}
|
||||
if (choice == null)
|
||||
{
|
||||
|
|
|
@ -47,6 +47,24 @@ namespace BizHawk.Emulation.Consoles.Nintendo
|
|||
}
|
||||
}
|
||||
|
||||
//if a board is in here then it is either
|
||||
//1. bad dump (and we should have put it in the gamedb.txt instead)
|
||||
//2. not in bootgod's DB yet
|
||||
//3. homebrew/hacks
|
||||
//it is worth keeping around for homebrew's sake.
|
||||
//games not in bootgod's DB are probably bad dumps, but a lot of them are in goodNES. not sure what to do about those.
|
||||
//
|
||||
//but, in general it is very hard to know whether to put it in here or gamedb.txt. i keep going through various phases.
|
||||
//this should really just be a backstop for if we've been too lazy to put them all in gamedb.txt
|
||||
//it would really be sort of cool if we had every goodnes rom listed in gamedb.txt.
|
||||
|
||||
//i think the philosophy is, we should have an iNES guess for everything we have examples of, as well as an overriding gamedb.txt entry
|
||||
//so when going on mass compatibility sweeps, we should enter in both at once even if it pollutes this with incomprehensible stuff.
|
||||
//but make sure you always put a test case with each of these to justify it!
|
||||
|
||||
//one thing to keep in mind though: bad dumps should not ruin the assertions on board types. override them in gamedb.txt to the correct parameters.
|
||||
//or, if necessary, add a new hacky board type.
|
||||
|
||||
//MAP PRG CHR WRAM VRAM BOARD
|
||||
static string ClassifyTable = @"
|
||||
0 16 0 8 8 NROM-HOMEBREW; some of blargg's test (sprite tests)
|
||||
|
@ -66,14 +84,13 @@ static string ClassifyTable = @"
|
|||
3 32 32 8 0 NES-CNROM; adventure island
|
||||
4 128 128 8 0 NES-TSROM; double dragon 2 (should be TL1ROM but maybe this will work)
|
||||
4 32 8 8 0 TXROM-HOMEBREW; blargg's mmc3 tests
|
||||
4 256 256 8 0 NES-TKROM; Aces - Iron Eagle 3 (J)
|
||||
4 512 128 8 0 NES-TKROM; Pool of radiance (J)
|
||||
7 128 0 8 0 NES-ANROM; marble madness
|
||||
7 256 0 8 8 NES-AOROM; battletoads
|
||||
11 32 16 8 0 Discrete_74x377
|
||||
11 16 32 8 0 Discrete_74x377
|
||||
13 32 0 8 16 NES-CPROM; videomation
|
||||
66 64 16 8 0 NES-MHROM; super mario bros / duck hunt
|
||||
66 128 32 8 0 NES-GNROM; gumshoe
|
||||
119 128 128 8 0 NES-TQROM-BAD; high speed (U)
|
||||
";
|
||||
}
|
||||
|
||||
|
|
|
@ -2269,10 +2269,19 @@ sha1:894F20405286F5F75133CE4648300E2C67972B40 Solomon's Key (U) NES board=NES-
|
|||
sha1:0C53B06E1D13AE917536BB39010914EA3D111FF5 Thunder & Lightning (U) NES board=NES-GNROM;PRG=128;CHR=32;bad
|
||||
sha1:9BDFF9A19265D84979F43F0F6E925A735DDEB38B Wai Xing Zhan Shi (Ch) NES board=Mapper242;PRG=512;CHR=0;VRAM=8;WRAM=8
|
||||
|
||||
;and these are even labeled as bad in goodNES
|
||||
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
|
||||
|
||||
;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
|
||||
sha1:192C543866F1037276D2778046ABEDCA84868E26 Bio Senshi Dan - Increaser To No Tatakai (J) NES board=JALECO-JF-14;PRG=128;CHR=128
|
||||
sha1:E80FF0B707B0D675FDBEF474E3FDB1A83E2B7C44 Mississippi Satsujin Jiken (J) NES board=JALECO-JF-11;PRG=128;CHR=32;PAD_H=1
|
||||
sha1:8A5FD1061ADACDEABF422A2D2E555FF70749AE7C Mississippi Satsujin Jiken (Alt) (J) NES board=GXROM_HACKY;PRG=128;CHR=32;PAD_H=1
|
||||
|
||||
;these roms are in goodNES but theyre junk
|
||||
sha1:4D6117577CE301BB987C5C32FEEF7B132A21B046 Afro Man (Mega Man 3 Hack) (UNL) NES board=TXROM-HOMEBREW;PRG=256;CHR=128;WRAM=8
|
||||
|
||||
#include gamedb_neshomebrew.txt
|
||||
#include gamedb_user.txt
|
||||
|
|
Loading…
Reference in New Issue