Decompile more of m401dll
This commit is contained in:
parent
9355447017
commit
8aabd2cda6
4 changed files with 721 additions and 14 deletions
|
|
@ -447,8 +447,8 @@ lbl_2_data_118 = .data:0x00000118; // type:object size:0xC
|
||||||
lbl_2_data_124 = .data:0x00000124; // type:object size:0x14 data:4byte
|
lbl_2_data_124 = .data:0x00000124; // type:object size:0x14 data:4byte
|
||||||
lbl_2_data_138 = .data:0x00000138; // type:object size:0x20 data:4byte
|
lbl_2_data_138 = .data:0x00000138; // type:object size:0x20 data:4byte
|
||||||
lbl_2_data_158 = .data:0x00000158; // type:object size:0x140
|
lbl_2_data_158 = .data:0x00000158; // type:object size:0x140
|
||||||
lbl_2_data_298 = .data:0x00000298; // type:object size:0x30
|
lbl_2_data_298 = .data:0x00000298; // type:object size:0x30 data:float
|
||||||
lbl_2_data_2C8 = .data:0x000002C8; // type:object size:0x30
|
lbl_2_data_2C8 = .data:0x000002C8; // type:object size:0x30 data:float
|
||||||
jumptable_2_data_2F8 = .data:0x000002F8; // type:object size:0x30 scope:local
|
jumptable_2_data_2F8 = .data:0x000002F8; // type:object size:0x30 scope:local
|
||||||
lbl_2_data_32C = .data:0x0000032C; // type:object size:0x8
|
lbl_2_data_32C = .data:0x0000032C; // type:object size:0x8
|
||||||
lbl_2_data_334 = .data:0x00000334; // type:object size:0xF0
|
lbl_2_data_334 = .data:0x00000334; // type:object size:0xF0
|
||||||
|
|
|
||||||
|
|
@ -9,11 +9,63 @@ extern float lbl_2_bss_128;
|
||||||
extern float lbl_2_bss_124;
|
extern float lbl_2_bss_124;
|
||||||
extern s16 lbl_2_bss_120;
|
extern s16 lbl_2_bss_120;
|
||||||
|
|
||||||
|
typedef struct m401_work_player {
|
||||||
|
s16 unk0;
|
||||||
|
s32 unk4;
|
||||||
|
s32 unk8;
|
||||||
|
Vec unkC;
|
||||||
|
Vec unk18;
|
||||||
|
Vec unk24;
|
||||||
|
Vec unk30;
|
||||||
|
Vec unk3C;
|
||||||
|
omObjData *unk48;
|
||||||
|
omObjData *unk4C;
|
||||||
|
omObjData *unk50;
|
||||||
|
omObjData *unk54;
|
||||||
|
Vec unk58;
|
||||||
|
float unk64;
|
||||||
|
s16 unk68;
|
||||||
|
s16 unk6A;
|
||||||
|
s16 unk6C;
|
||||||
|
s16 unk6E;
|
||||||
|
s16 unk70;
|
||||||
|
s16 unk72;
|
||||||
|
s16 unk74;
|
||||||
|
s16 unk76;
|
||||||
|
s16 unk78;
|
||||||
|
s16 unk7A;
|
||||||
|
s16 unk7C;
|
||||||
|
s16 unk7E;
|
||||||
|
float unk80;
|
||||||
|
s16 unk84;
|
||||||
|
s16 unk86;
|
||||||
|
float unk88;
|
||||||
|
s16 unk8C;
|
||||||
|
s16 unk8E;
|
||||||
|
s16 unk90;
|
||||||
|
s16 unk92;
|
||||||
|
Vec unk94;
|
||||||
|
s8 unkA0;
|
||||||
|
s8 unkA1;
|
||||||
|
} M401WorkPlayer;
|
||||||
|
|
||||||
|
typedef struct unkwork_10A88 {
|
||||||
|
Vec unk0;
|
||||||
|
omObjData *unkC;
|
||||||
|
s16 unk10;
|
||||||
|
s16 unk12;
|
||||||
|
s16 unk14;
|
||||||
|
s32 unk18;
|
||||||
|
float unk1C;
|
||||||
|
} UnkWork10A88;
|
||||||
|
|
||||||
void fn_2_10240(Vec *arg0, Vec *arg1);
|
void fn_2_10240(Vec *arg0, Vec *arg1);
|
||||||
void fn_2_1041C(void);
|
void fn_2_1041C(void);
|
||||||
void fn_2_10710(void);
|
void fn_2_10710(void);
|
||||||
|
|
||||||
void fn_2_1079C(void);
|
void fn_2_1079C(void);
|
||||||
|
omObjData *fn_2_10A88(Vec *arg0, s16 arg1);
|
||||||
|
|
||||||
omObjData *fn_2_14640(Process *objman);
|
omObjData *fn_2_14640(Process *objman);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -12,6 +12,8 @@ typedef struct vec2f {
|
||||||
#define ABS(x) (((x) < 0) ? -(x) : (x))
|
#define ABS(x) (((x) < 0) ? -(x) : (x))
|
||||||
|
|
||||||
#define VECDistanceXZ(a, b) sqrtf((((a)->x-(b)->x)*((a)->x-(b)->x))+(((a)->z-(b)->z)*((a)->z-(b)->z)))
|
#define VECDistanceXZ(a, b) sqrtf((((a)->x-(b)->x)*((a)->x-(b)->x))+(((a)->z-(b)->z)*((a)->z-(b)->z)))
|
||||||
|
#define VECDistanceAlt(a, b) sqrtf((((a)->x-(b)->x)*((a)->x-(b)->x))+(((a)->y-(b)->y)*((a)->y-(b)->y))+(((a)->z-(b)->z)*((a)->z-(b)->z)))
|
||||||
|
|
||||||
#define VECMagXZ(a) sqrtf(((a)->x*(a)->x)+((a)->z*(a)->z))
|
#define VECMagXZ(a) sqrtf(((a)->x*(a)->x)+((a)->z*(a)->z))
|
||||||
|
|
||||||
#define sind(x) sin(M_PI*(x)/180.0)
|
#define sind(x) sin(M_PI*(x)/180.0)
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,19 @@
|
||||||
#include "game/object.h"
|
#include "game/object.h"
|
||||||
#include "game/memory.h"
|
#include "game/memory.h"
|
||||||
#include "game/hsfman.h"
|
#include "game/hsfman.h"
|
||||||
|
#include "game/hsfmotion.h"
|
||||||
#include "game/objsub.h"
|
#include "game/objsub.h"
|
||||||
#include "game/minigame_seq.h"
|
#include "game/minigame_seq.h"
|
||||||
#include "game/gamework_data.h"
|
#include "game/gamework_data.h"
|
||||||
#include "game/wipe.h"
|
#include "game/wipe.h"
|
||||||
#include "game/esprite.h"
|
#include "game/esprite.h"
|
||||||
#include "game/sprite.h"
|
#include "game/sprite.h"
|
||||||
|
#include "game/frand.h"
|
||||||
|
#include "game/chrman.h"
|
||||||
|
|
||||||
#include "REL/m401Dll.h"
|
#include "REL/m401Dll.h"
|
||||||
|
#include "math.h"
|
||||||
|
#include "ext_math.h"
|
||||||
|
|
||||||
#include "rel_sqrt_consts.h"
|
#include "rel_sqrt_consts.h"
|
||||||
|
|
||||||
|
|
@ -178,15 +183,6 @@ void ModuleProlog(void)
|
||||||
lbl_2_bss_11C = HuAudFXPlay(1290);
|
lbl_2_bss_11C = HuAudFXPlay(1290);
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct m401_work_player {
|
|
||||||
s16 unk0;
|
|
||||||
u8 unk2[0x66];
|
|
||||||
s16 unk68;
|
|
||||||
u8 unk6A[8];
|
|
||||||
s16 unk72;
|
|
||||||
s16 unk74;
|
|
||||||
} M401WorkPlayer;
|
|
||||||
|
|
||||||
void fn_2_70C(omObjData *object)
|
void fn_2_70C(omObjData *object)
|
||||||
{
|
{
|
||||||
s32 temp_r31;
|
s32 temp_r31;
|
||||||
|
|
@ -509,7 +505,6 @@ void fn_2_1A38(omObjData *object);
|
||||||
void fn_2_1B80(omObjData *object);
|
void fn_2_1B80(omObjData *object);
|
||||||
void fn_2_1CF0(omObjData *object);
|
void fn_2_1CF0(omObjData *object);
|
||||||
void fn_2_1DE8(omObjData *object);
|
void fn_2_1DE8(omObjData *object);
|
||||||
void fn_2_1DE8(omObjData *object);
|
|
||||||
void fn_2_20B0(omObjData *object);
|
void fn_2_20B0(omObjData *object);
|
||||||
void fn_2_2CBC(omObjData *object);
|
void fn_2_2CBC(omObjData *object);
|
||||||
void fn_2_2D64(omObjData *object);
|
void fn_2_2D64(omObjData *object);
|
||||||
|
|
@ -517,7 +512,7 @@ void fn_2_2DCC(omObjData *object);
|
||||||
void fn_2_2E20(omObjData *object);
|
void fn_2_2E20(omObjData *object);
|
||||||
void fn_2_2ED0(omObjData *object);
|
void fn_2_2ED0(omObjData *object);
|
||||||
|
|
||||||
omObjFunc lbl_2_data_CC[] = {
|
omObjFunc lbl_2_data_CC[][2] = {
|
||||||
fn_2_1A38,
|
fn_2_1A38,
|
||||||
fn_2_2CBC,
|
fn_2_2CBC,
|
||||||
fn_2_1B80,
|
fn_2_1B80,
|
||||||
|
|
@ -579,7 +574,6 @@ void fn_2_1B80(omObjData *object)
|
||||||
Vec sp8;
|
Vec sp8;
|
||||||
omObjData *temp_r31;
|
omObjData *temp_r31;
|
||||||
HsfObject *temp_r30 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[1]);
|
HsfObject *temp_r30 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[1]);
|
||||||
|
|
||||||
temp_r30->type = 2;
|
temp_r30->type = 2;
|
||||||
sp14.x = -1000;
|
sp14.x = -1000;
|
||||||
sp14.y = 0;
|
sp14.y = 0;
|
||||||
|
|
@ -611,3 +605,662 @@ void fn_2_1CF0(omObjData *object)
|
||||||
sp8.z = -16300;
|
sp8.z = -16300;
|
||||||
fn_2_FC40(40, &sp20, &sp14, &sp8);
|
fn_2_FC40(40, &sp20, &sp14, &sp8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void fn_2_91AC(omObjData *object, Vec *pos);
|
||||||
|
|
||||||
|
void fn_2_1DE8(omObjData *object)
|
||||||
|
{
|
||||||
|
Vec sp2C;
|
||||||
|
Vec sp20;
|
||||||
|
Vec sp14;
|
||||||
|
Vec sp8;
|
||||||
|
omObjData *temp_r31;
|
||||||
|
HsfObject *temp_r30 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[3]);
|
||||||
|
temp_r30->type = 2;
|
||||||
|
sp2C.x = 0;
|
||||||
|
sp2C.y = -150.0f+((1.0f/255.0f)*(300.0f*(u32)frand8()));
|
||||||
|
sp2C.z = -23000;
|
||||||
|
fn_2_91AC(lbl_2_bss_100[0], &sp2C);
|
||||||
|
sp2C.x = 0;
|
||||||
|
sp2C.y = -150.0f+((1.0f/255.0f)*(300.0f*(u32)frand8()));
|
||||||
|
sp2C.z = -25000;
|
||||||
|
fn_2_91AC(lbl_2_bss_100[1], &sp2C);
|
||||||
|
sp2C.x = 5500;
|
||||||
|
sp2C.y = 0;
|
||||||
|
sp2C.z = -29800;
|
||||||
|
sp20.x = 100;
|
||||||
|
sp20.y = 100;
|
||||||
|
sp20.z = 100;
|
||||||
|
sp14.x = -1500;
|
||||||
|
sp14.y = 0;
|
||||||
|
sp14.z = -24900;
|
||||||
|
temp_r31 = fn_2_FC40(20, &sp2C, &sp20, &sp14);
|
||||||
|
fn_2_E6BC((omObjData *)temp_r31->work[0], 6, 1.5f, 0.2f, 0.8f, 3.5f);
|
||||||
|
sp8.x = -650;
|
||||||
|
sp8.y = -360;
|
||||||
|
sp8.z = -26300;
|
||||||
|
lbl_2_bss_D0 = fn_2_10A88(&sp8, 3);
|
||||||
|
lbl_2_bss_90[0] = HuAudFXEmiterPlay(1291, &sp8);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_2_20B0(omObjData *object)
|
||||||
|
{
|
||||||
|
Vec sp8;
|
||||||
|
HsfObject *temp_r30 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[4]);
|
||||||
|
temp_r30->type = 2;
|
||||||
|
Hu3DModelAttrReset(object->model[7], 1);
|
||||||
|
sp8.x = 0;
|
||||||
|
sp8.y = -370;
|
||||||
|
sp8.z = -43000;
|
||||||
|
lbl_2_bss_8 = fn_2_10A88(&sp8, 3);
|
||||||
|
lbl_2_bss_90[1] = HuAudFXEmiterPlay(1291, &sp8);
|
||||||
|
sp8.x = 380;
|
||||||
|
sp8.y = -440;
|
||||||
|
sp8.z = -32000;
|
||||||
|
lbl_2_bss_CC = fn_2_10A88(&sp8, 3);
|
||||||
|
lbl_2_bss_90[2] = HuAudFXEmiterPlay(1291, &sp8);
|
||||||
|
Hu3DModelAttrReset(object->model[2], 1);
|
||||||
|
Hu3DModelAttrSet(object->model[2], 0xC0000001);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_2_21F8(omObjData *object)
|
||||||
|
{
|
||||||
|
Vec sp2C;
|
||||||
|
Vec sp20;
|
||||||
|
Vec sp14;
|
||||||
|
Vec sp8;
|
||||||
|
s32 temp_r30;
|
||||||
|
HsfObject *temp_r29 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[0]);
|
||||||
|
s32 temp_r28;
|
||||||
|
temp_r29->type = 2;
|
||||||
|
Hu3DModelAttrReset(object->model[0], 1);
|
||||||
|
Hu3DModelAttrReset(object->model[1], 1);
|
||||||
|
Hu3DModelAttrSet(object->model[0], 0x40000001);
|
||||||
|
Hu3DModelAttrSet(object->model[1], 0x40000001);
|
||||||
|
Hu3DModelAttrReset(object->model[3], 1);
|
||||||
|
lbl_2_bss_44.x = 0;
|
||||||
|
lbl_2_bss_44.y = 100;
|
||||||
|
lbl_2_bss_44.z = 0;
|
||||||
|
lbl_2_bss_38.x = 0;
|
||||||
|
lbl_2_bss_38.y = 1000;
|
||||||
|
lbl_2_bss_38.z = -1500;
|
||||||
|
lbl_2_bss_2C.x = 0;
|
||||||
|
lbl_2_bss_2C.y = 1;
|
||||||
|
lbl_2_bss_2C.z = 0;
|
||||||
|
Hu3DCameraPosSetV(1, &lbl_2_bss_44, &lbl_2_bss_2C, &lbl_2_bss_38);
|
||||||
|
Hu3DCameraPerspectiveSet(1, lbl_2_bss_12C, lbl_2_bss_128, lbl_2_bss_124, 1.2f);
|
||||||
|
lbl_2_bss_54 = lbl_2_bss_44;
|
||||||
|
fn_2_D088(NULL);
|
||||||
|
sp20 = lbl_2_bss_44;
|
||||||
|
VECSubtract(&lbl_2_bss_38, &lbl_2_bss_44, &sp2C);
|
||||||
|
VECNormalize(&sp2C, &sp2C);
|
||||||
|
HuAudFXListnerSetEX(&sp20, &sp2C, lbl_2_bss_88, lbl_2_bss_84, 300, 300, 300);
|
||||||
|
sp14.x = 300;
|
||||||
|
sp14.y = -450;
|
||||||
|
sp14.z = -3100;
|
||||||
|
lbl_2_bss_D8 = fn_2_10A88(&sp14, 3);
|
||||||
|
lbl_2_bss_90[0] = HuAudFXEmiterPlay(1291, &sp14);
|
||||||
|
sp14.x = -300;
|
||||||
|
sp14.y = -340;
|
||||||
|
sp14.z = -4720;
|
||||||
|
lbl_2_bss_D4 = fn_2_10A88(&sp14, 3);
|
||||||
|
lbl_2_bss_90[1] = HuAudFXEmiterPlay(1291, &sp14);
|
||||||
|
Hu3DModelAttrReset(object->model[2], 1);
|
||||||
|
Hu3DModelAttrSet(object->model[2], 0xC0000001);
|
||||||
|
temp_r28 = 4;
|
||||||
|
for(temp_r30=0; temp_r30<temp_r28; temp_r30++) {
|
||||||
|
sp8.x = -340.0f+((1.0f/255.0f)*(680.0f*(u32)frand8()));
|
||||||
|
sp8.y = -250.0f+((1.0f/255.0f)*(500.0f*(u32)frand8()));
|
||||||
|
sp8.z = ((-1550.0f-(temp_r30*260))-40.0f)+((1.0f/255.0f)*(80.0f*(u32)frand8()));
|
||||||
|
fn_2_10A88(&sp8, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef struct work_2FA4 {
|
||||||
|
s32 unk0;
|
||||||
|
float unk4;
|
||||||
|
Vec unk8;
|
||||||
|
Vec unk14[2];
|
||||||
|
s16 unk2C;
|
||||||
|
} Work2FA4;
|
||||||
|
|
||||||
|
void fn_2_26E0(omObjData *object)
|
||||||
|
{
|
||||||
|
Vec sp2C;
|
||||||
|
Vec sp20;
|
||||||
|
Vec sp14;
|
||||||
|
Vec sp8;
|
||||||
|
Work2FA4 *temp_r30;
|
||||||
|
s32 temp_r29;
|
||||||
|
Hu3DModelAttrReset(object->model[4], 1);
|
||||||
|
Hu3DModelClusterAttrSet(object->model[4], 0, 0xC0000001);
|
||||||
|
Hu3DModelAttrReset(object->model[8], 1);
|
||||||
|
Hu3DModelAttrSet(object->model[8], 0x40000001);
|
||||||
|
Hu3DModelAttrSet(object->model[4], 0x40000001);
|
||||||
|
Hu3DModelShadowMapSet(object->model[4]);
|
||||||
|
Hu3DModelAttrReset(object->model[5], 1);
|
||||||
|
Hu3DModelPosSet(object->model[4], 0, 0, 0);
|
||||||
|
Hu3DModelAmbSet(object->model[4], 1, 1, 1);
|
||||||
|
Hu3DModelPosSet(object->model[5], 0, 0, 0);
|
||||||
|
Hu3DModelPosSet(object->model[6], 0, 0, 0);
|
||||||
|
temp_r30 = lbl_2_bss_10C->data;
|
||||||
|
if(lbl_2_bss_BA) {
|
||||||
|
temp_r30->unk14[0].x = 210;
|
||||||
|
temp_r30->unk14[0].y = 1018;
|
||||||
|
temp_r30->unk14[0].z = 0;
|
||||||
|
temp_r30->unk14[1].x = -160;
|
||||||
|
temp_r30->unk14[1].y = 1020;
|
||||||
|
temp_r30->unk14[1].z = -50;
|
||||||
|
for(temp_r29=0; temp_r29<2; temp_r29++) {
|
||||||
|
Hu3DModelPosSet(object->model[temp_r29+9], temp_r30->unk14[temp_r29].x, temp_r30->unk14[temp_r29].y, temp_r30->unk14[temp_r29].z);
|
||||||
|
Hu3DModelAttrReset(object->model[temp_r29+9], 1);
|
||||||
|
}
|
||||||
|
Hu3DMotionSet(object->model[10], object->motion[0]);
|
||||||
|
Hu3DMotionSet(object->model[9], object->motion[2]);
|
||||||
|
} else {
|
||||||
|
temp_r30->unk14[0].x = 210;
|
||||||
|
temp_r30->unk14[0].y = 1018;
|
||||||
|
temp_r30->unk14[0].z = 0;
|
||||||
|
temp_r30->unk14[1].x = -160;
|
||||||
|
temp_r30->unk14[1].y = 1020;
|
||||||
|
temp_r30->unk14[1].z = -50;
|
||||||
|
for(temp_r29=0; temp_r29<2; temp_r29++) {
|
||||||
|
Hu3DModelPosSet(object->model[temp_r29+9], temp_r30->unk14[temp_r29].x, temp_r30->unk14[temp_r29].y, temp_r30->unk14[temp_r29].z);
|
||||||
|
Hu3DModelAttrReset(object->model[temp_r29+9], 1);
|
||||||
|
}
|
||||||
|
Hu3DMotionSet(object->model[10], object->motion[1]);
|
||||||
|
Hu3DMotionSet(object->model[9], object->motion[2]);
|
||||||
|
}
|
||||||
|
Hu3DModelAttrSet(object->model[9], 0x40000001);
|
||||||
|
Hu3DModelAttrSet(object->model[10], 0x40000001);
|
||||||
|
Hu3DModelRotSet(object->model[9], 0, 90, 0);
|
||||||
|
Hu3DModelPosSet(object->model[11], 210, 1018, 0);
|
||||||
|
Hu3DModelRotSet(object->model[11], 0, 90, 0);
|
||||||
|
Hu3DModelAttrReset(object->model[11], 1);
|
||||||
|
Hu3DModelAttrSet(object->model[11], 0x40000001);
|
||||||
|
sp2C.x = 0;
|
||||||
|
sp2C.y = 1300;
|
||||||
|
sp2C.z = 1300;
|
||||||
|
sp20.x = 0;
|
||||||
|
sp20.y = 920;
|
||||||
|
sp20.z = -100;
|
||||||
|
sp14.x = 0;
|
||||||
|
sp14.y = 1;
|
||||||
|
sp14.z = 0;
|
||||||
|
Hu3DCameraPosSetV(1, &sp2C, &sp14, &sp20);
|
||||||
|
lbl_2_bss_12C = 45;
|
||||||
|
Hu3DShadowData.unk_08.x = lbl_2_bss_12C;
|
||||||
|
MTXLightPerspective(Hu3DShadowData.unk_68, lbl_2_bss_12C, 1.2f, 0.5f, -0.5f, 0.5f, 0.5f);
|
||||||
|
Hu3DCameraPerspectiveSet(1, lbl_2_bss_12C, lbl_2_bss_128, lbl_2_bss_124, 1.2f);
|
||||||
|
VECSubtract(&sp20, &sp2C, &sp8);
|
||||||
|
VECNormalize(&sp8, &sp8);
|
||||||
|
HuAudFXListnerUpdate(&sp2C, &sp8);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_2_2CBC(omObjData *object)
|
||||||
|
{
|
||||||
|
HsfObject *temp_r30 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[0]);
|
||||||
|
temp_r30->type = -1;
|
||||||
|
Hu3DModelAttrSet(object->model[3], 1);
|
||||||
|
lbl_2_bss_D8->work[0] = 1;
|
||||||
|
Hu3DModelAttrSet(object->model[2], 1);
|
||||||
|
HuAudFXStop(lbl_2_bss_90[0]);
|
||||||
|
HuAudFXStop(lbl_2_bss_90[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_2_2D64(omObjData *object)
|
||||||
|
{
|
||||||
|
HsfObject *temp_r31 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[1]);
|
||||||
|
temp_r31->type = -1;
|
||||||
|
lbl_2_bss_D4->work[0] = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_2_2DCC(omObjData *object)
|
||||||
|
{
|
||||||
|
HsfObject *temp_r31 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[2]);
|
||||||
|
temp_r31->type = -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_2_2E20(omObjData *object)
|
||||||
|
{
|
||||||
|
HsfObject *temp_r30 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[3]);
|
||||||
|
temp_r30->type = -1;
|
||||||
|
Hu3DModelAttrSet(lbl_2_bss_100[0]->model[0], 1);
|
||||||
|
Hu3DModelAttrSet(lbl_2_bss_100[1]->model[0], 1);
|
||||||
|
lbl_2_bss_D0->work[0] = 1;
|
||||||
|
HuAudFXStop(lbl_2_bss_90[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_2_2ED0(omObjData *object)
|
||||||
|
{
|
||||||
|
HsfObject *temp_r30 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[4]);
|
||||||
|
temp_r30->type = -1;
|
||||||
|
Hu3DModelAttrSet(object->model[7], 1);
|
||||||
|
Hu3DModelAttrSet(object->model[0], 1);
|
||||||
|
lbl_2_bss_8->work[0] = 1;
|
||||||
|
lbl_2_bss_CC->work[0] = 1;
|
||||||
|
Hu3DModelAttrSet(object->model[2], 1);
|
||||||
|
HuAudFXStop(lbl_2_bss_90[1]);
|
||||||
|
HuAudFXStop(lbl_2_bss_90[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_2_2F9C(omObjData *object)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_2_2FA0(omObjData *object)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_2_33B4(omObjData *object);
|
||||||
|
|
||||||
|
void fn_2_2FA4(omObjData *object)
|
||||||
|
{
|
||||||
|
Work2FA4 *temp_r30;
|
||||||
|
s32 temp_r29;
|
||||||
|
HsfObject *temp_r28;
|
||||||
|
object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work2FA4), MEMORY_DEFAULT_NUM);
|
||||||
|
temp_r30 = object->data;
|
||||||
|
fn_2_D088(NULL);
|
||||||
|
temp_r30->unk0 = 0;
|
||||||
|
temp_r30->unk8.x = 0;
|
||||||
|
temp_r30->unk8.y = 0;
|
||||||
|
temp_r30->unk8.z = 0;
|
||||||
|
temp_r30->unk2C = 0;
|
||||||
|
object->model[0] = Hu3DModelCreateFile(0x200000);
|
||||||
|
Hu3DModelAttrSet(object->model[0], 1);
|
||||||
|
object->model[1] = Hu3DModelCreateFile(0x200001);
|
||||||
|
Hu3DModelAttrSet(object->model[1], 1);
|
||||||
|
object->model[2] = Hu3DModelCreateFile(0x200007);
|
||||||
|
Hu3DModelAttrSet(object->model[2], 1);
|
||||||
|
Hu3DModelAttrSet(object->model[2], 0x40000001);
|
||||||
|
object->model[3] = Hu3DModelCreateFile(0x20001F);
|
||||||
|
Hu3DModelAttrSet(object->model[3], 1);
|
||||||
|
object->model[4] = Hu3DModelCreateFile(0x200020);
|
||||||
|
Hu3DModelAttrSet(object->model[4], 1);
|
||||||
|
object->model[11] = Hu3DModelCreateFile(0x20002C);
|
||||||
|
Hu3DModelAttrSet(object->model[11], 1);
|
||||||
|
object->model[7] = Hu3DModelCreateFile(0x200003);
|
||||||
|
Hu3DModelAttrSet(object->model[7], 1);
|
||||||
|
object->model[8] = Hu3DModelCreateFile(0x200023);
|
||||||
|
Hu3DModelAttrSet(object->model[8], 1);
|
||||||
|
object->model[9] = Hu3DModelCreateFile(0x200028);
|
||||||
|
Hu3DModelAttrSet(object->model[9], 1);
|
||||||
|
object->model[10] = Hu3DModelCreateFile(0x200028);
|
||||||
|
Hu3DModelAttrSet(object->model[10], 1);
|
||||||
|
Hu3DModelShadowSet(object->model[10]);
|
||||||
|
object->model[5] = Hu3DModelCreateFile(0x200021);
|
||||||
|
Hu3DModelAttrSet(object->model[5], 1);
|
||||||
|
object->model[6] = Hu3DModelCreateFile(0x200022);
|
||||||
|
Hu3DModelAttrSet(object->model[6], 1);
|
||||||
|
object->motion[0] = Hu3DJointMotionFile(object->model[10], 0x200029);
|
||||||
|
object->motion[1] = Hu3DJointMotionFile(object->model[10], 0x20002A);
|
||||||
|
object->motion[2] = Hu3DJointMotionFile(object->model[9], 0x20002B);
|
||||||
|
Hu3DModelPosSet(object->model[1], 0, 0, -1500);
|
||||||
|
Hu3DModelShadowMapSet(object->model[0]);
|
||||||
|
for(temp_r29=0; temp_r29<5; temp_r29++) {
|
||||||
|
temp_r28 = Hu3DModelObjPtrGet(object->model[0], lbl_2_data_124[temp_r29]);
|
||||||
|
temp_r28->type = -1;
|
||||||
|
}
|
||||||
|
fn_2_21F8(object);
|
||||||
|
object->func = fn_2_33B4;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_2_33B4(omObjData *object)
|
||||||
|
{
|
||||||
|
Hu3DModelPosSet(object->model[3], 110, 5.0*sind(lbl_2_bss_10), -1500);
|
||||||
|
lbl_2_bss_10 += 2.0f;
|
||||||
|
if(lbl_2_bss_10 >= 360.0f) {
|
||||||
|
lbl_2_bss_10 -= 360.0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_2_9E28(float arg1, float arg2);
|
||||||
|
|
||||||
|
void fn_2_34B8(omObjData *object)
|
||||||
|
{
|
||||||
|
Vec sp8;
|
||||||
|
Work2FA4 *temp_r31;
|
||||||
|
s32 temp_r30;
|
||||||
|
s32 temp_r28;
|
||||||
|
temp_r31 = object->data;
|
||||||
|
if(lbl_2_bss_60.z < -5000.0f && temp_r31->unk0 == 0) {
|
||||||
|
temp_r31->unk0 = 1;
|
||||||
|
fn_2_9E28(-15500, -20000);
|
||||||
|
}
|
||||||
|
if(lbl_2_bss_6C.z <= lbl_2_data_A0[lbl_2_bss_C]) {
|
||||||
|
lbl_2_bss_C++;
|
||||||
|
lbl_2_data_CC[lbl_2_bss_C][0](object);
|
||||||
|
}
|
||||||
|
if(lbl_2_bss_6C.z <= lbl_2_data_B4[lbl_2_bss_E]) {
|
||||||
|
lbl_2_data_CC[lbl_2_bss_E][1](object);
|
||||||
|
lbl_2_bss_E++;
|
||||||
|
}
|
||||||
|
if(lbl_2_bss_6C.z <= -40000.0f) {
|
||||||
|
lbl_2_bss_BE = 1;
|
||||||
|
}
|
||||||
|
if(temp_r31->unk2C) {
|
||||||
|
temp_r31->unk2C--;
|
||||||
|
} else {
|
||||||
|
temp_r31->unk2C = 274;
|
||||||
|
if(lbl_2_bss_60.z > -31260.0f) {
|
||||||
|
temp_r28 = 4;
|
||||||
|
for(temp_r30=0; temp_r30<temp_r28; temp_r30++) {
|
||||||
|
sp8.x = -340.0f+((1.0f/255.0f)*(680.0f*(u32)frand8()));
|
||||||
|
sp8.y = -250.0f+((1.0f/255.0f)*(500.0f*(u32)frand8()));
|
||||||
|
sp8.z = ((-4000.0f-(temp_r30*240))-40.0f)+((1.0f/255.0f)*(80.0f*(u32)frand8()));
|
||||||
|
fn_2_10A88(&sp8, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_2_3838(omObjData *object)
|
||||||
|
{
|
||||||
|
Work2FA4 *temp_r31;
|
||||||
|
s32 temp_r29;
|
||||||
|
float temp_f31;
|
||||||
|
temp_r31 = object->data;
|
||||||
|
temp_r31->unk4 = 5.0*sind(temp_r31->unk8.x);
|
||||||
|
temp_r31->unk8.y += temp_r31->unk8.z;
|
||||||
|
Hu3DModelPosSet(object->model[4], temp_r31->unk8.y, temp_r31->unk4, 0);
|
||||||
|
Hu3DModelPosSet(object->model[5], temp_r31->unk8.y, 0, 0);
|
||||||
|
Hu3DModelScaleSet(object->model[5], 1.0f-(0.09f*(temp_r31->unk4/5.0f)), 1.0f, 1.0f-(0.09f*(temp_r31->unk4/5.0f)));
|
||||||
|
for(temp_r29=0; temp_r29<2; temp_r29++) {
|
||||||
|
temp_f31 = temp_r31->unk14[temp_r29].y+(5.0*sind(temp_r31->unk8.x));
|
||||||
|
temp_r31->unk14[temp_r29].x += temp_r31->unk8.z;
|
||||||
|
Hu3DModelPosSet(object->model[temp_r29+9], temp_r31->unk14[temp_r29].x, temp_f31, temp_r31->unk14[temp_r29].z);
|
||||||
|
}
|
||||||
|
Hu3DModelPosSet(object->model[11], temp_r31->unk14[0].x, temp_f31, temp_r31->unk14[0].z);
|
||||||
|
temp_r31->unk8.z *= 1.04f;
|
||||||
|
if(temp_r31->unk8.z > 12.0f) {
|
||||||
|
temp_r31->unk8.z = 12.0f;
|
||||||
|
}
|
||||||
|
temp_r31->unk8.x += 2.0f;
|
||||||
|
if(temp_r31->unk8.x >= 360.0f) {
|
||||||
|
temp_r31->unk8.x -= 360.0f;
|
||||||
|
}
|
||||||
|
lbl_2_data_30.x = temp_r31->unk8.y;
|
||||||
|
lbl_2_data_48.x = temp_r31->unk8.y;
|
||||||
|
Hu3DShadowPosSet(&lbl_2_data_30, &lbl_2_data_3C, &lbl_2_data_48);
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_2_3F28(omObjData *object);
|
||||||
|
|
||||||
|
s32 lbl_2_data_158[][10] = {
|
||||||
|
0x005F002A,
|
||||||
|
0x00200031,
|
||||||
|
0x005F0000,
|
||||||
|
0x005F002B,
|
||||||
|
0x005F0005,
|
||||||
|
0x005F0017,
|
||||||
|
0x00200039,
|
||||||
|
0x00200041,
|
||||||
|
0x005F0022,
|
||||||
|
0x00200049,
|
||||||
|
0x001A002A,
|
||||||
|
0x00200032,
|
||||||
|
0x001A0000,
|
||||||
|
0x001A002B,
|
||||||
|
0x001A0005,
|
||||||
|
0x001A0017,
|
||||||
|
0x0020003A,
|
||||||
|
0x00200042,
|
||||||
|
0x001A0022,
|
||||||
|
0x0020004A,
|
||||||
|
0x006D002A,
|
||||||
|
0x00200033,
|
||||||
|
0x006D0000,
|
||||||
|
0x006D002B,
|
||||||
|
0x006D0005,
|
||||||
|
0x006D0017,
|
||||||
|
0x0020003B,
|
||||||
|
0x00200043,
|
||||||
|
0x006D0022,
|
||||||
|
0x0020004B,
|
||||||
|
0x008A002A,
|
||||||
|
0x00200034,
|
||||||
|
0x008A0000,
|
||||||
|
0x008A002B,
|
||||||
|
0x008A0005,
|
||||||
|
0x008A0017,
|
||||||
|
0x0020003C,
|
||||||
|
0x00200044,
|
||||||
|
0x008A0022,
|
||||||
|
0x0020004C,
|
||||||
|
0x0085002A,
|
||||||
|
0x00200035,
|
||||||
|
0x00850000,
|
||||||
|
0x0085002B,
|
||||||
|
0x00850005,
|
||||||
|
0x00850017,
|
||||||
|
0x0020003D,
|
||||||
|
0x00200045,
|
||||||
|
0x00850022,
|
||||||
|
0x0020004D,
|
||||||
|
0x0011002A,
|
||||||
|
0x00200036,
|
||||||
|
0x00110000,
|
||||||
|
0x0011002B,
|
||||||
|
0x00110005,
|
||||||
|
0x00110017,
|
||||||
|
0x0020003E,
|
||||||
|
0x00200046,
|
||||||
|
0x00110022,
|
||||||
|
0x0020004E,
|
||||||
|
0x000D002A,
|
||||||
|
0x00200037,
|
||||||
|
0x000D0000,
|
||||||
|
0x000D002B,
|
||||||
|
0x000D0005,
|
||||||
|
0x000D0017,
|
||||||
|
0x0020003F,
|
||||||
|
0x00200047,
|
||||||
|
0x000D0022,
|
||||||
|
0x0020004F,
|
||||||
|
0x0081002A,
|
||||||
|
0x00200038,
|
||||||
|
0x00810000,
|
||||||
|
0x0081002B,
|
||||||
|
0x00810005,
|
||||||
|
0x00810017,
|
||||||
|
0x00200040,
|
||||||
|
0x00200048,
|
||||||
|
0x00810022,
|
||||||
|
0x00200050,
|
||||||
|
};
|
||||||
|
|
||||||
|
Vec lbl_2_data_298[] = {
|
||||||
|
-150, 1250, -1400,
|
||||||
|
-50, 1250, -1400,
|
||||||
|
50, 1250, -1400,
|
||||||
|
150, 1250, -1400,
|
||||||
|
};
|
||||||
|
|
||||||
|
Vec lbl_2_data_2C8[] = {
|
||||||
|
-300, 0, -1500,
|
||||||
|
-100, 0, -1500,
|
||||||
|
100, 0, -1500,
|
||||||
|
300, 0, -1500,
|
||||||
|
};
|
||||||
|
|
||||||
|
void fn_2_3F28(omObjData *object);
|
||||||
|
|
||||||
|
void fn_2_3B24(omObjData *object)
|
||||||
|
{
|
||||||
|
M401WorkPlayer *temp_r31;
|
||||||
|
s32 temp_r29;
|
||||||
|
s32 temp_r28;
|
||||||
|
s32 temp_r27;
|
||||||
|
object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(M401WorkPlayer), MEMORY_DEFAULT_NUM);
|
||||||
|
temp_r31 = object->data;
|
||||||
|
temp_r29 = object->work[0];
|
||||||
|
temp_r31->unk4 = temp_r29;
|
||||||
|
temp_r31->unk8 = GWPlayerCfg[temp_r29].pad_idx;
|
||||||
|
temp_r27 = GWPlayerCfg[temp_r29].character;
|
||||||
|
temp_r31->unk86 = lbl_2_data_4[temp_r27];
|
||||||
|
object->model[0] = CharModelCreate(temp_r31->unk86, 4);
|
||||||
|
if(temp_r29 == 0) {
|
||||||
|
object->model[2] = Hu3DModelCreateFile(0x200025);
|
||||||
|
object->model[3] = Hu3DModelCreateFile(0x200027);
|
||||||
|
} else {
|
||||||
|
object->model[2] = Hu3DModelLink(lbl_2_bss_118[0]->model[2]);
|
||||||
|
object->model[3] = Hu3DModelCreateFile(0x200027);
|
||||||
|
}
|
||||||
|
Hu3DModelAttrSet(object->model[3], 0x40000002);
|
||||||
|
Hu3DModelClusterAttrSet(object->model[3], 0, 0xC0000002);
|
||||||
|
Hu3DModelLayerSet(object->model[3], 7);
|
||||||
|
for(temp_r28=0; temp_r28<10; temp_r28++) {
|
||||||
|
object->motion[temp_r28] = CharModelMotionCreate(lbl_2_data_4[temp_r27], lbl_2_data_158[temp_r27][temp_r28]);
|
||||||
|
}
|
||||||
|
CharModelMotionSet(temp_r31->unk86, object->motion[2]);
|
||||||
|
Hu3DModelAttrSet(object->model[0], 0x40000001);
|
||||||
|
Hu3DModelAttrSet(object->model[2], 1);
|
||||||
|
Hu3DModelAttrSet(object->model[2], 0x40000001);
|
||||||
|
Hu3DModelLayerSet(object->model[2], 2);
|
||||||
|
Hu3DModelAmbSet(object->model[0], 1, 1, 1);
|
||||||
|
Hu3DModelShadowSet(object->model[0]);
|
||||||
|
CharModelVoiceEnableSet(lbl_2_data_4[temp_r27], object->motion[4], 0);
|
||||||
|
temp_r31->unkC = lbl_2_data_2C8[temp_r29];
|
||||||
|
temp_r31->unk58.z = 0;
|
||||||
|
omSetTra(object, lbl_2_data_298[temp_r29].x, lbl_2_data_298[temp_r29].y, lbl_2_data_298[temp_r29].z);
|
||||||
|
temp_r31->unk0 = 0;
|
||||||
|
temp_r31->unk6E = 70;
|
||||||
|
temp_r31->unk24.x = lbl_2_data_2C8[temp_r29].x;
|
||||||
|
temp_r31->unk24.y = lbl_2_data_2C8[temp_r29].y;
|
||||||
|
temp_r31->unk24.z = 800+lbl_2_data_2C8[temp_r29].z;
|
||||||
|
temp_r31->unk6A = 0;
|
||||||
|
temp_r31->unk72 = 0;
|
||||||
|
temp_r31->unk74 = 0;
|
||||||
|
temp_r31->unk78 = 0;
|
||||||
|
temp_r31->unk7A = 0;
|
||||||
|
temp_r31->unk7C = 0;
|
||||||
|
temp_r31->unk76 = 0;
|
||||||
|
temp_r31->unk88 = 0;
|
||||||
|
temp_r31->unk84 = 0;
|
||||||
|
temp_r31->unk8C = 0;
|
||||||
|
temp_r31->unk8E = 0;
|
||||||
|
temp_r31->unk94.x = temp_r31->unk94.y = temp_r31->unk94.z = 0;
|
||||||
|
temp_r31->unk90 = 0;
|
||||||
|
temp_r31->unkA0 = temp_r31->unkA1 = 0;
|
||||||
|
CharModelMotionDataClose(temp_r31->unk86);
|
||||||
|
object->func = fn_2_3F28;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fn_2_6B44(omObjData *object);
|
||||||
|
void fn_2_D3E8(omObjData *object);
|
||||||
|
|
||||||
|
void fn_2_3F28(omObjData *object)
|
||||||
|
{
|
||||||
|
Vec sp28;
|
||||||
|
Vec sp1C;
|
||||||
|
Vec sp10;
|
||||||
|
M401WorkPlayer *temp_r31;
|
||||||
|
CameraData *temp_r29;
|
||||||
|
omObjData *temp_r28;
|
||||||
|
UnkWork10A88 *temp_r27;
|
||||||
|
float temp_f27;
|
||||||
|
temp_r31 = object->data;
|
||||||
|
switch(temp_r31->unk0) {
|
||||||
|
case 0:
|
||||||
|
if(--temp_r31->unk6E == 0) {
|
||||||
|
temp_r31->unk0 = 1;
|
||||||
|
CharModelMotionShiftSet(temp_r31->unk86, object->motion[4], 0, 20, 0);
|
||||||
|
temp_r31->unk58.x = 16;
|
||||||
|
temp_r31->unk58.y = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
if(object->trans.y < 1100) {
|
||||||
|
|
||||||
|
|
||||||
|
temp_r31->unk0 = 2;
|
||||||
|
temp_f27 = VECDistanceAlt(&object->trans, &temp_r31->unk24);
|
||||||
|
temp_r31->unk58.z = temp_f27;
|
||||||
|
temp_r31->unk58.y = 0;
|
||||||
|
temp_r31->unk6E = 110;
|
||||||
|
temp_r28 = fn_2_10A88(&lbl_2_data_298[temp_r31->unk4], 2);
|
||||||
|
temp_r31->unk50 = temp_r28;
|
||||||
|
temp_r27 = temp_r28->data;
|
||||||
|
temp_r27->unkC = object;
|
||||||
|
fn_2_6B44(object);
|
||||||
|
temp_r28 = fn_2_10A88(&lbl_2_data_298[temp_r31->unk4], 4);
|
||||||
|
temp_r27 = temp_r28->data;
|
||||||
|
temp_r27->unkC = object;
|
||||||
|
temp_r31->unk4C = temp_r28;
|
||||||
|
temp_r28 = fn_2_10A88(&lbl_2_data_298[temp_r31->unk4], 5);
|
||||||
|
temp_r27 = temp_r28->data;
|
||||||
|
temp_r27->unkC = object;
|
||||||
|
temp_r31->unk48 = temp_r28;
|
||||||
|
CharModelMotionShiftSet(temp_r31->unk86, object->motion[1], 0, 80, 0x40000001);
|
||||||
|
temp_r31->unk30.x = object->trans.x;
|
||||||
|
temp_r31->unk30.y = object->trans.y;
|
||||||
|
temp_r31->unk30.z = object->trans.z;
|
||||||
|
Hu3DModelAttrReset(object->model[3], 1);
|
||||||
|
Hu3DModelAttrReset(object->model[3], 0x40000002);
|
||||||
|
Hu3DModelClusterAttrReset(object->model[3], 0, 0xC0000002);
|
||||||
|
Hu3DModelPosSet(object->model[3], object->trans.x, 100, 100+object->trans.z);
|
||||||
|
Hu3DMotionTimeSet(object->model[3], 0);
|
||||||
|
if(temp_r31->unk4 == 0) {
|
||||||
|
HuAudFXPlay(1281);
|
||||||
|
}
|
||||||
|
omVibrate(temp_r31->unk4, 12, 4, 2);
|
||||||
|
} else {
|
||||||
|
object->trans.y += temp_r31->unk58.x-(0.07f*temp_r31->unk58.y*temp_r31->unk58.y);
|
||||||
|
object->trans.z += 2.0f;
|
||||||
|
temp_r31->unk58.y += 1.0f;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
temp_r29 = &Hu3DCamera[0];
|
||||||
|
sp1C = temp_r31->unk24;
|
||||||
|
sp10 = temp_r31->unk30;
|
||||||
|
VECSubtract(&sp1C, &sp10, &sp28);
|
||||||
|
VECNormalize(&sp28, &sp28);
|
||||||
|
object->trans.x = temp_r31->unk30.x+(temp_r31->unk58.z*(sp28.x*sind(temp_r31->unk58.y)));
|
||||||
|
object->trans.y = temp_r31->unk30.y+(temp_r31->unk58.z*(sp28.y*sind(temp_r31->unk58.y)));
|
||||||
|
object->trans.z = temp_r31->unk30.z+(temp_r31->unk58.z*(sp28.z*sind(temp_r31->unk58.y)));
|
||||||
|
temp_r31->unk58.y += 9.0f/11.0f;
|
||||||
|
omSetRot(object, atan2d(sp28.y, sp28.z)+90.0, 0, 0);
|
||||||
|
temp_f27 = VECDistanceAlt(&object->trans, &sp1C);
|
||||||
|
if(--temp_r31->unk6E == 60 && temp_r31->unk4 == 0 && lbl_2_bss_4 == NULL) {
|
||||||
|
temp_r29 = &Hu3DCamera[0];
|
||||||
|
lbl_2_bss_4 = omAddObjEx(HuPrcCurrentGet(), 1400, 0, 0, -1, fn_2_D3E8);
|
||||||
|
lbl_2_bss_4->trans.x = temp_r29->pos.x;
|
||||||
|
lbl_2_bss_4->trans.y = temp_r29->pos.y;
|
||||||
|
lbl_2_bss_4->trans.z = temp_r29->pos.z;
|
||||||
|
lbl_2_bss_4->rot.x = temp_r29->target.x;
|
||||||
|
lbl_2_bss_4->rot.y = temp_r29->target.y;
|
||||||
|
lbl_2_bss_4->rot.z = temp_r29->target.z;
|
||||||
|
lbl_2_bss_4->scale.x = 0;
|
||||||
|
}
|
||||||
|
if(temp_r31->unk6E == 0) {
|
||||||
|
temp_r31->unk0 = 3;
|
||||||
|
temp_r31->unk4C->work[0] = 1;
|
||||||
|
temp_r31->unk48->work[0] = 1;
|
||||||
|
}
|
||||||
|
fn_2_6B44(object);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3:
|
||||||
|
sp1C.x = lbl_2_bss_108->trans.x;
|
||||||
|
sp1C.y = lbl_2_data_298[temp_r31->unk4].y;
|
||||||
|
sp1C.z = lbl_2_bss_108->trans.z;
|
||||||
|
sp10.x = object->trans.x;
|
||||||
|
sp10.y = object->trans.y;
|
||||||
|
sp10.z = object->trans.z;
|
||||||
|
VECSubtract(&sp1C, &sp10, &sp28);
|
||||||
|
VECNormalize(&sp28, &sp28);
|
||||||
|
object->rot.x *= 0.95f;
|
||||||
|
if(object->rot.x < 1.0f) {
|
||||||
|
object->rot.x = 0.0f;
|
||||||
|
}
|
||||||
|
omSetRot(object, object->rot.x, atan2d(sp28.x, sp28.z), 0);
|
||||||
|
fn_2_6B44(object);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue