DB: Added more unlicensed games to DB

This commit is contained in:
Souryo 2017-04-03 23:45:24 -04:00
parent 619bc956bd
commit 073f1be566
13 changed files with 82 additions and 19 deletions

View file

@ -716,6 +716,7 @@
<ClInclude Include="UnifBoards.h" />
<ClInclude Include="UnifLoader.h" />
<ClInclude Include="Unl43272.h" />
<ClInclude Include="UnlPuzzle.h" />
<ClInclude Include="VideoHud.h" />
<ClInclude Include="VideoRenderer.h" />
<ClInclude Include="UnlPci556.h" />

View file

@ -1123,6 +1123,9 @@
<ClInclude Include="Types.h">
<Filter>Nes</Filter>
</ClInclude>
<ClInclude Include="UnlPuzzle.h">
<Filter>Nes\Mappers\Unif</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="stdafx.cpp">

View file

@ -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;
}
}
}

View file

@ -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();

View file

@ -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);

View file

@ -304,6 +304,7 @@ struct RomData
vector<uint8_t> RawData;
uint32_t Crc32 = 0;
uint32_t PrgCrc32 = 0;
uint32_t PrgChrCrc32 = 0;
bool Error = false;

View file

@ -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 {

View file

@ -48,5 +48,6 @@ namespace UnifBoards {
MaliSB,
Unl43272,
Bmc411120C,
UnlPuzzle,
};
}

View file

@ -79,6 +79,7 @@ std::unordered_map<string, int> 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 },

View file

@ -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);

24
Core/UnlPuzzle.h Normal file
View file

@ -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);
}
};

View file

@ -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<uint8_t>& 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<uint8_t>& 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;
}

View file

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