Sphaira - hbmenu replacement

Sphaira is hbmenu alternative. It currently has feature parity with hbmenu (that is, launches homebrew + nxlink) whilst adding quite a few features.



HomeBrew​

The main menu tab, it lists all the .nro found in "/switch/". From there, you can launch, sort, delete, create a forwarder etc.
You can navigate to the other menu tabs using "L" and "R", explained below.

FileBrowser​

By pressing "L" from the main menu, you can access the file browser. You can Cut, Copy, Delete, Rename etc.
You can select multiple files / folders by using the "ZR" button and then se the above functions of that group of files.

Forwaders can be created if the selected file has a file assoc, see below for more details.

Appstore​

sphaira features an appstore, using the api from https://hb-app.store/switch. It can be navigated to by pressing "R" from the main menu.
The appstore is feature parity with hb-appstore app, as well as installing the manifests in the same folder as hb-appstore, in order to not break compatibility between the two.

Themes​

sphaira comes with 3 themes, abyss (default), black and white (unfinished).
custom themes can be added to "/config/sphaira/themes/", here is the abyss theme for example:
INI:
[meta]
name=Abyss
author=TotalJustice
version=1.0.0
; unused currently
preview=romfs:/theme/preview.jpg

[theme]
background=0x0f111aff
grid=0x0f115c30
selected=0x0f115cff
selected_overlay=0x529cffff
text=0xffbc41ff
text_selected=0x529cffff

icon_audio=romfs:/theme/icon_audio.png
icon_video=romfs:/theme/icon_video.png
icon_image=romfs:/theme/icon_image.png
icon_file=romfs:/theme/icon_file.png
icon_folder=romfs:/theme/icon_folder.png
icon_zip=romfs:/theme/icon_zip.png
icon_nro=romfs:/theme/icon_nro.png

music can be added to a theme, as long as the music is converted to bfstm format. simply add an entry like so: `music=/config/sphaira/themes/music/bgmusic_pcm.bfstm`

Forwaders​

sphaira can create and install forwarders for any .nro. It will use the icon of the .nro and the name + author.

It can also install forwarders for files that have a file assoc. For example, if mgba is installed and a game is located in "/roms/gba/game.gba", then the "Install Fowarder" option will appear. In this case, it will try to scrape the icon of the game, otherwise it will use the icon of the .nro and the name will be a combination of the .nro name and game name.

File Assoc​

file assoc is a way to associate file extensions (.gba, .nro etc) with a homebrew app. For example, clicking on rom.gbc that has an file assoc will bring up a list of all the applications that can handle it.
This can be used for emulators, media players, text editors etc...

custom file assoc should go in the folder "/config/sphaira/assoc/"

the format is *very* simple, here is an example of vgedit.ini
INI:
[config]
supported_extensions=txt|json|cfg|ini|md|log

and again for mgba.ini
INI:
[config]
supported_extensions=gba|gbc|sgb|gb
database=Nintendo - Game Boy|Nintendo - Game Boy Color|Nintendo - Game Boy Advance

"path": (optional) fullpath to the .nro. if not specified, it uses the name of the ini, ie, mgba.ini will use mgba.nro.
"supported_extensions": list of extensions the application supports, separated by |. plea
"database": (optional) name of the rom database to use defined by the left-side of this table <https://gist.github.com/ITotalJustice/d5e82ba601ca13b638af9b00e33a4a86>..

All of the retroarch cores has file assoc built into sphaira, so if you download retroarch using the appstore, and then navigate to "/roms/gbc/game.gbc", gambatte and mgba will be available to be selected.

Games can be kept in .zip format, sphaira will peek into the .zip and find the real extension and use that for displaying icons / file assoc.

Roms​

roms should be placed in "/roms/system_name/" where system name is defined by this table right-side entries <https://gist.github.com/ITotalJustice/d5e82ba601ca13b638af9b00e33a4a86>.
this is the same layout emulation station uses. the reason for forcing roms to be in specific folders is due to many roms for different systems using the same file extension, ie, .bin / .cue or .chd.

roms placed in subfolders are allowed, for example "/roms/psx/scooby-doo/scooby-doo.bin" is valid.

Themezer​

themes can be browsed and download by going Menu Options -> Misc -> Themezer. Themes will be downloaded to "/themes/sphaira/Theme Name - By Author/".
To install themes, launch "NXThemes Installer" and browse to the selected folder listed above.

Nxlink​

For homebrew developers, nxlink is built into sphaira. You do not have to press any special buttons, just do "nxlink *.nro" and send your nro like normal, console logging works to be using "nxlink -s *.nro"
By default, this is enabled in the background, to disable it: Menu Options -> Network -> Nxlink.



That's most of the features spahira has. If you enjoy it so much that you'd rather it be launched over regular hbmenu, you can enable the option in "Menu Options -> Replace hbmenu on exit" where it will do just that. It will create a backup of hbmenu in "/switch/hbmenu.nro" should you wish to swap back.
homebrew.jpg

games.jpg

appstore.jpg

appstore_page.jpg

file_browser.jpg

themezer.jpg

launch_options.jpg


Releases: https://github.com/ITotalJustice/sphaira/releases/
Bleeding-edge Releases: https://github.com/ITotalJustice/sphaira/actions
Source Code: https://github.com/ITotalJustice/sphaira
 
Last edited by Deleted member 413168,
”Sphaira lite is a smaller build of Sphaira with a lot of features disabled. I am providing it just in case people prefer / do not want these new features, but only want an up-to-date bug fix build.”
Well yeah, that's obvious. but what is actually different? What features are omitted?
 
  • Like
Reactions: Blythe93
ah I see, sorry I’m not at home right now so can’t try them out 🥺
yeah no worries, you don't have to do anything. I was just hoping that when adding a new variant he would actually explain the differences, so the user knows if they would rather use the regular one or if lite is actually enough for their needs

unless Lite is just the same build as 0.13.3 but with bug fixes, that's possible considering what he said but it's not 100% clear
 
  • Like
Reactions: Blythe93
I think it's just for extracting game's data, this is what devoptab is for - mapping some data format into virtual accessible paths.

I bet you need sysmodule to achieve what you think.
Ah I immediately thought it was too good to be true.

”Sphaira lite is a smaller build of Sphaira with a lot of features disabled. I am providing it just in case people prefer / do not want these new features, but only want an up-to-date bug fix build.”

Something that I always wonder is when you have so many things running on your Switch that are not supposed to be there such themes, different icons, overlays, etc does it affect the games performance in any way?
If the answer is a yes, how much performance are we talking here?
 
Something that I always wonder is when you have so many things running on your Switch that are not supposed to be there such themes, different icons, overlays, etc does it affect the games performance in any way?
If the answer is a yes, how much performance are we talking here?
Sphaira doesn't run in background, so no. The same with themes. Only thing that runs always in background are sysmodules (overlays are booted as part of nx-ovlloader sysmodule, so it counts there, but overlays are freezed if you don't see them).

It all depends on how well code is designed. It's very important to leverage proper sleep schedule and events to minimize code's impact on performance. Overlays don't have good performance because they don't leverage GPU for rendering, but this allows us to limit resources only to CPU Core 3 which minimizes impact on game's performance as long as overlay doesn't run bombastic effects at 60 FPS - that's why in Status Monitor I'm using framerate locks, at 60 FPS Full mode would take 1/4 of Core 3 stock power for itself which is huge, by default it runs at 1 FPS but personally I'm using 2 FPS).
 
Last edited by masagrator,
  • Like
Reactions: Blythe93 and Tyvar1
I tried to use MTP to install a file. It says "please launch mtp install menu before trying to install" Anybody know anything about that? Can't find any documentation that points me to an MTP install menu, aside from Install options, which obviously isn't it because it still gives the error.
 
I tried to use MTP to install a file. It says "please launch mtp install menu before trying to install" Anybody know anything about that? Can't find any documentation that points me to an MTP install menu, aside from Install options, which obviously isn't it because it still gives the error.
yes, the interface is extremely not intuitive. when install for sysmmc or emummc is enabled (depending on which you are using), you're able to press Y, and under Misc you find ftp install and mtp install menus

in 1.0.0 he makes the menu options always visible even when the install for sysmmc/emummc is disabled, but it's still extremely hidden in button menus that you need to dig through. I dont understand why it cant just always work without having to open a specific menu. or make that menu easier to access and more obvious for when you need it if large transfers like this really cant just work in the background without opening a specific menu first
 
  • Like
Reactions: laz305
It hasn't become paid, this is only for the "beta" branch and for people who want to support him. When everything is working out as intended he will release it on Github.
I believe that in the future maybe I will make a donation to him because sphaira is comfortable
 
  • Like
Reactions: HenryBaby
yes, the interface is extremely not intuitive. when install for sysmmc or emummc is enabled (depending on which you are using), you're able to press Y, and under Misc you find ftp install and mtp install menus

in 1.0.0 he makes the menu options always visible even when the install for sysmmc/emummc is disabled, but it's still extremely hidden in button menus that you need to dig through. I dont understand why it cant just always work without having to open a specific menu. or make that menu easier to access and more obvious for when you need it if large transfers like this really cant just work in the background without opening a specific menu first

Have you discussed this on the Patreon to see if he'd be willing to make some of these changes?
 
  • Like
Reactions: Blythe93
you have to be a paid member to post comments

Yeah. I thought you had v1.0 but reading back it looks like you just built from public repo and got info from EA release notes. Probably worth the $1 just to make the suggestion.

Edit: Changelog for EA2 that was released a day after your comment here included Rename the "Misc" option to "Menus" and re-order it so that it is at the top of the options, making it easier to access.
Post automatically merged:

yeah no worries, you don't have to do anything. I was just hoping that when adding a new variant he would actually explain the differences, so the user knows if they would rather use the regular one or if lite is actually enough for their needs

unless Lite is just the same build as 0.13.3 but with bug fixes, that's possible considering what he said but it's not 100% clear

It's like you said. It's bug fix release with none of the new features that were added to V1.0
 
Last edited by Earthshine,
wow how am I just learning about this? Wow this is a way better HB Menu. But how about a better name HackerMenu lol ok so how do we use this to install games? and create forwarders?
 
  • Like
Reactions: Blythe93
ok so how do we use this to install games? and create forwarders?
I wanted to give those two options a try but I can't seem to find them anywhere. There's no "install forwarder" option under homebrew options nor there's a MTP install under Misc. Using the latest publicly available release, 0.13.3.

EDIT: Figured it out, I had to enable emuMMC in Install Options. Took me a while to figure out that might be a culprit. :D Only then those two options will appear.
 
Last edited by Blythe93,
  • Like
Reactions: laz305
I wanted to give those two options a try but I can't seem to find them anywhere. There's no "install forwarder" option under homebrew options nor there's a MTP install under Misc. Using the latest publicly available release, 0.13.3.
Did you enable mtp in the network menu first, as per the readme?
 
  • Like
Reactions: Blythe93

Site & Scene News

Popular threads in this forum