diff options
author | MerryMage <MerryMage@users.noreply.github.com> | 2016-04-25 09:54:57 +0200 |
---|---|---|
committer | MerryMage <MerryMage@users.noreply.github.com> | 2016-05-03 21:58:28 +0200 |
commit | b242bdf9458642201bab4f1f884556ef73051554 (patch) | |
tree | 7b9a28ecb540c158b4632b9a4c4889f1e19502a6 /src/audio_core/hle/dsp.cpp | |
parent | Merge pull request #1729 from MerryMage/null-sink (diff) | |
download | yuzu-b242bdf9458642201bab4f1f884556ef73051554.tar yuzu-b242bdf9458642201bab4f1f884556ef73051554.tar.gz yuzu-b242bdf9458642201bab4f1f884556ef73051554.tar.bz2 yuzu-b242bdf9458642201bab4f1f884556ef73051554.tar.lz yuzu-b242bdf9458642201bab4f1f884556ef73051554.tar.xz yuzu-b242bdf9458642201bab4f1f884556ef73051554.tar.zst yuzu-b242bdf9458642201bab4f1f884556ef73051554.zip |
Diffstat (limited to 'src/audio_core/hle/dsp.cpp')
-rw-r--r-- | src/audio_core/hle/dsp.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/audio_core/hle/dsp.cpp b/src/audio_core/hle/dsp.cpp index 4d44bd2d9..0cdbdb06a 100644 --- a/src/audio_core/hle/dsp.cpp +++ b/src/audio_core/hle/dsp.cpp @@ -2,10 +2,12 @@ // Licensed under GPLv2 or any later version // Refer to the license.txt file included. +#include <array> #include <memory> #include "audio_core/hle/dsp.h" #include "audio_core/hle/pipe.h" +#include "audio_core/hle/source.h" #include "audio_core/sink.h" namespace DSP { @@ -38,16 +40,38 @@ static SharedMemory& WriteRegion() { return g_regions[1 - CurrentRegionIndex()]; } +static std::array<Source, num_sources> sources = { + Source(0), Source(1), Source(2), Source(3), Source(4), Source(5), + Source(6), Source(7), Source(8), Source(9), Source(10), Source(11), + Source(12), Source(13), Source(14), Source(15), Source(16), Source(17), + Source(18), Source(19), Source(20), Source(21), Source(22), Source(23) +}; + static std::unique_ptr<AudioCore::Sink> sink; void Init() { DSP::HLE::ResetPipes(); + for (auto& source : sources) { + source.Reset(); + } } void Shutdown() { } bool Tick() { + SharedMemory& read = ReadRegion(); + SharedMemory& write = WriteRegion(); + + std::array<QuadFrame32, 3> intermediate_mixes = {}; + + for (size_t i = 0; i < num_sources; i++) { + write.source_statuses.status[i] = sources[i].Tick(read.source_configurations.config[i], read.adpcm_coefficients.coeff[i]); + for (size_t mix = 0; mix < 3; mix++) { + sources[i].MixInto(intermediate_mixes[mix], mix); + } + } + return true; } |