Merge pull request #134 from Kelebek1/various

32D10, 12D80, F420
This commit is contained in:
Revo
2024-09-21 11:11:23 -04:00
committed by GitHub
38 changed files with 3074 additions and 302 deletions
+7
View File
@@ -33,6 +33,13 @@ typedef union Color_RGBA8_u32 {
u32 rgba;
} Color_RGBA8_u32;
typedef union Color_RGBA8_s32 {
struct {
s8 r, g, b, a;
};
s32 rgba;
} Color_RGBA8_s32;
typedef struct {
f32 r, g, b, a;
} Color_RGBAf;
+185 -25
View File
@@ -84,7 +84,12 @@ typedef struct unk_D_86002F58_004_000_054 {
/* 0x04 */ unk_D_86002F58_004_000_054_004* unk_04;
/* 0x08 */ s16 unk_08;
/* 0x0A */ s16 unk_0A;
} unk_D_86002F58_004_000_054; // size >= 0xC
} unk_D_86002F58_004_000_054; // size = 0xC
typedef struct unk_D_86002F58_004_000_0A8 {
/* 0x00 */ u16 unk_00;
/* 0x04 */ Vec3f unk_04;
} unk_D_86002F58_004_000_0A8; // size = 0x10
typedef struct unk_D_86002F58_004_000 {
/* 0x000 */ unk_D_86002F58_004_000_000 unk_000;
@@ -95,18 +100,17 @@ typedef struct unk_D_86002F58_004_000 {
/* 0x01E */ Vec3s unk_01E;
/* 0x024 */ Vec3f unk_024;
/* 0x030 */ Vec3f unk_030;
/* 0x03C */ s32 unk_03C;
/* 0x03C */ Color_RGBA8_u32 unk_03C;
/* 0x040 */ unk_D_86002F58_004_000_040 unk_040;
/* 0x050 */ char pad050[2];
/* 0x052 */ s16 unk_052;
/* 0x054 */ unk_D_86002F58_004_000_054 unk_054;
/* 0x060 */ s32 unk_060;
/* 0x064 */ char pad064[0x3C];
/* 0x0A0 */ s32 unk_0A0;
/* 0x060 */ MtxF unk_060;
/* 0x0A0 */ Color_RGBA8_u32 unk_0A0;
/* 0x0A4 */ char pad0A4[2];
/* 0x0A6 */ s8 unk_0A6;
/* 0x0A7 */ char pad0A7[5];
/* 0x0AC */ Vec3f unk_0AC;
/* 0x0A6 */ u8 unk_0A6;
/* 0x0A7 */ u8 unk_0A7;
/* 0x0A8 */ unk_D_86002F58_004_000_0A8 unk_0A8[1];
/* 0x0B8 */ char pad0B8[0x24];
/* 0x0DC */ Vec3f unk_0DC;
/* 0x0E0 */ char pad0E0[0x4];
@@ -114,26 +118,182 @@ typedef struct unk_D_86002F58_004_000 {
/* 0x0F8 */ char pad0F8[0x70];
} unk_D_86002F58_004_000; // size = 0x168
typedef struct unk_D_86002F34_000 {
/* 0x00 */ u8 unk_00;
/* 0x01 */ u8 unk_01;
/* 0x02 */ u8 unk_02;
/* 0x03 */ u8 unk_03;
/* 0x04 */ char pad04[0x4];
/* 0x08 */ struct unk_D_86002F34_000* unk_08;
/* 0x0C */ struct unk_D_86002F34_000* unk_0C;
/* 0x10 */ s32 (*unk_10)(s32, struct unk_D_86002F34_000*);
/* 0x14 */ char unk14[0x4];
} unk_D_86002F34_000; // size >= 0x18
typedef struct unk_D_86002F34_00C_018 {
/* 0x00 */ Vp* vp;
/* 0x04 */ s16 x;
/* 0x06 */ s16 y;
/* 0x08 */ s16 width;
/* 0x0A */ s16 height;
} unk_D_86002F34_00C_018; // size = 0xC
typedef struct unk_D_86002F34_00C_024 {
/* 0x00 */ Mtx* mtx;
/* 0x04 */ u16 perspNorm;
/* 0x08 */ f32 fovy;
/* 0x0C */ f32 aspect;
/* 0x10 */ f32 near;
/* 0x14 */ f32 far;
/* 0x18 */ f32 scale;
} unk_D_86002F34_00C_024; // size = 0x1C
typedef struct unk_D_86002F34_00C_040 {
/* 0x00 */ Mtx* mtx;
/* 0x04 */ f32 l;
/* 0x08 */ f32 r;
/* 0x0C */ f32 b;
/* 0x10 */ f32 t;
/* 0x14 */ f32 n;
/* 0x18 */ f32 f;
/* 0x1C */ f32 scale;
} unk_D_86002F34_00C_040; // size = 0x20
typedef struct unk_D_86002F34_00C_060 {
/* 0x00 */ MtxF* p_mtxf;
/* 0x04 */ MtxF mtxf;
/* 0x44 */ LookAt* lookat;
/* 0x48 */ Vec3f eye;
/* 0x54 */ Vec3f at;
/* 0x60 */ Vec3f up;
} unk_D_86002F34_00C_060; // size >= 0x6C
typedef struct unk_D_86002F34_00C_0CC {
/* 0x00 */ u16 unk_00;
/* 0x02 */ u16 unk_02;
/* 0x04 */ Color_RGBA8_u32 color;
/* 0x08 */ u16 unk_08;
/* 0x0A */ u16 unk_0A;
/* 0x0C */ s16 unk_0C;
/* 0x0E */ s16 unk_0E;
/* 0x10 */ s16 unk_10;
/* 0x12 */ s16 unk_12;
/* 0x14 */ s16 unk_14;
/* 0x16 */ s16 unk_16;
/* 0x18 */ s16 unk_18;
/* 0x1A */ s16 unk_1A;
/* 0x1C */ u8* texture;
} unk_D_86002F34_00C_0CC; // size >= 0x20
typedef struct unk_D_86002F34_00C {
/* 0x00 */ char pad0[0x24];
/* 0x24 */ MtxF* unk_024;
/* 0x28 */ u16 unk_028;
/* 0x2C */ f32 unk_02C;
/* 0x30 */ char pad30[4];
/* 0x34 */ f32 unk_034;
/* 0x38 */ f32 unk_038;
/* 0x3C */ char pad3C[0x24];
/* 0x60 */ MtxF* unk_060;
/* 0x64 */ MtxF unk_064;
/* 0xA4 */ char padA4[0x4];
/* 0xA8 */ Vec3f unk_0A8;
/* 0xB4 */ Vec3f unk_0B4;
} unk_D_86002F34_00C; // size >= 0xC0
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ unk_D_86002F34_00C_018 unk_18;
/* 0x24 */ unk_D_86002F34_00C_024 unk_24;
/* 0x40 */ unk_D_86002F34_00C_040 unk_40;
/* 0x60 */ unk_D_86002F34_00C_060 unk_60;
/* 0xCC */ unk_D_86002F34_00C_0CC unk_CC;
} unk_D_86002F34_00C; // size >= 0xEC
typedef struct unk_D_86002F34_alt1 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ s16 unk_18;
/* 0x1A */ u16 unk_1A;
/* 0x1C */ s8 unk_1C;
/* 0x1D */ s8 unk_1D;
/* 0x20 */ s32 unk_20;
/* 0x24 */ Lights7* lights;
} unk_D_86002F34_alt1; // size >= 0x28
typedef struct unk_D_86002F34_alt2 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ u32 unk_18;
} unk_D_86002F34_alt2; // size >= 0x1C
typedef struct unk_D_86002F34_alt3 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ s16 unk_18;
/* 0x1A */ s16 unk_1A;
/* 0x1C */ s32 unk_1C;
} unk_D_86002F34_alt3; // size >= 0x20
typedef struct unk_D_86002F34_alt4 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ Color_RGBA8_u32 unk_18;
/* 0x1C */ u16 unk_1C;
/* 0x1E */ u16 unk_1E;
} unk_D_86002F34_alt4; // size >= 0x20
typedef struct unk_D_86002F34_alt5 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ Vec3f unk_18;
/* 0x24 */ Vec3s unk_24;
} unk_D_86002F34_alt5; // size >= 0x2C
typedef struct unk_D_86002F34_alt6 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ Vec3s unk_18;
/* 0x1E */ Vec3s unk_1E;
/* 0x24 */ Vec3f unk_24;
/* 0x30 */ u8 unk_30;
/* 0x31 */ u8 unk_31;
/* 0x32 */ s16 unk_32;
} unk_D_86002F34_alt6; // size >= 0x58
typedef struct unk_D_86002F34_alt7 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ Gfx* unk_18;
/* 0x1C */ s16 unk_1C;
} unk_D_86002F34_alt7; // size >= 0x20
typedef struct unk_D_86002F34_alt8 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ Gfx* unk_18;
/* 0x1C */ MtxF unk_1C;
} unk_D_86002F34_alt8; // size >= 0x5C
typedef struct unk_D_86002F34_alt9 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ Gfx* unk_18;
/* 0x1C */ Vec3f unk_1C;
/* 0x28 */ f32 unk_28;
} unk_D_86002F34_alt9; // size >= 0x2C
typedef struct unk_D_86002F34_alt10 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ s32 unk_18;
/* 0x1C */ s16 unk_1C;
/* 0x1E */ s16 unk_1E;
/* 0x20 */ s16 unk_20;
/* 0x22 */ u8 unk_22;
/* 0x24 */ Color_RGBA8_u32 unk_24;
} unk_D_86002F34_alt10; // size >= 0x28
typedef struct unk_D_86002F34_alt11_018 {
/* 0x00 */ u8 fmt;
/* 0x01 */ u8 unk_01;
/* 0x02 */ s16 unk_02;
/* 0x04 */ char unk04[0x4];
/* 0x08 */ u8* texture;
} unk_D_86002F34_alt11_018; // size >= 0xC
typedef struct unk_D_86002F34_alt11 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ unk_D_86002F34_alt11_018* unk_18;
/* 0x1C */ unk_D_86002F34_alt11_018* unk_1C;
} unk_D_86002F34_alt11; // size >= 0x20
typedef struct unk_D_86002F34_alt12 {
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ s16 unk_18;
/* 0x1A */ s16 unk_1A;
/* 0x1C */ s16 unk_1C;
/* 0x1E */ s16 unk_1E;
} unk_D_86002F34_alt12; // size >= 0x20
typedef struct unk_D_86002F34 {
/* 0x00 */ char pad00[0xC];
/* 0x0C */ unk_D_86002F34_00C* unk_0C;
} unk_D_86002F34; // size >= 0x10
/* 0x00 */ unk_D_86002F34_000 unk_00;
/* 0x18 */ unk_D_86002F34_000* unk_18;
} unk_D_86002F34; // size >= 0x1C
// Are unk_D_86002F30 and unk_D_800AC840 the same?
typedef struct unk_D_86002F30 {
+24
View File
@@ -18,6 +18,9 @@ extern float __ll_to_f(long long s);
extern double __ull_to_d(unsigned long long u);
extern float __ull_to_f(unsigned long long u);
#define SINS(x) gSineTable[(u16) (x) >> 4]
#define COSS(x) gCosineTable[(u16) (x) >> 4]
typedef float MtxF_t[4][4];
typedef union {
MtxF_t mf;
@@ -41,4 +44,25 @@ typedef struct Vec3s {
/* 0x4 */ s16 z;
} Vec3s; // size = 0x6
typedef union Vec2s_s32 {
struct {
/* 0x0 */ s16 x;
/* 0x2 */ s16 y;
};
s32 xy;
} Vec2s_s32; // size = 0x6
typedef union AllTypeS32 {
struct {
s16 rg;
s16 ba;
};
struct {
s8 r;
s8 g;
s8 b;
s8 a;
};
} AllTypeS32;
#endif
+10 -5
View File
@@ -51,7 +51,15 @@ extern u8 gPool[];
extern Gfx* gDisplayListHead;
extern u64 _binary_assets_us_F3DEX2_bin_start[];
extern f32 gSineTable[];
extern f32 gCosineTable[0x1000];
extern s16 gArctanTable[0x401];
extern u8 D_1000000[];
extern u8 D_1001800[];
extern Gfx D_1002480[];
extern Gfx D_1002508[];
extern Gfx D_1002590[];
extern u8 D_2000000[];
extern u8 D_3000000[];
extern u8 D_4000000[];
@@ -71,6 +79,8 @@ extern u8 D_2028A60[];
extern u8 D_2028AA0[];
extern u32 D_B0000D10;
extern u8 D_800818E0[0x20];
typedef struct unk_D_80068BA0 {
/* 0x00 */ char pad00[0x2];
/* 0x02 */ s16 unk_02;
@@ -86,7 +96,6 @@ extern unk_D_80068BA0* D_80068BA8;
extern unk_D_80068BA0* D_80068BAC;
extern Gfx D_8006F518[];
extern Gfx D_8006F630[];
extern u8 D_82000000;
extern u8 D_81400000;
extern u8 D_86B00000;
@@ -111,10 +120,6 @@ extern struct unk_D_86002F58_004_000_000 D_800AC840;
extern struct unk_D_86002F58_004_000_000 D_800AC858;
extern struct unk_D_86002F58_004_000* D_8006F09C;
extern struct Vec3f D_8006F050;
extern struct Vec3s D_8006F05C;
extern struct Vec3f D_8006F064;
typedef struct unk_D_8006FF00 {
/* 0x00 */ char unk_00[0x4];
/* 0x04 */ char* name;
+2 -2
View File
@@ -3050,10 +3050,10 @@ _DW({ \
}
#define gsDPSetCombine(muxs0, muxs1) \
{{ \
{ \
_SHIFTL(G_SETCOMBINE, 24, 8) | _SHIFTL(muxs0, 0, 24), \
(unsigned int)(muxs1) \
}}
}
#define GCCc0w0(saRGB0, mRGB0, saA0, mA0) \
(_SHIFTL((saRGB0), 20, 4) | _SHIFTL((mRGB0), 15, 5) | \
+4
View File
@@ -290,3 +290,7 @@ rspbootTextStart = 0x80065FC0;
aspMainTextStart = 0x80067420;
aspMainDataStart = 0x8007EA70;
audDMAMessageQ = 0x800FCAE0;
D_8006F010 = 0x8006F010; // size:0x40
D_8006F050 = 0x8006F050; // size:0xC
D_8006F05C = 0x8006F05C; // size:0x6
D_8006F064 = 0x8006F064; // size:0xC
+2 -2
View File
@@ -82,8 +82,8 @@ unk_D_86002F58_004_000* func_80011938(MainPoolState* arg0, unk_D_86002F58_004_00
arg1->unk_01D = 0xFF;
arg1->unk_01C = 0;
arg1->unk_0A6 = 0;
arg1->unk_0A0 = -0x100;
arg1->unk_03C = -0x100;
arg1->unk_0A0.rgba = 0xFFFFFF00;
arg1->unk_03C.rgba = 0xFFFFFF00;
arg1->unk_040.unk_00 = 0;
arg1->unk_040.unk_04 = NULL;
arg1->unk_040.unk_08 = 0;
+1446 -70
View File
File diff suppressed because it is too large Load Diff
+112 -3
View File
@@ -3,9 +3,118 @@
#include "global.h"
void func_80015094(unk_D_86002F34*);
void func_80015348(void);
s32 func_80015390(unk_D_86002F58_004_000*, s16, Vec3f*);
typedef struct unk_D_800AB970 {
/* 0x000 */ Vec3f unk_000[1];
/* 0x00C */ char unk00C[0x174];
/* 0x180 */ s32 unk_180;
/* 0x184 */ char unk184[0xC];
} unk_D_800AB970; // size = 0x190?
typedef struct unk_D_800ABB00 {
/* 0x00 */ void* unk_00;
/* 0x04 */ void* unk_04;
/* 0x08 */ char unk08[0x8];
} unk_D_800ABB00; // size >= 0x10?
typedef struct unk_D_800ABB28 {
/* 0x00 */ s32 unk_00;
/* 0x04 */ Gfx* unk_04;
/* 0x08 */ Gfx* unk_08;
/* 0x0C */ MtxF* unk_0C;
/* 0x10 */ Color_RGBA8_u32 unk_10;
/* 0x14 */ Color_RGBA8_u32 unk_14;
/* 0x18 */ unk_D_86002F34_alt11_018* unk_18;
/* 0x1C */ struct unk_D_800ABB28* unk_1C;
/* 0x20 */ Gfx* unk_20;
/* 0x24 */ u8 unk_24;
/* 0x24 */ u8 unk_25;
/* 0x24 */ u8 unk_26;
/* 0x24 */ u8 unk_27;
} unk_D_800ABB28; // size = 0x28
typedef struct unk_D_800ABB10 {
/* 0x00 */ u8 unk_00;
/* 0x01 */ u8 unk_01;
/* 0x02 */ u8 unk_02;
/* 0x03 */ u8 unk_03;
/* 0x04 */ Color_RGBA8_u32 unk_04;
/* 0x08 */ Color_RGBA8_u32 unk_08;
/* 0x0C */ unk_D_86002F34_alt11_018* unk_0C;
/* 0x10 */ unk_D_800ABB28* unk_10;
/* 0x14 */ Gfx* unk_14;
} unk_D_800ABB10; // size = 0x18?
void func_80012180(void);
void func_800121C8(void);
void func_80012230(MtxF* arg0);
void func_800122B4(MtxF* arg0);
void func_80012344(Vec3f* arg0);
MtxF* func_800123D4(s32 arg0);
MtxF* func_80012400(s32 arg0);
void func_80012428(void);
void func_80012458(Vec3f* arg0);
Vtx* func_800124D4(unk_D_86002F34_00C_0CC* arg0, unk_D_86002F34_00C_040* arg1);
void func_80012768(unk_D_86002F34_00C_0CC* arg0, unk_D_86002F34_00C_040* arg1);
void func_80012870(Vtx* arg0, unk_D_86002F34_00C_0CC* arg1, s16 arg2, s16 arg3, s16 arg4, s16 arg5, s16 arg6, s16 arg7);
Vtx* func_80012960(unk_D_86002F34_00C_0CC* arg0);
void func_80012D88(unk_D_86002F34_00C_0CC* arg0, UNUSED unk_D_86002F34_00C_040* arg1);
void func_800131B4(unk_D_86002F34_00C_0CC* arg0, unk_D_86002F34_00C_040* arg1);
void func_80013330(unk_D_86002F34_000* arg0);
void func_800133D8(unk_D_86002F34_000* arg0);
void func_80013464(unk_D_86002F34_000* arg0);
void func_80013764(unk_D_86002F34_000* arg0);
void func_8001378C(unk_D_86002F34_000* arg0);
void func_800138F0(unk_D_86002F34_000* arg0);
void func_8001395C(unk_D_86002F34_000* arg0);
void func_800139E8(unk_D_86002F34_000* arg0);
void func_80013AF8(unk_D_86002F34_000* arg0);
void func_80013B8C(UNUSED unk_D_86002F34_000* arg0);
void func_80013C14(UNUSED unk_D_86002F34_000* arg0);
void func_80013C1C(unk_D_86002F34_000* arg0);
void func_80013D34(unk_D_86002F34_000* arg0);
void func_80013F7C(UNUSED unk_D_86002F34_000* arg0);
void func_80013F84(unk_D_86002F34_000* arg0);
void func_80014124(unk_D_86002F34_000* arg0);
void func_80014214(unk_D_86002F34_000* arg0);
void func_800142BC(unk_D_86002F34_000* arg0);
void func_80014334(unk_D_86002F34_000* arg0);
void func_80014384(unk_D_86002F34_000* arg0);
void func_800143C0(unk_D_86002F34_000* arg0);
void func_80014624(unk_D_86002F34_000* arg0);
void func_80014690(unk_D_86002F34_000* arg0);
void func_800148D8(unk_D_86002F34_000* arg0);
void func_80014980(unk_D_86002F34_000* arg0);
void func_80014A60(unk_D_86002F34_000* arg0);
void func_80014AEC(unk_D_86002F34_000* arg0);
void func_80014CB8(s32 arg0);
void func_80014D24(unk_D_86002F34_000* arg0);
void func_80014D50(unk_D_86002F34_000* arg0);
void func_80014D70(unk_D_86002F34_000* arg0);
void func_80015094(unk_D_86002F34_000* arg0);
void func_80015220(unk_D_86002F34_000* arg0, s32 arg1);
void func_8001533C(s32 arg0);
void func_80015348(void);
s32 func_80015360(void);
Vec3f* func_80015390(unk_D_86002F58_004_000* arg0, s16 arg1, Vec3f* arg2);
void func_80015400(Gfx* arg0, u8* arg1);
void func_8001550C(void);
void func_8001554C(void);
void func_80015684(void);
void func_8001587C(unk_D_800ABB10* arg0);
void func_80015948(UNUSED unk_D_800ABB10* arg0);
void func_80015984(unk_D_800ABB10* arg0);
void func_80015A44(unk_D_800ABB10* arg0);
void func_80015AC4(UNUSED unk_D_800ABB10* arg0);
void func_80015B20(unk_D_800ABB10* arg0);
void func_80015DD8(UNUSED unk_D_800ABB10* arg0);
void func_80015F64(s16 arg0);
void func_80016010(s16 arg0);
s16 func_80016060(s16 arg0);
void func_800160E0(s16 arg0, MtxF* arg1);
void func_80016274(Gfx* arg0, s32 arg1);
void func_80016344(Color_RGBA8_u32 arg0, u8 arg1, u32 arg2);
void func_80016364(s32 arg0, Color_RGBA8_u32 arg1, unk_D_86002F34_alt11_018* arg2, unk_D_86002F34_alt11_018* arg3, s32 arg4);
void func_8001638C(s32 arg0, s32 arg1);
void func_8001660C(void);
#endif // _12D80_H_
+7
View File
@@ -3,11 +3,18 @@
#include "global.h"
void func_80017080(void);
void func_80017090(unk_D_86002F58_004_000_040*, u16, s32);
void func_80017188(void);
void func_800171A8(Vec3f*, Vec3s*, Vec3f*, s32);
void func_800173CC(unk_D_86002F58_004_000* arg0);
s32 func_800173DC(unk_D_86002F58_004_000* arg0, s16 arg1, s32 arg2, s32 arg3);
void func_80017464(unk_D_86002F58_004_000* arg0, s16 arg1);
s32 func_80017484(unk_D_86002F58_004_000* arg0, s16 arg1);
void func_800174E4(unk_D_86002F58_004_000* arg0);
s32 func_80017514(unk_D_86002F58_004_000* arg0);
void func_800175D8(void);
void func_800175E8(unk_D_86002F58_004_000_054*, u16, s32);
void func_800176BC(void);
#endif // _17300_H_
+1
View File
@@ -3,6 +3,7 @@
#include "global.h"
void func_800176DC(unk_D_86002F34_alt11_018**, unk_D_86002F34_alt11_018*, s16);
void func_80017788(unk_D_86002F58_004_000* arg0);
s16 func_80017798(unk_D_86002F58_004_000* arg0, s16 arg1, s32 arg2);
void func_80017804(unk_D_86002F58_004_000* arg0, s16 arg1);
+1 -1
View File
@@ -1,6 +1,6 @@
#include "18480.h"
#include "src/11BA0.h"
#include "src/E890.h"
#include "src/F420.h"
#include "src/util.h"
typedef void (*func_D_8006F2B0)(void);
+3 -3
View File
@@ -2,7 +2,7 @@
#include "1C720.h"
#include "11BA0.h"
#include "17300.h"
#include "E890.h"
#include "F420.h"
#include "18140.h"
#include "32D10.h"
#include "22630.h"
@@ -43,8 +43,8 @@ void func_8001BC34(unk_D_86002F58_004_000* arg0, s16 arg1, s16 arg2, unk_D_86002
arg0->unk_000.unk_02 |= 0x40;
arg0->unk_000.unk_02 &= ~0x2;
arg0->unk_0A0 = -0x100;
arg0->unk_03C = -0x100;
arg0->unk_0A0.rgba = 0xFFFFFF00;
arg0->unk_03C.rgba = 0xFFFFFF00;
arg0->unk_040.unk_00 = -1;
arg0->unk_040.unk_04 = NULL;
arg0->unk_054.unk_00 = -1;
+1 -1
View File
@@ -5,7 +5,7 @@
#include "src/6A40.h"
#include "src/20470.h"
#include "src/6BC0.h"
#include "src/E890.h"
#include "src/F420.h"
#include "src/memory.h"
#include "stdarg.h"
#include "lib/ultralib/src/libc/xstdio.h"
+1 -1
View File
@@ -12,7 +12,7 @@
#include "src/3FB0.h"
#include "src/4BDC0.h"
#include "src/6BC0.h"
#include "src/E890.h"
#include "src/F420.h"
#include "src/math_util.h"
#include "src/memory.h"
#include "src/fragments/43/fragment43.h"
+123 -4
View File
@@ -1,9 +1,115 @@
#include "global.h"
#include "32D10.h"
#include "334D0.h"
#include "src/util.h"
#include "src/fragments/31/fragment31.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/32D10/func_80032110.s")
extern s16 D_800AF778[4];
extern s16 D_800AF780[4];
extern s16 D_800AF788[4];
extern s16 D_800AF790[4];
extern s16 D_800AF798[4];
extern s16 D_800AF7A0[4];
extern s16 D_800AF7AE;
extern s16 D_800AF7C0[];
#pragma GLOBAL_ASM("asm/us/nonmatchings/32D10/func_80032244.s")
void func_80032110(u8 arg0, s16 arg1) {
D_800AF778[arg0] = 0x167 - ((arg1 % 10) * 0x24);
D_800AF780[arg0] = 0x167 - (((arg1 / 10) % 10) * 0x24);
D_800AF788[arg0] = 0x167 - (((arg1 / 100) % 10) * 0x24);
}
void func_80032244(u8 arg0, s16 arg1) {
s16 tmp;
s16 tmp2;
D_800AF790[arg0] = 0x167 - ((arg1 % 10) * 0x24);
D_800AF798[arg0] = 0x167 - (((arg1 / 10) % 10) * 0x24);
D_800AF7A0[arg0] = 0x167 - (((arg1 / 100) % 10) * 0x24);
tmp2 = D_800AF790[arg0];
tmp = D_800AF778[arg0];
if (((tmp2 < 0x5A) && (tmp >= 0x10F)) || ((tmp < 0x5A) && (tmp2 >= 0x10F))) {
if (tmp < tmp2) {
D_800AF778[arg0] -= 6;
}
if (tmp2 < tmp) {
D_800AF778[arg0] += 6;
}
} else {
if (tmp < tmp2) {
D_800AF778[arg0] += 6;
}
if (tmp2 < tmp) {
D_800AF778[arg0] -= 6;
}
}
if (D_800AF778[arg0] < 0) {
D_800AF778[arg0] += 0x168;
}
if (D_800AF778[arg0] >= 0x168) {
D_800AF778[arg0] -= 0x168;
}
tmp2 = D_800AF798[arg0];
tmp = D_800AF780[arg0];
if (((tmp2 < 0x5A) && (tmp >= 0x10F)) || ((tmp < 0x5A) && (tmp2 >= 0x10F))) {
if (tmp < tmp2) {
D_800AF780[arg0] -= 6;
}
if (tmp2 < tmp) {
D_800AF780[arg0] += 6;
}
} else {
if (tmp < tmp2) {
D_800AF780[arg0] += 6;
}
if (tmp2 < tmp) {
D_800AF780[arg0] -= 6;
}
}
if (D_800AF780[arg0] < 0) {
D_800AF780[arg0] += 0x168;
}
if (D_800AF780[arg0] >= 0x168) {
D_800AF780[arg0] -= 0x168;
}
tmp2 = D_800AF7A0[arg0];
tmp = D_800AF788[arg0];
if (((tmp2 < 0x5A) && (tmp >= 0x10F)) || ((tmp < 0x5A) && (tmp2 >= 0x10F))) {
if (tmp < tmp2) {
D_800AF788[arg0] -= 6;
}
if (tmp2 < tmp) {
D_800AF788[arg0] += 6;
}
} else {
if (tmp < tmp2) {
D_800AF788[arg0] += 6;
}
if (tmp2 < tmp) {
D_800AF788[arg0] -= 6;
}
}
if (D_800AF788[arg0] < 0) {
D_800AF788[arg0] += 0x168;
}
if (D_800AF788[arg0] >= 0x168) {
D_800AF788[arg0] -= 0x168;
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/32D10/func_80032570.s")
@@ -13,7 +119,20 @@
#pragma GLOBAL_ASM("asm/us/nonmatchings/32D10/func_800325E0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/32D10/func_8003260C.s")
void func_8003260C(unk_D_86002F58_004_000* arg0) {
void (*func)(void*);
s32 unk1A = arg0->unk_01A;
s32 idx = arg0->unk_0A6;
D_800AF7AE = 0;
if (unk1A < 0x98) {
D_800AF7C0[idx & 1] = 0;
func_80032A34(idx & 1);
func = Util_ConvertAddrToVirtAddr(func_810007A8);
func(arg0);
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/32D10/func_80032670.s")
+3 -2
View File
@@ -3,9 +3,10 @@
#include "global.h"
void func_80032110(u8, s32);
void func_80032110(u8, s16);
void func_80032244(u8, s16);
void func_8003260C(unk_D_86002F58_004_000*);
void func_80032670(u8, u32);
void func_80032738(u8, u32);
#endif // _32D10_H_
+1 -1
View File
@@ -1,4 +1,4 @@
#include "global.h"
#include "334D0.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/334D0/func_800328D0.s")
+8
View File
@@ -0,0 +1,8 @@
#ifndef _334D0_H_
#define _334D0_H_
#include "global.h"
void func_80032A34(s32);
#endif // _334D0_H_
+32 -102
View File
@@ -1,7 +1,37 @@
#include "global.h"
#include "E890.h"
#include <PR/leo.h>
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000DC90.s")
extern char D_8006F000[];
extern char D_8006F004[];
s32 func_8000DC90(void) {
if (osMemSize < 0x800000) {
return 2;
}
if (bcmp(&D_800818E0[0x18], D_8006F004, 2) != 0) {
return 1;
}
if (bcmp(&D_800818E0[1], D_8006F000, 3) != 0) {
return 1;
}
if (D_800818E0[0] < 'E') {
return 1;
}
if (D_800818E0[0] > 'Z') {
return 1;
}
if (D_800818E0[5] != 1) {
return 1;
}
_bcopy(&D_800818E0, &leoBootID, 0x20);
return 0;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000DD68.s")
@@ -30,103 +60,3 @@
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000E760.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000E7E4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000E820.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000E840.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000E868.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000E88C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000E8B0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000E8E8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000E920.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000E958.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000E990.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000E9D4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000EA84.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000EAF4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000EB70.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000EBA8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000EBE0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000EC18.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000EC50.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000EC88.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000ED4C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000ED98.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000EDD8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000EE1C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000F174.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000F2C4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000F3FC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000F5A8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000F730.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000F88C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000FA94.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000FBB0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000FDE4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000FF04.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8000FFB8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_80010090.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_80010228.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_800102A4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_80010354.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_800103F0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_8001046C.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_800104AC.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_80010500.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_80010570.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_80010720.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_80010780.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_800107F0.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_80010930.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_80010B20.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_80010BD4.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_80010CA8.s")
#pragma GLOBAL_ASM("asm/us/nonmatchings/E890/func_80010E20.s")
+1 -9
View File
@@ -3,14 +3,6 @@
#include "global.h"
void func_8000E840(Color_RGBA8*, u8, u8, u8, u8);
void func_8000E88C(Vec3f*, f32, f32, f32);
void func_8000EB70(Vec3s*, s16, s16, s16);
void func_8000ED98(s32*);
void func_8000F2C4(MtxF*, MtxF*, Vec3s*);
void func_8000FDE4(MtxF*, MtxF*, Vec3f*);
void func_80010090(MtxF*, MtxF*);
void func_80010354(Vec3f*, Vec3f*, f32, s16, s32);
s32 func_8000DC90(void);
#endif // _E890_H_
+949
View File
@@ -0,0 +1,949 @@
#include "F420.h"
#include "src/math_util.h"
extern u16 D_80073660[];
Vec3f D_8006F050 = { 0.0f, 0.0f, 0.0f };
Vec3s D_8006F05C = { 0, 0, 0 };
Vec3f D_8006F064 = { 1.0f, 1.0f, 1.0f };
u16 D_8006F070[] = { 1, 1, 1 };
Color_RGBA8_u32* func_8000E820(Color_RGBA8_u32* arg0, u8 r, u8 g, u8 b) {
arg0->r = r;
arg0->g = g;
arg0->b = b;
return arg0;
}
Color_RGBA8_u32* func_8000E840(Color_RGBA8_u32* arg0, u8 arg1, u8 arg2, u8 arg3, u8 arg4) {
arg0->r = arg1;
arg0->g = arg2;
arg0->b = arg3;
arg0->a = arg4;
return arg0;
}
Vec3f* func_8000E868(Vec3f* arg0, f32 arg1, f32 arg2, f32 arg3) {
arg0->x = arg1;
arg0->y = arg2;
arg0->z = arg3;
return arg0;
}
Vec3f* func_8000E88C(Vec3f* arg0, f32 arg1, f32 arg2, f32 arg3) {
arg0->x = arg1;
arg0->y = arg2;
arg0->z = arg3;
return arg0;
}
Vec3f* func_8000E8B0(Vec3f* arg0, Vec3f* arg1) {
arg0->x += arg1->x;
arg0->y += arg1->y;
arg0->z += arg1->z;
return arg0;
}
Vec3f* func_8000E8E8(Vec3f* arg0, Vec3f* arg1, Vec3f* arg2) {
arg0->x = arg1->x + arg2->x;
arg0->y = arg1->y + arg2->y;
arg0->z = arg1->z + arg2->z;
return arg0;
}
Vec3f* func_8000E920(Vec3f* arg0, Vec3f* arg1) {
arg0->x -= arg1->x;
arg0->y -= arg1->y;
arg0->z -= arg1->z;
return arg0;
}
Vec3f* func_8000E958(Vec3f* arg0, Vec3f* arg1, Vec3f* arg2) {
arg0->x = arg1->x - arg2->x;
arg0->y = arg1->y - arg2->y;
arg0->z = arg1->z - arg2->z;
return arg0;
}
Vec3f* func_8000E990(Vec3f* arg0, Vec3s* arg1) {
arg0->x = arg1->x;
arg0->y = arg1->y;
arg0->z = arg1->z;
return arg0;
}
Vec3f* func_8000E9D4(Vec3f* arg0, Vec3f* arg1, Vec3f* arg2, Vec3f* arg3) {
arg0->x = ((arg2->y - arg1->y) * (arg3->z - arg2->z)) - ((arg3->y - arg2->y) * (arg2->z - arg1->z));
arg0->y = ((arg2->z - arg1->z) * (arg3->x - arg2->x)) - ((arg3->z - arg2->z) * (arg2->x - arg1->x));
arg0->z = ((arg2->x - arg1->x) * (arg3->y - arg2->y)) - ((arg3->x - arg2->x) * (arg2->y - arg1->y));
return arg0;
}
Vec3f* func_8000EA84(Vec3f* arg0, Vec3f* arg1, Vec3f* arg2) {
arg0->x = (arg1->y * arg2->z) - (arg2->y * arg1->z);
arg0->y = (arg1->z * arg2->x) - (arg2->z * arg1->x);
arg0->z = (arg1->x * arg2->y) - (arg2->x * arg1->y);
return arg0;
}
Vec3f* func_8000EAF4(Vec3f* arg0) {
f32 temp_fv1_2 = 1.0f / sqrtf(SQ(arg0->x) + SQ(arg0->y) + SQ(arg0->z));
arg0->x *= temp_fv1_2;
arg0->y *= temp_fv1_2;
arg0->z *= temp_fv1_2;
return arg0;
}
Vec3s* func_8000EB70(Vec3s* arg0, s16 arg1, s16 arg2, s16 arg3) {
arg0->x = arg1;
arg0->y = arg2;
arg0->z = arg3;
return arg0;
}
Vec3s* func_8000EBA8(Vec3s* arg0, Vec3s* arg1) {
arg0->x += arg1->x;
arg0->y += arg1->y;
arg0->z += arg1->z;
return arg0;
}
Vec3s* func_8000EBE0(Vec3s* arg0, Vec3s* arg1, Vec3s* arg2) {
arg0->x = arg1->x + arg2->x;
arg0->y = arg1->y + arg2->y;
arg0->z = arg1->z + arg2->z;
return arg0;
}
Vec3s* func_8000EC18(Vec3s* arg0, Vec3s* arg1) {
arg0->x -= arg1->x;
arg0->y -= arg1->y;
arg0->z -= arg1->z;
return arg0;
}
Vec3s* func_8000EC50(Vec3s* arg0, Vec3s* arg1, Vec3s* arg2) {
arg0->x = arg1->x - arg2->x;
arg0->y = arg1->y - arg2->y;
arg0->z = arg1->z - arg2->z;
return arg0;
}
Vec3s* func_8000EC88(Vec3s* arg0, Vec3f* arg1) {
arg0->x = ROUND_MAX(arg1->x);
arg0->y = ROUND_MAX(arg1->y);
arg0->z = ROUND_MAX(arg1->z);
return arg0;
}
void func_8000ED4C(MtxF* dest, MtxF* src) {
if (dest != src) {
s32 i;
u32* d = (u32*)dest;
u32* s = (u32*)src;
for (i = 0; i < 16; i++) {
*d++ = *s++;
}
}
}
void func_8000ED98(MtxF* arg0) {
s32 i;
f32* dest;
// These loops must be one line to match on -O2
// clang-format off
// initialize everything except the first and last cells to 0
for (dest = (f32*)arg0 + 1, i = 0; i < 14; dest++, i++) { *dest = 0.0f; }
// initialize the diagonal cells to 1
for (dest = (f32*)arg0, i = 0; i < 4; dest += 5, i++) { *dest = 1.0f; }
// clang-format on
}
void func_8000EDD8(MtxF* arg0, Vec3f* arg1) {
func_8000ED98(arg0);
arg0->mf[3][0] = arg1->x;
arg0->mf[3][1] = arg1->y;
arg0->mf[3][2] = arg1->z;
}
void func_8000EE1C(MtxF* mtx, Vec3f* from, Vec3f* to, u16 roll) {
f32 invLength;
f32 dx;
f32 dz;
f32 xColY;
f32 yColY;
f32 zColY;
f32 xColZ;
f32 yColZ;
f32 zColZ;
f32 xColX;
f32 yColX;
f32 zColX;
dx = to->x - from->x;
dz = to->z - from->z;
invLength = -1.0 / sqrtf(dx * dx + dz * dz);
dx *= invLength;
dz *= invLength;
yColY = COSS(roll);
xColY = SINS(roll) * dz;
zColY = -SINS(roll) * dx;
xColZ = to->x - from->x;
yColZ = to->y - from->y;
zColZ = to->z - from->z;
invLength = -1.0 / sqrtf(xColZ * xColZ + yColZ * yColZ + zColZ * zColZ);
xColZ *= invLength;
yColZ *= invLength;
zColZ *= invLength;
xColX = yColY * zColZ - zColY * yColZ;
yColX = zColY * xColZ - xColY * zColZ;
zColX = xColY * yColZ - yColY * xColZ;
invLength = 1.0 / sqrtf(xColX * xColX + yColX * yColX + zColX * zColX);
xColX *= invLength;
yColX *= invLength;
zColX *= invLength;
xColY = yColZ * zColX - zColZ * yColX;
yColY = zColZ * xColX - xColZ * zColX;
zColY = xColZ * yColX - yColZ * xColX;
invLength = 1.0 / sqrtf(xColY * xColY + yColY * yColY + zColY * zColY);
xColY *= invLength;
yColY *= invLength;
zColY *= invLength;
mtx->mf[0][0] = xColX;
mtx->mf[1][0] = yColX;
mtx->mf[2][0] = zColX;
mtx->mf[3][0] = -(from->x * xColX + from->y * yColX + from->z * zColX);
mtx->mf[0][1] = xColY;
mtx->mf[1][1] = yColY;
mtx->mf[2][1] = zColY;
mtx->mf[3][1] = -(from->x * xColY + from->y * yColY + from->z * zColY);
mtx->mf[0][2] = xColZ;
mtx->mf[1][2] = yColZ;
mtx->mf[2][2] = zColZ;
mtx->mf[3][2] = -(from->x * xColZ + from->y * yColZ + from->z * zColZ);
mtx->mf[0][3] = 0.0f;
mtx->mf[1][3] = 0.0f;
mtx->mf[2][3] = 0.0f;
mtx->mf[3][3] = 1.0f;
}
void func_8000F174(MtxF* dest, Vec3s* translate, Vec3s* rotate) {
f32 sx = SINS(rotate->x);
f32 cx = COSS(rotate->x);
f32 sy = SINS(rotate->y);
f32 cy = COSS(rotate->y);
f32 sz = SINS(rotate->z);
f32 cz = COSS(rotate->z);
dest->mf[0][0] = cy * cz + (sx * sy) * sz;
dest->mf[0][1] = -cy * sz + (sx * sy) * cz;
dest->mf[0][2] = cx * sy;
dest->mf[0][3] = translate->x;
dest->mf[1][0] = cx * sz;
dest->mf[1][1] = cx * cz;
dest->mf[1][2] = -sx;
dest->mf[1][3] = translate->y;
dest->mf[2][0] = -sy * cz + (sx * cy) * sz;
dest->mf[2][1] = sy * sz + (sx * cy) * cz;
dest->mf[2][2] = cx * cy;
dest->mf[2][3] = translate->z;
dest->mf[3][0] = 0.0f;
dest->mf[3][1] = 0.0f;
dest->mf[3][2] = 0.0f;
dest->mf[3][3] = 1.0f;
}
void func_8000F2C4(MtxF* arg0, Vec3f* arg1, Vec3s* arg2) {
f32 temp_fa0;
f32 temp_fa1;
f32 temp_ft4;
f32 temp_ft5;
f32 temp_fv0;
f32 temp_fv1;
f32 sp0;
temp_fv0 = SINS(arg2->x);
temp_fv1 = COSS(arg2->x);
temp_fa0 = SINS(arg2->y);
temp_fa1 = COSS(arg2->y);
temp_ft4 = SINS(arg2->z);
temp_ft5 = COSS(arg2->z);
sp0 = temp_fv0 * temp_fa0;
arg0->mf[0][0] = (temp_fa1 * temp_ft5) + (sp0 * temp_ft4);
arg0->mf[1][0] = (-temp_fa1 * temp_ft4) + (sp0 * temp_ft5);
arg0->mf[2][0] = temp_fv1 * temp_fa0;
arg0->mf[3][0] = arg1->x;
arg0->mf[0][1] = temp_fv1 * temp_ft4;
arg0->mf[1][1] = temp_fv1 * temp_ft5;
arg0->mf[2][1] = -temp_fv0;
arg0->mf[3][1] = arg1->y;
sp0 = temp_fv0 * temp_fa1;
arg0->mf[0][2] = (-temp_fa0 * temp_ft5) + (sp0 * temp_ft4);
arg0->mf[1][2] = (temp_fa0 * temp_ft4) + (sp0 * temp_ft5);
arg0->mf[2][2] = temp_fv1 * temp_fa1;
arg0->mf[3][2] = arg1->z;
arg0->mf[0][3] = 0.0f;
arg0->mf[1][3] = 0.0f;
arg0->mf[2][3] = 0.0f;
arg0->mf[3][3] = 1.0f;
}
void func_8000F3FC(MtxF* arg0, Vec3f* arg1, Vec3s* arg2) {
f32 sx = SINS(arg2->x);
f32 cx = COSS(arg2->x);
f32 sy = SINS(arg2->y);
f32 cy = COSS(arg2->y);
f32 sz = SINS(arg2->z);
f32 cz = COSS(arg2->z);
arg0->mf[0][0] = (cy * cz) + ((sx * sy) * sz);
arg0->mf[0][1] = (-cy * sz) + ((sx * sy) * cz);
arg0->mf[0][2] = cx * sy;
arg0->mf[1][0] = cx * sz;
arg0->mf[1][1] = cx * cz;
arg0->mf[1][2] = -sx;
arg0->mf[2][0] = (-sy * cz) + ((sx * cy) * sz);
arg0->mf[2][1] = (sy * sz) + ((sx * cy) * cz);
arg0->mf[2][2] = cx * cy;
arg0->mf[3][0] = (arg0->mf[0][0] * arg1->x) + (arg0->mf[1][0] * arg1->y) + (arg0->mf[2][0] * arg1->z);
arg0->mf[3][1] = (arg0->mf[0][1] * arg1->x) + (arg0->mf[1][1] * arg1->y) + (arg0->mf[2][1] * arg1->z);
arg0->mf[3][2] = (arg0->mf[0][2] * arg1->x) + (arg0->mf[1][2] * arg1->y) + (arg0->mf[2][2] * arg1->z);
arg0->mf[0][3] = arg0->mf[1][3] = arg0->mf[2][3] = 0.0f;
arg0->mf[3][3] = 1.0f;
}
void func_8000F5A8(MtxF* dest, Vec3f* b, Vec3s* c, Vec3f* arg3) {
f32 sx = SINS(c->x);
f32 cx = COSS(c->x);
f32 sy = SINS(c->y);
f32 cy = COSS(c->y);
f32 sz = SINS(c->z);
f32 cz = COSS(c->z);
dest->mf[0][0] = (cy * cz) * arg3->x;
dest->mf[0][1] = (cy * sz) * arg3->x;
dest->mf[0][2] = (-sy) * arg3->x;
dest->mf[0][3] = 0.0f;
dest->mf[1][0] = (sx * sy * cz - cx * sz) * arg3->y;
dest->mf[1][1] = (sx * sy * sz + cx * cz) * arg3->y;
dest->mf[1][2] = (sx * cy) * arg3->y;
dest->mf[1][3] = 0.0f;
dest->mf[2][0] = (cx * sy * cz + sx * sz) * arg3->z;
dest->mf[2][1] = (cx * sy * sz - sx * cz) * arg3->z;
dest->mf[2][2] = (cx * cy) * arg3->z;
dest->mf[2][3] = 0.0f;
dest->mf[3][0] = b->x;
dest->mf[3][1] = b->y;
dest->mf[3][2] = b->z;
dest->mf[3][3] = 1.0f;
}
void func_8000F730(MtxF* dest, Vec3f* b, Vec3s* c, Vec3f* arg3) {
f32 sx = SINS(c->x);
f32 cx = COSS(c->x);
f32 sy = SINS(c->y);
f32 cy = COSS(c->y);
f32 sz = SINS(c->z);
f32 cz = COSS(c->z);
dest->mf[0][0] = cy * cz;
dest->mf[0][1] = cy * sz;
dest->mf[0][2] = -sy;
dest->mf[0][3] = 0.0f;
dest->mf[1][0] = sx * sy * cz - cx * sz;
dest->mf[1][1] = sx * sy * sz + cx * cz;
dest->mf[1][2] = sx * cy;
dest->mf[1][3] = 0.0f;
dest->mf[2][0] = cx * sy * cz + sx * sz;
dest->mf[2][1] = cx * sy * sz - sx * cz;
dest->mf[2][2] = cx * cy;
dest->mf[2][3] = 0.0f;
dest->mf[3][0] = b->x * arg3->x;
dest->mf[3][1] = b->y * arg3->y;
dest->mf[3][2] = b->z * arg3->z;
dest->mf[3][3] = 1.0f;
}
void func_8000F88C(MtxF* arg0, MtxF* arg1, MtxF* arg2, Vec3f* arg3, f32 arg4) {
f32 sp24;
f32 sp20;
f32 sp1C;
sp24 = sqrtf(SQ(arg2->mf[0][0]) + SQ(arg2->mf[0][1]) + SQ(arg2->mf[0][2])) * arg4;
sp20 = sqrtf(SQ(arg2->mf[1][0]) + SQ(arg2->mf[1][1]) + SQ(arg2->mf[1][2])) * arg4;
sp1C = sqrtf(SQ(arg2->mf[2][0]) + SQ(arg2->mf[2][1]) + SQ(arg2->mf[2][2])) * arg4;
arg0->mf[0][0] = arg1->mf[0][0] * sp24;
arg0->mf[0][1] = arg1->mf[1][0] * sp24;
arg0->mf[0][2] = arg1->mf[2][0] * sp24;
arg0->mf[0][3] = 0.0f;
arg0->mf[1][0] = arg1->mf[0][1] * sp20;
arg0->mf[1][1] = arg1->mf[1][1] * sp20;
arg0->mf[1][2] = arg1->mf[2][1] * sp20;
arg0->mf[1][3] = 0.0f;
arg0->mf[2][0] = arg1->mf[0][2] * sp1C;
arg0->mf[2][1] = arg1->mf[1][2] * sp1C;
arg0->mf[2][2] = arg1->mf[2][2] * sp1C;
arg0->mf[2][3] = 0.0f;
arg0->mf[3][0] =
((arg2->mf[0][0] * arg3->x) + (arg2->mf[1][0] * arg3->y) + (arg2->mf[2][0] * arg3->z)) + arg2->mf[3][0];
arg0->mf[3][1] =
((arg2->mf[0][1] * arg3->x) + (arg2->mf[1][1] * arg3->y) + (arg2->mf[2][1] * arg3->z)) + arg2->mf[3][1];
arg0->mf[3][2] =
((arg2->mf[0][2] * arg3->x) + (arg2->mf[1][2] * arg3->y) + (arg2->mf[2][2] * arg3->z)) + arg2->mf[3][2];
arg0->mf[3][3] = 1.0f;
}
void func_8000FA94(MtxF* dest, Vec3f* upDir, Vec3f* pos, s16 yaw) {
Vec3f lateralDir;
Vec3f leftDir;
Vec3f forwardDir;
func_8000E88C(&lateralDir, SINS(yaw), 0, COSS(yaw));
func_8000EAF4(upDir);
func_8000EA84(&leftDir, upDir, &lateralDir);
func_8000EAF4(&leftDir);
func_8000EA84(&forwardDir, &leftDir, upDir);
func_8000EAF4(&forwardDir);
dest->mf[0][0] = leftDir.x;
dest->mf[0][1] = leftDir.y;
dest->mf[0][2] = leftDir.z;
dest->mf[3][0] = pos->x;
dest->mf[1][0] = upDir->x;
dest->mf[1][1] = upDir->y;
dest->mf[1][2] = upDir->z;
dest->mf[3][1] = pos->y;
dest->mf[2][0] = forwardDir.x;
dest->mf[2][1] = forwardDir.y;
dest->mf[2][2] = forwardDir.z;
dest->mf[3][2] = pos->z;
dest->mf[0][3] = 0.0f;
dest->mf[1][3] = 0.0f;
dest->mf[2][3] = 0.0f;
dest->mf[3][3] = 1.0f;
}
void func_8000FBB0(MtxF* arg0, MtxF* arg1, MtxF* arg2) {
f32 entry0;
f32 entry1;
f32 entry2;
entry0 = arg1->mf[0][0];
entry1 = arg1->mf[0][1];
entry2 = arg1->mf[0][2];
arg0->mf[0][0] = (entry0 * arg2->mf[0][0]) + (entry1 * arg2->mf[1][0]) + (entry2 * arg2->mf[2][0]);
arg0->mf[0][1] = (entry0 * arg2->mf[0][1]) + (entry1 * arg2->mf[1][1]) + (entry2 * arg2->mf[2][1]);
arg0->mf[0][2] = (entry0 * arg2->mf[0][2]) + (entry1 * arg2->mf[1][2]) + (entry2 * arg2->mf[2][2]);
entry0 = arg1->mf[1][0];
entry1 = arg1->mf[1][1];
entry2 = arg1->mf[1][2];
arg0->mf[1][0] = (entry0 * arg2->mf[0][0]) + (entry1 * arg2->mf[1][0]) + (entry2 * arg2->mf[2][0]);
arg0->mf[1][1] = (entry0 * arg2->mf[0][1]) + (entry1 * arg2->mf[1][1]) + (entry2 * arg2->mf[2][1]);
arg0->mf[1][2] = (entry0 * arg2->mf[0][2]) + (entry1 * arg2->mf[1][2]) + (entry2 * arg2->mf[2][2]);
entry0 = arg1->mf[2][0];
entry1 = arg1->mf[2][1];
entry2 = arg1->mf[2][2];
arg0->mf[2][0] = (entry0 * arg2->mf[0][0]) + (entry1 * arg2->mf[1][0]) + (entry2 * arg2->mf[2][0]);
arg0->mf[2][1] = (entry0 * arg2->mf[0][1]) + (entry1 * arg2->mf[1][1]) + (entry2 * arg2->mf[2][1]);
arg0->mf[2][2] = (entry0 * arg2->mf[0][2]) + (entry1 * arg2->mf[1][2]) + (entry2 * arg2->mf[2][2]);
entry0 = arg1->mf[3][0];
entry1 = arg1->mf[3][1];
entry2 = arg1->mf[3][2];
arg0->mf[3][0] = (entry0 * arg2->mf[0][0]) + (entry1 * arg2->mf[1][0]) + (entry2 * arg2->mf[2][0]) + arg2->mf[3][0];
arg0->mf[3][1] = (entry0 * arg2->mf[0][1]) + (entry1 * arg2->mf[1][1]) + (entry2 * arg2->mf[2][1]) + arg2->mf[3][1];
arg0->mf[3][2] = (entry0 * arg2->mf[0][2]) + (entry1 * arg2->mf[1][2]) + (entry2 * arg2->mf[2][2]) + arg2->mf[3][2];
arg0->mf[0][3] = arg0->mf[1][3] = arg0->mf[2][3] = 0.0f;
arg0->mf[3][3] = 1.0f;
}
void func_8000FDE4(MtxF* dest, MtxF* mtx, Vec3f* s) {
s32 i;
for (i = 0; i < 4; i++) {
dest->mf[0][i] = mtx->mf[0][i] * s->x;
dest->mf[1][i] = mtx->mf[1][i] * s->y;
dest->mf[2][i] = mtx->mf[2][i] * s->z;
dest->mf[3][i] = mtx->mf[3][i];
}
}
void func_8000FF04(MtxF* arg0, Vec3f* arg1) {
arg1->x = sqrtf(SQ(arg0->mf[0][0]) + SQ(arg0->mf[0][1]) + SQ(arg0->mf[0][2]));
arg1->y = sqrtf(SQ(arg0->mf[1][0]) + SQ(arg0->mf[1][1]) + SQ(arg0->mf[1][2]));
arg1->z = sqrtf(SQ(arg0->mf[2][0]) + SQ(arg0->mf[2][1]) + SQ(arg0->mf[2][2]));
}
void func_8000FFB8(MtxF* arg0, Vec3s* arg1) {
f32 entry0 = arg1->x;
f32 entry1 = arg1->y;
f32 entry2 = arg1->z;
arg1->x = ((entry0 * arg0->mf[0][0]) + (entry1 * arg0->mf[1][0]) + (entry2 * arg0->mf[2][0])) + arg0->mf[3][0];
arg1->y = ((entry0 * arg0->mf[0][1]) + (entry1 * arg0->mf[1][1]) + (entry2 * arg0->mf[2][1])) + arg0->mf[3][1];
arg1->z = ((entry0 * arg0->mf[0][2]) + (entry1 * arg0->mf[1][2]) + (entry2 * arg0->mf[2][2])) + arg0->mf[3][2];
}
#define GET_HIGH_S16_OF_32(var) (((s16*)&(var))[0])
#define GET_LOW_S16_OF_32(var) (((s16*)&(var))[1])
void func_80010090(MtxF* dest, MtxF* src) {
s32 asFixedPoint;
s32 i;
s16* a3 = (s16*)dest; // all integer parts stored in first 16 bytes
s16* t0 = (s16*)dest + 16; // all fraction parts stored in last 16 bytes
f32* t1 = (f32*)src;
for (i = 0; i < 16; i++) {
asFixedPoint = *t1++ * (1 << 16); //! float-to-integer conversion responsible for PU crashes
*a3++ = GET_HIGH_S16_OF_32(asFixedPoint); // integer part
*t0++ = GET_LOW_S16_OF_32(asFixedPoint); // fraction part
}
}
void func_80010228(MtxF* arg0, Vec3f* arg1, Vec3s* arg2, Vec3f* arg3, MtxF* arg4, MtxF* arg5) {
MtxF sp60;
MtxF sp20;
func_8000F88C(&sp60, arg4, arg5, arg1, 1.0f);
func_8000F2C4(&sp20, &D_8006F050, arg2);
func_8000FBB0(&sp20, &sp20, &sp60);
func_8000FDE4(arg0, &sp20, arg3);
}
void func_800102A4(Vec3f* arg0, Vec3f* arg1, f32* arg2, s16* arg3, s16* arg4) {
f32 sp2C = arg1->x - arg0->x;
f32 sp28 = arg1->y - arg0->y;
f32 sp24 = arg1->z - arg0->z;
*arg2 = sqrtf(SQ(sp2C) + SQ(sp28) + SQ(sp24));
*arg3 = MathUtil_Atan2s(sqrtf(SQ(sp2C) + SQ(sp24)), sp28);
*arg4 = MathUtil_Atan2s(sp24, sp2C);
}
void func_80010354(Vec3f* from, Vec3f* to, f32 dist, s16 pitch, s16 yaw) {
to->x = from->x + (dist * COSS(pitch) * SINS(yaw));
to->y = from->y + (dist * SINS(pitch));
to->z = from->z + (dist * COSS(pitch) * COSS(yaw));
}
s16 func_800103F0(s16 current, s16 target, s16 inc) {
s16 temp_v0 = target - current;
if (temp_v0 < 0) {
temp_v0 += inc;
if (temp_v0 > 0) {
temp_v0 = 0;
}
} else {
temp_v0 -= inc;
if (temp_v0 < 0) {
temp_v0 = 0;
}
}
return target - temp_v0;
}
s32 func_8001046C(s32 current, s32 target, s32 inc, s32 dec) {
//! If target is close to the max or min s32, then it's possible to overflow
// past it without stopping.
if (current < target) {
current += inc;
if (current > target) {
current = target;
}
} else {
current -= dec;
if (current < target) {
current = target;
}
}
return current;
}
f32 func_800104AC(f32 current, f32 target, f32 inc, f32 dec) {
if (current < target) {
current += inc;
if (current > target) {
current = target;
}
} else {
current -= dec;
if (current < target) {
current = target;
}
}
return current;
}
s16 func_80010500(s16* arg0, s32 arg1, s32 arg2) {
Vec2s_s32 spC;
s16* temp_a3 = &arg0[(arg1 * arg2) / 16];
s16* p_spC = &spC.x;
p_spC[0] = temp_a3[0];
p_spC[1] = temp_a3[1];
spC.xy <<= ((arg1 * arg2) % 16);
spC.xy >>= -arg2;
return spC.y;
}
void func_80010570(f32 arg0, f32 arg1, f32 arg2, Vec3f* arg3) {
f32 temp_ft4;
f32 var_ft5;
f32 var_fv0;
f32 var_fv1;
s32 var_v0;
var_v0 = 0x47;
if (arg1 <= arg0) {
var_fv0 = arg0;
var_v0 = 0x52;
} else {
var_fv0 = arg1;
}
if (var_fv0 < arg2) {
var_fv0 = arg2;
var_v0 = 0x42;
}
if (arg0 <= arg1) {
var_fv1 = arg0;
} else {
var_fv1 = arg1;
}
if (arg2 < var_fv1) {
var_fv1 = arg2;
}
temp_ft4 = var_fv0 + var_fv1;
arg3->z = temp_ft4 - 1.0f;
if (var_fv0 == var_fv1) {
arg3->y = 0.0f;
arg3->x = 0.0f;
return;
}
if (arg3->z <= 0.0f) {
var_ft5 = var_fv0 - var_fv1;
arg3->y = var_ft5 / temp_ft4;
} else {
var_ft5 = var_fv0 - var_fv1;
arg3->y = var_ft5 / (2.0 - temp_ft4);
}
if (var_v0 == 0x52) {
arg3->x = (arg1 - arg2) / var_ft5;
} else if (var_v0 == 0x47) {
arg3->x = ((arg2 - arg0) / var_ft5) + 2.0;
} else {
arg3->x = ((arg0 - arg1) / var_ft5) + 4.0;
}
arg3->x *= 60.0f;
if (arg3->x < 0.0f) {
arg3->x += 360.0f;
}
}
void func_80010720(Color_RGBA8_u32 arg0, Vec3f* arg1) {
func_80010570((s32)arg0.r / 255.0f, (s32)arg0.g / 255.0f, (s32)arg0.b / 255.0f, arg1);
}
void func_80010780(u16 arg0, Vec3f* arg1) {
func_80010570(((arg0 & 0xF800) >> 0xB) / 31.0f, ((arg0 & 0x7C0) >> 6) / 31.0f, ((arg0 & 0x3E) >> 1) / 31.0f, arg1);
}
f32 func_800107F0(f32 arg0, f32 arg1, f32 arg2) {
f32 ret;
if (arg0 < 0.0f) {
arg0 += 360.0f;
} else {
while (arg0 >= 360.0f) {
arg0 -= 360.0f;
}
}
if (arg0 < 60.0f) {
ret = (((arg2 - arg1) * arg0) / 60.0f) + arg1;
} else if ((arg0 >= 60.0f) && (arg0 < 180.0f)) {
ret = arg2;
} else if ((arg0 >= 180.0f) && (arg0 < 240.0f)) {
ret = arg1 + (((arg2 - arg1) * (240.0 - arg0)) / 60.0);
} else {
ret = arg1;
}
return ret;
}
void func_80010930(f32* arg0, f32* arg1, f32* arg2, Vec3f* arg3) {
f32 sp24;
f32 sp20;
f32 temp_ft4;
if (arg3->z < -1.0f) {
arg3->z = -1.0f;
} else if (arg3->z > 1.0f) {
arg3->z = 1.0f;
}
if (arg3->y < 0.0f) {
arg3->y = 0.0f;
} else {
sp24 = 1.0f;
if (arg3->y > 1.0f) {
arg3->y = 1.0f;
}
}
if (arg3->x < 0.0f) {
arg3->x += 360.0f;
} else {
while (arg3->x >= 360.0f) {
arg3->x -= 360.0f;
}
}
if (arg3->z <= 0.0f) {
temp_ft4 = arg3->z + 1.0f;
sp24 = temp_ft4 * 0.5f * (1.0f - arg3->y);
sp20 = temp_ft4 - sp24;
} else {
temp_ft4 = arg3->z + 1.0f;
sp20 = (temp_ft4 * 0.5 * (1.0f - arg3->y)) + arg3->y;
sp24 = temp_ft4 - sp20;
}
*arg0 = func_800107F0(arg3->x + 120.0f, sp24, sp20);
*arg1 = func_800107F0(arg3->x, sp24, sp20);
*arg2 = func_800107F0(arg3->x - 120.0f, sp24, sp20);
}
u16 func_80010B20(Vec3f* arg0) {
f32 sp2C;
f32 sp28;
f32 sp24;
s32 var_a0;
s32 var_a1;
s32 var_v1;
func_80010930(&sp2C, &sp28, &sp24, arg0);
var_a1 = (sp2C * 31.0f) + 0.5f;
if (var_a1 >= 0x20) {
var_a1 = 0x1F;
}
var_v1 = (sp28 * 31.0f) + 0.5f;
if (var_v1 >= 0x20) {
var_v1 = 0x1F;
}
var_a0 = (sp24 * 31.0f) + 0.5f;
if (var_a0 >= 0x20) {
var_a0 = 0x1F;
}
return (var_a1 << 0xB) | (var_v1 << 6) | (var_a0 * 2) | 1;
}
Color_RGBA8_u32* func_80010BD4(Color_RGBA8_u32* arg0, Vec3f* arg1, s32 arg2) {
f32 sp34;
f32 sp30;
f32 sp2C;
s32 var_a0;
s32 var_a1;
s32 var_v1;
Color_RGBA8_u32 sp1C;
func_80010930(&sp34, &sp30, &sp2C, arg1);
var_a1 = (sp34 * 255.0f) + 0.5f;
if (var_a1 >= 0x100) {
var_a1 = 0xFF;
}
var_v1 = (sp30 * 255.0f) + 0.5f;
if (var_v1 >= 0x100) {
var_v1 = 0xFF;
}
var_a0 = (sp2C * 255.0f) + 0.5f;
if (var_a0 >= 0x100) {
var_a0 = 0xFF;
}
sp1C.r = var_a1;
sp1C.g = var_v1;
sp1C.b = var_a0;
sp1C.a = arg2;
*arg0 = sp1C;
return arg0;
}
#ifdef NON_MATCHING
u16 func_80010CA8(u16 arg0, AllTypeS32 arg1) {
Vec3f sp24;
s32 a;
s32 b;
if (arg0 & 1) {
func_80010780(arg0, &sp24);
if (arg1.rg != 0) {
sp24.x += (arg1.b * 0.015625f);
}
if (arg1.b != 0) {
if (arg1.a > 0) {
sp24.y += ((1.0f - sp24.y) * arg1.a * 0.125f);
} else {
sp24.y += (sp24.y * arg1.a * 0.125f);
}
}
if (arg1.a != 0) {
a = (((sp24.z + 1.0f) * 0.5f * 255.0f));
b = (((arg1.a > 0) ? arg1.a + 7 : arg1.a + 8) << 8);
sp24.z = (2.0f * (D_80073660[b + a] / 65535.0f)) - 1.0f;
}
arg0 = func_80010B20(&sp24);
}
return arg0;
}
#else
// const f32 D_8007B580 = 65535.0f;
#pragma GLOBAL_ASM("asm/us/nonmatchings/F420/func_80010CA8.s")
#endif
#ifdef NON_MATCHING
Color_RGBA8_u32* func_80010E20(Color_RGBA8_u32 arg0, AllTypeS32 arg1) {
Vec3f sp2C;
Color_RGBA8_u32* a0 = &arg0;
s32 var_v1;
s32 a;
if (a0->a > 0) {
func_80010720(arg0, &sp2C);
if (arg1.rg != 0) {
sp2C.x += (arg1.b * 0.015625f);
}
if (arg1.b != 0) {
if (arg1.a > 0) {
sp2C.y += ((1.0f - sp2C.y) * arg1.a * 0.125f);
} else {
sp2C.y += (sp2C.y * arg1.a * 0.125f);
}
}
if (arg1.a != 0) {
a = (((sp2C.z + 1.0f) * 0.5f * 255.0f));
if (arg1.a > 0) {
var_v1 = arg1.a + 7;
} else {
var_v1 = arg1.a + 8;
}
sp2C.z = (2.0f * (D_80073660[(var_v1 << 8) + a] / 65535.0f)) - 1.0f;
}
func_80010BD4(a0, &sp2C, arg0.a);
}
return a0;
}
#else
// const f32 D_8007B584 = 65535.0f;
#pragma GLOBAL_ASM("asm/us/nonmatchings/F420/func_80010E20.s")
#endif
+62
View File
@@ -0,0 +1,62 @@
#ifndef _F420_H_
#define _F420_H_
#include "global.h"
extern Vec3f D_8006F050;
extern Vec3s D_8006F05C;
extern Vec3f D_8006F064;
extern u16 D_8006F070[];
Color_RGBA8_u32* func_8000E820(Color_RGBA8_u32* arg0, u8 r, u8 g, u8 b);
Color_RGBA8_u32* func_8000E840(Color_RGBA8_u32* arg0, u8 arg1, u8 arg2, u8 arg3, u8 arg4);
Vec3f* func_8000E868(Vec3f* arg0, f32 arg1, f32 arg2, f32 arg3);
Vec3f* func_8000E88C(Vec3f* arg0, f32 arg1, f32 arg2, f32 arg3);
Vec3f* func_8000E8B0(Vec3f* arg0, Vec3f* arg1);
Vec3f* func_8000E8E8(Vec3f* arg0, Vec3f* arg1, Vec3f* arg2);
Vec3f* func_8000E920(Vec3f* arg0, Vec3f* arg1);
Vec3f* func_8000E958(Vec3f* arg0, Vec3f* arg1, Vec3f* arg2);
Vec3f* func_8000E990(Vec3f* arg0, Vec3s* arg1);
Vec3f* func_8000E9D4(Vec3f* arg0, Vec3f* arg1, Vec3f* arg2, Vec3f* arg3);
Vec3f* func_8000EA84(Vec3f* arg0, Vec3f* arg1, Vec3f* arg2);
Vec3f* func_8000EAF4(Vec3f* arg0);
Vec3s* func_8000EB70(Vec3s* arg0, s16 arg1, s16 arg2, s16 arg3);
Vec3s* func_8000EBA8(Vec3s* arg0, Vec3s* arg1);
Vec3s* func_8000EBE0(Vec3s* arg0, Vec3s* arg1, Vec3s* arg2);
Vec3s* func_8000EC18(Vec3s* arg0, Vec3s* arg1);
Vec3s* func_8000EC50(Vec3s* arg0, Vec3s* arg1, Vec3s* arg2);
Vec3s* func_8000EC88(Vec3s* arg0, Vec3f* arg1);
void func_8000ED4C(MtxF* dest, MtxF* src);
void func_8000ED98(MtxF* arg0);
void func_8000EDD8(MtxF* arg0, Vec3f* arg1);
void func_8000EE1C(MtxF* mtx, Vec3f* from, Vec3f* to, u16 roll);
void func_8000F174(MtxF* dest, Vec3s* translate, Vec3s* rotate);
void func_8000F2C4(MtxF* arg0, Vec3f* arg1, Vec3s* arg2);
void func_8000F3FC(MtxF* arg0, Vec3f* arg1, Vec3s* arg2);
void func_8000F5A8(MtxF* dest, Vec3f* b, Vec3s* c, Vec3f* arg3);
void func_8000F730(MtxF* dest, Vec3f* b, Vec3s* c, Vec3f* arg3);
void func_8000F88C(MtxF* arg0, MtxF* arg1, MtxF* arg2, Vec3f* arg3, f32 arg4);
void func_8000FA94(MtxF* dest, Vec3f* upDir, Vec3f* pos, s16 yaw);
void func_8000FBB0(MtxF* arg0, MtxF* arg1, MtxF* arg2);
void func_8000FDE4(MtxF* dest, MtxF* mtx, Vec3f* s);
void func_8000FF04(MtxF* arg0, Vec3f* arg1);
void func_8000FFB8(MtxF* arg0, Vec3s* arg1);
void func_80010090(MtxF* dest, MtxF* src);
void func_80010228(MtxF* arg0, Vec3f* arg1, Vec3s* arg2, Vec3f* arg3, MtxF* arg4, MtxF* arg5);
void func_800102A4(Vec3f* arg0, Vec3f* arg1, f32* arg2, s16* arg3, s16* arg4);
void func_80010354(Vec3f* from, Vec3f* to, f32 dist, s16 pitch, s16 yaw);
s16 func_800103F0(s16 current, s16 target, s16 inc);
s32 func_8001046C(s32 current, s32 target, s32 inc, s32 dec);
f32 func_800104AC(f32 current, f32 target, f32 inc, f32 dec);
s16 func_80010500(s16* arg0, s32 arg1, s32 arg2);
void func_80010570(f32 arg0, f32 arg1, f32 arg2, Vec3f* arg3);
void func_80010720(Color_RGBA8_u32 arg0, Vec3f* arg1);
void func_80010780(u16 arg0, Vec3f* arg1);
f32 func_800107F0(f32 arg0, f32 arg1, f32 arg2);
void func_80010930(f32* arg0, f32* arg1, f32* arg2, Vec3f* arg3);
u16 func_80010B20(Vec3f* arg0);
Color_RGBA8_u32* func_80010BD4(Color_RGBA8_u32* arg0, Vec3f* arg1, s32 arg2);
u16 func_80010CA8(u16 arg0, AllTypeS32 arg1);
Color_RGBA8_u32* func_80010E20(Color_RGBA8_u32 arg0, AllTypeS32 arg1);
#endif // _F420_H_
+1 -2
View File
@@ -2,7 +2,6 @@
#include "dma.h"
#include "rsp.h"
extern u32 D_800818E0;
extern s16 D_80083C1C;
s32 func_80000E80(s32 arg0, void* arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5) {
@@ -102,7 +101,7 @@ s32 func_80001124(s32 arg0, s32 arg1) {
temp_v0 = Util_Malloc(0x2C);
if (temp_v0 != NULL) {
temp_v0->unk0 = 0xC;
temp_v0->unk20 = &D_800818E0;
temp_v0->unk20 = D_800818E0;
temp_v0->unk28 = arg0;
func_80000E2C(temp_v0, arg1);
}
+1 -1
View File
@@ -5,7 +5,7 @@ struct UnkStruct80000E80 {
char unk0;
char filler4[0x18];
s32 unk1C;
void *unk20;
u8* unk20;
s32 unk24;
s32 unk28;
};
+8 -8
View File
@@ -15,7 +15,7 @@
#include "src/50860.h"
#include "src/6A40.h"
#include "src/6BC0.h"
#include "src/E890.h"
#include "src/F420.h"
#include "src/fragments/2/fragment2.h"
#include "src/memory.h"
#include "src/stage_loader.h"
@@ -350,7 +350,7 @@ void func_86400860(UNUSED s32 arg0) {
gSPEndDisplayList(temp_v0++);
D_864052C8->unk_190->unk_1C = D_864052C8->unk_028.unk_0AC;
D_864052C8->unk_190->unk_1C = D_864052C8->unk_028.unk_0A8[0].unk_04;
}
}
@@ -813,19 +813,19 @@ void func_86401EEC(void) {
}
void func_86401F74(void) {
D_87B000EC = D_87B000E8->unk_0C;
D_87B000EC = D_87B000E8->unk_00.unk_0C;
D_87B000F0 = 0x900;
D_87B000F2 = 0;
D_87B000F4 = 0x190;
D_87B000EC->unk_034 = 50.0f;
D_87B000EC->unk_038 = 6400.0f;
D_87B000EC->unk_02C = 27.5f;
D_87B000EC->unk_24.near = 50.0f;
D_87B000EC->unk_24.far = 6400.0f;
D_87B000EC->unk_24.fovy = 27.5f;
D_87B000EC->unk_0B4.y = 25.0f;
D_87B000EC->unk_60.at.y = 25.0f;
func_80010354(&D_87B000EC->unk_0B4, &D_87B000EC->unk_0A8, D_87B000F4, D_87B000F0, D_87B000F2);
func_80010354(&D_87B000EC->unk_60.at, &D_87B000EC->unk_60.eye, D_87B000F4, D_87B000F0, D_87B000F2);
}
void func_8640203C(void) {
+8 -7
View File
@@ -14,7 +14,7 @@
#include "src/50860.h"
#include "src/6A40.h"
#include "src/6BC0.h"
#include "src/E890.h"
#include "src/F420.h"
#include "src/fragments/2/fragment2.h"
#include "src/fragments/5/fragment5.h"
#include "src/stage_loader.h"
@@ -712,18 +712,19 @@ void func_86501964(void) {
}
void func_865019E4(void) {
D_87B000EC = D_87B000E8->unk_0C;
D_87B000EC = D_87B000E8->unk_00.unk_0C;
D_87B000F0 = -0x200;
D_87B000F2 = 0;
D_87B000F4 = 0xBE;
D_87B000EC->unk_034 = 50.0f;
D_87B000EC->unk_038 = 6400.0f;
D_87B000EC->unk_02C = 40.0f;
D_87B000EC->unk_0B4.y = 51.0f;
D_87B000EC->unk_24.near = 50.0f;
D_87B000EC->unk_24.far = 6400.0f;
D_87B000EC->unk_24.fovy = 40.0f;
func_80010354(&D_87B000EC->unk_0B4, &D_87B000EC->unk_0A8, D_87B000F4, D_87B000F0, D_87B000F2);
D_87B000EC->unk_60.at.y = 51.0f;
func_80010354(&D_87B000EC->unk_60.at, &D_87B000EC->unk_60.eye, D_87B000F4, D_87B000F0, D_87B000F2);
}
void func_86501AAC(void) {
+1
View File
@@ -1,6 +1,7 @@
#include "fragment11.h"
#include "src/49790.h"
#include "src/6A40.h"
#include "src/F420.h"
#include "src/fragments/2/fragment2.h"
#include "src/fragments/5/fragment5.h"
+1 -1
View File
@@ -64,7 +64,7 @@ void func_87802360(s16 arg0, s16 arg1, f32* arg2, f32* arg3) {
}
}
var_fv0 *= ABS_ALT(gSineTable[((u16)temp_ft1 & 0xFFFF) >> 4]);
var_fv0 *= ABS_ALT(SINS((temp_ft1 & 0xFFFF)));
*arg3 = 1.0f - var_fv0;
*arg2 = 1.0f - var_fv0;
+8
View File
@@ -0,0 +1,8 @@
#ifndef _FRAGMENT31_H_
#define _FRAGMENT31_H_
#include "global.h"
void func_810007A8(unk_D_86002F58_004_000*);
#endif // _FRAGMENT31_H_
+3 -3
View File
@@ -9,7 +9,7 @@
#include "src/4F410.h"
#include "src/6A40.h"
#include "src/DDC0.h"
#include "src/E890.h"
#include "src/F420.h"
#include "src/controller.h"
#include "src/memory.h"
#include "src/stage_loader.h"
@@ -230,8 +230,8 @@ void func_82200A5C(void) {
temp_fv0 = (D_82203160[0].unk_06 * D_82203160[0].unk_04) / 100;
D_82203160[i].unk_0C[0].unk_00 = D_82203160[0].unk_00 + (gCosineTable[(var_v0 & 0xFFFF) >> 4] * temp_fv0);
D_82203160[i].unk_0C[0].unk_02 = D_82203160[0].unk_02 + (gSineTable[(var_v0 & 0xFFFF) >> 4] * temp_fv0);
D_82203160[i].unk_0C[0].unk_00 = D_82203160[0].unk_00 + (COSS((var_v0)) * temp_fv0);
D_82203160[i].unk_0C[0].unk_02 = D_82203160[0].unk_02 + (SINS((var_v0)) * temp_fv0);
D_82203160[i].unk_0C[0].unk_04 = (D_82203160[0].unk_06 * 0x48) / 100;
var_v0 -= 0x5555;
+3 -3
View File
@@ -86,9 +86,9 @@ void func_87A00020(unk_D_86002F34_00C* arg0) {
}
Gfx* func_87A0002C(Gfx* arg0) {
gSPPerspNormalize(arg0++, D_87A01330->unk_028);
gSPMatrix(arg0++, (u32)D_87A01330->unk_024 & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPMatrix(arg0++, (u32)D_87A01330->unk_060 & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
gSPPerspNormalize(arg0++, D_87A01330->unk_24.perspNorm);
gSPMatrix(arg0++, (u32)D_87A01330->unk_24.mtx & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
gSPMatrix(arg0++, (u32)D_87A01330->unk_60.p_mtxf & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
return arg0;
}
+13 -12
View File
@@ -18,7 +18,7 @@
#include "src/20470.h"
#include "src/6BC0.h"
#include "src/2E110.h"
#include "src/E890.h"
#include "src/F420.h"
#include "src/12D80.h"
#include "src/17300.h"
@@ -285,24 +285,25 @@ s32 func_86000410(void) {
}
void func_86000478(void) {
D_86002F38 = D_86002F34->unk_0C;
D_86002F38 = D_86002F34->unk_00.unk_0C;
func_87A00020(D_86002F38);
D_86002F3C = 0x600;
D_86002F3E = 0;
D_86002F40 = 1000;
D_86002F38->unk_034 = 100.0f;
D_86002F38->unk_038 = 12800.0f;
D_86002F38->unk_02C = 10.0f;
D_86002F38->unk_0B4.x = 0.0f;
D_86002F38->unk_0B4.y = 70.0f;
D_86002F38->unk_0B4.z = 0.0f;
D_86002F38->unk_24.near = 100.0f;
D_86002F38->unk_24.far = 12800.0f;
D_86002F38->unk_24.fovy = 10.0f;
func_80010354(&D_86002F38->unk_0B4, &D_86002F38->unk_0A8, D_86002F40, D_86002F3C, D_86002F3E);
D_86002F38->unk_60.at.x = 0.0f;
D_86002F38->unk_60.at.y = 70.0f;
D_86002F38->unk_60.at.z = 0.0f;
func_80010354(&D_86002F38->unk_60.at, &D_86002F38->unk_60.eye, D_86002F40, D_86002F3C, D_86002F3E);
}
void func_86000564(void) {
func_80010354(&D_86002F38->unk_0B4, &D_86002F38->unk_0A8, D_86002F40, D_86002F3C, D_86002F3E);
func_80010354(&D_86002F38->unk_60.at, &D_86002F38->unk_60.eye, D_86002F40, D_86002F3C, D_86002F3E);
}
#ifdef NON_MATCHING
@@ -496,8 +497,8 @@ void func_86000C18(void) {
for (i = 0; i < 4; i++) {
D_86003B60 = &D_86002F58[i].unk_004;
temp_f20 = (410.0f - D_86003B60->unk_000.unk_0AC.y) / 510.0f;
guTranslate(&sp100, D_86003B60->unk_000.unk_0AC.x, 0.0f, 0.0f);
temp_f20 = (410.0f - D_86003B60->unk_000.unk_0A8[0].unk_04.y) / 510.0f;
guTranslate(&sp100, D_86003B60->unk_000.unk_0A8[0].unk_04.x, 0.0f, 0.0f);
guScale(&spC0, temp_f20, temp_f20, temp_f20);
guMtxCatL(&spC0, &sp100, var_s1);
+11 -11
View File
@@ -522,24 +522,24 @@ void func_86100AEC(void) {
}
void func_86100B48(void) {
D_86105488 = D_86105484->unk_0C;
D_86105488 = D_86105484->unk_00.unk_0C;
func_87A00020(D_86105488);
D_86105490 = 0x600;
D_86105492 = 0;
D_86105494 = 0xBB8;
D_86105488->unk_034 = 100.0f;
D_86105488->unk_038 = 12800.0f;
D_86105488->unk_02C = 30.0f;
D_86105488->unk_24.near = 100.0f;
D_86105488->unk_24.far = 12800.0f;
D_86105488->unk_24.fovy = 30.0f;
D_86105488->unk_0B4.x = 0.0f;
D_86105488->unk_0B4.y = 371.2f;
D_86105488->unk_0B4.z = -732.6f;
D_86105488->unk_60.at.x = 0.0f;
D_86105488->unk_60.at.y = 371.2f;
D_86105488->unk_60.at.z = -732.6f;
D_86105488->unk_0A8.x = 0.0f;
D_86105488->unk_0A8.y = 990.0f;
D_86105488->unk_0A8.z = 2659.0f;
D_86105488->unk_60.eye.x = 0.0f;
D_86105488->unk_60.eye.y = 990.0f;
D_86105488->unk_60.eye.z = 2659.0f;
}
void func_86100C28(void) {
@@ -1832,7 +1832,7 @@ void func_8610426C(void) {
func_80015094(D_86105484);
for (i = 0; i < 12; i++) {
if (func_80015390(&D_86105D38, i + 1, &sp48) != 0) {
if (func_80015390(&D_86105D38, (s16)(i + 1), &sp48) != 0) {
D_86105BC8 = &D_86106450[i].unk_004;
D_86105BC8->unk_024.x = sp48.x / 10.0f;
D_86105BC8->unk_024.y = sp48.y / 10.0f;
+13 -11
View File
@@ -14,7 +14,7 @@
#include "src/6BC0.h"
#include "src/4BDC0.h"
#include "src/6A40.h"
#include "src/E890.h"
#include "src/F420.h"
#include "src/4BA90.h"
#include "src/490A0.h"
#include "src/30640.h"
@@ -174,7 +174,7 @@ void func_86200034(void) {
s32 i;
UNUSED s32 pad2[1];
func_80031EF4(&spDC, &D_86203E3C->unk_064);
func_80031EF4(&spDC, &D_86203E3C->unk_60.mtxf);
guMtxF2L(spDC.mf, &sp98);
for (i = 0; i < 4; i++) {
@@ -269,20 +269,22 @@ void func_862004D8(void) {
void func_86200528(void) {
D_8620829C = 0;
D_86203E3C = D_86203E38->unk_0C;
D_86203E3C = D_86203E38->unk_00.unk_0C;
func_87A00020(D_86203E3C);
D_86203E40 = 0x1300;
D_86203E42 = -0x6700;
D_86203E44 = 0x14A;
D_86203E3C->unk_034 = 50.0f;
D_86203E3C->unk_038 = 6400.0f;
D_86203E3C->unk_02C = 30.0f;
D_86203E3C->unk_0B4.x = 0.0f;
D_86203E3C->unk_0B4.y = 0.0f;
D_86203E3C->unk_0B4.z = 5.0f;
D_86203E3C->unk_24.near = 50.0f;
D_86203E3C->unk_24.far = 6400.0f;
D_86203E3C->unk_24.fovy = 30.0f;
func_80010354(&D_86203E3C->unk_0B4, &D_86203E3C->unk_0A8, D_86203E44, D_86203E40, D_86203E42);
D_86203E3C->unk_60.at.x = 0.0f;
D_86203E3C->unk_60.at.y = 0.0f;
D_86203E3C->unk_60.at.z = 5.0f;
func_80010354(&D_86203E3C->unk_60.at, &D_86203E3C->unk_60.eye, D_86203E44, D_86203E40, D_86203E42);
}
void func_86200620(void) {
@@ -367,7 +369,7 @@ void func_86200620(void) {
D_86203E44 = 0x32;
}
func_80010354(&D_86203E3C->unk_0B4, &D_86203E3C->unk_0A8, D_86203E44, D_86203E40, D_86203E42);
func_80010354(&D_86203E3C->unk_60.at, &D_86203E3C->unk_60.eye, D_86203E44, D_86203E40, D_86203E42);
}
void func_86200938(void) {
+9 -9
View File
@@ -12,7 +12,7 @@
#include "src/3FB0.h"
#include "src/6A40.h"
#include "src/6BC0.h"
#include "src/E890.h"
#include "src/F420.h"
#include "src/controller.h"
#include "src/fragments/2/fragment2.h"
#include "src/fragments/4/fragment4.h"
@@ -107,21 +107,21 @@ void func_8630011C(void) {
}
void func_86300154(void) {
D_86301718 = D_86301714->unk_0C;
D_86301718 = D_86301714->unk_00.unk_0C;
D_8630171C = 0x600;
D_8630171E = 0;
D_86301720 = 0x15E;
D_86301718->unk_034 = 100.0f;
D_86301718->unk_038 = 12800.0f;
D_86301718->unk_02C = 30.0f;
D_86301718->unk_24.near = 100.0f;
D_86301718->unk_24.far = 12800.0f;
D_86301718->unk_24.fovy = 30.0f;
D_86301718->unk_0B4.x = 0.0f;
D_86301718->unk_0B4.y = 70.0f;
D_86301718->unk_0B4.z = 0.0f;
D_86301718->unk_60.at.x = 0.0f;
D_86301718->unk_60.at.y = 70.0f;
D_86301718->unk_60.at.z = 0.0f;
func_80010354(&D_86301718->unk_0B4, &D_86301718->unk_0A8, D_86301720, D_8630171C, D_8630171E);
func_80010354(&D_86301718->unk_60.at, &D_86301718->unk_60.eye, D_86301720, D_8630171C, D_8630171E);
}
void func_86300230(void) {
+1 -2
View File
@@ -14,8 +14,7 @@ u8 unk_8007F330[0x400];
OSThread pThreads;
u8 unk_8007F8E0[0x720];
u8 D_80080000[0x18E0];
u8 D_800818E0[0x18];
u8 D_800818F8[0x8];
u8 D_800818E0[0x20];
/**
* Initialize hardware, start main thread, then idle.
+8 -1
View File
@@ -54,6 +54,7 @@
- [0xE1C0, c]
- [0xE570, c] #
- [0xE890, c] #
- [0xF420, c] #
- [0x11BA0, c] #
- [0x12D80, c] #
- [0x17300, c] #
@@ -340,8 +341,12 @@
- [0x6A3E0, data, rom_data_6A3E0]
- [0x6A3F0, .data, math_util]
- [0x6FC00, data, rom_data_6FC00]
- [0x6FC50, .data, F420]
- [0x6FC80, .data, 12D80]
- [0x6FEB0, data, rom_data_6FEB0]
- [0x70070, .data, 20470]
- [0x703E0, data, rom_data_703E0]
- [0x74260, data, rom_data_74260]
- [0x76260, .data, 29BA0]
- [0x76280, data, rom_data_76280]
- [0x78570, .data, 373A0]
@@ -404,7 +409,7 @@
- [0x7BFA0, .rodata, profiler]
- [0x7BFC0, .rodata, gb_tower]
- [0x7C000, rodata, rom_rodata_7C000]
- [0x7C180, rodata, rom_rodata_7C180]
- [0x7C180, .rodata, F420]
- [0x7C190, rodata, rom_rodata_7C190]
- [0x7C220, rodata, rom_rodata_7C220]
- [0x7C750, rodata, rom_rodata_7C750]
@@ -483,6 +488,8 @@
- {vram: 0x800A74C0, type: .bss, name: crash_screen}
- {vram: 0x800A7EA0, type: .bss, name: profiler}
- {vram: 0x800A8100, type: bss, name: unk_bss_2}
- {vram: 0x800AA6C0, type: .bss, name: 12D80}
- {vram: 0x800ABCC0, type: bss, name: unk_bss_13}
- {vram: 0x800AC880, type: .bss, name: 20330}
- {vram: 0x800AC890, type: bss, name: unk_bss_11}
- {vram: 0x800AE520, type: .bss, name: 29BA0}