@@ -216,7 +216,7 @@ static const struct mapper_NES PROGMEM mapsize[] = {
216
216
{ 175 , 4 , 4 , 5 , 5 , 0 , 0 }, // Kaiser KS-122 (15-in-1)
217
217
{ 176 , 4 , 4 , 5 , 5 , 0 , 0 }, // YH-xxx / SFC-12B / many others...
218
218
{ 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
220
220
// 179 - duplicate of 176
221
221
{ 180 , 3 , 3 , 0 , 0 , 0 , 0 }, // Inverse UNROM (Crazy Climber)
222
222
// 181 - duplicate of 185
@@ -313,6 +313,7 @@ static const struct mapper_NES PROGMEM mapsize[] = {
313
313
{ 289 , 5 , 7 , 0 , 0 , 0 , 0 }, // 60311C / N76A-1
314
314
{ 290 , 0 , 5 , 0 , 4 , 0 , 0 }, // Asder 20-in-1
315
315
// 313 - undumpable (reset-based TKROM multicarts)
316
+ { 314 , 6 , 7 , 0 , 7 , 0 , 0 }, // bmc-64in1norepeat
316
317
{ 315 , 0 , 5 , 0 , 7 , 0 , 0 }, // 820732C / 830134C
317
318
{ 319 , 3 , 3 , 4 , 4 , 0 , 0 }, // HP-898F / KD-7/9-E
318
319
{ 329 , 1 , 7 , 0 , 0 , 0 , 3 }, // EDU2000 (duplicate of 177)
@@ -2997,9 +2998,11 @@ void readPRG(bool readrom) {
2997
2998
write_prg_byte (0x4800 , 0 ); // NROM-256 mode
2998
2999
write_prg_byte (0x4803 , 0 ); // set PRG-RAM
2999
3000
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
+ }
3003
3006
}
3004
3007
break ;
3005
3008
@@ -3298,6 +3301,15 @@ void readPRG(bool readrom) {
3298
3301
}
3299
3302
break ;
3300
3303
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
+
3301
3313
case 319 : // 128K
3302
3314
banks = int_pow (2 , prgsize) / 2 ;
3303
3315
for (size_t i = 0 ; i < banks; i++) {
@@ -4328,6 +4340,15 @@ void readCHR(bool readrom) {
4328
4340
}
4329
4341
break ;
4330
4342
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
+
4331
4352
case 319 : // 64K
4332
4353
banks = int_pow (2 , chrsize) / 2 ;
4333
4354
for (size_t i = 0 ; i < banks; i++) {
0 commit comments