Releases: LumaTeam/Luma3DS
Release list
v6.3.1
- Increased the maximum custom path size to 55 characters from 37.
- The
Luma3DS.datfile isn't needed anymore with the new .3dsx (*hax, menuhax) launchers,arm9loaderhax.bin(or the filename specified with the custom payload path) will be loaded directly. - Replaced the top screen image in the .nds file.
Reuploaded because people reported the CakeBrah .3dsx launchers wrongly displaying the .dat filename when arm9loaderhax.bin was not found, Luma3DS itself was not updated.
v6.3
- Merged the regular and dev builds into one.
- Custom version changes: if the custom version has more than 5 but less than 19 characters it will be truncated to avoid System Settings crashes; separated the custom versions for each NAND (the paths are now
/luma/customversion_sys.txt,/luma/customversion_emu.txt,/luma/customversion_emu2.txt./luma/customversion_emu3.txt./luma/customversion_emu4.txt). - To reduce file accesses for people with high-latency large SD cards, an option to toggle loading firmware.bins and FIRM sysmodules from the SD card and one to toggle loading the splash screens were added.
- External FIRMs support changes: added support for NUS-encrypted firmware.bins (all four are supported, a matching cetk file for each encrypted FIRM is needed:
/luma/cetkfor/luma/firmware.bin,/luma/cetk_twlfor/luma/firmware_twl.bin,/luma/cetk_agbfor/luma/firmware_agb.bin./luma/cetk_safefor/luma/firmware_safe.bin) and New 3DS ARM9bin-decrypted firmware.bins. - Turned the .dat file into a simple chainloader that loads arm9loaderhax.bin, added .nds file to use it with mset.
- The path changer is now deprecated (although it will still work). To have a custom path you can now enable the option for it in the configuration and type it in a
/luma/path.txtfile, it must start with a/. This path is also picked up by the above mentioned .dat chainloader. - A full format of the SD card is no longer necessary to remove an EmuNAND (also fixes crashes when trying to boot EmuNAND with an SD which used to have one and wasn't fully formatted).
- The splash screens now display all at once thanks to the alternate framebuffer support.
- Fixed screen weirdnesses when not launching from arm9loaderhax.
- Added support for text files with a trailing newline (as per UNIX convention) for region/language emulation and custom versions.
- Fixed loading SafeA9LHInstaller and other payloads which need the OTP hash if having a PIN.
- Slightly changed the PIN format.
- Made option descriptions more readable.
- Fixed non-working double newlines in PIN messages.
- Fixed hangs on errors after a firmlaunch, reboots now happen as expected.
- bin2c is no longer needed to compile.
Reuploaded to fix a confusing typo in the config
v6.2.3
Both versions:
- Finally fixed GW-downgraded O3DS(XL) NANDs.
v6.2.2
Both versions:
- If
Autoboot SysNANDwas unchecked, it became impossible to select the EmuNAND if having a corresponding directional pad payload. Now it's possible to do this by holding A + the directional pad button. - Added UTF-8 support to
customversion.txt. You can now use symbols, including those special Nintendo font ones :P
v6.2.2: Fixed question marks at the beginning of the custom strings with files created by Windows Notepad.
v6.2
Both versions:
- Revamped EmuNAND support: up to four EmuNANDs are now supported, the default can be selected in the config and it can be changed on boot by holding Up/Right/Down/Left (respectively for EmuNAND 1/2/3/4); other than the
legacylayout theminsizelayout (for RedNANDs only) and thedefaultlayout are now also supported - Added a B payload (
b_NAME.bin) to the chainloader - PIN changes: the number of digits to input is now shown, a message on the bottom screen can be displayed by placing a text file named
pinmessage.txtinluma(800 characters maximum) - Implemented custom System Settings
Ver.string, it needs to be in a text file namedcustomversion.txt(19 characters maximum) inluma, with the stock Nintendo string beingVer. %d.%d.%d-%d%ls - When booting with R and the
Use SysNAND FIRM if booting with Roption is selected, FIRM will be loaded from the default EmuNAND instead of the first one and you can choose a different one with the directional pad, in the same way you would select the EmuNAND - Changed the logic of the NIM update patch to only be applied when booting with R
- Hid the
New 3DS CPUsetting on Old 3DS - Show descriptions for the options on the bottom screen
- Fixed support for pre-9.0 FIRMs. Luma3DS now directly supports >= 5.x FIRMs, as intended
- Fixed crashes for people with pre-patched Home Menu and NS module
- Added boundary checks for files loaded from SD
- More code refactoring
Dev version:
- Fixed crashes on some Old 3DS FIRMs (such as 9.0)
- Added displaying a partial stack dump on the bottom screen when handling an exception
v6.1.2
On both branches:
- 1.x and 2.x NATIVE_FIRM are now supported on SysNAND with the FIRM writes patch, this allows you to update retaining A9LH on every system version.
- PIN changes: you can now set the PIN length and easily change the PIN (you will get a prompt when exiting the config menu, which can be skipped with START), booting SAFE_MODE is easier with a PIN, the PIN file gets deleted when disabling the PIN lock.
- The TWL dev launcher patch has been removed as it's no longer needed and causes incompatibilities with a lot of NTR/TWL games.
- New config.bin format which allows to automatically discard the configuration as soon as it becomes incompatible with new Luma3DS releases.
- Large amounts of code refactoring and cleanups.
On dev branch only:
- Fixed crashes on New 3DS with the "Disable access checks" option enabled on FIRMs between 9.3 and 10.4. Unfortunately the service and archive checks patch can't work on said firmwares, and won't be applied.
- ARM9 debugging has been removed from TWL and AGB FIRMs as it didn't work and didn't serve a real purpose.
- The "Disable access checks" option has been renamed to "Patch SVC/service/archive/ARM9 access".
v6.1.1
On both branches:
- Fixed a likely issue with the TwlBg patch and made it selectable, as it triggers antipiracy checks for some DS games and possibly causes other issues.
- Fixed 3ds_injector picking up the previous boot configuration, which caused several bugs (like the NIM update patch activating when not needed - remember to select "Use SysNAND FIRM if booting with R" if you use a SysNAND setup).
- 1.25s speed boost on boot.
- Minor cleanups.
On dev branch only:
- Fixed another critical bug in the exception handlers.
v6.1
On both branches:
- TwlBg is now patched on-the-fly to implement the patch that allows NitroHax and other homebrews to work correctly (big thanks to ahezard, Normmatt et al. for the patches. No setup is required at all.
- Fix various bugs
On dev branch only:
- Fix critical bugs in the exception handlers.
- The UNITINFO patch has been ported to TWL/AGB firms (though it's useless). Its behavior has been inverted for dev units.
v6.0.1
This is a quick release to (tentatively) address issues users are having with the .dat payload.
- Updated ctrulib (should fix CakeBrah and menuhax 3dsx launchers)
- Fixed bug that could cause a payload being mistakenly launched after creating a new pin
- Minor cleanups
Note for dev branch users: there was a bug affecting exception handlers in this release. Please use the latest commit
v6.0
Sorry for the long wait, but as always we deliver 😉.
Here is the new release (I'm the one doing it this time):
Both branches:
- Add support for launching >= 6.x/7.x emuNANDs when the sysNAND is on a lower version (on entrypoints other than a9lh)
- If you want to launch a 3.x or 4.x NAND, you have to place a recent enough firmware.bin (corresponding 10.x for example) under the luma folder (this is not a new feature)
- Conversely, firmware.bin support has been removed when booting a >= 6.x NAND. "SysNAND is updated (A9LH-only)" has been renamed to "Use SysNAND FIRM if booting with R (A9LH)" to reflect its only new purpose
- If you were using firmware.bin solely for BootNTR, update the latter (BootNTR has been updated to support 11.0)
- Add support for loading titles' code section from
/luma/code_sections/<titleID>.bin(this is useful for homebrew like SaltySD) - Enable the reboot patch on 9.0/9.1/9.2 FIRM
- Implement a PIN-checking system: you can set a 4-key combinaison (using A, B, X and Y) that be checked when Luma3DS is launched (thanks to @reworks)
- If you want to change your PIN, unselect the corresponding option in the configuration menu, save your configuration settings, then set that option again
- The screens' brightness is now updated "interactively" when the corresponding option in the configuration menu is changed. This works even if the screen has been initied before Luma3DS has started running
- Replace "Enable splash screen with no screen-init" by "Display splash screen before payloads" to fit a category of splash screens (as the screens will now be initied if and only if there are splash screens to display)
- The
lumafolder will now be created automatically when saving the configuration for the first time (thus it has been removed from the release archive) - Other minor adjustments have been made to enhance the user experience
Developer branch only:
- Implement arm11 exception handling (for NATIVE_FIRM only, unlike on arm9 where exceptions are handled everywhere, homebrews and Luma3DS itself included)
- The arm9 exception handlers were improved (more information is dumped, bug fixes, etc.)
- For both arm11 and arm9 exception handlers:
- Prevent double faults (when SP or PC were invalid)
- Handle svcBreak (this dumps the user-mode at the executed
svc 0x3cinstruction) - Handle kernel panics (except on SAFE_FIRM)
/luma/dumps/arm9and/luma/dumps/arm11are now be created automatically when they don't exist- Reminder: this feature can only work on a9lh, and is guaranteed to work only if Luma3DS is launched as
arm9loaderhax.bin
- Exception handlers and related FIRM patches are now always enabled. The "Developer options" entry is now multi-choice, enabling you to choose between a standalone ErrDisp patch and the UNITINFO patch (both will make ErrDisp display some debugging information, but the UNITINFO patch will create problems with the eShop, amiibo, etc...)
- Depending of the firmware being launched,
firmware.bin,firmware_twl.bin,firmware_agb.binorfirmware_safe.binwill now always be read and used if they exist - Add support for reading the built-in kernel system modules (except for SAFE_FIRM) from
/luma/sysmodules/<module>.cxi(this includes, of course,loader.cxi) - Add an option to disable various access checks: svc access checks and service access checks (patches courtesy of @Subv), FS archive access checks and arm9 exheader flags access checks
- Removed the patch which disabled execution protection on two particular global kernel mappings (corresponding to FCRAM and VRAM, respectively) as it was totally unused
- Other minor adjustments have been made to enhance the developer experience