From WiiBrew
Jump to navigation Jump to search

Recovered corrupt memory card

Last week, my memory card (an official Memory Card 251) corrupted right before playing a game. I ended up formatting it, but later I found this tool. I decided to do a full memory card dump and examined the dump in a hex editor. Lo and behold, all the old files were still there! I was able to restore all of my old files by recreating the GCI header manually (by taking the GCI header from another save from the same game) and restoring the files using Ctr-Gcs. (The only one that didn't work properly was my Mario Kart: Double Dash save. I'm not sure why, but it wasn't a major loss.)

I'm starting to write a PC-based utility to automate recovery of corrupted files using full dumps. Note that it probably won't work if the files are fragmented, since there's no way to determine what order the fragments are in, but if the files aren't fragmented, it should work fine.

Thanks for writing (and improving) this great tool. I might also help out with this version of Ctr-Gcs later by reorganizing the code to make it easier to maintain and maybe adding a better UI.

---GerbilSoft 03:27, 17 January 2012 (CET)

I imported the Mario Kart: Double Dash save in Dolphin, and it seemed to work fine. When I imported it on the Wii, the system memory card manager showed an empty banner and icon, and showed a bunch of 'ÿ' characters (0xFF) as the comment. I couldn't find anything obvious in the source code that would lead to this error, though. (The comment_addr for MK:DD is 0x2000, which is the start of the second block, so maybe it has something to do with that?)
---GerbilSoft 04:16, 19 January 2012 (CET)
I did a backup of my official Memory Card 251 with this tool and even though the card was not corrupt when I made the backup, Mario Kart Double Dash was one of three saves that could not be imported back to the real card as a .gci file. (Same result as yours) The only way I got the Mario Kart save back on the real card was to make a RAW dump of an unofficial card, load both my official and unoffical RAW dumps in my Dolphin Wii System Menu, copy the Mario Kart Double Dash save from the official dump to the unofficial dump and then restore the unofficial dump back to its card with this program. Perhaps certain games cannot be properly exported/imported as GCIs, or this is just a coincidence. -MountainDrew 01:36, 8 February 2012 (CET)
sorry i didn't react earlier. youre better off contacting me on my site then this place. in either case if you can improve this tool feel free to do so. but please contact me with feature we could add in the tool :) i knew about the formatting. it only clears the header blocks, not the real data but like you said having fragmented saves screws it up and even Dolphin's manager has issues with that. --DacoTaco 11:23, 23 March 2012 (CET)

Restore Backup to Official Memory Card

Has anyone been able to restore a RAW dump to an official memory card? This program works beautifully using RAW with unofficial cards, but always corrupts my official card upon restore. I've dumped a freshly formatted official memory card and restored the empty dump without problem, but the second you try to restore a dump with even a single game save, it corrupts. (Backup of official cards seems to be fine, as it creates RAW files that Dolphin reads without any problem) -MountainDrew 01:53, 8 February 2012 (CET)

i have no idea. i dont have any official card, nor can i get one that can be corrupted :/ does the tool say its corrupted as well after a restore? --DacoTaco 11:23, 23 March 2012 (CET)

Restoring to a different memory card?

Can a dump of a whole memory card created with Ctr-Gcs be restored to a different memory card which has more capacity? And how about restoring a dump created using a official MC to a third party one? - Dere 18:57, 20 February 2012 (CET)

i guess it could work but i wouldn't do it. the problem is that in the mem card header it says what size the mem card is and has the serial and all that. --DacoTaco 11:23, 23 March 2012 (CET)

Protected saves?

It's well known that dumps of protected GC saves created with Gamecube Saver, Nugasa, etc. can only be restored to the memory card the dump was created from (unless it was formatted). Does anyone know if creating a whole raw dump of the MC with Ctr-Gcs solve this problem? ie: If I have a F-Zero GX save and make a dump of my whole memory card with Ctr-Gcs, format my MC, and then restore it using the dump I made before formatting, will my F-Zero GX save work? - Dere 18:57, 20 February 2012 (CET)

technically it could work. cause when restoring a raw, it overwrites the headers again, and therefor the serial the save file is linked to. however i have not yet tested this fully and im not sure if it will work. give it a show and we'll know :P it would be great if some1 ported the save file unlocker from PSO to Fzero tho... --DacoTaco 11:23, 23 March 2012 (CET)
Hello DAcoTaco, regarding protected saves I have created a modified version of this application which basically formats a memory card with a specified header.
I just added the CARD_NewHeader function to the card.c file, whose code is essentially the same as CARD_Format + __card_formatregion functions: the main difference is that instead of generating a random serial number I explicitly asign the first 511 bytes the respective values I can see in the card's dumped raw file (those include the serial id, checksums, size, etc..).
The reason why I made this change was that unlike raw backup, the raw restore option wouldn't work on my memory cards, don't ask me why :(. I explored the card.c and main.c code and it seems to be some obscure I/O issue that is not easy to fix. The thing is that I badly wanted to have my f-zero file copied to a new memory card (and be fully usable from that card) and with the default ctr-gcs daco taco it was not possible. This is not a problem with other save games, since there are other homebrew apps that can successfully transfer them at a gci level...but that option is useless for protected files.
Thankfully I discovered that when trying to restore, if the card was corrupted, there was an option to format it before proceeding...and that seemed to work well (both the wii and gamecube games would not consider it corrupted)!! That is why I based my code on the formatting functions and was able to replicate the header section of one memory card to another (of course, I backuped up everything in the second card before anything since this method removes all files).
After doing this, I loaded the game and created a blank f-zero file. Then I rebooted the wii this time with the original memory card with the good savegame and after the game loaded and all I swaped the two cards again in order to "fool" the game. Then went to the save menu and tried to save game and it worked perfectly as expected: the game didn't notice that this was a different memory card and just wrote over the recently created blank save game, so now with this I have two memory cards with the same ID and same F-zero original savegame :).
I think adding an option to just copy the header section the way I did would be a nice addition to your tool, since it could be the ultimate solution to people who have problems with their memories + raw restore option and really want to copy their protected games. If you need help with coding I have no problem in helping out, although I am sure you won't have any problem with the info I gave. Just warn that I have tried this successfully on one card of mine, it would be great if this could be tested on a wider variety of cards...--Fulcro —Preceding undated comment added 14:09, 6 May 2012 (CEST).
i love what youve done. there is indeed that error on raw restore on some cards. my main card has it and i dont know why it happens. maybe you could share the code so we could incorporate it in the program as option? :) --DacoTaco 21:42, 8 May 2012 (CEST)
Below I paste the piece of code.
Note that you should read the card.c copyright at the begining since this
new function would mean code modification (point 2)
Invocation from main.c is straightforward: just mount the card before, call this method and
process the return code. No further memory card Sync is required.
Of course the code can be improved to pass the card slot in the function signature and all,
this was just a quick improvised solution to get my f-zero file copied over to a different card once and for all.
--Fulcro —Preceding undated comment added 23:43, 9 May 2012 (CEST).
its better to read it from a raw then :) i doubt ill remember to make the changes so if you feel free to edit it :) --DacoTaco 22:21, 13 May 2012 (CEST)

Alternative Icon

I couldn't see the icon in the HBC because of my dark theme, so I whipped up a clearer icon and thought I would share it. DacoTaco, feel free to use this if you want: Icon JoostinOnline 20:13, 18 May 2012 (CEST)

Can't restore Twilight Princess saves

I seem to be able to copy Twilight Princess saves ok, but when I try writing back to the memory card the save has no visible icon and the game does not recognize it. --Mzxrules 09:18, 19 May 2012 (CEST)

see if a different app can do it. im not sure why that would happen --DacoTaco 10:09, 2 June 2012 (CEST)