void ZeldaUCode::HandleMail_LightVersion(u32 mail) { //ERROR_LOG(DSPHLE, "Light version mail %08X, list in progress: %s, step: %i/%i", // mail, m_list_in_progress ? "yes":"no", m_step, m_num_steps); if (m_sync_cmd_pending) { DSP::GenerateDSPInterruptFromDSPEmu(DSP::INT_DSP); MixAudio(); m_current_buffer++; if (m_current_buffer == m_num_buffers) { m_sync_cmd_pending = false; DEBUG_LOG(DSPHLE, "Update the SoundThread to be in sync"); } return; } if (!m_list_in_progress) { switch ((mail >> 24) & 0x7F) { case 0x00: m_num_steps = 1; break; // dummy case 0x01: m_num_steps = 5; break; // DsetupTable case 0x02: m_num_steps = 3; break; // DsyncFrame default: { m_num_steps = 0; PanicAlert("Zelda uCode (light version): unknown/unsupported command %02X", (mail >> 24) & 0x7F); } return; } m_list_in_progress = true; m_step = 0; } if (m_step >= sizeof(m_buffer) / 4) PanicAlert("m_step out of range"); ((u32*)m_buffer)[m_step] = mail; m_step++; if (m_step >= m_num_steps) { ExecuteList(); m_list_in_progress = false; } }
void CUCode_Zelda::HandleMail_LightVersion(u32 _uMail) { //ERROR_LOG(DSPHLE, "Light version mail %08X, list in progress: %s, step: %i/%i", // _uMail, m_bListInProgress ? "yes":"no", m_step, m_numSteps); if (m_bSyncCmdPending) { DSP::GenerateDSPInterruptFromDSPEmu(DSP::INT_DSP); m_CurBuffer++; if (m_CurBuffer == m_NumBuffers) { soundStream->GetMixer()->SetHLEReady(true); m_bSyncCmdPending = false; DEBUG_LOG(DSPHLE, "Update the SoundThread to be in sync"); } return; } if (!m_bListInProgress) { switch ((_uMail >> 24) & 0x7F) { case 0x00: m_numSteps = 1; break; // dummy case 0x01: m_numSteps = 5; break; // DsetupTable case 0x02: m_numSteps = 3; break; // DsyncFrame default: { m_numSteps = 0; PanicAlert("Zelda uCode (light version): unknown/unsupported command %02X", (_uMail >> 24) & 0x7F); } return; } m_bListInProgress = true; m_step = 0; } if (m_step >= sizeof(m_Buffer) / 4) PanicAlert("m_step out of range"); ((u32*)m_Buffer)[m_step] = _uMail; m_step++; if (m_step >= m_numSteps) { ExecuteList(); m_bListInProgress = false; } }