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,
Since it seems Nintendo Switch online stores are gonna go offline in a year or two I really should hack my old model Switch already. Granted they will probably keep the online stores of Japan, the USA and Europe online for longer that two years but.. yeah.
 
oh, im sorry, i was using 0.1.0, i didn't know sphaira got an update lately,
i think it's fixed in 0.3.0, no crash now.

The format u showed is enough for ppl to translate into other lang,
i remember other devs used i18n to allow ppl from switching between different lang.
 
Install forwarder only appears if the NRO is appearing on the applications screen, the install forwarder option does not appear if you have to search for the NRO file
Post automatically merged:

NUMBER that is in a 3 folder does not appear on the main screen.
switch/pfbneo/pfbneo.nro appears on the main screen
switch/emu/pfbneo/pfbneo.nro does not appear on the main screen
i have fixed the bug where it doesnt show the install option.

as for the second issue, i am not sure how to go about this. sphaira and hbmenu only scan for .nro's within the "/switch" folder with a depth of 2, meaning that that "switch/pfbneo/pfbneo.nro" would be found and "switch/emu/pfbneo/pfbneo.nro" would not, so that is correct.
The reason for this design choice is for performance reasons. scanning with a depth of 3 means that it would spend a lot more time searching for files that simple will never be there - no released homebrew is structured as /switch/folder1/folder2/a.nro, as it wouldn't be found by hbmenu.

theres 3 ways to go about addressing this:
  1. place your homebrew in the correct folders ;)
  2. i could add a depth option to select how deep it would scan - personally not a fan of this as it would break compatibility with hbmenu and slow everything down.
  3. in the filebrowser, add an option that will add the nro to the homebrew list. this would mean you could have your nro in any folder anywhere on your sd card, and by adding it to the list, it would show up. To remove it, select it in homebrew menu and select Remove from list.
out of the 3, i like option 1 the most haha. But option 3 is okay as well, what do you think?
 
  • Like
Reactions: AlanLC
Apparently, I love this more than HB Menu and has make it my default HB channel. Fabulous app that leverage user experience.
 
  • Like
Reactions: MidTVU
Since it seems Nintendo Switch online stores are gonna go offline in a year or two I really should hack my old model Switch already. Granted they will probably keep the online stores of Japan, the USA and Europe online for longer that two years but.. yeah.
Considering backwards compatibility of software and game carts, I don't see any Switch 1 store infrastructure going away while the Switch 2 is supported. it's likely going to be the same set of services, even.
 
This is great, would be nice add a built in text editor if it’s not much complicated (I see text reader in not finished yet)
Also in file browser it doesn't display ".overlays", ".packages" folders, I think it's because the "." prefix
Sphaira really got me excited for some reason. It's really really cool. I'd like to second @cucholix request. Editing config files directly on the switch is such a nice quality of life feature to have. It would be awesome if it was built into Sphaira, if possible ❤️
 
if i delete it will it revert back to regular homebrew menu?
If you've enabled the option to replace the hbmenu disable it before, else take the file "hbmenu.nro" in the last Atmosphere's release and put it at SD root.

I've started a French translation but I think I can't finish it because for me it's realy difficult to read and test options so having the context to translate will be very difficult. If someone want to finish my work it's here:
https://github.com/ITotalJustice/sphaira/issues/2
 
I got a feature I've always wanted out of nx-hblauncher. Safe Mode. Basically, I've not been using sysCFW despite getting my switch modded mostly for it, because I'm afraid I'll forget what I'm booted to and would do something bannable (mostly concerned about installing NSPs).

Could Sphaira possibly detect being booted into something that'll connect to Nintendo (prodinfo is not blank for instance, plus config opt-in) and then only show homebrew I put on an explicit list and disable features like forwarders?
 
I got a feature I've always wanted out of nx-hblauncher. Safe Mode. Basically, I've not been using sysCFW despite getting my switch modded mostly for it, because I'm afraid I'll forget what I'm booted to and would do something bannable (mostly concerned about installing NSPs).

Could Sphaira possibly detect being booted into something that'll connect to Nintendo (prodinfo is not blank for instance, plus config opt-in) and then only show homebrew I put on an explicit list and disable features like forwarders?
The problem is that homebrews could always install NSPs, the best way to have this is to disable Sys-patch on Sysnand and to don't use sig_patches. But if you've already installed NSPs on sysnand it's too late if you've connected the console to Nintendo's server and if you don't you can try to reset the sysnand via Haku33 or you can restore your original nand dump if it's clean and delete the "Nintendo" folder on the SD.
 
God ive not touched my switchs in absolutely ages, no clue what the latest cfw state is for both dongle and modchips.

Used to just sit making cheat codes for sxos and here and even that, not sure what the progress has been on the cheat tools.
 
TLDR about DBI drama. He is annoyed about people asking for English that he threatened to add malware to his software if your Switch where in English, basically destroying your Switch.
I assume this is the rpcs3 devs' next move if people don't stop asking for an android version.
 
Considering backwards compatibility of software and game carts, I don't see any Switch 1 store infrastructure going away while the Switch 2 is supported. it's likely going to be the same set of services, even.

Considering how long support for the 3DS lasted I say we have at least 3 years of Switch support minimum left once the Switch 2 or whatever they name it launches.

Simply put with the Switch large install base, cutting support sooner than that just won't happen.
 
if i delete it will it revert back to regular homebrew menu?
if you've replaced it, then no. to revert it, disable the option to replace hbmenu on exit, and either manually copy the backed up copy of hbmenu from /switch/hbmenu.nro to /hbmenu.nro or download it from the appstore by pressing R to navigate to it.
 

Site & Scene News

Popular threads in this forum