Releases: LumaTeam/Luma3DS
Release list
v8.0
This major release introduces Rosalina, Luma3DS's custom system module, the functionalities of which are described below.
You'll need to upgrade to boot9strap v1.2 or higher.
Edit: please use newer releases!
- A menu which can be opened at any time (combo: L+Down+Select, although you can change it at runtime), featuring:
- A process list submenu (used to select process to attach when the debugger is enabled)
- A processes patch submenu: patches FS and SM
- A N3DS Clock+L2 submenu (hidden on O3DS)
- A screenshot action. This is slow but it works
- Other various options, see below
- A display of the remaining battery percentage in the bottom right of the screen, and of the Luma3DS commit at the bottom left
- Input redirection:
- Implementation thanks to @Stary2001, based off the work of ShinyQuagsire
- Allows you to control your 3DS using your PC with, for example, an external controller (Xbox360 controller, etc.)
- Should work with every game with minimal lag
- C-stick/ZL/ZR redirection is N3DS-only, possibly only with newer games
- Use this client (compatible with xinput on Windows, evdev on Linux, should be compatible with OSX) or that one
- If you activate this feature in Home Menu, applications will be prevented to disconnect the 3DS from the Internet while they're running. This takes effect until the next boot
- 3DSX loading:
- Thanks to @fincs
- 3DSX files can now be loaded seamlessly, and work just like installed titles (meaning you can use the Home Menu and applets while a 3DSX application is running, use the GDB stub (see below), etc.)!
- No need for *hax payloads anymore!
- By default, the title used to boot
boot.3dsxis hblauncher_loader, but this can be changed at any time (Miscellaneous options > Switch the hb. title to the current app.) : simply launch any title, use that option, close the title ; the next time you launch that title, it will runboot.3dsx - *hax payloads don't work anymore. You'll have to use version of the Homebrew Menu >= 2.0, which can be found here (and in the homebrew starter pack later on)
- Better language emulation:
- Language (and region) emulation should now work for all games
- You can now specify a country (2 letter code) and a state ID (2-digit hex integer), for example:
EUR FR FR 01
- A fully-featured GDB stub:
- Network code and skeleton thanks to @Stary2001
- Can debug up to 3 processes simultaneously (the process to attach to are to be selected in the process list menu)
- Use the process menu when the debugger is enabled to select processes to attach to.
- Use
-lctrudand-lcitro3ddinstead of-lctruand-lcitro3d,-Oginstead of-O2, drop-fomit-frame-pointerbuild debug versions of your own applications. - Compatible with both GDB and IDA PRO:
- The GDB stub requires a patched version of GDB to work, available here (3ds-gdb-* archives), which will get eventually integrated into devkitARM itself.
- The GDB stubs also works with IDA (
Use single-step support, in the specific debugger options prompt, should be unchecked).
- Software breakpoints, 2 hardware watchpoints (globally), all basic features and many more, like
catch syscall,info os, etc. - Can access the
80000000..B0000000strongly ordered mapping (see below) as well as privileged memory - If you activate this feature in Home Menu, applications will be prevented to disconnect the 3DS from the Internet while they're running. This takes effect until the next boot
Now for some developer/technical details:
- A "kernel extension" extending the features of Kernel11 ( ͡° ͜ʖ ͡°):
- New features for existing SVCs, for example:
- New types for
svcGetProcessInfo: 0x10000 to get a process's name, 0x10001 to get a process's title ID, 0x10002 to 0x10007 for section attributes, 0x10008 for TTBR1, etc. - New types for
svcGetSystemInfo: 0x10000 for CFW info, 0x10001 for N3DS-related info, 0x10002 for TTBCR and TTBR0 per core, etc. - New types for
svcGetThreadInfo: 0x10000 for thread local storage - Many other changes not listed here
- New types for
- New SVCs:
- See
csvc.h( ͡° ͜ʖ ͡°) - Indirect SVC:
svc 0xFE
- See
- Debug features:
- SVC permission checks don't exist anymore
- Everything behaves as if the "Allow debug" kernel flags was always set, and
svcKernelSetStateas well as the official debug handlers always believe that the unit is a development one. This is needed for the below item - No need to do
svcKernelSetState(6, 1, 1LL)for user-specified exception handlers anymore. - Numerous fixes of Luma3DS's fatal exception handlers. Moreover, they are now only used either on privileged-mode crashes or when there is no preferred alternative, that are namely: KDebug based-debugging, or user-defined exception handlers.
- New memory mapping:
PA 00000000..30000000 -> VA 80000000..B0000000 [ Priv: RWX, User: RWX ] [ Shared, Strongly Ordered ](accessible from the GDB stub) - Because of memory issues,
ErrDispis not launched;err:fhas been reimplemented.
- New features for existing SVCs, for example:
Minor issues: the menu can sometime freeze in some games (that will be attempted to be fixed before next release), versions < 9.0 haven't been tested.
- Luma is now a proper FIRM with separate arm11, arm9 and modules sections
- Switched to a whitelist for FIRM loading
- It's now possible to boot newer DS flashcarts (the ones appearing in the original DS' main menu) and early DSi flashcarts directly from Home Menu
- Luma now works with NANDs using custom NCSDs/MBRs
- "Enable exception handlers" was removed, since it's always on with Rosalina choosing the best exception reporting method depending on the context
- Luma can now boot on its own as FIRM0/1 (although note this is not recommended or supported at all and we very strongly recommend using boot9strap)
v7.1
- boot9strap support (all older entrypoints, including ARM9LoaderHax and menuhax, are no longer supported).
- Replaced .bin (brahma/a9lh) payload loading with .firm (FIRM format) payloads. This format allows for way more flexibility and is also the only one supported by boot9strap.
- Holding START when only one payload is present directly boots it.
- Small LayeredFS fixes.
v7.0.5
- You can now load code.bin binaries and code.ips patches for system modules and applets.
- Fixed LayeredFS being broken in 7.0.4 with several games (Animal Crossing, Zelda Triforce Heroes and probably more).
- Rewrote a large part of the LayeredFS code, this should allow to properly fix eventual conflicts that arose with extdata and other non-RomFS archives.
v7.0.4
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.
Sorry for the many close releases, but some bugs were discovered regarding LayeredFS.
- Fixed not closing folder handles after checking for "romfs" folders' existence.
- Fixed extdata being redirected in 7.0.3 (could have caused issues if an extdata and a romfs file with the same path and name existed), thanks @mariohackandglitch for discovering this.
- Added displaying title IDs for ARM11 exceptions.
- Sped up the pattern searching for LayeredFS.
- Cleaned up loader's code.
v7.0.3
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.
- LayeredFS compatibility has been improved: update RomFSes which are mounted as "ext:" (such as Taiko no Tatsujin: Don Don! Mystery Adventure) now work.
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
lumafolder is located in/rwand 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™).