1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-05-09 18:43:45 +00:00

Audio Internal Library: Document original function names from Animal Crossing (#2513)

* finish thread.c

* load.c complete

* complete seqplayer.c

* format
This commit is contained in:
fig02 2025-04-30 17:16:06 -04:00 committed by GitHub
parent cfd23f9cd2
commit 123a9352e0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 419 additions and 1 deletions

View file

@ -1,3 +1,7 @@
/**
* Original Filename: system.c
*/
#include "array_count.h" #include "array_count.h"
#include "attributes.h" #include "attributes.h"
#include "buffers.h" #include "buffers.h"
@ -77,6 +81,9 @@ void* sUnusedHandler = NULL;
s32 gAudioContextInitialized = false; s32 gAudioContextInitialized = false;
/**
* original name: Nas_WaveDmaFrameWork
*/
void AudioLoad_DecreaseSampleDmaTtls(void) { void AudioLoad_DecreaseSampleDmaTtls(void) {
u32 i; u32 i;
@ -109,6 +116,9 @@ void AudioLoad_DecreaseSampleDmaTtls(void) {
gAudioCtx.unused2628 = 0; gAudioCtx.unused2628 = 0;
} }
/**
* original name:Nas_WaveDmaCallBack
*/
void* AudioLoad_DmaSampleData(u32 devAddr, u32 size, s32 arg2, u8* dmaIndexRef, s32 medium) { void* AudioLoad_DmaSampleData(u32 devAddr, u32 size, s32 arg2, u8* dmaIndexRef, s32 medium) {
s32 pad1; s32 pad1;
SampleDma* dma; SampleDma* dma;
@ -203,6 +213,9 @@ void* AudioLoad_DmaSampleData(u32 devAddr, u32 size, s32 arg2, u8* dmaIndexRef,
return (devAddr - dmaDevAddr) + dma->ramAddr; return (devAddr - dmaDevAddr) + dma->ramAddr;
} }
/**
* original name: Nas_WaveDmaNew
*/
void AudioLoad_InitSampleDmaBuffers(s32 numNotes) { void AudioLoad_InitSampleDmaBuffers(s32 numNotes) {
SampleDma* dma; SampleDma* dma;
s32 i; s32 i;
@ -272,6 +285,9 @@ void AudioLoad_InitSampleDmaBuffers(s32 numNotes) {
gAudioCtx.sampleDmaReuseQueue2WrPos = gAudioCtx.sampleDmaCount - gAudioCtx.sampleDmaListSize1; gAudioCtx.sampleDmaReuseQueue2WrPos = gAudioCtx.sampleDmaCount - gAudioCtx.sampleDmaListSize1;
} }
/**
* original name: Nas_CheckIDbank
*/
s32 AudioLoad_IsFontLoadComplete(s32 fontId) { s32 AudioLoad_IsFontLoadComplete(s32 fontId) {
if (fontId == 0xFF) { if (fontId == 0xFF) {
return true; return true;
@ -284,6 +300,9 @@ s32 AudioLoad_IsFontLoadComplete(s32 fontId) {
} }
} }
/**
* original name: Nas_CheckIDseq
*/
s32 AudioLoad_IsSeqLoadComplete(s32 seqId) { s32 AudioLoad_IsSeqLoadComplete(s32 seqId) {
if (seqId == 0xFF) { if (seqId == 0xFF) {
return true; return true;
@ -296,6 +315,9 @@ s32 AudioLoad_IsSeqLoadComplete(s32 seqId) {
} }
} }
/**
* original name: Nas_CheckIDwave
*/
s32 AudioLoad_IsSampleLoadComplete(s32 sampleBankId) { s32 AudioLoad_IsSampleLoadComplete(s32 sampleBankId) {
if (sampleBankId == 0xFF) { if (sampleBankId == 0xFF) {
return true; return true;
@ -309,18 +331,27 @@ s32 AudioLoad_IsSampleLoadComplete(s32 sampleBankId) {
} }
} }
/**
* original name: Nas_WriteIDbank
*/
void AudioLoad_SetFontLoadStatus(s32 fontId, s32 loadStatus) { void AudioLoad_SetFontLoadStatus(s32 fontId, s32 loadStatus) {
if ((fontId != 0xFF) && (gAudioCtx.fontLoadStatus[fontId] != LOAD_STATUS_PERMANENTLY_LOADED)) { if ((fontId != 0xFF) && (gAudioCtx.fontLoadStatus[fontId] != LOAD_STATUS_PERMANENTLY_LOADED)) {
gAudioCtx.fontLoadStatus[fontId] = loadStatus; gAudioCtx.fontLoadStatus[fontId] = loadStatus;
} }
} }
/**
* original name: Nas_WriteIDseq
*/
void AudioLoad_SetSeqLoadStatus(s32 seqId, s32 loadStatus) { void AudioLoad_SetSeqLoadStatus(s32 seqId, s32 loadStatus) {
if ((seqId != 0xFF) && (gAudioCtx.seqLoadStatus[seqId] != LOAD_STATUS_PERMANENTLY_LOADED)) { if ((seqId != 0xFF) && (gAudioCtx.seqLoadStatus[seqId] != LOAD_STATUS_PERMANENTLY_LOADED)) {
gAudioCtx.seqLoadStatus[seqId] = loadStatus; gAudioCtx.seqLoadStatus[seqId] = loadStatus;
} }
} }
/**
* original name: Nas_WriteIDwave
*/
void AudioLoad_SetSampleFontLoadStatusAndApplyCaches(s32 sampleBankId, s32 loadStatus) { void AudioLoad_SetSampleFontLoadStatusAndApplyCaches(s32 sampleBankId, s32 loadStatus) {
if (sampleBankId != 0xFF) { if (sampleBankId != 0xFF) {
if (gAudioCtx.sampleFontLoadStatus[sampleBankId] != LOAD_STATUS_PERMANENTLY_LOADED) { if (gAudioCtx.sampleFontLoadStatus[sampleBankId] != LOAD_STATUS_PERMANENTLY_LOADED) {
@ -334,12 +365,18 @@ void AudioLoad_SetSampleFontLoadStatusAndApplyCaches(s32 sampleBankId, s32 loadS
} }
} }
/**
* original name: Nas_WriteIDwaveOnly
*/
void AudioLoad_SetSampleFontLoadStatus(s32 sampleBankId, s32 loadStatus) { void AudioLoad_SetSampleFontLoadStatus(s32 sampleBankId, s32 loadStatus) {
if ((sampleBankId != 0xFF) && (gAudioCtx.sampleFontLoadStatus[sampleBankId] != LOAD_STATUS_PERMANENTLY_LOADED)) { if ((sampleBankId != 0xFF) && (gAudioCtx.sampleFontLoadStatus[sampleBankId] != LOAD_STATUS_PERMANENTLY_LOADED)) {
gAudioCtx.sampleFontLoadStatus[sampleBankId] = loadStatus; gAudioCtx.sampleFontLoadStatus[sampleBankId] = loadStatus;
} }
} }
/**
* original name: Nas_BankHeaderInit
*/
void AudioLoad_InitTable(AudioTable* table, u32 romAddr, u16 unkMediumParam) { void AudioLoad_InitTable(AudioTable* table, u32 romAddr, u16 unkMediumParam) {
s32 i; s32 i;
@ -353,6 +390,9 @@ void AudioLoad_InitTable(AudioTable* table, u32 romAddr, u16 unkMediumParam) {
} }
} }
/**
* original name: Nas_PreLoadBank
*/
SoundFontData* AudioLoad_SyncLoadSeqFonts(s32 seqId, u32* outDefaultFontId) { SoundFontData* AudioLoad_SyncLoadSeqFonts(s32 seqId, u32* outDefaultFontId) {
s32 pad[2]; s32 pad[2];
s32 index; s32 index;
@ -379,6 +419,9 @@ SoundFontData* AudioLoad_SyncLoadSeqFonts(s32 seqId, u32* outDefaultFontId) {
return fontData; return fontData;
} }
/**
* original name: Nas_PreLoadSeq
*/
void AudioLoad_SyncLoadSeqParts(s32 seqId, s32 arg1) { void AudioLoad_SyncLoadSeqParts(s32 seqId, s32 arg1) {
s32 pad; s32 pad;
u32 defaultFontId; u32 defaultFontId;
@ -393,6 +436,9 @@ void AudioLoad_SyncLoadSeqParts(s32 seqId, s32 arg1) {
} }
} }
/**
* original name: __Nas_LoadVoice_Inner
*/
s32 AudioLoad_SyncLoadSample(Sample* sample, s32 fontId) { s32 AudioLoad_SyncLoadSample(Sample* sample, s32 fontId) {
void* sampleAddr; void* sampleAddr;
@ -417,6 +463,9 @@ s32 AudioLoad_SyncLoadSample(Sample* sample, s32 fontId) {
//! @bug Missing return, but the return value is never used so it's fine. //! @bug Missing return, but the return value is never used so it's fine.
} }
/**
* original name: Nas_LoadVoice
*/
s32 AudioLoad_SyncLoadInstrument(s32 fontId, s32 instId, s32 drumId) { s32 AudioLoad_SyncLoadInstrument(s32 fontId, s32 instId, s32 drumId) {
if (instId < 0x7F) { if (instId < 0x7F) {
Instrument* instrument = Audio_GetInstrumentInner(fontId, instId); Instrument* instrument = Audio_GetInstrumentInner(fontId, instId);
@ -443,24 +492,39 @@ s32 AudioLoad_SyncLoadInstrument(s32 fontId, s32 instId, s32 drumId) {
} }
} }
/**
* original name: Nas_PreLoad_BG
*/
void AudioLoad_AsyncLoad(s32 tableType, s32 id, s32 nChunks, s32 retData, OSMesgQueue* retQueue) { void AudioLoad_AsyncLoad(s32 tableType, s32 id, s32 nChunks, s32 retData, OSMesgQueue* retQueue) {
if (AudioLoad_AsyncLoadInner(tableType, id, nChunks, retData, retQueue) == NULL) { if (AudioLoad_AsyncLoadInner(tableType, id, nChunks, retData, retQueue) == NULL) {
osSendMesg(retQueue, (OSMesg)0xFFFFFFFF, OS_MESG_NOBLOCK); osSendMesg(retQueue, (OSMesg)0xFFFFFFFF, OS_MESG_NOBLOCK);
} }
} }
/**
* original name: Nas_PreLoadSeq_BG
*/
void AudioLoad_AsyncLoadSeq(s32 seqId, s32 arg1, s32 retData, OSMesgQueue* retQueue) { void AudioLoad_AsyncLoadSeq(s32 seqId, s32 arg1, s32 retData, OSMesgQueue* retQueue) {
AudioLoad_AsyncLoad(SEQUENCE_TABLE, seqId, 0, retData, retQueue); AudioLoad_AsyncLoad(SEQUENCE_TABLE, seqId, 0, retData, retQueue);
} }
/**
* original name: Nas_PreLoadWave_BG
*/
void AudioLoad_AsyncLoadSampleBank(s32 sampleBankId, s32 arg1, s32 retData, OSMesgQueue* retQueue) { void AudioLoad_AsyncLoadSampleBank(s32 sampleBankId, s32 arg1, s32 retData, OSMesgQueue* retQueue) {
AudioLoad_AsyncLoad(SAMPLE_TABLE, sampleBankId, 0, retData, retQueue); AudioLoad_AsyncLoad(SAMPLE_TABLE, sampleBankId, 0, retData, retQueue);
} }
/**
* original name: Nas_PreLoadBank_BG
*/
void AudioLoad_AsyncLoadFont(s32 fontId, s32 arg1, s32 retData, OSMesgQueue* retQueue) { void AudioLoad_AsyncLoadFont(s32 fontId, s32 arg1, s32 retData, OSMesgQueue* retQueue) {
AudioLoad_AsyncLoad(FONT_TABLE, fontId, 0, retData, retQueue); AudioLoad_AsyncLoad(FONT_TABLE, fontId, 0, retData, retQueue);
} }
/**
* original name: Nas_SeqToBank
*/
u8* AudioLoad_GetFontsForSequence(s32 seqId, u32* outNumFonts) { u8* AudioLoad_GetFontsForSequence(s32 seqId, u32* outNumFonts) {
s32 index = ((u16*)gAudioCtx.sequenceFontTable)[seqId]; s32 index = ((u16*)gAudioCtx.sequenceFontTable)[seqId];
@ -471,6 +535,9 @@ u8* AudioLoad_GetFontsForSequence(s32 seqId, u32* outNumFonts) {
return &gAudioCtx.sequenceFontTable[index]; return &gAudioCtx.sequenceFontTable[index];
} }
/**
* original name: Nas_FlushBank
*/
void AudioLoad_DiscardSeqFonts(s32 seqId) { void AudioLoad_DiscardSeqFonts(s32 seqId) {
s32 fontId; s32 fontId;
s32 index = ((u16*)gAudioCtx.sequenceFontTable)[seqId]; s32 index = ((u16*)gAudioCtx.sequenceFontTable)[seqId];
@ -486,6 +553,9 @@ void AudioLoad_DiscardSeqFonts(s32 seqId) {
} }
} }
/**
* original name: __Kill_Bank
*/
void AudioLoad_DiscardFont(s32 fontId) { void AudioLoad_DiscardFont(s32 fontId) {
u32 i; u32 i;
AudioCache* pool = &gAudioCtx.fontCache; AudioCache* pool = &gAudioCtx.fontCache;
@ -507,6 +577,9 @@ void AudioLoad_DiscardFont(s32 fontId) {
AudioHeap_DiscardFont(fontId); AudioHeap_DiscardFont(fontId);
} }
/**
* original name: Nas_StartMySeq
*/
s32 AudioLoad_SyncInitSeqPlayer(s32 playerIdx, s32 seqId, s32 arg2) { s32 AudioLoad_SyncInitSeqPlayer(s32 playerIdx, s32 seqId, s32 arg2) {
if (gAudioCtx.resetTimer != 0) { if (gAudioCtx.resetTimer != 0) {
return 0; return 0;
@ -520,6 +593,9 @@ s32 AudioLoad_SyncInitSeqPlayer(s32 playerIdx, s32 seqId, s32 arg2) {
//! The callers of this function do not use the return value, so it's fine. //! The callers of this function do not use the return value, so it's fine.
} }
/**
* original name: Nas_StartSeq_Skip
*/
s32 AudioLoad_SyncInitSeqPlayerSkipTicks(s32 playerIdx, s32 seqId, s32 skipTicks) { s32 AudioLoad_SyncInitSeqPlayerSkipTicks(s32 playerIdx, s32 seqId, s32 skipTicks) {
if (gAudioCtx.resetTimer != 0) { if (gAudioCtx.resetTimer != 0) {
return 0; return 0;
@ -530,6 +606,9 @@ s32 AudioLoad_SyncInitSeqPlayerSkipTicks(s32 playerIdx, s32 seqId, s32 skipTicks
//! @bug Missing return, see comment in AudioLoad_SyncInitSeqPlayer above. //! @bug Missing return, see comment in AudioLoad_SyncInitSeqPlayer above.
} }
/**
* original name: __Nas_StartSeq
*/
s32 AudioLoad_SyncInitSeqPlayerInternal(s32 playerIdx, s32 seqId, s32 arg2) { s32 AudioLoad_SyncInitSeqPlayerInternal(s32 playerIdx, s32 seqId, s32 arg2) {
SequencePlayer* seqPlayer = &gAudioCtx.seqPlayers[playerIdx]; SequencePlayer* seqPlayer = &gAudioCtx.seqPlayers[playerIdx];
u8* seqData; u8* seqData;
@ -572,6 +651,9 @@ s32 AudioLoad_SyncInitSeqPlayerInternal(s32 playerIdx, s32 seqId, s32 arg2) {
//! @bug missing return (but the return value is not used so it's not UB) //! @bug missing return (but the return value is not used so it's not UB)
} }
/**
* original name: __Load_Seq
*/
u8* AudioLoad_SyncLoadSeq(s32 seqId) { u8* AudioLoad_SyncLoadSeq(s32 seqId) {
s32 pad; s32 pad;
s32 didAllocate; s32 didAllocate;
@ -583,10 +665,16 @@ u8* AudioLoad_SyncLoadSeq(s32 seqId) {
return AudioLoad_SyncLoad(SEQUENCE_TABLE, seqId, &didAllocate); return AudioLoad_SyncLoad(SEQUENCE_TABLE, seqId, &didAllocate);
} }
/**
* original name: __Load_Wave_Check
*/
u32 AudioLoad_GetSampleBank(u32 sampleBankId, u32* outMedium) { u32 AudioLoad_GetSampleBank(u32 sampleBankId, u32* outMedium) {
return AudioLoad_TrySyncLoadSampleBank(sampleBankId, outMedium, true); return AudioLoad_TrySyncLoadSampleBank(sampleBankId, outMedium, true);
} }
/**
* original name: __Load_Wave
*/
u32 AudioLoad_TrySyncLoadSampleBank(u32 sampleBankId, u32* outMedium, s32 noLoad) { u32 AudioLoad_TrySyncLoadSampleBank(u32 sampleBankId, u32* outMedium, s32 noLoad) {
void* ramAddr; void* ramAddr;
AudioTable* sampleBankTable; AudioTable* sampleBankTable;
@ -619,6 +707,9 @@ u32 AudioLoad_TrySyncLoadSampleBank(u32 sampleBankId, u32* outMedium, s32 noLoad
return sampleBankTable->entries[realTableId].romAddr; return sampleBankTable->entries[realTableId].romAddr;
} }
/**
* original name: __Load_Ctrl
*/
SoundFontData* AudioLoad_SyncLoadFont(u32 fontId) { SoundFontData* AudioLoad_SyncLoadFont(u32 fontId) {
SoundFontData* fontData; SoundFontData* fontData;
s32 sampleBankId1; s32 sampleBankId1;
@ -658,6 +749,9 @@ SoundFontData* AudioLoad_SyncLoadFont(u32 fontId) {
return fontData; return fontData;
} }
/**
* original name: __Load_Bank
*/
void* AudioLoad_SyncLoad(u32 tableType, u32 id, s32* didAllocate) { void* AudioLoad_SyncLoad(u32 tableType, u32 id, s32* didAllocate) {
u32 size; u32 size;
AudioTable* table; AudioTable* table;
@ -742,6 +836,9 @@ void* AudioLoad_SyncLoad(u32 tableType, u32 id, s32* didAllocate) {
return ramAddr; return ramAddr;
} }
/**
* original name: __Link_BankNum
*/
u32 AudioLoad_GetRealTableIndex(s32 tableType, u32 id) { u32 AudioLoad_GetRealTableIndex(s32 tableType, u32 id) {
AudioTable* table = AudioLoad_GetLoadTable(tableType); AudioTable* table = AudioLoad_GetLoadTable(tableType);
@ -752,6 +849,9 @@ u32 AudioLoad_GetRealTableIndex(s32 tableType, u32 id) {
return id; return id;
} }
/**
* original name: __Check_Cache
*/
void* AudioLoad_SearchCaches(s32 tableType, s32 id) { void* AudioLoad_SearchCaches(s32 tableType, s32 id) {
void* ramAddr; void* ramAddr;
@ -768,6 +868,10 @@ void* AudioLoad_SearchCaches(s32 tableType, s32 id) {
return NULL; return NULL;
} }
/**
* Animal Crossing's equivalent to this function is __Get_ArcHeader.
* This name must be new, because ARC files are GameCube speicifc.
*/
AudioTable* AudioLoad_GetLoadTable(s32 tableType) { AudioTable* AudioLoad_GetLoadTable(s32 tableType) {
AudioTable* table; AudioTable* table;
@ -793,7 +897,9 @@ AudioTable* AudioLoad_GetLoadTable(s32 tableType) {
/** /**
* Read and extract information from soundFont binary loaded into ram. * Read and extract information from soundFont binary loaded into ram.
* Also relocate offsets into pointers within this loaded soundFont * Also relocate offsets into pointers within this loaded soundFont.
*
* original name: Nas_BankOfsToAddr_Inner
* *
* @param fontId index of font being processed * @param fontId index of font being processed
* @param fontDataStartAddr ram address of raw soundfont binary loaded into cache * @param fontDataStartAddr ram address of raw soundfont binary loaded into cache
@ -923,6 +1029,9 @@ void AudioLoad_RelocateFont(s32 fontId, SoundFontData* fontDataStartAddr, Sample
gAudioCtx.soundFontList[fontId].instruments = (Instrument**)(fontData + 2); gAudioCtx.soundFontList[fontId].instruments = (Instrument**)(fontData + 2);
} }
/**
* original name: Nas_FastCopy
*/
void AudioLoad_SyncDma(u32 devAddr, u8* ramAddr, u32 size, s32 medium) { void AudioLoad_SyncDma(u32 devAddr, u8* ramAddr, u32 size, s32 medium) {
OSMesgQueue* msgQueue = &gAudioCtx.syncDmaQueue; OSMesgQueue* msgQueue = &gAudioCtx.syncDmaQueue;
OSIoMesg* ioMesg = &gAudioCtx.syncDmaIoMesg; OSIoMesg* ioMesg = &gAudioCtx.syncDmaIoMesg;
@ -947,9 +1056,15 @@ void AudioLoad_SyncDma(u32 devAddr, u8* ramAddr, u32 size, s32 medium) {
} }
} }
/**
* original name: Nas_FastDiskCopy
*/
void AudioLoad_SyncDmaUnkMedium(u32 devAddr, u8* addr, u32 size, s32 unkMediumParam) { void AudioLoad_SyncDmaUnkMedium(u32 devAddr, u8* addr, u32 size, s32 unkMediumParam) {
} }
/**
* original name: Nas_StartDma
*/
s32 AudioLoad_Dma(OSIoMesg* mesg, u32 priority, s32 direction, u32 devAddr, void* ramAddr, u32 size, s32 AudioLoad_Dma(OSIoMesg* mesg, u32 priority, s32 direction, u32 devAddr, void* ramAddr, u32 size,
OSMesgQueue* reqQueue, s32 medium, const char* dmaFuncType) { OSMesgQueue* reqQueue, s32 medium, const char* dmaFuncType) {
OSPiHandle* handle; OSPiHandle* handle;
@ -987,15 +1102,24 @@ s32 AudioLoad_Dma(OSIoMesg* mesg, u32 priority, s32 direction, u32 devAddr, void
return 0; return 0;
} }
/**
* original name: __OfsToLbaOfs
*/
void AudioLoad_Unused1(void) { void AudioLoad_Unused1(void) {
} }
/**
* original name: EmemLoad
*/
void AudioLoad_SyncLoadSimple(u32 tableType, u32 fontId) { void AudioLoad_SyncLoadSimple(u32 tableType, u32 fontId) {
s32 didAllocate; s32 didAllocate;
AudioLoad_SyncLoad(tableType, fontId, &didAllocate); AudioLoad_SyncLoad(tableType, fontId, &didAllocate);
} }
/**
* original name: __Load_Bank_BG
*/
void* AudioLoad_AsyncLoadInner(s32 tableType, s32 id, s32 nChunks, s32 retData, OSMesgQueue* retQueue) { void* AudioLoad_AsyncLoadInner(s32 tableType, s32 id, s32 nChunks, s32 retData, OSMesgQueue* retQueue) {
u32 size; u32 size;
AudioTable* table; AudioTable* table;
@ -1102,20 +1226,32 @@ void* AudioLoad_AsyncLoadInner(s32 tableType, s32 id, s32 nChunks, s32 retData,
return ramAddr; return ramAddr;
} }
/**
* original name: Nas_BgDmaFrameWork
*/
void AudioLoad_ProcessLoads(s32 resetStatus) { void AudioLoad_ProcessLoads(s32 resetStatus) {
AudioLoad_ProcessSlowLoads(resetStatus); AudioLoad_ProcessSlowLoads(resetStatus);
AudioLoad_ProcessSamplePreloads(resetStatus); AudioLoad_ProcessSamplePreloads(resetStatus);
AudioLoad_ProcessAsyncLoads(resetStatus); AudioLoad_ProcessAsyncLoads(resetStatus);
} }
/**
* original name: Nas_SetRomHandler
*/
void AudioLoad_SetDmaHandler(DmaHandler callback) { void AudioLoad_SetDmaHandler(DmaHandler callback) {
sDmaHandler = callback; sDmaHandler = callback;
} }
/**
* original name: Nas_SetRomHandler
*/
void AudioLoad_SetUnusedHandler(void* callback) { void AudioLoad_SetUnusedHandler(void* callback) {
sUnusedHandler = callback; sUnusedHandler = callback;
} }
/**
* original name: __SetVlute
*/
void AudioLoad_InitSoundFont(s32 fontId) { void AudioLoad_InitSoundFont(s32 fontId) {
SoundFont* font = &gAudioCtx.soundFontList[fontId]; SoundFont* font = &gAudioCtx.soundFontList[fontId];
AudioTableEntry* entry = &gAudioCtx.soundFontTable->entries[fontId]; AudioTableEntry* entry = &gAudioCtx.soundFontTable->entries[fontId];
@ -1127,6 +1263,9 @@ void AudioLoad_InitSoundFont(s32 fontId) {
font->numSfx = entry->shortData3; font->numSfx = entry->shortData3;
} }
/**
* original name: Nas_InitAudio
*/
void AudioLoad_Init(void* heap, u32 heapSize) { void AudioLoad_Init(void* heap, u32 heapSize) {
s32 pad[18]; s32 pad[18];
s32 numFonts; s32 numFonts;
@ -1262,11 +1401,17 @@ void AudioLoad_Init(void* heap, u32 heapSize) {
osSendMesg(gAudioCtx.taskStartQueueP, (OSMesg)gAudioCtx.totalTaskCount, OS_MESG_NOBLOCK); osSendMesg(gAudioCtx.taskStartQueueP, (OSMesg)gAudioCtx.totalTaskCount, OS_MESG_NOBLOCK);
} }
/**
* original name: LpsInit
*/
void AudioLoad_InitSlowLoads(void) { void AudioLoad_InitSlowLoads(void) {
gAudioCtx.slowLoads[0].state = SLOW_LOAD_STATE_WAITING; gAudioCtx.slowLoads[0].state = SLOW_LOAD_STATE_WAITING;
gAudioCtx.slowLoads[1].state = SLOW_LOAD_STATE_WAITING; gAudioCtx.slowLoads[1].state = SLOW_LOAD_STATE_WAITING;
} }
/**
* original name: VoiceLoad
*/
s32 AudioLoad_SlowLoadSample(s32 fontId, s32 instId, s8* status) { s32 AudioLoad_SlowLoadSample(s32 fontId, s32 instId, s8* status) {
Sample* sample; Sample* sample;
AudioSlowLoad* slowLoad; AudioSlowLoad* slowLoad;
@ -1317,6 +1462,9 @@ s32 AudioLoad_SlowLoadSample(s32 fontId, s32 instId, s8* status) {
return 0; return 0;
} }
/**
* original name: __GetWaveTable
*/
Sample* AudioLoad_GetFontSample(s32 fontId, s32 instId) { Sample* AudioLoad_GetFontSample(s32 fontId, s32 instId) {
Sample* sample; Sample* sample;
@ -1348,6 +1496,9 @@ Sample* AudioLoad_GetFontSample(s32 fontId, s32 instId) {
void AudioLoad_Unused2(void) { void AudioLoad_Unused2(void) {
} }
/**
* original name: __SwapLoadLps
*/
void AudioLoad_FinishSlowLoad(AudioSlowLoad* slowLoad) { void AudioLoad_FinishSlowLoad(AudioSlowLoad* slowLoad) {
Sample* sample; Sample* sample;
@ -1365,6 +1516,9 @@ void AudioLoad_FinishSlowLoad(AudioSlowLoad* slowLoad) {
sample->medium = MEDIUM_RAM; sample->medium = MEDIUM_RAM;
} }
/**
* original name: LpsDma
*/
void AudioLoad_ProcessSlowLoads(s32 resetStatus) { void AudioLoad_ProcessSlowLoads(s32 resetStatus) {
AudioSlowLoad* slowLoad; AudioSlowLoad* slowLoad;
s32 i; s32 i;
@ -1414,6 +1568,9 @@ void AudioLoad_ProcessSlowLoads(s32 resetStatus) {
} }
} }
/**
* original name: __Nas_SlowCopy
*/
void AudioLoad_DmaSlowCopy(AudioSlowLoad* slowLoad, s32 size) { void AudioLoad_DmaSlowCopy(AudioSlowLoad* slowLoad, s32 size) {
Audio_InvalDCache(slowLoad->curRamAddr, size); Audio_InvalDCache(slowLoad->curRamAddr, size);
osCreateMesgQueue(&slowLoad->msgQueue, &slowLoad->msg, 1); osCreateMesgQueue(&slowLoad->msgQueue, &slowLoad->msg, 1);
@ -1421,9 +1578,15 @@ void AudioLoad_DmaSlowCopy(AudioSlowLoad* slowLoad, s32 size) {
&slowLoad->msgQueue, slowLoad->medium, "SLOWCOPY"); &slowLoad->msgQueue, slowLoad->medium, "SLOWCOPY");
} }
/**
* original name: __Nas_SlowDiskCopy
*/
void AudioLoad_DmaSlowCopyUnkMedium(s32 devAddr, u8* ramAddr, s32 size, s32 arg3) { void AudioLoad_DmaSlowCopyUnkMedium(s32 devAddr, u8* ramAddr, s32 size, s32 arg3) {
} }
/**
* original name: SeqLoad
*/
s32 AudioLoad_SlowLoadSeq(s32 seqId, u8* ramAddr, s8* status) { s32 AudioLoad_SlowLoadSeq(s32 seqId, u8* ramAddr, s8* status) {
AudioSlowLoad* slowLoad; AudioSlowLoad* slowLoad;
AudioTable* seqTable; AudioTable* seqTable;
@ -1461,6 +1624,9 @@ s32 AudioLoad_SlowLoadSeq(s32 seqId, u8* ramAddr, s8* status) {
return 0; return 0;
} }
/**
* original name: Nas_BgCopyInit
*/
void AudioLoad_InitAsyncLoads(void) { void AudioLoad_InitAsyncLoads(void) {
s32 i; s32 i;
@ -1469,6 +1635,9 @@ void AudioLoad_InitAsyncLoads(void) {
} }
} }
/**
* original name: Nas_BgCopyDisk
*/
AudioAsyncLoad* AudioLoad_StartAsyncLoadUnkMedium(s32 unkMediumParam, u32 devAddr, void* ramAddr, s32 size, s32 medium, AudioAsyncLoad* AudioLoad_StartAsyncLoadUnkMedium(s32 unkMediumParam, u32 devAddr, void* ramAddr, s32 size, s32 medium,
s32 nChunks, OSMesgQueue* retQueue, s32 retMsg) { s32 nChunks, OSMesgQueue* retQueue, s32 retMsg) {
AudioAsyncLoad* asyncLoad; AudioAsyncLoad* asyncLoad;
@ -1484,6 +1653,9 @@ AudioAsyncLoad* AudioLoad_StartAsyncLoadUnkMedium(s32 unkMediumParam, u32 devAdd
return asyncLoad; return asyncLoad;
} }
/**
* original name: Nas_BgCopyReq
*/
AudioAsyncLoad* AudioLoad_StartAsyncLoad(u32 devAddr, void* ramAddr, u32 size, s32 medium, s32 nChunks, AudioAsyncLoad* AudioLoad_StartAsyncLoad(u32 devAddr, void* ramAddr, u32 size, s32 medium, s32 nChunks,
OSMesgQueue* retQueue, s32 retMsg) { OSMesgQueue* retQueue, s32 retMsg) {
AudioAsyncLoad* asyncLoad; AudioAsyncLoad* asyncLoad;
@ -1526,6 +1698,9 @@ AudioAsyncLoad* AudioLoad_StartAsyncLoad(u32 devAddr, void* ramAddr, u32 size, s
return asyncLoad; return asyncLoad;
} }
/**
* original name: Nas_BgCopyMain
*/
void AudioLoad_ProcessAsyncLoads(s32 resetStatus) { void AudioLoad_ProcessAsyncLoads(s32 resetStatus) {
AudioAsyncLoad* asyncLoad; AudioAsyncLoad* asyncLoad;
s32 i; s32 i;
@ -1560,9 +1735,15 @@ void AudioLoad_ProcessAsyncLoads(s32 resetStatus) {
} }
} }
/**
* original name: __BgCopyDisk
*/
void AudioLoad_ProcessAsyncLoadUnkMedium(AudioAsyncLoad* asyncLoad, s32 resetStatus) { void AudioLoad_ProcessAsyncLoadUnkMedium(AudioAsyncLoad* asyncLoad, s32 resetStatus) {
} }
/**
* original name: __BgCopyFinishProcess
*/
void AudioLoad_FinishAsyncLoad(AudioAsyncLoad* asyncLoad) { void AudioLoad_FinishAsyncLoad(AudioAsyncLoad* asyncLoad) {
u32 retMsg = asyncLoad->retMsg; u32 retMsg = asyncLoad->retMsg;
u32 fontId; u32 fontId;
@ -1603,6 +1784,9 @@ void AudioLoad_FinishAsyncLoad(AudioAsyncLoad* asyncLoad) {
osSendMesg(asyncLoad->retQueue, doneMsg, OS_MESG_NOBLOCK); osSendMesg(asyncLoad->retQueue, doneMsg, OS_MESG_NOBLOCK);
} }
/**
* original name: __BgCopySub
*/
void AudioLoad_ProcessAsyncLoad(AudioAsyncLoad* asyncLoad, s32 resetStatus) { void AudioLoad_ProcessAsyncLoad(AudioAsyncLoad* asyncLoad, s32 resetStatus) {
AudioTable* sampleBankTable = gAudioCtx.sampleBankTable; AudioTable* sampleBankTable = gAudioCtx.sampleBankTable;
@ -1651,6 +1835,9 @@ void AudioLoad_ProcessAsyncLoad(AudioAsyncLoad* asyncLoad, s32 resetStatus) {
asyncLoad->curRamAddr += asyncLoad->chunkSize; asyncLoad->curRamAddr += asyncLoad->chunkSize;
} }
/**
* original name: __Nas_BgCopy
*/
void AudioLoad_AsyncDma(AudioAsyncLoad* asyncLoad, u32 size) { void AudioLoad_AsyncDma(AudioAsyncLoad* asyncLoad, u32 size) {
size = ALIGN16(size); size = ALIGN16(size);
Audio_InvalDCache(asyncLoad->curRamAddr, size); Audio_InvalDCache(asyncLoad->curRamAddr, size);
@ -1659,6 +1846,9 @@ void AudioLoad_AsyncDma(AudioAsyncLoad* asyncLoad, u32 size) {
&asyncLoad->msgQueue, asyncLoad->medium, "BGCOPY"); &asyncLoad->msgQueue, asyncLoad->medium, "BGCOPY");
} }
/**
* original name: __Nas_BgDiskCopy
*/
void AudioLoad_AsyncDmaUnkMedium(u32 devAddr, void* ramAddr, u32 size, s16 arg3) { void AudioLoad_AsyncDmaUnkMedium(u32 devAddr, void* ramAddr, u32 size, s16 arg3) {
} }
@ -1668,6 +1858,8 @@ void AudioLoad_AsyncDmaUnkMedium(u32 devAddr, void* ramAddr, u32 size, s16 arg3)
* TunedSample contains metadata on a sample used by a particular instrument/drum/sfx * TunedSample contains metadata on a sample used by a particular instrument/drum/sfx
* Also relocate offsets into pointers within this loaded TunedSample * Also relocate offsets into pointers within this loaded TunedSample
* *
* original name: __WaveTouch
*
* @param fontId index of font being processed * @param fontId index of font being processed
* @param fontData ram address of raw soundfont binary loaded into cache * @param fontData ram address of raw soundfont binary loaded into cache
* @param sampleBankReloc information on the sampleBank containing raw audio samples * @param sampleBankReloc information on the sampleBank containing raw audio samples
@ -1724,6 +1916,8 @@ void AudioLoad_RelocateSample(TunedSample* tunedSample, SoundFontData* fontData,
} }
/** /**
* original name: Nas_BankOfsToAddr
*
* @param fontId index of font being processed * @param fontId index of font being processed
* @param fontData ram address of raw soundfont binary loaded into cache * @param fontData ram address of raw soundfont binary loaded into cache
* @param sampleBankReloc information on the sampleBank containing raw audio samples * @param sampleBankReloc information on the sampleBank containing raw audio samples
@ -1831,6 +2025,9 @@ void AudioLoad_RelocateFontAndPreloadSamples(s32 fontId, SoundFontData* fontData
} }
} }
/**
* original name: Nas_CheckBgWave
*/
s32 AudioLoad_ProcessSamplePreloads(s32 resetStatus) { s32 AudioLoad_ProcessSamplePreloads(s32 resetStatus) {
Sample* sample; Sample* sample;
AudioPreloadReq* preload; AudioPreloadReq* preload;
@ -1893,6 +2090,9 @@ s32 AudioLoad_ProcessSamplePreloads(s32 resetStatus) {
return true; return true;
} }
/**
* original name: __AddList
*/
s32 AudioLoad_AddToSampleSet(Sample* sample, s32 numSamples, Sample** sampleSet) { s32 AudioLoad_AddToSampleSet(Sample* sample, s32 numSamples, Sample** sampleSet) {
s32 i; s32 i;
@ -1910,6 +2110,9 @@ s32 AudioLoad_AddToSampleSet(Sample* sample, s32 numSamples, Sample** sampleSet)
return numSamples; return numSamples;
} }
/**
* original name: MakeWaveList
*/
s32 AudioLoad_GetSamplesForFont(s32 fontId, Sample** sampleSet) { s32 AudioLoad_GetSamplesForFont(s32 fontId, Sample** sampleSet) {
s32 i; s32 i;
s32 numSamples = 0; s32 numSamples = 0;
@ -1943,6 +2146,9 @@ s32 AudioLoad_GetSamplesForFont(s32 fontId, Sample** sampleSet) {
return numSamples; return numSamples;
} }
/**
* original name: __Reload
*/
void AudioLoad_AddUsedSample(TunedSample* tunedSample) { void AudioLoad_AddUsedSample(TunedSample* tunedSample) {
Sample* sample = tunedSample->sample; Sample* sample = tunedSample->sample;
@ -1951,6 +2157,9 @@ void AudioLoad_AddUsedSample(TunedSample* tunedSample) {
} }
} }
/**
* original name: WaveReload
*/
void AudioLoad_PreloadSamplesForFont(s32 fontId, s32 async, SampleBankRelocInfo* sampleBankReloc) { void AudioLoad_PreloadSamplesForFont(s32 fontId, s32 async, SampleBankRelocInfo* sampleBankReloc) {
s32 numDrums; s32 numDrums;
s32 numInstruments; s32 numInstruments;
@ -2086,6 +2295,9 @@ void AudioLoad_PreloadSamplesForFont(s32 fontId, s32 async, SampleBankRelocInfo*
} }
} }
/**
* original name: EmemReload
*/
void AudioLoad_LoadPermanentSamples(void) { void AudioLoad_LoadPermanentSamples(void) {
s32 pad; s32 pad;
u32 fontId; u32 fontId;
@ -2118,15 +2330,27 @@ void AudioLoad_LoadPermanentSamples(void) {
} }
} }
/**
* original name: __ExtDiskFinishCheck
*/
void AudioLoad_Unused3(void) { void AudioLoad_Unused3(void) {
} }
/**
* original name: __ExtDiskInit
*/
void AudioLoad_Unused4(void) { void AudioLoad_Unused4(void) {
} }
/**
* original name: __ExtDiskLoad
*/
void AudioLoad_Unused5(void) { void AudioLoad_Unused5(void) {
} }
/**
* original name: MK_load
*/
void AudioLoad_ScriptLoad(s32 tableType, s32 id, s8* status) { void AudioLoad_ScriptLoad(s32 tableType, s32 id, s8* status) {
static u32 sLoadIndex = 0; static u32 sLoadIndex = 0;
@ -2138,6 +2362,9 @@ void AudioLoad_ScriptLoad(s32 tableType, s32 id, s8* status) {
} }
} }
/**
* original name: MK_FrameWork
*/
void AudioLoad_ProcessScriptLoads(void) { void AudioLoad_ProcessScriptLoads(void) {
u32 temp; u32 temp;
u32 sp20; u32 sp20;
@ -2152,6 +2379,9 @@ void AudioLoad_ProcessScriptLoads(void) {
} }
} }
/**
* original name: MK_Init
*/
void AudioLoad_InitScriptLoads(void) { void AudioLoad_InitScriptLoads(void) {
osCreateMesgQueue(&sScriptLoadQueue, sScriptLoadMsgBuf, ARRAY_COUNT(sScriptLoadMsgBuf)); osCreateMesgQueue(&sScriptLoadQueue, sScriptLoadMsgBuf, ARRAY_COUNT(sScriptLoadMsgBuf));
} }

View file

@ -1,5 +1,6 @@
/** /**
* @file audio_seqplayer.c * @file audio_seqplayer.c
* original name: track.c
* *
* Manages audio sequence players, interprets and executes sequence instructions used to write .seq files * Manages audio sequence players, interprets and executes sequence instructions used to write .seq files
* *
@ -163,6 +164,8 @@ u8 sSeqInstructionArgsTable[] = {
* Read and return the argument from the sequence script for a control flow instruction. * Read and return the argument from the sequence script for a control flow instruction.
* Control flow instructions (>= ASEQ_OP_CONTROL_FLOW_FIRST) can only have 0 or 1 args. * Control flow instructions (>= ASEQ_OP_CONTROL_FLOW_FIRST) can only have 0 or 1 args.
* @return the argument value for a control flow instruction, or 0 if there is no argument * @return the argument value for a control flow instruction, or 0 if there is no argument
*
* original name: Convert_Com
*/ */
u16 AudioSeq_GetScriptControlFlowArgument(SeqScriptState* state, u8 cmd) { u16 AudioSeq_GetScriptControlFlowArgument(SeqScriptState* state, u8 cmd) {
u8 highBits = sSeqInstructionArgsTable[cmd - 0xB0]; u8 highBits = sSeqInstructionArgsTable[cmd - 0xB0];
@ -184,6 +187,8 @@ u16 AudioSeq_GetScriptControlFlowArgument(SeqScriptState* state, u8 cmd) {
/** /**
* Read and execute the control flow sequence instructions * Read and execute the control flow sequence instructions
* @return number of frames until next instruction. -1 signals termination * @return number of frames until next instruction. -1 signals termination
*
* original name: Common_Com
*/ */
s32 AudioSeq_HandleScriptFlowControl(SequencePlayer* seqPlayer, SeqScriptState* state, s32 cmd, s32 cmdArg) { s32 AudioSeq_HandleScriptFlowControl(SequencePlayer* seqPlayer, SeqScriptState* state, s32 cmd, s32 cmdArg) {
switch (cmd) { switch (cmd) {
@ -255,6 +260,9 @@ s32 AudioSeq_HandleScriptFlowControl(SequencePlayer* seqPlayer, SeqScriptState*
return 0; return 0;
} }
/**
* original name: Nas_InitSubTrack
*/
void AudioSeq_InitSequenceChannel(SequenceChannel* channel) { void AudioSeq_InitSequenceChannel(SequenceChannel* channel) {
s32 i; s32 i;
@ -310,6 +318,9 @@ void AudioSeq_InitSequenceChannel(SequenceChannel* channel) {
Audio_InitNoteLists(&channel->notePool); Audio_InitNoteLists(&channel->notePool);
} }
/**
* original name: Nas_EntryNoteTrack
*/
s32 AudioSeq_SeqChannelSetLayer(SequenceChannel* channel, s32 layerIndex) { s32 AudioSeq_SeqChannelSetLayer(SequenceChannel* channel, s32 layerIndex) {
SequenceLayer* layer; SequenceLayer* layer;
s32 pad; s32 pad;
@ -357,6 +368,9 @@ s32 AudioSeq_SeqChannelSetLayer(SequenceChannel* channel, s32 layerIndex) {
return 0; return 0;
} }
/**
* original name: Nas_ReleaseNoteTrack
*/
void AudioSeq_SeqLayerDisable(SequenceLayer* layer) { void AudioSeq_SeqLayerDisable(SequenceLayer* layer) {
if (layer != NULL) { if (layer != NULL) {
if (layer->channel != &gAudioCtx.sequenceChannelNone && layer->channel->seqPlayer->finished == 1) { if (layer->channel != &gAudioCtx.sequenceChannelNone && layer->channel->seqPlayer->finished == 1) {
@ -369,6 +383,9 @@ void AudioSeq_SeqLayerDisable(SequenceLayer* layer) {
} }
} }
/**
* original name: Nas_CloseNoteTrack
*/
void AudioSeq_SeqLayerFree(SequenceChannel* channel, s32 layerIndex) { void AudioSeq_SeqLayerFree(SequenceChannel* channel, s32 layerIndex) {
SequenceLayer* layer = channel->layers[layerIndex]; SequenceLayer* layer = channel->layers[layerIndex];
@ -379,6 +396,9 @@ void AudioSeq_SeqLayerFree(SequenceChannel* channel, s32 layerIndex) {
} }
} }
/**
* original name: Nas_ReleaseSubTrack
*/
void AudioSeq_SequenceChannelDisable(SequenceChannel* channel) { void AudioSeq_SequenceChannelDisable(SequenceChannel* channel) {
s32 i; s32 i;
@ -391,6 +411,9 @@ void AudioSeq_SequenceChannelDisable(SequenceChannel* channel) {
channel->finished = true; channel->finished = true;
} }
/**
* original name: Nas_AllocSub
*/
void AudioSeq_SequencePlayerSetupChannels(SequencePlayer* seqPlayer, u16 channelBits) { void AudioSeq_SequencePlayerSetupChannels(SequencePlayer* seqPlayer, u16 channelBits) {
SequenceChannel* channel; SequenceChannel* channel;
s32 i; s32 i;
@ -406,6 +429,9 @@ void AudioSeq_SequencePlayerSetupChannels(SequencePlayer* seqPlayer, u16 channel
} }
} }
/**
* original name: Nas_DeAllocSub
*/
void AudioSeq_SequencePlayerDisableChannels(SequencePlayer* seqPlayer, u16 channelBitsUnused) { void AudioSeq_SequencePlayerDisableChannels(SequencePlayer* seqPlayer, u16 channelBitsUnused) {
SequenceChannel* channel; SequenceChannel* channel;
s32 i; s32 i;
@ -418,6 +444,9 @@ void AudioSeq_SequencePlayerDisableChannels(SequencePlayer* seqPlayer, u16 chann
} }
} }
/**
* original name: Nas_OpenSub
*/
void AudioSeq_SequenceChannelEnable(SequencePlayer* seqPlayer, u8 channelIndex, void* script) { void AudioSeq_SequenceChannelEnable(SequencePlayer* seqPlayer, u8 channelIndex, void* script) {
SequenceChannel* channel = seqPlayer->channels[channelIndex]; SequenceChannel* channel = seqPlayer->channels[channelIndex];
s32 i; s32 i;
@ -435,11 +464,17 @@ void AudioSeq_SequenceChannelEnable(SequencePlayer* seqPlayer, u8 channelIndex,
} }
} }
/**
* original name: Nas_ReleaseGroup_Force
*/
void AudioSeq_SequencePlayerDisableAsFinished(SequencePlayer* seqPlayer) { void AudioSeq_SequencePlayerDisableAsFinished(SequencePlayer* seqPlayer) {
seqPlayer->finished = true; seqPlayer->finished = true;
AudioSeq_SequencePlayerDisable(seqPlayer); AudioSeq_SequencePlayerDisable(seqPlayer);
} }
/**
* original name: Nas_ReleaseGroup
*/
void AudioSeq_SequencePlayerDisable(SequencePlayer* seqPlayer) { void AudioSeq_SequencePlayerDisable(SequencePlayer* seqPlayer) {
s32 finished = 0; s32 finished = 0;
@ -478,6 +513,9 @@ void AudioSeq_SequencePlayerDisable(SequencePlayer* seqPlayer) {
} }
} }
/**
* original name: Nas_AddList
*/
void AudioSeq_AudioListPushBack(AudioListItem* list, AudioListItem* item) { void AudioSeq_AudioListPushBack(AudioListItem* list, AudioListItem* item) {
if (item->prev == NULL) { if (item->prev == NULL) {
list->prev->next = item; list->prev->next = item;
@ -489,6 +527,9 @@ void AudioSeq_AudioListPushBack(AudioListItem* list, AudioListItem* item) {
} }
} }
/**
* original name: Nas_GetList
*/
void* AudioSeq_AudioListPopBack(AudioListItem* list) { void* AudioSeq_AudioListPopBack(AudioListItem* list) {
AudioListItem* item = list->prev; AudioListItem* item = list->prev;
@ -504,6 +545,9 @@ void* AudioSeq_AudioListPopBack(AudioListItem* list) {
return item->u.value; return item->u.value;
} }
/**
* original name: Nas_InitNoteList
*/
void AudioSeq_InitLayerFreelist(void) { void AudioSeq_InitLayerFreelist(void) {
s32 i; s32 i;
@ -519,10 +563,16 @@ void AudioSeq_InitLayerFreelist(void) {
} }
} }
/**
* original name: Nas_ReadByteData
*/
u8 AudioSeq_ScriptReadU8(SeqScriptState* state) { u8 AudioSeq_ScriptReadU8(SeqScriptState* state) {
return *(state->pc++); return *(state->pc++);
} }
/**
* original name: Nas_ReadWordData
*/
s16 AudioSeq_ScriptReadS16(SeqScriptState* state) { s16 AudioSeq_ScriptReadS16(SeqScriptState* state) {
s16 ret = *(state->pc++) << 8; s16 ret = *(state->pc++) << 8;
@ -530,6 +580,9 @@ s16 AudioSeq_ScriptReadS16(SeqScriptState* state) {
return ret; return ret;
} }
/**
* original name: Nas_ReadLengthData
*/
u16 AudioSeq_ScriptReadCompressedU16(SeqScriptState* state) { u16 AudioSeq_ScriptReadCompressedU16(SeqScriptState* state) {
u16 ret = *(state->pc++); u16 ret = *(state->pc++);
@ -540,6 +593,9 @@ u16 AudioSeq_ScriptReadCompressedU16(SeqScriptState* state) {
return ret; return ret;
} }
/**
* original name: Nas_NoteSeq
*/
void AudioSeq_SeqLayerProcessScript(SequenceLayer* layer) { void AudioSeq_SeqLayerProcessScript(SequenceLayer* layer) {
s32 cmd; s32 cmd;
@ -581,6 +637,9 @@ void AudioSeq_SeqLayerProcessScript(SequenceLayer* layer) {
} }
} }
/**
* original name: __Stop_Note
*/
void AudioSeq_SeqLayerProcessScriptStep1(SequenceLayer* layer) { void AudioSeq_SeqLayerProcessScriptStep1(SequenceLayer* layer) {
if (!layer->continuousNotes) { if (!layer->continuousNotes) {
Audio_SeqLayerNoteDecay(layer); Audio_SeqLayerNoteDecay(layer);
@ -595,6 +654,9 @@ void AudioSeq_SeqLayerProcessScriptStep1(SequenceLayer* layer) {
layer->notePropertiesNeedInit = true; layer->notePropertiesNeedInit = true;
} }
/**
* original name: __SetChannel
*/
s32 AudioSeq_SeqLayerProcessScriptStep5(SequenceLayer* layer, s32 sameTunedSample) { s32 AudioSeq_SeqLayerProcessScriptStep5(SequenceLayer* layer, s32 sameTunedSample) {
Note* note; Note* note;
@ -633,6 +695,9 @@ s32 AudioSeq_SeqLayerProcessScriptStep5(SequenceLayer* layer, s32 sameTunedSampl
return 0; return 0;
} }
/**
* original name: __Command_Seq
*/
s32 AudioSeq_SeqLayerProcessScriptStep2(SequenceLayer* layer) { s32 AudioSeq_SeqLayerProcessScriptStep2(SequenceLayer* layer) {
SequenceChannel* channel = layer->channel; SequenceChannel* channel = layer->channel;
SeqScriptState* state = &layer->scriptState; SeqScriptState* state = &layer->scriptState;
@ -789,6 +854,9 @@ s32 AudioSeq_SeqLayerProcessScriptStep2(SequenceLayer* layer) {
} }
} }
/**
* original name: __SetVoice
*/
s32 AudioSeq_SeqLayerProcessScriptStep4(SequenceLayer* layer, s32 cmd) { s32 AudioSeq_SeqLayerProcessScriptStep4(SequenceLayer* layer, s32 cmd) {
s32 sameTunedSample = true; s32 sameTunedSample = true;
s32 instOrWave; s32 instOrWave;
@ -997,6 +1065,9 @@ s32 AudioSeq_SeqLayerProcessScriptStep4(SequenceLayer* layer, s32 cmd) {
return sameTunedSample; return sameTunedSample;
} }
/**
* original name: __SetNote
*/
s32 AudioSeq_SeqLayerProcessScriptStep3(SequenceLayer* layer, s32 cmd) { s32 AudioSeq_SeqLayerProcessScriptStep3(SequenceLayer* layer, s32 cmd) {
SeqScriptState* state = &layer->scriptState; SeqScriptState* state = &layer->scriptState;
u16 delay; u16 delay;
@ -1110,6 +1181,9 @@ s32 AudioSeq_SeqLayerProcessScriptStep3(SequenceLayer* layer, s32 cmd) {
return cmd; return cmd;
} }
/**
* original name: Nas_PriorityChanger
*/
void AudioSeq_SetChannelPriorities(SequenceChannel* channel, u8 priority) { void AudioSeq_SetChannelPriorities(SequenceChannel* channel, u8 priority) {
if ((priority & 0xF) != 0) { if ((priority & 0xF) != 0) {
channel->notePriority = priority & 0xF; channel->notePriority = priority & 0xF;
@ -1121,6 +1195,9 @@ void AudioSeq_SetChannelPriorities(SequenceChannel* channel, u8 priority) {
} }
} }
/**
* original name: Nas_ProgramChanger
*/
u8 AudioSeq_GetInstrument(SequenceChannel* channel, u8 instId, Instrument** instOut, AdsrSettings* adsr) { u8 AudioSeq_GetInstrument(SequenceChannel* channel, u8 instId, Instrument** instOut, AdsrSettings* adsr) {
Instrument* inst = Audio_GetInstrumentInner(channel->fontId, instId); Instrument* inst = Audio_GetInstrumentInner(channel->fontId, instId);
@ -1140,6 +1217,9 @@ u8 AudioSeq_GetInstrument(SequenceChannel* channel, u8 instId, Instrument** inst
return instId; return instId;
} }
/**
* original name: Nas_SubVoiceSet
*/
void AudioSeq_SetInstrument(SequenceChannel* channel, u8 instId) { void AudioSeq_SetInstrument(SequenceChannel* channel, u8 instId) {
if (instId >= 0x80) { if (instId >= 0x80) {
// Synthetic Waves // Synthetic Waves
@ -1165,10 +1245,16 @@ void AudioSeq_SetInstrument(SequenceChannel* channel, u8 instId) {
channel->hasInstrument = true; channel->hasInstrument = true;
} }
/**
* original name: Nas_SubVolumeSet
*/
void AudioSeq_SequenceChannelSetVolume(SequenceChannel* channel, u8 volume) { void AudioSeq_SequenceChannelSetVolume(SequenceChannel* channel, u8 volume) {
channel->volume = (s32)volume / 127.0f; channel->volume = (s32)volume / 127.0f;
} }
/**
* original name: Nas_SubSeq
*/
void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) { void AudioSeq_SequenceChannelProcessScript(SequenceChannel* channel) {
s32 i; s32 i;
u8* data; u8* data;
@ -1728,6 +1814,9 @@ exit_loop:
} }
} }
/**
* original name: Nas_GroupSeq
*/
void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) { void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) {
u8 cmd; u8 cmd;
u8 cmdLowBits; u8 cmdLowBits;
@ -2055,6 +2144,9 @@ void AudioSeq_SequencePlayerProcessSequence(SequencePlayer* seqPlayer) {
} }
} }
/**
* original name: Nas_MySeqMain
*/
void AudioSeq_ProcessSequences(s32 arg0) { void AudioSeq_ProcessSequences(s32 arg0) {
SequencePlayer* seqPlayer; SequencePlayer* seqPlayer;
u32 i; u32 i;
@ -2072,6 +2164,9 @@ void AudioSeq_ProcessSequences(s32 arg0) {
Audio_ProcessNotes(); Audio_ProcessNotes();
} }
/**
* original name: Nas_SeqSkip
*/
void AudioSeq_SkipForwardSequence(SequencePlayer* seqPlayer) { void AudioSeq_SkipForwardSequence(SequencePlayer* seqPlayer) {
while (seqPlayer->skipTicks > 0) { while (seqPlayer->skipTicks > 0) {
AudioSeq_SequencePlayerProcessSequence(seqPlayer); AudioSeq_SequencePlayerProcessSequence(seqPlayer);
@ -2080,6 +2175,9 @@ void AudioSeq_SkipForwardSequence(SequencePlayer* seqPlayer) {
} }
} }
/**
* original name: Nas_InitMySeq
*/
void AudioSeq_ResetSequencePlayer(SequencePlayer* seqPlayer) { void AudioSeq_ResetSequencePlayer(SequencePlayer* seqPlayer) {
s32 i; s32 i;
@ -2107,6 +2205,9 @@ void AudioSeq_ResetSequencePlayer(SequencePlayer* seqPlayer) {
} }
} }
/**
* original name: Nas_AssignSubTrack
*/
void AudioSeq_InitSequencePlayerChannels(s32 playerIdx) { void AudioSeq_InitSequencePlayerChannels(s32 playerIdx) {
SequenceChannel* channel; SequenceChannel* channel;
SequencePlayer* seqPlayer = &gAudioCtx.seqPlayers[playerIdx]; SequencePlayer* seqPlayer = &gAudioCtx.seqPlayers[playerIdx];
@ -2129,6 +2230,9 @@ void AudioSeq_InitSequencePlayerChannels(s32 playerIdx) {
} }
} }
/**
* original name: __InitGroup
*/
void AudioSeq_InitSequencePlayer(SequencePlayer* seqPlayer) { void AudioSeq_InitSequencePlayer(SequencePlayer* seqPlayer) {
s32 i; s32 i;
s32 j; s32 j;
@ -2154,6 +2258,9 @@ void AudioSeq_InitSequencePlayer(SequencePlayer* seqPlayer) {
AudioSeq_ResetSequencePlayer(seqPlayer); AudioSeq_ResetSequencePlayer(seqPlayer);
} }
/**
* original name: Nas_InitPlayer
*/
void AudioSeq_InitSequencePlayers(void) { void AudioSeq_InitSequencePlayers(void) {
s32 i; s32 i;

View file

@ -1,3 +1,7 @@
/**
* Original Filename: sub_sys.c
*/
#include "array_count.h" #include "array_count.h"
#include "audiothread_cmd.h" #include "audiothread_cmd.h"
#include "ultra64.h" #include "ultra64.h"
@ -27,6 +31,8 @@ static AudioTask* sWaitingAudioTask = NULL;
/** /**
* This is Audio_Update for the audio thread * This is Audio_Update for the audio thread
*
* original name: CreateAudioTask (note: function is heavily modified in Animal Crossing)
*/ */
AudioTask* AudioThread_UpdateImpl(void) { AudioTask* AudioThread_UpdateImpl(void) {
#if OOT_VERSION < PAL_1_0 || !PLATFORM_N64 #if OOT_VERSION < PAL_1_0 || !PLATFORM_N64
@ -200,6 +206,9 @@ AudioTask* AudioThread_UpdateImpl(void) {
} }
} }
/**
* original name: Nap_AudioSysProcess
*/
void AudioThread_ProcessGlobalCmd(AudioCmd* cmd) { void AudioThread_ProcessGlobalCmd(AudioCmd* cmd) {
s32 i; s32 i;
s32 pad[3]; s32 pad[3];
@ -325,6 +334,9 @@ void AudioThread_ProcessGlobalCmd(AudioCmd* cmd) {
} }
} }
/**
* original name: __Nas_GroupFadeOut
*/
void AudioThread_SetFadeOutTimer(s32 seqPlayerIndex, s32 fadeTimer) { void AudioThread_SetFadeOutTimer(s32 seqPlayerIndex, s32 fadeTimer) {
SequencePlayer* seqPlayer = &gAudioCtx.seqPlayers[seqPlayerIndex]; SequencePlayer* seqPlayer = &gAudioCtx.seqPlayers[seqPlayerIndex];
@ -337,6 +349,9 @@ void AudioThread_SetFadeOutTimer(s32 seqPlayerIndex, s32 fadeTimer) {
seqPlayer->fadeTimer = fadeTimer; seqPlayer->fadeTimer = fadeTimer;
} }
/**
* original name: __Nas_GroupFadeIn
*/
void AudioThread_SetFadeInTimer(s32 seqPlayerIndex, s32 fadeTimer) { void AudioThread_SetFadeInTimer(s32 seqPlayerIndex, s32 fadeTimer) {
SequencePlayer* seqPlayer; SequencePlayer* seqPlayer;
@ -350,6 +365,9 @@ void AudioThread_SetFadeInTimer(s32 seqPlayerIndex, s32 fadeTimer) {
} }
} }
/**
* original name: Nap_AudioPortInit
*/
void AudioThread_InitMesgQueuesImpl(void) { void AudioThread_InitMesgQueuesImpl(void) {
gAudioCtx.threadCmdWritePos = 0; gAudioCtx.threadCmdWritePos = 0;
gAudioCtx.threadCmdReadPos = 0; gAudioCtx.threadCmdReadPos = 0;
@ -365,6 +383,9 @@ void AudioThread_InitMesgQueuesImpl(void) {
osCreateMesgQueue(gAudioCtx.audioResetQueueP, gAudioCtx.audioResetMsgBuf, ARRAY_COUNT(gAudioCtx.audioResetMsgBuf)); osCreateMesgQueue(gAudioCtx.audioResetQueueP, gAudioCtx.audioResetMsgBuf, ARRAY_COUNT(gAudioCtx.audioResetMsgBuf));
} }
/**
* original name: Nap_PortSet
*/
void AudioThread_QueueCmd(u32 opArgs, void** data) { void AudioThread_QueueCmd(u32 opArgs, void** data) {
AudioCmd* cmd = &gAudioCtx.threadCmdBuf[gAudioCtx.threadCmdWritePos & 0xFF]; AudioCmd* cmd = &gAudioCtx.threadCmdBuf[gAudioCtx.threadCmdWritePos & 0xFF];
@ -378,26 +399,41 @@ void AudioThread_QueueCmd(u32 opArgs, void** data) {
} }
} }
/**
* original name: Nap_SetF32
*/
void AudioThread_QueueCmdF32(u32 opArgs, f32 data) { void AudioThread_QueueCmdF32(u32 opArgs, f32 data) {
AudioThread_QueueCmd(opArgs, (void**)&data); AudioThread_QueueCmd(opArgs, (void**)&data);
} }
/**
* original name: Nap_SetS32
*/
void AudioThread_QueueCmdS32(u32 opArgs, s32 data) { void AudioThread_QueueCmdS32(u32 opArgs, s32 data) {
AudioThread_QueueCmd(opArgs, (void**)&data); AudioThread_QueueCmd(opArgs, (void**)&data);
} }
/**
* original name: Nap_SetS8
*/
void AudioThread_QueueCmdS8(u32 opArgs, s8 data) { void AudioThread_QueueCmdS8(u32 opArgs, s8 data) {
u32 uData = data << 0x18; u32 uData = data << 0x18;
AudioThread_QueueCmd(opArgs, (void**)&uData); AudioThread_QueueCmd(opArgs, (void**)&uData);
} }
/**
* original name: Nap_SetU16
*/
void AudioThread_QueueCmdU16(u32 opArgs, u16 data) { void AudioThread_QueueCmdU16(u32 opArgs, u16 data) {
u32 uData = data << 0x10; u32 uData = data << 0x10;
AudioThread_QueueCmd(opArgs, (void**)&uData); AudioThread_QueueCmd(opArgs, (void**)&uData);
} }
/**
* original name: Nap_SendStart
*/
s32 AudioThread_ScheduleProcessCmds(void) { s32 AudioThread_ScheduleProcessCmds(void) {
static s32 D_801304E8 = 0; static s32 D_801304E8 = 0;
s32 ret; s32 ret;
@ -419,11 +455,17 @@ s32 AudioThread_ScheduleProcessCmds(void) {
return ret; return ret;
} }
/**
* original name: Nap_FlushPort
*/
void AudioThread_ResetCmdQueue(void) { void AudioThread_ResetCmdQueue(void) {
gAudioCtx.threadCmdQueueFinished = false; gAudioCtx.threadCmdQueueFinished = false;
gAudioCtx.threadCmdReadPos = gAudioCtx.threadCmdWritePos; gAudioCtx.threadCmdReadPos = gAudioCtx.threadCmdWritePos;
} }
/**
* original name: Nap_Process1Command
*/
void AudioThread_ProcessCmd(AudioCmd* cmd) { void AudioThread_ProcessCmd(AudioCmd* cmd) {
SequencePlayer* seqPlayer; SequencePlayer* seqPlayer;
u16 threadCmdChannelMask; u16 threadCmdChannelMask;
@ -461,6 +503,9 @@ void AudioThread_ProcessCmd(AudioCmd* cmd) {
} }
} }
/**
* original name: Nap_AudioPortProcess
*/
void AudioThread_ProcessCmds(u32 msg) { void AudioThread_ProcessCmds(u32 msg) {
static u8 sCurCmdRdPos = 0; static u8 sCurCmdRdPos = 0;
AudioCmd* cmd; AudioCmd* cmd;
@ -508,6 +553,9 @@ void Audio_GetSampleBankIdsOfFont(s32 fontId, u32* sampleBankId1, u32* sampleBan
*sampleBankId2 = gAudioCtx.soundFontList[fontId].sampleBankId2; *sampleBankId2 = gAudioCtx.soundFontList[fontId].sampleBankId2;
} }
/**
* original name: Nap_CheckSpecChange
*/
s32 func_800E5EDC(void) { s32 func_800E5EDC(void) {
s32 pad; s32 pad;
s32 specId; s32 specId;
@ -521,6 +569,9 @@ s32 func_800E5EDC(void) {
} }
} }
/**
* original name: __ClearSpecChangeQ
*/
void func_800E5F34(void) { void func_800E5F34(void) {
// macro? // macro?
// clang-format off // clang-format off
@ -528,6 +579,9 @@ void func_800E5F34(void) {
// clang-format on // clang-format on
} }
/**
* original name: Nap_StartSpecChange
*/
s32 AudioThread_ResetAudioHeap(s32 specId) { s32 AudioThread_ResetAudioHeap(s32 specId) {
s32 resetStatus; s32 resetStatus;
OSMesg msg; OSMesg msg;
@ -553,6 +607,9 @@ s32 AudioThread_ResetAudioHeap(s32 specId) {
return AudioThread_ScheduleProcessCmds(); return AudioThread_ScheduleProcessCmds();
} }
/**
* original name: Nap_StartReset
*/
void AudioThread_PreNMIInternal(void) { void AudioThread_PreNMIInternal(void) {
gAudioCtx.resetTimer = 1; gAudioCtx.resetTimer = 1;
if (gAudioContextInitialized) { if (gAudioContextInitialized) {
@ -561,6 +618,9 @@ void AudioThread_PreNMIInternal(void) {
} }
} }
/**
* original name: Nap_ReadSubPort
*/
s8 AudioThread_GetChannelIO(s32 seqPlayerIndex, s32 channelIndex, s32 ioPort) { s8 AudioThread_GetChannelIO(s32 seqPlayerIndex, s32 channelIndex, s32 ioPort) {
SequencePlayer* seqPlayer = &gAudioCtx.seqPlayers[seqPlayerIndex]; SequencePlayer* seqPlayer = &gAudioCtx.seqPlayers[seqPlayerIndex];
SequenceChannel* channel; SequenceChannel* channel;
@ -573,6 +633,9 @@ s8 AudioThread_GetChannelIO(s32 seqPlayerIndex, s32 channelIndex, s32 ioPort) {
} }
} }
/**
* original name: Nap_ReadGrpPort
*/
s8 AudioThread_GetSeqPlayerIO(s32 seqPlayerIndex, s32 ioPort) { s8 AudioThread_GetSeqPlayerIO(s32 seqPlayerIndex, s32 ioPort) {
return gAudioCtx.seqPlayers[seqPlayerIndex].seqScriptIO[ioPort]; return gAudioCtx.seqPlayers[seqPlayerIndex].seqScriptIO[ioPort];
} }
@ -585,6 +648,9 @@ void AudioThread_ResetExternalPool(void) {
gAudioCtx.externalPool.startRamAddr = NULL; gAudioCtx.externalPool.startRamAddr = NULL;
} }
/**
* original name: __SetGrpParam
*/
void AudioThread_ProcessSeqPlayerCmd(SequencePlayer* seqPlayer, AudioCmd* cmd) { void AudioThread_ProcessSeqPlayerCmd(SequencePlayer* seqPlayer, AudioCmd* cmd) {
f32 fadeVolume; f32 fadeVolume;
@ -665,6 +731,9 @@ void AudioThread_ProcessSeqPlayerCmd(SequencePlayer* seqPlayer, AudioCmd* cmd) {
} }
} }
/**
* original name: __SetSubParam
*/
void AudioThread_ProcessChannelCmd(SequenceChannel* channel, AudioCmd* cmd) { void AudioThread_ProcessChannelCmd(SequenceChannel* channel, AudioCmd* cmd) {
switch (cmd->op) { switch (cmd->op) {
case AUDIOCMD_OP_CHANNEL_SET_VOL_SCALE: case AUDIOCMD_OP_CHANNEL_SET_VOL_SCALE:
@ -771,6 +840,9 @@ void AudioThread_Noop2Cmd(u32 arg0, s32 arg1) {
AUDIOCMD_GLOBAL_NOOP_2(0, 0, arg1, arg0); AUDIOCMD_GLOBAL_NOOP_2(0, 0, arg1, arg0);
} }
/**
* original name: Nap_WaitVsync
*/
void AudioThread_WaitForAudioTask(void) { void AudioThread_WaitForAudioTask(void) {
osRecvMesg(gAudioCtx.taskStartQueueP, NULL, OS_MESG_NOBLOCK); osRecvMesg(gAudioCtx.taskStartQueueP, NULL, OS_MESG_NOBLOCK);
osRecvMesg(gAudioCtx.taskStartQueueP, NULL, OS_MESG_BLOCK); osRecvMesg(gAudioCtx.taskStartQueueP, NULL, OS_MESG_BLOCK);
@ -824,6 +896,9 @@ void func_800E66A0(void) {
func_800E66C0(2); func_800E66C0(2);
} }
/**
* original name: Nap_SilenceCheck_Inner
*/
s32 func_800E66C0(s32 flags) { s32 func_800E66C0(s32 flags) {
s32 phi_v1; s32 phi_v1;
NotePlaybackState* playbackState; NotePlaybackState* playbackState;
@ -860,6 +935,9 @@ s32 func_800E66C0(s32 flags) {
return phi_v1; return phi_v1;
} }
/**
* original name: Nap_GetRandom
*/
u32 AudioThread_NextRandom(void) { u32 AudioThread_NextRandom(void) {
static u32 sAudioRandom = 0x12345678; static u32 sAudioRandom = 0x12345678;
@ -869,6 +947,9 @@ u32 AudioThread_NextRandom(void) {
return sAudioRandom; return sAudioRandom;
} }
/**
* original name: Nas_InitGAudio
*/
void AudioThread_InitMesgQueues(void) { void AudioThread_InitMesgQueues(void) {
AudioThread_InitMesgQueuesImpl(); AudioThread_InitMesgQueuesImpl();
} }