Skip to content

0.6.7-fix1

Choose a tag to compare

@rdmrocha rdmrocha released this 16 Sep 09:28
· 1 commit to main since this release

fpkg 0.6.7-fix1

Fixes one regression in 0.6.7. Re-run ./fpkg patch after updating — this release changes what the patch does.

Container sources failed when an SDK was stamped. 0.6.7 gave --sdk-version a default of 1, which made the library rewrite the .sceversion trailer in every executable on every build. That path opens the original executable by filename, and a .ffpfsc source has no filename to open, so any container holding a .prx, .self, .elf or eboot.bin died with Could not find a part of the path '...ffpfsc:<handle>:/...'. Two further IL patch sites cover it; fpkg patch now reports nine instead of seven. Folder sources were never affected, and neither were containers built with --sdk-version keep.

A container carrying executables and the equivalent folder now produce byte-identical inner files, with the SDK correctly restamped.

fpkg 0.6.7

Tracks LibProsperoPkg 0.6.7.

New commands

  • fpkg template <pkg> <dir> — export a rebuildable add-on template: the sce_sys inputs plus a .gp5 carrying the content id, passcode, entitlement key and PlayGo counts recovered from the package. Data-bearing AC packages only; the payload is not included.
  • fpkg verify <pkg> --quick | --full — the library's own verifiers. Quick checks structure, digests, the outer superblock ICV and the SI directory; full also decodes every block, chunk and inner file. Exits 1 on any issue.
  • fpkg extract <pkg> <dir> --rebuild-source — just the sce_sys inputs a rebuild needs. Never opens the inner filesystem, so it finishes in seconds.

New build options

  • --app-drm free|standard (default free, matching the official GUI) and --ac-drm free|entitlement. These replace the old param.json rewrite — 0.6.6 added a real build option, so fpkg no longer edits your files to set the DRM type. Note --ac-drm free also omits license.dat/license.info entirely.
  • --playgo-languages — comma-separated language codes, or all.
  • --no-media-repair — opt out of the PNG repair below.

Corrupt artwork is now repaired

icon0, pic0, pic1 and pic2 .png are validated properly (signature, chunk chain, CRC-32, IEND, no trailing bytes) and any that fail are rebuilt from the matching .dds. Dumps really do ship damaged artwork, and upstream packs a present file unchecked. Its own "restore a missing pic1/pic2" path is Windows-only, so this is done in managed code that works everywhere. A damaged image with no usable .dds stops the build instead of shipping.

Changed

  • --playgo now accepts 1–255 (was 1–64). The library default moved 64 → 100.
  • --sdk-version now defaults to 1, matching the 0.6.7 GUI. Use --sdk-version keep to leave the source's own values alone.
  • Since 0.6.7 the SDK no longer moves requiredSystemSoftwareVersion in either direction — upstream decoupled them.
  • Removed --retain-param-json; there is nothing left to retain.

Guards upstream dropped

  • Zero-length PlayGo chunks. 0.6.4 refused a chunk count the image can't fill; 0.6.6 removed that check and 0.6.7 didn't restore it. With the default now 100, a small source silently gets empty chunks. fpkg refuses and tells you what fits.
  • Exported templates. The default sce_sys sweep would delete a template's licence and PlayGo files, which are deliberate inputs. fpkg detects the shape and points you at --retain-sce-sys.