3540B0 and 354CD0

This commit is contained in:
Kelebek1
2025-06-11 00:59:35 +01:00
parent a1d6cf0015
commit eed45acf51
5 changed files with 695 additions and 28 deletions

View File

@@ -600,6 +600,62 @@ typedef struct unk_D_843AB940 {
/* 0x038 */ unk_D_843AB940_038 unk_038[15];
} unk_D_843AB940; // size = 0x434
typedef struct unk_D_843ACA10_01C {
/* 0x00 */ u8 unk_00;
/* 0x04 */ f32 unk_04;
/* 0x08 */ f32 unk_08;
/* 0x0C */ Vec3f unk_0C;
/* 0x18 */ Vec3f unk_18;
/* 0x24 */ f32 unk_24;
/* 0x28 */ f32 unk_28;
/* 0x2C */ Vec3f unk_2C;
/* 0x38 */ Vec3f unk_38;
} unk_D_843ACA10_01C; // size = 0x44
typedef struct unk_D_843ACA10 {
/* 0x000 */ s16 unk_000;
/* 0x002 */ s16 unk_002;
/* 0x004 */ s16 unk_004;
/* 0x006 */ s16 unk_006;
/* 0x008 */ Color_RGB8 unk_008;
/* 0x010 */ f32 unk_00C;
/* 0x010 */ f32 unk_010;
/* 0x014 */ Vtx* unk_014;
/* 0x018 */ unk_D_8140E720* unk_018;
/* 0x01C */ unk_D_843ACA10_01C unk_01C[15];
/* 0x418 */ f32 unk_418;
} unk_D_843ACA10; // size = 0x41C
typedef struct unk_D_843ADA80_040 {
/* 0x00 */ u8 unk_00;
/* 0x04 */ f32 unk_04;
/* 0x08 */ f32 unk_08;
/* 0x0C */ Vec3f unk_0C;
/* 0x18 */ Vec3f unk_18;
/* 0x24 */ Vec3f unk_24;
/* 0x30 */ f32 unk_30;
/* 0x34 */ f32 unk_34;
/* 0x38 */ Vec3f unk_38;
/* 0x44 */ Vec3f unk_44;
} unk_D_843ADA80_040; // size = 0x50
typedef struct unk_D_843ADA80 {
/* 0x000 */ s16 unk_000;
/* 0x002 */ s16 unk_002;
/* 0x004 */ s16 unk_004;
/* 0x006 */ s16 unk_006;
/* 0x008 */ s16 unk_008;
/* 0x00A */ Color_RGB8 unk_00A;
/* 0x010 */ f32 unk_010;
/* 0x014 */ f32 unk_014;
/* 0x018 */ f32 unk_018;
/* 0x01C */ char unk01C[0x4];
/* 0x020 */ Vtx* unk_020;
/* 0x024 */ Vec3f unk_024;
/* 0x030 */ char unk030[0x10];
/* 0x040 */ unk_D_843ADA80_040 unk_040[10];
} unk_D_843ADA80; // size = 0x360
extern unk_D_8438E7B0* D_84384570[];
extern unk_D_8438FF70* D_84384578[];
extern unk_D_8438FF70* D_84384580[];
@@ -641,6 +697,7 @@ extern func_D_84390320 D_84388A50[];
extern func_D_84390320 D_84388CA8[];
extern u32 D_8438A648[];
extern Gfx D_8438A980[];
extern Gfx D_84389AE0[];
extern u8 D_843C4DA4;
@@ -1606,8 +1663,8 @@ void func_8432F9A8(s32 arg0);
void func_8432F9B4(void);
s32 func_8432F9C0(void);
s32 func_8432F9CC(s32 arg0);
void func_8432FA0C(void);
void func_8432FA30(void);
s32 func_8432FA0C(void);
s32 func_8432FA30(void);
void func_8432FA54(unk_D_84390010* arg0, s16 arg1, Vec3f* arg2);
void func_8432FB38(Vec3f* arg0);
void func_8432FB64(Vec3f* arg0);
@@ -2641,13 +2698,21 @@ Gfx* func_84369388(Gfx* arg0);
void func_843697F0(void);
void func_84369950(f32, f32, f32, f32, f32, f32, s32, s32, s32, s32, f32, f32, f32, s32);
void func_84369950(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9, f32 argA, f32 argB, f32 argC, s16 argD);
void func_84369BF0(f32 arg0, Vec3f* arg1, f32 arg2);
void func_84369C80(unk_D_843ACA10* arg0);
s32 func_84369F0C(void);
Gfx* func_84369FA0(Gfx*);
Gfx* func_84369FA0(Gfx* arg0);
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_8436A540(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9, f32 argA, f32 argB, f32 argC, s16 argD);
void func_8436A808(f32 arg0, Vec3f* arg1, f32 arg2);
void func_8436A890(unk_D_843ADA80* arg0);
s32 func_8436ABA8(void);
Gfx* func_8436AC44(Gfx* arg0);
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);

View File

@@ -811,12 +811,12 @@ s32 func_8432F9CC(s32 arg0) {
return sp1C;
}
void func_8432FA0C(void) {
func_843081BC(D_843902EC);
s32 func_8432FA0C(void) {
return func_843081BC(D_843902EC);
}
void func_8432FA30(void) {
func_843081BC(D_843902F0);
s32 func_8432FA30(void) {
return func_843081BC(D_843902F0);
}
void func_8432FA54(unk_D_84390010* arg0, s16 arg1, Vec3f* arg2) {

View File

@@ -1,25 +1,263 @@
#include "global.h"
#include "fragment62.h"
#include "src/6A40.h"
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_843697F0.s")
static unk_D_843ACA10 D_843ACA10[4];
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_84369950.s")
static Gfx D_84389A00[] = {
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(),
};
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_84369BF0.s")
void func_843697F0(void) {
s32 i;
s32 j;
unk_D_843ACA10* var_v0 = &D_843ACA10[0];
unk_D_843ACA10_01C* var_a0;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_84369C80.s")
for (i = 0; i < 4; i++, var_v0++) {
var_v0->unk_000 = 0;
var_v0->unk_002 = 0;
var_v0->unk_004 = 0;
var_v0->unk_418 = 0.16f;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_84369F0C.s")
var_a0 = &var_v0->unk_01C[0];
for (j = 0; j < 15; j++, var_a0++) {
var_a0->unk_00 = 0;
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_3540B0/func_84369FA0.s")
void func_84369950(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9,
f32 argA, f32 argB, f32 argC, s16 argD) {
s32 i;
s32 j;
unk_D_843ACA10* var_v1;
unk_D_843ACA10_01C* var_s0;
Vec3f sp64;
Vec3f sp58;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_8436A410.s")
sp64.x = arg0;
sp64.y = arg1;
sp64.z = arg2;
sp58.x = arg3;
sp58.y = arg4;
sp58.z = arg5;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_8436A540.s")
var_v1 = &D_843ACA10[0];
for (i = 0; i < 4; i++, var_v1++) {
if (var_v1->unk_000 == 0) {
var_v1->unk_000 = 1;
var_v1->unk_002 = 0;
var_v1->unk_004 = argD;
var_v1->unk_008.r = arg6;
var_v1->unk_008.g = arg7;
var_v1->unk_008.b = arg8;
var_v1->unk_010 = argA;
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_8436A808.s")
if (func_8432FA0C() == 0xD) {
var_v1->unk_418 = 0.08f;
var_v1->unk_00C = argC * 0.5f;
} else {
var_v1->unk_418 = 0.16f;
var_v1->unk_00C = argC;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_8436A890.s")
var_v1->unk_018 = func_8432FD70(sp64, 2);
if (arg3 < 0.0) {
var_v1->unk_006 = -1;
} else {
var_v1->unk_006 = 1;
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_8436ABA8.s")
var_s0 = &var_v1->unk_01C[0];
for (j = 0; j < 15; j++, var_s0++) {
var_s0->unk_00 = (arg9 * (0xE - j)) / 15;
var_s0->unk_04 = argB;
var_s0->unk_08 = (RAND(120) * 6.2831855f) / 120.0;
var_s0->unk_0C = sp64;
var_s0->unk_18 = sp58;
}
break;
}
}
}
#pragma GLOBAL_ASM("asm/us/nonmatchings/fragments/62/fragment62_3540B0/func_8436AC44.s")
void func_84369BF0(f32 arg0, Vec3f* arg1, f32 arg2) {
UNUSED MtxF sp70;
MtxF sp30;
UNUSED s32 pad;
guRotateF(sp30.mf, (arg0 * 360.0) / 6.2831854820251465, 1.0f, 0.0f, 0.0f);
guMtxXFMF(sp30.mf, 0.0f, 0.0f, arg2, &arg1->x, &arg1->y, &arg1->z);
}
void func_84369C80(unk_D_843ACA10* arg0) {
s32 i;
unk_D_843ACA10_01C* var_s0 = &arg0->unk_01C[0];
for (i = 0; i < 15; i++, var_s0++) {
if (i == 0) {
var_s0->unk_24 = var_s0->unk_04;
var_s0->unk_28 = var_s0->unk_08;
var_s0->unk_2C = var_s0->unk_0C;
var_s0->unk_38 = var_s0->unk_18;
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_010;
if (arg0->unk_006 > 0) {
var_s0->unk_18.x += 0.4;
if (var_s0->unk_18.x > 20.0) {
var_s0->unk_18.x = 20.0f;
}
} else {
var_s0->unk_18.x -= 0.4;
if (var_s0->unk_18.x < -20.0) {
var_s0->unk_18.x = -20.0f;
}
}
func_8432FDF0(arg0->unk_018, var_s0->unk_0C);
var_s0->unk_04 += 2.0;
if (arg0->unk_00C < var_s0->unk_04) {
var_s0->unk_04 = arg0->unk_00C;
}
} else {
var_s0->unk_24 = var_s0->unk_04;
var_s0->unk_28 = var_s0->unk_08;
var_s0->unk_2C = var_s0->unk_0C;
var_s0->unk_38 = var_s0->unk_18;
var_s0->unk_0C = var_s0[-1].unk_2C;
var_s0->unk_08 = var_s0[-1].unk_28;
var_s0->unk_18 = var_s0[-1].unk_38;
var_s0->unk_04 = var_s0[-1].unk_24;
}
}
}
s32 func_84369F0C(void) {
s32 i;
unk_D_843ACA10* var_s0 = &D_843ACA10[0];
for (i = 0; i < 4; i++, var_s0++) {
if (var_s0->unk_000 == 1) {
var_s0->unk_002 += 1;
if (var_s0->unk_004 < var_s0->unk_002) {
var_s0->unk_000 = 0;
} else {
func_84369C80(var_s0);
}
}
}
return 0;
}
Gfx* func_84369FA0(Gfx* arg0) {
s32 i;
s32 j;
s32 k;
unk_D_843ACA10_01C* temp_s0;
unk_D_843ACA10* var_s5;
Vtx* var_s0;
Vec3f sp154;
UNUSED s32 pad[15];
Mtx* temp_v0;
Mtx sp100;
Mtx spC0;
s16 var_s3;
var_s5 = &D_843ACA10[0];
for (i = 0; i < 4; i++, var_s5++) {
if (var_s5->unk_000 == 1) {
temp_s0 = &var_s5->unk_01C[0];
if (temp_s0->unk_0C.y > 0.0f) {
temp_v0 = func_80005F5C(sizeof(Mtx) * 1);
guTranslate(temp_v0, temp_s0->unk_0C.x, temp_s0->unk_0C.y, temp_s0->unk_0C.z);
guRotateRPY(&sp100, (temp_s0->unk_08 * -360.0f * var_s5->unk_006) / 6.2831854820251465,
0x5A - (var_s5->unk_006 * 0x5A), 0.0f);
guMtxCatL(&sp100, temp_v0, temp_v0);
guScale(&spC0, var_s5->unk_418, var_s5->unk_418, var_s5->unk_418);
guMtxCatL(&spC0, temp_v0, temp_v0);
gSPMatrix(arg0++, temp_v0, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
gSPDisplayList(arg0++, D_8438A980);
gSPPopMatrix(arg0++, G_MTX_MODELVIEW);
}
var_s5->unk_014 = func_80005F5C(sizeof(Vtx) * 30);
var_s0 = var_s5->unk_014;
for (j = 0; j < 15; j++) {
func_84369BF0(temp_s0->unk_08, &sp154, temp_s0->unk_04);
var_s3 = temp_s0->unk_0C.y + sp154.y;
if (var_s3 < 0) {
var_s3 = 0;
}
var_s0->v.ob[0] = temp_s0->unk_0C.x + sp154.x;
var_s0->v.ob[1] = var_s3;
var_s0->v.ob[2] = temp_s0->unk_0C.z + sp154.z;
var_s0->v.cn[0] = var_s5->unk_008.r;
var_s0->v.cn[1] = var_s5->unk_008.g;
var_s0->v.cn[2] = var_s5->unk_008.b;
var_s0->v.cn[3] = temp_s0->unk_00;
var_s0++;
func_84369BF0(temp_s0->unk_08 + 3.1415927f, &sp154, temp_s0->unk_04);
var_s3 = temp_s0->unk_0C.y + sp154.y;
if (var_s3 < 0) {
var_s3 = 0;
}
var_s0->v.ob[0] = temp_s0->unk_0C.x + sp154.x;
var_s0->v.ob[1] = var_s3;
var_s0->v.ob[2] = temp_s0->unk_0C.z + sp154.z;
var_s0->v.cn[0] = var_s5->unk_008.r;
var_s0->v.cn[1] = var_s5->unk_008.g;
var_s0->v.cn[2] = var_s5->unk_008.b;
var_s0->v.cn[3] = temp_s0->unk_00;
var_s0++;
temp_s0++;
}
var_s0 = var_s5->unk_014;
gSPDisplayList(arg0++, D_84389A00);
for (k = 0; k < 14; k++) {
gSPVertex(arg0++, var_s0, 4, 0);
gSP2Triangles(arg0++, 0, 2, 1, 0, 2, 3, 1, 0);
var_s0 += 2;
}
}
}
return arg0;
}

View File

@@ -0,0 +1,359 @@
#include "fragment62.h"
#include "src/6A40.h"
static unk_D_843ADA80 D_843ADA80[50];
static Gfx D_84389A50[] = {
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 Vtx D_84389AA0[] = {
VTX(-6, 0, -6, 2048, 0, 0xFF, 0xFF, 0xFF, 0x14),
VTX(6, 0, -6, 0, 0, 0xFF, 0xFF, 0xFF, 0x14),
VTX(-6, 0, 6, 2048, 2048, 0xFF, 0xFF, 0xFF, 0x14),
VTX(6, 0, 6, 0, 2048, 0xFF, 0xFF, 0xFF, 0x14),
};
Gfx D_84389AE0[] = {
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(G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2),
gsDPSetCombineMode(G_CC_DECALRGBA, G_CC_DECALRGBA),
gsDPSetTexturePersp(G_TP_PERSP),
gsDPSetTextureLUT(G_TT_NONE),
gsDPSetTextureFilter(G_TF_BILERP),
gsDPPipeSync(),
gsSPVertex(D_84389AA0, 4, 0),
gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0),
gsSPEndDisplayList(),
};
/*
static Vtx D_8438A858[] = {
VTX(1, -35, -35, 0, 0, 0x88, 0x00, 0x00, 0xFF),
VTX(1, -50, 0, 0, 0, 0x88, 0x00, 0x00, 0xFF),
VTX(1, 0, 0, 0, 0, 0x88, 0x00, 0x00, 0xFF),
VTX(1, -50, 0, 0, 0, 0x1D, 0x8C, 0x00, 0xFF),
VTX(1, -35, -35, 0, 0, 0x1D, 0xAE, 0xAE, 0xFF),
VTX(200, 0, 0, 0, 0, 0x78, 0x00, 0x00, 0xFF),
VTX(1, 0, -49, 0, 0, 0x88, 0x00, 0x00, 0xFF),
VTX(1, 0, -49, 0, 0, 0x1D, 0x00, 0x8C, 0xFF),
VTX(1, 35, -35, 0, 0, 0x88, 0x00, 0x00, 0xFF),
VTX(1, 35, -35, 0, 0, 0x1D, 0x52, 0xAE, 0xFF),
VTX(1, 50, 0, 0, 0, 0x88, 0x00, 0x00, 0xFF),
VTX(1, 50, 0, 0, 0, 0x1D, 0x74, 0x00, 0xFF),
VTX(1, 35, 35, 0, 0, 0x88, 0x00, 0x00, 0xFF),
VTX(1, 35, 35, 0, 0, 0x1D, 0x52, 0x52, 0xFF),
VTX(1, 0, 49, 0, 0, 0x88, 0x00, 0x00, 0xFF),
VTX(1, 0, 49, 0, 0, 0x1D, 0x00, 0x74, 0xFF),
VTX(1, -35, 35, 0, 0, 0x88, 0x00, 0x00, 0xFF),
VTX(1, -35, 35, 0, 0, 0x1D, 0xAE, 0x52, 0xFF),
};
static u32 D_8438A978[] = {
0x77777777,
0x77777777,
};
static Gfx D_8438A980[] = {
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_CULL_BACK |
G_LIGHTING | G_SHADING_SMOOTH), gsSPTexture(0x8000, 0x8000, 0, G_TX_RENDERTILE, G_ON), gsDPPipeSync(),
gsDPLoadTextureBlock_4b(D_8438A978, G_IM_FMT_I, 4, 4, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 2, 2,
G_TX_NOLOD, G_TX_NOLOD), gsDPSetCombineMode(G_CC_BLENDIA, G_CC_BLENDIA), gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF,
G_RM_AA_ZB_OPA_SURF2), gsDPSetPrimColor(0xFF, 0xFF, 197, 184, 122, 255), gsDPSetEnvColor(197, 184, 122, 255),
gsSPVertex(D_8438A858, 18, 0),
gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0),
gsSP2Triangles(6, 0, 2, 0, 4, 7, 5, 0),
gsSP2Triangles(8, 6, 2, 0, 7, 9, 5, 0),
gsSP2Triangles(10, 8, 2, 0, 9, 11, 5, 0),
gsSP2Triangles(12, 10, 2, 0, 11, 13, 5, 0),
gsSP2Triangles(14, 12, 2, 0, 13, 15, 5, 0),
gsSP2Triangles(16, 14, 2, 0, 15, 17, 5, 0),
gsSP2Triangles(1, 16, 2, 0, 17, 3, 5, 0),
gsSPEndDisplayList(),
};
*/
void func_8436A410(void) {
unk_D_843ADA80* var_v0 = &D_843ADA80[0];
unk_D_843ADA80_040* var_a0;
s32 i;
s32 j;
for (i = 0; i < 50; i++, var_v0++) {
var_v0->unk_000 = 0;
var_v0->unk_004 = 0;
var_v0->unk_006 = 0;
var_a0 = &var_v0->unk_040[0];
for (j = 0; j < 10; j++, var_a0++) {
var_a0->unk_00 = 0;
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;
}
}
}
void func_8436A540(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4, f32 arg5, u8 arg6, u8 arg7, u8 arg8, u8 arg9,
f32 argA, f32 argB, f32 argC, s16 argD) {
unk_D_843ADA80* var_v1;
unk_D_843ADA80_040* var_s0;
s32 i;
s32 j;
Vec3f sp7C;
Vec3f sp70;
Vec3f sp64;
f32 temp_fv1;
temp_fv1 = func_8432FCD4() * 0.5f;
sp7C.x = arg0;
sp7C.y = (80.0f * temp_fv1) + arg1;
sp7C.z = arg2;
sp70.x = arg3;
sp70.y = arg4;
sp70.z = arg5;
sp64.x = 0.0f;
sp64.y = temp_fv1 * -2.0;
sp64.z = 0.0f;
var_v1 = &D_843ADA80[0];
for (i = 0; i < 50; i++, var_v1++) {
if (var_v1->unk_000 == 0) {
var_v1->unk_000 = 1;
var_v1->unk_002 = 0;
var_v1->unk_004 = 0;
var_v1->unk_006 = argD;
var_v1->unk_00A.r = arg6;
var_v1->unk_00A.g = arg7;
var_v1->unk_00A.b = arg8;
var_v1->unk_024 = sp7C;
var_v1->unk_014 = argC;
var_v1->unk_018 = argA;
var_v1->unk_010 = temp_fv1;
if (arg0 > 0.0) {
var_v1->unk_008 = -1;
} else {
var_v1->unk_008 = 1;
}
var_s0 = var_v1->unk_040;
for (j = 0; j < 10; j++, var_s0++) {
var_s0->unk_00 = (arg9 * (9 - j)) / 10;
var_s0->unk_04 = argB;
var_s0->unk_08 = (RAND(120) * 6.2831855f) / 120.0;
var_s0->unk_0C = sp7C;
var_s0->unk_18 = sp70;
var_s0->unk_24 = sp64;
}
break;
}
}
}
void func_8436A808(f32 arg0, Vec3f* arg1, f32 arg2) {
MtxF sp30;
f32 temp_fv0 = (arg0 * 360.0) / 6.2831854820251465;
guRotateRPYF(sp30.mf, 90.0f, temp_fv0, temp_fv0);
guMtxXFMF(sp30.mf, 0.0f, 0.0f, arg2, &arg1->x, &arg1->y, &arg1->z);
}
void func_8436A890(unk_D_843ADA80* arg0) {
s32 i;
f32 temp_fs3 = arg0->unk_010;
unk_D_843ADA80_040* var_s0 = &arg0->unk_040[0];
for (i = 0; i < 10; i++, var_s0++) {
if (i == 0) {
var_s0->unk_30 = var_s0->unk_04;
var_s0->unk_34 = var_s0->unk_08;
var_s0->unk_38 = var_s0->unk_0C;
var_s0->unk_44 = var_s0->unk_18;
switch (arg0->unk_002) {
case 0:
var_s0->unk_0C.x += var_s0->unk_24.x;
var_s0->unk_0C.y += var_s0->unk_24.y;
var_s0->unk_0C.z += var_s0->unk_24.z;
var_s0->unk_08 += arg0->unk_018;
var_s0->unk_24.x += __sinf(var_s0->unk_08) * temp_fs3;
var_s0->unk_24.z += __cosf(var_s0->unk_08) * temp_fs3;
if (arg0->unk_004 >= 0x15) {
arg0->unk_002 = 1;
arg0->unk_004 = 0;
}
break;
case 1:
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_018;
if (arg0->unk_008 > 0) {
var_s0->unk_18.x += 2.0;
if (var_s0->unk_18.x > 20.0) {
var_s0->unk_18.x = 20.0f;
}
} else {
var_s0->unk_18.x -= 2.0;
if (var_s0->unk_18.x < -20.0) {
var_s0->unk_18.x = -20.0f;
}
}
break;
}
var_s0->unk_04 += 2.0;
if (arg0->unk_014 < var_s0->unk_04) {
var_s0->unk_04 = arg0->unk_014;
}
} else {
var_s0->unk_30 = var_s0->unk_04;
var_s0->unk_34 = var_s0->unk_08;
var_s0->unk_38 = var_s0->unk_0C;
var_s0->unk_44 = var_s0->unk_18;
var_s0->unk_0C = var_s0[-1].unk_38;
var_s0->unk_08 = var_s0[-1].unk_34;
var_s0->unk_18 = var_s0[-1].unk_44;
var_s0->unk_04 = var_s0[-1].unk_30;
}
}
}
s32 func_8436ABA8(void) {
s32 i;
unk_D_843ADA80* var_s0 = &D_843ADA80[0];
for (i = 0; i < 50; i++, var_s0++) {
if (var_s0->unk_000 == 1) {
var_s0->unk_004++;
if ((var_s0->unk_002 == 1) && (var_s0->unk_006 < var_s0->unk_004)) {
var_s0->unk_000 = 0;
} else {
func_8436A890(var_s0);
}
}
}
return 0;
}
Gfx* func_8436AC44(Gfx* arg0) {
s32 i;
s32 j;
s32 k;
unk_D_843ADA80_040* temp_s0;
unk_D_843ADA80* var_s5;
Vtx* var_s0;
Vec3f sp184;
UNUSED s32 pad[15];
Mtx* temp_v0;
Mtx sp100;
Mtx spC0;
f32 temp_fs1;
s16 var_s3;
f32 tmp;
gDPLoadTextureBlock(arg0++, D_843920C0[0x1E], G_IM_FMT_RGBA, 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);
var_s5 = &D_843ADA80[0];
for (i = 0; i < 50; i++, var_s5++) {
if (var_s5->unk_000 == 1) {
temp_s0 = &var_s5->unk_040[0];
tmp = var_s5->unk_010;
if (temp_s0->unk_0C.y > 0.0f) {
temp_fs1 = (temp_s0->unk_08 * 360.0f) / 6.2831854820251465;
temp_v0 = func_80005F5C(sizeof(Mtx) * 1);
guTranslate(temp_v0, temp_s0->unk_0C.x, temp_s0->unk_0C.y, temp_s0->unk_0C.z);
guRotateRPY(&sp100, 90.0f, temp_fs1, temp_fs1);
guMtxCatL(&sp100, temp_v0, temp_v0);
guScale(&spC0, tmp, tmp, tmp);
guMtxCatL(&spC0, temp_v0, temp_v0);
gSPMatrix(arg0++, temp_v0, G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
gSPDisplayList(arg0++, D_84389AE0);
gSPPopMatrix(arg0++, G_MTX_MODELVIEW);
}
var_s5->unk_020 = func_80005F5C(0x140);
var_s0 = var_s5->unk_020;
for (j = 0; j < 10; j++) {
func_8436A808(temp_s0->unk_08, &sp184, temp_s0->unk_04 * tmp);
var_s3 = temp_s0->unk_0C.y + sp184.y;
if (var_s3 < 0) {
var_s3 = 0;
}
var_s0->v.ob[0] = temp_s0->unk_0C.x + sp184.x;
var_s0->v.ob[1] = var_s3;
var_s0->v.ob[2] = temp_s0->unk_0C.z + sp184.z;
var_s0->v.cn[0] = var_s5->unk_00A.r;
var_s0->v.cn[1] = var_s5->unk_00A.g;
var_s0->v.cn[2] = var_s5->unk_00A.b;
var_s0->v.cn[3] = temp_s0->unk_00;
var_s0++;
func_8436A808(temp_s0->unk_08 + 3.1415927f, &sp184, temp_s0->unk_04 * tmp);
var_s3 = temp_s0->unk_0C.y + sp184.y;
if (var_s3 < 0) {
var_s3 = 0;
}
var_s0->v.ob[0] = temp_s0->unk_0C.x + sp184.x;
var_s0->v.ob[1] = var_s3;
var_s0->v.ob[2] = temp_s0->unk_0C.z + sp184.z;
var_s0->v.cn[0] = var_s5->unk_00A.r;
var_s0->v.cn[1] = var_s5->unk_00A.g;
var_s0->v.cn[2] = var_s5->unk_00A.b;
var_s0->v.cn[3] = temp_s0->unk_00;
var_s0++;
temp_s0++;
}
var_s0 = var_s5->unk_020;
gSPDisplayList(arg0++, D_84389A50);
for (k = 0; k < 9; k++) {
gSPVertex(arg0++, var_s0, 4, 0);
gSP2Triangles(arg0++, 0, 2, 1, 0, 2, 3, 1, 0);
var_s0 += 2;
}
}
}
return arg0;
}

View File

@@ -2179,6 +2179,7 @@
- [0x352570, c, fragments/62/fragment62_352570]
- [0x353370, c, fragments/62/fragment62_353370]
- [0x3540B0, c, fragments/62/fragment62_3540B0]
- [0x354CD0, c, fragments/62/fragment62_354CD0]
- [0x355A00, c, fragments/62/fragment62_355A00]
- [0x356730, c, fragments/62/fragment62_356730]
- [0x357C30, c, fragments/62/fragment62_357C30]
@@ -2209,7 +2210,9 @@
- [0x374040, .data, fragments/62/fragment62_351F20]
- [0x374170, .data, fragments/62/fragment62_352570]
- [0x374270, .data, fragments/62/fragment62_353370]
- [0x3742C0, data, fragments/62/fragment62_data]
- [0x3742C0, .data, fragments/62/fragment62_3540B0]
- [0x374310, .data, fragments/62/fragment62_354CD0]
- [0x374420, data, fragments/62/fragment62_data]
- [0x3759C0, .rodata, fragments/62/fragment62_2EC3C0]
- [0x375A60, .rodata, fragments/62/fragment62_2F3CB0]
@@ -2242,8 +2245,8 @@
- [0x378040, rodata, fragments/62/fragment62_rodata_378040]
- [0x378070, .rodata, fragments/62/fragment62_352570]
- [0x3780B0, .rodata, fragments/62/fragment62_353370]
- [0x378100, rodata, fragments/62/fragment62_rodata_378100]
- [0x378140, rodata, fragments/62/fragment62_rodata_378140]
- [0x378100, .rodata, fragments/62/fragment62_3540B0]
- [0x378140, .rodata, fragments/62/fragment62_354CD0]
- [0x378170, rodata, fragments/62/fragment62_rodata_378170]
- [0x3781A0, rodata, fragments/62/fragment62_rodata_3781A0]
- [0x3781B0, rodata, fragments/62/fragment62_rodata_3781B0]
@@ -2272,7 +2275,9 @@
- {vram: 0x843A22C0, type: .bss, name: fragments/62/fragment62_3512D0}
- {vram: 0x843AA880, type: .bss, name: fragments/62/fragment62_352570}
- {vram: 0x843AB940, type: .bss, name: fragments/62/fragment62_353370}
- {vram: 0x843ACA10, type: bss, name: fragments/62/fragment62_bss2}
- {vram: 0x843ACA10, type: .bss, name: fragments/62/fragment62_3540B0}
- {vram: 0x843ADA80, type: .bss, name: fragments/62/fragment62_354CD0}
- {vram: 0x843B8340, type: bss, name: fragments/62/fragment62_bss2}
- name: fragment62_relocs
type: code