| Offset | Size (bytes) | Description | |--------|--------------|-------------| | 0x00 | 4 | Magic ( PFS0 or HFS0 ) | | 0x04 | 4 | Number of files | | 0x08 | 8 | String table size | | 0x10 | ... | File entry table |
1. Executive Summary An NSP (Nintendo Submission Package) is the primary distribution format for Nintendo Switch digital games, updates, and DLC. It is a containerized, encrypted, and signed archive derived from the NCAP (Nintendo Content Archive) format. Unlike the XCI (cartridge image) format, NSPs are designed for digital distribution via the eShop and installation to internal storage or an SD card. This report dissects the NSP’s internal structure, cryptographic protections, metadata, and content organization. 2. Format Origin & Relationship to Other Formats | Format | Purpose | Key Difference from NSP | |--------|---------|--------------------------| | NSP | eShop digital title | No cartridge-specific headers; stored as individual files on SD/NAND | | XCI | Game card (cartridge) image | Contains ROM-specific headers, often padded; can be dumped as a single raw image | | NSZ | Compressed NSP | Uses Zstandard compression; smaller size, not official Nintendo format | inside switch nsp
NSPs are essentially packaged as a hierarchical file system (HFS0) inside a PFS0 (Partition File System 0) wrapper. 3. High-Level NSP Structure A standard NSP is not a single monolithic file but a directory-like structure exposed through the Nintendo Switch’s file system APIs. When viewed as a file, it appears as an HFS0 image containing: | Offset | Size (bytes) | Description |
hactool --keyset=keys.txt game.nsp --outdir=extracted/ Output structure: It is a containerized, encrypted, and signed archive
extracted/ ├── 0100000000010000.Program.nca ├── 0100000000010000.Control.nca └── 0100000000010000.Logo.nca Decrypting the Program NCA: