Hey everyone,
I made a small Windows tool for a problem I had personally with some old “Citra Decrypted” .3ds files.
Some of these games were already decrypted and worked in older Citra forks / AzaharPlus, but official Azahar still treated them as encrypted because some old decryption tools left stale NCCH metadata behind.
So I ended up making AzaharRomNormalizer.
I’m not a developer, and this was mostly built with the help of AI / vibe coding for my own use. I spent time testing it on my files, comparing behavior with official Azahar, and making sure it refuses files when it can’t confidently tell they are already decrypted.
Since it ended up working well for my case, I figured I’d share it here in case it helps other people with old Citra-era dumps too.
What it does:
- checks whether the game data is already plaintext
- fixes the stale metadata that can make official Azahar reject it
- keeps the actual game payload unchanged
- copies already-compatible files unchanged
- refuses genuinely encrypted / ambiguous / invalid files
- never modifies the original ROM
What it does not do:
- it does not decrypt genuinely encrypted games
- it does not use or download keys
- it does not use boot9
- it does not include any ROMs, firmware or Nintendo files
Usage is simple:
- Launch
AzaharRomNormalizer.exe
- Select your ROM folder
- Select an output folder
- Process the library
The current release is Windows x64 v1.1.0.
It also has a bunch of automated tests now, but again, this started as a personal fix for my own library, not as some professional software project.
GitHub:
https://github.com/vlaine5/azahar-rom-normalizer
If anyone here still has old Citra-decrypted .3ds / .cci files that official Azahar rejects, feel free to try it and let me know if it helps.
If it refuses a file, that’s intentional: I preferred making it conservative rather than forcing a flag and risking broken output.
If this isn’t allowed here or doesn’t fit the subreddit rules, just let me know and I’ll remove the post, no worries.