Update NES.ino

- added mapper 221, 288, 290
This commit is contained in:
nsx0r 2025-01-24 21:58:19 +00:00 committed by GitHub
parent e013e85a1f
commit 80d8bd53e7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -206,7 +206,7 @@ static const struct mapper_NES PROGMEM mapsize[] = {
{ 165, 5, 5, 5, 5, 0, 0 }, // 圣火徽章 [Fire Emblem] Chinese version by 外星 [Wàixīng]
// 166 - not used (wrong bank order, use 167 instead)
// 167 - Subor educational cartridges [TODO]
{ 168, 2, 2, 0, 0, 0, 0 }, // Racermate Challenge 2
{ 168, 2, 2, 0, 0, 0, 0 }, // Racermate Challenge 2
// 169 - not used (duplicate of 15)
// 170 - 藤屋 [Fujiya] NROM [TODO]
// 171 - 步步高 [Bùbùgāo / BBK] [TODO]
@ -259,7 +259,7 @@ static const struct mapper_NES PROGMEM mapsize[] = {
// 218 - Magic Floor [TODO]
// 219 - 卡聖 [Kǎshèng] A9746 [TODO]
// 220 - not used (reserved for debugging)
// 221 - NTDEC N625092 [TODO]
{ 221, 0, 7, 0, 0, 0, 0 }, // NTDEC N625092 (400-in-1)
// 222 - 810343-C [TODO]
// 223 - not used (duplicate of 199)
// 224 - 晶科泰 [Jncota] KT-008 (duplicate of 268)
@ -308,7 +308,9 @@ static const struct mapper_NES PROGMEM mapsize[] = {
// 267 - 晶太 EL861121C / JY-119 multicart [TODO]
{ 268, 0, 11, 0, 8, 0, 0 }, // KP6022 / AA6023 ASIC (Mindkids/Coolboy)
{ 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
{ 290, 0, 5, 0, 4, 0, 0 }, // Asder 20-in-1
// 313 - undumpable (reset-based TKROM multicarts)
{ 315, 0, 5, 0, 7, 0, 0 }, // 820732C / 830134C
{ 319, 3, 3, 4, 4, 0, 0 }, // HP-898F / KD-7/9-E
@ -2994,6 +2996,15 @@ void readPRG(bool readrom) {
}
break;
case 221:
banks = int_pow(2, prgsize);
for (size_t i = 0; i < banks; i++) {
write_prg_byte(0x8000 + ((i << 2) & 0xE0) + ((i << 3) & 0x200), 0);
write_prg_byte(0xC000 + (i & 7), 0);
dumpBankPRG(0x0, 0x4000, base);
}
break;
case 225:
case 255:
banks = int_pow(2, prgsize);
@ -3181,7 +3192,7 @@ void readPRG(bool readrom) {
case 261:
banks = int_pow(2, prgsize);
for (size_t i = 0; i < banks; i += 1) {
for (size_t i = 0; i < banks; i++) {
write_prg_byte(0xF000 + ((i & 0x0E) << 6) + ((i & 0x01) << 5), i);
dumpBankPRG(0x0, 0x4000, base);
}
@ -3189,12 +3200,20 @@ void readPRG(bool readrom) {
case 286:
banks = int_pow(2, prgsize) * 2;
for (size_t i = 0; i < banks; i += 1) {
for (size_t i = 0; i < banks; i++) {
write_prg_byte(0xA0F0 + i, i);
dumpBankPRG(0x0, 0x2000, base);
}
break;
case 288:
banks = int_pow(2, prgsize) / 2;
for (size_t i = 0; i < banks; i++) {
write_prg_byte(0x8000 + ((i << 3) & 0x18), i);
dumpBankPRG(0x0, 0x8000, base);
}
break;
case 289: // 512K/1024K/2048K
banks = int_pow(2, prgsize);
for (int i = 0; i < banks; i++) {
@ -3206,6 +3225,14 @@ void readPRG(bool readrom) {
}
break;
case 290:
banks = int_pow(2, prgsize);
for (size_t i = 0; i < banks; i++) {
write_prg_byte(0x8000 | ((i << 10) & 0x7800) | ((i << 6) & 0x40), i);
dumpBankPRG(0x0, 0x4000, base);
}
break;
case 319: // 128K
banks = int_pow(2, prgsize) / 2;
for (int i = 0; i < banks; i++) {
@ -4164,6 +4191,22 @@ void readCHR(bool readrom) {
}
break;
case 288:
banks = int_pow(2, chrsize) / 2;
for (int i = 0; i < banks; i++) {
write_prg_byte(0x8000 + (i & 0x07), i);
dumpBankCHR(0x0, 0x2000);
}
break;
case 290:
banks = int_pow(2, chrsize) / 2;
for (int i = 0; i < banks; i++) {
write_prg_byte(0x8000 | ((i << 5) & 0x300) | (i & 0x07), i);
dumpBankCHR(0x0, 0x2000);
}
break;
case 319: // 64K
banks = int_pow(2, chrsize) / 2;
for (int i = 0; i < banks; i++) {