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,
im having a problem on forwarders. like on duckstation. i already made a ini under config/sphaira, duckstation.ini but its not showing, it only shows the default retroarch libreto. and can you add supports to arcade and neogeo cd and the 3ds is also not working. tnx
 
im having a problem on forwarders. like on duckstation. i already made a ini under config/sphaira, duckstation.ini but its not showing, it only shows the default retroarch libreto. and can you add supports to arcade and neogeo cd and the 3ds is also not working. tnx
Post your duckstation ini here.

I thought I already added support for neogeo?

What's not working with the 3ds?
 
Post your duckstation ini here.

I thought I already added support for neogeo?

What's not working with the 3ds?


duckstation. ini

[config]
path=/switch/duckstation/duckstation.nro
supported_extensions=cue|bin|chd
database=Sony - Playstation



the .3ds is not recognize. nothing happened when i tried to press a, no prompt to install forwarders., same with neogeo cd.
 

Attachments

  • 1000045598.jpg
    1000045598.jpg
    78 KB · Views: 37
  • Screenshot_2025-06-26-22-03-03-814_com.mixplorer.silver-edit.jpg
    Screenshot_2025-06-26-22-03-03-814_com.mixplorer.silver-edit.jpg
    23.6 KB · Views: 36
  • Screenshot_2025-06-26-22-04-10-052_com.mixplorer.silver-edit.jpg
    Screenshot_2025-06-26-22-04-10-052_com.mixplorer.silver-edit.jpg
    24.1 KB · Views: 41
  • Screenshot_2025-06-26-22-03-53-790_com.mixplorer.silver-edit.jpg
    Screenshot_2025-06-26-22-03-53-790_com.mixplorer.silver-edit.jpg
    29 KB · Views: 42
duckstation. ini

[config]
path=/switch/duckstation/duckstation.nro
supported_extensions=cue|bin|chd
database=Sony - Playstation



the .3ds is not recognize. nothing happened when i tried to press a, no prompt to install forwarders., same with neogeo cd.
the database is slightly wrong, it should be `Sony - PlayStation`. I can add this assoc to sphaira for the next release.

there's no builtin 3ds assoc entry, so you'd have to add your own.

as for neocd, i followed retropie's folder layout, which groups neocd roms in the neogeo folder. i can add an alias for neocd however. for now tho, renaming the folder to neogeo should work.

2025062615500200-CB7BAB704ABB44157835D81424700503.jpg


EDIT: also, when creating assoc entries, you don't have to specify the path as long as the ini is the same as the nro.

eg: "duckstation.ini"
INI:
[config]
supported_extensions=cue|bin|chd
database=Sony - PlayStation
 
Last edited by Deleted member 413168,
tnx its now working. 3ds,neogeo cd, and psx. i really like this feature its so easy to make forwarder using your switch only. ive read that you can add custom image by just using same name of the file.? is that working?
and last, how the ftp work? i just enabled ftp, and just using my tablet i added the ip and port 5000.
 

Attachments

  • Screenshot_2025-06-27-10-55-40-198_com.mixplorer.silver-edit.jpg
    Screenshot_2025-06-27-10-55-40-198_com.mixplorer.silver-edit.jpg
    61.7 KB · Views: 50
Last edited by tehrzky,
tnx its now working. 3ds,neogeo cd, and psx. i really like this feature its so easy to make forwarder using your switch only. ive read that you can add custom image by just using same name of the file.? is that working?
and last, how the ftp work? i just enabled ftp, and just using my tablet i added the ip and port 5000.
It should just work. You can open the FTP install menu which will display the login info to make sure it is all correct
 
  • Like
Reactions: tehrzky
It should just work. You can open the FTP install menu which will display the login info to make sure it is all correct
its now working by downloading other ftp android app, idk why, my mixplorer doesnt work on this app. tnx anyway.
 
When I change the icon of an NRO when creating a forwarder, the icon on the home page keeps the old icon. The only way I found to make a forwarder appear with the new icon was to renaming the NRO or the folder it is in. Is there any way to install a forwarder that recognizes that the NRO has been changed?

On the PC, I change the icon of the NROs of the N64 Ports and emulators with nro-asset-editor-256.
Post automatically merged:

When I change the icon of an NRO when creating a forwarder, the icon on the home page keeps the old icon. The only way I found to make a forwarder appear with the new icon was to renaming the NRO or the folder it is in. Is there any way to install a forwarder that recognizes that the NRO has been changed?

On the PC, I change the icon of the NROs of the N64 Ports and emulators with nro-asset-editor-256.
 

Attachments

  • Arcade.jpg
    Arcade.jpg
    12.8 KB · Views: 37
  • Mario Kart 64.jpg
    Mario Kart 64.jpg
    23.6 KB · Views: 32
  • PerfectDark.jpg
    PerfectDark.jpg
    14.7 KB · Views: 33
  • PSP.jpg
    PSP.jpg
    12 KB · Views: 40
  • Star Fox 64.jpg
    Star Fox 64.jpg
    21.5 KB · Views: 35
  • SM64.jpg
    SM64.jpg
    21.8 KB · Views: 31
  • Like
Reactions: johw
When I change the icon of an NRO when creating a forwarder, the icon on the home page keeps the old icon. The only way I found to make a forwarder appear with the new icon was to renaming the NRO or the folder it is in. Is there any way to install a forwarder that recognizes that the NRO has been changed?

On the PC, I change the icon of the NROs of the N64 Ports and emulators with nro-asset-editor-256.
Post automatically merged:

When I change the icon of an NRO when creating a forwarder, the icon on the home page keeps the old icon. The only way I found to make a forwarder appear with the new icon was to renaming the NRO or the folder it is in. Is there any way to install a forwarder that recognizes that the NRO has been changed?

On the PC, I change the icon of the NROs of the N64 Ports and emulators with nro-asset-editor-256.
ns caches the nacp. I do invalidate the cache, but it doesn't seem to happen immediately.
 
  • Like
Reactions: AlanLC
I love Sphira so far.
I'm having trouble changing the bgmusic
I have tried converting some music files to .bfstm with https://github.com/libertyernie/LoopingAudioConverter
however when I try copying the files to config/sphira/themes and rename the file to default_music.bfstm however it just doesn't seem to play inside sphira.

I can confirm that downloading the default music from inside of sphira works perfectly.
 
I love Sphira so far.
I'm having trouble changing the bgmusic
I have tried converting some music files to .bfstm with https://github.com/libertyernie/LoopingAudioConverter
however when I try copying the files to config/sphira/themes and rename the file to default_music.bfstm however it just doesn't seem to play inside sphira.

I can confirm that downloading the default music from inside of sphira works perfectly.
I'm not sure why that tool doesn't work for you, I remember using it a few years ago and it worked fine. You can use https://kazuki-4ys.github.io/web_apps/mu-wave/ instead however.
 
  • Like
Reactions: Thorhax
I'm not sure why that tool doesn't work for you, I remember using it a few years ago and it worked fine. You can use https://kazuki-4ys.github.io/web_apps/mu-wave/ instead however.
Thank you, I tried it but still no luck.
The file I'm trying to use is music for the wii shop channel.

I have been copying into config\sphaira\themes and replacing the current default_music.bfstm with the converted wav file
 

Attachments

  • Like
Reactions: johw
Is there a way to debug file association not working? I tried with Vgedit and the SNES 9x LibRetro config, VGedit works fine with the associated files, but none of the SNES filetypes work. I have verified I have the correct path for the NRO.
 
Thank you, I tried it but still no luck.
The file I'm trying to use is music for the wii shop channel.

I have been copying into config\sphaira\themes and replacing the current default_music.bfstm with the converted wav file

config\sphaira\themes
follow this path and print the conversion
 

Attachments

  • Captura de Tela (88).png
    Captura de Tela (88).png
    21.7 KB · Views: 47
  • default_music.zip
    default_music.zip
    2.3 MB · Views: 24

Site & Scene News

Popular threads in this forum