Memory map: Difference between revisions
m the apploader doesn't read the disk ID to 0x80000000 |
mNo edit summary |
||
| Line 82: | Line 82: | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4 | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4 | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00000000 | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00000000 | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Arena Low | ||
|- style="background-color: #ddd;" | |- style="background-color: #ddd;" | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80000034 | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80000034 | ||
| Line 92: | Line 92: | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4 | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4 | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x817FEC60 | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x817FEC60 | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Start of FST ( | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Start of FST (varies in all games) | ||
|- style="background-color: #ddd;" | |- style="background-color: #ddd;" | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x8000003C | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x8000003C | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4 | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4 | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00001394 | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00001394 | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Maximum FST Size (varies in all games) | ||
|- style="background-color: #ddd;" | |- style="background-color: #ddd;" | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80000060 | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80000060 | ||
| Line 117: | Line 117: | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4 | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4 | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00000000 | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00000000 | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | BI2 | ||
|- style="background-color: #ddd;" | |- style="background-color: #ddd;" | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x800000F8 | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x800000F8 | ||
| Line 132: | Line 132: | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fdd;" | 0x1800 | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #fdd;" | 0x1800 | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fdd;" | | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #fdd;" | | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #fdd;" | | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #fdd;" | Unused Exception Vector area often used for loader stubs and reloaders as this area is never cleared or used. | ||
|- style="background-color: #ddd;" | |- style="background-color: #ddd;" | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x800030F0 | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x800030F0 | ||
| Line 162: | Line 162: | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4 | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4 | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x52535045 | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x52535045 | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Game ID 'RSPE' Wii Sports ID | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Game ID 'RSPE' Wii Sports ID. If these 4 bytes don't match the ID at 80000000, offline mode in games is disabled. | ||
|- style="background-color: #ddd;" | |- style="background-color: #ddd;" | ||
| style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80003184 | | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80003184 | ||
Revision as of 07:23, 29 June 2008
| Start Address | End Address | Size | Description |
| 0x80000000 | 0x817FFFFF | 24 MB | MEM1 Memory (Cached) |
| 0xC0000000 | 0xC17FFFFF | 24 MB | MEM1 Memory (Uncached) |
| 0x90000000 | 0x93FFFFFF | 64 MB | MEM2 Memory (Cached) |
| 0xD0000000 | 0xD3FFFFFF | 64 MB | MEM2 Memory (Uncached) |
| 0xCD000000 | 0xCD008000 | Hardware Registers |
The IOS Heap range is 0x933E0000-0x93400000 it is shown in registers 0x80003130(Start), 0x80003130(End). The top of MEM2 memory is allocated to Starlet. You can access this memory by disabling memory protection via hardware registers in Starlet. (See Starlet Register List. TODO).
Broadway / IOS Global Memory Locations
| Address | Size | Value | Description |
| 0x80000000 | 6 | 0x525350453031 | Game Code 'RSPE01' (Wii Sports) |
| 0x80000018 | 4 | 0x5D1C9EA3 | Wii Game ID |
| 0x80000020 | 4 | 0x0D15EA5E | Nintendo Standard Boot Code. |
| 0x80000024 | 4 | 0x00000001 | Unknown |
| 0x80000028 | 4 | 0x01800000 | Memory Size (Physical) 24MB |
| 0x8000002C | 4 | 0x00000023 | Production Board Model |
| 0x80000030 | 4 | 0x00000000 | Arena Low |
| 0x80000034 | 4 | 0x817FEC60 | Arena High |
| 0x80000038 | 4 | 0x817FEC60 | Start of FST (varies in all games) |
| 0x8000003C | 4 | 0x00001394 | Maximum FST Size (varies in all games) |
| 0x80000060 | 0x24 | Copyright code | Hook is PPC assembler used by Debugger |
| 0x800000EC | 4 | 0x81800000 | Dev Debugger Monitor Address (If present) |
| 0x800000F0 | 4 | 0x01800000 | Simulated Memory Size |
| 0x800000F4 | 4 | 0x00000000 | BI2 |
| 0x800000F8 | 4 | 0x0E7BE2C0 | Console Bus Speed |
| 0x800000FC | 4 | 0x2B73A840 | Console CPU Speed |
| 0x80001800 | 0x1800 | Unused Exception Vector area often used for loader stubs and reloaders as this area is never cleared or used. | |
| 0x800030F0 | 4 | 0x00000000 | DOL Execute Parameters |
| 0x80003130 | 8 | 0x933E0000, 0x93400000 | IOS Heap Range |
| 0x80003138 | 4 | 0x00000011 | Hollywood Version |
| 0x80003140 | 8 | 0x00090204,0x00062507 | IOS version |
| 0x80003158 | 4 | 0x0000FF16 | GDDR Vendor Code |
| 0x80003180 | 4 | 0x52535045 | Game ID 'RSPE' Wii Sports ID. If these 4 bytes don't match the ID at 80000000, offline mode in games is disabled. |
| 0x80003184 | 4 | 0x80000000 | Unknown Flag (Set by Apploader) |
| 0x8000318C | 4 | 0x00000000 | Title Booted from NAND (Launch Code) |
| 0x80003190 | 4 | 0x00000000 | Title Booted from NAND (Return Code) |
| 0x80003400 | 0x100 | NAND boot vector (Broadway initialization code from nandloader) | |
| 0x80003F00 | 0x132c100 (~19.2MB) | Standard application executable area | |
| 0x81330000 | 0x4d0000 (~4.8MB) | Loader executable area |
Applications should use the 0x80003F00 - 0x81330000 area for executable code and data loaded as part of their ELF/DOL, while loaders should use from 0x81330000 onwards. Applications can use the loader area and MEM2 as data work space once they are running, but they should restrict the sections contained in the DOL or ELF to the executable area only, since MEM2 is reserved as work area for the loader at that time. To preserve "return to loader" functionality, applications should never use the 0x80001800-0x80003000 area.