CDRDAO Fork Which Can Burn PSX Games Containing EDC-Based Anti-Piracy Detection Correctly

Talk about PlayStation Consoles here.

Moderator: pcwzrd13

alexfree
fire
Posts: 75
Contact:

CDRDAO Fork Which Can Burn PSX Games Containing EDC-Based Anti-Piracy Detection Correctly

Post#1 » Wed Dec 21, 2022 8:05 pm

https://alex-free.github.io/cdrdao

CDRDAO is a portable open source CD ripping and burning program. My fork of CDRDAO described on this page fixes a fatal bug which prevented some PSX disc images which contain an additional (EDC-based) anti-piracy measure from being burned correctly by CDRDAO.
Burning With The Generic-MMC Driver

For almost all PSX CD images (which do not contain an additional EDC-based anti-piracy measure), you have always been able to use one of the following commands below to burn a correct PSX CD-R disc with the official CDRDAO:
cdrdao write --speed 1 --driver generic-mmc --eject yourgamerip.cue
If using the above command results in a CD-R which has audio tracks containing loud static noise instead of the exepected, correct CD audio playback you need to byteswap the CD audio tracks while burning (by providing the --swap argument), with this alternative command below:
cdrdao write --speed 1 --driver generic-mmc --swap --eject yourgamerip.cue
The --swap argument is only required for some CD images that you want to burn, but not all.
You must first cd into the directory of the CD image rip before you run cdrdao, so that the .cue file of the rip is in the current directory
The generic-mmc driver (like almost every other CD burning program by default as well) corrects any incorrect EDC data it finds inside the CD image used while burning. This is actually a feature, and usually what you want. Unless you run into i.e. a PSX game which abuses this fact to provide an additional anti-piracy copy protection measure.
Introducing EDC-based additional anti-piracy copy protection found in some later PSX games. If you burn a CD image of a game which contains this EDC-based additional anti-piracy copy protection with the generic-mmc driver, CDRDAO (just like most other CD burning programs by default) will actually ‘correct’ incorrect EDC data it finds (which has been intentionally placed in various sector(s) of the original CD-ROM from which the CD image was originally ripped from). This changes what data the game itself reads from a specific part of the disc during a specific time/check function. If the game’s code itself doesn’t read the expected ‘incorrect’ EDC data, it knows that this disc is a copy and will lock up.
The good news is, there is a way around this. Some CD burning programs provide an option to not ‘update/correct’ EDC data as the CD image is burned to a CD-R. CDRDAO provides the generic-mmc-raw driver, which does offer this functionality. The problem is, since seemingly the inception of the generic-mmc-raw driver, the --swap argument does not work in combination with the generic-mmc-raw driver specifically due to a bug. This prevents you from burning a CD-R which both doesn’t update any EDC data, and has the correct byteorder for the CD audio tracks. CD images that do not require the --swap argument work as expected when burned by the generic-mmc-raw driver, but it is currently impossible to correctly burn CD images that do require the --swap argument with the generic-mmc-raw driver in the official CDRDAO.
I have finally tracked down this previously unknown bug, and provided a fix that I am trying to get into the official CDRDAO. For now, I have created my own fork which provides the bug fix enabling the --swap argument with the generic-mmc-raw driver correctly.
Burning With The Generic-MMC-Raw Driver

So for almost any PSX game CD image (including those which contain additional EDC-based copy protection), you can use one of the below CDRDAO commands to correctly burn them:
cdrdao write --speed 1 --driver generic-mmc-raw --eject yourgamerip.cue
If using the above command results in a CD-R which has audio tracks containing loud static noise instead of the exepected, correct CD audio playback you need to byteswap the CD audio tracks while burning (by providing the --swap argument), with this alternative command below:
cdrdao write --speed 1 --driver generic-mmc-raw --swap --eject yourgamerip.cue
The --swap argument is only required for some CD images that you want to burn, but not all.

  • Similar Topics
    Replies
    Views
    Last post

Return to “PlayStation Consoles”

Who is online

Users browsing this forum: No registered users