App Details
Easy-to-use title installer & manager for Nintendo Switch
If you are looking for Tinfoil, this is Tinfoil's safer and way more extended evolution.
Brief description
Goldleaf is a multipurpose tool, specialized on title installing from NSP packages, but with other utilities, such as NAND/SD browsing,
You can easily manage title-related stuff, like install titles via NSP packages or uninstall already installed titles.
If you know what FBI is (related to 3DS homebrew), this is a similar project for Nintendo Switch.
Disclaimer
Installing NSP packages can be dangerous.
Keep in mind that there will always be a ban risk, and that NSPs with tickets are specially dangerous.
If you want to be safe, avoid connecting to the internet via airplane mode, or block Nintendo's services via special tools such as 90DNS.
Goldleaf simply provides support for a normal NSP and/or ticket installation. The way you use them or the risks you are taking are your problem.
Goldleaf gives the user the possibility to modify NAND files, by deleting them or allowing to copy new files there.
This can be dangerous, as deleting NCAs from the NAND contents can lead to unfixable errors. Image deleting all the EXE and DLL files from System32 folder. Well, the result would be similar.
Removing tickets from installed contents will make the system not to be able to recognise them as "legit" purchased, so it will refuse to launch them (in many cases, but NOT all cases)
Main features
SD card and NAND browser
A very simple but, in my opinion, one of the most useful features in Goldleaf. Just a file browser for the SD card or for NAND partitions, providing special support for some file formats:
NSP (Nintendo Submission Package)
It's the official format used by Nintendo to provide installable content from their CDN servers.
Technically, it's a PFS0 (a simple file format containing several files) with NCA contents, sometimes XML and/or icon metadata (exported by official packaging tools), and a ticket and a cert in case they are signed with a titlekey (games are, system contents aren't).
Goldleaf can install NSPs same way other official apps would, like DevMenu.
As a warning, I do not recommend installing NSPs in case you plan to go online. Installing content from unofficial tools (such as Goldleaf or the old Tinfoil) can lead to permanent bans from online services, and in severe cases, from every Nintendo service, even from updating the console or games. Install NSPs at your own risk.
NRO (Nintendo Relocatable Object)
Officially is treated as a dynamic library object, similar to DLLs on Windows. This are loaded dynamically by applications at runtime.
Homebrew uses them as executable binaries because as they can contain multiple data sections, we can use them to load extra info such as NACP (title, author and version), an icon, or even RomFs data to access at runtime.
Goldleaf has the ability of launching NROs located at the SD card. Keep in mind that this feature usually can cause undefined behavior due to some difficulties cleaning up graphics so quickly.
NCA (Nintendo Content Archive)
This format is the base format used by Horizon OS to store content.
While the previously mentioned formats don't require any kind of cryptography to be extracted or used, NCAs have to be decrypted, so the user is required to provide the required keys to extract the content.
NCAs have different sections, as well as other information. The two main sections are the ExeFs and RomFs: the ExeFs filesystem contains the code NSO binaries and a NPDM metadata file, while the RomFs contains different files to be accessed from the title.
Some NCAs could also contain a special section, which is the section 0. This section contains the PNG and GIF logos displayed at the top-left and botton-right of the console when launching a title.
NCAs don't have neccessarily those two sections. The program NCA, the base of any application or applet, will contain an ExeFs, and usually a RomFs in case it's a game or a system title with resources like settings or Home Menu.
Appart from program NCAs there are some other NCA types: control NCA (NACP and icons), legalinfo NCA (HTML manuals and information), offline NCA (HTML documents in case the title wants to load them) content meta CNMT NCA (with title specific information)...
Goldleaf has embedded hactool in his code, so it can extract those partitions from NCAs, if the keys are provided.
NXTheme (Home Menu theme)
This format is developed by Qcean team, a format to handle Home Menu layout modding.
+Goldleaf can install them, but it needs to have Home Menu's RomFs at sd:/goldleaf/qlaunch. If the keys used with other formats are provided, Goldleaf itself will locate the console's qlaunch and extract it to that directory.
You will have to reboot with CFW after installing a theme to see any changes.
NACP (Nintendo Application Control Property)
This is the format used by Nintendo to store a title's name, version, author name and other information, like if the title supports screnshots or video captures.
Goldleaf can parse a NACP file and display some of it's information.
Tickets and certificates
Tickets (.tik) and certificates (.cert) are the format used by Nintendo to provide encryption data for titlekey-signed titles (almost every game).
NSPs usually contain them, and Goldleaf can install them if they are located in the SD card.
To install a ticket you will have to provide a certificate, both with the same name and in the same directory, with their extension. (example: sd:/game.tik and sd:/game.cert)
The NAND browser has almost the same support, but it's reccomended to use it only to export files via copying them to the SD card, to avoid any trouble. Goldleaf should warn when doing dangerous operations anyway.
USB installer and Goldtree
You can install NSPs via USB using Goldtree, a C# PC client to handle this installations.
Keep in mind that USB installations are a bit unstable, and might bug sometimes.
Title manager
Goldleaf's title manager will display all the titles installed in the system, both SD, NAND and the one in the gamecart if inserted.
You can view these titles' information, icon, install location and Application Id.
Titles can also be completely uninstalled here. Keep in mind that deleting a title won't delete its savedata, that should stay on the system.
Ticket manager
Goldleaf can get all the tickets installed on the console. While some of them will contain the name of the title they belong to, some could belong to DLC or other types of content despite not belonging directly to a title.
You can view the Application Id and the key generation of a ticket by selecting it.
Tickets can also be removed from the console. Removing tickets can be a dangerous option, as without them, titlekey-signed won't be allowed to boot by Home Menu.
CFW configuration
This is mostly a useful menu for checking which CFWs are in the SD card and whichof them have any Home Menu modifications, meaning that a theme is probably installed there.
You can delete any Home Menu modifications of a certain CFW after selecting a CFW.
Console information
On this option, you can check the used size of the SD card, the entire NAND, and on the different NAND partitions.
It also displays the current firmware version the console is.
About
Displays Goldleaf's logo and whether Goldleaf is running as a NRO from hbmenu or as a normal title.
As some other miscellaneous options, you can easily reboot or shut down your console from Goldleaf, by pressing ZL or ZR in any moment.
Providing keys
If you provide a file with several Switch keys (commonly named as prod.keys or keys.dat) you will be able to do some extra stuff with Goldleaf: (remember that you have to place it as sd:/goldleaf/keys.dat)
Unless you already have dumped qlaunch's (aka Home Menu) RomFs (or at least the files within lyt folder) in sd:/goldleaf/qlaunch directory, you will need to provide the previously mentioned key file with several keys, so that Goldleaf can extract directly the RomFs of the console's qlaunch contents to use it.
You have the option to extract NCA contents (ExeFs, RomFs or section 0), but you will need the previously mentioned keys too.
Goldtree and USB installs
USB communication is slightly different from Tinfoil's one, so Tinfoil's old Python script, AluminumFoil nor other tools won't work properly.
Goldtree will ask you to choose a NSP after establishing connection with Goldleaf, and it will be received and installed by Goldleaf.
Keep in mind that USB support is a bit unstable, and sometimes it might fail. Anyway, it should work most of the times.
Basic controls
The controls are quite intuitive in Goldleaf, but here you have a brief explanation of them:
Press A to select options from menus, browse folders, or in case it's a file, to browse a menu with file options (copy, delete...)
Press B to cancel a dialog or to go back to the previous page / menu.
Press X to paste the path of the clipboard. Obviously, this option is only available on file browsers. (SD or NAND)
Press Y to browse a menu with directory options, similar to the one used with files, instead of browsing the directory. Obviously, this option is only available on file browsers. (SD or NAND)
Press ZL or ZR anywhere to browse a menu with reboot / shut down options, in case you want to reboot or shut down the console.
Press Plus (+) or Minus (-) to exit Goldleaf and return to hbmenu. This option is only available if Goldleaf is loaded as a NRO binary. (more special cases like this one below)
Movement is quite obvious. Using the L-stick, the R-stick or the D-pad you can move through menu or dialog options. On menus (like the file browsers or the main menu) the R-stick provides a way faster scrolling.
Special features
Goldleaf differs on some features depending on whether it is loaded as a NRO or as an installed title:
Goldleaf can be exited via Plus (+) or Minus (-) buttons if it's loaded as a NRO, but as regular titles have to be exited from the Home Menu, this feature is not available as a title.
Goldleaf disables Home button pressing while installing a NSP if it's loaded as a title, but this feature isn't available as a NRO binary for technical reasons related to applets.
Goldleaf cannot launch NRO binaries if it's loaded as a title due to technical reasons. They can only be launched from another NRO binary.
Issues and support
In case you find a bug or you need help with Goldleaf, you have several places to ask.
Many errors are very common and can be misunderstood, and you should document a bit for some errors instead of directly calling them issues:
It's a common issue for some NSPs, although they are completely valid ones, being detected as wrong NSPs. Although they can be really wrong NSPs, it is usually caused by firmware mismatch. For instance, in case you are trying to install a title which requires at least 5.1.0 version (which uses key generation 4) on a lower firmware version, it won't be recognised as a valid NSP for cryptographical reasons. (the console cannot decrypt the NSP because it is encrypted with unknown keys which are within 5.1.0 update)
The USB installation can sometimes freeze in the middle of the install. If that happens, try closing Goldleaf and Goldtree, uninstalling the wrongly-installed title and retrying.
Screenshots
Changelog
v1.1.0\Updated for latest Plutonium (UI library):
When cancelling a dialog, the "cancel" option is focused before closing (to also indicate visually it was cancelled)
Default resolution is always 1080p internally (see consequences below)
Goldleaf
Fixed an issue where custom background colors were not properly parsed by Goldleaf
Goldleaf is 1080p now! Various relevant UI changes come in this release:
The color scheme is no longer randomly generated at startup: there is now a default blue light/dark color scheme (although you can still customize it yourself) along with the project's gold color
New icons are used everywhere (since I had to find new ones that had good resolutions)
Goldleaf's settings have (slightly) changed: setting names are (slightly) different now, and the color customization is done in a more organized way (check the README for all details)
The memory/space menu has been reorganized, taking up space in a more visually appealing way
Too-long texts are clamped now, so that they don't protrude outside their expected bounds
Now directory sizes are only computed if a setting (disabled by default) is enabled, since it lead to slowdowns when selecting large directories for other purposes.
When exporting/dumping contents, names containing invalid FS characters (":", "/" or "") are now replaced to avoid issues when creating the exported NSP.
Removed the old crash handling system, which worked half the time and made things annoying: crashes are handled like regular homebrew (with the usual system crash-screen), and detailed information about what caused the crash is logged in Goldleaf's log file
Icons are now internally shared resources (previously, for each menu item/place it was used, a new icon copy was loaded in memory), which should reduce the memory footprint and somewhat improve performance
Added confirmation dialogs to the power-off/reboot dialog, to avoid unwanted ZL/ZR presses causing unwanted shutdowns/reboots
Using the web browser is no longer allowed unless Goldleaf is launched as an application (since otherwise it won't work and just cause a crash)
Folders have now two different icons, visually distinguishing between empty and non-empty directories
Fixed a bug where the message after exporting ticket/cert was not shown at all (an empty, long box was only displayed)
The "image" menu icon is now shown also for PNG/WEBP images (even though they cannot be set as user icons)
Updated key generation recognition up to the latest 20.0.0/20.0.1 firmwares
For used tickets, the game title is displayed instead of the application ID on the ticket menu items (the ID can still be viewed by selecting a given ticket)
Added special handling when removing an account that is also linked (removing requires it to be unlinked first, this is now done automatically)
Added special result description messages for dedicated result codes (those with no previous description, or those where the base description was not really informative to users)
Fixed ETA calculation when copying directories (which would display nonsense when copying multiple small files) so that it displays somewhat coherent values
The user icon is exported again after changing it
A bug was fixed where logging wouldn't happen correctly in certain menus
Mounted filesystems are now properly disposed when exiting Goldleaf
Pressing Y when a file is focused in the file browser will also display its options (like pressing A, so Y results in the same behaviour for files and directories)
The previous content system has been completely replaced by a brand-new game list menu:
This no longer considers/lists NAND-System contents, as that was a mostly useless (and slow) feature
Slowness when loading contents has been reduced by using lazy-loading threaded code and caching many things
Games and their contents are directly browsed now, instead of having to choose storages
Useful information for debugging/dev purposes is displayed now as well (last record event and view flags)
Size computing is more simple and straightforward now
Save data mounting was fixed for games which use device savedata instead of per-user savedata (like Animal Crossing: New Horizons)
If no user was yet selected, trying to mount the save data will directly prompt to select a user, and mount it if succeeded
The tickets menu was moved to the main menu
The update menu was merged with the about menu: you can now check updates by pressing A on the about page
Fixed a dump replace-all bug where english strings would say "g_Clipboard" instead of "clipboard"
Ticket information now also shows the key generation version range (not only on NSP installation info)
Empty *.bin files can no longer be launched (or rather, Goldleaf attempting to launch them)
Made transitions and movement in menus slightly faster (for convenience) and with more icons/dedicated messages for each menu
The text viewer was slightly improved, allowing to also displace horizontally to read long lines, and only rendering the visible part of each line