Documented OS related text

This commit is contained in:
MegaMech 2022-10-07 19:00:29 -07:00
parent 12e7e24211
commit 70500acb81
4 changed files with 71 additions and 54 deletions

12
include/macros.h Normal file
View File

@ -0,0 +1,12 @@
#ifndef _MACROS_H_
#define _MACROS_H_
#ifndef __sgi
#define GLOBAL_ASM(...)
#endif
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
#endif

View File

@ -5,8 +5,8 @@ struct UnkStruct800006C4_2 {
char unk0;
char filler1[0x1B];
s32 unk1C;
void* unk20;
s32 unk24;
void* vaddr;
s32 size;
s32 unk28;
};
@ -55,8 +55,8 @@ void *func_80000AB0(struct UnkStruct80000A80* arg0);
void *func_80000AE0(struct UnkStruct80000A80* arg0);
s32 func_80000B10(struct UnkStruct80000A80* arg0);
void *func_80000B74(struct UnkStruct80000A80* arg0);
void func_80000BA4(void *arg);
void func_80000D54(void);
void thread20_rsp(void *arg);
void rsp_init(void);
void func_80000DF4(void);
void func_80000E2C(void* arg0, s32 arg1);

View File

@ -1,39 +1,44 @@
#include <ultra64.h>
extern void func_80000460(); // thread 1 function
extern void thread1_idle(); // thread 1 function
extern void func_8002B330(); // thread 6 function
// entry .bss
u8 D_8007ED80[0xF180-0xED80]; // unknown, start of .bss
OSThread D_8007F180;
OSThread gIdleThread;
u8 unk_8007F330[0x400];
OSThread D_8007F730;
OSThread pThreads;
u8 unk_8007F8E0[0x720];
u8 D_80080000[0x18E0];
u8 D_800818E0[0x18];
u8 D_800818F8[0x8];
void func_80000460(s32 arg0) {
osCreateViManager(0xFE);
/**
* Initialize hardware, start main thread, then idle.
*/
void thread1_idle(void *arg0) {
osCreateViManager(OS_PRIORITY_VIMGR);
func_80001474(0, 1);
osViBlack(1);
osViBlack(TRUE);
func_80008F7C();
func_80000D54();
rsp_init();
func_800052B4();
func_8000D564();
func_800019C8();
func_800057C0();
osCreateThread(&D_8007F730, 6, &func_8002B330, 0, &D_800818E0, 0x14);
osStartThread(&D_8007F730);
osSetThreadPri(0, 0);
while(1);
osCreateThread(&pThreads, 6, &func_8002B330, 0, &D_800818E0, 20);
osStartThread(&pThreads);
osSetThreadPri(NULL, 0);
// Halt
while(TRUE);
}
void main(void) {
void main_func(void) {
osInitialize();
osCartRomInit();
func_8000B7D0(0);
func_80002F58();
osCreateThread(&D_8007F180, 1, &func_80000460, 0, &D_8007F730, 0x64);
osStartThread(&D_8007F180);
osCreateThread(&gIdleThread, 1, &thread1_idle, 0, &pThreads, 100);
osStartThread(&gIdleThread);
}

View File

@ -10,9 +10,9 @@
#define SRAM_pageSize 0xd
#define SRAM_relDuration 0x2
OSThread D_80081900;
OSThread gRspThread;
u8 unk_80081AB0[0x2000];
u8 D_80083AB0[0x9C];
u8 gRspThreadStack[0x9C];
OSMesg D_80083B4C;
u8 unk_80081B50[0x3C];
OSMesg D_80083B8C;
@ -62,10 +62,10 @@ s32 func_800006C4(struct UnkStruct800006C4_2* arg0) {
unkStruct.sp22 = 0;
unkStruct.sp24 = &D_80083BD0.queue2;
unkStruct.sp28 = arg0->unk20;
unkStruct.sp28 = arg0->vaddr;
unkStruct.sp2C = arg0->unk1C;
unkStruct.sp30 = arg0->unk24;
osInvalDCache(arg0->unk20, arg0->unk24);
unkStruct.sp30 = arg0->size;
osInvalDCache(arg0->vaddr, arg0->size);
func_8005E0F0(unk1C, &unkStruct.sp20, 0);
osRecvMesg(&D_80083BD0.queue2, &D_80083BD0.unk0, 1);
return 0;
@ -77,12 +77,12 @@ s32 func_8000074C(struct UnkStruct800006C4_2* arg0) {
unkStruct.sp22 = 0;
unkStruct.sp24 = &D_80083BD0.queue2;
unkStruct.sp28 = arg0->unk20;
unkStruct.sp28 = arg0->vaddr;
unkStruct.sp2C = arg0->unk1C;
unkStruct.sp30 = arg0->unk24;
osWritebackDCache(arg0->unk20, arg0->unk24);
unkStruct.sp30 = arg0->size;
osWritebackDCache(arg0->vaddr, arg0->size);
func_8005E0F0(unk1C, &unkStruct.sp20, 1);
osRecvMesg(&D_80083BD0.queue2, &D_80083BD0.unk0, 1);
osRecvMesg(&D_80083BD0.queue2, &D_80083BD0.unk0, OS_MESG_BLOCK);
return 0;
}
@ -97,12 +97,12 @@ s32 func_800007D4(struct UnkStruct800006C4_2* arg0, s32 arg1) {
unkStruct.sp22 = 0;
unkStruct.sp24 = &D_80083BD0.queue2;
unkStruct.sp28 = arg0->unk20;
unkStruct.sp28 = arg0->vaddr;
unkStruct.sp2C = arg0->unk1C;
unkStruct.sp30 = arg0->unk24;
osInvalDCache(arg0->unk20, arg0->unk24);
unkStruct.sp30 = arg0->size;
osInvalDCache(arg0->vaddr, arg0->size);
func_8005E0F0(handle, &unkStruct.sp20, 0);
osRecvMesg(&D_80083BD0.queue2, &D_80083BD0.unk0, 1);
osRecvMesg(&D_80083BD0.queue2, &D_80083BD0.unk0, OS_MESG_BLOCK);
return 0;
}
@ -113,12 +113,12 @@ s32 func_8000087C(struct UnkStruct800006C4_2* arg0) {
handle = osCartRomInit();
unkStruct.sp22 = 0;
unkStruct.sp24 = &D_80083BD0.queue2;
unkStruct.sp28 = arg0->unk20;
unkStruct.sp28 = arg0->vaddr;
unkStruct.sp2C = arg0->unk1C;
unkStruct.sp30 = arg0->unk24;
osWritebackDCache(arg0->unk20, arg0->unk24);
unkStruct.sp30 = arg0->size;
osWritebackDCache(arg0->vaddr, arg0->size);
func_8005E0F0(handle, &unkStruct.sp20, 1);
osRecvMesg(&D_80083BD0.queue2, &D_80083BD0.unk0, 1);
osRecvMesg(&D_80083BD0.queue2, &D_80083BD0.unk0, OS_MESG_BLOCK);
return 0;
}
@ -126,9 +126,9 @@ s32 func_80000904(struct UnkStruct800006C4_2* arg0) {
s32 arr[5];
s32 sp20;
osInvalDCache(arg0->unk20, 0x80);
func_8000D0B4(&sp20, 0, arg0->unk1C, arg0->unk20, 1, &D_80083BD0.queue2);
osRecvMesg(&D_80083BD0.queue2, &D_80083BD0.unk0, 1);
osInvalDCache(arg0->vaddr, 0x80);
func_8000D0B4(&sp20, 0, arg0->unk1C, arg0->vaddr, 1, &D_80083BD0.queue2);
osRecvMesg(&D_80083BD0.queue2, &D_80083BD0.unk0, OS_MESG_BLOCK);
return 0;
}
@ -137,25 +137,25 @@ s32 func_80000974(struct UnkStruct800006C4_2* arg0) {
s32 sp20_4;
s32 sp20_5;
func_8000CEE4(&sp20_4, 0, arg0->unk20, &D_80083BD0.queue2);
osRecvMesg(&D_80083BD0.queue2, &D_80083BD0.unk0, 1);
func_8000CEE4(&sp20_4, 0, arg0->vaddr, &D_80083BD0.queue2);
osRecvMesg(&D_80083BD0.queue2, &D_80083BD0.unk0, OS_MESG_BLOCK);
return 0;
}
void* func_800009C8(void) {
void* sp1C;
void* msg;
osRecvMesg(&D_80083BD0.queue2, &sp1C, 1);
return sp1C;
osRecvMesg(&D_80083BD0.queue2, &msg, OS_MESG_BLOCK);
return msg;
}
void *func_800009F8(struct UnkStruct800006C4_2* arg0) {
func_80050FC0(arg0, 0, arg0->unk1C, arg0->unk20, arg0->unk24, &D_80083BD0.queue2);
func_80050FC0(arg0, 0, arg0->unk1C, arg0->vaddr, arg0->size, &D_80083BD0.queue2);
return func_800009C8();
}
void *func_80000A3C(struct UnkStruct800006C4_2* arg0) {
func_80050FC0(arg0, 1, arg0->unk1C, arg0->unk20, arg0->unk24, &D_80083BD0.queue2);
func_80050FC0(arg0, 1, arg0->unk1C, arg0->vaddr, arg0->size, &D_80083BD0.queue2);
return func_800009C8();
}
@ -190,14 +190,14 @@ void *func_80000B74(struct UnkStruct80000A80* arg0) {
return func_800009C8();
}
void func_80000BA4(void *arg) {
void thread20_rsp(void *arg) {
struct UnkStruct800006C4_2* sp2C;
void* var_v0;
func_800005C0();
func_8000C8F8();
while(1) {
osRecvMesg(&D_80083BD0.queue1, (void*)&sp2C, 1);
osRecvMesg(&D_80083BD0.queue1, (void*)&sp2C, OS_MESG_BLOCK);
switch (sp2C->unk0) {
case 0xF0:
var_v0 = func_800007D4(sp2C, 0);
@ -254,12 +254,12 @@ void func_80000BA4(void *arg) {
}
}
void func_80000D54(void) {
void rsp_init(void) {
osCreateMesgQueue(&D_80083BD0.queue2, &D_80083BCC, 1);
osCreateMesgQueue(&D_80083BD0.queue1, &D_80083B8C, 0x10);
func_8005B6A0(0x96, &D_80083BD0.unk4, &D_80083AB0[0x1C], 0x20);
osCreateThread(&D_80081900, 0x14, func_80000BA4, NULL, D_80083AB0, 0x5A);
osStartThread(&D_80081900);
osCreateMesgQueue(&D_80083BD0.queue1, &D_80083B8C, 16);
func_8005B6A0(0x96, &D_80083BD0.unk4, &gRspThreadStack[0x1C], 0x20);
osCreateThread(&gRspThread, 20, thread20_rsp, NULL, gRspThreadStack, 90);
osStartThread(&gRspThread);
}
void func_80000DF4(void) {
@ -271,8 +271,8 @@ void func_80000DF4(void) {
void func_80000E2C(void* arg0, s32 arg1) {
if (arg1 == 1) {
osJamMesg(&D_80083BD0.queue1, arg0, 1);
osJamMesg(&D_80083BD0.queue1, arg0, OS_MESG_BLOCK);
return;
}
osSendMesg(&D_80083BD0.queue1, arg0, 1);
osSendMesg(&D_80083BD0.queue1, arg0, OS_MESG_BLOCK);
}