How To Convert PSP ISO Games To CSO on Raspberry Pi

Save disk storage by compressing PSP ROMs collection to CSO format, directly from RetroPie

One of my hobbies right now is retrogaming. I try to catch up with some old PSP games that I never had a chance to play when I was a kid.

Thanks to the advanced emulation technology today, I can play those games on my phone today.

One problem with PSP game is that the game file (we usually call it ROM) is relatively big. A single PSP game can take around 0.7 GB to 1.5 GB of disk space. The internal storage of my phone can only store around 10 games. I also purchase a 256 GB microSD card, the Samsung EVO Select brand one, to store more PSP ROMs. I quickly running out of space the more my collection grows, since I also have ROMs for other game systems.

Since I can’t upgrade my phone disk capacity, the only real solution is to compress the ROMs.

Compressing the ROMs to archive type like zip, rar, or 7z is not good enough because every time I want to play a game, I need to wait the emulator to extract the archive first. This will cause slower loading.

What I want is a compressed format that is streamable, meaning that the emulator will decompress the content on the fly. This won’t impact loading time significantly.

That’s where the CSO file is being used.

In this tutorial I’ll show on you how to compress a single or batch of PSP ISO ROMs to CSO directly on Raspberry Pi.

Why Raspberry Pi?

Because that’s where I keep backup of my ROMs. Not to mention I can also play other emulators by using RetroPie. It’s also more energy efficient than using your PC. The compression process could take a long of time to run depend on how many ROMs you have. So, it’s the ideal device to do the tasks.

Installation

To compress PSP ISO files to CSO, we’re going to need a command line tool called ciso.

First, let’s update the package manager.

sudo apt update

If you’re on Ubuntu or its derivative, you can directly install it by using apt.

sudo apt install ciso

If you’re on Debian or its derivate (Raspbian / RetroPie), you need to download the installer fist.

wget https://launchpadlibrarian.net/363123412/ciso_1.0.0-0ubuntu3_armhf.deb

After the download process finished, we can install it using apt.

sudo apt install ./ciso_1.0.0-0ubuntu3_armhf.deb

To check if the tool installed correctly, you can type ciso on terminal. Here is an example output.

$ ciso
Compressed ISO9660 converter Ver.1.01 by BOOSTER
Usage: ciso level infile outfile
  level: 1-9 compress ISO to CSO (1=fast/large - 9=small/slow
         0   decompress CSO to ISO

Next step is how to do the compression process.

How to compress a single PSP ISO ROM to CSO

The ciso tool can compress with multiple levels. There are only 9 level of compressions from 1 - 9. Level 1 meaning it’ll fast process, but may only reduce the file size a little bit. Level 9 meaning it’ll be slow process, but it’ll to compress as small as possible.

In my experiments, the compression result between level 1 and 9 is not significant. So to save time, but gain more than enough compression ratio, we’ll use level 1 compression.

Here is the syntax to compress a PSP ISO ROM to CSO with level 1 compression. As you can see, the original_rom.iso is the input file and compressed_rom.cso is the output file.

ciso 1 original_rom.iso compressed_rom.cso

Here is an example when I test it using an Undub patched version of Crisis Core.

$ ciso 1 "Crisis Core Final Fantasy VII (US)[Undub].iso" "Crisis Core Final Fantasy VII (US)[Undub].cso"
Compressed ISO9660 converter Ver.1.01 by BOOSTER
Compress 'Crisis Core Final Fantasy VII (US)[Undub].iso' to 'Crisis Core Final Fantasy VII (US)[Undub].cso'
Total File Size 4337000 bytes
block size      2048  bytes
index align     1
compress level  1
ciso compress completed , total size = 1333465193 bytes , rate 74%

As you can see, the file size is compressed from 1.7GB to 1.2GB!

How to compress a batch of PSP ISO ROMs to CSO

I’m pretty sure you probably have dozen of PSP ISO ROMs. It isn’t wise to compress the file one by one manually. To compress a batch of files, you can use following command.

find . -name "*.iso" -exec ciso 1 {} {}.cso \;

Alternatively, if you want to remove the original ISO file and keep the CSO file after it’s finished compressed successfully, you can use following command instead.

find . -name "*.iso" -exec ciso 1 {} {}.cso \; -exec rm {} \;

Be aware that the deleted file can’t be recovered. But if the tool failed to compress the ISO file, it won’t be deleted.

How to decompress CSO to ISO

Just like any other compression method, CSO also can be decompressed. You may need this in case you want to play the game on real PSP device.

Similar to compression command, but change the compression level to 0 and use the CSO file as the input.

ciso 0 compressed_rom.cso original_rom.iso

The previous command will produce original_rom.iso from compressed_rom.cso.

Conclusion

And that’s it my 2 cent on how to compress your PSP ISO collection. Thanks for reading!

References

Cover Photo by Andrew Mantarro on Unsplash