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)
This commit is contained in:
Mary 2021-04-18 02:20:06 +02:00 committed by GitHub
parent 38be18ef2a
commit d23511c25c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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);
}