From 6aef27166101a0f733f9bfdfeb268fdc45048550 Mon Sep 17 00:00:00 2001 From: Mary Date: Sun, 6 Sep 2020 21:54:33 +0200 Subject: [PATCH] Amadeus: Fix multi-channel PCM sources on REV8 (#1536) This add a missing offset on the output buffer of the DataSourceVersion2Command. This fix music only playing on the left channel on Fairy Tail, Family Mysteries: Poisonous Promises, SEGA AGES Sonic the Hedgehog 2 and probably more. --- Ryujinx.Audio.Renderer/Dsp/Command/DataSourceVersion2Command.cs | 2 +- Ryujinx.Audio.Renderer/Server/CommandGenerator.cs | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Ryujinx.Audio.Renderer/Dsp/Command/DataSourceVersion2Command.cs b/Ryujinx.Audio.Renderer/Dsp/Command/DataSourceVersion2Command.cs index 7b68ff5dc..e60a126fc 100644 --- a/Ryujinx.Audio.Renderer/Dsp/Command/DataSourceVersion2Command.cs +++ b/Ryujinx.Audio.Renderer/Dsp/Command/DataSourceVersion2Command.cs @@ -63,7 +63,7 @@ namespace Ryujinx.Audio.Renderer.Dsp.Command SrcQuality = serverState.SrcQuality; CommandType = GetCommandTypeBySampleFormat(SampleFormat); - OutputBufferIndex = outputBufferIndex; + OutputBufferIndex = (ushort)(channelIndex + outputBufferIndex); SampleRate = serverState.SampleRate; Pitch = serverState.Pitch; diff --git a/Ryujinx.Audio.Renderer/Server/CommandGenerator.cs b/Ryujinx.Audio.Renderer/Server/CommandGenerator.cs index 41f1c3342..00fddefa8 100644 --- a/Ryujinx.Audio.Renderer/Server/CommandGenerator.cs +++ b/Ryujinx.Audio.Renderer/Server/CommandGenerator.cs @@ -107,6 +107,8 @@ namespace Ryujinx.Audio.Renderer.Server if (!voiceState.WasPlaying) { + Debug.Assert(voiceState.SampleFormat != SampleFormat.Adpcm || channelIndex == 0); + if (_rendererContext.BehaviourContext.IsWaveBufferVersion2Supported()) { _commandBuffer.GenerateDataSourceVersion2(ref voiceState,