Skip to content

NSZ/XCZ ingest (zstd NCZ)

  • New napple_core::infrastructure::ncz: NczSource presents an NCZ member as the original NCA (raw 0x4000 header, body zstd-decoded and re-encrypted with the per-section AES-CTR key/counter stored in the NCZ). Nca::open is unchanged.
  • Streaming form (one zstd stream): forward-only decoder, backward seek restarts it; no full-RAM buffering. Block form (NCZBLOCK): random access, one block decoded per read (last cached).
  • .ncz members are renamed .nca in ingest::collect, napple-build Container::load and legacy.rs dump path (one-line additions).
  • compat find_games accepts .nsz/.xcz.
  • Dependency: zstd = "0.13" in napple-core.
  • Status: tested (synthetic NCZ round-trips, NSZ/XCZ end-to-end ingest). Not verified against a real retail .nsz.