aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.Audio/Renderer/Dsp/State
diff options
context:
space:
mode:
authorMary <me@thog.eu>2021-09-19 12:29:19 +0200
committerGitHub <noreply@github.com>2021-09-19 12:29:19 +0200
commite17eb7bfafdd95084baea8e9f3dc77ee3f755347 (patch)
tree4982e2593a279c9e2c4906ead4d1764a9ddadb54 /Ryujinx.Audio/Renderer/Dsp/State
parentfe9d5a1981cfe43c4535b7473064c9858addb3b5 (diff)
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
Diffstat (limited to 'Ryujinx.Audio/Renderer/Dsp/State')
-rw-r--r--Ryujinx.Audio/Renderer/Dsp/State/AuxiliaryBufferHeader.cs41
-rw-r--r--Ryujinx.Audio/Renderer/Dsp/State/BiquadFilterState.cs6
2 files changed, 40 insertions, 7 deletions
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<uint>(bufferAddress + WriteOffsetPosition);
}
+ public static uint GetLostSampleCount(IVirtualMemoryManager manager, ulong bufferAddress)
+ {
+ return manager.Read<uint>(bufferAddress + LostSampleCountPosition);
+ }
+
+ public static uint GetTotalSampleCount(IVirtualMemoryManager manager, ulong bufferAddress)
+ {
+ return manager.Read<uint>(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;
}
}