• Stars
    star
    545
  • Rank 81,015 (Top 2 %)
  • Language
    Python
  • License
    MIT License
  • Created about 5 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Installs a title directly to an SD card for the Nintendo 3DS

License Releases

custom-install

Installs a title directly to an SD card for the Nintendo 3DS. Originally created late June 2019.

Summary

Windows standalone

  1. Dump boot9.bin and movable.sed from a 3DS system.
  2. Download the latest releases.
  3. Extract and run ci-gui. Read windows-quickstart.txt.

With installed Python

Note for Windows users: Enabling "Add Python 3.X to PATH" is NOT required! Python is installed with the py launcher by default.

  1. Dump boot9.bin and movable.sed from a 3DS system.
  2. Download the repo (zip link or git clone)
  3. Install the packages:
  • Windows: Double-click windows-install-dependencies.py
    • Alternate manual method: py -3 -m pip install --user -r requirements-win32.txt
  • macOS/Linux: python3 -m pip install --user -r requirements.txt
  1. Run custominstall.py with boot9.bin, movable.sed, path to the SD root, and CIA files to install (see Usage section).
  2. 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 --release --no-default-features. The compiled binary is located in target/release/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

A GUI is provided to make the process easier.

GUI Setup

Linux users may need to install a Tk package:

  • Ubuntu/Debian: sudo apt install python3-tk
  • Manjaro/Arch: sudo pacman -S tk

Install the requirements listed in "Summary", then run ci-gui.py.

Development

Building Windows standalone

Using a 32-bit version of Python is recommended to build a version to be distributed.

A virtual environment is recommended to isolate the packages from system directories. The build script make-standalone.bat assumes that the dependencies are in PATH.

Install the dependencies, plus cx-Freeze. In a virtual environment, the specific Python version doesn't need to be requested.

pip install cx-freeze -r requirements-win32.txt

Copy custom-install-finalize.3dsx to the project root, this will be copied to the build directory and included in the final archive.

Run make-standalone.bat. This will run cxfreeze and make a standalone version at dist\custom-install-standalone.zip

License/Credits

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

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

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

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

More Repositories

1

3dsconv

Python script to convert Nintendo 3DS CCI (".cci", ".3ds") files to the CIA format
Python
499
star
2

ninfs

FUSE filesystem Python scripts for Nintendo console files
Python
429
star
3

3DS-rom-tools

Tools and guides for working with Nintendo 3DS games and applications
Python
316
star
4

ctr-no-timeoffset

Sets the time offset in Config Savegame to 0
Makefile
128
star
5

faketik

Generates fake tickets to make missing titles re-appear on 3DS.
Makefile
90
star
6

wiiu-things

some Wii U scripts and things
Python
51
star
7

switchfs

FUSE (Filesystem in Userspace) scripts for Nintendo Switch files
Python
49
star
8

nusserver

Custom Nintendo Update Server
Python
35
star
9

pyctr

Python library to interact with Nintendo 3DS files
Python
28
star
10

nuspacker

hard fork of https://bitbucket.org/timogus/nuspacker
Java
28
star
11

9.6-dbgen-xmls

XMLs for 3DS 9.6-crypto titles, for use with *hax 2.7+
20
star
12

discord-mod-mail

Simple mod-mail system for Discord
Python
15
star
13

mashers-gl-updater

program to download and update mashers's grid launcher thing
Lua
15
star
14

ctrnand-title-cia-gen

CIA generator for installed CTRNAND titles
Python
15
star
15

hardmod-b9s-installer

Installs boot9strap through hardmod
Python
13
star
16

screenshot-merge

screenshot merging tool for Nintendo 3DS
Lua
12
star
17

ez3ds

Nintendo 3DS hax helper for noobs
PHP
10
star
18

rebuild-title-database

Rebuilds the contents of title.db for Nintendo 3DS
Python
10
star
19

videoinject

crappy video injector for moflex videos
Python
10
star
20

GM9-lua-attempt

Fork of d0k3/GodMode9 with super experimental Lua support.
C
9
star
21

cmd-gen

Experimental script to generate CMD files for Nintendo 3DS SD titles
Python
9
star
22

panopticon

Log messages in Discord, a la IRC
Python
8
star
23

rc-nand-cleanup

Cleans up NAND titles after an old-style region-swap on Nintendo 3DS
C
7
star
24

dumptik

Dump all tickets from a Nintendo 3DS console
C
6
star
25

save-crypto-finder

Finds and tries to decrypt save files for Nintendo 3DS using a list of Title IDs
Python
6
star
26

panopticon-2

Discord message logger
Python
6
star
27

3DSFlow-downloader

download 3DSFlow banners for mashers's Grid Launcher
Lua
6
star
28

save-data-copy-tool

Copy save data between gamecard and digital versions of games on Nintendo 3DS
Makefile
6
star
29

firmbuilder-docker

Docker image to build Nintendo 3DS FIRM images
Dockerfile
5
star
30

steamos-docker

SteamOS Docker image base
Makefile
5
star
31

firmswap

Nintendo 3DS FIRM partition switcher in Python 3
Python
5
star
32

snes-vc-stuff

Python
4
star
33

seedhelper

A tool to assist users of the seedminer method in communicating. https://seedhelper.figgyc.uk
JavaScript
3
star
34

random-tools

random scripts
Python
3
star
35

gw-save-export-helper

Gateway Save Export Helper
Lua
3
star
36

search-3ds

Nintendo 3DS file searcher in Python
Python
3
star
37

Kurisu-Vita

Bot for Vita Hacking on Discord
Python
3
star
38

another-file-manager

file manager thing for Nintendo 3DS
Lua
3
star
39

mediawiki-extensions-BulkPageCreate

Create multiple pages at once
PHP
2
star
40

test812784

test
2
star
41

gen-title-info-entry

Experimental script to generate the Title Info Entry for title.db
Python
2
star
42

github-actions-sandbox

Python
2
star
43

FAIL

a stupid simple file container
Python
2
star
44

lumatest

2
star
45

downgrade-check

(outdated) check if you have downgraded your Nintendo 3DS properly
Lua
2
star
46

dynarmic

hard fork
C++
1
star
47

nur-packages

my NUR packages
Nix
1
star
48

nix-fusepy-context-test

Python
1
star
49

overwrite-wiiu-titlehash

Overwrite Wii U titlehash to force a system update
Python
1
star
50

ianburgwin.net

PHP
1
star
51

dockerhub-tagging-test

Shell
1
star
52

Mayuri

Tuturu~Discord moderation bot thing
Python
1
star
53

ninjhax2.5-less_services_test

hard fork of smealum's ninjhax2.x repo, testing service removal for boot rate
C
1
star
54

mediawiki-extensions-DownloadWithFilename

Download a file with a different name automatically while saving
PHP
1
star
55

discussion-test

Testing stuff
1
star