From 6aef27166101a0f733f9bfdfeb268fdc45048550 Mon Sep 17 00:00:00 2001
From: Mary <me@thog.eu>
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 7b68ff5d..e60a126f 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 41f1c334..00fddefa 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,