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,
I just log in just to thank you again for all the work! Now I can get rid of DBI all together it’s so awesome!!!! Love a the first eye with the new save manager <3
Post automatically merged:

I just log in just to thank you again for all the work! Now I can get rid of DBI all together it’s so awesome!!!! Love a the first eye with the new save manager <3
 
Last edited by SpaceCat,
Hello,

I have just installed Sphaira for the first time, version 0.12
I am now trying to add forwarder to some homebrew app. Unfortunately I can't find an entry anywhere on how to add forwarder to a .nro file.
What am I doing wrong?
I try via the menu (y) then via extras (misc) or via Advanced. but I can't find a way to activate a forwader. There is no menu item.

Thanks for any help!

I'm on actual Atmosphere and Hekate. Emummc Firmware 19.0.0
 
Hello,

I have just installed Sphaira for the first time, version 0.12
I am now trying to add forwarder to some homebrew app. Unfortunately I can't find an entry anywhere on how to add forwarder to a .nro file.
What am I doing wrong?
I try via the menu (y) then via extras (misc) or via Advanced. but I can't find a way to activate a forwader. There is no menu item.

Thanks for any help!
You first have to enable installation.
Menu > Advanced > Install options > Enable sysmmc/emummc
 
Hello @TotalJustice , has the option to install a forwarder been removed after the 0.12 update? Thanks
No, but note whether you are in emuMMC or sysMMC. Because the install function may be disabled for this: Menu -> Advanced -> Install options -> Enable sysmmc
Post automatically merged:

how to run none applet mode (i replace hbmenu with sphaira but it allways run in applet mode)
You should put cursor on any game, then press R key (don't release until the menu is fully open) and press A key. Or you can install forwader for this, but only if you are in emuMMC. How are you trying to run it?
 

Attachments

  • 2025061315293200-91C78198891F7BDDCEB1685BA4827A23.jpg
    2025061315293200-91C78198891F7BDDCEB1685BA4827A23.jpg
    96.5 KB · Views: 50
Last edited by zanytofu,
You should put cursor on any game, then press R key (don't release until the menu is fully open) and press A key. Or you can install forwader for this, but only if you are in emuMMC. How are you trying to run it?
I am on emummc, can i create the forwarder with sphaira?
 
I am on emummc, can i create the forwarder with sphaira?
open sphaira in applet mode, in main menu put cursor on sphaira nro then press X -> Install forwarder. Now you should see sphaira in game list on switch main menu. So this will now open in title mode instead of applet
 
How to provide logs for webdav function.
I tried many times and made mistakes. Has anyone succeeded?
 
How to provide logs for webdav function.
I tried many times and made mistakes. Has anyone succeeded?
What do you mean? You use webdav url for dump function and you get an error. But you don't see the logs even if logging is enabled right?

I just don't see any function for webdav other than dump :unsure:
Post automatically merged:

just try enabling logging again Menu -> Advanced -> Logging and restart sphaira. Then try using webdav again. Turn logging off. After that you should get the log file here: sdmc:/config/sphaira/log.txt
 
Last edited by zanytofu,
I have a suggestion for backing up saves, would it be possible to direct the dumps folder to this path?
config/sphaira/dumps

It's easier to save the sphaira folder with my custom files.
 
Version 0.13.3 it out!

Bug fixes:
  • fixed rare crash when closing the appstore.
  • fixed gc menu not being able to select "Back" whilst a gamecard is not inserted.
  • fixed themezer theme download crash when downloading certain themes that had % in their file name.
  • fixed hdd freeze when doing hdd->hdd copy, zip or unzip due to a deadlock bug in usbhsfs (will be fixed upstream soon).
  • fixed not deleting save before restoring, which could result in stale files being leftover.
  • fixed es ticket struct being the wrong size, this could result in failed installs.
  • fixed the filebrowser not displaying the correct current mount fs when translations were enabled.
  • fixed filebrowser split screen button not working.
  • fixed tik/cert files being placed at the beginning of the nsp when dumped, they're now placed at the end of the file list, following standardNSP.
  • Fixed potential deadlock if an invalid jpeg was loading with nvjpg (thanks to Dark_Iron_X for reporting and helping fix the bug).
  • Fixed flashcart detection in the GameCard menu.
  • Fixed account save listing where the profile uid differs from the account uid.
What's Changed:
  • added save backup / restore to USB.
  • homebrew refreshes itself when an app is installed / removed from the appstore, as well as downloading via ghdl.
  • added support for all save types (system, bcat, cache, device).
  • added more descriptive error messages for internal sphaira errors.
  • enable boost mode as early as possible during init.
  • added mtp custom mount support (sd card, image sd/nand, install, speed test).
  • use the real save timestamp when creating a save zip backup.
  • added common ticket patching if the ticket has been modified. this is applied during install and game dumping.
  • added personalised -> common ticket convert option for installing.
  • lots of translation patches, thank you again to everyone helping to improve sphaira!

2025061911091800-CB7BAB704ABB44157835D81424700503.jpg

2025061911271000-CB7BAB704ABB44157835D81424700503.jpg

2025061911262700-CB7BAB704ABB44157835D81424700503.jpg

2025061911274000-CB7BAB704ABB44157835D81424700503.jpg
 
So... I should be able to replace hbmenu with it? Like I push album and instead of htmenu sphaira appears?
Yeah. Download and launch sphaira as normal, then press (Y -> Advanced -> Replace hbmenu on exit = On).

This will create a copy of hbmenu.nro to /switch/hbmenu.nro and then replace it with sphaira. If you ever want to return back to using normal hbmenu instead, do the same as above but select "Off". This will ask you if you want to restore hbmenu.
 
So... I should be able to replace hbmenu with it? Like I push album and instead of htmenu sphaira appears?
Yeah. Download and launch sphaira as normal, then press (Y -> Advanced -> Replace hbmenu on exit = On).

This will create a copy of hbmenu.nro to /switch/hbmenu.nro and then replace it with sphaira. If you ever want to return back to using normal hbmenu instead, do the same as above but select "Off". This will ask you if you want to restore hbmenu.
Cool. I thought I'll to shuffle things around manually.
 
Wow, ftp install here is much faster than dbi. A bit intuitive to use tho. I thought just dropping files to 'install:' folder is fine, but actually you need to open install dialogue in sphaira, only than just dropping files to 'install:'
 

Site & Scene News

Popular threads in this forum