# GodMode9i is a full access file browser for the Nintendo DS and DSi

> GodMode9i is a homebrew application written in C for the Nintendo DS, DSi and the 3DS TWL_FIRM mode, giving full access to the SD card, the DSi NAND and supported flashcards, with a hex editor and a hash calculator. The trade is that it is a console homebrew rather than a general tool, so it needs a flashcart or a modded console to run at all.

**DS-Homebrew/GodMode9i** — GodMode9i Explorer - A full access file browser for the Nintendo DS and DSi consoles :godmode:

- Repository: https://github.com/DS-Homebrew/GodMode9i
- Website: https://wiki.ds-homebrew.com/godmode9i/
- Stars: 660 · Forks: 38
- Language: C
- License: GPL-3.0
- Published: 2026-10-21 · Updated: 2026-10-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/ds-homebrew-godmode9i

## It is a spiritual successor to GodMode9, on different hardware

The project describes itself as inspired by the original GodMode9, which was a full access file browser for the Nintendo 3DS, and this one targets the Nintendo DS, the Nintendo DSi and the TWL_FIRM mode of the Nintendo 3DS. The distinction matters because TWL_FIRM is the mode of the 3DS that runs DS software, so a tool built for the DS can be run on a 3DS when that mode is active. The application is written in C, the primary language in the repository, and it is a file browser first: a full access browser that can copy, move, delete and rename files and folders, create folders, and mount the NitroFS of NDS files, DSiWare saves and FAT images. The homepage is the DS Homebrew wiki page for the project, and the repository carries a Discord server badge, a GBAtemp thread badge and a Crowdin localisation badge, which tells you it is a community project with a translation effort attached.

## Building with Docker is two commands and no toolchain

The build story is one of the better parts of the project, because the hard part of console homebrew is the toolchain and Docker removes it. A Dockerfile is provided in the repository for easy cross-platform builds, and the README says you first need to install Docker and then run:```sh
$ docker build -t godmode9i .
$ docker run --rm -it -v "./:/data" godmode9i make
```@@C1@@The Dockerfile itself is three lines of real content over the devkitPro base image, and it is worth reading because it shows what the container is for.```dockerfile
FROM devkitpro/devkitarm:20241104
RUN apt-get update
RUN git config --global --add safe.directory '*'
WORKDIR /data
``` The base is devkitpro/devkitarm:20241104, so the whole devkitARM toolchain is already present, and the remaining steps are an apt-get update, a git config change marking the mounted directory as a safe git directory, and setting the working directory to /data. That last line is why the run command mounts the current directory at /data and then calls make, so the source tree is compiled inside the container with the toolchain already in place. The primary language tag in the repository is C and the build is driven by the Makefile.

## Without Docker you need devkitPro and a package list

The manual route is documented too, and it starts with the toolchain requirement. To compile on your own you need devkitPro with the devkitARM toolchain plus the necessary tools and libraries, and devkitPro includes dkp-pacman for installing all the components:```
 $ dkp-pacman -Syu devkitARM general-tools dstools ndstool libnds libfat-nds
```@@C2@@The package list is a useful map of what the build actually depends on. devkitARM is the compiler, general-tools covers the utilities, dstools is the DS homebrew toolset, ndstool is the cartridge and NDS file builder the Makefile invokes, and libnds and libfat-nds are the libraries. Once everything is downloaded and installed you clone the repository, navigate to the folder it was cloned into, and run make to compile the application. The Makefile checks for DEVKITARM and stops with an explicit error if it is not set, so a missing toolchain is a clear message rather than a confusing failure.

## One source tree produces an NDS, a DSi and a CIA build

The Makefile is where the multi-target design becomes visible. There are separate arm7/ and arm9/ subdirectories, because the DS and DSi are ARM7 and ARM9 machines, and the top-level all target depends on libfat4, the bootloader, the bootstub and two outputs, a .nds and a .dsi file. The two ELFs are built first, one per directory, and then ndstool packages them: the .nds rule passes the icon and the title string and a load address of 80040000, and the .dsi rule adds the TWL-specific flags including the game code HGMA 00 and the title GODMODE9I. The .dsi target is what makes it loadable in DSi mode, and the C and Python project files at the root, GodMode9i.pnproj and GodMode9i.pnps, suggest the project is also developed as a devkitPro project in a Windows IDE. There is a make_cia entry at the root, and a Windows batch script named clean and compile.bat alongside compile.bat.

## NAND and flashcard access is where the hardware requirements bite

The feature list is where the constraints live, and they are per console model. Dumping Game Boy Advance cartridges works on the original Nintendo DS and DS Lite, while dumping Nintendo DS and DSi cartridges works on DSi and 3DS consoles if GodMode9i is run from the console SD card, and on the original DS and DS Lite if it is running from a Slot-2 flashcard. The DSi internal NAND can be browsed, and the SD card can be browsed when running GM9i from any DS-mode flashcard, but that entry requires TWiLight Menu++ with Slot-1 SD or SCFG access enabled, and TWLMenu++ installed on the flashcard. The list of supported flashcards is long and specific, with Acekard 2(i), CycloDS Evolution, DSpico, DSTT, the Demon and DSTTi clones, EZ Flash Parellel, Games n' Music, N-Card and the R4 original without SDHC alongside the R4(i) Ultra. Browsing files on supported flashcards works when running GM9i from the NAND or the SD card.

## The rest is a small utility set with a hex editor and a hash tool

Beyond the file operations and the hardware access, the tool carries a handful of utilities that are the reason a browser like this gets installed at all. It can view and edit file contents with a hex editor, and it can calculate the SHA-1 hash of files, which is the check you want before restoring a save to a cartridge. It can restore save files to DS and GBA cartridges, and it can dump DS and DSi cartridge save data on the original DS and DS Lite using the save data of GBA cartridges, a workaround for hardware that cannot read the save chip directly. Pressing SELECT at the boot screen shows console hardware information, with the list given as model, region, serial, Console ID, WiFi MAC and more. The NDS file menu and the drive menu are separate screens, which is how the application stays usable on a 256 by 192 display.

## Fonts are FRF files, and the default can be replaced at build time

The customisation story is small but real. GodMode9i uses the same FRF font files as GodMode9, and the README explains that to create an FRF font you use GodMode9's Python script, or you can find some in the resources/fonts folder in the repository. The loading order is what matters in practice: when loading, GodMode9i tries to load /gm9i/font.frf on your SD card and if that fails it falls back to the default font. To change the default font when building, you replace data/font_default.frf with your font, which means the font is a build-time artefact for the fallback case and a runtime file for the per-user case. The repository also carries a gfx/ directory, icon.bmp at the root, and a data/ directory that the Makefile clean target uses to remove the generated .bin files, along with the libs/ directory holding the libfat4 submodule the build depends on.

## GPL-3.0, a Crowdin translation effort, and a rapid release cadence

The project is GPL-3.0 licensed with the LICENSE file at the root, and the copyright credits are extensive enough to show how the community builds on it. RocketRobz is listed as main developer, and the credits run through individual contributors for the save reading code taken from Edo9300's save manager, the NAND code from JimmyZ's twlnf with the writing code stripped for safety reasons, the ConsoleID code from zoogie, and the GBA ROM dumping code from endrift's duplo used for 64MB ROMs. The GBA dumping in particular is credited work with a stated safety motivation, and there is a separate credit for Wokann on dumping ROMs from DSi game cards when running from Slot-2 flashcarts. The localisation runs through Crowdin with a project link and a badge, and named translators are credited for Chinese, Dutch, French, German, Hebrew, Hungarian and Italian among others. On releases, the tags are frequent and named, with v3.10.0 on 2026-10-10, v3.9.0 from 2025-12-25 carrying a seasonal title in its release note, and v3.8.0 from 2025-06-15, so the release line moves several times a year.

## Conclusion

GodMode9i suits a homebrew developer or a DS or DSi owner who needs to reach files the stock system hides, and who already has the hardware to run homebrew at all, such as a flashcart or a console with a NAND modification. It does not suit a general-purpose file manager, since the target is a 2000s handheld and the interface is a two-screen browser, and it will not run on original hardware without one of those modifications. Before adopting, read the feature list against what your console and flashcart actually support, since the SD card browsing entry requires TWiLight Menu++ with Slot-1 SD access enabled, and note that the last push to the repository was on 2026-10-10 with v3.10.0 tagged the same day under GPL-3.0.

## FAQ

### How do I build GodMode9i?

With Docker, install Docker and run `docker build -t godmode9i .` followed by `docker run --rm -it -v "./:/data" godmode9i make`, which compiles the current directory inside the container. Without Docker, install devkitPro with devkitARM via dkp-pacman, clone the repository and run make.

### Which consoles and flashcards does GodMode9i support?

The Nintendo DS, the Nintendo DSi and the Nintendo 3DS TWL_FIRM mode. Browsing the DSi internal NAND and supported flashcards is supported, and the SD card can be browsed when running from any DS-mode flashcard, which requires TWiLight Menu++ with Slot-1 SD or SCFG access enabled and TWLMenu++ installed on the flashcard.

### What does GodMode9i do besides browsing files?

It dumps Game Boy Advance cartridges on the original DS and DS Lite, dumps DS and DSi cartridges on DSi and 3DS consoles, restores save files to DS and GBA cartridges, mounts the NitroFS of NDS files, DSiWare saves and FAT images, includes a hex editor for viewing and editing files, calculates the SHA-1 hash of files, and shows console hardware info when you press SELECT at the boot screen.

### What outputs does the GodMode9i build produce?

The top-level make target builds libfat4, the bootloader, the bootstub and produces a .nds file and a .dsi file, from separate arm7 and arm9 ELF builds packaged with ndstool. The .dsi target carries the TWL-specific flags, including the game code HGMA 00 and the title GODMODE9I.

### How do I change the font in GodMode9i?

GodMode9i uses the same FRF font files as GodMode9, and you can create one with GodMode9's Python script or take one from the resources/fonts folder. At runtime it tries /gm9i/font.frf on your SD card and falls back to the default, and to change the default you replace data/font_default.frf with your font when building.

## Sources

- [DS-Homebrew/GodMode9i on GitHub](https://github.com/DS-Homebrew/GodMode9i)
- [License: GPL-3.0](https://github.com/DS-Homebrew/GodMode9i/blob/master/LICENSE)
- [Project website](https://wiki.ds-homebrew.com/godmode9i/)
- [README](https://github.com/DS-Homebrew/GodMode9i/blob/master/README.md)
- [Releases](https://github.com/DS-Homebrew/GodMode9i/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/ds-homebrew-godmode9i
