By entering this site you need to consent to the use of cookies and their functional use according to this privacy policy. Cookies help us to provide the functional services of the website. Kindly read the below message of use and consent to the use.
The following cookies are stored and shared when accessing this website:
- Internal cookies for the MediaWiki site. This is used for user authentication and article modifications.
- Third-party cookies from Google providing services for Google AdSense and Google Analytics
We will never use data collected outside of the above scope.
This section documents the AOT NRO. There are only two symbols from NRO which the main-codebin does lookup for and uses: "SetGekkoMemoryPointer" and "GetStatifierInfo".
+
+
During initialization, <code>nn::os::AllocateAddressRegion</code> is used with size 0x100200000. Then <code>nn::os::AllocateMemoryPages</code> is used (which uses [[SVC#MapPhysicalMemory|svcMapPhysicalMemory]]):
+
* base+0 size 0x1000 is allocated.
+
* base+0x80000000 size 0x1800000 is allocated.
+
* base+0xE0000000 size 0x4000 is allocated.
+
* base+0xFFF00000 size 0x200000 is allocated.
+
+
Initially SetGekkoMemoryPointer is called with base+0x80000000, however at some point it's called (?) with base+0.
+
+
The AOT NRO does all main-memory accesses by accessing {global ptr set by SetGekkoMemoryPointer}+{ppc_addr}. Therefore, above base+0 == ppc_addr 0x0. Since svcMapPhysicalMemory is used above, attempting to access any PPC-addrs not in the allocated regions above will result in the emulator crashing due to accessing unmapped memory - accessing non-PPC emulator data with invalid PPC-addrs is not possible. These crashes may happen when attempting to run a different .dol with the emulator as previously mentioned.