diff --git a/src/29BA0.h b/src/29BA0.h index 592c94d..ae6d19f 100644 --- a/src/29BA0.h +++ b/src/29BA0.h @@ -83,11 +83,11 @@ typedef struct unk_D_800AE540_0004 { typedef struct unk_D_800AE540_1194 { /* 0x00 */ u8 unk_00; /* 0x01 */ u8 unk_01; - /* 0x02 */ u16 unk_02; - /* 0x04 */ s32 unk_04; + /* 0x02 */ s16 unk_02; + /* 0x04 */ unk_D_800AE540_0004* unk_04; /* 0x04 */ unk_D_800AE540_0004* unk_08[2]; /* 0x04 */ s32 unk_10; - /* 0x04 */ s32 unk_14; + /* 0x04 */ unk_D_86002F58_004_000_004* unk_14; /* 0x04 */ unk_D_86002F58_004_000_004* unk_18; /* 0x1C */ u8 unk_1C; /* 0x1D */ u8 unk_1D; diff --git a/src/fragments/62/fragment62.h b/src/fragments/62/fragment62.h index 031d4a6..a112bca 100644 --- a/src/fragments/62/fragment62.h +++ b/src/fragments/62/fragment62.h @@ -16,7 +16,7 @@ typedef struct unk_D_84390010_654_038 { /* 0x0B */ u8 unk_0B; /* 0x0C */ char unk0C[0x9]; /* 0x15 */ u8 unk_15; - /* 0x16 */ char unk16[0x9]; + /* 0x16 */ u8 unk_16[9]; /* 0x1F */ u8 unk_1F[4]; /* 0x23 */ char unk23[0x3]; /* 0x26 */ u8 unk_26; @@ -61,21 +61,9 @@ typedef struct unk_D_84390010_654 { /* 0xBC */ s16 unk_BC; /* 0xBE */ char unkBE[0x3]; /* 0xC1 */ u8 unk_C1[4]; - /* 0xC5 */ char unkC5[0x7]; + /* 0xC8 */ Controller* unk_C8; } unk_D_84390010_654; // size = 0xCC -typedef struct unk_D_84390010_724_01C { - /* 0x00 */ char unk00[0x5]; - /* 0x05 */ u8 unk_05; - /* 0x06 */ char unk06[0x2]; -} unk_D_84390010_724_01C; // size >= 0x8 - -typedef struct unk_D_84390010_724 { - /* 0x00 */ char unk00[0x1C]; - /* 0x1C */ unk_D_84390010_724_01C unk_1C; - /* 0x24 */ char unk24[0x30]; -} unk_D_84390010_724; // size = 0x54 - typedef struct unk_D_84390010_728_0168 { /* 0x00 */ unk_D_86002F58_004_000_000 unk_00; /* 0x18 */ char unk18[0x4]; @@ -137,7 +125,8 @@ typedef struct unk_D_84390010 { /* 0x48C */ char unk48C[0x24]; /* 0x4B0 */ s32 unk_4B0; /* 0x4B4 */ s32 unk_4B4; - /* 0x4B8 */ char unk4B8[0x8]; + /* 0x4B8 */ s32 unk_4B8; + /* 0x4BC */ char unk4BC[0x4]; /* 0x4C0 */ s32 unk_4C0; /* 0x4C4 */ s32 unk_4C4; /* 0x4C8 */ s32 unk_4C8; @@ -145,7 +134,7 @@ typedef struct unk_D_84390010 { /* 0x4EC */ unk_D_86002F58_004_000 unk_4EC; /* 0x654 */ unk_D_84390010_654 unk_654; /* 0x720 */ unk_D_800AE540_1194* unk_720; - /* 0x724 */ unk_D_84390010_724* unk_724; + /* 0x724 */ unk_D_800AE540_0004* unk_724; /* 0x728 */ unk_D_84390010_728 unk_728; /* 0x8C4 */ unk_D_84390010_8C4 unk_8C4; /* 0x94C */ unk_D_84390010_94C unk_94C; @@ -160,7 +149,7 @@ typedef struct unk_D_8438E7B0_A50 { /* 0x00 */ u8 unk_00; /* 0x01 */ u8 unk_01; /* 0x02 */ u8 unk_02; - /* 0x03 */ char unk03[0x1]; + /* 0x03 */ u8 unk_03; /* 0x04 */ u8 unk_04; /* 0x05 */ u8 unk_05; /* 0x06 */ u8 unk_06; @@ -179,7 +168,8 @@ typedef struct unk_D_8438E7B0 { /* 0xA60 */ char unkA60[0x10]; /* 0xA70 */ unk_D_8438E7B0_A50 unk_A70; /* 0xA80 */ unk_D_8438E7B0_A50 unk_A80; - /* 0xA90 */ char unkA90[0x70]; + /* 0xA90 */ char unkA90[0x60]; + /* 0xAF0 */ unk_D_8438E7B0_A50 unk_AF0; /* 0xB00 */ unk_D_8438E7B0_A50 unk_B00; /* 0xB10 */ char unkB10[0x10]; /* 0xB20 */ unk_D_8438E7B0_A50 unk_B20; @@ -247,9 +237,10 @@ typedef struct unk_D_8438FF70 { } unk_D_8438FF70; // size = 0x20 typedef struct unk_D_84390028 { - /* 0x00 */ char unk00[0x8]; + /* 0x00 */ f32 unk_00; + /* 0x04 */ f32 unk_04; /* 0x08 */ f32 unk_08; - /* 0x0C */ char unk0C[0x4]; + /* 0x0C */ f32 unk_0C; } unk_D_84390028; // size = 0x10 typedef struct unk_D_84384608 { @@ -282,12 +273,42 @@ extern u8 D_843C4E45; extern unk_D_84390010* D_84390010[2]; extern unk_D_84390028 D_84390028[2]; +extern unk_D_8438E7B0* D_84384570[]; extern unk_D_8438FF70* D_84384578[]; +extern unk_D_8438FF70* D_84384580[]; +extern unk_D_84384588* D_84384588[]; +extern u8 D_84384590[]; + extern unk_D_843847BC D_843847BC[2]; extern unk_D_84390010* D_84390018; extern unk_D_84390010* D_8439001C; +extern char** D_843900B0; +extern char** D_843900B4; +extern char** D_843900B8; +extern char** D_843900BC; +extern char** D_843900C0; +extern s32 D_84390174; +extern unk_D_84390178 D_84390178; +extern s32 D_8439022C; +extern s32 D_84390230; +extern s32 D_84390234; extern unk_D_84390240 D_84390240; +extern u8 D_843845F0; +extern u8 D_843845F4; +extern u8 D_843845F8; +extern u8 D_843845FC[]; +extern f32 D_84384600[]; +extern unk_D_84384608 D_84384608; +extern Vec3f D_84384610; +extern f32 D_8438461C[]; +extern Vec3f D_8438462C; +extern Vec3f D_84384638; +extern Vec3f D_84384644; +extern u16 D_84384650; +extern Vec3f D_84384654; +extern Vec3f D_84384660; + s32 func_84300020(s32 arg0, GraphNode* arg1); s32 func_84300058(s32 arg0, unk_D_86002F34_alt18* arg1); s32 func_843000C0(s32 arg0, unk_D_86002F34_alt18* arg1); @@ -456,26 +477,67 @@ void func_843079C4(unk_D_84390010* arg0); void func_84307A14(unk_D_84390010* arg0, unk_D_84390010* arg1); s32 func_84307A50(s32 arg0, unk_D_86002F34_00C* arg1, unk_D_86002F34_00C* arg2); - -s32 func_84307AE0(u8, u8*, s32); -s32 func_84307B60(unk_D_84390010*); -f32 func_84307BAC(unk_D_84390010*); -void func_84307C5C(unk_D_84390010*); -s32 func_84307F00(unk_D_84390010*); -u8 func_84307F24(unk_D_84390010*); -u8 func_84307F68(unk_D_84390010*); -s16 func_84307FAC(unk_D_84390010*); -s32 func_84307FE0(unk_D_84390010*); -s16 func_8430808C(unk_D_84390010*); -void func_84308654(unk_D_84390010*, s32, s32); -unk_D_86002F58_004_000_004* func_843085C4(unk_D_84390010*, s32); -s16 func_843085E0(unk_D_84390010*, s32); -void func_84308660(unk_D_84390010*, unk_D_84390010*); -void func_843089DC(unk_D_84390010*, s32); -void func_843089F4(unk_D_84390010*, s32); -void func_843089FC(unk_D_84390010*, Controller*); -void func_8430920C(unk_D_84390010*); +s32 func_84307AE0(u8 arg0, u8* arg1, s32 arg2); +unk_func_80026268_arg0* func_84307B28(unk_D_84390010* arg0); +s32 func_84307B60(unk_D_84390010* arg0); +f32 func_84307BAC(unk_D_84390010* arg0); +f32 func_84307BD8(unk_D_84390010* arg0); +f32 func_84307C04(unk_D_84390010* arg0); +f32 func_84307C30(unk_D_84390010* arg0); +void func_84307C5C(unk_D_84390010* arg0); +f32 func_84307DE0(unk_D_84390010* arg0); +void func_84307EAC(unk_D_84390010* arg0, f32 arg1); +s32 func_84307EC4(unk_D_84390010* arg0); +s32 func_84307EE0(unk_D_84390010* arg0); +s32 func_84307F00(unk_D_84390010* arg0); +u8 func_84307F24(unk_D_84390010* arg0); +u8 func_84307F68(unk_D_84390010* arg0); +s16 func_84307FAC(unk_D_84390010* arg0); +s32 func_84307FE0(unk_D_84390010* arg0); +f32 func_84308014(unk_D_84390010* arg0); +f32 func_84308058(unk_D_84390010* arg0); +s16 func_8430808C(unk_D_84390010* arg0); +void func_84308094(unk_D_84390010* arg0, Vec3f* arg1); +void func_84308148(unk_D_84390010* arg0, Vec3s* arg1); +u16 func_84308164(unk_D_84390010* arg0); +s16 func_84308190(unk_D_84390010* arg0); +s16 func_843081A4(s32 arg0); +s16 func_843081BC(unk_D_84390010* arg0); +u8 func_843081C4(unk_D_84390010* arg0); +void func_843081D4(unk_D_84390010* arg0, Vec3f* arg1); +void func_843081F0(unk_D_84390010* arg0, Vec3f* arg1); +void func_843083A0(unk_D_84390010* arg0, Vec3f* arg1); +void func_84308520(unk_D_84390010* arg0, Vec3f* arg1); +f32 func_84308548(unk_D_84390010* arg0); +f32 func_84308598(unk_D_84390010* arg0); +unk_D_86002F58_004_000_004* func_843085C4(unk_D_84390010* arg0, s32 arg1); +s32 func_843085E0(unk_D_84390010* arg0, UNUSED s32 arg1); +void func_843085F0(unk_D_84390010* arg0); +u8* func_8430862C(unk_D_84390010* arg0); +void func_84308654(unk_D_84390010* arg0, s32 arg1, s32 arg2); +void func_84308660(unk_D_84390010* arg0, unk_D_84390010* arg1); +void func_843087F8(unk_D_84390010* arg0); +void func_8430897C(unk_D_84390010* arg0); +void func_843089DC(unk_D_84390010* arg0, s32 arg1); +void func_843089F4(unk_D_84390010* arg0, s32 arg1); +void func_843089FC(unk_D_84390010* arg0, Controller* arg1); +void func_84308A04(unk_D_84390010* arg0, s32 arg1); +s32 func_84308A4C(unk_D_84390010* arg0); +s32 func_84308BD0(unk_D_84390010* arg0); +s32 func_84308D54(unk_D_84390010* arg0); +u8 func_84308D90(unk_D_84390010* arg0); +s32 func_84308D98(unk_D_84390010* arg0); +void func_84308DB8(unk_D_84390010* arg0, unk_D_84390010* arg1, s32 arg2, s32 arg3); +void func_84308ED4(unk_D_84390010* arg0, unk_D_84390010_728* arg1, s16 arg2); +void func_84308F94(unk_D_84390010* arg0, s16 arg1); +void func_84309110(unk_D_84390010* arg0); +void func_84309168(unk_D_84390010* arg0); +void func_8430920C(unk_D_84390010* arg0); void func_843092B4(unk_D_84390010* arg0); +void func_84309328(unk_D_84390010* arg0); +void func_84309368(unk_D_84390010* arg0); + + void func_843096EC(unk_D_84390010*); void func_8430BC44(s32); s32 func_8430C1E4(Vec3f*, Vec3f*); diff --git a/src/fragments/62/fragment62_2EC3C0.c b/src/fragments/62/fragment62_2EC3C0.c index 2d9df63..6423a8c 100644 --- a/src/fragments/62/fragment62_2EC3C0.c +++ b/src/fragments/62/fragment62_2EC3C0.c @@ -33,18 +33,6 @@ static s32 D_843900A0; static s32 D_843900A4; s32 D_843900A8; -extern char** D_843900B0; -extern char** D_843900B4; -extern char** D_843900B8; -extern char** D_843900BC; -extern char** D_843900C0; -extern s32 D_84390174; -extern unk_D_84390178 D_84390178; -extern s32 D_8439022C; -extern s32 D_84390230; -extern s32 D_84390234; -extern unk_D_84390240 D_84390240; - unk_D_8438E7B0* D_84384570[] = { &D_8438E7B0, &D_8438F390 }; unk_D_8438FF70* D_84384578[] = { &D_8438FF70, @@ -127,14 +115,18 @@ unk_D_843847BC D_843847BC[2] = { 0xFFB8, 0x0048, 0x0020, - 10.0f, 10.0f, 1280.0f, + 10.0f, + 10.0f, + 1280.0f, 0x0001, }, { 0x015F, 0x0080, 0x0020, - 10.0f, 10.0f, 1280.0f, + 10.0f, + 10.0f, + 1280.0f, 0xFFFF, }, }; @@ -734,7 +726,7 @@ void func_84302128(unk_D_84390010* arg0) { } void func_84302148(unk_D_84390010* arg0) { - arg0->unk_720->unk_04 = &arg0->unk_724[arg0->unk_654.unk_08].unk_1C; + arg0->unk_720->unk_04 = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; arg0->unk_720->unk_00 |= 0x80; arg0->unk_720->unk_02 = arg0->unk_654.unk_BC; } @@ -1384,11 +1376,11 @@ void func_84303ECC(unk_D_84390010* arg0) { s32 idx = arg0->unk_4C0; s32 temp_a0; s32 sp34; - unk_D_84390010_724_01C* sp30; + unk_func_80026268_arg0* sp30; unk_D_84390010_654* sp24; sp34 = D_84385384[idx].unk_20; - sp30 = &arg0->unk_724[arg0->unk_654.unk_08].unk_1C; + sp30 = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; sp24 = &arg0->unk_654; D_84390020 = &D_84384570[func_84307F00(arg0)]->unk_000[sp34]; temp_a0 = sp24->unk_34 & 2; @@ -1424,7 +1416,7 @@ void func_84303ECC(unk_D_84390010* arg0) { void func_84304114(unk_D_84390010* arg0) { UNUSED s32 pad; unk_D_84390010_654* sp18 = &arg0->unk_654; - unk_D_84390010_724_01C* ptr = &arg0->unk_724[arg0->unk_654.unk_08].unk_1C; + unk_func_80026268_arg0* ptr = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; if ((sp18->unk_34 & 0x4000) || (sp18->unk_34 & 2) || (ptr->unk_05 & 7)) { D_84390068[D_843900A0].unk_04 = D_84385380; @@ -1442,7 +1434,7 @@ void func_84304114(unk_D_84390010* arg0) { void func_84304210(unk_D_84390010* arg0) { UNUSED s32 pad; - unk_D_84390010_724_01C* ptr = &arg0->unk_724[arg0->unk_654.unk_08].unk_1C; + unk_func_80026268_arg0* ptr = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; unk_D_84390010_654* sp24 = &arg0->unk_654; if ((arg0->unk_654.unk_34 & 0x4000) || (sp24->unk_34 & 2) || (ptr->unk_05 & 7)) { @@ -1473,7 +1465,7 @@ void func_84304210(unk_D_84390010* arg0) { void func_843043FC(unk_D_84390010* arg0) { UNUSED s32 pad; - unk_D_84390010_724_01C* ptr = &arg0->unk_724[arg0->unk_654.unk_08].unk_1C; + unk_func_80026268_arg0* ptr = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; unk_D_84390010_654* sp24; if ((arg0->unk_654.unk_34 & 0x4000) || (ptr->unk_05 & 0x20) || (ptr->unk_05 & 7)) { @@ -1602,7 +1594,7 @@ void func_843048C8(unk_D_84390010* arg0) { void func_843049FC(unk_D_84390010* arg0) { UNUSED s32 pad[3]; - unk_D_84390010_724_01C* ptr = &arg0->unk_724[arg0->unk_654.unk_08].unk_1C; + unk_func_80026268_arg0* ptr = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; s32 sp1C; arg0->unk_4C4 = 0; @@ -1980,7 +1972,7 @@ void func_84305A74(unk_D_84390010* arg0, s32 arg1, s32 arg2) { s32 func_84305AFC(unk_D_84390010* arg0) { unk_D_84390010_654* sp20 = &arg0->unk_654; - unk_D_84390010_724_01C* ptr = &arg0->unk_724[sp20->unk_08].unk_1C; + unk_func_80026268_arg0* ptr = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; if ((sp20->unk_34 & 2) || (ptr->unk_05 & 7) || ((sp20->unk_34 & 0x200) && !(sp20->unk_34 & 0x400)) || (sp20->unk_34 & 0x4000)) { @@ -2082,12 +2074,12 @@ s32 func_84305CAC(unk_D_84390010* arg0, s32 arg1) { s32 func_84305E54(unk_D_84390010* arg0, s32 arg1) { unk_D_8438E7B0_A50* temp_a2; - unk_D_84390010_724_01C* sp28; + unk_func_80026268_arg0* sp28; UNUSED s32 pad; s32 sp20; unk_D_8438E7B0_A50* sp1C; - sp28 = &arg0->unk_724[arg0->unk_654.unk_08].unk_1C; + sp28 = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; sp20 = D_84384670[arg0->unk_654.unk_38.unk_5A - 1]; sp1C = &D_84384570[func_84307F00(arg0)]->unk_000[sp20]; temp_a2 = &D_84384570[func_84307F00(arg0)]->unk_A50; @@ -2393,7 +2385,7 @@ void func_84306914(unk_D_84390010* arg0) { } void func_84306A68(unk_D_84390010* arg0) { - unk_D_84390010_724_01C* ptr = &arg0->unk_724[arg0->unk_654.unk_08].unk_1C; + unk_func_80026268_arg0* ptr = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; if ((ptr->unk_05 & 7) && !(arg0->unk_654.unk_34 & 1)) { func_84305A74(arg0, 0xAF, 2); @@ -2456,7 +2448,7 @@ void func_84306C8C(unk_D_84390010* arg0) { func_8001BD04(&arg0->unk_000, 0); func_80017464(&arg0->unk_000, 0); - arg0->unk_720->unk_04 = &arg0->unk_724->unk_1C; + arg0->unk_720->unk_04 = arg0->unk_724->unk_01C; if ((arg0->unk_000.unk_01A == 0x32) || (arg0->unk_000.unk_01A == 0x33)) { arg0->unk_000.unk_000.unk_02 &= ~0x40; } else { diff --git a/src/fragments/62/fragment62_2F1D60.c b/src/fragments/62/fragment62_2F1D60.c index f9bc211..6fda260 100644 --- a/src/fragments/62/fragment62_2F1D60.c +++ b/src/fragments/62/fragment62_2F1D60.c @@ -89,11 +89,8 @@ void func_84307638(unk_D_84390010* arg0) { tmp2 = D_84384578[temp_v0]->unk_00.y; arg0->unk_728.unk_194 = tmp2; - func_8431AE7C(sp30, - arg0->unk_728.unk_000.unk_024.x + arg0->unk_728.unk_190, - arg0->unk_728.unk_000.unk_024.y + tmp2, - arg0->unk_728.unk_000.unk_024.z, - arg0->unk_728.unk_188, arg0->unk_728.unk_184, arg0->unk_728.unk_186); + func_8431AE7C(sp30, arg0->unk_728.unk_000.unk_024.x + arg0->unk_728.unk_190, arg0->unk_728.unk_000.unk_024.y + tmp2, + arg0->unk_728.unk_000.unk_024.z, arg0->unk_728.unk_188, arg0->unk_728.unk_184, arg0->unk_728.unk_186); } void func_84307748(unk_D_84390010* arg0) { diff --git a/src/fragments/62/fragment62_2F23A0.c b/src/fragments/62/fragment62_2F23A0.c index 578eff5..1a6cb96 100644 --- a/src/fragments/62/fragment62_2F23A0.c +++ b/src/fragments/62/fragment62_2F23A0.c @@ -1,119 +1,614 @@ -#include "global.h" +#include "fragment62.h" +#include "src/17300.h" +#include "src/18140.h" +#include "src/1C720.h" +#include "src/2E110.h" +#include "src/F420.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307AE0.s") +s32 func_84307AE0(u8 arg0, u8* arg1, s32 arg2) { + while (arg2--) { + if (arg0 == *arg1) { + return 1; + } + arg1++; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307B28.s") + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307B60.s") +unk_func_80026268_arg0* func_84307B28(unk_D_84390010* arg0) { + unk_func_80026268_arg0* ptr = &arg0->unk_720->unk_08[arg0->unk_654.unk_2C]->unk_01C[arg0->unk_654.unk_08]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307BAC.s") + return ptr; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307BD8.s") +s32 func_84307B60(unk_D_84390010* arg0) { + unk_func_80026268_arg0* temp_v0 = func_84307B28(arg0); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307C04.s") + if ((arg0->unk_000.unk_01A == 0x19) && (temp_v0->unk_52 & 0x80)) { + return 1; + } + return 0; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307C30.s") +f32 func_84307BAC(unk_D_84390010* arg0) { + return D_84390028[func_84307F00(arg0)].unk_08; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307C5C.s") +f32 func_84307BD8(unk_D_84390010* arg0) { + return D_84390028[func_84307F00(arg0)].unk_00; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307DE0.s") +f32 func_84307C04(unk_D_84390010* arg0) { + return D_84390028[func_84307F00(arg0)].unk_04; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307EAC.s") +f32 func_84307C30(unk_D_84390010* arg0) { + return D_84390028[func_84307F00(arg0)].unk_0C; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307EC4.s") +void func_84307C5C(unk_D_84390010* arg0) { + if (func_84307F00(arg0) == 0) { + if (arg0->unk_000.unk_01A == 0x82) { + func_8000E88C(&arg0->unk_000.unk_024, -225.0f, func_84307BAC(arg0), 0.0f); + } else if ((arg0->unk_000.unk_01A == 3) || (arg0->unk_000.unk_01A == 0x83)) { + func_8000E88C(&arg0->unk_000.unk_024, -175.0f, func_84307BAC(arg0), 0.0f); + } else if (arg0->unk_000.unk_01A == 0x5F) { + func_8000E88C(&arg0->unk_000.unk_024, -225.0f, func_84307BAC(arg0), 7.5000005f); + } else { + func_8000E88C(&arg0->unk_000.unk_024, -150.0f, func_84307BAC(arg0), 0.0f); + } + } else if ((arg0->unk_000.unk_01A == 0x82) || (arg0->unk_000.unk_01A == 0x5F)) { + func_8000E88C(&arg0->unk_000.unk_024, 225.0f, func_84307BAC(arg0), 0.0f); + } else if ((arg0->unk_000.unk_01A == 3) || (arg0->unk_000.unk_01A == 0x83)) { + func_8000E88C(&arg0->unk_000.unk_024, 175.0f, func_84307BAC(arg0), 0.0f); + } else { + func_8000E88C(&arg0->unk_000.unk_024, 150.0f, func_84307BAC(arg0), 0.0f); + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307EE0.s") +f32 func_84307DE0(unk_D_84390010* arg0) { + if (func_84307F00(arg0) == 0) { + if ((arg0->unk_000.unk_01A == 0x82) || (arg0->unk_000.unk_01A == 0x5F)) { + return -200.0f; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307F00.s") + if ((arg0->unk_000.unk_01A == 3) || (arg0->unk_000.unk_01A == 0x83)) { + return -175.0f; + } + return -150.0f; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307F24.s") + if ((arg0->unk_000.unk_01A == 0x82) || (arg0->unk_000.unk_01A == 0x5F)) { + return 200.0f; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307F68.s") + if ((arg0->unk_000.unk_01A == 3) || (arg0->unk_000.unk_01A == 0x83)) { + return 175.0f; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307FAC.s") + return 150.0f; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84307FE0.s") +void func_84307EAC(unk_D_84390010* arg0, f32 arg1) { + arg0->unk_000.unk_030.x = arg1; + arg0->unk_000.unk_030.y = arg1; + arg0->unk_000.unk_030.z = arg1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308014.s") +s32 func_84307EC4(unk_D_84390010* arg0) { + return arg0->unk_720->unk_08[arg0->unk_654.unk_2B]->unk_002; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308058.s") +s32 func_84307EE0(unk_D_84390010* arg0) { + s32 idx = arg0->unk_654.unk_2B == 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_8430808C.s") + return arg0->unk_720->unk_08[idx]->unk_002; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308094.s") +s32 func_84307F00(unk_D_84390010* arg0) { + if (arg0 == D_84390018) { + return 0; + } + return 1; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308148.s") +u8 func_84307F24(unk_D_84390010* arg0) { + UNUSED s32 pad; + UNUSED s16 pad2; + s16 sp18 = arg0->unk_654.unk_38.unk_5A - 1; + unk_D_8438E7B0_A50* ptr = &D_84384570[func_84307F00(arg0)]->unk_000[sp18]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308164.s") + return ptr->unk_02; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308190.s") +u8 func_84307F68(unk_D_84390010* arg0) { + UNUSED s32 pad; + UNUSED s16 pad2; + s16 sp18 = arg0->unk_654.unk_38.unk_5A - 1; + unk_D_8438E7B0_A50* ptr = &D_84384570[func_84307F00(arg0)]->unk_000[sp18]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843081A4.s") + return ptr->unk_03; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843081BC.s") +s16 func_84307FAC(unk_D_84390010* arg0) { + unk_D_8438E7B0_A50* ptr = &D_84384570[func_84307F00(arg0)]->unk_A80; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843081C4.s") + return ptr->unk_02; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843081D4.s") +s32 func_84307FE0(unk_D_84390010* arg0) { + unk_D_8438E7B0_A50* ptr = &D_84384570[func_84307F00(arg0)]->unk_A80; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843081F0.s") + return ptr->unk_03; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843083A0.s") +f32 func_84308014(unk_D_84390010* arg0) { + return ((func_84307C04(arg0) * 2) / 50.0f) * arg0->unk_000.unk_030.y; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308520.s") +f32 func_84308058(unk_D_84390010* arg0) { + return (func_84307C04(arg0) * 2) / 50.0f; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308548.s") +s16 func_8430808C(unk_D_84390010* arg0) { + return arg0->unk_654.unk_38.unk_5A; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308598.s") +void func_84308094(unk_D_84390010* arg0, Vec3f* arg1) { + arg1->x = ((func_84307BD8(arg0) * 2) / 50.0f) * arg0->unk_000.unk_030.x; + arg1->y = ((func_84307C04(arg0) * 2) / 50.0f) * arg0->unk_000.unk_030.y; + arg1->z = ((func_84307BD8(arg0) * 2) / 50.0f) * arg0->unk_000.unk_030.x; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843085C4.s") +void func_84308148(unk_D_84390010* arg0, Vec3s* arg1) { + arg1->x = arg0->unk_000.unk_01E.x; + arg1->y = arg0->unk_000.unk_01E.y; + arg1->z = arg0->unk_000.unk_01E.z; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843085E0.s") +u16 func_84308164(unk_D_84390010* arg0) { + unk_func_80026268_arg0* ptr = &arg0->unk_724->unk_01C[arg0->unk_654.unk_08]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843085F0.s") + return ptr->unk_02; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_8430862C.s") +s16 func_84308190(unk_D_84390010* arg0) { + return arg0->unk_4B0 << 0xE; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308654.s") +s16 func_843081A4(s32 arg0) { + return D_84390010[arg0]->unk_000.unk_01A; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308660.s") +s16 func_843081BC(unk_D_84390010* arg0) { + return arg0->unk_000.unk_01A; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843087F8.s") +u8 func_843081C4(unk_D_84390010* arg0) { + s32 ret = arg0->unk_000.unk_000.unk_01 & 1; + return ret; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_8430897C.s") +void func_843081D4(unk_D_84390010* arg0, Vec3f* arg1) { + arg1->x = arg0->unk_000.unk_024.x; + arg1->y = arg0->unk_000.unk_024.y; + arg1->z = arg0->unk_000.unk_024.z; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843089DC.s") +void func_843081F0(unk_D_84390010* arg0, Vec3f* arg1) { + f32 var_fs0 = 0.0f; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843089F4.s") + if (func_84307AE0(arg0->unk_000.unk_01A, &D_843845F0, 1) != 0) { + var_fs0 = func_84308548(arg0) / 1.5f; + } else if (func_84307AE0(arg0->unk_000.unk_01A, &D_843845F4, 1) != 0) { + var_fs0 = func_84308548(arg0) * 0.5f; + } else if ((func_84307AE0(arg0->unk_000.unk_01A, &D_843845F8, 1) != 0) && (arg0->unk_654.unk_34 & 0x200)) { + var_fs0 = 2.0f * func_84308548(arg0); + } else if ((func_84307AE0(arg0->unk_000.unk_01A, D_843845FC, 2) != 0) && (arg0->unk_654.unk_34 & 0x200)) { + var_fs0 = func_84308548(arg0) * 1.5f; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843089FC.s") + if (func_84307BAC(arg0) != 0.0f) { + arg1->x = arg0->unk_000.unk_024.x; + arg1->y = arg0->unk_000.unk_024.y + var_fs0; + arg1->z = arg0->unk_000.unk_024.z; + } else { + arg1->x = arg0->unk_000.unk_024.x; + arg1->y = func_84308548(arg0) + arg0->unk_000.unk_024.y + var_fs0; + arg1->z = arg0->unk_000.unk_024.z; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308A04.s") + if (arg1->y < 0.0f) { + arg1->y = func_84308548(arg0); + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308A4C.s") +void func_843083A0(unk_D_84390010* arg0, Vec3f* arg1) { + if (func_84307F00(arg0) == 0) { + if (arg0->unk_000.unk_01A == 0x82) { + func_8000E88C(arg1, -225.0f, func_84307BAC(arg0), 0.0f); + } else if ((arg0->unk_000.unk_01A == 3) || (arg0->unk_000.unk_01A == 0x83)) { + func_8000E88C(arg1, -175.0f, func_84307BAC(arg0), 0.0f); + } else if (arg0->unk_000.unk_01A == 0x5F) { + func_8000E88C(arg1, -225.0f, func_84307BAC(arg0), 7.5000005f); + } else { + func_8000E88C(arg1, -150.0f, func_84307BAC(arg0), 0.0f); + } + } else if ((arg0->unk_000.unk_01A == 0x82) || (arg0->unk_000.unk_01A == 0x5F)) { + func_8000E88C(arg1, 225.0f, func_84307BAC(arg0), 0.0f); + } else if ((arg0->unk_000.unk_01A == 3) || (arg0->unk_000.unk_01A == 0x83)) { + func_8000E88C(arg1, 175.0f, func_84307BAC(arg0), 0.0f); + } else { + func_8000E88C(arg1, 150.0f, func_84307BAC(arg0), 0.0f); + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308BD0.s") +void func_84308520(unk_D_84390010* arg0, Vec3f* arg1) { + arg1->x = arg0->unk_4EC.unk_024.x; + arg1->y = arg0->unk_4EC.unk_024.y + 2.5f; + arg1->z = arg0->unk_4EC.unk_024.z; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308D54.s") +f32 func_84308548(unk_D_84390010* arg0) { + if (arg0->unk_4B4 == 0x10) { + return func_84307C04(arg0); + } + return func_84307C04(arg0) * arg0->unk_000.unk_030.y; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308D90.s") +f32 func_84308598(unk_D_84390010* arg0) { + return func_84307BD8(arg0) * arg0->unk_000.unk_030.y; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308D98.s") +unk_D_86002F58_004_000_004* func_843085C4(unk_D_84390010* arg0, s32 arg1) { + return arg0->unk_720->unk_14->unk_00[2]->unk_00[arg1]; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308DB8.s") +s32 func_843085E0(unk_D_84390010* arg0, UNUSED s32 arg1) { + return arg0->unk_720->unk_02; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308ED4.s") +void func_843085F0(unk_D_84390010* arg0) { + func_8002D7C0(NULL, 0, D_843900B8, arg0->unk_654.unk_38.unk_5A - 1); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84308F94.s") +u8* func_8430862C(unk_D_84390010* arg0) { + return arg0->unk_724->unk_01C[arg0->unk_654.unk_08].unk_30; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84309110.s") +void func_84308654(unk_D_84390010* arg0, s32 arg1, s32 arg2) { + arg0->unk_4B4 = arg1; + arg0->unk_4B8 = arg2; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84309168.s") +void func_84308660(unk_D_84390010* arg0, unk_D_84390010* arg1) { + s32 idx; + unk_D_8438E7B0_A50* sp30; + unk_D_8438E7B0_A50* sp2C; + unk_D_8438E7B0_A50* sp28; + unk_D_84390010_654* sp20 = &arg0->unk_654; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_8430920C.s") + idx = func_84307F00(arg0); + sp30 = &D_84384570[idx]->unk_A50; + idx = func_84307F00(arg0); + sp2C = &D_84384570[idx]->unk_B00; + idx = func_84307F00(arg0); + sp28 = &D_84384570[idx]->unk_AF0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_843092B4.s") + if (!(sp20->unk_34 & 0x4002)) { + if ((func_84301FF0(arg0) == 0) && (arg1->unk_000.unk_040.unk_00 != -1) && + (func_80017514(&arg1->unk_000) == 1)) { + if (sp20->unk_34 & 0x200) { + func_8001BD04(&arg1->unk_000, sp2C->unk_00); + } else if ((sp20->unk_34 & 1) && (func_84307AE0(arg1->unk_000.unk_01A, D_84384590, 8) != 0)) { + func_8001BD04(&arg1->unk_000, sp28->unk_00); + } else { + if (arg1->unk_000.unk_01A == 0x84) { + idx = func_8430C414(5); + func_8001BD04(&arg1->unk_000, idx + 0xE); + } else { + func_8001BD04(&arg1->unk_000, sp30->unk_00); + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84309328.s") + if (!(sp20->unk_34 & 1)) { + func_84305A74(arg0, 0xA5, 1); + } + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_2F23A0/func_84309368.s") + func_80017464(&arg1->unk_000, 0); + } + } +} + +void func_843087F8(unk_D_84390010* arg0) { + s32 idx; + unk_D_84390010_654* sp24; + unk_D_8438E7B0_A50* sp34; + unk_D_8438E7B0_A50* sp30; + unk_D_8438E7B0_A50* sp2C; + + sp24 = &arg0->unk_654; + idx = func_84307F00(arg0); + sp34 = &D_84384570[idx]->unk_A50; + idx = func_84307F00(arg0); + sp30 = &D_84384570[idx]->unk_B00; + idx = func_84307F00(arg0); + sp2C = &D_84384570[idx]->unk_AF0; + + if (!(sp24->unk_34 & 0x4002) && (func_84301FF0(arg0) == 0) && (arg0->unk_000.unk_040.unk_00 != -1)) { + func_80017464(&arg0->unk_000, 0); + if (sp24->unk_34 & 0x200) { + func_8001BD04(&arg0->unk_000, sp30->unk_00); + } else if ((sp24->unk_34 & 1) && (func_84307AE0(arg0->unk_000.unk_01A, D_84384590, 8) != 0)) { + func_8001BD04(&arg0->unk_000, sp2C->unk_00); + } else { + if (arg0->unk_000.unk_01A == 0x84) { + func_8001BD04(&arg0->unk_000, func_8430C414(5) + 0xE); + } else { + func_8001BD04(&arg0->unk_000, sp34->unk_00); + } + + if (!(sp24->unk_34 & 1)) { + func_84305A74(arg0, 0xA5, 1); + } + } + } +} + +void func_8430897C(unk_D_84390010* arg0) { + unk_D_8438E7B0_A50* sp1C = &D_84384570[func_84307F00(arg0)]->unk_A80; + + if (arg0->unk_000.unk_040.unk_00 != -1) { + func_80017464(&arg0->unk_000, 0); + func_8001BD04(&arg0->unk_000, sp1C->unk_00); + } +} + +void func_843089DC(unk_D_84390010* arg0, s32 arg1) { + arg0->unk_724 = arg0->unk_720->unk_08[arg1]; +} + +void func_843089F4(unk_D_84390010* arg0, s32 arg1) { + arg0->unk_654.unk_2B = arg1; +} + +void func_843089FC(unk_D_84390010* arg0, Controller* arg1) { + arg0->unk_654.unk_C8 = arg1; +} + +void func_84308A04(unk_D_84390010* arg0, s32 arg1) { + unk_D_84390010_654* temp_v0 = &arg0->unk_654; + + func_843089DC(arg0, arg1); + func_843089F4(arg0, arg1); + temp_v0->unk_08 = temp_v0->unk_18; + arg0->unk_728.unk_16C = temp_v0->unk_2B; +} + +s32 func_84308A4C(unk_D_84390010* arg0) { + s32 i; + unk_D_84390010_654* temp_s0; + unk_func_80026268_arg0* ptr; + + temp_s0 = &arg0->unk_654; + + for (i = 0; i < func_84307EC4(arg0); i++) { + ptr = &arg0->unk_724->unk_01C[i]; + if ((ptr->unk_05 & 0x20) && (arg0->unk_654.unk_38.unk_16[temp_s0->unk_08 + temp_s0->unk_2B * 3] == 0)) { + return 1; + } + } + + if (arg0->unk_720->unk_01 == 2) { + for (i = 0; i < func_84307EE0(arg0); i++) { + ptr = &arg0->unk_720->unk_08[temp_s0->unk_2B == 0]->unk_01C[i]; + if ((ptr->unk_05 & 0x20) && + (arg0->unk_654.unk_38.unk_16[temp_s0->unk_08 + (temp_s0->unk_2B == 0) * 3] == 0)) { + return 1; + } + } + } + + return 0; +} + +s32 func_84308BD0(unk_D_84390010* arg0) { + s32 i; + unk_D_84390010_654* temp_s0; + unk_func_80026268_arg0* ptr; + + temp_s0 = &arg0->unk_654; + + for (i = 0; i < func_84307EC4(arg0); i++) { + ptr = &arg0->unk_724->unk_01C[i]; + if ((ptr->unk_05 & 7) && (arg0->unk_654.unk_38.unk_16[temp_s0->unk_08 + temp_s0->unk_2B * 3] == 0)) { + return 1; + } + } + + if (arg0->unk_720->unk_01 == 2) { + for (i = 0; i < func_84307EE0(arg0); i++) { + ptr = &arg0->unk_720->unk_08[temp_s0->unk_2B == 0]->unk_01C[i]; + if ((ptr->unk_05 & 7) && (arg0->unk_654.unk_38.unk_16[temp_s0->unk_08 + (temp_s0->unk_2B == 0) * 3] == 0)) { + return 1; + } + } + } + return 0; +} + +s32 func_84308D54(unk_D_84390010* arg0) { + if (arg0->unk_720->unk_01 != 2) { + return arg0->unk_720->unk_08[0]->unk_002; + } + return arg0->unk_720->unk_08[1]->unk_002 + arg0->unk_720->unk_08[0]->unk_002; +} + +u8 func_84308D90(unk_D_84390010* arg0) { + return arg0->unk_000.unk_000.unk_02; +} + +s32 func_84308D98(unk_D_84390010* arg0) { + return arg0->unk_720->unk_08[arg0->unk_728.unk_16C]->unk_001 + 1; +} + +void func_84308DB8(unk_D_84390010* arg0, unk_D_84390010* arg1, s32 arg2, s32 arg3) { + UNUSED s32 pad; + unk_D_86002F58_004_000_004* sp20 = func_843085C4(arg0, 0); + + func_84307F00(arg0); + func_8001BCF0(&arg1->unk_000); + + if (arg0 == D_84390010[0]) { + arg1->unk_000.unk_0A6 = 0; + } else { + arg1->unk_000.unk_0A6 = 1; + } + + func_8001BC34(&arg1->unk_000, 0, arg2, sp20); + func_84302658(arg0, arg3); + func_80017464(&arg1->unk_000, 0); + func_8001BD04(&arg1->unk_000, 0); + + if ((arg1->unk_000.unk_01A == 0x32) || (arg1->unk_000.unk_01A == 0x33)) { + arg1->unk_000.unk_000.unk_02 &= 0xFFBF; + } else { + arg1->unk_000.unk_000.unk_02 |= 0x40; + } + + if (!(arg0->unk_654.unk_34 & 0x200)) { + if (arg0 == D_84390010[0]) { + func_84307C5C(arg0); + arg1->unk_000.unk_01E.y = 0x4000; + } else { + func_84307C5C(arg0); + arg1->unk_000.unk_01E.y = -0x4000; + } + } +} + +void func_84308ED4(unk_D_84390010* arg0, unk_D_84390010_728* arg1, s16 arg2) { + unk_D_86002F58_004_000_004* sp24; + + sp24 = func_843085C4(arg0, 0); + func_8001BCF0(&arg1->unk_000); + + if (arg0 == D_84390010[0]) { + arg1->unk_000.unk_0A6 = 0xFF; + } else { + arg1->unk_000.unk_0A6 = 0xFF; + } + + if (arg0 == D_84390010[0]) { + func_8001BC34(&arg1->unk_000, 1, arg2, sp24); + } else { + func_8001BC34(&arg1->unk_000, 2, arg2, sp24); + } + + func_80017464(&arg1->unk_000, 0); + func_8001BD04(&arg1->unk_000, 0); + arg1->unk_000.unk_000.unk_02 &= ~0x40; +} + +void func_84308F94(unk_D_84390010* arg0, s16 arg1) { + s32 i; + unk_D_86002F58_004_000_004* sp58; + unk_D_84390010_168* var_s0; + + sp58 = func_843085C4(arg0, 0); + + for (i = 0; i < 2; i++) { + var_s0 = &arg0->unk_168[i]; + + func_8001BCF0(&var_s0->unk_000); + if (arg0 == D_84390010[0]) { + var_s0->unk_000.unk_0A6 = 0xFF; + } else { + var_s0->unk_000.unk_0A6 = 0xFF; + } + + func_8001BC34(&var_s0->unk_000, 0, arg1, sp58); + func_80017464(&var_s0->unk_000, 0); + func_8001BD04(&var_s0->unk_000, 0); + + var_s0->unk_000.unk_000.unk_02 &= ~0x40; + + if (arg0 == D_84390010[0]) { + func_8000E88C(&var_s0->unk_000.unk_024, -150.0f, 0.0f, 0.0f); + var_s0->unk_000.unk_01E.y = 0x4000; + } else { + func_8000E88C(&var_s0->unk_000.unk_024, 150.0f, 0.0f, 0.0f); + var_s0->unk_000.unk_01E.y = -0x4000; + } + + var_s0->unk_000.unk_000.unk_01 &= ~1; + } +} + +void func_84309110(unk_D_84390010* arg0) { + if (arg0->unk_654.unk_34 & 1) { + func_843059C0(arg0, 0xAF, 2); + } else { + arg0->unk_654.unk_36 = 0; + func_80017804(&arg0->unk_000, 0); + func_8001BD9C(&arg0->unk_000, -1); + } +} + +void func_84309168(unk_D_84390010* arg0) { + unk_D_84390010_654* ptr = &arg0->unk_654; + UNUSED s32 pad[3]; + s16 sp26; + + func_843085C4(arg0, 0); + sp26 = func_843085E0(arg0, 0); + func_84308DB8(arg0, arg0, sp26, 0); + func_84308ED4(arg0, &arg0->unk_728, sp26); + func_84308F94(arg0, sp26); + func_84309110(arg0); + ptr->unk_34 &= 0x1800; + func_8000E88C(&arg0->unk_000.unk_030, 1.0f, 1.0f, 1.0f); +} + +void func_8430920C(unk_D_84390010* arg0) { + unk_D_84390010_654* ptr = &arg0->unk_654; + UNUSED s32 pad[3]; + s16 sp26; + + func_843085C4(arg0, 0); + sp26 = func_843085E0(arg0, 0); + func_84308DB8(arg0, arg0, sp26, 1); + func_84308ED4(arg0, &arg0->unk_728, sp26); + func_84308F94(arg0, sp26); + func_84309110(arg0); + ptr->unk_2D = 0; + ptr->unk_34 &= 0x1800; + func_8000E88C(&arg0->unk_000.unk_030, 1.0f, 1.0f, 1.0f); +} + +void func_843092B4(unk_D_84390010* arg0) { + func_8001BE34(&arg0->unk_000, 0xFF, 0xFF, 0xFF, arg0->unk_654.unk_2E = 0xFF); + arg0->unk_654.unk_BC = arg0->unk_000.unk_01A; + func_84308DB8(arg0, arg0, 0x98, 0); + func_84308F94(arg0, 0x98); + func_84309110(arg0); +} + +void func_84309328(unk_D_84390010* arg0) { + func_84308DB8(arg0, arg0, 0x98, 0); + func_84308F94(arg0, 0x98); + func_84309110(arg0); +} + +void func_84309368(unk_D_84390010* arg0) { + UNUSED s32 pad[3]; + unk_D_84390010_654* ptr = &arg0->unk_654; + s16 sp2E = func_843085E0(arg0, 0); + + ptr->unk_2E = 0xFF; + func_8001BE34(&arg0->unk_000, 0xFF, 0xFF, 0xFF, ptr->unk_2E); + func_84308DB8(arg0, arg0, sp2E, 0); + func_84308F94(arg0, sp2E); + func_84309110(arg0); +}