Page 99 of 354

Re: DiscImageCreator

Posted: Sat Apr 22, 2017 7:47 pm
by sarami
_subError.txt

Code: Select all

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.
darksabre76 wrote:The disc is completely scratch-free
Please try to to use /s 2 option or change the reading speed or change the drive.

Re: DiscImageCreator

Posted: Sun Apr 23, 2017 9:58 pm
by darksabre76
Adding the /s 2 option seems to have fixed any errors that arose. I will keep that in mind in the future. Thanks!

Re: DiscImageCreator

Posted: Mon Apr 24, 2017 11:57 am
by reentrant
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...

Re: DiscImageCreator

Posted: Tue Apr 25, 2017 9:22 pm
by sarami
reentrant wrote: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.
reentrant wrote: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.

Re: DiscImageCreator

Posted: Fri Apr 28, 2017 12:20 pm
by reentrant

Code: Select all

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...

Re: DiscImageCreator

Posted: Sun May 07, 2017 7:43 am
by sarami
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

/viewtopic.php?p=24192#p24192
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.

Re: DiscImageCreator

Posted: Sun May 07, 2017 12:33 pm
by usurper
Getting an error:

Code: Select all

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
Logs: https://www.mediafire.com/?liuxjq5ilr86hbh

Re: DiscImageCreator

Posted: Sun May 07, 2017 12:42 pm
by Jackal
sarami wrote: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

/viewtopic.php?p=24192#p24192
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.
Image thanks for all your hard work.. I don't know where we would be without DIC

Re: DiscImageCreator

Posted: Sun May 07, 2017 8:58 pm
by ssjkakaroto
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?

Re: DiscImageCreator

Posted: Mon May 08, 2017 12:15 pm
by reentrant
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?