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,,,