Ripping PS2 discs


Optical media won’t last forever. I’ve already had a bunch of music CDs and GameCube games rot away on me and be lost. To guard against that, I am attempting to back up as much of my media as possible.

On the topic of ripping disc based media, Redump.org is great for providing reference hashs to let you know that your dump is accurate. They also provide directions, but they are mostly Windows focused. I’d rather use Linux when possible.

Ripping most DVD games is easy enough. A simple run of dd does the trick:

dd if=/dev/sr0 of=backed_up_game.img & progress -mp $!

The & progress -mp $! is just a way to get a nicer display of progress from dd.

One thing that caused me trouble though is PS2 games that were shipped on CDs. I bought a few of the cheaper ones that I already had over again thinking maybe I had bad disks, but eventually I figured something out. I didn’t figure out how to use dd, even though it seems there should be able to make that work (and it does work for PS1 discs), but I did figure out that I could use cdrdao to back up CD based PS2 games.
cdrdao read-cd --read-raw --datafile backed_up_game.bin cdimage.toc

The .toc file can then be deleted. I hope I don’t end up regretting that.

The next issue I ran into was a bad DVD disc. I bought a second copy of the game, but that DVD was also damaged. It was expensive enough that I didn’t want to try a 3rd copy, and I figured that the two copies were probably damaged in different areas, so smarted ripping should let me get a good single image from the two discs.

The tool I found for doing that is ddrescue. Compared to dd it does several things differently. First, for bad sectors, it will write 0s in the img file and make a note of that in the log for further attempts.

Second, it can be set to retry bad sectors.

I ended up using several runs of the program to do the job.

First, starting with the disc that produced the larger file originally with dd, I ran:

ddrescue --no-scrape --no-trim -p -v /dev/sr0 ./backed_up_game.img ./ddrescue.log

That did a best effort of only what worked correctly the first try.

I then did swapped disks and repeated that command. Sadly, this still didn’t quite there, so I followed it with:

ddrescue -p -v /dev/sr0 ./backed_up_game.img ./ddrescue.log

This tells it to ignore tells ddrescue to now work normally, AKA, retrying problem spots and marking off the boundary of them. Eventually it started going incredibly slowly, so rather than wait the estimated 2 days listening to the racket it was making, I swapped discs again and did:

ddrescue -M -R -p -v /dev/sr0 ./backed_up_game.img ./ddrescue.log

The addition of -M -R says to ignore the parts that were marked bad and this time try going backwards.

Finally after all those tries, I had a ./backed_up_game.img that’s sha1sum matched the reference value from redump.org.

At this point, I only have one game uncompleted. In that case, I haven’t received a second copy yet, but according to sources online there was a flawed pressing, and I have one of those discs, so no amount of re-tries would ever make this disc read entirely correctly.


Leave a Reply