This was a long-standing bug since Luma3DS v8.0.
If you changed the homebrew title and didn't immediately reboot, then
the ExHeader during termination would not match the ExHeader that was
was used for loading the process, and thus sysmodule process refcounts
would get all messed up.
The obvious solution to this is to ensure no application is running
while changing the hbldr titleID (hence the changes in custom PM).
This was quite possibly one of the cause of homebrew failing to load
when using N3DS H&S.
... even when HPs aren't inserted.
This is aimed at people using Bluetooth audio hw mods.
There are some software limitations, please read the INI/option
description.
Closes#1828.
N3DS-only option. See config.ini for details and context. This should
make very demanding games (those which already use 3x clockrate and L2C
by default, like Pokémon US/UM) between 5 to 15% faster. Not widely
tested, and can potentially break some games and other apps.
Let's not pretend in 2022 that it needed things from rosalina sysmodule
- it did not.
This moves 3DSX loading from Rosalina to Loader, and also removes all
the dependencies Loader had to other Luma3DS components (if kernel ext.
is missing, a default config will be used). This means that, as long as
you replace Loader to the one in here, you will be able to properly load
3DSX files.
Changes:
- hb:ldr is now hosted in loader
- hb:ldr LoadProcess, PatchExHeaderInfo, DebugNextApplicationByForce:
all removed
- fix a bug where some malformed 3DSX files were not rejected
- grant access to CONFIG11 registers to 3DSX homebrew
- move dirty homebrew chainload (when HM. isn't loaded nor loadable) to
pm
- pm:dbg (ext.) PrepareToChainloadHomebrew: removed