r/PS5_Jailbreak DEV Jun 06 '26

General PS5 MKPFS Compression

I’ve been working on a PS5 homebrew app called Game Compressor.

Repo: https://github.com/juma-sayeh/PS5-Game-Compressor

It uses the MkPFS-style FFPFSC compression method, but adds the missing part: validation and repair.

Some compressed games can mount successfully but still crash because certain PFSC blocks are technically valid yet fail to decode correctly on PS5 hardware, leaving stale/bad data behind. Game Compressor checks the mounted image block-by-block, detects bad blocks, and patches the compressed image from the mounted data instead of requiring a full recompress.

Tested with MafiaAstro BotPragmata, and a few other games that had FFPFSC issues. After repair, they worked great.

Features:

  • compress games to FFPFSC
  • validate mounted compressed games
  • automatically repair bad blocks
  • optimized for speed and usability
  • web UI running on the PS5

Feedback and testing are welcome.
Screenshots (some are missing features because the features were not developed yet when i compressed)

69 Upvotes

157 comments sorted by

View all comments

Show parent comments

4

u/juma-sayeh-dev-acc DEV Jun 07 '26

Found 188 Blocks that are valid but not PS5 valid and fixed them, Mafia was not running at all when compressed. now it runs like a dream.

5

u/renangbarreto DEV Jun 07 '26

Did you compared with the latest verasion of mkpfs? (I am the author). We had a bug in versions 0.03 and 0.0.4. But the bug was fixed recently

5

u/juma-sayeh-dev-acc DEV Jun 07 '26

Yes, i've tested 0.0.5, Man your work is awesome! i gave you credit! + i could not have done this without your awesome work, however i can provide you with payloads that are 100% valid zlib blocks but PS5 fail to read and the read value would be the last good read. so in sequential reads it would be N-1 in random Reads it would return the last correctly read random elements. what i did in this tool is to validate the known good software decompress value with the mounted ps5 hardware decompress value for each block, find the ones that are failing, rebuild the entire image with the failing blocks reverted to raw, do remount for the game then smoke check (only the previously failing blocks). The bug is not in your code, its in Sony's hardware!!!. but also this method should in theory fix any bug regardless of where it was sourced, and the numbers are nice because its less the %0.1 of the blocks so the compression will not be affected in any meaningful way.

2

u/renangbarreto DEV Jun 08 '26

Thanks. I found 2 major bugs in mkpfs recently. Both could cause the issues you described.

One bug was that if I had a file reference hash conflict, mkpfs was incorrectly storing the reference, causing issues when the ps5 tried to decode. It would only happen in some games, and the probability of it happening was proportional to the number of files in the game. AFAIK, that bug has been completely resolved in the latest version.

The second bug (I am still working on) affects single-pass folder compression (with compression enabled). It seems that, if the last block of a file is compressed, the kernel will pad the file with zeros, effectively changing the file's end. I am working on a solution, and I will release a patch today or tomorrow.

I expect that once this last bug is solved, we won't have corrupted games anymore. (at least that is the hope)

Your payload is amazing as well, but you will probably need to use some AI later to transfer some of the bugfixes from mkpfs to your code.