MAXCSO(1) General Commands Manual MAXCSO(1)

MAXCSOFast cso compressor

maxcso [--args] [input.iso] [-o output.cso]

A fast ISO to CSO compression program for use with PSP and PS2 emulators, which uses multiple algorithms for best compression ratio.

  • Can use as many CPU cores as you want.
  • Can use zlib(3), 7-zip's deflate, and Zopfli.
  • Processes multiple files in one command.
  • Can take a CSO or DAX file as a source.
  • Able to output at larger block sizes.
  • Support for experimental CSO v2 and ZSO formats using lz4(1) (faster decompression).
  • Tuning of deflate or lz4(1) compression threshold.
  • Decompression of all supported inputs (including DAX and CSO v2).

maxcso always uses compression level 9. Decompression speed is about the same regardless of level, and disk access is faster with smaller files.

Using 7-zip's deflate and Zopfli improves compression ratios, but don't expect a lot. Usual results are between 0.5% to 1.0% smaller.

Larger block sizes than the default will help compression, in the range of 2-3%. However, the files may not be compatible with some software. For example, ppsspp versions released after 2014-10-26 will support larger block sizes.

Avoid DAX where CSOs using larger block sizes are supported, since DAX is less efficient.

lz4(1) support is mostly for experimentation.

Compared to other tools like ciso and CisoPlus, maxcso can run much faster and achieve the same compression. Use --fast to get the fastest compression, which matches level 9 in other tools.

Additionally, if you have better than a dual core processor, maxcso will use all of your cores, and perform even better.

In usage, CSOs typically perform well in all known emulators. Some versions of PSP firmware with support for CSOs have bugs in their CSO support, but this doesn't affect emulators.

Multiple files may be specified. Inputs can be iso or cso files.

Specify N threads for I/O and compression.
Suppress status output.
Log CRC32 checksums, ignore output files and methods.
Use only basic zlib(3) or lz4 for fastest result.
Write out to raw ISO, decompressing as needed.
Specify a block size (default depends on iso size). Many readers only support the 2048 size.
cso1, cso2, zso, dax
Specify cso version. These are experimental, default is cso1.
Enable trials with zlib(3) for deflate compression.
Enable trials with Zopfli for deflate compression. Because Zopfli is significantly slower than the other methods and uses a lot more memory, it is disabled by default. Use for maximum compression.
Enable trials with 7-zip's deflate compression.
Enable trials with lz4hc for lz4(1) compression.
Enable bruteforce trials with lz4hc for lz4(1) compression.
Only allow a certain compression method ( zlib(3), etc. above).
Disable a certain compression method ( zlib(3), etc. above).
Allow lz4(1) to increase block size by N% at most (cso2 only).
Allow uncompressed to increase block size by N% at most.
Output to path X/, use basename for default outputs.

The cost arguments allow you to allow each block to be N% bigger by using lz4(1) or no compression. This makes the file read faster (less cpu power), but take more space.

maxcso myfile.iso
Compress myfile.iso and create myfile.cso.
maxcso myfile.iso -o output.cso
Compress myfile.iso and create output.cso.

lz4(1), PCSX2(1), zlib(3)

Issue tracker

November 22, 2018 Linux 6.10.10-arch1-1