Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Citra | 8,618 | 15 hours ago | 660 | gpl-2.0 | C++ | |||||
A Nintendo 3DS Emulator | ||||||||||
Luma3ds | 4,298 | 2 days ago | 81 | gpl-3.0 | C | |||||
Noob-proof (N)3DS "Custom Firmware" | ||||||||||
Godmode9 | 1,753 | a month ago | 17 | gpl-3.0 | C | |||||
GodMode9 Explorer - A full access file browser for the Nintendo 3DS console :godmode: | ||||||||||
Hb Appstore | 800 | 5 days ago | 9 | gpl-3.0 | C++ | |||||
Homebrew App Store - GUI for downloading/managing homebrew apps for video game consoles | ||||||||||
Anemone3ds | 738 | 9 days ago | 21 | gpl-3.0 | C | |||||
A theme and boot splash manager for the Nintendo 3DS console | ||||||||||
Libctru | 674 | 14 days ago | 19 | C | ||||||
Homebrew development library for Nintendo 3DS/Horizon OS user mode (Arm11) | ||||||||||
Universal Updater | 608 | 3 months ago | 17 | gpl-3.0 | C++ | |||||
An easy to use app for installing and updating 3DS homebrew | ||||||||||
Custom Install | 390 | 6 months ago | 23 | mit | Python | |||||
Installs a title directly to an SD card for the Nintendo 3DS | ||||||||||
Godmode9i | 347 | a month ago | 24 | gpl-3.0 | C | |||||
GodMode9i Explorer - A full access file browser for the Nintendo DS and DSi consoles :godmode: | ||||||||||
Rom Properties | 344 | 6 days ago | 92 | gpl-2.0 | C++ | |||||
ROM Properties Page shell extension |
A full access file browser for the 3DS console
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.
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.
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:
gm9
folder from the release archive to your SD card. Then, get good versions of seeddb.bin
and encTitleKeys.bin
from somewhere (don't ask me!) and put these two files into sd:/gm9/support
(optional but recommended for full functionality).More...
. Also keep in mind that you should fix your system OS clock afterwards. While you're in the More...
menu, you may also set screen brightness to a fixed value of your choosing and manually calibrate the touch screen (not recommended - try the automatic configuration first).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.
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.
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 3MB 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.
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.
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.
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.
aeskeydb.bin
: This should contain 0x25keyX, 0x18keyX and 0x1BkeyX to enable decryption of 7x / Secure3 / Secure4 encrypted NCCH files, 0x11key95 / 0x11key96 for FIRM decrypt support and 0x11keyOTP / 0x11keyIVOTP for 'secret' sector 0x96 crypto support. Entrypoints other than boot9strap or fastboot3ds may require a aeskeydb.bin file. This is now included in standard releases of GM9. No need to hunt down the file!seeddb.bin
: This file is optional and required to decrypt and mount seed-encrypted NCCHs and CIAs (if the seed in question is not installed to your NAND). Note that your seeddb.bin must also contain the seed for the specific game you need to decrypt.encTitleKeys.bin
/ decTitleKeys.bin
: These files are optional and provide titlekeys, which are required to decrypt and install contents downloaded from CDN (for DSi and 3DS content).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
.
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.
0: SDCARD
: The SD card currently inserted into the SD card slot. The 0:/Nintendo 3DS
folder contains software installs and extdata and is specially protected via the write permission system. The SD card can be unmounted from the root directory via the R+B buttons, otherwise the SD card is always available.1: SYSNAND CTRNAND
: The CTRNAND partition on SysNAND. This contains your 3DS console's operating system and system software installs. Data in here is protected by the write permissions system.2: SYSNAND TWLN
: The TWLN partition on SysNAND. This contains your 3DS console's TWL mode operating system and system software installs. Data in here is protected by the write permissions system.3: SYSNAND TWLP
: The TWLP partition on SysNAND. This contains photos taken while in TWL mode.A: SYSNAND SD
: This drive is used for special access to data on your SD card. It actually links to a subfolder inside 0:/Nintendo 3DS
and contains software and extdata installed to SD from SysNAND. Crypto in this folder is handled only when accessed via the A:
drive (not from 0:
). This is protected by the write permissions system.S: SYSNAND VIRTUAL
: This drive provides access to all partitions of the SysNAND, some of them critical for base system functionality. This is protected by the write permissions system, but, when unlocked, modifications can brick the system.4: EMUNAND CTRNAND
: Same as 1:
, but handles the CTRNAND on EmuNAND. For multi EmuNAND setups, the currently active EmuNAND partition can be switched via the HOME menu.5: EMUNAND TWLN
: Same as 2
, but handles TWLN on EmuNAND. No write protection here, cause this partition is never used on EmuNAND.6: EMUNAND TWLP
: Same as 3
, but handles TWLP on EmuNAND.B: EMUNAND SD
: Same as A:
, but handles the 0:/Nintendo 3DS
subfolder associated with EmuNAND. In case of linked NANDs, this is identical with A:
. This is also protected by the write permissions system.E: EMUNAND VIRTUAL
: Same as S:
, but handles system partitions on EmuNAND. No bricking risk here as EmuNAND is never critical to system functionality.7: FAT IMAGE / IMGNAND CTRNAND
: This provides access to mounted FAT images. When a NAND image is mounted, it provides access to the mounted NAND image's CTRNAND.8: BONUS DRIVE / IMGNAND TWLN
: This provides access to the bonus drive on SysNAND. The bonus drive can be setup via the HOME menu on 3DS consoles that provide the space for it. When a NAND image is mounted, this provides access to the mounted NAND image's TWLN.9: RAM DRIVE / IMGNAND TWLP
: This provides access to the RAM drive. All data stored inside the RAM drive is temporary and will be wiped after a reboot. When a NAND image is mounted, this provides access to the mounted NAND image's TWLP.I: IMGNAND VIRTUAL
: When a NAND image is mounted, this provides access to the partitions inside the NAND image.C: GAMECART
: This is read-only and provides access to the game cartridge currently inserted into the cart slot. This can be used for dumps of CTR and TWL mode cartridges. Flash cards are supported only to a limited extent.G: GAME IMAGE
: CIA/NCSD/NCCH/EXEFS/ROMFS/FIRM images can be accessed via this drive when mounted. This is read-only.K: AESKEYDB IMAGE
: An aeskeydb.bin
image can be mounted and accessed via this drive. The drive shows all keys inside the aeskeydb.bin. This is read-only.T: TICKET.DB IMAGE / BDRI IMAGE
: Ticket database files can be mounted and accessed via this drive. This provides easy and quick access to all tickets inside the ticket.db
. This drive also provides access to other BDRI images, such as the Title database (title.db
).M: MEMORY VIRTUAL
: This provides access to various memory regions. This is protected by a special write permission, and caution is advised when doing modifications inside this drive. This drive also gives access to boot9.bin
, boot11.bin
(boot9strap only) and otp.mem
(sighaxed systems only).V: VRAM VIRTUAL
: This drive resides in the first VRAM bank and contains files essential to GodMode9. The font (in FRF format), the splash logo (in PNG format) and the readme file are found there, as well as any file that is provided inside the data
folder at build time. This is read-only.Y: TITLE MANAGER
: The title manager is accessed via the HOME menu and provides easy access to all installed titles.Z: LAST SEARCH
: After a search operation, search results are found inside this drive. The drive can be accessed at a later point to return to the former search results.GodMode9 is one of the most important tools for digital preservation of 3DS content data. Here's some stuff you should know:
C:
drive (see above). For most carts all you need to do is copy the .3DS
game image to some place of your choice. Game images dumped by GodMode9 contain no identifying info such as private headers or savegames. Private headers can be dumped in a separate image..3DS
game image, as provided by GodMode9 actually misses the last byte in these cases. That byte is 0xFF and unused in all known cases. It is not required for playing the image. If you need to check, we also provide split files (.000
, .001)
, which contain all the data. If you need a valid checksum for the .3DS
game image, append a 0xFF byte before checking.Title manager
and choose a drive. Take note that standard
built CIAs are decrypted by default (decryption allows better compression by ZIP and 7Z). If you should need an encrypted CIA for some reason, apply the encryption to the CIA afterwards.legit
or standard
CIA. Legit CIAs preserve more of the original data and are thus recommended for preservation purposes. When building legit CIAs, GodMode9 keeps the original crypto and tries to find a genuine, signature-valid ticket. If it doesn't find one on your system, it will use a generic ticket instead. If it only finds a personalized one, it still offers to use a generic ticket. It is not recommended to use personalized tickets - only choose this if you know what you're doing.CIA checker tool
. Legit CIAs with generic tickets are identified as Universal Pirate Legit
, which is the recommended preservation format where Universal Legit
is not available. Note: apart from system titles, Universal Legit
is only available for a handful of preinstalled games from special edition 3DS consoles.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.
Calculate SHA-256
. Do the same for the second file. If the two files are identical, you will get a message about them being identical. On the SDCARD drive (0:
) you can also write an SHA file, so you can check for any modifications at a later point.Show in Hexeditor
. A button again enables edit mode, hold the A button and press arrow buttons to edit bytes. You will get an additional confirmation prompt to take over changes. Take note that for certain files, write permissions can't be enabled.Show in Textviewer
(only shows up for actual text files). You can enable wordwrapped mode via R+Y, and navigate around the file via R+X and the dpad.FIRM options
-> Boot FIRM
. Keep in mind you should not run FIRMs from dubious sources and that the write permissions system is no longer in place after booting a payload.payloads
menu is found inside the HOME button menu. It provides any FIRM found in 0:/gm9/payloads
for quick chainloading.More...
-> Scripts...
. Any script you put into 0:/gm9/scripts
(subdirs included) will be found here. Scripts ran via this method won't have the confirmation at the beginning either.More...
-> SD format menu
. This also allows to setup a RedNAND (single/multi) or GW type EmuNAND on your SD card. You will get a warning prompt and an unlock sequence before any operation starts.More...
-> Switch EmuNAND
to switch between EmuNANDs / RedNANDs. (Only available on multi EmuNAND / RedNAND systems.)A:
/B:
drives. On-the-fly-crypto is taken care for, you can access this the same as any other content.More...
to find the option. Keep in mind that modifying the RTC clock means you should also fix system OS time afterwards.Title manager
. This will also work via R+A for CTRNAND
and A:
/B:
drives. This will list all titles installed in the selected location.Install game image
from the submenu. Works with NCCH / NCSD / CIA / DSiWare SRLs / 3DS CDN TMDs / DSi CDN TMDs / NUS TMDs.Title manager
. Just select one or more titles and find the option inside the Manage title...
submenu.Title manager
. Where applicable, you will also be able to generate legit CIAs. Note: this works also from a file search and title listing.encTitlekeys.bin
/ decTitlekeys.bin
also required, see Support files below) or a CETK file. Either keep the names provided by CDN / NUS, or rename the downloaded content to (anything).nus
or (anything).cdn
and the CETK to (anything).cetk
.C:
drive. You may also dump private headers from 3DS game cartridges. The C:
drive also gives you read/write access to the saves on the cartridges. Note: For 4GiB cartridges, the last byte is not included in the .3ds file dump. This is due to restrictrions of the FAT32 file system.Restore SysNAND (safe)
from inside the A button menu for NAND dumps.S:
(or E:
/ I:
) drive. This is done the same as any other file operation.S:/ctrnand_full.bin
(or E:
/ I:
). On the receiving system, press A, select CTRNAND Options...
, then Transfer to NAND
.movable.sed
, LocalFriendCodeSeed_B
, SecureInfo_A
, NAND CID and OTP. If your local SysNAND does not contain an embedded backup, you will be asked to do one at startup. To update the essential SysNAND backup at a later point in time, press A on S:/nand.bin
and select NAND image options...
-> Update embedded backup
.aeskeydb.bin
files the option is found in aeskeydb.bin options
-> Install aeskeydb.bin
. Only the recommended key database can be installed (see above). With an installed key database, it is possible to run the GodMode9 bootloader completely from NAND.FIRM options
-> Install FIRM
. Use this with caution - installing an incompatible FIRM file will lead to a brick. The FIRMs signature will automagically be replaced with a sighax signature to ensure compatibility.8:
. (Only available on systems that have the extra space.)A:
, B:
, S:
and E:
) via an entry in the R+A button menu, or even restore borked NAND headers back to a functional state (inside the A button menu of borked NANDs and available for S:/nand_hdr.bin
). Recommended only for advanced users!ticket.db
, etc...). This can also be done for multiple files at once if they are marked.eshop
(stuff from eshop), system
(system tickets), unknown
(typically empty) and hidden
(hidden tickets, found via a deeper scan) categories. All tickets displayed are legit, fake tickets are ignoredagbsave.bin
in the S:
drive. Keep in mind that you need to start the specific GBA game on your console before dumping / injecting the save. To inject a save it needs to be in the clipboard.M:
drive and can be copied from there to any other place.decTitleKeys.bin
/ encTitleKeys.bin
/ seeddb.bin
: Press the HOME button, select More...
-> Build support files
. decTitleKeys.bin
/ encTitleKeys.bin
can also be created / merged from tickets, ticket.db
and merged from other decTitleKeys.bin
/ encTitleKeys.bin
files via the A button menu.aeskeydb.bin
: AES key databases can be merged from other aeskeydb.bin
or build from legacy slot??Key?.bin
files. Just select one or more files, press A on one of them and then select Build aeskeydb.bin
. Options for mounting, decrypting and encrypting are also found in the A button menu.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.
You can chat directly with us via IRC @ #GodMode9 on libera.chat or Discord!
This tool would not have been possible without the help of numerous people. Thanks go to (in no particular order)...