Non-audio threads. Some data importation. (#17)

* threads galore

* something's up

* try this

* I don't even

* who knows

* I can't stop it

* let's try data for fun

* ok I think I've gone far enough

* well maybe a little more

* visual assets somewhat documented

* just keeps going

* forgot formatting
This commit is contained in:
petrie911
2023-11-07 19:32:09 -03:00
committed by GitHub
parent 931f589177
commit 6b4015367d
33 changed files with 1562 additions and 336 deletions
+23 -8
View File
@@ -3,6 +3,13 @@
#include "structs.h"
void func_8000291C(void);
void func_800029A8(void);
void func_80002AF4(void);
void func_80002BE8(void);
void func_80002C50(void);
void func_80002CB8(void);
f32 Math_ModF(f32 value, f32 mod);
void Rand_Init(void);
f32 Rand_ZeroOne(void);
@@ -24,13 +31,13 @@ void func_80006A20(Matrix*, Vec3f*, Vec3f*);
void func_80006EB8(Gfx**);
void func_80006F20(void);
void func_800070C8(s64);
void func_800070C8(u64);
s32 func_800071FC(s32*);
s32 func_800072E0(s32*);
void func_80007D58(void*);
s32 func_800071FC(UnkStruct_7D30*);
s32 func_800072E0(UnkStruct_7D30*);
void Fault_ThreadEntry(void*);
void func_80007FE4(FrameBuffer*, u16, u16);
void func_80008018(void);
void func_800182F4(s32);
@@ -39,7 +46,14 @@ void func_8001A838(u32 arg0);
void func_8001AF40(s32 arg0);
void func_8001DC6C(s32, s32);
s32 func_8001EF10(void);
void func_8000FFCC(void);
void func_8001DCE0(void);
void func_8001DECC(void);
SPTask* func_8001DF50(void);
void RdRam_CheckIPL3(void);
void Mio0_Decompress(void* header, u8* dst);
s32 vsprintf(char* dst, char* fmt, va_list args);
@@ -85,8 +99,6 @@ s64 __ull_div(s64, s64);
s64 __ll_mul(s64, s64);
s64 __ll_rshift(s64, s64);
s32 func_8002DE78(void*, s32, s32); // Not real signature
void func_80060FBC(u8*, f32*);
void func_8006EEFC(s32, f32, f32, f32, f32, f32, f32, f32, f32, f32);
@@ -121,6 +133,8 @@ void func_8009FC0C(s32, s32, s32);
f32 func_8009F768(f32);
void func_8009FEA0(s32, s32, s32);
void func_800A1200(s32, s32, f32, f32, char*);
void func_800A18B0(void);
void func_800A26C0(void);
s32 func_800A3F50(s32);
void func_800A5D6C(void);
void func_800B8DD0(Gfx**, s16);
@@ -128,6 +142,7 @@ void func_800BA490(void);
void func_800BA4F0(void);
void func_800BA808(u16*, s32);
void func_800BB5D0(void);
void func_800BC4B0(void);
void func_800B6F50(f32, f32, f32, f32, f32, f32);
void func_800B9358(void);
+12 -4
View File
@@ -17,11 +17,19 @@
#include "macros.h"
#include "sf64math.h"
extern Gfx* D_80137E64;
extern OSDevMgr __osPiDevMgr;
#define SCREEN_WIDTH 320
#define SCREEN_HEIGHT 240
typedef enum {
THREAD_ID_SYSTEM,
THREAD_ID_IDLE,
THREAD_ID_FAULT,
THREAD_ID_MAIN,
THREAD_ID_4,
THREAD_ID_AUDIO,
THREAD_ID_GRAPHICS,
THREAD_ID_7,
THREAD_ID_8,
} ThreadID;
#endif // GLOBAL_H
+10 -1
View File
@@ -25,7 +25,16 @@ typedef union {
f32 f;
} fu;
typedef float Matrix[4][4];
typedef union {
float m[4][4];
struct {
float xx, yx, zx, wx,
xy, yy, zy, wy,
xz, yz, zz, wz,
xw, yw, zw, ww;
};
// u64 force_struct_alignment;
} Matrix;
extern f32 __libm_qnan_f;
+3
View File
@@ -4,4 +4,7 @@
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
#define SQ(x) ((x) * (x))
#define USEC_TO_CYCLES(n) (((u64)(n)*(osClockRate/15625LL))/(1000000LL/15625LL))
#define MSEC_TO_CYCLES(n) (USEC_TO_CYCLES((n) * 1000LL))
#endif // MACROS_H
+1 -1
View File
@@ -55,4 +55,4 @@ extern int __osDpDeviceBusy(void);
extern void* __printfunc;
#endif
#endif
#endif
+43
View File
@@ -4,6 +4,49 @@
#include "global.h"
#include "sf64math.h"
typedef struct {
u16 data[240 * 320];
} FrameBuffer;
typedef struct {
u8 data[0x40][8];
} UnkStruct_7D30;
typedef struct {
OSThread thread;
char stack[0x800];
OSMesgQueue msgQueue;
OSMesg msg;
FrameBuffer* fb;
u16 width;
u16 height;
} FaultMgr;
typedef enum {
SPTASK_STATE_NOT_STARTED,
SPTASK_STATE_RUNNING,
SPTASK_STATE_INTERRUPTED,
SPTASK_STATE_FINISHED,
SPTASK_STATE_FINISHED_DP
} SpTaskState;
typedef struct {
OSTask task;
OSMesgQueue* msgQueue;
OSMesg msg;
SpTaskState state;
} SPTask;
typedef struct {
SPTask task;
Vp viewports[0x10];
Mtx mtx[0x480];
Gfx unkDL1[0x180];
Gfx masterDL[0x1380];
Gfx unkDL2[0xD80];
Lightsn lights[0x100];
} GfxPool;
typedef struct UnkStruct_D_801B8350 {
/* 0x00 */ Vec3f unk0;
/* 0x0C */ char pad_0C[0x4C];
+138 -37
View File
@@ -3,18 +3,141 @@
#include "structs.h"
extern OSThread D_800DEAA0;
extern OSThread D_800DFC50; // no gap
extern OSThread D_800E0E00; // 0x1000 gap
extern s32 D_800E1FB0; // 0x1000 gap, probably OSScTask
extern OSMesgQueue D_800E2010;
extern OSMesg D_800E2028;
extern OSMesgQueue D_800E2148;
extern OSMesgQueue D_800E2238;
extern OSMesgQueue D_800E2278;
extern u64 __rspboot_start[];
extern u64 __rspboot_end[];
extern u64 __f3dex_start[];
extern u8 D_80281000[0x400];
extern u8 D_80281400[0xC00];
extern u8 D_802A7800;
extern u8 D_802D7800;
extern u8 gF3dexData;
extern s32 D_800C45D0;
extern f32 D_800C45E0[];
extern Mtx gIdentityMtx; // 800C4620
extern Matrix gIdentityMatrix; //800C4660
extern Vec3f D_800C46A0;
extern Vec3f D_800C46AC;
extern Vec3f D_800C46B8;
extern Vec3f D_800C46C4;
extern Vec3f D_800C46D0;
extern Vec3f D_800C46DC;
extern u8 sFaultCharIndex[];
extern s32 sFaultCharPixelFlags[];
extern char* D_800C4870[];
extern char* D_800C48B8[];
extern f32 D_800C5D34;
extern s8 D_800C5D3C;
extern s8 D_800C7C50;
extern s8 D_800C7C54;
extern OSMesgQueue* D_800C7C58;
extern OSMesgQueue* D_800C7C5C;
extern OSMesgQueue* D_800C7C60;
extern OSMesgQueue* D_800C7C64;
extern char D_800C7C80[];
extern u16 D_800DD8AA;
extern u8 gAudioThreadStack[0x1000]; // 800DDAA0
extern OSThread gGraphicsThread; // 800DEAA0
extern u8 gGraphicsThreadStack[0x1000]; // 800DEC50
extern OSThread gUnkThread3; // 800DFC50
extern u8 gUnkThread3Stack[0x1000]; // 800DFE00
extern OSThread gUnkThread4; // 800E0E00
extern u8 gUnkThread4Stack[0x1000]; // 800E0FB0
extern SPTask* gCurrentTask;
extern SPTask* D_800E1FB4[1];
extern SPTask* D_800E1FB8[2];
extern SPTask* D_800E1FC0[2];
extern SPTask* D_800E1FC8[2];
extern u32 gSegments[16]; // 800E1FD0
extern OSMesgQueue gPiMgrCmdQueue; // 800E2010
extern OSMesg sPiMgrCmdBuff[50]; // 800E2028
extern OSMesgQueue D_800E20F0;
extern void *D_800E2108[1];
extern OSIoMesg D_800E2110;
extern OSMesgQueue D_800E2128;
extern void *D_800E2140[1];
extern OSMesgQueue D_800E2148;
extern void *D_800E2160[32];
extern OSMesgQueue D_800E21E0;
extern void *D_800E21F8[16];
extern OSMesgQueue D_800E2238;
extern void *D_800E2250[1];
extern OSMesgQueue D_800E2258;
extern void *D_800E2270[1];
extern OSMesgQueue D_800E2278;
extern void *D_800E2290[4];
extern OSMesgQueue D_800E22A0;
extern void *D_800E22B8[2];
extern OSMesgQueue D_800E22C0;
extern void *D_800E22D8[8];
extern OSMesgQueue D_800E22F8;
extern void *D_800E2310[1];
extern OSMesgQueue D_800E2318;
extern void *D_800E2330[1];
extern OSMesgQueue D_800E2338;
extern void *D_800E2350[16];
extern OSMesgQueue D_800E2390;
extern void *D_800E23A8[1];
extern GfxPool* gGfxPool;
extern SPTask* gGfxTask;
extern Vp* gViewport;
extern Mtx* gGfxMtx;
extern Gfx* gUnkDisp1;
extern Gfx* gMasterDisp;
extern Gfx* gUnkDisp2;
extern Lightsn* gLight;
extern FrameBuffer *gFrameBuffer;
extern s32* D_80137E74;
// some sort of struct I think
extern u8 D_80137E78;
extern u32 D_80137E7C;
extern u8 D_80137E80;
extern u8 D_80137E81;
extern u8 D_80137E84[4];
extern u16 D_80137E88;
extern u16 D_80137E8A;
extern s32 D_80178580;
extern s32 *D_80178710;
extern s32 D_80387800;
extern u16 D_8038F080[];
extern u16 D_8038F300[];
extern FrameBuffer gFrameBuffers[3]; // 8038F800
extern GfxPool gGfxPools[2]; // 800E23B0
extern Matrix* D_8013B3C0;
extern Matrix D_8013B3C8[0x20];
extern Matrix* D_8013BBC8;
extern Matrix D_8013BBD0[];
extern OSThread sIdleThread; // 80138E90
extern u8 sIdleThreadStack[0x1000]; // 801390A0
extern OSThread gMainThread; // 8013A040
extern u8 sMainThreadStack[0x1000]; // 8013A1F0
extern OSThread gAudioThread; //8013B1F0
extern UnkStruct_7D30 D_80144F60;
extern UnkStruct_7D30 D_80145160;
extern FaultMgr gFaultMgr;
extern OSMesg D_80156600;
extern OSMesg D_80156608;
extern OSMesg D_80156618;
extern OSMesg D_8015661C;
extern s32 D_8015F928;
extern s32 D_800CFF90;
extern f32 D_800D19AC[];
extern f32 D_800D19E0[];
@@ -28,7 +151,7 @@ extern s32 D_800D2190[];
extern f32 D_800D21A0;
extern f32 D_800D21A4;
extern s32 D_800D2870;
extern u16 D_800D99F8[];
extern u16 D_Tex_800D99F8[];
extern OSContPad D_800DD880[4];
extern OSContPad D_800DD898[4];
@@ -41,8 +164,7 @@ extern u8 D_800DD8BC[4]; // Fake symbol. Only exists as loop terminator for D_80
// extern OSContStatus D_800DD8F0[4];
// extern OSPfs D_800DD900[4];
extern Gfx* D_80137E64;
extern u8 D_80137E78;
extern s32 D_80161690;
extern f32 D_801616BC;
@@ -68,6 +190,9 @@ extern s32 D_801617B8;
extern s32 D_80161810[];
extern s16 D_80161A34;
extern s16 D_80161A36;
extern f32 D_80161A3C;
extern f32 D_80161A40;
extern f32 D_80161A44;
extern u8 D_80161A90[];
extern s16 D_80161AA0[];
extern UnkStruct_D_8016F110 D_8016F110[];
@@ -177,11 +302,9 @@ extern f32 D_801B905C;
extern f32 D_801B9060;
extern f32 D_801B9064;
extern Matrix* D_8013B3C0;
extern Matrix* D_8013BBC8;
extern f32 D_800C5D28[];
extern s32 D_801ADA44_EE6104[];
extern char D_801ADA44_EE6104[];
extern s32 D_801ADA84_EE6144[];
extern s32 D_801ADA94_EE6154;
@@ -265,27 +388,5 @@ extern Gfx D_D0098B0[];
extern Gfx D_F014180[];
extern u8 D_80137E84[];
extern OSMesgQueue D_800E2128;
extern OSMesgQueue D_800E22F8;
extern OSMesgQueue D_800E2318;
extern u8 D_80137E80;
extern s32 D_80144F60;
extern s8 D_800C7C50;
extern s8 D_800C7C54;
extern OSMesgQueue* D_800C7C58;
extern OSMesgQueue* D_800C7C5C;
extern OSMesgQueue* D_800C7C60;
extern OSMesgQueue* D_800C7C64;
extern OSMesg D_80156600;
extern OSMesg D_80156608;
extern OSMesg D_80156618;
extern OSMesg D_8015661C;
extern s32 D_8015F928;
extern OSThread D_80138E90;
extern OSThread D_8013A040; // 0x1000 gap
extern OSThread D_8013B1F0; // 0x1000 gap
#endif // VARIABLES_H