We are so fucking close omg

This commit is contained in:
KiritoDv
2024-10-29 02:06:14 -06:00
parent 2354ee76a3
commit 52d3eca421
17 changed files with 441 additions and 186 deletions
+3 -3
View File
@@ -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;
+4 -3
View File
@@ -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;
+2 -3
View File
@@ -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;
}
+1
View File
@@ -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;
}
+73 -87
View File
@@ -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;
void AudioLoad_RelocateSample(TunedSample* tunedSample, TunedSample32Bit* tSample, uintptr_t fontDataAddr, SampleBankRelocInfo* relocInfo) {
Sample32Bit* baseSample = fontDataAddr + BSWAP32(tSample->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;
}
// "Touch Warning: Length zero %x\n";
if ((baseSample->size != 0) && (baseSample->isRelocated != 1)) {
Sample* output = memalloc(sizeof(Sample));
sample->isRelocated = true;
if (sample->unk_bit26 && (sample->medium != 0)) {
gUsedSamples[gNumUsedSamples++] = 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;
}
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;
}
}
-5
View File
@@ -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) {
+1 -1
View File
@@ -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) {
+5 -4
View File
@@ -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;
+30 -40
View File
@@ -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;
while (MQ_GET_MESG(gThreadCmdProcQueue, &msg)) {
AudioThread_ProcessCmds(msg.data32);
}
if (gAiBuffLengths[sp4C] > gAudioBufferParams.maxAiBufferLength) {
gAiBuffLengths[sp4C] = gAudioBufferParams.maxAiBufferLength;
}
while (osRecvMesg(gThreadCmdProcQueue, &sp34, 0) != -1) {
AudioThread_ProcessCmds(sp34.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;
}
+2
View File
@@ -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 },