Correct mishandling of EDC-less mode 2 form 2 sectors, and of mode 2 formless sectors

This commit is contained in:
2014-03-02 19:27:23 +00:00
parent b174597a07
commit a93a2401a5
5 changed files with 8 additions and 11 deletions

View File

@@ -1,9 +1,9 @@
edccchk v1.0 edccchk v1.10
============ =============
EDC/ECC checker for RAW (2352 bytes/sector) CD images EDC/ECC checker for RAW (2352 bytes/sector) CD images
Copyright © 2013 Natalia Portillo <claunia@claunia.com> Copyright © 2013-2014 Natalia Portillo <claunia@claunia.com>
Based on ECM v1.03 Copyright © 2002-2011 Neill Corlett Based on ECM v1.03 Copyright © 2002-2011 Neill Corlett
@@ -21,11 +21,6 @@ Features
* Supports Mode 0, Mode 1 and Mode 2 data sectors, ignores Audio sectors. * Supports Mode 0, Mode 1 and Mode 2 data sectors, ignores Audio sectors.
* Shows failing sectors as MSF. * Shows failing sectors as MSF.
Known bugs
==========
Mode 2 form-less sectors all appear as errors. Mode 2 form 1 and form 2 sectors are processed correctly.
Changelog Changelog
========= =========
@@ -33,10 +28,12 @@ Changelog
* Converted ECM code to only check sectors. * Converted ECM code to only check sectors.
* Added support for mode 0 sectors. * Added support for mode 0 sectors.
2014/03/02 v1.10
* Corrected handling of mode 2 form 2 sectors with omitted EDC. Side-effect, corrects mode 2 form-less sectors processing.
To-Do To-Do
===== =====
* Support Mode 2 form-less sectors
* Support RAW+SUB images (2448 bytes/sector) * Support RAW+SUB images (2448 bytes/sector)
* Check Q-subchannel CRCs * Check Q-subchannel CRCs
* Check CD+G CRCs * Check CD+G CRCs

Binary file not shown.

BIN
bin/edccchk-v1.1-win32.zip Normal file

Binary file not shown.

View File

@@ -398,7 +398,7 @@ static int8_t ecmify(
if((sector[0x012] & 0x20) == 0x20) // mode 2 form 2 if((sector[0x012] & 0x20) == 0x20) // mode 2 form 2
{ {
mode2f2sectors++; mode2f2sectors++;
if(edc_compute(0, m2sec, 0x91C) != get32lsb(m2sec + 0x91C)) if(edc_compute(0, m2sec, 0x91C) != get32lsb(m2sec + 0x91C) && get32lsb(m2sec + 0x91C) != 0)
{ {
fprintf(stderr, "Mode 2 form 2 sector with error at address: %02X:%02X:%02X\n", sector[0x00C], sector[0x00D], sector[0x00E]); fprintf(stderr, "Mode 2 form 2 sector with error at address: %02X:%02X:%02X\n", sector[0x00C], sector[0x00D], sector[0x00E]);
mode2f2errors++; mode2f2errors++;

View File

@@ -1 +1 @@
"v1.00" "v1.10"