Add NES 2.0 <-> UNIF board mappings (mapper #256+)

This commit is contained in:
Sour 2018-07-08 12:32:14 -04:00
parent 6fe1661e1d
commit d2da208167
5 changed files with 150 additions and 152 deletions

View file

@ -536,74 +536,121 @@ BaseMapper* MapperFactory::GetMapperFromID(RomData &romData)
case 254: return new MMC3_254();
case 255: return new Bmc255();
case UnifBoards::A65AS: return new A65AS();
case 256: break; //ONEBUS
case 257: break; //PEC-586
case 258: return new Unl158B();
case 259: return new MMC3_BmcF15();
case 260: return new BmcHpxx();
case 261: return new Bmc810544CA1();
case 262: return new MMC3_StreetHeroes();
case 263: return new MMC3_Kof97();
case 264: return new Yoko();
case 265: return new T262();
case 266: return new CityFighter();
//267
case 268: return new MMC3_Coolboy();
//269-270
case 271: break; //22026
//272-273
case 274: return new Bmc80013B();
//275-282
case 283: return new Gs2004();
case 284: return new UnlDripGame();
case 285: return new A65AS();
case 286: return new Bs5();
case 287: return new MMC3_Bmc411120C(); //+ K-3088
case 288: break; //GKCXIN1
case 289: return new Bmc60311C();
case 290: return new BmcNtd03();
//291
case 292: return new DragonFighter();
//293-294
case 295: break; //13IN1JY110
//296-297
case 298: return new Tf1201();
case 299: return new Bmc11160();
case 300: return new Bmc190in1();
case 301: return new Bmc8157();
case 302: return new Kaiser7057();
case 303: return new Kaiser7017();
case 304: return new Smb2j();
case 305: return new Kaiser7031();
case 306: return new Kaiser7016();
case 307: return new Kaiser7037();
case 308: break; //TH2131-1
case 309: break; //LH51
//310-311
case 312: return new Kaiser7013B();
case 313: break; //RESET-TXROM
case 314: return new Bmc64in1NoRepeat();
case 315: break; //830134C
//316-318
case 319: return new Hp898f();
case 320: break; //830425C-4391T
//321
case 322: break; //K-3033
case 323: break; //FARID_SLROM_8-IN-1
case 324: break; //FARID_UNROM_8-IN-1
case 325: return new MMC3_MaliSB();
case 327: break; //10-24-C-A1
case 328: return new Rt01();
case 329: return new Edu2000();
//330
case 331: return new Bmc12in1();
case 332: return new Super40in1Ws();
case 333: return new Bmc8in1(); // + NEWSTAR-GRM070-8IN1
//334
case 335: break; //CTC-09
case 336: break; //K-3046
case 337: break; //CTC-12IN1
case 338: break; //SA005-A
case 339: break; //K-3006
case 340: break; //K-3036
case 341: break; //TJ-03
case 342: break; //COOLGIRL
//343
case 344: break; //GN26
case 345: break; //L6IN1
case 346: return new Kaiser7012();
//347
case 348: return new Bmc830118C();
case 349: return new BmcG146();
case 350: break; //891227
case 513: return new Sachen9602();
//514-517
case 518: return new Dance2000();
case 519: return new Eh8813A();
//520
case 521: return new DreamTech01();
case 522: return new Lh10();
//523
case 524: break; //900218
case 525: break; //KS7021A
case 526: break; //BJ56
case 527: break; //AX40G
case 528: break; //831128C
case 529: return new T230();
case 530: return new Ax5705();
case UnifBoards::Ac08: return new Ac08();
case UnifBoards::Ax5705: return new Ax5705();
case UnifBoards::Bb: return new Bb();
case UnifBoards::Bmc11160: return new Bmc11160();
case UnifBoards::Bmc12in1: return new Bmc12in1();
case UnifBoards::Bmc411120C: return new MMC3_Bmc411120C();
case UnifBoards::Bmc64in1NoRepeat: return new Bmc64in1NoRepeat();
case UnifBoards::Bmc70in1: return new Bmc70in1();
case UnifBoards::Bmc70in1B: return new Bmc70in1();
case UnifBoards::Bmc190in1: return new Bmc190in1();
case UnifBoards::Bmc60311C: return new Bmc60311C();
case UnifBoards::Bmc810544CA1: return new Bmc810544CA1();
case UnifBoards::Bmc830118C: return new Bmc830118C();
case UnifBoards::Bmc80013B: return new Bmc80013B();
case UnifBoards::Bmc8157: return new Bmc8157();
case UnifBoards::Bmc8in1: return new Bmc8in1();
case UnifBoards::BmcF15: return new MMC3_BmcF15();
case UnifBoards::BmcG146: return new BmcG146();
case UnifBoards::BmcGn45: return new BmcGn45();
case UnifBoards::BmcHpxx: return new BmcHpxx();
case UnifBoards::BmcNtd03: return new BmcNtd03();
case UnifBoards::Bs5: return new Bs5();
case UnifBoards::Cc21: return new Cc21();
case UnifBoards::CityFighter: return new CityFighter();
case UnifBoards::Coolboy: return new MMC3_Coolboy();
case UnifBoards::Dance2000: return new Dance2000();
case UnifBoards::DragonFighter: return new DragonFighter();
case UnifBoards::DreamTech01: return new DreamTech01();
case UnifBoards::Edu2000: return new Edu2000();
case UnifBoards::Eh8813A: return new Eh8813A();
case UnifBoards::Fk23C: return new MMC3_Fk23C(false);
case UnifBoards::Fk23Ca: return new MMC3_Fk23C(true);
case UnifBoards::Ghostbusters63in1: return new Ghostbusters63in1();
case UnifBoards::Gs2004: return new Gs2004();
case UnifBoards::Gs2013: return new Gs2013();
case UnifBoards::Hp898f: return new Hp898f();
case UnifBoards::Kof97: return new MMC3_Kof97();
case UnifBoards::Ks7012: return new Kaiser7012();
case UnifBoards::Ks7013B: return new Kaiser7013B();
case UnifBoards::Ks7016: return new Kaiser7016();
case UnifBoards::Ks7017: return new Kaiser7017();
case UnifBoards::Ks7031: return new Kaiser7031();
case UnifBoards::Ks7037: return new Kaiser7037();
case UnifBoards::Ks7057: return new Kaiser7057();
case UnifBoards::Lh10: return new Lh10();
case UnifBoards::Malee: return new Malee();
case UnifBoards::MaliSB: return new MMC3_MaliSB();
case UnifBoards::NovelDiamond: return new NovelDiamond();
case UnifBoards::Rt01: return new Rt01();
case UnifBoards::Sachen9602: return new Sachen9602();
case UnifBoards::Smb2j: return new Smb2j();
case UnifBoards::SssNrom256: return new FamicomBox();
case UnifBoards::StreetHeroes: return new MMC3_StreetHeroes();
case UnifBoards::Super24in1Sc03: return new MMC3_Super24in1Sc03();
case UnifBoards::Super40in1Ws: return new Super40in1Ws();
case UnifBoards::T230: return new T230();
case UnifBoards::T262: return new T262();
case UnifBoards::Tf1201: return new Tf1201();
case UnifBoards::Unl158B: return new Unl158B();
case UnifBoards::Unl255in1: return new Unl255in1();
case UnifBoards::Unl43272: return new Unl43272();
case UnifBoards::Unl8237A: return new Unl8237A();
case UnifBoards::UnlD1038: return new UnlD1038();
case UnifBoards::UnlDripGame: return new UnlDripGame();
case UnifBoards::UnlPuzzle: return new UnlPuzzle();
case UnifBoards::UnlVrc7: return new UnlVrc7();
case UnifBoards::Yoko: return new Yoko();
case MapperFactory::NsfMapperID: return new NsfMapper();
case MapperFactory::FdsMapperID: return new FDS();

View file

@ -7,7 +7,7 @@ uint16_t NESHeader::GetMapperID()
{
switch(GetRomHeaderVersion()) {
case RomHeaderVersion::Nes2_0:
return ((Byte8 & 0x0F) << 4) | (Byte7 & 0xF0) | (Byte6 >> 4);
return ((Byte8 & 0x0F) << 8) | (Byte7 & 0xF0) | (Byte6 >> 4);
default:
case RomHeaderVersion::iNes:
return (Byte7 & 0xF0) | (Byte6 >> 4);

View file

@ -5,73 +5,23 @@ namespace UnifBoards {
enum UnifBoards
{
UnknownBoard = 32768,
Tf1201,
Coolboy,
Smb2j,
Malee,
StreetHeroes,
DreamTech01,
Edu2000,
Eh8813A,
Gs2013,
Gs2004,
NovelDiamond,
Kof97,
T230,
T262,
A65AS,
Bs5,
Bmc190in1,
Ghostbusters63in1,
Bmc70in1,
Bmc70in1B,
Ax5705,
Super24in1Sc03,
Super40in1Ws,
Cc21,
Rt01,
Hp898f,
Bb,
Ac08,
Bmc11160,
Bmc12in1,
Bmc64in1NoRepeat,
Bmc810544CA1,
Bmc8157,
Bmc830118C,
Bmc8in1,
BmcF15,
BmcG146,
BmcNtd03,
Lh10,
Ks7012,
Ks7013B,
Ks7016,
Ks7017,
Ks7031,
Ks7037,
Ks7057,
MaliSB,
Unl43272,
Bmc411120C,
UnlPuzzle,
Fk23C,
Fk23Ca,
Unl255in1,
UnlD1038,
Sachen9602,
Unl158B,
Bmc80013B,
Dance2000,
CityFighter,
UnlVrc7,
Yoko,
Unl8237A,
BmcHpxx,
DragonFighter,
BmcGn45,
UnlDripGame,
SssNrom256,
Bmc60311C,
};
}

View file

@ -2,42 +2,42 @@
#include "UnifLoader.h"
std::unordered_map<string, int> UnifLoader::_boardMappings = std::unordered_map<string, int> {
{ "11160", UnifBoards::Bmc11160 },
{ "12-IN-1", UnifBoards::Bmc12in1 },
{ "11160", 299 },
{ "12-IN-1", 331 },
{ "13in1JY110", UnifBoards::UnknownBoard },
{ "190in1", UnifBoards::Bmc190in1 },
{ "190in1", 300 },
{ "22211", 132 },
{ "255in1", UnifBoards::Unl255in1 }, //Doesn't actually exist as a UNIF file (used to assign a mapper to the 255-in-1 rom)
{ "3D-BLOCK", UnifBoards::UnknownBoard },
{ "411120-C", UnifBoards::Bmc411120C },
{ "411120-C", 287 },
{ "42in1ResetSwitch", 226 },
{ "43272", UnifBoards::Unl43272 },
{ "603-5052", 238 },
{ "64in1NoRepeat", UnifBoards::Bmc64in1NoRepeat },
{ "70in1", UnifBoards::Bmc70in1 },
{ "70in1B", UnifBoards::Bmc70in1B },
{ "810544-C-A1", UnifBoards::Bmc810544CA1 },
{ "8157", UnifBoards::Bmc8157 },
{ "64in1NoRepeat", 314 },
{ "70in1", 236 },
{ "70in1B", 236 },
{ "810544-C-A1", 261 },
{ "8157", 301 },
{ "8237", 215 },
{ "8237A", UnifBoards::Unl8237A },
{ "830118C", UnifBoards::Bmc830118C },
{ "A65AS", UnifBoards::A65AS },
{ "830118C", 348 },
{ "A65AS", 285 },
{ "AC08", UnifBoards::Ac08 },
{ "ANROM", 7 },
{ "AX5705", UnifBoards::Ax5705 },
{ "AX5705", 530 },
{ "BB", UnifBoards::Bb },
{ "BS-5", UnifBoards::Bs5 },
{ "BS-5", 286 },
{ "CC-21", UnifBoards::Cc21 },
{ "CITYFIGHT", UnifBoards::CityFighter },
{ "COOLBOY", UnifBoards::Coolboy },
{ "CITYFIGHT", 266 },
{ "COOLBOY", 268 },
{ "10-24-C-A1", UnifBoards::UnknownBoard },
{ "CNROM", 3 },
{ "CPROM", 13 },
{ "D1038", UnifBoards::UnlD1038 },
{ "DANCE", UnifBoards::UnknownBoard },
{ "DANCE2000", UnifBoards::Dance2000 },
{ "DREAMTECH01", UnifBoards::DreamTech01 },
{ "EDU2000", UnifBoards::Edu2000 },
{ "DANCE2000", 518 },
{ "DREAMTECH01", 521 },
{ "EDU2000", 329 },
{ "EKROM", 5 },
{ "ELROM", 5 },
{ "ETROM", 5 },
@ -45,30 +45,30 @@ std::unordered_map<string, int> UnifLoader::_boardMappings = std::unordered_map<
{ "FK23C", UnifBoards::Fk23C },
{ "FK23CA", UnifBoards::Fk23Ca },
{ "FS304", 162 },
{ "G-146", UnifBoards::BmcG146 },
{ "G-146", 349 },
{ "GK-192", 58 },
{ "GS-2004", UnifBoards::Gs2004 },
{ "GS-2004", 283 },
{ "GS-2013", UnifBoards::Gs2013 },
{ "Ghostbusters63in1", UnifBoards::Ghostbusters63in1 },
{ "H2288", 123 },
{ "HKROM", 4 },
{ "KOF97", UnifBoards::Kof97 },
{ "KOF97", 263 },
{ "KONAMI-QTAI", 190 },
{ "KS7010", UnifBoards::UnknownBoard },
{ "KS7012", UnifBoards::Ks7012 },
{ "KS7013B", UnifBoards::Ks7013B },
{ "KS7016", UnifBoards::Ks7016 },
{ "KS7017", UnifBoards::Ks7017 },
{ "KS7012", 346 },
{ "KS7013B", 312 },
{ "KS7016", 306 },
{ "KS7017", 303 },
{ "KS7030", UnifBoards::UnknownBoard },
{ "KS7031", UnifBoards::Ks7031 },
{ "KS7031", 305 },
{ "KS7032", 142 },
{ "KS7037", UnifBoards::Ks7037 },
{ "KS7057", UnifBoards::Ks7057 },
{ "KS7037", 307 },
{ "KS7057", 302 },
{ "LE05", UnifBoards::UnknownBoard },
{ "LH10", UnifBoards::Lh10 },
{ "LH10", 522 },
{ "LH32", 125 },
{ "LH53", UnifBoards::UnknownBoard },
{ "MALISB", UnifBoards::MaliSB },
{ "MALISB", 325 },
{ "MARIO1-MALEE2", UnifBoards::Malee },
{ "MHROM", 66 },
{ "N625092", 221 },
@ -76,7 +76,7 @@ std::unordered_map<string, int> UnifLoader::_boardMappings = std::unordered_map<
{ "NROM-128", 0 },
{ "NROM-256", 0 },
{ "NTBROM", 68 },
{ "NTD-03", UnifBoards::BmcNtd03 },
{ "NTD-03", 290 },
{ "NovelDiamond9999999in1", UnifBoards::NovelDiamond },
{ "OneBus", UnifBoards::UnknownBoard },
{ "PEC-586", UnifBoards::UnknownBoard },
@ -91,7 +91,7 @@ std::unordered_map<string, int> UnifLoader::_boardMappings = std::unordered_map<
{ "SA-016-1M", 146 },
{ "SA-72007", 145 },
{ "SA-72008", 133 },
{ "SA-9602B", UnifBoards::Sachen9602 },
{ "SA-9602B", 513 },
{ "SA-NROM", 143 },
{ "SAROM", 1 },
{ "SBROM", 1 },
@ -99,13 +99,13 @@ std::unordered_map<string, int> UnifLoader::_boardMappings = std::unordered_map<
{ "SCROM", 1 },
{ "SEROM", 1 },
{ "SGROM", 1 },
{ "SHERO", UnifBoards::StreetHeroes },
{ "SHERO", 262 },
{ "SKROM", 1 },
{ "SL12", 116 },
{ "SL1632", 14 },
{ "SL1ROM", 1 },
{ "SLROM", 1 },
{ "SMB2J", UnifBoards::Smb2j },
{ "SMB2J", 304 },
{ "SNROM", 1 },
{ "SOROM", 1 },
{ "SSS-NROM-256", UnifBoards::SssNrom256 },
@ -120,13 +120,13 @@ std::unordered_map<string, int> UnifLoader::_boardMappings = std::unordered_map<
{ "SuperHIK8in1", 45 },
{ "Supervision16in1", 53 },
{ "T-227-1", UnifBoards::UnknownBoard },
{ "T-230", UnifBoards::T230 },
{ "T-262", UnifBoards::T262 },
{ "T-230", 529 },
{ "T-262", 265 },
{ "TBROM", 4 },
{ "TC-U01-1.5M", 147 },
{ "TEK90", 90 },
{ "TEROM", 4 },
{ "TF1201", UnifBoards::Tf1201 },
{ "TF1201", 298 },
{ "TFROM", 4 },
{ "TGROM", 4 },
{ "TKROM", 4 },
@ -144,23 +144,24 @@ std::unordered_map<string, int> UnifLoader::_boardMappings = std::unordered_map<
{ "UNROM-512-32", 30 },
{ "UOROM", 2 },
{ "VRC7", UnifBoards::UnlVrc7 },
{ "YOKO", UnifBoards::Yoko },
{ "YOKO", 264 },
{ "SB-2000", UnifBoards::UnknownBoard },
{ "158B", UnifBoards::Unl158B },
{ "DRAGONFIGHTER", UnifBoards::DragonFighter },
{ "EH8813A", UnifBoards::Eh8813A },
{ "HP898F", UnifBoards::Hp898f },
{ "F-15", UnifBoards::BmcF15 },
{ "RT-01", UnifBoards::Rt01 },
{ "158B", 258 },
{ "DRAGONFIGHTER", 292 },
{ "EH8813A", 519 },
{ "HP898F", 319 },
{ "F-15", 259 },
{ "RT-01", 328 },
{ "81-01-31-C", UnifBoards::UnknownBoard },
{ "8-IN-1", UnifBoards::Bmc8in1 },
{ "WS", UnifBoards::Super40in1Ws },
{ "80013-B", UnifBoards::Bmc80013B },
{ "8-IN-1", 333 },
{ "WS", 332 },
{ "80013-B", 274 },
{ "WAIXING-FW01", 227 },
{ "WAIXING-FS005", UnifBoards::UnknownBoard },
{ "HPxx", UnifBoards::BmcHpxx },
{ "HPxx", 260 },
{ "HP2018A", 260 },
{ "GN-45", UnifBoards::BmcGn45 }, //Doesn't actually exist as a UNIF file (used to assign a mapper to GN-45 boards)
{ "DRIPGAME", UnifBoards::UnlDripGame },
{ "60311C", UnifBoards::Bmc60311C },
{ "DRIPGAME", 284 },
{ "60311C", 289 },
{ "CHINA_ER_SAN2", 19 }, //Appears to be a mapper 19 hack specific for VirtuaNES (which adds chinese text on top of the PPU's output), unknown if a board actually exists
};

View file

@ -356,7 +356,7 @@ namespace Mesen.GUI.Debugger
{
switch(GetRomHeaderVersion()) {
case RomHeaderVersion.Nes2_0:
return ((_bytes[8] & 0x0F) << 4) | (_bytes[7] & 0xF0) | (_bytes[6] >> 4);
return ((_bytes[8] & 0x0F) << 8) | (_bytes[7] & 0xF0) | (_bytes[6] >> 4);
default:
case RomHeaderVersion.iNes:
return (_bytes[7] & 0xF0) | (_bytes[6] >> 4);