Decompile m408dll/camera.c
This commit is contained in:
parent
ded418c543
commit
33b771b393
6 changed files with 919 additions and 86 deletions
|
|
@ -223,88 +223,88 @@ lbl_1_rodata_2A8 = .rodata:0x000002A8; // type:object size:0x8 scope:local data:
|
|||
lbl_1_rodata_2B0 = .rodata:0x000002B0; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_2B8 = .rodata:0x000002B8; // type:object size:0x8 scope:local data:double
|
||||
lbl_1_rodata_2C0 = .rodata:0x000002C0; // type:object size:0x8 scope:local data:float
|
||||
lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 data:double
|
||||
lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 data:double
|
||||
lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 data:double
|
||||
lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 data:double
|
||||
lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x8 data:double
|
||||
lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x48
|
||||
lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x10 data:4byte
|
||||
lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x10 data:4byte
|
||||
lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x28 data:2byte
|
||||
lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x10 data:4byte
|
||||
lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x10 data:4byte
|
||||
lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x8 data:float
|
||||
lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_2CC = .rodata:0x000002CC; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_2D8 = .rodata:0x000002D8; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_2DC = .rodata:0x000002DC; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_2E0 = .rodata:0x000002E0; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_2E4 = .rodata:0x000002E4; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_2E8 = .rodata:0x000002E8; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_2EC = .rodata:0x000002EC; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_2F0 = .rodata:0x000002F0; // type:object size:0x8 scope:local data:double
|
||||
lbl_1_rodata_2F8 = .rodata:0x000002F8; // type:object size:0x8 scope:local data:double
|
||||
lbl_1_rodata_300 = .rodata:0x00000300; // type:object size:0x8 scope:local data:double
|
||||
lbl_1_rodata_308 = .rodata:0x00000308; // type:object size:0x8 scope:local data:double
|
||||
lbl_1_rodata_310 = .rodata:0x00000310; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_314 = .rodata:0x00000314; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_318 = .rodata:0x00000318; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_31C = .rodata:0x0000031C; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_320 = .rodata:0x00000320; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_324 = .rodata:0x00000324; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_328 = .rodata:0x00000328; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_32C = .rodata:0x0000032C; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_330 = .rodata:0x00000330; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_334 = .rodata:0x00000334; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_338 = .rodata:0x00000338; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_33C = .rodata:0x0000033C; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_340 = .rodata:0x00000340; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_344 = .rodata:0x00000344; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_348 = .rodata:0x00000348; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_34C = .rodata:0x0000034C; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_350 = .rodata:0x00000350; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_354 = .rodata:0x00000354; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_358 = .rodata:0x00000358; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_35C = .rodata:0x0000035C; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_360 = .rodata:0x00000360; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_364 = .rodata:0x00000364; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_368 = .rodata:0x00000368; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_36C = .rodata:0x0000036C; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_370 = .rodata:0x00000370; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_374 = .rodata:0x00000374; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_378 = .rodata:0x00000378; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_37C = .rodata:0x0000037C; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_380 = .rodata:0x00000380; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_384 = .rodata:0x00000384; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_388 = .rodata:0x00000388; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_38C = .rodata:0x0000038C; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_390 = .rodata:0x00000390; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_394 = .rodata:0x00000394; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_398 = .rodata:0x00000398; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_39C = .rodata:0x0000039C; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_3A0 = .rodata:0x000003A0; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_3A4 = .rodata:0x000003A4; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_3A8 = .rodata:0x000003A8; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_3AC = .rodata:0x000003AC; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_3B0 = .rodata:0x000003B0; // type:object size:0x8 scope:local data:double
|
||||
lbl_1_rodata_3B8 = .rodata:0x000003B8; // type:object size:0x48 scope:local data:float
|
||||
lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x10 scope:local data:4byte
|
||||
lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x10 scope:local data:4byte
|
||||
lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x28 scope:local data:2byte
|
||||
lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_48C = .rodata:0x0000048C; // type:object size:0x10 scope:local data:float
|
||||
lbl_1_rodata_49C = .rodata:0x0000049C; // type:object size:0x10 scope:local data:float
|
||||
lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_4B4 = .rodata:0x000004B4; // type:object size:0x4 scope:local data:float
|
||||
lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x8 scope:local data:float
|
||||
lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float
|
||||
lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float
|
||||
|
|
|
|||
|
|
@ -883,7 +883,7 @@ config.libs = [
|
|||
objects={
|
||||
Object(Matching, "REL/executor.c"),
|
||||
Object(Matching, "REL/m408Dll/main.c"),
|
||||
Object(NonMatching, "REL/m408Dll/camera.c"),
|
||||
Object(Matching, "REL/m408Dll/camera.c"),
|
||||
Object(NonMatching, "REL/m408Dll/stage.c"),
|
||||
Object(NonMatching, "REL/m408Dll/object.c"),
|
||||
},
|
||||
|
|
|
|||
|
|
@ -35,6 +35,8 @@ typedef struct work_2FAC {
|
|||
|
||||
u32 fn_1_6878(void);
|
||||
Work2FAC *fn_1_68A8(s32 arg0);
|
||||
void fn_1_817C(Vec *arg0, Vec *arg1);
|
||||
void fn_1_84C4(float arg0, float arg1, float arg2, float arg3, float arg4, float arg5);
|
||||
float fn_1_883C(float arg0, float arg1, float arg2);
|
||||
void fn_1_C3C0(Vec *arg0, Vec *arg1);
|
||||
u32 fn_1_C43C(void);
|
||||
|
|
@ -45,4 +47,7 @@ void fn_1_C44C(Process *objman);
|
|||
void fn_1_118D0(Process *objman);
|
||||
s32 fn_1_162CC(Vec *arg0, Vec *arg1);
|
||||
|
||||
extern s32 lbl_1_bss_44;
|
||||
extern s32 lbl_1_bss_40;
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -32,8 +32,8 @@ typedef struct {
|
|||
typedef struct particle_data {
|
||||
/* 0x00 */ s16 unk_00;
|
||||
/* 0x02 */ s16 unk_02;
|
||||
/* 0x04 */ float unk_04;
|
||||
/* 0x08 */ char unk_08[0x14];
|
||||
/* 0x04 */ Vec unk_04;
|
||||
/* 0x10 */ char unk_10[0x0C];
|
||||
/* 0x1C */ void *unk_1C;
|
||||
/* 0x20 */ s16 unk_20;
|
||||
/* 0x22 */ s16 unk_22;
|
||||
|
|
|
|||
828
src/REL/m408Dll/camera.c
Normal file
828
src/REL/m408Dll/camera.c
Normal file
|
|
@ -0,0 +1,828 @@
|
|||
#include "game/object.h"
|
||||
#include "game/objsub.h"
|
||||
#include "game/wipe.h"
|
||||
#include "game/chrman.h"
|
||||
#include "game/minigame_seq.h"
|
||||
#include "game/pad.h"
|
||||
|
||||
#include "game/hsfman.h"
|
||||
#include "game/hsfmotion.h"
|
||||
#include "game/hsfanim.h"
|
||||
#include "game/hsfdraw.h"
|
||||
#include "game/sprite.h"
|
||||
|
||||
#include "game/audio.h"
|
||||
#include "game/gamework_data.h"
|
||||
|
||||
#include "REL/m408Dll.h"
|
||||
|
||||
#include "math.h"
|
||||
#include "ext_math.h"
|
||||
|
||||
omObjData *lbl_1_bss_110;
|
||||
u32 lbl_1_bss_10C;
|
||||
Vec lbl_1_bss_100;
|
||||
Vec lbl_1_bss_F4;
|
||||
HsfanimStruct01 *lbl_1_bss_A4[20];
|
||||
u32 lbl_1_bss_A0;
|
||||
HsfanimStruct01 *lbl_1_bss_94[3];
|
||||
s32 lbl_1_bss_88[3];
|
||||
s32 lbl_1_bss_84;
|
||||
s32 lbl_1_bss_80;
|
||||
|
||||
void fn_1_8A20(omObjData *object);
|
||||
void fn_1_9770(omObjData *object);
|
||||
|
||||
void fn_1_8958(Process *objman)
|
||||
{
|
||||
omObjData *object;
|
||||
lbl_1_bss_10C = 0;
|
||||
object = omAddObjEx(objman, 20, 9, 0, -1, fn_1_8A20);
|
||||
object->work[0] = 0;
|
||||
lbl_1_bss_110 = omAddObjEx(objman, 21, 2, 0, -1, fn_1_9770);
|
||||
lbl_1_bss_110->work[0] = 0;
|
||||
lbl_1_bss_84 = lbl_1_bss_80 = -1;
|
||||
}
|
||||
|
||||
void fn_1_8FAC(omObjData *object);
|
||||
|
||||
void fn_1_A894(ModelData *model, ParticleData *particle, Mtx matrix);
|
||||
void fn_1_B700(s16 arg0, u32 arg1);
|
||||
void fn_1_BB94(void);
|
||||
void fn_1_BDE0(void);
|
||||
|
||||
void fn_1_8A20(omObjData *object)
|
||||
{
|
||||
s16 temp_r31;
|
||||
s32 temp_r29;
|
||||
for(temp_r29=0; temp_r29<20; temp_r29++) {
|
||||
lbl_1_bss_A4[temp_r29] = NULL;
|
||||
}
|
||||
lbl_1_bss_A0 = 0;
|
||||
for(temp_r29=0; temp_r29<3; temp_r29++) {
|
||||
lbl_1_bss_94[temp_r29] = NULL;
|
||||
lbl_1_bss_88[temp_r29] = 0;
|
||||
}
|
||||
object->model[0] = Hu3DModelCreateFile(0x270000);
|
||||
omSetSca(object, 0.1f, 0.1f, 0.1f);
|
||||
object->model[1] = Hu3DModelCreateFile(0x270001);
|
||||
Hu3DModelScaleSet(object->model[1], 0.1f, 0.1f, 0.1f);
|
||||
Hu3DModelPosSet(object->model[1], 0, 11990, 0);
|
||||
Hu3DModelShadowMapSet(object->model[1]);
|
||||
temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(0x27000B), 1);
|
||||
object->model[2] = temp_r31;
|
||||
Hu3DModelLayerSet(temp_r31, 6);
|
||||
Hu3DParticleColSet(temp_r31, 255, 255, 255);
|
||||
Hu3DParticleHookSet(temp_r31, fn_1_A894);
|
||||
Hu3DModelPosSet(temp_r31, 0, 0, 0);
|
||||
Hu3DData[temp_r31].unk_120->unk_00 = 0;
|
||||
Hu3DData[temp_r31].unk_120->unk_02 = 0;
|
||||
temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(0x27000D), 1);
|
||||
object->model[3] = temp_r31;
|
||||
Hu3DParticleBlendModeSet(temp_r31, 1);
|
||||
Hu3DModelLayerSet(temp_r31, 6);
|
||||
Hu3DParticleColSet(temp_r31, 255, 255, 255);
|
||||
Hu3DParticleHookSet(temp_r31, fn_1_A894);
|
||||
Hu3DModelPosSet(temp_r31, 0, 0, 0);
|
||||
Hu3DData[temp_r31].unk_120->unk_00 = 0;
|
||||
Hu3DData[temp_r31].unk_120->unk_02 = 1;
|
||||
temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(0x270011), 1);
|
||||
object->model[5] = temp_r31;
|
||||
Hu3DModelLayerSet(temp_r31, 7);
|
||||
Hu3DParticleColSet(temp_r31, 255, 255, 255);
|
||||
Hu3DParticleHookSet(temp_r31, fn_1_A894);
|
||||
Hu3DModelPosSet(temp_r31, 0, 0, 0);
|
||||
Hu3DData[temp_r31].unk_120->unk_00 = 0;
|
||||
Hu3DData[temp_r31].unk_120->unk_02 = 2;
|
||||
temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(0x270010), 8);
|
||||
object->model[6] = temp_r31;
|
||||
Hu3DParticleBlendModeSet(temp_r31, 1);
|
||||
Hu3DModelLayerSet(temp_r31, 6);
|
||||
Hu3DModelPosSet(temp_r31, 0, 0, 0);
|
||||
fn_1_B700(temp_r31, 0);
|
||||
temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(0x27000F), 6);
|
||||
object->model[6] = temp_r31;
|
||||
Hu3DParticleBlendModeSet(temp_r31, 1);
|
||||
Hu3DModelLayerSet(temp_r31, 6);
|
||||
Hu3DModelPosSet(temp_r31, 0, 0, 0);
|
||||
fn_1_B700(temp_r31, 1);
|
||||
temp_r31 = Hu3DParticleCreate(HuSprAnimReadFile(0x27000D), 5);
|
||||
object->model[6] = temp_r31;
|
||||
Hu3DParticleBlendModeSet(temp_r31, 1);
|
||||
Hu3DModelLayerSet(temp_r31, 6);
|
||||
Hu3DModelPosSet(temp_r31, 0, 0, 0);
|
||||
fn_1_B700(temp_r31, 2);
|
||||
fn_1_BB94();
|
||||
lbl_1_bss_10C = 1;
|
||||
object->func = fn_1_8FAC;
|
||||
object->work[1] = 0;
|
||||
}
|
||||
|
||||
void fn_1_9514(omObjData *object);
|
||||
|
||||
void fn_1_8FAC(omObjData *object)
|
||||
{
|
||||
object->work[1]++;
|
||||
switch(lbl_1_bss_10C) {
|
||||
case 1:
|
||||
if(lbl_1_bss_110->work[0] == 4) {
|
||||
lbl_1_bss_10C = 2;
|
||||
fn_1_817C(&lbl_1_bss_100, &lbl_1_bss_F4);
|
||||
object->work[1] = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case 2:
|
||||
fn_1_817C(&lbl_1_bss_100, &lbl_1_bss_F4);
|
||||
if(lbl_1_bss_80 < 0) {
|
||||
lbl_1_bss_80 = HuAudFXPlay(1361);
|
||||
}
|
||||
lbl_1_bss_10C = 3;
|
||||
object->work[1] = 0;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
lbl_1_bss_F4.y += -6.666667f;
|
||||
lbl_1_bss_F4.z += -0.5833334f;
|
||||
lbl_1_bss_100.y += 20.0f/60.0f;
|
||||
fn_1_817C(&lbl_1_bss_100, &lbl_1_bss_F4);
|
||||
if(lbl_1_bss_F4.y > 12010) {
|
||||
break;
|
||||
}
|
||||
if(lbl_1_bss_84 < 0) {
|
||||
lbl_1_bss_84 = HuAudFXPlay(1357);
|
||||
}
|
||||
if(lbl_1_bss_80 >= 0) {
|
||||
HuAudFXStop(lbl_1_bss_80);
|
||||
lbl_1_bss_80 = -1;
|
||||
}
|
||||
lbl_1_bss_10C = 4;
|
||||
object->work[1] = 0;
|
||||
object->work[2] = 0;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
if(object->work[1] < 24.0f) {
|
||||
lbl_1_bss_100.y += 4.0f/12.0f;
|
||||
fn_1_817C(&lbl_1_bss_100, &lbl_1_bss_F4);
|
||||
} else {
|
||||
if(object->work[2] == 0) {
|
||||
if(!lbl_1_bss_40) {
|
||||
WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, -1);
|
||||
lbl_1_bss_44 = 1;
|
||||
}
|
||||
object->work[2]++;
|
||||
}
|
||||
CZoom -= 2.5000002f;
|
||||
if(object->work[1] < 90.0f) {
|
||||
break;
|
||||
}
|
||||
lbl_1_bss_10C = 5;
|
||||
object->work[1] = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
lbl_1_bss_10C = 5;
|
||||
break;
|
||||
}
|
||||
omSetTra(object, Center.x+(sind(CRot.y)*cosd(CRot.x)*CZoom), Center.y+(-sind(CRot.x)*CZoom), Center.z+(cosd(CRot.y)*cosd(CRot.x)*CZoom));
|
||||
fn_1_BDE0();
|
||||
if(lbl_1_bss_10C == 5) {
|
||||
Hu3DModelAttrSet(object->model[0], 1);
|
||||
Hu3DModelAttrSet(object->model[1], 1);
|
||||
lbl_1_bss_10C = 5;
|
||||
object->func = fn_1_9514;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_9514(omObjData *object)
|
||||
{
|
||||
if(!WipeStatGet() && object->work[2] != 0) {
|
||||
if(!lbl_1_bss_40) {
|
||||
WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, -1);
|
||||
lbl_1_bss_44 = 0;
|
||||
}
|
||||
object->work[2] = 0;
|
||||
}
|
||||
if(fn_1_6878() >= 4) {
|
||||
Hu3DModelAttrReset(object->model[0], 1);
|
||||
}
|
||||
omSetTra(object, Center.x+(sind(CRot.y)*cosd(CRot.x)*CZoom), Center.y+(-sind(CRot.x)*CZoom)-1000, Center.z+(cosd(CRot.y)*cosd(CRot.x)*CZoom));
|
||||
}
|
||||
|
||||
typedef struct work_99C8 {
|
||||
Vec unk0;
|
||||
Vec unkC;
|
||||
Vec unk18;
|
||||
Vec unk24;
|
||||
Vec unk30;
|
||||
Vec unk3C;
|
||||
s32 unk48[2];
|
||||
} Work99C8;
|
||||
|
||||
void fn_1_99C8(omObjData *object);
|
||||
void fn_1_A37C(ModelData *model, ParticleData *particle, Mtx matrix);
|
||||
|
||||
void fn_1_9770(omObjData *object)
|
||||
{
|
||||
Work99C8 *temp_r31;
|
||||
s32 temp_r29;
|
||||
|
||||
object->data = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(Work99C8), MEMORY_DEFAULT_NUM);
|
||||
temp_r31 = object->data;
|
||||
object->model[0] = Hu3DModelCreateFile(0x27000A);
|
||||
Hu3DModelAttrSet(object->model[0], 0x40000001);
|
||||
Hu3DMotionSpeedSet(object->model[0], 3.0f);
|
||||
Hu3DModelShadowSet(object->model[0]);
|
||||
object->func = fn_1_99C8;
|
||||
object->work[0] = 0;
|
||||
object->work[1] = 0;
|
||||
temp_r31->unk3C.x = temp_r31->unk3C.y = temp_r31->unk3C.z = 0;
|
||||
temp_r31->unk0.x = temp_r31->unk0.y = temp_r31->unk0.z = 0;
|
||||
temp_r31->unk0.z = 1000;
|
||||
omSetTra(object, 0, 12080, -2*temp_r31->unk0.z);
|
||||
omSetSca(object, 0.5f, 0.5f, 0.5f);
|
||||
temp_r29 = Hu3DParticleCreate(HuSprAnimReadFile(0x270024), 1024);
|
||||
object->model[1] = temp_r29;
|
||||
Hu3DModelLayerSet(temp_r29, 6);
|
||||
Hu3DParticleColSet(temp_r29, 255, 255, 255);
|
||||
Hu3DParticleHookSet(temp_r29, fn_1_A37C);
|
||||
Hu3DModelPosSet(temp_r29, 0, 0, 0);
|
||||
Hu3DData[temp_r29].unk_120->unk_00 = 0;
|
||||
temp_r31->unk30.y = -35;
|
||||
temp_r31->unk30.z = 350;
|
||||
temp_r31->unk18.y = 800+object->trans.y;
|
||||
temp_r31->unk48[0] = temp_r31->unk48[1] = -1;
|
||||
HuDataDirClose(0x27000A);
|
||||
}
|
||||
|
||||
void fn_1_A334(omObjData *object);
|
||||
void fn_1_A4E8(s32 arg0, Vec *arg1, u32 arg2);
|
||||
|
||||
void fn_1_99C8(omObjData *object)
|
||||
{
|
||||
float temp_f31;
|
||||
float temp_f30;
|
||||
|
||||
Vec sp2C;
|
||||
Vec sp20;
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
|
||||
Work99C8 *temp_r31;
|
||||
temp_r31 = object->data;
|
||||
object->trans.x += temp_r31->unk0.x*(1.0f/60.0f);
|
||||
object->trans.y += temp_r31->unk0.y*(1.0f/60.0f);
|
||||
object->trans.z += temp_r31->unk0.z*(1.0f/60.0f);
|
||||
object->work[1]++;
|
||||
switch(object->work[0]) {
|
||||
case 0:
|
||||
if(object->work[1] < 120.0f) {
|
||||
temp_f30 = (1.0f/60.0f)*(1.5f*(120.0f-object->work[1]));
|
||||
if(temp_f30 > 1.0f) {
|
||||
temp_f30 = 1.0f;
|
||||
}
|
||||
temp_f31 = temp_r31->unk18.z;
|
||||
temp_r31->unk30.z -= (175.0f/60.0f)*temp_f30;
|
||||
temp_r31->unk30.y += 1.1666667f*temp_f30;
|
||||
temp_r31->unk18.x = object->trans.x+(temp_r31->unk30.z*sind(temp_r31->unk30.y));
|
||||
temp_r31->unk18.z = object->trans.z+(temp_r31->unk30.z*cosd(temp_r31->unk30.y));
|
||||
temp_r31->unk18.y -= 8.333334f*temp_f30;
|
||||
temp_r31->unk24.x = 0;
|
||||
temp_r31->unk24.y = 0;
|
||||
temp_r31->unk24.z = 0.96f*temp_r31->unk0.z;
|
||||
} else {
|
||||
temp_r31->unk18.z += temp_r31->unk24.z*(1.0f/60.0f);
|
||||
}
|
||||
temp_r31->unkC.x = object->trans.x;
|
||||
temp_r31->unkC.y = object->trans.y;
|
||||
temp_r31->unkC.z = object->trans.z;
|
||||
sp2C.x = object->trans.x;
|
||||
sp2C.y = object->trans.y;
|
||||
sp2C.z = object->trans.z;
|
||||
if(temp_r31->unk48[0] < 0) {
|
||||
temp_r31->unk48[0] = HuAudFXEmiterPlay(1362, &sp2C);
|
||||
}
|
||||
if(temp_r31->unk48[1] < 0) {
|
||||
temp_r31->unk48[1] = HuAudFXEmiterPlay(1356, &sp2C);
|
||||
}
|
||||
if(object->work[1] < 180.0f) {
|
||||
break;
|
||||
}
|
||||
object->work[0] = 1;
|
||||
object->work[1] = 0;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
temp_r31->unk24.z *= 0.6f;
|
||||
temp_r31->unk18.z += (temp_r31->unk24.z*(1.0f/60.0f));
|
||||
temp_r31->unk18.x += (temp_r31->unk24.z*(1.0f/60.0f));
|
||||
temp_r31->unkC.x = object->trans.x;
|
||||
temp_r31->unkC.y = object->trans.y;
|
||||
temp_r31->unkC.z = object->trans.z;
|
||||
if(object->work[1] < 60.0f) {
|
||||
break;
|
||||
}
|
||||
object->work[0] = 2;
|
||||
object->work[1] = 0;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
temp_r31->unk3C.x += 1.5000001f;
|
||||
temp_r31->unk0.z = 1000.0*cosd(temp_r31->unk3C.x);
|
||||
temp_r31->unk0.y = 1000.0*sind(temp_r31->unk3C.x);
|
||||
temp_r31->unkC.x = object->trans.x;
|
||||
temp_r31->unkC.y = object->trans.y;
|
||||
temp_r31->unkC.z = object->trans.z;
|
||||
if(object->work[1] < 120.0f) {
|
||||
break;
|
||||
}
|
||||
object->work[0] = 3;
|
||||
object->work[1] = 0;
|
||||
temp_r31->unk3C.x = 180;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
temp_r31->unk3C.z += 3.0000002f;
|
||||
temp_f31 = (1.0f/60.0f)*object->work[1];
|
||||
temp_f31 = 1.0f-(temp_f31*temp_f31);
|
||||
temp_r31->unkC.x += temp_f31*(object->trans.x-temp_r31->unkC.x);
|
||||
temp_r31->unkC.y += temp_f31*(object->trans.y-temp_r31->unkC.y);
|
||||
temp_r31->unkC.z += temp_f31*(object->trans.z-temp_r31->unkC.z);
|
||||
if(object->work[1] < 60.0f) {
|
||||
break;
|
||||
}
|
||||
lbl_1_bss_F4.x = temp_r31->unkC.x;
|
||||
lbl_1_bss_F4.y = temp_r31->unkC.y;
|
||||
lbl_1_bss_F4.z = temp_r31->unkC.z;
|
||||
lbl_1_bss_100.x = temp_r31->unk18.x;
|
||||
lbl_1_bss_100.y = temp_r31->unk18.y;
|
||||
lbl_1_bss_100.z = temp_r31->unk18.z;
|
||||
object->work[0] = 4;
|
||||
object->work[1] = 0;
|
||||
break;
|
||||
|
||||
case 4:
|
||||
temp_r31->unk3C.z += 3.0000002f;
|
||||
if(object->work[1] > 42.0f) {
|
||||
if(temp_r31->unk48[0] >= 0) {
|
||||
HuAudFXStop(temp_r31->unk48[0]);
|
||||
temp_r31->unk48[0] = -1;
|
||||
}
|
||||
if(temp_r31->unk48[1] >= 0) {
|
||||
HuAudFXStop(temp_r31->unk48[1]);
|
||||
temp_r31->unk48[1] = -1;
|
||||
}
|
||||
}
|
||||
if(object->work[1] < 240.0f) {
|
||||
break;
|
||||
}
|
||||
object->work[0] = 5;
|
||||
object->work[1] = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
object->work[0] = 5;
|
||||
object->func = fn_1_A334;
|
||||
break;
|
||||
}
|
||||
omSetRot(object, -temp_r31->unk3C.x, temp_r31->unk3C.y, temp_r31->unk3C.z);
|
||||
if(object->trans.y < 12150.0f) {
|
||||
sp20.x = object->trans.x;
|
||||
sp20.y = object->trans.y;
|
||||
sp20.z = object->trans.z+10;
|
||||
fn_1_A4E8(object->model[1], &sp20, 4);
|
||||
sp20.x = sp8.x = object->trans.x;
|
||||
sp20.z = object->trans.z;
|
||||
sp8.z = object->trans.z-10;
|
||||
sp20.y = object->trans.y+250.0f;
|
||||
sp8.y = object->trans.y;
|
||||
sp14.x = 0;
|
||||
sp14.y = 0;
|
||||
sp14.z = 1;
|
||||
Hu3DShadowPosSet(&sp20, &sp14, &sp8);
|
||||
}
|
||||
if(temp_r31->unk48[0] >= 0) {
|
||||
sp2C.x = object->trans.x-30;
|
||||
sp2C.y = object->trans.y;
|
||||
sp2C.z = object->trans.z+25;
|
||||
HuAudFXEmiterUpDate(temp_r31->unk48[0], &sp2C);
|
||||
}
|
||||
if(temp_r31->unk48[1] < 0) {
|
||||
sp2C.x = object->trans.x+30;
|
||||
sp2C.y = object->trans.y;
|
||||
sp2C.z = object->trans.z+25;
|
||||
HuAudFXEmiterUpDate(temp_r31->unk48[1], &sp2C);
|
||||
}
|
||||
if(object->work[0] < 4) {
|
||||
fn_1_84C4(temp_r31->unk18.x, temp_r31->unk18.y, temp_r31->unk18.z, temp_r31->unkC.x, temp_r31->unkC.y, temp_r31->unkC.z);
|
||||
}
|
||||
if(fn_1_C43C() == 5) {
|
||||
object->func = fn_1_A334;
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_A334(omObjData *object)
|
||||
{
|
||||
Hu3DModelAttrSet(object->model[1], 1);
|
||||
Hu3DModelAttrSet(object->model[0], 1);
|
||||
}
|
||||
|
||||
|
||||
void fn_1_A37C(ModelData *model, ParticleData *particle, Mtx matrix)
|
||||
{
|
||||
HsfanimStruct01 *temp_r31;
|
||||
s32 temp_r29;
|
||||
if(particle->unk_00 == 0) {
|
||||
particle->unk_00++;
|
||||
temp_r31 = particle->unk_48;
|
||||
for(temp_r29=0; temp_r29<particle->unk_30; temp_r29++, temp_r31++) {
|
||||
temp_r31->unk00 = 0;
|
||||
temp_r31->unk2C = 0;
|
||||
temp_r31->unk40.a = 0;
|
||||
}
|
||||
} else {
|
||||
temp_r31 = particle->unk_48;
|
||||
for(temp_r29=0; temp_r29<particle->unk_30; temp_r29++, temp_r31++) {
|
||||
if(temp_r31->unk00_s16) {
|
||||
temp_r31->unk34.x += temp_r31->unk08.x;
|
||||
temp_r31->unk34.y += temp_r31->unk08.y;
|
||||
temp_r31->unk34.z += temp_r31->unk08.z;
|
||||
temp_r31->unk2C += temp_r31->unk14.x;
|
||||
temp_r31->unk14.y -= temp_r31->unk14.z;
|
||||
temp_r31->unk40.a = temp_r31->unk14.y;
|
||||
if(--temp_r31->unk00_s16 == 0) {
|
||||
temp_r31->unk00_s16 = 0;
|
||||
temp_r31->unk2C = 0;
|
||||
temp_r31->unk40.a =0;
|
||||
}
|
||||
}
|
||||
}
|
||||
DCStoreRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01));
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_A4E8(s32 arg0, Vec *arg1, u32 arg2)
|
||||
{
|
||||
float temp_f31;
|
||||
HsfanimStruct01 *temp_r31;
|
||||
ParticleData *temp_r30;
|
||||
s32 temp_r29;
|
||||
temp_r30 = Hu3DData[arg0].unk_120;
|
||||
if(temp_r30->unk_00) {
|
||||
temp_r31 = temp_r30->unk_48;
|
||||
for(temp_r29=0; temp_r29<temp_r30->unk_30; temp_r29++, temp_r31++) {
|
||||
if(temp_r31->unk00_s16 != 0) {
|
||||
continue;
|
||||
}
|
||||
temp_r31->unk00_s16 = 60.0f*(((1.5f/1000.0f)*frandmod(1000))+1.0f);
|
||||
temp_r31->unk34.x = arg1->x;
|
||||
temp_r31->unk34.y = 12000;
|
||||
temp_r31->unk34.z = arg1->z;
|
||||
temp_r31->unk08.x = (1.0f/60.0f)*((0.6f*frandmod(1000))-300.0f);
|
||||
temp_r31->unk08.y = (1.0f/60.0f)*((0.04f*frandmod(1000))+10.0f);
|
||||
temp_r31->unk08.z = 0;
|
||||
temp_r31->unk14.x = 0.3f+((3.0f/1000.0f)*frandmod(1000));
|
||||
temp_r31->unk2C = 10;
|
||||
temp_r31->unk40.a = frandmod(127)+64;
|
||||
temp_r31->unk14.y = temp_r31->unk40.a;
|
||||
temp_r31->unk14.z = temp_r31->unk14.y*(1.0f/temp_r31->unk00_s16);
|
||||
temp_f31 = frandmod(1000)*(1.0f/1000.0f);
|
||||
temp_r31->unk40.r = (temp_f31*55)+200;
|
||||
temp_r31->unk40.g = (temp_f31*50)+205;
|
||||
temp_r31->unk40.b = (temp_f31*5)+250;
|
||||
if(--arg2 == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_A894(ModelData *model, ParticleData *particle, Mtx matrix)
|
||||
{
|
||||
float temp_f31;
|
||||
float temp_f30;
|
||||
HsfanimStruct01 *temp_r31;
|
||||
s32 temp_r29;
|
||||
float sp14[][6] = {
|
||||
{
|
||||
600, 1, 0.95, 0.8, 1, 0
|
||||
},
|
||||
{
|
||||
600, 1, 0.6, 0.9, 0.3, 0
|
||||
},
|
||||
{
|
||||
13, 1, 1, 1, 0.5, 0
|
||||
},
|
||||
};
|
||||
Vec sp8;
|
||||
if(particle->unk_00 == 0) {
|
||||
particle->unk_00++;
|
||||
temp_r31 = particle->unk_48;
|
||||
for(temp_r29=0; temp_r29<particle->unk_30; temp_r29++, temp_r31++) {
|
||||
temp_r31->unk00 = 1;
|
||||
temp_r31->unk2C = sp14[particle->unk_02][0];
|
||||
temp_r31->unk40.r = 255*sp14[particle->unk_02][1];
|
||||
temp_r31->unk40.g = 255*sp14[particle->unk_02][2];
|
||||
temp_r31->unk40.b = 255*sp14[particle->unk_02][3];
|
||||
temp_r31->unk40.a = 255*sp14[particle->unk_02][4];
|
||||
temp_f31 = -70;
|
||||
temp_f30 = -10;
|
||||
temp_r31->unk08.x = sind(temp_f30)*cosd(temp_f31);
|
||||
temp_r31->unk08.y = -sind(temp_f31);
|
||||
temp_r31->unk08.z = cosd(temp_f30)*cosd(temp_f31);
|
||||
}
|
||||
} else {
|
||||
particle->unk_00++;
|
||||
if(particle->unk_00 < 339.0f) {
|
||||
return;
|
||||
}
|
||||
if(particle->unk_00 >= 600.0f) {
|
||||
particle->unk_00 = 601;
|
||||
temp_r31 = particle->unk_48;
|
||||
for(temp_r29=0; temp_r29<particle->unk_30; temp_r29++, temp_r31++) {
|
||||
temp_r31->unk00 = 0;
|
||||
temp_r31->unk2C = 0;
|
||||
temp_r31->unk40.a = 0;
|
||||
}
|
||||
} else {
|
||||
temp_r31 = particle->unk_48;
|
||||
for(temp_r29=0; temp_r29<particle->unk_30; temp_r29++, temp_r31++) {
|
||||
if(temp_r31->unk00_s16 == 0) {
|
||||
continue;
|
||||
}
|
||||
sp8.x = sind(CRot.y)*cosd(CRot.x);
|
||||
sp8.y = -sind(CRot.x);
|
||||
sp8.z = cosd(CRot.y)*cosd(CRot.x);
|
||||
if(particle->unk_02 < 2) {
|
||||
temp_f31 = 4500;
|
||||
temp_r31->unk34.x = (Center.x+(temp_r31->unk08.x*temp_f31))+(sp8.x*CZoom);
|
||||
temp_r31->unk34.y = (Center.y+(temp_r31->unk08.y*temp_f31))+(sp8.y*CZoom);
|
||||
temp_r31->unk34.z = (Center.z+(temp_r31->unk08.z*temp_f31))+(sp8.z*CZoom);
|
||||
if(particle->unk_02 != 0) {
|
||||
temp_f31 = -((sp8.x*temp_r31->unk08.x)+(sp8.y*temp_r31->unk08.y)+(sp8.z*temp_r31->unk08.z));
|
||||
if(temp_f31 > 0.77f) {
|
||||
temp_f30 = (1.0f/0.23f)*(temp_f31-0.77f);
|
||||
temp_r31->unk2C = 1400*temp_f30;
|
||||
temp_r31->unk40.a = (32.0f*temp_f30)+16.0f;
|
||||
} else {
|
||||
temp_r31->unk2C = 0;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
temp_f31 = CZoom-10;
|
||||
temp_r31->unk34.x = (sp8.x*temp_f31)+Center.x;
|
||||
temp_r31->unk34.y = (sp8.y*temp_f31)+Center.y;
|
||||
temp_r31->unk34.z = (sp8.z*temp_f31)+Center.z;
|
||||
temp_f31 = -((sp8.x*temp_r31->unk08.x)+(sp8.y*temp_r31->unk08.y)+(sp8.z*temp_r31->unk08.z));
|
||||
if(temp_f31 > 0.9f) {
|
||||
temp_f30 = 10.0f*(temp_f31-0.9f);
|
||||
temp_r31->unk40.a = temp_f30*210.0f;
|
||||
} else {
|
||||
temp_r31->unk40.a = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
DCStoreRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_AFF4(ModelData *model, ParticleData *particle, Mtx matrix)
|
||||
{
|
||||
float temp_f31;
|
||||
float temp_f30;
|
||||
HsfanimStruct01 *temp_r30;
|
||||
s32 temp_r29;
|
||||
Vec sp20;
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
if(particle->unk_00 == 0) {
|
||||
particle->unk_00++;
|
||||
temp_f31 = -70;
|
||||
temp_f30 = -10;
|
||||
particle->unk_04.x = sind(temp_f30)*cosd(temp_f31);
|
||||
particle->unk_04.y = -sind(temp_f31);
|
||||
particle->unk_04.z = cosd(temp_f30)*cosd(temp_f31);
|
||||
temp_f31 = 0;
|
||||
temp_r30 = particle->unk_48;
|
||||
for(temp_r29=0; temp_r29<particle->unk_30; temp_r29++, temp_r30++) {
|
||||
temp_r30->unk00 = 1;
|
||||
temp_f31 += 1.0f/particle->unk_30;
|
||||
temp_r30->unk2C = 40.0f+((1.0f-temp_f31)*(100.0f+frandmod(1000)));
|
||||
temp_r30->unk40.r = frandmod(127)+128;
|
||||
temp_r30->unk40.g = frandmod(127)+128;
|
||||
temp_r30->unk40.b = frandmod(127)+128;
|
||||
temp_r30->unk40.a = frandmod(16)+16;
|
||||
}
|
||||
} else {
|
||||
particle->unk_00++;
|
||||
if(particle->unk_00 < 339.0f) {
|
||||
return;
|
||||
}
|
||||
if(particle->unk_00 >= 600.0f) {
|
||||
particle->unk_00 = 601;
|
||||
temp_r30 = particle->unk_48;
|
||||
for(temp_r29=0; temp_r29<particle->unk_30; temp_r29++, temp_r30++) {
|
||||
temp_r30->unk00 = 0;
|
||||
temp_r30->unk2C = 0;
|
||||
temp_r30->unk40.a = 0;
|
||||
}
|
||||
} else {
|
||||
sp20.x = sind(CRot.y)*cosd(CRot.x);
|
||||
sp20.y = -sind(CRot.x);
|
||||
sp20.z = cosd(CRot.y)*cosd(CRot.x);
|
||||
temp_f31 = -((-particle->unk_04.x*-sp20.x)+(-particle->unk_04.y*-sp20.y)+(-particle->unk_04.z*-sp20.z));
|
||||
sp14.x = -sp20.x+(-2.0f*particle->unk_04.x*temp_f31);
|
||||
sp14.y = -sp20.y+(-2.0f*particle->unk_04.y*temp_f31);
|
||||
sp14.z = -sp20.z+(-2.0f*particle->unk_04.z*temp_f31);
|
||||
temp_f31 = 4500;
|
||||
sp8.x = (Center.x+(particle->unk_04.x*temp_f31))+(sp20.x*CZoom);
|
||||
sp8.y = (Center.y+(particle->unk_04.y*temp_f31))+(sp20.y*CZoom);
|
||||
sp8.z = (Center.z+(particle->unk_04.z*temp_f31))+(sp20.z*CZoom);
|
||||
temp_r30 = particle->unk_48;
|
||||
temp_f30 = 0;
|
||||
for(temp_r29=0; temp_r29<particle->unk_30; temp_r29++, temp_r30++) {
|
||||
if(temp_r30->unk00_s16 == 0) {
|
||||
continue;
|
||||
}
|
||||
temp_f30 += 1.0f/particle->unk_30;
|
||||
temp_f31 = 10.0f*(430.0f*(1.0f-((1.0f-temp_f30)*(1.0f-temp_f30))));
|
||||
temp_r30->unk34.x = sp8.x+(sp14.x*temp_f31);
|
||||
temp_r30->unk34.y = sp8.y+(sp14.y*temp_f31);
|
||||
temp_r30->unk34.z = sp8.z+(sp14.z*temp_f31);
|
||||
}
|
||||
DCStoreRange(particle->unk_48, particle->unk_30*sizeof(HsfanimStruct01));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void fn_1_B700(s16 arg0, u32 arg1)
|
||||
{
|
||||
float temp_f31;
|
||||
float temp_f30;
|
||||
HsfanimStruct01 *temp_r31;
|
||||
ParticleData *temp_r30;
|
||||
s32 temp_r29;
|
||||
s32 temp_r27;
|
||||
float sp1C[] = {
|
||||
0.4f, 0.21f, 0.16f, 1.0f
|
||||
};
|
||||
float spC[] = {
|
||||
0.15f, 0.6f, 1.3f, 1.0f
|
||||
};
|
||||
s16 sp2C[] = {
|
||||
1, 0,
|
||||
2, 0,
|
||||
0, 1,
|
||||
2, 0,
|
||||
0, 1,
|
||||
2, 1,
|
||||
0, 0,
|
||||
1, 2,
|
||||
0, 1,
|
||||
2, -1
|
||||
};
|
||||
arg1 &= 0x3;
|
||||
temp_r30 = Hu3DData[arg0].unk_120;
|
||||
temp_r30->unk_00 = 1;
|
||||
temp_f31 = -70;
|
||||
temp_f30 = -10;
|
||||
temp_r30->unk_04.x = sind(temp_f30)*cosd(temp_f31);
|
||||
temp_r30->unk_04.y = -sind(temp_f31);
|
||||
temp_r30->unk_04.z = cosd(temp_f30)*cosd(temp_f31);
|
||||
temp_r31 = temp_r30->unk_48;
|
||||
for(temp_r27=0; temp_r27<temp_r30->unk_30; temp_r27++, temp_r31++) {
|
||||
temp_r31->unk00 = 1;
|
||||
temp_r31->unk02 = arg1;
|
||||
for(temp_r29=0; sp2C[temp_r29] >= 0; temp_r29++) {
|
||||
if(arg1 != sp2C[temp_r29]) {
|
||||
continue;
|
||||
}
|
||||
if(lbl_1_bss_A4[temp_r29] == NULL) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(sp2C[temp_r29] < 0) {
|
||||
temp_r31->unk2C = 0;
|
||||
temp_r31->unk40.a = 0;
|
||||
continue;
|
||||
}
|
||||
lbl_1_bss_A4[temp_r29] = temp_r31;
|
||||
lbl_1_bss_A0++;
|
||||
temp_r31->unk2C = 800.0f*(spC[arg1]*(1.0f+((0.7f/1000.0f)*frandmod(1000))));
|
||||
temp_r31->unk40.r = frandmod(160)+32;
|
||||
temp_r31->unk40.g = frandmod(160)+32;
|
||||
temp_r31->unk40.b = frandmod(160)+32;
|
||||
temp_r31->unk40.a = (255.0f*sp1C[arg1])-frandmod(16);
|
||||
}
|
||||
lbl_1_bss_94[arg1] = temp_r30->unk_48;
|
||||
lbl_1_bss_88[arg1] = temp_r30->unk_30;
|
||||
}
|
||||
|
||||
void fn_1_BB94(void)
|
||||
{
|
||||
float temp_f31;
|
||||
float temp_f30;
|
||||
HsfanimStruct01 *temp_r31;
|
||||
s32 temp_r30;
|
||||
float sp18[] = {
|
||||
0.02f, 0.08f, 0.07f, 0.5f
|
||||
};
|
||||
float sp8[] = {
|
||||
0.0009f, 0.00020000001f, 0.00001f, 0.0005f
|
||||
};
|
||||
temp_f31 = 0.1f;
|
||||
for(temp_r30=0; temp_r30<lbl_1_bss_A0; temp_r30++) {
|
||||
temp_r31 = lbl_1_bss_A4[temp_r30];
|
||||
temp_f30 = 0.5f*(sp18[temp_r31->unk02]*(1.0f+(frandmod(1000)*sp8[temp_r31->unk02])));
|
||||
temp_f31 += temp_f30;
|
||||
temp_r31->unk14.x = temp_f31;
|
||||
temp_f31 += temp_f30;
|
||||
}
|
||||
temp_f31 = 1.0f/temp_f31;
|
||||
for(temp_r30=0; temp_r30<lbl_1_bss_A0; temp_r30++) {
|
||||
temp_r31 = lbl_1_bss_A4[temp_r30];
|
||||
temp_r31->unk14.x *= temp_f31;
|
||||
temp_r31->unk2C *= (0.8f-(0.4f*temp_r31->unk14.x));
|
||||
temp_r31->unk14.x = 10.0f*(400.0f*temp_r31->unk14.x);
|
||||
}
|
||||
for(temp_r30=0; temp_r30<3; temp_r30++) {
|
||||
DCStoreRangeNoSync(lbl_1_bss_94[temp_r30], lbl_1_bss_88[temp_r30]*sizeof(HsfanimStruct01));
|
||||
}
|
||||
PPCSync();
|
||||
}
|
||||
|
||||
void fn_1_BDE0(void)
|
||||
{
|
||||
float temp_f31;
|
||||
float temp_f30;
|
||||
HsfanimStruct01 *temp_r31;
|
||||
s32 temp_r30;
|
||||
Vec sp2C;
|
||||
Vec sp20;
|
||||
Vec sp14;
|
||||
Vec sp8;
|
||||
temp_r31 = lbl_1_bss_A4[0];
|
||||
temp_r31->unk00_s16++;
|
||||
if(temp_r31->unk00_s16 < 339.0f) {
|
||||
return;
|
||||
}
|
||||
if(temp_r31->unk00_s16 >= 600.0f) {
|
||||
temp_r31->unk00_s16 = 601;
|
||||
for(temp_r30=0; temp_r30<lbl_1_bss_A0; temp_r30++) {
|
||||
temp_r31 = lbl_1_bss_A4[temp_r30];
|
||||
temp_r31->unk00_s16 = 0;
|
||||
temp_r31->unk2C = 0;
|
||||
temp_r31->unk40.a = 0;
|
||||
}
|
||||
return;
|
||||
}
|
||||
sp2C.x = sind(CRot.y)*cosd(CRot.x);
|
||||
sp2C.y = -sind(CRot.x);
|
||||
sp2C.z = cosd(CRot.y)*cosd(CRot.x);
|
||||
temp_f31 = -70;
|
||||
temp_f30 = -10;
|
||||
sp20.x = sind(temp_f30)*cosd(temp_f31);
|
||||
sp20.y = -sind(temp_f31);
|
||||
sp20.z = cosd(temp_f30)*cosd(temp_f31);
|
||||
temp_f31 = 4500;
|
||||
sp8.x = (Center.x+(sp20.x*temp_f31))+(sp2C.x*CZoom);
|
||||
sp8.y = (Center.y+(sp20.y*temp_f31))+(sp2C.y*CZoom);
|
||||
sp8.z = (Center.z+(sp20.z*temp_f31))+(sp2C.z*CZoom);
|
||||
temp_f31 = -((-sp20.x*-sp2C.x)+(-sp20.y*-sp2C.y)+(-sp20.z*-sp2C.z));
|
||||
sp14.x = -sp2C.x+(-2.0f*sp20.x*temp_f31);
|
||||
sp14.y = -sp2C.y+(-2.0f*sp20.y*temp_f31);
|
||||
sp14.z = -sp2C.z+(-2.0f*sp20.z*temp_f31);
|
||||
if(temp_f31 > 0.5f) {
|
||||
temp_f30 = 3.0f-(2.0f*temp_f31);
|
||||
} else {
|
||||
temp_f30 = 1.0f;
|
||||
}
|
||||
for(temp_r30=0; temp_r30<lbl_1_bss_A0; temp_r30++) {
|
||||
temp_r31 = lbl_1_bss_A4[temp_r30];
|
||||
temp_r31->unk34.x = sp8.x+(temp_f30*(sp14.x*temp_r31->unk14.x));
|
||||
temp_r31->unk34.y = sp8.y+(temp_f30*(sp14.y*temp_r31->unk14.x));
|
||||
temp_r31->unk34.z = sp8.z+(temp_f30*(sp14.z*temp_r31->unk14.x));
|
||||
}
|
||||
for(temp_r30=0; temp_r30<3; temp_r30++) {
|
||||
DCStoreRangeNoSync(lbl_1_bss_94[temp_r30], lbl_1_bss_88[temp_r30]*sizeof(HsfanimStruct01));
|
||||
}
|
||||
PPCSync();
|
||||
}
|
||||
|
||||
void fn_1_C3C0(Vec *arg0, Vec *arg1)
|
||||
{
|
||||
arg0->x = lbl_1_bss_110->trans.x;
|
||||
arg0->y = lbl_1_bss_110->trans.y;
|
||||
arg0->z = lbl_1_bss_110->trans.z;
|
||||
arg1->x = lbl_1_bss_110->rot.x;
|
||||
arg1->y = lbl_1_bss_110->rot.y;
|
||||
arg1->z = lbl_1_bss_110->rot.z;
|
||||
}
|
||||
|
||||
u32 fn_1_C43C(void)
|
||||
{
|
||||
return lbl_1_bss_10C;
|
||||
}
|
||||
|
|
@ -1943,7 +1943,7 @@ static void LampParticleUpdate(ModelData *model, ParticleData *particle, Mtx mat
|
|||
var_r31->unk2C = 0.0f;
|
||||
var_r31->unk40.a = 0;
|
||||
}
|
||||
particle->unk_04 = 0.0f;
|
||||
particle->unk_04.x = 0.0f;
|
||||
particle->unk_00 = 0;
|
||||
}
|
||||
if (particle->unk_00 == 0) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue