From db4b5e66c9ebd80cfaa2457423683a08f833fb6c Mon Sep 17 00:00:00 2001 From: KiritoDv <kiritodev01@gmail.com> Date: Wed, 25 Dec 2024 13:28:04 -0600 Subject: [PATCH] Fixed CODEC_S16 --- src/audio/audio_synthesis.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/audio/audio_synthesis.c b/src/audio/audio_synthesis.c index 1e422c17..008c3b3b 100644 --- a/src/audio/audio_synthesis.c +++ b/src/audio/audio_synthesis.c @@ -1030,13 +1030,12 @@ Acmd* AudioSynth_ProcessNote(s32 noteIndex, NoteSubEu* noteSub, NoteSynthesisSta case CODEC_S16: skipBytes = 0; + size_t bytesToRead; numSamplesProcessed += numSamplesToLoadAdj; dmemUncompressedAddrOffset1 = numSamplesToLoadAdj; - size_t bytesToRead; - if (((synthState->samplePosInt * 2) + (numSamplesToLoadAdj + SAMPLES_PER_FRAME) * SAMPLE_SIZE) < - bookSample->size) { - bytesToRead = (numSamplesToLoadAdj + SAMPLES_PER_FRAME) * SAMPLE_SIZE; + if (((synthState->samplePosInt * 2) + (numSamplesToLoadAdj)*SAMPLE_SIZE) < bookSample->size) { + bytesToRead = (numSamplesToLoadAdj)*SAMPLE_SIZE; } else { bytesToRead = bookSample->size - (synthState->samplePosInt * 2); } @@ -1052,8 +1051,15 @@ Acmd* AudioSynth_ProcessNote(s32 noteIndex, NoteSubEu* noteSub, NoteSynthesisSta } aligned = ALIGN16((nFramesToDecode * frameSize) + 0x10); - addr = 0x990 - aligned; + addr = DMEM_COMPRESSED_ADPCM_DATA - aligned; +#if __SANITIZE_ADDRESS__ + uintptr_t actualAddrLoaded = samplesToLoadAddr - sampleDataChunkAlignPad; + uintptr_t offset = actualAddrLoaded - (uintptr_t)sampleAddr; + if (offset + aligned > bookSample->size) { + aligned -= (offset + aligned - bookSample->size); + } +#endif if (nFramesToDecode != 0) { if (1) {} frameIndex = (synthState->samplePosInt + skipInitialSamples - nFirstFrameSamplesToIgnore) / 16;