+
# MkPFS.CSharp
+**Build, check and repair PS4/PS5 game images from the command line or a desktop app.**
+
[](https://github.com/danthespal/MkPFS.CSharp/actions/workflows/ci.yml)
+[](https://github.com/danthespal/MkPFS.CSharp/releases)
[](LICENSE.md)
+
+
-Build, check, and repair PS4/PS5 PFS game images (`.ffpfs`, `.ffpfsc`, `.exfat`) from the command line
-or a desktop app.
+

-MkPFS.CSharp is a .NET 10 port of the Python [MkPFS](https://github.com/PSBrew/MkPFS) by PSBrew. It ships
-as a native executable (no Python needed), writes the same images as the original, and adds an
-offline PFSC block repair ported from PS5 Game Compressor.
+
-## Features
+MkPFS.CSharp is a .NET 10 port of the Python [MkPFS](https://github.com/PSBrew/MkPFS) by PSBrew. It is a
+single native program (no Python needed), writes **the same images** as the original, and adds an offline
+PFSC block repair ported from PS5 Game Compressor and LZ4 asset packs for AMPR Emu.
-- **Pack**: a game folder, an exFAT image, or any single file into a compressed `.ffpfsc` (PFSC, zlib),
- or a folder into a plain PFS image (`--raw`, with signed, encrypted, 64-bit inode, and PS4 options).
-- **exFAT**: build exFAT images from game folders (deterministic, 64 KiB clusters by default).
-- **Batch**: pack every game folder and image in a folder in one run.
-- **Check**: `verify`, `inspect`, `tree`, and `unpack` for PFS, PFSC, and exFAT images, including
- encrypted ones (`--ekpfs-key`).
-- **Repair**: find and fix compressed blocks the PS5 may decode wrongly (images made with ISA-L).
-- **APR Emu**: copies your AMPR Emu libraries into `fakelib/` of APR titles (`--ampr-libs`) and builds
- `ampr_emu.index` when `pack folder`, `pack exfat`, or `batch` packs a game that has them.
-- **GUI**: `mkpfs-gui` with a page per command, cover and metadata preview, batch queue, and a PFSC
- block map; English, Português (BR), Español, Română, Deutsch, and Français.
+> [!WARNING]
+> **AMPR packing (`ampr`, the AMPR Packs page) is experimental.** It can shrink a game a lot, but whether
+> the packed game runs depends on how that game reads its files, and only a test on the PS5 shows that.
+> Keep the original game until the packed one has been played. See [AMPR asset packs](#ampr-asset-packs).
-## Download
+## Contents
-Get the archive for your system from the
-[releases page](https://github.com/danthespal/MkPFS.CSharp/releases) and unpack it anywhere:
-
-| System | Command line | Desktop app |
-|---|---|---|
-| Windows x64 | `mkpfs-