Decomped and named Matrix functions, decomped some sf_ files, some other cleanup and naming (#19)

* 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

* let
's try bss

* too much?

* one fix

* even more things

* one quick thing

* oh come on
This commit is contained in:
petrie911
2023-11-12 19:49:03 -03:00
committed by GitHub
parent a56edcf8e8
commit 77894de848
34 changed files with 1865 additions and 537 deletions
+80 -14
View File
@@ -9,6 +9,10 @@ void func_80002AF4(void);
void func_80002BE8(void);
void func_80002C50(void);
void func_80002CB8(void);
void func_8000316C(Gfx** dList);
void func_800032B4(Gfx** dList);
void func_800033E0(void* var_s2, void* var_s1, s32 var_s0);
void func_800034E8(u8 arg0);
f32 Math_ModF(f32 value, f32 mod);
void Rand_Init(void);
@@ -21,32 +25,55 @@ f32 Math_Atan2F_XYAlt(f32 x, f32 y);
f32 Math_PowF(f32 base, s32 exp);
void Math_MinMax(s32* min, s32* max, s32 val1, s32 val2, s32 val3);
void func_80005680(Matrix*, Matrix*);
void func_80005708(Matrix** mtx);
void func_80005740(Matrix** mtx);
void func_80005B00(Matrix*, f32, f32, f32, u8);
void func_80005C34(Matrix*, f32, f32, f32, s32);
void func_80005E90(Matrix*, float, char);
void func_80006A20(Matrix*, Vec3f*, Vec3f*);
void func_80006EB8(Gfx**);
void func_80006F20(void);
void Matrix_Copy(Matrix*, Matrix*);
void Matrix_Push(Matrix** mtxStack);
void Matrix_Pop(Matrix** mtxStack);
void Matrix_Mult(Matrix*, Matrix*, u8);
void Matrix_Translate(Matrix*, f32, f32, f32, u8);
void Matrix_Scale(Matrix*, f32, f32, f32, u8);
void Matrix_RotateX(Matrix*, f32, u8);
void Matrix_RotateY(Matrix*, f32, u8);
void Matrix_RotateZ(Matrix*, f32, u8);
void Matrix_RotateAxis(Matrix*, f32, f32, f32, f32, u8);
void Matrix_ToMtx(Mtx *dest);
void Matrix_FromMtx(Mtx *src, Matrix *dest);
void Matrix_MultVec3f(Matrix*, Vec3f*, Vec3f*);
void Matrix_MultVec3fNoTranslate(Matrix*, Vec3f*, Vec3f*);
void Matrix_GetYRPAngles(Matrix*, Vec3f*);
void Matrix_GetXYZAngles(Matrix*, Vec3f*);
void Matrix_LookAt(Matrix*, f32, f32, f32, f32, f32, f32, f32, f32, f32, u8);
void Matrix_SetGfxMtx(Gfx**);
s32 func_80006FD8(u64 arg0, void* arg2, s32 arg3, s32 arg4);
void func_80006F20(void);
void* func_80006F38(s32);
void func_80007068(s32* arg0, s32 arg1);
void func_8000707C(s32* arg0, s32 arg1);
void func_80007088(UnkStruct_func_80007088*);
void func_800070C8(u64);
s32 func_800071FC(UnkStruct_7D30*);
s32 func_800072E0(UnkStruct_7D30*);
s32 func_800071FC(SaveFile*);
s32 func_800072E0(SaveFile*);
void Fault_ThreadEntry(void*);
void func_80007FE4(FrameBuffer*, u16, u16);
void func_80008018(void);
void Fault_Init(void);
void func_80016A50(void);
void func_800182F4(s32);
void func_80019218(u32, f32*, u8, f32*, f32*, s8*);
void func_8001A838(u32 arg0);
void func_8001ACDC(s32);
void func_8001AE58(void);
void func_8001AF40(s32 arg0);
void func_8001D400(s32);
void func_8001DBD0(s32);
void func_8001DC6C(s32, s32);
void func_8000FFCC(void);
void func_8001D8A8(u8, u8);
void func_8001DCE0(void);
void func_8001DECC(void);
SPTask* func_8001DF50(void);
@@ -99,7 +126,17 @@ s64 __ull_div(s64, s64);
s64 __ll_mul(s64, s64);
s64 __ll_rshift(s64, s64);
void func_8002E548(void);
void func_8003DAF0(void);
void func_80040CDC(void);
u8 func_80058F14(u8 arg0, u8 arg1);
void func_80059498(void);
void func_80057D00(void);
void func_80060FBC(u8*, f32*);
void func_800612B8(UnkStruct_90A00_1C*, u16);
void func_800613C4(UnkStruct_func_80090A00*);
void func_8006EEFC(s32, f32, f32, f32, f32, f32, f32, f32, f32, f32);
void func_8007C120(f32, f32, f32, f32, f32, f32, f32, s32);
@@ -110,6 +147,7 @@ void func_800857DC(f32, f32, f32, f32);
void func_80085890(f32, f32, f32, f32);
void func_80086664(f32, f32);
void func_80087530(f32, f32, s32);
void func_8008865C(void);
void func_8008B5B0(f32 x, f32 y);
s32 func_8008B774(void);
void func_8008BD00(u8*, s32, s32, u8);
@@ -117,13 +155,18 @@ void func_8008C390(f32, f32, f32, s32);
void func_8008C5C8(f32, f32, f32, s32);
void func_8008C6F4(s32, s32);
s32 func_8008BCBC(s32 arg0);
void func_8008CA44(void);
s32 func_8008CB8C(void);
void func_8008D0DC(f32, f32, f32, f32, f32);
void func_8008DE68(void);
void func_8008E9EC(f32 arg0, f32 arg1);
void func_8008EA14(f32, f32);
void func_8008FA84(void);
void func_8008FFF0(UnkStruct_D_8016F110* arg0, s32);
s32 func_8009092C(UnkStruct_func_80090A00*);
s32 func_800915FC(UnkStruct_func_80090A00*);
void func_80094D20(f32, f32);
void func_8009F574(Gfx **, s32, s32, s32, s32, u8, u8, u8, u8);
f32 func_8009BC2C(f32*, f32, f32, f32, f32);
f32 func_8009BD38(f32*, f32, f32, f32, f32);
void func_8009D418(Gfx**, void*, u32, u32, f32, f32, f32, f32);
@@ -134,22 +177,45 @@ f32 func_8009F768(f32);
void func_8009FEA0(s32, s32, s32);
void func_800A1200(s32, s32, f32, f32, char*);
void func_800A18B0(void);
void func_800A1980(void);
s32 func_800A1B6C(void);
void func_800A1C14(Gfx **);
void func_800A1E68(Gfx **);
void func_800A1F44(void);
void func_800A1FB0(Gfx **, u8 , u8);
void func_800A24DC(s32);
void func_800A26C0(void);
void func_800A25DC(void);
UnkStruct_func_80090A00 *func_800A3608(s32 arg0);
void func_800A3CA0(void);
s32 func_800A3F50(s32);
void func_800A5844(void);
void func_800A5D6C(void);
void func_800A6148(void);
void func_800B86CC(void);
void func_800B8DD0(Gfx**, s16);
void func_800BA490(void);
void func_800BA4F0(void);
s32 func_800BA7BC(s32, s32);
s32 func_800BA7BC(u16*, s32);
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);
void func_800C1ED4(void);
void func_800C20B0(void);
void func_800C2190(void);
s32 func_800C2890(u16*);
s32 func_800C2F30(s32, s32);
s32 func_800C2F30(u16*, s32);
s32 func_800C3084(void);
s32 func_800C3194(void);
void func_80187520_EFFA40(s32, void*);
void func_8018A96C(void);
void func_8018AAC4(void);
void func_801988E0(void);
void func_8019E8D0(void);
void func_801877F0_EBFEB0(void);
s32 func_80187ABC_EC017C(void);
+24 -1
View File
@@ -17,9 +17,32 @@
#include "macros.h"
#include "sf64math.h"
typedef enum {
SI_MESG_10 = 10,
SI_MESG_11,
SI_MESG_12,
SI_MESG_13,
SI_MESG_14,
SI_MESG_15,
SI_MESG_16,
} SerialMesg;
#define SCREEN_WIDTH 320
#define SCREEN_HEIGHT 240
#define MSG_QUEUE_EMPTY -1
#define FAULT_MESG_BREAK 1
#define FAULT_MESG_FAULT 2
#define TASK_MESG_1 1
#define TASK_MESG_2 2
#define EVENT_MESG_SP 1
#define EVENT_MESG_DP 2
#define EVENT_MESG_VI 3
#define EVENT_MESG_PRENMI 4
typedef enum {
THREAD_ID_SYSTEM,
THREAD_ID_IDLE,
@@ -29,7 +52,7 @@ typedef enum {
THREAD_ID_AUDIO,
THREAD_ID_GRAPHICS,
THREAD_ID_7,
THREAD_ID_8,
THREAD_ID_SERIAL,
} ThreadID;
#endif // GLOBAL_H
-2
View File
@@ -11,8 +11,6 @@ typedef struct UnkStruct_func_80095350 {
/* 0xB6 */ s16 unkB6;
} UnkStruct_func_80095350;
void func_800612B8(void*, s32);
void func_800613C4(UnkStruct_func_80090A00*);
void func_80084E78(Gfx**, void*, void*, s32, s32, f32, f32, f32, f32, f32, f32);
void func_80085944(void);
void func_80086CC8(void);
+1 -11
View File
@@ -5,6 +5,7 @@
#define M_PI 3.14159265358979323846f
#define M_DTOR (M_PI / 180.0f)
#define M_RTOD (180.0f / M_PI)
#define M_SQRT2 1.41421356237309504880f
#define M_SQRT1_2 0.70710678118654752440f /* 1/sqrt(2) */
#define FLT_MAX 340282346638528859811704183484516925440.0f
@@ -25,17 +26,6 @@ typedef union {
f32 f;
} fu;
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;
float fabsf(float f);
+11
View File
@@ -9,4 +9,15 @@ typedef struct {
/* 0x8 */ f32 z;
} Vec3f; // size = 0xC
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; // size = 0x40
#endif
+64 -26
View File
@@ -4,23 +4,58 @@
#include "global.h"
#include "sf64math.h"
typedef struct {
/* 0x0 */ void* start;
/* 0x4 */ void* end;
} SegmentOffset; // size = 0x8
typedef struct {
/* 0x00 */ SegmentOffset unk_0;
/* 0x08 */ SegmentOffset unk_8;
/* 0x10 */ SegmentOffset unk_10;
/* 0x18 */ SegmentOffset unk_18;
/* 0x20 */ SegmentOffset unk_20[15];
} OverlayInit; // size = 0x98
typedef struct {
/* 0x0 */ void* vRomAddress;
/* 0x8 */ SegmentOffset pRom;
/* 0xC */ s32 compFlag;
} DmaEntry; // size = 0x10;
typedef void (*unkFunc_80007088)(s32, s32);
typedef struct {
/* 0x00 */ u8 unk0;
/* 0x08 */ OSTimer unk8;
/* 0x28 */ unkFunc_80007088 unk28;
/* 0x2C */ s32 unk2C;
/* 0x30 */ s32 unk30;
} UnkStruct_func_80007088; // size = 0x38, 0x8 aligned
typedef struct {
u16 data[240 * 320];
} FrameBuffer;
} FrameBuffer; // size = 0x25800
typedef struct {
u8 data[0x40][8];
} UnkStruct_7D30;
/* 0x00 */ char unk_0[0xFE];
/* 0xFE */ u16 unk_FE;
} Save; // size = 0x100
typedef union {
Save save[2];
u8 raw[EEPROM_BLOCK_SIZE*EEPROM_MAXBLOCKS];
} SaveFile; // size = 0x200
typedef struct {
OSThread thread;
char stack[0x800];
OSMesgQueue msgQueue;
OSMesg msg;
FrameBuffer* fb;
u16 width;
u16 height;
} FaultMgr;
/* 0x000 */ OSThread thread;
/* 0x1B0 */ char stack[0x800];
/* 0x9B0 */ OSMesgQueue msgQueue;
/* 0x9C8 */ OSMesg msg;
/* 0x9CC */ FrameBuffer* fb;
/* 0x9D0 */ u16 width;
/* 0x9D2 */ u16 height;
} FaultMgr; // size = 0x9D8, 0x8 aligned
typedef enum {
SPTASK_STATE_NOT_STARTED,
@@ -31,21 +66,21 @@ typedef enum {
} SpTaskState;
typedef struct {
OSTask task;
OSMesgQueue* msgQueue;
OSMesg msg;
SpTaskState state;
} SPTask;
/* 0x00 */ OSTask task;
/* 0x40 */ OSMesgQueue* msgQueue;
/* 0x44 */ OSMesg msg;
/* 0x48 */ SpTaskState state;
} SPTask; // size = 0x50, 0x8 aligned
typedef struct {
SPTask task;
Vp viewports[0x10];
Mtx mtx[0x480];
Gfx unkDL1[0x180];
Gfx masterDL[0x1380];
Gfx unkDL2[0xD80];
Lightsn lights[0x100];
} GfxPool;
/* 0x00000 */ SPTask task;
/* 0x00050 */ Vp viewports[0x10];
/* 0x00150 */ Mtx mtx[0x480];
/* 0x12150 */ Gfx unkDL1[0x180];
/* 0x12D50 */ Gfx masterDL[0x1380];
/* 0x1C950 */ Gfx unkDL2[0xD80];
/* 0x23550 */ Lightsn lights[0x100];
} GfxPool; // size = 0x2AD50
typedef struct UnkStruct_D_801B8350 {
/* 0x00 */ Vec3f unk0;
@@ -104,6 +139,10 @@ typedef struct UnkStruct_D_80178280 {
/* 0x2C0 */ char pad_2C0[0x220];
} UnkStruct_D_80178280; // size = 0x4E0
typedef struct {
char unk0[0x24];
} UnkStruct_90A00_1C;
typedef struct {
/* 0x000 */ ElementType1 unk_000;
/* 0x01C */ char pad_01C[0x32];
@@ -115,8 +154,7 @@ typedef struct {
typedef struct {
/* 0x000 */ ElementType1 unk_000;
/* 0x01C */ s32 unk_01C;
/* 0x020 */ char pad_020[0x20];
/* 0x01C */ UnkStruct_90A00_1C unk_01C;
/* 0x040 */ s32 unk_040;
/* 0x044 */ char pad_044[0xC];
/* 0x050 */ s32 unk_050[25];
+77 -19
View File
@@ -27,8 +27,8 @@ extern Vec3f D_800C46DC;
extern u8 sFaultCharIndex[];
extern s32 sFaultCharPixelFlags[];
extern char* D_800C4870[];
extern char* D_800C48B8[];
extern const char* D_800C4870[];
extern const char* D_800C48B8[];
extern f32 D_800C5D34;
extern s8 D_800C5D3C;
@@ -41,6 +41,38 @@ extern OSMesgQueue* D_800C7C64;
extern char D_800C7C80[];
extern u8 D_800CA3B0;
extern OverlayInit D_800CA3B4[];
extern OverlayInit D_800CA44C[];
extern OverlayInit D_800CA7DC[];
extern OverlayInit D_800CA874[];
extern OverlayInit D_800CA90C[];
extern OverlayInit D_800CA9A4[];
extern OverlayInit D_800CAA3C[];
extern OverlayInit D_800CAAD4[];
extern OverlayInit D_800CAC04[];
extern OverlayInit D_800CAF94[];
extern OverlayInit D_800CB0C4[];
extern OverlayInit D_800CB15C[];
extern OverlayInit D_800CB1F4[];
extern OverlayInit D_800CB28C[];
extern OverlayInit D_800CB3BC[];
extern OverlayInit D_800CB454[];
extern OverlayInit D_800CB4EC[];
extern OverlayInit D_800CB584[];
extern OverlayInit D_800CB61C[];
extern OverlayInit D_800CB6B4[];
extern OverlayInit D_800CB74C[];
extern OverlayInit D_800CB87C[];
extern OverlayInit D_800CB914[];
extern OverlayInit D_800CB9AC[];
extern OverlayInit D_800CBA44[];
extern OverlayInit D_800CBB74[];
extern OverlayInit D_800CBC0C[];
extern UnkStruct_90A00_1C D_800CC124[400];
extern Gfx D_800D31F8[];
extern Gfx D_800D3240[];
extern Gfx D_800D3288[];
@@ -66,8 +98,9 @@ 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 OSThread gSerialThread; // 800E0E00
extern u8 gSerialThreadStack[0x1000]; // 800E0FB0
extern u8 gUnusedStack[0x1000];
extern SPTask* gCurrentTask;
extern SPTask* D_800E1FB4[1];
@@ -81,11 +114,11 @@ extern OSMesg sPiMgrCmdBuff[50]; // 800E2028
extern OSMesgQueue D_800E20F0;
extern void *D_800E2108[1];
extern OSIoMesg D_800E2110;
extern OSMesgQueue D_800E2128;
extern OSMesgQueue gSerialEventQueue;
extern void *D_800E2140[1];
extern OSMesgQueue D_800E2148;
extern OSMesgQueue gMainThreadMsgQueue;
extern void *D_800E2160[32];
extern OSMesgQueue D_800E21E0;
extern OSMesgQueue gTaskMsgQueue;
extern void *D_800E21F8[16];
extern OSMesgQueue D_800E2238;
extern void *D_800E2250[1];
@@ -95,13 +128,13 @@ extern OSMesgQueue D_800E2278;
extern void *D_800E2290[4];
extern OSMesgQueue D_800E22A0;
extern void *D_800E22B8[2];
extern OSMesgQueue D_800E22C0;
extern OSMesgQueue gSerialThreadMsgQueue;
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 OSMesgQueue gThread7msgQueue;
extern void *D_800E2350[16];
extern OSMesgQueue D_800E2390;
extern void *D_800E23A8[1];
@@ -126,6 +159,8 @@ extern u8 D_80137E84[4];
extern u16 D_80137E88;
extern u16 D_80137E8A;
extern DmaEntry gDmaTable[];
extern s32 D_80178580;
extern s32 *D_80178710;
extern s32 D_80178728;
@@ -139,13 +174,15 @@ extern s32 D_80387800;
extern u16 D_8038F080[];
extern u16 D_8038F300[];
extern FrameBuffer D_80282000; // z buffer
extern FrameBuffer gFrameBuffers[3]; // 8038F800
extern Gfx D_Gfx_800DBAA0[];
extern GfxPool gGfxPools[2]; // 800E23B0
extern Matrix* D_8013B3C0;
extern Matrix D_8013B3C8[0x20];
extern Matrix* D_8013BBC8;
extern Matrix D_8013BBD0[];
extern Matrix D_8013BBD0[0x20];
extern OSThread sIdleThread; // 80138E90
extern u8 sIdleThreadStack[0x1000]; // 801390A0
@@ -153,14 +190,14 @@ extern OSThread gMainThread; // 8013A040
extern u8 sMainThreadStack[0x1000]; // 8013A1F0
extern OSThread gAudioThread; //8013B1F0
extern UnkStruct_7D30 D_80144F60;
extern UnkStruct_7D30 D_80145160;
extern SaveFile D_80144F60;
extern SaveFile D_80145160;
extern FaultMgr gFaultMgr;
extern OSMesg D_80156600;
extern OSMesg D_80156608;
extern OSMesg D_80156618;
extern OSMesg D_8015661C;
extern OSMesg D_80156600[1];
extern OSMesg D_80156608[4];
extern OSMesg D_80156618[1];
extern OSMesg D_8015661C[1];
extern s32 D_8015F928;
@@ -177,6 +214,11 @@ extern s32 D_800D2190[];
extern f32 D_800D21A0;
extern f32 D_800D21A4;
extern s32 D_800D2870;
extern s32 D_800D28B4[];
extern u8 D_800D2908;
extern u8 D_800D290C;
extern u8 D_800D2910;
extern u8 D_800D2914;
extern u16 D_Tex_800D99F8[];
extern OSContPad D_800DD880[4];
@@ -190,8 +232,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 s32 D_8015F924;
extern s32 D_80161690;
extern f32 D_801616BC;
extern f32 D_801616C0;
@@ -214,23 +255,36 @@ extern s32 D_801617B0;
extern s32 D_801617B4;
extern s32 D_801617B8;
extern s32 D_80161810[];
extern f32 D_80161A10;
extern f32 D_80161A14;
extern u16 D_80161A2E;
extern u16 D_80161A30;
extern u16 D_80161A32;
extern s16 D_80161A34;
extern s16 D_80161A36;
extern u16 D_80161A36;
extern u8 D_80161A38;
extern s8 D_80161A39;
extern f32 D_80161A3C;
extern f32 D_80161A40;
extern f32 D_80161A44;
extern u8 D_80161A90[];
extern s16 D_80161AA0[];
extern UnkStruct_func_80090A00 D_80163FE0[60];
extern UnkStruct_D_8016F110 D_8016F110[];
extern UnkStruct_D_80175A10 D_80175A10[];
extern UnkStruct_D_80178280* D_80178280;
extern s32 D_801774F8;
extern s32 D_80177820;
extern s32 D_8017782C;
extern u8 D_80177830;
extern s32 D_80177834;
extern s32 D_80177838;
extern s32 D_8017783C;
extern s32 D_80177848;
extern s32 D_80177854;
extern s32 D_80177868;
extern s32 D_80177898;
extern s32 D_801778A0;
extern s32 D_801778A8;
@@ -248,6 +302,7 @@ extern f32 D_801779C0;
extern s32 D_801779F8;
extern s32 D_80177AE0;
extern s32 D_80177AF8;
extern s32 D_80177B40;
extern u8 D_80177C98;
extern f32 D_80177D08;
extern f32 D_80177D20;
@@ -256,6 +311,7 @@ extern f32 D_80177D68;
extern s32 D_80177DA0[];
extern s32 D_80177DB0;
extern s32 D_80178234;
extern s32 D_8017827C;
extern s32 D_8017829C;
extern s32 D_801782A4;
extern s32 D_801782D8;
@@ -269,9 +325,11 @@ extern s32 D_80178340;
extern s32 D_80178348;
extern s32 D_80178350;
extern s32 D_80178354;
extern s32 D_80178380;
extern s32 D_80178410;
extern f32 D_80178420;
extern f32 D_80178424;
extern f32 D_80178428;
extern f32 D_8017842C;
extern s32 D_80178548;
extern s32 D_8017854C;