From 69697957e6406235d512a89d9144c160fe7efbfd Mon Sep 17 00:00:00 2001 From: gdkchan Date: Sat, 23 Jun 2018 03:17:07 -0300 Subject: [PATCH] Workaround for recent audren regression --- .../OsHle/Services/Aud/IAudioRenderer.cs | 28 +++++++++++-------- .../OsHle/Services/Aud/MemoryPoolState.cs | 13 +++++++++ .../OsHle/Services/Aud/MemoryPoolStates.cs | 13 --------- 3 files changed, 29 insertions(+), 25 deletions(-) create mode 100644 Ryujinx.HLE/OsHle/Services/Aud/MemoryPoolState.cs delete mode 100644 Ryujinx.HLE/OsHle/Services/Aud/MemoryPoolStates.cs diff --git a/Ryujinx.HLE/OsHle/Services/Aud/IAudioRenderer.cs b/Ryujinx.HLE/OsHle/Services/Aud/IAudioRenderer.cs index 70601202a..d0a7cfc20 100644 --- a/Ryujinx.HLE/OsHle/Services/Aud/IAudioRenderer.cs +++ b/Ryujinx.HLE/OsHle/Services/Aud/IAudioRenderer.cs @@ -36,6 +36,9 @@ namespace Ryujinx.HLE.OsHle.Services.Aud public long RequestUpdateAudioRenderer(ServiceCtx Context) { long OutputPosition = Context.Request.ReceiveBuff[0].Position; + long OutputSize = Context.Request.ReceiveBuff[0].Size; + + AMemoryHelper.FillWithZeros(Context.Memory, OutputPosition, (int)OutputSize); long InputPosition = Context.Request.SendBuff[0].Position; @@ -52,26 +55,28 @@ namespace Ryujinx.HLE.OsHle.Services.Aud OutputDataHeader.EffectsSize = Params.EffectCount * 0x10; OutputDataHeader.SinksSize = Params.SinkCount * 0x20; OutputDataHeader.PerformanceManagerSize = 0x10; - OutputDataHeader.TotalSize = Marshal.SizeOf(OutputDataHeader) + OutputDataHeader.BehaviorSize + OutputDataHeader.MemoryPoolsSize + - OutputDataHeader.VoicesSize + OutputDataHeader.EffectsSize + OutputDataHeader.SinksSize + OutputDataHeader.PerformanceManagerSize; + OutputDataHeader.TotalSize = Marshal.SizeOf(OutputDataHeader) + + OutputDataHeader.BehaviorSize + + OutputDataHeader.MemoryPoolsSize + + OutputDataHeader.VoicesSize + + OutputDataHeader.EffectsSize + + OutputDataHeader.SinksSize + + OutputDataHeader.PerformanceManagerSize; AMemoryHelper.Write(Context.Memory, OutputPosition, OutputDataHeader); for (int Offset = 0x40; Offset < 0x40 + OutputDataHeader.MemoryPoolsSize; Offset += 0x10, MemoryPoolOffset += 0x20) { - MemoryPoolStates PoolState = (MemoryPoolStates) Context.Memory.ReadInt32(InputPosition + MemoryPoolOffset + 0x10); + MemoryPoolState PoolState = (MemoryPoolState)Context.Memory.ReadInt32(InputPosition + MemoryPoolOffset + 0x10); - if (PoolState == MemoryPoolStates.RequestAttach) + //TODO: Figure out what the other values does. + if (PoolState == MemoryPoolState.RequestAttach) { - Context.Memory.WriteInt32(OutputPosition + Offset, (int)MemoryPoolStates.Attached); + Context.Memory.WriteInt32(OutputPosition + Offset, (int)MemoryPoolState.Attached); } - else if (PoolState == MemoryPoolStates.RequestDetach) + else if (PoolState == MemoryPoolState.RequestDetach) { - Context.Memory.WriteInt32(OutputPosition + Offset, (int)MemoryPoolStates.Detached); - } - else - { - Context.Memory.WriteInt32(OutputPosition + Offset, (int)PoolState); + Context.Memory.WriteInt32(OutputPosition + Offset, (int)MemoryPoolState.Detached); } } @@ -118,4 +123,3 @@ namespace Ryujinx.HLE.OsHle.Services.Aud } } } - \ No newline at end of file diff --git a/Ryujinx.HLE/OsHle/Services/Aud/MemoryPoolState.cs b/Ryujinx.HLE/OsHle/Services/Aud/MemoryPoolState.cs new file mode 100644 index 000000000..892cde49e --- /dev/null +++ b/Ryujinx.HLE/OsHle/Services/Aud/MemoryPoolState.cs @@ -0,0 +1,13 @@ +namespace Ryujinx.HLE.OsHle.Services.Aud +{ + enum MemoryPoolState : int + { + Invalid = 0, + Unknown = 1, + RequestDetach = 2, + Detached = 3, + RequestAttach = 4, + Attached = 5, + Released = 6 + } +} diff --git a/Ryujinx.HLE/OsHle/Services/Aud/MemoryPoolStates.cs b/Ryujinx.HLE/OsHle/Services/Aud/MemoryPoolStates.cs deleted file mode 100644 index 20f9ce79d..000000000 --- a/Ryujinx.HLE/OsHle/Services/Aud/MemoryPoolStates.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace Ryujinx.HLE.OsHle.Services.Aud -{ - enum MemoryPoolStates : int - { - Invalid = 0x0, - Unknown = 0x1, - RequestDetach = 0x2, - Detached = 0x3, - RequestAttach = 0x4, - Attached = 0x5, - Released = 0x6, - } -}