That’s right everyone! The widely used Luma3DS has an update, and we’re here to tell you all about it. Before we jump into the details, it is absolutely worth mentioning that yes, ‘You’ll need to upgrade to boot9strap v1.2 or higher.’ Before you think to yourself that that isn’t anything you want to do and do not want to update to Luma3DS 8.0 for that reason, hear me out. Read the rest, because as the description of Luma3DS states, ‘Luma3DS is a Noob-proof (N)3DS “Custom Firmware”.’ So it’s definitely worth your time!
At the time of the writing of this, the tweet popped up from dev Tux within the last hour. Take a look at his fun way of announcing Luma3DS 8.0’s release!
https://twitter.com/TuxSH/status/871529767539027968
Luma3DS 8.0 “Rosalina” boasts a hellacious amount of new features, improvements, and bug fixes.
- ‘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.3dsx
is 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
-lctrud
and-lcitro3dd
instead of-lctru
and-lcitro3d
,-Og
instead of-O2
, drop-fomit-frame-pointer
build debug versions of your own applications. - Compatible with both GDB and IDA PRO:
- The GDB stub requires a patch to work. This patch will get eventually integrated into devkitARM.
- Use this patch applied on GDB 7.11 then build using
./configure --prefix=<where you want> --target=arm-none-eabi --disable-werror --with-python --without-guile --with-ncurses --with-expat
, or use this Windows 64-bit build of patched GDB 7.12.
- Use this patch applied on GDB 7.11 then build using
- The GDB stubs also works with IDA (
Use single-step support
, in the specific debugger options prompt, should be unchecked).
- The GDB stub requires a patch to work. This patch will get eventually integrated into devkitARM.
- Software breakpoints, 2 hardware watchpoints (globally), all basic features and many more, like
catch syscall
,info os
, etc. - Can access the
80000000..B0000000
strongly 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.’
The github page for Luma3DS 8.0 even goes into further technical details for those hackers, modders, technies, nerds, geeks, and tinkerers that love crazy deep info like that:
- ‘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
svcKernelSetState
as 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,
ErrDisp
is not launched;err:f
has been reimplemented.’
Lastly, Tux mentions that there are still ‘Minor issues: the menu can sometimes freeze in some games (that will be attempted to be fixed before next release), versions < 9.0 haven’t been tested.’ But he goes onto mention some last major improvements and great features for those who are still reading this far down on the page:
- ‘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)’
If you’re looking for the download link for Luma3DS 8.0 or just want to know more about the release overall, click here.
Stay tuned on Hackinformer.com for all things 3DS and follow us on Twitter @Hackinformer