Homebrew Homebrew Launcher with sorting and folder support

suloku

Well-Known Member
OP
Member
Joined
Apr 28, 2008
Messages
883
Trophies
0
XP
836
Country
Download latest version here: https://github.com/suloku/3ds_hb_menu/blob/patch-1/_release/DOWNLOAD.md
Source code: https://github.com/suloku/3ds_hb_menu/tree/patch-1/

WARNING: Using region4 to launch a title under emunand will boot the title under SYSNAND

Last update: 24 feb 2016 - 16:35 GTM+1 (version 1.1.3s)

Changelog (since 15 sept 2015 - 17:00 GTM+1)
24 feb 2016 - 16:35 GTM+1 (version 1.1.3s)
- Updated to support ninjhax's 2.6 return to home menu.
- Theme randomization is now toogle with "SELECT" (X is used to return to home menu)

03 feb 2016 - 23:35 GTM+1
- Fixed bug that didn't load homebrew if mix stray 3dsx files setting was ON

03 feb 2016 - 17:45 GTM+1
- Correctly handle shortcut alphabetic sorting
- Added config option to create title shortcuts with smdh title as filename instead of title ID (default is smdh title). This option has to be manually edited in config.xml for now.
- Shortcuts can be deleted pressing B button over them (a confirmation prompt will appear)
- Creating a shortcut for a gamecard will generate a standard shortcut for all gamecards
- Prevent launching gamecard via Region4 trough shortcut if there's no gamecard (notification prompt appears)

22 jan 2016 - 22:00 GTM+1
- Restored "scanMenuEntry(me);" in main.c which caused some boot problems in previous build (don't know why I removed it, probably removed by mistake).
- Updated to latest HBL 1.1.0 changes (except file browsing), including latest ctrulib.
- Tweaked title browser, it should be now lag free, keys properly work and inserting/extracting the game cartridge is also properly recognized.
- Disabled alpha channel for now since rendering with transparency produces lag (and has been reported as much worse on o3ds).
- Compiled with latest ctrulib.

01 nov 2015 - 11:15 GTM+1
- Press start in config menu to shutdown (config will not be saved)
- Added option to change default title booting method (HANS/R4)
- If boot method is R4, created shortcuts will boot R4
Note: unlike hans shortcuts, R4 shortcuts will only work with this mod, they won't show on any other.

31 oct 2015 - 10:00 GTM+1
- Changed toolbar sprites, thanks fiese_nase for concept art!
- Toolbar now fades with theme alpha setting, but only for vertical position since horizontal looks weird due to overlaying with entries.

31 oct 2015 - 01:05 GTM+1
- Add alpha, button border color and button state color to themes.
- Centered config screen panels, show all titles button and shortcut buttons
Hopefully bugfree, touch controls are now finished.

30 oct 2015 - 00:45 GTM+1
- Rearrange buttons in title selection screen
- Actually update enabled button in title selecter

29 oct 2015 - 23:00 GTM+1
- Touch controls for title selector and configuration screens.
- Added back touch buttons to all screens.
- Shrinked and moved entries a little to (and fixed some smdh text not correctly wrapping, i.e. FTP-3DS)
- Scrollbar is resized when toolbar is in vertical position.
- Folder change when swiping will only activate moving horizontally (previously it could be activated by diagonal movement, conflicting with scrolling)
- Bugfixes:
* Missing last folder in folder list menu
* Fixed bug when added favorites (I hope, maybe cause due to copying touch button state??)
* Fixed bug introduced with swiping code

29 oct 2015 - 00:50 GTM+1
- Change folder swiping left/right.
- Swipe sensitivity can be configured in config.xml (default is 40)
- Fixed bug preventing launching with region four from toolbar
- Todo: touch interface for title launcher. Touch interface for start menu configuration toogles.


29 oct 2015 - 00:20 GTM+1
- Changed buttons to a single toolbar in bottom right corner
- Toolbar setting in start menu (horizontal/vertical)
- Fixed title launching bug
- Fixed touch handling for buttons
- Todo: touch interface for title launcher. Touch interface for start menu configuration toogles.

28 oct 2015 - 16:50 GTM+1
- Add folder list menu to ZL/ZR (need to think something for o3DS)
- Load config files also from from /3ds/.hbl/
- Moved .hans/h/ to .hbl/hans/
- hans shortcut text in capitals (HANS)

27 oct 2015 - 23:50 GTM+1
- Created Hans shortcuts will have author "Hans shortcut"
- Shortcuts have a different icon frame color
- Configurable icon frame color for apps and shortcuts
- Disable args for hans loading since hans uses a file with the low title id by default

27 oct 2015 - 00:00 GTM+1
- Use Y on title launcher to boot using region four (added since HANS seems unstable for some games)

26 oct 2015 - 20:00 GTM+1
- Solved bug creating wrong shortcut xml files in folders with name longer than /3ds/

26 oct 2015 - 19:45 GTM+1
- Title launcher can create and delete title shortcuts to/from current folder.

26 oct 2015 - 18:11 GTM+1
- Title launcher now runs trough HANS (aka region 5) if one of the following paths is valid:
* /3ds/hans/hans.3dsx
* /3ds/.hans/h/hans.3dsx --> this path is so hans won't be displayed in HBL
If hans is not found in neither of this paths, old method (region 4) will be used.

26 oct 2015 - 17:30 GTM+1
- Fixed removing favorited shortcuts
- Shortcuts are the first entry when title launcher is disabled.


26 oct 2015 - 17:10 GTM+1
- Shortcuts can be favorited now.

26 oct 2015 - 16:30 GTM+1
- Merged Smea's HBL changes for ninjhax 2.5 (shortcuts mainly)
- Todo:
* shortcuts favorites
* Rethink title launcher to work under HANS.

21 oct 2015 - 15:45 GTM+1
- Added independent setting to remember region free status (enabled/disabled).
* Enabled: HBL will boot with latest region free (title launcher) status (if it was disabled, it will boot disabled).
* Disabled: HBL will boot with the region free (title launcher) setting, regardless if it was enabled/disabled when exiting HBL.
- Merged latest changes from smea's master.
- Compiled with latest ctrulib.

19 oct 2015 - 13:55 GTM+1
- Filters are not applied when searching for services/titles defined in descriptor xml file
- UP+L toogle wifi if hbl has access to the service (run under system settings title for example). Maybe ninhax 2.5 will solve this.
13 oct 2015 - 20:50 GTM+1
- Able to use generic name for descriptor xml file (descriptor.xml)

11 oct 2015 - 17:30 GTM+1
- Converted Region Free into title launcher.
- Gamecard is now always the first title.

04 oct 2015 - 22:00 GTM+1
- Removed tid.bin creation since applications can now obtain title id by themselves.
- Added selectable application filters to title selector.

17 sept 2015 - 00:40 GTM+1
- Solved crash when launching svdt and /svdt folder didn't exist.

16 sept 2015 - 19:00 GTM+1
- Added remaining settings toggles from config.xml to reboot screen (press start).
- Changed reboot screen to fit new toggles.
- svdt integration for xml files with set target titles.

16 sept 2015 - 17:00 GTM+1
- Added themes from https://gbatemp.net/threads/homebrew-launcher-custom-themes.397183/ to themes.xml
- Added option in config.xml to randomize themes (on boot and when changing themes)
- Changed theme controls display in the Reboot screen (start button)
- Toogle random themes in Reboot screen with X button.
- Folder bgcolor, title font color and description color will use the entry colors if not specified in xml file.
- On a side note, Konami came and told me "BEER is WATER, with and without BORDER, Rise oh Great Bishop"

15 sept 2015 - 17:00 GTM+1
- Fixed: Toogling remember menu on favorite screen returned to folder view without disabling favorites.
- Display remember menu indicator also on favorite screen

Feature list:
- Multiple configurable folders, change with L/R
- Favorites: access with X, add/remove with SELECT
- Disable/enable region free entry (configurable, toogle with hold DuP+R)
- Alphabetical sorting (by folder/filename, not title in smdh file). Case sensitiveness configurable. Mix stray 3dsx configurable.
- Option to remember last folder and last entry launched (toogle with hold Dup + L).
- Custom themes (defined in themes.xml)
- Random theme at boot (optional)
- Create/delete HANS/Region4 shortcuts

The "remember menu" feature is not shown on the video since it is made on citra and we can't boot hombrew there from hbl.

New Controls:
- L/R: previous/next folder
- SELECT: add/remove favorite entry
- X: enter/exit favorites menu
- Hold Dup+R: toggle region free (title launcher)
Reboot screen (press start in homebrew list to enter reboot screen):
- L/R in reboot screen: previous/next theme
- SELECT: toggle random theme
- Y: toggle remember menu
- Dup: toggle alphabetic/filesystem sorting
- Ddown: toggle mix stray 3dsx files on/off
- Dleft: toggle remember region free (title launcher) state
- START: Shutdown

SVDT integration (not needed anymore):
NOTE: svdt and ctrulib were updated and now it can get the title by itself.
- As of svdt 0.10.1 HBL mod will pass the selected title to svdt. This makes you only need to select the title once instead of two times (one in hbl, one in svdt). This makes savegame backup easier.

Known bugs:
- Crash on empty folder if region free is disabled. Under ninjhax 2.x (ironhax, youhax, oot3dhax, smashhax...) this is workarounded by automatically re-enabling region-free, so any xxxHax user won't have this problem. On ninjhax 1.x it will crash since region free is not available there, so just don't have empty folders. You can put a file named z.3dsx so it appears alwas as the last entry if you want to keep the folder.

Demonstration video (a little outdated):

Note: some homebrew must go in the /3ds/ folder because it uses hardcoded paths. Test all new homebrew in /3ds/ folder. Still, most homebrew work in any folder.
Hax installers like ironhax and oot3dhax may fail if not run under /3ds/ folder (I've only tested oot3dhax installer).
Read this for a little more information: https://gbatemp.net/threads/homebre...and-folder-support.396793/page-7#post-5669964

Theme editor:

Thanks to exelix11 we have a great theme editor for windows, many thanks!

You can get it here: https://github.com/exelix11/HLThemeEditor/releases

Release post: https://gbatemp.net/threads/homebre...and-folder-support.396793/page-6#post-5666295

Original post:
Version in github has more features, I'll update the thread when I get time.

Features:
- Multiple configurable folders, change with L/R
- Favorites: access with X, add/remove with SELECT
- Disable/enable region free entry (configurable, toogle with DuP+R)
- Alphabetical sorting (by folder/filename, not tile in smdh file). Case sensitiveness configurable. Mix stray 3dsx configurable.

NOTE: configuration is only saved when adding/removing favorites. This will affect the region free setting too.

Already implemented, need to know if there are problems with it:
- Option to remember last folder
- Option to remember last entry launched

There's not much more I'd like to add, I think it has many features I thought were missing.

Code:
The Homebrew Launcher folder/sort mod by suloku '15
***************************************************

This a modified version of the Hombrew Launcher for 3ds that adds folder support and sorting.

Sorting:
--------
Homebrew is sorted by filename/foldername.

Sorting example:

    0_ftbrony/
    boot.3dsx
    citragb/
    ftbrony/
    ftbrony.3dsx
    z_ftbrony/

Remember that the 3dsx file inside a folder must either be named the same as the folder or boot.3dsx.


Folders:
--------

¡¡IMPORTANT!!: if a homebrew has a hardcoded to /3ds/ and needs files to be there, it will only work from the /3ds/ folder. Always test new homebrew from /3ds/ folder.

Folder paths are specified in sdmc:/3ds/folders.xml
If no folders.xml is found it just behaves as regular homebrew launcher

Up to 20 paths can be added.

Config values:
--------------
- mix_files:
    · 0 = OFF Stray .3dsx files are sorted after homebrew with folder and icon
    · 1 = ON all homebrew is sorted alphabetically
- case_sensitive (see example)
    · 0 = OFF : capital and lower case letters alike
    · 1 = ON : Capital letters before lower case
- disable_RF
    · 0 = OFF : region free entry will appear
    · 1 = ON : disables the region free entry

note: the region free entry can be toogled with DPad UP + R.
note2: when the config file is saved, region free setting will be saved as well.
note 3: currently config file is only saved if there are changes to favorites.

Case_sensitive sorting example:

    OFF                    ON

    blargsnes            GameYob
    GameYob                SavedataManager
    ftbrony                blargsnes
    SavedataManager        ftbrony
    svdt                svdt


Favorites:
----------
They can be set and removed from inside the HBLauncher. Press SELECT.
Press X to enter/exit the favorites menu.
Up to 20 favorites can be added.

Favorites can be manually defined in the config file, example:

IMPORTANT: unlike folders, don't add the last '/' character

        <fav>/3ds/_EMU/GameYob/GameYob.3dsx</fav>
        <fav>/3ds/_EMU/PokeMini</fav>
        <fav>/3ds/_UTIL/CTRXPLORER</fav>
        <fav>/3ds/_UTIL/CTRXplorer/boot.3dsx</fav>
        <fav>/3ds/ftbrony/boot.3dsx</fav>


New Controls:
-------------

- L: previous folder
- R: next folder
- X: enter favorites menu
- SELECT: add/remove favorite entry

Source code:
------------
Branch of smealum's repository https://github.com/suloku/3ds_hb_menu
https://github.com/suloku/3ds_hb_menu/tree/patch-1

Changelog:
----------
[+]v2c
    - Config saved also when rebooting from HBL.

[+]v2b
    - Solved crashing when loading empty folder/ favorites tags.

[+]v2
    - Added option in xml to sort case sensitive or not
    - Added option in xml to sort stray .3dsx files mixed with full homebrew (those in a folder) or     after them
    - Added option to disable region free entry
    - UP+R toogles region free in the menu itself
    - X opens favorite menu
    - Favorite paths/3dsx files can be configured in xml
    - Changed folders.xml to config.xml since now it holds more things
    - Removed SELECT to refresh. Just toogle favorites or press next/previous folder button. Works even with no xml file (remember, this is for those times hblauncher for some reason doesn't load any homebrew and can only exit or boot region free).
    - Dinamically set/remove favorites with SELECT
    - Save modified favorites to xml file
 
Last edited by suloku,

suloku

Well-Known Member
OP
Member
Joined
Apr 28, 2008
Messages
883
Trophies
0
XP
836
Country
I was thinking in adding an option to xml to mix or not the stray .3dsx files with folders
I can add the case insensitive setting too., I like it insensitive though, since it adds a layer of organization: make all folders with low case, make first letter of folder upper case case: your favorite homebrew is on top.

And as I was writting this I've thought: a favorites folder in X button would be cool...
 

SomeGamer

Well-Known Member
Member
Joined
Dec 19, 2014
Messages
6,822
Trophies
1
XP
4,427
Country
Hungary
I was thinking in adding an option to xml to mix or not the stray .3dsx files with folders
I can add the case insensitive setting too., I like it insensitive though, since it adds a layer of organization: make all folders with low case, make first letter of folder upper case case: your favorite homebrew is on top.

And as I was writting this I've thought: a favorites folder in X button would be cool...
Yeah, just realised that it's now the only unused button! :D
 

link6155

Well-Known Member
Member
Joined
Aug 14, 2013
Messages
311
Trophies
0
Age
30
XP
523
Country
United States
Neat mod, I don't have that many Homebrews yet, so a folder option wouldn't be useful to me at this time.

This might be off topic, but I was hoping someone could make a Homebrew Launcher like this:
main_menu_v4_by_arkhandar-d7w3z1p.png


I think this layout use the screens better. The Homebrew Launcher currently doesn't utilize the top screen at all.
 

Sonansune

Well-Known Member
Member
Joined
Jul 2, 2015
Messages
3,730
Trophies
1
XP
2,055
Country
Canada
is the newest boot file right?

--------------------- MERGED ---------------------------

cuz i try to do the NH1.1&2.1 dual boot
 

suloku

Well-Known Member
OP
Member
Joined
Apr 28, 2008
Messages
883
Trophies
0
XP
836
Country
I think this layout use the screens better. The Homebrew Launcher currently doesn't utilize the top screen at all.
It looks better, but I don't have the skills to make that major changes to hbl.
There's not much homebrews yet, but it's tarting to grow, and 4 homebrew per screen is too little.
is the newest boot file right?

--------------------- MERGED ---------------------------

cuz i try to do the NH1.1&2.1 dual boot
I don't know what you mean. If NH1.1. and NH2.1 use the same boot.3dsx it will work with both.

If I recall, for dualboot you only need it to use a different 3ds folder and boot.3dsx right? if you don't want to recompile, you can hex edit the .3dsx file, look for the /3ds/ string and the boot.3dsx string, then change them to something like /3d1/ and boo1.3dsx respectively.

Or just change to the folder with your 1.1 homebrew? I know nothing about NH1.1.
 

fmkid

Just another GBATemp's random guy
Member
Joined
Apr 23, 2015
Messages
1,914
Trophies
0
XP
1,397
Country
Colombia
is the newest boot file right?

--------------------- MERGED ---------------------------

cuz i try to do the NH1.1&2.1 dual boot
AFAIK, latest "boot.3dsx" (or based in) file should work fine on whatever Smealum's Hax... That file is only the "Homebrew Launcher", not the exploit itself at all!
 

suloku

Well-Known Member
OP
Member
Joined
Apr 28, 2008
Messages
883
Trophies
0
XP
836
Country
Just for those interested, current progress:

- Added option in xml to sort case sensitive or not
- Added option in xml to sort stray .3dsx files mixed with full homebrew (those in a folder) or after them
- Added option to disable region free entry
- UP+R toogles region free in the menu itself
- X opens favorite menu
- Favorite paths/3dsx files can be configured in xml
- Changed folders.xml to config.xml since now it holds more things
- Removed SELECT to refresh. Just toogle favorites or press next/previous folder button. Works even with no xml file (remember, this is for those times hblauncher for some reason doesn't load any homebrew and can only exit or boot region free).

To do (on it right now):
- Dinamically set/remove favorites with SELECT
- Save modified favorites to xml file

EDIT: done
 
Last edited by suloku,

SomeGamer

Well-Known Member
Member
Joined
Dec 19, 2014
Messages
6,822
Trophies
1
XP
4,427
Country
Hungary
Just for those interested, current progress:

- Added option in xml to sort case sensitive or not
- Added option in xml to sort stray .3dsx files mixed with full homebrew (those in a folder) or after them
- Added option to disable region free entry
- UP+R toogles region free in the menu itself
- X opens favorite menu
- Favorite paths/3dsx files can be configured in xml
- Changed folders.xml to config.xml since now it holds more things
- Removed SELECT to refresh. Just toogle favorites or press next/previous folder button. Works even with no xml file (remember, this is for those times hblauncher for some reason doesn't load any homebrew and can only exit or boot region free).

To do (on it right now):
- Dinamically set/remove favorites with SELECT
- Save modified favorites to xml file
Where can I download this latest version?
 

mashers

Stubborn ape
Member
Joined
Jun 10, 2015
Messages
3,837
Trophies
0
Age
38
Location
Kongo Jungle
XP
4,932
Country
This is really great work, thank you! Looking forward to downloading the latest version so I can remove region free loader and keep my HB menu sorted :)
 

fmkid

Just another GBATemp's random guy
Member
Joined
Apr 23, 2015
Messages
1,914
Trophies
0
XP
1,397
Country
Colombia
Some way to implement cursor stays just on latest selected program anytime someone loads HBL (via executing exploit or exit from a homebrew, either)?
 

suloku

Well-Known Member
OP
Member
Joined
Apr 28, 2008
Messages
883
Trophies
0
XP
836
Country
No release yet, source is up though. I'll release binary when I end with favorites.
I've just completed the dynamic add/remove favorite code, only remains to code the function to update xml file.

I made a pull request to the official repository, I don't know if smea would add it. I'm trying to stay true to original desing, in fact if there's no xml file the only new features one would notice are the free region launcher toogle and the reload folder when L/R are pressed.

Also, there's probably much nicers way to code all this.
Some way to implement cursor stays just on latest selected program anytime someone loads HBL (via executing exploit or exit from a homebrew, either)?
I could save that data in the xml file, remembering last folder would be easy, the cursor position can be done, but it's a little more tricky (or maybe just need to store more values).

I'll look into that when I finish the favorites thing.

UPDATED FIRST POST with v2
 
Last edited by suloku,

mashers

Stubborn ape
Member
Joined
Jun 10, 2015
Messages
3,837
Trophies
0
Age
38
Location
Kongo Jungle
XP
4,932
Country
Your v2 build is nonworking on my USA New 3DS running 9.9. It locks up on launch with the usual garbage on screen, as per photo:
qAYC3h5.jpg
I have exactly the same problem on a 9.9 UK New 3DS. Makes no difference whether I launch through IronHax or NinjHax. The previous version worked fine.
 

suloku

Well-Known Member
OP
Member
Joined
Apr 28, 2008
Messages
883
Trophies
0
XP
836
Country
This is strange, I'm on N3DS 9.9, I tought maybe it was becasue you didn't put the config file, but works fine for me wihtout config file.

UPDATE: OK, the problem was the the config file I attached, becasue there where two blank elements (<path></path> and <fav></fav>)

I'm updating the package now.

edit: no, that wasn't it :(
edit2: yes it was.
edtir 3: no it doesn't support comments either, silly me.

EDIT 4: Everything should be fine now, sorry for the trouble, I was using a different xml file and didn't notice that problem.

I've just tested the file, should work fine with the included xml file or without it. There shouldn't be any more problems.

For those asking, the sorce is in my github (address is in the readme)
 
Last edited by suloku,
General chit-chat
Help Users
    Psionic Roshambo @ Psionic Roshambo: You will thank me for this later, this stuff tries to grow everywhere....