audio_load OK (#948)

* Match func_800DDB64

* Match func_800DC910

* remove stack comments

* Move nop padding to ucode_disas

* Partially label audio_synthesis

To some extent copied from sm64.

* cleanup

* Reverb and ReverbBits have nothing to do with reverbs

* review

* naming

* Revert "reduce diff"

This reverts commit cd4ac24d8809f3f8e5b0f91788bffd72b47d15af.

* Match func_800E283C

* Audio_DmaSampleData

* Warning fixes

* func_800E4198

* func_800E4918

* Fix compiler warnings in z_camera/db_camera

* cleanup

* terminology

* tiny bit of doc

* undo permuter_settings change

* Revert "Fix compiler warnings in z_camera/db_camera"

This reverts commit dfdfac47f2.

* review

Co-authored-by: zelda2774 <zelda2774@invalid>
This commit is contained in:
zelda2774
2021-09-07 20:14:09 +02:00
committed by GitHub
parent d63ed0c17a
commit 9c7d3688ac
9 changed files with 600 additions and 1303 deletions
+4 -4
View File
@@ -1936,7 +1936,7 @@ void func_800E0E90(s32 id);
void func_800E0EB4(s32 arg0, s32 id);
void func_800E1148(void);
void func_800E11F0(void);
void* Audio_DmaSampleData(u32 arg0, s32 arg1, s32 arg2, u8* arg3, s32 arg4);
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);
@@ -1955,11 +1955,11 @@ 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, u8* arg2);
s32 Audio_SyncLoadSeq(s32 seqIdx, u8* ramAddr, u8* arg2);
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, u8* arg2);
void func_800E4EEC(s32 tableType, s32 arg1, s8* arg2);
void func_800E4F58(void);
void func_800E4FB0(void);
AudioTask* func_800E4FE0(void);
-3
View File
@@ -3069,9 +3069,6 @@ extern FaultThreadStruct gFaultStruct;
//extern ? D_8016B6B5;
//extern ? D_8016B6B8;
extern OSMesgQueue D_8016B6E0;
//extern OSMesg D_8016B6F8;
extern u8* D_8016B738[];
//extern u32 D_8016B780;
//extern ? D_8016B7A8;
//extern ? D_8016B7AC;
//extern ? D_8016B7B0;
+113 -121
View File
@@ -731,25 +731,25 @@ typedef struct {
/* 0x1C */ u32 retMsg;
/* 0x20 */ OSMesgQueue* retQueue;
/* 0x24 */ OSMesgQueue msgQueue;
/* 0x3C */ OSMesg msg[1];
/* 0x3C */ OSMesg msg;
/* 0x40 */ OSIoMesg ioMesg;
} AsyncLoadReq; // size = 0x58
typedef struct {
/* 0x0000 */ u8 unk_00;
/* 0x0001 */ u8 unk_01;
/* 0x0002 */ u16 unk_02;
/* 0x0004 */ s32 unk_04;
/* 0x0008 */ s32 devAddr;
/* 0x000C */ u8* ramAddr;
/* 0x0010 */ u8* unk_10;
/* 0x0014 */ s32 status;
/* 0x0018 */ s32 size;
/* 0x001C */ s8* isDone;
/* 0x0020 */ AudioBankSample sample;
/* 0x0030 */ OSMesgQueue msgqueue;
/* 0x0048 */ OSMesg msg[1];
/* 0x004C */ OSIoMesg ioMesg;
/* 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;
/* 0x14 */ s32 status;
/* 0x18 */ s32 size;
/* 0x1C */ s8* isDone;
/* 0x20 */ AudioBankSample sample;
/* 0x30 */ OSMesgQueue msgqueue;
/* 0x48 */ OSMesg msg;
/* 0x4C */ OSIoMesg ioMesg;
} AudioSyncLoad; // size = 0x64
typedef struct {
@@ -758,79 +758,78 @@ typedef struct {
} unk_283C;
typedef struct {
/* 0x0000 */ s16 entryCnt;
/* 0x0002 */ s16 unk_02;
/* 0x0004 */ u32 romAddr;
/* 0x0008 */ char pad[0x8];
/* 0x00 */ s16 entryCnt;
/* 0x02 */ s16 unk_02;
/* 0x04 */ u32 romAddr;
/* 0x08 */ char pad[0x8];
} AudioTableHeader; // size = 0x10
typedef struct {
/* 0x0000 */ u32 romAddr;
/* 0x0004 */ u32 size;
/* 0x0008 */ s8 unk_08;
/* 0x0009 */ s8 type;
/* 0x000A */ char pad[6];
/* 0x00 */ u32 romAddr;
/* 0x04 */ u32 size;
/* 0x08 */ s8 unk_08;
/* 0x09 */ s8 type;
/* 0x0A */ char pad[6];
} SequenceTableEntry; // size = 0x10
typedef struct {
/* 0x0000 */ u32 romAddr;
/* 0x0004 */ u32 size;
/* 0x0008 */ u8 unk_08;
/* 0x0009 */ u8 unk_09;
/* 0x000A */ s16 unk_0A;
/* 0x000C */ s16 unk_0C;
/* 0x000E */ s16 unk_0E;
/* 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 {
/* 0x0000 */ u32 romAddr;
/* 0x0004 */ u32 size;
/* 0x0008 */ s8 unk_08;
/* 0x0009 */ s8 unk_09;
/* 0x000A */ char pad[6];
/* 0x00 */ u32 romAddr;
/* 0x04 */ u32 size;
/* 0x08 */ s8 unk_08;
/* 0x09 */ s8 unk_09;
/* 0x0A */ char pad[6];
} AudioTableEntry; // size = 0x10
typedef struct {
/* 0x0000 */ AudioTableHeader header;
/* 0x0010 */ SequenceTableEntry entries[1];
/* 0x00 */ AudioTableHeader header;
/* 0x10 */ SequenceTableEntry entries[1];
} SequenceTable; // size >= 0x20
typedef struct {
/* 0x0000 */ AudioTableHeader header;
/* 0x0010 */ AudioBankTableEntry entries[1];
/* 0x00 */ AudioTableHeader header;
/* 0x10 */ AudioBankTableEntry entries[1];
} AudioBankTable; // size >= 0x20
typedef struct {
/* 0x0000 */ AudioTableHeader header;
/* 0x0010 */ AudioTableEntry entries[1];
/* 0x00 */ AudioTableHeader header;
/* 0x10 */ AudioTableEntry entries[1];
} AudioTable; // size >= 0x20
typedef struct {
/* 0x0000 */ OSTask task;
/* 0x0040 */ OSMesgQueue* taskQueue;
/* 0x0044 */ void* unk_44; // probably a message that gets unused.
/* 0x0048 */ char unk_48[0x8];
/* 0x00 */ OSTask task;
/* 0x40 */ OSMesgQueue* taskQueue;
/* 0x44 */ void* unk_44; // probably a message that gets unused.
/* 0x48 */ char unk_48[0x8];
} AudioTask; // size = 0x50
typedef struct {
/* 0x0000 */ u8* ramAddr;
/* 0x0004 */ u32 devAddr;
/* 0x0008 */ u16 unk_08;
/* 0x000A */ u16 size;
/* 0x000C */ u8 unk_0C;
/* 0x000D */ u8 unk_0D;
/* 0x000E */ u8 unk_0E;
/* 0x000F */ u8 unk_0F;
/* 0x00 */ u8* ramAddr;
/* 0x04 */ u32 devAddr;
/* 0x08 */ u16 sizeUnused;
/* 0x0A */ u16 size;
/* 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 {
s32 unk_00;
s32 unk_04;
s32 unk_08;
s32 unk_0C;
s32 unk_10;
s32 unk_14;
} RelocInfo;
/* 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,
@@ -838,12 +837,6 @@ typedef enum {
/* 2 */ AUDIO_TABLE
} AudioTableType;
typedef struct {
Drum** drums;
AudioBankSound* sfx;
Instrument* instruments[1];
} unk_ldr;
typedef struct {
/* 0x0000 */ char unk_0000;
/* 0x0001 */ s8 numSynthesisReverbs;
@@ -854,7 +847,7 @@ typedef struct {
/* 0x0014 */ NoteSubEu* noteSubsEu;
/* 0x0018 */ SynthesisReverb synthesisReverbs[4];
/* 0x0B38 */ char unk_0B38[0x30];
/* 0x0B68 */ AudioBankSample* unk_B68[128];
/* 0x0B68 */ AudioBankSample* unk_0B68[128];
/* 0x0D68 */ AudioStruct0D68 unk_0D68[128];
/* 0x1768 */ s32 unk_1768;
/* 0x176C */ s32 unk_176C;
@@ -871,29 +864,28 @@ typedef struct {
/* 0x1E38 */ OSMesg unk_1E38[0x10];
/* 0x1E78 */ OSMesgQueue unk_1E78;
/* 0x1E90 */ OSMesg unk_1E90[0x10];
/* 0x1ED0 */ OSMesgQueue unk_1ED0;
/* 0x1EE8 */ OSMesg unk_1EE8[0x40];
/* 0x1FE8 */ OSIoMesg sampIoReq[1]; // unknown size
/* 0x2000 */ char unk_2000[0x5E8];
/* 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;
/* 0x2624 */ u32 unk_2624; // sample start idx?
/* 0x2624 */ u32 sampleDmaListSize1;
/* 0x2628 */ s32 unk_2628;
/* 0x262C */ u8 unk_262C[0x100];
/* 0x272C */ u8 unk_272C[0x100];
/* 0x282C */ u8 unk_282C;
/* 0x282D */ u8 unk_282D;
/* 0x282E */ u8 unk_282E;
/* 0x282F */ u8 unk_282F;
/* 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 */ char* unk_283Cb;
/* 0x283C */ u8* unk_283Cb;
};
/* 0x2840 */ u16 seqTabEntCnt; // channels used?
/* 0x2844 */ CtlEntry* ctlEntries;
@@ -908,7 +900,7 @@ typedef struct {
/* 0x2898 */ s16 tempoInternalToExternal;
/* 0x289A */ s8 soundMode;
/* 0x289C */ s32 totalTaskCnt;
/* 0x28A0 */ s32 sampleIoReqIdx;
/* 0x28A0 */ s32 curAudioFrameDmaCount;
/* 0x28A4 */ s32 rspTaskIdx;
/* 0x28A8 */ s32 curAIBufIdx;
/* 0x28AC */ Acmd* abiCmdBufs[2];
@@ -990,52 +982,52 @@ typedef struct {
} NoteSubAttributes; // size = 0x18
typedef struct {
/* 0x0000 */ u32 heap;
/* 0x0004 */ u32 mainPool;
/* 0x0008 */ u32 initPool;
/* 0x00 */ u32 heap;
/* 0x04 */ u32 mainPool;
/* 0x08 */ u32 initPool;
} AudioContextInitSizes; // size = 0xC
typedef struct {
/* 0x0000 */ f32 unk_00;
/* 0x0004 */ f32 unk_04;
/* 0x0008 */ f32 unk_08;
/* 0x000C */ u16 unk_0C;
/* 0x0010 */ f32 unk_10;
/* 0x0014 */ f32 unk_14;
/* 0x0018 */ f32 unk_18;
/* 0x001C */ u16 unk_1C;
/* 0x00 */ f32 unk_00;
/* 0x04 */ f32 unk_04;
/* 0x08 */ f32 unk_08;
/* 0x0C */ u16 unk_0C;
/* 0x10 */ f32 unk_10;
/* 0x14 */ f32 unk_14;
/* 0x18 */ f32 unk_18;
/* 0x1C */ u16 unk_1C;
} unk_50_s; // size = 0x20
typedef struct {
/* 0x0000 */ f32 volCur;
/* 0x0004 */ f32 volTarget;
/* 0x0008 */ f32 unk_08;
/* 0x000C */ u16 unk_0C;
/* 0x000E */ u8 volScales[0x4];
/* 0x0012 */ u8 volFadeTimer;
/* 0x0013 */ u8 fadeVolUpdate;
/* 0x0014 */ u32 unk_14;
/* 0x0018 */ u16 unk_18;
/* 0x001C */ f32 unk_1C;
/* 0x0020 */ f32 unk_20;
/* 0x0024 */ f32 unk_24;
/* 0x0028 */ u16 unk_28;
/* 0x002A */ char unk_2A[0x2];
/* 0x002C */ u32 unk_2C[8];
/* 0x004C */ u8 unk_4C;
/* 0x004D */ u8 unk_4D;
/* 0x004E */ u8 unk_4E;
/* 0x004F */ char unk_4F;
/* 0x0050 */ unk_50_s unk_50[0x10];
/* 0x0250 */ u16 unk_250;
/* 0x0252 */ u16 unk_252;
/* 0x0254 */ u16 unk_254;
/* 0x0256 */ u16 unk_256;
/* 0x0258 */ u16 unk_258;
/* 0x025A */ char unk_25A[0x2];
/* 0x025C */ u32 unk_25C;
/* 0x0260 */ u8 unk_260;
/* 0x0261 */ char unk_261[0x3];
/* 0x000 */ f32 volCur;
/* 0x004 */ f32 volTarget;
/* 0x008 */ f32 unk_08;
/* 0x00C */ u16 unk_0C;
/* 0x00E */ u8 volScales[0x4];
/* 0x012 */ u8 volFadeTimer;
/* 0x013 */ u8 fadeVolUpdate;
/* 0x014 */ u32 unk_14;
/* 0x018 */ u16 unk_18;
/* 0x01C */ f32 unk_1C;
/* 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 {