From e17eb7bfafdd95084baea8e9f3dc77ee3f755347 Mon Sep 17 00:00:00 2001 From: Mary Date: Sun, 19 Sep 2021 12:29:19 +0200 Subject: amadeus: Update to REV10 (#2654) * amadeus: Update to REV10 This implements all the changes made with REV10 on 13.0.0. * Address Ack's comment * Address gdkchan's comment --- .../Renderer/Dsp/State/AuxiliaryBufferHeader.cs | 41 +++++++++++++++++++--- .../Renderer/Dsp/State/BiquadFilterState.cs | 6 ++-- 2 files changed, 40 insertions(+), 7 deletions(-) (limited to 'Ryujinx.Audio/Renderer/Dsp/State') diff --git a/Ryujinx.Audio/Renderer/Dsp/State/AuxiliaryBufferHeader.cs b/Ryujinx.Audio/Renderer/Dsp/State/AuxiliaryBufferHeader.cs index 3cf24302..69a16a3d 100644 --- a/Ryujinx.Audio/Renderer/Dsp/State/AuxiliaryBufferHeader.cs +++ b/Ryujinx.Audio/Renderer/Dsp/State/AuxiliaryBufferHeader.cs @@ -20,18 +20,22 @@ using System.Runtime.InteropServices; namespace Ryujinx.Audio.Renderer.Dsp.State { - [StructLayout(LayoutKind.Sequential, Pack = 1, Size = 0x40)] + [StructLayout(LayoutKind.Sequential, Pack = 1, Size = 0x80)] public struct AuxiliaryBufferHeader { - [StructLayout(LayoutKind.Sequential, Pack = 1, Size = 0xC)] + [StructLayout(LayoutKind.Sequential, Pack = 1, Size = 0x40)] public struct AuxiliaryBufferInfo { private const uint ReadOffsetPosition = 0x0; private const uint WriteOffsetPosition = 0x4; + private const uint LostSampleCountPosition = 0x8; + private const uint TotalSampleCountPosition = 0xC; public uint ReadOffset; public uint WriteOffset; - private uint _reserved; + public uint LostSampleCount; + public uint TotalSampleCount; + private unsafe fixed uint _unknown[12]; public static uint GetReadOffset(IVirtualMemoryManager manager, ulong bufferAddress) { @@ -43,6 +47,16 @@ namespace Ryujinx.Audio.Renderer.Dsp.State return manager.Read(bufferAddress + WriteOffsetPosition); } + public static uint GetLostSampleCount(IVirtualMemoryManager manager, ulong bufferAddress) + { + return manager.Read(bufferAddress + LostSampleCountPosition); + } + + public static uint GetTotalSampleCount(IVirtualMemoryManager manager, ulong bufferAddress) + { + return manager.Read(bufferAddress + TotalSampleCountPosition); + } + public static void SetReadOffset(IVirtualMemoryManager manager, ulong bufferAddress, uint value) { manager.Write(bufferAddress + ReadOffsetPosition, value); @@ -52,9 +66,26 @@ namespace Ryujinx.Audio.Renderer.Dsp.State { manager.Write(bufferAddress + WriteOffsetPosition, value); } + + public static void SetLostSampleCount(IVirtualMemoryManager manager, ulong bufferAddress, uint value) + { + manager.Write(bufferAddress + LostSampleCountPosition, value); + } + + public static void SetTotalSampleCount(IVirtualMemoryManager manager, ulong bufferAddress, uint value) + { + manager.Write(bufferAddress + TotalSampleCountPosition, value); + } + + public static void Reset(IVirtualMemoryManager manager, ulong bufferAddress) + { + // NOTE: Lost sample count is never reset, since REV10. + manager.Write(bufferAddress + ReadOffsetPosition, 0UL); + manager.Write(bufferAddress + TotalSampleCountPosition, 0); + } } - public AuxiliaryBufferInfo BufferInfo; - public unsafe fixed uint Unknown[13]; + public AuxiliaryBufferInfo CpuBufferInfo; + public AuxiliaryBufferInfo DspBufferInfo; } } diff --git a/Ryujinx.Audio/Renderer/Dsp/State/BiquadFilterState.cs b/Ryujinx.Audio/Renderer/Dsp/State/BiquadFilterState.cs index 9677333d..f9e677e0 100644 --- a/Ryujinx.Audio/Renderer/Dsp/State/BiquadFilterState.cs +++ b/Ryujinx.Audio/Renderer/Dsp/State/BiquadFilterState.cs @@ -22,7 +22,9 @@ namespace Ryujinx.Audio.Renderer.Dsp.State [StructLayout(LayoutKind.Sequential, Pack = 1, Size = 0x10)] public struct BiquadFilterState { - public float Z1; - public float Z2; + public float State0; + public float State1; + public float State2; + public float State3; } } -- cgit v1.2.3