Skip to content

Commit f4fbcfc

Browse files
committed
refactor unk_D_86002F58_004_000_010_02C
1 parent 73888b1 commit f4fbcfc

File tree

14 files changed

+127
-47
lines changed

14 files changed

+127
-47
lines changed

include/global.h

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,15 @@ typedef unsigned int uintptr_t;
1818

1919
struct unk_D_86002F58_004_000_00C;
2020

21+
typedef union arg1_func_80010CA8 {
22+
struct {
23+
/* 0x00 */ s16 unk_00;
24+
/* 0x02 */ s8 unk_02;
25+
/* 0x03 */ s8 unk_03;
26+
};
27+
u32 raw;
28+
} arg1_func_80010CA8; // size = 0x4
29+
2130
typedef struct unk_D_86002F58_004_000_00C_028 {
2231
/* 0x00 */ char pad0[4];
2332
/* 0x04 */ u8 unk_04;
@@ -29,14 +38,6 @@ typedef struct unk_D_86002F58_004_000_00C_028 {
2938

3039
typedef unk_D_86002F58_004_000_00C_028* (*unk_D_86002F58_004_000_00C_028_func)(s32, s32);
3140

32-
typedef union unk_D_86002F58_004_000_010_02C {
33-
struct {
34-
u16 unk_00;
35-
u16 unk_02;
36-
};
37-
u32 raw;
38-
} unk_D_86002F58_004_000_010_02C; // size = 0x4
39-
4041
typedef struct unk_D_86002F58_004_000_010_024 {
4142
/* 0x00 */ u16 unk_00;
4243
/* 0x02 */ char unk02[0x6];
@@ -54,7 +55,7 @@ typedef struct unk_D_86002F58_004_000_010 {
5455
/* 0x20 */ s32 unk_20;
5556
/* 0x24 */ unk_D_86002F58_004_000_010_024* unk_24;
5657
/* 0x28 */ s32 unk_28;
57-
/* 0x2C */ unk_D_86002F58_004_000_010_02C unk_2C;
58+
/* 0x2C */ arg1_func_80010CA8 unk_2C;
5859
/* 0x30 */ OSMesgQueue unk_30;
5960
/* 0x48 */ OSMesg unk_48;
6061
/* 0x4C */ char pad4C[0x4];

src/17300.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -192,27 +192,27 @@ f32 func_80016F20(unk_D_800ABCC0* arg0, s32 arg1) {
192192
return var_fv1;
193193
}
194194

195-
typedef union unk_D_86002F58_004_000_010_02C_test {
195+
typedef union arg1_func_80010CA8_test {
196196
struct {
197197
s16 unk_00;
198198
s16 unk_02;
199199
};
200200
s32 raw;
201-
} unk_D_86002F58_004_000_010_02C_test; // size = 0x4
201+
} arg1_func_80010CA8_test; // size = 0x4
202202

203203
typedef struct unk_D_86002F58_004_000_040_test {
204204
/* 0x00 */ s16 unk_00;
205205
/* 0x04 */ unk_D_86002F58_004_000_040_004* unk_04;
206-
/* 0x08 */ unk_D_86002F58_004_000_010_02C_test unk_08;
206+
/* 0x08 */ arg1_func_80010CA8_test unk_08;
207207
/* 0x0C */ s32 unk_0C;
208208
/* 0x10 */ char unk10[0x2];
209209
/* 0x12 */ u16 unk_12;
210210
} unk_D_86002F58_004_000_040_test; // size >= 0x14
211211

212212
#ifdef NON_MATCHING
213213
s32 func_80016FBC(unk_D_86002F58_004_000_040_test* arg0, u16 arg1) {
214-
unk_D_86002F58_004_000_010_02C_test spC;
215-
unk_D_86002F58_004_000_010_02C_test* ptr;
214+
arg1_func_80010CA8_test spC;
215+
arg1_func_80010CA8_test* ptr;
216216
unk_D_86002F58_004_000_040_004* temp_v0;
217217

218218
spC = arg0->unk_08;

src/19840.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,7 @@ void func_8001987C(void) {
342342
D_800ABE10.unk_A04.unk_08 = main_pool_alloc(0x28000, 1);
343343
}
344344

345-
s32 func_800198E4(unk_D_86002F58_004_000_010* arg0, u16 arg1, unk_D_86002F58_004_000_010_02C arg2) {
345+
s32 func_800198E4(unk_D_86002F58_004_000_010* arg0, u16 arg1, arg1_func_80010CA8 arg2) {
346346
s32 sp1C;
347347
sp18_func_800198E4* sp18;
348348
s32 var_v1;
@@ -379,7 +379,7 @@ s32 func_800198E4(unk_D_86002F58_004_000_010* arg0, u16 arg1, unk_D_86002F58_004
379379
return sp1C;
380380
}
381381

382-
s32 func_80019A1C(unk_D_86002F58_004_000_010* arg0, u16 arg1, unk_D_86002F58_004_000_010_02C arg2, s16 arg3) {
382+
s32 func_80019A1C(unk_D_86002F58_004_000_010* arg0, u16 arg1, arg1_func_80010CA8 arg2, s16 arg3) {
383383
if ((arg0->unk_00 & 8) && !(arg0->unk_01 & 1)) {
384384
arg0->unk_02 = arg3;
385385
func_800198E4(arg0, arg1, arg2);

src/19840.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ typedef struct sp18_func_800198E4 {
2626
/* 0x0C */ s32 unk_0C;
2727
/* 0x10 */ s32 unk_10;
2828
/* 0x14 */ s32 unk_14;
29-
/* 0x18 */ unk_D_86002F58_004_000_010_02C unk_18;
29+
/* 0x18 */ arg1_func_80010CA8 unk_18;
3030
} sp18_func_800198E4; // size = 0x1C
3131

3232
typedef struct unk_D_800ABE10_A04 {
@@ -68,8 +68,8 @@ void func_80019600(UNUSED void* arg0);
6868
void func_800196DC(void);
6969
unk_D_86002F58_004_000_010* func_80019760(u32 arg0);
7070
void func_8001987C(void);
71-
s32 func_800198E4(unk_D_86002F58_004_000_010* arg0, u16 arg1, unk_D_86002F58_004_000_010_02C arg2);
72-
s32 func_80019A1C(unk_D_86002F58_004_000_010* arg0, u16 arg1, unk_D_86002F58_004_000_010_02C arg2, s16 arg3);
71+
s32 func_800198E4(unk_D_86002F58_004_000_010* arg0, u16 arg1, arg1_func_80010CA8 arg2);
72+
s32 func_80019A1C(unk_D_86002F58_004_000_010* arg0, u16 arg1, arg1_func_80010CA8 arg2, s16 arg3);
7373
s32 func_80019A7C(unk_D_86002F58_004_000_010* arg0, s32 arg1, s32 arg2);
7474
s32 func_80019B48(unk_D_86002F58_004_000_010* arg0, sp18_func_800198E4* arg1);
7575
s32 func_80019C08(unk_D_86002F58_004_000_010* arg0);

src/1AB70.c

Lines changed: 92 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -257,11 +257,58 @@ void func_8001A714(unk_func_8001A024* arg0, s32 arg1) {
257257
func_80015094(arg0->unk_0C);
258258
}
259259

260-
#pragma GLOBAL_ASM("asm/us/nonmatchings/1AB70/func_8001AA18.s")
260+
s32 func_8001AA18(unk_func_8001A024* arg0, s32 arg1) {
261+
s32 i;
262+
s32 var_v0;
263+
s32 sp24;
264+
s32 sp20;
265+
unk_func_8001A024_008* temp_v0_2;
266+
267+
sp24 = -1;
268+
sp20 = arg0->unk_02;
269+
if (arg0->unk_00 & 1) {
270+
if (arg1 == 1) {
271+
var_v0 = func_80019CA8(arg0->unk_04);
272+
} else {
273+
var_v0 = func_80019C08(arg0->unk_04);
274+
}
275+
if (var_v0 != 0) {
276+
arg0->unk_00 &= 0xFFFE;
277+
arg0->unk_08[sp20].unk_00 &= 0xFFFE;
278+
func_8001A714(arg0, sp20);
279+
arg0->unk_03 = sp20;
280+
sp24 = sp20;
281+
arg0->unk_02++;
282+
if (arg0->unk_02 >= arg0->unk_01) {
283+
arg0->unk_02 = 0;
284+
}
285+
}
286+
} else {
287+
for (i = 0; i < arg0->unk_01; i++) {
288+
temp_v0_2 = &arg0->unk_08[sp20];
289+
if (temp_v0_2->unk_00 & 1) {
290+
arg0->unk_00 |= 1;
291+
if (temp_v0_2->unk_00 & 2) {
292+
func_800198E4(arg0->unk_04, *temp_v0_2->unk_14.ptr, temp_v0_2->unk_10);
293+
} else {
294+
func_800198E4(arg0->unk_04, temp_v0_2->unk_14.unk_02, temp_v0_2->unk_10);
295+
}
296+
arg0->unk_02 = sp20;
297+
break;
298+
} else {
299+
sp20 += 1;
300+
if (sp20 >= arg0->unk_01) {
301+
sp20 = 0;
302+
}
303+
}
304+
}
305+
}
306+
return sp24;
307+
}
261308

262309
s32 func_8001ABAC(unk_func_8001A024* arg0, s32 arg1) {
263310
UNUSED s32 pad;
264-
unk_D_86002F58_004_000_010_02C sp48;
311+
arg1_func_80010CA8 sp48;
265312
s32 sp44;
266313
s32 var_s1;
267314
unk_func_8001A024_008* temp_s0;
@@ -317,7 +364,47 @@ s32 func_8001ABAC(unk_func_8001A024* arg0, s32 arg1) {
317364
return sp44;
318365
}
319366

320-
#pragma GLOBAL_ASM("asm/us/nonmatchings/1AB70/func_8001AD90.s")
367+
s32 func_8001AD90(unk_func_8001A024* arg0, s32 arg1) {
368+
s32 i;
369+
s32 var_a2;
370+
s32 var_s0;
371+
unk_func_8001A024_008* temp_a0;
372+
unk_func_8001A024_008* temp_s1;
373+
374+
var_a2 = -1;
375+
var_s0 = arg0->unk_02;
376+
temp_a0 = arg0->unk_08;
377+
378+
for (i = 0; i < arg0->unk_01; i++) {
379+
temp_s1 = &arg0->unk_08[var_s0];
380+
if (temp_s1->unk_00 & 1) {
381+
while (func_80001C90() == 0) {}
382+
383+
if (temp_s1->unk_00 & 2) {
384+
func_800198E4(arg0->unk_04, *temp_s1->unk_14.ptr, temp_s1->unk_10);
385+
} else {
386+
func_800198E4(arg0->unk_04, temp_s1->unk_14.unk_02, temp_s1->unk_10);
387+
}
388+
func_80019CA8(arg0->unk_04);
389+
arg0->unk_08[var_s0].unk_00 &= ~1;
390+
func_8001A714(arg0, var_s0);
391+
arg0->unk_02 = var_s0;
392+
var_a2 = var_s0;
393+
arg0->unk_02++;
394+
arg0->unk_03 = var_s0;
395+
if (arg0->unk_02 >= arg0->unk_01) {
396+
arg0->unk_02 = 0;
397+
}
398+
break;
399+
} else {
400+
var_s0 += 1;
401+
if (var_s0 >= arg0->unk_01) {
402+
var_s0 = 0;
403+
}
404+
}
405+
}
406+
return var_a2;
407+
}
321408

322409
void func_8001AEEC(unk_func_8001A024* arg0, s32 arg1) {
323410
s32 i;
@@ -434,7 +521,7 @@ unk_func_8001B1FC* func_8001B1FC(unk_D_86002F58_004_000_010* arg0, s16 arg1, s16
434521
}
435522

436523
void func_8001B2D8(unk_func_8001B1FC* arg0, unk_func_80026268_arg0* arg1, u16 arg2) {
437-
unk_D_86002F58_004_000_010_02C sp2C;
524+
arg1_func_80010CA8 sp2C;
438525
s16 tmp1 = (s16)(D_8006FF00[arg1->unk_00.unk_00 - 1].unk_14 >> 0x10) >> 6;
439526
s16 tmp2 = (s16)(D_8006FF00[arg1->unk_00.unk_00 - 1].unk_14 >> 6) >> 4;
440527
s16 tmp3 = (s16)(D_8006FF00[arg1->unk_00.unk_00 - 1].unk_14 << 6) >> 6;
@@ -462,7 +549,7 @@ void func_8001B2D8(unk_func_8001B1FC* arg0, unk_func_80026268_arg0* arg1, u16 ar
462549
}
463550

464551
void func_8001B480(unk_func_8001B1FC* arg0, s32 arg1, u16 arg2) {
465-
unk_D_86002F58_004_000_010_02C sp34;
552+
arg1_func_80010CA8 sp34;
466553
s16 tmp1 = (s16)(D_8006FF00[arg1 - 1].unk_14 >> 0x10) >> 6;
467554
s16 tmp2 = (s16)(D_8006FF00[arg1 - 1].unk_14 >> 6) >> 4;
468555
s16 tmp3 = (s16)(D_8006FF00[arg1 - 1].unk_14 << 6) >> 6;

src/1AB70.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,9 @@ void func_8001A250(unk_func_8001A024*, unk_D_8006FF00*);
8080
void func_8001A258(unk_func_8001A024*);
8181
void func_8001A324(unk_func_8001A024*, s32, s32, u16);
8282
void func_8001A46C(unk_func_8001A024*, s32, unk_func_80026268_arg0*, u16);
83-
void func_8001AA18(unk_func_8001A024*, s32, unk_D_84B25A28*);
83+
s32 func_8001AA18(unk_func_8001A024*, s32);
8484
s32 func_8001ABAC(unk_func_8001A024*, s32);
85+
s32 func_8001AD90(unk_func_8001A024*, s32);
8586
u8* func_8001AFD8(unk_func_8001A024*, s32);
8687
s32 func_8001B010(unk_func_8001A024*);
8788
void func_8001B058(void);

src/1C720.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -120,10 +120,10 @@ unk_D_86002F58_004_000_00C_028* func_8001BE90(unk_D_86002F58_004_000* arg0, s32
120120
return var_v1;
121121
}
122122

123-
unk_D_86002F58_004_000_010_02C* func_8001BEE8(unk_D_86002F58_004_000_010_02C* arg0, unk_func_80026268_arg0* arg1) {
123+
arg1_func_80010CA8* func_8001BEE8(arg1_func_80010CA8* arg0, unk_func_80026268_arg0* arg1) {
124124
UNUSED s32 pad;
125125
char sp38[0xB];
126-
unk_D_86002F58_004_000_010_02C sp34;
126+
arg1_func_80010CA8 sp34;
127127
unk_D_8006FF00* sp30;
128128
UNUSED s32 pad2;
129129
u8 var_a0;
@@ -158,7 +158,7 @@ unk_D_86002F58_004_000_010_02C* func_8001BEE8(unk_D_86002F58_004_000_010_02C* ar
158158
return arg0;
159159
}
160160

161-
void func_8001C014(unk_D_86002F58_004_000_010_02C* arg0, unk_func_8001C014* arg1, u16 arg2) {
161+
void func_8001C014(arg1_func_80010CA8* arg0, unk_func_8001C014* arg1, u16 arg2) {
162162
unk_func_80026268_arg0 stack;
163163

164164
stack.unk_00.unk_00 = arg2;
@@ -171,10 +171,10 @@ void func_8001C014(unk_D_86002F58_004_000_010_02C* arg0, unk_func_8001C014* arg1
171171

172172
#ifdef NON_MATCHING
173173
typedef struct stack_func_8001C07C {
174-
/* 0x00 */ unk_D_86002F58_004_000_010_02C unk_00;
174+
/* 0x00 */ arg1_func_80010CA8 unk_00;
175175
/* 0x06 */ s16 unk_06;
176176
/* 0x08 */ s16 unk_08;
177-
/* 0x0C */ unk_D_86002F58_004_000_010_02C unk_0C;
177+
/* 0x0C */ arg1_func_80010CA8 unk_0C;
178178
} stack_func_8001C07C; // size == 0x30
179179

180180
void func_8001C07C(unk_func_8001C07C_arg0* arg0) {

src/1C720.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,8 @@ void func_8001BE34(unk_D_86002F58_004_000* arg0, u8 arg1, u8 arg2, u8 arg3, u8 a
4242
void func_8001BE78(unk_D_86002F58_004_000* arg0, u8 arg1);
4343
void func_8001BE84(unk_D_86002F58_004_000* arg0, u8 arg1);
4444
unk_D_86002F58_004_000_00C_028* func_8001BE90(unk_D_86002F58_004_000* arg0, s32 arg1);
45-
unk_D_86002F58_004_000_010_02C* func_8001BEE8(unk_D_86002F58_004_000_010_02C* arg0, unk_func_80026268_arg0* arg1);
46-
void func_8001C014(unk_D_86002F58_004_000_010_02C* arg0, unk_func_8001C014* arg1, u16 arg2);
45+
arg1_func_80010CA8* func_8001BEE8(arg1_func_80010CA8* arg0, unk_func_80026268_arg0* arg1);
46+
void func_8001C014(arg1_func_80010CA8* arg0, unk_func_8001C014* arg1, u16 arg2);
4747
void func_8001C07C(unk_func_8001C07C_arg0* arg0);
4848
void func_8001C198(unk_func_8001C248* arg0);
4949
void func_8001C1E8(unk_func_8001C248* arg0);

src/F420.h

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,6 @@
33

44
#include "global.h"
55

6-
typedef union arg1_func_80010CA8 {
7-
struct {
8-
/* 0x00 */ s16 unk_00;
9-
/* 0x02 */ s8 unk_02;
10-
/* 0x03 */ s8 unk_03;
11-
};
12-
u32 raw;
13-
} arg1_func_80010CA8; // size = 0x4
14-
156
extern Vec3f D_8006F050;
167
extern Vec3s D_8006F05C;
178
extern Vec3f D_8006F064;

src/fragments/15/fragment15_14CA70.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ void func_86900188(void) {
409409
}
410410

411411
unk_D_86002F58_004_000_010_024* func_86900244(unk_func_80026268_arg0* arg0) {
412-
unk_D_86002F58_004_000_010_02C sp1C;
412+
arg1_func_80010CA8 sp1C;
413413
unk_D_86002F58_004_000_010* sp18;
414414

415415
arg0->unk_00.unk_00 = 25;

0 commit comments

Comments
 (0)