AudioMgr OK and Mostly Documented (#208)

* AudioMgr OK

* Cleanup

* Improve naming from PR Feedback
This commit is contained in:
engineer124 2021-07-20 09:49:29 +10:00 committed by GitHub
parent 594a3ceaff
commit 7b154c23e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 241 additions and 86 deletions

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);

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;

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;

View File

@ -447,7 +447,7 @@ SECTIONS
build/src/code/TwoHeadGfxArena.o(.text)
build/src/code/TwoHeadArena.o(.text)
build/asm/code/code_0x80172BC0.o(.text)
build/asm/code/code_0x80172C30.o(.text)
build/src/code/audioMgr.o(.text)
build/src/code/title_setup.o(.text)
build/src/code/game.o(.text)
build/asm/code/gamealloc.o(.text)
@ -549,7 +549,7 @@ SECTIONS
build/asm/code/code_data_z_fbdemo_circle.o(.data)
build/asm/code/code_data_z_play.o(.data)
build/asm/code/code_data_z_play_hireso.o(.data)
build/asm/code/code_data_0x80172C30.o(.data)
build/src/code/audioMgr.o(.data)
build/src/code/game.o(.data)
build/asm/code/code_data_graph.o(.data)
build/asm/code/code_data_padmgr.o(.data)
@ -623,7 +623,7 @@ SECTIONS
build/asm/code/code_rodata_z_play_hireso.o(.rodata)
build/asm/code/code_rodata_PreRender.o(.rodata)
build/asm/code/code_rodata_0x80172BC0.o(.rodata)
build/asm/code/code_rodata_0x80172C30.o(.rodata)
build/src/code/audioMgr.o(.rodata)
build/src/code/game.o(.rodata)
build/asm/code/code_rodata_graph.o(.rodata)
build/asm/code/code_rodata_main.o(.rodata)

View File

@ -6,7 +6,7 @@ volatile OSTime sIrqMgrResetTime = 0;
volatile OSTime sIrqMgrRetraceTime = 0;
s32 sIrqMgrRetraceCount = 0;
void IrqMgr_AddClient(IrqMgr* irqmgr, OSMesgQueueListNode* param_2, OSMesgQueue* param_3) {
void IrqMgr_AddClient(IrqMgr* irqmgr, IrqMgrClient* param_2, OSMesgQueue* param_3) {
u32 saveMask;
saveMask = osSetIntMask(1);
@ -25,9 +25,9 @@ void IrqMgr_AddClient(IrqMgr* irqmgr, OSMesgQueueListNode* param_2, OSMesgQueue*
}
}
void IrqMgr_RemoveClient(IrqMgr* irqmgr, OSMesgQueueListNode* remove) {
OSMesgQueueListNode* iter;
OSMesgQueueListNode* last;
void IrqMgr_RemoveClient(IrqMgr* irqmgr, IrqMgrClient* remove) {
IrqMgrClient* iter;
IrqMgrClient* last;
u32 saveMask;
iter = irqmgr->callbacks;
@ -52,7 +52,7 @@ void IrqMgr_RemoveClient(IrqMgr* irqmgr, OSMesgQueueListNode* remove) {
}
void IrqMgr_SendMesgForClient(IrqMgr* irqmgr, OSMesg msg) {
OSMesgQueueListNode* iter = irqmgr->callbacks;
IrqMgrClient* iter = irqmgr->callbacks;
while (iter != NULL) {
osSendMesg(iter->queue, msg, 0);
@ -61,7 +61,7 @@ void IrqMgr_SendMesgForClient(IrqMgr* irqmgr, OSMesg msg) {
}
void IrqMgr_JamMesgForClient(IrqMgr* irqmgr, OSMesg msg) {
OSMesgQueueListNode* iter = irqmgr->callbacks;
IrqMgrClient* iter = irqmgr->callbacks;
while (iter != NULL) {
if (iter->queue->validCount < iter->queue->msgCount) {

136
src/code/audioMgr.c Normal file
View File

@ -0,0 +1,136 @@
#include "global.h"
void func_80172C30(AudioMgr* audioMgr) {
AudioTask* task = audioMgr->rspTask;
if (audioMgr->rspTask->taskQueue != NULL) {
osSendMesg(task->taskQueue, NULL, OS_MESG_BLOCK);
}
}
void AudioMgr_HandleRetrace(AudioMgr* audioMgr) {
static s32 retryCount = 10;
AudioTask* rspTask;
s32 timerMsgVal = 666;
OSTimer timer;
s32 msg;
if (SREG(20) > 0) {
audioMgr->rspTask = NULL;
}
while (audioMgr->cmdQ.validCount != 0) {
osRecvMesg(&audioMgr->cmdQ, NULL, OS_MESG_NOBLOCK);
}
if (audioMgr->rspTask != NULL) {
audioMgr->audioTask.next = NULL;
audioMgr->audioTask.flags = OS_SC_NEEDS_RSP;
audioMgr->audioTask.framebuffer = NULL;
audioMgr->audioTask.list = audioMgr->rspTask->task;
audioMgr->audioTask.msgQ = &audioMgr->cmdQ;
audioMgr->audioTask.msg = NULL;
osSendMesg(&audioMgr->sched->cmdQ, &audioMgr->audioTask, OS_MESG_BLOCK);
Sched_SendEntryMsg(audioMgr->sched);
}
if (SREG(20) >= 2) {
rspTask = NULL;
} else {
rspTask = func_80192BE0();
}
if (audioMgr->rspTask != NULL) {
while (true) {
osSetTimer(&timer, OS_USEC_TO_CYCLES(32000), 0, &audioMgr->cmdQ, (OSMesg)timerMsgVal);
osRecvMesg(&audioMgr->cmdQ, (OSMesg*)&msg, OS_MESG_BLOCK);
osStopTimer(&timer);
if (msg == timerMsgVal) {
Fault_Log("AUDIO SP TIMEOUT %08x %08x\n", audioMgr->rspTask, audioMgr->rspTask->task);
if (retryCount >= 0) {
retryCount--;
func_8017703C(audioMgr->sched);
} else {
Fault_Log("audioMgr.c:もうダメ!死ぬ!\n");
osDestroyThread(NULL);
break;
}
} else {
break;
}
}
func_80172C30(audioMgr);
}
audioMgr->rspTask = rspTask;
}
void AudioMgr_HandlePRENMI(AudioMgr* audioMgr) {
Audio_PreNMI();
}
void AudioMgr_ThreadEntry(void* arg) {
AudioMgr* audioMgr = (AudioMgr*)arg;
IrqMgrClient irqClient;
s16* msg = NULL;
s32 exit;
func_801A4C30();
func_80190B38(DmaMgr_DmaCallback0);
func_801A4D00();
osSendMesg(&audioMgr->lockMsgQ, NULL, OS_MESG_BLOCK);
IrqMgr_AddClient(audioMgr->irqMgr, &irqClient, &audioMgr->interruptMsgQ);
exit = false;
while (!exit) {
osRecvMesg(&audioMgr->interruptMsgQ, (OSMesg*)&msg, OS_MESG_BLOCK);
switch (*msg) {
case OS_SC_RETRACE_MSG:
AudioMgr_HandleRetrace(audioMgr);
while (audioMgr->interruptMsgQ.validCount != 0) {
osRecvMesg(&audioMgr->interruptMsgQ, (OSMesg*)&msg, OS_MESG_BLOCK);
switch (*msg) {
case OS_SC_RETRACE_MSG:
break;
case OS_SC_PRE_NMI_MSG:
AudioMgr_HandlePRENMI(audioMgr);
break;
case OS_SC_NMI_MSG:
exit = true;
break;
}
}
break;
case OS_SC_PRE_NMI_MSG:
AudioMgr_HandlePRENMI(audioMgr);
break;
case OS_SC_NMI_MSG:
exit = true;
break;
}
}
IrqMgr_RemoveClient(audioMgr->irqMgr, &irqClient);
}
void AudioMgr_Unlock(AudioMgr* audioMgr) {
osRecvMesg(&audioMgr->lockMsgQ, NULL, OS_MESG_BLOCK);
}
void AudioMgr_Init(AudioMgr* audioMgr, void* stack, OSPri pri, OSId id, SchedContext* sched, IrqMgr* irqMgr) {
bzero(audioMgr, sizeof(AudioMgr));
audioMgr->sched = sched;
audioMgr->irqMgr = irqMgr;
audioMgr->rspTask = NULL;
osCreateMesgQueue(&audioMgr->cmdQ, audioMgr->cmdMsgBuf, ARRAY_COUNT(audioMgr->cmdMsgBuf));
osCreateMesgQueue(&audioMgr->interruptMsgQ, audioMgr->interruptMsgBuf, ARRAY_COUNT(audioMgr->interruptMsgBuf));
osCreateMesgQueue(&audioMgr->lockMsgQ, audioMgr->lockMsgBuf, ARRAY_COUNT(audioMgr->lockMsgBuf));
osCreateThread(&audioMgr->thread, id, AudioMgr_ThreadEntry, audioMgr, stack, pri);
osStartThread(&audioMgr->thread);
}

View File

@ -3120,11 +3120,11 @@
0x80172B9C:("THA_Dt",),
0x80172BC0:("func_80172BC0",),
0x80172C30:("func_80172C30",),
0x80172C68:("func_80172C68",),
0x80172EAC:("Audio_Stop",),
0x80172ED0:("Audio_ThreadEntry",),
0x80173048:("Audio_WaitForInit",),
0x80173074:("Audio_Start",),
0x80172C68:("AudioMgr_HandleRetrace",),
0x80172EAC:("AudioMgr_HandlePRENMI",),
0x80172ED0:("AudioMgr_ThreadEntry",),
0x80173048:("AudioMgr_Unlock",),
0x80173074:("AudioMgr_Init",),
0x80173130:("TitleSetup_GameStateResetContext",),
0x801732DC:("TitleSetup_InitImpl",),
0x8017332C:("TitleSetup_Destroy",),
@ -3218,7 +3218,7 @@
0x80176C24:("func_80176C24",),
0x80176CF4:("func_80176CF4",),
0x80176F2C:("func_80176F2C",),
0x80177018:("func_80177018",),
0x80177018:("Sched_SendEntryMsg",),
0x8017703C:("func_8017703C",),
0x80177060:("func_80177060",),
0x80177084:("func_80177084",),
@ -4005,7 +4005,7 @@
0x801A4348:("func_801A4348",),
0x801A4380:("func_801A4380",),
0x801A4428:("func_801A4428",),
0x801A44A4:("func_801A44A4",),
0x801A44A4:("Audio_PreNMI",),
0x801A44C4:("func_801A44C4",),
0x801A44D4:("func_801A44D4",),
0x801A46F8:("func_801A46F8",),

View File

@ -351,7 +351,7 @@
0x801727F0:"TwoHeadGfxArena",
0x80172A00:"TwoHeadArena",
0x80172BC0:"",
0x80172C30:"",
0x80172C30:"audioMgr",
0x80173130:"game",
0x80173BF0:"gamealloc",
0x80173D30:"graph",

View File

@ -2265,7 +2265,7 @@
0x801D1520:("gScreenWidth","s32","",0x4),
0x801D1524:("gScreenHeight","s32","",0x4),
0x801D1528:("startHeapSize","UNK_TYPE4","",0x4),
0x801D1530:("padmgrContext","PadmgrThreadStruct*","",0x4),
0x801D1530:("padmgrContext","PadMgr*","",0x4),
0x801D1534:("controllerInputsCaptured","UNK_TYPE4","",0x4),
0x801D1538:("D_801D1538","UNK_TYPE4","",0x4),
0x801D1540:("D_801D1540","UNK_PTR","",0x4),
@ -4210,8 +4210,8 @@
0x801F8160:("siEventCallbackQueue","OSMesgQueue","",0x18),
0x801F8178:("siEventCallbackBuffer","OSMesg","[1]",0x4),
0x801F8180:("gSegments","u32","[16]",0x40),
0x801F81C0:("schedContext","SchedThreadStruct","",0x338),
0x801F84F8:("mainIrqmgrCallbackNode","OSMesgQueueListNode","",0x8),
0x801F81C0:("schedContext","SchedContext","",0x338),
0x801F84F8:("mainIrqmgrCallbackNode","IrqMgrClient","",0x8),
0x801F8500:("mainIrqmgrCallbackQueue","OSMesgQueue","",0x18),
0x801F8518:("mainIrqCallbackBuffer","OSMesg","[60]",0xf0),
0x801F8608:("graphOSThread","OSThread","",0x1b0),
@ -4223,8 +4223,8 @@
0x801FB2D8:("schedStackEntry","StackEntry","",0x1c),
0x801FB2F8:("audioStackEntry","StackEntry","",0x1c),
0x801FB318:("padmgrStackEntry","StackEntry","",0x1c),
0x801FB338:("audioContext","AudioThreadStruct","",0x2e0),
0x801FB620:("D_801FB620","PadmgrThreadStruct","",0x480),
0x801FB338:("audioContext","AudioMgr","",0x2e0),
0x801FB620:("D_801FB620","PadMgr","",0x480),
0x801FBAA0:("D_801FBAA0","UNK_TYPE1","",0x1),
0x801FBAB0:("D_801FBAB0","UNK_TYPE1","",0x1),
0x801FBAB4:("D_801FBAB4","UNK_TYPE1","",0x1),