mirror of
https://github.com/RetroDECK/Duckstation.git
synced 2025-02-25 23:35:39 +00:00
CDROM: Store last subq even when auto-pausing
Fixes track looping in Fighting Force PAL.
This commit is contained in:
parent
bf7cd40f27
commit
8df0496dc1
|
@ -1921,13 +1921,20 @@ void CDROM::StopReadingWithDataEnd()
|
||||||
void CDROM::DoSectorRead()
|
void CDROM::DoSectorRead()
|
||||||
{
|
{
|
||||||
// TODO: Queue the next read here and swap the buffer.
|
// TODO: Queue the next read here and swap the buffer.
|
||||||
|
// TODO: Error handling
|
||||||
if (!m_reader.WaitForReadToComplete())
|
if (!m_reader.WaitForReadToComplete())
|
||||||
Panic("Sector read failed");
|
Panic("Sector read failed");
|
||||||
|
|
||||||
// TODO: Error handling
|
m_current_lba = m_reader.GetLastReadSector();
|
||||||
|
ResetPhysicalPosition();
|
||||||
|
|
||||||
const CDImage::SubChannelQ& subq = m_reader.GetSectorSubQ();
|
const CDImage::SubChannelQ& subq = m_reader.GetSectorSubQ();
|
||||||
const bool subq_valid = subq.IsCRCValid();
|
const bool subq_valid = subq.IsCRCValid();
|
||||||
if (!subq_valid)
|
if (subq_valid)
|
||||||
|
{
|
||||||
|
m_last_subq = subq;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
const CDImage::Position pos(CDImage::Position::FromLBA(m_current_lba));
|
const CDImage::Position pos(CDImage::Position::FromLBA(m_current_lba));
|
||||||
Log_DevPrintf("Sector %u [%02u:%02u:%02u] has invalid subchannel Q", m_current_lba, pos.minute, pos.second,
|
Log_DevPrintf("Sector %u [%02u:%02u:%02u] has invalid subchannel Q", m_current_lba, pos.minute, pos.second,
|
||||||
|
@ -1964,11 +1971,6 @@ void CDROM::DoSectorRead()
|
||||||
ProcessDataSectorHeader(m_reader.GetSectorBuffer().data());
|
ProcessDataSectorHeader(m_reader.GetSectorBuffer().data());
|
||||||
}
|
}
|
||||||
|
|
||||||
m_current_lba = m_reader.GetLastReadSector();
|
|
||||||
ResetPhysicalPosition();
|
|
||||||
if (subq_valid)
|
|
||||||
m_last_subq = subq;
|
|
||||||
|
|
||||||
u32 next_sector = m_current_lba + 1u;
|
u32 next_sector = m_current_lba + 1u;
|
||||||
if (is_data_sector && m_drive_state == DriveState::Reading)
|
if (is_data_sector && m_drive_state == DriveState::Reading)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue