Skip to content

Commit 5433749

Browse files
authored
Update NES.ino
Updated Mapper 178. Added Mapper 314. Mapper 314 needs pulsing M2 for register settings.
1 parent 14886fb commit 5433749

File tree

1 file changed

+25
-4
lines changed

1 file changed

+25
-4
lines changed

Cart_Reader/NES.ino

+25-4
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ static const struct mapper_NES PROGMEM mapsize[] = {
216216
{ 175, 4, 4, 5, 5, 0, 0 }, // Kaiser KS-122 (15-in-1)
217217
{ 176, 4, 4, 5, 5, 0, 0 }, // YH-xxx / SFC-12B / many others...
218218
{ 177, 1, 7, 0, 0, 0, 0 }, // 恒格电子 [Hénggé Diànzǐ]
219-
{ 178, 5, 5, 0, 0, 0, 0 }, // 外星 [Wàixīng] FS305 / 南晶 [Nánjīng] NJ0430 / PB030703-1x1
219+
{ 178, 5, 6, 0, 0, 0, 0 }, // 外星 [Wàixīng] FS305 / 南晶 [Nánjīng] NJ0430 / PB030703-1x1
220220
// 179 - duplicate of 176
221221
{ 180, 3, 3, 0, 0, 0, 0 }, // Inverse UNROM (Crazy Climber)
222222
// 181 - duplicate of 185
@@ -313,6 +313,7 @@ static const struct mapper_NES PROGMEM mapsize[] = {
313313
{ 289, 5, 7, 0, 0, 0, 0 }, // 60311C / N76A-1
314314
{ 290, 0, 5, 0, 4, 0, 0 }, // Asder 20-in-1
315315
// 313 - undumpable (reset-based TKROM multicarts)
316+
{ 314, 6, 7, 0, 7, 0, 0 }, // bmc-64in1norepeat
316317
{ 315, 0, 5, 0, 7, 0, 0 }, // 820732C / 830134C
317318
{ 319, 3, 3, 4, 4, 0, 0 }, // HP-898F / KD-7/9-E
318319
{ 329, 1, 7, 0, 0, 0, 3 }, // EDU2000 (duplicate of 177)
@@ -2997,9 +2998,11 @@ void readPRG(bool readrom) {
29972998
write_prg_byte(0x4800, 0); // NROM-256 mode
29982999
write_prg_byte(0x4803, 0); // set PRG-RAM
29993000
for (size_t i = 0; i < banks; i += 2) {
3000-
write_prg_byte(0x4802, i >> 3); // high PRG (up to 8 bits?!)
3001-
write_prg_byte(0x4801, i & 0x07); // low PRG (3 bits)
3002-
dumpBankPRG(0x0, 0x8000, base);
3001+
for (word address = 0x0; address < 0x8000; address += 512) {
3002+
write_prg_byte(0x4802, i >> 3); // high PRG (up to 8 bits?!)
3003+
write_prg_byte(0x4801, i & 0x07); // low PRG (3 bits)
3004+
dumpPRG(base, address);
3005+
}
30033006
}
30043007
break;
30053008

@@ -3298,6 +3301,15 @@ void readPRG(bool readrom) {
32983301
}
32993302
break;
33003303

3304+
case 314: // 1024K/2048K
3305+
banks = int_pow(2, prgsize) / 2;
3306+
for (size_t i = 0; i < banks; i++) {
3307+
write_prg_pulsem2(0x5000, 0x80); // NROM
3308+
write_prg_pulsem2(0x5001, ((i & 0x3F) | 0x80)); // prg 32k bank (M==1 (NROM-256))
3309+
dumpBankPRG(0x0, 0x8000, base);
3310+
}
3311+
break;
3312+
33013313
case 319: // 128K
33023314
banks = int_pow(2, prgsize) / 2;
33033315
for (size_t i = 0; i < banks; i++) {
@@ -4328,6 +4340,15 @@ void readCHR(bool readrom) {
43284340
}
43294341
break;
43304342

4343+
case 314: // 512K
4344+
banks = int_pow(2, chrsize) / 2;
4345+
for (size_t i = 0; i < banks; i++) {
4346+
write_prg_pulsem2(0x5000, ((i & 0x3) << 1)); // chr 8k bank (bits 0-1)
4347+
write_prg_pulsem2(0x5002, i >> 2); // chr 8k bank (bits 2-5)
4348+
dumpBankCHR(0x0, 0x2000);
4349+
}
4350+
break;
4351+
43314352
case 319: // 64K
43324353
banks = int_pow(2, chrsize) / 2;
43334354
for (size_t i = 0; i < banks; i++) {

0 commit comments

Comments
 (0)