Closed TheRogueArchivist closed 1 year ago
I can confirm this. I've tried several "Enhanced CD" audio discs with DIC and they all fail in exactly the same manner on 3 different Plextors (2 PX-W4012TA's and 1 PX-W5224TA). Fails as soon as it hits 2nd session's pregap. The 2nd session's lead-in doesn't cause errors but does return useless garbage data. Possibly of note, these discs all seem to have visible rings at the session boundary.
What happens specifically is:
Everything before the beginning of the 2nd session lead-in is perfect. The 1st session lead-out comes through fine, no issues at all.
After the "sleep 20000msec", DIC appears to succeed at dumping the first several sectors (at least 4, at most 6) of the 2nd session lead-in. However, only the subchannels come through successfully on these sectors; the main-channel is filled with the above-mentioned garbage (same garbage in each sector, seems meaningless and contains no signs of what it could be or where it came from).
After the first several sectors of the 2nd session lead-in, DIC continues to proceed through the rest of the 2nd session lead-in with apparent success, but now both the main-channel and the subchannels are returning garbage. This continues until the last lead-in sector.
Then, starting with the first sector of the 2nd session pregap, errors "GetLastError: 121, The semaphore timeout period has expired." for each of the first few sectors of the pregap.
Then, Windows appears to lose the connection to the drive and DIC reports "GetLastError: 1167, The device is not connected." (note that I'm using IDE Plextors through a USB bridge, probably would be different behavior in this part under other circumstances)
Then, DIC flies through all remaining sectors with "GetLastError: 55, The specified network resource or device is no longer available." for every sector.
For all of the error sectors, DIC returns the same garbage data as it does for the 2nd session's lead-in. I can't figure out where this garbage data is being taken from since it doesn't seem to match anything that's supposed to be on the disc (and no, it's not a scrambled data sector).
Other ripping software can handle these discs fine, so DIC should be able to. One possible workaround might be to simply skip trying to read the 2nd session's lead-in and/or pregap (padding the output appropriately), but I really hope a better solution can be found. Other software can at least read the 2nd session pregap on these discs, so that should be possible at a minimum. Less sure about the 2nd session lead-in, but hopefully there is a way to get it.
Issue NOT present when dumping with a PX-760A drive, it's the same up to the point where it outputs "Sleep 20000 msec", and then it gives the length of the second session lead-in and continues without any errors.
Updated test version http://www.mediafire.com/file/eq80y20l9cwf48f/DiscImageCreator_test.7z/file 4012: CHECK_CONDITION error is a hardware problem. I can't fix it but I don't skip reading pregap sectors of 2nd session, so I don't support enhanced disc in 4012 now. 4824: semaphore timeout remains and 2 pregap sectors of 2nd session still have garbage data, but others are OK. 5224: error 1167 or 55 or other are hardware problems. I can't fix it but I don't skip reading pregap sectors of 2nd session, so I don't support enhanced disc in 5224 now.
So, just to be clear, does this mean we're giving up on ever having Enhanced-CD discs be dumpable with the 4012 or 5224? That would be a shame since the problem should be easily solvable via the addition of an option to skip the 2nd session pregap (can replace with empty or "dummy" sectors). Would you ever consider adding such an option in the future? If not, would you at least accept it as a patch if someone else were to submit it?
I doubt an option would be made to skip it, DIC doesn't usually allow reading discs unless it's done as perfectly as possible, so it seems unlikely to add the option to skip. That is unless the pregaps are always empty and the drive still accurately says how many sectors of them there are. Also Sarami, should I close the issue now?
To the best of my knowledge, the 2nd session pregap isn't any more important than the 1st session pregap, which DIC already skips (by default, no less!), so logically there should be no problem with DIC allowing the user to skip the 2nd session pregap. There's rarely anything significant in session pregaps anyway, I think the main reason DIC is getting those sectors is just for the sake of completeness and to keep the image padded properly. I agree with and support that approach, but since multiple widely-used Plextor models are choking on this, it makes sense to allow empty/"dummy" sectors to be substituted for the 2nd session pregap, just as they already are for the 2nd session lead-in. I see no downside to allowing that as an option, with the current behavior as default.
As far as closing this issue goes, I'm not sure what sarami would prefer but I think it should be left open so that I (or others) can continue to post updates here if anything new is discovered. For that same reason, most of the other issues documented on here have been left open.
That's fair about the first session pregap, I guess in that case it would be up for Sarami to decide what's best as far as that goes.
For verification purposes, I think that an option to skip the 2nd session pregap would be useful. Maybe DIC could use the log of a previous successful dump to determine whether or not read into the session pregap.
DIC encounters a CHECK_CONDITION error only a few sectors after the "Lead-out length of the 1st session" message appears. These errors occur on every single multi-session disc that I've tried, some without any visible scratches or the like. I can provide logs as available, dumping the disc is taking a fair bit of time. The drive is a WX-4012TA.