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.
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
- Add support for saving screen filters color temperature and NTP timezone offset (you still need to go to misc->save config)
- some advanced options moved to "in ini file only"; "patch games" is now enabled by default
- ntp: fix support for UTC+12 to +14
- remove deprecated custom svc 0x2e
breaks regular auto connect until reboot
allows connecting to a wifi without internet (for example, for transferring stuff with 3dslink or ftpd/3DShell)