CDROM: Deliver invalid sub-q (libcrypted) sectors to CPU

Nocash documentation would suggest that it only needs the sector to be
skipped by GetLocP. Which would make sense as the non-subchannel data is
still completely valid.
This commit is contained in:
Connor McLaughlin 2020-04-11 02:44:04 +10:00
parent 6d55979dac
commit a4a112f5d8
1 changed files with 20 additions and 20 deletions

View File

@ -1487,6 +1487,13 @@ void CDROM::DoSectorRead()
if (subq.IsCRCValid()) if (subq.IsCRCValid())
{ {
m_last_subq = subq; m_last_subq = subq;
}
else
{
const CDImage::Position pos(CDImage::Position::FromLBA(m_reader.GetLastReadSector()));
Log_DevPrintf("Sector %u [%02u:%02u:%02u] has invalid subchannel Q", m_reader.GetLastReadSector(), pos.minute,
pos.second, pos.frame);
}
if (is_data_sector && m_drive_state == DriveState::Reading) if (is_data_sector && m_drive_state == DriveState::Reading)
{ {
@ -1505,13 +1512,6 @@ void CDROM::DoSectorRead()
Log_WarningPrintf("Skipping sector %u as it is a %s sector and we're not %s", m_reader.GetLastReadSector(), Log_WarningPrintf("Skipping sector %u as it is a %s sector and we're not %s", m_reader.GetLastReadSector(),
is_data_sector ? "data" : "audio", is_data_sector ? "reading" : "playing"); is_data_sector ? "data" : "audio", is_data_sector ? "reading" : "playing");
} }
}
else
{
const CDImage::Position pos(CDImage::Position::FromLBA(m_reader.GetLastReadSector()));
Log_DevPrintf("Skipping sector %u [%02u:%02u:%02u] due to invalid subchannel Q", m_reader.GetLastReadSector(),
pos.minute, pos.second, pos.frame);
}
m_last_requested_sector++; m_last_requested_sector++;
m_reader.QueueReadSector(m_last_requested_sector); m_reader.QueueReadSector(m_last_requested_sector);