From 7c4bbcf22fb94480ad0760b69bb1083c69dd9a2c Mon Sep 17 00:00:00 2001 From: Pierre Bourdon Date: Tue, 29 Mar 2016 05:02:42 +0200 Subject: [PATCH 1/2] ax: switch to new style interrupt triggering --- Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp b/Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp index 03cb955905..92e9855f83 100644 --- a/Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp +++ b/Source/Core/Core/HW/DSPHLE/UCodes/AX.cpp @@ -27,8 +27,7 @@ AXUCode::~AXUCode() void AXUCode::Initialize() { - m_mail_handler.PushMail(DSP_INIT); - DSP::GenerateDSPInterruptFromDSPEmu(DSP::INT_DSP); + m_mail_handler.PushMail(DSP_INIT, true); LoadResamplingCoefficients(); } @@ -71,8 +70,7 @@ void AXUCode::LoadResamplingCoefficients() void AXUCode::SignalWorkEnd() { // Signal end of processing - m_mail_handler.PushMail(DSP_YIELD); - DSP::GenerateDSPInterruptFromDSPEmu(DSP::INT_DSP); + m_mail_handler.PushMail(DSP_YIELD, true); } void AXUCode::HandleCommandList() @@ -616,8 +614,7 @@ void AXUCode::HandleMail(u32 mail) else if (mail == MAIL_RESUME) { // Acknowledge the resume request - m_mail_handler.PushMail(DSP_RESUME); - DSP::GenerateDSPInterruptFromDSPEmu(DSP::INT_DSP); + m_mail_handler.PushMail(DSP_RESUME, true); } else if (mail == MAIL_NEW_UCODE) { @@ -664,8 +661,7 @@ void AXUCode::Update() // Used for UCode switching. if (NeedsResumeMail()) { - m_mail_handler.PushMail(DSP_RESUME); - DSP::GenerateDSPInterruptFromDSPEmu(DSP::INT_DSP); + m_mail_handler.PushMail(DSP_RESUME, true); } } From 6b65344ccfa1ab9491f84b8af7e59b6c27ebf4f9 Mon Sep 17 00:00:00 2001 From: Pierre Bourdon Date: Tue, 29 Mar 2016 05:37:56 +0200 Subject: [PATCH 2/2] axwii: re-add the missing sync -- might work better with the new MailHandler implementation --- Source/Core/Core/HW/DSPHLE/UCodes/AXWii.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Source/Core/Core/HW/DSPHLE/UCodes/AXWii.cpp b/Source/Core/Core/HW/DSPHLE/UCodes/AXWii.cpp index 0e37f03699..8ed789c11a 100644 --- a/Source/Core/Core/HW/DSPHLE/UCodes/AXWii.cpp +++ b/Source/Core/Core/HW/DSPHLE/UCodes/AXWii.cpp @@ -607,10 +607,7 @@ void AXWiiUCode::OutputSamples(u32 lr_addr, u32 surround_addr, u16 volume, bool } memcpy(HLEMemory_Get_Pointer(lr_addr), buffer, sizeof(buffer)); - - // 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. + m_mail_handler.PushMail(DSP_SYNC, true); } void AXWiiUCode::OutputWMSamples(u32* addresses)