NPDM: Difference between revisions

Hiccup (talk | contribs)
No edit summary
Line 29: Line 29:
| 0x0
| 0x0
| 0x4
| 0x4
| Magic "META".
| Magicnum "META"
|-
|-
| 0x4
| 0x4
| 0x8
| 0x8
| Reserved (Padding / Unused)
| Reserved
|-
|-
| 0xC
| 0xC
| 0x1
| 0x1
| MmuFlags, bit0: 64-bit instructions, bits1-3: address space width (1=64-bit, 2=32-bit). Needs to be <= 0xF
| MMU flags (bit0 = use 64-bit instructions, bit1 = use 64-bit address space, bit2 = use 32-bit address space, bit3 = use 32-bit address space without reserved region)
|-
|-
| 0xD
| 0xD
| 0x1
| 0x1
| Reserved (Padding / Unused)
| Reserved
|-
|-
| 0xE
| 0xE
Line 49: Line 49:
| 0xF
| 0xF
| 0x1
| 0x1
| DefaultCpuId
| Main thread core number
|-
|-
| 0x10
| 0x10
Line 57: Line 57:
| 0x14
| 0x14
| 0x4
| 0x4
| [3.0.0+] System resource size (max size as of 5.x: 534773760). The size of PersonalMmHeap.
| [3.0.0+] System resource (PersonalMmHeap) size (max size as of 5.x: 534773760)
|-
|-
| 0x18
| 0x18
| 0x4
| 0x4
| ProcessCategory (0: regular title, 1: kernel built-in). Should be 0 here.
| Process category (0 = regular title, 1 = kernel built-in)
|-
|-
| 0x1C
| 0x1C
| 0x4
| 0x4
| Main entrypoint stack size (Should(?) be page-aligned. In non-nspwn scenarios, values of 0 can also rarely break in Horizon. This might be something auto-adapting or a security feature of some sort?)
| Main thread stack size (Should(?) be page-aligned. In non-nspwn scenarios, values of 0 can also rarely break in Horizon. This might be something auto-adapting or a security feature of some sort?)
|-
|-
| 0x20
| 0x20
Line 77: Line 77:
| 0x40
| 0x40
| 0x30
| 0x30
| Reserved (Padding / Unused)
| Reserved
|-
|-
| 0x70
| 0x70
Line 105: Line 105:
| 0x0
| 0x0
| 0x100
| 0x100
| RSA-2048 signature, seems to verify the data starting at 0x100 with the size field from 0x204.
| RSA-2048 signature over the data starting at 0x100 with the size field from 0x204
|-
|-
| 0x100
| 0x100
| 0x100
| 0x100
| RSA-2048 public key, seems to be used for the second [[NCA_Format|NCA]] signature.
| RSA-2048 public key for the second [[NCA_Format|NCA]] signature
|-
|-
| 0x200
| 0x200
| 0x4
| 0x4
| Magic "ACID".
| Magicnum "ACID"
|-
|-
| 0x204
| 0x204
| 0x4
| 0x4
| s32 Size field used with the above signature(?).
| Data size
|-
|-
| 0x208
| 0x208
| 0x4
| 0x4
| Zeroes
| Reserved
|-
|-
| 0x20C
| 0x20C
| 0x4
| 0x4
| Flags. Bit0 must be 1 on retail, on devunit 0 is also allowed. Bit1 is unknown, set to 1 for ARMS? [5.0.0+] Bit3-2: PoolPartition? For applets set to 0b01, for sysmodules set to 0b10. Exceptions: "starter" is set to 0, "nvservices" is set to 3.
| Flags (bit0 = ProductionFlag, bit1 = UnqualifiedApproval, [5.0.0+] bit2-3: PoolPartition? For applets set to 0b01, for sysmodules set to 0b10. Exceptions: "starter" is set to 0, "nvservices" is set to 3)
|-
|-
| 0x210
| 0x210
Line 161: Line 161:
| 0x238
| 0x238
| 0x8
| 0x8
| Padding
| Reserved
|}
|}


Line 173: Line 173:
| 0x0
| 0x0
| 0x4
| 0x4
| Magic "ACI0".
| Magicnum "ACI0"
|-
|-
| 0x4
| 0x4
| 0xC
| 0xC
| Zeroes
| Reserved
|-
|-
| 0x10
| 0x10
| 0x8
| 0x8
| Title id
| Title ID
|-
|-
| 0x18
| 0x18
| 0x8
| 0x8
| Reserved (Not currently used, potentially to be used for lowest title ID in future.)
| Reserved
|-
|-
| 0x20
| 0x20
Line 213: Line 213:
| 0x38
| 0x38
| 0x8
| 0x8
| Padding
| Reserved
|}
|}


= FS Access Header =
= FS Access Header =
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 226: Line 225:
| 0x0
| 0x0
| 0x1
| 0x1
| Version? Always 1. Must be non-zero.
| Version (always 1, must be non-zero)
|-
|-
| 0x1
| 0x1
Line 238: Line 237:
| 0xC
| 0xC
| 0x4
| 0x4
| Data Size (Always 0x1C)
| Data Size (always 0x1C)
|-
|-
| 0x10
| 0x10
Line 274: Line 273:


= FS Access Control =
= FS Access Control =
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 283: Line 281:
| 0x0
| 0x0
| 0x1
| 0x1
| Version? Always 1. Must be non-zero.
| Version (always 1, must be non-zero)
|-
|-
| 0x1
| 0x1
Line 295: Line 293:
| 0xC
| 0xC
| 0x20
| 0x20
| Usually all zeroes for applications
| Reserved
|}
|}


Line 302: Line 300:
|-
|-
! Bit
! Bit
! Name
! Description
! Description
|-
|-
| 0
| 0
| ApplicationInfo
| MountContent* is accessible when set.
| MountContent* is accessible when set.
|-
| 1
| BootModeControl
|
|-
| 2
| Calibration
|
|-
| 3
| SystemSaveData
|
|-
| 4
| GameCard
|
|-
| 5
| SaveDataBackUp
|
|-
| 6
| SaveDataManagement
|
|-
| 7
| BisAllRaw
|
|-
| 8
| GameCardRaw
|
|-
| 9
| GameCardPrivate
|
|-
| 10
| SetTime
|
|-
| 11
| ContentManager
|
|-
| 12
| ImageManager
|
|-
| 13
| CreateSaveData
|
|-
| 14
| SystemSaveDataManagement
|
|-
| 15
| BisFileSystem
|
|-
| 16
| SystemUpdate
|
|-
| 17
| SaveDataMeta
|
|-
| 18
| DeviceSaveData
|
|-
| 19
| SettingsControl
|
|-
| 20
|
|
|-
| 21
|
|
|-
| 22
|
|
|-
| 23
|
|
|-
| 24
|
|
|-
| 25
|
|
|-
| 26
|
|
|-
| 27
|
|
|-
| 28
|
|
|-
| 29
|
|
|-
| 30
|
|
|-
| 31
|
|
|-
| 32
|
|
|-
| 33
|
|
|-
|-
| 34
| 34
|
| Enables access to [[Filesystem_services|Bis]] partitionID 27 and 28?
| Enables access to [[Filesystem_services|Bis]] partitionID 27 and 28?
|-
| 35-61
| Reserved
|
|-
| 62
| Debug
| See [[SPL_services#GetConfig|here]].
|-
|-
| 63
| 63
| Enables access to everything: all [[Filesystem_services#Permissions|permission-types]] which check a bitmask have this bit set.
| FullPermission
| Enables access to everything: all [[Filesystem_services#Permissions|permission types]] which check a bitmask have this bit set.
|}
|}
For bit62 in permissions, see [[SPL_services#GetConfig|here]].


Web-applets permissions:
Web-applets permissions:
Line 425: Line 565:
|}
|}


Bit31-19: Major version
Bit31-19: Major version</br>
Bit18-15: Minor version
Bit18-15: Minor version</br>
Bit14-0: Zeroes
Bit14-0: Zeroes