diff options
| author | KiritoDv <kiritodev01@gmail.com> | 2025-03-13 18:09:13 -0600 |
|---|---|---|
| committer | KiritoDv <kiritodev01@gmail.com> | 2025-03-13 18:09:13 -0600 |
| commit | 2c64c819620ffae76a94e0741f7d40afe49fac31 (patch) | |
| tree | 3f2b633f6dc4f9ede729c7458ce90373493ce004 | |
| parent | 9106bb7ba3ee77b859234a155e34cafb6fc80e1f (diff) | |
Ported CODEC_S16 from 2ship
| -rw-r--r-- | src/audio/audio_synthesis.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/audio/audio_synthesis.c b/src/audio/audio_synthesis.c index af3348c0..7be193d7 100644 --- a/src/audio/audio_synthesis.c +++ b/src/audio/audio_synthesis.c @@ -1036,13 +1036,24 @@ Acmd* AudioSynth_ProcessNote(s32 noteIndex, NoteSubEu* noteSub, NoteSynthesisSta goto skip; case CODEC_S16: - aLoadBuffer(aList++, OS_K0_TO_PHYSICAL(bookSample->sampleAddr + synthState->samplePosInt * 2), DMEM_UNCOMPRESSED_NOTE, - (numSamplesToLoadAdj + SAMPLES_PER_FRAME) * 2); + aClearBuffer(aList++, DMEM_UNCOMPRESSED_NOTE, + (numSamplesToLoadAdj + SAMPLES_PER_FRAME) * SAMPLE_SIZE); + flags = A_CONTINUE; skipBytes = 0; - numSamplesProcessed = numSamplesToLoadAdj; + size_t bytesToRead; + numSamplesProcessed += numSamplesToLoadAdj; dmemUncompressedAddrOffset1 = numSamplesToLoadAdj; + if (((synthState->samplePosInt * 2) + (numSamplesToLoadAdj)*SAMPLE_SIZE) < bookSample->size) { + bytesToRead = (numSamplesToLoadAdj)*SAMPLE_SIZE; + } else { + bytesToRead = bookSample->size - (synthState->samplePosInt * 2); + } + // 2S2H [Port] [Custom audio] Handle decoding OPUS data + aLoadBuffer(cmd++, sampleAddr + (synthState->samplePosInt * 2), DMEM_UNCOMPRESSED_NOTE, + bytesToRead); + goto skip; } |
