Dunno, if to call it a bug or not, but if you dump some game with < 10 tracks (you get tracks with the names like "(Track 1).bin"), then some game with > 10 tracks (you get tracks with the names like "(Track 01).bin" without deleting the previous dump .bin files, you get the datfile with all the tracks from both dumps.
20170417 test
-changed: Disabled Streaming SIMD Extensions (SSE) for old CPU
-fixed: output unnecessary hash
978 2017-04-16 19:30:21 (edited by Jackal 2017-04-16 19:31:21)
Hi,
is it possible to make DiscImageCreator Wine-compatible, or even make a native Linux binary? I don't know how much of the code is Windows-specific.
Not for me, but on some other forums people mentioned that they couldn't get it to work with Wine, so just wondering.
979 2017-04-17 11:05:20 (edited by sarami 2017-04-22 18:07:09)
is it possible to make DiscImageCreator Wine-compatible, or even make a native Linux binary? I don't know how much of the code is Windows-specific.
https://github.com/saramibreak/DiscImag … r/issues/2
At least, need to rewrite WinAPI, XmlLite, WinDDK. About Wine, I don't know detail.
This site may be very useful about WinDDK. https://www.ibm.com/developerworks/libr … migration/
Hey, I'm running into a weird issue with the newest version of DIC as described here. Here is a link to the DIC log files and info from the rip: https://mega.nz/#F!YE1XWawY!B10c28Ug_3-LEPCa89xPiQ If necessary, I will upload both versions of the rip to the same folder.
Thanks in advance.
_subError.txt
LBA[151330, 0x24f22]: Track[01]: SubQ[13]:TrackNum[00] L:[509] -> [01], L:[1285]
LBA[151330, 0x24f22]: Track[01]: SubQ[14]:Idx[00] -> [01], L:[509]
LBA[151330, 0x24f22]: Track[01]: SubQ[15-17]:PrevRel[151329, 33:37:54], Rel[125040, 25:165:165] -> [151330, 33:37:55], L:[509]
LBA[151330, 0x24f22]: Track[01]: SubQ[18]:[0xff] -> [0x00]
LBA[151330, 0x24f22]: Track[01]: SubQ[19-21]:PrevAbs[151479, 33:39:54], Abs[755040, 165:165:165] -> [151480, 33:39:55]
LBA[151330, 0x24f22]: Track[01]: SubQ[12]:Ctl[0] -> [4], L:[357]
LBA[151330, 0x24f22]: Track[01]: SubQ[22]:CrcHigh[0xff] -> [0x37]
LBA[151330, 0x24f22]: Track[01]: SubQ[23]:CrcLow[0xff] -> [0x5f]
:
LBA[151331, 0x24f23]: Track[01]: SubQ[13]:TrackNum[00] L:[509] -> [01], L:[1285]
LBA[151331, 0x24f23]: Track[01]: SubQ[14]:Idx[00] -> [01], L:[509]
LBA[151331, 0x24f23]: Track[01]: SubQ[15-17]:PrevRel[151330, 33:37:55], Rel[125040, 25:165:165] -> [151331, 33:37:56], L:[509]
LBA[151331, 0x24f23]: Track[01]: SubQ[18]:[0xff] -> [0x00]
LBA[151331, 0x24f23]: Track[01]: SubQ[19-21]:PrevAbs[151480, 33:39:55], Abs[755040, 165:165:165] -> [151481, 33:39:56]
LBA[151331, 0x24f23]: Track[01]: SubQ[12]:Ctl[0] -> [4], L:[357]
LBA[151331, 0x24f23]: Track[01]: SubQ[22]:CrcHigh[0xff] -> [0xe9]
LBA[151331, 0x24f23]: Track[01]: SubQ[23]:CrcLow[0xff] -> [0xee]
:
LBA[151333, 0x24f25]: Track[01]: SubQ[13]:TrackNum[02] L:[606] -> [01], L:[1285]
LBA[151333, 0x24f25]: Track[01]: SubQ[14]:Idx[02] -> [01], L:[606]
LBA[151333, 0x24f25]: Track[01]: SubQ[15-17]:PrevRel[151332, 33:37:57], Rel[302664, 66:74:114] -> [151333, 33:37:58], L:[606]
LBA[151333, 0x24f25]: Track[01]: SubQ[19-21]:PrevAbs[151482, 33:39:57], Abs[302514, 66:72:114] -> [151483, 33:39:58]
LBA[151333, 0x24f25]: Track[01]: SubQ[12]:Ctl[0] -> [4], L:[357]
LBA[151333, 0x24f25]: Track[01]: SubQ[22]:CrcHigh[0xa7] -> [0xc7]
LBA[151333, 0x24f25]: Track[01]: SubQ[23]:CrcLow[0x3c] -> [0x88]
:
LBA[151334, 0x24f26]: Track[01]: SubQ[13]:TrackNum[02] L:[597] -> [01], L:[1285]
LBA[151334, 0x24f26]: Track[01]: SubQ[14]:Idx[02] -> [01], L:[597]
LBA[151334, 0x24f26]: Track[01]: SubQ[15-17]:PrevRel[151333, 33:37:58], Rel[302660, 66:74:110] -> [151334, 33:37:59], L:[597]
LBA[151334, 0x24f26]: Track[01]: SubQ[19-21]:PrevAbs[151483, 33:39:58], Abs[302441, 66:72:41] -> [151484, 33:39:59]
LBA[151334, 0x24f26]: Track[01]: SubQ[12]:Ctl[8] -> [4], L:[343]
LBA[151334, 0x24f26]: Track[01]: SubQ[22]:CrcHigh[0x01] -> [0x7d]
LBA[151334, 0x24f26]: Track[01]: SubQ[23]:CrcLow[0x01] -> [0xf8]
LBA[151335, 0x24f27]: Track[01]: SubQ[13]:TrackNum[37] L:[488] -> [01], L:[1285]
LBA[151335, 0x24f27]: Track[01]: SubQ[14]:Idx[59] -> [01], L:[399]
LBA[151335, 0x24f27]: Track[01]: SubQ[15-17]:PrevRel[151334, 33:37:59], Rel[2514, 00:33:39] -> [151335, 33:37:60], L:[668]
LBA[151335, 0x24f27]: Track[01]: SubQ[18]:[0x59] -> [0x00]
LBA[151335, 0x24f27]: Track[01]: SubQ[19-21]:PrevAbs[151484, 33:39:59], Abs[385391, 83:158:41] -> [151485, 33:39:60]
LBA[151335, 0x24f27]: Track[01]: SubQ[12]:Ctl[3] -> [4], L:[343]
LBA[151335, 0x24f27]: Track[01]: SubQ[22]:CrcHigh[0x01] -> [0x7e]
LBA[151335, 0x24f27]: Track[01]: SubQ[23]:CrcLow[0x01] -> [0x10]
LBA[151336, 0x24f28]: Track[01]: SubQ[13]:TrackNum[37] L:[488] -> [01], L:[1285]
LBA[151336, 0x24f28]: Track[01]: SubQ[14]:Idx[60] -> [01], L:[399]
LBA[151336, 0x24f28]: Track[01]: SubQ[15-17]:PrevRel[151335, 33:37:60], Rel[2514, 00:33:39] -> [151336, 33:37:61], L:[668]
LBA[151336, 0x24f28]: Track[01]: SubQ[18]:[0x60] -> [0x00]
LBA[151336, 0x24f28]: Track[01]: SubQ[19-21]:PrevAbs[151485, 33:39:60], Abs[378791, 84:10:41] -> [151486, 33:39:61]
LBA[151336, 0x24f28]: Track[01]: SubQ[12]:Ctl[3] -> [4], L:[343]
LBA[151336, 0x24f28]: Track[01]: SubQ[22]:CrcHigh[0x01] -> [0xc4]
LBA[151336, 0x24f28]: Track[01]: SubQ[23]:CrcLow[0x01] -> [0x60]
LBA[151337, 0x24f29]: Track[01]: SubQ[13]:TrackNum[37] L:[488] -> [01], L:[1285]
LBA[151337, 0x24f29]: Track[01]: SubQ[14]:Idx[61] -> [01], L:[399]
LBA[151337, 0x24f29]: Track[01]: SubQ[15-17]:PrevRel[151336, 33:37:61], Rel[2514, 00:33:39] -> [151337, 33:37:62], L:[668]
LBA[151337, 0x24f29]: Track[01]: SubQ[18]:[0x61] -> [0x00]
LBA[151337, 0x24f29]: Track[01]: SubQ[19-21]:PrevAbs[151486, 33:39:61], Abs[562541, 124:60:41] -> [151487, 33:39:62]
LBA[151337, 0x24f29]: Track[01]: SubQ[12]:Ctl[3] -> [4], L:[343]
LBA[151337, 0x24f29]: Track[01]: SubQ[22]:CrcHigh[0x01] -> [0x1a]
LBA[151337, 0x24f29]: Track[01]: SubQ[23]:CrcLow[0x01] -> [0xd1]
LBA[151338, 0x24f2a]: Track[01]: SubQ[13]:TrackNum[37] L:[488] -> [01], L:[1285]
LBA[151338, 0x24f2a]: Track[01]: SubQ[14]:Idx[62] -> [01], L:[399]
LBA[151338, 0x24f2a]: Track[01]: SubQ[15-17]:PrevRel[151337, 33:37:62], Rel[2514, 00:33:39] -> [151338, 33:37:63], L:[668]
LBA[151338, 0x24f2a]: Track[01]: SubQ[18]:[0x62] -> [0x00]
LBA[151338, 0x24f2a]: Track[01]: SubQ[19-21]:PrevAbs[151487, 33:39:62], Abs[99866, 20:131:41] -> [151488, 33:39:63]
LBA[151338, 0x24f2a]: Track[01]: SubQ[12]:Ctl[3] -> [4], L:[343]
LBA[151338, 0x24f2a]: Track[01]: SubQ[22]:CrcHigh[0x01] -> [0xa0]
LBA[151338, 0x24f2a]: Track[01]: SubQ[23]:CrcLow[0x01] -> [0xa1]
LBA[151339, 0x24f2b]: Track[01]: SubQ[13]:TrackNum[37] L:[488] -> [01], L:[1285]
LBA[151339, 0x24f2b]: Track[01]: SubQ[14]:Idx[63] -> [01], L:[399]
LBA[151339, 0x24f2b]: Track[01]: SubQ[15-17]:PrevRel[151338, 33:37:63], Rel[2514, 00:33:39] -> [151339, 33:37:64], L:[668]
LBA[151339, 0x24f2b]: Track[01]: SubQ[18]:[0x63] -> [0x00]
LBA[151339, 0x24f2b]: Track[01]: SubQ[19-21]:PrevAbs[151488, 33:39:63], Abs[457616, 100:101:41] -> [151489, 33:39:64]
LBA[151339, 0x24f2b]: Track[01]: SubQ[12]:Ctl[3] -> [4], L:[343]
LBA[151339, 0x24f2b]: Track[01]: SubQ[22]:CrcHigh[0x01] -> [0xb7]
LBA[151339, 0x24f2b]: Track[01]: SubQ[23]:CrcLow[0x01] -> [0x92]
LBA[151340, 0x24f2c]: Track[01]: SubQ[13]:TrackNum[37] L:[488] -> [01], L:[1285]
LBA[151340, 0x24f2c]: Track[01]: SubQ[14]:Idx[64] -> [01], L:[399]
LBA[151340, 0x24f2c]: Track[01]: SubQ[15-17]:PrevRel[151339, 33:37:64], Rel[2514, 00:33:39] -> [151340, 33:37:65], L:[668]
LBA[151340, 0x24f2c]: Track[01]: SubQ[18]:[0x64] -> [0x00]
LBA[151340, 0x24f2c]: Track[01]: SubQ[19-21]:PrevAbs[151489, 33:39:64], Abs[533441, 117:92:41] -> [151490, 33:39:65]
LBA[151340, 0x24f2c]: Track[01]: SubQ[12]:Ctl[3] -> [4], L:[343]
LBA[151340, 0x24f2c]: Track[01]: SubQ[22]:CrcHigh[0x01] -> [0x0d]
LBA[151340, 0x24f2c]: Track[01]: SubQ[23]:CrcLow[0x01] -> [0xe2]
LBA[151341, 0x24f2d]: Track[01]: SubQ[13]:TrackNum[37] L:[488] -> [01], L:[1285]
LBA[151341, 0x24f2d]: Track[01]: SubQ[14]:Idx[65] -> [01], L:[399]
LBA[151341, 0x24f2d]: Track[01]: SubQ[15-17]:PrevRel[151340, 33:37:65], Rel[2514, 00:33:39] -> [151341, 33:37:66], L:[668]
LBA[151341, 0x24f2d]: Track[01]: SubQ[18]:[0x65] -> [0x00]
LBA[151341, 0x24f2d]: Track[01]: SubQ[19-21]:PrevAbs[151490, 33:39:65], Abs[69191, 13:142:41] -> [151491, 33:39:66]
LBA[151341, 0x24f2d]: Track[01]: SubQ[12]:Ctl[3] -> [4], L:[343]
LBA[151341, 0x24f2d]: Track[01]: SubQ[22]:CrcHigh[0x01] -> [0xd3]
LBA[151341, 0x24f2d]: Track[01]: SubQ[23]:CrcLow[0x01] -> [0x53]
LBA[151342, 0x24f2e]: Track[01]: SubQ[13]:TrackNum[37] L:[488] -> [01], L:[1285]
LBA[151342, 0x24f2e]: Track[01]: SubQ[14]:Idx[66] -> [01], L:[399]
LBA[151342, 0x24f2e]: Track[01]: SubQ[15-17]:PrevRel[151341, 33:37:66], Rel[2514, 00:33:39] -> [151342, 33:37:67], L:[668]
LBA[151342, 0x24f2e]: Track[01]: SubQ[18]:[0x66] -> [0x00]
LBA[151342, 0x24f2e]: Track[01]: SubQ[19-21]:PrevAbs[151491, 33:39:66], Abs[602516, 133:53:41] -> [151492, 33:39:67]
LBA[151342, 0x24f2e]: Track[01]: SubQ[12]:Ctl[3] -> [4], L:[343]
LBA[151342, 0x24f2e]: Track[01]: SubQ[22]:CrcHigh[0x01] -> [0x69]
LBA[151342, 0x24f2e]: Track[01]: SubQ[23]:CrcLow[0x01] -> [0x23]
LBA[151343, 0x24f2f]: Track[01]: SubQ[13]:TrackNum[37] L:[488] -> [01], L:[1285]
LBA[151343, 0x24f2f]: Track[01]: SubQ[14]:Idx[67] -> [01], L:[399]
LBA[151343, 0x24f2f]: Track[01]: SubQ[15-17]:PrevRel[151342, 33:37:67], Rel[2514, 00:33:39] -> [151343, 33:37:68], L:[668]
LBA[151343, 0x24f2f]: Track[01]: SubQ[18]:[0x67] -> [0x00]
LBA[151343, 0x24f2f]: Track[01]: SubQ[19-21]:PrevAbs[151492, 33:39:67], Abs[312266, 69:23:41] -> [151493, 33:39:68]
LBA[151343, 0x24f2f]: Track[01]: SubQ[12]:Ctl[3] -> [4], L:[343]
LBA[151343, 0x24f2f]: Track[01]: SubQ[22]:CrcHigh[0x01] -> [0xfd]
LBA[151343, 0x24f2f]: Track[01]: SubQ[23]:CrcLow[0x01] -> [0x35]
LBA[151344, 0x24f30]: Track[01]: SubQ[13]:TrackNum[37] L:[488] -> [01], L:[1285]
LBA[151344, 0x24f30]: Track[01]: SubQ[14]:Idx[68] -> [01], L:[399]
LBA[151344, 0x24f30]: Track[01]: SubQ[15-17]:PrevRel[151343, 33:37:68], Rel[2514, 00:33:39] -> [151344, 33:37:69], L:[668]
LBA[151344, 0x24f30]: Track[01]: SubQ[18]:[0x68] -> [0x00]
LBA[151344, 0x24f30]: Track[01]: SubQ[19-21]:PrevAbs[151493, 33:39:68], Abs[736166, 163:35:41] -> [151494, 33:39:69]
LBA[151344, 0x24f30]: Track[01]: SubQ[12]:Ctl[3] -> [4], L:[343]
LBA[151344, 0x24f30]: Track[01]: SubQ[22]:CrcHigh[0x01] -> [0x47]
LBA[151344, 0x24f30]: Track[01]: SubQ[23]:CrcLow[0x01] -> [0x45]
LBA[151345, 0x24f31]: Track[01]: SubQ[13]:TrackNum[37] L:[488] -> [01], L:[1285]
LBA[151345, 0x24f31]: Track[01]: SubQ[14]:Idx[69] -> [01], L:[399]
LBA[151345, 0x24f31]: Track[01]: SubQ[15-17]:PrevRel[151344, 33:37:69], Rel[2514, 00:33:39] -> [151345, 33:37:70], L:[668]
LBA[151345, 0x24f31]: Track[01]: SubQ[18]:[0x69] -> [0x00]
LBA[151345, 0x24f31]: Track[01]: SubQ[19-21]:PrevAbs[151494, 33:39:69], Abs[214916, 47:45:41] -> [151495, 33:39:70]
LBA[151345, 0x24f31]: Track[01]: SubQ[12]:Ctl[3] -> [4], L:[343]
LBA[151345, 0x24f31]: Track[01]: SubQ[22]:CrcHigh[0x01] -> [0x68]
LBA[151345, 0x24f31]: Track[01]: SubQ[23]:CrcLow[0x01] -> [0x7b]
LBA[151346, 0x24f32]: Track[01]: SubQ[13]:TrackNum[37] L:[488] -> [01], L:[1285]
LBA[151346, 0x24f32]: Track[01]: SubQ[14]:Idx[70] -> [01], L:[399]
LBA[151346, 0x24f32]: Track[01]: SubQ[15-17]:PrevRel[151345, 33:37:70], Rel[2514, 00:33:39] -> [151346, 33:37:71], L:[668]
LBA[151346, 0x24f32]: Track[01]: SubQ[18]:[0x70] -> [0x00]
LBA[151346, 0x24f32]: Track[01]: SubQ[19-21]:PrevAbs[151495, 33:39:70], Abs[312116, 68:81:41] -> [151496, 33:39:71]
LBA[151346, 0x24f32]: Track[01]: SubQ[12]:Ctl[3] -> [4], L:[343]
LBA[151346, 0x24f32]: Track[01]: SubQ[22]:CrcHigh[0x01] -> [0xd2]
LBA[151346, 0x24f32]: Track[01]: SubQ[23]:CrcLow[0x01] -> [0x0b]
LBA[151347, 0x24f33]: Track[01]: SubQ[13]:TrackNum[37] L:[488] -> [01], L:[1285]
LBA[151347, 0x24f33]: Track[01]: SubQ[14]:Idx[71] -> [01], L:[399]
LBA[151347, 0x24f33]: Track[01]: SubQ[15-17]:PrevRel[151346, 33:37:71], Rel[2514, 00:33:39] -> [151347, 33:37:72], L:[668]
LBA[151347, 0x24f33]: Track[01]: SubQ[18]:[0x71] -> [0x00]
LBA[151347, 0x24f33]: Track[01]: SubQ[19-21]:PrevAbs[151496, 33:39:71], Abs[594866, 132:11:41] -> [151497, 33:39:72]
LBA[151347, 0x24f33]: Track[01]: SubQ[12]:Ctl[3] -> [4], L:[343]
LBA[151347, 0x24f33]: Track[01]: SubQ[22]:CrcHigh[0x01] -> [0x0c]
LBA[151347, 0x24f33]: Track[01]: SubQ[23]:CrcLow[0x01] -> [0xba]
LBA[151347, 0x24f33]: Track[01]: SubR[26]:[0x01] -> [0x00]
LBA[151348, 0x24f34]: Track[01]: SubP[08]:[0x80] -> [0x00]
LBA[151348, 0x24f34]: Track[01]: SubQ[13]:TrackNum[37] L:[488] -> [01], L:[1285]
LBA[151348, 0x24f34]: Track[01]: SubQ[14]:Idx[72] -> [01], L:[399]
LBA[151348, 0x24f34]: Track[01]: SubQ[15-17]:PrevRel[151347, 33:37:72], Rel[2514, 00:33:39] -> [151348, 33:37:73], L:[668]
LBA[151348, 0x24f34]: Track[01]: SubQ[18]:[0x72] -> [0x00]
LBA[151348, 0x24f34]: Track[01]: SubQ[19-21]:PrevAbs[151497, 33:39:72], Abs[3041, 00:40:41] -> [151498, 33:39:73]
LBA[151348, 0x24f34]: Track[01]: SubQ[12]:Ctl[3] -> [4], L:[343]
LBA[151348, 0x24f34]: Track[01]: SubQ[22]:CrcHigh[0x01] -> [0xb6]
LBA[151348, 0x24f34]: Track[01]: SubQ[23]:CrcLow[0x01] -> [0xca]
:
Apparently, it haven't been able to get the sub correctly.
The disc is completely scratch-free
Please try to to use /s 2 option or change the reading speed or change the drive.
Adding the /s 2 option seems to have fixed any errors that arose. I will keep that in mind in the future. Thanks!
983 2017-04-24 17:57:05 (edited by reentrant 2017-04-24 19:25:29)
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...
984 2017-04-26 03:22:12 (edited by sarami 2017-04-26 04:13:39)
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...
The argument checking function didn't work properly in test version. Fixed.
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...
Neill Corlett, he coded the Checking ECC and Compuing EDC, probably didn't expect this. So, edccchk that uses same code is also probably exists same problem (but I haven't confirmed it). I examine coding.
985 2017-04-28 18:20:11 (edited by reentrant 2017-04-28 18:21:10)
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...
986 2017-05-07 13:43:45 (edited by sarami 2017-05-07 13:46:54)
Uploaded 20170507 https://github.com/saramibreak/DiscImag … r/releases
- added: /np /nq option
- changed: Option name /g -> /nr, /l -> /nl, /se -> /ns
- changed: Some log message
- changed: Disabled SSE2 of vcxproj (for old cpu)
- changed: MaximumTransferLength is limited to 64KB (can't read 128KB)
- improved: Checking argument (check command-length)
- improved: Subchannel ripping of SecuROM
- fixed: Reading DirectoryRecord
- fixed: Output unnecessary hash
http://forum.redump.org/post/54643/#p54643
I'll try slowly. I installed Visual Studio 2017 and VirtualBox, Vagrant (box with bento/ubuntu-16.04) in host PC, and installed gdb and gdbserver, g++ in guest PC.
Getting an error:
d:\REDUMP\PTGVOL3 - Dark Project - Der Meisterdieb>DiscImageCreator.exe cd e: Track 4 /c2 10
OS
Windows 7 Professional Service Pack 1 64bit
AppVersion
x86, AnsiBuild, May 7 2017 21:11:00
/c2 val2 is omitted. set [4096]
/c2 val3 is omitted. set [4]
CurrentDirectory
d:\REDUMP\PTGVOL3 - Dark Project - Der Meisterdieb
WorkingPath
Argument: Track
FullPath: d:\REDUMP\PTGVOL3 - Dark Project - Der Meisterdieb\Track
Drive: d:
Directory: \REDUMP\PTGVOL3 - Dark Project - Der Meisterdieb\
Filename: Track
Extension:
Start time: 2017-05-07(Sun) 19:12:58
Set the drive speed: 705KB/sec
Allocating packed memory for C2 errors: 8192
This drive supports [Opcode: 0xd8, SubCh: 0]
This drive supports [Opcode: 0xd8, SubCh: 1]
This drive supports [Opcode: 0xd8, SubCh: 2]
This drive supports [Opcode: 0xd8, SubCh: 3]
This drive supports [Opcode: 0xd8, SubCh: 8]
Checking reading lead-out -> OK
Checking SubQ adr (Track) 4/ 4
Checking SubRtoW (Track) 4/ 4
Reading DirectoryRecord 15/ 15
Reading DirectoryRecord 15/ 15
Set opcode: 0xd8, subcode: 08(Raw)
Checking SubQ ctl (Track) 4/ 4
Created img (LBA) 342905/342904
[L:2306] Internal error. Failed to analyze the subchannel. Track[01]/[04]
Freeing allocated memory for C2 errors: 8192
End time: 2017-05-07(Sun) 19:32:16
988 2017-05-07 18:42:05 (edited by Jackal 2017-05-07 18:42:25)
Uploaded 20170507 https://github.com/saramibreak/DiscImag … r/releases
- added: /np /nq option
- changed: Option name /g -> /nr, /l -> /nl, /se -> /ns
- changed: Some log message
- changed: Disabled SSE2 of vcxproj (for old cpu)
- changed: MaximumTransferLength is limited to 64KB (can't read 128KB)
- improved: Checking argument (check command-length)
- improved: Subchannel ripping of SecuROM
- fixed: Reading DirectoryRecord
- fixed: Output unnecessary hashhttp://forum.redump.org/post/54643/#p54643
I'll try slowly. I installed Visual Studio 2017 and VirtualBox, Vagrant (box with bento/ubuntu-16.04) in host PC, and installed gdb and gdbserver, g++ in guest PC.
thanks for all your hard work.. I don't know where we would be without DIC
Thanks for the update sarami.
BTW can you modify the *_volDesc.txt log so that it also has the Primary Volume Descriptor (PVD) in the format that the "New Disc" form requires?
990 2017-05-08 18:15:29 (edited by reentrant 2017-05-08 18:16:34)
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?
Getting an error:
Similar error http://forum.redump.org/post/54685/#p54685
BTW can you modify the *_volDesc.txt log so that it also has the Primary Volume Descriptor (PVD) in the format that the "New Disc" form requires?
Adopted IsoBuster sector.
http://www.mediafire.com/file/eq80y20l9 … or_test.7z
See *_mainInfo.txt
I have a small idea related to dumping protected discs with Plextors.
That is to say, is this the skipping error like a clonecd and alcohol? I think good.
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...
Adopted IsoBuster sector.
http://www.mediafire.com/file/eq80y20l9 … or_test.7z
See *_mainInfo.txt
Thanks a lot sarami!
I noticed that if you have a filename with a dot, DIC will truncate it at the dot, for example "Game name (v1.2)" becomes "Game name (v1".
Is there a way to escape characters? I tried using a backslash before the dot but it just created a new directory.
I noticed that if you have a filename with a dot, DIC will truncate it at the dot, for example "Game name (v1.2)" becomes "Game name (v1".
Is there a way to escape characters? I tried using a backslash before the dot but it just created a new directory.
Please see http://forum.redump.org/post/42430/#p42430 or KnownIssue.txt
995 2017-05-11 19:45:44 (edited by reentrant 2017-05-11 20:02:33)
Nvm. Everything ok
996 2017-05-13 12:42:37 (edited by usurper 2017-05-13 12:47:02)
usurper wrote:Getting an error:
Similar error http://forum.redump.org/post/54685/#p54685
It doesn't work. Disc is in mint condition, no scratches. Tried different Plextor drive, lower speed and also /s 2 switch. Nothing worked.
Uploaded subs here - done with Perfectrip, since CDTool also crashed: https://www.mediafire.com/?rt35252ebl9ezry
Could you please have a look and try to get this fixed?
Sector 287612 ~ 304903 is abnormal. Protection?
998 2017-05-13 15:52:39 (edited by usurper 2017-05-13 16:04:25)
Not sure. Protection ID doesnt show anything.
EDIT: Gamecopeworld states: Illegal TOC http://gamecopyworld.eu/games/pc_thief.shtml
However, this is a Re-release from the "Play the Games vol.3" collection. I do not know if the copy protection of the original release still included and activated.
Shouldn't DIC detect CD-Rs as CD-Rs (by ATIP), not as "DiscType: CD-DA or CD-ROM Disc"?
1,000 2017-05-17 02:24:14
Shouldn't DIC detect CD-Rs as CD-Rs (by ATIP), not as "DiscType: CD-DA or CD-ROM Disc"?
The disc type can be obtained by READ_DISC_INFORMATION (0x51), and this command can only detect CDDA (included CD-ROM), CD-I, CD-ROM XA.
scsi.h
#define DISK_TYPE_CDDA 0x00
#define DISK_TYPE_CDI 0x10
#define DISK_TYPE_XA 0x20
#define DISK_TYPE_UNDEFINED 0xFF
About CD-R, I haven't considered it. I'll examine it.
try to get this fixed?
It's difficult now, for it can't get the subchannel exactly.