Skip to content

Commit 51a9bcd

Browse files
authored
Merge pull request #134 from Kelebek1/various
32D10, 12D80, F420
2 parents 001630f + 172cd99 commit 51a9bcd

38 files changed

+3133
-361
lines changed

include/color.h

+7
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,13 @@ typedef union Color_RGBA8_u32 {
3333
u32 rgba;
3434
} Color_RGBA8_u32;
3535

36+
typedef union Color_RGBA8_s32 {
37+
struct {
38+
s8 r, g, b, a;
39+
};
40+
s32 rgba;
41+
} Color_RGBA8_s32;
42+
3643
typedef struct {
3744
f32 r, g, b, a;
3845
} Color_RGBAf;

include/global.h

+185-25
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,12 @@ typedef struct unk_D_86002F58_004_000_054 {
8484
/* 0x04 */ unk_D_86002F58_004_000_054_004* unk_04;
8585
/* 0x08 */ s16 unk_08;
8686
/* 0x0A */ s16 unk_0A;
87-
} unk_D_86002F58_004_000_054; // size >= 0xC
87+
} unk_D_86002F58_004_000_054; // size = 0xC
88+
89+
typedef struct unk_D_86002F58_004_000_0A8 {
90+
/* 0x00 */ u16 unk_00;
91+
/* 0x04 */ Vec3f unk_04;
92+
} unk_D_86002F58_004_000_0A8; // size = 0x10
8893

8994
typedef struct unk_D_86002F58_004_000 {
9095
/* 0x000 */ unk_D_86002F58_004_000_000 unk_000;
@@ -95,45 +100,200 @@ typedef struct unk_D_86002F58_004_000 {
95100
/* 0x01E */ Vec3s unk_01E;
96101
/* 0x024 */ Vec3f unk_024;
97102
/* 0x030 */ Vec3f unk_030;
98-
/* 0x03C */ s32 unk_03C;
103+
/* 0x03C */ Color_RGBA8_u32 unk_03C;
99104
/* 0x040 */ unk_D_86002F58_004_000_040 unk_040;
100105
/* 0x050 */ char pad050[2];
101106
/* 0x052 */ s16 unk_052;
102107
/* 0x054 */ unk_D_86002F58_004_000_054 unk_054;
103-
/* 0x060 */ s32 unk_060;
104-
/* 0x064 */ char pad064[0x3C];
105-
/* 0x0A0 */ s32 unk_0A0;
108+
/* 0x060 */ MtxF unk_060;
109+
/* 0x0A0 */ Color_RGBA8_u32 unk_0A0;
106110
/* 0x0A4 */ char pad0A4[2];
107-
/* 0x0A6 */ s8 unk_0A6;
108-
/* 0x0A7 */ char pad0A7[5];
109-
/* 0x0AC */ Vec3f unk_0AC;
111+
/* 0x0A6 */ u8 unk_0A6;
112+
/* 0x0A7 */ u8 unk_0A7;
113+
/* 0x0A8 */ unk_D_86002F58_004_000_0A8 unk_0A8[1];
110114
/* 0x0B8 */ char pad0B8[0x24];
111115
/* 0x0DC */ Vec3f unk_0DC;
112116
/* 0x0E0 */ char pad0E0[0x4];
113117
/* 0x0EC */ Vec3f unk_0EC;
114118
/* 0x0F8 */ char pad0F8[0x70];
115119
} unk_D_86002F58_004_000; // size = 0x168
116120

121+
typedef struct unk_D_86002F34_000 {
122+
/* 0x00 */ u8 unk_00;
123+
/* 0x01 */ u8 unk_01;
124+
/* 0x02 */ u8 unk_02;
125+
/* 0x03 */ u8 unk_03;
126+
/* 0x04 */ char pad04[0x4];
127+
/* 0x08 */ struct unk_D_86002F34_000* unk_08;
128+
/* 0x0C */ struct unk_D_86002F34_000* unk_0C;
129+
/* 0x10 */ s32 (*unk_10)(s32, struct unk_D_86002F34_000*);
130+
/* 0x14 */ char unk14[0x4];
131+
} unk_D_86002F34_000; // size >= 0x18
132+
133+
typedef struct unk_D_86002F34_00C_018 {
134+
/* 0x00 */ Vp* vp;
135+
/* 0x04 */ s16 x;
136+
/* 0x06 */ s16 y;
137+
/* 0x08 */ s16 width;
138+
/* 0x0A */ s16 height;
139+
} unk_D_86002F34_00C_018; // size = 0xC
140+
141+
typedef struct unk_D_86002F34_00C_024 {
142+
/* 0x00 */ Mtx* mtx;
143+
/* 0x04 */ u16 perspNorm;
144+
/* 0x08 */ f32 fovy;
145+
/* 0x0C */ f32 aspect;
146+
/* 0x10 */ f32 near;
147+
/* 0x14 */ f32 far;
148+
/* 0x18 */ f32 scale;
149+
} unk_D_86002F34_00C_024; // size = 0x1C
150+
151+
typedef struct unk_D_86002F34_00C_040 {
152+
/* 0x00 */ Mtx* mtx;
153+
/* 0x04 */ f32 l;
154+
/* 0x08 */ f32 r;
155+
/* 0x0C */ f32 b;
156+
/* 0x10 */ f32 t;
157+
/* 0x14 */ f32 n;
158+
/* 0x18 */ f32 f;
159+
/* 0x1C */ f32 scale;
160+
} unk_D_86002F34_00C_040; // size = 0x20
161+
162+
typedef struct unk_D_86002F34_00C_060 {
163+
/* 0x00 */ MtxF* p_mtxf;
164+
/* 0x04 */ MtxF mtxf;
165+
/* 0x44 */ LookAt* lookat;
166+
/* 0x48 */ Vec3f eye;
167+
/* 0x54 */ Vec3f at;
168+
/* 0x60 */ Vec3f up;
169+
} unk_D_86002F34_00C_060; // size >= 0x6C
170+
171+
typedef struct unk_D_86002F34_00C_0CC {
172+
/* 0x00 */ u16 unk_00;
173+
/* 0x02 */ u16 unk_02;
174+
/* 0x04 */ Color_RGBA8_u32 color;
175+
/* 0x08 */ u16 unk_08;
176+
/* 0x0A */ u16 unk_0A;
177+
/* 0x0C */ s16 unk_0C;
178+
/* 0x0E */ s16 unk_0E;
179+
/* 0x10 */ s16 unk_10;
180+
/* 0x12 */ s16 unk_12;
181+
/* 0x14 */ s16 unk_14;
182+
/* 0x16 */ s16 unk_16;
183+
/* 0x18 */ s16 unk_18;
184+
/* 0x1A */ s16 unk_1A;
185+
/* 0x1C */ u8* texture;
186+
} unk_D_86002F34_00C_0CC; // size >= 0x20
187+
117188
typedef struct unk_D_86002F34_00C {
118-
/* 0x00 */ char pad0[0x24];
119-
/* 0x24 */ MtxF* unk_024;
120-
/* 0x28 */ u16 unk_028;
121-
/* 0x2C */ f32 unk_02C;
122-
/* 0x30 */ char pad30[4];
123-
/* 0x34 */ f32 unk_034;
124-
/* 0x38 */ f32 unk_038;
125-
/* 0x3C */ char pad3C[0x24];
126-
/* 0x60 */ MtxF* unk_060;
127-
/* 0x64 */ MtxF unk_064;
128-
/* 0xA4 */ char padA4[0x4];
129-
/* 0xA8 */ Vec3f unk_0A8;
130-
/* 0xB4 */ Vec3f unk_0B4;
131-
} unk_D_86002F34_00C; // size >= 0xC0
189+
/* 0x00 */ unk_D_86002F34_000 unk_00;
190+
/* 0x18 */ unk_D_86002F34_00C_018 unk_18;
191+
/* 0x24 */ unk_D_86002F34_00C_024 unk_24;
192+
/* 0x40 */ unk_D_86002F34_00C_040 unk_40;
193+
/* 0x60 */ unk_D_86002F34_00C_060 unk_60;
194+
/* 0xCC */ unk_D_86002F34_00C_0CC unk_CC;
195+
} unk_D_86002F34_00C; // size >= 0xEC
196+
197+
typedef struct unk_D_86002F34_alt1 {
198+
/* 0x00 */ unk_D_86002F34_000 unk_00;
199+
/* 0x18 */ s16 unk_18;
200+
/* 0x1A */ u16 unk_1A;
201+
/* 0x1C */ s8 unk_1C;
202+
/* 0x1D */ s8 unk_1D;
203+
/* 0x20 */ s32 unk_20;
204+
/* 0x24 */ Lights7* lights;
205+
} unk_D_86002F34_alt1; // size >= 0x28
206+
207+
typedef struct unk_D_86002F34_alt2 {
208+
/* 0x00 */ unk_D_86002F34_000 unk_00;
209+
/* 0x18 */ u32 unk_18;
210+
} unk_D_86002F34_alt2; // size >= 0x1C
211+
212+
typedef struct unk_D_86002F34_alt3 {
213+
/* 0x00 */ unk_D_86002F34_000 unk_00;
214+
/* 0x18 */ s16 unk_18;
215+
/* 0x1A */ s16 unk_1A;
216+
/* 0x1C */ s32 unk_1C;
217+
} unk_D_86002F34_alt3; // size >= 0x20
218+
219+
typedef struct unk_D_86002F34_alt4 {
220+
/* 0x00 */ unk_D_86002F34_000 unk_00;
221+
/* 0x18 */ Color_RGBA8_u32 unk_18;
222+
/* 0x1C */ u16 unk_1C;
223+
/* 0x1E */ u16 unk_1E;
224+
} unk_D_86002F34_alt4; // size >= 0x20
225+
226+
typedef struct unk_D_86002F34_alt5 {
227+
/* 0x00 */ unk_D_86002F34_000 unk_00;
228+
/* 0x18 */ Vec3f unk_18;
229+
/* 0x24 */ Vec3s unk_24;
230+
} unk_D_86002F34_alt5; // size >= 0x2C
231+
232+
typedef struct unk_D_86002F34_alt6 {
233+
/* 0x00 */ unk_D_86002F34_000 unk_00;
234+
/* 0x18 */ Vec3s unk_18;
235+
/* 0x1E */ Vec3s unk_1E;
236+
/* 0x24 */ Vec3f unk_24;
237+
/* 0x30 */ u8 unk_30;
238+
/* 0x31 */ u8 unk_31;
239+
/* 0x32 */ s16 unk_32;
240+
} unk_D_86002F34_alt6; // size >= 0x58
241+
242+
typedef struct unk_D_86002F34_alt7 {
243+
/* 0x00 */ unk_D_86002F34_000 unk_00;
244+
/* 0x18 */ Gfx* unk_18;
245+
/* 0x1C */ s16 unk_1C;
246+
} unk_D_86002F34_alt7; // size >= 0x20
247+
248+
typedef struct unk_D_86002F34_alt8 {
249+
/* 0x00 */ unk_D_86002F34_000 unk_00;
250+
/* 0x18 */ Gfx* unk_18;
251+
/* 0x1C */ MtxF unk_1C;
252+
} unk_D_86002F34_alt8; // size >= 0x5C
253+
254+
typedef struct unk_D_86002F34_alt9 {
255+
/* 0x00 */ unk_D_86002F34_000 unk_00;
256+
/* 0x18 */ Gfx* unk_18;
257+
/* 0x1C */ Vec3f unk_1C;
258+
/* 0x28 */ f32 unk_28;
259+
} unk_D_86002F34_alt9; // size >= 0x2C
260+
261+
typedef struct unk_D_86002F34_alt10 {
262+
/* 0x00 */ unk_D_86002F34_000 unk_00;
263+
/* 0x18 */ s32 unk_18;
264+
/* 0x1C */ s16 unk_1C;
265+
/* 0x1E */ s16 unk_1E;
266+
/* 0x20 */ s16 unk_20;
267+
/* 0x22 */ u8 unk_22;
268+
/* 0x24 */ Color_RGBA8_u32 unk_24;
269+
} unk_D_86002F34_alt10; // size >= 0x28
270+
271+
typedef struct unk_D_86002F34_alt11_018 {
272+
/* 0x00 */ u8 fmt;
273+
/* 0x01 */ u8 unk_01;
274+
/* 0x02 */ s16 unk_02;
275+
/* 0x04 */ char unk04[0x4];
276+
/* 0x08 */ u8* texture;
277+
} unk_D_86002F34_alt11_018; // size >= 0xC
278+
279+
typedef struct unk_D_86002F34_alt11 {
280+
/* 0x00 */ unk_D_86002F34_000 unk_00;
281+
/* 0x18 */ unk_D_86002F34_alt11_018* unk_18;
282+
/* 0x1C */ unk_D_86002F34_alt11_018* unk_1C;
283+
} unk_D_86002F34_alt11; // size >= 0x20
284+
285+
typedef struct unk_D_86002F34_alt12 {
286+
/* 0x00 */ unk_D_86002F34_000 unk_00;
287+
/* 0x18 */ s16 unk_18;
288+
/* 0x1A */ s16 unk_1A;
289+
/* 0x1C */ s16 unk_1C;
290+
/* 0x1E */ s16 unk_1E;
291+
} unk_D_86002F34_alt12; // size >= 0x20
132292

133293
typedef struct unk_D_86002F34 {
134-
/* 0x00 */ char pad00[0xC];
135-
/* 0x0C */ unk_D_86002F34_00C* unk_0C;
136-
} unk_D_86002F34; // size >= 0x10
294+
/* 0x00 */ unk_D_86002F34_000 unk_00;
295+
/* 0x18 */ unk_D_86002F34_000* unk_18;
296+
} unk_D_86002F34; // size >= 0x1C
137297

138298
// Are unk_D_86002F30 and unk_D_800AC840 the same?
139299
typedef struct unk_D_86002F30 {

include/math.h

+24
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ extern float __ll_to_f(long long s);
1818
extern double __ull_to_d(unsigned long long u);
1919
extern float __ull_to_f(unsigned long long u);
2020

21+
#define SINS(x) gSineTable[(u16) (x) >> 4]
22+
#define COSS(x) gCosineTable[(u16) (x) >> 4]
23+
2124
typedef float MtxF_t[4][4];
2225
typedef union {
2326
MtxF_t mf;
@@ -41,4 +44,25 @@ typedef struct Vec3s {
4144
/* 0x4 */ s16 z;
4245
} Vec3s; // size = 0x6
4346

47+
typedef union Vec2s_s32 {
48+
struct {
49+
/* 0x0 */ s16 x;
50+
/* 0x2 */ s16 y;
51+
};
52+
s32 xy;
53+
} Vec2s_s32; // size = 0x6
54+
55+
typedef union AllTypeS32 {
56+
struct {
57+
s16 rg;
58+
s16 ba;
59+
};
60+
struct {
61+
s8 r;
62+
s8 g;
63+
s8 b;
64+
s8 a;
65+
};
66+
} AllTypeS32;
67+
4468
#endif

include/variables.h

+10-5
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,15 @@ extern u8 gPool[];
5151
extern Gfx* gDisplayListHead;
5252
extern u64 _binary_assets_us_F3DEX2_bin_start[];
5353

54+
extern f32 gSineTable[];
55+
extern f32 gCosineTable[0x1000];
56+
extern s16 gArctanTable[0x401];
57+
5458
extern u8 D_1000000[];
59+
extern u8 D_1001800[];
60+
extern Gfx D_1002480[];
61+
extern Gfx D_1002508[];
62+
extern Gfx D_1002590[];
5563
extern u8 D_2000000[];
5664
extern u8 D_3000000[];
5765
extern u8 D_4000000[];
@@ -71,6 +79,8 @@ extern u8 D_2028A60[];
7179
extern u8 D_2028AA0[];
7280
extern u32 D_B0000D10;
7381

82+
extern u8 D_800818E0[0x20];
83+
7484
typedef struct unk_D_80068BA0 {
7585
/* 0x00 */ char pad00[0x2];
7686
/* 0x02 */ s16 unk_02;
@@ -86,7 +96,6 @@ extern unk_D_80068BA0* D_80068BA8;
8696
extern unk_D_80068BA0* D_80068BAC;
8797
extern Gfx D_8006F518[];
8898
extern Gfx D_8006F630[];
89-
9099
extern u8 D_82000000;
91100
extern u8 D_81400000;
92101
extern u8 D_86B00000;
@@ -111,10 +120,6 @@ extern struct unk_D_86002F58_004_000_000 D_800AC840;
111120
extern struct unk_D_86002F58_004_000_000 D_800AC858;
112121
extern struct unk_D_86002F58_004_000* D_8006F09C;
113122

114-
extern struct Vec3f D_8006F050;
115-
extern struct Vec3s D_8006F05C;
116-
extern struct Vec3f D_8006F064;
117-
118123
typedef struct unk_D_8006FF00 {
119124
/* 0x00 */ char unk_00[0x4];
120125
/* 0x04 */ char* name;

lib/ultralib/include/PR/gbi.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -3050,10 +3050,10 @@ _DW({ \
30503050
}
30513051

30523052
#define gsDPSetCombine(muxs0, muxs1) \
3053-
{{ \
3053+
{ \
30543054
_SHIFTL(G_SETCOMBINE, 24, 8) | _SHIFTL(muxs0, 0, 24), \
30553055
(unsigned int)(muxs1) \
3056-
}}
3056+
}
30573057

30583058
#define GCCc0w0(saRGB0, mRGB0, saA0, mA0) \
30593059
(_SHIFTL((saRGB0), 20, 4) | _SHIFTL((mRGB0), 15, 5) | \

linker_scripts/us/symbol_addrs.txt

+4
Original file line numberDiff line numberDiff line change
@@ -290,3 +290,7 @@ rspbootTextStart = 0x80065FC0;
290290
aspMainTextStart = 0x80067420;
291291
aspMainDataStart = 0x8007EA70;
292292
audDMAMessageQ = 0x800FCAE0;
293+
D_8006F010 = 0x8006F010; // size:0x40
294+
D_8006F050 = 0x8006F050; // size:0xC
295+
D_8006F05C = 0x8006F05C; // size:0x6
296+
D_8006F064 = 0x8006F064; // size:0xC

src/11BA0.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ unk_D_86002F58_004_000* func_80011938(MainPoolState* arg0, unk_D_86002F58_004_00
8282
arg1->unk_01D = 0xFF;
8383
arg1->unk_01C = 0;
8484
arg1->unk_0A6 = 0;
85-
arg1->unk_0A0 = -0x100;
86-
arg1->unk_03C = -0x100;
85+
arg1->unk_0A0.rgba = 0xFFFFFF00;
86+
arg1->unk_03C.rgba = 0xFFFFFF00;
8787
arg1->unk_040.unk_00 = 0;
8888
arg1->unk_040.unk_04 = NULL;
8989
arg1->unk_040.unk_08 = 0;

0 commit comments

Comments
 (0)