From 611c3305e85114704a3f2db2b0c45db7b7eeb186 Mon Sep 17 00:00:00 2001 From: msiewert76 Date: Wed, 25 May 2011 19:27:51 +0000 Subject: [PATCH] - fixes in slot 2 mode detection - implements slot 2 mode - updates Readme file for slot 2 mode - disable two strings in the translation template for error messages that appear before the file has been read --- arm9/source/hardware.cpp | 126 ++++++++++++++++++++++++++++++++++++++- arm9/source/hardware.h | 3 + arm9/source/main.cpp | 28 +++++---- lang/template.ini | 5 +- savegame_manager.odt | Bin 26949 -> 27246 bytes 5 files changed, 148 insertions(+), 14 deletions(-) diff --git a/arm9/source/hardware.cpp b/arm9/source/hardware.cpp index 06db229..fa67bee 100644 --- a/arm9/source/hardware.cpp +++ b/arm9/source/hardware.cpp @@ -172,8 +172,10 @@ u32 hwDetect() // the same microSD card between Slot 1 and Slot 2, this should be the safest mode. // (If you know a smarter way of doing this, feel free to commit a patch!) // - if (slot2) - return 4; + // EDIT: and we can't test this here, since the ini file has not been parsed yet! + // + //if (slot2) + //return 4; // Try to identify download play mode. This also introduces various complications: // - The latest libnds versions include code for the SD-slot on the DSi. It does not work @@ -464,6 +466,126 @@ void hwErase() auxspi_erase(ir); } +// -------------------------------------------------------- +void hwBackupSlot2() +{ + u32 size_blocks = 0; + + swap_cart(); + displayPrintUpper(); + + bool ir = (slot_1_type == 1) ? true : false; + uint32 size = auxspi_save_size_log_2(ir); + uint8 type = auxspi_save_type(ir); + + // just select a filename, no extra work required! + char path[256]; + char fname[256] = ""; + fileSelect("/", path, fname, 0, true, false); + + // look for an unused filename + if (!fname[0]) { + sNDSHeader nds; + cardReadHeader((u8*)&nds); + uint32 cnt = 0; + sprintf(fname, "/%.12s.%i.sav", nds.gameTitle, cnt); + displayMessage2F(STR_HW_SEEK_UNUSED_FNAME, fname); + while (fileExists(fname)) { + if (cnt < 65536) + cnt++; + else { + displayWarning2F(STR_ERR_NO_FNAME); + while(1); + } + sprintf(fname, "%.12s.%i.sav", nds.gameTitle, cnt); + } + } + char fullpath[256]; + sprintf(fullpath, "%s/%s", path, fname); + displayMessage2F(STR_HW_WRITE_FILE, fullpath); + + FILE *file = fopen(fullpath, "wb"); + if (size < 8) + size_blocks = 1; + else + size_blocks = 1 << (size - 8); + // Slot 2 DLDI drivers don't seem to support writing big blocks! + u32 LEN = min(1 << size, 0x100); + for (u32 i = 0; i < size_blocks; i++) { + displayProgressBar(i+1, size_blocks); + auxspi_read_data(i << 8, data, LEN, type, ir); + fwrite(data, 1, LEN, file); + } + fclose(file); + + displayProgressBar(0,0); + displayMessageF(STR_EMPTY); +} + +void hwRestoreSlot2() +{ + // First, swap in a new game + swap_cart(); + bool ir = (slot_1_type == 1) ? true : false; + uint32 size = auxspi_save_size_log_2(ir); + uint8 type = auxspi_save_type(ir); + displayPrintUpper(); + + // second, select a save file + char path[256]; + char fname[256]; + memset(fname, 0, 256); + displayMessageF(STR_HW_SELECT_FILE); // lower screen is used for file browser + fileSelect("/", path, fname, 0, false, false); + char msg[256]; + // This does not have to be translated. + // FIXME: make this more meaningful! + sprintf(msg, "%s/%s", path, fname); + + FILE *file = fopen(msg, "rb"); + if (!file) { + iprintf("Error!"); + while (1); + } + + // 2a, format game if required + if (type == 3) { + displayMessage2F(STR_HW_FORMAT_GAME); + auxspi_erase(ir); + } + + // and third, write save + displayMessage2F(STR_HW_WRITE_GAME); + u32 LEN = 0, num_blocks = 0, shift = 0; + switch (type) { + case 1: + shift = 4; // 16 bytes + break; + case 2: + shift = 5; // 32 bytes + break; + case 3: + shift = 8; // 256 bytes + break; + default: + return; + } + LEN = 1 << shift; + num_blocks = 1 << (size - shift); + + for (unsigned int i = 0; i < num_blocks; i++) { + if (i % (num_blocks >> 6) == 0) + displayProgressBar(i+1, num_blocks); + fread(data, 1, LEN, file); + sysSetBusOwners(true, true); + auxspi_write_data(i << shift, data, LEN, type, ir); + } + fclose(file); + + displayProgressBar(0,0); + displayMessageF(STR_EMPTY); +} + // ------------------------------------------------------------ void hwBackupFTP(bool dlp) { diff --git a/arm9/source/hardware.h b/arm9/source/hardware.h index 5ade65b..4d4fcff 100644 --- a/arm9/source/hardware.h +++ b/arm9/source/hardware.h @@ -75,6 +75,9 @@ void hwBackupGBA(u8 type); void hwRestoreGBA(); void hwEraseGBA(); +void hwBackupSlot2(); +void hwRestoreSlot2(); + void hwFormatNor(uint32 page, uint32 count); uint32 hwGrab3in1(); diff --git a/arm9/source/main.cpp b/arm9/source/main.cpp index 87feeac..fe43cbf 100644 --- a/arm9/source/main.cpp +++ b/arm9/source/main.cpp @@ -101,8 +101,8 @@ void mode_slot2() displayPrintUpper(); displayPrintLower(); - displayWarning2F(STR_BOOT_MODE_UNSUPPORTED); - while(1); + //displayWarning2F(STR_BOOT_MODE_UNSUPPORTED); + //while(1); touchPosition touchXY; while(1) { @@ -111,20 +111,22 @@ void mode_slot2() // backup if ((touchXY.py > 8*0) && (touchXY.py < 8*8)) { - //displayPrintUpper(); - //hwBackupGBA(); + hwBackupSlot2(); + displayPrintLower(); } // restore if ((touchXY.py > 8*8) && (touchXY.py < 8*16)) { - //displayPrintUpper(); - //hwRestoreGBA(); + hwRestoreSlot2(); + displayPrintLower(); } // erase if ((touchXY.py > 8*16) && (touchXY.py < 8*24)) { - //displayPrintUpper(); - //hwEraseGBA(); + swap_cart(); + displayPrintUpper(); + hwErase(); + displayPrintLower(); } } } @@ -304,7 +306,8 @@ bool loadIniFile(char* path) ini = ini_open(inipath, "r", ""); } if (!ini) { - displayWarning2F(STR_BOOT_NO_INI); + //displayWarning2F(STR_BOOT_NO_INI); + iprintf("could not find ini file!"); while (1); } @@ -401,9 +404,11 @@ int main(int argc, char* argv[]) mode = hwDetect(); // Init DLDI (file system driver) + sysSetBusOwners(true, true); int fat = fatInitDefault(); if (fat == 0) { - displayWarning2F(STR_BOOT_DLDI_ERROR); + //displayWarning2F(STR_BOOT_DLDI_ERROR); + iprintf("DLDI error"); while (1); } @@ -416,6 +421,9 @@ int main(int argc, char* argv[]) loadIniFile(argv[0]); else loadIniFile(0); + + if (slot2) + mode = 4; // load strings // "txt" is used as a temp buffer for the language file name diff --git a/lang/template.ini b/lang/template.ini index 75c6120..c437d2b 100644 --- a/lang/template.ini +++ b/lang/template.ini @@ -8,9 +8,10 @@ # The strings "0" and "1" should never be used; they are internal stuff for "empty" and "untranslated" strings. # 2-5: These are boot-time messages. -2=DS savegame manager\nVersion 0.2.5 semi-stable\nBy Pokedoc +# You do not need to translate 2 and 3, they only appear *before* this file is read. Since the format is frozen, I leave these slots in. +#2=DS savegame manager\nVersion 0.2.5 semi-stable\nBy Pokedoc # This is an error message appearing when the ini file can not be found. -3=Unable to open ini file!\nPlease make sure that it is\n1. in this apps folder, or\n2. in the root folder\nIf 1. does not work, use 2. +#3=Unable to open ini file!\nPlease make sure that it is\n1. in this apps folder, or\n2. in the root folder\nIf 1. does not work, use 2. # Thsis is an error message called when the system tries to enter a mode that is not supported yet (e.g. DSi mode) 4=This mode is DISABLED.\nPlease restart the system. # This is an error called when the DLDI driver is not available. diff --git a/savegame_manager.odt b/savegame_manager.odt index 66260d4e95767e66d2c70807b78fc9942359ae16..f178cf5bb106cd39ffae7e824a5b4d4cc34d08c0 100644 GIT binary patch delta 21022 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 Yb^puxpY9yQhmaID4*~K@=&wos2LkFn6#xJL delta 20787 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