void ZeldaUCode::HandleMail(u32 mail) { if (IsLightVersion()) HandleMail_LightVersion(mail); else if (IsSMSVersion()) HandleMail_SMSVersion(mail); else HandleMail_NormalVersion(mail); }
void CUCode_Zelda::HandleMail(u32 _uMail) { if (IsLightVersion()) HandleMail_LightVersion(_uMail); else if (IsSMSVersion()) HandleMail_SMSVersion(_uMail); else HandleMail_NormalVersion(_uMail); }
void ZeldaUCode::Update() { if (!IsLightVersion()) { if (m_mail_handler.GetNextMail() == DSP_FRAME_END) DSP::GenerateDSPInterruptFromDSPEmu(DSP::INT_DSP); } if (NeedsResumeMail()) { m_mail_handler.PushMail(DSP_RESUME); DSP::GenerateDSPInterruptFromDSPEmu(DSP::INT_DSP); } }
ZeldaUCode::ZeldaUCode(DSPHLE *dsphle, u32 crc) : UCodeInterface(dsphle, crc), m_sync_in_progress(false), m_max_voice(0), m_num_sync_mail(0), m_num_voices(0), m_sync_cmd_pending(false), m_current_voice(0), m_current_buffer(0), m_num_buffers(0), m_voice_pbs_addr(0), m_unk_table_addr(0), m_reverb_pbs_addr(0), m_right_buffers_addr(0), m_left_buffers_addr(0), m_pos(0), m_dma_base_addr(0), m_num_steps(0), m_list_in_progress(false), m_step(0), m_read_offset(0), m_mail_state(WaitForMail), m_num_pbs(0), m_pb_address(0), m_pb_address2(0) { DEBUG_LOG(DSPHLE, "UCode_Zelda - add boot mails for handshake"); if (IsLightVersion()) { DEBUG_LOG(DSPHLE, "Luigi Stylee!"); m_mail_handler.PushMail(0x88881111); } else { m_mail_handler.PushMail(DSP_INIT); DSP::GenerateDSPInterruptFromDSPEmu(DSP::INT_DSP); m_mail_handler.PushMail(0xF3551111); // handshake } m_voice_buffer = new s32[256 * 1024]; m_resample_buffer = new s16[256 * 1024]; m_left_buffer = new s32[256 * 1024]; m_right_buffer = new s32[256 * 1024]; memset(m_buffer, 0, sizeof(m_buffer)); memset(m_sync_flags, 0, sizeof(m_sync_flags)); memset(m_afc_coef_table, 0, sizeof(m_afc_coef_table)); memset(m_pb_mask, 0, sizeof(m_pb_mask)); }
void CUCode_Zelda::Update(int cycles) { if (!IsLightVersion()) { if (m_rMailHandler.GetNextMail() == DSP_FRAME_END) DSP::GenerateDSPInterruptFromDSPEmu(DSP::INT_DSP); } if (NeedsResumeMail()) { m_rMailHandler.PushMail(DSP_RESUME); DSP::GenerateDSPInterruptFromDSPEmu(DSP::INT_DSP); } }
CUCode_Zelda::CUCode_Zelda(DSPHLE *dsp_hle, u32 _CRC) : IUCode(dsp_hle, _CRC), m_bSyncInProgress(false), m_MaxVoice(0), m_NumSyncMail(0), m_NumVoices(0), m_bSyncCmdPending(false), m_CurVoice(0), m_CurBuffer(0), m_NumBuffers(0), m_VoicePBsAddr(0), m_UnkTableAddr(0), m_ReverbPBsAddr(0), m_RightBuffersAddr(0), m_LeftBuffersAddr(0), m_pos(0), m_DMABaseAddr(0), m_numSteps(0), m_bListInProgress(false), m_step(0), m_readOffset(0), m_MailState(WaitForMail), m_NumPBs(0), m_PBAddress(0), m_PBAddress2(0) { DEBUG_LOG(DSPHLE, "UCode_Zelda - add boot mails for handshake"); if (IsLightVersion()) { NOTICE_LOG(DSPHLE, "Luigi Stylee!"); m_rMailHandler.PushMail(0x88881111); } else { m_rMailHandler.PushMail(DSP_INIT); DSP::GenerateDSPInterruptFromDSPEmu(DSP::INT_DSP); m_rMailHandler.PushMail(0xF3551111); // handshake } m_VoiceBuffer = new s32[256 * 1024]; m_ResampleBuffer = new s16[256 * 1024]; m_LeftBuffer = new s32[256 * 1024]; m_RightBuffer = new s32[256 * 1024]; memset(m_Buffer, 0, sizeof(m_Buffer)); memset(m_SyncFlags, 0, sizeof(m_SyncFlags)); memset(m_AFCCoefTable, 0, sizeof(m_AFCCoefTable)); memset(m_PBMask, 0, sizeof(m_PBMask)); }