diff options
| author | KiritoDv <kiritodev01@gmail.com> | 2024-12-25 13:28:04 -0600 |
|---|---|---|
| committer | KiritoDv <kiritodev01@gmail.com> | 2024-12-25 13:28:04 -0600 |
| commit | db4b5e66c9ebd80cfaa2457423683a08f833fb6c (patch) | |
| tree | b6f5da3407db7d0e0658c53866ac3298adbef125 | |
| parent | 8c3f57af1e0afa83f80192102f28481a90baff10 (diff) | |
Fixed CODEC_S16
| -rw-r--r-- | src/audio/audio_synthesis.c | 16 |
1 files 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; |
