KIP1: Difference between revisions

From Nintendo Switch Brew
Jump to navigation Jump to search
Created page with "= KIP1 = {| class="wikitable" border="1" |- ! Offset ! Size ! Description |- | 0x0 | 0x4 | Magic "KIP1" |- | 0x4 | 0xC | Name |- | 0x10 | 0x8 | Program ID |- | 0x18 | 0x4 | Version |- | 0x1C | 0x1 | Main Thread Priority |- | 0x1D | 0x1 | Main Thread Core Number |- | 0x1E | 0x1 | Reserved |- | 0x1F | 0x1 | Flags (bit0=TextCompress, bit1=RoCompress, bit2=DataCompress, bit3=Is64BitInstruction, bit4=ProcessAddressSpace64Bit, bit5=[2.0.0+] UseSecureMemory) |- | 0x20 | 0xC | T..."
 
No edit summary
 
(One intermediate revision by the same user not shown)
Line 36: Line 36:
| 0x1F
| 0x1F
| 0x1
| 0x1
| Flags (bit0=TextCompress, bit1=RoCompress, bit2=DataCompress, bit3=Is64BitInstruction, bit4=ProcessAddressSpace64Bit, bit5=[2.0.0+] UseSecureMemory)
| Flags (bit0=TextCompress, bit1=RoCompress, bit2=DataCompress, bit3=Is64BitInstruction, bit4=ProcessAddressSpace64Bit, bit5=[2.0.0+] UseSecureMemory, bit6=[12.0.0+] IsImmortal)
|-
|-
| 0x20
| 0x20
Line 96: Line 96:


Compressed/Binary size can be 0 or lower than expected, this is the case for BSS for example.
Compressed/Binary size can be 0 or lower than expected, this is the case for BSS for example.
===== Compression =====
The compression used here is BLZ, with a modified footer since 3ds. The footer is now 0xC bytes instead of 0x8, and has the form u32 compressed_data_len; u32 footer_size; u32 additional_len_when_uncompressed;

Latest revision as of 08:29, 19 December 2025

KIP1

Offset Size Description
0x0 0x4 Magic "KIP1"
0x4 0xC Name
0x10 0x8 Program ID
0x18 0x4 Version
0x1C 0x1 Main Thread Priority
0x1D 0x1 Main Thread Core Number
0x1E 0x1 Reserved
0x1F 0x1 Flags (bit0=TextCompress, bit1=RoCompress, bit2=DataCompress, bit3=Is64BitInstruction, bit4=ProcessAddressSpace64Bit, bit5=[2.0.0+] UseSecureMemory, bit6=[12.0.0+] IsImmortal)
0x20 0xC Text Segment Header
0x2C 0x4 Main Thread Affinity Mask
0x30 0xC Ro Segment Header
0x3C 0x4 Main Thread Stack Size
0x40 0xC Data Segment Header
0x4C 0x4 Reserved
0x50 0xC Bss Segment Header
0x5C 0x24 Reserved
0x80 0x80 Kernel Capability Data
Segment Header
Offset Size Description
0x0 0x4 Offset
0x4 0x4 Size
0x8 0x4 Compressed/Binary Size

Compressed/Binary size can be 0 or lower than expected, this is the case for BSS for example.

Compression

The compression used here is BLZ, with a modified footer since 3ds. The footer is now 0xC bytes instead of 0x8, and has the form u32 compressed_data_len; u32 footer_size; u32 additional_len_when_uncompressed;