Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Goldleaf Switch: Difference between revisions

From GameBrew
No edit summary
 
(5 intermediate revisions by the same user not shown)
Line 4: Line 4:
|description=Multipurpose homebrew tool for Nintendo Switch.
|description=Multipurpose homebrew tool for Nintendo Switch.
|author=XorTroll
|author=XorTroll
|lastupdated=2023/04/09
|lastupdated=2023/08/20
|type=Utilities
|type=Utilities
|version=0.10.1
|version=1.0.0
|license=GPL-3.0
|license=GPL-3.0
|download=https://dlhb.gamebrew.org/switchhomebrews/goldleafnx.7z
|download=https://dlhb.gamebrew.org/switchhomebrews/goldleafnx.7z
Line 16: Line 16:


It has a very similar concept to [[FBI 3DS|FBI]], which is a similar tool for Nintendo 3DS homebrew.
It has a very similar concept to [[FBI 3DS|FBI]], which is a similar tool for Nintendo 3DS homebrew.
The homebrew was entered into the GBAtemp Switch Homebrew Bounty 2018 (Switch application).


==Features==
==Features==
*'''Content explorer''' - An easy-to-use but fully featured filesystem browser.
* '''Content Explorer:'''
**Supported locations/devices:
** Fully featured filesystem browser.
***SD card.
** Supports various locations/devices including SD card, console memory, remote systems, USB drives, Game savedata, and NRO homebrew RomFs.
***Console memory (SAVE, SYSTEM, USER and PRODINFOF partitions).
** Basic file and directory operations (create, delete, copy, rename, etc.).
***Remote systems (via remote tools like Quark).
** Install NSP packages of applications, games, updates, DLC, etc.
***USB drives (thanks to libusbhsfs).
** Launch other NRO homebrews and mount their RomFs.
***Game savedata (check below how to mount it).
** Execute .bin files as RCM payloads.
***Note: game savedata will be automatically unmounted when Goldleaf is exited.
** Set JPG/JPEG files as user icons.
**Features:
** Content information view, uninstallation, export to NSP, and more.
***Basic file operations: create, delete, copy, rename, view as hex/text, get size, etc.
* '''Content Manager:'''
***Basic directory operations: create, delete, copy, rename, (un)set archive bit, get full size, etc.
** Manage content such as programs, updates, DLC, etc.
***Install NSP packages as applications/games, updates, etc. (Note: use this carefully and make sure you know what you're doing).
** View content information, uninstall content, export existing contents to NSP, and more.
***Launch other NRO homebrews.
** Mount savedata to navigate (check the Content explorer above).
***Execute .bin files as RCM payloads.
** Remove tickets, reset launch version, check unused tickets (use with caution), and more.
***Set JPG/JPEG files as user icons (Note: use this carefully and make sure you know what you're doing).
* '''Web Browser (when launched as app):'''
*'''Content manager''' - An easy-to-use but fully featured content manager:
** Make use of the console's web applet.
**Basic content (application/title, update, DLC, etc.) operations:
** Browse user-submitted URLs.
***View content information (ID, size, version, play stats...).
** Create and save bookmarks.
***Uninstall/completely remove the content (won't remove savedata).
* '''Account Manager:'''
***Export to NSP package.
** Manage user accounts.
***Mount savedata to navigate it (check the Content explorer above).
** Change nickname, view icon, delete user (if more than one exists).
***Remove ticket if present (Note: use this carefully and make sure you know what you're doing).
** Note: to change the user's icon, check the Content explorer above.
***Reset launch version (useful to be able to play a base game after an update has been removed).
* '''Amiibo Dump:'''
***Note: some of this operations are not available with system titles or gamecart titles.
** Create a virtual amiibo for emuiibo from a real amiibo figurine.
***Check unused tickets, and remove them (Note: use this carefully and make sure you know what you're doing).
* '''Settings:'''
*'''Web browser''' - Makes use of the console's web applet:
** Check system and Goldleaf settings.
***Browse user-submitted URLs.
** Firmware and updates information.
***Create and save bookmarks.
** Memory status (free and total space on different locations).
*'''Account manager''' - Select a user (or uses the selected one) and manage it:
** Goldleaf settings from settings.json.
**Change nickname.
* '''Updates:''' Check for Goldleaf updates.
**Delete user (only if there is more than one in the system).
* '''About:''' check Goldleaf's version and how it was launched (as an applet or an application)
**Note: to change the user's icon, check the Content explorer above.
* '''Language Support:''' Goldleaf has been translated into 11 different languages, including English, Spanish, German, French, Italian, Dutch, Japanese, Portuguese, Korean, traditional Chinese, and simplified Chinese.
*'''Amiibo dump''' - Create a virtual amiibo (for emuiibo) from a real amiibo figure.
*'''Settings''' - Check both system and Goldleaf settings:
**Firmware and updates:
***Check current firmware information (version, hash, key generation)
***Check for pending updates, and remove them if present
***Export current firmware or pending update data
**Memory: check free and total space on different locations
**Goldleaf settings: check settings present in settings.json
*'''Updates''' - check for latest Goldleaf updates, and if a new release is out, update to it
*'''About''' - check Goldleaf's version and how it was launched (as an applet or an application)
*Goldleaf currently supports 8 different languages: English, Spanish, German, French, Italian, Dutch, Japanese, Portuguese and simplified Chinese.


==User guide==
==User guide==
Line 77: Line 68:
Quark is a PC tool, with a fancy UI and made in Java, in order to help Goldleaf with the remote PC option. It supports Windows, Linux and Mac.
Quark is a PC tool, with a fancy UI and made in Java, in order to help Goldleaf with the remote PC option. It supports Windows, Linux and Mac.


For details about how to properly setup Quark and USB, check this [https://github.com/XorTroll/Goldleaf/blob/master/Quark.md small guide].
Quark needs Java 9 or greater to run, check the [https://github.com/XorTroll/Goldleaf/blob/master/README.md#quark-and-remote-browsing guide on readme].


===Settings===
===Settings===
Goldleaf supports the customization of colors, assets and other options via a JSON file located at Goldleaf's folder: <code>sd:/switch/Goldleaf/settings.json</code>.
Goldleaf supports the customization of colors, assets and other options via a JSON file located at Goldleaf's folder: <code>sd:/switch/Goldleaf/settings.json</code>.


====Sample====
=====Sample=====
This is an example JSON for Goldleaf settings:
This is an example JSON for Goldleaf settings:
<pre>
 
{
<pre class="language-json">{
     "general": {
     &quot;general&quot;: {
         "customLanguage": "es",
         &quot;customLanguage&quot;: &quot;es&quot;,
         "externalRomFs": "/switch/Goldleaf/theme/rom"
         &quot;externalRomFs&quot;: &quot;/switch/Goldleaf/theme/rom&quot;,
        &quot;use12hTime&quot;: true
     },
     },
     "ui": {
     &quot;ui&quot;: {
         "background": "#aabbccdd",
         &quot;background&quot;: &quot;#aabbccdd&quot;,
         "base": "#aabbccdd",
         &quot;base&quot;: &quot;#aabbccdd&quot;,
         "baseFocus": "#aabbccdd",
         &quot;baseFocus&quot;: &quot;#aabbccdd&quot;,
         "text": "#aabbccdd",
         &quot;text&quot;: &quot;#aabbccdd&quot;,
         "menuItemSize": 80
         &quot;menuItemSize&quot;: 80
     },
     },
     "installs": {
     &quot;installs&quot;: {
         "ignoreRequiredFwVersion": false
         &quot;ignoreRequiredFwVersion&quot;: false,
        &quot;copyBufferMaxSize&quot;: 10485760
     },
     },
     "web": {
     &quot;export&quot;: {
         "bookmarks": [
        &quot;decryptBufferMaxSize&quot;: 10485760
    },
    &quot;web&quot;: {
         &quot;bookmarks&quot;: [
             {
             {
                 "name": "Google",
                 &quot;name&quot;: &quot;Google&quot;,
                 "url": "https://www.google.com"
                 &quot;url&quot;: &quot;https://www.google.com&quot;
             },
             },
             {
             {
                 "name": "GitHub",
                 &quot;name&quot;: &quot;GitHub&quot;,
                 "url": "https://www.github.com"
                 &quot;url&quot;: &quot;https://www.github.com&quot;
             }
             }
         ]
         ]
Line 114: Line 110:
}
}
</pre>
</pre>
If a certain attribute isn't present Goldleaf will use default values. For colors, Goldleaf will initially load default light/dark themes according to the console's theme color, and later, colors present in the JSON will be used instead of default theme ones.
If a certain attribute isn't present Goldleaf will use default values. For colors, Goldleaf will initially load default light/dark themes according to the console's theme color, and later, colors present in the JSON will be used instead of default theme ones.


====Notes====
=====Notes=====
Via RomFs replacement, when Goldleaf tries to locate, for instance, <code>romfs:/FileSystem/FileDataFont.ttf</code> resource font, if <code>romfsReplace</code> is true and <code>romfsReplacePath</code> is, for instance, <code>/switch/Goldleaf/testromfs</code>, Goldleaf will look if <code>sd:/switch/Goldleaf/testromfs/FileSystem/FileDataFont.ttf</code> exists and use it if so, otherwise will use RomFs's one.
Via RomFs replacement, when Goldleaf tries to locate, for instance, <code>romfs:/FileSystem/FileDataFont.ttf</code> resource font, if <code>romfsReplace</code> is true and <code>romfsReplacePath</code> is, for instance, <code>/switch/Goldleaf/testromfs</code>, Goldleaf will look if <code>sd:/switch/Goldleaf/testromfs/FileSystem/FileDataFont.ttf</code> exists and use it if so, otherwise will use RomFs's one.


So, via this configurations, UI's images, resources, element sizes and even translations (using custom JSON translations) can be used, plus some more assets which will be added in future updates.
So, via this configurations, UI's images, resources, element sizes and even translations (using custom JSON translations) can be used, plus some more assets which will be added in future updates.
==Screenshots==
https://dlhb.gamebrew.org/switchhomebrews/goldleafnx2.png
https://dlhb.gamebrew.org/switchhomebrews/goldleafnx3.png
https://dlhb.gamebrew.org/switchhomebrews/goldleafnx4.png
https://dlhb.gamebrew.org/switchhomebrews/goldleafnx5.png
https://dlhb.gamebrew.org/switchhomebrews/goldleafnx6.png
https://dlhb.gamebrew.org/switchhomebrews/goldleafnx7.png
https://dlhb.gamebrew.org/switchhomebrews/goldleafnx8.png
https://dlhb.gamebrew.org/switchhomebrews/goldleafnx9.png


==Controls==
==Controls==
Line 151: Line 134:


Y - Select folder (might take some time with folders with many sub-items)
Y - Select folder (might take some time with folders with many sub-items)
==Screenshots==
https://dlhb.gamebrew.org/switchhomebrews/goldleafnx2.png
https://dlhb.gamebrew.org/switchhomebrews/goldleafnx3.png
https://dlhb.gamebrew.org/switchhomebrews/goldleafnx4.png
https://dlhb.gamebrew.org/switchhomebrews/goldleafnx5.png
https://dlhb.gamebrew.org/switchhomebrews/goldleafnx6.png
https://dlhb.gamebrew.org/switchhomebrews/goldleafnx7.png
https://dlhb.gamebrew.org/switchhomebrews/goldleafnx8.png
https://dlhb.gamebrew.org/switchhomebrews/goldleafnx9.png


==Known issues==
==Known issues==
Line 156: Line 153:
* Apparently, after browsing (more than 4 directories?) and then browsing (specific?) empty directories crashes Goldleaf. This issue is strangely common and needs to be looked into.
* Apparently, after browsing (more than 4 directories?) and then browsing (specific?) empty directories crashes Goldleaf. This issue is strangely common and needs to be looked into.


==Changelog==  
==Changelog==
'''v1.0.0 2023/08/20'''
*General
**Some minor rewrites (in a probably unnoticeable way) improved the internals of the project
**As always, all libraries were updated to their latest versions
*Goldleaf
**NSP installs have been (finally) made multithreaded - I've personally noticed up to 25% faster install times, but this speedups might be even greater ;)
**Proper support for multi-program titles was added (for installing, browsing and exporting them correctly)
**Switched to an alternative result system via arc, so that now more system results have proper names/descriptions for more readability
**Improved various internal parts via caching or general optimizations
**Added support to check titles with no data (archived content, gamecard titles without the gamecard inserted, actually corrupted content, etc.)
**Extended keyboard support, now supporting other kinds of characters (particularly fixed support for account renaming)
**Fixed an annoying ticket/cert exporting bug which caused invalid NSP exports being generated
**Now one can mount and explore homebrew NROs' RomFs
**Updated some language translations (thanks a lot to all the people who frequently help with that <3)
**Added support for 12h/24h time display and configuration
**Support for NXThemes was removed
**Added a setting to allow custom NSP installation copy buffer sizes
**Slightly improved random UI color generation
**Fixed menu scrollbars behaving incorrectly in menus with too many items
**Fixed a bug where one could exit Goldleaf in the middle of installing NSPs, copying files, etc.
**Improved the file/directory copy menu and content export menu UIs
**Added a setting to disable showing hidden files/directories (those starting by '.' in their name)
**Now showing a deletion dialog after a NSP install is disabled by default, and a setting was added to enable/disable it
*Quark
**Fixed a bug where, when successfully reconnecting to Goldleaf after a connection loss, Quark would regardless close
 
'''v.0.10.1 2023/04/09'''
'''v.0.10.1 2023/04/09'''
*General:
*General:
Line 193: Line 216:
* GitHub - https://github.com/XorTroll/Goldleaf
* GitHub - https://github.com/XorTroll/Goldleaf
* GBAtemp - https://gbatemp.net/threads/goldleaf-a-nintendo-switch-multipurpose-homebrew-tool.527578/
* GBAtemp - https://gbatemp.net/threads/goldleaf-a-nintendo-switch-multipurpose-homebrew-tool.527578/
[[Category:GBAtemp Homebrew Bounty 2018]]

Latest revision as of 12:59, 4 Haziran 2024

Goldleaf
Goldleafnx.png
General
AuthorXorTroll
TypeUtilities
Version1.0.0
LicenseGPL-3.0
Last Updated2023/08/20
Links
Download
Website
Source
Support Author

Goldleaf is multipurpose homebrew tool for Nintendo Switch, originated from NSPower.

It has a very similar concept to FBI, which is a similar tool for Nintendo 3DS homebrew.

The homebrew was entered into the GBAtemp Switch Homebrew Bounty 2018 (Switch application).

Features

  • Content Explorer:
    • Fully featured filesystem browser.
    • Supports various locations/devices including SD card, console memory, remote systems, USB drives, Game savedata, and NRO homebrew RomFs.
    • Basic file and directory operations (create, delete, copy, rename, etc.).
    • Install NSP packages of applications, games, updates, DLC, etc.
    • Launch other NRO homebrews and mount their RomFs.
    • Execute .bin files as RCM payloads.
    • Set JPG/JPEG files as user icons.
    • Content information view, uninstallation, export to NSP, and more.
  • Content Manager:
    • Manage content such as programs, updates, DLC, etc.
    • View content information, uninstall content, export existing contents to NSP, and more.
    • Mount savedata to navigate (check the Content explorer above).
    • Remove tickets, reset launch version, check unused tickets (use with caution), and more.
  • Web Browser (when launched as app):
    • Make use of the console's web applet.
    • Browse user-submitted URLs.
    • Create and save bookmarks.
  • Account Manager:
    • Manage user accounts.
    • Change nickname, view icon, delete user (if more than one exists).
    • Note: to change the user's icon, check the Content explorer above.
  • Amiibo Dump:
    • Create a virtual amiibo for emuiibo from a real amiibo figurine.
  • Settings:
    • Check system and Goldleaf settings.
    • Firmware and updates information.
    • Memory status (free and total space on different locations).
    • Goldleaf settings from settings.json.
  • Updates: Check for Goldleaf updates.
  • About: check Goldleaf's version and how it was launched (as an applet or an application)
  • Language Support: Goldleaf has been translated into 11 different languages, including English, Spanish, German, French, Italian, Dutch, Japanese, Portuguese, Korean, traditional Chinese, and simplified Chinese.

User guide

Disclaimer

Installing NSP Packages

Always keep in mind that installing NSP packages increase your risk of getting banned from online services. If you use airplane mode and special DNSs like 90DNS, there is a smaller chance to get banned.

Never install NSPs from untrusted sources, as Goldleaf doesn't perform any special verification, so please be very careful about installing untrusted packages.

Understanding Tickets

Tickets serve as proof of purchase for games. Without a ticket, you won't be able to launch a game that requires it (official titles require them). NSP packages which don't have (nor require) a ticket are standard-crypto.

Goldleaf will indicate whether a ticket is present for a title and its corresponding titlekey. You need the titlekey to decrypt and access the game's content. Without it, the game is undecryptable and cannot be launched on your device.

Quark and remote browsing

Quark is a PC tool, with a fancy UI and made in Java, in order to help Goldleaf with the remote PC option. It supports Windows, Linux and Mac.

Quark needs Java 9 or greater to run, check the guide on readme.

Settings

Goldleaf supports the customization of colors, assets and other options via a JSON file located at Goldleaf's folder: sd:/switch/Goldleaf/settings.json.

Sample

This is an example JSON for Goldleaf settings:

{
    "general": {
        "customLanguage": "es",
        "externalRomFs": "/switch/Goldleaf/theme/rom",
        "use12hTime": true
    },
    "ui": {
        "background": "#aabbccdd",
        "base": "#aabbccdd",
        "baseFocus": "#aabbccdd",
        "text": "#aabbccdd",
        "menuItemSize": 80
    },
    "installs": {
        "ignoreRequiredFwVersion": false,
        "copyBufferMaxSize": 10485760
    },
    "export": {
        "decryptBufferMaxSize": 10485760
    },
    "web": {
        "bookmarks": [
            {
                "name": "Google",
                "url": "https://www.google.com"
            },
            {
                "name": "GitHub",
                "url": "https://www.github.com"
            }
        ]
    }
}

If a certain attribute isn't present Goldleaf will use default values. For colors, Goldleaf will initially load default light/dark themes according to the console's theme color, and later, colors present in the JSON will be used instead of default theme ones.

Notes

Via RomFs replacement, when Goldleaf tries to locate, for instance, romfs:/FileSystem/FileDataFont.ttf resource font, if romfsReplace is true and romfsReplacePath is, for instance, /switch/Goldleaf/testromfs, Goldleaf will look if sd:/switch/Goldleaf/testromfs/FileSystem/FileDataFont.ttf exists and use it if so, otherwise will use RomFs's one.

So, via this configurations, UI's images, resources, element sizes and even translations (using custom JSON translations) can be used, plus some more assets which will be added in future updates.

Controls

Common:

LR Stick or R Stick or D-Pad - Move through the current menu

ZL/ZR - Show a dialog to shut down or reboot the console

Minus - Show a dialog with this control information

Plus - Exit the application in order to return to hbmenu

Content explorer:

X - Unmount the selected location (only when a savedata location is selected)

Y - Select folder (might take some time with folders with many sub-items)

Screenshots

goldleafnx2.png goldleafnx3.png

goldleafnx4.png goldleafnx5.png

goldleafnx6.png goldleafnx7.png

goldleafnx8.png

goldleafnx9.png

Known issues

  • Exiting Goldleaf via HOME menu (as a NRO) seems to crash the system on 7.x firmwares due to a weird USB bug present on those specific versions. Any non-7.x firmware doesn't have this issue.
  • Apparently, after browsing (more than 4 directories?) and then browsing (specific?) empty directories crashes Goldleaf. This issue is strangely common and needs to be looked into.

Changelog

v1.0.0 2023/08/20

  • General
    • Some minor rewrites (in a probably unnoticeable way) improved the internals of the project
    • As always, all libraries were updated to their latest versions
  • Goldleaf
    • NSP installs have been (finally) made multithreaded - I've personally noticed up to 25% faster install times, but this speedups might be even greater ;)
    • Proper support for multi-program titles was added (for installing, browsing and exporting them correctly)
    • Switched to an alternative result system via arc, so that now more system results have proper names/descriptions for more readability
    • Improved various internal parts via caching or general optimizations
    • Added support to check titles with no data (archived content, gamecard titles without the gamecard inserted, actually corrupted content, etc.)
    • Extended keyboard support, now supporting other kinds of characters (particularly fixed support for account renaming)
    • Fixed an annoying ticket/cert exporting bug which caused invalid NSP exports being generated
    • Now one can mount and explore homebrew NROs' RomFs
    • Updated some language translations (thanks a lot to all the people who frequently help with that <3)
    • Added support for 12h/24h time display and configuration
    • Support for NXThemes was removed
    • Added a setting to allow custom NSP installation copy buffer sizes
    • Slightly improved random UI color generation
    • Fixed menu scrollbars behaving incorrectly in menus with too many items
    • Fixed a bug where one could exit Goldleaf in the middle of installing NSPs, copying files, etc.
    • Improved the file/directory copy menu and content export menu UIs
    • Added a setting to disable showing hidden files/directories (those starting by '.' in their name)
    • Now showing a deletion dialog after a NSP install is disabled by default, and a setting was added to enable/disable it
  • Quark
    • Fixed a bug where, when successfully reconnecting to Goldleaf after a connection loss, Quark would regardless close

v.0.10.1 2023/04/09

  • General:
    • Updated with latest libnx, correctly supporting up to 16.0.1 firmwares.
  • Goldleaf:
    • Fixed a bug where the location of multiple NSP installs would be incorrectly selected.
    • Content menu navigation was improved (exiting doesn't suddenly go back to the main menu, etc.)
    • Added support for Traditional Chinese.
    • Updated key generation information (for latest system versions).
    • Content menu options are properly set now: gamecard contents have proper options now, and other fixes/improvements in option code.
    • Dumping is now referred to as exporting, and exported contents now go inside /export instead of /dump.
    • Added menu for Goldleaf's own settings, currently only supporting selecting custom language support and ignoring required firmware versions on content installs.
    • Amiibo dumping has been improved, now allowing to dump the amiibo's application area (game savedata) if it exists, and its mii in the legacy 3DS format.
    • Redesigned ticket menu (now all tickets, even used ones, are shown), added support for exporting them.
    • Fixed a bug where cancelling URL text input when browsing a web page would attempt to open the web browser anyway.
    • Added support for language-specific icons in NSP installs, so that now Goldleaf attempts to find and show the icon corresponding to Goldleaf's language (which is by default the system language).
    • Fixed invalid/nonsense "game played since" values.
  • Quark:
    • From now on, Quack and Goldleaf will follow the same version numbering: this will thus be less confusing from now on. Therefore, Quark jumps from 0.5 to 0.10.1 in this release.
  • (No other changes here).

Credits

The main concepts of Goldleaf are and have been developed by XorTroll, but without the effort and support of many others, this project wouldn't have been a thing:

  • Adubbz and all the (old) Tinfoil contributors, for their huge work with title installing.
  • C4Phoenix, for his awesome work doing this project's logo, and the GIF displayed when launching the installed forwarder.
  • All the graphics except Goldleaf's logo (see credit above) were grabbed from Icons8.
  • 2767mr, for all the support given in Goldtree (former Quark tool).
  • developer.su for NS-USBloader, which helped a lot on the development of Quark, mainly on the usage of usb4java and the base of a multi-platform JavaFX Java project.
  • Simon for his libusbK implementation for C#, which has made Goldtree client possible.
  • shchmue for the system to get tickets from system save data without breaking anything, found in Lockpick.
  • WerWolv for the help with custom exception handling, avoiding those frustrating fatals.
  • Translators: unbranched and exelix for Italian, tiliarou, FuryBaguette and GOffrier#9688 for French, and LoOkYe and C4Phoenix for German.
  • All the testers, for reporting bugs and helping a lot with the project's development.

External links

Advertising: