diff --git a/src/cdrom/cdrom.c b/src/cdrom/cdrom.c index 1eee1ac94..98f408d64 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 ((dev->cd_status != CD_STATUS_DVD) && (!mode2 || (form == 1))) { if (mode2 && (form == 1)) { const uint32_t crc = cdrom_crc32(0xffffffff, &(b[16]), 2056) ^ 0xffffffff; @@ -2976,9 +2976,12 @@ cdrom_update_status(cdrom_t *dev) dev->seek_pos = 0; dev->cd_buflen = 0; - if (dev->ops->is_dvd(dev->local)) - dev->cd_status = CD_STATUS_DVD; - else + if (dev->ops->is_dvd(dev->local)) { + if (cdrom_is_dvd(dev->type)) + dev->cd_status = CD_STATUS_DVD; + else + dev->cd_status = CD_STATUS_DVD_REJECTED; + } else dev->cd_status = dev->ops->has_audio(dev->local) ? CD_STATUS_STOPPED : CD_STATUS_DATA_ONLY;