Home

Awesome

GodMode9

A full access file browser for the 3DS console :godmode:

GodMode9 is a full access file browser for the Nintendo 3DS console, giving you access to your SD card, to the FAT partitions inside your SysNAND and EmuNAND and to basically anything else. Among other functionality (see below), you can copy, delete, rename files and create folders.

Warning

This is powerful stuff, it provides you with the means to do basically any thinkable modification to any system data available on the 3DS console. However, precautions are taken so you don't accidentally damage the data of your console. The write permissions system protects you by providing warnings and forces you to enter an unlock sequence for enabling write permissions. It is not possible to overwrite or modify any important stuff without such unlock sequences and it is not possible to accidentally unlock something.

As always, be smart, keep backups, just to be safe.

Quick start guide

The recommended bootloader for use with GodMode9 is fastboot3DS. There are known issues for some users when using the standard setup based on boot9strap and Luma3DS. If you insist on using that setup follow the instructions found in a certain guide. Here's how to set up GodMode9 (and fastboot3DS) up quickly:

You may now run GodMode9 via holding the X Button (or any other button you chose) at startup. See below for a list of stuff you can do with it.

Buttons in GodMode9

GodMode9 is designed to be intuitive, buttons leading to the results you'd expect. However, some stuff may not be obvious at first glance. So, here's a quick, incomplete rundown of what each button / button combo does.

How to build this / developer info

Build GodMode9.firm via make firm. This requires firmtool, Python 3.5+ and devkitARM installed).

You may run make release to get a nice, release-ready package of all required files. To build SafeMode9 (a bricksafe variant of GodMode9, with limited write permissions) instead of GodMode9, compile with make FLAVOR=SafeMode9. To switch screens, compile with make SWITCH_SCREENS=1. For additional customization, you may choose the internal font by replacing font_default.frf inside the data directory. You may also hardcode the brightness via make FIXED_BRIGHTNESS=x, whereas x is a value between 0...15.

Further customization is possible by hardcoding aeskeydb.bin (just put the file into the data folder when compiling). All files put into the data folder will turn up in the V: drive, but keep in mind there's a hard 223.5KiB limit for all files inside, including overhead. A standalone script runner is compiled by providing autorun.gm9 (again, in the data folder) and building with make SCRIPT_RUNNER=1. There's more possibility for customization, read the Makefiles to learn more.

To build a .firm signed with SPI boot keys (for ntrboot and the like), run make NTRBOOT=1. You may need to rename the output files if the ntrboot installer you use uses hardcoded filenames. Some features such as boot9 / boot11 access are not currently available from the ntrboot environment.

Bootloader mode

Same as boot9strap or fastboot3ds, GodMode9 can be installed to the system FIRM partition ('FIRM0'). When executed from a FIRM partition, GodMode9 will default to bootloader mode and try to boot, in order, FIRM from FCRAM (see A9NC), 0:/bootonce.firm (will be deleted on a successful boot), 0:/boot.firm, 1:/boot.firm. In bootloader mode, hold R+LEFT on boot to enter the boot menu. Installing GodMode9 to a FIRM partition is only recommended for developers and will overwrite boot9strap or any other bootloader you have installed in there.

Write permissions system

GodMode9 provides a write permissions system, which will protect you from accidentally damaging your system, losing data and/or modifying important system data. To unlock a write permission, an unlock sequence must be entered. This is not possible by accident. The write permission system is based on colors and the top bar on the top screen will change color according to the current write permission level. No permission above the yellow level can be unlocked on SafeMode9.

Support files

For certain functionality, GodMode9 may need 'support files'. Support files should be placed into either 0:/gm9/support or 1:/gm9/support. Support files contain additional information that is required in decryption operations. A list of support files, and what they do, is found below. Please don't ask for support files - find them yourself.

Fonts and translations

GodMode9 also supports custom fonts and translations as support files. These both use custom formats, fonts use FRF (Font RIFF) files which can be created using the fontriff.py Python script in the 'utils' folder. Translations use TRF (Translation RIFF) files from the transriff.py script. Examples of the inputs to these scripts can be found in the 'fonts' and 'languages' folders of the 'resources' folder respectively.

TRF files can be placed in 0:/gm9/languages to show in the language menu accessible from the HOME menu and shown on first load. Official translations are provided from the community via the GodMode9 Crowdin. Languages can use a special font by having an FRF with the same name, for example en.trf and en.frf.

Drives in GodMode9

GodMode9 provides access to system data via drives, a listing of what each drive contains and additional info follows below. Some of these drives are removable (such as drive 7:), some will only turn up if they are available (drive 8: and everything associated with EmuNAND, f.e.). Information on the 3DS console file system is also found on 3Dbrew.org.

Digital preservation

GodMode9 is one of the most important tools for digital preservation of 3DS content data. Here's some stuff you should know:

What you can do with GodMode9

With the possibilites GodMode9 provides, not everything may be obvious at first glance. In short, GodMode9 includes improved versions of basically everything that Decrypt9 has, and more. Any kind of dumps and injections are handled via standard copy operations and more specific operations are found inside the A button menu. The A button menu also works for batch operations when multiple files are selected. For your convenience a (incomplete!) list of what GodMode9 can do follows below.

Basic functionality

Scripting functionality

SD card handling

Game file handling

NAND handling

System file handling

Support file handling

License

You may use this under the terms of the GNU General Public License GPL v2 or under the terms of any later revisions of the GPL. Refer to the provided LICENSE.txt file for further information.

Contact info

You can chat directly with us via IRC @ #GodMode9 on libera.chat or Discord!

Credits

This tool would not have been possible without the help of numerous people. Thanks go to (in no particular order)...