Fix some things

This commit is contained in:
Starlet 2018-06-23 00:12:21 -04:00
commit f3b43e9e6d
5 changed files with 21 additions and 43 deletions

View file

@ -1,22 +0,0 @@
namespace Ryujinx.HLE.OsHle.Services.Aud
{
struct AudioRendererConfig
{
public int Revision;
public int BehaviourSize;
public int MemoryPoolsSize;
public int VoicesSize;
public int VoiceResourceSize;
public int EffectsSize;
public int MixesSize;
public int SinksSize;
public int PerformanceBufferSize;
public int Unknown24;
public int Unknown28;
public int Unknown2C;
public int Unknown30;
public int Unknown34;
public int Unknown38;
public int TotalSize;
}
}

View file

@ -3,7 +3,7 @@
namespace Ryujinx.HLE.OsHle.Services.Aud namespace Ryujinx.HLE.OsHle.Services.Aud
{ {
[StructLayout(LayoutKind.Sequential)] [StructLayout(LayoutKind.Sequential)]
struct AudioRendererParameters struct AudioRendererParameter
{ {
public int SampleRate; public int SampleRate;
public int SampleCount; public int SampleCount;

View file

@ -16,9 +16,9 @@ namespace Ryujinx.HLE.OsHle.Services.Aud
private KEvent UpdateEvent; private KEvent UpdateEvent;
private AudioRendererParameters Params; private AudioRendererParameter Params;
public IAudioRenderer(AudioRendererParameters WorkerParams) public IAudioRenderer(AudioRendererParameter Params)
{ {
m_Commands = new Dictionary<int, ServiceProcessRequest>() m_Commands = new Dictionary<int, ServiceProcessRequest>()
{ {
@ -30,7 +30,7 @@ namespace Ryujinx.HLE.OsHle.Services.Aud
UpdateEvent = new KEvent(); UpdateEvent = new KEvent();
this.Params = WorkerParams; this.Params = Params;
} }
public long RequestUpdateAudioRenderer(ServiceCtx Context) public long RequestUpdateAudioRenderer(ServiceCtx Context)
@ -38,25 +38,25 @@ namespace Ryujinx.HLE.OsHle.Services.Aud
long OutputPosition = Context.Request.GetBufferType0x22().Position; long OutputPosition = Context.Request.GetBufferType0x22().Position;
long InputPosition = Context.Request.GetBufferType0x21().Position; long InputPosition = Context.Request.GetBufferType0x21().Position;
AudioRendererConfig InputData = AMemoryHelper.Read<AudioRendererConfig>(Context.Memory, InputPosition); UpdateDataHeader InputDataHeader = AMemoryHelper.Read<UpdateDataHeader>(Context.Memory, InputPosition);
int MemoryPoolOffset = Marshal.SizeOf(InputData) + InputData.BehaviourSize; int MemoryPoolOffset = Marshal.SizeOf(InputDataHeader) + InputDataHeader.BehaviorSize;
AudioRendererOutput OutputData = new AudioRendererOutput(); UpdateDataHeader OutputDataHeader = new UpdateDataHeader();
OutputData.Revision = Params.Revision; OutputDataHeader.Revision = Params.Revision;
OutputData.ErrorInfoSize = 0xb0; OutputDataHeader.BehaviorSize = 0xb0;
OutputData.MemoryPoolsSize = (Params.EffectCount + (Params.VoiceCount * 4)) * 0x10; OutputDataHeader.MemoryPoolsSize = (Params.EffectCount + (Params.VoiceCount * 4)) * 0x10;
OutputData.VoicesSize = Params.VoiceCount * 0x10; OutputDataHeader.VoicesSize = Params.VoiceCount * 0x10;
OutputData.EffectsSize = Params.EffectCount * 0x10; OutputDataHeader.EffectsSize = Params.EffectCount * 0x10;
OutputData.SinksSize = Params.SinkCount * 0x20; OutputDataHeader.SinksSize = Params.SinkCount * 0x20;
OutputData.PerformanceManagerSize = 0x10; OutputDataHeader.PerformanceManagerSize = 0x10;
OutputData.TotalSize = Marshal.SizeOf(OutputData) + OutputData.ErrorInfoSize + OutputData.MemoryPoolsSize + OutputDataHeader.TotalSize = Marshal.SizeOf(OutputDataHeader) + OutputDataHeader.BehaviorSize + OutputDataHeader.MemoryPoolsSize +
OutputData.VoicesSize + OutputData.EffectsSize + OutputData.SinksSize + OutputData.PerformanceManagerSize; OutputDataHeader.VoicesSize + OutputDataHeader.EffectsSize + OutputDataHeader.SinksSize + OutputDataHeader.PerformanceManagerSize;
AMemoryHelper.Write(Context.Memory, OutputPosition, OutputData); AMemoryHelper.Write(Context.Memory, OutputPosition, OutputDataHeader);
for (int Offset = 0x40; Offset < 0x40 + OutputData.MemoryPoolsSize; Offset += 0x10, MemoryPoolOffset += 0x20) for (int Offset = 0x40; Offset < 0x40 + OutputDataHeader.MemoryPoolsSize; Offset += 0x10, MemoryPoolOffset += 0x20)
{ {
MemoryPoolStates PoolState = (MemoryPoolStates) Context.Memory.ReadInt32(InputPosition + MemoryPoolOffset + 0x10); MemoryPoolStates PoolState = (MemoryPoolStates) Context.Memory.ReadInt32(InputPosition + MemoryPoolOffset + 0x10);

View file

@ -30,7 +30,7 @@ namespace Ryujinx.HLE.OsHle.Services.Aud
{ {
//Same buffer as GetAudioRendererWorkBufferSize is receive here. //Same buffer as GetAudioRendererWorkBufferSize is receive here.
AudioRendererParameters Params = new AudioRendererParameters(); AudioRendererParameter Params = new AudioRendererParameter();
Params.SampleRate = Context.RequestData.ReadInt32(); Params.SampleRate = Context.RequestData.ReadInt32();
Params.SampleCount = Context.RequestData.ReadInt32(); Params.SampleCount = Context.RequestData.ReadInt32();

View file

@ -1,9 +1,9 @@
namespace Ryujinx.HLE.OsHle.Services.Aud namespace Ryujinx.HLE.OsHle.Services.Aud
{ {
struct AudioRendererOutput struct UpdateDataHeader
{ {
public int Revision; public int Revision;
public int ErrorInfoSize; public int BehaviorSize;
public int MemoryPoolsSize; public int MemoryPoolsSize;
public int VoicesSize; public int VoicesSize;
public int VoiceResourceSize; public int VoiceResourceSize;