diff --git a/include/libc/math.h b/include/libc/math.h deleted file mode 100644 index 1cdac0f..0000000 --- a/include/libc/math.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef MATH_H -#define MATH_H - -#include "PR/ultratypes.h" - -#define M_PI 3.14159265358979323846f -#define M_SQRT2 1.41421356237309504880f -#define M_SQRT1_2 0.70710678118654752440f /* 1/sqrt(2) */ -#define FLT_MAX 340282346638528859811704183484516925440.0f -#define SHT_MAX 32767.0f -#define SHT_MINV (1.0f / SHT_MAX) - -typedef union { - f64 d; - struct { - u32 hi; - u32 lo; - } word; -} du; - -typedef union { - u32 i; - f32 f; -} fu; - -extern f32 __libm_qnan_f; - -float fabsf(float f); -#pragma intrinsic(fabsf) -float sqrtf(float f); -#pragma intrinsic(sqrtf) -double sqrt(double d); -#pragma intrinsic(sqrt) - -#endif diff --git a/include/math.h b/include/math.h index 0c3d9a6..4f86d81 100644 --- a/include/math.h +++ b/include/math.h @@ -3,12 +3,20 @@ #include "PR/ultratypes.h" +#define M_PI_F 3.14159265358979323846f #define M_SQRT2 1.41421356237309504880f #define M_SQRT1_2 0.70710678118654752440f /* 1/sqrt(2) */ #define FLT_MAX 340282346638528859811704183484516925440.0f #define SHT_MAX 32767.0f #define SHT_MINV (1.0f / SHT_MAX) +#define TWO_THIRDS_PI 2.094395160675049 +#define TWO_PI 6.2831854820251469 +/* +#define TWO_PI 6.2831854820251465 +*/ +#define TWO_PI_F 6.283185482f + extern long long __d_to_ll(double d); extern long long __f_to_ll(float f); extern unsigned long long __d_to_ull(double d); @@ -18,6 +26,10 @@ 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); +float fabsf(float f); +float sqrtf(float f); +double sqrt(double d); + #define SINS(x) gSineTable[(u16) (x) >> 4] #define COSS(x) gCosineTable[(u16) (x) >> 4] diff --git a/linker_scripts/us/symbol_addrs.txt b/linker_scripts/us/symbol_addrs.txt index 4510d49..049f361 100644 --- a/linker_scripts/us/symbol_addrs.txt +++ b/linker_scripts/us/symbol_addrs.txt @@ -1404,4 +1404,7 @@ func_8432F9A0 = 0x8432F9A0; // type:func D_843920C0 = 0x843920C0; // size:0x400 func_8433765C = 0x8433765C; // type:func func_84337664 = 0x84337664; // type:func -func_843593C8 = 0x843593C8; // type:func \ No newline at end of file +func_843593C8 = 0x843593C8; // type:func +D_84397610 = 0x84397610; // size:0x38 +D_84397648 = 0x84397648; // size:0x1900 +D_843951D0 = 0x843951D0; // size:0x2410 diff --git a/requirements.txt b/requirements.txt index 8546f01..a22b746 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,4 +13,4 @@ splat64[mips]==0.25.0 mapfile-parser>=2.4.0,<3.0.0 libyaz0 ipl3checksum>=1.2.0,<2.0.0 -spimdisasm>=1.16.3,<2.0.0 +git+https://github.com/Decompollaborate/spimdisasm.git@fe1338434c99240eb4adca0b7860edc12b847565 diff --git a/src/30640.c b/src/30640.c index 093691b..41b25ce 100644 --- a/src/30640.c +++ b/src/30640.c @@ -1,5 +1,5 @@ #include "30640.h" -#include "include/libc/math.h" +#include "include/math.h" #include "src/11BA0.h" #include "src/12D80.h" #include "src/17300.h" diff --git a/src/30640.h b/src/30640.h index 9523909..80b307e 100644 --- a/src/30640.h +++ b/src/30640.h @@ -116,6 +116,8 @@ u16* func_800318AC(void); void func_800318B8(void); s32 func_800318C4(unk_D_83403C60*); f32 func_80031A6C(f32); +void func_80031A94(f32, f32, f32, f32, f32, f32, f32*, f32*, f32*); +void func_80031B04(f32*, f32*, f32*); void func_80031EF4(MtxF*, MtxF*); void func_80032034(MtxF* arg0, Vec3f* arg1); diff --git a/src/6A40.c b/src/6A40.c index 3feda44..5d5a097 100644 --- a/src/6A40.c +++ b/src/6A40.c @@ -48,7 +48,7 @@ void* func_80005F5C(s32 arg0) { arg0 = ALIGN8(arg0); temp_v0 = (D_800A7428.unk8 - arg0); - ret = 0; + ret = NULL; if (temp_v0 >= (uintptr_t)gDisplayListHead) { D_800A7428.unk8 = temp_v0; ret = temp_v0; diff --git a/src/fragments/3/fragment3_1189B0.c b/src/fragments/3/fragment3_1189B0.c index e1097f7..b66708a 100644 --- a/src/fragments/3/fragment3_1189B0.c +++ b/src/fragments/3/fragment3_1189B0.c @@ -1,5 +1,5 @@ #include "fragment3.h" -#include "include/libc/math.h" +#include "include/math.h" #include "src/17300.h" #include "src/18140.h" #include "src/1C720.h" diff --git a/src/fragments/3/fragment3_119FB0.c b/src/fragments/3/fragment3_119FB0.c index bf573a5..327d1cc 100644 --- a/src/fragments/3/fragment3_119FB0.c +++ b/src/fragments/3/fragment3_119FB0.c @@ -213,7 +213,7 @@ void func_87901C98(void) { gSPMatrix(gDisplayListHead++, D_87906054->unk_24.mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); gSPMatrix(gDisplayListHead++, D_87906054->unk_60.p_mtxf, G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION); - D_8140E620 = func_80005F5C(0x5BE0); + D_8140E620 = func_80005F5C(sizeof(unk_D_8140E620)); D_8140E624 = 0; gSPDisplayList(gDisplayListHead++, D_8140DB30); diff --git a/src/fragments/34/fragment34.h b/src/fragments/34/fragment34.h index 1093a8f..8f8bd8c 100644 --- a/src/fragments/34/fragment34.h +++ b/src/fragments/34/fragment34.h @@ -248,6 +248,13 @@ typedef struct unk_D_8140E634 { /* 0x10 */ unk_D_8140E634_010 unk_10; } unk_D_8140E634; // size = 0x8C +typedef struct unk_D_8140E620 { + /* 0x0000 */ MtxF unk_0000[364]; + /* 0x5B00 */ char unk5B00[0x80]; + /* 0x5B80 */ Mtx unk_5B80; + /* 0x5BC0 */ char unk5BC0[0x20]; +} unk_D_8140E620; // size = 0x5BE0 + extern Gfx D_8140DAE0[]; extern Gfx D_8140DB30[]; extern Gfx D_8140DBA8[]; @@ -289,7 +296,7 @@ extern unk_D_8140E728_01C D_8140E460; extern u8 D_8140E538[]; -extern MtxF* D_8140E620; +extern unk_D_8140E620* D_8140E620; extern s32 D_8140E624; extern s32 D_8140E624; extern unk_D_8140E634 D_8140E628; diff --git a/src/fragments/34/fragment34_261F90.c b/src/fragments/34/fragment34_261F90.c index 8e9c651..1f13cea 100644 --- a/src/fragments/34/fragment34_261F90.c +++ b/src/fragments/34/fragment34_261F90.c @@ -1,9 +1,9 @@ #include "fragment34.h" -#include "include/libc/math.h" +#include "include/math.h" #include "src/F420.h" #include "src/math_util.h" -MtxF* D_8140E620; +unk_D_8140E620* D_8140E620; s32 D_8140E624; s32 D_8140E624; unk_D_8140E634 D_8140E628; @@ -727,9 +727,9 @@ void func_8140138C(void) { void func_81401394(MtxF* arg0) { if (D_8140E624 < 0x16C) { - func_80010090((MtxF*)((u32)D_8140E620 + (D_8140E624 * sizeof(MtxF))), arg0); + func_80010090(&D_8140E620->unk_0000[D_8140E624], arg0); - gSPMatrix(gDisplayListHead++, ((u32)D_8140E620 + (D_8140E624 * sizeof(MtxF))) & 0x1FFFFFFF, + gSPMatrix(gDisplayListHead++, (u32)&D_8140E620->unk_0000[D_8140E624] & 0x1FFFFFFF, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); D_8140E624++; diff --git a/src/fragments/62/fragment62.h b/src/fragments/62/fragment62.h index 81d0274..5dbb26f 100644 --- a/src/fragments/62/fragment62.h +++ b/src/fragments/62/fragment62.h @@ -401,6 +401,83 @@ typedef struct arg1_func_8434E21C { /* 0x0A */ s16 unk_0A; } arg1_func_8434E21C; // size >= 0xC +typedef struct unk_D_843925E0_430 { + /* 0x00 */ f32 unk_00; + /* 0x04 */ f32 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ s16 unk_0C; + /* 0x0E */ s16 unk_0E; + /* 0x10 */ Color_RGBA8 unk_10; + /* 0x14 */ f32 unk_14; + /* 0x18 */ f32 unk_18; +} unk_D_843925E0_430; // size = 0x1C + +typedef struct unk_D_843925E0 { + /* 0x000 */ s32 unk_000; + /* 0x004 */ f32 unk_004; + /* 0x008 */ f32 unk_008; + /* 0x00C */ f32 unk_00C; + /* 0x010 */ f32 unk_010; + /* 0x014 */ f32 unk_014; + /* 0x018 */ s16 unk_018; + /* 0x01A */ s16 unk_01A; + /* 0x01C */ s16 unk_01C; + /* 0x01E */ s16 unk_01E; + /* 0x020 */ f32 unk_020; + /* 0x024 */ s32 unk_024; + /* 0x028 */ s32 unk_028; + /* 0x02C */ s32 unk_02C; + /* 0x030 */ s32 unk_030; + /* 0x034 */ s32 unk_034; + /* 0x038 */ s32 unk_038; + /* 0x03C */ s32 unk_03C; + /* 0x040 */ s32 unk_040; + /* 0x044 */ s32 unk_044; + /* 0x048 */ char unk048[0x8]; + /* 0x050 */ Vtx unk_050[31 * 2]; + /* 0x430 */ unk_D_843925E0_430 unk_430[31 * 2]; +} unk_D_843925E0; // size = 0xAF8 + +typedef struct unk_D_843975E8 { + /* 0x00 */ f32 unk_00; + /* 0x04 */ f32 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ f32 unk_0C; + /* 0x10 */ f32 unk_10; + /* 0x14 */ f32 unk_14; + /* 0x18 */ f32 unk_18; + /* 0x1C */ f32 unk_1C; + /* 0x20 */ f32 unk_20; + /* 0x24 */ char unk24[0x4]; +} unk_D_843975E8; // size = 0x28 + +typedef struct unk_D_84398F50_048 { + /* 0x00 */ f32 unk_00; + /* 0x04 */ u8 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ f32 unk_0C; + /* 0x10 */ Vec3f unk_10; + /* 0x1C */ Vec3f unk_1C; + /* 0x28 */ char unk28[0x20]; +} unk_D_84398F50_048; // size = 0x48 + +typedef struct unk_D_84398F50 { + /* 0x000 */ s16 unk_000; + /* 0x002 */ s16 unk_002; + /* 0x004 */ s16 unk_004; + /* 0x006 */ s16 unk_006; + /* 0x008 */ s16 unk_008; + /* 0x00A */ Color_RGBA8 unk_00A; + /* 0x00E */ Color_RGB8 unk_00E; + /* 0x014 */ f32 unk_014; + /* 0x018 */ f32 unk_018; + /* 0x01C */ Vtx* unk_01C; + /* 0x020 */ char unk020[0x18]; + /* 0x038 */ s32 unk_038[3]; + /* 0x044 */ char unk044[0x4]; + /* 0x048 */ unk_D_84398F50_048 unk_048[20]; +} unk_D_84398F50; // size = 0x5E8 + extern unk_D_8438E7B0* D_84384570[]; extern unk_D_8438FF70* D_84384578[]; extern unk_D_8438FF70* D_84384580[]; @@ -1313,7 +1390,7 @@ void func_8432CE3C(unk_D_86002F58_004_000* arg0, s16 arg1); void func_8432CE78(unk_D_86002F58_004_000* arg0, s16 arg1); s32 func_8432CED4(unk_D_86002F58_004_000* arg0); void func_8432CEF0(UNUSED unk_D_86002F34_00C* arg0); -void func_8432CF74(UNUSED s32 arg0); +void func_8432CF74(UNUSED unk_D_86002F34_00C* arg0); void func_8432CFCC(unk_D_86002F34_00C* arg0); s32 func_8432D0D8(s32 arg0, unk_D_86002F34_00C* arg1); void func_8432D150(void); @@ -1416,9 +1493,9 @@ void func_8432FC40(unk_D_84390010* arg0, Vec3f* arg1); f32 func_8432FC60(unk_D_84390010* arg0); f32 func_8432FC94(unk_D_84390010* arg0); void func_8432FCB4(unk_D_84390010* arg0); -void func_8432FCD4(void); +f32 func_8432FCD4(void); void func_8432FCF8(void); -void func_8432FD1C(void); +f32 func_8432FD1C(void); void func_8432FD40(void); unk_D_86002F34_00C* func_8432FD64(void); unk_D_8140E720* func_8432FD70(Vec3f arg0, u8 arg1); @@ -2220,9 +2297,26 @@ void func_84358EDC(void); void func_84358F6C(void); +void func_84358FF0(void); +void func_84358FF8(void); void func_84359000(u8, u8, u8, u8); void func_843590E0(unk_D_86002F34_00C*); + + void func_843592E0(void); +void func_843592E8(void); +void func_843592F0(void); +void func_843592F8(void); +void func_84359300(void); +void func_84359308(void); +void func_84359310(void); +void func_84359318(void); +void func_84359320(void); +void func_84359328(void); +void func_84359330(UNUSED s32 arg0); +void func_84359338(UNUSED s32 arg0); +void func_84359340(void); +void func_84359348(void); void func_84359380(void); void func_843593A0(void); void func_843593A8(void); @@ -2230,6 +2324,15 @@ s32 func_843593B0(void); s32 func_843593B8(void); void func_843593C0(void); void func_843593C8(void); +void func_843593D0(Vec3f* arg0); +void func_843593F0(Vec3f* arg0); +void func_84359410(Vec3f* arg0); +void func_84359430(Vec3f* arg0); +f32 func_84359450(void); +f32 func_84359470(void); +void func_84359490(f32* arg0, f32* arg1, f32* arg2, f32* arg3, f32* arg4, f32* arg5); +void func_84359564(f32* arg0, f32* arg1, f32* arg2, f32* arg3, f32* arg4, f32* arg5); +void func_84359650(void); void func_84359684(void); s32 func_843596DC(void); void func_843596FC(void); @@ -2248,15 +2351,18 @@ void func_84359A8C(void); void func_84359AE0(void); s32 func_84359AE8(void); void func_84359AF0(void); +void func_84359AF8(void); void func_84359C84(void); s32 func_84359CB8(void); void func_84359D28(void); void func_84359D7C(void); s32 func_84359DF4(void); void func_84359E14(void); +void func_84359E68(void); void func_84359FE0(void); s32 func_8435A014(void); void func_8435A084(void); +void func_8435A0D8(void); void func_8435A298(void); s32 func_8435A2CC(void); void func_8435A33C(void); @@ -2266,6 +2372,7 @@ void func_8435A42C(void); void func_8435A480(void); s32 func_8435A4F8(void); void func_8435A518(void); +void func_8435A56C(void); void func_8435A6F8(void); s32 func_8435A72C(void); void func_8435A79C(void); @@ -2293,31 +2400,119 @@ void func_8435B260(void); void func_8435B2C8(void); s32 func_8435B408(void); void func_8435B454(void); +void func_8435B4A8(void); void func_8435B580(void); s32 func_8435B5B4(void); void func_8435B600(void); +void func_8435B654(void); void func_8435B8E8(void); s32 func_8435B918(void); void func_8435B938(void); +void func_8435B98C(void); void func_8435BB64(void); s32 func_8435BB98(void); void func_8435BBEC(void); +void func_8435BC40(void); void func_8435BED8(void); s32 func_8435BF08(void); void func_8435BF28(void); +void func_8435BF7C(void); void func_8435C220(void); s32 func_8435C250(void); void func_8435C270(void); +void func_8435C2C4(void); void func_8435C448(void); s32 func_8435C478(void); void func_8435C498(void); +void func_8435C4EC(void); +void func_8435C790(void); void func_8435C96C(void); s32 func_8435C9AC(void); void func_8435CA08(void); -f32 func_8435E158(f32, f32, f32*); +void func_8435CA70(void); +void func_8435CAA8(unk_D_843925E0* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8, s32 arg9); +void func_8435CAE8(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s32 arg5); +void func_8435D1E8(unk_D_843925E0* arg0); +s32 func_8435D24C(unk_D_843925E0* arg0); +s32 func_8435D8C0(void); +Gfx* func_8435D97C(Gfx* arg0, unk_D_843925E0* arg1); +Gfx* func_8435DB14(Gfx* arg0); +void func_8435DED0(unk_D_843975E8* arg0, f32 arg1); +f32 func_8435E158(f32 arg0, f32 arg1, f32* arg2); +s32 func_8435E530(void); +void func_8435EB9C(s32 arg0, s16 arg1, s16 arg2); +s32 func_8435EDF8(void); +Gfx* func_8435EE78(Gfx* arg0); + + +void func_8435FB90(f32 arg0, f32 arg1, f32 arg2, f32 arg3, u8 arg4, u8 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9); f32 func_8435FCD0(void); +s32 func_8435FD50(void); +Gfx* func_8436032C(Gfx* arg0); +void func_843605C0(void); +void func_843606D0(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, s16 arg6, u8 arg7, u8 arg8, u8 arg9, u8 argA, f32 argB, f32 argC, f32 argD, s16 argE); +void func_8436090C(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, s16 arg6, u8 arg7, u8 arg8, u8 arg9, u8 argA, f32 argB, f32 argC, f32 argD, s16 argE); +void func_84360B10(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, s16 arg6, u8 arg7, u8 arg8, u8 arg9, u8 argA, u8 argB, u8 argC, u8 argD, f32 argE, f32 argF, f32 arg10, s16 arg11); +void func_84360EFC(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, s16 arg6, u8 arg7, u8 arg8, u8 arg9, u8 argA, u8 argB, u8 argC, u8 argD, f32 argE, f32 argF, f32 arg10, s16 arg11); +void func_843612F8(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, s16 arg6, u8 arg7, u8 arg8, u8 arg9, u8 argA, f32 argB, f32 argC, f32 argD, s16 argE); +void func_843616B0(f32 arg0, UNUSED Vec3f* arg1, Vec3f* arg2, f32 arg3, UNUSED f32 arg4, UNUSED f32 arg5, UNUSED f32 arg6); +void func_84361744(unk_D_84398F50* arg0); +s32 func_84361FB0(void); +Gfx* func_84362084(Gfx* arg0); + + +void func_843638E0(s32); +s32 func_843640A4(void); +Gfx* func_84364428(Gfx*); +void func_84364A18(s32); +s32 func_84365288(void); +Gfx* func_84365558(Gfx*); +void func_84365A10(s32); +s32 func_843661D0(void); +Gfx* func_84366560(Gfx*); +void func_84366A10(void); +void func_84366B38(f32, f32, f32, f32, f32, f32, s32, s32, s32, s32, f32, s32); +s32 func_84367014(void); +Gfx* func_843670C8(Gfx*); +void func_84367CB0(void); +void func_84367E2C(f32, f32, f32, f32, f32, f32, s32, s32, s32, s32, f32, f32, f32, s32); +s32 func_843684CC(void); +Gfx* func_84368560(Gfx*); +void func_84368AB0(void); +void func_84368C04(f32, f32, f32, f32, f32, f32, s32, s32, s32, s32, f32, f32, f32, s32); +s32 func_843692E8(void); +Gfx* func_84369388(Gfx*); +void func_843697F0(void); +void func_84369950(f32, f32, f32, f32, f32, f32, s32, s32, s32, s32, f32, f32, f32, s32); +s32 func_84369F0C(void); +Gfx* func_84369FA0(Gfx*); +void func_8436A410(void); +void func_8436A540(f32, f32, f32, f32, f32, f32, s32, s32, s32, s32, f32, f32, f32, s32); +void func_8436ABA8(void); +Gfx* func_8436AC44(Gfx*); +void func_8436B140(void); +void func_8436B270(f32, f32, f32, f32, f32, f32, s32, s32, s32, s32, f32, f32, f32, s32); +void func_8436B8D8(void); +Gfx* func_8436B974(Gfx*); +void func_8436BE70(void); +void func_8436BFB8(f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, f32, s32, + s32, s32, s32, s32, s32, s32, s32, s32, s32, s32, s32*, s32*, + s32, s32, s32, s32, s32, s32, s32, s32, s32, s32, s32, s32, s32); +s32 func_8436C62C(void); +void func_8435CAE8(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s32 arg5); +Gfx* func_8436CE34(Gfx*); +void func_8436D370(void); +void func_8436D4A4(s32, f32, f32, f32, f32, f32, f32, s32, s32, s32, s32, s32, s32, s32, s32, s32, + f32, f32, f32, s32, s32, s32, s32, s32, s32, s32, s32, s32, s32, s32, s32*, s32*); +s32 func_8436DE60(void); +Gfx* func_8436E3BC(Gfx*); +void func_8436E920(void); +s16 func_8436E944(void); +void func_8436EA0C(s16, f32, f32, f32, s32, f32); +void func_8436EB54(s16); +Gfx* func_8436EDE8(s16, Gfx*); void func_8436EEF0(s32, s32); s32 func_8436EF48(void); void func_8436EF54(void); diff --git a/src/fragments/62/fragment62_315D50.c b/src/fragments/62/fragment62_315D50.c index 0e659f4..0c5f08d 100644 --- a/src/fragments/62/fragment62_315D50.c +++ b/src/fragments/62/fragment62_315D50.c @@ -84,11 +84,7 @@ static unk_D_86002F58_004_000 D_84391A90[4]; static s32 D_84392030[4]; static unk_D_84392040 D_84392040; f32 D_84392058[26]; -/* -unk_D_86002F58_004_000_040_004* D_843920C0[256]; -static s16 D_843924C0[0x10]; -static arg1_func_80019420* D_843924E0[40]; -*/ + static s32 D_84385BB0[] = { 0, 0, 0, 0 }; u32 D_84385BC0[] = { @@ -4187,137 +4183,6 @@ static u8* D_84386E08[][5] = { }, }; -/* -static func_D_84390320 D_84388280[] = { - func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_8435BED8, func_84359684, func_843593A0, - func_84359FE0, func_843593A0, func_843593A0, func_843593A0, func_8435A7F0, func_843593A0, func_843593A0, - func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_84359C84, func_843593A0, - func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_8435B8E8, func_843593A0, - func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_8435A298, func_843593A0, - func_843593A0, func_84359A00, func_843593A0, func_843593A0, func_8435C96C, func_843593A0, func_843593A0, - func_8435ABF0, func_8435AC94, func_8435AD38, func_8435ADDC, func_843593A0, func_8435BB64, func_843593A0, - func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_84359910, func_843593A0, - func_843593A0, func_8435A9F0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_8435B0B0, - func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_8435B2C8, func_843593A0, func_843593A0, - func_8435C448, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, - func_8435C220, func_8435B580, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, - func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, - func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, - func_8435A6F8, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, - func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, - func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, - func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, - func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, - func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, - func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, - func_843593A0, func_843593A0, func_843593A0, -}; - -static func_D_84390320 D_843884D8[] = { - func_843593A8, func_84359750, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, - func_843593A8, func_843593A8, func_84359D7C, func_843593A8, func_843593A8, func_843593A8, func_843593A8, - func_843593A8, func_843593A8, func_84359AE0, func_843593A8, func_843593A8, func_84359820, func_843593A8, - func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, - func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_8435A390, func_8435A480, func_843593A8, - func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, - func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_84359684, - func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, - func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, - func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, - func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, - func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, - func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, - func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, - func_843593A8, func_843593A8, -}; - -static func_D_84390300 D_84388668[] = { - func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_8435BF08, func_843596DC, func_843593B0, - func_8435A014, func_843593B0, func_843593B0, func_843593B0, func_8435A81C, func_843593B0, func_843593B0, - func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_84359CB8, func_843593B0, - func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_8435B918, func_843593B0, - func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_8435A2CC, func_843593B0, - func_843593B0, func_84359A6C, func_843593B0, func_843593B0, func_8435C9AC, func_843593B0, func_843593B0, - func_8435AC20, func_8435ACC4, func_8435AD68, func_8435AE08, func_843593B0, func_8435BB98, func_843593B0, - func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_8435998C, func_843593B0, - func_843593B0, func_8435AA1C, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_8435B0DC, - func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_8435B408, func_843593B0, func_843593B0, - func_8435C478, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, - func_8435C250, func_8435B5B4, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, - func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, - func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, - func_8435A72C, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, - func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, - func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, - func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, - func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, - func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, - func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, - func_843593B0, func_843593B0, func_843593B0, -}; - -static func_D_84390300 D_843888C0[] = { - func_843593B8, func_843597AC, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, - func_843593B8, func_843593B8, func_84359DF4, func_843593B8, func_843593B8, func_843593B8, func_843593B8, - func_843593B8, func_843593B8, func_84359AE8, func_843593B8, func_843593B8, func_8435989C, func_843593B8, - func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, - func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_8435A40C, func_8435A4F8, func_843593B8, - func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, - func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843596DC, - func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, - func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, - func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, - func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, - func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, - func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, - func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, - func_843593B8, func_843593B8, -}; - -static func_D_84390320 D_84388A50[] = { - func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_8435BF28, func_843596FC, func_843593C0, - func_8435A084, func_843593C0, func_843593C0, func_843593C0, func_8435A99C, func_843593C0, func_843593C0, - func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_84359D28, func_843593C0, - func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_8435B938, func_843593C0, - func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_8435A33C, func_843593C0, - func_843593C0, func_84359A8C, func_843593C0, func_843593C0, func_8435CA08, func_843593C0, func_843593C0, - func_8435AC40, func_8435ACE4, func_8435AD88, func_8435B048, func_843593C0, func_8435BBEC, func_843593C0, - func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843599AC, func_843593C0, - func_843593C0, func_8435AB9C, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_8435B260, - func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_8435B454, func_843593C0, func_843593C0, - func_8435C498, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, - func_8435C270, func_8435B600, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, - func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, - func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, - func_8435A79C, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, - func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, - func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, - func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, - func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, - func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, - func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, - func_843593C0, func_843593C0, func_843593C0, -}; - -static func_D_84390320 D_84388CA8[] = { - func_843593C8, func_843597CC, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, - func_843593C8, func_843593C8, func_84359E14, func_843593C8, func_843593C8, func_843593C8, func_843593C8, - func_843593C8, func_843593C8, func_84359AF0, func_843593C8, func_843593C8, func_843598BC, func_843593C8, - func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, - func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_8435A42C, func_8435A518, func_843593C8, - func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, - func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843596FC, - func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, - func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, - func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, - func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, - func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, - func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, - func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, - func_843593C8, func_843593C8, -}; -*/ - void func_8432B490(void) { func_80048B90(1); } @@ -5180,7 +5045,7 @@ void func_8432CEF0(UNUSED unk_D_86002F34_00C* arg0) { } } -void func_8432CF74(UNUSED s32 arg0) { +void func_8432CF74(UNUSED unk_D_86002F34_00C* arg0) { s32 i; for (i = 0; i < 8; i++) { diff --git a/src/fragments/62/fragment62_317E70.c b/src/fragments/62/fragment62_317E70.c index 6ef5f25..f3bed22 100644 --- a/src/fragments/62/fragment62_317E70.c +++ b/src/fragments/62/fragment62_317E70.c @@ -889,16 +889,16 @@ void func_8432FCB4(unk_D_84390010* arg0) { func_8432FC60(arg0); } -void func_8432FCD4(void) { - func_8432FC94(D_843902EC); +f32 func_8432FCD4(void) { + return func_8432FC94(D_843902EC); } void func_8432FCF8(void) { func_8432FCB4(D_843902EC); } -void func_8432FD1C(void) { - func_8432FC94(D_843902F0); +f32 func_8432FD1C(void) { + return func_8432FC94(D_843902F0); } void func_8432FD40(void) { diff --git a/src/fragments/62/fragment62_3438B0.c b/src/fragments/62/fragment62_3438B0.c index a49ab0f..bf3b51e 100644 --- a/src/fragments/62/fragment62_3438B0.c +++ b/src/fragments/62/fragment62_3438B0.c @@ -1,7 +1,43 @@ -#include "global.h" +#include "fragment62.h" +#include "src/6A40.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3438B0/func_84358FF0.s") +void func_84358FF0(void) { +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3438B0/func_84359000.s") +void func_84358FF8(void) { +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3438B0/func_843590E0.s") +void func_84359000(u8 arg0, u8 arg1, u8 arg2, u8 arg3) { + gSPDisplayList(gDisplayListHead++, D_8140DDF8); + + func_814059C8(arg0, arg1, arg2, arg3); + + gSPTextureRectangle(gDisplayListHead++, 0, 0, 0x04FC, 0x03BC, G_TX_RENDERTILE, 0, 0, 0x1000, 0x0400); + gSPDisplayList(gDisplayListHead++, D_8140DDD8); +} + +void func_843590E0(unk_D_86002F34_00C* arg0) { + func_8432CF74(arg0); + D_8140E620 = func_80005F5C(sizeof(unk_D_8140E620)); + D_8140E624 = 0; + D_843902A4 += 1; + + gSPDisplayList(gDisplayListHead++, D_8140DB30); + + func_814059C8(D_84390382, D_84390384, D_84390386, D_84390388); + func_81405A90(D_84390392, D_84390394, D_84390396, D_84390398); + func_81405A20(D_8439038A, D_8439038C, D_8439038E, D_84390390); + func_81405B00(D_8439039A, D_8439039C, D_8439039E, D_843903A0); + func_84300184(D_8439037A, D_8439037C, D_8439037E); + func_8140C204(arg0); + guOrtho(&D_8140E620->unk_5B80, 0.0f, 320.0f, 240.0f, 0.0f, -2.0f, 2.0f, 1.0f); + + gSPMatrix(gDisplayListHead++, (u32)&D_8140E620->unk_5B80 & 0x1FFFFFFF, + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + gSPDisplayList(gDisplayListHead++, D_8140DD78); + + func_81402410(); + func_8140C2D8(arg0); + + gSPDisplayList(gDisplayListHead++, D_8140DAE0); +} diff --git a/src/fragments/62/fragment62_343BA0.c b/src/fragments/62/fragment62_343BA0.c index 7c232d2..dbc2340 100644 --- a/src/fragments/62/fragment62_343BA0.c +++ b/src/fragments/62/fragment62_343BA0.c @@ -1,291 +1,1161 @@ -#include "global.h" +#include "fragment62.h" +#include "src/30640.h" +#include "src/6A40.h" +#include "include/math.h" +#include "src/math_util.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843592E0.s") +u8* D_843920C0[256]; +s16 D_843924C0[0x10]; +arg1_func_80019420* D_843924E0[40]; +static s16 D_84392580; +static s16 D_84392582; +static Mtx D_84392588; +static s16 D_843925C8; +static s16 D_843925CA; +static s16 D_843925CC; +static s16 D_843925CE; +static s16 D_843925D0; +static s16 D_843925D2; +static s16 D_843925D4; +static s16 D_843925D6; +static s16 D_843925D8; +static s16 D_843925DA; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359330.s") +static const char D_8438D3D0[] = "calc_vector_ATtoDM() normal error!!!\n"; +static const char D_8438D3F8[] = "calc_vector_ATtoDM2() normal error!!!\n"; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359338.s") +void func_843592E0(void) { +} + +void func_843592E8(void) { +} + +void func_843592F0(void) { +} + +void func_843592F8(void) { +} + +void func_84359300(void) { +} + +void func_84359308(void) { +} + +void func_84359310(void) { +} + +void func_84359318(void) { +} + +void func_84359320(void) { +} + +void func_84359328(void) { +} + +void func_84359330(UNUSED s32 arg0) { +} + +void func_84359338(UNUSED s32 arg0) { +} void func_84359340(void) { } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359348.s") +void func_84359348(void) { + func_84359000(D_8439037A, D_8439037C, D_8439037E, 0xFF); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359380.s") +void func_84359380(void) { + func_8436E920(); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843593B0.s") +void func_843593A0(void) { +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843593B8.s") +void func_843593A8(void) { +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843593C0.s") +s32 func_843593B0(void) { + return -1; +} + +s32 func_843593B8(void) { + return -1; +} + +void func_843593C0(void) { +} void func_843593C8(void) { } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843593D0.s") +void func_843593D0(Vec3f* arg0) { + func_8432FB90(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843593F0.s") +void func_843593F0(Vec3f* arg0) { + func_8432FBBC(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359410.s") +void func_84359410(Vec3f* arg0) { + func_8432FB90(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359430.s") +void func_84359430(Vec3f* arg0) { + func_8432FB64(arg0); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359450.s") +f32 func_84359450(void) { + return func_8432FD1C(); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359470.s") +f32 func_84359470(void) { + return func_8432FCD4(); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359490.s") +void func_84359490(f32* arg0, f32* arg1, f32* arg2, f32* arg3, f32* arg4, f32* arg5) { + Vec3f sp4C; + Vec3f sp40; + f32 sp3C; + f32 sp38; + f32 sp34; + UNUSED s32 pad[3]; + f32 sp24; + f32 sp20; + f32 sp1C; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359564.s") + func_843593F0(&sp4C); + func_84359410(&sp40); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359650.s") + sp3C = sp4C.x; + sp38 = sp4C.y; + sp34 = sp4C.z; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359684.s") + sp24 = sp40.x - sp4C.x; + sp20 = sp40.y - sp4C.y; + sp1C = sp40.z - sp4C.z; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843596DC.s") + if (sp24 == 0.0f || sp20 == 0.0f || sp1C == 0.0f) {} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843596FC.s") + func_80031B04(&sp24, &sp20, &sp1C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359750.s") + *arg0 = sp3C; + *arg1 = sp38; + *arg2 = sp34; + *arg3 = sp24; + *arg4 = sp20; + *arg5 = sp1C; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843597AC.s") +void func_84359564(f32* arg0, f32* arg1, f32* arg2, f32* arg3, f32* arg4, f32* arg5) { + Vec3f sp4C; + Vec3f sp40; + f32 sp3C; + f32 sp38; + f32 sp34; + UNUSED s32 pad[2]; + f32 tmp; + f32 sp24; + f32 sp20; + f32 sp1C; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843597CC.s") + func_843593F0(&sp4C); + func_84359410(&sp40); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359820.s") + sp3C = sp4C.x; + sp38 = sp4C.y; + sp34 = sp4C.z; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435989C.s") + tmp = sp40.y; + if (tmp < 0.0f) { + tmp = 0.0f; + } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843598BC.s") + sp24 = sp40.x - sp4C.x; + sp20 = tmp - sp4C.y; + sp1C = sp40.z - sp4C.z; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359910.s") + if (sp24 == 0.0f || sp20 == 0.0f || sp1C == 0.0f) {} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435998C.s") + func_80031B04(&sp24, &sp20, &sp1C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843599AC.s") + *arg0 = sp3C; + *arg1 = sp38; + *arg2 = sp34; + *arg3 = sp24; + *arg4 = sp20; + *arg5 = sp1C; +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359A00.s") +void func_84359650(void) { + guRotateRPY(&D_84392588, 0.0f, 0.0f, 0.0f); +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359A6C.s") +void func_84359684(void) { + Vec3f sp24; + f32 sp20; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359A8C.s") + func_84359650(); + func_84359430(&sp24); + sp20 = func_84359470(); + func_8435CA70(); + func_8435CAE8(sp24.x, sp24.y, sp24.z, 40.0f, sp20, 0); +} + +s32 func_843596DC(void) { + return func_8435D8C0(); +} + +void func_843596FC(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8435DB14(gDisplayListHead); +} + +void func_84359750(void) { + Vec3f sp24; + f32 sp20; + + func_84359650(); + func_84359430(&sp24); + sp20 = func_84359450(); + func_8435CA70(); + func_8435CAE8(sp24.x, sp24.y, sp24.z, 40.0f, sp20, 1); +} + +s32 func_843597AC(void) { + return func_8435D8C0(); +} + +void func_843597CC(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8435DB14(gDisplayListHead); +} + +void func_84359820(void) { + Vec3f sp24; + f32 sp20; + + func_84359650(); + func_84359430(&sp24); + sp20 = func_84359450(); + func_8435CA70(); + func_8435CAE8(sp24.x, sp24.y, sp24.z, 40.0f, sp20, 0); + func_8435CAE8(sp24.x, sp24.y, sp24.z, 38.0f, sp20, 1); +} + +s32 func_8435989C(void) { + return func_8435D8C0(); +} + +void func_843598BC(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8435DB14(gDisplayListHead); +} + +void func_84359910(void) { + Vec3f sp24; + f32 sp20; + + func_84359650(); + func_84359430(&sp24); + sp20 = func_84359470(); + func_8435CA70(); + func_8435CAE8(sp24.x, sp24.y, sp24.z, 40.0f, sp20, 0); + func_8435CAE8(sp24.x, sp24.y, sp24.z, 38.0f, sp20, 1); +} + +s32 func_8435998C(void) { + return func_8435D8C0(); +} + +void func_843599AC(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8435DB14(gDisplayListHead); +} + +void func_84359A00(void) { + Vec3f sp1C; + + func_843593F0(&sp1C); + func_84359650(); + + if (sp1C.x < 0.0) { + func_8435EB9C(1, 0, 0x4650); + } else { + func_8435EB9C(-1, 0, 0x4650); + } +} + +s32 func_84359A6C(void) { + return func_8435EDF8(); +} + +void func_84359A8C(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8435EE78(gDisplayListHead); +} void func_84359AE0(void) { } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359AE8.s") +s32 func_84359AE8(void) { + return -1; +} void func_84359AF0(void) { } -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359AF8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359C84.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359CB8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359D28.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359D7C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359DF4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359E14.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359E68.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84359FE0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A014.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A084.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A0D8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A298.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A2CC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A33C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A390.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A40C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A42C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A480.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A4F8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A518.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A56C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A6F8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A72C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A79C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A7F0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A81C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A99C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435A9F0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435AA1C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435AB9C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435ABF0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435AC20.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435AC40.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435AC94.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435ACC4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435ACE4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435AD38.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435AD68.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435AD88.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435ADDC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435AE08.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B048.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B0B0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B0DC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B260.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B2C8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B408.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B454.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B4A8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B580.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B5B4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B600.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B654.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B8E8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B918.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B938.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435B98C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435BB64.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435BB98.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435BBEC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435BC40.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435BED8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435BF08.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435BF28.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435BF7C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435C220.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435C250.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435C270.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435C2C4.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435C448.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435C478.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435C498.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435C4EC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435C790.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435C96C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435C9AC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435CA08.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435CA70.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435CAA8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435CAE8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435D1E8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435D24C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435D8C0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435D97C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435DB14.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435DED0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435E158.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435E530.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435EB9C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435EDF8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435EE78.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435FB90.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435FCD0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8435FD50.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8436032C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843605C0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843606D0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_8436090C.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84360B10.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84360EFC.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843612F8.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_843616B0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84361744.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84361FB0.s") - -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_343BA0/func_84362084.s") +void func_84359AF8(void) { + f32 sp74; + f32 sp70; + f32 sp6C; + f32 sp68; + f32 sp64; + f32 sp60; + f32 sp5C; + UNUSED s32 pad; + s32 sp54; + + func_84359490(&sp74, &sp70, &sp6C, &sp68, &sp64, &sp60); + sp68 *= 8.0f; + sp64 *= 4.0f; + sp60 = 0.0f; + sp64 += 6.0f; + sp5C = func_84359470(); + sp54 = guRandom(); + func_84360EFC(sp74, sp70, sp6C, sp68, (((sp54 % 4) * 0.01f) + sp64) - 0.02f, + (sp60 - ((guRandom() % 5) * 0.3f)) + 0.6f, 3, 0x64, 0xC8, 0xFF, 0xC8, 0, 0x64, 0xC8, 0.1f, sp5C, + 4.0f * sp5C, 0x3C); +} + +void func_84359C84(void) { + D_843925CE = 0; + func_84359650(); + func_843605C0(); + func_84359AF8(); +} + +s32 func_84359CB8(void) { + D_843925CE++; + if (D_843925CE >= 0xB5) { + return -1; + } + + if ((D_843925CE < 0x78) && ((D_843925CE % 7) == 0)) { + func_84359AF8(); + } + return func_84361FB0(); +} + +void func_84359D28(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_84362084(gDisplayListHead); +} + +void func_84359D7C(void) { + Vec3f sp34; + f32 sp30; + + func_84359650(); + func_84359410(&sp34); + sp30 = func_84359450(); + func_84359650(); + func_8435FB90(sp34.x, sp34.y, sp34.z, sp30, 0x64, 0xC8, 0xFF, 0, 0x64, 0xC8); +} + +s32 func_84359DF4(void) { + return func_8435FD50(); +} + +void func_84359E14(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8436032C(gDisplayListHead); +} + +void func_84359E68(void) { + UNUSED s32 pad[3]; + f32 sp58; + f32 sp54; + f32 sp50; + f32 sp4C; + f32 sp48; + f32 sp44; + f32 sp40; + + sp40 = func_84359470(); + func_84359564(&sp58, &sp54, &sp50, &sp4C, &sp48, &sp44); + sp4C *= 20.0f; + sp48 *= 20.0f; + sp44 *= 20.0f; + sp58 += sp40 * (30.0f - (guRandom() % 60)); + sp54 += sp40 * (30.0f - (guRandom() % 60)); + sp50 += sp40 * (30.0f - (guRandom() % 60)); + func_84366B38(sp58, sp54, sp50, sp4C, sp48, sp44, 0xFF, 0xFF, 0, 0x3C, 0.3f, 0x1E); +} + +void func_84359FE0(void) { + D_843925D0 = 0; + func_84359650(); + func_84366A10(); + func_84359E68(); +} + +s32 func_8435A014(void) { + D_843925D0++; + if (D_843925D0 >= 0x709) { + return -1; + } + + if ((D_843925D0 < 0x6EA) && ((D_843925D0 % 3) == 0)) { + func_84359E68(); + } + + return func_84367014(); +} + +void func_8435A084(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_843670C8(gDisplayListHead); +} + +void func_8435A0D8(void) { + f32 sp74; + f32 sp70; + f32 sp6C; + f32 sp68; + f32 sp64; + f32 sp60; + f32 sp5C; + UNUSED s32 pad; + s32 sp54; + + func_84359490(&sp74, &sp70, &sp6C, &sp68, &sp64, &sp60); + sp68 *= 8.0f; + sp64 *= 4.0f; + sp60 = 0.0f; + sp64 += 6.0f; + sp5C = func_84359470(); + sp54 = guRandom(); + func_84360B10(sp74, sp70, sp6C, sp68, (((sp54 % 5) * 0.1f) + sp64) - 0.2f, + (sp60 - ((guRandom() % 5) * 0.3f)) + 0.6f, 3, 0xFF, 0xFF, 0xFF, 0x64, 0x64, 0x96, 0x96, 0.1f, sp5C, + 3.0f * sp5C, 0x3C); +} + +void func_8435A298(void) { + D_843925D2 = 0; + func_84359650(); + func_843605C0(); + func_8435A0D8(); +} + +s32 func_8435A2CC(void) { + D_843925D2++; + if (D_843925D2 >= 0xB5) { + return -1; + } + + if ((D_843925D2 < 0x78) && ((D_843925D2 % 7) == 0)) { + func_8435A0D8(); + } + + return func_84361FB0(); +} + +void func_8435A33C(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_84362084(gDisplayListHead); +} + +void func_8435A390(void) { + Vec3f sp34; + f32 sp30; + + func_84359650(); + func_84359430(&sp34); + sp30 = func_84359450(); + func_84359650(); + func_8435FB90(sp34.x, sp34.y, sp34.z, sp30, 0xFF, 0xFF, 0xFF, 0x64, 0x96, 0x96); +} + +s32 func_8435A40C(void) { + return func_8435FD50(); +} + +void func_8435A42C(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8436032C(gDisplayListHead); +} + +void func_8435A480(void) { + Vec3f sp34; + f32 sp30; + + func_84359650(); + func_84359430(&sp34); + sp30 = func_84359450(); + func_84359650(); + func_8435FB90(sp34.x, sp34.y, sp34.z, sp30, 0xFF, 0xFF, 0x64, 0x96, 0x96, 0); +} + +s32 func_8435A4F8(void) { + return func_8435FD50(); +} + +void func_8435A518(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8436032C(gDisplayListHead); +} + +void func_8435A56C(void) { + f32 sp74; + f32 sp70; + f32 sp6C; + f32 sp68; + f32 sp64; + f32 sp60; + f32 sp5C; + UNUSED s32 pad; + s32 sp54; + + func_84359490(&sp74, &sp70, &sp6C, &sp68, &sp64, &sp60); + sp68 *= 8.0f; + sp64 *= 4.0f; + sp60 = 0.0f; + sp64 += 6.0f; + sp5C = func_84359470(); + sp54 = guRandom(); + func_84360EFC(sp74, sp70, sp6C, sp68, (((sp54 % 4) * 0.01f) + sp64) - 0.02f, + (sp60 - ((guRandom() % 5) * 0.3f)) + 0.6f, 3, 0xFF, 0xFF, 0x64, 0xFF, 0x96, 0x96, 0, 0.1f, sp5C, + 4.0f * sp5C, 0x3C); +} + +void func_8435A6F8(void) { + D_843925D6 = 0; + func_84359650(); + func_843605C0(); + func_8435A56C(); +} + +s32 func_8435A72C(void) { + D_843925D6++; + if (D_843925D6 >= 0xB5) { + return -1; + } + + if ((D_843925D6 < 0x78) && ((D_843925D6 % 7) == 0)) { + func_8435A56C(); + } + + return func_84361FB0(); +} + +void func_8435A79C(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_84362084(gDisplayListHead); +} + +void func_8435A7F0(void) { + D_843925D8 = 0; + func_84359650(); + func_8436B140(); +} + +s32 func_8435A81C(void) { + UNUSED s32 pad[1]; + Vec3f sp60; + f32 sp5C; + f32 sp58; + f32 sp54; + UNUSED s32 pad2[2]; + f32 var_fv0; + f32 sp44; + + D_843925D8++; + if (!(D_843925D8 & 1)) { + sp44 = func_84359470(); + func_843593F0(&sp60); + sp5C = (((guRandom() % 50) - 0x19) * sp44) + sp60.x; + sp58 = (((guRandom() % 60) - 0x1E) * sp44) + sp60.y; + sp54 = (((guRandom() % 50) - 0x19) * sp44) + sp60.z; + var_fv0 = 10.0f; + if (sp5C > 0.0) { + var_fv0 = -var_fv0; + } + func_8436B270(sp5C, sp58, sp54, var_fv0, 0.0f, 0.0f, 0xFF, 0xFF, 0xFF, 0x64, 0.3f, 1.0f, 4.0f, 0x1E); + } + func_8436B8D8(); + return 0; +} + +void func_8435A99C(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8436B974(gDisplayListHead); +} + +void func_8435A9F0(void) { + D_843925DA = 0; + func_84359650(); + func_8436A410(); +} + +s32 func_8435AA1C(void) { + UNUSED s32 pad[1]; + Vec3f sp60; + f32 sp5C; + f32 sp58; + f32 sp54; + UNUSED s32 pad2[2]; + f32 var_fv0; + f32 sp44; + + D_843925DA++; + if (!(D_843925DA & 1)) { + sp44 = func_84359470(); + func_843593F0(&sp60); + sp5C = (((guRandom() % 50) - 0x19) * sp44) + sp60.x; + sp58 = (((guRandom() % 60) - 0x1E) * sp44) + sp60.y; + sp54 = (((guRandom() % 50) - 0x19) * sp44) + sp60.z; + var_fv0 = 10.0f; + if (sp5C > 0.0) { + var_fv0 = -var_fv0; + } + func_8436A540(sp5C, sp58, sp54, var_fv0, 0.0f, 0.0f, 0xFF, 0xFF, 0xFF, 0x64, 0.3f, 1.0f, 4.0f, 0x1E); + } + func_8436ABA8(); + return 0; +} + +void func_8435AB9C(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8436AC44(gDisplayListHead); +} + +void func_8435ABF0(void) { + Vec3f sp1C; + + func_84359650(); + func_843593F0(&sp1C); + func_843638E0(0x708); +} + +s32 func_8435AC20(void) { + return func_843640A4(); +} + +void func_8435AC40(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_84364428(gDisplayListHead); +} + +void func_8435AC94(void) { + Vec3f sp1C; + + func_84359650(); + func_843593F0(&sp1C); + func_84364A18(0x708); +} + +s32 func_8435ACC4(void) { + return func_84365288(); +} + +void func_8435ACE4(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_84365558(gDisplayListHead); +} + +void func_8435AD38(void) { + Vec3f sp1C; + + func_84359650(); + func_843593F0(&sp1C); + func_84365A10(0x708); +} + +s32 func_8435AD68(void) { + return func_843661D0(); +} + +void func_8435AD88(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_84366560(gDisplayListHead); +} + +void func_8435ADDC(void) { + D_84392580 = 0; + func_84359650(); + func_84367CB0(); +} + +s32 func_8435AE08(void) { + s32 var_v1; + Vec3f sp68; + f32 sp64; + f32 sp60; + f32 sp5C; + f32 sp58; + f32 sp54; + f32 sp50; + f32 sp4C; + + D_84392580++; + if (D_84392580 >= 0x32) { + return -1; + } + + if (D_84392580 < 4) { + func_84359430(&sp68); + sp64 = sp68.x; + sp60 = sp68.y; + sp5C = sp68.z; + sp58 = 1.0f; + sp4C = (((D_84392580 % 3) * M_PI_F) / 3.0) + 0.5235987901687622; + sp54 = (f64)__sinf(sp4C); + sp50 = (f64)__cosf(sp4C); + func_80031B04(&sp58, &sp54, &sp50); + sp54 *= 20.0; + sp50 *= 20.0; + sp58 = 10.0f; + if (sp64 < 0.0) { + sp58 = -sp58; + } + func_84367E2C(sp64, sp60, sp5C, sp58, sp54, sp50, 0xC0, 0xFF, 0xFF, 0x80, (((guRandom() % 2) * 2) - 1) * 0.3, + 2.0f, 13.0f, 0x28); + } + + if (D_84392580 >= 2) { + var_v1 = func_843684CC(); + } else { + var_v1 = 0; + } + return var_v1; +} + +void func_8435B048(void) { + if (D_84392580 >= 2) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_84368560(gDisplayListHead); + } +} + +void func_8435B0B0(void) { + D_84392582 = 0; + func_84359650(); + func_84368AB0(); +} + +s32 func_8435B0DC(void) { + s32 var_v1; + f32 sp60; + f32 sp5C; + f32 sp58; + f32 sp54; + f32 sp50; + f32 sp4C; + f32 sp48; + + D_84392582++; + if (((D_84392582 >> 2) < 4) && !(D_84392582 & 3)) { + func_84359490(&sp60, &sp5C, &sp58, &sp54, &sp50, &sp4C); + sp48 = ((2 - (((D_84392582 >> 2) + 2) % 3)) * 0.5235988f) + 0.34906587f; + sp54 *= 7.0f * __cosf(sp48); + sp50 = __sinf(sp48) * 10.0f; + sp4C = 0.0f; + func_84368C04(sp60, sp5C, sp58, sp54, sp50, 0.0f, 0xD0, 0xFF, 0xFF, 0x80, 0.8f, 2.0f, 4.0f, 0x28); + } + + if (D_84392582 >= 2) { + var_v1 = func_843692E8(); + } else { + var_v1 = 0; + } + return var_v1; +} + +void func_8435B260(void) { + if (D_84392582 >= 2) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_84369388(gDisplayListHead); + } +} + +void func_8435B2C8(void) { + Vec3f sp5C; + f32 sp58; + f32 sp54; + f32 sp50; + f32 sp4C; + f32 sp48; + f32 sp44; + + D_843925C8 = 0; + func_84359650(); + func_843697F0(); + func_84359490(&sp58, &sp54, &sp50, &sp4C, &sp48, &sp44); + sp4C *= 5.0; + sp48 *= 5.0; + sp44 *= 5.0; + func_84369950(sp58, sp54, sp50, sp4C, sp48, sp44, 0xC0, 0xFF, 0xFF, 0xA0, 0.6f, 2.0f, 4.0f, 0x28); + sp5C.x = sp58; + sp5C.y = sp54; + sp5C.z = sp50; + func_8432FD70(sp5C, 1); +} + +s32 func_8435B408(void) { + D_843925C8++; + if (D_843925C8 >= 0x32) { + return -1; + } + + return func_84369F0C(); +} + +void func_8435B454(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_84369FA0(gDisplayListHead); +} + +void func_8435B4A8(void) { + f32 sp5C; + f32 sp58; + f32 sp54; + f32 sp50; + f32 sp4C; + f32 sp48; + + func_84359490(&sp5C, &sp58, &sp54, &sp50, &sp4C, &sp48); + sp50 *= 6.0f; + sp4C *= 6.0f; + sp48 *= 6.0f; + func_843606D0(sp5C, sp58, sp54, sp50, sp4C, sp48, 8, 0xFF, 0xFF, 0xFF, 0xB4, 0.3f, 2.0f, 20.0f, 0x3C); +} + +void func_8435B580(void) { + D_843925CA = 0; + func_84359650(); + func_843605C0(); + func_8435B4A8(); +} + +s32 func_8435B5B4(void) { + D_843925CA++; + if (D_843925CA >= 0xB5) { + return -1; + } + return func_84361FB0(); +} + +void func_8435B600(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_84362084(gDisplayListHead); +} + +void func_8435B654(void) { + static s32 D_84387FC0[] = { 2, 1, 0xE, 1, 2, 2, 3, 1 }; + static s32 D_84387FE0[] = { 3, 5, 0, 5, 3, 7, 0, 5 }; + static s32 D_84388000[] = { 2, 1, 0xE, 1, 2, 1, 3, 1 }; + static s32 D_84388020[] = { 3, 5, 0, 5, 0, 7, 5, 7 }; + + f32 spB4; + f32 spB0; + f32 spAC; + f32 spA8; + f32 spA4; + f32 spA0; + + func_84359490(&spB4, &spB0, &spAC, &spA8, &spA4, &spA0); + spA8 *= 10.0f; + spA4 *= 10.0f; + spA0 *= 10.0f; + func_8436BFB8(spB4, spB0, spAC, spA8, spA4, spA0, 0.0f, 5.0f, 1.2f, 2.0f, 10.0f, 0x14, 0x8F, 0x8F, 6, 0xA, 0xF, 0xE, + -3, 5, 0, 0xF, D_84387FC0, D_84387FE0, 0xFF, 0xFF, 0, 0x96, 0x64, 0xFF, 0, 0xC8, 0x32, 0xFF, 0x96, + 0xFF, 0x78); + func_8436BFB8(spB4, spB0, spAC, spA8, spA4, spA0, 0.0f, 5.0f, 1.2f, 3.0f, 15.0f, 0x14, 0x8F, 0x90, 2, 6, 0, 0xF, -4, + 2, 0, 0, D_84388000, D_84388020, 0, 0xFF, 0x64, 0x96, 0x64, 0x64, 0, 0xFF, 0xC8, 0, 0, 0, 0); +} + +void func_8435B8E8(void) { + func_84359650(); + func_8436BE70(); + func_8435B654(); +} + +s32 func_8435B918(void) { + return func_8436C62C(); +} + +void func_8435B938(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8436CE34(gDisplayListHead); +} + +void func_8435B98C(void) { + static s32 D_84388040[] = { 3, 5, 1, 5, 1, 7, 3, 7 }; + static s32 D_84388060[] = { 0x1F, 0x1F, 0x1F, 0, 7, 7, 7, 0 }; + + f32 spA4; + f32 spA0; + f32 sp9C; + f32 sp98; + f32 sp94; + f32 sp90; + + func_84359490(&spA4, &spA0, &sp9C, &sp98, &sp94, &sp90); + sp94 += 0.2f * __cosf((RAND(10) * M_PI_F) / 10.0f); + sp90 += 0.2f * __cosf((RAND(10) * M_PI_F) / 10.0f); + + sp98 *= 12.0f; + sp94 *= 12.0f; + sp90 *= 12.0f; + + func_8436D4A4(0, spA4, spA0, sp9C, sp98, sp94, sp90, 0xFF, 0xFF, 0xFF, 0xFF, 0, 0, 0x64, 0xFF, 0xFF, 0.4f, 2.0f, + 20.0f, 0x3C, 0x95, 0x95, 0, 0xA, 0, 0xD, 0, 0, 0, 0, D_84388040, D_84388060); +} + +void func_8435BB64(void) { + D_843925CC = 0; + func_84359650(); + func_8436D370(); + func_8435B98C(); +} + +s32 func_8435BB98(void) { + D_843925CC++; + if ((D_843925CC % 10) == 0) { + func_8435B98C(); + } + return func_8436DE60(); +} + +void func_8435BBEC(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8436E3BC(gDisplayListHead); +} + +void func_8435BC40(void) { + static s32 D_84388080[] = { 3, 5, 1, 5, 6, 7, 2, 3 }; + static s32 D_843880A0[] = { 0x1F, 0x1F, 0x1F, 0, 0, 7, 5, 7 }; + static s32 D_843880C0[] = { 3, 5, 2, 5, 1, 7, 3, 7 }; + static s32 D_843880E0[] = { 0x1F, 0x1F, 0x1F, 0, 0, 7, 5, 7 }; + + f32 spB4; + f32 spB0; + f32 spAC; + f32 spA8; + f32 spA4; + f32 spA0; + + func_84359490(&spB4, &spB0, &spAC, &spA8, &spA4, &spA0); + spA8 *= 10.0f; + spA4 *= 10.0f; + spA0 *= 10.0f; + func_8436BFB8(spB4, spB0, spAC, spA8, spA4, spA0, 0.0f, 5.0f, 1.2f, 2.0f, 10.0f, 0x14, 0x93, 0x93, 5, 0xA, 0xF, 0xF, + -5, 5, 0xF, 0xF, D_84388080, D_843880A0, 0xC8, 0xC8, 0, 0x64, 0, 0, 0xC8, 0, 0xFF, 0, 0xFF, 0, 0x5A); + func_8436BFB8(spB4, spB0, spAC, spA8, spA4, spA0, 0.0f, 5.0f, 1.2f, 3.0f, 15.0f, 0x14, 0x91, 0x91, -2, 0xA, 0xF, + 0xF, 5, 0xF, 0xF, 0xF, D_843880C0, D_843880E0, 0xFF, 0x32, 0x64, 0xC8, 0, 0x64, 0x32, 0xFF, 0xFF, 0, + 0, 0, 0); +} + +void func_8435BED8(void) { + func_84359650(); + func_8436BE70(); + func_8435BC40(); +} + +s32 func_8435BF08(void) { + return func_8436C62C(); +} + +void func_8435BF28(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8436CE34(gDisplayListHead); +} + +void func_8435BF7C(void) { + static s32 D_84388100[] = { 2, 1, 0xE, 1, 2, 7, 1, 3 }; + static s32 D_84388120[] = { 3, 5, 0, 5, 0, 7, 5, 7 }; + static s32 D_84388140[] = { 2, 1, 0xE, 1, 2, 7, 1, 3 }; + static s32 D_84388160[] = { 3, 5, 0, 5, 0, 7, 5, 7 }; + + f32 spB4; + f32 spB0; + f32 spAC; + f32 spA8; + f32 spA4; + f32 spA0; + + func_84359490(&spB4, &spB0, &spAC, &spA8, &spA4, &spA0); + spA8 *= 10.0f; + spA4 *= 10.0f; + spA0 *= 10.0f; + func_8436BFB8(spB4, spB0, spAC, spA8, spA4, spA0, 0.0f, 5.0f, 1.2f, 2.0f, 10.0f, 0x14, 0x97, 0x98, -5, 0x14, 0xF, + 0xD, -5, 0x14, 0, 0xE, D_84388100, D_84388120, 0xFF, 0xFF, 0xFF, 0x32, 0x64, 0x64, 0, 0xFF, 0xFF, + 0xC8, 0xFF, 0xFF, 0x96); + func_8436BFB8(spB4, spB0, spAC, spA8, spA4, spA0, 0.0f, 5.0f, 1.2f, 3.0f, 15.0f, 0x14, 0x97, 0x98, 5, 0xF, 0xF, 0xE, + 0, 0xF, 0xF, 0xF, D_84388140, D_84388160, 0xFF, 0xFF, 0xFF, 0x32, 0x64, 0x64, 0x64, 0xFF, 0xFF, 0, 0, + 0, 0); +} + +void func_8435C220(void) { + func_84359650(); + func_8436BE70(); + func_8435BF7C(); +} + +s32 func_8435C250(void) { + return func_8436C62C(); +} + +void func_8435C270(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8436CE34(gDisplayListHead); +} + +void func_8435C2C4(void) { + static s32 D_84388180[] = { 2, 1, 0xE, 1, 2, 1, 3, 1 }; + static s32 D_843881A0[] = { 3, 5, 0, 5, 0, 7, 5, 7 }; + + f32 spB4; + f32 spB0; + f32 spAC; + f32 spA8; + f32 spA4; + f32 spA0; + + func_84359490(&spB4, &spB0, &spAC, &spA8, &spA4, &spA0); + spA8 *= 10.0f; + spA4 *= 10.0f; + spA0 *= 10.0f; + func_8436BFB8(spB4, spB0, spAC, spA8, spA4, spA0, 0.0f, 5.0f, 1.2f, 3.0f, 15.0f, 0x14, 0x97, 0x94, 0, 0x14, 0xE, + 0xF, 0, 0x14, 0xF, 0xE, D_84388180, D_843881A0, 0xFF, 0xFF, 0xFF, 0x96, 0x96, 0xFF, 0xFF, 0, 0xFF, + 0xFF, 0xFF, 0, 0x96); +} + +void func_8435C448(void) { + func_84359650(); + func_8436BE70(); + func_8435C2C4(); +} + +s32 func_8435C478(void) { + return func_8436C62C(); +} + +void func_8435C498(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8436CE34(gDisplayListHead); +} + +void func_8435C4EC(void) { + static s32 D_843881C0[] = { + 0x00000002, 0x00000001, 0x0000000E, 0x00000001, 0x00000007, 0x00000007, 0x00000007, 0x00000003, + }; + static s32 D_843881E0[] = { + 0x00000003, 0x00000005, 0x00000000, 0x00000005, 0x00000007, 0x00000007, 0x00000007, 0x00000000, + }; + static s32 D_84388200[] = { + 0x00000002, 0x00000001, 0x0000000E, 0x00000001, 0x00000002, 0x00000001, 0x00000003, 0x00000001, + }; + static s32 D_84388220[] = { + 0x00000003, 0x00000005, 0x00000000, 0x00000005, 0x00000000, 0x00000007, 0x00000005, 0x00000007, + }; + + f32 spB4; + f32 spB0; + f32 spAC; + f32 spA8; + f32 spA4; + f32 spA0; + + func_84359490(&spB4, &spB0, &spAC, &spA8, &spA4, &spA0); + spA8 *= 12.0f; + spA4 *= 12.0f; + spA0 *= 12.0f; + func_8436BFB8(spB4, spB0, spAC, spA8, spA4, spA0, 0.0f, 5.0f, 1.2f, 2.0f, 10.0f, 0x14, 0x91, 0x92, 5, 0x1E, 0, 0xD, + -5, 0x1E, 0xF, 0xD, D_843881C0, D_843881E0, 0xFF, 0xFF, 0, 0xFF, 0x96, 0x32, 0, 0, 0xFF, 0xFF, 0xC8, + 0x64, 0xC8); + func_8436BFB8(spB4, spB0, spAC, spA8, spA4, spA0, 0.0f, 5.0f, 1.2f, 3.0f, 15.0f, 0x14, 0x97, 0x96, 6, 0x14, 0xE, + 0xF, -3, 0xA, 0, 0xF, D_84388200, D_84388220, 0xFF, 0xFF, 0x64, 0x96, 0xFF, 0xFF, 0x64, 0, 0xC8, 0, 0, + 0, 0); +} + +void func_8435C790(void) { + static s32 D_84388240[] = { + 0x00000002, 0x00000001, 0x0000000E, 0x00000001, 0x00000002, 0x00000001, 0x00000003, 0x00000001, + }; + static s32 D_84388260[] = { + 0x00000003, 0x00000005, 0x00000000, 0x00000005, 0x00000000, 0x00000007, 0x00000005, 0x00000007, + }; + + f32 spA4; + f32 spA0; + f32 sp9C; + f32 sp98; + f32 sp94; + f32 sp90; + + func_84359490(&spA4, &spA0, &sp9C, &sp98, &sp94, &sp90); + + sp94 += (0.4f * __cosf((RAND(10) * M_PI_F) / 10)); + sp90 += (0.4f * __cosf((RAND(10) * M_PI_F) / 10)); + + sp98 *= 12.0f; + sp94 *= 12.0f; + sp90 *= 12.0f; + + func_8436D4A4(0, spA4, spA0, sp9C, sp98, sp94, sp90, 0xFF, 0xFF, 0x64, 0x32, 0xC8, 0xFF, 0x32, 0, 0xFF, 0.4f, 2.0f, + 5.0f, 0x3C, 0x95, 0x95, 0, 0x14, 0, 0xD, 0, 0x19, 0, 0xD, D_84388240, D_84388260); +} + +void func_8435C96C(void) { + func_84359650(); + func_8436BE70(); + func_8435C4EC(); + func_8436D370(); + func_8435C790(); +} + +s32 func_8435C9AC(void) { + D_843925D4++; + if ((D_843925D4 % 10) == 0) { + func_8435C790(); + } + func_8436DE60(); + return func_8436C62C(); +} + +void func_8435CA08(void) { + gSPMatrix(gDisplayListHead++, &D_84392588, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + gDisplayListHead = func_8436CE34(gDisplayListHead); + gDisplayListHead = func_8436E3BC(gDisplayListHead); +} diff --git a/src/fragments/62/fragment62_347330.c b/src/fragments/62/fragment62_347330.c new file mode 100644 index 0000000..881894d --- /dev/null +++ b/src/fragments/62/fragment62_347330.c @@ -0,0 +1,1145 @@ +#include "fragment62.h" +#include "src/30640.h" +#include "src/6A40.h" +#include "src/math_util.h" +#include "include/math.h" + +typedef struct unk_D_843951D0_1010 { + /* 0x00 */ f32 unk_00; + /* 0x04 */ f32 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ f32 unk_0C; + /* 0x10 */ s16 unk_10; +} unk_D_843951D0_1010; // size = 0x14 + +typedef struct unk_D_843951D0 { + /* 0x0000 */ s16 unk_0000; + /* 0x0004 */ f32 unk_0004; + /* 0x0008 */ s16 unk_0008; + /* 0x000A */ s16 unk_000A; + /* 0x000C */ Vtx* unk_000C; + /* 0x0010 */ char unk0010[0x1000]; + /* 0x1010 */ unk_D_843951D0_1010 unk_1010[16][16]; +} unk_D_843951D0; // size >= 0x2410 + +static unk_D_843925E0 D_843925E0[4]; +static s16 D_843951C0; +static s16 D_843951C2; +static s32 pad_D_843951C8[2]; +static unk_D_843951D0 D_843951D0; +static s16 D_843975E0; +static s16 D_843975E2; +static s16 D_843975E4; +static unk_D_843975E8 D_843975E8; + +func_D_84390320 D_84388280[] = { + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_8435BED8, func_84359684, func_843593A0, + func_84359FE0, func_843593A0, func_843593A0, func_843593A0, func_8435A7F0, func_843593A0, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_84359C84, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_8435B8E8, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_8435A298, func_843593A0, + func_843593A0, func_84359A00, func_843593A0, func_843593A0, func_8435C96C, func_843593A0, func_843593A0, + func_8435ABF0, func_8435AC94, func_8435AD38, func_8435ADDC, func_843593A0, func_8435BB64, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_84359910, func_843593A0, + func_843593A0, func_8435A9F0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_8435B0B0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_8435B2C8, func_843593A0, func_843593A0, + func_8435C448, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, + func_8435C220, func_8435B580, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, + func_8435A6F8, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, func_843593A0, + func_843593A0, func_843593A0, func_843593A0, +}; + +func_D_84390320 D_843884D8[] = { + func_843593A8, func_84359750, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, + func_843593A8, func_843593A8, func_84359D7C, func_843593A8, func_843593A8, func_843593A8, func_843593A8, + func_843593A8, func_843593A8, func_84359AE0, func_843593A8, func_843593A8, func_84359820, func_843593A8, + func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, + func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_8435A390, func_8435A480, func_843593A8, + func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, + func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_84359684, + func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, + func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, + func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, + func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, + func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, + func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, + func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, func_843593A8, + func_843593A8, func_843593A8, +}; + +func_D_84390320 D_84388668[] = { + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_8435BF08, func_843596DC, func_843593B0, + func_8435A014, func_843593B0, func_843593B0, func_843593B0, func_8435A81C, func_843593B0, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_84359CB8, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_8435B918, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_8435A2CC, func_843593B0, + func_843593B0, func_84359A6C, func_843593B0, func_843593B0, func_8435C9AC, func_843593B0, func_843593B0, + func_8435AC20, func_8435ACC4, func_8435AD68, func_8435AE08, func_843593B0, func_8435BB98, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_8435998C, func_843593B0, + func_843593B0, func_8435AA1C, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_8435B0DC, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_8435B408, func_843593B0, func_843593B0, + func_8435C478, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, + func_8435C250, func_8435B5B4, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, + func_8435A72C, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, func_843593B0, + func_843593B0, func_843593B0, func_843593B0, +}; + +func_D_84390320 D_843888C0[] = { + func_843593B8, func_843597AC, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, + func_843593B8, func_843593B8, func_84359DF4, func_843593B8, func_843593B8, func_843593B8, func_843593B8, + func_843593B8, func_843593B8, func_84359AE8, func_843593B8, func_843593B8, func_8435989C, func_843593B8, + func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, + func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_8435A40C, func_8435A4F8, func_843593B8, + func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, + func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843596DC, + func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, + func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, + func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, + func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, + func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, + func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, + func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, func_843593B8, + func_843593B8, func_843593B8, +}; + +func_D_84390320 D_84388A50[] = { + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_8435BF28, func_843596FC, func_843593C0, + func_8435A084, func_843593C0, func_843593C0, func_843593C0, func_8435A99C, func_843593C0, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_84359D28, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_8435B938, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_8435A33C, func_843593C0, + func_843593C0, func_84359A8C, func_843593C0, func_843593C0, func_8435CA08, func_843593C0, func_843593C0, + func_8435AC40, func_8435ACE4, func_8435AD88, func_8435B048, func_843593C0, func_8435BBEC, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843599AC, func_843593C0, + func_843593C0, func_8435AB9C, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_8435B260, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_8435B454, func_843593C0, func_843593C0, + func_8435C498, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, + func_8435C270, func_8435B600, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, + func_8435A79C, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, func_843593C0, + func_843593C0, func_843593C0, func_843593C0, +}; + +func_D_84390320 D_84388CA8[] = { + func_843593C8, func_843597CC, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, + func_843593C8, func_843593C8, func_84359E14, func_843593C8, func_843593C8, func_843593C8, func_843593C8, + func_843593C8, func_843593C8, func_84359AF0, func_843593C8, func_843593C8, func_843598BC, func_843593C8, + func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, + func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_8435A42C, func_8435A518, func_843593C8, + func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, + func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843596FC, + func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, + func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, + func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, + func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, + func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, + func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, + func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, func_843593C8, + func_843593C8, func_843593C8, +}; + +static s32 pad_D_84388E38[2] = { 0, 0 }; + +static Gfx D_84388E40[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsDPSetRenderMode(G_RM_AA_ZB_XLU_SURF, G_RM_AA_ZB_XLU_SURF2), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetColorDither(G_CD_NOISE), + gsSPEndDisplayList(), +}; + +void func_8435CA70(void) { + unk_D_843925E0* ptr = &D_843925E0[0]; + s32 i; + + for (i = 0; i < 4; i++) { + ptr->unk_018 = ptr->unk_000 = 0; + ptr++; + } +} + +void func_8435CAA8(unk_D_843925E0* arg0, s32 arg1, s32 arg2, s32 arg3, s32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8, + s32 arg9) { + arg0->unk_028 = arg1; + arg0->unk_02C = arg2; + arg0->unk_030 = arg3; + arg0->unk_038 = arg4; + arg0->unk_03C = arg5; + arg0->unk_040 = arg6; + arg0->unk_024 = arg7; + arg0->unk_034 = arg8; + arg0->unk_044 = arg9; +} + +void func_8435CAE8(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, s32 arg5) { + unk_D_843925E0* ptr; + unk_D_843925E0_430* ptr1; + unk_D_843925E0_430* ptr2; + unk_D_843925E0_430* ptr3; + s32 i; + u8 temp_lo; + u8 temp_lo_2; + s32 temp_v0_2; + s32 var_v1; + u8 temp_a0; + u8 temp_a1; + u8 temp_v1; + + var_v1 = -1; + + for (i = 0; i < 4; i++) { + if (D_843925E0[i].unk_000 == 0) { + var_v1 = i; + break; + } + } + + if (var_v1 == -1) { + return; + } + + ptr = &D_843925E0[var_v1]; + + ptr->unk_000 = 1; + ptr->unk_018 = 0; + ptr->unk_004 = arg0; + ptr->unk_00C = arg2; + ptr->unk_010 = arg3 * arg4; + ptr->unk_014 = arg4; + ptr->unk_01E = -1; + + switch (arg5) { + case 0: + ptr->unk_01C = 1; + ptr->unk_008 = (arg4 * 0.0) + arg1; + ptr->unk_01A = 0x3C; + ptr->unk_020 = 1.5f; + func_8435CAA8(&D_843925E0[var_v1], 0xFF, 0xFF, 0xC8, 0x20, 0x20, 0xFF, 0x80, 0x80, 0xFF); + ptr->unk_01E = func_8436E944(); + break; + + case 1: + ptr->unk_01C = -1; + ptr->unk_01A = 0x78; + ptr->unk_008 = (arg4 * 100.0) + arg1; + ptr->unk_020 = 1.5f; + func_8435CAA8(&D_843925E0[var_v1], 0xFF, 0xFF, 0xC8, 0xFF, 0x20, 0x20, 0x80, 0x80, 0); + break; + + default: + case 2: + ptr->unk_01C = 1; + ptr->unk_008 = (arg4 * 0.0) + arg1; + ptr->unk_01A = 0x1E; + ptr->unk_020 = 1.5f; + break; + } + + ptr1 = &ptr->unk_430[0]; + for (i = 0; i < 31; i++) { + ptr2 = ptr1++; + ptr3 = ptr1++; + + switch (arg5) { + case 0: + temp_v0_2 = ((i % 3) * 2) + 1; + temp_lo = 0x44 / temp_v0_2; + temp_lo_2 = 0xFF / temp_v0_2; + + ptr2->unk_10.r = 0x66; + ptr2->unk_10.g = ((temp_lo * 6) + 0x3FC) / 10; + ptr2->unk_10.b = ((temp_lo_2 * 6) + 0x3FC) / 10; + ptr2->unk_10.a = 0xFF; + + ptr3->unk_10.r = 0; + ptr3->unk_10.g = temp_lo; + ptr3->unk_10.b = temp_lo_2; + ptr3->unk_10.a = 0; + + ptr2->unk_0E = 0x20; + ptr3->unk_0E = 0x7E0; + break; + + case 1: + temp_v0_2 = ((i % 3) * 2) + 1; + temp_lo = 0xFF / temp_v0_2; + temp_lo_2 = 0x44 / temp_v0_2; + + ptr2->unk_10.r = ((temp_lo * 4) + 0x5FA) / 10; + ptr2->unk_10.g = ((temp_lo_2 * 4) + 0x5FA) / 10; + ptr2->unk_10.b = 0x99; + ptr2->unk_10.a = 0x10; + + ptr3->unk_10.r = temp_lo; + ptr3->unk_10.g = temp_lo_2; + ptr3->unk_10.b = 0; + ptr3->unk_10.a = 0; + + ptr2->unk_0E = 0x7E0; + ptr3->unk_0E = 0x20; + break; + + default: + case 2: + temp_v1 = (((u32)(i & 0x3F) >> 4) & 3) << 6; + temp_a0 = (((u32)(i & 0x3F) >> 2) & 3) << 6; + temp_a1 = ((u32)(i & 0x3F) & 3) << 6; + + ptr2->unk_10.r = ((temp_v1 * 6) + 0x3FC) / 10; + ptr2->unk_10.g = ((temp_a0 * 6) + 0x3FC) / 10; + ptr2->unk_10.b = ((temp_a1 * 6) + 0x3FC) / 10; + ptr2->unk_10.a = 0xFF; + + ptr3->unk_10.r = temp_v1; + ptr3->unk_10.g = temp_a0; + ptr3->unk_10.b = temp_a1; + ptr3->unk_10.a = 0; + + ptr2->unk_0E = 0x20; + ptr3->unk_0E = 0x7E0; + break; + } + + ptr2->unk_0C = ((i % 31) * 0x3000) / 30; + ptr3->unk_0C = ptr2->unk_0C; + ptr2->unk_18 = 0.0f; + ptr2->unk_14 = (i * TWO_PI) / 30.0; + ptr2->unk_00 = (__cosf((i * TWO_PI) / 30.0) * (arg3 * arg4)) + arg0; + ptr2->unk_04 = ptr->unk_008; + + if (ptr2->unk_04 < 0.0) { + ptr2->unk_04 = 0.0f; + } + ptr2->unk_08 = (__sinf(ptr2->unk_14) * (arg3 * arg4)) + arg2; + + ptr3->unk_18 = 0.0f; + ptr3->unk_14 = ptr2->unk_14; + ptr3->unk_00 = ptr2->unk_00; + ptr3->unk_04 = ptr->unk_008; + if (ptr3->unk_04 < 0.0) { + ptr3->unk_04 = 0.0f; + } + + ptr3->unk_08 = ptr2->unk_08; + } +} + +void func_8435D1E8(unk_D_843925E0* arg0) { + s32 var_v0; + + if (arg0->unk_01C >= 0) { + if ((arg0->unk_01A - 0x1E) < arg0->unk_018) { + var_v0 = arg0->unk_044 - 0xA; + if (var_v0 < 0) { + var_v0 = 0; + } + arg0->unk_044 = var_v0; + } + } else { + var_v0 = arg0->unk_044 + 8; + if (var_v0 >= 0x100) { + var_v0 = 0xFF; + } + arg0->unk_044 = var_v0; + } +} + +s32 func_8435D24C(unk_D_843925E0* arg0) { + unk_D_843925E0_430* temp_s0; + unk_D_843925E0_430* temp_s1; + unk_D_843925E0_430* ptr; + s32 i; + f32 sp9C; + f32 sp98; + f32 sp94; + f32 sp90; + f32 sp8C; + f32 sp88; + f32 sp84; + f32 sp80; + f32 sp7C; + f32 sp78; + f32 temp_fa0; + s16 temp_s6; + s16 var_s5; + Vtx* var_s2; + s32 tmp; + + ptr = &arg0->unk_430[0]; + + arg0->unk_018++; + tmp = arg0->unk_018; + + sp9C = arg0->unk_010; + sp80 = arg0->unk_004; + sp7C = arg0->unk_008; + sp78 = arg0->unk_00C; + sp98 = arg0->unk_014; + temp_s6 = arg0->unk_01C; + sp84 = arg0->unk_020 * tmp; + + var_s2 = &arg0->unk_050[0]; + func_8435D1E8(arg0); + + var_s5 = 0; + sp94 = 0.0f; + sp90 = 0.0f; + sp8C = 0.0f; + sp88 = 0.0f; + + for (i = 0; i < 31; i++) { + temp_s0 = ptr++; + temp_s1 = ptr++; + + if (i == 0x1E) { + sp94 = 0.0f; + sp90 = 0.0f; + sp8C = 0.0f; + sp88 = 0.0f; + } + temp_s0->unk_18 += 0.4; + temp_s0->unk_14 -= 0.06f; + + if (temp_s6 != -1) { + if (temp_s6 == 1) { + temp_s0->unk_04 = ((((2.0 * __sinf(temp_s0->unk_14 + temp_s0->unk_18 + sp94)) - + (__cosf(temp_s0->unk_14 + temp_s0->unk_18 + sp90) * 3.0)) + + sp84) * + sp98) + + sp7C; + temp_s1->unk_04 = (((((5.0 * __sinf(temp_s1->unk_14 + temp_s1->unk_18 + sp8C)) - + (__cosf(temp_s1->unk_14 + temp_s1->unk_18 + sp88) * 3.0)) + + sp84) * + sp98) + + sp7C) - + 50.0; + + if (temp_s1->unk_04 > 400.0) { + var_s5++; + } + + if (temp_s0->unk_04 < 0.0) { + temp_s0->unk_04 = 0.0f; + } + + if (temp_s1->unk_04 < 0.0) { + temp_s1->unk_04 = 0.0f; + } + } + } else { + temp_s0->unk_04 = sp7C - ((((2.0 * __sinf(temp_s0->unk_14 + temp_s0->unk_18 + sp94)) - + (__cosf(temp_s0->unk_14 + temp_s0->unk_18 + sp90) * 3.0)) + + sp84) * + sp98); + temp_s1->unk_04 = (sp7C - ((((5.0 * __sinf(temp_s1->unk_14 + temp_s1->unk_18 + sp8C)) - + (__cosf(temp_s1->unk_14 + temp_s1->unk_18 + sp88) * 3.0)) + + sp84) * + sp98)) - + 50.0; + + if (temp_s0->unk_04 < 0.0) { + var_s5++; + temp_s0->unk_04 = 0.0f; + } + + if (temp_s1->unk_04 < 0.0) { + temp_s1->unk_04 = 0.0f; + } + } + + temp_s1->unk_18 += 0.3; + temp_s1->unk_14 += 0.08; + + var_s2->v.ob[0] = temp_s0->unk_00; + var_s2->v.ob[1] = temp_s0->unk_04; + var_s2->v.ob[2] = temp_s0->unk_08; + var_s2->v.tc[0] = temp_s0->unk_0C; + var_s2->v.tc[1] = temp_s0->unk_0E; + var_s2->v.cn[0] = temp_s0->unk_10.r; + var_s2->v.cn[1] = temp_s0->unk_10.g; + var_s2->v.cn[2] = temp_s0->unk_10.b; + var_s2->v.cn[3] = temp_s0->unk_10.a; + var_s2++; + + var_s2->v.ob[0] = temp_s1->unk_00; + var_s2->v.ob[1] = temp_s1->unk_04; + var_s2->v.ob[2] = temp_s1->unk_08; + var_s2->v.tc[0] = temp_s1->unk_0C; + var_s2->v.tc[1] = temp_s1->unk_0E; + var_s2->v.cn[0] = temp_s1->unk_10.r; + var_s2->v.cn[1] = temp_s1->unk_10.g; + var_s2->v.cn[2] = temp_s1->unk_10.b; + var_s2->v.cn[3] = temp_s1->unk_10.a; + var_s2++; + + sp94 += 2.4; + sp90 += 1.8; + sp8C += 1.6; + sp88 += 1.2; + } + + if (temp_s6 == 1) { + f32 tmp1; + f32 tmp2; + + temp_fa0 = ((guRandom() % 360) * TWO_PI_F) / 360.0f; + tmp1 = __cosf(temp_fa0) * sp9C; + tmp2 = __sinf(temp_fa0) * sp9C; + + func_8436EA0C(arg0->unk_01E, sp80 + tmp1, sp7C + sp84, sp78 + tmp2, 0xA, 0.75f); + func_8436EB54(arg0->unk_01E); + } + + if (var_s5 >= 0x1F) { + return -1; + } + return 0; +} + +s32 func_8435D8C0(void) { + s32 i; + s32 var_s2; + unk_D_843925E0* ptr = &D_843925E0[0]; + + D_843951C0 = (D_843951C0 + 1) & 0x3FFF; + D_843951C2 = (D_843951C2 - 1) & 0x3FFF; + var_s2 = -1; + + for (i = 0; i < 4; i++, ptr++) { + if (ptr->unk_000 == 1) { + if (func_8435D24C(ptr) == 0) { + var_s2 = 0; + } else { + ptr->unk_000 = 0; + } + } + } + + return var_s2; +} + +Gfx* func_8435D97C(Gfx* arg0, unk_D_843925E0* arg1) { + s32 i; + Vtx* temp_v0 = func_80005F5C(sizeof(Vtx) * 62); + Vtx* vtx = temp_v0; + Vtx* var_a0 = &arg1->unk_050[0]; + + for (i = 0; i < 31; i++) { + *vtx++ = *var_a0++; + *vtx++ = *var_a0++; + } + + vtx = temp_v0; + for (i = 0; i < 30; i++) { + gSPVertex(arg0++, vtx, 4, 0); + gSP2Triangles(arg0++, 0, 2, 1, 0, 2, 3, 1, 0); + vtx += 2; + } + + return arg0; +} + +Gfx* func_8435DB14(Gfx* arg0) { + static Gfx D_84388E88[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_2CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_PASS, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTexturePersp(G_TP_PERSP), + gsDPSetTextureDetail(G_TD_CLAMP), + gsDPSetTextureLOD(G_TL_TILE), + gsDPSetTextureLUT(G_TT_NONE), + gsDPSetTextureConvert(G_TC_FILT), + gsDPSetTextureFilter(G_TF_BILERP), + gsDPSetCombineLERP(TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, TEXEL1, TEXEL0, PRIMITIVE, TEXEL0, PRIMITIVE, + ENVIRONMENT, COMBINED, ENVIRONMENT, COMBINED, 0, ENVIRONMENT, 0), + gsSPEndDisplayList(), + }; + + static Gfx D_84388F00[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(AA_EN | Z_CMP | IM_RD | CLR_ON_CVG | CVG_DST_SAVE | ZMODE_XLU | FORCE_BL | + GBL_c1(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA), + AA_EN | Z_CMP | IM_RD | CLR_ON_CVG | CVG_DST_SAVE | ZMODE_XLU | FORCE_BL | + GBL_c2(G_BL_CLR_IN, G_BL_A_IN, G_BL_CLR_MEM, G_BL_1MA)), + gsDPSetTexturePersp(G_TP_PERSP), + gsDPSetTextureDetail(G_TD_CLAMP), + gsDPSetTextureLOD(G_TL_TILE), + gsDPSetTextureLUT(G_TT_NONE), + gsDPSetTextureConvert(G_TC_FILT), + gsDPSetTextureFilter(G_TF_BILERP), + gsDPSetCombineMode(G_CC_MODULATEI, G_CC_MODULATEI), + gsSPEndDisplayList(), + }; + + unk_D_843925E0* ptr = &D_843925E0[0]; + s32 i; + + gSPDisplayList(arg0++, D_84388E88); + gDPPipeSync(arg0++); + gDPLoadTextureTile_4b(arg0++, D_843920C0[0x43], G_IM_FMT_I, 32, 0, 0, 0, 31, 31, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); + gDPSetTileSize(arg0++, G_TX_RENDERTILE, D_843951C0, 0, (D_843951C0 + 0x1F), 0x001F); + gDPLoadMultiTile_4b(arg0++, D_843920C0[0x44], 0x0100, 1, G_IM_FMT_I, 32, 0, 0, 0, 31, 31, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD); + gDPSetTileSize(arg0++, 1, D_843951C2, 0, (D_843951C2 + 0x1F), 0x001F); + + for (i = 0; i < 4; i++, ptr++) { + if (ptr->unk_000 == 1) { + gDPSetPrimColor(arg0++, 0, ptr->unk_024, ptr->unk_028, ptr->unk_02C, ptr->unk_030, ptr->unk_034); + gDPSetEnvColor(arg0++, ptr->unk_038, ptr->unk_03C, ptr->unk_040, ptr->unk_044); + + gSPClearGeometryMode(arg0++, G_CULL_BACK); + gSPSetGeometryMode(arg0++, G_CULL_FRONT); + + arg0 = func_8435D97C(arg0, ptr); + + gSPClearGeometryMode(arg0++, G_CULL_FRONT); + gSPSetGeometryMode(arg0++, G_CULL_BACK); + + arg0 = func_8435D97C(arg0, ptr); + } + } + + ptr = &D_843925E0[0]; + for (i = 0; i < 4; i++, ptr++) { + if (ptr->unk_000 == 1) { + arg0 = func_8436EDE8(ptr->unk_01E, arg0); + } + } + + return arg0; +} + +void func_8435DED0(unk_D_843975E8* arg0, f32 arg1) { + unk_D_86002F34_00C* spB4 = func_8432FD64(); + f32 spB0; + f32 spAC; + f32 spA8; + f32 spA4; + f32 spA0; + f32 sp9C; + f32 var_fs0; + f32 sp94; + UNUSED s32 pad; + f32 sp8C; + f32 sp44; + f32 sp84; + f32 sp80; + f32 sp7C; + f32 sp78; + f32 sp74; + f32 sp70; + f32 sp40; + f32 sp68; + f32 sp64; + f32 sp60; + f32 sp5C; + f32 sp58; + f32 sp54; + f32 sp50; + f32 sp4C; + f32 sp48; + + spB0 = spB4->unk_60.eye.x; + spAC = spB4->unk_60.eye.y; + spA8 = spB4->unk_60.eye.z; + + sp9C = spB4->unk_60.at.x; + spA0 = spB4->unk_60.at.y; + spA4 = spB4->unk_60.at.z; + + sp78 = spB4->unk_60.up.x; + sp74 = spB4->unk_60.up.y; + sp70 = spB4->unk_60.up.z; + + sp4C = spB4->unk_24.fovy; + sp48 = sp4C / 30.0f; + sp8C = spB4->unk_24.near; + + sp84 = sp9C - spB0; + sp80 = spA0 - spAC; + sp7C = spA4 - spA8; + + func_80031B04(&sp84, &sp80, &sp7C); + + sp44 = (sp4C * TWO_PI) / 720.0; + sp40 = sp8C + arg1; + + arg0->unk_00 = (sp40 * sp84) + spB0; + arg0->unk_04 = (sp40 * sp80) + spAC; + arg0->unk_08 = (sp40 * sp7C) + spA8; + + sp50 = __cosf(sp44); + if (sp50 != 0.0) { + var_fs0 = (__sinf(sp44) * sp40) / sp50; + } else { + var_fs0 = 0.0f; + } + + var_fs0 = func_80031A6C(var_fs0); + sp94 = spB4->unk_24.aspect * var_fs0 * sp48 * 1.2f; + + func_80031A94(sp84, sp80, sp7C, sp78, sp74, sp70, &sp68, &sp64, &sp60); + func_80031A94(sp84, sp80, sp7C, sp68, sp64, sp60, &sp5C, &sp58, &sp54); + func_80031B04(&sp68, &sp64, &sp60); + func_80031B04(&sp5C, &sp58, &sp54); + + arg0->unk_0C = sp68 * sp94; + arg0->unk_10 = sp64 * sp94; + arg0->unk_14 = sp60 * sp94; + + arg0->unk_18 = sp5C * var_fs0; + arg0->unk_1C = sp58 * var_fs0; + arg0->unk_20 = sp54 * var_fs0; +} + +f32 func_8435E158(f32 arg0, f32 arg1, f32* arg2) { + UNUSED s32 pad1[2]; + f32 spC4; + f32 spC0; + f32 spBC; + f32 spB8; + f32 spB4; + f32 spB0; + f32 spAC; + f32 spA8; + f32 spA4; + f32 spA0; + f32 sp9C; + f32 sp98; + f32 sp94; + UNUSED s32 pad2[8]; + f32 temp_fa0; + f32 temp_fa1; + f32 temp_fv0; + f32 temp_fv0_2; + f32 temp_fv1; + s32 var_a0; + s32 var_v1; + f32 sp54; + f32 sp50; + f32 sp4C; + + var_v1 = ((arg0 + 440.0f) / 150.0f) + 8.0f; + var_a0 = (arg1 / 200.0f) + 8.0f; + + if (var_v1 < 0) { + var_v1 = 0; + } + + if (var_v1 >= 0xF) { + var_v1 = 0xE; + } + + if (var_a0 < 0) { + var_a0 = 0; + } + + if (var_a0 >= 0xF) { + var_a0 = 0xE; + } + + spC0 = D_843951D0.unk_1010[var_v1][var_a0].unk_00; + spBC = D_843951D0.unk_1010[var_v1][var_a0].unk_04; + spB8 = D_843951D0.unk_1010[var_v1][var_a0].unk_08; + spB4 = D_843951D0.unk_1010[var_v1 + 1][var_a0].unk_00; + spB0 = D_843951D0.unk_1010[var_v1 + 1][var_a0].unk_04; + spAC = D_843951D0.unk_1010[var_v1 + 1][var_a0].unk_08; + spA8 = D_843951D0.unk_1010[var_v1][var_a0 + 1].unk_00; + spA4 = D_843951D0.unk_1010[var_v1][var_a0 + 1].unk_04; + spA0 = D_843951D0.unk_1010[var_v1][var_a0 + 1].unk_08; + sp9C = D_843951D0.unk_1010[var_v1 + 1][var_a0 + 1].unk_00; + sp98 = D_843951D0.unk_1010[var_v1 + 1][var_a0 + 1].unk_04; + sp94 = D_843951D0.unk_1010[var_v1 + 1][var_a0 + 1].unk_08; + + temp_fv0 = spB4 - arg0; + spBC = D_843951D0.unk_1010[var_v1][var_a0].unk_04; + temp_fv1 = spAC - arg1; + temp_fa0 = sp9C - arg0; + temp_fa1 = sp94 - arg1; + + if ((SQ(temp_fv0) + SQ(temp_fv1)) <= (SQ(temp_fa0) + SQ(temp_fa1))) { + func_80031A94(spB4 - spC0, spB0 - spBC, spAC - spB8, spA8 - spC0, spA4 - spBC, spA0 - spB8, &sp54, &sp50, + &sp4C); + if (sp50 != 0.0) { + spC4 = spBC - ((((arg0 - spC0) * sp54) + (sp4C * (arg1 - spB8))) / sp50); + } else { + spC4 = (spBC + spB0 + spA4) / 3.0; + } + } else { + func_80031A94(spB4 - sp9C, spB0 - sp98, spAC - sp94, spA8 - sp9C, spA4 - sp98, spA0 - sp94, &sp54, &sp50, + &sp4C); + if (sp50 != 0.0) { + spC4 = sp98 - ((((arg0 - sp9C) * sp54) + (sp4C * (arg1 - sp94))) / sp50); + } else { + spC4 = (sp98 + spB0 + spA4) / 3.0; + } + } + + temp_fv0_2 = MathUtil_Atan2s(sp50, sp54); + temp_fv0_2 = (temp_fv0_2 * 360.0) / 65536.0; + if (temp_fv0_2 > 90.0f) { + temp_fv0_2 -= 180.0f; + } + + if (temp_fv0_2 < -90.0f) { + temp_fv0_2 += 180.0f; + } + + *arg2 = temp_fv0_2; + return spC4; +} + +s32 func_8435E530(void) { + s32 i; + s32 j; + unk_D_843951D0_1010* ptr; + f32 var_fv0; + s32 temp_v0; + f32 tmp; + + D_843951D0.unk_0000++; + if (D_843951D0.unk_000A < D_843951D0.unk_0000) { + return -1; + } + + if (D_843951D0.unk_0000 < 0x3C) { + ptr = &D_843951D0.unk_1010[0][0]; + for (j = 0; j < 16; j++) { + ptr->unk_04 += (30.0 * __sinf((((D_843951D0.unk_0000 + j) % 15) * TWO_PI_F) / 15.0f)) + 10.0; + ptr++; + } + D_843951D0.unk_0004 += 0.001; + } else { + if (((D_843951D0.unk_0000 - 0x3C) % 90) < 0x46) { + ptr = &D_843951D0.unk_1010[0][2]; + for (j = 0; j < 13; j++) { + if (0) {} + if (ptr->unk_04 > 0.0) { + ptr->unk_04 -= 40.0; + if (ptr->unk_04 < 0.0) { + ptr->unk_04 = 0.0f; + } + } + ptr++; + } + } else { + ptr = &D_843951D0.unk_1010[0][2]; + for (j = 0; j < 13; j++) { + ptr->unk_04 += 30.0; + ptr++; + } + } + + D_843951D0.unk_0004 += 0.04; + if (D_843951D0.unk_0004 > 0.3) { + D_843951D0.unk_0004 = 0.3f; + } + } + + ptr = &D_843951D0.unk_1010[0][0]; + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++) { + temp_v0 = 1; + + tmp = ptr->unk_04; + var_fv0 = 0.0f; + if (i > 0) { + temp_v0 = 2; + var_fv0 += D_843951D0.unk_1010[i - 1][j].unk_04 - tmp; + } + + if ((!ptr) && (!ptr)) {} + + if (j > 0) { + var_fv0 += D_843951D0.unk_1010[i][j - 1].unk_04 - tmp; + } + + if (j < 0xF) { + var_fv0 += D_843951D0.unk_1010[i][j + 1].unk_04 - tmp; + } + + temp_v0++; + temp_v0++; + if (temp_v0) {} + + ptr->unk_0C = (var_fv0 * D_843951D0.unk_0004) + tmp; + ptr++; + } + } + + ptr = &D_843951D0.unk_1010[0][0]; + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++, ptr++) { + ptr->unk_04 = ptr->unk_0C; + if (ptr->unk_04 < 0.0) { + ptr->unk_04 = 0.0f; + } + } + } + + return 0; +} + +void func_8435EB9C(s32 arg0, s16 arg1, s16 arg2) { + s32 i; + s32 j; + unk_D_843951D0_1010* ptr; + + D_843951D0.unk_000A = arg2; + D_843951D0.unk_0000 = 0; + D_843951D0.unk_0004 = 0.0f; + D_843951D0.unk_0008 = arg1; + + ptr = &D_843951D0.unk_1010[0][0]; + + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++, ptr++) { + ptr->unk_00 = arg0 * (((i * 150.0f) - 1200.0f) - 440.0f); + ptr->unk_04 = 1.0f; + ptr->unk_08 = (j * 200.0f) - 1600.0f; + ptr->unk_0C = 1.0f; + ptr->unk_10 = 0xFF; + + if (i == 0xF) { + ptr->unk_10 = 0; + } + + if (j == 0xF) { + ptr->unk_10 = 0; + } + + if (j == 0) { + ptr->unk_10 = 0; + } + } + } + + D_843975E0 = 0; + D_843975E2 = 8; + D_843975E4 = 0; + + if (arg1 > 0) { + for (i = 0; i < arg1; i++) { + func_8435E530(); + } + + func_8435DED0(&D_843975E8, 50.0f); + } +} + +s32 func_8435EDF8(void) { + UNUSED s32 pad[2]; + s32 sp1C = func_8435E530(); + + D_843975E0 = (D_843975E0 - 1) & 0x3FFF; + D_843975E2 = (D_843975E2 - 1) & 0x3FFF; + D_843975E4 = (D_843975E4 - 1) & 0x3FFF; + func_8435DED0(&D_843975E8, 50.0f); + + return sp1C; +} + +static s32 pad_D_84388F78[2] = { 0, 0 }; + +Gfx* func_8435EE78(Gfx* arg0) { + static Gfx D_84388F80[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_2CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetTexturePersp(G_TP_PERSP), + gsDPSetTextureDetail(G_TD_CLAMP), + gsDPSetTextureLOD(G_TL_TILE), + gsDPSetTextureLUT(G_TT_NONE), + gsDPSetTextureConvert(G_TC_FILT), + gsDPSetTextureFilter(G_TF_BILERP), + gsDPSetRenderMode(G_RM_PASS, G_RM_ZB_XLU_SURF2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, 0, 0, 0, PRIMITIVE, PRIMITIVE, ENVIRONMENT, COMBINED, + ENVIRONMENT, COMBINED, 0, SHADE, 0), + gsSPEndDisplayList(), + }; + static Gfx D_84388FF8[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_2CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_PASS, G_RM_XLU_SURF2), + gsDPSetCombineLERP(TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, PRIMITIVE, + ENVIRONMENT, COMBINED, ENVIRONMENT, COMBINED, 0, PRIMITIVE, 0), + gsDPSetColorDither(G_CD_NOISE), + gsDPSetPrimColor(0, 0x80, 0, 50, 255, 100), + gsDPSetEnvColor(0, 100, 255, 100), + gsSPEndDisplayList(), + }; + + unk_D_843951D0_1010* var_v1; + Vtx* vtx; + s32 i; + s32 j; + f32 sp134; + f32 sp130; + f32 sp12C; + f32 sp128; + f32 sp124; + f32 sp120; + f32 sp11C; + f32 temp_fv0; + Vtx* temp_v0; + f32 sp110; + s16 var_a2; + s16 var_t0; + s32 idx1; + s32 idx2; + + D_843951D0.unk_000C = func_80005F5C(sizeof(Vtx) * 16 * 16); + vtx = D_843951D0.unk_000C; + var_v1 = &D_843951D0.unk_1010[0][0]; + + for (i = 0; i < 16; i++) { + for (j = 0; j < 16; j++) { + vtx->v.ob[0] = var_v1->unk_00; + vtx->v.ob[1] = var_v1->unk_04; + vtx->v.ob[2] = var_v1->unk_08; + vtx->v.tc[0] = (i * 0x800) / 3; + vtx->v.tc[1] = (j * 0x800) / 3; + vtx->v.cn[3] = var_v1->unk_10; + vtx++; + var_v1++; + } + } + + gSPDisplayList(arg0++, D_84388F80); + gDPPipeSync(arg0++); + + if (D_843951D0.unk_0000 < 0xA) { + var_a2 = 0; + var_t0 = (D_843951D0.unk_0000 * 0xFF) / 10; + } else if (D_843951D0.unk_0000 < 0x14) { + var_a2 = ((D_843951D0.unk_0000 * 0xFF) - 0x9F6) / 10; + var_t0 = 0xFF; + } else { + var_a2 = 0xFF; + var_t0 = 0xFF; + } + + gDPSetPrimColor(arg0++, 0, 0xB4, 255, 255, 255, var_t0); + gDPSetEnvColor(arg0++, 0, 0x64, 0xC8, var_a2); + gDPSetBlendColor(arg0++, 255, 255, 255, 255); + + gDPLoadTextureTile_4b(arg0++, D_843920C0[0xB8], G_IM_FMT_I, 32, 0, 0, 0, 31, 31, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, 1, 1); + gDPSetTileSize(arg0++, G_TX_RENDERTILE, D_843975E0, -D_843975E0, D_843975E0 + 0x1F, 0x1F - D_843975E0); + + gDPLoadMultiTile_4b(arg0++, D_843920C0[0xB9], 0x0100, 1, G_IM_FMT_I, 32, 0, 0, 0, 31, 31, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, 1, 1); + gDPSetTileSize(arg0++, 1, D_843975E2, D_843975E2, D_843975E2 + 0x1F, D_843975E2 + 0x1F); + + vtx = D_843951D0.unk_000C; + for (i = 0; i < 15; i++) { + for (j = 0; j < 15; j++) { + idx1 = (i + 0) * 16 + j; + idx2 = (i + 1) * 16 + j; + gSPVertex(arg0++, &vtx[idx1 + 0], 1, 0); + gSPVertex(arg0++, &vtx[idx1 + 1], 1, 1); + gSPVertex(arg0++, &vtx[idx2 + (0 * 16) + 0], 1, 2); + gSPVertex(arg0++, &vtx[idx1 + (1 * 16) + 1], 1, 3); + gSP2Triangles(arg0++, 0, 2, 1, 0, 2, 3, 1, 0); + } + } + + sp12C = (D_843975E8.unk_00 - D_843975E8.unk_0C) + D_843975E8.unk_18; + sp130 = (D_843975E8.unk_04 - D_843975E8.unk_10) + D_843975E8.unk_1C; + sp134 = (D_843975E8.unk_08 - D_843975E8.unk_14) + D_843975E8.unk_20; + sp11C = func_8435E158(sp12C, sp134, &sp110); + + sp120 = D_843975E8.unk_00 + D_843975E8.unk_0C + D_843975E8.unk_18; + sp124 = D_843975E8.unk_04 + D_843975E8.unk_10 + D_843975E8.unk_1C; + sp128 = D_843975E8.unk_08 + D_843975E8.unk_14 + D_843975E8.unk_20; + temp_fv0 = func_8435E158(sp120, sp128, &sp110); + + if ((sp130 < sp11C) || (sp124 < temp_fv0)) { + temp_v0 = func_80005F5C(sizeof(Vtx) * 4); + + temp_v0[0].v.ob[0] = (D_843975E8.unk_00 - D_843975E8.unk_0C) - D_843975E8.unk_18; + temp_v0[0].v.ob[1] = sp11C; + temp_v0[0].v.ob[2] = (D_843975E8.unk_08 - D_843975E8.unk_14) - D_843975E8.unk_20; + temp_v0[0].v.tc[0] = 0; + temp_v0[0].v.tc[1] = 0; + + temp_v0[1].v.ob[0] = (D_843975E8.unk_00 + D_843975E8.unk_0C) - D_843975E8.unk_18; + temp_v0[1].v.ob[1] = sp11C; + temp_v0[1].v.ob[2] = (D_843975E8.unk_08 + D_843975E8.unk_14) - D_843975E8.unk_20; + temp_v0[1].v.tc[0] = 0x3E0; + temp_v0[1].v.tc[1] = 0; + + temp_v0[2].v.ob[0] = sp12C; + temp_v0[2].v.ob[1] = sp130; + temp_v0[2].v.ob[2] = sp134; + temp_v0[2].v.tc[0] = 0; + temp_v0[2].v.tc[1] = 0x3E0; + + temp_v0[3].v.ob[0] = sp120; + temp_v0[3].v.ob[1] = sp124; + temp_v0[3].v.ob[2] = sp128; + temp_v0[3].v.tc[0] = 0x3E0; + temp_v0[3].v.tc[1] = 0x3E0; + + gSPDisplayList(arg0++, D_84388FF8); + gDPLoadTextureTile_4b(arg0++, D_843920C0[0xBA], G_IM_FMT_I, 32, 0, 0, 0, 31, 31, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, 15, G_TX_NOLOD); + gDPSetTileSize(arg0++, G_TX_RENDERTILE, D_843975E4, 0, D_843975E4 + 0x1F, 0x001F); + gDPLoadMultiTile_4b(arg0++, D_843920C0[0xBA], 0x0100, 1, G_IM_FMT_I, 32, 0, 0, 0, 31, 31, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, 14, G_TX_NOLOD); + gDPSetTileSize(arg0++, 1, -D_843975E4, 0, 0x1F - D_843975E4, 0x001F); + gSPVertex(arg0++, temp_v0, 4, 0); + gSP2Triangles(arg0++, 0, 2, 1, 0, 2, 3, 1, 0); + } + + return arg0; +} diff --git a/src/fragments/62/fragment62_34A420.c b/src/fragments/62/fragment62_34A420.c new file mode 100644 index 0000000..e4629a1 --- /dev/null +++ b/src/fragments/62/fragment62_34A420.c @@ -0,0 +1,1277 @@ +#include "fragment62.h" +#include "src/30640.h" +#include "src/6A40.h" +#include "src/math_util.h" +#include "include/math.h" + +typedef struct unk_D_84397610 { + /* 0x00 */ s16 unk_00; + /* 0x02 */ s16 unk_02; + /* 0x04 */ s16 unk_04; + /* 0x06 */ s16 unk_06; + /* 0x08 */ f32 unk_08; + /* 0x0C */ f32 unk_0C; + /* 0x10 */ f32 unk_10; + /* 0x14 */ f32 unk_14; + /* 0x18 */ f32 unk_18; + /* 0x1C */ f32 unk_1C; + /* 0x20 */ f32 unk_20; + /* 0x24 */ f32 unk_24; + /* 0x28 */ s16 unk_28; + /* 0x2A */ s16 unk_2A; + /* 0x2C */ Vtx* unk_2C; + /* 0x30 */ Color_RGB8 unk_30; + /* 0x33 */ Color_RGB8 unk_33; +} unk_D_84397610; // size = 0x38 + +typedef struct unk_D_84397648 { + /* 0x00 */ f32 unk_00; + /* 0x04 */ f32 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ f32 unk_0C; +} unk_D_84397648; // size = 0x10 + +static unk_D_84397610 D_84397610; +static unk_D_84397648 D_84397648[400]; +static s32 pad_D_84398F48[2]; +static unk_D_84398F50 D_84398F50[10]; + +static Gfx D_84389060[] = { + gsSPEndDisplayList(), +}; + +static u32 D_84389068[] = { + 0x08080808, 0x08080808, 0x0D0D0D0D, 0x0D0D0D0D, 0x2F2F2F2F, 0x2F2F2F2F, 0x6F6F6F6F, 0x6F6F6F6F, + 0x9F9F9F9F, 0x9F9F9F9F, 0xDFDFDFDF, 0xDFDFDFDF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xDFDFDFDF, 0xDFDFDFDF, 0x9F9F9F9F, 0x9F9F9F9F, + 0x6F6F6F6F, 0x6F6F6F6F, 0x2F2F2F2F, 0x2F2F2F2F, 0x0D0D0D0D, 0x0D0D0D0D, 0x08080808, 0x08080808, +}; + +void func_8435FB90(f32 arg0, f32 arg1, f32 arg2, f32 arg3, u8 arg4, u8 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9) { + unk_D_84397610* ptr1 = &D_84397610; + unk_D_84397648* ptr2; + s32 i; + + ptr1->unk_00 = 0; + ptr1->unk_02 = 0; + ptr1->unk_04 = 0; + ptr1->unk_06 = 0x46; + ptr1->unk_08 = arg0; + ptr1->unk_0C = arg1; + ptr1->unk_10 = arg2; + ptr1->unk_14 = arg3 * 40.0; + ptr1->unk_18 = arg3 * 20.0; + ptr1->unk_1C = 0.0f; + ptr1->unk_20 = arg3; + ptr1->unk_24 = 1.0f; + ptr1->unk_28 = 0; + ptr1->unk_2A = 0; + ptr1->unk_30.r = arg4; + ptr1->unk_30.g = arg5; + ptr1->unk_30.b = arg6; + ptr1->unk_33.r = arg7; + ptr1->unk_33.g = arg8; + ptr1->unk_33.b = arg9; + + ptr2 = &D_84397648[0]; + for (i = 0; i < 400; i++, ptr2++) { + ptr2->unk_00 = arg0; + ptr2->unk_04 = arg1; + ptr2->unk_08 = arg2; + ptr2->unk_0C = ptr1->unk_14; + } +} + +f32 func_8435FCD0(void) { + unk_D_84397610* ptr = &D_84397610; + f32 tmp; + s32 tmp2 = ptr->unk_00; + + if (tmp2 < (ptr->unk_06 - 0x34)) { + return 1.0f; + } + + if (ptr->unk_18 == 0.0f) { + return 1.0f; + } + + tmp = (D_84397648[ptr->unk_06 * 0].unk_0C * 2.0f) / (ptr->unk_14 + ptr->unk_18); + return tmp; +} + +s32 func_8435FD50(void) { + s32 i; + f32 spB8; + f32 temp_fs0_2; + f32 temp_fs4; + f32 temp_fs5; + f32 temp_ft0; + f32 var_fs1; + unk_D_84397648* var_s0; + unk_D_84397610* ptr = &D_84397610; + f32 sp98; + f32 sp94; + f32 sp90; + f32 tmp2; + s32 tmp00; + Vec3f sp7C; + + ptr->unk_00++; + if (ptr->unk_06 < ptr->unk_00) { + return -1; + } + + if ((ptr->unk_06 - 0x28) < ptr->unk_00) { + ptr->unk_00 = ptr->unk_06 - 0x34; + ptr->unk_02++; + if (ptr->unk_02 >= 0x15) { + return -1; + } + } else if (ptr->unk_00 < 0x1E) { + ptr->unk_2A += 10; + if (ptr->unk_2A > 0xC8) { + ptr->unk_2A = 0xC8; + } + } + + func_8432FB38(&sp7C); + sp98 = sp7C.x; + sp94 = sp7C.y; + sp90 = sp7C.z; + + ptr->unk_28 += 6; + if (ptr->unk_28 > 0xC8) { + ptr->unk_28 = 0xC8; + } + + if (((ptr->unk_06 - 0x34) < ptr->unk_00) && (ptr->unk_00 < (ptr->unk_06 - 0x28))) { + ptr->unk_24 -= 0.1; + if (ptr->unk_24 < 0.25) { + ptr->unk_24 = 0.25f; + } + } + + var_s0 = &D_84397648[0]; + + for (i = 0; i < ptr->unk_28; i++) { + tmp00 = ptr->unk_00; + + if ((ptr->unk_06 - 0x28) < tmp00) { + var_s0->unk_0C -= 6.0; + if (var_s0->unk_0C < ptr->unk_18) { + var_s0->unk_0C = ptr->unk_18; + } + // M_PI * 80 + var_fs1 = __sinf((((ptr->unk_00 + i) % 200) * 251.327419281005859) / 200.0) * 0.1; + } else if ((ptr->unk_06 - 0x2D) < tmp00) { + var_fs1 = __sinf((((ptr->unk_00 + i) % 200) * 251.327419281005859) / 200.0) + 2.0; + var_s0->unk_0C += var_fs1; + } else if ((ptr->unk_06 - 0x34) < tmp00) { + var_s0->unk_0C -= 8.0; + if (var_s0->unk_0C < ptr->unk_18) { + var_s0->unk_0C = ptr->unk_18; + } + var_fs1 = __sinf((((ptr->unk_00 + i) % 200) * 251.327419281005859) / 200.0) * 0.1; + } else { + // M_PI * 60 + var_fs1 = __sinf((((ptr->unk_00 + i) % 200) * 188.495564460754395) / 200.0); + var_s0->unk_0C += var_fs1; + } + + tmp2 = var_s0->unk_0C; + + // M_PI * 22 + temp_fs4 = (((tmp00 + i) % 200) * 69.1150403022766113) / 200.0; + // M_PI * 4 + temp_fs5 = (((tmp00 + i) % 200) * 12.566370964050293) / 200.0; + + spB8 = (__sinf(temp_fs4) * tmp2) + sp98; + temp_fs0_2 = (__sinf(temp_fs5) * (0.7 * tmp2)) + sp94; + temp_ft0 = __cosf(temp_fs4) * tmp2 + sp90; + + var_s0->unk_08 = temp_ft0; + var_s0->unk_04 = temp_fs0_2 + var_fs1; + var_s0->unk_00 = spB8; + var_s0++; + + var_s0->unk_00 = spB8; + var_s0->unk_04 = (2.0 * __sinf(temp_fs5 * 3.0)) + temp_fs0_2 + var_fs1; + var_s0->unk_08 = temp_ft0; + var_s0++; + } + + return 0; +} + +Gfx* func_8436032C(Gfx* arg0) { + static Gfx D_843890E8[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_LIGHTING | G_SHADING_SMOOTH), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, + TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0), + gsDPSetColorDither(G_CD_NOISE), + gsDPLoadTextureBlock(D_84389068, G_IM_FMT_IA, G_IM_SIZ_8b, 8, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 3, 4, G_TX_NOLOD, G_TX_NOLOD), + gsDPPipeSync(), + gsSPEndDisplayList(), + }; + + Vtx* vtx; + s32 i; + unk_D_84397648* var_a0; + unk_D_84397610* ptr = &D_84397610; + + if (ptr->unk_28 < 2) { + return arg0; + } + ptr->unk_2C = func_80005F5C(ptr->unk_28 * 2 * sizeof(Vtx)); + vtx = ptr->unk_2C; + var_a0 = &D_84397648[0]; + + for (i = 0; i < ptr->unk_28; i++) { + vtx->v.ob[0] = var_a0->unk_00; + if (var_a0->unk_04 > 0.0) { + vtx->v.ob[1] = var_a0->unk_04; + } else { + vtx->v.ob[1] = 0; + } + vtx->v.ob[2] = var_a0->unk_08; + + vtx->v.tc[0] = (i * 8) << 5; + vtx->v.tc[1] = 0; + + vtx++; + var_a0++; + + vtx->v.ob[0] = var_a0->unk_00; + if (var_a0->unk_04 > 0.0) { + vtx->v.ob[1] = var_a0->unk_04; + } else { + vtx->v.ob[1] = 0; + } + vtx->v.ob[2] = var_a0->unk_08; + + vtx->v.tc[0] = (i * 8) << 5; + vtx->v.tc[1] = 0x200; + + vtx++; + var_a0++; + } + + gSPDisplayList(arg0++, D_843890E8); + gDPSetPrimColor(arg0++, 0, 0, ptr->unk_30.r, ptr->unk_30.g, ptr->unk_30.b, 200); + gDPSetEnvColor(arg0++, ptr->unk_33.r, ptr->unk_33.g, ptr->unk_33.b, 0); + + vtx = ptr->unk_2C; + for (i = 0; i < ptr->unk_28 - 1; i++) { + gSPVertex(arg0++, vtx, 4, 0); + gSP2Triangles(arg0++, 0, 2, 1, 0, 2, 3, 1, 0); + vtx += 2; + } + + return arg0; +} + +void func_843605C0(void) { + s16 temp_v0; + s32 i; + s32 j; + unk_D_84398F50* var_a2; + unk_D_84398F50_048* var_v1; + + temp_v0 = func_8436E944(); + var_a2 = &D_84398F50[0]; + + for (i = 0; i < 10; i++) { + var_a2->unk_000 = 0; + var_a2->unk_004 = 0; + var_a2->unk_006 = 0; + + var_v1 = &var_a2->unk_048[0]; + for (j = 0; j < 20; j++, var_v1++) { + var_v1->unk_00 = 0.0f; + var_v1->unk_04 = 0; + var_v1->unk_08 = 1.0f; + var_v1->unk_0C = 0.0f; + var_v1->unk_10.x = 0.0f; + var_v1->unk_10.y = 0.0f; + var_v1->unk_10.z = 0.0f; + var_v1->unk_1C.x = 0.0f; + var_v1->unk_1C.y = 0.0f; + var_v1->unk_1C.z = 0.0f; + } + + var_a2->unk_002 = temp_v0; + var_a2++; + } +} + +void func_843606D0(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, s16 arg6, u8 arg7, u8 arg8, u8 arg9, + u8 argA, f32 argB, f32 argC, f32 argD, s16 argE) { + unk_D_84398F50* var_v0; + unk_D_84398F50_048* var_a1_2; + s32 i; + s32 j; + Vec3f sp14; + Vec3f sp8; + + sp14.x = arg0; + sp14.y = arg1; + sp14.z = arg2; + sp8.x = arg3; + sp8.y = arg4; + sp8.z = arg5; + + var_v0 = &D_84398F50[0]; + + for (i = 0; i < 10; i++, var_v0++) { + if (var_v0->unk_000 == 0) { + var_v0->unk_000 = 1; + var_v0->unk_004 = 0; + var_v0->unk_006 = argE; + var_v0->unk_008 = arg6; + var_v0->unk_00A.r = arg7; + var_v0->unk_00A.g = arg8; + var_v0->unk_00A.b = arg9; + var_v0->unk_00A.a = argA; + var_v0->unk_014 = argD; + var_v0->unk_018 = argB; + + // clang-format off + for (j = 0; j < 3; j++) { var_v0->unk_038[j] = 0; } + // clang-format on + + var_a1_2 = &var_v0->unk_048[0]; + for (j = 0; j < 20; j++) { + var_a1_2->unk_00 = j; + if (j == 0) { + var_a1_2->unk_04 = 0xFF; + } else { + var_a1_2->unk_04 = (argA * (0x13 - j)) / 20; + } + var_a1_2->unk_08 = argC; + var_a1_2->unk_0C = 0.0f; + var_a1_2->unk_10 = sp14; + var_a1_2->unk_1C = sp8; + var_a1_2++; + } + break; + } + } +} + +void func_8436090C(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, s16 arg6, u8 arg7, u8 arg8, u8 arg9, + u8 argA, f32 argB, f32 argC, f32 argD, s16 argE) { + unk_D_84398F50* var_v0; + unk_D_84398F50_048* var_v1_2; + s32 i; + s32 j; + Vec3f spC; + Vec3f sp0; + + spC.x = arg0; + spC.y = arg1; + spC.z = arg2; + sp0.x = arg3; + sp0.y = arg4; + sp0.z = arg5; + + var_v0 = &D_84398F50[0]; + + for (i = 0; i < 10; i++, var_v0++) { + if (var_v0->unk_000 == 0) { + var_v0->unk_000 = 1; + var_v0->unk_004 = 0; + var_v0->unk_006 = argE; + var_v0->unk_008 = arg6; + var_v0->unk_00A.r = arg7; + var_v0->unk_00A.g = arg8; + var_v0->unk_00A.b = arg9; + var_v0->unk_014 = argD; + var_v0->unk_018 = argB; + + var_v1_2 = &var_v0->unk_048[0]; + for (j = 0; j < 20; j++, var_v1_2++) { + var_v1_2->unk_00 = j; + var_v1_2->unk_04 = argA; + var_v1_2->unk_08 = argC; + var_v1_2->unk_0C = 0.0f; + var_v1_2->unk_10 = spC; + var_v1_2->unk_1C = sp0; + } + break; + } + } +} + +void func_84360B10(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, s16 arg6, u8 arg7, u8 arg8, u8 arg9, + u8 argA, u8 argB, u8 argC, u8 argD, f32 argE, f32 argF, f32 arg10, s16 arg11) { + unk_D_84398F50* var_v0; + unk_D_84398F50_048* var_s0; + s32 i; + s32 j; + Vec3f spBC; + Vec3f spB0; + s32 temp_fp; + s32 temp_s2; + s32 spA4; + s32 temp_s3; + s32 temp_s4; + s32 temp_s7; + s32 tmp; + + spBC.x = arg0; + spBC.y = arg1; + spBC.z = arg2; + spB0.x = arg3; + spB0.y = arg4; + spB0.z = arg5; + + var_v0 = &D_84398F50[0]; + + for (i = 0; i < 10; i++, var_v0++) { + if (var_v0->unk_000 == 0) { + var_s0 = &var_v0->unk_048[0]; + + var_v0->unk_000 = 1; + var_v0->unk_004 = 0; + var_v0->unk_006 = arg11; + var_v0->unk_008 = arg6; + var_v0->unk_00A.r = arg7; + var_v0->unk_00A.g = arg8; + var_v0->unk_00A.b = arg9; + var_v0->unk_00A.a = argA; + var_v0->unk_00E.r = argB; + var_v0->unk_00E.g = argC; + var_v0->unk_00E.b = argD; + var_v0->unk_014 = arg10; + var_v0->unk_018 = argE; + + temp_s7 = (guRandom() % 20) + 2; + temp_fp = (guRandom() % 10) + 4; + spA4 = (guRandom() % 20) + 2; + temp_s4 = (guRandom() % 10) + 4; + + for (j = 0, temp_s3 = temp_s7, temp_s2 = spA4; j < 20; j++) { + var_s0->unk_00 = j; + var_s0->unk_04 = argA; + var_s0->unk_08 = argF; + var_s0->unk_0C = 0.0f; + var_s0->unk_10 = spBC; + var_s0->unk_1C = spB0; + + var_s0->unk_1C.y += 2.0 * __sinf(((temp_s3 % temp_fp) * TWO_PI) / temp_fp) * + __sinf(((temp_s2 % (temp_s4 + 0x14)) * TWO_PI) / (temp_s4 + 0x14)); + var_s0->unk_1C.z += 0.5 * __sinf(((temp_s2 % temp_s4) * TWO_PI) / temp_s4); + tmp = j * 0.5; + var_s0->unk_10.x += var_s0->unk_1C.x * ((j * 0.5) - tmp); + + temp_s2++; + temp_s3++; + var_s0++; + } + break; + } + } +} + +void func_84360EFC(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, s16 arg6, u8 arg7, u8 arg8, u8 arg9, + u8 argA, u8 argB, u8 argC, u8 argD, f32 argE, f32 argF, f32 arg10, s16 arg11) { + unk_D_84398F50* var_v0; + unk_D_84398F50_048* var_s0; + s32 i; + s32 j; + Vec3f spBC; + Vec3f spB0; + s32 temp_fp; + s32 temp_s2; + s32 spA4; + s32 temp_s3; + s32 temp_s4; + s32 temp_s7; + s32 tmp; + + spBC.x = arg0; + spBC.y = arg1; + spBC.z = arg2; + spB0.x = arg3; + spB0.y = arg4; + spB0.z = arg5; + + var_v0 = &D_84398F50[0]; + + for (i = 0; i < 10; i++, var_v0++) { + if (var_v0->unk_000 == 0) { + var_s0 = &var_v0->unk_048[0]; + + var_v0->unk_000 = 1; + var_v0->unk_004 = 0; + var_v0->unk_006 = arg11; + var_v0->unk_008 = arg6; + var_v0->unk_00A.r = arg7; + var_v0->unk_00A.g = arg8; + var_v0->unk_00A.b = arg9; + var_v0->unk_00A.a = argA; + var_v0->unk_00E.r = argB; + var_v0->unk_00E.g = argC; + var_v0->unk_00E.b = argD; + var_v0->unk_014 = arg10; + var_v0->unk_018 = argE; + + temp_s7 = (guRandom() % 20) + 2; + temp_fp = (guRandom() % 10) + 4; + spA4 = (guRandom() % 20) + 2; + temp_s4 = (guRandom() % 10) + 4; + + for (j = 0, temp_s3 = temp_s7, temp_s2 = spA4; j < 20; j++) { + var_s0->unk_00 = j; + var_s0->unk_04 = argA; + var_s0->unk_08 = argF; + var_s0->unk_0C = 0.0f; + var_s0->unk_10 = spBC; + var_s0->unk_1C = spB0; + + var_s0->unk_1C.z += 2.5 * __sinf(((temp_s3 % temp_fp) * TWO_PI) / temp_fp) * + __sinf(((temp_s2 % (temp_s4 + 0x14)) * TWO_PI) / (temp_s4 + 0x14)); + var_s0->unk_1C.y += 0.5 * __sinf(((temp_s2 % temp_s4) * TWO_PI) / temp_s4); + tmp = j * 0.5; + var_s0->unk_10.x += var_s0->unk_1C.x * ((j * 0.5) - tmp); + + temp_s2++; + temp_s3++; + var_s0++; + } + break; + } + } +} + +#ifdef NON_MATCHING +void func_843612F8(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, s16 arg6, u8 arg7, u8 arg8, u8 arg9, + u8 argA, f32 argB, f32 argC, f32 argD, s16 argE) { + unk_D_84398F50* var_v0; + unk_D_84398F50_048* var_s0; + s32 i; + s32 j; + Vec3f spBC; + Vec3f spB0; + s32 temp_fp; + s32 temp_s2; + s32 temp_s3; + s32 temp_s5; + s32 temp_s6; + s32 temp_s7; + f32 idx1; + f32 idx2; + + spBC.x = arg0; + spBC.y = arg1; + spBC.z = arg2; + spB0.x = arg3; + spB0.y = arg4; + spB0.z = arg5; + + var_v0 = &D_84398F50[0]; + + for (i = 0; i < 10; i++, var_v0++) { + if (var_v0->unk_000 == 0) { + var_s0 = &var_v0->unk_048[0]; + + var_v0->unk_000 = 1; + var_v0->unk_004 = 0; + var_v0->unk_006 = argE; + var_v0->unk_008 = arg6; + var_v0->unk_00A.r = arg7; + var_v0->unk_00A.g = arg8; + var_v0->unk_00A.b = arg9; + var_v0->unk_014 = argD; + var_v0->unk_018 = argB; + + temp_s5 = RAND(20) + 2; + temp_s7 = RAND(10) + 4; + temp_s6 = RAND(20) + 2; + temp_fp = RAND(10) + 4; + + for (j = 0, temp_s2 = temp_s6, temp_s3 = temp_s5; j < 20; j++) { + var_s0->unk_00 = j; + var_s0->unk_04 = argA; + var_s0->unk_08 = argC; + var_s0->unk_0C = 0.0f; + var_s0->unk_10 = spBC; + + idx1 = ((temp_s2 % (temp_fp + 20)) * TWO_PI) / (temp_fp + 20); + idx2 = ((temp_s3 % temp_s7) * TWO_PI) / temp_s7; + + var_s0->unk_10.y += 5.0 * __sinf(idx2) * __sinf(idx1); + var_s0->unk_10.z += 5.0 * __cosf(idx2) * __cosf(idx1); + var_s0->unk_1C = spB0; + + var_s0->unk_10.x += var_s0->unk_1C.x * ((j * 0.5) - (s32)(j * 0.5)); + + temp_s2++; + temp_s3++; + var_s0++; + } + break; + } + } +} +#else +#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34A420/func_843612F8.s") +#endif + +void func_843616B0(f32 arg0, UNUSED Vec3f* arg1, Vec3f* arg2, f32 arg3, UNUSED f32 arg4, UNUSED f32 arg5, + UNUSED f32 arg6) { + UNUSED MtxF pad; + MtxF sp30; + UNUSED s32 pad2[2]; + + guRotateF(sp30.mf, (arg0 * 360.0) / TWO_PI, 1.0f, 0.0f, 0.0f); + guMtxXFMF(sp30.mf, 0.0f, 0.0f, arg3, &arg2->x, &arg2->y, &arg2->z); +} + +void func_84361744(unk_D_84398F50* arg0) { + unk_D_84398F50_048* var_v0; + UNUSED s32 pad; + s32 i; + Vec3f sp28; + + func_8432FBBC(&sp28); + + switch (arg0->unk_008) { + case 0: + var_v0 = &arg0->unk_048[0]; + for (i = 0; i < 20; i++, var_v0++) { + if (var_v0->unk_00 > 0.0) { + var_v0->unk_00 -= 1.0; + } else { + var_v0->unk_10.x += var_v0->unk_1C.x; + var_v0->unk_10.y += var_v0->unk_1C.y; + var_v0->unk_10.z += var_v0->unk_1C.z; + var_v0->unk_0C += arg0->unk_018; + + var_v0->unk_08 += 1.0; + if (arg0->unk_014 < var_v0->unk_08) { + var_v0->unk_08 = arg0->unk_014; + } + } + } + break; + + case 3: + var_v0 = &arg0->unk_048[0]; + for (i = 0; i < 20; i++, var_v0++) { + if (var_v0->unk_00 > 0.0) { + var_v0->unk_10 = sp28; + var_v0->unk_00 -= 1.0; + } else { + var_v0->unk_10.x += var_v0->unk_1C.x; + var_v0->unk_10.y += var_v0->unk_1C.y; + var_v0->unk_10.z += var_v0->unk_1C.z; + + var_v0->unk_0C += arg0->unk_018; + + if (var_v0->unk_1C.x > 1.0) { + var_v0->unk_1C.x -= 0.1; + } + + if (var_v0->unk_1C.x < -1.0) { + var_v0->unk_1C.x += 0.1; + } + + var_v0->unk_1C.y -= 0.2; + if (var_v0->unk_1C.y < -1.0) { + var_v0->unk_1C.y = -1.0f; + } + + if (var_v0->unk_10.y < 0.0) { + var_v0->unk_10.y = 0.0f; + } + } + } + break; + + default: + var_v0 = &arg0->unk_048[0]; + for (i = 0; i < 20; i++, var_v0++) { + if (var_v0->unk_00 > 0.0) { + var_v0->unk_10 = sp28; + var_v0->unk_00 -= 1.0; + } else { + var_v0->unk_10.x += var_v0->unk_1C.x; + var_v0->unk_10.y = sp28.y; + var_v0->unk_10.z = sp28.z; + + var_v0->unk_0C += arg0->unk_018; + var_v0->unk_08 += 1.0; + + if (arg0->unk_014 < var_v0->unk_08) { + var_v0->unk_08 = arg0->unk_014; + } + } + } + break; + + case 6: + var_v0 = &arg0->unk_048[0]; + for (i = 0; i < 20; i++, var_v0++) { + if (var_v0->unk_00 > 0.0) { + var_v0->unk_10 = sp28; + var_v0->unk_00 -= 1.0; + } else { + var_v0->unk_10.x += var_v0->unk_1C.x; + var_v0->unk_10.y += var_v0->unk_1C.y; + var_v0->unk_10.z += var_v0->unk_1C.z; + + var_v0->unk_0C += arg0->unk_018; + var_v0->unk_08 += 1.0; + + if (arg0->unk_014 < var_v0->unk_08) { + var_v0->unk_08 = arg0->unk_014; + } + } + } + break; + + case 7: + case 8: + var_v0 = &arg0->unk_048[0]; + for (i = 0; i < 20; i++, var_v0++) { + if (var_v0->unk_00 > 0.0) { + var_v0->unk_00 -= 1.0; + } else { + var_v0->unk_10.x += var_v0->unk_1C.x; + var_v0->unk_10.y += var_v0->unk_1C.y; + var_v0->unk_10.z += var_v0->unk_1C.z; + + var_v0->unk_0C += arg0->unk_018; + var_v0->unk_08 += 1.0; + + if (arg0->unk_014 < var_v0->unk_08) { + var_v0->unk_08 = arg0->unk_014; + } + } + } + break; + + case 2: + case 4: + var_v0 = &arg0->unk_048[0]; + for (i = 0; i < 20; i++, var_v0++) { + if (var_v0->unk_00 > 0.0) { + var_v0->unk_00 -= 1.0; + } else { + var_v0->unk_10.x += var_v0->unk_1C.x; + var_v0->unk_10.y += var_v0->unk_1C.y; + var_v0->unk_10.z += var_v0->unk_1C.z; + + var_v0->unk_0C += arg0->unk_018; + var_v0->unk_08 += 1.0; + + if (arg0->unk_014 < var_v0->unk_08) { + var_v0->unk_08 = arg0->unk_014; + } + } + } + break; + } +} + +s32 func_84361FB0(void) { + s32 i; + s32 var_s2 = 0; + unk_D_84398F50* var_s0 = D_84398F50; + + for (i = 0; i < 10; i++, var_s0++) { + if (var_s0->unk_000 == 1) { + var_s0->unk_004++; + if (var_s0->unk_006 < var_s0->unk_004) { + var_s0->unk_000 = 0; + if (var_s0->unk_008 == 8) {} + } else { + func_84361744(var_s0); + var_s2++; + } + func_8436EB54(var_s0->unk_002); + } + } + + if (var_s2 > 0) { + return 0; + } + return -1; +} + +static s32 pad_D_84389178[2] = { 0, 0 }; + +static Gfx D_84389180[] = { + gsSPEndDisplayList(), +}; + +static u32 D_84389188[] = { + 0x08080808, 0x08080808, 0x0D0D0D0D, 0x0D0D0D0D, 0x2F2F2F2F, 0x2F2F2F2F, 0x6F6F6F6F, 0x6F6F6F6F, + 0x9F9F9F9F, 0x9F9F9F9F, 0xDFDFDFDF, 0xDFDFDFDF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xDFDFDFDF, 0xDFDFDFDF, 0x9F9F9F9F, 0x9F9F9F9F, + 0x6F6F6F6F, 0x6F6F6F6F, 0x2F2F2F2F, 0x2F2F2F2F, 0x0D0D0D0D, 0x0D0D0D0D, 0x08080808, 0x08080808, +}; + +#ifdef NON_MATCHING +Gfx* func_84362084(Gfx* arg0) { + static Gfx D_84389208[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_LIGHTING | G_SHADING_SMOOTH), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, + TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0), + gsDPSetColorDither(G_CD_NOISE), + gsDPLoadTextureBlock(D_84389068, G_IM_FMT_IA, G_IM_SIZ_8b, 8, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 3, 4, G_TX_NOLOD, G_TX_NOLOD), + gsSPEndDisplayList(), + }; + static Gfx D_84389290[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetColorDither(G_CD_NOISE), + gsSPEndDisplayList(), + }; + static u8 D_843892E0[] = { 0xFF, 0, 0xFF }; + static u8 D_843892E4[] = { 0x20, 0x20, 0xFF }; + static u8 D_843892E8[] = { 0, 0xFF, 0 }; + static f32 D_843892EC[] = { 1.0f, 1.73205f, 1.0f, 0.0f, 0.0f }; + + s32 i; + s32 j; + s32 x; + s32 y; + u8 sp1BC; + unk_D_84398F50* sp1B4; + Vec3f sp1A0; + unk_D_84398F50_048* var_s2; + Vtx* vtx; + + sp1BC = 1; + if (sp1BC) {} + sp1B4 = D_84398F50; + + for (i = 0; i < 10; i++, sp1B4++) { + if (sp1B4->unk_000 != 1) { + continue; + } + + var_s2 = &sp1B4->unk_048[0]; + if (var_s2) {} + + switch (sp1B4->unk_008) { + case 0: + case 3: + vtx = func_80005F5C(sizeof(Vtx) * 40); + sp1B4->unk_01C = vtx; + + for (j = 0; j < 20; j++, var_s2++) { + func_843616B0(var_s2->unk_0C, &var_s2->unk_1C, &sp1A0, var_s2->unk_08, 1.0f, 0.0f, 0.0f); + + vtx->v.ob[0] = var_s2->unk_10.x + sp1A0.x; + vtx->v.ob[1] = var_s2->unk_10.y + sp1A0.y; + vtx->v.ob[2] = var_s2->unk_10.z + sp1A0.z; + vtx->v.tc[0] = (j * 8) << 5; + vtx->v.tc[1] = 0; + vtx++; + + if (var_s2->unk_00 <= 0.0) { + func_843616B0(var_s2->unk_0C + M_PI_F, &var_s2->unk_1C, &sp1A0, var_s2->unk_08, 1.0f, 0.0f, + 0.0f); + } + + vtx->v.ob[0] = var_s2->unk_10.x + sp1A0.x; + vtx->v.ob[1] = var_s2->unk_10.y + sp1A0.y; + vtx->v.ob[2] = var_s2->unk_10.z + sp1A0.z; + vtx->v.tc[0] = (j * 8) << 5; + vtx->v.tc[1] = 0x200; + vtx++; + } + break; + + case 1: + vtx = func_80005F5C(sizeof(Vtx) * 60); + sp1B4->unk_01C = vtx; + + for (j = 0; j < 20; j++, var_s2++) { + func_843616B0(var_s2->unk_0C, &var_s2->unk_1C, &sp1A0, var_s2->unk_08, 1.0f, 0.0f, 0.0f); + + vtx->v.ob[0] = var_s2->unk_10.x + sp1A0.x; + vtx->v.ob[1] = var_s2->unk_10.y + sp1A0.y; + vtx->v.ob[2] = var_s2->unk_10.z + sp1A0.z; + vtx->v.cn[0] = 0xFF; + vtx->v.cn[1] = 0x40; + vtx->v.cn[2] = 0x40; + vtx->v.cn[3] = var_s2->unk_04; + vtx++; + + if (var_s2->unk_00 <= 0.0) { + func_843616B0(var_s2->unk_0C + TWO_THIRDS_PI, &var_s2->unk_1C, &sp1A0, var_s2->unk_08, 1.0f, + 0.0f, 0.0f); + } + + vtx->v.ob[0] = var_s2->unk_10.x + sp1A0.x; + vtx->v.ob[1] = var_s2->unk_10.y + sp1A0.y; + vtx->v.ob[2] = var_s2->unk_10.z + sp1A0.z; + vtx->v.cn[0] = 0; + vtx->v.cn[1] = 0xA0; + vtx->v.cn[2] = 0xFF; + vtx->v.cn[3] = var_s2->unk_04; + vtx++; + + if (var_s2->unk_00 <= 0.0) { + func_843616B0(var_s2->unk_0C + TWO_THIRDS_PI * 2, &var_s2->unk_1C, &sp1A0, var_s2->unk_08, 1.0f, + 0.0f, 0.0f); + } + + vtx->v.ob[0] = var_s2->unk_10.x + sp1A0.x; + vtx->v.ob[1] = var_s2->unk_10.y + sp1A0.y; + vtx->v.ob[2] = var_s2->unk_10.z + sp1A0.z; + vtx->v.cn[0] = 0xFF; + vtx->v.cn[1] = 0xFF; + vtx->v.cn[2] = 0; + vtx->v.cn[3] = var_s2->unk_04; + vtx++; + } + break; + + case 5: + vtx = func_80005F5C(sizeof(Vtx) * 60); + sp1B4->unk_01C = vtx; + + for (j = 0; j < 20; j++, var_s2++) { + func_843616B0(var_s2->unk_0C, &var_s2->unk_1C, &sp1A0, var_s2->unk_08, 1.0f, 0.0f, 0.0f); + + vtx->v.ob[0] = var_s2->unk_10.x + sp1A0.x; + vtx->v.ob[1] = var_s2->unk_10.y + sp1A0.y; + vtx->v.ob[2] = var_s2->unk_10.z + sp1A0.z; + vtx->v.cn[0] = sp1B4->unk_00A.r; + vtx->v.cn[1] = sp1B4->unk_00A.g; + vtx->v.cn[2] = sp1B4->unk_00A.b; + vtx->v.cn[3] = var_s2->unk_04; + vtx++; + + if (var_s2->unk_00 <= 0.0) { + func_843616B0(var_s2->unk_0C + TWO_THIRDS_PI, &var_s2->unk_1C, &sp1A0, var_s2->unk_08, 1.0f, + 0.0f, 0.0f); + } + + vtx->v.ob[0] = var_s2->unk_10.x + sp1A0.x; + vtx->v.ob[1] = var_s2->unk_10.y + sp1A0.y; + vtx->v.ob[2] = var_s2->unk_10.z + sp1A0.z; + vtx->v.cn[0] = sp1B4->unk_00A.r; + vtx->v.cn[1] = sp1B4->unk_00A.g; + vtx->v.cn[2] = sp1B4->unk_00A.b; + vtx->v.cn[3] = var_s2->unk_04; + vtx++; + + if (var_s2->unk_00 <= 0.0) { + func_843616B0(var_s2->unk_0C + TWO_THIRDS_PI * 2, &var_s2->unk_1C, &sp1A0, var_s2->unk_08, 1.0f, + 0.0f, 0.0f); + } + + vtx->v.ob[0] = var_s2->unk_10.x + sp1A0.x; + vtx->v.ob[1] = var_s2->unk_10.y + sp1A0.y; + vtx->v.ob[2] = var_s2->unk_10.z + sp1A0.z; + vtx->v.cn[0] = sp1B4->unk_00A.r; + vtx->v.cn[1] = sp1B4->unk_00A.g; + vtx->v.cn[2] = sp1B4->unk_00A.b; + vtx->v.cn[3] = var_s2->unk_04; + vtx++; + } + break; + + case 6: + case 7: + vtx = func_80005F5C(sizeof(Vtx) * 20 * 6); + sp1B4->unk_01C = vtx; + + for (j = 0; j < 20; j++, var_s2++) { + for (x = 0; x < 6; x++) { + func_843616B0(var_s2->unk_0C + ((2.0 * x * M_PI) / 6.0), &var_s2->unk_1C, &sp1A0, + var_s2->unk_08, 1.0f, 0.0f, 0.0f); + + vtx->v.ob[0] = var_s2->unk_10.x + sp1A0.x; + vtx->v.ob[1] = var_s2->unk_10.y + sp1A0.y; + vtx->v.ob[2] = var_s2->unk_10.z + sp1A0.z; + vtx->v.cn[0] = sp1B4->unk_00A.r; + vtx->v.cn[1] = sp1B4->unk_00A.g; + vtx->v.cn[2] = sp1B4->unk_00A.b; + vtx->v.cn[3] = 0x64; + vtx++; + } + } + break; + + case 8: + vtx = func_80005F5C(sizeof(Vtx) * 20 * 3 * 3); + sp1B4->unk_01C = vtx; + + for (j = 0; j < 20; j++, var_s2++) { + for (x = 0; x < 3; x++) { + for (y = 0; y < 3; y++) { + f32 x1, y1, z1; + + func_843616B0(var_s2->unk_0C + ((TWO_PI_F * y) / 12.0f) + ((TWO_PI_F * x) / 3.0f), + &var_s2->unk_1C, &sp1A0, D_843892EC[y] * var_s2->unk_08, 1.0f, 0.0f, 0.0f); + + x1 = var_s2->unk_10.x + sp1A0.x; + y1 = var_s2->unk_10.y + sp1A0.y; + z1 = var_s2->unk_10.z + sp1A0.z; + + vtx->v.ob[0] = x1; + vtx->v.ob[1] = y1; + vtx->v.ob[2] = z1; + + if ((y == 0) && (RAND(100) == 0)) { + func_8436EA0C(sp1B4->unk_002, x1, y1, z1, 0xA, 0.75f); + } + + vtx->v.cn[0] = ((D_843892E0[x] * (0xFF - var_s2->unk_04)) + (var_s2->unk_04 * 0xFF)) / 255; + vtx->v.cn[1] = ((D_843892E4[x] * (0xFF - var_s2->unk_04)) + (var_s2->unk_04 * 0xFF)) / 255; + vtx->v.cn[2] = ((D_843892E8[x] * (0xFF - var_s2->unk_04)) + (var_s2->unk_04 * 0xFF)) / 255; + vtx->v.cn[3] = var_s2->unk_04; + vtx++; + } + } + } + break; + + case 2: + case 4: + vtx = func_80005F5C(sizeof(Vtx) * 20 * 15); + sp1B4->unk_01C = vtx; + + for (j = 0; j < 20; j++, var_s2++) { + for (x = 0; x < 15; x++) { + if (var_s2->unk_00 <= 0.0) { + func_843616B0(var_s2->unk_0C + ((2.0 * x * M_PI) / 15.0), &var_s2->unk_1C, &sp1A0, + var_s2->unk_08, 1.0f, 0.0f, 0.0f); + } + + vtx->v.ob[0] = var_s2->unk_10.x + sp1A0.x; + vtx->v.ob[1] = var_s2->unk_10.y + sp1A0.y; + vtx->v.ob[2] = var_s2->unk_10.z + sp1A0.z; + vtx->v.cn[0] = sp1B4->unk_00A.r; + vtx->v.cn[1] = sp1B4->unk_00A.g; + vtx->v.cn[2] = sp1B4->unk_00A.b; + vtx->v.cn[3] = var_s2->unk_04; + vtx++; + } + } + break; + } + + vtx = sp1B4->unk_01C; + for (x = 0; x < 19; x++) { + switch (sp1B4->unk_008) { + case 0: + case 3: + gSPDisplayList(arg0++, D_84389208); + gDPSetPrimColor(arg0++, 0, 0, sp1B4->unk_00A.r, sp1B4->unk_00A.g, sp1B4->unk_00A.b, + sp1B4->unk_00A.a); + gDPSetEnvColor(arg0++, sp1B4->unk_00E.r, sp1B4->unk_00E.g, sp1B4->unk_00E.b, 0); + gSPVertex(arg0++, vtx, 4, 0); + gSP2Triangles(arg0++, 0, 2, 1, 0, 2, 3, 1, 0); + vtx += 2; + break; + + default: + gSPDisplayList(arg0++, D_84389290); + gSPClearGeometryMode(arg0++, G_CULL_BOTH); + gSPSetGeometryMode(arg0++, G_CULL_FRONT); + gSPVertex(arg0++, vtx, 6, 0); + gSP2Triangles(arg0++, 0, 3, 1, 0, 3, 4, 1, 0); + gSP2Triangles(arg0++, 1, 4, 2, 0, 4, 5, 2, 0); + gSP2Triangles(arg0++, 2, 5, 0, 0, 5, 3, 0, 0); + vtx += 3; + break; + + case 6: + case 7: + gSPDisplayList(arg0++, D_84389290); + gSPClearGeometryMode(arg0++, G_CULL_BOTH); + gSPSetGeometryMode(arg0++, G_CULL_FRONT); + gSPVertex(arg0++, vtx, 12, 0); + gSP2Triangles(arg0++, 0, 6, 1, 0, 1, 6, 7, 0); + + for (j = 0; j < 1; j++) { + u8 idx = j * 1 + 1; + gSP2Triangles(arg0++, idx + 0, idx + 6, idx + 1, 0, idx + 1, idx + 6, idx + 7, 0); + gSP2Triangles(arg0++, idx + 1, idx + 7, idx + 2, 0, idx + 2, idx + 7, idx + 8, 0); + gSP2Triangles(arg0++, idx + 2, idx + 8, idx + 3, 0, idx + 3, idx + 8, idx + 9, 0); + gSP2Triangles(arg0++, idx + 3, idx + 9, idx + 4, 0, idx + 4, idx + 9, idx + 10, 0); + } + + gSP2Triangles(arg0++, 5, 11, 0, 0, 0, 11, 6, 0); + vtx += 6; + break; + + case 2: + case 4: + gSPDisplayList(arg0++, D_84389290); + gSPVertex(arg0++, vtx, 30, 0); + gSP2Triangles(arg0++, 0, 15, 1, 0, 15, 16, 1, 0); + gSP2Triangles(arg0++, 1, 16, 2, 0, 16, 17, 2, 0); + + for (j = 0; j < 3; j++) { + gSP2Triangles(arg0++, 2 + j * 4, 17 + j * 4, 3 + j * 4, 0, 17 + j * 4, 18 + j * 4, 3 + j * 4, + 0); + gSP2Triangles(arg0++, 3 + j * 4, 18 + j * 4, 4 + j * 4, 0, 18 + j * 4, 19 + j * 4, 4 + j * 4, + 0); + gSP2Triangles(arg0++, 4 + j * 4, 19 + j * 4, 5 + j * 4, 0, 19 + j * 4, 20 + j * 4, 5 + j * 4, + 0); + gSP2Triangles(arg0++, 5 + j * 4, 20 + j * 4, 6 + j * 4, 0, 20 + j * 4, 21 + j * 4, 6 + j * 4, + 0); + } + + gSP2Triangles(arg0++, 14, 29, 0, 0, 29, 15, 0, 0); + vtx += 15; + break; + + case 8: + gSPDisplayList(arg0++, D_84389290); + gSPClearGeometryMode(arg0++, G_CULL_BOTH); + gSPSetGeometryMode(arg0++, G_CULL_FRONT); + gSPVertex(arg0++, vtx, 18, 0); + + for (j = 0; j < 3; j++) { + u8 idx = j * 3; + gSP2Triangles(arg0++, 0 + idx, 9 + idx, 1 + idx, 0, 1 + idx, 9 + idx, 10 + idx, 0); + gSP2Triangles(arg0++, 1 + idx, 10 + idx, 2 + idx, 0, 2 + idx, 10 + idx, 11 + idx, 0); + gSP2Triangles(arg0++, 2 + idx, 11 + idx, 0 + idx, 0, 0 + idx, 11 + idx, 9 + idx, 0); + } + + vtx += 9; + break; + } + } + + vtx = sp1B4->unk_01C; + for (x = 0; x < 19; x++) { + switch (sp1B4->unk_008) { + case 0: + case 2: + case 3: + case 4: + break; + + default: + case 1: + case 5: + gSPDisplayList(arg0++, D_84389290); + gSPClearGeometryMode(arg0++, G_CULL_BOTH); + gSPSetGeometryMode(arg0++, G_CULL_BACK); + gSPVertex(arg0++, vtx, 6, 0); + gSP2Triangles(arg0++, 0, 3, 1, 0, 3, 4, 1, 0); + gSP2Triangles(arg0++, 1, 4, 2, 0, 4, 5, 2, 0); + gSP2Triangles(arg0++, 2, 5, 0, 0, 5, 3, 0, 0); + vtx += 3; + break; + + case 6: + case 7: + gSPDisplayList(arg0++, D_84389290); + gSPClearGeometryMode(arg0++, G_CULL_BOTH); + gSPSetGeometryMode(arg0++, G_CULL_BACK); + gSPVertex(arg0++, vtx, 12, 0); + gSP2Triangles(arg0++, 0, 6, 1, 0, 1, 6, 7, 0); + + for (j = 1; j < 2; j++) { + s32 idx = j * 4; + gSP2Triangles(arg0++, idx + 0, idx + 6, idx + 1, 0, idx + 1, idx + 6, idx + 7, 0); + gSP2Triangles(arg0++, idx + 1, idx + 7, idx + 2, 0, idx + 2, idx + 7, idx + 8, 0); + gSP2Triangles(arg0++, idx + 2, idx + 8, idx + 3, 0, idx + 3, idx + 8, idx + 9, 0); + gSP2Triangles(arg0++, idx + 3, idx + 9, idx + 4, 0, idx + 4, idx + 9, idx + 10, 0); + } + + gSP2Triangles(arg0++, 5, 11, 0, 0, 0, 11, 6, 0); + vtx += 6; + break; + + case 8: + gSPDisplayList(arg0++, D_84389290); + gSPClearGeometryMode(arg0++, G_CULL_BOTH); + gSPSetGeometryMode(arg0++, G_CULL_BACK); + gSPVertex(arg0++, vtx, 18, 0); + + for (j = 0; j < 3; j++) { + gSP2Triangles(arg0++, j * 3 + 0, j * 3 + 9, j * 3 + 1, 0, j * 3 + 1, j * 3 + 9, j * 3 + 10, 0); + gSP2Triangles(arg0++, j * 3 + 1, j * 3 + 10, j * 3 + 2, 0, j * 3 + 2, j * 3 + 10, j * 3 + 11, + 0); + gSP2Triangles(arg0++, j * 3 + 2, j * 3 + 11, j * 3 + 0, 0, j * 3 + 0, j * 3 + 11, j * 3 + 9, 0); + } + + vtx += 9; + break; + } + } + + if (sp1B4->unk_008 == 8) { + gSPDisplayList(arg0++, D_84389290); + gSPClearGeometryMode(arg0++, G_CULL_BOTH); + gSPVertex(arg0++, sp1B4->unk_01C, 9, 0); + gSP2Triangles(arg0++, 2, 1, 0, 0, 5, 4, 3, 0); + gSP1Triangle(arg0++, 8, 7, 6, 0); + } + arg0 = func_8436EDE8(sp1B4->unk_002, arg0); + } + + return arg0; +} +#else +static Gfx D_84389208[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_LIGHTING | G_SHADING_SMOOTH), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, + TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0), + gsDPSetColorDither(G_CD_NOISE), + gsDPLoadTextureBlock(D_84389068, G_IM_FMT_IA, G_IM_SIZ_8b, 8, 16, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 3, 4, G_TX_NOLOD, G_TX_NOLOD), + gsSPEndDisplayList(), +}; +static Gfx D_84389290[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsSPClearGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | + G_TEXTURE_GEN_LINEAR | G_LOD | G_SHADING_SMOOTH | G_CLIPPING | 0x0040F9FA), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH), + gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_OFF), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), + gsDPSetColorDither(G_CD_NOISE), + gsSPEndDisplayList(), +}; +static u8 D_843892E0[] = { 0xFF, 0, 0xFF }; +static u8 D_843892E4[] = { 0x20, 0x20, 0xFF }; +static u8 D_843892E8[] = { 0, 0xFF, 0 }; +static f32 D_843892EC[] = { 1.0f, 1.73205f, 1.0f }; +#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_34A420/func_84362084.s") +#endif diff --git a/src/fragments/9/fragment9.c b/src/fragments/9/fragment9.c index f03e647..d2dd693 100644 --- a/src/fragments/9/fragment9.c +++ b/src/fragments/9/fragment9.c @@ -1,5 +1,5 @@ #include "fragment9.h" -#include "include/libc/math.h" +#include "include/math.h" #include "src/12D80.h" #include "src/18140.h" #include "src/geo_layout.h" diff --git a/yamls/us/rom.yaml b/yamls/us/rom.yaml index 5174019..eb2ad57 100644 --- a/yamls/us/rom.yaml +++ b/yamls/us/rom.yaml @@ -2169,6 +2169,8 @@ - [0x339CA0, c, fragments/62/fragment62_339CA0] - [0x3438B0, c, fragments/62/fragment62_3438B0] - [0x343BA0, c, fragments/62/fragment62_343BA0] + - [0x347330, c, fragments/62/fragment62_347330] + - [0x34A420, c, fragments/62/fragment62_34A420] - [0x34E1A0, c, fragments/62/fragment62_34E1A0] - [0x34F1A0, c, fragments/62/fragment62_34F1A0] - [0x3502D0, c, fragments/62/fragment62_3502D0] @@ -2197,7 +2199,10 @@ - [0x370430, .data, fragments/62/fragment62_309ED0] - [0x370470, .data, fragments/62/fragment62_315D50] - [0x3723C0, .data, fragments/62/fragment62_32B680] - - [0x372880, data, fragments/62/fragment62_data] + - [0x372880, .data, fragments/62/fragment62_343BA0] + - [0x372B40, .data, fragments/62/fragment62_347330] + - [0x373920, .data, fragments/62/fragment62_34A420] + - [0x373BC0, data, fragments/62/fragment62_data] - [0x3759C0, .rodata, fragments/62/fragment62_2EC3C0] - [0x375A60, .rodata, fragments/62/fragment62_2F3CB0] @@ -2220,9 +2225,9 @@ - [0x376AE0, .rodata, fragments/62/fragment62_32A640] - [0x376B40, .rodata, fragments/62/fragment62_32B680] - [0x3778A0, .rodata, fragments/62/fragment62_339CA0] - - [0x377C90, rodata, fragments/62/fragment62_rodata_377C90] - - [0x377DA0, rodata, fragments/62/fragment62_rodata_377DA0] - - [0x377E40, rodata, fragments/62/fragment62_rodata_377E40] + - [0x377C90, .rodata, fragments/62/fragment62_343BA0] + - [0x377DA0, .rodata, fragments/62/fragment62_347330] + - [0x377E40, .rodata, fragments/62/fragment62_34A420] - [0x377FA0, rodata, fragments/62/fragment62_rodata_377FA0] - [0x378000, rodata, fragments/62/fragment62_rodata_378000] - [0x378040, rodata, fragments/62/fragment62_rodata_378040] @@ -2247,8 +2252,11 @@ - {vram: 0x84390200, type: .bss, name: fragments/62/fragment62_309ED0} - {vram: 0x84390240, type: .bss, name: fragments/62/fragment62_313D60} - {vram: 0x843902A0, type: .bss, name: fragments/62/fragment62_315D50} - - {vram: 0x843920C0, type: bss, name: fragments/62/fragment62_bss2} - + - {vram: 0x843920C0, type: .bss, name: fragments/62/fragment62_343BA0} + - {vram: 0x843925E0, type: .bss, name: fragments/62/fragment62_347330} + - {vram: 0x84397610, type: .bss, name: fragments/62/fragment62_34A420} + - {vram: 0x8439CA60, type: bss, name: fragments/62/fragment62_bss2} + - name: fragment62_relocs type: code bss_size: 0x0