progress on m440/main.c

This commit is contained in:
CreateSource 2024-06-05 14:07:53 -04:00
parent bfe01369b0
commit 448ca4a3c6
2 changed files with 497 additions and 16 deletions

View file

@ -1,6 +1,7 @@
#include "dolphin/types.h" #include "dolphin/types.h"
#include "game/object.h" #include "game/object.h"
extern s32 rand8(void);
////// TYPES ////// ////// TYPES //////
typedef struct _unkStruct { typedef struct _unkStruct {
@ -16,27 +17,83 @@ typedef struct _unkStruct2 {
s16 unk8; s16 unk8;
s16 unkA; s16 unkA;
s32 unkC; s32 unkC;
char unk10[0xC];
s16 unk1C;
} unkStruct2; } unkStruct2;
typedef struct _unkStruct3 {
char unk0[0x34];
f32 unk34;
char unk38[0x8];
f32 unk40;
} unkStruct3;
typedef struct _unkStruct4 {
Vec unk0;
char unkC[0xC];
f32 unk18;
f32 unk1C;
char unk20[0x4];
f32 unk24;
f32 unk28;
f32 unk2C;
f32 unk30;
s16 unk34;
s16 unk36;
char unk38[0x10];
Vec unk48;
Vec unk54;
s16 unk60;
s8 unk62;
} unkStruct4; // sizeof 0x64
typedef struct _unkStruct5 { // could be unkStruct3
s16 unk0;
s16 unk2;
char unk4[0x10];
s16 unk14;
unkStruct4 *unk18;
char unk1C[0x8];
GXColor* unk24; // ?
} unkStruct5;
typedef struct _unkStruct6 {
s16 unk0;
s16 unk2;
s16 unk4;
s16 unk6;
char unk8[0x18];
s32 unk20;
char unk24[0x14];
void (*unk38)(s32);
char unk3C[0x4];
} unkStruct6; // 0x40
typedef void (*m440Func5)(omObjData*, unkStruct5*, Mtx*);
////// BSS ////// ////// BSS //////
// object.c // object.c
extern omObjData* lbl_1_bss_C0[4]; extern omObjData* lbl_1_bss_C0[4];
// main.c // main.c
extern omObjData* lbl_1_bss_6C; extern omObjData* lbl_1_bss_6C;
extern omObjData* lbl_1_bss_68; extern omObjData* lbl_1_bss_68;
extern void* lbl_1_bss_64; extern unkStruct6* lbl_1_bss_64;
extern s16 lbl_1_bss_60;
extern s16 lbl_1_bss_10[10]; extern s16 lbl_1_bss_10[10];
extern s16 lbl_1_bss_E; extern s16 lbl_1_bss_E;
extern u8 lbl_1_bss_C;
extern u8 lbl_1_bss_B; extern u8 lbl_1_bss_B;
extern u8 lbl_1_bss_A; extern u8 lbl_1_bss_A;
extern s16 lbl_1_bss_8; extern s16 lbl_1_bss_8;
extern s16 lbl_1_bss_6; extern s16 lbl_1_bss_6;
extern s16 lbl_1_bss_4; extern s16 lbl_1_bss_4;
extern s8 lbl_1_bss_2; extern s8 lbl_1_bss_2;
extern s8 lbl_1_bss_1;
extern s8 lbl_1_bss_0; extern s8 lbl_1_bss_0;
////// DATA ////// ////// DATA //////
// main.c // main.c
extern f32 lbl_1_data_0[5];
extern Vec lbl_1_data_2C; extern Vec lbl_1_data_2C;
extern Vec lbl_1_data_38; extern Vec lbl_1_data_38;
extern GXColor lbl_1_data_44; extern GXColor lbl_1_data_44;
@ -44,6 +101,8 @@ extern Vec lbl_1_data_54;
extern Vec lbl_1_data_60; extern Vec lbl_1_data_60;
extern Vec lbl_1_data_6C; extern Vec lbl_1_data_6C;
extern unkStruct lbl_1_data_78[3]; extern unkStruct lbl_1_data_78[3];
// extern s32 lbl_1_data_E4;
// extern s32 lbl_1_data_E8;
////// FUNCTIONS ////// ////// FUNCTIONS //////
// main.c // main.c
@ -55,5 +114,25 @@ extern s32 fn_1_6C8(void);
extern void fn_1_8F0(omObjData* object); extern void fn_1_8F0(omObjData* object);
extern void fn_1_AE0(omObjData* object); extern void fn_1_AE0(omObjData* object);
extern s32 fn_1_E14(omObjData* object); extern s32 fn_1_E14(omObjData* object);
extern s32 fn_1_1138(omObjData* object);
extern void fn_1_16D8(void);
extern void fn_1_1708(void);
extern void fn_1_1768(void);
extern s16 fn_1_17CC(void);
extern s16 fn_1_17F4(void);
extern void fn_1_181C(void);
extern u8 fn_1_1890(void);
extern void fn_1_18E0(void);
extern s32 fn_1_1954(void);
extern void fn_1_19B0(void);
extern void fn_1_1CAC(void);
extern void fn_1_2240(omObjData* object, unkStruct5*, Mtx*);
extern u16 fn_1_23E4(u16);
extern void fn_1_2428(u16, u16);
extern void fn_1_2470(omObjData* object);
extern void fn_1_2A74(omObjData* object);
extern void fn_1_2AB4(omObjData* object);
extern void fn_1_2B04(omObjData* object);
extern void fn_1_2CA8(omObjData* object);
// ... // ...
extern f32 fn_1_93C0(f32, f32, f32); extern f32 fn_1_93C0(f32, f32, f32);

View file

@ -4,6 +4,7 @@
#include "math.h" #include "math.h"
#include "game/frand.h" #include "game/frand.h"
#include "game/hsfman.h" #include "game/hsfman.h"
#include "game/hsfmotion.h"
#include "game/wipe.h" #include "game/wipe.h"
#include "game/audio.h" #include "game/audio.h"
#include "game/objsub.h" #include "game/objsub.h"
@ -11,26 +12,22 @@
#include "game/sprite.h" #include "game/sprite.h"
// prototypes // prototypes
void fn_1_3C4(omObjData* object); void fn_1_2D28(omObjData* object);
void fn_1_434(omObjData* object); void fn_1_33D4(omObjData* object);
s32 fn_1_4A4(void); void fn_1_3DD8(omObjData* object);
s32 fn_1_6C8(void); void fn_1_4660(omObjData* object);
void fn_1_8F0(omObjData* object); u16 fn_1_4EA8(s32);
void fn_1_AE0(omObjData* object);
s32 fn_1_E14(omObjData* object);
// ...
u8 fn_1_1138(omObjData* object);
void fn_1_2240(omObjData* object);
u16 fn_1_23E4(s32);
void fn_1_2428(s32, s32);
void fn_1_2470(omObjData* object);
void fn_1_4EEC(s32, s32); void fn_1_4EEC(s32, s32);
void fn_1_57B4(s32);
void fn_1_5C2C(s16, HsfObject*, unkStruct6*, s32);
f32 fn_1_93C0(f32, f32, f32); f32 fn_1_93C0(f32, f32, f32);
unkStruct4* fn_1_942C(s16, Vec*, Vec*, f32, GXColor*);
s16 fn_1_956C(AnimData*, s32, f32, s32, s32); s16 fn_1_956C(AnimData*, s32, f32, s32, s32);
void fn_1_9AB0(s16); void fn_1_9AB0(s16);
void fn_1_9B94(s16, omObjFunc); void fn_1_9B94(s16, m440Func5);
void fn_1_AE08(Process*); void fn_1_AE08(Process*);
// object.c // object.c
s16 fn_1_F0FC(void);
void fn_1_F168(void); void fn_1_F168(void);
// bss // bss
@ -38,18 +35,22 @@ omObjData* lbl_1_bss_6C;
omObjData* lbl_1_bss_68; omObjData* lbl_1_bss_68;
s16 lbl_1_bss_10[10]; s16 lbl_1_bss_10[10];
s16 lbl_1_bss_E; s16 lbl_1_bss_E;
u8 lbl_1_bss_C;
u8 lbl_1_bss_B; u8 lbl_1_bss_B;
u8 lbl_1_bss_A; u8 lbl_1_bss_A;
s16 lbl_1_bss_8; s16 lbl_1_bss_8;
s16 lbl_1_bss_6; s16 lbl_1_bss_6;
s16 lbl_1_bss_4; s16 lbl_1_bss_4;
s8 lbl_1_bss_2; s8 lbl_1_bss_2;
s8 lbl_1_bss_1;
s8 lbl_1_bss_0; s8 lbl_1_bss_0;
// data // data
f32 lbl_1_data_0[5] = { 90.0f, 80.0f, 100.0f, 70.0f, 110.0f };
Vec lbl_1_data_2C = { 800.0f, 1300.0f, 1000.0f }; Vec lbl_1_data_2C = { 800.0f, 1300.0f, 1000.0f };
Vec lbl_1_data_38 = { 0.0f, 0.0f, 0.0f }; Vec lbl_1_data_38 = { 0.0f, 0.0f, 0.0f };
GXColor lbl_1_data_44 = { 0xFF, 0xFF, 0xFF, 0xFF }; GXColor lbl_1_data_44 = { 0xFF, 0xFF, 0xFF, 0xFF };
Vec lbl_1_data_48 = { 10.0f, 45.0f, 0.0f }; // UNUSED
Vec lbl_1_data_54 = { 1300.0f, 2500.0f, 1300.0f }; Vec lbl_1_data_54 = { 1300.0f, 2500.0f, 1300.0f };
Vec lbl_1_data_60 = { 0.0f, 1.0f, 0.0f }; Vec lbl_1_data_60 = { 0.0f, 1.0f, 0.0f };
Vec lbl_1_data_6C = { 0.0f, 0.0f, -500.0f }; Vec lbl_1_data_6C = { 0.0f, 0.0f, -500.0f };
@ -188,7 +189,7 @@ void fn_1_8F0(omObjData* arg0) {
anim = HuSprAnimRead(HuDataReadNum(0x47000B, 0x10000000)); anim = HuSprAnimRead(HuDataReadNum(0x47000B, 0x10000000));
lbl_1_bss_10[0] = fn_1_956C(anim, 0x40, 50.0f, 0x40, 0x40); lbl_1_bss_10[0] = fn_1_956C(anim, 0x40, 50.0f, 0x40, 0x40);
fn_1_9B94(lbl_1_bss_10[0], &fn_1_2240); fn_1_9B94(lbl_1_bss_10[0], fn_1_2240);
Hu3DModelLayerSet(lbl_1_bss_10[0], 7); Hu3DModelLayerSet(lbl_1_bss_10[0], 7);
arg0->func = &fn_1_AE0; arg0->func = &fn_1_AE0;
} }
@ -295,3 +296,404 @@ s32 fn_1_E14(omObjData* arg0) {
} }
return 0; return 0;
} }
s32 fn_1_1138(omObjData* object) {
unkStruct2* sp8;
f32 var_f31;
f32 var_f30;
s16 temp_r29;
u8 var_r28;
unkStruct3* temp_r30;
unkStruct* var_r31;
sp8 = (unkStruct2*)lbl_1_bss_6C->data;
temp_r29 = fn_1_F0FC();
temp_r30 = (unkStruct3*)lbl_1_bss_C0[temp_r29]->data;
switch (lbl_1_bss_6) {
case 0:
if (lbl_1_bss_8 == 0) {
Hu3DMotionShiftSet(lbl_1_bss_C0[temp_r29]->model[0], lbl_1_bss_C0[temp_r29]->motion[1], 0.0f, 7.0f, 0x40000001);
temp_r30->unk40 = temp_r30->unk34;
}
lbl_1_bss_8++;
var_f30 = lbl_1_bss_8 / 30.0f;
if (var_f30 >= 1.0f) {
var_f30 = 1.0f;
if (lbl_1_bss_B == 0) {
lbl_1_bss_B = 1;
Hu3DMotionShiftSet(lbl_1_bss_C0[temp_r29]->model[0], lbl_1_bss_C0[temp_r29]->motion[0], 0.0f, 7.0f, 0x40000001);
}
}
temp_r30->unk34 = (temp_r30->unk40 + (var_f30 * (360.0f - temp_r30->unk40)));
var_r31 = &lbl_1_data_78[1]; // could be fn_1_6C8
var_r28 = 0;
lbl_1_bss_4++;
var_f31 = lbl_1_bss_4 / 120.0f;
if (var_f31 > 1.0f) {
lbl_1_bss_4 = 0;
var_f31 = 1.0f;
var_r28 = 1;
}
var_f31 = (sin((M_PI * (90.0f * var_f31)) / 180.0) * sin((M_PI * (90.0f * var_f31)) / 180.0));
CZoom = fn_1_93C0(var_r31[0].zoom, var_r31[1].zoom, var_f31);
Center.x = fn_1_93C0(var_r31[0].center.x, var_r31[1].center.x, var_f31);
Center.y = fn_1_93C0(var_r31[0].center.y, var_r31[1].center.y, var_f31);
Center.z = fn_1_93C0(var_r31[0].center.z, var_r31[1].center.z, var_f31);
CRot.x = fn_1_93C0(var_r31[0].rot.x, var_r31[1].rot.x, var_f31);
CRot.y = fn_1_93C0(var_r31[0].rot.y, var_r31[1].rot.y, var_f31);
CRot.z = fn_1_93C0(var_r31[0].rot.z, var_r31[1].rot.z, var_f31);
if (var_r28 != 0) {
lbl_1_bss_8 = 0;
lbl_1_bss_6++;
}
break;
case 1:
Hu3DMotionShiftSet(lbl_1_bss_C0[temp_r29]->model[0], lbl_1_bss_C0[temp_r29]->motion[5], 0.0f, 7.0f, 0);
HuAudSStreamPlay(1);
lbl_1_bss_6++;
lbl_1_bss_8 = 0;
break;
case 2:
if (++lbl_1_bss_8 > 210.0f) {
lbl_1_bss_6 = 0;
return 1;
}
break;
}
return 0;
}
void fn_1_16D8(void) {
unkStruct2* temp_r31;
temp_r31 = (unkStruct2*)lbl_1_bss_6C->data;
temp_r31->unk6--;
}
void fn_1_1708(void) {
unkStruct2* temp_r31;
temp_r31 = (unkStruct2*)lbl_1_bss_6C->data;
if (temp_r31->unk8 != -1) {
MGSeqParamSet(temp_r31->unk8, 2, -1);
temp_r31->unk8 = -1;
temp_r31->unk6 = 0;
}
}
void fn_1_1768(void) {
unkStruct2* temp_r31;
temp_r31 = (unkStruct2*)lbl_1_bss_6C->data;
if (temp_r31->unk8 == -1) {
temp_r31->unk6 = 0x12C;
temp_r31->unk8 = MGSeqCreate(1, 5, -1, -1);
}
}
s16 fn_1_17CC(void) {
unkStruct2* var_r31;
var_r31 = (unkStruct2*)lbl_1_bss_6C->data;
return var_r31->unk6;
}
s16 fn_1_17F4(void) {
unkStruct2* var_r31;
var_r31 = (unkStruct2*)lbl_1_bss_6C->data;
return var_r31->unk8;
}
void fn_1_181C(void) {
unkStruct2* temp_r31;
temp_r31 = (unkStruct2*)lbl_1_bss_6C->data;
if (temp_r31->unk4 == -1) {
temp_r31->unk4 = MGSeqCreate(3, 0);
MGSeqPosSet(temp_r31->unk4, 320.0f, 240.0f);
}
}
u8 fn_1_1890(void) {
unkStruct2* temp_r31;
temp_r31 = (unkStruct2*)lbl_1_bss_6C->data;
if (temp_r31->unk4 != -1) {
return MGSeqStatGet(temp_r31->unk4);
} else {
return 0;
}
}
void fn_1_18E0(void) {
unkStruct2* temp_r31;
temp_r31 = (unkStruct2*)lbl_1_bss_6C->data;
temp_r31->unk4 = MGSeqCreate(3, 1);
MGSeqPosSet(temp_r31->unk4, 320.0f, 240.0f);
HuAudSeqFadeOut(temp_r31->unkC, 0x64);
}
s32 fn_1_1954(void) {
unkStruct2* sp8;
sp8 = (unkStruct2*)lbl_1_bss_6C->data;
if ((lbl_1_bss_2 != 0) || (lbl_1_bss_1 != 0)) {
return 0;
} else {
return 1;
}
}
void fn_1_19B0(void) {
f32 temp_f29;
f32 var_f28;
f32 var_f27;
f32 temp_f31;
f32 var_f30;
s16 var_r31;
var_f30 = (((rand8() << 8) | rand8()) % 361);
for (var_r31 = 1; var_r31 < 4; var_r31++, var_f30+=120.0f) {
temp_f31 = 0.01f * ((((rand8() << 8) | rand8()) % 51) + 50);
temp_f29 = (temp_f31 * (200.0 * sin((M_PI * var_f30) / 180.0)));
var_f28 = (temp_f31 * (200.0 * cos((M_PI * var_f30) / 180.0)));
var_f27 = 0.0f;
Hu3DModelPosSet(lbl_1_bss_10[var_r31], temp_f29, 300.0f + var_f28, var_f27);
temp_f31 = 0.1f * ((((rand8() << 8) | rand8()) % 11) + 25);
Hu3DModelScaleSet(lbl_1_bss_10[var_r31], temp_f31, temp_f31, temp_f31);
Hu3DModelAttrReset(lbl_1_bss_10[var_r31], 1);
Hu3DModelAttrReset(lbl_1_bss_10[var_r31], 0x40000002);
}
}
void fn_1_1CAC(void) {
s16 var_r31;
for (var_r31 = 1; var_r31 < 4; var_r31++) {
Hu3DMotionTimeSet(lbl_1_bss_10[var_r31], 0.0f);
Hu3DModelAttrSet(lbl_1_bss_10[var_r31], 1);
Hu3DModelAttrSet(lbl_1_bss_10[var_r31], 0x40000002);
}
}
void fn_1_1D54(f32 arg8, f32 arg9, f32 argA, s16 arg0, f32 argB, s16 arg1) {
Vec sp30;
Vec sp24;
GXColor sp1E;
f32 temp_f30;
f32 temp_f29;
f32 temp_f31;
s16 var_r30;
unkStruct4* var_r31;
for (var_r30 = 0; var_r30 < arg0; var_r30++) {
temp_f31 = argB + ((((rand8() << 8) | rand8()) % 11) - 5);
temp_f30 = sin((M_PI * temp_f31) / 180.0);
temp_f29 = cos((M_PI * temp_f31) / 180.0);
sp30.x = arg8 + ((((rand8() << 8) | rand8()) % 21) - 10);
sp30.y = arg9 + ((((rand8() << 8) | rand8()) % 21) - 10);
sp30.z = argA;
sp24.x = sp24.y = sp24.z = 1.0f;
sp1E.r = sp1E.g = sp1E.b = 0xFF;
sp1E.a = 0x80;
var_r31 = fn_1_942C(arg1, &sp30, &sp24, 0.0f, &sp1E);
if (!var_r31) break;
var_r31->unk34 = 0;
var_r31->unk36 = ((rand8() << 8) | rand8()) % 2 + 2;
var_r31->unk0.x = (temp_f30 * (0.1f * ((((rand8() << 8) | rand8()) % 41) + 0x28)));
var_r31->unk0.y = (temp_f29 * (0.1f * ((((rand8() << 8) | rand8()) % 61) + 0x3C)));
var_r31->unk0.z = 0.0f;
var_r31->unk18 = (0.01f * var_r31->unk0.x);
var_r31->unk1C = 0.1f;
var_r31->unk24 = 1.5f;
var_r31->unk28 = ((0.1f * ((((rand8() << 8) | rand8()) % 7) + 2)) / (var_r31->unk36 * 0xE));
var_r31->unk2C = sp1E.a;
var_r31->unk30 = (var_r31->unk2C / (var_r31->unk36 * 0xE));
}
}
void fn_1_2240(omObjData* object, unkStruct5* arg1, Mtx* arg2) {
unkStruct4* var_r31;
GXColor* var_r30;
s16 var_r29;
var_r31 = arg1->unk18;
var_r30 = arg1->unk24;
for (var_r29 = 0; var_r29 < arg1->unk0; var_r29++, var_r31++, var_r30++) {
if (var_r31->unk62 != 0) {
var_r31->unk54.x += var_r31->unk0.x;
var_r31->unk54.y += var_r31->unk0.y;
var_r31->unk54.z += var_r31->unk0.z;
var_r31->unk0.x -= var_r31->unk18;
var_r31->unk0.y += var_r31->unk1C;
var_r31->unk18 = (0.001f * var_r31->unk0.x);
var_r31->unk1C *= 1.05f;
var_r31->unk24 += var_r31->unk28;
var_r31->unk48.x = var_r31->unk48.y = var_r31->unk48.z = var_r31->unk24;
var_r31->unk2C -= var_r31->unk30;
var_r30->a = var_r31->unk2C > 255.0f ? 255 : (u8)var_r31->unk2C;
var_r31->unk34++;
if (var_r31->unk34 >= var_r31->unk36) {
var_r31->unk34 = 0;
var_r31->unk60++;
}
if (var_r31->unk60 >= arg1->unk14 - 2) {
var_r31->unk62 = 0;
}
}
}
}
u16 fn_1_23E4(u16 arg0) {
unkStruct2* temp_r31;
temp_r31 = (unkStruct2*)lbl_1_bss_6C->data;
if (!temp_r31) {
return 0;
}
return temp_r31->unk0 & arg0;
}
void fn_1_2428(u16 arg0, u16 arg1) {
unkStruct2* temp_r31;
temp_r31 = (unkStruct2*)lbl_1_bss_6C->data;
temp_r31->unk0 = (temp_r31->unk0 & ~arg0);
temp_r31->unk0 = (temp_r31->unk0 | arg1);
}
void fn_1_2470(omObjData* arg0) {
ModelData* temp_r29;
HsfObject* temp_r28;
f32 temp_f31;
f32 var_f30;
f32 var_f29;
s16 temp_r26;
s16 var_r30;
unkStruct2* temp_r27;
arg0->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x34, 0x10000000);
temp_r27 = arg0->data;
arg0->stat |= 0x100;
arg0->model[0] = Hu3DModelCreateFile(0x470008);
arg0->model[1] = Hu3DModelCreateFile(0x470009);
arg0->model[2] = Hu3DModelCreateFile(0x470000);
arg0->model[3] = Hu3DModelCreateFile(0x470002);
arg0->model[8] = Hu3DModelCreateFile(0x470003);
arg0->model[6] = Hu3DModelCreateFile(0x470004);
arg0->model[4] = Hu3DModelCreateFile(0x470005);
arg0->model[5] = Hu3DModelCreateFile(0x470006);
arg0->model[7] = Hu3DModelCreateFile(0x470007);
temp_r26 = Hu3DModelCreateFile(0x470001);
Hu3DModelAttrSet(arg0->model[0], 0x40000001);
Hu3DModelAttrSet(arg0->model[2], 0x20000);
Hu3DModelAttrSet(arg0->model[2], 0x40000002);
Hu3DModelAttrSet(temp_r26, 1);
for (var_r30 = 0; var_r30 < 8; var_r30++) {
Hu3DModelLayerSet(arg0->model[var_r30], 1);
}
Hu3DModelPosSet(arg0->model[2], 0.0f, 5000.0f, 0.0f);
Hu3DModelPosSet(arg0->model[3], 0.0f, 5000.0f, 0.0f);
Hu3DModelShadowSet(arg0->model[2]);
Hu3DModelShadowSet(arg0->model[3]);
Hu3DModelShadowMapSet(arg0->model[0]);
for (var_r30 = 0; var_r30 < 5; var_r30++) {
temp_f31 = (450.0 * cos(M_PI * lbl_1_data_0[var_r30] / 180.0));
var_f29 = (450.0 * sin(M_PI * lbl_1_data_0[var_r30] / 180.0));
Hu3DModelPosSet(arg0->model[var_r30+4], temp_f31, 0.0f, var_f29);
var_f30 = 90.0f - lbl_1_data_0[var_r30];
Hu3DModelRotSet(arg0->model[var_r30+4], 0.0f, var_f30, 0.0f);
Hu3DMotionSpeedSet(arg0->model[var_r30+4], 0.0f);
}
temp_r27->unk0 = 0;
temp_r27->unk1C = 5;
temp_r29 = &Hu3DData[temp_r26];
temp_r28 = temp_r29->hsfData->root;
lbl_1_bss_60 = temp_r28->data.childrenCount;
lbl_1_bss_64 = HuMemDirectMalloc(HEAP_DATA, lbl_1_bss_60 * 64);
OSReport("Koopa Object Count %d\n", temp_r29->hsfData->objectCnt);
for (var_r30 = 0; var_r30 < lbl_1_bss_60; var_r30++) {
lbl_1_bss_64[var_r30].unk20 = 0;
}
for (var_r30 = 0; var_r30 < lbl_1_bss_60; var_r30++) {
lbl_1_bss_64[var_r30].unk4 = var_r30;
fn_1_5C2C(temp_r26, temp_r28->data.children[var_r30], &lbl_1_bss_64[var_r30], 2);
if (lbl_1_bss_64[var_r30].unk20 != 0) {
Hu3DModelAttrSet(lbl_1_bss_64[var_r30].unk0, 1);
Hu3DModelPosSet(lbl_1_bss_64[var_r30].unk0, 0.0f, 250.0f, 0.0f);
lbl_1_bss_64[var_r30].unk38 = &fn_1_57B4;
}
}
arg0->func = &fn_1_2A74;
}
void fn_1_2A74(omObjData* object) {
fn_1_2AB4(object);
fn_1_2CA8(object);
fn_1_4660(object);
}
void fn_1_2AB4(omObjData* object) {
unkStruct2* sp8;
sp8 = (unkStruct2*)object->data;
switch (fn_1_4EA8(0x20)) {
case 0x20:
fn_1_2B04(object);
}
}
s16 lbl_1_data_E4[2] = {0, 0};
s16 lbl_1_data_E8[2] = {0, 0};
void fn_1_2B04(omObjData* object) {
f32 temp_f31;
unkStruct* temp_r31;
temp_r31 = (unkStruct*)object->data;
switch (lbl_1_data_E4[0]) {
case 0:
lbl_1_data_E8[0]++;
temp_f31 = lbl_1_data_E8[0] / 360.0f;
if (temp_f31 > 1.0f) {
temp_f31 = 1.0f;
Hu3DModelAttrSet(object->model[3], 1);
lbl_1_data_E8[0] = 0;
lbl_1_data_E4[0] = 0;
fn_1_4EEC(0x20, 0);
return;
}
temp_f31 = sin((M_PI * (90.0f * temp_f31)) / 180.0);
temp_r31->center.y = (250.0f + (1750.0f * temp_f31));
}
Hu3DModelPosSet(object->model[3], temp_r31->center.x, temp_r31->center.y, temp_r31->center.z);
Hu3DModelRotSet(object->model[3], temp_r31->rot.x, temp_r31->rot.y, temp_r31->rot.z);
}
void fn_1_2CA8(omObjData* arg0) {
unkStruct2* sp8;
sp8 = (unkStruct2*)arg0->data;
switch (fn_1_4EA8(7)) {
case 1:
fn_1_2D28(arg0);
break;
case 3:
fn_1_33D4(arg0);
break;
case 4:
case 5:
fn_1_3DD8(arg0);
}
}