> the start/end times are incorrect exactly because the pregaps are missing.
You're still not understanding. The start/end times in the cue sheet are 150 frames *ahead* of where they should be - for example, track 03 is listed at 25:23:25 but it should be at 25:21:25, and so on every track up to and including the last track. That is because Alcohol 120% is not taking the track 02's pre-gap into account when adjusting the times for tracks 03 onwards.
Let me comment this, then maybe, hopefully, we're going to be on the same page:
FILE "UNTITLED.BIN" BINARY
TRACK 01 MODE1/2352
INDEX 01 00:00:00 - This is correct, the 00:02:00 of this track's pre-gap are absent
from the .bin file.
TRACK 02 AUDIO
PREGAP 00:02:00 - Since PREGAP is being used and not INDEX 00, then this pre-gap is
also absent from the .bin file.
INDEX 01 22:09:03 - This is correct, the TOC time is 22:13:03, subtract 00:02:00 of
track 01's pre-gap and 00:02:00 of this track's pre-gap and you
get exactly 22:09:03.
TRACK 03 AUDIO
INDEX 01 25:23:25 - This is incorrect, the TOC time is 25:25:25, sutract 00:02:00 of
track 01's pre-gap and you get 25:23:25 but track 02's pre-gap
has been forgotten here - subtract that and you get 25:21:25.
Track 03's pre-gap is here implied to be part of track 02.
TRACK 04 AUDIO
INDEX 01 28:23:41 - This is incorrect, the TOC time is 28:25:41, sutract 00:02:00 of
track 01's pre-gap and you get 28:23:41 but track 02's pre-gap
has been forgotten here - subtract that and you get 28:21:41.
Track 04's pre-gap is here implied to be part of track 03.
TRACK 05 AUDIO
INDEX 01 30:55:65 - This is incorrect, the TOC time is 30:57:65, sutract 00:02:00 of
track 01's pre-gap and you get 30:55:65 but track 02's pre-gap
has been forgotten here - subtract that and you get 30:53:65.
Track 05's pre-gap is here implied to be part of track 04.
TRACK 06 AUDIO
INDEX 01 33:43:52 - This is incorrect, the TOC time is 33:45:52, sutract 00:02:00 of
track 01's pre-gap and you get 33:43:52 but track 02's pre-gap
has been forgotten here - subtract that and you get 33:41:52.
Track 06's pre-gap is here implied to be part of track 05.
TRACK 07 AUDIO
INDEX 01 36:30:48 - This is incorrect, the TOC time is 36:32:48, sutract 00:02:00 of
track 01's pre-gap and you get 36:30:48 but track 02's pre-gap
has been forgotten here - subtract that and you get 36:32:48.
Track 07's pre-gap is here implied to be part of track 06.
TRACK 08 AUDIO
INDEX 01 38:09:11 - This is incorrect, the TOC time is 38:11:11, sutract 00:02:00 of
track 01's pre-gap and you get 38:09:11 but track 02's pre-gap
has been forgotten here - subtract that and you get 38:07:11.
Track 08's pre-gap is here implied to be part of track 07.
TRACK 09 AUDIO
INDEX 01 41:50:19 - This is incorrect, the TOC time is 41:52:19, sutract 00:02:00 of
track 01's pre-gap and you get 41:50:19 but track 02's pre-gap
has been forgotten here - subtract that and you get 41:48:19.
Track 09's pre-gap is here implied to be part of track 08.
TRACK 10 AUDIO
INDEX 01 43:25:72 - This is incorrect, the TOC time is 43:27:72, sutract 00:02:00 of
track 01's pre-gap and you get 43:25:72 but track 02's pre-gap
has been forgotten here - subtract that and you get 43:23:72.
Track 10's pre-gap is here implied to be part of track 09.
Let's also look at the track lengths, will ignore that of the last track since it can't be determined from the cue sheet alone, and is also not necessarily to make my point:
These are the lengths:
Cue sheet:
Track 01: 00:00:00
Track 02: 22:09:03 - Track 01 length (without track 02 pre-gap): 22:09:03
With track 02 pre-gap = 22:11:03
Track 03: 25:23:25 - Track 02 length = 03:14:22
Track 04: 28:23:41 - Track 03 length = 03:00:16
Track 05: 30:55:65 - Track 04 length = 02:32:24
Track 06: 33:43:52 - Track 05 length = 02:47:62
Track 07: 36:30:48 - Track 06 length = 02:46:71
Track 08: 38:09:11 - Track 07 length = 01:38:38
Track 09: 41:50:19 - Track 08 length = 03:41:08
Track 10: 43:25:72 - Track 09 length = 01:35:53
TOC:
Track 01: 00:02:00
Track 02: 22:13:03 - Track 01 length (with track 02 pre-gap): 22:11:03 (matches cue sheet)
Without track 02 pre-gap: 22:09:03
Track 03: 25:25:25 - Track 02 length = 03:12:22 (00:02:00 *shorter* than in cue sheet)
Track 04: 28:25:41 - Track 03 length = 03:00:16 (matches cue sheet)
Track 05: 30:57:65 - Track 04 length = 02:32:24 (matches cue sheet)
Track 06: 33:45:52 - Track 05 length = 02:47:62 (matches cue sheet)
Track 07: 36:32:48 - Track 06 length = 02:46:71 (matches cue sheet)
Track 08: 38:11:11 - Track 07 length = 01:38:38 (matches cue sheet)
Track 09: 41:52:19 - Track 08 length = 03:41:08 (matches cue sheet)
Track 10: 43:27:72 - Track 09 length = 01:35:53 (matches cue sheet)
They all match, except for track 02, which in the cue sheet, is 00:02:00 longer. Since, according to the cue sheet specification, the track start times indicate where in the .bin file the track's data start, the only way these num,bers can make sense, are if track 02 start is in fact of index 00 (the pre-gap) and the pre-gap is also present in the .bin file, but according to the cue sheet specification, PREGAP indicates a pre-gap that's *not* present in the file, while INDEX 00 indicates a pre-gap present in the .bin file. Even if this PREGAP is really intended to be an INDEX 00, this is still incorrect since INDEX 01 then specifies the time where INDEX 00 should be in the .bin file.
So this:
FILE "UNTITLED.BIN" BINARY
TRACK 01 MODE1/2352
INDEX 01 00:00:00
TRACK 02 AUDIO
INDEX 00 22:09:03
INDEX 00 22:11:03
TRACK 03 AUDIO
INDEX 01 25:23:25
TRACK 04 AUDIO
INDEX 01 28:23:41
TRACK 05 AUDIO
INDEX 01 30:55:65
TRACK 06 AUDIO
INDEX 01 33:43:52
TRACK 07 AUDIO
INDEX 01 36:30:48
TRACK 08 AUDIO
INDEX 01 38:09:11
TRACK 09 AUDIO
INDEX 01 41:50:19
TRACK 10 AUDIO
INDEX 01 43:25:72
Would also be correct but then track 02's pre-gap would have to be in the file.
We know that the lead out starts at 47:19:06, and the ATAPI specification tell us the last user frame is that - 1, so 47:19:05. This gives track 10's length at 3:51:09. Summing this with all the rest of the track lengths from the TOC, using track 02 length *without* pre-gap, brings us to 500108112 bytes, which is the exact size of the .bin file. If we use the lengths calculated from the cue sheet, instead, we get 500460912 bytes, which is longer than the .bin file. This alone shows the cue sheet produced by Alcohol 120% is wrong because, together we the .bin file, we see that track 10 ends up being exactly 150 frames shorter than it should be. You can easily verify this by inputting all the numbers into an Excel spreadsheet and having it do all the calculations. If I subtract 150 frames (ie. 00:02:00, the exact length of track 02's pre-gap that Alcohol 120% forgets to adjust track 03 onwards' times for) from track 03 onwards' starting times, shortening track 03 by 00:02:00, I then indeed get 500108112 bytes for the whole lot.