diff --git a/src/fragments/62/fragment62.h b/src/fragments/62/fragment62.h index 7664088..61aaef8 100644 --- a/src/fragments/62/fragment62.h +++ b/src/fragments/62/fragment62.h @@ -714,6 +714,57 @@ typedef struct unk_D_843C2C00 { /* 0x0B0 */ unk_D_843C2C00_0B0 unk_0B0[10]; } unk_D_843C2C00; // size = 0x240 +typedef struct unk_D_843C49C0_004 { + /* 0x00 */ s16 unk_00; + /* 0x02 */ s16 unk_02; + /* 0x04 */ s16 unk_04; + /* 0x06 */ s16 unk_06; + /* 0x08 */ f32 unk_08; + /* 0x0C */ Vec3f unk_0C; +} unk_D_843C49C0_004; // size = 0x18 + +typedef struct unk_D_843C49C0 { + /* 0x000 */ s16 unk_000; + /* 0x002 */ char pad002[2]; + /* 0x004 */ unk_D_843C49C0_004 unk_004[20]; +} unk_D_843C49C0; // size = 0x1E4 + +typedef struct unk_D_843C3508_0A4 { + /* 0x00 */ f32 unk_00; + /* 0x04 */ f32 unk_04; + /* 0x08 */ f32 unk_08; + /* 0x0C */ Vec3f unk_0C; + /* 0x18 */ Vec3f unk_18; +} unk_D_843C3508_0A4; // size = 0x24 + +typedef struct unk_D_84389CE0 { + /* 0x00 */ Color_RGBA8 unk_00; + /* 0x04 */ u8 unk_04; +} unk_D_84389CE0; // size = 0x8 + +typedef struct unk_D_843C3508 { + /* 0x000 */ s16 unk_000; + /* 0x002 */ s16 unk_002; + /* 0x004 */ s16 unk_004; + /* 0x006 */ s16 unk_006; + /* 0x008 */ unk_D_84389CE0 unk_008; + /* 0x00D */ unk_D_84389CE0 unk_00D; + /* 0x014 */ f32 unk_014; + /* 0x018 */ f32 unk_018; + /* 0x01C */ s16 unk_01C; + /* 0x020 */ s32 unk_020; + /* 0x024 */ s32 unk_024; + /* 0x028 */ unk_D_843C2C00_024 unk_028; + /* 0x048 */ unk_D_843C2C00_024 unk_048; + /* 0x068 */ unk_D_843C2C00_064 unk_068; + /* 0x074 */ unk_D_843C2C00_064 unk_074; + /* 0x080 */ f32 unk_080; + /* 0x084 */ f32 unk_084; + /* 0x088 */ Vtx* unk_088; + /* 0x08C */ char unk08C[0x18]; + /* 0x0A4 */ unk_D_843C3508_0A4 unk_0A4[20]; +} unk_D_843C3508; // size = 0x374 + extern unk_D_8438E7B0* D_84384570[]; extern unk_D_8438FF70* D_84384578[]; extern unk_D_8438FF70* D_84384580[]; @@ -2790,15 +2841,25 @@ Gfx* func_8436CE34(Gfx* arg0); 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*); +void func_8436D4A4(s16 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, u8 arg7, u8 arg8, u8 arg9, u8 argA, u8 argB, u8 argC, u8 argD, u8 argE, u8 argF, f32 arg10, f32 arg11, f32 arg12, s16 arg13, s32 arg14, s32 arg15, s16 arg16, s16 arg17, s16 arg18, s16 arg19, s16 arg1A, s16 arg1B, s16 arg1C, s16 arg1D, unk_D_843C2C00_024* arg1E, unk_D_843C2C00_024* arg1F); +void func_8436D920(s32 arg0, Vec3f* arg1, Vec3f* arg2, Vec3f* arg3, f32 arg4, f32 arg5, f32 arg6, f32 arg7); +void func_8436DA38(f32 arg0, Vec3f* arg1, Vec3f* arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6); +void func_8436DAC4(unk_D_843C3508* arg0); s32 func_8436DE60(void); -Gfx* func_8436E3BC(Gfx*); +Gfx* func_8436DFB8(Gfx* arg0, unk_D_843C3508* arg1); +Gfx* func_8436E0E8(Gfx* arg0, unk_D_843C3508* arg1); +Gfx* func_8436E3BC(Gfx* arg0); 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_8436EA0C(s16 arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4, f32 arg5); +void func_8436EB54(s16 arg0); +Gfx* func_8436ECB0(Gfx* arg0, unk_D_843C49C0_004* arg1, MtxF* arg2); +Gfx* func_8436EDE8(s16 arg0, Gfx* arg1); +void func_8436EED4(void); +void func_8436EEDC(void); +s32 func_8436EEE4(s32 arg0); + + void func_8436EEF0(s32, s32); s32 func_8436EF48(void); void func_8436EF54(void); diff --git a/src/fragments/62/fragment62_343BA0.c b/src/fragments/62/fragment62_343BA0.c index 664af15..1171a90 100644 --- a/src/fragments/62/fragment62_343BA0.c +++ b/src/fragments/62/fragment62_343BA0.c @@ -915,8 +915,8 @@ void func_8435B938(void) { } 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 }; + static unk_D_843C2C00_024 D_84388040 = { 3, 5, 1, 5, 1, 7, 3, 7 }; + static unk_D_843C2C00_024 D_84388060 = { 0x1F, 0x1F, 0x1F, 0, 7, 7, 7, 0 }; f32 spA4; f32 spA0; @@ -934,7 +934,7 @@ void func_8435B98C(void) { 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); + 20.0f, 0x3C, 0x95, 0x95, 0, 0xA, 0, 0xD, 0, 0, 0, 0, &D_84388040, &D_84388060); } void func_8435BB64(void) { @@ -976,7 +976,8 @@ void func_8435BC40(void) { 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); + -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); @@ -1019,8 +1020,8 @@ void func_8435BF7C(void) { 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); + 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) { @@ -1104,15 +1105,15 @@ void func_8435C4EC(void) { -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); + 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[] = { + static unk_D_843C2C00_024 D_84388240 = { 0x00000002, 0x00000001, 0x0000000E, 0x00000001, 0x00000002, 0x00000001, 0x00000003, 0x00000001, }; - static s32 D_84388260[] = { + static unk_D_843C2C00_024 D_84388260 = { 0x00000003, 0x00000005, 0x00000000, 0x00000005, 0x00000000, 0x00000007, 0x00000005, 0x00000007, }; @@ -1133,7 +1134,7 @@ void func_8435C790(void) { 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); + 5.0f, 0x3C, 0x95, 0x95, 0, 0x14, 0, 0xD, 0, 0x19, 0, 0xD, &D_84388240, &D_84388260); } void func_8435C96C(void) { diff --git a/src/fragments/62/fragment62_356730.c b/src/fragments/62/fragment62_356730.c index acbd03c..fb58a11 100644 --- a/src/fragments/62/fragment62_356730.c +++ b/src/fragments/62/fragment62_356730.c @@ -302,11 +302,8 @@ Gfx* func_8436C6A4(Gfx* arg0, unk_D_843C2C00* arg1, s16 arg2, s16 arg3) { if (temp_v1) {} - a1 = temp_v1->a * arg1->unk_08C; - a2 = temp_v0->a * arg1->unk_090; - - gDPSetPrimColor(arg0++, 0, arg1->unk_080, temp_v1->r, temp_v1->g, temp_v1->b, a1); - gDPSetEnvColor(arg0++, temp_v0->r, temp_v0->g, temp_v0->b, a2); + gDPSetPrimColor(arg0++, 0, arg1->unk_080, temp_v1->r, temp_v1->g, temp_v1->b, (u8)(temp_v1->a * arg1->unk_08C)); + gDPSetEnvColor(arg0++, temp_v0->r, temp_v0->g, temp_v0->b, (u8)(temp_v0->a * arg1->unk_090)); for (i = 0, sp44 = arg1->unk_018; i < 9; i++) { gSPVertex(arg0++, sp44, 18, 0); diff --git a/src/fragments/62/fragment62_357C30.c b/src/fragments/62/fragment62_357C30.c index 8877015..545853b 100644 --- a/src/fragments/62/fragment62_357C30.c +++ b/src/fragments/62/fragment62_357C30.c @@ -1,35 +1,375 @@ -#include "global.h" +#include "fragment62.h" +#include "6A40.h" +#include "12D80.h" +#include "30640.h" +#include "32D10.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436D370.s") +static s16 D_843C3500; +static unk_D_843C3508 D_843C3508[6]; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436D4A4.s") +void func_8436D370(void) { + s32 i; + s32 j; + unk_D_843C3508* var_v0; + unk_D_843C3508_0A4* var_a0; + unk_D_84389CE0 sp0 = { + { 0, 0, 0, 0 }, + 0, + }; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436D920.s") + D_843C3500 = 0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436DA38.s") + var_v0 = &D_843C3508[0]; + for (i = 0; i < 6; i++, var_v0++) { + var_v0->unk_000 = 0; + var_v0->unk_004 = 0; + var_v0->unk_006 = 0; + var_v0->unk_008 = sp0; + var_v0->unk_00D = sp0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436DAC4.s") + var_a0 = &var_v0->unk_0A4[0]; + for (j = 0; j < 20; j++, var_a0++) { + var_a0->unk_00 = 0.0f; + var_a0->unk_04 = 1.0f; + var_a0->unk_08 = 0.0f; + var_a0->unk_0C.x = 0.0f; + var_a0->unk_0C.y = 0.0f; + var_a0->unk_0C.z = 0.0f; + var_a0->unk_18.x = 0.0f; + var_a0->unk_18.y = 0.0f; + var_a0->unk_18.z = 0.0f; + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436DE60.s") +void func_8436D4A4(s16 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6, u8 arg7, u8 arg8, u8 arg9, + u8 argA, u8 argB, u8 argC, u8 argD, u8 argE, u8 argF, f32 arg10, f32 arg11, f32 arg12, s16 arg13, + s32 arg14, s32 arg15, s16 arg16, s16 arg17, s16 arg18, s16 arg19, s16 arg1A, s16 arg1B, s16 arg1C, + s16 arg1D, unk_D_843C2C00_024* arg1E, unk_D_843C2C00_024* arg1F) { + unk_D_843C3508* var_v0; + unk_D_843C3508_0A4* var_v1_2; + s32 i; + s32 j; + Vec3f spC; + Vec3f sp0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436DFB8.s") + var_v0 = &D_843C3508[0]; + spC.x = arg1; + spC.y = arg2; + spC.z = arg3; + sp0.x = arg4; + sp0.y = arg5; + sp0.z = arg6; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436E0E8.s") + for (i = 0; i < 6; i++, var_v0++) { + if (var_v0->unk_000 == 0) { + var_v0->unk_000 = 1; + var_v0->unk_002 = arg0; + var_v0->unk_004 = 0; + var_v0->unk_006 = arg13; + var_v0->unk_080 = arg12; + var_v0->unk_084 = arg10; + var_v0->unk_020 = arg14; + var_v0->unk_024 = arg15; + var_v0->unk_068.unk_00 = 0; + var_v0->unk_068.unk_02 = 0; + var_v0->unk_074.unk_00 = 0; + var_v0->unk_074.unk_02 = 0; + var_v0->unk_068.unk_04 = arg16; + var_v0->unk_068.unk_06 = arg17; + var_v0->unk_074.unk_04 = arg1A; + var_v0->unk_074.unk_06 = arg1B; + var_v0->unk_068.unk_08 = arg18; + var_v0->unk_068.unk_0A = arg19; + var_v0->unk_074.unk_08 = arg1C; + var_v0->unk_074.unk_0A = arg1D; + var_v0->unk_028 = *arg1E; + var_v0->unk_048 = *arg1F; + var_v0->unk_01C = 0x46; + var_v0->unk_014 = 1.0f; + var_v0->unk_018 = 1.0f; + var_v0->unk_008.unk_00.r = arg7; + var_v0->unk_008.unk_00.g = arg8; + var_v0->unk_008.unk_00.b = arg9; + var_v0->unk_008.unk_00.a = argA; + var_v0->unk_008.unk_04 = argB; + var_v0->unk_00D.unk_00.r = argC; + var_v0->unk_00D.unk_00.g = argD; + var_v0->unk_00D.unk_00.b = argE; + var_v0->unk_00D.unk_00.a = argF; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436E3BC.s") + var_v1_2 = &var_v0->unk_0A4[0]; + for (j = 0; j < 20; j++, var_v1_2++) { + var_v1_2->unk_00 = 2.0f * j; + var_v1_2->unk_04 = arg11; + var_v1_2->unk_08 = 0.0f; + var_v1_2->unk_0C = spC; + var_v1_2->unk_18 = sp0; + } + break; + } + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436E920.s") +void func_8436D920(s32 arg0, Vec3f* arg1, Vec3f* arg2, Vec3f* arg3, f32 arg4, UNUSED f32 arg5, UNUSED f32 arg6, + UNUSED f32 arg7) { + UNUSED s32 pad[36]; + unk_D_86002F34_00C* temp_v0 = func_8432FD64(); + f32 sp6C; + f32 sp68; + f32 sp64; + f32 sp54; + f32 sp50; + f32 sp4C; + f32 sp60; + f32 sp5C; + f32 sp58; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436E944.s") + sp60 = arg2->x - temp_v0->unk_60.eye.x; + sp5C = arg2->y - temp_v0->unk_60.eye.y; + sp58 = arg2->z - temp_v0->unk_60.eye.z; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436EA0C.s") + sp6C = arg1->x; + sp68 = arg1->y; + sp64 = arg1->z; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436EB54.s") + func_80031A94(sp6C, sp68, sp64, sp60, sp5C, sp58, &sp54, &sp50, &sp4C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436ECB0.s") + func_80031B04(&sp54, &sp50, &sp4C); -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436EDE8.s") + switch (arg0) { + case 0: + arg3->x = arg4 * sp54; + arg3->y = arg4 * sp50; + arg3->z = arg4 * sp4C; + break; -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436EED4.s") + case 1: + arg3->x = -arg4 * sp54; + arg3->y = -arg4 * sp50; + arg3->z = -arg4 * sp4C; + break; + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_357C30/func_8436EEE4.s") +void func_8436DA38(f32 arg0, Vec3f* arg1, Vec3f* arg2, f32 arg3, f32 arg4, f32 arg5, f32 arg6) { + UNUSED Mtx sp70; + Mtx sp30; + UNUSED s32 pad; + + guRotateF(&sp30, (360.0f * arg0) / 6.2831855f, 1.0f, 0.0f, 0.0f); + guMtxXFMF(&sp30, 0.0f, 0.0f, arg3, &arg2->x, &arg2->y, &arg2->z); +} + +void func_8436DAC4(unk_D_843C3508* arg0) { + unk_D_843C3508_0A4* var_s0; + s32 spA8; + s32 i; + Vec3f sp98; + UNUSED s32 pad; + f32 temp_fs1; + f32 temp_fs1_2; + f32 temp_fs2; + s32 temp_s1; + s32 temp_s2; + s32 temp_s3; + s32 temp_s4; + + var_s0 = &arg0->unk_0A4[0]; + for (i = 0; i < 20; i++, var_s0++) { + if (var_s0->unk_00 > 0.0) { + temp_s3 = RAND(20) + 2; + temp_s2 = RAND(10) + 4; + temp_s4 = RAND(20) + 2; + temp_s1 = RAND(10) + 4; + + temp_fs1 = __sinf((((spA8 + temp_s3) % temp_s2) * 6.2831854820251465) / temp_s2); + temp_fs2 = + __sinf((((spA8 + temp_s4) % (temp_s1 + 20)) * 6.2831854820251465) / (temp_s1 + 20)) * (10.0 * temp_fs1); + temp_fs1_2 = __sinf((((spA8 + temp_s4) % temp_s1) * 6.2831854820251465) / temp_s1) * 10.0; + func_8432FBBC(&sp98); + var_s0->unk_0C.x = sp98.x; + var_s0->unk_0C.y = sp98.y + temp_fs2; + var_s0->unk_0C.z = sp98.z + temp_fs1_2; + var_s0->unk_00 -= 1.0; + } else { + var_s0->unk_0C.x += var_s0->unk_18.x; + var_s0->unk_0C.y += var_s0->unk_18.y; + var_s0->unk_0C.z += var_s0->unk_18.z; + var_s0->unk_08 += arg0->unk_084; + var_s0->unk_04 += 3.0f; + if (arg0->unk_080 < var_s0->unk_04) { + var_s0->unk_04 = arg0->unk_080; + } + } + } +} + +s32 func_8436DE60(void) { + f32 temp_fv0; + s32 i; + s32 var_s2; + unk_D_843C3508* var_s0; + + D_843C3500++; + var_s2 = 0; + var_s0 = &D_843C3508[0]; + + for (i = 0; i < 6; 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; + } else { + func_8436DAC4(var_s0); + var_s2++; + } + + if (var_s0->unk_01C < D_843C3500) { + s16 tmp = D_843C3500 - var_s0->unk_01C; + + temp_fv0 = tmp * 0.02f; + var_s0->unk_014 = 1.0f - temp_fv0; + var_s0->unk_018 = 1.0f - temp_fv0; + + if (temp_fv0 > 1.0f) { + var_s0->unk_014 = 0.0f; + } + + if (var_s0->unk_018 < 0.0f) { + var_s0->unk_018 = 0.0f; + } + } + } + } + + if (var_s2 > 0) { + return 0; + } + return -1; +} + +Gfx* func_8436DFB8(Gfx* arg0, unk_D_843C3508* arg1) { + s32 i; + Vtx* temp_v0 = arg1->unk_088; + + for (i = 0; i < 19; i++) { + gSPVertex(arg0++, temp_v0, 4, 0); + gSP2Triangles(arg0++, 0, 2, 1, 0, 1, 2, 3, 0); + temp_v0 += 2; + } + + return arg0; +} + +Gfx* func_8436E0E8(Gfx* arg0, unk_D_843C3508* arg1) { + unk_D_843C2C00_064* ptr; + UNUSED s32 pad[2]; + + ptr = &arg1->unk_068; + gDPLoadTextureTile_4b(arg0++, D_843920C0[arg1->unk_020], 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, ptr->unk_08, ptr->unk_0A); + gDPSetTileSize(arg0++, G_TX_RENDERTILE, ptr->unk_00, ptr->unk_02, (ptr->unk_00 + 31) << 2, (ptr->unk_02 + 31) << 2); + + ptr = &arg1->unk_074; + gDPLoadMultiTile_4b(arg0++, D_843920C0[arg1->unk_024], 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, ptr->unk_08, ptr->unk_0A); + gDPSetTileSize(arg0++, 1, ptr->unk_00, ptr->unk_02, (ptr->unk_00 + 31) << 2, (ptr->unk_02 + 31) << 2); + + return arg0; +} + +Gfx* func_8436E3BC(Gfx* arg0) { + static Gfx D_84389CE8[] = { + 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(), + 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), + gsSPEndDisplayList(), + }; + + s32 i; + unk_D_843C3508* var_s6; + unk_D_843C3508_0A4* var_s0; + s32 j; + s32 k; + Vec3f spF0; + Vtx* var_s1; + s32 pad[12]; + + func_8432FD64(); + + var_s6 = &D_843C3508[0]; + for (i = 0; i < 6; i++, var_s6++) { + if (var_s6->unk_000 == 1) { + var_s0 = &var_s6->unk_0A4[0]; + + var_s6->unk_088 = func_80005F5C(sizeof(Vtx) * 40); + var_s1 = var_s6->unk_088; + + for (j = 0; j < 20; j++, var_s0++) { + for (k = 0; k < 2; k++) { + switch (var_s6->unk_002) { + case 0: + if (var_s0->unk_00 <= 0.0) { + func_8436DA38(var_s0->unk_08 + ((k % 2) * 3.1415927f), &var_s0->unk_18, &spF0, + var_s0->unk_04, 1.0f, 0.0f, 0.0f); + } + break; + + case 1: + if (var_s0->unk_00 <= 0.0) { + func_8436D920(k % 2, &var_s0->unk_18, &var_s0->unk_0C, &spF0, var_s0->unk_04, 1.0f, + 0.0f, 0.0f); + } + break; + } + + var_s1->v.ob[0] = var_s0->unk_0C.x + spF0.x; + var_s1->v.ob[1] = var_s0->unk_0C.y + spF0.y; + var_s1->v.ob[2] = var_s0->unk_0C.z + spF0.z; + + var_s1->v.tc[0] = (k % 2) << 0xA; + var_s1->v.tc[1] = (j * 0x400) / 20; + + var_s1->v.cn[0] = 0xFF; + var_s1->v.cn[1] = 0xFF; + var_s1->v.cn[2] = 0xFF; + var_s1->v.cn[3] = 0x40; + var_s1++; + } + } + + gSPDisplayList(arg0++, D_84389CE8); + + func_800327CC( + arg0++, var_s6->unk_028.unk_00, var_s6->unk_028.unk_04, var_s6->unk_028.unk_08, var_s6->unk_028.unk_0C, + var_s6->unk_028.unk_10, var_s6->unk_028.unk_14, var_s6->unk_028.unk_18, var_s6->unk_028.unk_1C, + var_s6->unk_048.unk_00, var_s6->unk_048.unk_04, var_s6->unk_048.unk_08, var_s6->unk_048.unk_0C, + var_s6->unk_048.unk_10, var_s6->unk_048.unk_14, var_s6->unk_048.unk_18, var_s6->unk_048.unk_1C); + + gDPSetPrimColor(arg0++, 0, var_s6->unk_008.unk_04, var_s6->unk_008.unk_00.r, var_s6->unk_008.unk_00.g, + var_s6->unk_008.unk_00.b, (u8)(var_s6->unk_008.unk_00.a * var_s6->unk_014)); + gDPSetEnvColor(arg0++, var_s6->unk_00D.unk_00.r, var_s6->unk_00D.unk_00.g, var_s6->unk_00D.unk_00.b, + (u8)(var_s6->unk_00D.unk_00.a * var_s6->unk_018)); + + arg0 = func_8436E0E8(arg0, var_s6); + + gDPPipeSync(arg0++); + + arg0 = func_8436DFB8(arg0, var_s6); + } + } + + return arg0; +} diff --git a/src/fragments/62/fragment62_3591E0.c b/src/fragments/62/fragment62_3591E0.c new file mode 100644 index 0000000..36f7609 --- /dev/null +++ b/src/fragments/62/fragment62_3591E0.c @@ -0,0 +1,231 @@ +#include "fragment62.h" +#include "6A40.h" +#include "12D80.h" +#include "30640.h" +#include "32D10.h" + +static unk_D_843C49C0 D_843C49C0[2]; + +static Vtx D_84389D60[] = { + VTX(-10, -10, 0, 0, 0, 0x88, 0x00, 0x00, 0x80), + VTX(-10, 10, 0, 1984, 0, 0x88, 0x00, 0x00, 0x80), + VTX(10, -10, 0, 0, 1984, 0x88, 0x00, 0x00, 0x80), + VTX(10, 10, 0, 1984, 1984, 0x88, 0x00, 0x00, 0x80), +}; +static Gfx D_84389DA0[] = { + gsSPEndDisplayList(), +}; +static u32 D_84389DA8[] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000B0019, 0x000B0000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000F0620, 0x000F0000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00130F28, 0x00130000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00191A32, 0x00190000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0620253C, + 0x06200000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0F28374C, 0x0F280000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00070007, 0x00030000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1A324A5D, 0x1A320000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00030007, 0x00070007, 0x00070013, 0x0013000F, 0x00070000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x233A6273, 0x233A0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0007000F, + 0x00130013, 0x00070000, 0x00000007, 0x00130620, 0x011C0017, 0x000B0000, 0x00000000, 0x00000000, 0x00000000, + 0x2F458390, 0x2F450000, 0x00000000, 0x00000000, 0x00000000, 0x000B0017, 0x011C0620, 0x00170007, 0x00000000, + 0x00000000, 0x00070017, 0x0C261A32, 0x142D0620, 0x000F0000, 0x00000000, 0x0003000F, 0x3C51A9B2, 0x3C51000F, + 0x00030000, 0x00000000, 0x000F0620, 0x142D1A32, 0x0C260017, 0x00070000, 0x00000000, 0x00000000, 0x00000003, + 0x00170F28, 0x2D433248, 0x253C0C26, 0x0000000B, 0x011C142D, 0x4F62E2E5, 0x4F62142D, 0x011C000B, 0x00000F28, + 0x253C3248, 0x2D430F28, 0x00170003, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000F, 0x0C262F45, + 0x5E6F586A, 0x3C510822, 0x233A4357, 0x818EFFFF, 0x818E4357, 0x233A0822, 0x3C51586A, 0x60713248, 0x0F28000F, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030620, 0x2F456979, 0xA6AF8C98, + 0x6273B0B8, 0xFFFFFFFF, 0xFFFFB0B8, 0x62738E9A, 0xA8B16979, 0x2F450620, 0x00030000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00071D35, 0x6979E5E8, 0xFFFFFFFF, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFE8EA, 0x69791D35, 0x00070000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000017, 0x20386C7C, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF6C7C, + 0x20380017, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000017, 0x233A707F, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF707F, 0x233A0017, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000017, + 0x20386C7C, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFF6C7C, 0x20380017, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00071D35, 0x6777E5E8, 0xFFFFFFFF, + 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE8EA, 0x69791D35, 0x00070000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00030620, 0x2F456979, 0xA6AF8E9A, 0x6273B0B8, 0xFFFFFFFF, 0xFFFFB0B8, + 0x62738E9A, 0xA8B16979, 0x2F450620, 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0000000F, 0x0C262F45, 0x5E6F586A, 0x3C510822, 0x233A4357, 0x818EFFFF, 0x818E4357, 0x233A0822, 0x3C51586A, + 0x5E6F3248, 0x0F28000F, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000003, 0x00170F28, 0x2D433248, + 0x253C0F28, 0x0000000B, 0x011C142D, 0x4F62E0E3, 0x4F62142D, 0x011C000B, 0x00000C26, 0x253C3248, 0x2D430F28, + 0x00170003, 0x00000000, 0x00000000, 0x00000000, 0x00070017, 0x0C261A32, 0x142D0620, 0x000F0000, 0x00000000, + 0x0003000F, 0x3C51A8B1, 0x3C51000F, 0x00030000, 0x00000000, 0x000F0620, 0x142D1A32, 0x0C260017, 0x00070000, + 0x00000000, 0x00000007, 0x00130620, 0x011C0017, 0x000B0000, 0x00000000, 0x00000000, 0x00000000, 0x2F45818E, + 0x2F450000, 0x00000000, 0x00000000, 0x00000000, 0x000B0017, 0x011C0620, 0x00130007, 0x00000000, 0x00070013, + 0x0013000F, 0x00070000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x233A6273, 0x233A0000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x0007000F, 0x00130013, 0x00070000, 0x00070007, 0x00030000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x1730485B, 0x17300000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00030007, 0x00070007, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x0C26354A, 0x0C260000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x0620253C, 0x06200000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00191A32, 0x00190000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00130F28, 0x00130000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x000F0620, 0x000F0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x000B0019, 0x000B0000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030013, + 0x00030000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, +}; +static Gfx D_8438A5A8[] = { + 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(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON), + gsDPPipeSync(), + gsDPLoadTextureBlock(D_84389DA8, G_IM_FMT_IA, G_IM_SIZ_16b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, PRIMITIVE, ENVIRONMENT, + TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0), + gsDPSetEnvColor(0, 64, 255, 0), + gsDPSetRenderMode(G_RM_ZB_XLU_SURF, G_RM_ZB_XLU_SURF2), + gsSPVertex(D_84389D60, 4, 0), + gsSP2Triangles(0, 1, 2, 0, 2, 1, 3, 0), + gsSPEndDisplayList(), +}; + +void func_8436E920(void) { + s32 i; + + for (i = 0; i < 2; i++) { + D_843C49C0[i].unk_000 = 0; + } +} + +s16 func_8436E944(void) { + unk_D_843C49C0* var_a0; + unk_D_843C49C0_004* var_v1; + s32 i; + s32 j; + + for (i = 0, var_a0 = &D_843C49C0[0]; i < 2; i++, var_a0++) { + if (var_a0->unk_000 == 0) { + var_v1 = &var_a0->unk_004[0]; + for (j = 0; j < 20; j++, var_v1++) { + var_v1->unk_00 = 0; + var_v1->unk_04 = 0; + var_v1->unk_08 = 1.0f; + var_v1->unk_0C.x = 0.0f; + var_v1->unk_0C.y = 0.0f; + var_v1->unk_0C.z = 0.0f; + } + var_a0->unk_000 = 1; + return i; + } + } + return -1; +} + +void func_8436EA0C(s16 arg0, f32 arg1, f32 arg2, f32 arg3, s16 arg4, f32 arg5) { + s32 i; + unk_D_843C49C0* temp_v0 = &D_843C49C0[arg0]; + unk_D_843C49C0_004* var_v1; + + if (temp_v0->unk_000 != 0) { + var_v1 = &temp_v0->unk_004[0]; + for (i = 0; i < 20; i++, var_v1++) { + if (var_v1->unk_00 == 0) { + var_v1->unk_00 = 1; + var_v1->unk_04 = 0; + var_v1->unk_06 = arg4; + var_v1->unk_08 = arg5; + var_v1->unk_0C.x = arg1; + var_v1->unk_0C.y = arg2; + var_v1->unk_0C.z = arg3; + return; + } + } + } +} + +void func_8436EB54(s16 arg0) { + unk_D_843C49C0* temp_v0 = &D_843C49C0[arg0]; + unk_D_843C49C0_004* var_v1; + s32 i; + + if (temp_v0->unk_000 != 0) { + var_v1 = &temp_v0->unk_004[0]; + for (i = 0; i < 20; i++, var_v1++) { + if (var_v1->unk_00 == 1) { + var_v1->unk_04++; + if (var_v1->unk_06 < var_v1->unk_04) { + var_v1->unk_00 = 0; + } + var_v1->unk_0C.y -= 0.75f; + } + } + } +} + +Gfx* func_8436ECB0(Gfx* arg0, unk_D_843C49C0_004* arg1, MtxF* arg2) { + f32 spCC; + f32 spC8; + f32 spC4; + f32 spC0; + Mtx* spBC; + Mtx sp78; + Mtx sp38; + + spCC = arg1->unk_0C.x; + spC8 = arg1->unk_0C.y; + spC4 = arg1->unk_0C.z; + spC0 = arg1->unk_08; + spC0 *= __sinf((arg1->unk_04 * 3.1415927f) / 10.0f); + + guScale(&sp38, spC0, spC0, spC0); + guTranslate(&sp78, spCC, spC8, spC4); + spBC = func_80005F5C(sizeof(Mtx) * 1); + guMtxCatL(&sp38, &sp78, spBC); + guMtxCatL(arg2, spBC, spBC); + + gSPMatrix(arg0++, spBC, G_MTX_PUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetPrimColor(arg0++, 0, 0, 255, 255, 255, 200); + gSPDisplayList(arg0++, D_8438A5A8); + gSPPopMatrix(arg0++, G_MTX_MODELVIEW); + + return arg0; +} + +Gfx* func_8436EDE8(s16 arg0, Gfx* arg1) { + UNUSED s32 pad; + unk_D_843C49C0* temp_s3 = &D_843C49C0[arg0]; + unk_D_843C49C0_004* var_s0; + s32 i; + MtxF sp78; + MtxF sp38; + + if (temp_s3->unk_000 == 0) { + return arg1; + } + + func_80031EF4(sp78.mf, &D_8006F088->unk_60.mtxf); + guMtxF2L(sp78.mf, sp38.mf); + + var_s0 = &temp_s3->unk_004; + for (i = 0; i < 20; i++, var_s0++) { + if (var_s0->unk_00 == 1) { + arg1 = func_8436ECB0(arg1, var_s0, &sp38); + } + } + + return arg1; +} + +void func_8436EED4(void) { +} + +void func_8436EEDC(void) { +} + +s32 func_8436EEE4(s32 arg0) { + return arg0; +} diff --git a/yamls/us/rom.yaml b/yamls/us/rom.yaml index f74490a..c58f93e 100644 --- a/yamls/us/rom.yaml +++ b/yamls/us/rom.yaml @@ -2183,6 +2183,7 @@ - [0x355A00, c, fragments/62/fragment62_355A00] - [0x356730, c, fragments/62/fragment62_356730] - [0x357C30, c, fragments/62/fragment62_357C30] + - [0x3591E0, c, fragments/62/fragment62_3591E0] - [0x3597B0, c, fragments/62/fragment62_3597B0] - [0x359F80, c, fragments/62/fragment62_359F80] - [0x359F90, c, fragments/62/fragment62_359F90] @@ -2214,7 +2215,9 @@ - [0x374310, .data, fragments/62/fragment62_354CD0] - [0x374420, .data, fragments/62/fragment62_355A00] - [0x374530, .data, fragments/62/fragment62_356730] - - [0x3745A0, data, fragments/62/fragment62_data] + - [0x3745A0, .data, fragments/62/fragment62_357C30] + - [0x374620, .data, fragments/62/fragment62_3591E0] + - [0x374F00, data, fragments/62/fragment62_data] - [0x3759C0, .rodata, fragments/62/fragment62_2EC3C0] - [0x375A60, .rodata, fragments/62/fragment62_2F3CB0] @@ -2251,8 +2254,9 @@ - [0x378140, .rodata, fragments/62/fragment62_354CD0] - [0x378170, .rodata, fragments/62/fragment62_355A00] - [0x3781A0, .rodata, fragments/62/fragment62_356730] - - [0x3781B0, rodata, fragments/62/fragment62_rodata_3781B0] - - [0x3781D0, rodata, fragments/62/fragment62_rodata_3781D0] + - [0x3781B0, .rodata, fragments/62/fragment62_357C30] + - [0x3781D0, .rodata, fragments/62/fragment62_3591E0] + - [0x3781E0, rodata, fragments/62/fragment62_rodata_3781E0] - [0x3784C0, rodata, fragments/62/fragment62_rodata_3784C0] - [0x378540, rodata, fragments/62/fragment62_rodata_378540] - [0x3786B0, rodata, fragments/62/fragment62_rodata_3786B0] @@ -2281,7 +2285,9 @@ - {vram: 0x843ADA80, type: .bss, name: fragments/62/fragment62_354CD0} - {vram: 0x843B8340, type: .bss, name: fragments/62/fragment62_355A00} - {vram: 0x843C2C00, type: .bss, name: fragments/62/fragment62_356730} - - {vram: 0x843C3500, type: bss, name: fragments/62/fragment62_bss2} + - {vram: 0x843C3500, type: .bss, name: fragments/62/fragment62_357C30} + - {vram: 0x843C49C0, type: .bss, name: fragments/62/fragment62_3591E0} + - {vram: 0x843C4D90, type: bss, name: fragments/62/fragment62_bss2} - name: fragment62_relocs type: code