Line 9: |
Line 9: |
| All values are little endian unless otherwise specified. | | All values are little endian unless otherwise specified. |
| | | |
− | See also: [https://github.com/profi200/Project_CTR/blob/master/ctrtool/exheader.h] | + | See also: [https://github.com/3DSGuy/Project_CTR/blob/20f708450b9c6e7f64eafa6c2a8eeb25a630c69a/ctrtool/exheader.h] |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 51: |
Line 51: |
| | <code>0x0</code> | | | <code>0x0</code> |
| | <code>0x8</code> | | | <code>0x8</code> |
− | | Application title | + | | Application title (default is "CtrApp") |
| |- | | |- |
| | <code>0x8</code> | | | <code>0x8</code> |
Line 91: |
Line 91: |
| | <code>0x40</code> | | | <code>0x40</code> |
| | <code>0x180</code> (<code>48*8</code>) | | | <code>0x180</code> (<code>48*8</code>) |
− | | Dependency module (program ID) list | + | | Dependency [[Title list#00040130 - System Modules|module]] (program ID) list |
| |- | | |- |
| | <code>0x1C0</code> | | | <code>0x1C0</code> |
Line 225: |
Line 225: |
| |- | | |- |
| | <code>4-7</code> | | | <code>4-7</code> |
− | | System mode | + | | Old3DS system mode |
| + | |} |
| + | |
| + | ===== Old3DS System Mode ===== |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value |
| + | ! Description |
| + | |- |
| + | | <code>0</code> |
| + | | <code>Prod</code> (64MB of usable application memory) |
| + | |- |
| + | | <code>1</code> |
| + | | <code>Undefined</code> (unusable) |
| + | |- |
| + | | <code>2</code> |
| + | | <code>Dev1</code> (96MB of usable application memory) |
| + | |- |
| + | | <code>3</code> |
| + | | <code>Dev2</code> (80MB of usable application memory) |
| + | |- |
| + | | <code>4</code> |
| + | | <code>Dev3</code> (72MB of usable application memory) |
| + | |- |
| + | | <code>5</code> |
| + | | <code>Dev4</code> (32MB of usable application memory) |
| + | |- |
| + | | <code>6-7</code> |
| + | | <code>Undefined</code> Same as <code>Prod</code>? |
| |} | | |} |
| | | |
Line 263: |
Line 291: |
| |- | | |- |
| | <code>0-3</code> | | | <code>0-3</code> |
− | | ''Unknown'' | + | | New3DS system mode |
| |- | | |- |
| | <code>4-7</code> | | | <code>4-7</code> |
Line 269: |
Line 297: |
| |} | | |} |
| | | |
− | The exheader value for the above 4-bit value must be ≤ to the <code>AccessDesc</code> value, otherwise the invalid-exheader error is returned. | + | ===== New3DS System Mode ===== |
| + | {| class="wikitable" border="1" |
| + | |- |
| + | ! Value |
| + | ! Description |
| + | |- |
| + | | <code>0</code> |
| + | | <code>Legacy</code> (use Old3DS system mode) |
| + | |- |
| + | | <code>1</code> |
| + | | <code>Prod</code> (124MB of usable application memory) |
| + | |- |
| + | | <code>2</code> |
| + | | <code>Dev1</code> (178MB of usable application memory) |
| + | |- |
| + | | <code>3</code> |
| + | | <code>Dev2</code> (124MB of usable application memory) |
| + | |- |
| + | | <code>4-7</code> |
| + | | <code>Undefined</code> Same as <code>Prod</code>? |
| + | |} |
| + | |
| + | When in <code>Legacy</code> mode, the actual memory layout is the same as in <code>New3DS Prod</code>, except the available application memory as reported to the application is reduced to the Old3DS size. |
| + | |
| + | The exheader value for the New3DS system mode value must be ≤ to the <code>AccessDesc</code> value, otherwise the invalid-exheader error is returned. |
| | | |
| ==== Storage Info ==== | | ==== Storage Info ==== |
Line 442: |
Line 494: |
| |- | | |- |
| | <code>0b11111111100x</code> | | | <code>0b11111111100x</code> |
− | | Mapping static address | + | | Map IO/static address range |
− | | | + | | Describes a memory mapping like the 0b111111111110 descriptor, but an entire range rather than a single page is mapped. Another 0b11111111100x descriptor must follow this one to denote the (exclusive) end of the address range to map. Bit20 on the first descriptor: map read-only (otherwise RW), bit20 on the second descriptor: map static (cacheable, otherwise IO if the bit is not set) |
| |- | | |- |
| | <code>0b111111111110</code> | | | <code>0b111111111110</code> |
− | | Mapping IO address | + | | Map IO memory page |
− | | Bits 0-19: IO page index to map; Bit 20: Map read-only (otherwise read-write) | + | | Bits 0-19: page index to map (virtual address >> 12; the physical address is determined per-page according to [[Memory layout]]); Bit 20: Map read-only (otherwise read-write) |
| |} | | |} |
| | | |