comparison 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
comparison
equal deleted inserted replaced
2061:7c1760b5b3e5 2062:07ed42bd7b4c
139 //end of last track is implicitly defined by file size 139 //end of last track is implicitly defined by file size
140 tracks[media->num_tracks-1].end_lba = file_size(media->f) / 2352; 140 tracks[media->num_tracks-1].end_lba = file_size(media->f) / 2352;
141 //replace cue sheet with first sector 141 //replace cue sheet with first sector
142 free(media->buffer); 142 free(media->buffer);
143 media->buffer = calloc(2048, 1); 143 media->buffer = calloc(2048, 1);
144 if (tracks[0].type = TRACK_DATA) {
145 // if the first track is a data track, don't trust the CUE sheet and look at the MM:SS:FF from first sector
146 uint8_t msf[3];
147 fseek(media->f, 12, SEEK_SET);
148 if (sizeof(msf) == fread(msf, 1, sizeof(msf), media->f)) {
149 tracks[0].fake_pregap = msf[2] + (msf[0] * 60 + msf[1]) * 75;
150 }
151 }
152
144 fseek(media->f, 16, SEEK_SET); 153 fseek(media->f, 16, SEEK_SET);
145 media->size = fread(media->buffer, 1, 2048, media->f); 154 media->size = fread(media->buffer, 1, 2048, media->f);
146 } 155 }
147 uint8_t valid = tracks > 0 && media->f != NULL; 156 uint8_t valid = tracks > 0 && media->f != NULL;
148 media->type = valid ? MEDIA_CDROM : MEDIA_CART; 157 media->type = valid ? MEDIA_CDROM : MEDIA_CART;