From 9e4ce6c7e3412989460815522f4424b3c5d196d7 Mon Sep 17 00:00:00 2001 From: Brad Parker Date: Sat, 6 Jul 2019 21:54:10 -0400 Subject: [PATCH] cdrom: fix group1 timeout error --- libretro-common/cdrom/cdrom.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/libretro-common/cdrom/cdrom.c b/libretro-common/cdrom/cdrom.c index ebb082ec4c..07631cbb94 100644 --- a/libretro-common/cdrom/cdrom.c +++ b/libretro-common/cdrom/cdrom.c @@ -1066,16 +1066,17 @@ int cdrom_read(libretro_vfs_implementation_file *stream, cdrom_group_timeouts_t } else { - unsigned frames = cdrom_msf_to_lba(min, sec, frame) + ceil((len + skip) / 2352.0); + double frames = (len + skip) / 2352.0; + unsigned frame_end = cdrom_msf_to_lba(min, sec, frame) + ceil(frames); - if (timeouts->g1_timeout && frames / 75 > timeouts->g1_timeout) + if (timeouts->g1_timeout && frames > timeouts->g1_timeout) { - printf("multi-frame read of %d seconds is longer than group 1 timeout of %d seconds\n", frames / 75, timeouts->g1_timeout); + printf("multi-frame read of %d seconds is longer than group 1 timeout of %d seconds\n", (int)frames, timeouts->g1_timeout); fflush(stdout); return 1; } - cdrom_lba_to_msf(frames, &cdb[6], &cdb[7], &cdb[8]); + cdrom_lba_to_msf(frame_end, &cdb[6], &cdb[7], &cdb[8]); #ifdef CDROM_DEBUG printf("multi-frame read: from %d %d %d to %d %d %d skip %" PRId64 "\n", cdb[3], cdb[4], cdb[5], cdb[6], cdb[7], cdb[8], skip);