diff options
-rw-r--r-- | Cart_Reader/Cart_Reader.ino | 8 | ||||
-rw-r--r-- | Cart_Reader/MD.ino | 3 | ||||
-rw-r--r-- | Cart_Reader/NES.ino | 254 | ||||
-rw-r--r-- | Cart_Reader/SNES.ino | 8 |
4 files changed, 137 insertions, 136 deletions
diff --git a/Cart_Reader/Cart_Reader.ino b/Cart_Reader/Cart_Reader.ino index 9471069..c694df6 100644 --- a/Cart_Reader/Cart_Reader.ino +++ b/Cart_Reader/Cart_Reader.ino @@ -4,8 +4,8 @@ This project represents a community-driven effort to provide
an easy to build and easy to modify cartridge dumper.
- Date: 18.11.2022
- Version: 11.4
+ Date: 20.12.2022
+ Version: 11.5
SD lib: https://github.com/greiman/SdFat
LCD lib: https://github.com/olikraus/u8g2
@@ -15,7 +15,7 @@ RTC lib: https://github.com/adafruit/RTClib
Frequency lib: https://github.com/PaulStoffregen/FreqCount
- Compiled with Arduino IDE 2.0.2
+ Compiled with Arduino IDE 2.0.3
Thanks to:
MichlK - ROM Reader for Super Nintendo
@@ -57,7 +57,7 @@ **********************************************************************************/
-char ver[5] = "11.4";
+char ver[5] = "11.5";
//******************************************
// !!! CHOOSE HARDWARE VERSION !!!
diff --git a/Cart_Reader/MD.ino b/Cart_Reader/MD.ino index 57a1fdb..b764df8 100644 --- a/Cart_Reader/MD.ino +++ b/Cart_Reader/MD.ino @@ -704,6 +704,9 @@ void getCartInfo_MD() { cartSize = 0x100000; //1MB instead of 512KB
chksum = 0xF204;
break;
+ case 0x95C9: //Zero Wing (E) 8Mbit
+ cartSize = 0x100000; //1MB instead of 512KB
+ break;
}
}
diff --git a/Cart_Reader/NES.ino b/Cart_Reader/NES.ino index b4743d8..29585a9 100644 --- a/Cart_Reader/NES.ino +++ b/Cart_Reader/NES.ino @@ -30,78 +30,78 @@ // Supported Mapper Array (iNES Mapper #s) // Format = {mapper,prglo,prghi,chrlo,chrhi,ramlo,ramhi} static const byte PROGMEM mapsize[] = { - 0, 0, 1, 0, 1, 0, 2, // nrom [sram r/w] - 1, 1, 5, 0, 5, 0, 3, // mmc1 [sram r/w] - 2, 2, 4, 0, 0, 0, 0, // uxrom - 3, 0, 1, 0, 3, 0, 0, // cnrom - 4, 1, 5, 0, 6, 0, 1, // mmc3/mmc6 [sram/prgram r/w] - 5, 3, 5, 5, 7, 0, 3, // mmc5 [sram r/w] - 7, 2, 4, 0, 0, 0, 0, // axrom - 9, 3, 3, 5, 5, 0, 0, // mmc2 (punch out) - 10, 3, 4, 4, 5, 1, 1, // mmc4 [sram r/w] - 11, 1, 3, 1, 5, 0, 0, // Color Dreams [UNLICENSED] - 13, 1, 1, 0, 0, 0, 0, // cprom (videomation) - 15, 6, 6, 0, 0, 0, 0, // K-1029/K-1030P [UNLICENSED] - 16, 3, 4, 5, 6, 0, 1, // bandai x24c02 [eep r/w] - 18, 3, 4, 5, 6, 0, 1, // jaleco ss8806 [sram r/w] - 19, 3, 4, 5, 6, 0, 1, // namco 106/163 [sram/prgram r/w] + 0, 0, 1, 0, 1, 0, 2, // nrom [sram r/w] + 1, 1, 5, 0, 5, 0, 3, // mmc1 [sram r/w] + 2, 2, 4, 0, 0, 0, 0, // uxrom + 3, 0, 1, 0, 3, 0, 0, // cnrom + 4, 1, 5, 0, 6, 0, 1, // mmc3/mmc6 [sram/prgram r/w] + 5, 3, 5, 5, 7, 0, 3, // mmc5 [sram r/w] + 7, 2, 4, 0, 0, 0, 0, // axrom + 9, 3, 3, 5, 5, 0, 0, // mmc2 (punch out) + 10, 3, 4, 4, 5, 1, 1, // mmc4 [sram r/w] + 11, 1, 3, 1, 5, 0, 0, // Color Dreams [UNLICENSED] + 13, 1, 1, 0, 0, 0, 0, // cprom (videomation) + 15, 6, 6, 0, 0, 0, 0, // K-1029/K-1030P [UNLICENSED] + 16, 3, 4, 5, 6, 0, 1, // bandai x24c02 [eep r/w] + 18, 3, 4, 5, 6, 0, 1, // jaleco ss8806 [sram r/w] + 19, 3, 4, 5, 6, 0, 1, // namco 106/163 [sram/prgram r/w] // 20 - bad mapper, not used - 21, 4, 4, 5, 6, 0, 1, // vrc4a/vrc4c [sram r/w] - 22, 3, 3, 5, 5, 0, 0, // vrc2a - 23, 3, 3, 5, 6, 0, 0, // vrc2b/vrc4e - 24, 4, 4, 5, 5, 0, 0, // vrc6a (akumajou densetsu) - 25, 3, 4, 5, 6, 0, 1, // vrc2c/vrc4b/vrc4d [sram r/w] - 26, 4, 4, 5, 6, 1, 1, // vrc6b [sram r/w] - 28, 5, 7, 0, 0, 0, 0, // Action 53 [UNLICENSED] - 30, 4, 5, 0, 0, 0, 0, // unrom 512 (NESmaker) [UNLICENSED] - 32, 3, 4, 5, 5, 0, 0, // irem g-101 - 33, 3, 4, 5, 6, 0, 0, // taito tc0190 - 34, 3, 5, 0, 0, 0, 0, // bnrom [nina-1 NOT SUPPORTED] - 35, 0, 7, 1, 8, 0, 0, // J.Y. Company ASIC [UNLICENSED] - 36, 0, 3, 1, 5, 0, 0, // TXC 01-22000-400 Board [UNLICENSED] - 37, 4, 4, 6, 6, 0, 0, // (super mario bros + tetris + world cup) - 42, 0, 3, 0, 5, 0, 0, // hacked FDS games converted to cartridge [UNLICENSED] - 45, 3, 6, 0, 8, 0, 0, // ga23c asic multicart [UNLICENSED] - 46, 1, 6, 0, 8, 0, 0, // Rumble Station [UNLICENSED] - 47, 4, 4, 6, 6, 0, 0, // (super spike vball + world cup) - 48, 3, 4, 6, 6, 0, 0, // taito tc0690 - 52, 0, 3, 0, 3, 0, 0, // Realtec 8213 [UNLICENSED] - 58, 1, 6, 1, 6, 0, 0, // BMC-GKB (C)NROM-based multicarts, duplicate of mapper 213 [UNLICENSED] - 59, 0, 3, 0, 4, 0, 0, // BMC-T3H53 & BMC-D1038 [UNLICENSED] - 60, 2, 2, 3, 3, 0, 0, // Reset-based NROM-128 4-in-1 multicarts [UNLICENSED] - 62, 7, 7, 8, 8, 0, 0, // K-1017P [UNLICENSED] - 63, 8, 8, 0, 0, 0, 0, // NTDEC "Powerful" multicart, 3072K [UNLICENSED] - 64, 2, 3, 4, 5, 0, 0, // tengen rambo-1 [UNLICENSED] - 65, 3, 4, 5, 6, 0, 0, // irem h-3001 - 66, 2, 3, 2, 3, 0, 0, // gxrom/mhrom - 67, 3, 3, 5, 5, 0, 0, // sunsoft 3 - 68, 3, 3, 5, 6, 0, 1, // sunsoft 4 [sram r/w] - 69, 3, 4, 5, 6, 0, 1, // sunsoft fme-7/5a/5b [sram r/w] - 70, 3, 3, 5, 5, 0, 0, // bandai - 71, 2, 4, 0, 0, 0, 0, // camerica/codemasters [UNLICENSED] - 72, 3, 3, 5, 5, 0, 0, // jaleco jf-17 - 73, 3, 3, 0, 0, 0, 0, // vrc3 (salamander) - 75, 3, 3, 5, 5, 0, 0, // vrc1 - 76, 3, 3, 5, 5, 0, 0, // namco 109 variant (megami tensei: digital devil story) - 77, 3, 3, 3, 3, 0, 0, // (napoleon senki) - 78, 3, 3, 5, 5, 0, 0, // irem 74hc161/32 - 79, 1, 2, 2, 3, 0, 0, // NINA-03/06 by AVE [UNLICENSED] - 80, 3, 3, 5, 6, 0, 1, // taito x1-005 [prgram r/w] - 82, 3, 3, 5, 6, 0, 1, // taito x1-017 [prgram r/w] + 21, 4, 4, 5, 6, 0, 1, // vrc4a/vrc4c [sram r/w] + 22, 3, 3, 5, 5, 0, 0, // vrc2a + 23, 3, 3, 5, 6, 0, 0, // vrc2b/vrc4e + 24, 4, 4, 5, 5, 0, 0, // vrc6a (akumajou densetsu) + 25, 3, 4, 5, 6, 0, 1, // vrc2c/vrc4b/vrc4d [sram r/w] + 26, 4, 4, 5, 6, 1, 1, // vrc6b [sram r/w] + 28, 5, 7, 0, 0, 0, 0, // Action 53 [UNLICENSED] + 30, 4, 5, 0, 0, 0, 0, // unrom 512 (NESmaker) [UNLICENSED] + 32, 3, 4, 5, 5, 0, 0, // irem g-101 + 33, 3, 4, 5, 6, 0, 0, // taito tc0190 + 34, 3, 5, 0, 0, 0, 0, // bnrom [nina-1 NOT SUPPORTED] + 35, 0, 7, 1, 8, 0, 0, // J.Y. Company ASIC [UNLICENSED] + 36, 0, 3, 1, 5, 0, 0, // TXC 01-22000-400 Board [UNLICENSED] + 37, 4, 4, 6, 6, 0, 0, // (super mario bros + tetris + world cup) + 42, 0, 3, 0, 5, 0, 0, // hacked FDS games converted to cartridge [UNLICENSED] + 45, 3, 6, 0, 8, 0, 0, // ga23c asic multicart [UNLICENSED] + 46, 1, 6, 0, 8, 0, 0, // Rumble Station [UNLICENSED] + 47, 4, 4, 6, 6, 0, 0, // (super spike vball + world cup) + 48, 3, 4, 6, 6, 0, 0, // taito tc0690 + 52, 0, 3, 0, 3, 0, 0, // Realtec 8213 [UNLICENSED] + 58, 1, 6, 1, 6, 0, 0, // BMC-GKB (C)NROM-based multicarts, duplicate of mapper 213 [UNLICENSED] + 59, 0, 3, 0, 4, 0, 0, // BMC-T3H53 & BMC-D1038 [UNLICENSED] + 60, 2, 2, 3, 3, 0, 0, // Reset-based NROM-128 4-in-1 multicarts [UNLICENSED] + 62, 7, 7, 8, 8, 0, 0, // K-1017P [UNLICENSED] + 63, 8, 8, 0, 0, 0, 0, // NTDEC "Powerful" multicart, 3072K [UNLICENSED] + 64, 2, 3, 4, 5, 0, 0, // tengen rambo-1 [UNLICENSED] + 65, 3, 4, 5, 6, 0, 0, // irem h-3001 + 66, 2, 3, 2, 3, 0, 0, // gxrom/mhrom + 67, 3, 3, 5, 5, 0, 0, // sunsoft 3 + 68, 3, 3, 5, 6, 0, 1, // sunsoft 4 [sram r/w] + 69, 3, 4, 5, 6, 0, 1, // sunsoft fme-7/5a/5b [sram r/w] + 70, 3, 3, 5, 5, 0, 0, // bandai + 71, 2, 4, 0, 0, 0, 0, // camerica/codemasters [UNLICENSED] + 72, 3, 3, 5, 5, 0, 0, // jaleco jf-17 + 73, 3, 3, 0, 0, 0, 0, // vrc3 (salamander) + 75, 3, 3, 5, 5, 0, 0, // vrc1 + 76, 3, 3, 5, 5, 0, 0, // namco 109 variant (megami tensei: digital devil story) + 77, 3, 3, 3, 3, 0, 0, // (napoleon senki) + 78, 3, 3, 5, 5, 0, 0, // irem 74hc161/32 + 79, 1, 2, 2, 3, 0, 0, // NINA-03/06 by AVE [UNLICENSED] + 80, 3, 3, 5, 6, 0, 1, // taito x1-005 [prgram r/w] + 82, 3, 3, 5, 6, 0, 1, // taito x1-017 [prgram r/w] // 84 - bad mapper, not used - 85, 3, 5, 0, 5, 0, 1, // vrc7 [sram r/w] - 86, 3, 3, 4, 4, 0, 0, // jaleco jf-13 (moero pro yakyuu) - 87, 0, 1, 2, 3, 0, 0, // Jaleco/Konami CNROM (DIS_74X139X74) - 88, 3, 3, 5, 5, 0, 0, // namco (dxrom variant) - 89, 3, 3, 5, 5, 0, 0, // sunsoft 2 variant (tenka no goikenban: mito koumon) - 90, 0, 7, 1, 8, 0, 0, // J.Y. Company ASIC [UNLICENSED] - 91, 3, 5, 7, 8, 0, 0, // JY830623C/YY840238C boards [UNLICENSED] - 92, 4, 4, 5, 5, 0, 0, // jaleco jf-19/jf-21 - 93, 3, 3, 0, 0, 0, 0, // sunsoft 2 - 94, 3, 3, 0, 0, 0, 0, // hvc-un1rom (senjou no ookami) - 95, 3, 3, 3, 3, 0, 0, // namcot-3425 (dragon buster) - 96, 3, 3, 0, 0, 0, 0, // (oeka kids) - 97, 4, 4, 0, 0, 0, 0, // irem tam-s1 (kaiketsu yanchamaru) + 85, 3, 5, 0, 5, 0, 1, // vrc7 [sram r/w] + 86, 3, 3, 4, 4, 0, 0, // jaleco jf-13 (moero pro yakyuu) + 87, 0, 1, 2, 3, 0, 0, // Jaleco/Konami CNROM (DIS_74X139X74) + 88, 3, 3, 5, 5, 0, 0, // namco (dxrom variant) + 89, 3, 3, 5, 5, 0, 0, // sunsoft 2 variant (tenka no goikenban: mito koumon) + 90, 0, 7, 1, 8, 0, 0, // J.Y. Company ASIC [UNLICENSED] + 91, 3, 5, 7, 8, 0, 0, // JY830623C/YY840238C boards [UNLICENSED] + 92, 4, 4, 5, 5, 0, 0, // jaleco jf-19/jf-21 + 93, 3, 3, 0, 0, 0, 0, // sunsoft 2 + 94, 3, 3, 0, 0, 0, 0, // hvc-un1rom (senjou no ookami) + 95, 3, 3, 3, 3, 0, 0, // namcot-3425 (dragon buster) + 96, 3, 3, 0, 0, 0, 0, // (oeka kids) + 97, 4, 4, 0, 0, 0, 0, // irem tam-s1 (kaiketsu yanchamaru) // 100 - bad mapper, not used // 101 - bad mapper, not used 105, 4, 4, 0, 0, 0, 0, // (nintendo world Championships 1990) [UNTESTED] @@ -2546,7 +2546,7 @@ void readPRG(boolean readrom) { case 2: // bus conflicts - fixed last bank banks = int_pow(2, prgsize); busConflict = true; - for (int i = 0; i < banks-1; i++) { + for (int i = 0; i < banks - 1; i++) { for (int x = 0; x < 0x4000; x++) { if (read_prg_byte(0xC000 + x) == i) { write_prg_byte(0xC000 + x, i); @@ -2614,7 +2614,7 @@ void readPRG(boolean readrom) { case 7: // 128K/256K case 34: case 77: - case 96: // 128K + case 96: // 128K case 177: // up to 1024K case 241: banks = int_pow(2, prgsize) / 2; @@ -2731,8 +2731,8 @@ void readPRG(boolean readrom) { } } break; - - case 23: + + case 23: banks = int_pow(2, prgsize) * 2; write_prg_byte(0x9002, 0); write_prg_byte(0x9008, 0); @@ -2755,7 +2755,7 @@ void readPRG(boolean readrom) { } } break; - + case 28: // using 32k mode for inner and outer banks, switching only with outer banks = int_pow(2, prgsize) / 2; write_prg_byte(0x5000, 0x81); @@ -2810,7 +2810,7 @@ void readPRG(boolean readrom) { } } break; - + case 35: case 90: case 209: @@ -2869,7 +2869,7 @@ void readPRG(boolean readrom) { case 42: banks = int_pow(2, prgsize) * 2; base = 0x6000; // 8k switchable PRG ROM bank at $6000-$7FFF - for (int i = 0; i < banks-4; i++) { + for (int i = 0; i < banks - 4; i++) { write_prg_byte(0xE000, i & 0x0F); for (word address = 0x0; address < 0x2000; address += 512) { dumpPRG(base, address); @@ -2877,7 +2877,7 @@ void readPRG(boolean readrom) { } base = 0x8000; // last 32k fixed to $8000-$FFFF for (word address = 0x0; address < 0x8000; address += 512) { - dumpPRG(base, address); + dumpPRG(base, address); } break; @@ -2916,7 +2916,7 @@ void readPRG(boolean readrom) { banks = int_pow(2, prgsize) / 2; // 32k banks for (int i = 0; i < banks; i++) { write_prg_byte(0x6000, (i & 0x1E) >> 1); // high bits - write_prg_byte(0x8000, i & 0x01); // low bit + write_prg_byte(0x8000, i & 0x01); // low bit for (word address = 0x0; address < 0x8000; address += 512) { dumpPRG(base, address); } @@ -2924,7 +2924,7 @@ void readPRG(boolean readrom) { break; case 52: - banks = int_pow(2, prgsize) ; + banks = int_pow(2, prgsize); write_prg_byte(0xA001, 0x80); // enable WRAM write for (int i = 0; i < banks; i++) { write_prg_byte(0x6000, (i & 0x07) | 0x08); @@ -2946,9 +2946,9 @@ void readPRG(boolean readrom) { break; case 59: - banks = int_pow(2, prgsize) ; + banks = int_pow(2, prgsize); for (int i = 0; i < banks; i++) { - write_prg_byte(0x8000 + (i & 0x07) << 4 | 0x80, 0); + write_prg_byte(0x8000 + (i & 0x07) << 4 | 0x80, 0); for (word address = 0x0; address < 0x4000; address += 512) { dumpPRG(base, address); } @@ -2991,7 +2991,7 @@ void readPRG(boolean readrom) { case 63: // 3072K total banks = int_pow(2, prgsize); for (int i = 0; i < 192; i++) { - write_prg_byte(0x8000 + (i << 2), 0); + write_prg_byte(0x8000 + (i << 2), 0); for (word address = 0x0; address < 0x4000; address += 512) { dumpPRG(base, address); } @@ -3231,7 +3231,7 @@ void readPRG(boolean readrom) { case 113: banks = int_pow(2, prgsize) / 2; for (int i = 0; i < banks; i++) { - write_prg_byte(0x4100, (i & 0x07) << 3); + write_prg_byte(0x4100, (i & 0x07) << 3); for (word address = 0x0; address < 0x8000; address += 512) { dumpPRG(base, address); } @@ -3244,7 +3244,7 @@ void readPRG(boolean readrom) { write_prg_byte(0x6003, 0x00); // set MMC3 banking mode for (int i = 0; i < banks; i += 2) { write_prg_byte(0x6000, (i & 0x180) >> 3 | (i & 0x70) >> 4); // select outer bank - write_prg_byte(0x8000, 6); // 8k bank 0 at $8000 + write_prg_byte(0x8000, 6); // 8k bank 0 at $8000 write_prg_byte(0x8001, i); write_prg_byte(0x8000, 7); // 8k bank 1 at $A000 write_prg_byte(0x8001, i + 1); @@ -3254,20 +3254,20 @@ void readPRG(boolean readrom) { } break; - case 134: - banks = int_pow(2, prgsize) * 2; - write_prg_byte(0x6000, 0x00); // set MMC3 banking mode - for (int i = 0; i < banks; i += 2) { - write_prg_byte(0x6001, (i & 0x30) >> 4); // select outer bank - write_prg_byte(0x8000, 6); // 8k bank 0 at $8000 - write_prg_byte(0x8001, i); - write_prg_byte(0x8000, 7); // 8k bank 1 at $A000 - write_prg_byte(0x8001, i + 1); - for (word address = 0x0; address < 0x4000; address += 512) { - dumpPRG(base, address); - } + case 134: + banks = int_pow(2, prgsize) * 2; + write_prg_byte(0x6000, 0x00); // set MMC3 banking mode + for (int i = 0; i < banks; i += 2) { + write_prg_byte(0x6001, (i & 0x30) >> 4); // select outer bank + write_prg_byte(0x8000, 6); // 8k bank 0 at $8000 + write_prg_byte(0x8001, i); + write_prg_byte(0x8000, 7); // 8k bank 1 at $A000 + write_prg_byte(0x8001, i + 1); + for (word address = 0x0; address < 0x4000; address += 512) { + dumpPRG(base, address); } - break; + } + break; case 142: banks = int_pow(2, prgsize) * 2; @@ -3309,7 +3309,7 @@ void readPRG(boolean readrom) { } } for (word address = 0x4000; address < 0x8000; address += 512) { // last 16k bank fixed at $C000-$FFFF - dumpPRG(base, address); + dumpPRG(base, address); } break; @@ -3318,19 +3318,19 @@ void readPRG(boolean readrom) { write_prg_byte(0x5300, 0x07); // A16-A15 controlled by $5000 for (int i = 0; i < banks; i++) { write_prg_byte(0x5200, (i & 0x30) >> 4); // A20-A19 - write_prg_byte(0x5000, i & 0x0F); // A18-A15 + write_prg_byte(0x5000, i & 0x0F); // A18-A15 for (word address = 0x0; address < 0x8000; address += 512) { dumpPRG(base, address); } } break; - + case 163: banks = int_pow(2, prgsize) / 2; write_prg_byte(0x5300, 0x04); // disable bit swap on writes to $5000-$5200 for (int i = 0; i < banks; i++) { write_prg_byte(0x5200, (i & 0x30) >> 4); // A20-A19 - write_prg_byte(0x5000, i & 0x0F); // A18-A15 + write_prg_byte(0x5000, i & 0x0F); // A18-A15 for (word address = 0x0; address < 0x8000; address += 512) { dumpPRG(base, address); } @@ -3338,19 +3338,19 @@ void readPRG(boolean readrom) { break; case 174: // 128k - for (int i = 0; i < 8; i++) { - write_prg_byte(0xFF00 + (i << 4), 0); - for (word address = 0x0; address < 0x4000; address += 512) { - dumpPRG(base, address); - } + for (int i = 0; i < 8; i++) { + write_prg_byte(0xFF00 + (i << 4), 0); + for (word address = 0x0; address < 0x4000; address += 512) { + dumpPRG(base, address); } - break; + } + break; case 176: banks = int_pow(2, prgsize) * 2; write_prg_byte(0x5FF3, 0); // extended MMC3 mode: disabled write_prg_byte(0x5FF0, 1); // 256K outer bank mode - for (int i = 0; i < banks-3; i += 2) { + for (int i = 0; i < banks - 3; i += 2) { write_prg_byte(0x5FF1, (i & 0xE0) >> 1); // outer bank select write_prg_byte(0x8000, 6); write_prg_byte(0x8001, i); @@ -3361,16 +3361,16 @@ void readPRG(boolean readrom) { } } for (word address = 0x4000; address < 0x8000; address += 512) { - dumpPRG(base, address); + dumpPRG(base, address); } break; case 178: banks = int_pow(2, prgsize); - write_prg_byte(0x4800, 0); // NROM-256 mode - write_prg_byte(0x4803, 0); // set PRG-RAM + write_prg_byte(0x4800, 0); // NROM-256 mode + write_prg_byte(0x4803, 0); // set PRG-RAM for (int i = 0; i < banks; i += 2) { - write_prg_byte(0x4802, i >> 3); // high PRG (up to 8 bits?!) + write_prg_byte(0x4802, i >> 3); // high PRG (up to 8 bits?!) write_prg_byte(0x4801, i & 0x07); // low PRG (3 bits) for (word address = 0x0; address < 0x8000; address += 512) { dumpPRG(base, address); @@ -3460,7 +3460,7 @@ void readPRG(boolean readrom) { } } break; - + case 227: banks = int_pow(2, prgsize) / 2; for (int i = 0; i < banks; i++) { @@ -3887,7 +3887,7 @@ void readCHR(boolean readrom) { } } break; - + case 35: case 90: case 209: @@ -4258,7 +4258,7 @@ void readCHR(boolean readrom) { case 113: banks = int_pow(2, chrsize) / 2; for (int i = 0; i < banks; i++) { - write_prg_byte(0x4100, (i & 0x08) << 3 | (i & 0x07)); + write_prg_byte(0x4100, (i & 0x08) << 3 | (i & 0x07)); for (word address = 0x0; address < 0x2000; address += 512) { dumpCHR(address); } @@ -4271,7 +4271,7 @@ void readCHR(boolean readrom) { write_prg_byte(0x6003, 0x00); // set MMC3 banking mode for (int i = 0; i < banks; i += 2) { write_prg_byte(0x6000, (i & 0x200) >> 5 | (i & 0x100) >> 3); // select outer bank - write_prg_byte(0x8000, 0); // 2k bank 0 at $0000 + write_prg_byte(0x8000, 0); // 2k bank 0 at $0000 write_prg_byte(0x8001, i); write_prg_byte(0x8000, 1); // 2k bank 1 at $0800 write_prg_byte(0x8001, i + 2); @@ -4286,7 +4286,7 @@ void readCHR(boolean readrom) { write_prg_byte(0x6000, 0x00); // set MMC3 banking mode for (int i = 0; i < banks; i += 2) { write_prg_byte(0x6001, (i & 0x180) >> 3); // select outer bank - write_prg_byte(0x8000, 0); // 2k bank 0 at $0000 + write_prg_byte(0x8000, 0); // 2k bank 0 at $0000 write_prg_byte(0x8001, i); write_prg_byte(0x8000, 1); // 2k bank 1 at $0800 write_prg_byte(0x8001, i + 2); @@ -4306,15 +4306,15 @@ void readCHR(boolean readrom) { } break; - case 174: // 64k - for (int i = 0; i < 8; i++) { - write_prg_byte(0xFF00 + (i << 1), 0); - for (word address = 0x0; address < 0x2000; address += 512) { - dumpCHR(address); - } + case 174: // 64k + for (int i = 0; i < 8; i++) { + write_prg_byte(0xFF00 + (i << 1), 0); + for (word address = 0x0; address < 0x2000; address += 512) { + dumpCHR(address); } - break; - + } + break; + case 176: banks = int_pow(2, chrsize) * 4; write_prg_byte(0x5FF3, 0); // extended MMC3 mode: disabled @@ -4353,7 +4353,7 @@ void readCHR(boolean readrom) { } break; - case 185: // 8K [READ 32K TO OVERRIDE LOCKOUT] + case 185: // 8K [READ 32K TO OVERRIDE LOCKOUT] for (int i = 0; i < 4; i++) { // Read 32K to locate valid 8K write_prg_byte(0x8000, i); byte chrcheck = read_chr_byte(0); diff --git a/Cart_Reader/SNES.ino b/Cart_Reader/SNES.ino index 7b63b5b..c34dc3e 100644 --- a/Cart_Reader/SNES.ino +++ b/Cart_Reader/SNES.ino @@ -793,8 +793,7 @@ void getCartInfo_SNES() { println_Msg(F("SDD1")); } else if (romChips == 69) { println_Msg(F("SDD1 BATT")); - } - else if (romChips == 85) + } else if (romChips == 85) println_Msg(F("SRTC RAM BATT")); else if (romChips == 227) println_Msg(F("RAM GBoy")); @@ -1451,9 +1450,8 @@ void readROM_SNES() { if (romChips == 85) { // Daikaijuu Monogatari 2, keeps out S-RTC register area readHiRomBanks(192, 192 + 64, &myFile); - readHiRomBanks(64, numBanks, &myFile); // (64 + (numBanks - 64)) - } - else { + readHiRomBanks(64, numBanks, &myFile); // (64 + (numBanks - 64)) + } else { readHiRomBanks(192, numBanks + 192, &myFile); } } |