a55uka/nup
GamesPacks decrypted Switch game dumps into a single compressed .nup container, with a Python tool to pack, inspect and extract.
What it is
NUP is a clean-room container format for unencrypted Nintendo Switch and Switch 2 game dumps. It keeps ExeFS program files alongside full RomFS trees, so base content, updates and DLC all live in one compressed .nup file rather than a scattered directory tree. The repo contains the format definition in SPEC.md and a Python reference implementation under tools/nup/ README.
The format is aimed at people who already have decrypted NX dumps and want a tidy, single-file way to store or move them. The README notes that the author is not aware of a decryption path for Switch 1 games, so the tool acts on already-decrypted content README.
Quick start
Prepare a dump directory laid out as the tools expect:
base/ updates/458752/ dlc/040074a01bf13001/0/
├─ exefs/ ├─ exefs/ └─ romfs/
└─ romfs/ └─ romfs/
Install the reference implementation and pack the directory into a .nup file:
pip install ./tools/nup
nup pack <dump_dir> <out.nup> --level N --title-id HEX --display-version V
pack auto-discovers base/, updates/<version>/ and dlc/<titleid>/<index>/; a bare content directory containing only exefs/ and romfs/ packs as a single base package. Title IDs are read from main.npdm, and dump-tool .listing artifacts are excluded by default README.
Once packed, you can inspect or extract the archive:
nup info <file.nup> --tree
nup list <file.nup>
nup extract <file.nup> <dest> --package base --subtree romfs
nup verify <file.nup> --fast
Alternatively, run the CLI without installing it by setting PYTHONPATH=tools/nup and calling python3 -m nup.cli README.
Constraints
You need to supply already-decrypted content; the format does not handle decryption. The README only discusses Switch 2 packaging confidently and leaves Switch 1 decryption unspecified README. The repository declares no license, which matters if you plan to redistribute the tool or the format implementation.
HotRepo's take
The repo records 101 stars and 3 forks in a single Python new-entry snapshot on 2026-11-02, covering a roughly 13-hour growth window from 2026-11-01. That is the only recorded snapshot, so it shows initial pick-up rather than an established trend. The project is narrowly scoped — a spec plus a reference packer — so its appeal will be judged by whether people need a single-file container for decrypted dumps, not by the early star count.
Written by AI from the project's README, updated . The project's own docs are the source of truth.