github PSBrew/MkPFS 1.0.0

4 hours ago

🎉 MkPFS 1.0.0 is released!

🤖 What's Changed

  • Several improvements and fixes related to image packing, unpacking, and verification.
  • Implemented a simple GUI

🚀 Quick Start

# Install/Update using pip
python -m pip install -U "mkpfs"

# Creating Images: Option 1: .exfat -> .ffpfsc (Works with ShadowMountPlus)  (Maximum compatibility)
python -m mkpfs pack file './BREW1234.exfat' './BREW1234.ffpfsc'

# Creating Images: Option 2: .ffpkg -> .ffpfsc (Works with ShadowMountPlus) 
python -m mkpfs pack file './BREW1234.ffpkg' './BREW1234.ffpfsc'

# Creating Images: Option 3: Game folder -> .ffpfsc in one pass (default: exFAT-wrapped, no temp file)
python -m mkpfs pack folder './BREW1234-app' './BREW1234.ffpfsc'

# Creating Images: Option 4: Game folder packed directly as PFS (advanced single-pass)
python -m mkpfs pack folder --raw './BREW1234-app/' './BREW1234.ffpfs'

# Creating Images: Option 5: Game folder wrapped twice into PFS (advanced two-pass)
python -m mkpfs pack folder --raw --no-compress --no-adjust-output-file-extension './BREW1234-app' './pfs_image.dat'
python -m mkpfs pack file './pfs_image.dat' './BREW1234.ffpfsc'
rm './pfs_image.dat'

# Extracting Existing Images (Reverse operation; --deep lists/extracts inside a wrapped exFAT)
python -m mkpfs unpack  --deep './BREW1234.ffpfsc' './BREW1234-extracted/'

⚠️ Limitations and Known Issues

  • exfat->ffpfsc is the most stable format for compressed game backups. pack folder produces this layout by
    default: it wraps the folder in an exFAT image and compresses that into the .ffpfsc in a single pass, with no
    temporary .exfat on disk.
  • pack folder --raw packs the folder directly into a PFS image without the exFAT wrapper. When file compression is
    enabled, the image is created and verification passes, but the console reads the files incorrectly due to technical
    limitations, so this advanced option provides no practical benefit for game backups. Prefer the default wrapped
    layout.
  • With the default --block-size 65536, very small files can cause significant block-alignment waste, which may make
    the resulting image larger than the source in corner cases.
    • For small-file-heavy folders, prefer the two-pass strategy (raw-folder -> .dat -> .ffpfsc) or try a smaller
      block size such as --block-size 16384 or --block-size 32768.
  • Antivirus scanning can reduce conversion speed, especially during the write phase or when processing many loose
    files. If you trust this software in your environment and need higher throughput, temporarily disabling real-time
    scanning can help. If you are unsure, keep antivirus enabled and expect slower conversions.

💖 Sponsorship

MkPFS is easier to sustain when users who benefit from it help fund it.

GitHub Sponsors

☕ Contributions

Breaking

New

Bug Fixes

Maintenance

Dependency Updates

12 changes

Other changes

Full Changelog: 0.0.9...1.0.0

Don't miss a new MkPFS release

NewReleases is sending notifications on new releases.