Merge pull request #4571 from degasus/DSPHLE

Attempt re-adding the missing AXWii DSP_SYNC
This commit is contained in:
Markus Wick 2017-01-10 22:23:35 +01:00 committed by GitHub
commit d9a37d38b4
2 changed files with 5 additions and 12 deletions

View File

@ -31,8 +31,7 @@ AXUCode::~AXUCode()
void AXUCode::Initialize() void AXUCode::Initialize()
{ {
m_mail_handler.PushMail(DSP_INIT); m_mail_handler.PushMail(DSP_INIT, true);
DSP::GenerateDSPInterruptFromDSPEmu(DSP::INT_DSP);
LoadResamplingCoefficients(); LoadResamplingCoefficients();
} }
@ -75,8 +74,7 @@ void AXUCode::LoadResamplingCoefficients()
void AXUCode::SignalWorkEnd() void AXUCode::SignalWorkEnd()
{ {
// Signal end of processing // Signal end of processing
m_mail_handler.PushMail(DSP_YIELD); m_mail_handler.PushMail(DSP_YIELD, true);
DSP::GenerateDSPInterruptFromDSPEmu(DSP::INT_DSP);
} }
void AXUCode::HandleCommandList() void AXUCode::HandleCommandList()
@ -620,8 +618,7 @@ void AXUCode::HandleMail(u32 mail)
else if (mail == MAIL_RESUME) else if (mail == MAIL_RESUME)
{ {
// Acknowledge the resume request // Acknowledge the resume request
m_mail_handler.PushMail(DSP_RESUME); m_mail_handler.PushMail(DSP_RESUME, true);
DSP::GenerateDSPInterruptFromDSPEmu(DSP::INT_DSP);
} }
else if (mail == MAIL_NEW_UCODE) else if (mail == MAIL_NEW_UCODE)
{ {
@ -668,8 +665,7 @@ void AXUCode::Update()
// Used for UCode switching. // Used for UCode switching.
if (NeedsResumeMail()) if (NeedsResumeMail())
{ {
m_mail_handler.PushMail(DSP_RESUME); m_mail_handler.PushMail(DSP_RESUME, true);
DSP::GenerateDSPInterruptFromDSPEmu(DSP::INT_DSP);
} }
} }

View File

@ -611,10 +611,7 @@ void AXWiiUCode::OutputSamples(u32 lr_addr, u32 surround_addr, u16 volume, bool
} }
memcpy(HLEMemory_Get_Pointer(lr_addr), buffer, sizeof(buffer)); memcpy(HLEMemory_Get_Pointer(lr_addr), buffer, sizeof(buffer));
m_mail_handler.PushMail(DSP_SYNC, true);
// There should be a DSP_SYNC message sent here. However, it looks like not
// sending it does not cause any issue, and sending it actually causes some
// sounds to go at half speed. I have no idea why.
} }
void AXWiiUCode::OutputWMSamples(u32* addresses) void AXWiiUCode::OutputWMSamples(u32* addresses)