Mercurial > repos > blastem
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; |