diff --git a/Cart_Reader/Cart_Reader.ino b/Cart_Reader/Cart_Reader.ino index 0ef9c2f..e8b43a0 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: 13.02.2023 - Version: 12.3 + Date: 23.02.2023 + Version: 12.4 SD lib: https://github.com/greiman/SdFat LCD lib: https://github.com/olikraus/u8g2 @@ -23,7 +23,7 @@ Wayne and Layne - Video Game Shield menu skaman - Cart ROM READER SNES ENHANCED, Famicom Cart Dumper, Coleco-, Intellivision, Virtual Boy, WSV, PCW, ARC, Atari, ODY2, Fairchild modules Tamanegi_taro - PCE and Satellaview modules - splash5 - GBSmart, Wonderswan and NGP modules + splash5 - GBSmart, Wonderswan, NGP and Super A'can modules hkz & themanbehindthecurtain - N64 flashram commands Andrew Brown & Peter Den Hartog - N64 controller protocol libdragon - N64 controller checksum functions @@ -57,7 +57,7 @@ **********************************************************************************/ -char ver[5] = "12.3"; +char ver[5] = "12.4"; //****************************************** // !!! CHOOSE HARDWARE VERSION !!! @@ -1005,10 +1005,11 @@ static const char modeItem15[] PROGMEM = "Atari 2600"; static const char modeItem16[] PROGMEM = "Magnavox Odyssey 2"; static const char modeItem17[] PROGMEM = "Arcadia 2001"; static const char modeItem18[] PROGMEM = "Fairchild Channel F"; -static const char modeItem19[] PROGMEM = "Flashrom Programmer"; -static const char modeItem20[] PROGMEM = "Super A'can"; +static const char modeItem19[] PROGMEM = "Super A'can"; +static const char modeItem20[] PROGMEM = "Flashrom Programmer"; static const char modeItem21[] PROGMEM = "About"; -static const char* const modeOptions[] PROGMEM = { modeItem1, modeItem2, modeItem3, modeItem4, modeItem5, modeItem6, modeItem7, modeItem8, modeItem9, modeItem10, modeItem11, modeItem12, modeItem13, modeItem14, modeItem15, modeItem16, modeItem17, modeItem18, modeItem19, modeItem20, modeItem21 }; +//static const char modeItem22[] PROGMEM = "Reset"; (stored in common strings array) +static const char* const modeOptions[] PROGMEM = { modeItem1, modeItem2, modeItem3, modeItem4, modeItem5, modeItem6, modeItem7, modeItem8, modeItem9, modeItem10, modeItem11, modeItem12, modeItem13, modeItem14, modeItem15, modeItem16, modeItem17, modeItem18, modeItem19, modeItem20, modeItem21, string_reset2 }; // All included slots void mainMenu() { @@ -1020,7 +1021,7 @@ void mainMenu() { // Main menu spans across three pages currPage = 1; lastPage = 1; - numPages = 3; + numPages = 4; while (1) { if (currPage == 1) { @@ -1029,9 +1030,12 @@ void mainMenu() { } else if (currPage == 2) { option_offset = 7; num_answers = 7; - } else { // currPage == 3 + } else if (currPage == 3) { option_offset = 14; num_answers = 7; + } else { // currPage == 4 + option_offset = 21; + num_answers = 1; } // Copy menuOptions out of progmem convertPgm(modeOptions + option_offset, num_answers); @@ -1179,8 +1183,14 @@ void mainMenu() { break; #endif -#ifdef enable_FLASH +#ifdef enable_SUPRACAN case 18: + setup_SuprAcan(); + break; +#endif + +#ifdef enable_FLASH + case 19: #ifdef enable_FLASH16 flashMenu(); #else @@ -1189,16 +1199,14 @@ void mainMenu() { break; #endif -#ifdef enable_SUPRACAN - case 19: - setup_SuprAcan(); - break; -#endif - case 20: aboutScreen(); break; + case 21: + resetArduino(); + break; + default: print_MissingModule(); // does not return } diff --git a/Cart_Reader/NGP.ino b/Cart_Reader/NGP.ino index cd81ba5..2359e46 100644 --- a/Cart_Reader/NGP.ino +++ b/Cart_Reader/NGP.ino @@ -109,26 +109,26 @@ bool getCartInfo_NGP() { // 4 Mbits case 0x98ab: // Toshiba case 0x204c: // STMicroelectronics ? - cartSize = 524288; - break; + cartSize = 524288; + break; // 8 Mbits case 0x982c: // Toshiba case 0xec2c: // Samsung - cartSize = 1048576; - break; + cartSize = 1048576; + break; // 16 Mbits case 0x982f: // Toshiba case 0xec2f: // Samsung case 0x4c7: // Fujitsu (FlashMasta USB) - cartSize = 2097152; - break; + cartSize = 2097152; + break; // detection error (no cart inserted or hw problem) case 0xffff: - return false; - break; + return false; + break; } // reset to read mode @@ -159,7 +159,7 @@ bool getCartInfo_NGP() { for (uint32_t i = 0; i < 17; i++) { romName[i] = readByte_NGP(0x24 + i); - // replace '/' chars in game name to avoid path errors + // replace '/' chars in game name to avoid path errors if (romName[i] == '/') romName[i] = '_'; }