AudioMgr OK and Mostly Documented (#208)

* AudioMgr OK

* Cleanup

* Improve naming from PR Feedback
This commit is contained in:
engineer124
2021-07-19 19:49:29 -04:00
committed by GitHub
parent 594a3ceaff
commit 7b154c23e1
9 changed files with 241 additions and 86 deletions
+30 -30
View File
@@ -37,8 +37,8 @@ void* Yaz0_FirstDMA(void);
void* Yaz0_NextDMA(void* curSrcPos);
s32 Yaz0_DecompressImpl(u8* hdr, u8* dst);
void Yaz0_Decompress(u32 romStart, void* dst, u32 size);
void IrqMgr_AddClient(IrqMgr* irqmgr, OSMesgQueueListNode* param_2, OSMesgQueue* param_3);
void IrqMgr_RemoveClient(IrqMgr* irqmgr, OSMesgQueueListNode* remove);
void IrqMgr_AddClient(IrqMgr* irqmgr, IrqMgrClient* add, OSMesgQueue* msgQ);
void IrqMgr_RemoveClient(IrqMgr* irqmgr, IrqMgrClient* remove);
void IrqMgr_SendMesgForClient(IrqMgr* irqmgr, OSMesg msg);
void IrqMgr_JamMesgForClient(IrqMgr* irqmgr, OSMesg msg);
void IrqMgr_HandlePreNMI(IrqMgr* irqmgr);
@@ -174,7 +174,7 @@ void func_800863AC(u32 param_1, s32 param_2, s32 param_3, UNK_PTR param_4);
// void func_800864EC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
// void func_80086588(void);
void StartHeap_Init(u32 base, u32 size);
s32 func_80086620(OSMesgQueue* param_1, PadmgrThreadStruct* param_2, OSContStatus* param_3);
s32 func_80086620(OSMesgQueue* param_1, PadMgr* param_2, OSContStatus* param_3);
// void func_80086760(void);
// void func_80086794(void);
// void func_800867B4(void);
@@ -3143,12 +3143,12 @@ void THA_Init(TwoHeadArena* tha);
void THA_Ct(TwoHeadArena* tha, void* ptr, u32 size);
void THA_Dt(TwoHeadArena* tha);
void func_80172BC0(void);
void func_80172C30(AudioThreadStruct* audio);
void func_80172C68(AudioThreadStruct* audio);
// void Audio_Stop(void);
void Audio_ThreadEntry(AudioThreadStruct* audio);
void Audio_WaitForInit(AudioThreadStruct* param_1);
void Audio_Start(AudioThreadStruct* audio, s32* audioThreadStackEnd, OSPri pri, OSId id, SchedThreadStruct* sched, IrqMgr* irq);
void func_80172C30(AudioMgr* audioMgr);
void AudioMgr_HandleRetrace(AudioMgr* audioMgr);
void AudioMgr_HandlePRENMI(AudioMgr* audioMgr);
void AudioMgr_ThreadEntry(void* arg);
void AudioMgr_Unlock(AudioMgr* audioMgr);
void AudioMgr_Init(AudioMgr* audioMgr, void* stack, OSPri pri, OSId id, SchedContext* sched, IrqMgr* irqMgr);
void TitleSetup_GameStateResetContext(void);
void TitleSetup_InitImpl(GameState* gameState);
void TitleSetup_Destroy(GameState* gameState);
@@ -3223,32 +3223,32 @@ void Padmgr_CalcStickEdges(Input* input);
void func_80175E68(Input* input, s32 param_2);
void Padmgr_GetInput(Input* input, s32 param_2);
void Padmgr_GetInput2(Input* input, s32 param_2);
void Padmgr_ThreadEntry(PadmgrThreadStruct* padmgr);
void Padmgr_ThreadEntry(PadMgr* padmgr);
void Padmgr_Start(OSMesgQueue* siEventCallbackQueue, IrqMgr* irqmgr, OSId threadId, OSPri threadPri, void* stack);
// void func_80176280(void);
// void func_80176314(void);
void Sched_Nop80176364(SchedThreadStruct* sched);
void func_80176370(SchedThreadStruct* sched);
void func_80176394(SchedThreadStruct* sched);
void func_801764F0(SchedThreadStruct* sched);
void func_8017668C(SchedThreadStruct* sched, UNK_PTR puParm2);
void Sched_Nop80176364(SchedContext* sched);
void func_80176370(SchedContext* sched);
void func_80176394(SchedContext* sched);
void func_801764F0(SchedContext* sched);
void func_8017668C(SchedContext* sched, UNK_PTR puParm2);
// void func_801766F0(void);
// void func_80176748(void);
// void func_801767B8(void);
// void func_801768E0(void);
// void func_8017691C(void);
// void func_80176988(void);
void func_80176B34(SchedThreadStruct* sched);
void func_80176C24(SchedThreadStruct* sched);
void func_80176CF4(SchedThreadStruct* sched);
void func_80176F2C(SchedThreadStruct* sched);
void func_80177018(SchedThreadStruct* sched);
void func_8017703C(SchedThreadStruct* sched);
void func_80177060(SchedThreadStruct* sched);
void func_80177084(SchedThreadStruct* sched);
void Sched_ThreadEntry(SchedThreadStruct* sched);
void func_80176B34(SchedContext* sched);
void func_80176C24(SchedContext* sched);
void func_80176CF4(SchedContext* sched);
void func_80176F2C(SchedContext* sched);
void Sched_SendEntryMsg(SchedContext* sched);
void func_8017703C(SchedContext* sched);
void func_80177060(SchedContext* sched);
void func_80177084(SchedContext* sched);
void Sched_ThreadEntry(SchedContext* sched);
// void func_80177280(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE1 param_5, UNK_TYPE1 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12);
// void Sched_Start(SchedThreadStruct* sched, void* stack, OSPri pri, UNK_TYPE4 param_4, UNK_TYPE4 param_5, IrqMgr* irqmgrStruct);
// void Sched_Start(SchedContext* sched, void* stack, OSPri pri, UNK_TYPE4 param_4, UNK_TYPE4 param_5, IrqMgr* irqmgrStruct);
// void func_80177390(void);
void func_801773A0(void* arg0);
void func_801773C4(void* arg0);
@@ -3644,7 +3644,7 @@ s32 func_80185F90(u32 param_1);
// void func_8019075C(void);
// void func_8019077C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
// void func_80190B08(void);
// void func_80190B38(void);
void func_80190B38(void* callback);
// void func_80190B50(void);
// void func_80190BB0(void);
// void func_80190F50(void);
@@ -3676,7 +3676,7 @@ s32 func_80185F90(u32 param_1);
// void func_80192AE8(void);
// void func_80192B54(void);
// void func_80192BAC(void);
// void func_80192BE0(void);
AudioTask* func_80192BE0(void);
// void func_80192C00(void);
// void func_8019319C(void);
// void func_801936D8(void);
@@ -3967,7 +3967,7 @@ void audio_setBGM(u32 bgmID);
// void func_801A4348(void);
// void func_801A4380(void);
// void func_801A4428(void);
// void func_801A44A4(void);
void Audio_PreNMI(void);
// void func_801A44C4(void);
// void func_801A44D4(void);
// void func_801A46F8(void);
@@ -3977,9 +3977,9 @@ void audio_setBGM(u32 bgmID);
// void func_801A48E0(void);
// void func_801A4A28(void);
// void func_801A4B80(void);
// void func_801A4C30(void);
void func_801A4C30(void);
// void func_801A4C54(void);
// void func_801A4D00(void);
void func_801A4D00(void);
// void func_801A4D50(void);
// void func_801A4DA4(void);
// void func_801A4DF4(void);
+5 -5
View File
@@ -1669,7 +1669,7 @@ extern u32 D_801D1514[3];
extern s32 gScreenWidth;
extern s32 gScreenHeight;
// extern UNK_TYPE4 startHeapSize;
extern PadmgrThreadStruct* padmgrContext;
extern PadMgr* padmgrContext;
// extern UNK_TYPE4 controllerInputsCaptured;
// extern UNK_TYPE4 D_801D1538;
extern UNK_PTR D_801D1540;
@@ -3443,8 +3443,8 @@ extern u64 lastRenderFrameTimestamp;
extern OSMesgQueue siEventCallbackQueue;
extern OSMesg siEventCallbackBuffer[1];
extern u32 gSegments[NUM_SEGMENTS];
extern SchedThreadStruct schedContext;
extern OSMesgQueueListNode mainIrqmgrCallbackNode;
extern SchedContext schedContext;
extern IrqMgrClient mainIrqmgrCallbackNode;
extern OSMesgQueue mainIrqmgrCallbackQueue;
extern OSMesg mainIrqCallbackBuffer[60];
extern OSThread graphOSThread;
@@ -3456,8 +3456,8 @@ extern StackEntry graphStackEntry;
extern StackEntry schedStackEntry;
extern StackEntry audioStackEntry;
extern StackEntry padmgrStackEntry;
extern AudioThreadStruct audioContext;
extern PadmgrThreadStruct D_801FB620;
extern AudioMgr audioContext;
extern PadMgr D_801FB620;
// extern UNK_TYPE1 D_801FBAA0;
// extern UNK_TYPE1 D_801FBAB0;
// extern UNK_TYPE1 D_801FBAB4;
+48 -29
View File
@@ -1221,8 +1221,6 @@ struct FileChooseContext {
/* 0x24550 */ s16 unk_24550;
}; // size = 0x24558
typedef struct AudioThreadStruct AudioThreadStruct;
typedef struct GlobalContext GlobalContext;
typedef s32 (*ColChkResetFunc)(GlobalContext*, Collider*);
@@ -1373,10 +1371,10 @@ typedef enum {
QUAKE2_SETUP,
} Quake2State;
typedef struct OSMesgQueueListNode_t {
/* 0x0 */ struct OSMesgQueueListNode_t* next;
typedef struct IrqMgrClient_t {
/* 0x0 */ struct IrqMgrClient_t* next;
/* 0x4 */ OSMesgQueue* queue;
} OSMesgQueueListNode; // size = 0x8
} IrqMgrClient; // size = 0x8
typedef struct {
/* 0x000 */ OSScMsg verticalRetraceMesg;
@@ -1385,7 +1383,7 @@ typedef struct {
/* 0x060 */ OSMesgQueue irqQueue;
/* 0x078 */ OSMesg irqBuffer[8];
/* 0x098 */ OSThread thread;
/* 0x248 */ OSMesgQueueListNode* callbacks;
/* 0x248 */ IrqMgrClient* callbacks;
/* 0x24C */ u8 prenmiStage;
/* 0x250 */ OSTime lastPrenmiTime;
/* 0x258 */ OSTimer prenmiTimer;
@@ -1402,7 +1400,7 @@ typedef struct {
/* 0x04C */ OSMesgQueue siEventCallbackQueue;
/* 0x064 */ OSMesgQueue lock;
/* 0x07C */ OSMesgQueue irqmgrCallbackQueue;
/* 0x094 */ OSMesgQueueListNode irqmgrCallbackQueueNode;
/* 0x094 */ IrqMgrClient irqmgrCallbackQueueNode;
/* 0x09C */ IrqMgr* irqmgr;
/* 0x0A0 */ OSThread thread;
/* 0x250 */ Input input[4];
@@ -1413,13 +1411,23 @@ typedef struct {
/* 0x47D */ u8 unk47D;
/* 0x47E */ u8 hasStopped;
/* 0x47F */ UNK_TYPE1 pad47F[0x1];
} PadmgrThreadStruct; // size = 0x480
} PadMgr; // size = 0x480
#define OS_SC_NEEDS_RDP 0x0001
#define OS_SC_NEEDS_RSP 0x0002
#define OS_SC_DRAM_DLIST 0x0004
#define OS_SC_PARALLEL_TASK 0x0010
#define OS_SC_LAST_TASK 0x0020
#define OS_SC_SWAPBUFFER 0x0040
#define OS_SC_RCP_MASK 0x0003
#define OS_SC_TYPE_MASK 0x0007
typedef struct {
/* 0x000 */ OSMesgQueue unk0;
/* 0x018 */ UNK_TYPE4 unk18[64];
/* 0x118 */ OSMesgQueue unk118;
/* 0x130 */ UNK_TYPE4 unk130[8];
/* 0x000 */ OSMesgQueue interruptQ;
/* 0x018 */ OSMesg intMsgBuf[64];
/* 0x118 */ OSMesgQueue cmdQ;
/* 0x130 */ OSMesg cmdMsgBuf[8];
/* 0x150 */ OSThread thread;
/* 0x300 */ UNK_TYPE4 unk300;
/* 0x304 */ UNK_TYPE4 unk304;
@@ -1433,23 +1441,8 @@ typedef struct {
/* 0x324 */ UNK_TYPE4 unk324;
/* 0x328 */ UNK_TYPE1 pad328[0x7];
/* 0x32F */ s8 unk32F;
/* 0x330 */ OSMesgQueueListNode unk330;
} SchedThreadStruct; // size = 0x338
struct AudioThreadStruct {
/* 0x000 */ IrqMgr* irqmgr;
/* 0x004 */ SchedThreadStruct* sched;
/* 0x008 */ UNK_TYPE1 pad8[0x58];
/* 0x060 */ UNK_TYPE4 unk60;
/* 0x064 */ OSMesgQueue irqQueue;
/* 0x07C */ OSMesg irqBuffer[30];
/* 0x0F4 */ OSMesgQueue unkF4;
/* 0x10C */ UNK_TYPE4 unk10C;
/* 0x110 */ OSMesgQueue initDoneCallback;
/* 0x128 */ OSMesg initDoneCallbackMsgBuffer[1];
/* 0x12C */ UNK_TYPE1 pad12C[0x4];
/* 0x130 */ OSThread thread;
}; // size = 0x2E0
/* 0x330 */ IrqMgrClient irqClient;
} SchedContext; // size = 0x338
typedef struct StackEntry_t {
/* 0x00 */ struct StackEntry_t* next;
@@ -1485,6 +1478,32 @@ struct ActorListEntry {
/* 0x8 */ UNK_TYPE1 pad8[0x4];
}; // size = 0xC
#define OS_SC_RETRACE_MSG 1
#define OS_SC_DONE_MSG 2
#define OS_SC_NMI_MSG 3 // name is made up, 3 is OS_SC_RDP_DONE_MSG in the original sched.c
#define OS_SC_PRE_NMI_MSG 4
typedef struct {
/* 0x0000 */ OSTask task;
/* 0x0040 */ OSMesgQueue* taskQueue;
/* 0x0044 */ char unk_44[0xC];
} AudioTask; // size = 0x50
typedef struct {
/* 0x000 */ IrqMgr* irqMgr;
/* 0x004 */ SchedContext* sched;
/* 0x008 */ OSScTask audioTask;
/* 0x060 */ AudioTask* rspTask;
/* 0x064 */ OSMesgQueue interruptMsgQ;
/* 0x07C */ OSMesg interruptMsgBuf[30];
/* 0x0F4 */ OSMesgQueue cmdQ;
/* 0x10C */ OSMesg cmdMsgBuf[1];
/* 0x110 */ OSMesgQueue lockMsgQ;
/* 0x128 */ OSMesg lockMsgBuf[1];
/* 0x12C */ UNK_TYPE1 pad_12C[0x4];
/* 0x130 */ OSThread thread;
} AudioMgr; // size = 0x2E0
typedef struct {
/* 0x00 */ MtxF displayMatrix;
/* 0x40 */ Actor* actor;