Changes

Jump to navigation Jump to search
1,936 bytes added ,  13:47, 20 August 2019
m
no edit summary
Line 29: Line 29:  
| 0x0
 
| 0x0
 
| 0x4
 
| 0x4
| Magic "META".
+
| Magicnum "META"
 
|-
 
|-
 
| 0x4
 
| 0x4
|
  −
|
  −
|-
   
| 0x8
 
| 0x8
|
+
| 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, bit4 = optimize memory allocation?)
 +
|-
 +
| 0xD
 +
| 0x1
 +
| Reserved
 
|-
 
|-
 
| 0xE
 
| 0xE
 
| 0x1
 
| 0x1
| MainThreadPrio
+
| Main thread priority (0-63)
 
|-
 
|-
 
| 0xF
 
| 0xF
 
| 0x1
 
| 0x1
| DefaultCpuId
+
| Main thread core number
 
|-
 
|-
 
| 0x10
 
| 0x10
|
+
| 0x4
|
+
| Reserved
 +
|-
 +
| 0x14
 +
| 0x4
 +
| [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.
+
| Version (0 for all titles prior to [[8.1.0]], 1 for certain titles since).
 
|-
 
|-
 
| 0x1C
 
| 0x1C
 
| 0x4
 
| 0x4
| MainStackSize
+
| 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
| ?
+
| 0x10
| Title name
+
| Title name (usually/always "Application")
 +
|-
 +
| 0x30
 +
| 0x10
 +
| Product code (usually/always all zeroes)
 +
|-
 +
| 0x40
 +
| 0x30
 +
| Reserved
 
|-
 
|-
 
| 0x70
 
| 0x70
Line 93: 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? Bit2 is set for applets with [5.0.0+], bit3 is set for sysmodules with [5.0.0+].
+
| 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 149: Line 161:  
| 0x238
 
| 0x238
 
| 0x8
 
| 0x8
| Padding
+
| Reserved
 
|}
 
|}
   Line 161: 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
| Lowest allowed title id? Always 0?
+
| Reserved
 
|-
 
|-
 
| 0x20
 
| 0x20
Line 201: Line 213:  
| 0x38
 
| 0x38
 
| 0x8
 
| 0x8
| Padding
+
| Reserved
 
|}
 
|}
    
= FS Access Header =
 
= FS Access Header =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 214: Line 225:  
| 0x0
 
| 0x0
 
| 0x1
 
| 0x1
| Version? Always 1. Must be non-zero.
+
| Version (always 1, must be non-zero)
 
|-
 
|-
 
| 0x1
 
| 0x1
Line 226: Line 237:  
| 0xC
 
| 0xC
 
| 0x4
 
| 0x4
| Usually 0x1C
+
| Data Size (always 0x1C)
 
|-
 
|-
 
| 0x10
 
| 0x10
 
| 0x4
 
| 0x4
| Usually 0x0
+
| Size of Content Owner ID section.
 
|-
 
|-
 
| 0x14
 
| 0x14
 
| 0x4
 
| 0x4
| Usually 0x1C
+
| Data size (0x1C) plus Content Owner size
 
|-
 
|-
 
| 0x18
 
| 0x18
 
| 0x4
 
| 0x4
| Usually 0x0
+
| Size of Save Data owners section (for applications that wish to share save data?)
 +
|-
 +
| 0x1C
 +
| 0x4
 +
| (OPTIONAL) Amount of content owner id's
 
|-
 
|-
 +
| 0x1C
 +
| 0x8 * Content Owner ID's
 +
| Content owner ID's as uint64's.
 +
|-
 +
| VARIABLE
 +
| 0x4
 +
| Amount of save owner id's
 +
|-
 +
| VARIABLE
 +
| 0x1 * Save data owner accessibilities (?)
 +
| Sets flags for what save data owners can do with other applications save data (?)
 +
|-
 +
| VARIABLE (Pad to nearest 4 bytes)
 +
| 0x8 * Amount of save owner ID's
 +
| Save data owner ID's
 
|}
 
|}
    
= FS Access Control =
 
= FS Access Control =
   
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 252: Line 281:  
| 0x0
 
| 0x0
 
| 0x1
 
| 0x1
| Version? Always 1. Must be non-zero.
+
| Version (always 1, must be non-zero)
 
|-
 
|-
 
| 0x1
 
| 0x1
Line 264: Line 293:  
| 0xC
 
| 0xC
 
| 0x20
 
| 0x20
| Usually all zeroes for applications
+
| Reserved
 
|}
 
|}
   Line 271: Line 300:  
|-
 
|-
 
! Bit
 
! Bit
 +
! Name
 
! Description
 
! Description
 
|-
 
|-
 
| 0
 
| 0
 +
| ApplicationInfo
 
| MountContent* is accessible when set.
 
| MountContent* is accessible when set.
 
|-
 
|-
| 34
+
| 1
| Enables access to [[Filesystem_services|Bis]] partitionID 27 and 28?
+
| 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
 +
| SystemData
 +
|
 +
|-
 +
| 21
 +
| SdCard
 +
|
 +
|-
 +
| 22
 +
| Host
 +
|
 +
|-
 +
| 23
 +
| FillBis
 +
|
 +
|-
 +
| 24
 +
| CorruptSaveData
 +
|
 +
|-
 +
| 25
 +
| SaveDataForDebug
 +
|
 +
|-
 +
| 26
 +
| FormatSdCard
 +
|
 +
|-
 +
| 27
 +
| GetRightsId
 +
|
 +
|-
 +
| 28
 +
| RegisterExternalKey
 +
|
 +
|-
 +
| 29
 +
| RegisterUpdatePartition
 +
|
 +
|-
 +
| 30
 +
| SaveDataTransfer
 +
|
 +
|-
 +
| 31
 +
| DeviceDetection
 +
|
 +
|-
 +
| 32
 +
| AccessFailureResolution
 +
|
 +
|-
 +
| 33
 +
| SaveDataTransferVersion2
 +
|
 +
|-
 +
| 34-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 294: Line 461:  
   +1: {service-name without nul-terminator}
 
   +1: {service-name without nul-terminator}
   −
Bitmask 0x0F in control_byte is the {length of the service-name without nul-terminator} - 1.
+
Bitmask 0x07 in control_byte is the {length of the service-name without nul-terminator} - 1.
    
Bitmask 0x80 in control_byte means service is allowed to be registered.
 
Bitmask 0x80 in control_byte means service is allowed to be registered.
Line 333: Line 500:  
| Bit11
 
| Bit11
 
| InterruptPair
 
| InterruptPair
| Bits 12-21: Irq0, bits 20-31: Irq1, 0x3FF means empty.
+
| Bits 12-21: Irq0, bits 22-31: Irq1, 0x3FF means empty.
 
|-
 
|-
 
| <code>0bxx01111111111111</code>
 
| <code>0bxx01111111111111</code>
Line 390: Line 557:  
|-
 
|-
 
| 3.0.2 || 7.4.0 || 3.0.0
 
| 3.0.2 || 7.4.0 || 3.0.0
 +
|-
 +
| 5.0.0 || 9.3.0 || 3.0.0
 
|}
 
|}
   −
Bit31-19: Major version
+
Bit31-19: Major version</br>
Bit18-15: Minor version
+
Bit18-15: Minor version</br>
 
Bit14-0: Zeroes
 
Bit14-0: Zeroes
23

edits

Navigation menu