diff options
author | MerryMage <MerryMage@users.noreply.github.com> | 2016-04-24 11:21:10 +0200 |
---|---|---|
committer | MerryMage <MerryMage@users.noreply.github.com> | 2016-04-27 07:35:06 +0200 |
commit | ff6db69c6052f674265c453932a3dc7637c46412 (patch) | |
tree | 74f174997c4ee9376a77bbe35ef59fbd3be77237 /src/audio_core | |
parent | DSP/Pipe: There are 8 pipes (diff) | |
download | yuzu-ff6db69c6052f674265c453932a3dc7637c46412.tar yuzu-ff6db69c6052f674265c453932a3dc7637c46412.tar.gz yuzu-ff6db69c6052f674265c453932a3dc7637c46412.tar.bz2 yuzu-ff6db69c6052f674265c453932a3dc7637c46412.tar.lz yuzu-ff6db69c6052f674265c453932a3dc7637c46412.tar.xz yuzu-ff6db69c6052f674265c453932a3dc7637c46412.tar.zst yuzu-ff6db69c6052f674265c453932a3dc7637c46412.zip |
Diffstat (limited to '')
-rw-r--r-- | src/audio_core/audio_core.cpp | 7 | ||||
-rw-r--r-- | src/audio_core/hle/pipe.cpp | 4 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/audio_core/audio_core.cpp b/src/audio_core/audio_core.cpp index 894f46990..0685eaf85 100644 --- a/src/audio_core/audio_core.cpp +++ b/src/audio_core/audio_core.cpp @@ -4,6 +4,7 @@ #include "audio_core/audio_core.h" #include "audio_core/hle/dsp.h" +#include "audio_core/hle/pipe.h" #include "core/core_timing.h" #include "core/hle/kernel/vm_manager.h" @@ -17,10 +18,8 @@ static constexpr u64 audio_frame_ticks = 1310252ull; ///< Units: ARM11 cycles static void AudioTickCallback(u64 /*userdata*/, int cycles_late) { if (DSP::HLE::Tick()) { - // HACK: We're not signaling the interrups when they should be, but just firing them all off together. - // It should be only (interrupt_id = 2, channel_id = 2) that's signalled here. - // TODO(merry): Understand when the other interrupts are fired. - DSP_DSP::SignalAllInterrupts(); + // TODO(merry): Signal all the other interrupts as appropriate. + DSP_DSP::SignalPipeInterrupt(DSP::HLE::DspPipe::Audio); } // Reschedule recurrent event diff --git a/src/audio_core/hle/pipe.cpp b/src/audio_core/hle/pipe.cpp index 7ec97dfda..03280780f 100644 --- a/src/audio_core/hle/pipe.cpp +++ b/src/audio_core/hle/pipe.cpp @@ -12,6 +12,8 @@ #include "common/common_types.h" #include "common/logging/log.h" +#include "core/hle/service/dsp_dsp.h" + namespace DSP { namespace HLE { @@ -97,6 +99,8 @@ static void AudioPipeWriteStructAddresses() { for (u16 addr : struct_addresses) { WriteU16(DspPipe::Audio, addr); } + // Signal that we have data on this pipe. + DSP_DSP::SignalPipeInterrupt(DspPipe::Audio); } void PipeWrite(DspPipe pipe_number, const std::vector<u8>& buffer) { |