Corrupted Cartridge Fixer Release

  • Thread starter Thread starter skawo
  • Start date Start date
  • Views Views 204,631
  • Replies Replies 775
  • Likes Likes 92
Some hashes can take a very long time. 1000+ retries isn't actually uncommon.
If it is really every hash though then, yeah, probably too far gone, though...
 
Hello, I'm currently going through my 3DS collection to verify them and I got to Omega Ruby and, of course, it didn't pass verification.

I've run the fixer 4 times total, and it found 0 unfixable chunks every time it finished, yet it still didn't pass verification.

So earlier in the thread I ran across the following post:

You're correct, the tool only goes over actual files so the padding area is not touched.

You can attempt to stabilise the padding area by holding SELECT while going to calculate SHA-1 of the entire cartridge (without dumping it).

I personally wouldn't, though; straining the cart further really doesn't seem like a good idea.

As for what the padding should be, it appears it's usually 0xFFs.

After doing this, it passed verification multiple times.

I just have a few questions regarding this feature.

Is this feature specific to your version of GodMode9 or is it also in the base version?

And how exactly do I ensure it calculates hashes for the entire cartridge?

I just clicked on the .3ds file, held SELECT and clicked on Calculate SHA-1.

Is that correct or do I need to somehow select all the files from the cartridge?
 
This feature is only in the fork.

What you did is correct, but shouldn't be necessary.

The padding area isn't getting verified. I imagine another pass over the cartridge just caused it to finally fully stabilise.
 
Okay thank you for the response.

Well, whatever it was, my copy of Omega Ruby is fixed now and verifies consistently, so thank you very much for this program.

So far, this has been the only game in my collection that didn't verify on the first try and I hope it stays that way.

How often do you think I should verify my games to keep them in good shape?

I was thinking of something like every 5 years or so.
 
No clue. I personally would do it every couple of years, but it could be longer as you suggest. Don't have any data on how long the degradation takes to happen again now that the cart's been refreshed.
 
Hello Guys,

im trying to fix my Omega Ruby. Even the icon of the game is corrupted in GM9 idk if that means anything or if the cardridge is dirty. Ive tried to dump the save to my PC but it cant be loaded into PKHeX and on Emulator it says that the savefile is corrupted. In GM9 verification didnt work and im now letting it run in the fixer.
WhatsApp Image 2026-08-28 at 10.49.06.jpeg
 
Hi, I'm trying to recover my Pokemon Omega Ruby, but when I choose "fix cartridge corruption," the percentage always stays at 0%. I also have 41,000 refreshes.
Post automatically merged:

Hi, I'm trying to recover my Pokemon Omega Ruby, but when I choose "fix cartridge corruption," the percentage always stays at 0%. I also have 41,000 refreshes.
Help me Please and thank you
 
Last edited by Maikel510,
Well, unfortunately that might mean the cartridge is too far gone at this point to be repaired. The amount of time it takes to repair the cartridge depends on how corrupted it starts out.
 
Sorry if the following things were already asked before, but I couldn't find them via searches:
  • How much data is a chunk? Is it just a few Kilobytes?
  • How much do unfixable chunks actually affect playing in most cases? If there were 100 unfixable chunks, could I possibly play the game normally, especially if it only affects textures?
  • There are some chunks that aren't automatically skipped and it just hangs around them forever. Would an option to skip chunks after some time be possible to implement?
  • Why isn't this functionality part of the normal GodMode9? This seems like it will become essential for most users that continue to use the 3DS, as more and more other games are likely to start failing.
Really appreciate this tool being available, thank you so much!
 
Last edited by Tennin,
Chunk size is not consistent (e.g the entire ExeFS is technically also counted as a chunk)

Even 1 unfixable chunk can potentially make the game unplayable unfortunately.

An option to skip a chunk appears after 500 retries of that chunk. You can also hold X while starting the fixer and it will autoskip chunks once 500 retries are reached.
 
  • Like
Reactions: Tennin
Thanks for the reply. The holding X combo is almost what I wanted. Is it possible to hold X+Y together when starting a new run so that it logs at the same time as well?

What I thought would be great is to initiate an endless retry process where the fixer initiates new runs on its own and maybe lengthens the time for retries for affected chunks when there are starting to get less and less of them.

In regards to chunks: I'd like to understand how it works a bit more. What's the minimum and maximum file size a chunk can be? And can one chunk make the game unplayable if it affects some lines of game logic? I'm just trying to understand if it's possible to play a game normally even if it eventually tries to load an affected chunk.
 
If the game attempts to load an affected chunk from the romfs it will typically instantly crash (even if the game could technically handle the bad data). Some games appear to instead keep loading infinitely instead (Smash Bros.)
You'd have to get lucky with what that chunk is part of to have it not affect the game.

I think X + Y do work, you just have to keep holding Y as you press A to confirm the "autoskip is on" message. I'll change that to work a bit more intuitively.

I'll think about the endless retry thing. As for your question on "how big/small can a chunk be", uhhh... I think it's 0x200 bytes, but admittedly I'm not entirely sure.
 
Last edited by skawo,
  • Like
Reactions: Tennin
I've seen someone post a photo of his game's cartridge icon being corrupted, but it displayed at least. That makes me think that if the affected chunks contain texture data, which I think might be the majority of a game's files, they should load in during the gameplay and if a chunk is small it might not even be noticeable. I'd still be curious about the minimum, maximum and average filesizes of chunks.

A few more questions:
  • Is there any downside of trying to fix chunks for a prolonged time? I'm thinking of the counter for individual attempted retries reaching millions.
  • Can you include a display of how many chunks were actually fixed during a run? There's only a display of unfixable chunks at the end right now.
  • Would it be possible to develop a program that can identify what game files are usually contained within a certain chunk and it being rated as to how playable the game might still be?
  • If this fixing mechanism was included by Nintendo, why didn't they utilize it better or gave the user a way to utilize it themselves? How is it currently utilized by the 3DS itself? Do you think they underestimated how severe the issue would become?
 

Site & Scene News

Popular threads in this forum