DiscImageCreator
DiscImageCreator copied to clipboard
[Request] Add option to allow DIC to retry C2 error reading while still allowing a dump to finish if the retries aren't successful
Describe the bug Currently, DIC is only able to dump a disc with either no C2 error rereadings, or to have it attempt to reread the errors but not complete the dump if the rereads are unsuccessful. This is an issue for multiple situations, including development CD-Rs that have 2-3 errored sectors at the end of the disc due to the mastering method used. The /c2 option has to be disabled for dumping these discs, but without proper retrying of errors, consistent dumps of the same disc can be impossible. Another situation includes if a copy protected disc that uses bad sectors (but isn't supported by DIC's protection scanning) has bad sectors not related to the copy protection. Discs like these couldn't be accurately dumped by DIC.
Currently when dumping a CD-R with erroneous sectors at the end due to bad mastering there is no method other than to dump the whole disc repeatedly without /c2 and guess that if you get two reads that match then you have the "best possible" result. But for example I have dumped discs where I get 3 reads with one checksum and 2 with a second checksum and there is no good way for me to decide between them. This issue has been coming up repeatedly in the VGPC discord in chats with new volunteers trying to dump discs because there are a number of Redump-eligible titles released on CD-R discs.
So I have two questions:
-
Are badly mastered CD-Rs bad in some consistent way such that it's possible for DIC to detect which of multiple reads corresponds to what is actually on the disc? (Or as close as we can get to that)
-
Can DIC detect that a disc is a CD-R affected by the mastering issue and do whatever handling needs to be done automatically without the user having to deal with it?
DIC can't detect CD-Rs is really bad or not without /c2
It must be possible to do something better than the current behaviour. For example, changing /c2 to work something like this:
- If a sector has a C2 error, AND
- The sector has been retried for the full reread count without success, THEN
- If the disc identifies as a CD-R, AND
- Only the last 2 sectors are bad, THEN
- Log that we are assuming a badly mastered CD-R
- Read the sector without c2 for the full reread count and count how many times each result is obtained
- Accept whichever result is obtained a plurality of the time and write that to the image
- Increase the error count by 1
- Move on to the next sector
- Otherwise (not a CD-R or error is elsewhere on the disc), abort with an error as currently
That would provide a much better out-of-the-box experience for users trying to dump CD-Rs with this mastering issue that seems to be pretty common.
There could also (or instead) be a "C2 optional" parameter for handling other types of situations which I think is what Silas had in mind:
- If a sector has a C2 error, AND
- The sector has been retried for the full reread count without success, THEN
- If "C2 optional" is enabled, THEN
- Read the sector without c2 for the full reread count and count how many times each result is obtained
- Accept whichever result is obtained a plurality of the time and write that to the image
- Increase the error count by 1
- Move on to the next sector
- If "C2 optional" is enabled, THEN
That would allow for power users to handle situations like damaged one-of-a-kind discs where the goal is to recover as much data as possible even if some sectors are hopeless. You don't necessarily want to abort after the first unrecoverable sector (like /c2) but you also don't want to just take the first bad read for every sector (like DIC without /c2) when there are potentially some sectors that would have gotten a good read if they had been retried.