diff cue.c @ 2062:07ed42bd7b4c segacd

Some progress on CDC and CDD emulation. Now passes first 3 "CDC INIT" tests in mcd-verificator
author Michael Pavone <pavone@retrodev.com>
date Fri, 28 Jan 2022 00:50:17 -0800
parents 7c1760b5b3e5
children c5323c02dde4
line wrap: on
line diff
--- a/cue.c	Thu Jan 27 00:33:41 2022 -0800
+++ b/cue.c	Fri Jan 28 00:50:17 2022 -0800
@@ -141,6 +141,15 @@
 		//replace cue sheet with first sector
 		free(media->buffer);
 		media->buffer = calloc(2048, 1);
+		if (tracks[0].type = TRACK_DATA) {
+			// if the first track is a data track, don't trust the CUE sheet and look at the MM:SS:FF from first sector
+			uint8_t msf[3];
+			fseek(media->f, 12, SEEK_SET);
+			if (sizeof(msf) == fread(msf, 1, sizeof(msf), media->f)) {
+				tracks[0].fake_pregap = msf[2] + (msf[0] * 60 + msf[1]) * 75;
+			}
+		}
+
 		fseek(media->f, 16, SEEK_SET);
 		media->size = fread(media->buffer, 1, 2048, media->f);
 	}