mirror of
https://github.com/zeldaret/oot
synced 2026-08-10 03:05:51 -04:00
Document parts of audio (#1000)
* Minor labelling * progress * play percentage -> delay * duration -> gatetime * more * more * more * seqIdx -> playerIdx * more * more * more * more * format * fix comment * filters * more * media * confusion * Sync load is actually slow load * AudioHeap prefix * more * more * reformat * more * more * AudioLoad * more * more * seq banks * more consistent * more * name last function in audio_load * More audio_synthesis * clean up audio tables * minor * slow/fast load ramAddr * format * remove unused * Remove union * remove padding * audio bank -> sound font * seqLayer -> layer * stuff * seqChannel -> channel * ChannelLayer -> Layer * remove define, add bug comment * format * more * cache enum * more * AudioSeq function prefix * naming * bankIdx -> bankId * more * format * review * more * fixes * avoid hardcoded sfxid's * SE -> Sfx Co-authored-by: zelda2774 <zelda2774@invalid>
This commit is contained in:
+102
-125
@@ -17,9 +17,8 @@ void Idle_ThreadEntry(void* arg);
|
||||
void ViConfig_UpdateVi(u32 mode);
|
||||
void ViConfig_UpdateBlack(void);
|
||||
s32 DmaMgr_CompareName(const char* name1, const char* name2);
|
||||
s32 DmaMgr_DMARomToRam(u32 rom, u32 ram, u32 size);
|
||||
s32 DmaMgr_DmaCallback0(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction);
|
||||
void DmaMgr_DmaCallback1(u32 ram, u32 rom, u32 size);
|
||||
s32 DmaMgr_DmaRomToRam(u32 rom, u32 ram, u32 size);
|
||||
s32 DmaMgr_DmaHandler(OSPiHandle* pihandle, OSIoMesg* mb, s32 direction);
|
||||
void DmaMgr_Error(DmaRequest* req, const char* file, const char* errorName, const char* errorDesc);
|
||||
const char* DmaMgr_GetFileNameImpl(u32 vrom);
|
||||
const char* DmaMgr_GetFileName(u32 vrom);
|
||||
@@ -1891,76 +1890,57 @@ void UCodeDisas_Destroy(UCodeDisas*);
|
||||
void UCodeDisas_RegisterUCode(UCodeDisas*, s32, UCodeInfo*);
|
||||
void UCodeDisas_SetCurUCode(UCodeDisas*, void*);
|
||||
Acmd* AudioSynth_Update(Acmd* cmdStart, s32* cmdCnt, s16* aiStart, s32 aiBufLen);
|
||||
void Audio_DiscardBank(s32 bankId);
|
||||
void Audio_DiscardSequence(s32 seqId);
|
||||
void func_800DE238(void* mem, u32 size);
|
||||
void* func_800DE258(SoundAllocPool* pool, u32 size);
|
||||
void* func_800DE2B0(SoundAllocPool* pool, u32 size);
|
||||
void* Audio_AllocDmaMemory(SoundAllocPool* pool, u32 size);
|
||||
void* Audio_AllocDmaMemoryZeroed(SoundAllocPool* pool, u32 size);
|
||||
void* Audio_AllocZeroed(SoundAllocPool* pool, u32 size);
|
||||
void* Audio_Alloc(SoundAllocPool* pool, u32 size);
|
||||
void Audio_SoundAllocPoolInit(SoundAllocPool* pool, void* memAddr, u32 size);
|
||||
void Audio_PersistentPoolClear(PersistentPool* persistent);
|
||||
void Audio_TemporaryPoolClear(TemporaryPool* temporary);
|
||||
void func_800DE4B0(s32 poolIdx);
|
||||
void Audio_InitMainPools(s32 sizeForAudioInitPool);
|
||||
void Audio_SessionPoolsInit(AudioPoolSplit4* split);
|
||||
void Audio_SeqAndBankPoolInit(AudioPoolSplit2* split);
|
||||
void Audio_PersistentPoolsInit(AudioPoolSplit3* split);
|
||||
void Audio_TemporaryPoolsInit(AudioPoolSplit3* split);
|
||||
void* Audio_AllocBankOrSeq(s32 poolIdx, s32 size, s32 arg2, s32 id);
|
||||
void* func_800DF074(s32 poolIdx, s32 arg1, s32 id);
|
||||
void* func_800DF0CC(s32 poolIdx, s32 arg1, s32 id);
|
||||
void func_800DF5DC(s16* arg0, s32 arg1);
|
||||
void func_800DF630(s16* arg0, s32 arg1);
|
||||
void func_800DF688(s16* arg0, s32 arg1, s32 arg2);
|
||||
void func_800DF7C4(void);
|
||||
void func_800DF888(void);
|
||||
s32 Audio_ResetStep(void);
|
||||
void Audio_InitHeap(void);
|
||||
void* func_800E04E8(s32 poolIdx, s32 id);
|
||||
void* func_800E0540(s32 poolIdx, s32 id, u32 size);
|
||||
void* func_800E05C4(u32 size, s32 arg1, void* arg2, s8 arg3, s32 arg4);
|
||||
void func_800E0634(u32 arg0, u32 arg1);
|
||||
UnkHeapEntry* func_800E06CC(u32 size);
|
||||
void func_800E0964(UnkHeapEntry* entry, s32 bankId);
|
||||
void func_800E0AD8(UnkHeapEntry* entry);
|
||||
void func_800E0BB4(UnkHeapEntry* entry, AudioBankSample* sample);
|
||||
UnkHeapEntry* func_800E0BF8(u32 size);
|
||||
// ? func_800E0C80(?);
|
||||
void func_800E0CBC(void);
|
||||
void func_800E0E6C(s32 id);
|
||||
void func_800E0E90(s32 id);
|
||||
void func_800E0EB4(s32 arg0, s32 id);
|
||||
void func_800E1148(void);
|
||||
void func_800E11F0(void);
|
||||
void* Audio_DmaSampleData(u32 devAddr, u32 size, s32 arg2, u8* dmaIndexRef, s32 medium);
|
||||
void func_800E1618(s32 arg0);
|
||||
s32 Audio_IsBankLoadComplete(s32 bankId);
|
||||
s32 Audio_IsSeqLoadComplete(s32 seqId);
|
||||
void Audio_SetBankLoadStatus(s32 bankId, s32 status);
|
||||
void Audio_SetSeqLoadStatus(s32 seqId, s32 status);
|
||||
void func_800E1C18(s32 channelIdx, s32 arg1);
|
||||
s32 func_800E1D64(s32 arg0, s32 arg1, s32 arg2);
|
||||
void Audio_AudioSeqAsyncLoad(s32 arg0, s32 arg1, s32 arg2, OSMesgQueue* arg3);
|
||||
void Audio_AudioTableAsyncLoad(s32 arg0, s32 arg1, s32 arg2, OSMesgQueue* arg3);
|
||||
void Audio_AudioBankAsyncLoad(s32 arg0, s32 arg1, s32 arg2, OSMesgQueue* arg3);
|
||||
u8* func_800E1F38(s32 arg0, u32* arg1);
|
||||
void func_800E1F7C(s32 arg0);
|
||||
s32 func_800E20D4(s32 playerIndex, s32 seqId, s32 arg2);
|
||||
s32 func_800E2124(s32 playerIndex, s32 seqId, s32 arg2);
|
||||
void Audio_ProcessLoads(s32 resetStatus);
|
||||
void func_800E301C(void* callback);
|
||||
void Audio_ContextInit(void* heap, u32 heapSize);
|
||||
void Audio_SyncLoadsInit(void);
|
||||
s32 Audio_SyncLoadSample(s32 arg0, s32 arg1, s8* arg2);
|
||||
s32 Audio_SyncLoadSeq(s32 seqIdx, u8* ramAddr, s8* arg2);
|
||||
void Audio_AsyncLoadReqInit(void);
|
||||
void func_800E4D94(void);
|
||||
void func_800E4EEC(s32 tableType, s32 arg1, s8* arg2);
|
||||
void func_800E4F58(void);
|
||||
void func_800E4FB0(void);
|
||||
void AudioHeap_DiscardFont(s32 fontId);
|
||||
void AudioHeap_DiscardSequence(s32 seqId);
|
||||
void AudioHeap_WritebackDCache(void* mem, u32 size);
|
||||
void* AudioHeap_AllocZeroedAttemptExternal(AudioAllocPool* pool, u32 size);
|
||||
void* AudioHeap_AllocAttemptExternal(AudioAllocPool* pool, u32 size);
|
||||
void* AudioHeap_AllocDmaMemory(AudioAllocPool* pool, u32 size);
|
||||
void* AudioHeap_AllocDmaMemoryZeroed(AudioAllocPool* pool, u32 size);
|
||||
void* AudioHeap_AllocZeroed(AudioAllocPool* pool, u32 size);
|
||||
void* AudioHeap_Alloc(AudioAllocPool* pool, u32 size);
|
||||
void AudioHeap_AllocPoolInit(AudioAllocPool* pool, void* mem, u32 size);
|
||||
void AudioHeap_PersistentCacheClear(AudioPersistentCache* persistent);
|
||||
void AudioHeap_TemporaryCacheClear(AudioTemporaryCache* temporary);
|
||||
void AudioHeap_PopCache(s32 tableType);
|
||||
void AudioHeap_InitMainPools(s32 sizeForAudioInitPool);
|
||||
void* AudioHeap_AllocCached(s32 tableType, s32 size, s32 cache, s32 id);
|
||||
void* AudioHeap_SearchCaches(s32 tableType, s32 arg1, s32 id);
|
||||
void* AudioHeap_SearchRegularCaches(s32 tableType, s32 cache, s32 id);
|
||||
void AudioHeap_LoadFilter(s16* filter, s32 filter1, s32 filter2);
|
||||
s32 AudioHeap_ResetStep(void);
|
||||
void AudioHeap_Init(void);
|
||||
void* AudioHeap_SearchPermanentCache(s32 tableType, s32 id);
|
||||
void* AudioHeap_AllocPermanent(s32 tableType, s32 id, u32 size);
|
||||
void* AudioHeap_AllocSampleCache(u32 size, s32 fontId, void* sampleAddr, s8 medium, s32 cache);
|
||||
void AudioHeap_ApplySampleBankCache(s32 sampleBankId);
|
||||
void AudioLoad_DecreaseSampleDmaTtls(void);
|
||||
void* AudioLoad_DmaSampleData(u32 devAddr, u32 size, s32 arg2, u8* dmaIndexRef, s32 medium);
|
||||
void AudioLoad_InitSampleDmaBuffers(s32 arg0);
|
||||
s32 AudioLoad_IsFontLoadComplete(s32 fontId);
|
||||
s32 AudioLoad_IsSeqLoadComplete(s32 seqId);
|
||||
void AudioLoad_SetFontLoadStatus(s32 fontId, s32 status);
|
||||
void AudioLoad_SetSeqLoadStatus(s32 seqId, s32 status);
|
||||
void AudioLoad_SyncLoadSeqParts(s32 seqId, s32 arg1);
|
||||
s32 AudioLoad_SyncLoadInstrument(s32 fontId, s32 instId, s32 drumId);
|
||||
void AudioLoad_AsyncLoadSeq(s32 seqId, s32 arg1, s32 retData, OSMesgQueue* retQueue);
|
||||
void AudioLoad_AsyncLoadSampleBank(s32 sampleBankId, s32 arg1, s32 retData, OSMesgQueue* retQueue);
|
||||
void AudioLoad_AsyncLoadFont(s32 fontId, s32 arg1, s32 retData, OSMesgQueue* retQueue);
|
||||
u8* AudioLoad_GetFontsForSequence(s32 seqId, u32* arg1);
|
||||
void AudioLoad_DiscardSeqFonts(s32 seqId);
|
||||
s32 AudioLoad_SyncInitSeqPlayer(s32 playerIdx, s32 seqId, s32 arg2);
|
||||
s32 AudioLoad_SyncInitSeqPlayerSkipTicks(s32 playerIdx, s32 seqId, s32 arg2);
|
||||
void AudioLoad_ProcessLoads(s32 resetStatus);
|
||||
void AudioLoad_SetDmaHandler(DmaHandler callback);
|
||||
void AudioLoad_Init(void* heap, u32 heapSize);
|
||||
void AudioLoad_InitSlowLoads(void);
|
||||
s32 AudioLoad_SlowLoadSample(s32 arg0, s32 arg1, s8* arg2);
|
||||
s32 AudioLoad_SlowLoadSeq(s32 playerIdx, u8* ramAddr, s8* arg2);
|
||||
void AudioLoad_InitAsyncLoads(void);
|
||||
void AudioLoad_LoadPermanentSamples(void);
|
||||
void AudioLoad_ScriptLoad(s32 tableType, s32 arg1, s8* arg2);
|
||||
void AudioLoad_ProcessScriptLoads(void);
|
||||
void AudioLoad_InitScriptLoads(void);
|
||||
AudioTask* func_800E4FE0(void);
|
||||
void Audio_QueueCmdF32(u32 arg0, f32 arg1);
|
||||
void Audio_QueueCmdS32(u32 arg0, s32 arg1);
|
||||
@@ -1983,16 +1963,16 @@ void Audio_NoteSetResamplingRate(NoteSubEu* noteSubEu, f32 resamplingRateInput);
|
||||
void Audio_NoteInit(Note* note);
|
||||
void Audio_NoteDisable(Note* note);
|
||||
void Audio_ProcessNotes(void);
|
||||
AudioBankSound* Audio_InstrumentGetAudioBankSound(Instrument* instrument, s32 semitone);
|
||||
Instrument* Audio_GetInstrumentInner(s32 bankId, s32 instId);
|
||||
Drum* Audio_GetDrum(s32 bankId, s32 drumId);
|
||||
AudioBankSound* Audio_GetSfx(s32 bankId, s32 sfxId);
|
||||
s32 func_800E7744(s32 instrument, s32 bankId, s32 instId, void* arg3);
|
||||
void Audio_SeqChanLayerDecayRelease(SequenceChannelLayer* seqLayer, s32 target);
|
||||
void Audio_SeqChanLayerNoteDecay(SequenceChannelLayer* seqLayer);
|
||||
void Audio_SeqChanLayerNoteRelease(SequenceChannelLayer* seqLayer);
|
||||
s32 Audio_BuildSyntheticWave(Note* note, SequenceChannelLayer* seqLayer, s32 waveId);
|
||||
void Audio_InitSyntheticWave(Note* note, SequenceChannelLayer* seqLayer);
|
||||
SoundFontSound* Audio_InstrumentGetSound(Instrument* instrument, s32 semitone);
|
||||
Instrument* Audio_GetInstrumentInner(s32 fontId, s32 instId);
|
||||
Drum* Audio_GetDrum(s32 fontId, s32 drumId);
|
||||
SoundFontSound* Audio_GetSfx(s32 fontId, s32 sfxId);
|
||||
s32 Audio_SetFontInstrument(s32 instrumentType, s32 fontId, s32 index, void* value);
|
||||
void Audio_SeqLayerDecayRelease(SequenceLayer* layer, s32 target);
|
||||
void Audio_SeqLayerNoteDecay(SequenceLayer* layer);
|
||||
void Audio_SeqLayerNoteRelease(SequenceLayer* layer);
|
||||
s32 Audio_BuildSyntheticWave(Note* note, SequenceLayer* layer, s32 waveId);
|
||||
void Audio_InitSyntheticWave(Note* note, SequenceLayer* layer);
|
||||
void Audio_InitNoteList(AudioListItem* list);
|
||||
void Audio_InitNoteLists(NotePool* pool);
|
||||
void Audio_InitNoteFreeList(void);
|
||||
@@ -2000,16 +1980,16 @@ void Audio_NotePoolClear(NotePool* pool);
|
||||
void Audio_NotePoolFill(NotePool* pool, s32 count);
|
||||
void Audio_AudioListPushFront(AudioListItem* list, AudioListItem* item);
|
||||
void Audio_AudioListRemove(AudioListItem* item);
|
||||
Note* Audio_PopNodeWithValueLessEqual(AudioListItem* list, s32 limit);
|
||||
void Audio_NoteInitForLayer(Note* note, SequenceChannelLayer* seqLayer);
|
||||
void func_800E82C0(Note* note, SequenceChannelLayer* seqLayer);
|
||||
void Audio_NoteReleaseAndTakeOwnership(Note* note, SequenceChannelLayer* seqLayer);
|
||||
Note* Audio_AllocNoteFromDisabled(NotePool* pool, SequenceChannelLayer* seqLayer);
|
||||
Note* Audio_AllocNoteFromDecaying(NotePool* pool, SequenceChannelLayer* seqLayer);
|
||||
Note* Audio_AllocNoteFromActive(NotePool* pool, SequenceChannelLayer* seqLayer);
|
||||
Note* Audio_AllocNote(SequenceChannelLayer* seqLayer);
|
||||
Note* Audio_FindNodeWithPrioLessThan(AudioListItem* list, s32 limit);
|
||||
void Audio_NoteInitForLayer(Note* note, SequenceLayer* layer);
|
||||
void func_800E82C0(Note* note, SequenceLayer* layer);
|
||||
void Audio_NoteReleaseAndTakeOwnership(Note* note, SequenceLayer* layer);
|
||||
Note* Audio_AllocNoteFromDisabled(NotePool* pool, SequenceLayer* layer);
|
||||
Note* Audio_AllocNoteFromDecaying(NotePool* pool, SequenceLayer* layer);
|
||||
Note* Audio_AllocNoteFromActive(NotePool* pool, SequenceLayer* layer);
|
||||
Note* Audio_AllocNote(SequenceLayer* layer);
|
||||
void Audio_NoteInitAll(void);
|
||||
void Audio_SequenceChannelProcessSound(SequenceChannel* seqChannel, s32 recalculateVolume, s32 b);
|
||||
void Audio_SequenceChannelProcessSound(SequenceChannel* channel, s32 recalculateVolume, s32 b);
|
||||
void Audio_SequencePlayerProcessSound(SequencePlayer* seqPlayer);
|
||||
f32 Audio_GetPortamentoFreqScale(Portamento* p);
|
||||
s16 Audio_GetVibratoPitchChange(VibratoState* vib);
|
||||
@@ -2019,16 +1999,16 @@ void Audio_NoteVibratoInit(Note* note);
|
||||
void Audio_NotePortamentoInit(Note* note);
|
||||
void Audio_AdsrInit(AdsrState* adsr, AdsrEnvelope* envelope, s16* volOut);
|
||||
f32 Audio_AdsrUpdate(AdsrState* adsr);
|
||||
void Audio_SequenceChannelDisable(SequenceChannel* seqChannel);
|
||||
void Audio_SequencePlayerDisableAsFinished(SequencePlayer* seqPlayer);
|
||||
void Audio_SequencePlayerDisable(SequencePlayer* seqPlayer);
|
||||
void Audio_AudioListPushBack(AudioListItem* list, AudioListItem* item);
|
||||
void* Audio_AudioListPopBack(AudioListItem* list);
|
||||
void Audio_ProcessSequences(s32 arg0);
|
||||
void Audio_ProcessSequence(SequencePlayer* seqPlayer);
|
||||
void Audio_ResetSequencePlayer(SequencePlayer* seqPlayer);
|
||||
void func_800EC734(s32 seqPlayerIdx);
|
||||
void Audio_InitSequencePlayers(void);
|
||||
void AudioSeq_SequenceChannelDisable(SequenceChannel* channel);
|
||||
void AudioSeq_SequencePlayerDisableAsFinished(SequencePlayer* seqPlayer);
|
||||
void AudioSeq_SequencePlayerDisable(SequencePlayer* seqPlayer);
|
||||
void AudioSeq_AudioListPushBack(AudioListItem* list, AudioListItem* item);
|
||||
void* AudioSeq_AudioListPopBack(AudioListItem* list);
|
||||
void AudioSeq_ProcessSequences(s32 arg0);
|
||||
void AudioSeq_SkipForwardSequence(SequencePlayer* seqPlayer);
|
||||
void AudioSeq_ResetSequencePlayer(SequencePlayer* seqPlayer);
|
||||
void AudioSeq_InitSequencePlayerChannels(s32 playerIdx);
|
||||
void AudioSeq_InitSequencePlayers(void);
|
||||
void func_800ECC04(u16);
|
||||
void func_800ED858(u8);
|
||||
void func_800ED93C(s8 songIdx, s8 arg1);
|
||||
@@ -2042,7 +2022,7 @@ void func_800EE824(void);
|
||||
void AudioDebug_Draw(GfxPrint* printer);
|
||||
void AudioDebug_ScrPrt(const s8* str, u16 num);
|
||||
void func_800F3054(void);
|
||||
void Audio_SetSoundProperties(u8 bankIdx, u8 entryIdx, u8 channelIdx);
|
||||
void Audio_SetSoundProperties(u8 bankId, u8 entryIdx, u8 channelIdx);
|
||||
void func_800F3F3C(u8);
|
||||
void func_800F4010(Vec3f* pos, u16 sfxId, f32);
|
||||
void Audio_PlaySoundRandom(Vec3f* pos, u16 baseSfxId, u8 randLim);
|
||||
@@ -2084,7 +2064,7 @@ void func_800F5B58(void);
|
||||
void func_800F5BF0(u8 arg0);
|
||||
void func_800F5C64(u16);
|
||||
void func_800F5C2C(void);
|
||||
void func_800F5E18(u8 seqIdx, u16 seqId, u8 fadeTimer, s8 arg3, s8 arg4);
|
||||
void func_800F5E18(u8 playerIdx, u16 seqId, u8 fadeTimer, s8 arg3, s8 arg4);
|
||||
void func_800F5E90(u8);
|
||||
void func_800F6114(f32 dist);
|
||||
void func_800F6268(f32 dist, u16);
|
||||
@@ -2093,8 +2073,8 @@ void func_800F6584(u8 arg0);
|
||||
void Audio_SetEnvReverb(s8 reverb);
|
||||
void Audio_SetCodeReverb(s8 reverb);
|
||||
void func_800F6700(s8 outputMode);
|
||||
void func_800F67A0(u8);
|
||||
void func_800F6828(u8);
|
||||
void Audio_SetBaseFilter(u8);
|
||||
void Audio_SetExtraFilter(u8);
|
||||
void Audio_SetCutsceneFlag(s8 flag);
|
||||
void Audio_PlaySoundIfNotInCutscene(u16 sfxId);
|
||||
void func_800F6964(u16);
|
||||
@@ -2106,33 +2086,30 @@ void Audio_PreNMI();
|
||||
void func_800F6D58(u8, u8, u8);
|
||||
// ? func_800F6E7C(?);
|
||||
void func_800F6FB4(u8);
|
||||
void func_800F70F8();
|
||||
void func_800F711C();
|
||||
void Audio_Init();
|
||||
void Audio_InitSound();
|
||||
void func_800F7170(void);
|
||||
void func_800F71BC(s32 arg0);
|
||||
void Audio_SetSoundBanksMute(u16 muteMask);
|
||||
void Audio_QueueSeqCmdMute(u8);
|
||||
void Audio_ClearBGMMute(u8);
|
||||
void Audio_PlaySoundGeneral(u16 sfxId, Vec3f* pos, u8 a2, f32* freqScale, f32* a4, s8* reverbAdd);
|
||||
void Audio_QueueSeqCmdMute(u8 channelIdx);
|
||||
void Audio_ClearBGMMute(u8 channelIdx);
|
||||
void Audio_PlaySoundGeneral(u16 sfxId, Vec3f* pos, u8 token, f32* freqScale, f32* a4, s8* reverbAdd);
|
||||
void Audio_ProcessSoundRequest(void);
|
||||
void func_800F7B54(u8, u8);
|
||||
void func_800F7CEC(u8);
|
||||
void func_800F8480(u8);
|
||||
void func_800F87A0(u8);
|
||||
void Audio_ChooseActiveSounds(u8 bankId);
|
||||
void Audio_PlayActiveSounds(u8 bankId);
|
||||
void Audio_StopSfxByBank(u8 bankId);
|
||||
void func_800F8884(u8, Vec3f*);
|
||||
void func_800F89A0(u8, Vec3f*);
|
||||
void func_800F89E8(Vec3f*);
|
||||
void func_800F9280(u8 seqIdx, u8 seqId, u8 arg2, u16 fadeTimer);
|
||||
void Audio_StopSfxByPosAndBank(u8, Vec3f*);
|
||||
void Audio_StopSfxByPos(Vec3f*);
|
||||
void func_800F9280(u8 playerIdx, u8 seqId, u8 arg2, u16 fadeTimer);
|
||||
void Audio_QueueSeqCmd(u32 bgmID);
|
||||
void func_800F8A44(Vec3f* pos, u16 sfxId);
|
||||
void func_800F8BA0(u8, u16);
|
||||
void Audio_StopSfx(u32 sfxId);
|
||||
void Audio_StopSfxByPosAndId(Vec3f* pos, u16 sfxId);
|
||||
void Audio_StopSfxByTokenAndId(u8, u16);
|
||||
void Audio_StopSfxById(u32 sfxId);
|
||||
void Audio_ProcessSoundRequests(void);
|
||||
void func_800F8EA0(u8, u8, u16);
|
||||
void func_800F8F34(u8);
|
||||
void func_800F8F88(void);
|
||||
u8 Audio_IsSfxPlaying(u32 sfxId);
|
||||
void func_800F905C(void);
|
||||
void Audio_ResetSounds(void);
|
||||
void func_800F9474(u8, u16);
|
||||
void func_800F94FC(u32);
|
||||
void Audio_ProcessSeqCmd(u32);
|
||||
@@ -2141,7 +2118,7 @@ u16 func_800FA0B4(u8 a0);
|
||||
s32 func_800FA11C(u32 arg0, u32 arg1);
|
||||
void func_800FA174(u8);
|
||||
void func_800FA18C(u8, u8);
|
||||
void Audio_SetVolScale(u8 seqIdx, u8 scaleIdx, u8 targetVol, u8 volFadeTimer);
|
||||
void Audio_SetVolScale(u8 playerIdx, u8 scaleIdx, u8 targetVol, u8 volFadeTimer);
|
||||
void func_800FA3DC(void);
|
||||
u8 func_800FAD34(void);
|
||||
void func_800FADF8(void);
|
||||
|
||||
+15
-64
@@ -331,7 +331,7 @@ extern f32 gPitchBendFrequencyScale[256];
|
||||
extern f32 D_8012F4B4[256];
|
||||
extern f32 gNoteFrequencies[];
|
||||
extern u8 gDefaultShortNoteVelocityTable[16];
|
||||
extern u8 gDefaultShortNoteDurationTable[16];
|
||||
extern u8 gDefaultShortNoteGateTimeTable[16];
|
||||
extern AdsrEnvelope gDefaultEnvelope[3];
|
||||
extern NoteSubEu gZeroNoteSub;
|
||||
extern NoteSubEu gDefaultNoteSub;
|
||||
@@ -339,14 +339,14 @@ extern u16 gHeadsetPanQuantization[0x10];
|
||||
extern f32 gHeadsetPanVolume[128];
|
||||
extern f32 gStereoPanVolume[128];
|
||||
extern f32 gDefaultPanVolume[128];
|
||||
extern s16 D_80130228[];
|
||||
extern s16 D_80130328[];
|
||||
extern s16 sLowPassFilterData[16*8];
|
||||
extern s16 sHighPassFilterData[15*8];
|
||||
extern s32 gAudioContextInitalized;
|
||||
extern f32 D_80130510;
|
||||
extern s32 D_80130514;
|
||||
extern u8 D_80130570[7];
|
||||
extern u8 D_80130578[4][7];
|
||||
extern u8 D_80130594[4][7];
|
||||
extern u8 gIsLargeSoundBank[7];
|
||||
extern u8 gChannelsPerBank[4][7];
|
||||
extern u8 gUsedChannelsPerBank[4][7];
|
||||
extern u8 gMorphaTransposeTable[16];
|
||||
extern u8* gFrogsSongPtr;
|
||||
extern OcarinaNote* gScarecrowCustomSongPtr;
|
||||
@@ -357,13 +357,13 @@ extern char D_80133390[];
|
||||
extern char D_80133398[];
|
||||
extern SoundBankEntry* gSoundBanks[7];
|
||||
extern u8 sBankSizes[7];
|
||||
extern u8 D_801333CC;
|
||||
extern u8 gSfxChannelLayout;
|
||||
extern u16 D_801333D0;
|
||||
extern Vec3f D_801333D4;
|
||||
extern f32 D_801333E0;
|
||||
extern s8 D_801333E8;
|
||||
extern u8 D_801333F0;
|
||||
extern u8 gAudioSEFlagSwapOff;
|
||||
extern u8 gAudioSfxSwapOff;
|
||||
extern u8 D_801333F8;
|
||||
//extern ? sSeqCmdWrPos;
|
||||
//extern ? sSeqCmdRdPos;
|
||||
@@ -2818,10 +2818,10 @@ extern s16 D_80153960[];
|
||||
//extern ? D_80154AE8;
|
||||
//extern ? D_80154AFC;
|
||||
//extern ? D_80154B00;
|
||||
extern u8 gAudioBankTable[];
|
||||
extern u8 D_80155340[];
|
||||
extern u8 gSoundFontTable[];
|
||||
extern u8 gSequenceFontTable[];
|
||||
extern u8 gSequenceTable[];
|
||||
extern u8 gAudioTable[];
|
||||
extern u8 gSampleBankTable[];
|
||||
extern u8 D_80155F50[];
|
||||
extern u8 D_80157580[];
|
||||
extern u8 D_801579A0[];
|
||||
@@ -3038,60 +3038,11 @@ extern SpeedMeterTimeEntry* gSpeedMeterTimeEntryPtr;
|
||||
//extern ? D_8016A794;
|
||||
//extern ? D_8016A7AC;
|
||||
extern FaultThreadStruct gFaultStruct;
|
||||
//extern ? D_8016B5F6;
|
||||
//extern ? D_8016B684;
|
||||
//extern ? D_8016B690;
|
||||
//extern ? D_8016B692;
|
||||
//extern ? D_8016B6A0;
|
||||
//extern ? D_8016B6B5;
|
||||
//extern ? D_8016B6B8;
|
||||
extern OSMesgQueue D_8016B6E0;
|
||||
//extern ? D_8016B7A8;
|
||||
//extern ? D_8016B7AC;
|
||||
//extern ? D_8016B7B0;
|
||||
//extern ? D_8016B7D8;
|
||||
//extern ? D_8016B7DC;
|
||||
//extern ? D_8016B7E0;
|
||||
//extern ? D_8016B8B0;
|
||||
//extern ? D_8016B8B1;
|
||||
//extern ? D_8016B8B2;
|
||||
//extern ? D_8016B8B3;
|
||||
//extern ? D_8016B8B8;
|
||||
//extern ? D_8016B9B8;
|
||||
//extern ? D_8016B9D8;
|
||||
//extern ? D_8016B9F2;
|
||||
//extern ? D_8016B9F3;
|
||||
//extern ? D_8016B9F4;
|
||||
//extern ? D_8016B9F6;
|
||||
//extern ? D_8016B9F8;
|
||||
//extern ? D_8016B9F9;
|
||||
//extern ? D_8016BA00;
|
||||
//extern ? D_8016BA04;
|
||||
//extern ? D_8016BA08;
|
||||
//extern ? D_8016BA09;
|
||||
//extern ? D_8016BA10;
|
||||
//extern ? D_8016BA18;
|
||||
//extern ? D_8016BA2E;
|
||||
//extern ? D_8016BA50;
|
||||
//extern ? D_8016BA70;
|
||||
//extern ? D_8016BAA0;
|
||||
extern SoundBankEntry D_8016BAD0[9];
|
||||
extern SoundBankEntry D_8016BC80[12];
|
||||
extern SoundBankEntry D_8016BEC0[22];
|
||||
extern SoundBankEntry D_8016C2E0[20];
|
||||
extern SoundBankEntry D_8016C6A0[8];
|
||||
extern SoundBankEntry D_8016C820[3];
|
||||
extern SoundBankEntry D_8016C8B0[5];
|
||||
extern u8 D_8016E1A0[7];
|
||||
extern u8 D_8016E1A8[7];
|
||||
extern u8 D_8016E1B0[7];
|
||||
extern Struct_800F7CEC D_8016E1B8[7][3]; // total size = 0xA8
|
||||
extern u8 D_8016E260;
|
||||
extern ActiveSound gActiveSounds[7][MAX_CHANNELS_PER_BANK]; // total size = 0xA8
|
||||
extern u8 gSoundBankMuted[];
|
||||
//extern ? D_8016E270;
|
||||
extern u16 gAudioSEFlagSwapSource[10];
|
||||
extern u16 gAudioSEFlagSwapTarget[10];
|
||||
extern u8 gAudioSEFlagSwapMode[10];
|
||||
extern u16 gAudioSfxSwapSource[10];
|
||||
extern u16 gAudioSfxSwapTarget[10];
|
||||
extern u8 gAudioSfxSwapMode[10];
|
||||
//extern ? D_8016E320;
|
||||
//extern ? D_8016E348;
|
||||
extern unk_D_8016E750 D_8016E750[4];
|
||||
|
||||
+259
-340
@@ -3,42 +3,68 @@
|
||||
|
||||
#define MK_CMD(b0,b1,b2,b3) ((((b0) & 0xFF) << 0x18) | (((b1) & 0xFF) << 0x10) | (((b2) & 0xFF) << 0x8) | (((b3) & 0xFF) << 0))
|
||||
|
||||
/**
|
||||
* Structs in this repository have primarily been imported from the SM64 Decompilation.
|
||||
* Some struct members may be wrong; the symbol '?' next to an offset means the member is a guess.
|
||||
*/
|
||||
|
||||
#define NO_LAYER ((SequenceChannelLayer*)(-1))
|
||||
#define NO_CHANNEL ((SequenceChannel*)(-1))
|
||||
#define NO_LAYER ((SequenceLayer*)(-1))
|
||||
|
||||
#define TATUMS_PER_BEAT 48
|
||||
|
||||
#define IS_SEQUENCE_CHANNEL_VALID(ptr) ((u32)(ptr) != (u32)&gAudioContext.sequenceChannelNone)
|
||||
|
||||
#define ADSR_STATE_DISABLED 0
|
||||
#define ADSR_STATE_INITIAL 1
|
||||
#define ADSR_STATE_START_LOOP 2
|
||||
#define ADSR_STATE_LOOP 3
|
||||
#define ADSR_STATE_FADE 4
|
||||
#define ADSR_STATE_HANG 5
|
||||
#define ADSR_STATE_DECAY 6
|
||||
#define ADSR_STATE_RELEASE 7
|
||||
#define ADSR_STATE_SUSTAIN 8
|
||||
#define MAX_CHANNELS_PER_BANK 3
|
||||
|
||||
#define ADSR_DISABLE 0
|
||||
#define ADSR_HANG -1
|
||||
#define ADSR_GOTO -2
|
||||
#define ADSR_RESTART -3
|
||||
|
||||
#define AIBUF_LEN 0xB00
|
||||
#define AIBUF_LEN 0x580
|
||||
|
||||
#define CODEC_ADPCM 0
|
||||
#define CODEC_S8 1
|
||||
typedef enum {
|
||||
/* 0 */ ADSR_STATE_DISABLED,
|
||||
/* 1 */ ADSR_STATE_INITIAL,
|
||||
/* 2 */ ADSR_STATE_START_LOOP,
|
||||
/* 3 */ ADSR_STATE_LOOP,
|
||||
/* 4 */ ADSR_STATE_FADE,
|
||||
/* 5 */ ADSR_STATE_HANG,
|
||||
/* 6 */ ADSR_STATE_DECAY,
|
||||
/* 7 */ ADSR_STATE_RELEASE,
|
||||
/* 8 */ ADSR_STATE_SUSTAIN
|
||||
} AdsrStatus;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ MEDIUM_RAM,
|
||||
/* 1 */ MEDIUM_UNK,
|
||||
/* 2 */ MEDIUM_CART,
|
||||
/* 3 */ MEDIUM_DISK_DRIVE
|
||||
} SampleMedium;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ CODEC_ADPCM,
|
||||
/* 1 */ CODEC_S8,
|
||||
/* 2 */ CODEC_S16_INMEMORY,
|
||||
/* 3 */ CODEC_SMALL_ADPCM,
|
||||
/* 4 */ CODEC_REVERB,
|
||||
/* 5 */ CODEC_S16
|
||||
} SampleCodec;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ SEQUENCE_TABLE,
|
||||
/* 1 */ FONT_TABLE,
|
||||
/* 2 */ SAMPLE_TABLE
|
||||
} SampleBankTableType;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ CACHE_TEMPORARY,
|
||||
/* 1 */ CACHE_PERSISTENT,
|
||||
/* 2 */ CACHE_EITHER,
|
||||
/* 3 */ CACHE_PERMANENT
|
||||
} AudioCacheType;
|
||||
|
||||
typedef s32 (*DmaHandler)(OSPiHandle* handle, OSIoMesg* mb, s32 direction);
|
||||
|
||||
struct Note;
|
||||
struct NotePool;
|
||||
struct SequenceChannel;
|
||||
struct SequenceChannelLayer;
|
||||
struct SequenceLayer;
|
||||
|
||||
typedef struct AudioListItem {
|
||||
// A node in a circularly linked list. Each node is either a head or an item:
|
||||
@@ -51,7 +77,7 @@ typedef struct AudioListItem {
|
||||
/* 0x00 */ struct AudioListItem* prev;
|
||||
/* 0x04 */ struct AudioListItem* next;
|
||||
/* 0x08 */ union {
|
||||
void* value; // either Note* or SequenceChannelLayer*
|
||||
void* value; // either Note* or SequenceLayer*
|
||||
s32 count;
|
||||
} u;
|
||||
/* 0x0C */ struct NotePool* pool;
|
||||
@@ -97,18 +123,18 @@ typedef struct {
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 codec : 4;
|
||||
/* 0x00 */ u32 medium : 2;
|
||||
/* 0x00 */ u32 unk_bits26 : 1;
|
||||
/* 0x00 */ u32 unk_bits25 : 1;
|
||||
/* 0x00 */ u32 unk_bit26 : 1;
|
||||
/* 0x00 */ u32 unk_bit25 : 1;
|
||||
/* 0x01 */ u32 size : 24;
|
||||
/* 0x04 */ u8* sampleAddr;
|
||||
/* 0x08 */ AdpcmLoop* loop;
|
||||
/* 0x0C */ AdpcmBook* book;
|
||||
} AudioBankSample; // size = 0x10
|
||||
} SoundFontSample; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ AudioBankSample* sample;
|
||||
/* 0x00 */ SoundFontSample* sample;
|
||||
/* 0x04 */ f32 tuning; // frequency scale factor
|
||||
} AudioBankSound; // size = 0x8
|
||||
} SoundFontSound; // size = 0x8
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 numSamplesAfterDownsampling; // never read
|
||||
@@ -158,8 +184,8 @@ typedef struct {
|
||||
/* 0x274 */ s16* filterRight;
|
||||
/* 0x278 */ s16* filterLeftState;
|
||||
/* 0x27C */ s16* filterRightState;
|
||||
/* 0x280 */ AudioBankSound sound;
|
||||
/* 0x288 */ AudioBankSample sample;
|
||||
/* 0x280 */ SoundFontSound sound;
|
||||
/* 0x288 */ SoundFontSample sample;
|
||||
/* 0x298 */ AdpcmLoop loop;
|
||||
} SynthesisReverb; // size = 0x2C8
|
||||
|
||||
@@ -169,29 +195,29 @@ typedef struct {
|
||||
/* 0x02 */ u8 normalRangeHi;
|
||||
/* 0x03 */ u8 releaseRate;
|
||||
/* 0x04 */ AdsrEnvelope* envelope;
|
||||
/* 0x08 */ AudioBankSound lowNotesSound;
|
||||
/* 0x10 */ AudioBankSound normalNotesSound;
|
||||
/* 0x18 */ AudioBankSound highNotesSound;
|
||||
/* 0x08 */ SoundFontSound lowNotesSound;
|
||||
/* 0x10 */ SoundFontSound normalNotesSound;
|
||||
/* 0x18 */ SoundFontSound highNotesSound;
|
||||
} Instrument; // size = 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 releaseRate;
|
||||
/* 0x01 */ u8 pan;
|
||||
/* 0x02 */ u8 loaded;
|
||||
/* 0x04 */ AudioBankSound sound;
|
||||
/* 0x04 */ SoundFontSound sound;
|
||||
/* 0x14 */ AdsrEnvelope* envelope;
|
||||
} Drum; // size = 0x14
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 numInstruments;
|
||||
/* 0x01 */ u8 numDrums;
|
||||
/* 0x02 */ u8 unk_02;
|
||||
/* 0x03 */ u8 unk_03;
|
||||
/* 0x02 */ u8 sampleBankId1;
|
||||
/* 0x03 */ u8 sampleBankId2;
|
||||
/* 0x04 */ u16 numSfx;
|
||||
/* 0x08 */ Instrument** instruments;
|
||||
/* 0x0C */ Drum** drums;
|
||||
/* 0x10 */ AudioBankSound* soundEffects;
|
||||
} CtlEntry; // size = 0x14
|
||||
/* 0x10 */ SoundFontSound* soundEffects;
|
||||
} SoundFont; // size = 0x14
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8* pc;
|
||||
@@ -199,7 +225,7 @@ typedef struct {
|
||||
/* 0x14 */ u8 remLoopIters[4];
|
||||
/* 0x18 */ u8 depth;
|
||||
/* 0x19 */ s8 value;
|
||||
} M64ScriptState; // size = 0x1C
|
||||
} SeqScriptState; // size = 0x1C
|
||||
|
||||
// Also known as a Group, according to debug strings.
|
||||
typedef struct {
|
||||
@@ -207,17 +233,17 @@ typedef struct {
|
||||
/* 0x000 */ u8 finished : 1;
|
||||
/* 0x000 */ u8 muted : 1;
|
||||
/* 0x000 */ u8 seqDmaInProgress : 1;
|
||||
/* 0x000 */ u8 bankDmaInProgress : 1;
|
||||
/*?0x000 */ u8 recalculateVolume : 1;
|
||||
/* 0x000 */ u8 unk_0b2 : 1;
|
||||
/* 0x000 */ u8 fontDmaInProgress : 1;
|
||||
/* 0x000 */ u8 recalculateVolume : 1;
|
||||
/* 0x000 */ u8 stopScript : 1;
|
||||
/* 0x000 */ u8 unk_0b1 : 1;
|
||||
/* 0x001 */ u8 state;
|
||||
/* 0x002 */ u8 noteAllocPolicy;
|
||||
/* 0x003 */ u8 muteBehavior;
|
||||
/* 0x004 */ u8 seqId;
|
||||
/* 0x005 */ u8 defaultBank;
|
||||
/* 0x005 */ u8 defaultFont;
|
||||
/* 0x006 */ u8 unk_06[1];
|
||||
/* 0x007 */ s8 playerIndex;
|
||||
/* 0x007 */ s8 playerIdx;
|
||||
/* 0x008 */ u16 tempo; // tatums per minute
|
||||
/* 0x00A */ u16 tempoAcc;
|
||||
/* 0x00C */ u16 unk_0C;
|
||||
@@ -234,23 +260,14 @@ typedef struct {
|
||||
/* 0x030 */ f32 appliedFadeVolume;
|
||||
/* 0x034 */ f32 unk_34;
|
||||
/* 0x038 */ struct SequenceChannel* channels[16];
|
||||
/* 0x078 */ M64ScriptState scriptState;
|
||||
/* 0x078 */ SeqScriptState scriptState;
|
||||
/* 0x094 */ u8* shortNoteVelocityTable;
|
||||
/* 0x098 */ u8* shortNoteDurationTable;
|
||||
/* 0x098 */ u8* shortNoteGateTimeTable;
|
||||
/* 0x09C */ NotePool notePool;
|
||||
/* 0x0DC */ s32 unk_DC;
|
||||
/* 0x0E0 */ u32 unk_E0;
|
||||
/* 0x0E4 */ u8 pad_E4[0x10]; // OSMesgQueue seqDmaMesgQueue;
|
||||
/*?0x0F4 */ OSMesg seqDmaMesg;
|
||||
/*?0x0F8 */ OSIoMesg seqDmaIoMesg;
|
||||
/*?0x110 */ OSMesgQueue bankDmaMesgQueue;
|
||||
/*?0x128 */ OSMesg bankDmaMesg;
|
||||
/*?0x12C */ OSIoMesg bankDmaIoMesg;
|
||||
/*?0x144 */ u8* bankDmaCurrMemAddr;
|
||||
/*?0x148 */ u32 bankDmaCurrDevAddr;
|
||||
/*?0x14C */ s32 bankDmaRemaining;
|
||||
/* */ u8 pad_150[8];
|
||||
/* 0x158 */ s8 unk_158[8]; // "port" according to debug strings. seqVariationEu? soundScriptIO?
|
||||
/* 0x0DC */ s32 skipTicks;
|
||||
/* 0x0E0 */ u32 scriptCounter;
|
||||
/* 0x0E4 */ char unk_E4[0x74]; // unused struct members for sequence/sound font dma management, according to sm64 decomp
|
||||
/* 0x158 */ s8 soundScriptIO[8];
|
||||
} SequencePlayer; // size = 0x160
|
||||
|
||||
typedef struct {
|
||||
@@ -282,8 +299,7 @@ typedef struct {
|
||||
} AdsrState;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 bit0 : 1; // unused?
|
||||
/* 0x00 */ u8 bit1 : 1; // unused?
|
||||
/* 0x00 */ u8 unused : 2;
|
||||
/* 0x00 */ u8 bit2 : 2;
|
||||
/* 0x00 */ u8 strongRight : 1;
|
||||
/* 0x00 */ u8 strongLeft : 1;
|
||||
@@ -309,13 +325,12 @@ typedef struct {
|
||||
/* 0x14 */ s16 filterBuf[8];
|
||||
} NoteAttributes; // size = 0x24
|
||||
|
||||
// Also known as a SubTrack, according to debug strings.
|
||||
// Confusingly, a SubTrack is a container of Tracks.
|
||||
// Also known as a SubTrack, according to sm64 debug strings.
|
||||
typedef struct SequenceChannel {
|
||||
/* 0x00 */ u8 enabled : 1;
|
||||
/* 0x00 */ u8 finished : 1;
|
||||
/* 0x00 */ u8 stopScript : 1;
|
||||
/* 0x00 */ u8 stopSomething2 : 1; // sets SequenceChannelLayer.stopSomething
|
||||
/* 0x00 */ u8 stopSomething2 : 1; // sets SequenceLayer.stopSomething
|
||||
/* 0x00 */ u8 hasInstrument : 1;
|
||||
/* 0x00 */ u8 stereoHeadsetEffects : 1;
|
||||
/* 0x00 */ u8 largeNotes : 1; // notes specify duration and velocity
|
||||
@@ -333,14 +348,14 @@ typedef struct SequenceChannel {
|
||||
/* 0x04 */ u8 reverb; // or dry/wet mix
|
||||
/* 0x05 */ u8 notePriority; // 0-3
|
||||
/* 0x06 */ u8 someOtherPriority;
|
||||
/* 0x07 */ u8 bankId;
|
||||
/* 0x07 */ u8 fontId;
|
||||
/* 0x08 */ u8 reverbIndex;
|
||||
/* 0x09 */ u8 bookOffset;
|
||||
/* 0x0A */ u8 newPan;
|
||||
/* 0x0B */ u8 panChannelWeight; // proportion of pan that comes from the channel (0..128)
|
||||
/* 0x0C */ u8 unk_0C;
|
||||
/* 0x0D */ u8 velocityRandomVariance;
|
||||
/* 0x0E */ u8 durationRandomVariance;
|
||||
/* 0x0E */ u8 gateTimeRandomVariance;
|
||||
/* 0x0F */ u8 unk_0F;
|
||||
/* 0x10 */ u16 vibratoRateStart;
|
||||
/* 0x12 */ u16 vibratoExtentStart;
|
||||
@@ -362,20 +377,20 @@ typedef struct SequenceChannel {
|
||||
/* 0x38 */ f32 freqScale;
|
||||
/* 0x3C */ u8 (*dynTable)[][2];
|
||||
/* 0x40 */ struct Note* noteUnused;
|
||||
/* 0x44 */ struct SequenceChannelLayer* layerUnused;
|
||||
/* 0x44 */ struct SequenceLayer* layerUnused;
|
||||
/* 0x48 */ Instrument* instrument;
|
||||
/* 0x4C */ SequencePlayer* seqPlayer;
|
||||
/* 0x50 */ struct SequenceChannelLayer* layers[4];
|
||||
/* 0x60 */ M64ScriptState scriptState;
|
||||
/* 0x50 */ struct SequenceLayer* layers[4];
|
||||
/* 0x60 */ SeqScriptState scriptState;
|
||||
/* 0x7C */ AdsrSettings adsr;
|
||||
/* 0x84 */ NotePool notePool;
|
||||
/* 0xC4 */ s8 soundScriptIO[8]; // bridge between sound script and audio lib
|
||||
/* 0xC4 */ s8 soundScriptIO[8]; // bridge between sound script and audio lib, "io ports"
|
||||
/* 0xCC */ s16* filter;
|
||||
/* 0xD0 */ Stereo stereo;
|
||||
} SequenceChannel; // size = 0xD4
|
||||
|
||||
// Also known as a Track, according to debug strings.
|
||||
typedef struct SequenceChannelLayer {
|
||||
// Might also be known as a Track, according to sm64 debug strings (?).
|
||||
typedef struct SequenceLayer {
|
||||
/* 0x00 */ u8 enabled : 1;
|
||||
/* 0x00 */ u8 finished : 1;
|
||||
/* 0x00 */ u8 stopSomething : 1;
|
||||
@@ -386,20 +401,20 @@ typedef struct SequenceChannelLayer {
|
||||
/* 0x00 */ u8 notePropertiesNeedInit : 1;
|
||||
/* 0x01 */ Stereo stereo;
|
||||
/* 0x02 */ u8 instOrWave;
|
||||
/* 0x03 */ u8 noteDuration;
|
||||
/* 0x03 */ u8 gateTime;
|
||||
/* 0x04 */ u8 semitone;
|
||||
/* 0x05 */ u8 portamentoTargetNote;
|
||||
/* 0x06 */ u8 pan; // 0..128
|
||||
/* 0x07 */ u8 notePan;
|
||||
/* 0x08 */ s16 delay;
|
||||
/* 0x0A */ s16 duration;
|
||||
/* 0x0A */ s16 gateDelay;
|
||||
/* 0x0C */ s16 delay2;
|
||||
/* 0x0E */ u16 portamentoTime;
|
||||
/* 0x10 */ s16 transposition; // #semitones added to play commands
|
||||
// (m64 instruction encoding only allows referring to the limited range
|
||||
// (seq instruction encoding only allows referring to the limited range
|
||||
// 0..0x3F; this makes 0x40..0x7F accessible as well)
|
||||
/* 0x12 */ s16 shortNoteDefaultPlayPercentage;
|
||||
/* 0x14 */ s16 playPercentage;
|
||||
/* 0x12 */ s16 shortNoteDefaultDelay;
|
||||
/* 0x14 */ s16 lastDelay;
|
||||
/* 0x18 */ AdsrSettings adsr;
|
||||
/* 0x20 */ Portamento portamento;
|
||||
/* 0x2C */ struct Note* note;
|
||||
@@ -410,11 +425,11 @@ typedef struct SequenceChannelLayer {
|
||||
/* 0x40 */ f32 noteVelocity;
|
||||
/* 0x44 */ f32 noteFreqScale;
|
||||
/* 0x48 */ Instrument* instrument;
|
||||
/* 0x4C */ AudioBankSound* sound;
|
||||
/* 0x50 */ SequenceChannel* seqChannel;
|
||||
/* 0x54 */ M64ScriptState scriptState;
|
||||
/* 0x4C */ SoundFontSound* sound;
|
||||
/* 0x50 */ SequenceChannel* channel;
|
||||
/* 0x54 */ SeqScriptState scriptState;
|
||||
/* 0x70 */ AudioListItem listItem;
|
||||
} SequenceChannelLayer; // size = 0x80
|
||||
} SequenceLayer; // size = 0x80
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ s16 adpcmdecState[0x10];
|
||||
@@ -431,7 +446,7 @@ typedef struct {
|
||||
/* 0x02 */ u8 prevHeadsetPanRight;
|
||||
/* 0x03 */ u8 prevHeadsetPanLeft;
|
||||
/* 0x04 */ u8 reverbVol;
|
||||
/* 0x05 */ u8 numAdpcmParts;
|
||||
/* 0x05 */ u8 numParts;
|
||||
/* 0x06 */ u16 samplePosFrac;
|
||||
/* 0x08 */ s32 samplePosInt;
|
||||
/* 0x0C */ NoteSynthesisBuffers* synthesisBuffers;
|
||||
@@ -446,7 +461,7 @@ typedef struct {
|
||||
} NoteSynthesisState; // size = 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ struct SequenceChannel* seqChannel;
|
||||
/* 0x00 */ struct SequenceChannel* channel;
|
||||
/* 0x04 */ u32 time;
|
||||
/* 0x08 */ s16* curve;
|
||||
/* 0x0C */ f32 extent;
|
||||
@@ -461,44 +476,37 @@ typedef struct {
|
||||
/* 0x00 */ u8 priority;
|
||||
/* 0x01 */ u8 waveId;
|
||||
/* 0x02 */ u8 sampleCountIndex;
|
||||
/* 0x03 */ u8 bankId;
|
||||
/* 0x03 */ u8 fontId;
|
||||
/* 0x04 */ u8 unk_04;
|
||||
/* 0x05 */ u8 stereoHeadsetEffects;
|
||||
/* 0x06 */ s16 adsrVolScale; // unused?
|
||||
/* 0x06 */ s16 adsrVolScaleUnused;
|
||||
/* 0x08 */ f32 portamentoFreqScale;
|
||||
/* 0x0C */ f32 vibratoFreqScale;
|
||||
/* 0x10 */ SequenceChannelLayer* prevParentLayer;
|
||||
/* 0x14 */ SequenceChannelLayer* parentLayer;
|
||||
/* 0x18 */ SequenceChannelLayer* wantedParentLayer;
|
||||
/* 0x10 */ SequenceLayer* prevParentLayer;
|
||||
/* 0x14 */ SequenceLayer* parentLayer;
|
||||
/* 0x18 */ SequenceLayer* wantedParentLayer;
|
||||
/* 0x1C */ NoteAttributes attributes;
|
||||
/* 0x40 */ AdsrState adsr;
|
||||
// may contain portamento, vibratoState, if those are not part of Note itself
|
||||
} NotePlaybackState;
|
||||
|
||||
typedef struct {
|
||||
// these bitfields should perhaps be merged into a single struct
|
||||
union {
|
||||
struct {
|
||||
/* 0x00 */ vu8 enabled : 1;
|
||||
/* 0x00 */ u8 needsInit : 1;
|
||||
/*?0x00 */ u8 finished : 1;
|
||||
/* 0x00 */ u8 unused : 1;
|
||||
/* 0x00 */ u8 stereoStrongRight : 1;
|
||||
/* 0x00 */ u8 stereoStrongLeft : 1;
|
||||
/* 0x00 */ u8 stereoHeadsetEffects : 1;
|
||||
/*?0x00 */ u8 usesHeadsetPanEffects : 1;
|
||||
} s;
|
||||
/* 0x00 */ u8 asByte; // likely does not exist
|
||||
struct {
|
||||
/* 0x00 */ volatile u8 enabled : 1;
|
||||
/* 0x00 */ u8 needsInit : 1;
|
||||
/* 0x00 */ u8 finished : 1; // ?
|
||||
/* 0x00 */ u8 unused : 1;
|
||||
/* 0x00 */ u8 stereoStrongRight : 1;
|
||||
/* 0x00 */ u8 stereoStrongLeft : 1;
|
||||
/* 0x00 */ u8 stereoHeadsetEffects : 1;
|
||||
/* 0x00 */ u8 usesHeadsetPanEffects : 1; // ?
|
||||
} bitField0;
|
||||
union {
|
||||
struct {
|
||||
/* 0x01 */ u8 reverbIndex : 3;
|
||||
/* 0x01 */ u8 bookOffset : 2;
|
||||
/* 0x01 */ u8 isSyntheticWave : 1;
|
||||
/* 0x01 */ u8 hasTwoAdpcmParts : 1;
|
||||
/* 0x01 */ u8 usesHeadsetPanEffects2 : 1;
|
||||
} s;
|
||||
/* 0x01 */ u8 asByte; // likely does not exist
|
||||
struct {
|
||||
/* 0x01 */ u8 reverbIndex : 3;
|
||||
/* 0x01 */ u8 bookOffset : 2;
|
||||
/* 0x01 */ u8 isSyntheticWave : 1;
|
||||
/* 0x01 */ u8 hasTwoParts : 1;
|
||||
/* 0x01 */ u8 usesHeadsetPanEffects2 : 1;
|
||||
} bitField1;
|
||||
/* 0x02 */ u8 unk_2;
|
||||
/* 0x03 */ u8 headsetPanRight;
|
||||
@@ -511,7 +519,7 @@ typedef struct {
|
||||
/* 0x0C */ u16 resamplingRateFixedPoint;
|
||||
/* 0x0E */ u16 unk_0E;
|
||||
/* 0x10 */ union {
|
||||
AudioBankSound* audioBankSound;
|
||||
SoundFontSound* soundFontSound;
|
||||
s16* samples; // used for synthetic waves
|
||||
} sound;
|
||||
/* 0x14 */ s16* filter;
|
||||
@@ -540,30 +548,30 @@ typedef struct {
|
||||
/* 0x0E */ u16 leakLtr;
|
||||
/* 0x10 */ s8 unk_10;
|
||||
/* 0x12 */ u16 unk_12;
|
||||
/* 0x14 */ s16 unk_14;
|
||||
/* 0x16 */ s16 unk_16;
|
||||
/* 0x14 */ s16 lowPassFilterCutoffLeft;
|
||||
/* 0x16 */ s16 lowPassFilterCutoffRight;
|
||||
} ReverbSettings; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 frequency;
|
||||
/* 0x04 */ u8 unk_04;
|
||||
/* 0x05 */ u8 maxSimultaneousNotes;
|
||||
/* 0x05 */ u8 numNotes;
|
||||
/* 0x06 */ u8 numSequencePlayers;
|
||||
/* 0x07 */ u8 unk_07[0x2];
|
||||
/* 0x07 */ u8 unk_07; // unused, set to zero
|
||||
/* 0x08 */ u8 unk_08; // unused, set to zero
|
||||
/* 0x09 */ u8 numReverbs;
|
||||
/* 0x0A */ u8 unk_0A[0x2];
|
||||
/* 0x0C */ ReverbSettings* reverbSettings;
|
||||
/* 0x10 */ u16 unk_10;
|
||||
/* 0x12 */ u16 unk_12;
|
||||
/* 0x10 */ u16 sampleDmaBufSize1;
|
||||
/* 0x12 */ u16 sampleDmaBufSize2;
|
||||
/* 0x14 */ u16 unk_14;
|
||||
/* 0x18 */ u32 persistentSeqMem;
|
||||
/* 0x1C */ u32 persistentBankMem;
|
||||
/* 0x20 */ u32 persistentUnusedMem;
|
||||
/* 0x1C */ u32 persistentFontMem;
|
||||
/* 0x20 */ u32 persistentSampleMem;
|
||||
/* 0x24 */ u32 temporarySeqMem;
|
||||
/* 0x28 */ u32 temporaryBankMem;
|
||||
/* 0x2C */ u32 temporaryUnusedMem;
|
||||
/* 0x30 */ s32 unk_30;
|
||||
/* 0x34 */ s32 unk_34;
|
||||
/* 0x28 */ u32 temporaryFontMem;
|
||||
/* 0x2C */ u32 temporarySampleMem;
|
||||
/* 0x30 */ s32 persistentSampleCacheMem;
|
||||
/* 0x34 */ s32 temporarySampleCacheMem;
|
||||
} AudioSpec; // size = 0x38
|
||||
|
||||
typedef struct {
|
||||
@@ -588,52 +596,49 @@ typedef struct {
|
||||
/* 0x0 */ u8* start;
|
||||
/* 0x4 */ u8* cur;
|
||||
/* 0x8 */ s32 size;
|
||||
/* 0xC */ s32 unused; // set to 0, never read
|
||||
} SoundAllocPool; // size = 0x10
|
||||
/* 0xC */ s32 count;
|
||||
} AudioAllocPool; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ u8* ptr;
|
||||
/* 0x4 */ u32 size;
|
||||
/* 0x8 */ s16 poolIndex;
|
||||
/* 0xA */ s16 id; // seqId or bankId
|
||||
} SeqOrBankEntry; // size = 0xC
|
||||
/* 0x8 */ s16 tableType;
|
||||
/* 0xA */ s16 id;
|
||||
} AudioCacheEntry; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s8 unk_00;
|
||||
/* 0x01 */ s8 unk_01;
|
||||
/* 0x02 */ s8 unk_02;
|
||||
/* 0x00 */ s8 inUse;
|
||||
/* 0x01 */ s8 origMedium;
|
||||
/* 0x02 */ s8 sampleBankId;
|
||||
/* 0x03 */ char unk_03[0x5];
|
||||
/* 0x08 */ u8* unk_08;
|
||||
/* 0x0C */ void* unk_0C;
|
||||
/* 0x08 */ u8* allocatedAddr;
|
||||
/* 0x0C */ void* sampleAddr;
|
||||
/* 0x10 */ u32 size;
|
||||
} UnkHeapEntry; // size = 0x14
|
||||
} SampleCacheEntry; // size = 0x14
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ SoundAllocPool pool;
|
||||
/* 0x010 */ UnkHeapEntry entries[32];
|
||||
/* 0x000 */ AudioAllocPool pool;
|
||||
/* 0x010 */ SampleCacheEntry entries[32];
|
||||
/* 0x290 */ s32 size;
|
||||
} UnkPool; // size = 0x294
|
||||
} AudioSampleCache; // size = 0x294
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
/* 0x00*/ u32 numEntries;
|
||||
/* 0x04*/ SoundAllocPool pool;
|
||||
/* 0x14*/ SeqOrBankEntry entries[16];
|
||||
} PersistentPool; // size = 0xD4
|
||||
/* 0x04*/ AudioAllocPool pool;
|
||||
/* 0x14*/ AudioCacheEntry entries[16];
|
||||
} AudioPersistentCache; // size = 0xD4
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
/* 0x00*/ u32 nextSide;
|
||||
/* 0x04*/ SoundAllocPool pool;
|
||||
/* 0x14*/ SeqOrBankEntry entries[2];
|
||||
} TemporaryPool; // size = 0x3C
|
||||
/* 0x04*/ AudioAllocPool pool;
|
||||
/* 0x14*/ AudioCacheEntry entries[2];
|
||||
} AudioTemporaryCache; // size = 0x3C
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* 0x000*/ PersistentPool persistent;
|
||||
/* 0x0D4*/ TemporaryPool temporary;
|
||||
typedef struct {
|
||||
/* 0x000*/ AudioPersistentCache persistent;
|
||||
/* 0x0D4*/ AudioTemporaryCache temporary;
|
||||
/* 0x100*/ u8 unk_100[0x10];
|
||||
} SoundMultiPool; // size = 0x110
|
||||
} AudioCache; // size = 0x110
|
||||
|
||||
typedef struct {
|
||||
u32 wantPersistent;
|
||||
@@ -642,40 +647,24 @@ typedef struct {
|
||||
|
||||
typedef struct {
|
||||
u32 wantSeq;
|
||||
u32 wantBank;
|
||||
u32 wantUnused;
|
||||
u32 wantFont;
|
||||
u32 wantSample;
|
||||
} AudioPoolSplit3; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
u32 wantSeq;
|
||||
u32 wantBank;
|
||||
u32 wantUnused;
|
||||
u32 wantFont;
|
||||
u32 wantSample;
|
||||
u32 wantCustom;
|
||||
} AudioPoolSplit4; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
u8* unk_0;
|
||||
u8* unk_4;
|
||||
u32 unk_8;
|
||||
s8 unk_C;
|
||||
s8 unk_D;
|
||||
s16 unk_E;
|
||||
} Struct_800E0E0C_2;
|
||||
|
||||
typedef struct {
|
||||
char unk_00[0x2];
|
||||
s16 unk_02;
|
||||
char unk_04[0x8];
|
||||
Struct_800E0E0C_2 unk_C[1]; // unknown size
|
||||
} ManyStruct_800E0E0C_2;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 endAndMediumKey;
|
||||
/* 0x04 */ AudioBankSample* sample;
|
||||
/* 0x04 */ SoundFontSample* sample;
|
||||
/* 0x08 */ u8* ramAddr;
|
||||
/* 0x0C */ u32 encodedInfo;
|
||||
/* 0x10 */ s32 isFree;
|
||||
} AudioStruct0D68; // size = 0x14
|
||||
} AudioPreloadReq; // size = 0x14
|
||||
|
||||
typedef struct {
|
||||
union{
|
||||
@@ -698,111 +687,56 @@ typedef struct {
|
||||
};
|
||||
} AudioCmd;
|
||||
|
||||
typedef struct {
|
||||
union{
|
||||
struct {
|
||||
s16 unk_00;
|
||||
u16 unk_02;
|
||||
};
|
||||
u32 unk_00w;
|
||||
};
|
||||
u32 unk_04;
|
||||
s8 unk_08;
|
||||
char unk_09[0x7];
|
||||
} unk_dma_s;
|
||||
|
||||
#define MK_ASYNC_MSG(b0,b1,b2,b3)(((b0) << 0x18) | ((b1) << 0x10) | ((b2) << 0x08) | ((b3) << 0x00))
|
||||
#define ASYNC_TBLTYPE(v)((u8)(v >> 0x10))
|
||||
#define ASYNC_B2(v)((u8)(v >> 0x08))
|
||||
#define ASYNC_B3(v)((u8)(v >> 0x00))
|
||||
#define AYSNC_B0(v)(((u8)(v >> 0x18))
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s8 status;
|
||||
/* 0x01 */ s8 unk_01;
|
||||
/* 0x02 */ s8 unk_02; // type?
|
||||
/* 0x03 */ char unk_03[0x1];
|
||||
/* 0x04 */ u32 unk_04;
|
||||
/* 0x08 */ u32 devAddr;
|
||||
/* 0x0C */ u8* ramAddr;
|
||||
/* 0x01 */ s8 delay;
|
||||
/* 0x02 */ s8 medium;
|
||||
/* 0x04 */ u8* ramAddr;
|
||||
/* 0x08 */ u32 curDevAddr;
|
||||
/* 0x0C */ u8* curRamAddr;
|
||||
/* 0x10 */ u32 bytesRemaining;
|
||||
/* 0x14 */ u32 chunkSize;
|
||||
/* 0x18 */ s32 unk_18;
|
||||
/* 0x18 */ s32 unkMediumParam;
|
||||
/* 0x1C */ u32 retMsg;
|
||||
/* 0x20 */ OSMesgQueue* retQueue;
|
||||
/* 0x24 */ OSMesgQueue msgQueue;
|
||||
/* 0x3C */ OSMesg msg;
|
||||
/* 0x40 */ OSIoMesg ioMesg;
|
||||
} AsyncLoadReq; // size = 0x58
|
||||
} AudioAsyncLoad; // size = 0x58
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 unk_00;
|
||||
/* 0x01 */ u8 unk_01;
|
||||
/* 0x02 */ u16 unk_02;
|
||||
/* 0x04 */ s32 unk_04;
|
||||
/* 0x08 */ s32 devAddr;
|
||||
/* 0x0C */ u8* ramAddr;
|
||||
/* 0x10 */ u8* unk_10;
|
||||
/* 0x00 */ u8 medium;
|
||||
/* 0x01 */ u8 seqOrFontId;
|
||||
/* 0x02 */ u16 instId;
|
||||
/* 0x04 */ s32 unkMediumParam;
|
||||
/* 0x08 */ s32 curDevAddr;
|
||||
/* 0x0C */ u8* curRamAddr;
|
||||
/* 0x10 */ u8* ramAddr;
|
||||
/* 0x14 */ s32 status;
|
||||
/* 0x18 */ s32 size;
|
||||
/* 0x18 */ s32 bytesRemaining;
|
||||
/* 0x1C */ s8* isDone;
|
||||
/* 0x20 */ AudioBankSample sample;
|
||||
/* 0x20 */ SoundFontSample sample;
|
||||
/* 0x30 */ OSMesgQueue msgqueue;
|
||||
/* 0x48 */ OSMesg msg;
|
||||
/* 0x4C */ OSIoMesg ioMesg;
|
||||
} AudioSyncLoad; // size = 0x64
|
||||
|
||||
typedef struct {
|
||||
u16 offsets[18];
|
||||
char data[1];
|
||||
} unk_283C;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 entryCnt;
|
||||
/* 0x02 */ s16 unk_02;
|
||||
/* 0x04 */ u32 romAddr;
|
||||
/* 0x08 */ char pad[0x8];
|
||||
} AudioTableHeader; // size = 0x10
|
||||
} AudioSlowLoad; // size = 0x64
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 romAddr;
|
||||
/* 0x04 */ u32 size;
|
||||
/* 0x08 */ s8 unk_08;
|
||||
/* 0x09 */ s8 type;
|
||||
/* 0x0A */ char pad[6];
|
||||
} SequenceTableEntry; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 romAddr;
|
||||
/* 0x04 */ u32 size;
|
||||
/* 0x08 */ u8 unk_08;
|
||||
/* 0x09 */ u8 unk_09;
|
||||
/* 0x0A */ s16 unk_0A;
|
||||
/* 0x0C */ s16 unk_0C;
|
||||
/* 0x0E */ s16 unk_0E;
|
||||
} AudioBankTableEntry; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 romAddr;
|
||||
/* 0x04 */ u32 size;
|
||||
/* 0x08 */ s8 unk_08;
|
||||
/* 0x09 */ s8 unk_09;
|
||||
/* 0x0A */ char pad[6];
|
||||
/* 0x08 */ s8 medium;
|
||||
/* 0x09 */ s8 cachePolicy;
|
||||
/* 0x0A */ s16 shortData1;
|
||||
/* 0x0C */ s16 shortData2;
|
||||
/* 0x0E */ s16 shortData3;
|
||||
} AudioTableEntry; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ AudioTableHeader header;
|
||||
/* 0x10 */ SequenceTableEntry entries[1];
|
||||
} SequenceTable; // size >= 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ AudioTableHeader header;
|
||||
/* 0x10 */ AudioBankTableEntry entries[1];
|
||||
} AudioBankTable; // size >= 0x20
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ AudioTableHeader header;
|
||||
/* 0x10 */ AudioTableEntry entries[1];
|
||||
/* 0x00 */ s16 numEntries;
|
||||
/* 0x02 */ s16 unkMediumParam;
|
||||
/* 0x04 */ u32 romAddr;
|
||||
/* 0x08 */ char pad[0x8];
|
||||
/* 0x10 */ AudioTableEntry entries[1]; // (dynamic size)
|
||||
} AudioTable; // size >= 0x20
|
||||
|
||||
typedef struct {
|
||||
@@ -820,22 +754,7 @@ typedef struct {
|
||||
/* 0x0C */ u8 unused;
|
||||
/* 0x0D */ u8 reuseIndex; // position in sSampleDmaReuseQueue1/2, if ttl == 0
|
||||
/* 0x0E */ u8 ttl; // duration after which the DMA can be discarded
|
||||
} SampleDmaReq; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 index1;
|
||||
/* 0x04 */ s32 index2;
|
||||
/* 0x08 */ s32 baseAddr1;
|
||||
/* 0x0C */ s32 baseAddr2;
|
||||
/* 0x10 */ u32 medium1;
|
||||
/* 0x14 */ u32 medium2;
|
||||
} RelocInfo; // size = 0x18
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ SEQUENCE_TABLE,
|
||||
/* 1 */ BANK_TABLE,
|
||||
/* 2 */ AUDIO_TABLE
|
||||
} AudioTableType;
|
||||
} SampleDma; // size = 0x10
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ char unk_0000;
|
||||
@@ -847,56 +766,52 @@ typedef struct {
|
||||
/* 0x0014 */ NoteSubEu* noteSubsEu;
|
||||
/* 0x0018 */ SynthesisReverb synthesisReverbs[4];
|
||||
/* 0x0B38 */ char unk_0B38[0x30];
|
||||
/* 0x0B68 */ AudioBankSample* unk_0B68[128];
|
||||
/* 0x0D68 */ AudioStruct0D68 unk_0D68[128];
|
||||
/* 0x1768 */ s32 unk_1768;
|
||||
/* 0x176C */ s32 unk_176C;
|
||||
/* 0x1770 */ AsyncLoadReq asyncReqs[0x10];
|
||||
/* 0x1CF0 */ OSMesgQueue asyncLoadQueue;
|
||||
/* 0x0B68 */ SoundFontSample* usedSamples[128];
|
||||
/* 0x0D68 */ AudioPreloadReq preloadSampleStack[128];
|
||||
/* 0x1768 */ s32 numUsedSamples;
|
||||
/* 0x176C */ s32 preloadSampleStackTop;
|
||||
/* 0x1770 */ AudioAsyncLoad asyncLoads[0x10];
|
||||
/* 0x1CF0 */ OSMesgQueue asyncLoadUnkMediumQueue;
|
||||
/* 0x1D08 */ char unk_1D08[0x40];
|
||||
/* 0x1D48 */ AsyncLoadReq* curAsyncReq;
|
||||
/* 0x1D4C */ u32 syncLoadPos;
|
||||
/* 0x1D50 */ AudioSyncLoad syncLoads[2];
|
||||
/* 0x1D48 */ AudioAsyncLoad* curUnkMediumLoad;
|
||||
/* 0x1D4C */ u32 slowLoadPos;
|
||||
/* 0x1D50 */ AudioSlowLoad slowLoads[2];
|
||||
/* 0x1E18 */ OSPiHandle* cartHandle;
|
||||
/* probably an unused PI handle for n64 disk drive */
|
||||
/* 0x1E1C */ OSPiHandle* unk_1E1C;
|
||||
/* 0x1E20 */ OSMesgQueue unk_1E20;
|
||||
/* 0x1E38 */ OSMesg unk_1E38[0x10];
|
||||
/* 0x1E78 */ OSMesgQueue unk_1E78;
|
||||
/* 0x1E90 */ OSMesg unk_1E90[0x10];
|
||||
/* 0x1E1C */ OSPiHandle* driveHandle;
|
||||
/* 0x1E20 */ OSMesgQueue externalLoadQueue;
|
||||
/* 0x1E38 */ OSMesg externalLoadMesgBuf[0x10];
|
||||
/* 0x1E78 */ OSMesgQueue preloadSampleQueue;
|
||||
/* 0x1E90 */ OSMesg preloadSampleMesgBuf[0x10];
|
||||
/* 0x1ED0 */ OSMesgQueue currAudioFrameDmaQueue;
|
||||
/* 0x1EE8 */ OSMesg currAudioFrameDmaMesgBufs[0x40];
|
||||
/* 0x1FE8 */ OSIoMesg currAudioFrameDmaIoMesgBufs[0x40];
|
||||
/* 0x25E8 */ OSMesgQueue unk_25E8;
|
||||
/* 0x2600 */ OSMesg unk_2600;
|
||||
/* 0x2604 */ OSIoMesg unk_2604;
|
||||
/* 0x261C */ SampleDmaReq* sampleDmaReqs;
|
||||
/* 0x2620 */ u32 sampleDmaReqCnt;
|
||||
/* 0x1EE8 */ OSMesg currAudioFrameDmaMesgBuf[0x40];
|
||||
/* 0x1FE8 */ OSIoMesg currAudioFrameDmaIoMesgBuf[0x40];
|
||||
/* 0x25E8 */ OSMesgQueue syncDmaQueue;
|
||||
/* 0x2600 */ OSMesg syncDmaMesg;
|
||||
/* 0x2604 */ OSIoMesg syncDmaIoMesg;
|
||||
/* 0x261C */ SampleDma* sampleDmas;
|
||||
/* 0x2620 */ u32 sampleDmaCount;
|
||||
/* 0x2624 */ u32 sampleDmaListSize1;
|
||||
/* 0x2628 */ s32 unk_2628;
|
||||
/* 0x2628 */ s32 unused2628;
|
||||
/* 0x262C */ u8 sampleDmaReuseQueue1[0x100]; // read pos <= write pos, wrapping mod 256
|
||||
/* 0x272C */ u8 sampleDmaReuseQueue2[0x100];
|
||||
/* 0x282C */ u8 sampleDmaReuseQueue1RdPos;
|
||||
/* 0x282D */ u8 sampleDmaReuseQueue2RdPos;
|
||||
/* 0x282E */ u8 sampleDmaReuseQueue1WrPos;
|
||||
/* 0x282F */ u8 sampleDmaReuseQueue2WrPos;
|
||||
/* 0x2830 */ SequenceTable* sequenceTable;
|
||||
/* 0x2834 */ AudioBankTable* audioBankTable;
|
||||
/* 0x2838 */ AudioTable* audioTable;
|
||||
union {
|
||||
/* 0x283C */ u16* unk_283C;
|
||||
/* 0x283C */ u8* unk_283Cb;
|
||||
};
|
||||
/* 0x2840 */ u16 seqTabEntCnt; // channels used?
|
||||
/* 0x2844 */ CtlEntry* ctlEntries;
|
||||
/* 0x2830 */ AudioTable* sequenceTable;
|
||||
/* 0x2834 */ AudioTable* soundFontTable;
|
||||
/* 0x2838 */ AudioTable* sampleBankTable;
|
||||
/* 0x283C */ u8* sequenceFontTable;
|
||||
/* 0x2840 */ u16 numSequences;
|
||||
/* 0x2844 */ SoundFont* soundFonts;
|
||||
/* 0x2848 */ AudioBufferParameters audioBufferParameters;
|
||||
/* 0x2870 */ f32 unk_2870;
|
||||
/* 0x2874 */ s32 unk_2874;
|
||||
/* 0x2874 */ s32 unk_2878;
|
||||
/* 0x2874 */ s32 sampleDmaBufSize1;
|
||||
/* 0x2874 */ s32 sampleDmaBufSize2;
|
||||
/* 0x287C */ char unk_287C[0x10];
|
||||
/* 0x288C */ s32 unk_288C;
|
||||
/* 0x288C */ s32 sampleDmaBufSize;
|
||||
/* 0x2890 */ s32 maxAudioCmds;
|
||||
/* 0x2894 */ s32 maxSimultaneousNotes; // (bad name)
|
||||
/* 0x2894 */ s32 numNotes;
|
||||
/* 0x2898 */ s16 tempoInternalToExternal;
|
||||
/* 0x289A */ s8 soundMode;
|
||||
/* 0x289C */ s32 totalTaskCnt;
|
||||
@@ -916,27 +831,27 @@ typedef struct {
|
||||
/* 0x2980 */ s32 audioErrorFlags;
|
||||
/* 0x2984 */ volatile u32 resetTimer;
|
||||
/* 0x2988 */ char unk_2988[0x8];
|
||||
/* 0x2990 */ SoundAllocPool audioSessionPool;
|
||||
/* 0x29A0 */ SoundAllocPool unkPool;
|
||||
/* 0x29B0 */ SoundAllocPool audioInitPool;
|
||||
/* 0x29C0 */ SoundAllocPool notesAndBuffersPool;
|
||||
/* 0x2990 */ AudioAllocPool audioSessionPool;
|
||||
/* 0x29A0 */ AudioAllocPool externalPool;
|
||||
/* 0x29B0 */ AudioAllocPool audioInitPool;
|
||||
/* 0x29C0 */ AudioAllocPool notesAndBuffersPool;
|
||||
/* 0x29D0 */ char unk_29D0[0x20]; // probably two unused pools
|
||||
/* 0x29F0 */ SoundAllocPool seqAndBankPool;
|
||||
/* 0x2A00 */ SoundAllocPool persistentCommonPool;
|
||||
/* 0x2A10 */ SoundAllocPool temporaryCommonPool;
|
||||
/* 0x2A20 */ SoundMultiPool seqLoadedPool;
|
||||
/* 0x2B30 */ SoundMultiPool bankLoadedPool;
|
||||
/* 0x2C40 */ SoundMultiPool unusedLoadedPool; // rename after we figure out what this is
|
||||
/* 0x2D50 */ SoundAllocPool unk_2D50;
|
||||
/* 0x2D60 */ SeqOrBankEntry unk_2D60[32];
|
||||
/* 0x2EE0 */ UnkPool unk_2EE0;
|
||||
/* 0x3174 */ UnkPool unk_3174;
|
||||
/* 0x29F0 */ AudioAllocPool cachePool;
|
||||
/* 0x2A00 */ AudioAllocPool persistentCommonPool;
|
||||
/* 0x2A10 */ AudioAllocPool temporaryCommonPool;
|
||||
/* 0x2A20 */ AudioCache seqCache;
|
||||
/* 0x2B30 */ AudioCache fontCache;
|
||||
/* 0x2C40 */ AudioCache sampleBankCache;
|
||||
/* 0x2D50 */ AudioAllocPool permanentPool;
|
||||
/* 0x2D60 */ AudioCacheEntry permanentCache[32];
|
||||
/* 0x2EE0 */ AudioSampleCache persistentSampleCache;
|
||||
/* 0x3174 */ AudioSampleCache temporarySampleCache;
|
||||
/* 0x3408 */ AudioPoolSplit4 sessionPoolSplit;
|
||||
/* 0x3418 */ AudioPoolSplit2 seqAndBankPoolSplit;
|
||||
/* 0x3418 */ AudioPoolSplit2 cachePoolSplit;
|
||||
/* 0x3420 */ AudioPoolSplit3 persistentCommonPoolSplit;
|
||||
/* 0x342C */ AudioPoolSplit3 temporaryCommonPoolSplit;
|
||||
/* 0x3438 */ u8 audioTableLoadStatus[0x30];
|
||||
/* 0x3468 */ u8 bankLoadStatus[0x30];
|
||||
/* 0x3438 */ u8 sampleFontLoadStatus[0x30];
|
||||
/* 0x3468 */ u8 fontLoadStatus[0x30];
|
||||
/* 0x3498 */ u8 seqLoadStatus[0x80];
|
||||
/* 0x3518 */ volatile u8 resetStatus;
|
||||
/* 0x3519 */ u8 audioResetSpecIdToLoad;
|
||||
@@ -946,7 +861,7 @@ typedef struct {
|
||||
/* 0x3528 */ u32 audioHeapSize;
|
||||
/* 0x352C */ Note* notes;
|
||||
/* 0x3530 */ SequencePlayer seqPlayers[4];
|
||||
/* 0x3AB0 */ SequenceChannelLayer sequenceLayers[64];
|
||||
/* 0x3AB0 */ SequenceLayer sequenceLayers[64];
|
||||
/* 0x5AB0 */ SequenceChannel sequenceChannelNone;
|
||||
/* 0x5B84 */ s32 noteSubEuOffset;
|
||||
/* 0x5B88 */ AudioListItem layerFreeList;
|
||||
@@ -954,7 +869,6 @@ typedef struct {
|
||||
/* 0x5BD8 */ u8 cmdWrPos;
|
||||
/* 0x5BD9 */ u8 cmdRdPos;
|
||||
/* 0x5BDA */ u8 cmdQueueFinished;
|
||||
/* 0x5BDB */ char unk_5BDB[0x1];
|
||||
/* 0x5BDC */ u16 unk_5BDC[4];
|
||||
/* 0x5BE4 */ OSMesgQueue* audioResetQueueP;
|
||||
/* 0x5BE8 */ OSMesgQueue* taskStartQueueP;
|
||||
@@ -982,9 +896,9 @@ typedef struct {
|
||||
} NoteSubAttributes; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u32 heap;
|
||||
/* 0x04 */ u32 mainPool;
|
||||
/* 0x08 */ u32 initPool;
|
||||
/* 0x00 */ u32 heapSize;
|
||||
/* 0x04 */ u32 initPoolSize;
|
||||
/* 0x08 */ u32 permanentPoolSize;
|
||||
} AudioContextInitSizes; // size = 0xC
|
||||
|
||||
typedef struct {
|
||||
@@ -1012,22 +926,18 @@ typedef struct {
|
||||
/* 0x020 */ f32 unk_20;
|
||||
/* 0x024 */ f32 unk_24;
|
||||
/* 0x028 */ u16 unk_28;
|
||||
/* 0x02A */ char unk_2A[0x2];
|
||||
/* 0x02C */ u32 unk_2C[8];
|
||||
/* 0x04C */ u8 unk_4C;
|
||||
/* 0x04D */ u8 unk_4D;
|
||||
/* 0x04E */ u8 unk_4E;
|
||||
/* 0x04F */ char unk_4F;
|
||||
/* 0x050 */ unk_50_s unk_50[0x10];
|
||||
/* 0x250 */ u16 unk_250;
|
||||
/* 0x252 */ u16 unk_252;
|
||||
/* 0x254 */ u16 unk_254;
|
||||
/* 0x256 */ u16 unk_256;
|
||||
/* 0x258 */ u16 unk_258;
|
||||
/* 0x25A */ char unk_25A[0x2];
|
||||
/* 0x25C */ u32 unk_25C;
|
||||
/* 0x260 */ u8 unk_260;
|
||||
/* 0x261 */ char unk_261[0x3];
|
||||
} unk_D_8016E750; // size = 0x264
|
||||
|
||||
typedef enum {
|
||||
@@ -1040,24 +950,33 @@ typedef enum {
|
||||
/* 6 */ BANK_VOICE
|
||||
} SoundBankTypes;
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ SFX_STATE_EMPTY,
|
||||
/* 1 */ SFX_STATE_QUEUED,
|
||||
/* 2 */ SFX_STATE_READY,
|
||||
/* 3 */ SFX_STATE_PLAYING_REFRESH,
|
||||
/* 4 */ SFX_STATE_PLAYING_1,
|
||||
/* 5 */ SFX_STATE_PLAYING_2
|
||||
} SfxState;
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ f32* posX;
|
||||
/* 0x04 */ f32* posY;
|
||||
/* 0x08 */ f32* posZ;
|
||||
/* 0x0C */ u8 unk_C;
|
||||
/* 0x0C */ u8 token;
|
||||
/* 0x10 */ f32* freqScale;
|
||||
/* 0x14 */ f32* unk_14;
|
||||
/* 0x14 */ f32* vol;
|
||||
/* 0x18 */ s8* reverbAdd;
|
||||
/* 0x1C */ f32 dist;
|
||||
/* 0x20 */ u32 priority; // lower is more prioritized
|
||||
/* 0x24 */ u8 sfxImportance;
|
||||
/* 0x26 */ u16 sfxParams;
|
||||
/* 0x28 */ u16 sfxId;
|
||||
/* 0x2A */ u8 unk_2A;
|
||||
/* 0x2B */ u8 unk_2B;
|
||||
/* 0x2A */ u8 state; // uses SfxState enum
|
||||
/* 0x2B */ u8 freshness;
|
||||
/* 0x2C */ u8 prev;
|
||||
/* 0x2D */ u8 next;
|
||||
/* 0x2E */ u8 unk_2E;
|
||||
/* 0x2E */ u8 channelIdx;
|
||||
/* 0x2F */ u8 unk_2F;
|
||||
} SoundBankEntry; // size = 0x30
|
||||
|
||||
@@ -1084,8 +1003,8 @@ typedef struct {
|
||||
|
||||
typedef struct {
|
||||
u32 priority; // lower is more prioritized
|
||||
u8 unk_4;
|
||||
} Struct_800F7CEC;
|
||||
u8 entryIndex;
|
||||
} ActiveSound;
|
||||
|
||||
typedef struct {
|
||||
u8 importance;
|
||||
|
||||
Reference in New Issue
Block a user