v12.0
- Add a new "advanced configuration" submenu for screen filters, allowing for far more customization (notably, increasing gamma). It allows setting different filters for top and bottom screen separately, and all settings can be saved to the ini configuration file
- Implement autobooting into Homebrew Menu, both in 3DS mode and in DSi mode:
- DSi modes uses nds-hb-menu bootstrap's TID by default, and is a bit slow to start as it needs to go through the native 3DS OS first no matter what
- Homebrew needs to be compiled with libctru v2.0.0 at a minimum, and libctru v2.1.2 is highly recommended to a bug fix
- Move "Save settings" to top-level menu
- Add ability to force routing audio to headphones. This is targeted to Bluetooth hardware mod users
- One limitation is that this option gets undone if you actually insert then remove headphones in the headphones port, closing and re-opening the lid fixes this
- Add ability to redirect application core1 threads to core2, on N3DS:
- Only useful in very demanding games like Pokémon (Ultra) Sun/Moon where it nets approx. a 10% gain, due to how the 3DS OS works
- Might break some games and homebrew applications
- Add external *.cxi non-KIP sysmodule loading (from
/luma/sysmodules
), when the "Enable loading external FIRMs and modules" option is enabled- The expected format is {titleId}.cxi (not the name, unlike KIPs), with {titleId} being a string of 16 hexadecimal digits, and with the N3DS bit taken into account
code.bin
loading for sysmodules is still kept as a feature, but you now need to enable both this option and "Enable game patching" (for non-sysmodules only "Enable game patching" suffices)
- Enable "game patching" features for all applets (not extensively tested), not just games or applications. This being said, LayeredFs might not work on things like the software keyboard, but "locale emulation" is expected to always work
- Remove kernel check for creating core2/core3 threads. This has no bearing on homebrew being able to access core2, as it always has had the proper access bits. Moreover, you should not create threads on core3 as head-tracking takes most of the CPU time there & the graphics driver depends on head-tracking
- Grant full DSP RAM access to all 3dsx homebrew
- Move
hb:ldr
from Rosalina to loader reimplementation - Add disabled-by-default PASLR support in our custom loader reimplementation; this should match what the official sysmodule does 1:1
- Fix a bug where an error telling the MCU firmware version was too low, even if this was always incorrect
- Fix a very long-standing bug where sysmodules could incorrectly be killed when using the "Switch the hb. title to the current app." feature followed by closing the current app. This might have been causing issues with this feature and N3DS Health&Safety app in the past
- Display the proper error messages when removing the gamecart or the SD card while playing a game on either medium, instead of a cryptic error code. Also add datetime information to
errdisp.txt
entries - General system stability improvements to enhance the user's experience
(libctru v2.1.2 and 3ds-hbmenu v2.4.1 will officially release later this week)