CDROM: Set playing bit in status after starting

Fixes menu music in Army Men 3D.
This commit is contained in:
Connor McLaughlin 2020-08-23 20:01:50 +10:00
parent 5115c75f88
commit 559dc23e4e

View file

@ -1596,6 +1596,7 @@ void CDROM::BeginPlaying(u8 track_bcd, TickCount ticks_late /* = 0 */, bool afte
m_secondary_status.ClearActiveBits(); m_secondary_status.ClearActiveBits();
m_secondary_status.motor_on = true; m_secondary_status.motor_on = true;
m_secondary_status.playing_cdda = true;
ClearSectorBuffers(); ClearSectorBuffers();
ResetAudioDecoder(); ResetAudioDecoder();
@ -2241,11 +2242,8 @@ 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);
// These bits/reporting doesn't happen if we're reading with the CDDA mode bit set. // The reporting doesn't happen if we're reading with the CDDA mode bit set.
if (m_drive_state == DriveState::Playing) if (m_drive_state == DriveState::Playing && m_mode.report_audio)
{
m_secondary_status.playing_cdda = true;
if (m_mode.report_audio)
{ {
const u8 frame_nibble = subq.absolute_frame_bcd >> 4; const u8 frame_nibble = subq.absolute_frame_bcd >> 4;
if (m_last_cdda_report_frame_nibble != frame_nibble) if (m_last_cdda_report_frame_nibble != frame_nibble)
@ -2278,7 +2276,6 @@ 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)