Skip to content
This repository was archived by the owner on Mar 16, 2026. It is now read-only.

Commit 80d8bd5

Browse files
authored
Update NES.ino
- added mapper 221, 288, 290
1 parent e013e85 commit 80d8bd5

File tree

1 file changed

+47
-4
lines changed

1 file changed

+47
-4
lines changed

Cart_Reader/NES.ino

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ static const struct mapper_NES PROGMEM mapsize[] = {
206206
{ 165, 5, 5, 5, 5, 0, 0 }, // 圣火徽章 [Fire Emblem] Chinese version by 外星 [Wàixīng]
207207
// 166 - not used (wrong bank order, use 167 instead)
208208
// 167 - Subor educational cartridges [TODO]
209-
{ 168, 2, 2, 0, 0, 0, 0 }, // Racermate Challenge 2
209+
{ 168, 2, 2, 0, 0, 0, 0 }, // Racermate Challenge 2
210210
// 169 - not used (duplicate of 15)
211211
// 170 - 藤屋 [Fujiya] NROM [TODO]
212212
// 171 - 步步高 [Bùbùgāo / BBK] [TODO]
@@ -259,7 +259,7 @@ static const struct mapper_NES PROGMEM mapsize[] = {
259259
// 218 - Magic Floor [TODO]
260260
// 219 - 卡聖 [Kǎshèng] A9746 [TODO]
261261
// 220 - not used (reserved for debugging)
262-
// 221 - NTDEC N625092 [TODO]
262+
{ 221, 0, 7, 0, 0, 0, 0 }, // NTDEC N625092 (400-in-1)
263263
// 222 - 810343-C [TODO]
264264
// 223 - not used (duplicate of 199)
265265
// 224 - 晶科泰 [Jncota] KT-008 (duplicate of 268)
@@ -308,7 +308,9 @@ static const struct mapper_NES PROGMEM mapsize[] = {
308308
// 267 - 晶太 EL861121C / JY-119 multicart [TODO]
309309
{ 268, 0, 11, 0, 8, 0, 0 }, // KP6022 / AA6023 ASIC (Mindkids/Coolboy)
310310
{ 286, 0, 3, 0, 5, 0, 0 }, // Benshieng BS-5 multicarts [TODO]
311+
{ 288, 0, 3, 0, 4, 0, 0 }, // GKCXIN1 (21-in-1)
311312
{ 289, 5, 7, 0, 0, 0, 0 }, // 60311C / N76A-1
313+
{ 290, 0, 5, 0, 4, 0, 0 }, // Asder 20-in-1
312314
// 313 - undumpable (reset-based TKROM multicarts)
313315
{ 315, 0, 5, 0, 7, 0, 0 }, // 820732C / 830134C
314316
{ 319, 3, 3, 4, 4, 0, 0 }, // HP-898F / KD-7/9-E
@@ -2994,6 +2996,15 @@ void readPRG(bool readrom) {
29942996
}
29952997
break;
29962998

2999+
case 221:
3000+
banks = int_pow(2, prgsize);
3001+
for (size_t i = 0; i < banks; i++) {
3002+
write_prg_byte(0x8000 + ((i << 2) & 0xE0) + ((i << 3) & 0x200), 0);
3003+
write_prg_byte(0xC000 + (i & 7), 0);
3004+
dumpBankPRG(0x0, 0x4000, base);
3005+
}
3006+
break;
3007+
29973008
case 225:
29983009
case 255:
29993010
banks = int_pow(2, prgsize);
@@ -3181,20 +3192,28 @@ void readPRG(bool readrom) {
31813192

31823193
case 261:
31833194
banks = int_pow(2, prgsize);
3184-
for (size_t i = 0; i < banks; i += 1) {
3195+
for (size_t i = 0; i < banks; i++) {
31853196
write_prg_byte(0xF000 + ((i & 0x0E) << 6) + ((i & 0x01) << 5), i);
31863197
dumpBankPRG(0x0, 0x4000, base);
31873198
}
31883199
break;
31893200

31903201
case 286:
31913202
banks = int_pow(2, prgsize) * 2;
3192-
for (size_t i = 0; i < banks; i += 1) {
3203+
for (size_t i = 0; i < banks; i++) {
31933204
write_prg_byte(0xA0F0 + i, i);
31943205
dumpBankPRG(0x0, 0x2000, base);
31953206
}
31963207
break;
31973208

3209+
case 288:
3210+
banks = int_pow(2, prgsize) / 2;
3211+
for (size_t i = 0; i < banks; i++) {
3212+
write_prg_byte(0x8000 + ((i << 3) & 0x18), i);
3213+
dumpBankPRG(0x0, 0x8000, base);
3214+
}
3215+
break;
3216+
31983217
case 289: // 512K/1024K/2048K
31993218
banks = int_pow(2, prgsize);
32003219
for (int i = 0; i < banks; i++) {
@@ -3206,6 +3225,14 @@ void readPRG(bool readrom) {
32063225
}
32073226
break;
32083227

3228+
case 290:
3229+
banks = int_pow(2, prgsize);
3230+
for (size_t i = 0; i < banks; i++) {
3231+
write_prg_byte(0x8000 | ((i << 10) & 0x7800) | ((i << 6) & 0x40), i);
3232+
dumpBankPRG(0x0, 0x4000, base);
3233+
}
3234+
break;
3235+
32093236
case 319: // 128K
32103237
banks = int_pow(2, prgsize) / 2;
32113238
for (int i = 0; i < banks; i++) {
@@ -4164,6 +4191,22 @@ void readCHR(bool readrom) {
41644191
}
41654192
break;
41664193

4194+
case 288:
4195+
banks = int_pow(2, chrsize) / 2;
4196+
for (int i = 0; i < banks; i++) {
4197+
write_prg_byte(0x8000 + (i & 0x07), i);
4198+
dumpBankCHR(0x0, 0x2000);
4199+
}
4200+
break;
4201+
4202+
case 290:
4203+
banks = int_pow(2, chrsize) / 2;
4204+
for (int i = 0; i < banks; i++) {
4205+
write_prg_byte(0x8000 | ((i << 5) & 0x300) | (i & 0x07), i);
4206+
dumpBankCHR(0x0, 0x2000);
4207+
}
4208+
break;
4209+
41674210
case 319: // 64K
41684211
banks = int_pow(2, chrsize) / 2;
41694212
for (int i = 0; i < banks; i++) {

0 commit comments

Comments
 (0)