summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar bunnei2017-04-13 10:43:13 -0400
committerGravatar GitHub2017-04-13 10:43:13 -0400
commit6a72bd62b5f1e88df0d701478d95799a0b445ec4 (patch)
treea61ac6a5fd4f93db624a5d11616a1d963498446d
parentBetter looking status bar under Linux Ubuntu (#2662) (diff)
parentdsp_dsp: Messages are modified by service before being sent to DSP (diff)
downloadyuzu-6a72bd62b5f1e88df0d701478d95799a0b445ec4.tar.gz
yuzu-6a72bd62b5f1e88df0d701478d95799a0b445ec4.tar.xz
yuzu-6a72bd62b5f1e88df0d701478d95799a0b445ec4.zip
Merge pull request #2659 from MerryMage/dsp_dsp-correction
dsp_dsp: Messages are modified by service before being sent to DSP
-rw-r--r--src/core/hle/service/dsp_dsp.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/core/hle/service/dsp_dsp.cpp b/src/core/hle/service/dsp_dsp.cpp
index fe8a6c2d6..39711ea97 100644
--- a/src/core/hle/service/dsp_dsp.cpp
+++ b/src/core/hle/service/dsp_dsp.cpp
@@ -303,6 +303,24 @@ static void WriteProcessPipe(Service::Interface* self) {
303 message[i] = Memory::Read8(buffer + i); 303 message[i] = Memory::Read8(buffer + i);
304 } 304 }
305 305
306 // This behaviour was confirmed by RE.
307 // The likely reason for this is that games tend to pass in garbage at these bytes
308 // because they read random bytes off the stack.
309 switch (pipe) {
310 case DSP::HLE::DspPipe::Audio:
311 ASSERT(message.size() >= 4);
312 message[2] = 0;
313 message[3] = 0;
314 break;
315 case DSP::HLE::DspPipe::Binary:
316 ASSERT(message.size() >= 8);
317 message[4] = 1;
318 message[5] = 0;
319 message[6] = 0;
320 message[7] = 0;
321 break;
322 }
323
306 DSP::HLE::PipeWrite(pipe, message); 324 DSP::HLE::PipeWrite(pipe, message);
307 325
308 cmd_buff[0] = IPC::MakeHeader(0xD, 1, 0); 326 cmd_buff[0] = IPC::MakeHeader(0xD, 1, 0);