Ensure capture is always processed

If the buffer is still being filled, it should move the DAD forward anyway or it will fall out of sync.
This commit is contained in:
Aikku93 2022-09-03 14:40:14 +10:00
parent 698139ed8e
commit ad09ed4e50
1 changed files with 3 additions and 10 deletions
desmume/src

View File

@ -1465,22 +1465,15 @@ static void SPU_MixAudio_Advanced(bool actuallyMix, SPU_struct *SPU, int length)
//Instead, what we do here is delay the capture by 16 samples to create a similar effect.
//Subjectively, it seems to be working.
//Don't do anything until the fifo is filled, so as to delay it
if (cap.runtime.fifo.size < 16)
{
cap.runtime.fifo.enqueue(capout[capchan]);
continue;
}
//(actually capture sample from fifo instead of most recently generated)
u32 multiplier;
s32 sample = cap.runtime.fifo.dequeue();
//Fetch the FIFO-buffered sample and enqueue the most recently generated sample
s32 sample = (cap.runtime.fifo.size >= 16) ? cap.runtime.fifo.dequeue() : 0;
cap.runtime.fifo.enqueue(capout[capchan]);
//static FILE* fp = NULL;
//if(!fp) fp = fopen("d:\\capout.raw","wb");
//fwrite(&sample,2,1,fp);
u32 multiplier;
if (cap.bits8)
{
s8 sample8 = sample >> 8;