Rewritten this thing
Some checks are pending
GenerateBuilds / generate-port-o2r (push) Waiting to run
GenerateBuilds / build-windows (push) Blocked by required conditions
GenerateBuilds / build-macos (push) Blocked by required conditions
GenerateBuilds / build-linux (push) Blocked by required conditions

This commit is contained in:
KiritoDv 2025-02-03 17:18:21 -06:00 committed by Lywx
parent 717414a5c9
commit 4734a5ea06

View File

@ -1036,26 +1036,12 @@ Acmd* AudioSynth_ProcessNote(s32 noteIndex, NoteSubEu* noteSub, NoteSynthesisSta
goto skip;
case CODEC_S16:
aClearBuffer(cmd, DMEM_UNCOMPRESSED_NOTE, (numSamplesToLoadAdj + 16) * 2);
aLoadBuffer(aList++, OS_K0_TO_PHYSICAL(bookSample->sampleAddr + synthState->samplePosInt * 2), DMEM_UNCOMPRESSED_NOTE,
(numSamplesToLoadAdj + SAMPLES_PER_FRAME) * 2);
flags = A_CONTINUE;
skipBytes = 0;
numSamplesProcessed += numSamplesToLoadAdj;
aligned = numSamplesToLoadAdj;
size_t bytesToRead;
if (((synthState->samplePosInt * 2) + (numSamplesToLoadAdj + 16) * 2) <
bookSample->size) {
bytesToRead = (numSamplesToLoadAdj + 16) * 2;
} else {
bytesToRead = bookSample->size - (synthState->samplePosInt * 2);
}
// @port [Custom audio]
// TLDR samples are loaded async and might be null the first time they are played.
// See note in AudioSampleFactory.cpp
if ((void*) sampleAddr != NULL) {
aLoadBuffer(cmd++, sampleAddr + (synthState->samplePosInt * 2), DMEM_UNCOMPRESSED_NOTE,
bytesToRead);
}
numSamplesProcessed = numSamplesToLoadAdj;
dmemUncompressedAddrOffset1 = numSamplesToLoadAdj;
goto skip;
}