From a151bc22ac24672bdb64f2b10cd0632404a3c65e Mon Sep 17 00:00:00 2001 From: Anthony Pesch Date: Thu, 27 Jul 2017 23:26:16 -0400 Subject: [PATCH] minor cleanup on gdi / cdi parsers --- src/guest/dreamcast.c | 4 ++++ src/guest/gdrom/cdi.c | 33 ++++++++++++++------------------- src/guest/gdrom/gdi.c | 5 +---- 3 files changed, 19 insertions(+), 23 deletions(-) diff --git a/src/guest/dreamcast.c b/src/guest/dreamcast.c index 02745f32..6b206eee 100644 --- a/src/guest/dreamcast.c +++ b/src/guest/dreamcast.c @@ -71,6 +71,10 @@ void dc_suspend(struct dreamcast *dc) { } static int dc_load_bin(struct dreamcast *dc, const char *path) { + if (!strstr(path, ".bin")) { + return 0; + } + FILE *fp = fopen(path, "rb"); if (!fp) { return 0; diff --git a/src/guest/gdrom/cdi.c b/src/guest/gdrom/cdi.c index b82f1176..015b2e01 100644 --- a/src/guest/gdrom/cdi.c +++ b/src/guest/gdrom/cdi.c @@ -49,9 +49,6 @@ static void cdi_read_sector(struct disc *disc, struct track *track, int fad, res = (int)fread(dst, 1, track->data_size, cdi->fp); CHECK_EQ(res, track->data_size); - - res = fseek(cdi->fp, track->error_size, SEEK_CUR); - CHECK_EQ(res, 0); } static void cdi_get_toc(struct disc *disc, int area, struct track **first_track, @@ -194,25 +191,23 @@ static int cdi_parse_track(struct disc *disc, uint32_t version, track->fad = pregap_length + lba; track->adr = 0; track->ctrl = sector_fmt == GD_SECTOR_CDDA ? 0 : 4; - track->sector_fmt = cdi_sector_formats[mode]; track->sector_size = sector_size; - if (track->sector_fmt == GD_SECTOR_CDDA) { - track->header_size = 0; - track->error_size = 0; - track->data_size = - track->sector_size - track->header_size - track->error_size; - CHECK_EQ(track->data_size, 2352); - } else if (track->sector_fmt == GD_SECTOR_M2F1) { - track->header_size = 8; - track->error_size = 280; - track->data_size = - track->sector_size - track->header_size - track->error_size; - CHECK_EQ(track->data_size, 2048); - } else { - LOG_FATAL("unexpected sector format %d", track->sector_fmt); + switch (track->sector_fmt) { + case GD_SECTOR_CDDA: + track->header_size = 0; + track->error_size = 0; + track->data_size = 2352; + break; + case GD_SECTOR_M2F1: + track->header_size = 8; + track->error_size = 280; + track->data_size = 2048; + break; + default: + LOG_WARNING("cdi_parse unexpected sector format %d", track->sector_fmt); + return 0; } - track->file_offset = data_offset - track->fad * track->sector_size; LOG_INFO("cdi_parse_track track=%d fad=%d off=%d mode=%s/%d", track->num, diff --git a/src/guest/gdrom/gdi.c b/src/guest/gdrom/gdi.c index 179eead2..910a03fb 100644 --- a/src/guest/gdrom/gdi.c +++ b/src/guest/gdrom/gdi.c @@ -148,14 +148,11 @@ static int gdi_parse(struct disc *disc, const char *filename) { track->num = gdi->num_tracks; track->fad = lba + GDROM_PREGAP; track->ctrl = ctrl; - track->sector_fmt = GD_SECTOR_M1; track->sector_size = sector_size; track->header_size = 16; track->error_size = 288; - track->data_size = - track->sector_size - track->header_size - track->error_size; - + track->data_size = 2048; track->file_offset = file_offset - track->fad * track->sector_size; snprintf(track->filename, sizeof(track->filename), "%s" PATH_SEPARATOR "%s", dirname, filename);