CDROM: Play audio when reading and mode.0 is set
This commit is contained in:
parent
e9db1d0f6f
commit
10cd00c8dd
|
@ -1959,7 +1959,8 @@ void CDROM::DoSectorRead()
|
||||||
{
|
{
|
||||||
ProcessDataSector(m_reader.GetSectorBuffer().data(), subq);
|
ProcessDataSector(m_reader.GetSectorBuffer().data(), subq);
|
||||||
}
|
}
|
||||||
else if (!is_data_sector && m_drive_state == DriveState::Playing)
|
else if (!is_data_sector &&
|
||||||
|
(m_drive_state == DriveState::Playing || (m_drive_state == DriveState::Reading && m_mode.cdda)))
|
||||||
{
|
{
|
||||||
ProcessCDDASector(m_reader.GetSectorBuffer().data(), subq);
|
ProcessCDDASector(m_reader.GetSectorBuffer().data(), subq);
|
||||||
}
|
}
|
||||||
|
@ -2233,8 +2234,11 @@ void CDROM::ProcessCDDASector(const u8* raw_sector, const CDImage::SubChannelQ&
|
||||||
{
|
{
|
||||||
// For CDDA sectors, the whole sector contains the audio data.
|
// For CDDA sectors, the whole sector contains the audio data.
|
||||||
Log_DevPrintf("Read sector %u as CDDA", m_current_lba);
|
Log_DevPrintf("Read sector %u as CDDA", m_current_lba);
|
||||||
m_secondary_status.playing_cdda = true;
|
|
||||||
|
|
||||||
|
// These bits/reporting doesn't happen if we're reading with the CDDA mode bit set.
|
||||||
|
if (m_drive_state == DriveState::Playing)
|
||||||
|
{
|
||||||
|
m_secondary_status.playing_cdda = true;
|
||||||
if (m_mode.report_audio)
|
if (m_mode.report_audio)
|
||||||
{
|
{
|
||||||
const u8 frame_nibble = subq.absolute_frame_bcd >> 4;
|
const u8 frame_nibble = subq.absolute_frame_bcd >> 4;
|
||||||
|
@ -2268,6 +2272,7 @@ void CDROM::ProcessCDDASector(const u8* raw_sector, const CDImage::SubChannelQ&
|
||||||
SetAsyncInterrupt(Interrupt::DataReady);
|
SetAsyncInterrupt(Interrupt::DataReady);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Apply volume when pushing sectors to SPU.
|
// Apply volume when pushing sectors to SPU.
|
||||||
if (m_muted)
|
if (m_muted)
|
||||||
|
|
Loading…
Reference in New Issue