From 53ac2be5cf4064c9e5df4a97f4233b7014acb004 Mon Sep 17 00:00:00 2001 From: PikalaxALT Date: Sat, 12 Jun 2021 21:18:42 -0400 Subject: Decompile unk_0201E7D8, 2 --- arm9/src/unk_0201E7D8.c | 139 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 125 insertions(+), 14 deletions(-) (limited to 'arm9/src') diff --git a/arm9/src/unk_0201E7D8.c b/arm9/src/unk_0201E7D8.c index 5915c4f5..3860e89d 100644 --- a/arm9/src/unk_0201E7D8.c +++ b/arm9/src/unk_0201E7D8.c @@ -1,5 +1,7 @@ #include "global.h" #include "fx.h" +#include "heap.h" +#include "NNS_g3d.h" struct UnkStruct_0201E7D8_64 { @@ -11,7 +13,7 @@ struct UnkStruct_0201E7D8_64 s32 unk_14; s32 unk_18; s32 unk_1C; - struct Vecx32 * unk_20; + VecFx32 * unk_20; }; struct UnkStruct_0201E7D8 @@ -21,18 +23,16 @@ struct UnkStruct_0201E7D8 fx32 unk_08; fx32 unk_0C; fx32 unk_10; - struct Vecx32 unk_14; - struct Vecx32 unk_20; - fx32 unk_2C; - fx32 unk_30; - fx32 unk_34; + VecFx32 unk_14; + VecFx32 unk_20; + VecFx32 unk_2C; fx32 unk_38; u16 unk_3C; u16 unk_3E; u8 filler_40[6]; u16 unk_46; - u8 filler_48[12]; - u32 unk_54; + VecFx32 unk_48; + VecFx32 * unk_54; u32 unk_58; u32 unk_5C; u32 unk_60; @@ -40,7 +40,9 @@ struct UnkStruct_0201E7D8 }; BOOL UNK_02105BB8 = TRUE; -void * UNK_021C59A4; +struct UnkStruct_0201E7D8 * UNK_021C59A4; + +void FUN_0201EF70(VecFx32 * a0, struct UnkStruct_0201E7D8 * a1); THUMB_FUNC void FUN_0201E7D8(struct UnkStruct_0201E7D8 * a0) { @@ -68,9 +70,9 @@ THUMB_FUNC void FUN_0201E99C(u16 a0, struct UnkStruct_0201E7D8 * a1) a1->unk_08 = FX32_CONST(1.33333333); a1->unk_0C = FX32_CONST(150); a1->unk_10 = FX32_CONST(900); - a1->unk_2C = 0; - a1->unk_30 = FX32_ONE; - a1->unk_34 = 0; + a1->unk_2C.x = 0; + a1->unk_2C.y = FX32_ONE; + a1->unk_2C.z = 0; a1->unk_54 = 0; a1->unk_58 = 0; a1->unk_5C = 0; @@ -78,7 +80,7 @@ THUMB_FUNC void FUN_0201E99C(u16 a0, struct UnkStruct_0201E7D8 * a1) a1->unk_64 = NULL; } -THUMB_FUNC void FUN_0201E9E8(struct UnkStruct_0201E7D8 * a0, struct Vecx32 * a1) +THUMB_FUNC void FUN_0201E9E8(struct UnkStruct_0201E7D8 * a0, VecFx32 * a1) { if (a0->unk_58 == 0) a1->x = 0; @@ -88,7 +90,7 @@ THUMB_FUNC void FUN_0201E9E8(struct UnkStruct_0201E7D8 * a0, struct Vecx32 * a1) a1->z = 0; } -THUMB_FUNC void FUN_0201EA08(struct UnkStruct_0201E7D8 * a0, struct Vecx32 * a1, struct Vecx32 * a2) +THUMB_FUNC void FUN_0201EA08(struct UnkStruct_0201E7D8 * a0, VecFx32 * a1, VecFx32 * a2) { s32 * r7; s32 * sp0; @@ -121,3 +123,112 @@ THUMB_FUNC void FUN_0201EA08(struct UnkStruct_0201E7D8 * a0, struct Vecx32 * a1, a2->z = a1->z; } } + +THUMB_FUNC void FUN_0201EABC(s32 r5, s32 r7, s32 r6, s32 sp0, struct UnkStruct_0201E7D8 * sp18) +{ + s32 i; + struct UnkStruct_0201E7D8_64 * r4; + + if (sp18->unk_54 != 0) + { + GF_ASSERT(r7 + 1 <= r5); + r4 = AllocFromHeap(sp0, sizeof(struct UnkStruct_0201E7D8_64)); + r4->unk_20 = AllocFromHeap(sp0, sizeof(VecFx32) * r5); + for (i = 0; i < r5; i++) + { + r4->unk_20[i].x = 0; + r4->unk_20[i].y = 0; + r4->unk_20[i].z = 0; + } + r4->unk_00 = r5; + r4->unk_04 = 0; + r4->unk_08 = r7; + r4->unk_0C = r7; + r4->unk_10 = 0; + r4->unk_14 = 0; + r4->unk_18 = 0; + r4->unk_1C = 0; + if (r6 & 1) + r4->unk_14 = 1; + if (r6 & 2) + r4->unk_18 = 1; + if (r6 & 4) + r4->unk_1C = 1; + sp18->unk_64 = r4; + } +} + +THUMB_FUNC void FUN_0201EB48(struct UnkStruct_0201E7D8 * a0) +{ + if (a0->unk_64 != NULL) + { + FreeToHeap(a0->unk_64->unk_20); + FreeToHeap(a0->unk_64); + a0->unk_64 = NULL; + } +} + +THUMB_FUNC struct UnkStruct_0201E7D8 * FUN_0201EB64(u32 heap_id) +{ + return AllocFromHeap(heap_id, sizeof(struct UnkStruct_0201E7D8)); +} + +THUMB_FUNC void FUN_0201EB70(struct UnkStruct_0201E7D8 * a0) +{ + FreeToHeap(a0); +} + +THUMB_FUNC void FUN_0201EB78(struct UnkStruct_0201E7D8 * a0, struct UnkStruct_0201E7D8 * a1) +{ + *a1 = *a0; +} + +THUMB_FUNC void FUN_0201EB8C(struct UnkStruct_0201E7D8 * a0) +{ + UNK_021C59A4 = a0; +} + +THUMB_FUNC void FUN_0201EB98(void) +{ + UNK_021C59A4 = NULL; +} + +THUMB_FUNC void FUN_0201EBA4(void) +{ + VecFx32 sp10; + VecFx32 sp4; + if (UNK_021C59A4 != NULL) + { + if (UNK_021C59A4->unk_54 != NULL) + { + VEC_Subtract(UNK_021C59A4->unk_54, &UNK_021C59A4->unk_48, &sp10); + FUN_0201E9E8(UNK_021C59A4, &sp10); + FUN_0201EA08(UNK_021C59A4, &sp10, &sp4); + FUN_0201EF70(&sp4, UNK_021C59A4); + UNK_021C59A4->unk_48 = *UNK_021C59A4->unk_54; + } + NNS_G3dGlbLookAt(&UNK_021C59A4->unk_14, &UNK_021C59A4->unk_2C, &UNK_021C59A4->unk_20); + } +} + +THUMB_FUNC void FUN_0201EC58(VecFx32 * a, struct UnkStruct_0201E7D8 * b) +{ + b->unk_2C = *a; +} + +THUMB_FUNC void FUN_0201EC68(VecFx32 * a, struct UnkStruct_0201E7D8 * b) +{ + b->unk_54 = a; + b->unk_48 = *a; + b->unk_58 = 1; + b->unk_5C = 1; + b->unk_60 = 1; +} + +THUMB_FUNC void FUN_0201EC88(struct UnkStruct_0201E7D8 * a0) +{ + a0->unk_54 = NULL; + a0->unk_58 = 0; + a0->unk_5C = 0; + a0->unk_60 = 0; +} -- cgit v1.2.3