Update NES.ino

- added mappers 272, 380, 519
This commit is contained in:
nsx0r 2025-02-01 06:34:23 +00:00 committed by GitHub
parent 2fc46b88f7
commit c20e810d65
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -307,6 +307,7 @@ static const struct mapper_NES PROGMEM mapsize[] = {
// 266 - City Fighter IV [TODO]
// 267 - 晶太 [Jīngtài] EL861121C / JY-119 multicart [TODO]
{ 268, 0, 11, 0, 8, 0, 0 }, // KP6022 / AA6023 ASIC (Mindkids/Coolboy) [268.0-1]
{ 272, 0, 3, 0, 5, 0, 0 }, // J-2012-II (bootleg ぼくDracula君)
{ 286, 0, 3, 0, 5, 0, 0 }, // Benshieng BS-5 multicarts [TODO]
{ 288, 0, 3, 0, 4, 0, 0 }, // GKCXIN1 (21-in-1)
{ 289, 5, 7, 0, 0, 0, 0 }, // 60311C / N76A-1
@ -319,10 +320,12 @@ static const struct mapper_NES PROGMEM mapsize[] = {
{ 332, 3, 4, 4, 5, 0, 0 }, // WS-1001
{ 351, 0, 6, 0, 8, 0, 0 }, // Techline XB multicarts
{ 366, 0, 6, 0, 8, 0, 0 }, // GN-45
{ 380, 0, 5, 0, 0, 0, 0 }, // 970630C / KN-35A
{ 396, 0, 6, 0, 0, 0, 0 }, // 晶太 [Jīngtài] YY850437C
{ 422, 1, 8, 0, 8, 0, 0 }, // TEC9719
{ 446, 0, 8, 0, 0, 0, 0 }, // SMD172B_FPGA
{ 470, 0, 11, 0, 0, 0, 0 }, // INX_007T_V01
{ 519, 0, 6, 0, 8, 0, 0 }, // VT-29B/VT1210
{ 532, 4, 4, 6, 6, 0, 0 }, // CHINA_ER_SAN2 (duplicate of 19)
{ 534, 1, 8, 0, 8, 0, 0 }, // ING003C / PJ-008 / AT-207
// 551 - 晶科泰 [Jncota] KT-xxx [TODO]
@ -2351,6 +2354,7 @@ void readPRG(bool readrom) {
case 25:
case 65:
case 75: // 128K/256K
case 272:
banks = int_pow(2, prgsize) * 2;
if (mapper == 23) {
write_prg_byte(0x9002, 0);
@ -2359,6 +2363,10 @@ void readPRG(bool readrom) {
if (mapper == 25) {
write_prg_byte(0x9005, 0); // set vrc4 swap setting for TMNT2
}
if (mapper == 272) {
write_prg_byte(0x9002, 0);
write_prg_byte(0x9004, 0);
}
for (size_t i = 0; i < banks; i++) {
write_prg_byte(0x8000, i);
dumpBankPRG(0x0, 0x2000, base);
@ -3318,6 +3326,14 @@ void readPRG(bool readrom) {
}
break;
case 380:
banks = int_pow(2, prgsize);
for (size_t i = 0; i < banks; i++) {
write_prg_byte(0xF201 + ((i & 0x1F) << 2), 0);
dumpBankPRG(0x0, 0x4000, base);
}
break;
case 396:
banks = int_pow(2, prgsize);
for (size_t i = 0; i < banks; i++) {
@ -3348,6 +3364,14 @@ void readPRG(bool readrom) {
}
break;
case 519:
banks = int_pow(2, prgsize);
for (size_t i = 0; i < banks; i += 2) {
write_prg_byte(0x8000 + (i & 0x3F), 0);
dumpBankPRG(0x0, 0x8000, base);
}
break;
case 552:
banks = int_pow(2, prgsize) * 2;
for (size_t i = 0; i < banks; i++) {
@ -3644,13 +3668,16 @@ void readCHR(bool readrom) {
break;
case 23:
case 272:
{
banks = int_pow(2, chrsize) * 4;
// Detect VRC4e Carts - read PRG 0x1FFF6 (DATE)
// Boku Dracula-kun = 890810, Tiny Toon = 910809, Crisis Force = 910701, Parodius Da! = 900916
write_prg_byte(0x8000, 15); // Load last bank
uint16_t m23reg = 0xB001;
if (read_prg_byte(0x9FF6) == 0x30) {
if ((read_prg_byte(0x9FF6) == 0x30) && !(mapper == 272)) {
println_Msg(F("VRC4e detected!"));
display_Update();
m23reg = 0xB004;
}
for (size_t i = 0; i < banks; i++) {
@ -4328,6 +4355,14 @@ void readCHR(bool readrom) {
}
}
break;
case 519:
banks = int_pow(2, chrsize) / 2;
for (size_t i = 0; i < banks; i++) {
write_prg_byte(0x8000, i & 0x7F);
dumpBankCHR(0x0, 0x2000);
}
break;
}
if (!readrom) {
myFile.flush();