RO Services
RO service "ldr:ro"
| 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 Codes
| Error Code | Description |
|---|---|
| D9012FF1 | Address is misaligned |
| E0A12FF9 | Service is already Initialized |
| E1612FF7 | Provided Kernel Handle is invalid |
Version history
| 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). |