I'd go with subchannel analysis as it describes cd at lower level than sync concept. Data tracks are based on audio tracks with added correction schemes and basically from low level point of view every cd we analyze is audio cd.
177 2017-05-18 23:21:04
Re: Problem with Ridge Racer (Japan) dump (18 replies, posted in General discussion)
Subchannels don't have that great error correction schemes like 2352 data. I have CDs that look like they just came from factory but data on them is barely readable. I bet your CD is an example of poor quality master that has some unstable data in subchannels area + DIC might have a bug somewhere and incorrectly repairs the subchannel.
178 2017-05-18 15:29:41
Re: Question about Plextor (and other) drives (2 replies, posted in Guests & account requests)
40GPB is way too much even for best Plextors: PX760 or PX716. Keep in mind that the dumping software might not support your exotic Plextor and it might not support D8 command. List of supported drives:
PX-760, PX-755, PX-716, PX-714, PX-712, PX-708, PX-704, Premium2, Premium, PX-W5224, PX-4824, PX-4012 (PX-714, PX-704 can't test it enough.)
179 2017-05-16 22:32:39
Re: Problem with Ridge Racer (Japan) dump (18 replies, posted in General discussion)
Could you post here a sub file made with another tool: CloneCD or Alcohol. I want to see what's in the subs...
180 2017-05-16 19:41:35
Re: Problem with Ridge Racer (Japan) dump (18 replies, posted in General discussion)
LBA[001559, 0x00617], Data, Copy NG, Track[01], Idx[01], RelTime[00:20:59], AbsTime[00:22:59], RtoW[Zero, Zero, Zero, Zero]
LBA[001560, 0x00618], Data, Copy NG, Track[01], Idx[01], RelTime[00:20:60], AbsTime[00:22:60], RtoW[Zero, Zero, Zero, Zero]
Should be audio, not data. That explains shifted tracks. There must be a bug somewhere. Always use the newest build...
181 2017-05-16 12:02:00
Re: Problem with Ridge Racer (Japan) dump (18 replies, posted in General discussion)
Post image_sub.txt somewhere. It compresses well, maybe it would fit in attachment.
182 2017-05-15 22:48:48
Re: Settlers III Mission CD copy protected by Sysiphus (25 replies, posted in General discussion)
It's Ring PROTECH and it's very heavy disc to dump in terms of difficulty. You need at least 2 drives to dump it. A Plextor and something else with good reading capabilities like Sony OptiARC. If you want to start dumping I suggest you start with something less evil...
183 2017-05-15 19:36:56
Re: Settlers III Mission CD copy protected by Sysiphus (25 replies, posted in General discussion)
Normally it's protected by Ring PROTECH. What's Sysiphus?
184 2017-05-11 19:45:44
Re: DiscImageCreator (3,526 replies, posted in General discussion)
Nvm. Everything ok
185 2017-05-08 20:04:30
Re: DiscImageCreator (3,526 replies, posted in General discussion)
Yes, but I know in advance which sectors are bad and ideally the drive shouldn't touch such sectors at all to speed up the process as much as possible...
186 2017-05-08 18:15:29
Re: DiscImageCreator (3,526 replies, posted in General discussion)
I have a small idea related to dumping protected discs with Plextors. We all know when it comes to dumping LaserLock or RingProtech Plextors are not the best choice. Other drives perform better in this field. How about specifying in command line sector ranges that should be failed (replaced with 0x55). It would greatly improve dumping speed. Missing data can later be patched-in to the image (patching is always necessary in case of Plextors).
RingProtech requires one sector range
LaserLock requires 12 sector ranges
Maybe comma delimited argument is good enough like: /fl 100-200,300-400
What do you think?
187 2017-04-28 18:20:11
Re: DiscImageCreator (3,526 replies, posted in General discussion)
SectorType EDC::detectSector(ULONG lsn, PUCHAR sector, SIZE_T sectorSize, SectorType & sectorType, BOOL & isEdcAndMsfValid) {
isEdcAndMsfValid = FALSE;
if (sectorSize == CDIO_CD_FRAMESIZE_RAW) {
if (sector[0x000] == 0x00 && sector[0x001] == 0xFF && sector[0x002] == 0xFF && sector[0x003] == 0xFF &&
sector[0x004] == 0xFF && sector[0x005] == 0xFF && sector[0x006] == 0xFF && sector[0x007] == 0xFF &&
sector[0x008] == 0xFF && sector[0x009] == 0xFF && sector[0x00A] == 0xFF && sector[0x00B] == 0x00) { // Sync (12 bytes)
MSFAddress referenceMsf = MSFAddress(lsn) + CDIO_PREGAP_SECTORS;
MSFAddress sectorMsf;
BOOL isMValid = StringUtils::asciiByteToUchar(sector[0x00C], sectorMsf.iMinute);
BOOL isSValid = StringUtils::asciiByteToUchar(sector[0x00D], sectorMsf.iSecond);
BOOL isFValid = StringUtils::asciiByteToUchar(sector[0x00E], sectorMsf.iFrame);
if(!isMValid || !isSValid || !isFValid || referenceMsf != sectorMsf)
return SectorTypeBadMsf;
if (sector[0x00F] == 0x01) { // Mode (1 byte)
if (sector[0x814] == 0x00 && sector[0x815] == 0x00 && sector[0x816] == 0x00 && sector[0x817] == 0x00 &&
sector[0x818] == 0x00 && sector[0x819] == 0x00 && sector[0x81A] == 0x00 && sector[0x81B] == 0x00) { // Reserved (8 bytes)
if (isEdcAndMsfValid = edcCompute(0, sector, 0x810) == get32Lsb(sector + 0x810)) {
sectorType = SectorTypeMode1;
}
if (isEdcAndMsfValid && eccCheckSector(sector + 0xC, sector + 0x10, sector + 0x81C)) {
return SectorTypeMode1; // Mode 1
} else {
return SectorTypeMode1BadEcc; // Mode 1 (Safedisc etc)
}
} else {
if (isEdcAndMsfValid = edcCompute(0, sector, 0x810) == get32Lsb(sector + 0x810)) {
sectorType = SectorTypeMode1;
}
if (isEdcAndMsfValid && eccCheckSector(sector + 0xC, sector + 0x10, sector + 0x81C)) {
return SectorTypeMode1ReservedNotZero; // Mode 1 (Reserved not zero)
} else {
return SectorTypeMode1BadEcc; // Mode 1 (Safedisc etc)
}
}
} else if (sector[0x0F] == 0x02) { // Mode (1 byte)
if (sector[0x10] == sector[0x14] && sector[0x11] == sector[0x15] && sector[0x12] == sector[0x16] && sector[0x13] == sector[0x17]) { // Flags (4 bytes)
if (isEdcAndMsfValid = edcCompute(0, sector + 0x10, 0x808) == get32Lsb(sector + 0x10 + 0x808)) {
sectorType = SectorTypeMode2Form1;
}
if (isEdcAndMsfValid && eccCheckSector(zeroAddress, sector + 0x10, sector + 0x10 + 0x80C)) {
return SectorTypeMode2Form1; // Mode 2 Form 1
}
if (isEdcAndMsfValid = edcCompute(0, sector + 0x10, 0x91C) == get32Lsb(sector + 0x10 + 0x91C)) {
sectorType = SectorTypeMode2Form2;
return SectorTypeMode2Form2; // Mode 2 Form 2
} else {
isEdcAndMsfValid = TRUE;
sectorType = SectorTypeMode2;
return SectorTypeMode2; // Mode 2
}
} else {
return SectorTypeMode2FlagsNotSame; // Mode 2 (Invalid flags)
}
}
return SectorTypeUnknownMode;
} else if (sector[0x000] || sector[0x001] || sector[0x002] || sector[0x003] ||
sector[0x004] || sector[0x005] || sector[0x006] || sector[0x007] ||
sector[0x008] || sector[0x009] || sector[0x00A] || sector[0x00B] ||
sector[0x00C] || sector[0x00D] || sector[0x00E] || sector[0x00F]) { // Fix for invalid scrambled sector in data track
return SectorTypeNonZeroInvalidSync;
} else {
return SectorTypeZeroSync;
}
}
return SectorTypeNothing;
}
This is my function to check for proper sector's MSF + checks if EDC is correct...
188 2017-04-24 17:57:05
Re: DiscImageCreator (3,526 replies, posted in General discussion)
I noticed one issue with DIC and data command. For example when I dump a block of sectors from sector A to B, A != 0 and if a read error sector occurs (/rc is on) DIC incorectly inserts MSF field of header. It looks like DIC inserts MSF field based on number of sectors read but it should insert MSF based on absolute sector position inside CD...
Also EccEdc lacks one of check that CDmage has. It doesn't verify sector MSF. For example I overwritten contents of sector 1 with contents of sector 0 and EccEdc didn't report anything. CDmage reported 1 error. This check is useful in case of protectors like RingProtech where drive might fail to sync at correct sector and it will read different one instead. Happened to my only once so far...
189 2017-04-12 20:26:47
Re: DiscImageCreator (3,526 replies, posted in General discussion)
sarami, thx for the switches.
My patch to EccEdc screwed something? The new version shoule be used with checkex command with cue as a parameter. Otherwise it does not know what is data and what is audio. It's more precise but if invoked with check command it would output just like that...
190 2017-04-11 19:25:41
Re: DiscImageCreator (3,526 replies, posted in General discussion)
Savagesteel: I think none of them. You just have to issue 0xD8 command.
sarami: We probably will never get specification of SecuROM. I spoke to Jackal once and he gave me a nice tool (CDGTool) that is able to clean subs and it's clearly visible which sectors are part of SecuROM and which are just badly read. The tool detects single bit errors and compares it with CRC. The rest should be inspected manually. You can apply another layer of processing in which you check data if single bit error occured in CRC. After those two passes you are left with high probability SecuROM sectors. There are 3 types from what I have seen:
1) Error in RM and error in AM (2 errors)
2) Error in RS and error in AS (2 errors)
3) Error in RF and error in AF (2 errors)
I think I have also seen a mix of 1 and 2 or 3 (there were 2+ errors). Have you seen this tool? It's very useful if you want to cross validate the result from DIC and CDTool (which will not correct any errors).
Sarami, please add a switch to skip processing Q sub (I want to get rid of CDTool).
191 2017-04-11 08:32:46
Re: DiscImageCreator (3,526 replies, posted in General discussion)
Sarami: In function IsValidIntentionalSubSector I see limits on LBA. Are you really sure that such errors are only present in that range? What would happen if I had a sector outside that range?
Maybe you could add a switch to remove the limits from LBA 0 till end of the disc?
192 2017-04-11 07:45:31
Re: DiscImageCreator (3,526 replies, posted in General discussion)
Yes. What drive is it?
193 2017-03-22 21:07:15
Re: DiscImageCreator (3,526 replies, posted in General discussion)
This is for BE command:
CDFLAG::_READ_CD::_SUB_CHANNEL_SELECTION sub = CDFLAG::_READ_CD::Raw;
_tcsncpy(szSubCode, _T("Raw"), sizeof(szSubCode) / sizeof(szSubCode[0]));
if (pExtArg->byPack) {
sub = CDFLAG::_READ_CD::Pack;
_tcsncpy(szSubCode, _T("Pack"), sizeof(szSubCode) / sizeof(szSubCode[0]));
}
SetReadCDCommand(pExtArg, pDevice, &cdb, type, 1, c2, sub, FALSE);
OutputLog(standardOut | fileDisc, _T("Set read command: %#x, subcode reading mode: %s\n"), lpCmd[0], szSubCode);
For D8 command it's slightly different. If you want Packed subs with D8 command you have do skip C2 error reporting:
if (pExtArg->byC2 && pDevice->FEATURE.byC2ErrorData) {
_tcsncpy(szSubCode, _T("Raw"), sizeof(szSubCode) / sizeof(szSubCode[0]));
SetReadD8Command(pDevice, &cdb, 1, CDFLAG::_PLXTR_READ_CDDA::MainC2Raw);
}
else {
_tcsncpy(szSubCode, _T("Pack"), sizeof(szSubCode) / sizeof(szSubCode[0]));
SetReadD8Command(pDevice, &cdb, 1, CDFLAG::_PLXTR_READ_CDDA::MainPack);
}
194 2017-03-22 19:39:28
Re: DiscImageCreator (3,526 replies, posted in General discussion)
AFAIK D8 is incompatible with packed mode. BE is. Use /be pack to enable packed mode subs extraction. No need for PerfectRip
195 2017-03-01 09:34:30
Re: Spanish Psx dumps (Driver, Tomb Raider TLR, Manager de Liga 2001 (9 replies, posted in Guests & account requests)
Dumping multi track CDs is very tricky and you cannot be sure if it went ok unless you have one of the Plextors. Is it too much for you to get one of the Plextors drives?
196 2017-02-18 20:14:21
Re: DiscImageCreator (3,526 replies, posted in General discussion)
sarami: Could you check this dump: http://redump.org/disc/34750/
I have it and I cannot match data track... Are you sure those 822 sectors are correctly replaced with 0x55 pattern?
197 2017-02-18 08:30:12
Re: Problem dumping LaserLock protected disc. (13 replies, posted in General discussion)
RingProtech: Maybe when first bad sector occurs (N), attempt to read K sectors at position (N+100). If all K sectors are read then you're after bad area. If there's still error read sectors at position (N+200) and so on till you find good area. Once good area is found, read backwards and find first good sector (N+X). Now you know what bad area spans from N till N+X. Fill it with error pattern...
I have two RingPROTECH games and one LaserLock. it should work for them considering there's only 1 bad errored area...
198 2017-02-15 16:42:11
Re: DiscImageCreator (3,526 replies, posted in General discussion)
Confirmed invitation. What I did with this commit is that now the tool is able to parse CUE files and according to that it checks data tracks if all the sectors in it are proper. I also took into account case where sync sectors are allowed at the beginning and at the end of track but not in the middle ('cnt_SectorTypeZeroSync'). The tool handles VOB Protect just fine.
Support for SecuROM in which there's different mode sector at end of data track is not handled ATM...
199 2017-02-14 22:08:26
Re: DiscImageCreator (3,526 replies, posted in General discussion)
Sarami I still cannot commit to EdcEcc (permission denied)
200 2017-02-11 11:34:37
Re: DiscImageCreator (3,526 replies, posted in General discussion)
sarami: If you're reading this add me to the EccEdc project on GitHub. I have rewritten EccEdc to have some nice features (for protected discs) and now I want to commit the changes...