BootConfig: Difference between revisions

Detail some config
No edit summary
 
(3 intermediate revisions by the same user not shown)
Line 4: Line 4:


= Format =
= Format =
Despite having 0x4000 for storage, the actual loaded BootConfig is only 0x640 bytes, with the following format:
Despite having 0x4000 for storage, the actual loaded BootConfig is only 0x400 bytes, with the following format:
 
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 13: Line 14:
| 0x0
| 0x0
| 0x200
| 0x200
| Unsigned Configuration
| [[#Unsigned Configuration]]
|-
|-
| 0x200
| 0x200
Line 21: Line 22:
| 0x300
| 0x300
| 0x100
| 0x100
| Signed Configuration
| [[#Signed Configuration]]
|}
 
= Unsigned Configuration =
This is "nn::bconfig::BootConfig".
 
{| class="wikitable" border="1"
|-
! Offset
! Size
! Description
|-
| 0x0
| 0x4
| Version (yyMMddHHmm in uint32)
|-
| 0x4
| 0xC
| Reserved
|-
| 0x10
| 0x1
| [[SMC#IsDebugMode|IsDebugMode]] (bit 1) and TakeExtabtSerrorToEl3 (bit 2)
|-
| 0x11
| 0x1
| [[SMC#KernelConfiguration|KernelConfiguration]] (first byte)
|-
| 0x12
| 0xF
| Reserved
|-
| 0x21
| 0x1
| [[SMC#KernelConfiguration|KernelConfiguration]] (second byte)
|-
| 0x22
| 0x1
| Reserved
|-
| 0x23
| 0x1
| [[SMC#MemoryMode|MemoryMode]]
|-
| 0x24
| 0x1
| HasInitialTscValue
|-
| 0x25
| 0xB
| Reserved
|-
|-
| 0x400
| 0x30
| 0x240
| 0x8
| InitialTscValue
|-
| 0x38
| 0x1C8
| Reserved
| Reserved
|}
|}


 
= Signed Configuration =
= Signed Config =
 
Most of this is currently awaiting better documentation.
 
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 39: Line 90:
! Description
! Description
|-
|-
| 0x0
| 0x8
| 0x8
| 0x1?
| Version
| Package2 Configuration. Bit 0 set means Package2 is stored unencrypted. Bit 1 set means Package2 is unsigned.
|-
| 0x8
| 0x1
| IsPackage2Plaintext (bit 0) and IsPackage2Unsigned (bit 1)
|-
| 0x9
| 0x7
| Reserved
|-
|-
| 0x10
| 0x10
| 0x10
| 0x10
| Hardware Info. Must match the Hardware Info read from fuses, or else the loaded Signed Config will be memset to 0 even if signed. This allows Nintendo to set signed configuration on a per-unit basis.
| HardwareInfo (must match the HardwareInfo read from fuses, or else the loaded Signed Config will be memset to 0 even if signed; this allows Nintendo to set signed configuration on a per-unit basis)
|-
|-
| 0x20
| 0x20
| 0x1?
| 0x1
| [[Filesystem_services#SetEnabledProgramVerification|DisableProgramVerification]]. Controls the default value for how to check NCA signatures.
| [[Filesystem_services#SetEnabledProgramVerification|DisableProgramVerification]] (controls the default value for how to check NCA signatures)
|-
| 0x21
| 0xDF
| Reserved
|}
|}
= Unsigned Config =