Corrupted Cartridge Fixer Release

  • Thread starter Thread starter skawo
  • Start date Start date
  • Views Views 181,840
  • Replies Replies 709
  • Likes Likes 86

skawo

Well-Known Member
Member
Joined
Aug 18, 2015
Messages
745
Reaction score
1,038
Trophies
3
Age
36
XP
3,988

3DS Cartridge Fixer Tool


Lately, there have been news about NAND Flash media deteriorating just because of sitting unused in storage for too long. 3DS Cartridges use a fancy NAND Flash chip, so, naturally, there is some cause for concern that they, too, will start failing.

When cleaning my collection, I decided to check all my 3DS games for this very reason - and to my surprise, my Paper Jam Bros. cartridge has completely failed. On an unhacked 3DS, it would load infinitely, and on 3DSes with Luma CFW it would immediately throw an ARM 11 Exception when launched.

After dumping the game, I discovered that the ExeFS and about half of the game files were corrupted. I nearly wrote the cartridge off, until I noticed that the "infinite load" thing stopped happening. Indeed, the game was now crashing when trying to display the titlescreen. Checking with GodMode9, the ExeFS has seemingly fixed itself! Some more faffing later, I even managed to get the titlescreen to work again intermittently.



Reading around, I found this post, and with it mentions of the 3DS carts' refresh functionality. And so, I modified GodMode9 to run this refresh more frequently and after some manual checking and comparing hashes, I now have a fully working Paper Jam. Bros. cartridge again. Hooray?

I decided to make the process more automatic and release a tool able to potentially fix cartridges corrupted in this same manner.

This applies to 3DS carts only - not DS ones. Those are likely safe for the time being.



Download
(Click on "GM9CorruptionFixer_1.5a.firm" to download)


Usage:

  1. Install Luma CFW if it is not already installed.
  2. Download the compiled .firm file from the Releases section and copy it to:
    SD:/luma/payloads/
  3. Insert the SD card into the 3DS, then power it on while holding START.
  4. If a payload menu appears, select the GodMode Refresh firm. If not, simply continue.
  5. Select GAMECART.
    A list of files should appear. If no files are shown, remove and reinsert the game cartridge, then re-select GAMECART to try again.
  6. Select the file ending in .3ds.
    Do not select a file ending in .trim.3ds.
  7. Select NCSD image options...
  8. Select Verify.
    This checks whether the cartridge has this specific type of corruption or whether a different issue is causing the problem.
  9. If verification fails:
    • Return to NCSD image options
    • Select Fix cartridge corruption
    • If Fix cartridge corruption is missing, you likely launched the standard version of GodMode9 instead of the refresh version. Confirm that the refresh .firm file is in: SD:/luma/payloads/, and then relaunch it.
  10. After the repair process finishes:
  • Return to NCSD image options
  • Select Verify again
If the verification succeeds, the repair is complete. If verification still fails, run Fix cartridge corruption again (some cartridges require several repair passes before they become stable).

Tracking repair progress
To track whether the cartridge is improving, observe the "unfixable chunks" number. This number is increased whenever a chunk cannot be fixed, or is manually skipped.

Compare the number after each repair pass:
  • If the number of bad blocks decreases with each run, the cartridge is improving. Continue running the repair process.
  • If the number of bad blocks does not decrease after 2–3 attempts, those blocks are likely permanently damaged and probably will not improve with additional runs.

This will take a while. As in, it can take more than a day for heavily corrupted carts.

If you're just looking for a way to confirm your cartridges are working fine, the verify function (including the one in GodMode9) checks all the files - a more thorough check than just trying the cartridge out regularly. A cartridge might start but still have some random files corrupted.


Though not proven, I am not sure that simply inserting the cartridge into the console ocassionally is enough to preserve its longevity: to be safe, I think the console should actually go through all the data blocks at least once. Running the GodMode9 verify function periodically (every couple years or so) should extend the cartridge's longevity.

From testing, it seems some games are more affected than the others. The games that come up most often, and thus are likely most prone to this fault, are:

  • Persona Q
  • Pokemon X and Y
  • Pokemon Omega Ruby and Alpha Sapphire
  • Super Smash Bros. for Nintendo 3DS
  • Mario Kart 7
  • Fire Emblem Echoes
  • Fire Emblem Fates

(Note though, that this is not an extensive list - especially since these are all fairly big titles, and it's unlikely only first/second party stuff is affected)

Not updating this anymore, but after about a year
these were the stats:

72 fixed fully - - - - - - - - 35 improved - - - - - - - - 34 unrecoverable

If you do try this out, please share the results!

Note: this will not do anything for cartridges that have physical defects, such as cracked solder joints. But if your cartridge appears to load infinitely, or frequently crashes from non-gameplay-related reasons, this tool has a chance to fix it.
 
Last edited by skawo,
Woah, crazy that this is a thing that’s even possible. Happy to see you ended up getting something like this working, especially after the recent wii u bricking news. Will definitely check my carts and run this by some of my friends to see if any of us could benefit from this :)
 
From my tested games, only Smash Bros. had these problems, the game card alone would boot to black and with the updates installed it would boot but crash on the tutorial video and load infinitely on various of the game modes.

Using the tool fixed it and seems to be working fine again as is or with the updates installed, had quite a few of mismatched blocks, but also a lot of good ones.

The game card is the first version from the launch of the game (1.0 without updates on the game card) with the 8.1.0 update.
 
I have released version 1.1 with more features:
  • Will detect if block hash gets stuck on a wrong value, and skip that block automatically if it's still stuck for 20 refresh attempts.
  • Allows user to skip past a block after 500 refresh attempts by pressing Y.
 
  • Like
Reactions: TriangularFish
A friend of mine tried your tool on his corrupted cartridge of Pokémon Omega Ruby, but it didn't work. He used both the releases of the tool. The first one got stuck almost immediately, even with Select mode. The latest one gave him a lot of mismatches and after many skips he decided to give up.

Just for reference, it's an Italian cartridge of Pokémon Omega Ruby bought on release day, the code on the back is ECRPX42413
 
  • Like
Reactions: skawo
3DS Cartridge Fixer Tool

Lately, there have been news about NAND Flash media deteriorating just for sitting unused in storage for too long. 3DS Cartridges use a fancy NAND Flash chip, so, naturally, there is some cause for concern that they, too, will start failing.

When cleaning my collection, I decided to check all my 3DS games for this very reason - and to my surprise, my Paper Jam Bros. cartridge has completely failed. On an unhacked 3DS, it would load infinitely, and on 3DSes with Luma CFW it would immediately throw an ARM 11 Exception when launched.

After dumping the game, I discovered that the ExeFS and about half of the game files were corrupted. I nearly wrote the cartridge off, until I noticed that the "infinite load" thing stopped happening. Indeed, the game was now crashing when trying to display the titlescreen. Checking with GodMode9, the ExeFS has seemingly fixed itself! Some more faffing later, I even managed to get the titlescreen to work again intermittently.



Reading around, I found this post, and with it mentions of the 3DS carts' refresh functionality. And so, I modified GodMode9 to run this refresh more frequently and after some manual checking and comparing hashes, I now have a fully working Paper Jam. Bros. cartridge again. Hooray?



I decided to make the process more automatic and release a tool able to potentially fix cartridges corrupted in this same manner.

Here it is: https://github.com/skawo/GodMode9-with-Cartridge-Fixer

Now, it bears repeating, even though it's bolded in the readme, there; only run this if your cartridge is already bad.

So far, 6 cartridges have been improved with this; 5 fixed completely and one where a single music file was completely unrecoverable. If you DO manage to fix your game, great! Please share, as I'd love to hear what the actual success rate here will be.

Note: this will not do anything for cartridges that have physical defects, such as cracked solder joints. But if your cartridge appears to load infinitely, or frequently crashes from non-gameplay-related reasons, this tool has a chance to fix it.

Oh nice, this will be extremely useful.

As a weird sidenote, theoretically, could this allow for the overwriting of contents onto an existing 3DS Cartridge with custom contents? Or is there a limitation with the algorithm the refresher uses?
 
Last edited by skawo,
how permanent is this? The chunks are already having issues, so this would just fix them for a while, right?
 
I don't know how permanent this is, but in theory this isn't a persistent hardware problem per se - it's a problem with data retention, caused by the chip not getting power for while. Therefore it should last as long as the cartridge gets some use. The cartridge I fixed a few weeks ago still works perfectly.
 
  • Like
Reactions: balemoc
ok so ive tried it and i had a partial fix, i guess? My alpha sapphire copy always crashes when you go into super training, and nowhere else, for some reason, but once i ran this, i was able to get 2 of the super training games in before it crashed, whereas i never completed one of them without it crashing before. It also wasn't able to fix 2 or 3 of the memory blocks, so that's probably where the problem's coming from.

Also, in pokemon games, are things that aren't changed between the game versions usually at the same memory address for both games? if so, then i could probably make a patch that replaces the broken chunks with data from my omega ruby cartridge lol.
 
ok so ive tried it and i had a partial fix, i guess? My alpha sapphire copy always crashes when you go into super training, and nowhere else, for some reason, but once i ran this, i was able to get 2 of the super training games in before it crashed, whereas i never completed one of them without it crashing before. It also wasn't able to fix 2 or 3 of the memory blocks, so that's probably where the problem's coming from.

Also, in pokemon games, are things that aren't changed between the game versions usually at the same memory address for both games? if so, then i could probably make a patch that replaces the broken chunks with data from my omega ruby cartridge lol.
I wonder if you could actually just dump a new copy of alpha sapphire and use the file redirection patches to just load/use "fresh" super training" files.

Just treat the vanilla files like modded ones
 
I wonder if you could actually just dump a new copy of alpha sapphire and use the file redirection patches to just load/use "fresh" super training" files.

Just treat the vanilla files like modded ones
then i would have to buy the game again :P
 
ok so ive tried it and i had a partial fix, i guess?
Try running version 1.2 instead of latest and see if that does better. Also, not sure if you have, but don't skip any blocks manually - it can take much more than the 500 retries to fix a block.

Just treat the vanilla files like modded ones
You absolutely can! But, I mean, at that point, might as well just install a full copy, I think.

I'm pretty sure you could make a patch out of the Ruby cart, though.
 
Last edited by skawo,
Is there a way to write different roms to an official cart?
For example, make Paper Jam into Smash Bros etc.
 

Site & Scene News

Popular threads in this forum