dev features

Yuuki Hikari 2017-11-22 18:07:39 -05:00
parent dc19f13b6d
commit 10419eb580

@ -15,4 +15,42 @@
* Navigate to where your kept your exception dump and run `luma3ds_exception_dump_parser FILE_NAME_HERE.dmp` * Navigate to where your kept your exception dump and run `luma3ds_exception_dump_parser FILE_NAME_HERE.dmp`
* **NTR/TWL cart whitelist patches:** The Home Menu and TWL_FIRM whitelist for DS carts have been patched out; if your 3DS flashcart shows in the original Nintendo DSi Home Menu, it should work with a 3DS running Luma. Additionally, very old DS carts that did not show in the DSi Home Menu can be booted with homebrew such as [NTR Launcher](https://github.com/ApacheThunder/NTR_Launcher). * **NTR/TWL cart whitelist patches:** The Home Menu and TWL_FIRM whitelist for DS carts have been patched out; if your 3DS flashcart shows in the original Nintendo DSi Home Menu, it should work with a 3DS running Luma. Additionally, very old DS carts that did not show in the DSi Home Menu can be booted with homebrew such as [NTR Launcher](https://github.com/ApacheThunder/NTR_Launcher).
* **Region-free patches:** The region lock preventing foreign/imported 3DS games from working has been removed. Carts from the NA (North America), EU (Europe), JP (Japan), KOR (Korea), TWN (Taiwan, Hong Kong), and CHN (mainland China) regions should work without issue on any region firmware with Luma, eliminating the need to perform region changes. **Note:** CHN/TWN/KOR 3DSes use a different shared font archive than NA/EU/JP. It may be necessary to install the other regions' shared font archives if your out of region game does not work. * **Region-free patches:** The region lock preventing foreign/imported 3DS games from working has been removed. Carts from the NA (North America), EU (Europe), JP (Japan), KOR (Korea), TWN (Taiwan, Hong Kong), and CHN (mainland China) regions should work without issue on any region firmware with Luma, eliminating the need to perform region changes. **Note:** CHN/TWN/KOR 3DSes use a different shared font archive than NA/EU/JP. It may be necessary to install the other regions' shared font archives if your out of region game does not work.
* **Signature check patches:** Most signature checks performed by Horizon (the 3DS operating system) have been patched out, allowing unsigned code/homebrew to run without issue. * **Signature check patches:** Most signature checks performed by Horizon (the 3DS operating system) have been patched out, allowing unsigned code/homebrew to run without issue.
## Developer features
These features are useful for debugging and writing homebrew; typically they will not be useful for the end user.
* 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 to be listed here.
* **New SVCs:**
* **svcControlService():** Performs actions related to services or global handles.
* **SERVICEOP_STEAL_CLIENT_SESSION:** Steal a client session given a service or global port name
* **SERVICEOP_GET_NAME:** Get the name of a service or global port given a client or session handle
* **svcCustomBackdoor():** Executes a function in supervisor mode, using the supervisor-mode stack.
* **svcConvertVAToPA():** Gives the physical address corresponding to a virtual address.
* **svcFlushDataCacheRange():** Flushes a range of the data cache (L2C included).
* **svcFlushEntireDataCache():** Flushes the data cache entirely (L2C included).
* **svcInvalidateInstructionCacheRange():** Invalidates a range of the instruction cache.
* **svcInvalidateEntireInstructionCache():** Invalidates the instruction cache entirely.
* **svcMapProcessMemoryEx:** Maps a block of process memory.
* **svcUnmapProcessMemoryEx:** Unmaps a block of process memory.
* **svcControlMemoryEx:** Controls memory mapping, with the choice to use region attributes or not.
* **svcCopyHandle:** Copy a handle from a process to another one.
* **svcTranslateHandle:** Get the address and class name of the underlying kernel object corresponding to a handle.
* **Indirect SVC:** svc 0xFE
* [See csvc.h](https://github.com/AuroraWright/Luma3DS/blob/master/sysmodules/rosalina/include/csvc.h) for more information.
* **Debug features:**
* 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.
* Luma3DS' fatal exception handlers are now only used either on privileged-mode crashes or when there is no preferred alternative, 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.**