Standalone PS5 payload for compressing, unpacking, validating, repairing, and moving ShadowMountPlus-mounted games from a simple web UI.
Game Compressor is made for the day-to-day workflow after your games are already mounted through ShadowMountPlus: pick a title, choose an action, and let the PS5 do the work. The app keeps long operations running on the console even if the browser window is closed.
- Compress mounted game folders or images into FF-PFSC output.
- Choose PFS or exFAT output when compressing.
- Automatically build APR Emu
ampr_emu.indexbefore compressing APR titles. - Manually run
Build AMPR Indexon a folder when you only want to refresh the APR index. - Validate compressed games and repair detected PFSC block issues when possible.
- Uncompress compressed games back to folder/app form.
- Move supported titles between internal storage and USB storage.
- Track progress, speed, estimated remaining time, and operation history.
- Keep operations running on the PS5 even if the browser tab closes.
- Install or refresh a PS5 home-screen launcher tile:
Game Compressor / PSGC50001 -> http://127.0.0.1:5910/
The PS5 home-screen tile opens the Game Compressor web UI in the browser. It is not the compression worker itself. Compression, validation, repair, move, and uncompress jobs continue on the PS5 if you close the browser window or reopen the tile later.
APR Emu titles need an ampr_emu.index file and the correct ShadowMountPlus
read-only image settings when they are run from internal SSD. Game Compressor
handles those details for the common workflows:
- To compress a folder-format APR Emu game from USB and run it from internal
SSD, plug in the USB drive, select the title, and choose
Compress. Game Compressor buildsampr_emu.indexusing the same workflow asbuild_ampr_index.py, writes the ShadowMountPlus read-only and sector-size settings, creates the.ffpfscimage, mounts it, and validates the mounted image byte-for-byte against the original. - If the compressed game stutters and you still want it on internal SSD, open
the secondary action menu, choose
Uncompress, then selectexFAT. The ShadowMountPlus settings andampr_emu.indexare already in place, so Game Compressor leaves them unchanged and creates an uncompressed exFAT image. - If you already know the game should stay uncompressed, open the secondary
action menu, choose
Make Image, then selectexFATandInternal SSD. Game Compressor detects the APR Emu title, builds or refreshesampr_emu.index, applies the read-only ShadowMountPlus settings, and creates the uncompressed image. - If you already have an exFAT image and
ampr_emu.indexexists, useSet Read Onlyfrom the secondary action menu to apply the ShadowMountPlus read-only settings for that image.
The only unsupported automatic case is an existing exFAT image with no
ampr_emu.index. For that case, run the game once from external USB without
read-only settings so APR Emu can create its index, confirm the game starts,
then copy it to internal SSD and use Set Read Only.
Non-APR titles keep the normal compression path. When APR indexing is performed,
the selected game screen and operation history show APR indexed.
The in-app APR-EMU Version picker uses Pippo's public APR-EMU manifest and
binary mirror:
https://pippo26442999.github.io/.exFAT/ampr-emu-drakmor/manifest.json
The manifest and hosted files are provided by Pippo (pippo26442999). Manifest
entries are downloaded by the browser, uploaded to Game Compressor, cached under
/data/GameCompressor/ampr-emu, and then applied to the selected title or
image. Custom .sprx/.prx files can also be uploaded manually from a desktop
browser. The upstream APR Emu project source is
drakmor/ampr_emu.
- A PS5 homebrew environment capable of running payload ELFs.
- ShadowMountPlus latest version, installed and managing mounted titles.
- KStuff Lite 1.07 Beta or later.
- Payload Manager or another
method to launch
game-compressor.elf.
This project assumes you already understand the risks of running PS5 homebrew payloads. Keep backups of important data and test with non-critical titles first.
Set PS5_PAYLOAD_SDK to your local SDK path, then run make:
export PS5_PAYLOAD_SDK=/path/to/ps5-payload-sdk
makeThe build output is:
game-compressor.elf
Generated build outputs are intentionally ignored by git:
build/
gen/
game-compressor.elf
Copy the built ELF to your PS5 payload folder. A typical Payload Manager path is:
/data/pldmgr/payloads/game-compressor/game-compressor.elf
This repo also includes Payload Manager metadata in:
payload-manager/game-compressor.elf.json
If you rebuild the ELF, update that JSON checksum before publishing or redistributing it.
- Make sure ShadowMountPlus has mounted one or more games.
- Launch
game-compressor.elffrom Payload Manager or your payload loader. - Open the web UI:
http://<PS5_IP>:5910/
- Pick a game from the left sidebar.
- Use the primary action:
- Folder/image titles show
Compress. - Compressed titles show
Validate and Repair.
- Folder/image titles show
- For compression, choose either
PFSorexFATwhen prompted. - Use the secondary action menu for supported actions such as:
Build AMPR IndexUncompressMove to USBMove to Internal SSD
- Use the History button to review previous operations.
The app remembers the last game you viewed using a browser cookie, so reopening the UI returns to that title when it is still available.
If you close the browser window during an operation, open the Game Compressor
tile again or go back to http://<PS5_IP>:5910/ to see the current job.
When you choose Compress, Game Compressor asks for the output format,
destination, and how to handle the original source.
Compress always produces a .ffpfsc file, which is a compressed PFS container.
The format choice controls the nested image stored inside that compressed
container:
exFATis the default and recommended nested image format. It stores an exFAT image inside the.ffpfscoutput and is the preferred option for most games, especially APR Emu workflows.PFS Experimentalstores a PFS image inside the.ffpfscoutput. Use it only when you specifically want to test the PFS nested-image path.
Compress in placewrites the compressed.ffpfsccontainer next to the currently selected game.Internal SSDwrites the compressed output under/data/homebrew. This is only shown when the selected game is not already on internal storage.External Storagewrites the compressed output to a selected USB/external target. If the game is already on external storage, Game Compressor may show aCompress to...picker so you can choose internal SSD or another USB target.
Keep originalleaves the source folder or image untouched. This is the safest choice and requires enough free space for the compressed output.Delete after verifiedwrites and validates the compressed output first, then removes the original source. This is the default for in-place compression. It still needs full-size temporary free space because the original is kept until verification succeeds.Destructivedeletes source data while writing the compressed output. It requires at least 1 GB of free space, cannot be cancelled after the unsafe phase begins, and is only available for same-storage folder compression. It is not available when compressing to another drive or when usingMake Image.
When compressing to internal SSD or external storage, Game Compressor keeps the
original by default. If you choose to remove the original, it uses the safer
Delete after verified behavior.
Mounted games are shown automatically. Game Compressor also scans known game storage folders, including:
/data/homebrew
/data/etaHEN/games
/mnt/ext0
/mnt/ext0/homebrew
/mnt/ext0/etaHEN/games
/mnt/ext1
/mnt/ext1/homebrew
/mnt/ext1/etaHEN/games
/mnt/usb0 through /mnt/usb7
/mnt/usb0/homebrew through /mnt/usb7/homebrew
/mnt/usb0/etaHEN/games through /mnt/usb7/etaHEN/games
Game Compressor should only be launched when you need to compress, validate, repair, move, or unpack games. After your games are compressed and you no longer need the web UI, it is preferred that Game Compressor is no longer running.
Use the terminate button in the top bar when you are done. Game Compressor removes its home-screen tile, stops the payload, and leaves a final screen telling you to exit the browser window.
- Launcher installation is nonfatal. If it fails, the web UI can still be used
directly from
http://<PS5_IP>:5910/. - Payload operations are owned by the PS5-side worker, not the browser tab.
- Compression and repair workflows can take a long time on large titles.
Created by Juma Sayeh.
Tested by Osama Abualia.
Thanks to Pippo (pippo26442999) for maintaining the public APR-EMU manifest
and binary mirror used by the in-app APR-EMU version picker.
Built on and inspired by work from:
- PSBrew/MkPFS
- Drakmor's ShadowMountPlus,
APR Emu, and
build_ampr_index.pywork, which Game Compressor builds on for mounted-title support and PS5-sideampr_emu.indexgeneration.
Made with love in Palestine.
This is homebrew software for experimental PS5 workflows. Use it at your own risk. The project is not affiliated with Sony, PlayStation, or any game publisher.