|
|
Line 1: |
Line 1: |
| {| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em;" | | {| class="wikitable" |
| |- style="background-color: #ddd;" | | |- |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Start Address'''
| | ! Start Address |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''End Address'''
| | ! End Address |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Physical Address'''
| | ! Physical Address |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Size'''
| | ! Size |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Description'''
| | ! Description |
| | | |- |
| |- style="background-color: #ddd;" | | | 0x80000000 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80000000
| | | 0x817FFFFF |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x817FFFFF
| | | 0x00000000 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00000000
| | | 24 MB |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 24 MB
| | | MEM1 Memory (Cached) |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | MEM1 Memory (Cached)
| | |- |
| | | | 0xC0000000 |
| |- style="background-color: #ddd;" | | | 0xC17FFFFF |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0xC0000000
| | | 0x00000000 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0xC17FFFFF
| | | 24 MB |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00000000
| | | MEM1 Memory (Uncached) |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 24 MB
| | |- |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | MEM1 Memory (Uncached)
| | | 0x90000000 |
| | | | 0x93FFFFFF |
| |- style="background-color: #ddd;" | | | 0x10000000 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x90000000
| | | 64 MB |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x93FFFFFF
| | | MEM2 Memory (Cached) |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x10000000
| | |- |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 64 MB
| | | 0xD0000000 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | MEM2 Memory (Cached)
| | | 0xD3FFFFFF |
| | | | 0x10000000 |
| |- style="background-color: #ddd;" | | | 64 MB |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0xD0000000
| | | MEM2 Memory (Uncached) |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0xD3FFFFFF
| | |- |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x10000000
| | | 0xCD000000 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 64 MB
| | | 0xCD008000 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | MEM2 Memory (Uncached)
| | | 0x0D000000 |
| | | | |
| |- style="background-color: #ddd;" | | | Hardware Registers (shared with Starlet) |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0xCD000000
| |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0xCD008000
| |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x0D000000
| |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" |
| |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Hardware Registers (shared with Starlet)
| |
| |} | | |} |
|
| |
|
Line 47: |
Line 42: |
| '''Broadway / IOS Global Memory Locations''' | | '''Broadway / IOS Global Memory Locations''' |
|
| |
|
| {| style="border-collapse: collapse; padding: 0.2em 0.2em 0.2em 0.2em;" | | {| class="wikitable" |
| |- style="background-color: #ddd;" | | |- |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Address'''
| | ! Address |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Size'''
| | ! Size |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Value'''
| | ! Value |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #ddd;" | '''Description'''
| | ! Description |
| | | |- |
| |- style="background-color: #ddd;" | | | 0x80000000 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80000000
| | | 6 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 6
| | | 0x525350453031 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x525350453031
| | | Game Code 'RSPE01' (Wii Sports) |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Game Code 'RSPE01' (Wii Sports)
| | |- |
| |- style="background-color: #ddd;" | | | 0x80000018 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80000018
| | | 4 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4
| | | 0x5D1C9EA3 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x5D1C9EA3
| | | Wii Game ID |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Wii Game ID
| | |- |
| |- style="background-color: #ddd;" | | | 0x80000020 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80000020
| | | 4 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4
| | | 0x0D15EA5E |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x0D15EA5E
| | | Nintendo Standard Boot Code. |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Nintendo Standard Boot Code.
| | |- |
| |- style="background-color: #ddd;" | | | 0x80000024 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80000024
| | | 4 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4
| | | 0x00000001 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00000001
| | | Unknown |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Unknown
| | |- |
| |- style="background-color: #ddd;" | | | 0x80000028 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80000028
| | | 4 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4
| | | 0x01800000 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x01800000
| | | Memory Size (Physical) 24MB |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Memory Size (Physical) 24MB
| | |- |
| |- style="background-color: #ddd;" | | | 0x8000002C |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x8000002C
| | | 4 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4
| | | 0x00000023 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00000023
| | | Production Board Model |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Production Board Model
| | |- |
| |- style="background-color: #ddd;" | | | 0x80000030 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80000030
| | | 4 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4
| | | 0x00000000 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00000000
| | | Arena Low |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Arena Low
| | |- |
| |- style="background-color: #ddd;" | | | 0x80000034 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80000034
| | | 4 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4
| | | 0x817FEC60 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x817FEC60
| | | Arena High |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Arena High
| | |- |
| |- style="background-color: #ddd;" | | | 0x80000038 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80000038
| | | 4 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4
| | | 0x817FEC60 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x817FEC60
| | | Start of FST (varies in all games) |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Start of FST (varies in all games)
| | |- |
| |- style="background-color: #ddd;" | | | 0x8000003C |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x8000003C
| | | 4 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4
| | | 0x00001394 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00001394
| | | Maximum FST Size (varies in all games) |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Maximum FST Size (varies in all games)
| | |- |
| |- style="background-color: #ddd;" | | | 0x80000060 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80000060
| | | 0x24 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x24
| | | Copyright code |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Copyright code
| | | Hook is PPC assembler used by Debugger |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Hook is PPC assembler used by Debugger
| | |- |
| |- style="background-color: #ddd;" | | | 0x800000EC |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x800000EC
| | | 4 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4
| | | 0x81800000 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x81800000
| | | Dev Debugger Monitor Address (If present) |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Dev Debugger Monitor Address (If present)
| | |- |
| |- style="background-color: #ddd;" | | | 0x800000F0 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x800000F0
| | | 4 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4
| | | 0x01800000 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x01800000
| | | Simulated Memory Size |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Simulated Memory Size
| | |- |
| |- style="background-color: #ddd;" | | | 0x800000F4 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x800000F4
| | | 4 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4
| | | 0x00000000 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00000000
| | | BI2 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | BI2
| | |- |
| |- style="background-color: #ddd;" | | | 0x800000F8 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x800000F8
| | | 4 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4
| | | 0x0E7BE2C0 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x0E7BE2C0
| | | Console Bus Speed |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Console Bus Speed
| | |- |
| |- style="background-color: #ddd;" | | | 0x800000FC |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x800000FC
| | | 4 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4
| | | 0x2B73A840 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x2B73A840
| | | Console CPU Speed |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Console CPU Speed
| | |- style="background-color: #fdd;" |
| |- style="background-color: #dee;" | | | 0x80001800 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #fdd;" | 0x80001800
| | | 0x1800 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #fdd;" | 0x1800
| | | |
| | 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="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;" | | | 0x800030F0 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x800030F0
| | | 4 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4
| | | 0x00000000 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00000000
| | | DOL Execute Parameters |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | DOL Execute Parameters
| | |- |
| |- style="background-color: #ddd;" | | | 0x80003130 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80003130
| | | 8 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 8
| | | 0x933E0000, 0x93400000 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x933E0000, 0x93400000
| | | IOS Heap Range |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | IOS Heap Range
| | |- |
| |- style="background-color: #ddd;" | | | 0x80003138 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80003138
| | | 4 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4
| | | 0x00000011 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00000011
| | | Hollywood Version |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Hollywood Version
| | |- |
| |- style="background-color: #ddd;" | | | 0x80003140 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80003140
| | | 8 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 8
| | | 0x00090204,0x00062507 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00090204,0x00062507
| | | IOS version |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | IOS version
| | |- |
| |- style="background-color: #ddd;" | | | 0x80003158 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80003158
| | | 4 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4
| | | 0x0000FF16 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x0000FF16
| | | GDDR Vendor Code |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | GDDR Vendor Code
| | |- |
| |- style="background-color: #ddd;" | | | 0x80003180 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80003180
| | | 4 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4
| | | 0x52535045 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x52535045
| | | Game ID 'RSPE' Wii Sports ID. If these 4 bytes don't match the ID at 80000000, offline mode in games is disabled. |
| | 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;" | | | 0x80003184 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80003184
| | | 4 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4
| | | 0x80000000 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80000000
| | | Game ID address |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Game ID address
| | |- |
| |- style="background-color: #ddd;" | | | 0x8000318C |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x8000318C
| | | 4 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4
| | | 0x00000000 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00000000
| | | Title Booted from NAND (Launch Code) |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Title Booted from NAND (Launch Code)
| | |- |
| |- style="background-color: #ddd;" | | | 0x80003190 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x80003190
| | | 4 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 4
| | | 0x00000000 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | 0x00000000
| | | Title Booted from NAND (Return Code) |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #dde;" | Title Booted from NAND (Return Code)
| | |- style="background-color: #fdd;" |
| |- style="background-color: #dee;" | | | 0x80003400 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #fdd;" | 0x80003400
| | | 0x100 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #fdd;" | 0x100
| | | |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #fdd;" |
| | | NAND boot vector (Broadway initialization code from nandloader, entry point for NAND applications) |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #fdd;" | NAND boot vector (Broadway initialization code from nandloader, entry point for NAND applications)
| |
| |- style="background-color: #eed;" | | |- style="background-color: #eed;" |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | 0x80003F00
| | | 0x80003F00 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | 0x132c100 (~19.2MB)
| | | 0x132c100 (~19.2MB) |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" |
| | | |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #eed;" | Standard application executable area
| | | Standard application executable area |
| |- style="background-color: #dee;" | | |- style="background-color: #fdd;" |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #fdd;" | 0x81330000
| | | 0x81330000 |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #fdd;" | 0x4d0000 (~4.8MB)
| | | 0x4d0000 (~4.8MB) |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #fdd;" |
| | | |
| | style="border: 1px solid #ccc; padding: 0.2em; background-color: #fdd;" | Loader executable area
| | | 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. | | 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. |
| [[Category:Wii_Hardware]] | | [[Category:Wii_Hardware]] |