From 6f91fef9f12e6153cb35fc818fb732f405c4e5ce Mon Sep 17 00:00:00 2001 From: Dragios Date: Sat, 16 Apr 2016 01:11:38 +0800 Subject: [PATCH] Implement one variant of pipe 3 (#3) --- src/audio_core/hle/pipe.cpp | 3 +++ src/core/hle/service/dsp_dsp.cpp | 15 +++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/audio_core/hle/pipe.cpp b/src/audio_core/hle/pipe.cpp index 361671901..4217f1a25 100644 --- a/src/audio_core/hle/pipe.cpp +++ b/src/audio_core/hle/pipe.cpp @@ -144,6 +144,9 @@ void PipeWrite(DspPipe pipe_number, const std::vector& buffer) { return; } + case DspPipe::Binary: + std::copy(buffer.begin(), buffer.end(), std::back_inserter(pipe_data[static_cast(DspPipe::Binary)])); + return; default: LOG_CRITICAL(Audio_DSP, "pipe_number = %u unimplemented", pipe_number); UNIMPLEMENTED(); diff --git a/src/core/hle/service/dsp_dsp.cpp b/src/core/hle/service/dsp_dsp.cpp index 941c92b36..5d52b4d4e 100644 --- a/src/core/hle/service/dsp_dsp.cpp +++ b/src/core/hle/service/dsp_dsp.cpp @@ -283,6 +283,21 @@ static void WriteProcessPipe(Service::Interface* self) { message[i] = Memory::Read8(buffer + i); } + switch (pipe) { + case DSP::HLE::DspPipe::Audio: + ASSERT(message.size() >= 4); + message[2] = 0; + message[3] = 0; + break; + case DSP::HLE::DspPipe::Binary: + ASSERT(message.size() >= 8); + message[4] = 1; + message[5] = 0; + message[6] = 0; + message[7] = 0; + break; + } + DSP::HLE::PipeWrite(pipe, message); cmd_buff[0] = 0xD0040;