{"id":20137106,"url":"https://github.com/devkitpro/3ds-hbmenu","last_synced_at":"2025-05-16T13:03:27.387Z","repository":{"id":37238724,"uuid":"93349197","full_name":"devkitPro/3ds-hbmenu","owner":"devkitPro","description":"The 3DS Homebrew Menu (∩ ͡° ͜ʖ ͡°)⊃━☆ﾟ ","archived":false,"fork":false,"pushed_at":"2024-09-09T09:48:22.000Z","size":282,"stargazers_count":748,"open_issues_count":15,"forks_count":76,"subscribers_count":67,"default_branch":"master","last_synced_at":"2025-04-06T23:15:11.441Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devkitPro.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":["WinterMute","fincs"],"patreon":"devkitPro","custom":"https://devkitpro.org/support-devkitpro"}},"created_at":"2017-06-05T00:05:27.000Z","updated_at":"2025-04-02T19:12:12.000Z","dependencies_parsed_at":"2024-09-09T11:26:06.990Z","dependency_job_id":"a2a3f880-e5aa-4f36-9457-6a38623a1dda","html_url":"https://github.com/devkitPro/3ds-hbmenu","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devkitPro%2F3ds-hbmenu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devkitPro%2F3ds-hbmenu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devkitPro%2F3ds-hbmenu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devkitPro%2F3ds-hbmenu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devkitPro","download_url":"https://codeload.github.com/devkitPro/3ds-hbmenu/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254535826,"owners_count":22087398,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T21:25:16.416Z","updated_at":"2025-05-16T13:03:27.356Z","avatar_url":"https://github.com/devkitPro.png","language":"C","funding_links":["https://github.com/sponsors/WinterMute","https://github.com/sponsors/fincs","https://patreon.com/devkitPro","https://devkitpro.org/support-devkitpro"],"categories":[],"sub_categories":[],"readme":"# The Homebrew Launcher\n\n#### Presentation\n\nThe Homebrew Launcher (hbmenu for short) is the main menu used to list and launch homebrew applications. It is essentially a graphical shell around an existing homebrew loading mechanism. The following entrypoints are supported:\n\n- [Luma3DS Rosalina](https://github.com/LumaTeam/Luma3DS) **(recommended)**: Works on all system versions from 4.0 onwards; it provides unrestricted access to 3DS system resources as well as nice extra features such as remote debugging (GDB). For more information read the [Rosalina documentation](https://github.com/LumaTeam/Luma3DS/wiki/Rosalina).\n- [Legacy \\*hax 2.x](https://smealum.github.io/3ds/): This is a now-obsolete homebrew loading system that only provides limited access to 3DS system resources, as it only attacks a low privilege level. Support for this entrypoint is deprecated and may be removed in a future release.\n\n3DS homebrew is built and distributed as executables with the `.3dsx` extension. Note that you may encounter files with the `.cia` extension - these are **not** homebrew executables that can be loaded using hbmenu.\n\n#### Usage\n\nTo install hbmenu, simply copy `boot.3dsx` to the root of your SD card. If you are using a recent version of [Luma3DS](https://github.com/LumaTeam/Luma3DS) you probably already have a copy of hbmenu installed, as it comes bundled with it.\n\nUse the D-Pad, Circle Pad or the touchscreen to select an application, and press A or touch it again to start it. Use the C-Stick alternatively on New 3DS to scroll the list of applications.\n\nhbmenu supports starring applications, so that they are shown at the beginning of the list. The SELECT button stars/unstars the currently selected homebrew application.\n\nOn \\*hax 2.x, it is not possible to go back to the 3DS HOME menu using the HOME button. As an alternative, you can press the START button where you can reboot your console or relaunch HOME menu.\n\nhbmenu starts in the sdmc:/3ds/ directory for applications and it will look for 3dsx files inside it. You can navigate the directory tree and open/browse folders as you would expect. Additionally, folders containing a 3dsx file with the same name as the folder (or alternatively `boot.3dsx`) will be detected as an application bundle folder, and it will be presented as a single icon that can directly launch the application.\n\nHere is an example directory structure that hbmenu will have no trouble recognizing:\n\n- sdmc:/\n  - 3ds/\n    - games/\n\t    - Hermes.3dsx\n      - cubemadness.3dsx\n    - Checkpoint/ *(this folder will be detected as an application bundle)*\n      - Checkpoint.3dsx\n      - ...\n    - ftpd.3dsx\n    - mgba.3dsx\n    - 3dscraft.3dsx\n    - blargSNES.3dsx\n    - gameyob.3dsx\n    - 3dnes.3dsx\n\nIf hbmenu does not find an icon file (either embedded in the executable or provided separately) to associate with a given 3dsx, it will display a default icon and the path to the executable as a fallback.\n\nhbmenu also allows you to create \"shortcuts\" which are xml files containing a path to a 3dsx file and optional arguments to pass to the .3dsx. This file can also include a path to icon data as well as name, description and author text using tags as follows:\n\n    \u003cshortcut\u003e\n        \u003cexecutable\u003eThe path to the 3dsx file goes here.\u003c/executable\u003e\n        \u003cicon\u003epath to smdh icon data\u003c/icon\u003e\n        \u003carg\u003ePlace arguments to be passed to 3dsx here.\u003c/arg\u003e\n        \u003cname\u003eName to display\u003c/name\u003e\n        \u003cdescription\u003eDescription of homebrew app\u003c/description\u003e\n        \u003cauthor\u003eName of the author\u003c/author\u003e\n    \u003c/shortcut\u003e\n\nArguments are space or tab separated but can use single or double quotes to contain whitespace.\n\nName, description and author will be read from the .3dsx if it has embedded SMDH data or from the supplied icon path. The fields in the xml file will then override their respective entries.\n\nYou should not hotswap the SD card while hbmenu is running since it compromises the 3DS OS's stability amongst other things. It is recommended that you instead use a file transfer homebrew application such as ftpd to transfer files without rebooting.\n\n#### Technical notes\n\nhbmenu does all its rendering in hardware thanks to the [citro3d](https://github.com/fincs/citro3d) library. The 3DS system font is also used to render all text.\n\nhbmenu uses some funky mechanisms to launch 3dsx files. If you're interested in launching 3dsx files from your own application, you should look here; although these mechanisms may change in the future.\n\n#### Netloader\n\nhbmenu contains support for the 3dslink protocol, which allows you to remotely load applications.\nPress Y to activate as usual then run `3dslink \u003c3dsxfile\u003e` if your network can cope with UDP broadcast messages.\nIf 3dslink says 3DS not found then you can use `-a \u003cip address\u003e` to tell it where to send the file.\n\nAll the other arguments you give 3dslink will be passed as arguments to the launched 3dsx file. You can also specify argv[0] with `-0 \u003cargument\u003e` which is useful for\nsetting the current working directory if you already have data files in a particular place, i.e. `3dslink myfile.3dsx -0 sdmc:/3ds/mydata/`\n\n3dslink is provided as a package via [devkitPro pacman](https://devkitpro.org/wiki/devkitPro_pacman) as 3dslink and as part of the 3ds-dev package group.\n\n#### Building\n\nhbmenu uses zlib for compression and tinyxml2 for XML parsing. These libraries are provided by devkitPro through the portlibs mechanism. In order to install them, use the following command:\n\n```shell\n    pacman -S 3ds-zlib 3ds-tinyxml2 3ds-libconfig\n```\n\n(Note that `dkp-pacman` is used instead on systems that do not distribute pacman, such as macOS or Debian-based Linux distros)\n\nBinaries of hbmenu can be downloaded from the [Releases](https://github.com/fincs/new-hbmenu/releases) page.\n\n#### File Associations\n\nThis is a feature backported from [nx-hbmenu](https://switchbrew.org/wiki/Homebrew_Menu#File_Associations). However, there is one notable difference: icons must be a 48x48 t3x-generated file with GPU_RGB565 as its color format.\n\n#### Contributing\n\nhbmenu is looking for contributors! We're making this repository public so that you, the community, can make hbmenu into the menu of your dreams. Or show you how to make your own, better menu! Of course we'd rather you improved hbmenu rather than went off and started fragmenting the userbase, but any contributions to the homebrew scene are welcome. Feel free to use code from hbmenu for your own projects, so long as you give credit to its original authors.\n\n#### Credits\n\n- smea: code \u0026 original hbmenu version\n- fincs: code \u0026 rewrite\n- GEMISIS: code\n- mtheall: code\n- WinterMute: netloader code\n- Fluto: graphics\n- Arkhandar: graphics\n- dotjasp: graphics (regionfree icon)\n- gruetzkopf, TuxSH, AuroraWright, Soph1a7, SentientTurtle, Yami-chan, d3m3vilurr, daedreth, JixunMoe, yy-codes, MCPE-PC: translations\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevkitpro%2F3ds-hbmenu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevkitpro%2F3ds-hbmenu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevkitpro%2F3ds-hbmenu/lists"}