diff options
| author | 2017-04-13 10:43:13 -0400 | |
|---|---|---|
| committer | 2017-04-13 10:43:13 -0400 | |
| commit | 6a72bd62b5f1e88df0d701478d95799a0b445ec4 (patch) | |
| tree | a61ac6a5fd4f93db624a5d11616a1d963498446d | |
| parent | Better looking status bar under Linux Ubuntu (#2662) (diff) | |
| parent | dsp_dsp: Messages are modified by service before being sent to DSP (diff) | |
| download | yuzu-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.cpp | 18 |
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); |