NSC_Builder is based in the awesome function "REMOVE_TITLE_RIGHTS" from nut by blawar this function let's you erase the titlerights encryption from nsp files.
Current version of the program allow you to make multi-content xci or nsp files.
The batch has 2 modes:
- auto mode: you drag nsp files individually or folders with several files over the batch to enter in auto mode.
- manual mode: you double click the batch and you can build a list of files to process.
The behavior of these modes can be controlled by editing ztools\NSCB_options.cmd
The program incorporates a custom build of nut.py and hacbuild with several added functions. You won't be able to use it if you replace these files for the official builds.
- A computer with a Window's OS is needed
- You'll need to have Python 3 installed for the program to work correctly
- You'll need to install these libraries: "urllib3 unidecode tqdm bs4 tqdm requests image" to assist you in this you can run "install_dependencies.bat" file.
- You need to fill the keys_template.txt file inside the ztools folder and rename to keys.txt
- You'll need to have at least .net frameworks 4.5.2 installed so hacbuild can work correctly.
4. Option description
OPTION 1: Work and Output folders setup
OPTION 2: Route to needed programs
OPTION 3: Nut options
- pycommand -> your command to invoke python 3 (by deffault py -3)
- buffer -> buffer in number of bytes for the copy functions
OPTION 4: Route to game_info.ini and keys.txt
OPTION 5: REPACK OPTIONS. Controls repack in auto mode.
Repack option for auto-mode
- xci -> repack as xci
- nsp -> repacck as nsp
- both -> repacck as both
Type of repack for folders
- indiv -> repack content individually as multiple xci/nsp
- multi -> repack content as single multicontent xci/nsp
OPTION 6: MANUAL MODE INTRO.
- indiv-> Enter in individual packing mode directly
- multi-> Enter in multi-pack mode directly
- choose-> Prompt to choose the mode in which you want to enter
OPTION 7: ZIP FILES
Select if you want to zip things that will allow to restore nsp files to original state.
- You can't make multi-content xci files with more than 8 games. It'll give error when loading in horizon. I suspect it may be a qlauncher limitation so it could work with theme mods but INTRO didn't test it.
- If you pack an update that requires a superior firmware that you're in you won't be able to skip the update prompt.
6. Planned features
- List manager.
- Batch tools to put in application some of my changes to nut libraries.
- Support for meta patching and control nca building for custom logos.
- Skips for individual mode.
- Content splitter.
- Titlerights restoration mode.
7. Thanks and credits to
NSC_Builder is based on
a.) Nut: Without the work of "blawar" one of the most talented Switch sceners nothing of this would be possible at this point.
b.) Hacbuild: The xci repacking functions are based in hacbuild made by LucaFraga
c.) hactool: Program which function is give information, decrypt and extract a lot of different kind of files us by the NX System. Hactool was made by SciresM.
d.) 7zip: Program meant to compress and extract files in several formats. 7zip was made by Igor Pavlov https://www.7-zip.org/
Thx to MadScript77 his great suggestions,specially the idea of profiles for the batch. Thx to Liam from old SH discord for always being helpfull. Thx to XCI-Explorer's creator StudentBlake since his program made easier for me to came up with the fix for hacbuild.
Also thanks to all members from gbatemp, elotrolado.net and my friends at discord 😉
Que novedades incluye la versión 0.98
- Updated the locations of nutdb data(though the db method is bound to be changed on next release)
- Added Opencritic Data to the gui interface
- Metascores, Userscores and Opencritic scores are shown only if available. If the openscore matches the metascore the openscore is hidden.
- Fixed the "Not packed" issue on ncz compression, thanks to blawar for the solution.
Added initial Google Drive Support. Initial release covers:
- Support for Public and Private google drive
- Search on drives and TeamDrives
- Ability to add several accounts
- Easy to use graphical console interface
- Ability to download xci files trimmed or supertrimmed and nsz\xcz files compressed or uncompressed directly from google drive.
- Ability to show several file information from google drive (verification still missing)
- Ability to add several google drive accounts.
- Ability to make several google drive libraries and add several download locations for quick access.
- As some of you may have realized masterkey10 brings a split into people reading the numbers as int and people reading them as hex. NSCB has been updated to support both formats (mater_key_10 and master_key_0a), you can call it both ways in the keys.txt file. In adition this update is required for when games start using that key, since previous versions won't load it properly unless you replace lib\Keys.py
Several updates have been added to the information given by the interface.
- It can detect the Firmware present in XCI files. To speed the parsing this is done via fw.json though in case a firmware is not added to the json the it will be read from the xci and added to the json to speed up the parsing in games including the same firmware. The json will be updated once a new firmware is detected but you can turn off autoupdates and it'll update using xcis.
- New eshop data like product codes, game modes, cloud saves and online support has been added
- Metacritic scores have been added
- Videos from Nintendo.com have been added
Added 2 new options to the interface:
- Option 2: Ability to choose the browser to launch the interface setting the path to executable files or .lnk files
- Fixed Raw extraction for nsp files with big entry tables like the ones present in Firmware nsps.
- Small improvement to database retrival. If a json database is retrieved and it tests as corrupt the modification time will be updated to match the current time on the system. This will prevent the program from trying to retrieve the database before the next refresh cycle, stopping the nagging every time nutdb is called.
- Fixed keygeneration missmatch in nxdumptool tickets with elicense flag
- Fixed xci compressor for xci with tickets and titlekey starting by 0
- Fixed bug where ticket gets appended more than once in a multi-file with tickets
- Added json integrity check when updating nutdb. The update will take a little longer but the current json will be protected if the one in the repository is corrupted.
- Fixed issue where pykashi adds spaces when processing accented characters.
- Improved selector to list function.
- Added pararell compression as alternative to threads. Pararell compression compresses several files at the same time with a smaller cpu footprint.
- In tests i managed to compress 20 files at the same time while keeping a 2-3Mb\s speed ratio per file with level 22 compression. This will depend on your computer or server.
Note: Current implementation has this issues:
- It compresses in batches so when one instance finishes it's place isn't taken by another file.
- It uses subprocesses. tqdm prints become a little wonky with subprocesses and ghost bars can appear out of position, specially with a high number of processes. To handle this the screen gets cleaned in 3second intervals and bar positions get preallocated. This reduces the wonkyness.
- The wonkyness is just visual, it doesn't affect the correct processing of the files
Possible improvements to study:
- I.- Separate filelist equally between instances so when one instance finishes processing a file another takes it's place.
- II.- Let one thread update the progress bars exchanging the progress information between threads
- For performance a function that arranges files by size has been added. That ensures files with similar sizes will be group on the same batch when possible
- Fixes bug where rsv changed cnmt.nca files won't get it's has verified properly.
- Fixes bug where individual mode will only output multi-nsp files as nsp when the user choose xci as output.
- Adds character — to the bad characters list replacing it by -