From bb4123c073c13e105fd0c602165343cad4f3f1a2 Mon Sep 17 00:00:00 2001 From: rozlette Date: Wed, 22 Jan 2020 21:47:05 -0600 Subject: [PATCH] Decompile irqmgr --- include/functions.h | 36 +++---- include/structs.h | 14 +-- include/variables.h | 10 +- linker_scripts/code_script.txt | 4 +- src/boot_O2_g3/idle.c | 2 +- src/boot_O2_g3/irqmgr.c | 173 +++++++++++++++++++++++++++++++++ src/boot_O2_g3/z_std_dma.c | 2 +- tables/functions.py | 35 ++++--- tables/objects.py | 2 +- tables/variables.py | 10 +- 10 files changed, 232 insertions(+), 56 deletions(-) create mode 100644 src/boot_O2_g3/irqmgr.c diff --git a/include/functions.h b/include/functions.h index 9741deed81..73d420151c 100644 --- a/include/functions.h +++ b/include/functions.h @@ -30,18 +30,18 @@ u8* Yaz0_LoadFirstChunk(void); // func_80080E30 u8* Yaz0_LoadNextChunk(void* currDecompPos); // func_80080ED0 s32 Yaz0_Decompress(u8* src, u8* dest); // func_80080FF0 void Yaz0_LoadAndDecompressFile(u32 romStart, u32 vramStart, u32 size); // func_80081178 -void Irqmgr_AddCallback(Irqmgr* irqmgr, OSMesgQueueListNode* param_2, OSMesgQueue* param_3); // func_80081250 -void Irqmgr_RemoveCallback(Irqmgr* irqmgr, OSMesgQueueListNode* puParm2); // func_800812DC -void Irqmgr_NotifyAllCallbacks(Irqmgr* irqmgr, s16* msg); // func_80081368 -void Irqmgr_NotifyAllCallbacksWithCapacity(Irqmgr* irqmgr, OSMesg msg); // func_800813B8 -void Irqmgr_HandlePrenmi1(Irqmgr* irqmgr); // func_8008141C -void Irqmgr_CheckThreadStatus2(void); // func_800814B4 -void Irqmgr_HandlePrenmi2(Irqmgr* irqmgr); // func_800814D4 -void Irqmgr_HandlePrenmi3(Irqmgr* irqmgr); // func_80081550 -void Irqmgr_CheckThreadStatus(Irqmgr* irqmgr); // func_800815A8 -void Irqmgr_HandleFrame(Irqmgr* irqmgr); // func_800815CC -void Irqmgr_ThreadEntry(Irqmgr* irqmgr); // func_80081684 -void Irqmgr_Start(Irqmgr* irqmgr, void* stack, OSPri pri, u8 retraceCount); // func_80081754 +void IrqMgr_AddCallback(IrqMgr* irqmgr, OSMesgQueueListNode* param_2, OSMesgQueue* param_3); // func_80081250 +void IrqMgr_RemoveCallback(IrqMgr* irqmgr, OSMesgQueueListNode* remove); // func_800812DC +void IrqMgr_NotifyAllCallbacks(IrqMgr* irqmgr, OSMesg msg); // func_80081368 +void IrqMgr_NotifyAllCallbacksWithCapacity(IrqMgr* irqmgr, OSMesg msg); // func_800813B8 +void IrqMgr_HandlePrenmi1(IrqMgr* irqmgr); // func_8008141C +void IrqMgr_CheckThreadStatusImpl(void); // func_800814B4 +void IrqMgr_HandlePrenmi2(IrqMgr* irqmgr); // func_800814D4 +void IrqMgr_HandlePrenmi3(IrqMgr* irqmgr); // func_80081550 +void IrqMgr_CheckThreadStatus(IrqMgr* irqmgr); // func_800815A8 +void IrqMgr_HandleFrame(IrqMgr* irqmgr); // func_800815CC +void IrqMgr_ThreadEntry(IrqMgr* irqmgr); // func_80081684 +void IrqMgr_Start(IrqMgr* irqmgr, void* stack, OSPri pri, u8 retraceCount); // func_80081754 void CIC6105_Nop80081820(void); // func_80081820 void CIC6105_Nop80081828(void); // func_80081828 void CIC6105_PrintRomInfo(void); // func_80081830 @@ -487,7 +487,7 @@ void func_80096410(void); // func_80096410 void func_800964D0(void); // func_800964D0 s32 __osSpSetPc(u32 data); // func_80096510 void func_80096540(void); // func_80096540 -// UNK_RET func_80096770(UNK_ARGS); +void FUN_80096770(int param_1, UNK_PTR param_2, UNK_PTR param_3); // func_80096770 void func_800967A0(void); // func_800967A0 u32 __osGetWatchLo(void); // func_80096810 void __osSetWatchLo(u32 value); // func_80096820 @@ -3095,7 +3095,7 @@ void func_80172C68(AudioThreadStruct* audio); // func_80172C68 void Audio_Stop(void); // func_80172EAC void Audio_ThreadEntry(AudioThreadStruct* audio); // func_80172ED0 void Audio_WaitForInit(AudioThreadStruct* param_1); // func_80173048 -void Audio_Start(AudioThreadStruct* audio, s32* audioThreadStackEnd, OSPri pri, OSId id, SchedThreadStruct* sched, Irqmgr* irq); // func_80173074 +void Audio_Start(AudioThreadStruct* audio, s32* audioThreadStackEnd, OSPri pri, OSId id, SchedThreadStruct* sched, IrqMgr* irq); // func_80173074 void func_80173130(void); // func_80173130 void Initial_Init2(ContextCommon* ctxt); // func_801732DC void Initial_Fini(void); // func_8017332C @@ -3171,7 +3171,7 @@ void func_80175E68(Input* input, int param_2); // func_80175E68 void Padmgr_GetInput(Input* input, int param_2); // func_80175F98 void Padmgr_GetInput2(Input* input, int param_2); // func_80175FD4 void Padmgr_ThreadEntry(PadmgrThreadStruct* padmgr); // func_80176010 -void Padmgr_Start(OSMesgQueue* siEventCallbackQueue, Irqmgr* irqmgr, OSId threadId, OSPri threadPri, void* stack); // func_80176194 +void Padmgr_Start(OSMesgQueue* siEventCallbackQueue, IrqMgr* irqmgr, OSId threadId, OSPri threadPri, void* stack); // func_80176194 void func_80176280(void); // func_80176280 void func_80176314(void); // func_80176314 void Sched_Nop80176364(SchedThreadStruct* sched); // func_80176364 @@ -3195,7 +3195,7 @@ void func_80177060(SchedThreadStruct* sched); // func_80177060 void func_80177084(SchedThreadStruct* sched); // func_80177084 void Sched_ThreadEntry(SchedThreadStruct* sched); // func_8017715C 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); // func_80177280 -void Sched_Start(SchedThreadStruct* sched, void* stack, OSPri pri, UNK_TYPE4 param_4, UNK_TYPE4 param_5, Irqmgr* irqmgrStruct); // func_801772A0 +void Sched_Start(SchedThreadStruct* sched, void* stack, OSPri pri, UNK_TYPE4 param_4, UNK_TYPE4 param_5, IrqMgr* irqmgrStruct); // func_801772A0 void func_80177390(void); // func_80177390 void func_801773A0(void); // func_801773A0 void func_801773C4(void); // func_801773C4 @@ -3739,8 +3739,8 @@ void func_8019AB40(void); // func_8019AB40 void func_8019AC10(void); // func_8019AC10 void func_8019ACEC(void); // func_8019ACEC void func_8019ADBC(void); // func_8019ADBC -// UNK_RET func_8019AE40(UNK_ARGS); -// UNK_RET func_8019AEC0(UNK_ARGS); +void FUN_8019ae40(int param_1, int param_2, unsigned int param_3, int param_4); // func_8019AE40 +void FUN_8019aec0(UNK_PTR param_1, UNK_PTR param_2); // func_8019AEC0 void func_8019AF00(void); // func_8019AF00 void func_8019AF58(void); // func_8019AF58 void func_8019AFE8(void); // func_8019AFE8 diff --git a/include/structs.h b/include/structs.h index d0fbfe3388..41bd4a214c 100644 --- a/include/structs.h +++ b/include/structs.h @@ -1636,7 +1636,7 @@ struct HeapNode { /* 0xC */ HeapNode* prev; }; -typedef struct Irqmgr Irqmgr; +typedef struct IrqMgr IrqMgr; typedef struct AudioThreadStruct AudioThreadStruct; @@ -1654,8 +1654,8 @@ struct EffectTableInfo { typedef struct OSMesgQueueListNode OSMesgQueueListNode; -struct Irqmgr { -/* 0x000 */ s16 verticalRetraceMesg; +struct IrqMgr { +/* 0x000 */ s16 verticalRetraceMesg; // Is this a struct of size 0x20? (same below) /* 0x002 */ UNK_TYPE1 pad2[30]; /* 0x020 */ s16 prenmi1Msg; /* 0x022 */ UNK_TYPE1 pad22[30]; @@ -1665,10 +1665,10 @@ struct Irqmgr { /* 0x078 */ UNK_TYPE4 irqBuffer[8]; /* 0x098 */ OSThread thread; /* 0x248 */ OSMesgQueueListNode* callbacks; -/* 0x24C */ s8 prenmiStage; +/* 0x24C */ u8 prenmiStage; /* 0x24D */ UNK_TYPE1 pad24D[3]; /* 0x250 */ OSTime lastPrenmiTime; -/* 0x258 */ OSTimer unk258; +/* 0x258 */ OSTimer prenmiTimer; /* 0x278 */ OSTime lastFrameTime; }; @@ -1688,7 +1688,7 @@ typedef struct { /* 0x064 */ OSMesgQueue lock; /* 0x07C */ OSMesgQueue irqmgrCallbackQueue; /* 0x094 */ OSMesgQueueListNode irqmgrCallbackQueueNode; -/* 0x09C */ Irqmgr* irqmgr; +/* 0x09C */ IrqMgr* irqmgr; /* 0x0A0 */ OSThread thread; /* 0x250 */ Input input[4]; /* 0x2B0 */ OSContPad controllerState1[4]; @@ -1722,7 +1722,7 @@ typedef struct { } SchedThreadStruct; struct AudioThreadStruct { -/* 0x000 */ Irqmgr* irqmgr; +/* 0x000 */ IrqMgr* irqmgr; /* 0x004 */ SchedThreadStruct* sched; /* 0x008 */ UNK_TYPE1 pad8[88]; /* 0x060 */ UNK_TYPE4 unk60; diff --git a/include/variables.h b/include/variables.h index f30083766c..5f8db09474 100644 --- a/include/variables.h +++ b/include/variables.h @@ -16,10 +16,10 @@ extern f32 screenXScale; // D_80096B30 extern f32 screenYScale; // D_80096B34 extern OSPiHandle* D_80096B40; // D_80096B40 extern UNK_TYPE4 dmamgrChunkSize; // D_80096B50 -extern vs32 prenmiStage; // D_80096B60 -extern OSTime lastPrenmiTime; // D_80096B68 -extern u64 lastFrameDuration; // D_80096B70 -extern s32 frameCount; // D_80096B78 +extern vs32 gPrenmiStage; // D_80096B60 +extern volatile OSTime sLastPrenmiTime; // D_80096B68 +extern vu64 gLastFrameDuration; // D_80096B70 +extern s32 sFrameCount; // D_80096B78 extern char* D_80096B80[18]; // D_80096B80 extern char* D_80096BC8[6]; // D_80096BC8 extern FaultDrawer* faultDrawContext; // D_80096BE0 @@ -277,7 +277,7 @@ extern OSThread idleOSThread; // D_80099520 extern u8 idleStack[1024]; // D_800996D0 extern StackEntry idleStackEntry; // D_80099AD0 extern u8 bootStack[1024]; // D_80099AF0 -extern Irqmgr irqmgrContext; // D_80099EF0 +extern IrqMgr irqmgrContext; // D_80099EF0 extern u8 irqmgrStack[1280]; // D_8009A170 extern StackEntry irqmgrStackEntry; // D_8009A670 extern OSThread mainOSThread; // D_8009A690 diff --git a/linker_scripts/code_script.txt b/linker_scripts/code_script.txt index 97b5ef9d0c..99c1b16114 100644 --- a/linker_scripts/code_script.txt +++ b/linker_scripts/code_script.txt @@ -12,7 +12,7 @@ SECTIONS build/src/boot_O2_g3/boot_0x800805E0.o(.text) build/src/boot_O2_g3/z_std_dma.o(.text) build/asm/boot_0x80080E30.o(.text) - build/asm/boot_0x80081250.o(.text) + build/src/boot_O2_g3/irqmgr.o(.text) build/src/boot_O2_g3/CIC6105.o(.text) build/src/boot_O2_g3/boot_0x80081920.o(.text) build/src/boot_O2_g3_trapuv/fault.o(.text) @@ -212,7 +212,7 @@ SECTIONS build/src/boot_O2_g3/idle.o(.rodata) build/asm/boot_rodata_z_std_dma.o(.text) build/asm/boot_rodata_0x80080E30.o(.text) - build/asm/boot_rodata_0x80081250.o(.text) + build/src/boot_O2_g3/irqmgr.o(.rodata) build/src/boot_O2_g3/CIC6105.o(.rodata) build/asm/boot_rodata_fault.o(.text) build/asm/boot_rodata_fault_drawer.o(.text) diff --git a/src/boot_O2_g3/idle.c b/src/boot_O2_g3/idle.c index d359f5144e..8fe2cfe34b 100644 --- a/src/boot_O2_g3/idle.c +++ b/src/boot_O2_g3/idle.c @@ -63,7 +63,7 @@ GLOBAL_ASM("./asm/nonmatching/idle/Idle_InitCodeAndMemory.asm") void Idle_MainThreadEntry(void* arg) { StackCheck_Init(&irqmgrStackEntry, (u32)&irqmgrStack, (u32)&irqmgrStack[1280], 0, 256, "irqmgr"); - Irqmgr_Start(&irqmgrContext, &irqmgrStackEntry, 18, 1); + IrqMgr_Start(&irqmgrContext, &irqmgrStackEntry, 18, 1); Dmamgr_Start(); Idle_InitCodeAndMemory(); main(arg); diff --git a/src/boot_O2_g3/irqmgr.c b/src/boot_O2_g3/irqmgr.c new file mode 100644 index 0000000000..18e1b262f2 --- /dev/null +++ b/src/boot_O2_g3/irqmgr.c @@ -0,0 +1,173 @@ +#include +#include + +// TODO move out +#define OS_CLOCK_RATE 62500000LL +#define OS_CPU_COUNTER (OS_CLOCK_RATE*3/4) +#define OS_USEC_TO_CYCLES(n) (((u64)(n)*(OS_CPU_COUNTER/15625LL))/(1000000LL/15625LL)) + +// TODO .data section +//vs32 gPrenmiStage; +//volatile OSTime sLastPrenmiTime; +//vu64 gLastFrameDuration; +//s32 sFrameCount; + +void IrqMgr_AddCallback(IrqMgr* irqmgr, OSMesgQueueListNode* param_2, OSMesgQueue* param_3) { + u32 saveMask; + + saveMask = osSetIntMask(1); + + param_2->queue = param_3; + param_2->next = irqmgr->callbacks; + irqmgr->callbacks = param_2; + + osSetIntMask(saveMask); + + if (irqmgr->prenmiStage > 0) { + osSendMesg(param_2->queue, &irqmgr->prenmi1Msg, 0); + } + if (irqmgr->prenmiStage > 1) { + osSendMesg(param_2->queue, &irqmgr->prenmi2Msg, 0); + } +} + +void IrqMgr_RemoveCallback(IrqMgr* irqmgr, OSMesgQueueListNode* remove) { + OSMesgQueueListNode* iter; + OSMesgQueueListNode* last; + u32 saveMask; + + iter = irqmgr->callbacks; + last = NULL; + + saveMask = osSetIntMask(1); + + while (iter != NULL) { + if (iter == remove) { + if (last != NULL) { + last->next = remove->next; + } else { + irqmgr->callbacks = remove->next; + } + break; + } + last = iter; + iter = iter->next; + } + + osSetIntMask(saveMask); +} + +void IrqMgr_NotifyAllCallbacks(IrqMgr* irqmgr, OSMesg msg) { + OSMesgQueueListNode* iter = irqmgr->callbacks; + + while (iter != NULL) { + osSendMesg(iter->queue, msg, 0); + iter = iter->next; + } +} + +void IrqMgr_NotifyAllCallbacksWithCapacity(IrqMgr* irqmgr, OSMesg msg) { + OSMesgQueueListNode* iter = irqmgr->callbacks; + + while (iter != NULL) { + if (iter->queue->validCount < iter->queue->msgCount) { + osSendMesg(iter->queue, msg, 0); + } + iter = iter->next; + } +} + +void IrqMgr_HandlePrenmi1(IrqMgr* irqmgr) { + gPrenmiStage = 1; + irqmgr->prenmiStage = 1; + + sLastPrenmiTime = irqmgr->lastPrenmiTime = osGetTime(); + + // Wait .45 seconds then generate a stage 2 prenmi interrupt + osSetTimer(&irqmgr->prenmiTimer, OS_USEC_TO_CYCLES(450000), 0, &irqmgr->irqQueue, (OSMesg)0x29F); + + IrqMgr_NotifyAllCallbacksWithCapacity(irqmgr, &irqmgr->prenmi1Msg); +} + +void IrqMgr_CheckThreadStatusImpl(void) { + StackCheck_Check(NULL); +} + +void IrqMgr_HandlePrenmi2(IrqMgr* irqmgr) { + gPrenmiStage = 2; + irqmgr->prenmiStage = 2; + + // Wait .03 seconds then generate a stage 3 prenmi interrupt + osSetTimer(&irqmgr->prenmiTimer, OS_USEC_TO_CYCLES(30000), 0, &irqmgr->irqQueue, (OSMesg)0x2A0); + + IrqMgr_NotifyAllCallbacks(irqmgr, &irqmgr->prenmi2Msg); +} + +void IrqMgr_HandlePrenmi3(IrqMgr* irqmgr) { + // Wait .52 seconds. After this we will have waited an entire second + osSetTimer(&irqmgr->prenmiTimer, OS_USEC_TO_CYCLES(520000), 0, &irqmgr->irqQueue, (OSMesg)0x2A1); + + func_8008D710(); +} + +void IrqMgr_CheckThreadStatus(IrqMgr* irqmgr) { + IrqMgr_CheckThreadStatusImpl(); +} +void IrqMgr_HandleFrame(IrqMgr* irqmgr) { + if (gLastFrameDuration == 0) { + if (irqmgr->lastFrameTime == 0) { + irqmgr->lastFrameTime = osGetTime(); + } else { + gLastFrameDuration = osGetTime() - irqmgr->lastFrameTime; + } + } + + sFrameCount += 1; + IrqMgr_NotifyAllCallbacks(irqmgr,irqmgr); +} + +void IrqMgr_ThreadEntry(IrqMgr* irqmgr) { + u32 interrupt; + u32 stop; + + interrupt = 0; + stop = 0; + while (stop == 0) { + if (stop); + + osRecvMesg(&irqmgr->irqQueue, (OSMesg*)&interrupt, 1); + switch (interrupt) { + case 0x29A: + IrqMgr_HandleFrame(irqmgr); + break; + case 0x29D: + IrqMgr_HandlePrenmi1(irqmgr); + break; + case 0x29F: + IrqMgr_HandlePrenmi2(irqmgr); + break; + case 0x2A0: + IrqMgr_HandlePrenmi3(irqmgr); + break; + case 0x2A1: + IrqMgr_CheckThreadStatus(irqmgr); + break; + } + } +} + +void IrqMgr_Start(IrqMgr* irqmgr, void* stack, OSPri pri, u8 retraceCount) { + irqmgr->callbacks = NULL; + irqmgr->verticalRetraceMesg = 1; + irqmgr->prenmi1Msg = 4; + irqmgr->prenmi2Msg = 3; + irqmgr->prenmiStage = 0; + irqmgr->lastPrenmiTime = 0; + + osCreateMesgQueue(&irqmgr->irqQueue,(OSMesg *)irqmgr->irqBuffer,8); + osSetEventMesg(0xE, &irqmgr->irqQueue, (OSMesg)0x29D); + osViSetEvent(&irqmgr->irqQueue, (OSMesg)0x29A, retraceCount); + + osCreateThread(&irqmgr->thread, 0x13, (osCreateThread_func)IrqMgr_ThreadEntry, irqmgr, stack, pri); + osStartThread(&irqmgr->thread); +} diff --git a/src/boot_O2_g3/z_std_dma.c b/src/boot_O2_g3/z_std_dma.c index cd01460777..8b4ed863ef 100644 --- a/src/boot_O2_g3/z_std_dma.c +++ b/src/boot_O2_g3/z_std_dma.c @@ -158,7 +158,7 @@ void Dmamgr_ThreadEntry(void* a0) { } s32 Dmamgr_SendRequest(DmaRequest* request, u32 vramStart, u32 vromStart, u32 size, UNK_TYPE4 unused, OSMesgQueue* callback, void* callbackMesg) { - if (prenmiStage >= 2) { + if (gPrenmiStage >= 2) { return -2; } diff --git a/tables/functions.py b/tables/functions.py index d7189c215a..571e9d0047 100644 --- a/tables/functions.py +++ b/tables/functions.py @@ -27,18 +27,18 @@ 0x80080ED0:("Yaz0_LoadNextChunk","u8*","void* currDecompPos"), 0x80080FF0:("Yaz0_Decompress","s32","u8* src, u8* dest"), 0x80081178:("Yaz0_LoadAndDecompressFile","void","u32 romStart, u32 vramStart, u32 size"), - 0x80081250:("Irqmgr_AddCallback","void","Irqmgr* irqmgr, OSMesgQueueListNode* param_2, OSMesgQueue* param_3"), - 0x800812DC:("Irqmgr_RemoveCallback","void","Irqmgr* irqmgr, OSMesgQueueListNode* puParm2"), - 0x80081368:("Irqmgr_NotifyAllCallbacks","void","Irqmgr* irqmgr, s16* msg"), - 0x800813B8:("Irqmgr_NotifyAllCallbacksWithCapacity","void","Irqmgr* irqmgr, OSMesg msg"), - 0x8008141C:("Irqmgr_HandlePrenmi1","void","Irqmgr* irqmgr"), - 0x800814B4:("Irqmgr_CheckThreadStatus2","void","void"), - 0x800814D4:("Irqmgr_HandlePrenmi2","void","Irqmgr* irqmgr"), - 0x80081550:("Irqmgr_HandlePrenmi3","void","Irqmgr* irqmgr"), - 0x800815A8:("Irqmgr_CheckThreadStatus","void","Irqmgr* irqmgr"), - 0x800815CC:("Irqmgr_HandleFrame","void","Irqmgr* irqmgr"), - 0x80081684:("Irqmgr_ThreadEntry","void","Irqmgr* irqmgr"), - 0x80081754:("Irqmgr_Start","void","Irqmgr* irqmgr, void* stack, OSPri pri, u8 retraceCount"), + 0x80081250:("IrqMgr_AddCallback","void","IrqMgr* irqmgr, OSMesgQueueListNode* param_2, OSMesgQueue* param_3"), + 0x800812DC:("IrqMgr_RemoveCallback","void","IrqMgr* irqmgr, OSMesgQueueListNode* remove"), + 0x80081368:("IrqMgr_NotifyAllCallbacks","void","IrqMgr* irqmgr, OSMesg msg"), + 0x800813B8:("IrqMgr_NotifyAllCallbacksWithCapacity","void","IrqMgr* irqmgr, OSMesg msg"), + 0x8008141C:("IrqMgr_HandlePrenmi1","void","IrqMgr* irqmgr"), + 0x800814B4:("IrqMgr_CheckThreadStatusImpl","void","void"), + 0x800814D4:("IrqMgr_HandlePrenmi2","void","IrqMgr* irqmgr"), + 0x80081550:("IrqMgr_HandlePrenmi3","void","IrqMgr* irqmgr"), + 0x800815A8:("IrqMgr_CheckThreadStatus","void","IrqMgr* irqmgr"), + 0x800815CC:("IrqMgr_HandleFrame","void","IrqMgr* irqmgr"), + 0x80081684:("IrqMgr_ThreadEntry","void","IrqMgr* irqmgr"), + 0x80081754:("IrqMgr_Start","void","IrqMgr* irqmgr, void* stack, OSPri pri, u8 retraceCount"), 0x80081820:("CIC6105_Nop80081820","void","void"), 0x80081828:("CIC6105_Nop80081828","void","void"), 0x80081830:("CIC6105_PrintRomInfo","void","void"), @@ -350,7 +350,7 @@ 0x8008CFE4:("func_8008CFE4","void","void"), 0x8008D2C0:("osGetCount","u32","void"), 0x8008D2E0:("func_8008D2E0","void","void"), - 0x8008D350:("calculate_mem_size","u32","void"), + 0x8008D350:("osGetMemSize","u32","void"), 0x8008D470:("func_8008D470","void","UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6"), 0x8008D640:("osSetEventMesg","void","OSEvent e, OSMesgQueue* mq, OSMesg m"), 0x8008D700:("sqrtf","f32","f32 __x"), @@ -484,6 +484,7 @@ 0x800964D0:("func_800964D0","void","void"), 0x80096510:("__osSpSetPc","s32","u32 data"), 0x80096540:("func_80096540","void","void"), + 0x80096770:("FUN_80096770","void","int param_1, UNK_PTR param_2, UNK_PTR param_3"), 0x800967A0:("func_800967A0","void","void"), 0x80096810:("__osGetWatchLo","u32","void"), 0x80096820:("__osSetWatchLo","void","u32 value"), @@ -3091,7 +3092,7 @@ 0x80172EAC:("Audio_Stop","void","void"), 0x80172ED0:("Audio_ThreadEntry","void","AudioThreadStruct* audio"), 0x80173048:("Audio_WaitForInit","void","AudioThreadStruct* param_1"), - 0x80173074:("Audio_Start","void","AudioThreadStruct* audio, s32* audioThreadStackEnd, OSPri pri, OSId id, SchedThreadStruct* sched, Irqmgr* irq"), + 0x80173074:("Audio_Start","void","AudioThreadStruct* audio, s32* audioThreadStackEnd, OSPri pri, OSId id, SchedThreadStruct* sched, IrqMgr* irq"), 0x80173130:("func_80173130","void","void"), 0x801732DC:("Initial_Init2","void","ContextCommon* ctxt"), 0x8017332C:("Initial_Fini","void","void"), @@ -3167,7 +3168,7 @@ 0x80175F98:("Padmgr_GetInput","void","Input* input, int param_2"), 0x80175FD4:("Padmgr_GetInput2","void","Input* input, int param_2"), 0x80176010:("Padmgr_ThreadEntry","void","PadmgrThreadStruct* padmgr"), - 0x80176194:("Padmgr_Start","void","OSMesgQueue* siEventCallbackQueue, Irqmgr* irqmgr, OSId threadId, OSPri threadPri, void* stack"), + 0x80176194:("Padmgr_Start","void","OSMesgQueue* siEventCallbackQueue, IrqMgr* irqmgr, OSId threadId, OSPri threadPri, void* stack"), 0x80176280:("func_80176280","void","void"), 0x80176314:("func_80176314","void","void"), 0x80176364:("Sched_Nop80176364","void","SchedThreadStruct* sched"), @@ -3191,7 +3192,7 @@ 0x80177084:("func_80177084","void","SchedThreadStruct* sched"), 0x8017715C:("Sched_ThreadEntry","void","SchedThreadStruct* sched"), 0x80177280:("func_80177280","void","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"), - 0x801772A0:("Sched_Start","void","SchedThreadStruct* sched, void* stack, OSPri pri, UNK_TYPE4 param_4, UNK_TYPE4 param_5, Irqmgr* irqmgrStruct"), + 0x801772A0:("Sched_Start","void","SchedThreadStruct* sched, void* stack, OSPri pri, UNK_TYPE4 param_4, UNK_TYPE4 param_5, IrqMgr* irqmgrStruct"), 0x80177390:("func_80177390","void","void"), 0x801773A0:("func_801773A0","void","void"), 0x801773C4:("func_801773C4","void","void"), @@ -3735,6 +3736,8 @@ 0x8019AC10:("func_8019AC10","void","void"), 0x8019ACEC:("func_8019ACEC","void","void"), 0x8019ADBC:("func_8019ADBC","void","void"), + 0x8019AE40:("FUN_8019ae40","void","int param_1, int param_2, unsigned int param_3, int param_4"), + 0x8019AEC0:("FUN_8019aec0","void","UNK_PTR param_1, UNK_PTR param_2"), 0x8019AF00:("func_8019AF00","void","void"), 0x8019AF58:("func_8019AF58","void","void"), 0x8019AFE8:("func_8019AFE8","void","void"), diff --git a/tables/objects.py b/tables/objects.py index e4177008eb..4e42385414 100644 --- a/tables/objects.py +++ b/tables/objects.py @@ -4,7 +4,7 @@ 0x800805E0:"", 0x80080790:"z_std_dma", 0x80080E30:"", - 0x80081250:"", + 0x80081250:"irqmgr", 0x80081820:"CIC6105", 0x80081920:"", 0x80081980:"fault", diff --git a/tables/variables.py b/tables/variables.py index 78c9c81058..4da0c2612d 100644 --- a/tables/variables.py +++ b/tables/variables.py @@ -9,10 +9,10 @@ 0x80096B34:("screenYScale","f32","",0x4), 0x80096B40:("D_80096B40","OSPiHandle*","",0x4), 0x80096B50:("dmamgrChunkSize","UNK_TYPE4","",0x4), - 0x80096B60:("prenmiStage","u32","",0x4), - 0x80096B68:("lastPrenmiTime","OSTime","",0x8), - 0x80096B70:("lastFrameDuration","u64","",0x8), - 0x80096B78:("frameCount","s32","",0x4), + 0x80096B60:("gPrenmiStage","vs32","",0x4), + 0x80096B68:("sLastPrenmiTime","volatile OSTime","",0x8), + 0x80096B70:("gLastFrameDuration","vu64","",0x8), + 0x80096B78:("sFrameCount","s32","",0x4), 0x80096B80:("D_80096B80","char*","[18]",0x48), 0x80096BC8:("D_80096BC8","char*","[6]",0x18), 0x80096BE0:("faultDrawContext","FaultDrawer*","",0x4), @@ -274,7 +274,7 @@ 0x800996D0:("idleStack","u8","[1024]",0x400), 0x80099AD0:("idleStackEntry","StackEntry","",0x1c), 0x80099AF0:("bootStack","u8","[1024]",0x400), - 0x80099EF0:("irqmgrContext","Irqmgr","",0x280), + 0x80099EF0:("irqmgrContext","IrqMgr","",0x280), 0x8009A170:("irqmgrStack","u8","[1280]",0x500), 0x8009A670:("irqmgrStackEntry","StackEntry","",0x1c), 0x8009A690:("mainOSThread","OSThread","",0x1b0),