summaryrefslogtreecommitdiff
path: root/src/audio
diff options
context:
space:
mode:
authorKiritoDv <kiritodev01@gmail.com>2024-10-29 02:06:14 -0600
committerKiritoDv <kiritodev01@gmail.com>2024-10-29 02:06:14 -0600
commit52d3eca4212db61e43c14c37c1917818a2fbbecb (patch)
tree3c7250aeb06b746d606d8b3825ddb91db3ef168c /src/audio
parent2354ee76a3f57f0fa926b98fb8e9adc2957acc49 (diff)
We are so fucking close omg
Diffstat (limited to 'src/audio')
-rw-r--r--src/audio/audio_context.c6
-rw-r--r--src/audio/audio_effects.c7
-rw-r--r--src/audio/audio_general.c5
-rw-r--r--src/audio/audio_heap.c1
-rw-r--r--src/audio/audio_load.c162
-rw-r--r--src/audio/audio_playback.c5
-rw-r--r--src/audio/audio_seqplayer.c2
-rw-r--r--src/audio/audio_synthesis.c9
-rw-r--r--src/audio/audio_thread.c70
-rw-r--r--src/audio/note_data.c2
10 files changed, 122 insertions, 147 deletions
diff --git a/src/audio/audio_context.c b/src/audio/audio_context.c
index 5a34571d..9985b0c0 100644
--- a/src/audio/audio_context.c
+++ b/src/audio/audio_context.c
@@ -233,9 +233,9 @@ AudioSpec gAudioSpecs[] = {
};
s32 D_800C7C28 = 0x20000000; // unused?
s16 gSeqTicksPerBeat = 0x30;
-s32 gAudioHeapSize = 0xAFE00;
-s32 gInitPoolSize = 0x26000;
-u32 gPermanentPoolSize = 0x21000;
+s32 gAudioHeapSize = 0xAFE00 * 2;
+s32 gInitPoolSize = 0x26000 * 2;
+u32 gPermanentPoolSize = 0x21000 * 2;
u16 gSequenceMedium = 0;
u16 gSoundFontMedium = 0;
u16 gSampleBankMedium = 0;
diff --git a/src/audio/audio_effects.c b/src/audio/audio_effects.c
index 61d2ccaa..0a184871 100644
--- a/src/audio/audio_effects.c
+++ b/src/audio/audio_effects.c
@@ -1,5 +1,6 @@
#include "sys.h"
#include "sf64audio_provisional.h"
+#include "endianness.h"
static const char devstr[] = "Audio:Envp: overflow %f\n";
@@ -199,7 +200,7 @@ f32 func_80013B90(AdsrState* adsr) {
adsr->state = ADSR_STATE_LOOP;
case_ADSR_STATE_LOOP:
case ADSR_STATE_LOOP:
- adsr->delay = adsr->envelope[adsr->envIndex].delay;
+ adsr->delay = BSWAP16(adsr->envelope[adsr->envIndex].delay);
switch (adsr->delay) {
case ADSR_DISABLE:
adsr->state = ADSR_STATE_DISABLED;
@@ -208,7 +209,7 @@ f32 func_80013B90(AdsrState* adsr) {
adsr->state = ADSR_STATE_HANG;
break;
case ADSR_GOTO:
- adsr->envIndex = adsr->envelope[adsr->envIndex].arg;
+ adsr->envIndex = BSWAP16(adsr->envelope[adsr->envIndex].arg);
goto case_ADSR_STATE_LOOP;
case ADSR_RESTART:
adsr->state = ADSR_STATE_INITIAL;
@@ -221,7 +222,7 @@ f32 func_80013B90(AdsrState* adsr) {
adsr->delay = 1;
}
- adsr->target = adsr->envelope[adsr->envIndex].arg / 32767.0f;
+ adsr->target = (s16)BE16SWAP(adsr->envelope[adsr->envIndex].arg) / 32767.0f;
adsr->target = SQ(adsr->target);
adsr->velocity = (adsr->target - adsr->current) / adsr->delay;
adsr->state = ADSR_STATE_FADE;
diff --git a/src/audio/audio_general.c b/src/audio/audio_general.c
index 70b73fc1..3f91fa5e 100644
--- a/src/audio/audio_general.c
+++ b/src/audio/audio_general.c
@@ -637,7 +637,7 @@ void Audio_ResetSfxChannelState(void) {
}
void Audio_StartSequence(u8 seqPlayId, u8 seqId, u8 seqArgs, u16 fadeInTime) {
- u8 i;
+ u8 i = 0;
s32 pad;
if (!sStartSeqDisabled || (seqPlayId == SEQ_PLAYER_SFX)) {
@@ -2644,8 +2644,7 @@ void Audio_RestoreVolumeSettings(u8 audioType) {
}
}
-void Audio_SetVolume(u8 audioType, u8 volume) {
- return;
+void Audio_SetVolume(u8 audioType, u8 volume) {
if (volume > 99) {
volume = 99;
}
diff --git a/src/audio/audio_heap.c b/src/audio/audio_heap.c
index 663f5fd7..ea35a463 100644
--- a/src/audio/audio_heap.c
+++ b/src/audio/audio_heap.c
@@ -148,6 +148,7 @@ void* AudioHeap_Alloc(AudioAllocPool* pool, u32 size) {
void AudioHeap_InitPool(AudioAllocPool* pool, void* ramAddr, u32 size) {
pool->curRamAddr = pool->startRamAddr = (u8*) ramAddr;
+ size *= 4;
pool->size = size - ((uintptr_t) ramAddr & 0xF);
pool->numEntries = 0;
}
diff --git a/src/audio/audio_load.c b/src/audio/audio_load.c
index 3cbc7d6d..eedb62f2 100644
--- a/src/audio/audio_load.c
+++ b/src/audio/audio_load.c
@@ -1,8 +1,12 @@
+#include <stdlib.h>
#include "sys.h"
#include "sf64dma.h"
#include "sf64audio_provisional.h"
#include "assets/ast_audio.h"
#include "port/Engine.h"
+#include "endianness.h"
+#include "port/Engine.h"
+#include "port/resource/loaders/AudioLoader.h"
s32 D_80146D80;
s32 PAD_80146D88[2];
@@ -33,8 +37,8 @@ void AudioLoad_ProcessAsyncLoads(s32 resetStatus);
void AudioLoad_ProcessAsyncLoad(AudioAsyncLoad* asyncLoad, s32 resetStatus);
void AudioLoad_AsyncDma(AudioAsyncLoad* asyncLoad, u32 size);
void AudioLoad_AsyncDmaUnkMedium(uintptr_t devAddr, u8* ramAddr, u32 size, s32 unkMediumParam);
-void AudioLoad_RelocateSample(TunedSample* tSample, u32 fontDataAddr, SampleBankRelocInfo* relocInfo);
-s32 AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, u32 fontDataAddr, SampleBankRelocInfo* relocData, s32 isAsync);
+void AudioLoad_RelocateSample(TunedSample* sample, TunedSample32Bit* tSample, uintptr_t fontDataAddr, SampleBankRelocInfo* relocInfo);
+s32 AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, uintptr_t fontDataAddr, SampleBankRelocInfo* relocData, s32 isAsync);
s32 AudioLoad_ProcessSamplePreloads(s32 resetStatus);
void AudioLoad_DecreaseSampleDmaTtls(void) {
@@ -386,13 +390,12 @@ void AudioLoad_SyncInitSeqPlayerInternal(s32 playerIdx, s32 seqId, s32 arg2) {
func_800144E4(&gSeqPlayers[playerIdx]);
- index = *((u16*) gSeqFontTable + seqId);
- numFonts = gSeqFontTable[index++];
+ index = BSWAP16(*((u16*) gSeqFontTable + seqId));
fontId = 0xFF;
- for (numFonts; numFonts > 0; numFonts--) {
+ for (numFonts = gSeqFontTable[index++]; numFonts > 0; numFonts--) {
fontId = gSeqFontTable[index++];
- AudioLoad_SyncLoadFont(fontId);
+ // AudioLoad_SyncLoadFont(fontId);
}
seqData = AudioLoad_SyncLoadSeq(seqId);
@@ -401,23 +404,17 @@ void AudioLoad_SyncInitSeqPlayerInternal(s32 playerIdx, s32 seqId, s32 arg2) {
gSeqPlayers[playerIdx].seqId = seqId;
gSeqPlayers[playerIdx].defaultFont = fontId;
- gSeqPlayers[playerIdx].enabled = true;
+ gSeqPlayers[playerIdx].enabled = 1;
gSeqPlayers[playerIdx].seqData = seqData;
gSeqPlayers[playerIdx].scriptState.pc = seqData;
gSeqPlayers[playerIdx].scriptState.depth = 0;
gSeqPlayers[playerIdx].delay = 0;
- gSeqPlayers[playerIdx].finished = false;
-
- for (i = 0; i < 16; i++) {
- ;
- }
+ gSeqPlayers[playerIdx].finished = 0;
}
void* AudioLoad_SyncLoadSeq(s32 seqId) {
- s32 seqIdx = AudioLoad_GetLoadTableIndex(SEQUENCE_TABLE, seqId);
- s32 didAllocate;
-
- return AudioLoad_SyncLoad(0, seqIdx, &didAllocate);
+ AudioTable* table = AudioLoad_GetLoadTable(SEQUENCE_TABLE);
+ return Audio_LoadBlob(gAudioTable, table->entries[seqId].romAddr);
}
void* AudioLoad_SyncLoadSampleBank(u32 sampleBankId, s32* outMedium) {
@@ -498,7 +495,7 @@ void* AudioLoad_SyncLoad(u32 tableType, u32 id, s32* didAllocate) {
u8* ramAddr;
u32 medium;
s32 loadStatus;
- u32 romAddr;
+ uintptr_t romAddr;
s32 pad;
s32 cachePolicy;
@@ -621,12 +618,10 @@ AudioTable* AudioLoad_GetLoadTable(s32 tableType) {
return table;
}
-void AudioLoad_RelocateFont(s32 fontId, u32 fontBaseAddr, void* relocData) {
- u32* fontDataPtrs = fontBaseAddr;
- u32** drumDataPtrs = fontBaseAddr;
+void AudioLoad_RelocateFont(s32 fontId, uintptr_t fontBaseAddr, SampleBankRelocInfo* relocData) {
+ uint32_t* fontDataPtrs = fontBaseAddr;
+ uint32_t** drumDataPtrs = fontBaseAddr;
s32 numDrums;
- Drum* drum;
- Instrument* instrument;
u32 offset;
s32 i;
s32 numInstruments;
@@ -634,53 +629,41 @@ void AudioLoad_RelocateFont(s32 fontId, u32 fontBaseAddr, void* relocData) {
numDrums = gSoundFontList[fontId].numDrums;
numInstruments = gSoundFontList[fontId].numInstruments;
- if ((fontDataPtrs[0] != 0) && (numDrums != 0)) {
- fontDataPtrs[0] += fontBaseAddr;
+ Drum** relocatedDrums = memalloc(numDrums * sizeof(Drum*));
+ Instrument** relocatedInstruments = memalloc((numInstruments + 1) * sizeof(Instrument*));
+ if ((fontDataPtrs[0] != 0) && (numDrums != 0)) {
for (i = 0; i < numDrums; i++) {
offset = *(*drumDataPtrs + i);
if (offset != 0) {
- drum = offset += fontBaseAddr;
- *(*drumDataPtrs + i) = drum;
-
- if (!drum->isRelocated) {
- AudioLoad_RelocateSample(&drum->tunedSample, fontBaseAddr, relocData);
- offset = (u32) drum->envelope;
- drum->envelope = offset + fontBaseAddr;
- drum->isRelocated = true;
- }
+ relocatedDrums[i] = Audio_LoadDrum(BSWAP32(offset) + fontBaseAddr, 0, 0);
}
}
}
for (i = 1; i <= numInstruments; i++) {
if (fontDataPtrs[i] != 0) {
+ Instrument* instrument = Audio_LoadInstrument(BSWAP32(fontDataPtrs[i]) + fontBaseAddr, 0);
+ Instrument32Bit* base = fontBaseAddr + BSWAP32(fontDataPtrs[i]);
- fontDataPtrs[i] += fontBaseAddr;
-
- instrument = fontDataPtrs[i];
- if (!instrument->isRelocated) {
- if (instrument->normalRangeLo != 0) {
- AudioLoad_RelocateSample(&instrument->lowPitchTunedSample, fontBaseAddr, relocData);
- }
- AudioLoad_RelocateSample(&instrument->normalPitchTunedSample, fontBaseAddr, relocData);
- if (instrument->normalRangeHi != 0x7F) {
- AudioLoad_RelocateSample(&instrument->highPitchTunedSample, fontBaseAddr, relocData);
- }
- offset = (u32) instrument->envelope;
- instrument->envelope = offset + fontBaseAddr;
- instrument->isRelocated = true;
+ if (instrument->normalRangeLo != 0) {
+ AudioLoad_RelocateSample(&instrument->lowPitchTunedSample, &base->lowPitchTunedSample, fontBaseAddr, relocData);
}
+ AudioLoad_RelocateSample(&instrument->normalPitchTunedSample, &base->normalPitchTunedSample, fontBaseAddr, relocData);
+ if (instrument->normalRangeHi != 0x7F) {
+ AudioLoad_RelocateSample(&instrument->highPitchTunedSample, &base->highPitchTunedSample, fontBaseAddr, relocData);
+ }
+
+ relocatedInstruments[i] = instrument;
}
}
- gSoundFontList[fontId].drums = fontDataPtrs[0];
- gSoundFontList[fontId].instruments = (u32) &fontDataPtrs[1];
+ gSoundFontList[fontId].drums = relocatedDrums;
+ gSoundFontList[fontId].instruments = relocatedInstruments;
}
void AudioLoad_SyncDma(uintptr_t devAddr, u8* ramAddr, u32 size, s32 medium) {
size = ALIGN16(size);
-
osInvalDCache(ramAddr, size);
while (true) {
@@ -738,7 +721,7 @@ s32 AudioLoad_Dma(OSIoMesg* mesg, u32 priority, s32 direction, uintptr_t devAddr
mesg->devAddr = devAddr;
mesg->size = size;
- handle->transferInfo.cmdType = 2;
+ // handle->transferInfo.cmdType = 2;
// osEPiStartDma(handle, mesg, direction);
memcpy(ramAddr, (void*) devAddr, size);
@@ -941,19 +924,17 @@ void AudioLoad_Init(void) {
gSeqFontTable = gSeqFontTableInit;
gNumSequences = gSequenceTable->base.numEntries;
- AudioLoad_InitTable(gSequenceTable, LOAD_ASSET(gAudioSeq), gSequenceMedium);
- AudioLoad_InitTable(gSoundFontTable, LOAD_ASSET(gAudioBank), gSoundFontMedium);
- AudioLoad_InitTable(gSampleBankTable, LOAD_ASSET(gAudioTable), gSampleBankMedium);
+// AudioLoad_InitTable(gSequenceTable, LOAD_ASSET(gAudioSeq), gSequenceMedium);
+// AudioLoad_InitTable(gSoundFontTable, LOAD_ASSET(gAudioBank), gSoundFontMedium);
+// AudioLoad_InitTable(gSampleBankTable, LOAD_ASSET(gAudioTable), gSampleBankMedium);
numFonts = gSoundFontTable->base.numEntries;
gSoundFontList = AudioHeap_Alloc(&gInitPool, numFonts * sizeof(SoundFont));
for (i = 0; i < numFonts; i++) {
- gSoundFontList[i].sampleBankId1 = (gSoundFontTable->entries[i].shortData1 >> 8) & 0xFF;
- gSoundFontList[i].sampleBankId2 = gSoundFontTable->entries[i].shortData1 & 0xFF;
- gSoundFontList[i].numInstruments = (gSoundFontTable->entries[i].shortData2 >> 8) & 0xFF;
- gSoundFontList[i].numDrums = gSoundFontTable->entries[i].shortData2 & 0xFF;
+ gSoundFontList[i] = Audio_LoadFont(gSoundFontTable->entries[i]);
+ gFontLoadStatus[i] = 2;
}
ramAddr = AudioHeap_Alloc(&gInitPool, gPermanentPoolSize);
@@ -1277,35 +1258,40 @@ void AudioLoad_AsyncDmaUnkMedium(uintptr_t devAddr, u8* ramAddr, u32 size, s32 u
static const char devstr50[] = "Error: Already wavetable is touched %x.\n";
static const char devstr51[] = "Touch Warning: Length zero %x\n";
-void AudioLoad_RelocateSample(TunedSample* tSample, u32 fontDataAddr, SampleBankRelocInfo* relocInfo) {
- void* reloc;
- Sample* sample;
-
- // "Error: Already wavetable is touched %x.\n";
- if ((u32) tSample->sample <= AUDIO_RELOCATED_ADDRESS_START) {
- sample = tSample->sample = reloc = (u32) tSample->sample + fontDataAddr;
- // "Touch Warning: Length zero %x\n";
- if ((sample->size != 0) && (sample->isRelocated != 1)) {
- sample->loop = reloc = (u32) sample->loop + fontDataAddr;
- sample->book = reloc = (u32) sample->book + fontDataAddr;
- switch (sample->medium) {
- case MEDIUM_RAM:
- sample->sampleAddr = reloc = sample->sampleAddr + relocInfo->baseAddr1;
- sample->medium = relocInfo->medium1;
- break;
- case MEDIUM_UNK:
- sample->sampleAddr = reloc = sample->sampleAddr + relocInfo->baseAddr2;
- sample->medium = relocInfo->medium2;
- break;
- case MEDIUM_CART:
- case MEDIUM_DISK_DRIVE:
- break;
- }
+void AudioLoad_RelocateSample(TunedSample* tunedSample, TunedSample32Bit* tSample, uintptr_t fontDataAddr, SampleBankRelocInfo* relocInfo) {
+ Sample32Bit* baseSample = fontDataAddr + BSWAP32(tSample->sample);
+
+ // "Touch Warning: Length zero %x\n";
+ if ((baseSample->size != 0) && (baseSample->isRelocated != 1)) {
+ Sample* output = memalloc(sizeof(Sample));
+
+ output->loop = Audio_LoadLoop(fontDataAddr + BSWAP32(baseSample->loop));
+ output->book = Audio_LoadBook(fontDataAddr + BSWAP32(baseSample->book));
+ output->codec = baseSample->codec;
+ output->medium = baseSample->medium;
+ output->unk_bit26 = baseSample->unk_bit26;
+ output->isRelocated = baseSample->isRelocated;
+ output->size = baseSample->size;
+
+ output->isRelocated = 1;
+ switch (baseSample->medium) {
+ case MEDIUM_RAM:
+// baseSample->sampleAddr = Audio_LoadCopy(relocInfo->baseAddr1 + BSWAP32(baseSample->sampleAddr), BSWAP32(baseSample->size));
+ baseSample->medium = relocInfo->medium1;
+ break;
+ case MEDIUM_UNK:
+// baseSample->sampleAddr = Audio_LoadCopy(relocInfo->baseAddr2 + BSWAP32(baseSample->sampleAddr), BSWAP32(baseSample->size));
+ baseSample->medium = relocInfo->medium2;
+ break;
+ case MEDIUM_CART:
+ case MEDIUM_DISK_DRIVE:
+ output->sampleAddr = fontDataAddr + BSWAP32(baseSample->sampleAddr);
+ break;
+ }
- sample->isRelocated = true;
- if (sample->unk_bit26 && (sample->medium != 0)) {
- gUsedSamples[gNumUsedSamples++] = sample;
- }
+ baseSample->isRelocated = true;
+ if (baseSample->unk_bit26 && (baseSample->medium != 0)) {
+ gUsedSamples[gNumUsedSamples++] = output;
}
}
}
@@ -1316,7 +1302,7 @@ static const char devstr54[] = "Warning: Length zero %x\n";
static const char devstr55[] = "Wave Load %d \n";
static const char devstr56[] = "Total Bg Wave Load %d \n";
-s32 AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, u32 fontDataAddr, SampleBankRelocInfo* relocData, s32 isAsync) {
+s32 AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, uintptr_t fontDataAddr, SampleBankRelocInfo* relocData, s32 isAsync) {
s32 i;
Sample* sample;
u8* sampleRamAddr;
@@ -1534,4 +1520,4 @@ s32 AudioLoad_GetSamplesForFont(s32 fontId, Sample** sampleSet) {
}
return numLoaded;
-}
+} \ No newline at end of file
diff --git a/src/audio/audio_playback.c b/src/audio/audio_playback.c
index a4b2ae46..05cd56ef 100644
--- a/src/audio/audio_playback.c
+++ b/src/audio/audio_playback.c
@@ -248,10 +248,6 @@ void func_80011FA8(void) {
playbackState = &note->playbackState;
if ((playbackState->parentLayer != NO_LAYER)) {
- if ((u32) playbackState->parentLayer < 0x7FFFFFFF) {
- continue;
- }
-
if ((note != playbackState->parentLayer->note) && (playbackState->unk_04 == 0)) {
playbackState->adsr.action.asByte |= 0x10;
playbackState->adsr.fadeOutVel = gAudioBufferParams.ticksPerUpdateInv;
@@ -284,7 +280,6 @@ void func_80011FA8(void) {
block_21:
if (playbackState->priority != 0) {
- if (1) {}
noteSub = &note->noteSubEu;
if ((playbackState->unk_04 > 0) || noteSub->bitField0.finished) {
if ((playbackState->adsr.state == 0) || noteSub->bitField0.finished) {
diff --git a/src/audio/audio_seqplayer.c b/src/audio/audio_seqplayer.c
index dabcb992..62e6ffbe 100644
--- a/src/audio/audio_seqplayer.c
+++ b/src/audio/audio_seqplayer.c
@@ -268,7 +268,7 @@ void* func_800145FC(AudioListItem* list) {
list->prev = item->prev;
item->prev = NULL;
list->u.count--;
- return (void*) item->u.count;
+ return (void*) item->u.value;
}
void func_8001463C(void) {
diff --git a/src/audio/audio_synthesis.c b/src/audio/audio_synthesis.c
index 5ec7c962..7de5dd3f 100644
--- a/src/audio/audio_synthesis.c
+++ b/src/audio/audio_synthesis.c
@@ -1,6 +1,7 @@
#include "sys.h"
#include "sf64audio_provisional.h"
#include "audio/mixer.h"
+#include "endianness.h"
s32 D_80145D40; // unused
@@ -745,8 +746,8 @@ Acmd* func_8000A25C(s16* aiBuf, s32 aiBufLen, Acmd* aList, s32 updateIndex) {
u8 sp84[0x3C];
NoteSubEu* temp_v0;
s16 var_s2;
- s16 i;
- s32 j;
+ s16 i = 0;
+ s32 j = 0;
var_s2 = 0;
if (gNumSynthReverbs == 0) {
@@ -832,7 +833,7 @@ Acmd* func_8000A700(s32 noteIndex, NoteSubEu* noteSub, NoteSynthesisState* synth
s32 padD8;
s32 padD4;
s32 padD0;
- u32 sampleAddr; // spCC
+ uintptr_t sampleAddr; // spCC
s32 padC8;
s32 samplesLenAdjusted; // spC4
s32 nAdpcmSamplesProcessed; // spC0
@@ -1011,7 +1012,7 @@ Acmd* func_8000A700(s32 noteIndex, NoteSubEu* noteSub, NoteSynthesisState* synth
flags, &synthState->sampleDmaIndex, bookSample->medium);
}
// if (1){}
- sampleDataStartPad = (u32) sampleData & 0xF;
+ sampleDataStartPad = (uintptr_t) sampleData & 0xF;
aLoadBuffer(aList++, OS_K0_TO_PHYSICAL(sampleData - sampleDataStartPad), addr, aligned);
} else {
nSamplesToDecode = 0;
diff --git a/src/audio/audio_thread.c b/src/audio/audio_thread.c
index fb4144cf..0b42ed33 100644
--- a/src/audio/audio_thread.c
+++ b/src/audio/audio_thread.c
@@ -42,68 +42,58 @@ static const char devstr14[] = "Error : Queue is not empty ( %x ) \n";
void AudioThread_CreateNextAudioBuffer(s16 *samples, u32 num_samples) {
static s32 gMaxAbiCmdCnt = 128;
static SPTask* gWaitingAudioTask = NULL;
- u32 sp54;
- s32 sp50;
- s32 sp4C;
- s32 pad48;
- OSTask_t* task;
- u16* sp40;
- s32 pad3C;
- OSMesg sp38;
- OSMesg sp34;
- s32 pad30;
+ s32 abiCmdCount;
+ u32 specId;
+ OSMesg msg;
+
gAudioTaskCountQ++;
if ((gAudioTaskCountQ % gAudioBufferParams.count) != 0) {
- return;
+ return gWaitingAudioTask;
}
- osSendMesg(gAudioTaskStartQueue, OS_MESG_32(gAudioTaskCountQ), 0);
+ osSendMesg(gAudioTaskStartQueue, OS_MESG_32(gAudioTaskCountQ), OS_MESG_NOBLOCK);
gAudioTaskIndexQ ^= 1;
- gCurAiBuffIndex++;
- gCurAiBuffIndex %= 3;
- sp4C = (gCurAiBuffIndex + 1) % 3;
- sp54 = osAiGetLength() >> 2;
- if ((gAudioResetTimer < 16) && (gAiBuffLengths[sp4C] != 0)) {
- osAiSetNextBuffer(gAiBuffers[sp4C], gAiBuffLengths[sp4C] * 4);
- }
- if (gCurAudioFrameDmaCount && gCurAudioFrameDmaCount) {}
+
gCurAudioFrameDmaCount = 0;
AudioLoad_DecreaseSampleDmaTtls();
- AudioLoad_ProcessLoads(gAudioResetStep);
- if (osRecvMesg(&gAudioTaskMesgQueue, &sp38, 0) != -1) {
+ // AudioLoad_ProcessLoads(gAudioResetStep);
+
+ if (MQ_GET_MESG(gAudioSpecQueue, &specId)) {
if (gAudioResetStep == 0) {
gAudioResetStep = 5;
}
- gAudioSpecId = sp38.data32;
+ gAudioSpecId = specId;
}
+
if ((gAudioResetStep != 0) && (AudioHeap_ResetStep() == 0)) {
if (gAudioResetStep == 0) {
- osSendMesg(gAudioResetQueue, OS_MESG_32((s32) gAudioSpecId), 0);
+ osSendMesg(gAudioResetQueue, OS_MESG_32((s32) gAudioSpecId), OS_MESG_NOBLOCK);
}
gWaitingAudioTask = NULL;
- return;
+ return NULL;
}
+
if (gAudioResetTimer > 16) {
- return;
+ return NULL;
}
if (gAudioResetTimer != 0) {
gAudioResetTimer++;
}
+
gAudioCurTask = &gAudioRspTasks[gAudioTaskIndexQ];
gCurAbiCmdBuffer = gAbiCmdBuffs[gAudioTaskIndexQ];
- sp4C = gCurAiBuffIndex;
- sp40 = gAiBuffers[sp4C];
- gAiBuffLengths[sp4C] = num_samples;
- if (gAiBuffLengths[sp4C] < gAudioBufferParams.minAiBufferLength) {
- gAiBuffLengths[sp4C] = gAudioBufferParams.minAiBufferLength;
- }
- if (gAiBuffLengths[sp4C] > gAudioBufferParams.maxAiBufferLength) {
- gAiBuffLengths[sp4C] = gAudioBufferParams.maxAiBufferLength;
- }
- while (osRecvMesg(gThreadCmdProcQueue, &sp34, 0) != -1) {
- AudioThread_ProcessCmds(sp34.data32);
+
+ while (MQ_GET_MESG(gThreadCmdProcQueue, &msg)) {
+ AudioThread_ProcessCmds(msg.data32);
}
- gCurAbiCmdBuffer = func_80009B64(gCurAbiCmdBuffer, &sp50, samples, num_samples);
+
+ gCurAbiCmdBuffer = func_80009B64(gCurAbiCmdBuffer, &abiCmdCount, samples, num_samples);
gAudioRandom = osGetCount() * (gAudioRandom + gAudioTaskCountQ);
+
+ gAudioCurTask->msg = OS_MESG_PTR(NULL);
+
+ if (gMaxAbiCmdCnt < abiCmdCount) {
+ gMaxAbiCmdCnt = abiCmdCount;
+ }
}
SPTask* AudioThread_CreateTask() {
@@ -233,7 +223,7 @@ void AudioThread_ProcessGlobalCmd(AudioCmd* cmd) {
case AUDIOCMD_OP_GLOBAL_INIT_SEQPLAYER:
case AUDIOCMD_OP_GLOBAL_INIT_SEQPLAYER_ALT:
AudioLoad_SyncInitSeqPlayer(cmd->arg0, cmd->arg1, cmd->arg2);
- AudioThread_SetFadeInTimer(cmd->arg0, (s32) cmd->data);
+ AudioThread_SetFadeInTimer(cmd->arg0, (uintptr_t) cmd->data);
break;
case AUDIOCMD_OP_GLOBAL_DISABLE_SEQPLAYER:
if (gSeqPlayers[cmd->arg0].enabled) {
@@ -355,7 +345,7 @@ void AudioThread_ScheduleProcessCmds(void) {
D_800C7C70 = (u8) (gThreadCmdWritePos - gThreadCmdReadPos + 0x100);
}
msg = (((gThreadCmdReadPos & 0xFF) << 8) | (gThreadCmdWritePos & 0xFF));
- osSendMesg(gThreadCmdProcQueue, OS_MESG_32(msg), OS_MESG_NOBLOCK);
+ osSendMesg32(gThreadCmdProcQueue, msg, OS_MESG_NOBLOCK);
gThreadCmdReadPos = gThreadCmdWritePos;
}
diff --git a/src/audio/note_data.c b/src/audio/note_data.c
index c7e2574b..32256fc2 100644
--- a/src/audio/note_data.c
+++ b/src/audio/note_data.c
@@ -1,4 +1,5 @@
#include "sys.h"
+#include "endianness.h"
#include "sf64audio_provisional.h"
f32 gBendPitchOneOctaveFrequencies[] = {
@@ -197,6 +198,7 @@ u8 gDefaultShortNoteVelocityTable[] = {
u8 gDefaultShortNoteGateTimeTable[] = {
229, 203, 177, 151, 139, 126, 113, 100, 87, 74, 61, 48, 36, 23, 10, 0,
};
+
EnvelopePoint gDefaultEnvelope[] = {
{ 4, 32000 },
{ 1000, 32000 },