mirror of
https://github.com/izzy2lost/Starship.git
synced 2026-07-05 15:19:42 -07:00
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:
Vendored
+2
@@ -32,6 +32,8 @@
|
||||
"os_version.h": "c",
|
||||
"stdbool.h": "c",
|
||||
"variables.h": "c",
|
||||
"functions.h": "c",
|
||||
"macros.h": "c",
|
||||
"random": "c"
|
||||
},
|
||||
}
|
||||
+80
-14
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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);
|
||||
|
||||
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
@@ -15,12 +15,68 @@ Math_FactorialF = 0x800053C8;
|
||||
Math_Factorial = 0x800054C8;
|
||||
Math_PowF = 0x800055DC;
|
||||
Math_MinMax = 0x80005604;
|
||||
|
||||
Matrix_Copy = 0x80005680;
|
||||
Matrix_Push = 0x80005708;
|
||||
Matrix_Pop = 0x80005740;
|
||||
Matrix_Mult = 0x80005754;
|
||||
Matrix_Translate = 0x80005B00;
|
||||
Matrix_Scale = 0x80005C34;
|
||||
Matrix_RotateX = 0x80005D44;
|
||||
Matrix_RotateY = 0x80005E90;
|
||||
Matrix_RotateZ = 0x80005FE0;
|
||||
Matrix_RotateAxis = 0x8000612C;
|
||||
Matrix_ToMtx = 0x80006500;
|
||||
Matrix_FromMtx = 0x8000671C;
|
||||
Matrix_MultVec3f = 0x80006970;
|
||||
Matrix_MultVec3fNoTranslate = 0x80006A20;
|
||||
Matrix_GetYRPAngles = 0x80006AB8;
|
||||
Matrix_GetXYZAngles = 0x80006C7C;
|
||||
Matrix_LookAt = 0x80006E3C;
|
||||
Matrix_SetGfxMtx = 0x80006EB8;
|
||||
|
||||
D_800C45E0 = 0x800C45E0;
|
||||
|
||||
D_800C57EC = 0x800C57EC;
|
||||
D_800C7380 = 0x800C7380;
|
||||
D_800C5FF4 = 0x800C5FF4; //type:u16 size:5000
|
||||
|
||||
D_80163FE0 = 0x80163FE0; //size:0xB130
|
||||
|
||||
gDmaTable = 0x80178A70;
|
||||
|
||||
D_800DD880 = 0x800DD880; // size:0x18
|
||||
D_800DD898 = 0x800DD898; // size:0x18
|
||||
D_800DD8B0 = 0x800DD8B0; // size:0x4
|
||||
D_800DD8B4 = 0x800DD8B4; // size:0x4
|
||||
D_800DD8B8 = 0x800DD8B8; // size:0x4
|
||||
D_800DD8BC = 0x800DD8BC; // ignore:true
|
||||
D_800DD8C0 = 0x800DD8C0; // size:0x18
|
||||
D_800DD8D8 = 0x800DD8D8; // size:0x18
|
||||
D_800DD8F0 = 0x800DD8F0; // size:0x10
|
||||
D_800DD900 = 0x800DD900; // size:0x1A0
|
||||
|
||||
D_800CBDD4 = 0x800CBDD4; //size:0x98
|
||||
|
||||
D_80178870 = 0x80178870; //size:0x200
|
||||
|
||||
D_800E20F0 = 0x800E20F0;
|
||||
gTaskMsgQueue = 0x800E21E0;
|
||||
D_800E2238 = 0x800E2238;
|
||||
D_800E2258 = 0x800E2258;
|
||||
D_800E2278 = 0x800E2278;
|
||||
D_800E22A0 = 0x800E22A0;
|
||||
gSerialEventQueue = 0x800E2128;
|
||||
gMainThreadMsgQueue = 0x800E2148;
|
||||
gThread7msgQueue = 0x800E2338;
|
||||
D_800E2390 = 0x800E2390;
|
||||
gSerialThreadMsgQueue = 0x800E22C0;
|
||||
D_800E22F8 = 0x800E22F8;
|
||||
D_800E2318 = 0x800E2318;
|
||||
|
||||
Thread7_ThreadEntry = 0x800040D4;
|
||||
SerialInterface_ThreadEntry = 0x80003FEC;
|
||||
|
||||
gIdentityMtx = 0x800C4620;
|
||||
gIdentityMatrix = 0x800C4660;
|
||||
|
||||
@@ -32,6 +88,9 @@ Math_FAtan2F = 0x8001FD0C;
|
||||
Math_FAsinF = 0x8001FE00;
|
||||
Math_FAcosF = 0x8001FE30;
|
||||
|
||||
Fault_Init = 0x80008018;
|
||||
func_80003C50 = 0x80003C50;
|
||||
|
||||
Idle_ThreadEntry = 0x80004D00;
|
||||
Main_ThreadEntry = 0x80004ABC;
|
||||
Audio_ThreadEntry = 0x80003B48;
|
||||
@@ -47,8 +106,8 @@ gGraphicsThread = 0x800DEAA0;
|
||||
gGraphicsThreadStack = 0x800DEC50;
|
||||
gUnkThread3 = 0x800DFC50;
|
||||
gUnkThread3Stack = 0x800DFE00;
|
||||
gUnkThread4 = 0x800E0E00;
|
||||
gUnkThread4Stack = 0x800E0FB0;
|
||||
gSerialThread = 0x800E0E00;
|
||||
gSerialThreadStack = 0x800E0FB0;
|
||||
|
||||
gCurrentTask = 0x800E1FB0;
|
||||
D_800E1FB4 = 0x800E1FB4;
|
||||
|
||||
@@ -31,4 +31,4 @@ D_Vtx_800DAC80 = 0x800DAC80;
|
||||
|
||||
D_Unk_800DACB8 = 0x800DACB8;
|
||||
D_Unk_800DB4B8 = 0x800DB4B8;
|
||||
D_Unk_800D96E4 = 0x800D96E4; // type:s16
|
||||
D_Unk_800D96E8 = 0x800D96E8; // type:s16
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#include "global.h"
|
||||
|
||||
#ifdef NON_MATCHING // needs data import
|
||||
#ifdef DATA_IMPORT_PENDING
|
||||
s32 osAiSetNextBuffer(void* bufPtr, u32 size) {
|
||||
static u8 hdwrBugFlag = FALSE;
|
||||
char* bptr;
|
||||
|
||||
@@ -10,7 +10,7 @@ extern char piThreadStack[];
|
||||
extern OSThread ramromThread;
|
||||
extern char ramromThreadStack[];
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
#ifdef DATA_IMPORT_PENDING
|
||||
OSDevMgr __osPiDevMgr = { 0 };
|
||||
|
||||
void osCreatePiMgr(OSPri pri, OSMesgQueue* cmdQ, OSMesg* cmdBuf, s32 cmdMsgCnt) {
|
||||
|
||||
+4
-4
@@ -11,10 +11,10 @@
|
||||
void func_8001E7C8(void) {
|
||||
D_800C7C50 = 0;
|
||||
D_800C7C54 = 0;
|
||||
osCreateMesgQueue(D_800C7C58, &D_80156600, 1);
|
||||
osCreateMesgQueue(D_800C7C5C, &D_80156608, 4);
|
||||
osCreateMesgQueue(D_800C7C60, &D_80156618, 1);
|
||||
osCreateMesgQueue(D_800C7C64, &D_8015661C, 1);
|
||||
osCreateMesgQueue(D_800C7C58, D_80156600, 1);
|
||||
osCreateMesgQueue(D_800C7C5C, D_80156608, 4);
|
||||
osCreateMesgQueue(D_800C7C60, D_80156618, 1);
|
||||
osCreateMesgQueue(D_800C7C64, D_8015661C, 1);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/1EB50/func_8001E850.s")
|
||||
|
||||
+28
-16
@@ -1,9 +1,21 @@
|
||||
#include "global.h"
|
||||
|
||||
extern OSContPad D_800DD8C0[4];
|
||||
extern OSContPad D_800DD8D8[4];
|
||||
extern OSContStatus D_800DD8F0[4];
|
||||
extern OSPfs D_800DD900[4];
|
||||
#ifdef DATA_IMPORT_PENDING
|
||||
OSContPad D_800DD880[4];
|
||||
OSContPad D_800DD898[4];
|
||||
u8 D_800DD8B0[4];
|
||||
s32 D_800DD8B4;
|
||||
u8 D_800DD8B8[4];
|
||||
OSContPad D_800DD8C0[4]; //
|
||||
OSContPad D_800DD8D8[4]; //
|
||||
OSContStatus D_800DD8F0[4]; //
|
||||
OSPfs D_800DD900[4]; //
|
||||
#else
|
||||
extern OSContPad D_800DD8C0[4]; //
|
||||
extern OSContPad D_800DD8D8[4]; //
|
||||
extern OSContStatus D_800DD8F0[4]; //
|
||||
extern OSPfs D_800DD900[4]; //
|
||||
#endif
|
||||
|
||||
void func_80002840(s32 contrNum) {
|
||||
s32 temp_v0 = D_800DD880[contrNum].stick_x;
|
||||
@@ -47,7 +59,7 @@ void func_8000291C(void) {
|
||||
u8 sp1F;
|
||||
s32 i;
|
||||
|
||||
osContInit(&D_800E2128, &sp1F, D_800DD8F0);
|
||||
osContInit(&gSerialEventQueue, &sp1F, D_800DD8F0);
|
||||
for (i = 0; i < 4; i++) {
|
||||
D_800DD8B0[i] = (sp1F >> i) & 1;
|
||||
D_800DD8B8[i] = 0;
|
||||
@@ -70,7 +82,7 @@ void func_800029A8(void) {
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NON_MATCHING // requires data import on D_800DD8C0
|
||||
#ifdef DATA_IMPORT_PENDING // requires data import on D_800DD8C0
|
||||
void func_80002AF4(void) {
|
||||
s32 i;
|
||||
|
||||
@@ -80,11 +92,11 @@ void func_80002AF4(void) {
|
||||
D_800DD8C0[i].button = D_800DD8C0[i].stick_x = D_800DD8C0[i].stick_y = D_800DD8C0[i].errno = 0;
|
||||
}
|
||||
} else {
|
||||
osContStartReadData(&D_800E2128);
|
||||
osRecvMesg(&D_800E2128, NULL, 1);
|
||||
osContStartReadData(&gSerialEventQueue);
|
||||
osRecvMesg(&gSerialEventQueue, NULL, OS_MESG_BLOCK);
|
||||
osContGetReadData(D_800DD8C0);
|
||||
}
|
||||
osSendMesg(&D_800E22F8, (OSMesg) 16, 0);
|
||||
osSendMesg(&D_800E22F8, (OSMesg) SI_MESG_16, OS_MESG_PRI_NORMAL);
|
||||
}
|
||||
#else
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/3440/func_80002AF4.s")
|
||||
@@ -92,32 +104,32 @@ void func_80002AF4(void) {
|
||||
|
||||
void func_80002BE8(void) {
|
||||
if ((D_80137E80 == 0) && (func_800072E0(&D_80144F60) == 0)) {
|
||||
osSendMesg(&D_800E2318, (OSMesg) 15, 0);
|
||||
osSendMesg(&D_800E2318, (OSMesg) SI_MESG_15, OS_MESG_PRI_NORMAL);
|
||||
return;
|
||||
}
|
||||
osSendMesg(&D_800E2318, (OSMesg) 14, 0);
|
||||
osSendMesg(&D_800E2318, (OSMesg) SI_MESG_14, OS_MESG_PRI_NORMAL);
|
||||
}
|
||||
|
||||
void func_80002C50(void) {
|
||||
if ((D_80137E80 == 0) && (func_800071FC(&D_80144F60) == 0)) {
|
||||
osSendMesg(&D_800E2318, (OSMesg) 15, 0);
|
||||
osSendMesg(&D_800E2318, (OSMesg) SI_MESG_15, OS_MESG_PRI_NORMAL);
|
||||
return;
|
||||
}
|
||||
osSendMesg(&D_800E2318, (OSMesg) 14, 0);
|
||||
osSendMesg(&D_800E2318, (OSMesg) SI_MESG_14, OS_MESG_PRI_NORMAL);
|
||||
}
|
||||
|
||||
void func_80002CB8(void) {
|
||||
s32 i;
|
||||
|
||||
osContStartQuery(&D_800E2128);
|
||||
osRecvMesg(&D_800E2128, NULL, 1);
|
||||
osContStartQuery(&gSerialEventQueue);
|
||||
osRecvMesg(&gSerialEventQueue, NULL, OS_MESG_BLOCK);
|
||||
osContGetQuery(D_800DD8F0);
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
if ((D_800DD8B0[i] != 0) && (D_800DD8F0[i].errno == 0)) {
|
||||
if (D_800DD8F0[i].status & 1) {
|
||||
if (D_800DD8B8[i] == 0) {
|
||||
if (osMotorInit(&D_800E2128, &D_800DD900[i], i)) {
|
||||
if (osMotorInit(&gSerialEventQueue, &D_800DD900[i], i)) {
|
||||
D_800DD8B8[i] = 0;
|
||||
} else {
|
||||
D_800DD8B8[i] = 1;
|
||||
|
||||
+2
-46
@@ -91,57 +91,13 @@ void func_8000316C(Gfx** dList) {
|
||||
gSPMatrix((*dList)++, gGfxMtx++, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
|
||||
guLookAt(gGfxMtx, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -12800.0f, 0.0f, 1.0f, 0.0f);
|
||||
gSPMatrix((*dList)++, gGfxMtx++, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
|
||||
func_80005680(D_8013B3C0, &gIdentityMatrix);
|
||||
Matrix_Copy(D_8013B3C0, &gIdentityMatrix);
|
||||
}
|
||||
|
||||
void func_800032B4(Gfx** dList) {
|
||||
void* temp_t0;
|
||||
void* temp_t0_2;
|
||||
|
||||
guOrtho(gGfxMtx, -160.0f, 160.0f, -120.0f, 120.0f, D_80161A40, D_80161A44, 1.0f);
|
||||
gSPMatrix((*dList)++, gGfxMtx++, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
|
||||
guLookAt(gGfxMtx, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -12800.0f, 0.0f, 1.0f, 0.0f);
|
||||
gSPMatrix((*dList)++, gGfxMtx++, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
|
||||
func_80005680(D_8013B3C0, &gIdentityMatrix);
|
||||
}
|
||||
|
||||
void func_800033E0(u32 var_s2, u8* var_s1, s32 var_s0) {
|
||||
osInvalICache(var_s1, var_s0);
|
||||
osInvalDCache(var_s1, var_s0);
|
||||
while (var_s0 > 0x100) {
|
||||
osPiStartDma(&D_800E2110, 0, 0, var_s2, var_s1, 0x100, &D_800E20F0);
|
||||
var_s0 -= 0x100;
|
||||
var_s2 += 0x100;
|
||||
var_s1 += 0x100;
|
||||
osRecvMesg(&D_800E20F0, NULL, 1);
|
||||
}
|
||||
if (var_s0 != 0) {
|
||||
osPiStartDma(&D_800E2110, 0, 0, var_s2, var_s1, var_s0, &D_800E20F0);
|
||||
osRecvMesg(&D_800E20F0, NULL, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void func_800034E8(u8 arg0) {
|
||||
s32 i;
|
||||
|
||||
D_80137E88 |= 1;
|
||||
if (arg0 == 1) {
|
||||
if (D_80137E8A == 0) {
|
||||
if (D_80137E88 == 1) {
|
||||
osViBlack(1);
|
||||
} else {
|
||||
for (i = 0; i < 0x3C0; i++) {
|
||||
D_8038F080[i] = D_80137E88;
|
||||
}
|
||||
osWritebackDCacheAll();
|
||||
osViSwapBuffer(&D_8038F300);
|
||||
osViRepeatLine(1);
|
||||
}
|
||||
D_80137E8A = 1;
|
||||
}
|
||||
} else if (D_80137E8A == 1) {
|
||||
osViRepeatLine(0);
|
||||
osViBlack(0);
|
||||
D_80137E8A = 0;
|
||||
}
|
||||
Matrix_Copy(D_8013B3C0, &gIdentityMatrix);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
#include "global.h"
|
||||
|
||||
void func_800033E0(void* var_s2, void* var_s1, ptrdiff_t var_s0) {
|
||||
osInvalICache(var_s1, var_s0);
|
||||
osInvalDCache(var_s1, var_s0);
|
||||
while (var_s0 > 0x100) {
|
||||
osPiStartDma(&D_800E2110, 0, 0, (uintptr_t) var_s2, var_s1, 0x100, &D_800E20F0);
|
||||
var_s0 -= 0x100;
|
||||
var_s2 = (void*) ((uintptr_t) var_s2 + 0x100);
|
||||
var_s1 = (void*) ((uintptr_t) var_s1 + 0x100);
|
||||
osRecvMesg(&D_800E20F0, NULL, OS_MESG_BLOCK);
|
||||
}
|
||||
if (var_s0 != 0) {
|
||||
osPiStartDma(&D_800E2110, 0, 0, (uintptr_t) var_s2, var_s1, var_s0, &D_800E20F0);
|
||||
osRecvMesg(&D_800E20F0, NULL, OS_MESG_BLOCK);
|
||||
}
|
||||
}
|
||||
|
||||
void func_800034E8(u8 arg0) {
|
||||
s32 i;
|
||||
|
||||
D_80137E88 |= 1;
|
||||
if (arg0 == 1) {
|
||||
if (D_80137E8A == 0) {
|
||||
if (D_80137E88 == 1) {
|
||||
osViBlack(1);
|
||||
} else {
|
||||
for (i = 0; i < 0x3C0; i++) {
|
||||
D_8038F080[i] = D_80137E88;
|
||||
}
|
||||
osWritebackDCacheAll();
|
||||
osViSwapBuffer(&D_8038F300);
|
||||
osViRepeatLine(1);
|
||||
}
|
||||
D_80137E8A = 1;
|
||||
}
|
||||
} else if (D_80137E8A == 1) {
|
||||
osViRepeatLine(0);
|
||||
osViBlack(0);
|
||||
D_80137E8A = 0;
|
||||
}
|
||||
}
|
||||
+145
-78
@@ -1,21 +1,82 @@
|
||||
#include "global.h"
|
||||
|
||||
void func_800034E8(s32);
|
||||
void Audio_ThreadEntry(void* /*arg0*/);
|
||||
void func_80003EE0(void);
|
||||
void func_80003FEC(void* /*arg0*/);
|
||||
void func_800040D4(void* /*arg0*/);
|
||||
void Graphics_ThreadEntry(void* /*arg0*/);
|
||||
|
||||
void func_80004560(void);
|
||||
void func_80004714(void);
|
||||
void func_80004798(void);
|
||||
void func_80004824(void);
|
||||
void func_800049D4(void);
|
||||
void func_80007088(void*);
|
||||
|
||||
s32 D_800C45D0 = 1;
|
||||
|
||||
#ifdef IMPORT_DATA_PENDING
|
||||
u8 gAudioThreadStack[0x1000]; // 800DDAA0
|
||||
OSThread gGraphicsThread; // 800DEAA0
|
||||
u8 gGraphicsThreadStack[0x1000]; // 800DEC50
|
||||
OSThread gUnkThread3; // 800DFC50
|
||||
u8 gUnkThread3Stack[0x1000]; // 800DFE00
|
||||
OSThread gSerialThread; // 800E0E00
|
||||
u8 gSerialThreadStack[0x1000]; // 800E0FB0
|
||||
|
||||
SPTask* gCurrentTask;
|
||||
SPTask* D_800E1FB4[1];
|
||||
SPTask* D_800E1FB8[2];
|
||||
SPTask* D_800E1FC0[2];
|
||||
SPTask* D_800E1FC8[2];
|
||||
u32 gSegments[16]; // 800E1FD0
|
||||
OSMesgQueue gPiMgrCmdQueue; // 800E2010
|
||||
OSMesg sPiMgrCmdBuff[50]; // 800E2028
|
||||
|
||||
OSMesgQueue D_800E20F0;
|
||||
void* D_800E2108[1];
|
||||
OSIoMesg D_800E2110;
|
||||
OSMesgQueue gSerialEventQueue;
|
||||
void* D_800E2140[1];
|
||||
OSMesgQueue gMainThreadMsgQueue;
|
||||
void* D_800E2160[32];
|
||||
OSMesgQueue gTaskMsgQueue;
|
||||
void* D_800E21F8[16];
|
||||
OSMesgQueue D_800E2238;
|
||||
void* D_800E2250[1];
|
||||
OSMesgQueue D_800E2258;
|
||||
void* D_800E2270[1];
|
||||
OSMesgQueue D_800E2278;
|
||||
void* D_800E2290[4];
|
||||
OSMesgQueue D_800E22A0;
|
||||
void* D_800E22B8[2];
|
||||
OSMesgQueue gSerialThreadMsgQueue;
|
||||
void* D_800E22D8[8];
|
||||
OSMesgQueue D_800E22F8;
|
||||
void* D_800E2310[1];
|
||||
OSMesgQueue D_800E2318;
|
||||
void* D_800E2330[1];
|
||||
OSMesgQueue gThread7msgQueue;
|
||||
void* D_800E2350[16];
|
||||
OSMesgQueue D_800E2390;
|
||||
void* D_800E23A8[1];
|
||||
|
||||
GfxPool gGfxPools[2];
|
||||
|
||||
GfxPool* gGfxPool;
|
||||
SPTask* gGfxTask;
|
||||
Vp* gViewport;
|
||||
Mtx* gGfxMtx;
|
||||
Gfx* gUnkDisp1;
|
||||
Gfx* gMasterDisp;
|
||||
Gfx* gUnkDisp2;
|
||||
Lightsn* gLight;
|
||||
FrameBuffer* gFrameBuffer;
|
||||
s32* D_80137E74;
|
||||
|
||||
u8 D_80137E78;
|
||||
u32 D_80137E7C;
|
||||
u8 D_80137E80;
|
||||
u8 D_80137E81;
|
||||
u8 D_80137E84[4];
|
||||
u16 D_80137E88;
|
||||
u16 D_80137E8A;
|
||||
|
||||
u8 gUnusedStack[0x1000];
|
||||
OSThread sIdleThread; // 80138E90
|
||||
u8 sIdleThreadStack[0x1000]; // 801390A0
|
||||
OSThread gMainThread; // 8013A040
|
||||
u8 sMainThreadStack[0x1000]; // 8013A1F0
|
||||
OSThread gAudioThread; // 8013B1F0
|
||||
#endif
|
||||
|
||||
void func_80003A50(void) {
|
||||
u8 i;
|
||||
|
||||
@@ -42,35 +103,35 @@ void func_80003A50(void) {
|
||||
}
|
||||
|
||||
void Audio_ThreadEntry(void* arg0) {
|
||||
SPTask* temp_v0;
|
||||
SPTask* task;
|
||||
|
||||
func_8000FFCC();
|
||||
func_8001DCE0();
|
||||
temp_v0 = func_8001DF50();
|
||||
if (temp_v0 != NULL) {
|
||||
temp_v0->msgQueue = &D_800E2258;
|
||||
temp_v0->msg = (OSMesg) 1;
|
||||
task = func_8001DF50();
|
||||
if (task != NULL) {
|
||||
task->msgQueue = &D_800E2258;
|
||||
task->msg = (OSMesg) TASK_MESG_1;
|
||||
osWritebackDCacheAll();
|
||||
osSendMesg(&D_800E21E0, temp_v0, 0);
|
||||
osSendMesg(&gTaskMsgQueue, task, OS_MESG_PRI_NORMAL);
|
||||
}
|
||||
while (1) {
|
||||
temp_v0 = func_8001DF50();
|
||||
if (temp_v0 != NULL) {
|
||||
temp_v0->msgQueue = &D_800E2258;
|
||||
temp_v0->msg = (OSMesg) 1;
|
||||
task = func_8001DF50();
|
||||
if (task != NULL) {
|
||||
task->msgQueue = &D_800E2258;
|
||||
task->msg = (OSMesg) TASK_MESG_1;
|
||||
osWritebackDCacheAll();
|
||||
}
|
||||
osRecvMesg(&D_800E2258, NULL, 0);
|
||||
if (temp_v0 != NULL) {
|
||||
osSendMesg(&D_800E21E0, temp_v0, 0);
|
||||
osRecvMesg(&D_800E2258, NULL, OS_MESG_NOBLOCK);
|
||||
if (task != NULL) {
|
||||
osSendMesg(&gTaskMsgQueue, task, OS_MESG_PRI_NORMAL);
|
||||
}
|
||||
osRecvMesg(&D_800E2238, NULL, 1);
|
||||
osRecvMesg(&D_800E2238, NULL, OS_MESG_BLOCK);
|
||||
}
|
||||
}
|
||||
|
||||
void func_80003C50(void) {
|
||||
gGfxTask->msgQueue = &D_800E22A0;
|
||||
gGfxTask->msg = (OSMesg) 2;
|
||||
gGfxTask->msg = (OSMesg) TASK_MESG_2;
|
||||
gGfxTask->task.t.type = M_GFXTASK;
|
||||
gGfxTask->task.t.flags = 0;
|
||||
gGfxTask->task.t.ucode_boot = __rspboot_start;
|
||||
@@ -88,7 +149,7 @@ void func_80003C50(void) {
|
||||
gGfxTask->task.t.yield_data_ptr = (u64*) &D_80281400;
|
||||
gGfxTask->task.t.yield_data_size = OS_YIELD_DATA_SIZE;
|
||||
osWritebackDCacheAll();
|
||||
osSendMesg(&D_800E21E0, gGfxTask, 0);
|
||||
osSendMesg(&gTaskMsgQueue, gGfxTask, OS_MESG_PRI_NORMAL);
|
||||
}
|
||||
|
||||
void func_80003DC0(u32 arg0) {
|
||||
@@ -135,34 +196,35 @@ void func_80003EE0(void) {
|
||||
}
|
||||
}
|
||||
|
||||
void func_80003FEC(void* arg0) {
|
||||
s32 sp34;
|
||||
void SerialInterface_ThreadEntry(void* arg0) {
|
||||
OSMesg sp34;
|
||||
|
||||
func_8000291C();
|
||||
while (1) {
|
||||
osRecvMesg(&D_800E22C0, (OSMesg) &sp34, 1);
|
||||
switch (sp34) {
|
||||
case 0xA:
|
||||
osRecvMesg(&gSerialThreadMsgQueue, &sp34, OS_MESG_BLOCK);
|
||||
|
||||
switch ((s32) sp34) {
|
||||
case SI_MESG_10:
|
||||
func_80002AF4();
|
||||
break;
|
||||
case 0xB:
|
||||
case SI_MESG_11:
|
||||
func_80002BE8();
|
||||
break;
|
||||
case 0xC:
|
||||
case SI_MESG_12:
|
||||
func_80002C50();
|
||||
break;
|
||||
case 0xD:
|
||||
case SI_MESG_13:
|
||||
func_80002CB8();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_800040D4(void* arg0) {
|
||||
void Thread7_ThreadEntry(void* arg0) {
|
||||
void* sp24;
|
||||
|
||||
while (1) {
|
||||
osRecvMesg(&D_800E2338, &sp24, 1);
|
||||
osRecvMesg(&gThread7msgQueue, &sp24, OS_MESG_BLOCK);
|
||||
func_80007088(sp24);
|
||||
}
|
||||
}
|
||||
@@ -173,7 +235,7 @@ void Graphics_ThreadEntry(void* arg0) {
|
||||
u8 var_v2;
|
||||
|
||||
func_800A18B0();
|
||||
osSendMesg(&D_800E22C0, (OSMesg) 10, 0);
|
||||
osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_MESG_10, OS_MESG_PRI_NORMAL);
|
||||
func_80003DC0(D_80137E7C);
|
||||
{
|
||||
gSPSegment(gUnkDisp1++, 0, 0);
|
||||
@@ -189,11 +251,11 @@ void Graphics_ThreadEntry(void* arg0) {
|
||||
while (1) {
|
||||
D_80137E7C++;
|
||||
func_80003DC0(D_80137E7C);
|
||||
osRecvMesg(&D_800E22F8, NULL, 1);
|
||||
osSendMesg(&D_800E22C0, (OSMesg) 13, 0);
|
||||
osRecvMesg(&D_800E22F8, NULL, OS_MESG_BLOCK);
|
||||
osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_MESG_13, OS_MESG_PRI_NORMAL);
|
||||
func_800029A8();
|
||||
osSendMesg(&D_800E22C0, (OSMesg) 10, 0);
|
||||
if (D_800DD8AA & 0x800) {
|
||||
osSendMesg(&gSerialThreadMsgQueue, (OSMesg) SI_MESG_10, OS_MESG_PRI_NORMAL);
|
||||
if (D_800DD898[3].button & 0x800) {
|
||||
func_80003EE0();
|
||||
}
|
||||
{
|
||||
@@ -209,7 +271,7 @@ void Graphics_ThreadEntry(void* arg0) {
|
||||
gDPFullSync(gMasterDisp++);
|
||||
gSPEndDisplayList(gMasterDisp++);
|
||||
}
|
||||
osRecvMesg(&D_800E22A0, NULL, 1);
|
||||
osRecvMesg(&D_800E22A0, NULL, OS_MESG_BLOCK);
|
||||
func_80003C50();
|
||||
if (D_80137E8A == 0) {
|
||||
osViSwapBuffer(&gFrameBuffers[(D_80137E7C - 1) % 3]);
|
||||
@@ -219,30 +281,30 @@ void Graphics_ThreadEntry(void* arg0) {
|
||||
var_v1 = MIN(D_80137E78, 4);
|
||||
var_v2 = MAX(var_v1, D_800E2278.validCount + 1);
|
||||
for (i = 0; i < var_v2; i += 1) { // Can't be ++
|
||||
osRecvMesg(&D_800E2278, NULL, 1);
|
||||
osRecvMesg(&D_800E2278, NULL, OS_MESG_BLOCK);
|
||||
}
|
||||
|
||||
func_8001DECC();
|
||||
}
|
||||
}
|
||||
|
||||
void func_80004560(void) {
|
||||
void Main_InitMesgQueues(void) {
|
||||
osCreateMesgQueue(&D_800E20F0, D_800E2108, ARRAY_COUNT(D_800E2108));
|
||||
osCreateMesgQueue(&D_800E21E0, D_800E21F8, ARRAY_COUNT(D_800E21F8));
|
||||
osCreateMesgQueue(&gTaskMsgQueue, D_800E21F8, ARRAY_COUNT(D_800E21F8));
|
||||
osCreateMesgQueue(&D_800E2238, D_800E2250, ARRAY_COUNT(D_800E2250));
|
||||
osCreateMesgQueue(&D_800E2258, D_800E2270, ARRAY_COUNT(D_800E2270));
|
||||
osCreateMesgQueue(&D_800E2278, D_800E2290, ARRAY_COUNT(D_800E2290));
|
||||
osCreateMesgQueue(&D_800E22A0, D_800E22B8, ARRAY_COUNT(D_800E22B8));
|
||||
osCreateMesgQueue(&D_800E2128, D_800E2140, ARRAY_COUNT(D_800E2140));
|
||||
osSetEventMesg(OS_EVENT_SI, &D_800E2128, (OSMesg) 0);
|
||||
osCreateMesgQueue(&D_800E2148, D_800E2160, ARRAY_COUNT(D_800E2160));
|
||||
osViSetEvent(&D_800E2148, (OSMesg) 3, 1);
|
||||
osSetEventMesg(OS_EVENT_SP, &D_800E2148, (OSMesg) 1);
|
||||
osSetEventMesg(OS_EVENT_DP, &D_800E2148, (OSMesg) 2);
|
||||
osSetEventMesg(OS_EVENT_PRENMI, &D_800E2148, (OSMesg) 4);
|
||||
osCreateMesgQueue(&D_800E2338, D_800E2350, ARRAY_COUNT(D_800E2350));
|
||||
osCreateMesgQueue(&gSerialEventQueue, D_800E2140, ARRAY_COUNT(D_800E2140));
|
||||
osSetEventMesg(OS_EVENT_SI, &gSerialEventQueue, NULL);
|
||||
osCreateMesgQueue(&gMainThreadMsgQueue, D_800E2160, ARRAY_COUNT(D_800E2160));
|
||||
osViSetEvent(&gMainThreadMsgQueue, (OSMesg) EVENT_MESG_VI, 1);
|
||||
osSetEventMesg(OS_EVENT_SP, &gMainThreadMsgQueue, (OSMesg) EVENT_MESG_SP);
|
||||
osSetEventMesg(OS_EVENT_DP, &gMainThreadMsgQueue, (OSMesg) EVENT_MESG_DP);
|
||||
osSetEventMesg(OS_EVENT_PRENMI, &gMainThreadMsgQueue, (OSMesg) EVENT_MESG_PRENMI);
|
||||
osCreateMesgQueue(&gThread7msgQueue, D_800E2350, ARRAY_COUNT(D_800E2350));
|
||||
osCreateMesgQueue(&D_800E2390, D_800E23A8, ARRAY_COUNT(D_800E23A8));
|
||||
osCreateMesgQueue(&D_800E22C0, D_800E22D8, ARRAY_COUNT(D_800E22D8));
|
||||
osCreateMesgQueue(&gSerialThreadMsgQueue, D_800E22D8, ARRAY_COUNT(D_800E22D8));
|
||||
osCreateMesgQueue(&D_800E22F8, D_800E2310, ARRAY_COUNT(D_800E2310));
|
||||
osCreateMesgQueue(&D_800E2318, D_800E2330, ARRAY_COUNT(D_800E2330));
|
||||
}
|
||||
@@ -252,7 +314,7 @@ void func_80004714(void) {
|
||||
u8 i;
|
||||
|
||||
if ((*var_v1)->msgQueue != NULL) {
|
||||
osSendMesg((*var_v1)->msgQueue, (*var_v1)->msg, 0);
|
||||
osSendMesg((*var_v1)->msgQueue, (*var_v1)->msg, OS_MESG_PRI_NORMAL);
|
||||
}
|
||||
(*var_v1)->state = SPTASK_STATE_FINISHED_DP;
|
||||
for (i = 0; i < 1; i += 1, var_v1++) {
|
||||
@@ -273,7 +335,7 @@ void func_80004798(void) {
|
||||
task->state = SPTASK_STATE_FINISHED;
|
||||
if (task->task.t.type == M_AUDTASK) {
|
||||
if (task->msgQueue != NULL) {
|
||||
osSendMesg(task->msgQueue, task->msg, 0);
|
||||
osSendMesg(task->msgQueue, task->msg, OS_MESG_PRI_NORMAL);
|
||||
}
|
||||
D_800E1FB4[0] = NULL;
|
||||
}
|
||||
@@ -286,7 +348,7 @@ void func_80004824(void) {
|
||||
SPTask** var_a1;
|
||||
SPTask** var_s0_2;
|
||||
SPTask** var_s1_2;
|
||||
void* sp40;
|
||||
OSMesg sp40;
|
||||
SPTask* sp3C;
|
||||
|
||||
var_s0_2 = D_800E1FC0;
|
||||
@@ -300,15 +362,15 @@ void func_80004824(void) {
|
||||
|
||||
var_s0_2 = D_800E1FC0;
|
||||
var_s1_2 = D_800E1FC8;
|
||||
while (osRecvMesg(&D_800E21E0, &sp40, 0) != -1) {
|
||||
while (osRecvMesg(&gTaskMsgQueue, &sp40, OS_MESG_NOBLOCK) != MSG_QUEUE_EMPTY) {
|
||||
sp3C = (SPTask*) sp40;
|
||||
sp3C->state = SPTASK_STATE_NOT_STARTED;
|
||||
|
||||
switch (sp3C->task.t.type) {
|
||||
case 2:
|
||||
case M_AUDTASK:
|
||||
*(var_s0_2++) = sp3C;
|
||||
break;
|
||||
case 1:
|
||||
case M_GFXTASK:
|
||||
*(var_s1_2++) = sp3C;
|
||||
break;
|
||||
}
|
||||
@@ -359,7 +421,8 @@ void func_800049D4(void) {
|
||||
}
|
||||
|
||||
void Main_ThreadEntry(void* arg0) {
|
||||
s32 sp54;
|
||||
OSMesg sp54;
|
||||
u8 mesg;
|
||||
|
||||
osCreateThread(&gAudioThread, THREAD_ID_AUDIO, Audio_ThreadEntry, arg0,
|
||||
gAudioThreadStack + sizeof(gAudioThreadStack), 80);
|
||||
@@ -367,28 +430,32 @@ void Main_ThreadEntry(void* arg0) {
|
||||
osCreateThread(&gGraphicsThread, THREAD_ID_GRAPHICS, Graphics_ThreadEntry, arg0,
|
||||
gGraphicsThreadStack + sizeof(gGraphicsThreadStack), 40);
|
||||
osStartThread(&gGraphicsThread);
|
||||
osCreateThread(&gUnkThread3, THREAD_ID_7, func_800040D4, arg0, gUnkThread3Stack + sizeof(gUnkThread3Stack), 60);
|
||||
osCreateThread(&gUnkThread3, THREAD_ID_7, Thread7_ThreadEntry, arg0, gUnkThread3Stack + sizeof(gUnkThread3Stack),
|
||||
60);
|
||||
osStartThread(&gUnkThread3);
|
||||
osCreateThread(&gUnkThread4, THREAD_ID_8, func_80003FEC, arg0, gUnkThread4Stack + sizeof(gUnkThread4Stack), 20);
|
||||
osStartThread(&gUnkThread4);
|
||||
osCreateThread(&gSerialThread, THREAD_ID_SERIAL, SerialInterface_ThreadEntry, arg0,
|
||||
gSerialThreadStack + sizeof(gSerialThreadStack), 20);
|
||||
osStartThread(&gSerialThread);
|
||||
|
||||
func_80004560();
|
||||
Main_InitMesgQueues();
|
||||
|
||||
while (true) {
|
||||
osRecvMesg(&D_800E2148, (OSMesg) &sp54, 1);
|
||||
switch ((u8) sp54) {
|
||||
case 3:
|
||||
osSendMesg(&D_800E2238, (OSMesg) 3, 0);
|
||||
osSendMesg(&D_800E2278, (OSMesg) 3, 0);
|
||||
osRecvMesg(&gMainThreadMsgQueue, &sp54, OS_MESG_BLOCK);
|
||||
mesg = (u32) sp54;
|
||||
|
||||
switch (mesg) {
|
||||
case EVENT_MESG_VI:
|
||||
osSendMesg(&D_800E2238, (OSMesg) EVENT_MESG_VI, OS_MESG_PRI_NORMAL);
|
||||
osSendMesg(&D_800E2278, (OSMesg) EVENT_MESG_VI, OS_MESG_PRI_NORMAL);
|
||||
func_80004824();
|
||||
break;
|
||||
case 1:
|
||||
case EVENT_MESG_SP:
|
||||
func_80004798();
|
||||
break;
|
||||
case 2:
|
||||
case EVENT_MESG_DP:
|
||||
func_80004714();
|
||||
break;
|
||||
case 4:
|
||||
case EVENT_MESG_PRENMI:
|
||||
D_80137E80 = 1;
|
||||
break;
|
||||
}
|
||||
@@ -406,7 +473,7 @@ void Idle_ThreadEntry(void* arg0) {
|
||||
osCreateThread(&gMainThread, THREAD_ID_MAIN, &Main_ThreadEntry, arg0, sMainThreadStack + sizeof(sMainThreadStack),
|
||||
100);
|
||||
osStartThread(&gMainThread);
|
||||
func_80008018();
|
||||
Fault_Init();
|
||||
osSetThreadPri(NULL, OS_PRIORITY_IDLE);
|
||||
loop_1:
|
||||
goto loop_1;
|
||||
|
||||
@@ -1,97 +0,0 @@
|
||||
#include "global.h"
|
||||
|
||||
Mtx gIdentityMtx = { {
|
||||
{ 0x00010000, 0, 1, 0 },
|
||||
{ 0, 0x00010000, 0, 1 },
|
||||
{ 0, 0, 0, 0 },
|
||||
{ 0, 0, 0, 0 },
|
||||
} };
|
||||
|
||||
Matrix gIdentityMatrix = { {
|
||||
{ 1.0f, 0.0f, 0.0f, 0.0f },
|
||||
{ 0.0f, 1.0f, 0.0f, 0.0f },
|
||||
{ 0.0f, 0.0f, 1.0f, 0.0f },
|
||||
{ 0.0f, 0.0f, 0.0f, 1.0f },
|
||||
} };
|
||||
|
||||
Vec3f D_800C46A0 = { 0.0f, 0.0f, 0.0f };
|
||||
Vec3f D_800C46AC = { 0.0f, 0.0f, 1.0f };
|
||||
Vec3f D_800C46B8 = { 1.0f, 0.0f, 0.0f };
|
||||
Vec3f D_800C46C4 = { 0.0f, 0.0f, 0.0f };
|
||||
Vec3f D_800C46D0 = { 1.0f, 0.0f, 0.0f };
|
||||
Vec3f D_800C46DC = { 0.0f, 1.0f, 0.0f };
|
||||
|
||||
void func_80005680(Matrix* dst, Matrix* src) {
|
||||
dst->m[0][0] = src->m[0][0];
|
||||
dst->m[0][1] = src->m[0][1];
|
||||
dst->m[0][2] = src->m[0][2];
|
||||
dst->m[0][3] = src->m[0][3];
|
||||
dst->m[1][0] = src->m[1][0];
|
||||
dst->m[1][1] = src->m[1][1];
|
||||
dst->m[1][2] = src->m[1][2];
|
||||
dst->m[1][3] = src->m[1][3];
|
||||
dst->m[2][0] = src->m[2][0];
|
||||
dst->m[2][1] = src->m[2][1];
|
||||
dst->m[2][2] = src->m[2][2];
|
||||
dst->m[2][3] = src->m[2][3];
|
||||
dst->m[3][0] = src->m[3][0];
|
||||
dst->m[3][1] = src->m[3][1];
|
||||
dst->m[3][2] = src->m[3][2];
|
||||
dst->m[3][3] = src->m[3][3];
|
||||
// dst->xx = src->xx;
|
||||
// dst->yx = src->yx;
|
||||
// dst->zx = src->zx;
|
||||
// dst->wx = src->wx;
|
||||
// dst->xy = src->xy;
|
||||
// dst->yy = src->yy;
|
||||
// dst->zy = src->zy;
|
||||
// dst->wy = src->wy;
|
||||
// dst->xz = src->xz;
|
||||
// dst->yz = src->yz;
|
||||
// dst->zz = src->zz;
|
||||
// dst->wz = src->wz;
|
||||
// dst->xw = src->xw;
|
||||
// dst->yw = src->yw;
|
||||
// dst->zw = src->zw;
|
||||
// dst->ww = src->ww;
|
||||
}
|
||||
|
||||
void func_80005708(Matrix** mtx) {
|
||||
func_80005680(*mtx + 1, *mtx);
|
||||
*mtx += 1;
|
||||
}
|
||||
|
||||
void func_80005740(Matrix** mtx) {
|
||||
*mtx -= 1;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/6280/func_80005754.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/6280/func_80005B00.s")
|
||||
|
||||
// https://decomp.me/scratch/v4KEJ 91%
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/6280/func_80005C34.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/6280/func_80005D44.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/6280/func_80005E90.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/6280/func_80005FE0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/6280/func_8000612C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/6280/func_80006500.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/6280/func_8000671C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/6280/func_80006970.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/6280/func_80006A20.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/6280/func_80006AB8.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/6280/func_80006C7C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/6280/func_80006E3C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/us/nonmatchings/main/6280/func_80006EB8.s")
|
||||
+6
-65
@@ -1,74 +1,15 @@
|
||||
#include "global.h"
|
||||
|
||||
typedef void (*unkFunc_80007088)(s32, s32);
|
||||
|
||||
typedef struct {
|
||||
u8 unk0;
|
||||
OSTimer unk8;
|
||||
unkFunc_80007088 unk28;
|
||||
s32 unk2C;
|
||||
s32 unk30;
|
||||
} UnkStruct_func_80007088;
|
||||
|
||||
extern s32 D_8013C3D0;
|
||||
extern s32 D_80144BD0;
|
||||
extern UnkStruct_func_80007088 D_80144BE0[];
|
||||
extern s32 D_8013C3D0[0x2200];
|
||||
extern s32* D_80144BD0;
|
||||
|
||||
void func_80006F20(void) {
|
||||
D_80144BD0 = (s32) &D_8013C3D0;
|
||||
D_80144BD0 = D_8013C3D0;
|
||||
}
|
||||
|
||||
s32 func_80006F38(s32 arg0) {
|
||||
s32 tmp = D_80144BD0;
|
||||
void* func_80006F38(s32 arg0) {
|
||||
void* tmp = D_80144BD0;
|
||||
|
||||
D_80144BD0 = ((arg0 + 0xF) & ~0xF) + D_80144BD0;
|
||||
D_80144BD0 = (void*) (((arg0 + 0xF) & ~0xF) + (uintptr_t) D_80144BD0);
|
||||
return tmp;
|
||||
}
|
||||
|
||||
UnkStruct_func_80007088* func_80006F60(void) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 0x10; i++) {
|
||||
if (D_80144BE0[i].unk0 == 0) {
|
||||
return &D_80144BE0[i];
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
s32 func_80006FD8(u64 arg0, void* arg2, s32 arg3, s32 arg4) {
|
||||
UnkStruct_func_80007088* temp_v0;
|
||||
|
||||
temp_v0 = func_80006F60();
|
||||
if (temp_v0 == NULL) {
|
||||
return -1;
|
||||
}
|
||||
temp_v0->unk0 = 1;
|
||||
temp_v0->unk28 = arg2;
|
||||
temp_v0->unk2C = arg3;
|
||||
temp_v0->unk30 = arg4;
|
||||
return osSetTimer(&temp_v0->unk8, arg0, 0, &D_800E2338, temp_v0);
|
||||
}
|
||||
|
||||
void func_80007068(s32* arg0, s32 arg1) {
|
||||
*arg0 += arg1;
|
||||
}
|
||||
|
||||
void func_8000707C(s32* arg0, s32 arg1) {
|
||||
*arg0 = arg1;
|
||||
}
|
||||
|
||||
void func_80007088(UnkStruct_func_80007088* arg0) {
|
||||
if (arg0->unk28 != NULL) {
|
||||
arg0->unk28(arg0->unk2C, arg0->unk30);
|
||||
}
|
||||
arg0->unk0 = 0;
|
||||
}
|
||||
|
||||
void func_800070C8(u64 arg0) {
|
||||
OSTimer sp30;
|
||||
void* sp2C;
|
||||
|
||||
osSetTimer(&sp30, arg0, 0, &D_800E2390, NULL);
|
||||
osRecvMesg(&D_800E2390, &sp2C, 1);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
#include "global.h"
|
||||
|
||||
extern UnkStruct_func_80007088 D_80144BE0[0x10];
|
||||
|
||||
UnkStruct_func_80007088* func_80006F60(void) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 0x10; i++) {
|
||||
if (D_80144BE0[i].unk0 == 0) {
|
||||
return &D_80144BE0[i];
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
s32 func_80006FD8(u64 arg0, void* arg2, s32 arg3, s32 arg4) {
|
||||
UnkStruct_func_80007088* temp_v0;
|
||||
|
||||
temp_v0 = func_80006F60();
|
||||
if (temp_v0 == NULL) {
|
||||
return -1;
|
||||
}
|
||||
temp_v0->unk0 = 1;
|
||||
temp_v0->unk28 = arg2;
|
||||
temp_v0->unk2C = arg3;
|
||||
temp_v0->unk30 = arg4;
|
||||
return osSetTimer(&temp_v0->unk8, arg0, 0, &gThread7msgQueue, temp_v0);
|
||||
}
|
||||
|
||||
void func_80007068(s32* arg0, s32 arg1) {
|
||||
*arg0 += arg1;
|
||||
}
|
||||
|
||||
void func_8000707C(s32* arg0, s32 arg1) {
|
||||
*arg0 = arg1;
|
||||
}
|
||||
|
||||
void func_80007088(UnkStruct_func_80007088* arg0) {
|
||||
if (arg0->unk28 != NULL) {
|
||||
arg0->unk28(arg0->unk2C, arg0->unk30);
|
||||
}
|
||||
arg0->unk0 = 0;
|
||||
}
|
||||
|
||||
void func_800070C8(u64 arg0) {
|
||||
OSTimer sp30;
|
||||
OSMesg sp2C;
|
||||
|
||||
osSetTimer(&sp30, arg0, 0, &D_800E2390, NULL);
|
||||
osRecvMesg(&D_800E2390, &sp2C, OS_MESG_BLOCK);
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user