From 29f437c771940aa35df5b0e3a30e72d31af6bae0 Mon Sep 17 00:00:00 2001 From: msiewert76 Date: Sun, 8 May 2011 17:59:13 +0000 Subject: [PATCH] - fix detection of infrared-enabled devices - add (preliminary) support for unknown hardware IDs - fix broken file selector on some flash cards (was an malloc issue) - add support for 2MB saves (I do not know if this save type exists, but I vaguely remember seeing it somewhere) - fix for situations where the game is not recognized e.g. due to bad contacts - Band Brothers DX/Jam With the Band is now officially NOT supported (yet another unknown piece of hardware) - Personal Trainer: Walking/Walk with me is now officially supported (1 MB Flash (wow) + infrared device) - update readme file --- arm9/source/auxspi.cpp | 36 +++++++++++++++----------- arm9/source/auxspi_core.inc | 2 +- arm9/source/fileselect.cpp | 4 --- arm9/source/globals.cpp | 3 +++ arm9/source/globals.h | 6 +++++ arm9/source/hardware.cpp | 20 ++++++++++++--- arm9/source/main.cpp | 50 ++++++++++++++++++++++++------------ arm9/source/strings.cpp | 1 + savegame_manager.odt | Bin 26070 -> 26552 bytes 9 files changed, 83 insertions(+), 39 deletions(-) diff --git a/arm9/source/auxspi.cpp b/arm9/source/auxspi.cpp index c60a96c..d5f2967 100644 --- a/arm9/source/auxspi.cpp +++ b/arm9/source/auxspi.cpp @@ -51,15 +51,24 @@ uint8 jedec_table(uint32 id) // 1 MB case 0x204014: return 0x14; + // 2 MB (not sure if this exists, but I vaguely remember something...) + case 0x204015: + return 0x15; // 8 MB (Band Brothers DX) + case 0x202017: // which one? (more work is required to unlock this save chip!) case 0x204017: return 0x17; - default: - return 0; + default: { + for (int i = 0; i < EXTRA_ARRAY_SIZE; i++) { + if (extra_id[i] == id) + return extra_size[i]; + } + return 0; // unknown save type! + } }; } -uint8 type2_size() +uint8 type2_size(bool ir = false) { static const uint32 offset0 = (8*1024-1); // 8KB static const uint32 offset1 = (2*8*1024-1); // 16KB @@ -67,12 +76,12 @@ uint8 type2_size() u8 buf2; // +8k data read -> read u8 buf3; // +0k ~data write u8 buf4; // +8k data new comp buf2 - auxspi_read_data(offset0, &buf1, 1, 2); - auxspi_read_data(offset1, &buf2, 1, 2); + auxspi_read_data(offset0, &buf1, 1, 2, ir); + auxspi_read_data(offset1, &buf2, 1, 2, ir); buf3=~buf1; - auxspi_write_data(offset0, &buf3, 1, 2); - auxspi_read_data (offset1, &buf4, 1, 2); - auxspi_write_data(offset0, &buf1, 1, 2); + auxspi_write_data(offset0, &buf3, 1, 2, ir); + auxspi_read_data (offset1, &buf4, 1, 2, ir); + auxspi_write_data(offset0, &buf1, 1, 2, ir); if(buf4!=buf2) // +8k return 0x0d; // 8KB(64kbit) else @@ -89,6 +98,7 @@ uint8 auxspi_save_type(bool ir) if ((sr & 0xfd) == 0xF0 && (jedec == 0x00ffffff)) return 1; if ((sr & 0xfd) == 0x00 && (jedec == 0x00ffffff)) return 2; if ((sr & 0xfd) == 0x00 && (jedec != 0x00ffffff)) return 3; // should also cover Pokemon HG/SS + // TODO: add support for Band Brothers DX (as soon as I know how) return 0; } @@ -100,13 +110,13 @@ uint32 auxspi_save_size(bool ir) uint8 auxspi_save_size_log_2(bool ir) { - uint8 type = auxspi_save_type(); + uint8 type = auxspi_save_type(ir); // TESTME: "ir" was missing, should fix recent issues switch (type) { case 1: return 0x09; // 512 bytes break; case 2: - return type2_size(); + return type2_size(ir); break; case 3: return jedec_table(auxspi_save_jedec_id(ir)); @@ -127,6 +137,7 @@ uint32 auxspi_save_jedec_id(bool ir) id |= auxspi_read() << 8; id |= auxspi_read(); auxspi_close(); + return id; } @@ -174,12 +185,10 @@ void auxspi_read_data(uint32 addr, uint8* buf, uint16 cnt, uint8 type, bool ir) void auxspi_write_data(uint32 addr, uint8 *buf, uint16 cnt, uint8 type, bool ir) { -/* if (type == 0) type = auxspi_save_type(); if (type == 0) return; - */ uint32 addr_end = addr + cnt; int i; @@ -223,8 +232,6 @@ void auxspi_write_data(uint32 addr, uint8 *buf, uint16 cnt, uint8 type, bool ir) } auxspi_close_lite(); - // wait for programming to finish - //auxspi_wait_wip(); // wait programming to finish if (ir) auxspi_disable_infrared(); @@ -270,7 +277,6 @@ void auxspi_erase(bool ir) auxspi_close_lite(); // wait for programming to finish - //auxspi_wait_wip(); if (ir) auxspi_disable_infrared(); auxspi_open(0); diff --git a/arm9/source/auxspi_core.inc b/arm9/source/auxspi_core.inc index ec2565e..81ec5af 100644 --- a/arm9/source/auxspi_core.inc +++ b/arm9/source/auxspi_core.inc @@ -36,7 +36,7 @@ inline void auxspi_wait_busy() inline void auxspi_open(uint8 device) { - REG_AUXSPICNT = 0xa040 | (device & 3); + REG_AUXSPICNT = 0xa040 | (device & 3) | 3; auxspi_wait_busy(); } diff --git a/arm9/source/fileselect.cpp b/arm9/source/fileselect.cpp index daadd4d..1fc31ee 100644 --- a/arm9/source/fileselect.cpp +++ b/arm9/source/fileselect.cpp @@ -178,10 +178,6 @@ void fileSelect(const char *startdir, char *out_dir, char *out_fname, netbuf *bu ftpGetFileList("/", buf, num_files); else fileGetFileList(startdir, num_files); - if (num_files == 0) { - displayMessage("ERROR"); - while(1); - } filePrintFileList(startdir, first_file, sel_file, num_files, allow_cancel); while (!select) { diff --git a/arm9/source/globals.cpp b/arm9/source/globals.cpp index 4e2c166..cc8808c 100644 --- a/arm9/source/globals.cpp +++ b/arm9/source/globals.cpp @@ -45,3 +45,6 @@ u32 mode = 0; u32 ezflash = 0; int slot2 = 0; + +u32 extra_id[EXTRA_ARRAY_SIZE]; +u8 extra_size[EXTRA_ARRAY_SIZE]; diff --git a/arm9/source/globals.h b/arm9/source/globals.h index 02196cc..85bcbd5 100644 --- a/arm9/source/globals.h +++ b/arm9/source/globals.h @@ -51,4 +51,10 @@ extern u32 ezflash; extern int slot2; +// this should be enough for the forseeable future +#define EXTRA_ARRAY_SIZE 16 + +extern u32 extra_id[EXTRA_ARRAY_SIZE]; +extern u8 extra_size[EXTRA_ARRAY_SIZE]; + #endif // GLOBALS_H \ No newline at end of file diff --git a/arm9/source/hardware.cpp b/arm9/source/hardware.cpp index c24413d..01505d9 100644 --- a/arm9/source/hardware.cpp +++ b/arm9/source/hardware.cpp @@ -57,7 +57,6 @@ static u32 pitch = 0x40000; // --------------------------------------------------------------------- -// FIXME: after the slot 1 detection was factored out, swap_cart no longer has perfect accuracy! bool swap_cart() { sNDSHeader nds; @@ -74,12 +73,15 @@ bool swap_cart() // don't try to dump a flash card if (slot_1_type == 2) continue; + sysSetBusOwners(true, true); // this will break DLDI on the Cyclops Evolution, but we need it anyway. cardReadHeader((u8*)&nds); displayPrintUpper(); - if (!nds.gameTitle[0]) + if (!nds.gameTitle[0]) { + displayMessage2A(STR_HW_CARD_UNREADABLE, false); continue; + } return true; } @@ -104,7 +106,19 @@ u32 get_slot1_type() if (size1 > 0) return 0; - // No save size test returned a save chip, so it must be a flash card. + // No save size test returned a save chip, so it must be a flash card, + // or a type 3 save with an unknown JEDEC ID. Unfortunately, due to + // different behaviour of flash cards, we can't test for this case, + // or the flash card may be recognised as "type 3 game". + /* + u32 id2 = auxspi_save_jedec_id(true); + u32 id1 = auxspi_save_jedec_id(false); + if (id2 != 0x00ffffff) + return 1; + if (id1 != 0x00ffffff) + return 0; + */ + return 2; } diff --git a/arm9/source/main.cpp b/arm9/source/main.cpp index 42031d2..5eb312b 100644 --- a/arm9/source/main.cpp +++ b/arm9/source/main.cpp @@ -328,6 +328,21 @@ bool loadIniFile(char* path) ini_close(ini); + // load additional Flash chip signatures (JEDEC IDs) + ini_locateHeading(ini, "new chips"); + for (int i = 0; i < EXTRA_ARRAY_SIZE; i++) { + int tmp; + sprintf(txt, "%i-id", i); + ini_locateKey(ini, txt); + ini_readInt(ini, &tmp); + extra_id[i] = (u32)tmp; + // + sprintf(txt, "%i-size", i); + ini_locateKey(ini, txt); + ini_readInt(ini, &tmp); + extra_size[i] = tmp; + } + // delete temp file (which is a remnant of inilib) remove("/tmpfile"); @@ -357,12 +372,12 @@ bool has_argv(int argc, char* argv[]) char *arg0 = argv[0]; // test for possible "/path", "fat*:/path" and "sd:/*". if (*arg0 == 'f') - if (strncasecmp(argv[0], "fat:/", 5) || strncasecmp(argv[0], "fat1:/", 6) - || strncasecmp(argv[0], "fat2:/", 6)) + if (!strncasecmp(argv[0], "fat:/", 5) || !strncasecmp(argv[0], "fat1:/", 6) + || !strncasecmp(argv[0], "fat2:/", 6)) return true; if (*arg0 == 's') - if (strncasecmp(argv[0], "sd:/", 4)) + if (!strncasecmp(argv[0], "sd:/", 4)) return true; if (*arg0 == '/') @@ -381,34 +396,37 @@ int main(int argc, char* argv[]) // detect hardware mode = hwDetect(); - // Init DLDI (file system driver), skip for mode == 4,5 which already calls this during - // hardware initialisation - if (mode < 4) { - int fat = fatInitDefault(); - if (fat == 0) { - displayMessage2A(STR_BOOT_DLDI_ERROR,true); - while (1); - } + // Init DLDI (file system driver) + int fat = fatInitDefault(); + if (fat == 0) { + displayMessage2A(STR_BOOT_DLDI_ERROR,true); + while (1); } // Load the ini file with the FTP settings and more options + for (int i = 0; i < EXTRA_ARRAY_SIZE; i++) { + extra_id[i] = 0xff000000; + extra_size[i] = 0; + } if (has_argv(argc, argv)) loadIniFile(argv[0]); else loadIniFile(0); + // load strings + stringsLoadFile(0); + // prepare the global data buffer data = (u8*)malloc(size_buf); - // This should not be required, but better safe than sorry. On the DS, it *might* be + // On my Cyclops, no 2MB buffer is available after loading strings! bad memory management? + // Anyway, we can't do anything except for the following (which restricts the usefulness + // of FTP safe mode) // possible that no continuous 2 MB are available. - if (data == NULL) { + while (data == NULL) { size_buf >>= 1; data = (u8*)malloc(size_buf); } - // load strings - stringsLoadFile(0); - // okay, we got our HW identified; now branch to the corresponding main function/event handler switch (mode) { case 1: diff --git a/arm9/source/strings.cpp b/arm9/source/strings.cpp index 3fd5190..e75a2a3 100644 --- a/arm9/source/strings.cpp +++ b/arm9/source/strings.cpp @@ -78,6 +78,7 @@ bool stringsLoadFile(const char *fname) ADD_STRING(STR_BOOT_DLDI_ERROR,"DLDI initialisation error!"); // ADD_STRING(STR_HW_SWAP_CARD,"Please take out Slot 1\nflash card and insert a game\n\nPress A when done."); + ADD_STRING(STR_HW_CARD_UNREADABLE,"I can't read the game\ninserted in slot 1.\nPlease eject and retry."); ADD_STRING(STR_HW_WRONG_GAME,"This game has a save chip\nthat is smaller than the\nsave you are going to\nwrite. Please insert a\ndifferent game.\n\nPress A when done."); ADD_STRING(STR_HW_PLEASE_REBOOT,"Done! Please power off\n(and restart if you want\nto do more)."); // diff --git a/savegame_manager.odt b/savegame_manager.odt index 25d10c60b93798c22cdb5f7cb14bc076afc7dd2a..212d05ddd7a620c020f922cc6d0a55fe15ad8cb2 100644 GIT binary patch delta 21216 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