mirror of
https://github.com/ihaveamac/custom-install.git
synced 2026-01-22 06:25:58 +00:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2535c2ee86 | ||
|
|
61a1b436e5 | ||
|
|
0195ea75d4 | ||
|
|
78a3529770 | ||
|
|
00c0e81c26 | ||
|
|
59470c6b37 | ||
|
|
cd4cb6e6e5 | ||
|
|
86c4565295 |
10
README.md
10
README.md
@@ -2,14 +2,19 @@
|
|||||||
Experimental script to automate the process of a manual title install for Nintendo 3DS. Originally created late June 2019.
|
Experimental script to automate the process of a manual title install for Nintendo 3DS. Originally created late June 2019.
|
||||||
|
|
||||||
## Summary
|
## Summary
|
||||||
|
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.
|
1. Dump boot9.bin and movable.sed from a 3DS system.
|
||||||
2. Install pycryptodomex:
|
2. Install pycryptodomex:
|
||||||
* Windows: `py -3 -m pip install --user --upgrade pycryptodomex`
|
* Windows: `py -3 -m pip install --user --upgrade pycryptodomex`
|
||||||
* macOS/Linux: `python3 -m pip install --user --upgrade pycryptodomex`
|
* macOS/Linux: `python3 -m pip install --user --upgrade pycryptodomex`
|
||||||
2. Run `custom-install.py` with boot9.bin, movable.sed, path to the SD root, and CIA files to install (see Usage section).
|
3. Download the repo ([zip link](https://github.com/ihaveamac/custom-install/archive/master.zip) or `git clone`)
|
||||||
3. Use custom-install-finalize on the 3DS system to finish the install.
|
4. Run `custom-install.py` with boot9.bin, movable.sed, path to the SD root, and CIA files to install (see Usage section).
|
||||||
|
5. Download and use [custom-install-finalize](https://github.com/ihaveamac/custom-install/releases) on the 3DS system to finish the install.
|
||||||
|
|
||||||
## Setup
|
## Setup
|
||||||
|
Linux users must build [wwylele/save3ds](https://github.com/wwylele/save3ds) and place `save3ds_fuse` in `bin/linux`.
|
||||||
|
|
||||||
movable.sed is required and can be provided with `-m` or `--movable`.
|
movable.sed is required and can be provided with `-m` or `--movable`.
|
||||||
|
|
||||||
boot9 is needed:
|
boot9 is needed:
|
||||||
@@ -22,7 +27,6 @@ boot9 is needed:
|
|||||||
|
|
||||||
A [SeedDB](https://github.com/ihaveamac/3DS-rom-tools/wiki/SeedDB-list) is needed for newer games (2015+) that use seeds.
|
A [SeedDB](https://github.com/ihaveamac/3DS-rom-tools/wiki/SeedDB-list) is needed for newer games (2015+) that use seeds.
|
||||||
SeedDB is checked in order of:
|
SeedDB is checked in order of:
|
||||||
* `--seeddb` argument (if set)
|
|
||||||
* `SEEDDB_PATH` environment variable (if set)
|
* `SEEDDB_PATH` environment variable (if set)
|
||||||
* `%APPDATA%\3ds\seeddb.bin` (Windows-specific)
|
* `%APPDATA%\3ds\seeddb.bin` (Windows-specific)
|
||||||
* `~/Library/Application Support/3ds/seeddb.bin` (macOS-specific)
|
* `~/Library/Application Support/3ds/seeddb.bin` (macOS-specific)
|
||||||
|
|||||||
@@ -270,8 +270,6 @@ for c in args.cia:
|
|||||||
b'\0' * 0x2c
|
b'\0' * 0x2c
|
||||||
]
|
]
|
||||||
|
|
||||||
print(title_info_entry_data)
|
|
||||||
|
|
||||||
title_info_entries[cia.tmd.title_id] = b''.join(title_info_entry_data)
|
title_info_entries[cia.tmd.title_id] = b''.join(title_info_entry_data)
|
||||||
|
|
||||||
with cia.open_raw_section(CIASection.Ticket) as t:
|
with cia.open_raw_section(CIASection.Ticket) as t:
|
||||||
@@ -325,3 +323,6 @@ with TemporaryDirectory(suffix='-custom-install') as tempdir:
|
|||||||
# import the directory, now including our title
|
# import the directory, now including our title
|
||||||
print('Importing into Title Database...')
|
print('Importing into Title Database...')
|
||||||
subprocess.run(save3ds_fuse_common_args + ['-i'])
|
subprocess.run(save3ds_fuse_common_args + ['-i'])
|
||||||
|
|
||||||
|
print('\nFINAL STEP:\nRun custom-install-finalize through homebrew launcher.')
|
||||||
|
print('This will install a ticket and seed if required.')
|
||||||
|
|||||||
Reference in New Issue
Block a user