/custom-install

Experimental script to automate the process of a manual title install for Nintendo 3DS

Primary LanguagePythonMIT LicenseMIT

License Releases

custom-install

Experimental script to automate the process of a manual title install for Nintendo 3DS. Originally created late June 2019.

Summary

  1. Dump boot9.bin and movable.sed from a 3DS system.
  2. Install the packages:
  • Windows: py -3 -m pip install --user -r requirements.txt
  • macOS/Linux: python3 -m pip install --user -r requirements.txt
  1. Download the repo (zip link or git clone)
  2. Run custominstall.py with boot9.bin, movable.sed, path to the SD root, and CIA files to install (see Usage section).
  3. Download and use custom-install-finalize on the 3DS system to finish the install.

Setup

Linux users must build wwylele/save3ds and place save3ds_fuse in bin/linux. Install rust using rustup, then compile with: cargo build. The compiled binary is located in target/debug/save3ds_fuse, copy it to bin/linux.

movable.sed is required and can be provided with -m or --movable.

boot9 is needed:

  • -b or --boot9 argument (if set)
  • BOOT9_PATH environment variable (if set)
  • %APPDATA%\3ds\boot9.bin (Windows-specific)
  • ~/Library/Application Support/3ds/boot9.bin (macOS-specific)
  • ~/.3ds/boot9.bin
  • ~/3ds/boot9.bin

A SeedDB is needed for newer games (2015+) that use seeds.
SeedDB is checked in order of:

  • -s or --seeddb argument (if set)
  • SEEDDB_PATH environment variable (if set)
  • %APPDATA%\3ds\seeddb.bin (Windows-specific)
  • ~/Library/Application Support/3ds/seeddb.bin (macOS-specific)
  • ~/.3ds/seeddb.bin
  • ~/3ds/seeddb.bin

custom-install-finalize

custom-install-finalize installs a ticket, plus a seed if required. This is required for the title to appear and function.

This can be built as most 3DS homebrew projects with devkitARM.

Usage

Use -h to view arguments.

Examples:

py -3 custominstall.py -b boot9.bin -m movable.sed --sd E:\ file.cia file2.cia
python3 custominstall.py -b boot9.bin -m movable.sed --sd /Volumes/GM9SD file.cia file2.cia
python3 custominstall.py -b boot9.bin -m movable.sed --sd /media/GM9SD file.cia file2.cia

GUI

GUI wrapper to easily manage your apps. (More will go here...)

GUI

GUI Setup

  • Ubuntu/Debian: sudo apt install python3-tk
  • Manjaro/Arch: sudo pacman -S tk
  • Mac: Sometimes the default tkinter libs that ship with mac don't work, you can get them on the python site - https://www.python.org/downloads/mac-osx/
  • Windows: Install python - Remember to install tcl/tk when doing a custom installation

License/Credits

save3ds by wwylele is used to interact with the Title Database (details in bin/README).

Thanks to @LyfeOnEdge from the brewtools Discord for designing the GUI. Special thanks to CrafterPika and archbox for testing.

Thanks to @nek0bit for redesigning custominstall.py to work as a module, and for implementing an earlier GUI.

Thanks to @BpyH64 for researching how to generate the cmacs.