Explorar el Código

Amadeus: Allow out of bound read on empty delay lines (#2223)

This allows to handle an OOB with delay lines when DelayTimeMax = 0.
On real hardware, it will end up reading garbage at the given user work buffer address.
As we do not use those buffers and allocate them ourself for simplicy, this could possibly cause a crash.

Proposed solution here is to only increase the size of _workBuffer by
one like what is done in DelayLineReverb3d already.

This fixes FEZ. (Ryujinx/Ryujinx-Games-List#3526)
Mary hace 5 años
padre
commit
d23511c25c
Se han modificado 1 ficheros con 1 adiciones y 1 borrados
  1. 1 1
      Ryujinx.Audio/Renderer/Dsp/Effect/DelayLine.cs

+ 1 - 1
Ryujinx.Audio/Renderer/Dsp/Effect/DelayLine.cs

@@ -33,7 +33,7 @@ namespace Ryujinx.Audio.Renderer.Dsp.Effect
         {
             _sampleRate = sampleRate;
             SampleCountMax = IDelayLine.GetSampleCount(_sampleRate, delayTimeMax);
-            _workBuffer = new float[SampleCountMax];
+            _workBuffer = new float[SampleCountMax + 1];
 
             SetDelay(delayTimeMax);
         }