RO Services

Revision as of 12:35, 18 September 2024 by ElementW (talk | contribs) (Add anchors)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

RO service "ldr:ro"Edit

Command Header Available since system version Description
0x000100C2 2.0.0-2 Initialize
0x00020082 2.0.0-2 LoadCRR
0x00030042 2.0.0-2 UnloadCRR
0x000402C2 2.0.0-2 LoadCRO
0x000500C2 2.0.0-2 UnloadCRO
0x00060042 2.0.0-2 LinkCRO
0x00070042 2.0.0-2 UnlinkCRO
0x00080042 2.0.0-2 Shutdown
0x000902C2 7.2.0-17 LoadCRO_New

The mapadress used in these services is calculated by the user-process like so: when inputaddr is <0x08000000, the address used is the same one from inputaddr. Otherwise, the address is: mapvaddr = inputaddr - (0x08000000 - <main-process .text address + .text, .rodata, .data, and .bss size aligned to pagesize>). This service API is used for CTR "DLLs"/shared libraries: CRO.

Error CodesEdit

Error Code Description
D9012FF1 Address is misaligned
E0A12FF9 Service is already Initialized
E1612FF7 Provided Kernel Handle is invalid

Version historyEdit

Version Changes
v0 Initial version.
v1024 Removed access for SVC's: 5,7,D,E,10.

Cmd5 now sets the last segment in the CRO binary to R-X when it's done.

Maybe more.

v2049 No changes.
v3074 Added cmd9.
v4096 No changes.
v5120 No actual changes, just a rebuild with latest CTRSDK(only the CTRSDK version values in .code for ErrDisp were updated).