Releases: LumaTeam/Luma3DS
v7.0.2
Unfortunate events related to moderator censorship have occurred regarding the /r/3DShacks subreddit (read more on Plailect's guide). Given this we cannot, in good faith, support this subreddit or its IRC until there is a change in leadership and will no longer be participating.
- Improved LayeredFS compatibility: games like New Super Mario Bros. 2 and Zelda: Triforce Heroes now work.
v7.0.1
- *hax payloads work again (if you use arm9loaderhax this doesn't apply).
- LayeredFS compatibility has been improved (thanks to @svanheulen and NeoBeo): recent Monster Hunter games and update RomFSes which get mounted as "patch:" (like Daigasso's update) now work.
v7.0
- Added chainloader selector menu (can be called with START on boot, the START payload can now be booted with L+START).
- Implemented IPS patcher for code.bin, you need to copy the IPS patch to
/luma/titles/<titleID>/code.ips
. - Added a LayeredFS implementation thanks to @delebile's hard work. Compatibility should be really good as only two games have been reported as being not working out of all the reports (due to the unusual way they were compiled). To use it, you will need to copy romfs files (following the romfs folder structure) to
/luma/titles/<titleID>/romfs/
. Coupled with IPS code patching, this allows for easy legal distribution of game translations/hacks. - Added unverified New3DS SigHax support (it should work fine, though).
- Added support for the power button in menus (thanks @d0k3).
- Added possibility to patch NAND apps (like the eShop).
- Download Play is now region free (thanks @AdibSurani).
- Signature checks are patched out for 1.x/2.x NATIVE_FIRM and SAFE_FIRMs (thanks @SciresM).
- PIN changes: PIN is now hidden while being entered, added possibility to clear the inserted PIN by pressing SELECT.
- Stubbed the SetGpuProt syscall on 11.3+ to make *hax payloads work on Old3DS. It is advised to use the 11.2 payloads on 11.3+ with this patch.
- Fixed firmlaunch/reboot patch on New3DS 11.4.
- Fixed config not being saved if a payload was launched after quitting the config menu.
- Refactored the codebase to limit nested if/elses.
- Several other improvements to overall system stability and other minor adjustments and bug fixes have been made to enhance the user experience.
We would like to thank anyone who helped testing LayeredFS!
v6.6
- Made it possible to use arm9loaderhax.bin from CTRNAND with the SD inserted (DS/DSi/GBA/extended memory games will now work).
- Fixed the New 3DS CPU patch affecting titles which already make use of the higher CPU clock and L2 cache (New 3DS exclusive titles and others like Smash Bros and Pokemon S/M). If "Clock" or "L2" are selected, these titles will now retain their normal (Clock + L2) setting.
- Increased the compatibility of region/language emulation, some rare titles are now working.
- Added support for zerokey-encrypted NCCHs to NAND and SD card. This makes it possible to use some old, Gateway-era CIAs.
- If the UNITINFO developer option is checked, you will be able to install CIAs encrypted with the developer 0x3D normalkey (such as the SDK ones). This will also make retail-encrypted CIAs fail to install (all already installed titles will keep working in both cases).
- Improved support for development units (thanks to @SciresM), 9.5+ FIRMs can now be regularly booted, 7.x+ ones can be booted from 4.x, and the system updaters won't overwrite A9LH.
- Fixed support for system versions 7.x and lower.
- Fixed bugs in the exception handlers.
v6.5
- Full CTRNAND support: if the SD card is missing, you can boot Luma from CTRNAND with a compatible A9LH install. On CTRNAND, the
luma
folder is located in/rw
and can be managed with tools like FBI and GodMode9. The EmuNAND options will also be automatically hidden. - Added safety checks everywhere throughout Luma when possible, this also includes FIRM patching (if any patch fails, Luma will either display the amount of failed patches or shutdown).
- Made the exception dump parser output the disassembly of the dumped code where possible.
- Kernel9 patches patterns are now only looked for in Kernel9 itself (might speedup the patching slightly).
- AGB and TWL FIRM from 3.0 onwards are now supported (instead of just the latest versions).
- Fixed the anti-anti-downgrading patch on 11.2 FIRM.
- Removed the eShop update check patch as it caused more problems than it solved, and the background updates patch as it didn't work at all.
- Allowed using the FIRM of SysNAND with EmuNAND and vice-versa (booting with R) if not using A9LH.
- Fixed bug that made it impossible to print to the screen after FIRM was loaded.
- Fixed some files in the FIRM folders being incorrectly detected as FIRMs.
- Major cleanup/minor bug fixing/refactoring of the code, removed several assumptions and switched to structs where possible.
Please note that starting with this release, Luma won't support pre-patched FIRMs or other system titles with the same patches Luma does. Common pre-patched titles include NS, Home Menu, TWL_FIRM and AGB_FIRM (in these cases you will either get a svcBreak in loader or a shutdown when launching DS/GBA games). Clean versions of these titles need to be reinstalled before upgrading (the wiki will be updated with a walkthrough soon™).
v6.3.1
- Increased the maximum custom path size to 55 characters from 37.
- The
Luma3DS.dat
file 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/cetk
for/luma/firmware.bin
,/luma/cetk_twl
for/luma/firmware_twl.bin
,/luma/cetk_agb
for/luma/firmware_agb.bin
./luma/cetk_safe
for/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.txt
file, 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 SysNAND
was 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
legacy
layout theminsize
layout (for RedNANDs only) and thedefault
layout 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.txt
inluma
(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 R
option 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 CPU
setting 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