nps: bundle pkg2zip binary and run it via Wine

pkg2zip's prebuilt releases are Windows-only, so ship pkg2zip.exe in
data/bin/ (MIT, mmozeiko) and invoke it through Wine on Linux. find_pkg2zip
prefers the bundled binary, then a configured path, then a native pkg2zip on
PATH. Adds data/bin/ATTRIBUTION.md and README credit.
This commit is contained in:
2026-09-07 22:14:14 -04:00
parent 6837481f2b
commit d458a9859c
4 changed files with 67 additions and 9 deletions
+8 -6
View File
@@ -38,8 +38,8 @@ converts PlayStation 1 ISO/CUE/BIN rips into PSP `EBOOT.PBP` homebrew.
- Linux + Python 3
- `PySide6` — the only Python dependency (`pip install -r requirements.txt`)
- `7z` (p7zip) — used to peek/extract disc images from store archives
- `pkg2zip` (optional) — decrypts NoPayStation `.pkg` files (see
[NoPayStation](#4-nopaystation))
- `pkg2zip` (bundled in `data/bin/`, run via Wine on Linux) — decrypts
NoPayStation `.pkg` files (see [NoPayStation](#4-nopaystation))
- PPSSPP (optional) — to launch discs from the details panel
## Install
@@ -105,6 +105,8 @@ Discs are matched by hash first (most precise), then serial, then filename.
to drawn art when they're absent.
- `data/nps/` — NoPayStation TSV lists (cached here on first store scan; drop
`PSP_GAMES.tsv` / `PSX_GAMES.tsv` manually to work offline).
- `data/bin/pkg2zip.exe` — bundled `pkg2zip` binary (MIT, by mmozeiko) used to
decrypt NoPayStation `.pkg` files; see `data/bin/ATTRIBUTION.md`.
- State dir (`~/.local/state/psp-preserve/` by default, or `$XDG_STATE_HOME/psp-preserve`):
- `library.sqlite` — the catalog + library database.
- `covers/` — downloaded cover cache.
@@ -274,10 +276,10 @@ next to the source selector.
Requirements & behaviour:
1. Install [`pkg2zip`](https://github.com/mmozeiko/pkg2zip) (the same tool the
pkgi family uses) and either put it on `PATH` or set its path in
**Settings → Store**. NoPayStation `.pkg` files are encrypted PSN packages,
not ZIPs — `pkg2zip` decrypts them.
1. `pkg2zip` decrypts the `.pkg` files (they're encrypted PSN packages, not
ZIPs). A copy ships in `data/bin/pkg2zip.exe` and runs via **Wine** on
Linux — just make sure Wine is installed. You can also put a native
`pkg2zip` on `PATH` or set its path in **Settings → Store**.
2. Set **NoPayStation output dir** in **Settings → Store** (default
`$PSP_STATE_DIR/nps`).
3. Downloading a PSP game writes `PSP/<TITLE_ID>/EBOOT.PBP`; a PS1 Classic