diff --git a/src/cdrom/cdrom.c b/src/cdrom/cdrom.c index 98f408d64..6dd95b5dd 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 ((dev->cd_status != CD_STATUS_DVD) && (!mode2 || (form == 1))) { + if (!dev->no_check && (dev->cd_status != CD_STATUS_DVD) && (!mode2 || (form == 1))) { if (mode2 && (form == 1)) { const uint32_t crc = cdrom_crc32(0xffffffff, &(b[16]), 2056) ^ 0xffffffff; diff --git a/src/config.c b/src/config.c index 17d729614..43757d6a4 100644 --- a/src/config.c +++ b/src/config.c @@ -1463,6 +1463,9 @@ load_floppy_and_cdrom_drives(void) sprintf(temp, "cdrom_%02i_speed", c + 1); cdrom[c].speed = ini_section_get_int(cat, temp, 8); + sprintf(temp, "cdrom_%02i_no_check", c + 1); + cdrom[c].no_check = ini_section_get_int(cat, temp, 0); + sprintf(temp, "cdrom_%02i_type", c + 1); p = ini_section_get_string(cat, temp, cdrom[c].bus_type == CDROM_BUS_MKE ? "cr563" : "86cd"); /* TODO: Configuration migration, remove when no longer needed. */ @@ -3405,6 +3408,12 @@ save_floppy_and_cdrom_drives(void) sprintf(temp, "cdrom_%02i_host_drive", c + 1); ini_section_delete_var(cat, temp); + sprintf(temp, "cdrom_%02i_no_check", c + 1); + if (cdrom[c].no_check) + ini_section_set_int(cat, temp, cdrom[c].no_check); + else + ini_section_delete_var(cat, temp); + sprintf(temp, "cdrom_%02i_speed", c + 1); if ((cdrom[c].bus_type == 0) || (cdrom[c].speed == 8)) ini_section_delete_var(cat, temp); diff --git a/src/include/86box/cdrom.h b/src/include/86box/cdrom.h index f98b60983..85e5a0f0b 100644 --- a/src/include/86box/cdrom.h +++ b/src/include/86box/cdrom.h @@ -367,6 +367,8 @@ typedef struct cdrom { uint8_t host_letter; uint8_t mode2; + int no_check; + uint8_t _F_LUT[_LUT_SIZE]; uint8_t _B_LUT[_LUT_SIZE];