Nintendo Switch Dump Tool
- Generates full Cartridge Image dumps (XCI) with optional certificate removal and optional trimming.
- Generates installable Nintendo Submission Packages (NSP) from base applications, updates and DLCs stored in the inserted game card, SD card and eMMC storage devices.
- Compatible with multigame carts.
- CRC32 checksum calculation for XCI/NSP dumps.
- Full XCI dump verification using XML database from NSWDB.COM (NSWreleases.xml).
- XML database and in-app update via libcurl.
- Precise HFS0 raw partition dumping, using the root HFS0 header from the game card.
- HFS0 partition file data dumping.
- HFS0 partition file browser with manual file dump support.
- Program NCA ExeFS section file data dumping.
- Program NCA ExeFS section file browser with manual file dump support.
- Program NCA RomFS section file data dumping.
- Program NCA RomFS section file browser with manual file dump support.
- Manual game card certificate dump.
- Free SD card space checks in place.
- File splitting support for all operations.
- Game card metadata retrieval using NCM and NS services.
- Dump speed calculation, ETA calculation and progress bar.
- Operations related to installed SD/eMMC titles require a keys file located at "sdmc:/switch/prod.keys". Use Lockpick_RCM to generate it.
- MCMrARM, for creating the original application.
- RSDuck, for their vba-next-switch port. It's UI menu code was taken as a basis for this application.
- Foen, for giving me some pretty good hints about how to use the NCM service.
- Yellows8, for helping me fix a silly bug in my implementation of some NCM service IPC calls.
- Björn Samuelsson, for his public domain CRC32 checksum calculation code for C (crc32_fast.c).
- AnalogMan, for his constant support and ideas.
- The folks from ReSwitched, for working towards the creation of a good homebrew ecosystem.
Que novedades incluye la versión 1.1.7
Tickets and RSA certificates are now properly parsed from their respective system savedata files, thanks to the efforts of shchmue!
- Speeds up ticket / titlekey retrieval for NSP/ExeFS/RomFS operations.
- Removes the need to bundle RSA certificates inside the application. Yay!
- As a bonus, the new XS00000024 personalized ticket certificate introduced in 9.0.0 is now supported. Thanks to SimonTime for providing insight on this matter!
Added NSP dump support for pre-installed titles.
- If the selected title uses titlekey crypto and no ticket for it can be found, a prompt will be displayed, asking the user if they want to proceed anyway (even though content decryption won't be possible).
- This prompt will not appear in batch dump operations. The dump procedure will always go ahead.
- Sequential NSP dump operations will only display the prompt during their first run.
Added a new Ticket submenu for SD/eMMC titles. It can be used to only dump the Ticket from a specific base application / update / DLC, without having to dump its entire NSP.
- Dumped tickets are stored in sdmc:/switch/nxdumptool/Ticket.
- A configurable option is also available to remove console specific data from dumped tickets.
- The encrypted + decrypted title key is displayed during the dumping process, along with the Rights ID for the title.
- Just so you know, if you want to dump tickets from base application updates bundled in gamecards, use the HFS0 browser.
Added an option in NSP/batch dump menus to control the replacement of the NPDM RSA key/sig in Program NCAs from base applications and updates:
- Up until now, replacing both the public RSA key in the ACID section from the main.npdm file (ExeFS) and the NPDM header signature (NCA header) has been the default, non-configurable behaviour whenever Program NCA modifications were needed.
- This option is enabled by default - if Program NCA modifications are needed, disabling this option will make the output NSP require ACID patches to function properly under any CFW (but at the same time, it will make the Program NCA verifiable by PC tools).
- The rest of the possible Program NCA modifications (content distribution change and/or Rights ID removal + key area replacement) will be applied when needed, even if this option is disabled.
Changes related to the orphan content menu (Y button):
- Parent base application name is now retrieved for orphan updates and DLCs whenever possible, and used in menus and output NSP dumps.
- Moved the orphan content hint from the orphan content menu to the SD/eMMC menu.
Changed application behaviour regarding the Lockpick_RCM keys file existence:
- SD/eMMC menu and NSP/ExeFS/RomFS related operations are now disabled if the keys file at "sdmc:/switch/prod.keys" is not available.
- An error message telling the user to run Lockpick_RCM will be displayed in the main menu if the keys file is not available.
- Additionally, error messages related to data decryption will now also suggest the user to run Lockpick_RCM.
Changes to the generated update NSPs (thanks to The-4n and suchmememanyskill):
- Delta Fragments are, again, always excluded from output NSP dumps, regardless of their source storage and the selected dump settings.
- Patch Extended Data is no longer wiped from the CNMT NCA in update NSPs - only the content records are replaced accordingly.
- Furthermore, content records from Delta Fragments are preserved as well.
- Fixed CNMT PFS0 block hash calculation when the total PFS0 size exceeds the hash block size from the PFS0 superblock in the NCA header. Removes the 0x236E02 / 2002-4535 error in Goldleaf about an invalid PFS0, triggered by update NSPs with long a CNMT PFS0 section.
Changes to the generated NSP XMLs:
- RequiredDownloadSystemVersion and IdOffset elements from the CNMT XML are now properly retrieved from their true locations in the CNMT NCA.
- Added support for the RuntimeParameterDelivery NACP field (introduced in HOS 9.X).
- Added support for the IARCGeneric value in the RatingAge NACP field (introduced in HOS 9.X).
- Fixed handling of PlayLogQueryableApplicationId values.
- Big thanks to 0Liam for documenting these changes!
Changes related to the application update feature:
- Added a forced update prompt if the application is already on the latest version.
- The application update option will now be disabled after a successful update.
- Removed the FS service reinitialize step after closing the application's RomFS at startup. This was done because romfsExit() didn't close all open file handles to the NRO when I tested it with libnx v2.2.0 some time ago, thus making the application update fail. Nonetheless, the problem has been fixed.
Fixed UI flickering when HFS0 partition data can't be retrieved from the gamecard.
- Furthermore, a warning about nogc spoofing is now displayed under this particular case.
- Added an extra NSP offset validation step for sequential NSP dumps.
- Minor codestyle fixes.
Added sequential dump support: it is now possible to start a XCI/NSP dump procedure even if there's not enough space available in the SD card!
- No setting has to be modified in order to enable this feature - the application will automatically ask the user if they want to use this mode if there's not enough space for the full dump.
- At least 1 GiB (2^30 bytes) of free space must be available in order to trigger this feature.
- A file-based checkpoint system is used to keep track of the already dumped parts (à la Hekate).
- The part(s) generated in each run must be transferred to a PC before continuing the process - except for the .xci.seq/.nsp.seq files used to keep track of the current dump status.
- NSPs generated using this method will also include a .nsp.hdr file, which holds the PFS0 header data. The information from this header is filled after writing all the NCAs, thus it is saved as an additional file. This must be used as the first file (placed before .nsp.00) when merging all the parts into a full NSP.
The following options are ignored when this feature is triggered:
- Split output dump (FAT32 support) (XCI/NSP). File splitting will take place, regardless of the filesystem used by the SD card. Additionally, the creation of a directory with the archive bit set isn't performed with NSP dumps.
- Create directory with archive bit set (XCI only).
- CRC32 checksum calculation (NSP only). CRC32 checksum calculation is still available for XCI dumps.
- This feature is not compatible with batch dump operations.
General changes to batch dump operations:
Entries from the summary list displayed in the batch dump menu can now be manually excluded from the dump operation before starting it.
- It is possible to disable all entries, enable all entries and/or handpick specific titles from the summary list, thus letting the user further customize the batch dump process.
A new option has been added to keep track of previous successful dumps created using batch mode: "Remember dumped titles".
- If enabled, a 0-byte file will be created for each successful dump in a separate subdirectory.
- These files act as an override: they will make the application skip the titles they represent in later batch mode operations even if the "Skip already dumped titles" option is disabled.
- This is specially useful if someone wants to skip titles that have already been successfully dumped using batch mode - even more so if their NSPs have already been moved or deleted from the SD card.
- To restore the original behaviour, simply delete the contents from the "BatchOverrides" subdirectory inside "NSP".
- Free storage space is now properly recalculated after each successful dump during a batch mode operation.
- Entries from the summary list displayed in the batch dump menu can now be manually excluded from the dump operation before starting it.
UI code cleanup:
- uiDrawString(), uiGetStrWidth() and uiPrintOption() are now compatible with variable argument lists, removing the need to format a string beforehand and pass its variable to any of those functions.
- Preprocessor definitions are now used to specify RGB colors and for calculating vertical line coordinates, greatly simplifying calls to UI functions.
- Menu code now properly waits for any user input before drawing changes to the screen.
- Other minor coordinate fixes.
- The application is now capable of automatically reading/saving dump settings from/to a configuration file.
- The "Split output dump" option is, once again, enabled by default. FAT32 is the recommended filesystem for Switch SD cards if someone wants to use homebrew applications, so it's only logical to do this.
- Filenames for NACP icons in NSPs now properly reflect the NCA ID from its respective content file if it was modified.
- Fixed a bug that prevented to dump a specific file in the RomFS section from any update.
- Fixed a bug in the RomFS block collision check code that prevented to generate NSP dumps from certain titles with a RomFS section in Control/Manual NCAs that falls under an edge case that wasn't being handled properly. Thanks to Zet-sensei for reporting this problem!