mirror of
https://github.com/pret/pokestadium.git
synced 2026-04-26 01:59:28 -05:00
Documented OS related text
This commit is contained in:
parent
12e7e24211
commit
70500acb81
12
include/macros.h
Normal file
12
include/macros.h
Normal 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
|
||||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
33
src/main.c
33
src/main.c
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
72
src/rsp.c
72
src/rsp.c
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user