Tool
NTRGhidra
Ghidra loader and plugin for Nintendo DS programs. It checks the .nds header, maps either the ARM9 or the ARM7 binary at its RAM address together with the console's memory regions and I/O register labels, decompresses SDK-compressed ARM9 code and overlays, and fills the overlays the user selects at import, while an optional overlay-manager plugin swaps overlays in and out afterwards. The repository also keeps a small Ghidra Function ID database of NitroSDK 3.0 routines for function identification.
- Targets
- Game
- Category
- Game analysis tools
- Relationship
- Foundation tool
- Sources reviewed
Requirements & limits
- Latest release at review: v1.5.1, published 2026-03-24 as NTRGhidra-build.zip for Ghidra 12.0.4, and its tag is the reviewed master commit; earlier releases were built for individual Ghidra 10.x and 11.x versions, and the README names 12.0.4 as the latest supported Ghidra version. The zip installs from the Ghidra project window's File → Install Extensions, and the overlay manager is enabled separately under CodeBrowser's File → Configure → Miscellaneous. The README says the project is looking for maintainers and contributors.
- Source builds need a Ghidra installation: build.gradle applies Ghidra's buildExtension.gradle from GHIDRA_INSTALL_DIR, the README describes an Eclipse build with the GhidraDev extension, and a GitHub Actions workflow builds the zip with Gradle on every push and attaches it to new releases. The repository has no tests; src/test holds only a placeholder README.
- Input is a .nds file the user supplies; the repository contains no ROMs or BIOS files. On import the loader rejects files whose header CRC does not match, asks whether the file is a commercial Nintendo SDK title or homebrew, and asks whether to load the ARM9 or the ARM7 code; commercial titles must carry the expected Nintendo logo CRC and have their ARM9 binary decompressed. The overlay manager re-reads overlays only from the original file at its import path, or from a substitute whose MD5 and SHA-256 match it.
- The fidb folder holds nitrosdk3.0.fidb, a 2 KB Function ID database that its README describes as hashes of NitroSDK 3.0.0 functions from commercial games, covering crt0 and file-system routines in ARM code but not Thumb; the loader does not apply it automatically. The loader names its format Nintendo DS (NTR) and DSi (TWL), and the source carries DSi register and memory-region lists, but import maps only the DS ARM9 and ARM7 lists, and CRT0 autoload handling is marked as a TODO.
- Apache-2.0. The README credits GBATEK for DS technical information and Gericom's Every File Explorer for the original header and ARM9 decompression code. Nothing was installed or run and no programs were loaded; the reviewed sources establish no REA connection.
About this entry
The description was reviewed against primary sources. This does not establish runtime testing, security auditing or verified compatibility.
Primary sources
- README.md GitHub · pedro-javierf/NTRGhidra · Revision 9e0674c
- src/main/java/ntrghidra/NTRGhidraLoader.java GitHub · pedro-javierf/NTRGhidra · Revision 9e0674c
- src/main/java/ntrghidra/plugin/NTRGhidraPlugin.java GitHub · pedro-javierf/NTRGhidra · Revision 9e0674c
- src/main/java/ntrghidra/ARM9.java GitHub · pedro-javierf/NTRGhidra · Revision 9e0674c
- fidb/README.md GitHub · pedro-javierf/NTRGhidra · Revision 9e0674c
- build.gradle GitHub · pedro-javierf/NTRGhidra · Revision 9e0674c
- .github/workflows/build_ntrghidra.yml GitHub · pedro-javierf/NTRGhidra · Revision 9e0674c
- LICENSE GitHub · pedro-javierf/NTRGhidra · Revision 9e0674c
- https://github.com/pedro-javierf/NTRGhidra/releases/tag/v1.5.1
More in Games
- mgbdis · Tool
- ghidra-allegrex · Tool
- GM8Decompiler · Tool
- UELib (Unreal-Library) · Tool
- DX-Ball: reconstruct sound panning · Case study
- TH04: recover a DOS bullet-ring helper · Case study