summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKiritoDv <kiritodev01@gmail.com>2025-03-13 18:09:13 -0600
committerKiritoDv <kiritodev01@gmail.com>2025-03-13 18:09:13 -0600
commit2c64c819620ffae76a94e0741f7d40afe49fac31 (patch)
tree3f2b633f6dc4f9ede729c7458ce90373493ce004
parent9106bb7ba3ee77b859234a155e34cafb6fc80e1f (diff)
Ported CODEC_S16 from 2ship
-rw-r--r--src/audio/audio_synthesis.c17
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;
}