From e9eb337b4feb2f9f193dc0bf5a2d32ad9e685a25 Mon Sep 17 00:00:00 2001 From: OBattler Date: Wed, 27 Aug 2025 16:08:55 +0200 Subject: [PATCH] CD-ROM: Assorted fixes and correct an incorrectly inverted mode 2 form check. --- src/cdrom/cdrom.c | 2 +- src/cdrom/cdrom_image.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/cdrom/cdrom.c b/src/cdrom/cdrom.c index ffccbdcb4..1eee1ac94 100644 --- a/src/cdrom/cdrom.c +++ b/src/cdrom/cdrom.c @@ -344,7 +344,7 @@ cdrom_is_sector_good(cdrom_t *dev, const uint8_t *b, const uint8_t mode2, const { int ret = 1; - if (!mode2 || (form != 1)) { + if (!mode2 || (form == 1)) { if (mode2 && (form == 1)) { const uint32_t crc = cdrom_crc32(0xffffffff, &(b[16]), 2056) ^ 0xffffffff; diff --git a/src/cdrom/cdrom_image.c b/src/cdrom/cdrom_image.c index 714b839b5..9f13c3fdf 100644 --- a/src/cdrom/cdrom_image.c +++ b/src/cdrom/cdrom_image.c @@ -2240,7 +2240,7 @@ image_load_mds(cd_image_t *img, const char *mdsfile) image_log(img->log, "Final tracks list:\n"); for (int i = 0; i < img->tracks_num; i++) { ct = &(img->tracks[i]); - for (int j = 0; j < 3; j++) { + for (int j = 0; j <= ct->max_index; j++) { ci = &(ct->idx[j]); image_log(img->log, " [TRACK ] %02X INDEX %02X: [%8s, %016" PRIX64 "]\n", ct->point, j, @@ -2278,7 +2278,7 @@ image_clear_tracks(cd_image_t *img) cur = &img->tracks[i]; if (((cur->point >= 1) && (cur->point <= 99)) || - (cur->point == 0xa2)) for (int j = 0; j < 3; j++) { + (cur->point == 0xa2)) for (int j = 0; j <= cur->max_index; j++) { idx = &(cur->idx[j]); /* Make sure we do not attempt to close a NULL file. */ if ((idx->file != NULL) && (idx->type == INDEX_NORMAL)) {