From 073f1be566ea6b654c51ae0abe961df8d8a72868 Mon Sep 17 00:00:00 2001 From: Souryo Date: Mon, 3 Apr 2017 23:45:24 -0400 Subject: [PATCH] DB: Added more unlicensed games to DB --- Core/Core.vcxproj | 1 + Core/Core.vcxproj.filters | 3 +++ Core/GameDatabase.cpp | 15 ++++++++++----- Core/MapperFactory.cpp | 2 ++ Core/Nina03_06.h | 2 +- Core/RomData.h | 1 + Core/RomLoader.cpp | 1 + Core/UnifBoards.h | 1 + Core/UnifLoader.cpp | 1 + Core/UnifLoader.h | 10 ++++------ Core/UnlPuzzle.h | 24 ++++++++++++++++++++++++ Core/iNesLoader.cpp | 22 +++++++++++++++++----- GUI.NET/Dependencies/MesenDB.txt | 18 ++++++++++++++++-- 13 files changed, 82 insertions(+), 19 deletions(-) create mode 100644 Core/UnlPuzzle.h diff --git a/Core/Core.vcxproj b/Core/Core.vcxproj index b40cb0f6..7653d89c 100644 --- a/Core/Core.vcxproj +++ b/Core/Core.vcxproj @@ -716,6 +716,7 @@ + diff --git a/Core/Core.vcxproj.filters b/Core/Core.vcxproj.filters index ec0f5b66..be92c7d9 100644 --- a/Core/Core.vcxproj.filters +++ b/Core/Core.vcxproj.filters @@ -1123,6 +1123,9 @@ Nes + + Nes\Mappers\Unif + diff --git a/Core/GameDatabase.cpp b/Core/GameDatabase.cpp index 4a679691..a658a88a 100644 --- a/Core/GameDatabase.cpp +++ b/Core/GameDatabase.cpp @@ -4,6 +4,7 @@ #include "../Utilities/CRC32.h" #include "../Utilities/FolderUtilities.h" #include "../Utilities/StringUtilities.h" +#include "../Utilities/HexUtilities.h" #include "GameDatabase.h" #include "EmulationSettings.h" #include "UnifLoader.h" @@ -238,8 +239,6 @@ bool GameDatabase::GetiNesHeader(uint32_t romCrc, NESHeader &nesHeader) InitDatabase(); auto result = _gameDatabase.find(romCrc); if(result != _gameDatabase.end()) { - MessageManager::Log("[DB] Headerless ROM file found - using game database data."); - info = result->second; nesHeader.Byte9 = 0; @@ -330,7 +329,7 @@ void GameDatabase::SetGameInfo(uint32_t romCrc, RomData &romData, bool updateRom } if(!info.Mirroring.empty()) { - MessageManager::Log("[DB] Mirroring: " + string(info.Mirroring.compare("h") == 0 ? "Horizontal" : "Vertical")); + MessageManager::Log("[DB] Mirroring: " + string(info.Mirroring.compare("h") == 0 ? "Horizontal" : (string(info.Mirroring.compare("v") == 0 ? "Vertical" : "4 Screens")))); } MessageManager::Log("[DB] PRG ROM: " + std::to_string(info.PrgRomSize) + " KB"); MessageManager::Log("[DB] CHR ROM: " + std::to_string(info.ChrRomSize) + " KB"); @@ -367,7 +366,9 @@ void GameDatabase::UpdateRomData(GameInfo &info, RomData &romData) romData.System = GetGameSystem(info.System); romData.SubMapperID = GetSubMapper(info); romData.BusConflicts = GetBusConflictType(info.BusConflicts); - romData.ChrRamSize = info.ChrRamSize * 1024; + if(info.ChrRamSize > 0) { + romData.ChrRamSize = info.ChrRamSize * 1024; + } if(info.WorkRamSize > 0) { romData.WorkRamSize = info.WorkRamSize * 1024; } @@ -377,6 +378,10 @@ void GameDatabase::UpdateRomData(GameInfo &info, RomData &romData) romData.HasBattery |= info.HasBattery; if(!info.Mirroring.empty()) { - romData.Mirroring = info.Mirroring.compare("h") == 0 ? MirroringType::Horizontal : MirroringType::Vertical; + switch(info.Mirroring[0]) { + case 'h': romData.Mirroring = MirroringType::Horizontal; break; + case 'v': romData.Mirroring = MirroringType::Vertical; break; + case '4': romData.Mirroring = MirroringType::FourScreens; break; + } } } \ No newline at end of file diff --git a/Core/MapperFactory.cpp b/Core/MapperFactory.cpp index 3dc99254..192490f8 100644 --- a/Core/MapperFactory.cpp +++ b/Core/MapperFactory.cpp @@ -218,6 +218,7 @@ #include "TxSRom.h" #include "Unl43272.h" #include "UnlPci556.h" +#include "UnlPuzzle.h" #include "UNROM.h" #include "UnRom_94.h" #include "UnRom_180.h" @@ -532,6 +533,7 @@ BaseMapper* MapperFactory::GetMapperFromID(RomData &romData) case UnifBoards::T262: return new T262(); case UnifBoards::Tf1201: return new Tf1201(); case UnifBoards::Unl43272: return new Unl43272(); + case UnifBoards::UnlPuzzle: return new UnlPuzzle(); case MapperFactory::NsfMapperID: return new NsfMapper(); case MapperFactory::FdsMapperID: return new FDS(); diff --git a/Core/Nina03_06.h b/Core/Nina03_06.h index 2d642ac2..24cbbfd4 100644 --- a/Core/Nina03_06.h +++ b/Core/Nina03_06.h @@ -21,7 +21,7 @@ protected: void WriteRegister(uint16_t addr, uint8_t value) override { - if((addr & 0x5100) != 0) { + if((addr & 0xE100) == 0x4100) { if(_multicartMode) { //Mapper 113 SelectPRGPage(0, (value >> 3) & 0x07); diff --git a/Core/RomData.h b/Core/RomData.h index b096657a..00d8798f 100644 --- a/Core/RomData.h +++ b/Core/RomData.h @@ -304,6 +304,7 @@ struct RomData vector RawData; uint32_t Crc32 = 0; uint32_t PrgCrc32 = 0; + uint32_t PrgChrCrc32 = 0; bool Error = false; diff --git a/Core/RomLoader.cpp b/Core/RomLoader.cpp index 0adb4ea4..23c52d34 100644 --- a/Core/RomLoader.cpp +++ b/Core/RomLoader.cpp @@ -129,6 +129,7 @@ bool RomLoader::LoadFromMemory(uint8_t* buffer, size_t length, string romName) } else { NESHeader header = { }; if(GameDatabase::GetiNesHeader(crc, header)) { + MessageManager::Log("[DB] Headerless ROM file found - using game database data."); iNesLoader loader; _romData = loader.LoadRom(fileData, &header); } else { diff --git a/Core/UnifBoards.h b/Core/UnifBoards.h index a8a818b9..658a160b 100644 --- a/Core/UnifBoards.h +++ b/Core/UnifBoards.h @@ -48,5 +48,6 @@ namespace UnifBoards { MaliSB, Unl43272, Bmc411120C, + UnlPuzzle, }; } \ No newline at end of file diff --git a/Core/UnifLoader.cpp b/Core/UnifLoader.cpp index c19f56c2..97710703 100644 --- a/Core/UnifLoader.cpp +++ b/Core/UnifLoader.cpp @@ -79,6 +79,7 @@ std::unordered_map UnifLoader::_boardMappings = std::unordered_map< { "NovelDiamond9999999in1", UnifBoards::NovelDiamond }, { "OneBus", UnifBoards::UnknownBoard }, { "PEC-586", UnifBoards::UnknownBoard }, + { "PUZZLE", UnifBoards::UnlPuzzle }, //Doesn't actually exist as a UNIF file (used to reassign a new mapper number to the Puzzle beta) { "RET-CUFROM", 29 }, { "RROM", 0 }, { "RROM-128", 0 }, diff --git a/Core/UnifLoader.h b/Core/UnifLoader.h index 1d9626fc..0fb4582f 100644 --- a/Core/UnifLoader.h +++ b/Core/UnifLoader.h @@ -1,6 +1,7 @@ #pragma once #include "stdafx.h" #include "../Utilities/CRC32.h" +#include "../Utilities/HexUtilities.h" #include "RomData.h" #include "GameDatabase.h" #include "UnifBoards.h" @@ -176,13 +177,10 @@ public: fullRom.insert(fullRom.end(), romData.ChrRom.begin(), romData.ChrRom.end()); romData.Format = RomFormat::Unif; - romData.Crc32 = CRC32::GetCRC(fullRom.data(), fullRom.size());; romData.PrgCrc32 = CRC32::GetCRC(romData.PrgRom.data(), romData.PrgRom.size()); + romData.PrgChrCrc32 = CRC32::GetCRC(fullRom.data(), fullRom.size()); - stringstream crcHex; - crcHex << std::hex << std::uppercase << std::setfill('0') << std::setw(8) << romData.Crc32; - MessageManager::Log("PRG+CHR CRC32: 0x" + crcHex.str()); - + MessageManager::Log("PRG+CHR CRC32: 0x" + HexUtilities::ToHex(romData.PrgChrCrc32)); MessageManager::Log("[UNIF] Board Name: " + _mapperName); MessageManager::Log("[UNIF] PRG ROM: " + std::to_string(romData.PrgRom.size() / 1024) + " KB"); MessageManager::Log("[UNIF] CHR ROM: " + std::to_string(romData.ChrRom.size() / 1024) + " KB"); @@ -202,7 +200,7 @@ public: MessageManager::Log("[UNIF] Mirroring: " + mirroringType); MessageManager::Log("[UNIF] Battery: " + string(romData.HasBattery ? "Yes" : "No")); - GameDatabase::SetGameInfo(romData.Crc32, romData, !EmulationSettings::CheckFlag(EmulationFlags::DisableGameDatabase)); + GameDatabase::SetGameInfo(romData.PrgChrCrc32, romData, !EmulationSettings::CheckFlag(EmulationFlags::DisableGameDatabase)); if(romData.MapperID == UnifBoards::UnknownBoard) { MessageManager::DisplayMessage("Error", "UnsupportedMapper", "UNIF: " + _mapperName); diff --git a/Core/UnlPuzzle.h b/Core/UnlPuzzle.h new file mode 100644 index 00000000..1388fdff --- /dev/null +++ b/Core/UnlPuzzle.h @@ -0,0 +1,24 @@ +#pragma once +#include "stdafx.h" +#include "BaseMapper.h" + +class UnlPuzzle : public BaseMapper +{ +protected: + virtual uint16_t GetPRGPageSize() override { return 0x8000; } + virtual uint16_t GetCHRPageSize() override { return 0x2000; } + virtual uint16_t RegisterStartAddress() override { return 0x4100; } + virtual uint16_t RegisterEndAddress() override { return 0xFFFF; } + + void InitMapper() override + { + SelectPRGPage(0, 0); + SelectCHRPage(0, 0); + } + + void WriteRegister(uint16_t addr, uint8_t value) override + { + SelectPRGPage(0, (value >> 3) & 0x01); + SelectCHRPage(0, value & 0x07); + } +}; \ No newline at end of file diff --git a/Core/iNesLoader.cpp b/Core/iNesLoader.cpp index d3ca3ef7..856d14bb 100644 --- a/Core/iNesLoader.cpp +++ b/Core/iNesLoader.cpp @@ -1,6 +1,7 @@ #include "stdafx.h" #include "iNesLoader.h" #include "../Utilities/CRC32.h" +#include "../Utilities/HexUtilities.h" #include "GameDatabase.h" #include "EmulationSettings.h" @@ -46,16 +47,27 @@ RomData iNesLoader::LoadRom(vector& romFile, NESHeader *preloadedHeader buffer += 512; } - uint32_t romCrc = CRC32::GetCRC(buffer, header.GetPrgSize() + header.GetChrSize()); + int bytesRead = buffer - romFile.data(); + + uint32_t romCrc = CRC32::GetCRC(buffer, romFile.size() - bytesRead); + romData.PrgChrCrc32 = romCrc; + + NESHeader dbHeader; + GameDatabase::GetiNesHeader(romData.PrgChrCrc32, dbHeader); + if(dbHeader.GetPrgSize() != header.GetPrgSize() || dbHeader.GetChrSize() != header.GetChrSize()) { + if(dbHeader.GetPrgSize() + dbHeader.GetChrSize() + bytesRead <= romFile.size()) { + //Use corrected PRG/CHR sizes from the DB when reading from file + header = dbHeader; + } + } + romData.PrgRom.insert(romData.PrgRom.end(), buffer, buffer + header.GetPrgSize()); buffer += header.GetPrgSize(); romData.ChrRom.insert(romData.ChrRom.end(), buffer, buffer + header.GetChrSize()); romData.PrgCrc32 = CRC32::GetCRC(romData.PrgRom.data(), romData.PrgRom.size()); - stringstream crcHex; - crcHex << std::hex << std::uppercase << std::setfill('0') << std::setw(8) << romCrc; - MessageManager::Log("PRG+CHR CRC32: 0x" + crcHex.str()); + MessageManager::Log("PRG+CHR CRC32: 0x" + HexUtilities::ToHex(romData.PrgChrCrc32)); if(romData.IsNes20Header) { MessageManager::Log("[iNes] NES 2.0 file: Yes"); @@ -81,7 +93,7 @@ RomData iNesLoader::LoadRom(vector& romFile, NESHeader *preloadedHeader MessageManager::Log("[iNes] Trainer: Yes"); } - GameDatabase::SetGameInfo(romCrc, romData, !EmulationSettings::CheckFlag(EmulationFlags::DisableGameDatabase) && header.GetRomHeaderVersion() != RomHeaderVersion::Nes2_0); + GameDatabase::SetGameInfo(romData.PrgChrCrc32, romData, !EmulationSettings::CheckFlag(EmulationFlags::DisableGameDatabase) && header.GetRomHeaderVersion() != RomHeaderVersion::Nes2_0); return romData; } diff --git a/GUI.NET/Dependencies/MesenDB.txt b/GUI.NET/Dependencies/MesenDB.txt index 6e26fea8..7fee5c1f 100644 --- a/GUI.NET/Dependencies/MesenDB.txt +++ b/GUI.NET/Dependencies/MesenDB.txt @@ -4,7 +4,7 @@ # # Automatically generated database based on Nestopia's DB and NesCartDB # -# Generated on 01/04/2017 using: +# Generated on 03/04/2017 using: # -NesCartDB (dated 2016-08-20) # -Nestopia UE's latest DB (dated 2015-10-22) # @@ -258,6 +258,7 @@ 145A9A6C,Famicom,HVC-SROM,HVC-SROM-03,,0,16,8,,0,0,0,h,, 1460EC7B,Dendy,,,,15,128,,8,8,0,0,h,SubOrKeyboard, 147733DF,Famicom,,,,226,2048,,8,0,0,0,,, +1488E95F,NesNtsc,,,,146,64,64,,0,0,0,v,, 149C0EC3,Famicom,,,,1,128,128,,0,8,1,,, 14A81635,NesNtsc,COLORDREAMS-74*377,UNK-COLORDREAMS-REVB,,11,64,64,,0,0,0,v,, 14CD576E,Famicom,,,,1,128,128,,0,0,0,,, @@ -582,6 +583,7 @@ 2F66E302,NesNtsc,NES-UNROM,NES-UN-ROM-07,,2,128,,8,0,0,0,v,, 2F698C4D,NesNtsc,NES-CNROM,NES-CNROM-07,,3,32,32,,0,0,0,v,FourPlayer, 2F8EC233,Famicom,,,,236,128,64,8,0,0,0,,, +2FA8CBB4,NesNtsc,UNL-PUZZLE,,,65000,32,32,,0,0,0,h,, 2FC1ABAE,Famicom,,,,1,128,128,,0,0,0,,, 2FD2E632,NesPal,,,,1,256,,8,0,0,0,,, 2FE20D79,NesNtsc,NES-TLROM,NES-TLROM-03,MMC3C,4,128,256,,0,0,0,,, @@ -727,6 +729,7 @@ 3DE9BB55,Famicom,,,,2,128,,8,0,0,0,v,, 3E00A373,Famicom,HVC-CNROM,HVC-CNROM-256K-01,,3,32,32,,0,0,0,v,, 3E1271D5,NesNtsc,AVE-NINA-03,NINA-03 REV. A,,79,32,32,,0,0,0,v,, +3E170708,NesNtsc,,,,139,64,16,,0,0,0,h,, 3E470FE0,Famicom,HVC-TLROM,HVC-TLROM-04,MMC3B,4,128,128,,0,0,0,,FourPlayer, 3E58A87E,NesNtsc,NES-SLROM,NES-SLROM-03,MMC1A,1,128,128,,0,0,0,,Zapper, 3E59E951,NesNtsc,UNL-RACERMATE,R981-112-00,,168,64,,64,0,0,0,h,, @@ -862,7 +865,7 @@ 490E8A4C,Famicom,KONAMI-VRC-4,352400,VRC4,25,256,256,,0,0,0,,, 49123146,Famicom,KONAMI-VRC-2,350636,VRC2,23,128,128,,0,0,0,,, 491ACB83,NesNtsc,,,,3,32,32,,0,0,0,h,, -491CD95E,NesNtsc,,,,4,128,256,,0,0,0,,, +491CD95E,NesNtsc,,,,4,128,256,,0,0,0,4,, 491D8CDB,Famicom,NAMCOT-3406,LROG052-00,109,206,128,64,,0,0,0,h,, 493BD2FF,Famicom,HVC-NROM-128,9011-04,,0,16,8,,0,0,0,v,, 4942BDA8,Famicom,,,,4,256,128,,0,8,1,,, @@ -884,6 +887,7 @@ 4B750880,NesPal,NES-TLROM,NES-TLROM-03,MMC3C,4,128,256,,0,0,0,,, 4BB6B430,Famicom,HVC-CNROM,CN-04B,,3,32,32,,0,0,0,v,, 4BB9B840,NesPal,NES-TLROM,NES-TLROM-03,MMC3B,4,128,128,,0,0,0,,, +4BC75F16,NesNtsc,,,,11,64,64,,0,0,0,v,, 4BD3BECF,Famicom,,,,61,512,,8,0,0,0,,, 4BF72F9D,Famicom,,,,0,32,8,,0,0,0,h,, 4C049CFE,Famicom,SUNSOFT-FME-7,GRM-E301,FME-7,69,128,256,,0,0,0,,, @@ -1026,6 +1030,7 @@ 58C7DDAF,NesNtsc,NES-TLROM,NES-TLROM-03,MMC3B,4,128,128,,0,0,0,,, 58C94F66,Famicom,HVC-FAMILYBASIC,,,0,32,8,,0,2,1,v,FamilyKeyboard, 58CFE142,NesNtsc,,,,4,256,128,,0,0,0,,, +58D1F46A,NesNtsc,,,,139,64,16,,0,0,0,h,, 58E63E82,Famicom,,,,112,128,256,,0,0,0,,, 59005CCE,Famicom,,,,0,32,8,,0,0,0,h,, 59114E78,Famicom,,,,4,256,128,,0,0,0,,, @@ -1221,6 +1226,7 @@ 68EC97CB,NesNtsc,NES-SKROM,NES-SKROM-02,MMC1A,1,128,128,,8,0,0,,, 68F9B5F5,NesPal,NES-SGROM,NES-SGROM-04,MMC1B2,1,256,,8,0,0,0,,, 68FE207F,Famicom,,,,52,1024,1024,,8,0,0,,, +692F2096,NesNtsc,,,,11,64,64,,0,0,0,v,,N 6944A01A,NesNtsc,NES-TLROM,NES-TLROM-03,MMC3B,4,128,128,,0,0,0,,, 694C801F,NesPal,NES-AOROM,NES-AOROM-03,,7,256,,8,0,0,0,,, 695515A2,NesNtsc,NES-SLROM,NES-SLROM-03,MMC1A,1,128,128,,0,0,0,,, @@ -1369,6 +1375,7 @@ 7712BD99,VsUni,,,,99,32,16,4,0,0,0,,, 771C8855,NesNtsc,NES-TLROM,NES-TLROM-03,MMC3B,4,128,128,,0,0,0,,, 771CE357,Famicom,HVC-SNROM,HVC-SNROM-09,MMC1B2,1,256,,8,0,8,1,,, +7739672E,Famicom,,,,146,32,32,,0,0,0,v,, 77512388,Famicom,,,,0,16,8,,0,0,0,v,, 7751588D,NesPal,NES-SNROM,NES-SNROM-02,MMC1A,1,128,,8,8,0,0,,, 77833016,NesNtsc,NES-NROM-256,NES-NROM-256-01,,0,32,8,,0,0,0,v,, @@ -1439,6 +1446,7 @@ 7DA77F11,NesPal,NES-TLROM,NES-TLROM-03,MMC3C,4,128,128,,0,0,0,,, 7DCB4C18,NesNtsc,NES-SLROM,NES-SLROM-06,MMC1B3,1,128,128,,0,0,0,,, 7DCBEA73,Famicom,,,,3,32,16,,0,0,0,v,, +7DD0AFC8,NesNtsc,,,,147,64,128,,0,0,0,v,, 7DE81BC5,Famicom,,,,198,640,,8,1,8,1,,, 7E053E64,Famicom,NAMCOT-3301,3301,,0,16,8,,0,0,0,h,, 7E26C7D0,Famicom,,,,2,128,,8,0,0,0,v,, @@ -1473,6 +1481,7 @@ 806DE21E,NesPal,NES-AOROM,NES-AOROM-03,,7,256,,8,0,0,0,,, 80796845,Famicom,,,,2,128,,8,0,0,0,v,, 808606F0,Famicom,NAMCOT-175,110F0 B,175,210,128,128,,0,0,0,v,, +80D63472,NesNtsc,,,,145,16,16,,0,0,0,h,, 80EB1839,Famicom,,,,215,256,256,,0,0,0,,, 80FB7E6B,Famicom,HVC-TSROM,HVC-TSROM-04,MMC3C,4,128,128,,8,0,0,,, 8106E694,NesPal,NES-SLROM,NES-SLROM-06,MMC1B2,1,128,128,,0,0,0,,, @@ -1904,6 +1913,7 @@ A16AB939,Famicom,,,,2,128,,8,0,0,0,h,, A1A0C13F,NesPal,NES-SLROM,NES-SLROM-06,MMC1B2,1,128,128,,0,0,0,,, A1A33B85,Famicom,,,,1,128,128,,0,8,1,,, A1C0DA00,NesPal,NES-NROM-256,NES-NROM-256-06,,0,32,8,,0,0,0,h,, +A1DC16C0,NesNtsc,UNL-SHERO,,,65000,512,512,,0,0,0,4,, A1F90826,NesPal,NES-SJROM,NES-SJROM-03,MMC1B3,1,128,32,,8,0,0,,, A1FF4E1D,NesNtsc,NES-SLROM,NES-SLROM-06,MMC1B2,1,128,128,,0,0,0,,, A20B4983,NesNtsc,Sachen-8259A,,,65000,128,64,,0,0,0,h,, @@ -2182,6 +2192,7 @@ B8747ABF,Famicom,,,,1,256,,8,0,32,1,,TurboFile, B87AB35A,Famicom,HVC-NROM-128,3A,,0,16,8,,0,0,0,v,, B89888C9,NesNtsc,CAMERICA-ALGQ,ALGQV1-1,,232,256,,8,0,0,0,v,Aladdin, B8B9ACA3,NesNtsc,NES-NROM-128,NES-NROM-128-01,,0,16,8,,0,0,0,v,Zapper, +B8DAD5D2,NesNtsc,,,,146,64,64,,0,0,0,v,, B918580C,NesNtsc,NES-SLROM,NES-SLROM-06,MMC1B2,1,128,128,,0,0,0,,, B95E9E7F,NesNtsc,NES-PNROM,NES-PNROM-05,MMC2,9,128,128,,0,0,0,,, B976219A,Famicom,HVC-TLROM,HVC-TLROM-04,MMC3B,4,128,128,,0,0,0,,, @@ -2703,6 +2714,7 @@ E3E2C3BF,Famicom,HVC-CNROM,N04,,3,32,32,,0,0,0,h,, E3F3F6AE,Famicom,,,,3,32,32,,0,0,0,h,, E402B134,NesPal,NES-CNROM,NES-CNROM-08,,3,32,32,,0,0,0,v,, E40B4973,Famicom,NAMCOT-3451,3451,118,206,32,32,,0,0,0,v,, +E41B440F,NesNtsc,,,,3,16,16,,0,0,0,h,, E429F0D3,Famicom,HVC-SLROM,HVC-SLROM-03,MMC1A,1,128,128,,0,0,0,,, E4362167,Famicom,KONAMI-VRC-7,353429,VRC7,85,128,128,,0,0,0,,, E44001D8,Famicom,HVC-SGROM,HVC-SGROM-03,MMC1B2,1,128,,8,0,0,0,,PartyTap, @@ -2892,6 +2904,7 @@ F4E5DF0E,Famicom,,,,4,128,128,,0,0,0,,, F518DD58,NesNtsc,NES-AMROM,NES-AMROM-01,,7,128,,8,0,0,0,,, F51A7F46,Famicom,,,,157,256,,8,0,0,0,,, F532F09A,NesNtsc,NES-SLROM,NES-SLROM-03,MMC1A,1,128,128,,0,0,0,,, +F5350410,NesNtsc,,,,113,16,16,,0,0,0,h,, F540677B,Famicom,HVC-EWROM,HVC-EWROM-03,MMC5,5,512,256,,0,32,1,,, F54B34BD,NesNtsc,NES-CNROM,NES-CNROM-07,,3,32,32,,0,0,0,v,FourPlayer, F56135C0,Famicom,HVC-TLROM,HVC-TLROM-03,MMC3B,4,128,128,,0,0,0,,, @@ -2972,6 +2985,7 @@ FAAD108A,Dendy,,,,0,32,8,,0,0,0,v,, FAF3582F,Dendy,,,,0,32,8,,0,0,0,h,, FB0DDDE7,VsUni,,,,99,32,16,4,0,0,0,,, FB1C0551,Famicom,HVC-SNROM,HVC-SNROM-09,MMC1B3,1,256,,8,0,8,1,,, +FB2B6B10,NesNtsc,,,,241,1024,,,0,0,0,h,, FB2F949F,Famicom,,,,112,128,256,,0,0,0,,, FB3439FC,NesNtsc,SACHEN-8259A,TC-30-2,SA8259A,141,128,256,,0,0,0,,, FB69743A,Famicom,HVC-SOROM,HVC-SOROM-03,MMC1A,1,256,,8,8,8,1,,,