Corrupted Cartridge Fixer Release

  • Thread starter Thread starter skawo
  • Start date Start date
  • Views Views 217,983
  • Replies Replies 849
  • Likes Likes 95
Alright, sounds like the changes work, then. I'll merge them when you make the PR, @glauberlima

@Peffse, kind of sounds like the Omega Ruby cart might have some sort of physical defect. Could be one of those carts that actually need reflowing?
Yeah, I feel like the particular chunk is dead dead. That would explain how it got up to 82m refreshes, and then the ever-decreasing amount of refreshes until freeze when I retried the tool. I bet if I continue dumping the cart to cia repeatedly it will eventually fail because each read lowers the limit.
I was able to use checkpoint to dump the save file by hot-swapping the cartridge, so I'm content with calling this one gone.


Excellent!

Did you notice any issues with the new screen? Overlapping items, heartbeat indicator stuck, etc?
No issues noticed! Great work!
 
  • Like
Reactions: glauberlima
Run the test version with the retry and stuck values at their minimal, also toggle auto skip on.

Please share your results once you have it.

Tks!

The old fixer finally crashed overnight. Attempting to use the new one and getting and immediate failure.
Post automatically merged:

I’m pretty sure whatever the old program did finished it off. Because it freezes both the old and the new fixer almost immediately now.
 

Attachments

  • IMG_3844.jpeg
    IMG_3844.jpeg
    1.9 MB · Views: 1
Last edited by ,
  • Sad
Reactions: skawo
The old fixer finally crashed overnight. Attempting to use the new one and getting and immediate failure.
Post automatically merged:

I’m pretty sure whatever the old program did finished it off. Because it freezes both the old and the new fixer almost immediately now.

What about turning OFF Auto Skip and leaving the others at their minimals?
 
Had to go out of town for work. Will be back Thursday night. Not super hopeful though. But who knows, may get lucky. I left the game in and put the console in sleep mode and on a charger in the meantime.
 
  • Like
Reactions: glauberlima
So I've been doing a bit of an experiment for the past few days. I have completely stopped using the refresh tool and decided to keep the cartridge idle on the home screen for 2 days, then spent another 2 days leaving it in the box on the shelf.

By the second day, before placing the cartridge back onto the shelf, I ran the tool to see how far it can get. It performed about as well as before, and gave an error at ~1000 refresh count.

However, after the 2 days of the cartridge being on the shelf, the tool no-longer errors out at the first chunk. Perhaps giving your cartridge a little rest can help against these crashes. It's probably not good for the cartridges to have constant refreshes for 24/7 over the course of several days.

I retested the tool using these settings after resting the cartridge:
Retry: 100
Stuck: 25
Autoskip: On
Log: Off
Refresh: On

Perhaps a mixture of using this tool + home screen + rest will do the trick? Probably more work needed to be done to confirm that though.
Post automatically merged:

So I've been doing a bit of an experiment for the past few days. I have completely stopped using the refresh tool and decided to keep the cartridge idle on the home screen for 2 days, then spent another 2 days leaving it in the box on the shelf.

By the second day, before placing the cartridge back onto the shelf, I ran the tool to see how far it can get. It performed about as well as before, and gave an error at ~1000 refresh count.

However, after the 2 days of the cartridge being on the shelf, the tool no-longer errors out at the first chunk. Perhaps giving your cartridge a little rest can help against these crashes. It's probably not good for the cartridges to have constant refreshes for 24/7 over the course of several days.

I retested the tool using these settings after resting the cartridge:
Retry: 100
Stuck: 25
Autoskip: On
Log: Off
Refresh: On

Perhaps a mixture of using this tool + home screen + rest will do the trick? Probably more work needed to be done to confirm that though.

So I've done a bit more digging around, and I think my theory is mostly incorrect.
I recently switched from an old 2DS to a New 2DS XL. I was previously using the old 2DS to run this tool and that was where I was experiencing the crashing.
However, I have now started using a New 2DS XL that I recently bought and that seems to have no problem with the refresh tool.

Not sure if this is a fault on my particular old 2DS or what, but the change of device has made a complete difference. I tested again today by using the script on both devices, and the old 2DS errors out after about ~1000 refreshes whereas the New 2DS keeps going.

I've kept the New 2DS going all night on the refresh tool, and it was working for around 14 hours at least before I cancelled it to give the cartridge a rest.
 
Last edited by ,
I had a Japanese copy of Fire Emblem Echoes that had been unused for several years. The HOME Menu recognized the cartridge correctly, but launching it immediately gave the generic "An error has occurred" screen.

I then left the cartridge inserted in the 3DS, plugged in and in Sleep Mode for approximately 24 hours.

No change in status. Game still immediately gave error at launch.

GodMode9 Verify failed.

I ran the Cartridge Fixer several times. Each pass initially fixed more errors, but eventually progress seemed to plateau and the cartridge still failed verification.

I then left the cartridge inserted in the 3DS, plugged in and in Sleep Mode for approximately 24 hours again.

After the 24 hours, the game successfully launched, which it had not done before.

However, GodMode9 Verify still failed.

I ran the Cartridge Fixer one more time. This time it fixed one remaining item/chunk. I immediately ran Verify again and verification passed completely.

So in my case the sequence was:

Failed Verify → several Fixer passes → plateau → 24h Sleep Mode → game booted → Verify still failed → one final Fixer pass fixed one remaining error → Verify passed.

Hopefully this is useful data for the Sleep Mode experiment.

EDIT: I forgot to mention I used a New 3DS LL (Japanese version) and the final success was just this morning. Thank you very much for making this tool. You have saved my game and made a very happy gamer. ^_~
 
Last edited by ,
  • Like
Reactions: skawo
Alright, based on the info so far it seems the "leave on home screen" thing seems to help only after the fixer has been run, and so I've updated the instructions accordingly.
 
Hi everyone, I created this account just now to thank skawo for this tool and to give a detailed report on a badly corrupted cart I've been working on for several days. It's still in progress: the cart has improved, but given the number of corrupted chunks, I doubt it will ever fully verify. I'm posting the numbers anyway, since some observations might be useful.


Setup
  • New 3DS XL, Luma3DS
  • Pokémon Omega Ruby EUR (000400000011C400, v2)
  • Save backed up and verified with Checkpoint + PKHeX before doing anything
  • Pokémon Bank was also able to read the save, so I could move some Pokémon directly to Bank (not the team, sadly)

Initial symptoms
  • "Software could not be started" on most launches, and the icon didn't appear on the HOME menu except maybe once every ~10 inserts
  • When it did launch: ErrDisp crash in sango-1, error 0xD900458B (FS read failure), address 0x0012884C
  • Verify: Content 0 failed (obviously)

Step 0 – 24h sleep mode on HOME menu
When I stumbled on this, the GitHub README suggested trying this first, so I did. I checked after about an hour and the icon was showing, so I left it for the full 24h. The game still crashed, and after a reboot the icon was gone again. My guess is the 3DS eventually managed to read the cart header, but nothing really changed.


Pass 1 – fork v1.92, standard mode
  • Final: 2,712 fixed / 6,305 unfixable, about 19h (4 manual skips: 3 in Content 0, 1 in Content 7)
    • Content 0: 6,280 unfixable / 2,616 fixed
    • Content 1: 0 unfixable / 17 fixed
    • Content 7: 25 unfixable / 79 fixed
  • Afterwards: the icon showed on every insertion, and the game process started before crashing. The crash address changed to 0x00135ADC, so it was failing further in.

Pass 2 – v1.92, standard mode
Stagnated: at 19%, 1,027 unfixable / 8 fixed (vs 1,103 / 580 at 18% in pass 1). Cancelled.


glauberlima test build, normal mode, Stuck 200
0 fixed and unfixables piling up in the dense early area. Cancelled at 5%.


"100 refreshes" build (older v1.2 base)
No visible difference on the stuck blocks. Cancelled early.


glauberlima test build + "Refresh on every read" (Retry 500, Stuck 200, Autoskip off)
  • Final: 23 fixed / 4,153 unfixable (-34% vs pass 1), about 18h20 (4 manual skips: 3 in Content 0, 1 in Content 7). One chunk ran all night before I skipped it manually in the morning.
    • Content 0: 4,082 unfixable / 19 fixed
    • Content 1: clean
    • Content 7: 71 unfixable / 4 fixed
  • Afterwards: still crashing with the same error at the same address, but one time I was able to see the very beginning of the intro cinematic before the crash.

Same test build WITHOUT refresh-on-every-read (Retry 10000, Autoskip on, Stuck 200)
Back to standard-mode levels: 1,028 unfixable at 17%, 1,068 at 19%. Cancelled around 19%.


Comparison at similar progress (unfixable count)
ProgressPass1(std)Pass2RefreshEveryReadTest
~9% -515372-
~19-20% 115310277251068
69%4837-3110-
84%5447-3498-
Final6305Cancelled4153Cancelled


Observations that might be useful
  1. Refresh on every read gave ~30-35% fewer unfixables than normal mode at the same progress, even though it only "fixed" a handful of chunks. I'm not sure why. When I ran a normal pass right after, the count went back up to standard levels, so the gain doesn't seem to persist without it.
  2. "Hash stuck" with identical Current/Expected hashes. Like others have reported, I saw quite a few chunks flagged as stuck (and then counted as unfixable) while both displayed hashes looked identical.
  3. Two adjacent dead blocks (316345 and 316346, around 69%) each resisted for 11+ hours (~29M refreshes) with the hash changing on every read. It's the same area that got stuck in pass 1.
  4. The GM9 clock in the top bar doesn't update during a run. It stays frozen at the start time.

Next
The cart is currently resting for 24h in sleep mode on the HOME menu. After that, I'll try and run more refresh-on-every-read passes to see what happens. Honestly, with 4,000+ unfixable chunks I don't expect a full verify, but every pass so far has pushed the game a bit further.


Small suggestion (nice to have)
It would be great if the end screen showed a fixed/unfixable breakdown per content, instead of just the totals. Right now the only way to get these numbers is to watch the 3DS during the run and note them down at each content change.
 
  • Like
Reactions: skawo

Site & Scene News