CD-ROM: Correctly return from read sector with the return code from the back-end in case of error, fixes System Shock 2 CD detection.

This commit is contained in:
OBattler
2025-01-30 06:38:05 +01:00
parent 76fb3365cd
commit 8a1862c4b2

View File

@@ -2192,13 +2192,22 @@ cdrom_readsector_raw(const cdrom_t *dev, uint8_t *buffer, const int sector, cons
if (audio) { if (audio) {
if (!track_type_is_valid(dev, cdrom_sector_type, cdrom_sector_flags, 1, 0x00)) if (!track_type_is_valid(dev, cdrom_sector_type, cdrom_sector_flags, 1, 0x00))
ret = 0; ret = 0;
else else {
ret = read_audio(dev, lba, temp_b); ret = read_audio(dev, lba, temp_b);
/* Return with error if we had one. */
if (ret < 0)
return ret;
}
} else { } else {
int form = 0; int form = 0;
ret = read_data(dev, lba); ret = read_data(dev, lba);
/* Return with error if we had one. */
if (ret < 0)
return ret;
if ((raw_buffer[0x000f] == 0x00) || (raw_buffer[0x000f] > 0x02)) { if ((raw_buffer[0x000f] == 0x00) || (raw_buffer[0x000f] > 0x02)) {
cdrom_log(dev->log, "[%s] Unknown mode: %02X\n", cdrom_log(dev->log, "[%s] Unknown mode: %02X\n",
cdrom_req_modes[cdrom_sector_type], raw_buffer[0x000f]); cdrom_req_modes[cdrom_sector_type], raw_buffer[0x000f]);