-
Notifications
You must be signed in to change notification settings - Fork 102
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature Request: Add the ability to detect modified sectors like KryoFlux's DTC.exe #397
Comments
That's a good idea. What sort of report do you get from DTC? |
This is the output I get from DTC.exe. Notice on track 00.0, it shows a *H +3 and on track 26.0, that it shows a *H +1 at the end of the log line. The +3 and +1 signify the number of sectors in the track it has determined were modified. The KryoFlux documentation describes this exception as follows:
It would be great if GW.exe went one step further and let us know exactly which sectors were detected as modified instead of just providing a count.
|
Since gw.exe already outputs a nice full map of all of the sectors, maybe put something like an M on the grid when a modified sector is detected. |
Okay this is mostly an exercise in plumbing I think. Definitely doable! |
hi no news for this enhancement ? |
I feel like chipping in with a "watch out" here - if you don't care for the gory details then skip to the end for the issue :) Back when I was actively working on DiscFerret and the Merlin disc analyser/decoder, I was looking at how this could be done (I wondered how SPS did it but never looked at their code, only the public descriptions - it would have been silly to encumber the DiscFerret code). I came up with two ways to identify modification - but they only work on commercially-duplicated (using a Copypro, Trace or similar single-pass copier):
The gap width (number of bits of gap) should be a reasonable indicator. It works because a single-pass disc duplicator doesn't do separate format and write steps. Instead, it builds an image of the track, writes it, then reads the data back and verifies it. This all happens in two rotations of the disc. The issue is that this would only work with discs which were made on a single-pass duplicator. If someone had created the discs on their Acorn, Amiga or whatever - it'll give a false "modified" indication. At the time, I was dealing with Acorn discs and most of them were duplicated on physical machines. The (partial) solution I came up with was to look for differences in motor speed between the drives. The way I did it was to figure out the nominal bit cell width, normalise each measurement to that (divide by 1.0, 1.5 or 2.0), then calculate the timing error vs. ideal in PPM. In theory all sectors written with the same drive (i.e. machine) should be written at the same speed. The error terms (drive figures are from http://www.techtravels.org/wp-content/uploads/pefiles/SAMSUNG-SFD321B-070103.pdf) boil down to:
ISV is instantaneous speed variation. LSV is long-term speed variation. Note that the Sony MPF-920 quotes +/- 3% ISV. The ISV should (in theory) average out over the sector, leaving the LSV - which is the error in calibration for that particular drive. In actuality what's measured is the ISV+LSV of the reading drive, and the ISV+LSV of the writing drive. If desired, the LSV of the reading drive can be measured (index pulse timing) and subtracted from the measurement. What's left over is the LSV(write) + ClockError(write) + LSV(read) + ClockError(greaseweazle). The clock error is only 100ppm and fades into the noise of the potentially 30,000 PPM motor speed error. Once you've got the sector and sector header timing (and gap timings if you want to do that), you can analyse the timings to find out:
Identifying a factory formatted (or duplicated) disc might be tricky, but I'd expect the motor speed to be pretty much dead on. They would have been checked and calibrated - if the distribution house cared about quality. There's also a chance there might be duplication metadata (TRACEBACK or similar) on track 80. |
My current workflow when dumping requires the use of both GW.exe and KryoFlux's DTC.exe.
I still need to use DTC.exe since it will detect and let me know which tracks on a disk have modified sectors.
It would be great if Greaseweazle had this feature so I could remove DTC.exe from my workflow and not have to deal with it anymore.
The text was updated successfully, but these errors were encountered: