Skip to content

@DarkMatterCore DarkMatterCore released this Apr 21, 2021

  • Fixed support for HOS 12.0.x / AMS 0.19.x. If needed, TIPC serialization is now used to dispatch the AtmosphereHasService IPC request.

This is only a bugfix release. I don't expect to release any new versions until the rewrite is finished - the only exception being fixing some kind of feature-breaking bug. Please understand.

Assets 3

@DarkMatterCore DarkMatterCore released this Feb 25, 2021

  • Fixed compatibility with latest libnx release.
  • Now using the AtmosphereHasService SM API extension to check if a service is running. More than a year and a half has passed since this feature was introduced in Atmosphère, and it is now part of both SX OS and ReiNX, so it's a justified change. Fixes issues related to sysmodules and SM port exhaustion.

This is only a bugfix release. I don't expect to release any new versions until the rewrite is finished - the only exception being fixing some kind of feature-breaking bug. Please understand.

Assets 3

@DarkMatterCore DarkMatterCore released this Sep 26, 2020

UPDATE: If you downloaded the NRO binary before 2020-11-10 01:25 AM (UTC-4), please re-download it again. Hotfixes for RomFS-related features, Atmosphère 0.15.0 support and the ability to go back from the ID Offset selection screen were introduced. Not worthy of bumping the version number.

  • Fixed RomFS dumping/browsing support for games with base Program NCAs without a RomFS section (e.g. Fortnite, World of Tanks Blitz, etc.). Big thanks to bigkahuna666 for reporting the issue and providing with testing.

This is only a bugfix release. I don't expect to release any new versions until the rewrite is finished - the only exception being fixing some kind of feature-breaking bug. Please understand.

Assets 3

@DarkMatterCore DarkMatterCore released this Sep 22, 2020

  • Built using libnx f01fb21.
  • The application will now only attempt to decrypt the eTicket device RSA keypair if the target title uses a ticket with personalized titlekey crypto, instead of always decrypting it regardless of the ticket crypto type.
  • Fixed a NSP dumping issue where the decrypted titlekey wasn't being set for the current NCA if both the ticket and the decrypted titlekey were retrieved while parsing a previous NCA. Big thanks to sadboys2001 for reporting it.

This is only a bugfix release. I don't expect to release any new versions until the rewrite is finished - the only exception being fixing some kind of feature-breaking bug. Please understand.

Assets 3

@DarkMatterCore DarkMatterCore released this Apr 19, 2020

UPDATE: If you downloaded the NRO binary before 2020-04-30 10:25 PM (UTC-4), please re-download it again. A quick UI fix was applied to display the "Batch mode" message at the top when no orphan titles are available.

  • Built using libnx v3.1.0.
  • Updated save.c/h to reflect changes made by shchmue in Lockpick_RCM. Fixes crashes under HOS 10.0.0.
  • Fixed a nasty stack corruption issue caused by improper handling of FatFs objects. Fixes ES savefile mounting errors throughout the application (e.g. batch mode, ticket dumping).

This is only a bugfix release. I don't expect to release any new versions until the rewrite is finished - the only exception being fixing some kind of feature-breaking bug. Please understand.

Assets 3

@DarkMatterCore DarkMatterCore released this Mar 30, 2020

  • Built using libnx commit d7e6207.
  • Removed unnecessary code in NSP dumping steps.
  • Improved GitHub JSON parsing code.
  • Added NSP/ExeFS/RomFS support for titles with multiple Program NCAs (populated ID offset fields). Big thanks to Cirosan and ITotalJustice for testing!
  • Fixed compatibility with consoles that use the new PRODINFO key generation scheme. Big thanks to dimitriblaiddyd78 from GBAtemp for reporting the issue and providing with testing!
  • Fixed ExeFS/RomFS browsing/dumping support for bundled-in game updates in gamecards.
  • Recursive directory removal after a failed HFS0/ExeFS/RomFS data dump is now optional.
  • Fixed RomFS section dump support for titles that hold enough files in a single directory to exceed the max file count per directory limit in FAT32 (e.g. Animal Crossing: New Horizons).
    • In order to overcome this problem, a secondary directory is created using the current RomFS directory name + a counter value (e.g. /Model -> /Model_0).
    • This directory is used to save the rest of the data from the current RomFS directory until:
      • All files from the current RomFS directory have been dumped, or...
      • The directory reaches the max file count as well and another directory must be created to continue the process (e.g. /Model_0 -> /Model_1).
    • Big thanks to Michael18751, TechGeekGamer and SusejLav for testing!
  • Button presses are now retrieved from all connected controllers.
  • HOME button presses are now only blocked during dump operations. Fixes problems with homebrew forwarders and qlaunch replacements.
    • Additionally, long HOME button presses are now blocked as well.
  • Removed max entry count limit for HFS0/ExeFS/RomFS browsers. All filenames are now dynamically allocated, as it should have been from the very start.
  • Updated NACP struct to reflect latest discoveries made by 0Liam.
  • The application now displays a FW update warning when the contents from an inserted gamecard can't be parsed because they use an unsupported NCA keygen. Thanks to ITotalJustice for spotting it!

This is only a bugfix release. I don't expect to release any new versions until the rewrite is finished - the only exception being fixing some kind of feature-breaking bug. Please understand.

Assets 3

@DarkMatterCore DarkMatterCore released this Dec 11, 2019

  • Added compatibility with latest devkitA64 and libnx releases. Thanks to HookedBehemoth for porting the extra IPC calls used by the application to the new IPC system!
  • Now using global title contexts instead of global variables for each different title property (ID, version, source storage, etc.). Simplifies metadata retrieval functions.
  • Refactored the HFS0/IStorage parsing code, optimizing all gamecard reads performed by the application.
  • Increased dump buffer sizes to 4 MiB.
  • NCA content size is now calculated and displayed for all titles.
    • Content size for updates and DLCs is displayed in the title selector from the NSP menus.
    • Additionally, the application now displays the size for each title in the batch dump summary screen. Plus, an approximate total dump size is calculated according to the selected titles.
    • Please bear in mind that the displayed information does not reflect output NSP dump sizes.
  • Changes to the HFS0, ExeFS and RomFS browsers:
    • File sizes are now displayed for all file entries.
    • Dumping a file/directory won't reset the cursor position anymore.
  • Displayed lists are now lexicographically sorted.
  • It is now possible to perform CRC32 checksum lookups using the No-Intro database. Big thanks to the folks from No-Intro.org!
    • This new method requires a working Internet connection at runtime.
    • For XCI dumps, this is merely offered as an alternative to the NSWDB.COM XML database method, without replacing it. A new option has been added to the XCI dump menu, which lets the user select the verification method they wish to use.
    • For NSP dumps, on the other hand, this offers a way to actually validate dumps:
      • The "CRC32 checksum calculation" feature, which was a bit pointless, has been entirely removed. The new "Verify dump using No-Intro database" option has taken its place.
      • NSP dump verification is achieved by just calculating the CRC32 checksum from the output CNMT NCA and performing a lookup using the No-Intro database. This works because of the way CNMT data is handled by the application:
        • The SHA-256 checksum for each NCA is always recalculated during the dump process, and the CNMT NCA is always patched afterwards. However, if no NCA modifications are performed, the CNMT NCA ends up being identical to its original counterpart, because the content records won't have changed at all.
        • This lets the application verify the NSP dump by performing a CRC32 checksum lookup using the CNMT NCA data, as long as no NCA modifications take place.
      • As such, this method only works with SD card / eMMC titles, as long as the "Generate ticket-less dump" option is disabled.
      • This option doesn't appear in gamecard-related menus, and it's not compatible with batch dumps.
  • By popular demand, an option has been added in XCI, NSP and batch dump menus to change the naming scheme used with output files to the following:
    • XCI dumps:
      • Single game: TitleName [TitleID][TitleVersion].
      • Multigame: TitleName1 [TitleID1][TitleVersion1] + TitleName2 [TitleID2][TitleVersion2] + ... + TitleNameN [TitleIDN][TitleVersionN].
    • NSP/Batch dumps: TitleName [TitleID][TitleVersion][TitleType].
    • The "Remember dumped titles" feature available in batch mode isn't affected by this new setting - batch overrides will keep using the regular naming scheme.
  • Added an option to include delta fragment NCAs in output NSP dumps from installed SD/eMMC updates. It is disabled by default.
  • Added a small settings menu to the ExeFS/RomFS sections with the following options:
    • Split files bigger than 4 GiB (FAT32 support): unlike previous versions, it is now possible to control if file splitting will take place for ExeFS/RomFS file dumps, instead of always splitting them. If this option is enabled, files bigger than 4 GiB will now be split and stored in a subdirectory with the archive bit set (like NSPs).
    • Save data to CFW directory (LayeredFS): enabling this option will save output data to the directory from the CFW you're running, using the LayeredFS layout.
  • Added a new option to the batch mode menu to control if the batch dump process should halt on any errors. If disabled, it'll make the batch dump process wait for 5 seconds on any errors, then it will keep going.
  • Free SD card space is now always displayed on every UI state. It is also displayed and updated during batch mode operations.
  • ExeFS submenu is now available for updates in the orphan content list (Y button menu).
  • It is now possible to exit the application from the batch dump summary screen.
  • A warning is now displayed in the main menu if the application is launched using applet mode. NSP dumps from base applications and updates can fail if there's not enough heap available to hold the uncompressed main NSO while generating the programinfo.xml.
  • Improved XPath query used when looking for checksum matches in the NSWDB.COM XML database. Fixes CRC32 checksum lookup for multigame cartridges.
  • Empty RomFS directories are now properly handled by the RomFS browser.
  • Removed a BKTR RomFS section offset check that was causing trouble while trying to perform RomFS-related operations with some updates (e.g. Luigi's Mansion 3).
  • Physical IStorage reads are now performed to retrieve NCAs from gamecards, instead of using ncmContentStorageReadContentIdFile(). Fixes gamecard NSP/ExeFS/RomFS operations under FW versions < 4.0.0.
  • Fixed unaligned IStorage reads in manual file dumps files from HFS0 partitions in gamecards. Unaligned files dumped this way should no longer contain garbage data.
  • Fixed a memory leak in the XML database verification code.
  • Fixed an indexing bug in the RomFS browser that could potentially cause problems when performing any action from the root directory.
  • Fixed gamecard hotswapping in gamecard-related submenus.
  • Fixed a free SD card space check in sequential XCI/NSP dump procedures.
  • Fixed a bug where the output dump name wouldn't be generated for orphan content when no base applications are installed, preventing the NSP dump procedure from starting. Thanks to snes878 for reporting this!
  • Fixed a bug that prevented to retrieve the ticket for a bundled-in gamecard update from the Secure HFS0 partition during a NSP dump procedure. Thanks to snes878 for reporting this!
  • Fixed a bug where a NSP dump process would stop if no personalized ticket certificate is found in the ES system savefile (e.g. when no titles with personalized titlekey crypto have been downloaded from the eShop). Thanks to satel for reporting this!
  • Fixed a bug where an empty orphan content list would have been generated if no base applications are installed. Thanks to Newb_3DS#6287 for reporting this issue!

Thanks to FennecTECH and MUXI from PSXTools forums for providing with testing!

Assets 3

@DarkMatterCore DarkMatterCore released this Nov 6, 2019

  • 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.

Big thanks to FennecTECH and Hannah (Luna)#8459 for providing with lots of testing for this release!

PSA: if you downloaded any new games from the eShop after updating to 9.0.0+ and used a previous release of nxdumptool to dump NSPs with console specific data, please redump them - their RSA certificate chain isn't the proper one. Dumps without console specific data (or without a ticket) are not affected by this.

Assets 3

@DarkMatterCore DarkMatterCore released this Oct 17, 2019

  • 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.
  • 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!

Thanks to FennecTECH for providing with testing!

Assets 3

@DarkMatterCore DarkMatterCore released this Sep 15, 2019

  • Built with latest libnx release, in order to fix HID problems under HOS 9.0.0+.
  • Added support for Korean and Chinese character sets.
  • Added browsing/dumping support for RomFS sections in Data NCAs from DLCs.
    • Compatible with orphan DLCs (Y button) as well.
  • Output directories for ExeFS/RomFS operations are now properly tagged as "(BASE)", "(UPD)" or "(DLC)" (RomFS only), depending on the title type being processed.
  • Some measures have been taken to help speed up dumping operations:
    • CPU boost mode type 1 is now used with appletSetCpuBoostMode - only effective under HOS 7.0.0+!
    • Removed the need for dynamic memory allocations in NCA AES-CTR block decryption/encryption steps.
    • Although these changes get me some extra ~4 MiB/s in most operations, keep in mind this doesn't do much to help with RomFS dumps from titles with lots of (small) file entries. Even so, although the calculated ETA can sometimes be discouraging, the dump most likely won't take that much time - just let the process advance until it hits bigger files. Sequential write speeds for the inserted SD card still play a huge role in these cases.
  • Moved base output directory from "sdmc:/nxdumptool/" to "sdmc:/switch/nxdumptool/". Both the NSWreleases.xml file and the NRO binary are also expected to be inside this directory.
Assets 3