mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 06:34:18 -04:00
match fish_tai
This commit is contained in:
@@ -17,6 +17,7 @@ typedef struct _FISH_PRIVATE_DATA;
|
||||
typedef void (*PRIV_FISH_CONSTRUCTOR)(struct _FISH_PRIVATE_DATA*, GAME*);
|
||||
typedef void (*PRIV_FISH_MOVE)(struct _FISH_PRIVATE_DATA*, GAME*);
|
||||
typedef void (*PRIV_FISH_DRAW)(struct _FISH_PRIVATE_DATA*, GAME*);
|
||||
// typedef void (*PRIV_FISH_PROCESS)(struct _FISH_PRIVATE_DATA*, GAME*);
|
||||
typedef void (*PRIV_FISH_PROCESS)(struct _FISH_PRIVATE_DATA*, GAME*);
|
||||
|
||||
// unsure temp structs
|
||||
@@ -316,7 +317,7 @@ void mfish_tai_normal();
|
||||
void mfish_tai_turn_init();
|
||||
void mfish_tai_turn();
|
||||
void mfish_tai_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
|
||||
void mfish_tai_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f,
|
||||
BOOL mfish_tai_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f,
|
||||
void* arg, s_xyz* joint1, xyz_t* trans);
|
||||
void mfish_tai_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
|
||||
|
||||
@@ -418,7 +419,7 @@ void mfish_namazu_ground_sweep_process_init();
|
||||
void mfish_namazu_ground_sweep_process();
|
||||
void mfish_namazu_base_FishMove();
|
||||
void mfish_namazu_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
|
||||
void mfish_namazu_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f,
|
||||
BOOL mfish_namazu_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f,
|
||||
void* arg, s_xyz* joint1, xyz_t* trans);
|
||||
void mfish_namazu_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
|
||||
|
||||
|
||||
@@ -1444,7 +1444,7 @@ void mfish_point_light_mv(MUSEUM_FISH_ACTOR* actor, GAME* game) {
|
||||
actor->actor.world.position.x = sin_s(actor->_14dc0) * 200.0f;
|
||||
actor->actor.world.position.y = sin_s(actor->_14dc0 * 2) * 10.0f;
|
||||
actor->actor.world.position.z = cos_s(actor->_14dc0) * 200.0f;
|
||||
actor->_14dc0 += 0x111;
|
||||
actor->_14dc0 += DEG2SHORT_ANGLE(1.5f);
|
||||
}
|
||||
|
||||
void mfish_normal_light_set(ACTOR* actor, GAME* _game) {
|
||||
|
||||
@@ -103,7 +103,7 @@ void mfish_afish_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
|
||||
void mfish_afish_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
|
||||
s16 s3 = DEG2SHORT_ANGLE(RANDOM_F(75.0f)) + DEG2SHORT_ANGLE(45.0f);
|
||||
actor->_618.y = ABS(DEG2SHORT_ANGLE2(((s3 * (360.0f / 0x10000)) / 120.0f) * 4.0f + 2.5f));
|
||||
actor->_618.y = ABS(DEG2SHORT_ANGLE2((SHORT2DEG_ANGLE2(s3) / 120.0f) * 4.0f + 2.5f));
|
||||
if (actor->_62E & 0x1e) {
|
||||
if ((s16)(actor->_60C.y - actor->_62C) < 0) {
|
||||
s3 = -s3;
|
||||
|
||||
@@ -100,7 +100,7 @@ void mfish_aroana_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
|
||||
|
||||
void mfish_aroana_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
|
||||
s16 s3 = DEG2SHORT_ANGLE(RANDOM_F(55.0f)) + DEG2SHORT_ANGLE(45.0f);
|
||||
actor->_618.y = ABS(DEG2SHORT_ANGLE2(((s3 * (360.0f / 0x10000)) / 120.0f) * 2.5f + 2.0f));
|
||||
actor->_618.y = ABS(DEG2SHORT_ANGLE2((SHORT2DEG_ANGLE2(s3) / 120.0f) * 2.5f + 2.0f));
|
||||
if (actor->_62E & 0x1e) {
|
||||
if ((s16)(actor->_60C.y - actor->_62C) < 0) {
|
||||
s3 = -s3;
|
||||
|
||||
@@ -124,9 +124,11 @@ void mfish_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* prv) {
|
||||
|
||||
void mfish_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
|
||||
// no clue what's going on here
|
||||
add_calc_short_angle2(&actor->_612.y, actor->_634, CALC_EASE2(0.0f), DEG2SHORT_ANGLE(3.75f), 0x2d);
|
||||
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y, CALC_EASE2(0.5f), DEG2SHORT_ANGLE(5.0f), 0x2d);
|
||||
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.5f), DEG2SHORT_ANGLE(5.0f), 0x2d);
|
||||
add_calc_short_angle2(&actor->_612.y, actor->_634, CALC_EASE2(0.0f), DEG2SHORT_ANGLE(3.75f),
|
||||
DEG2SHORT_ANGLE(0.25f));
|
||||
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y, CALC_EASE2(0.5f), DEG2SHORT_ANGLE(5.0f),
|
||||
DEG2SHORT_ANGLE(0.25f));
|
||||
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.5f), DEG2SHORT_ANGLE(5.0f), DEG2SHORT_ANGLE(0.25f));
|
||||
|
||||
if (actor->_630 == 2) {
|
||||
if (actor->_612.y < 0) {
|
||||
@@ -334,9 +336,9 @@ void mfish_peck_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
|
||||
actor->_632 = DEG2SHORT_ANGLE((fVar8 * 30.0f) + 20.0f);
|
||||
|
||||
if (qrand() & 0x8000) {
|
||||
actor->_636 = 0x4000;
|
||||
actor->_636 = DEG2SHORT_ANGLE(90);
|
||||
} else {
|
||||
actor->_636 = -0x4000;
|
||||
actor->_636 = DEG2SHORT_ANGLE(-90);
|
||||
}
|
||||
|
||||
actor->_62E &= ~0xC0;
|
||||
@@ -1034,7 +1036,7 @@ void Museum_Fish_Kusa_Check(MUSEUM_FISH_ACTOR* actor, GAME* game) {
|
||||
if (t > 4.0f) {
|
||||
xyz_t_mult_v(&actor->prvKusa[j]._540, 4.0f / t);
|
||||
}
|
||||
actor->prvKusa[j]._538.y = 0x27d;
|
||||
actor->prvKusa[j]._538.y = DEG2SHORT_ANGLE(3.5f);
|
||||
}
|
||||
}
|
||||
// asm 3fc-410
|
||||
|
||||
@@ -42,7 +42,8 @@ void mfish_bass_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
|
||||
actor->_634 = actor->_62C - DEG2SHORT_ANGLE(90);
|
||||
}
|
||||
} else {
|
||||
add_calc_short_angle2(&actor->_634, actor->_612.y, CALC_EASE(0.5f), DEG2SHORT_ANGLE(22.5), 0x5b);
|
||||
add_calc_short_angle2(&actor->_634, actor->_612.y, CALC_EASE(0.5f), DEG2SHORT_ANGLE(22.5),
|
||||
DEG2SHORT_ANGLE(0.5f));
|
||||
}
|
||||
|
||||
actor->_5EC = 0.0f;
|
||||
@@ -53,9 +54,11 @@ void mfish_bass_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
|
||||
|
||||
void mfish_bass_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
|
||||
// no clue what's going on here
|
||||
add_calc_short_angle2(&actor->_612.y, actor->_634, CALC_EASE2(0.0f), 0x1c7, 0x2d);
|
||||
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y, CALC_EASE2(0.25f), 0xe3, 0x2d);
|
||||
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.25f), 0xe3, 0x2d);
|
||||
add_calc_short_angle2(&actor->_612.y, actor->_634, CALC_EASE2(0.0f), DEG2SHORT_ANGLE(2.5f), DEG2SHORT_ANGLE(0.25f));
|
||||
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y, CALC_EASE2(0.25f), DEG2SHORT_ANGLE(1.25f),
|
||||
DEG2SHORT_ANGLE(0.25f));
|
||||
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.25f), DEG2SHORT_ANGLE(1.25f),
|
||||
DEG2SHORT_ANGLE(0.25f));
|
||||
}
|
||||
|
||||
void mfish_bass_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* fishActor) {
|
||||
@@ -167,7 +170,7 @@ void mfish_bass_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
|
||||
s16 a;
|
||||
s16 b;
|
||||
|
||||
b = a = 0x2000 + DEG2SHORT_ANGLE(RANDOM_F(75));
|
||||
b = a = DEG2SHORT_ANGLE(90) + DEG2SHORT_ANGLE(RANDOM_F(75));
|
||||
actor->_618.y =
|
||||
DEG2SHORT_ANGLE((actor->_5AC.y * 4.0f + 4.0f) * (SHORT2DEG_ANGLE2(a) / 120.0f) + 2.0f + actor->_5AC.y);
|
||||
if (actor->_62E & 0x1e) {
|
||||
|
||||
@@ -29,7 +29,7 @@ void mfish_kaseki_normal_init() {
|
||||
|
||||
void mfish_kaseki_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
s16 s = ABS(actor->_622) * (actor->init_data._30 * (GETREG(TAKREG, 0x1d) * 0.001f + 0.5f) / 32749.0f);
|
||||
s = MIN(actor->_634, MAX(s, 0x38E));
|
||||
s = MIN(actor->_634, MAX(s, DEG2SHORT_ANGLE(5)));
|
||||
add_calc_short_angle2(&actor->_632, 0, CALC_EASE(0.5), DEG2SHORT_ANGLE(5), DEG2SHORT_ANGLE(0.5f));
|
||||
actor->_636 += 455;
|
||||
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y + (s16)(actor->_632 * sin_s(actor->_636)),
|
||||
|
||||
@@ -194,7 +194,7 @@ void mfish_koi_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
|
||||
|
||||
void mfish_koi_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
|
||||
s16 s3 = DEG2SHORT_ANGLE(RANDOM_F(55.0f)) + DEG2SHORT_ANGLE(60.0f);
|
||||
actor->_618.y = ABS(DEG2SHORT_ANGLE2(((s3 * (360.0f / 0x10000)) / 120.0f) * 2.5f + 2.0f));
|
||||
actor->_618.y = ABS(DEG2SHORT_ANGLE2((SHORT2DEG_ANGLE2(s3) / 120.0f) * 2.5f + 2.0f));
|
||||
if (actor->_62E & 0x1e) {
|
||||
if ((s16)(actor->_60C.y - actor->_62C) < 0) {
|
||||
s3 = -s3;
|
||||
@@ -303,9 +303,9 @@ void mfish_koi_peck_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
|
||||
actor->_632 = DEG2SHORT_ANGLE((fVar8 * 30.0f) + 20.0f);
|
||||
|
||||
if (qrand() & 0x8000) {
|
||||
actor->_636 = 0x4000;
|
||||
actor->_636 = DEG2SHORT_ANGLE(90);
|
||||
} else {
|
||||
actor->_636 = -0x4000;
|
||||
actor->_636 = DEG2SHORT_ANGLE(-90);
|
||||
}
|
||||
|
||||
actor->_62E &= ~0xC0;
|
||||
|
||||
@@ -1,61 +1,324 @@
|
||||
|
||||
void mfish_namazu_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
GAME_PLAY* game = (GAME_PLAY*)gamex;
|
||||
return;
|
||||
mfish_onefish_ct(actor, gamex);
|
||||
actor->_5E8 = 0.0f;
|
||||
actor->_5D0 = ZeroVec;
|
||||
actor->_60C.y = qrand();
|
||||
actor->_612.y = actor->_60C.y;
|
||||
actor->_5F4 = 0.0f;
|
||||
actor->_5AC = ZeroVec;
|
||||
if (actor->_59C == 4) {
|
||||
actor->_5AC.y = 1500.f;
|
||||
} else {
|
||||
actor->_5AC.y = 1700.f;
|
||||
}
|
||||
actor->_638 = qrand();
|
||||
actor->_622 = actor->_60C.y;
|
||||
actor->_5A0.z += 40.0f;
|
||||
actor->_624 = 10;
|
||||
// maybe s_xyz? but because we're not assigning a ZeroSVec, i'm thinking not?
|
||||
actor->_640 = 0;
|
||||
actor->_642 = 0;
|
||||
actor->_644 = 0;
|
||||
mfish_namazu_normal_process_init(actor);
|
||||
}
|
||||
|
||||
void mfish_namazu_body_wind_anime_play() {
|
||||
return;
|
||||
void mfish_namazu_body_wind_anime_play(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
actor->_63A += (s16)DEG2SHORT_ANGLE2(2.0f + RANDOM_F(1.0f));
|
||||
actor->_63C += (s16)DEG2SHORT_ANGLE2(1.0f + RANDOM_F(0.5f));
|
||||
}
|
||||
|
||||
void mfish_namazu_normal_process_init() {
|
||||
return;
|
||||
void mfish_namazu_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
|
||||
f32 s;
|
||||
f32 p;
|
||||
f32 f;
|
||||
|
||||
p = RANDOM_F(actor->init_data._14) + actor->init_data._10;
|
||||
s = MAX(actor->init_data._14 + actor->init_data._10, 1.0f);
|
||||
f = p / s;
|
||||
if (p > actor->_5E8) {
|
||||
actor->_5F0 = p;
|
||||
}
|
||||
actor->_5F4 = 0.0f;
|
||||
actor->_5D0.y = 0.0f;
|
||||
if (RANDOM_F(1.0f) > actor->init_data._1C) {
|
||||
actor->_612.y += (s16)Rnd_EX_fx(actor->init_data._30 * 2.0f);
|
||||
if (ABS((s16)(actor->_612.y - actor->_60C.y)) < DEG2SHORT_ANGLE(20)) {
|
||||
if ((s16)(actor->_612.y - actor->_60C.y) > 0) {
|
||||
actor->_612.y += DEG2SHORT_ANGLE(20);
|
||||
} else {
|
||||
actor->_612.y -= DEG2SHORT_ANGLE(20);
|
||||
}
|
||||
}
|
||||
actor->_632 = DEG2SHORT_ANGLE(30.0f + f * 40.0f);
|
||||
} else {
|
||||
if ((s16)(actor->_612.y - actor->_60C.y) > 0) {
|
||||
actor->_612.y += DEG2SHORT_ANGLE(15);
|
||||
} else {
|
||||
actor->_612.y -= DEG2SHORT_ANGLE(15);
|
||||
}
|
||||
actor->_632 = DEG2SHORT_ANGLE(40.0f + f * 50.0f);
|
||||
}
|
||||
|
||||
if ((s16)(actor->_60C.y - actor->_612.y) > 0) {
|
||||
actor->_636 = DEG2SHORT_ANGLE(0);
|
||||
} else {
|
||||
actor->_636 = DEG2SHORT_ANGLE(-180);
|
||||
}
|
||||
|
||||
actor->_62E &= ~0xC0;
|
||||
actor->_34 = mfish_namazu_normal_process;
|
||||
}
|
||||
|
||||
void mfish_namazu_normal_process() {
|
||||
return;
|
||||
void mfish_namazu_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
if (actor->_632 > DEG2SHORT_ANGLE(20)) {
|
||||
add_calc2(&actor->_5E8, actor->_5F0, CALC_EASE(0.75f),
|
||||
(0.4f + ((DEG2SHORT_ANGLE(-20) + actor->_632) / DEG2SHORT_ANGLE(2)) * 0.02f) * 0.5f);
|
||||
}
|
||||
add_calc_short_angle2(&actor->_632, DEG2SHORT_ANGLE(0), CALC_EASE2(0.1f), DEG2SHORT_ANGLE(0.25f),
|
||||
DEG2SHORT_ANGLE(0.125f));
|
||||
actor->_636 += DEG2SHORT_ANGLE(1.25f);
|
||||
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y + (s16)(actor->_632 * sin_s(actor->_636)),
|
||||
CALC_EASE2(0.1f), DEG2SHORT_ANGLE(1.25f), DEG2SHORT_ANGLE(0.065f));
|
||||
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.105f), DEG2SHORT_ANGLE(0.8125f),
|
||||
DEG2SHORT_ANGLE(0.0625f));
|
||||
|
||||
if (actor->_5E8 < 0.01f) {
|
||||
mfish_namazu_dummy_process_init(actor);
|
||||
} else if (actor->_5E8 > 1.0f && actor->_62E & 0x1e) {
|
||||
if ((s16)(actor->_60C.y - actor->_62C) > 0) {
|
||||
actor->_612.y = actor->_62C + DEG2SHORT_ANGLE(112.5f);
|
||||
} else {
|
||||
actor->_612.y = actor->_62C - DEG2SHORT_ANGLE(112.5f);
|
||||
}
|
||||
actor->_632 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void mfish_namazu_dummy_process_init() {
|
||||
return;
|
||||
void mfish_namazu_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
|
||||
actor->_634 = mfish_get_hide_camera_angle(actor);
|
||||
add_calc_short_angle2(&actor->_634, actor->_612.y, CALC_EASE(0.5f), DEG2SHORT_ANGLE(10), DEG2SHORT_ANGLE(0.5f));
|
||||
actor->_34 = mfish_namazu_dummy_process;
|
||||
}
|
||||
|
||||
void mfish_namazu_dummy_process() {
|
||||
return;
|
||||
void mfish_namazu_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor) {
|
||||
if (actor->_5E8 < 0.5f) {
|
||||
add_calc_short_angle2(&actor->_612.y, actor->_634, CALC_EASE2(0.1f), DEG2SHORT_ANGLE(1.25f),
|
||||
DEG2SHORT_ANGLE(0.125f));
|
||||
}
|
||||
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y, CALC_EASE2(0.05f), DEG2SHORT_ANGLE(0.8125f),
|
||||
DEG2SHORT_ANGLE(0.065f));
|
||||
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.055f), DEG2SHORT_ANGLE(0.5f),
|
||||
DEG2SHORT_ANGLE(0.0625f));
|
||||
}
|
||||
|
||||
void mfish_namazu_turn_process_init() {
|
||||
return;
|
||||
void mfish_namazu_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
|
||||
s16 angle = DEG2SHORT_ANGLE(RANDOM_F(60.0f)) + DEG2SHORT_ANGLE(30);
|
||||
actor->_618.y = DEG2SHORT_ANGLE(0.5f + SHORT2DEG_ANGLE2(angle) / 90.f);
|
||||
|
||||
if (actor->_62E & 0x1e) {
|
||||
if ((s16)(actor->_60C.y - actor->_62C) < 0) {
|
||||
angle = -angle;
|
||||
}
|
||||
} else if (actor->_62E & 0xc0) {
|
||||
if (actor->_62E & 0x40) {
|
||||
angle = ABS(angle);
|
||||
} else {
|
||||
angle = -ABS(angle);
|
||||
}
|
||||
} else if (actor->_62E & 0x20) {
|
||||
if ((s16)(actor->_62A - actor->_60C.y) < 0) {
|
||||
angle = -angle;
|
||||
}
|
||||
}
|
||||
|
||||
if (angle > 0) {
|
||||
actor->_62E |= 0x40;
|
||||
} else {
|
||||
actor->_62E |= 0x80;
|
||||
}
|
||||
|
||||
actor->_612.y += angle;
|
||||
actor->_5F0 = 0.06f;
|
||||
actor->_34 = mfish_namazu_turn_process;
|
||||
}
|
||||
|
||||
void mfish_namazu_turn_process() {
|
||||
return;
|
||||
void mfish_namazu_turn_process(MUSEUM_FISH_PRIVATE_DATA* actor) {
|
||||
add_calc2(&actor->_5E8, actor->_5F0, CALC_EASE(0.05f), 0.0625f);
|
||||
add_calc2(&actor->_5F0, 0.05f, CALC_EASE(0.1f), 0.0025f);
|
||||
add_calc_short_angle2(&actor->_632, 0, CALC_EASE2(0.29f), DEG2SHORT_ANGLE(1.25f), DEG2SHORT_ANGLE(0.125f));
|
||||
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y, CALC_EASE(0.035f), (s16)(actor->_618.y >> 1),
|
||||
DEG2SHORT_ANGLE(0.05f));
|
||||
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE(0.025f), DEG2SHORT_ANGLE(0.75f),
|
||||
DEG2SHORT_ANGLE(0.25f));
|
||||
if (actor->_60C.y == actor->_612.y) {
|
||||
mfish_namazu_dummy_process_init(actor);
|
||||
}
|
||||
}
|
||||
|
||||
void mfish_namazu_ground_sweep_process_init() {
|
||||
return;
|
||||
void mfish_namazu_ground_sweep_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
|
||||
f32 s;
|
||||
f32 p;
|
||||
f32 f;
|
||||
|
||||
p = RANDOM_F(actor->init_data._14) + actor->init_data._10;
|
||||
s = MAX(actor->init_data._14 + actor->init_data._10, 1.0f);
|
||||
f = p / s;
|
||||
if (p > actor->_5E8) {
|
||||
actor->_5F0 = p;
|
||||
}
|
||||
actor->_5F4 = 0.0f;
|
||||
actor->_5D0.y = 0.0f;
|
||||
if ((s16)(actor->_612.y - actor->_60C.y) > 0) {
|
||||
actor->_612.y += DEG2SHORT_ANGLE(15);
|
||||
} else {
|
||||
actor->_612.y -= DEG2SHORT_ANGLE(15);
|
||||
}
|
||||
actor->_632 = DEG2SHORT_ANGLE(30.f + f * 60.f);
|
||||
if ((s16)(actor->_60C.y - actor->_612.y) > 0) {
|
||||
actor->_636 = DEG2SHORT_ANGLE(0);
|
||||
} else {
|
||||
actor->_636 = DEG2SHORT_ANGLE(-180);
|
||||
}
|
||||
actor->_62E &= ~0xc0;
|
||||
actor->_34 = mfish_namazu_ground_sweep_process;
|
||||
}
|
||||
|
||||
void mfish_namazu_ground_sweep_process() {
|
||||
return;
|
||||
void mfish_namazu_ground_sweep_process(MUSEUM_FISH_PRIVATE_DATA* actor) {
|
||||
if (actor->_632 > DEG2SHORT_ANGLE(20)) {
|
||||
add_calc2(&actor->_5E8, actor->_5F0, CALC_EASE(0.075f),
|
||||
(0.4f + 0.02f * ((actor->_632 - DEG2SHORT_ANGLE(20)) / DEG2SHORT_ANGLE(2))) * 0.5f);
|
||||
}
|
||||
add_calc_short_angle2(&actor->_632, 0, CALC_EASE2(0.1f), DEG2SHORT_ANGLE(0.0625f), DEG2SHORT_ANGLE(0.025f));
|
||||
actor->_636 += DEG2SHORT_ANGLE(3);
|
||||
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y + (s16)(actor->_632 * sin_s(actor->_636)),
|
||||
CALC_EASE2(0.25f), DEG2SHORT_ANGLE(2.5f), DEG2SHORT_ANGLE(0.125f));
|
||||
|
||||
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.25f), DEG2SHORT_ANGLE(1.875f),
|
||||
DEG2SHORT_ANGLE(0.125f));
|
||||
|
||||
if (actor->_5E8 < 0.01f) {
|
||||
mfish_namazu_dummy_process_init(actor);
|
||||
} else if (actor->_5E8 > 1.0f && actor->_62E & 0x1e) {
|
||||
if ((s16)(actor->_612.y - actor->_62C) > 0) {
|
||||
actor->_612.y = actor->_62C + DEG2SHORT_ANGLE(112.5f);
|
||||
} else {
|
||||
actor->_612.y = actor->_62C - DEG2SHORT_ANGLE(112.5f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void mfish_namazu_base_FishMove() {
|
||||
return;
|
||||
void mfish_namazu_base_FishMove(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
add_calc2(&actor->_5E8, 0.05f, 1.0f - actor->init_data._18, 0.025f);
|
||||
actor->_5D0.x = actor->_5E8 * sin_s(actor->_60C.y);
|
||||
actor->_5D0.z = actor->_5E8 * cos_s(actor->_60C.y);
|
||||
add_calc(&actor->_5D0.y, MAX(ABS(sin_s(actor->_60C.x) * actor->_5E8), 0.1f), 0.1f, 0.1f, 0.005f);
|
||||
add_calc2(&actor->_5A0.y, actor->_5F4 + actor->init_data._0C, 0.1f, actor->_5D0.y);
|
||||
mfish_move_smooth(actor, gamex);
|
||||
actor->_5A0.x += actor->_5D0.x;
|
||||
actor->_5A0.z += actor->_5D0.z;
|
||||
actor->_5A0.y = MAX(60.f, MIN(110.f, actor->_5A0.y));
|
||||
}
|
||||
|
||||
void mfish_namazu_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
GAME_PLAY* game = (GAME_PLAY*)gamex;
|
||||
return;
|
||||
xyz_t p = suisou_pos[actor->_630];
|
||||
f32 v;
|
||||
int s;
|
||||
mfish_onefish_mv(actor, gamex);
|
||||
if (actor->_5F8 > actor->init_data._08 * 10.0f) {
|
||||
actor->_5F8 = 0.0f;
|
||||
actor->_626 = 0;
|
||||
}
|
||||
if (actor->_626-- <= 0) {
|
||||
actor->_626 = actor->init_data._2C + (s16)RANDOM_F(actor->init_data._2E);
|
||||
actor->_628 = actor->_626;
|
||||
if (actor->_644 <= 0 && RANDOM_F(1.0f) < 0.2f) {
|
||||
actor->_644 = (s16)RANDOM_F(300.f) + 300;
|
||||
mfish_namazu_ground_sweep_process_init(actor);
|
||||
} else if (mfish_WallCheck(actor)) {
|
||||
mfish_namazu_turn_process_init(actor);
|
||||
} else {
|
||||
mfish_namazu_normal_process_init(actor);
|
||||
}
|
||||
} else if (actor->_34 == mfish_namazu_normal_process) {
|
||||
if ((actor->_62E & 0x1e && ABS((s16)(actor->_62C - actor->_60C.y)) < DEG2SHORT_ANGLE(45)) ||
|
||||
(actor->_62E & 0x20 &&
|
||||
ABS((s16)(actor->_62A + DEG2SHORT_ANGLE(180) - actor->_60C.y)) < DEG2SHORT_ANGLE(30))) {
|
||||
actor->_626 = actor->init_data._2C + (s16)RANDOM_F(actor->init_data._2E);
|
||||
actor->_628 = actor->_626;
|
||||
mfish_namazu_turn_process_init(actor);
|
||||
}
|
||||
}
|
||||
|
||||
actor->_638 += DEG2SHORT_ANGLE(10);
|
||||
actor->_34(actor, gamex);
|
||||
if (ABS(actor->_618.z) > DEG2SHORT_ANGLE(20) && ABS(actor->_622 - actor->_618.z) < DEG2SHORT_ANGLE(30)) {
|
||||
add_calc2(&actor->_5E8, 0.2f + 0.01f * GETREG(TAKREG, 0x2d), 0.25f + 0.01f * GETREG(TAKREG, 0x2e),
|
||||
0.05f + 0.01f * GETREG(TAKREG, 0x2f));
|
||||
}
|
||||
|
||||
s = GETREG(TAKREG, 0x4c);
|
||||
if (s == 1) {
|
||||
actor->_644 = (s16)RANDOM_F(300.f) + 300;
|
||||
} else if (s == -1) {
|
||||
actor->_644 = 0;
|
||||
}
|
||||
|
||||
if (actor->_644 > 0) {
|
||||
actor->_644--;
|
||||
actor->_642 = DEG2SHORT_ANGLE(GETREG(TAKREG, 0x4d) + 35.0f);
|
||||
} else {
|
||||
actor->_642 = 0;
|
||||
}
|
||||
add_calc_short_angle2(&actor->_640, actor->_642, CALC_EASE(0.2f), DEG2SHORT_ANGLE(0.25f), DEG2SHORT_ANGLE(0.05f));
|
||||
actor->_38._00.frame_control.speed = (actor->_5E8 * 0.75f) / (actor->init_data._10 + actor->init_data._14) + 0.125f;
|
||||
mfish_namazu_base_FishMove(actor, gamex);
|
||||
Museum_Fish_BGCheck(actor, gamex);
|
||||
xyz_t_sub(&p, &actor->_5A0, &p);
|
||||
v = 60.f + MAX(ABS(p.x), ABS(p.z)) * -0.15f;
|
||||
actor->_5A0.y = v + actor->init_data._04;
|
||||
mfish_namazu_body_wind_anime_play(actor, gamex);
|
||||
}
|
||||
|
||||
void mfish_namazu_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f,
|
||||
BOOL mfish_namazu_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f,
|
||||
void* arg, s_xyz* joint1, xyz_t* trans) {
|
||||
return;
|
||||
MUSEUM_FISH_PRIVATE_DATA* actor = (MUSEUM_FISH_PRIVATE_DATA*)arg;
|
||||
int s;
|
||||
if (joint_num == 0) {
|
||||
trans->y = -(actor->_5AC.y * MIN(sin_s(actor->_640), 0.5f));
|
||||
} else if (joint_num == 1) {
|
||||
s = joint1->z + actor->_640;
|
||||
joint1->z = MY_CLAMP(s, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30));
|
||||
s = joint1->x + (actor->_618.z >> 2);
|
||||
joint1->x = MY_CLAMP(s, DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20));
|
||||
Matrix_scale(1.0f, 1.0f + 0.01f * sin_s(actor->_63A + actor->_63C), 1.0f + 0.01f * sin_s(actor->_63A), 1);
|
||||
} else if (joint_num == 2) {
|
||||
s = joint1->y - (actor->_618.z << 1);
|
||||
joint1->y = MY_CLAMP(s, DEG2SHORT_ANGLE(-60), DEG2SHORT_ANGLE(60));
|
||||
s = joint1->x - (actor->_618.z >> 2);
|
||||
joint1->x = MY_CLAMP(s, DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20));
|
||||
s = joint1->z - (s16)(actor->_640 * (0.6f + GETREG(TAKREG, 0x4E) * 0.01f));
|
||||
joint1->z = MY_CLAMP(s, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30));
|
||||
Matrix_scale(1.0f, 1.0f + 0.005f * sin_s(actor->_63A + DEG2SHORT_ANGLE(270)),
|
||||
1.0f + 0.005f * sin_s(actor->_63A + DEG2SHORT_ANGLE(90)), 1);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void mfish_namazu_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
|
||||
GAME_PLAY* game = (GAME_PLAY*)gamex;
|
||||
return;
|
||||
YET_SKELETON* skele = &actor->_38;
|
||||
Mtx* mtxp;
|
||||
if (gamex->frame_counter & 1) {
|
||||
mtxp = &skele->_70;
|
||||
} else {
|
||||
mtxp = &skele->_2b0;
|
||||
}
|
||||
OPEN_DISP(gamex->graph);
|
||||
Matrix_translate(actor->_5A0.x, actor->_5A0.y, actor->_5A0.z, 0);
|
||||
Matrix_rotateXYZ(actor->_60C.x, actor->_60C.y, actor->_60C.z, 1);
|
||||
Matrix_translate(0.0f, 0.0f, actor->init_data._24, 1);
|
||||
Matrix_scale(actor->init_data._00, actor->init_data._00, actor->init_data._00, 1);
|
||||
gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(gamex->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
cKF_Si3_draw_R_SV(gamex, &skele->_00, mtxp, mfish_zarigani_before_disp, NULL, actor);
|
||||
CLOSE_DISP(gamex->graph);
|
||||
}
|
||||
|
||||
@@ -1,43 +1,275 @@
|
||||
|
||||
void mfish_tai_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
GAME_PLAY* game = (GAME_PLAY*)gamex;
|
||||
return;
|
||||
s16 s = qrand();
|
||||
mfish_onefish_ct(actor, gamex);
|
||||
actor->_5E8 = RANDOM_F(actor->init_data._14) + actor->init_data._10;
|
||||
actor->_5F0 = actor->_5E8;
|
||||
actor->_60C.y = s;
|
||||
actor->_612.y = actor->_60C.y;
|
||||
actor->_5F4 = 0.0f;
|
||||
actor->_5D0.y = 0.0f;
|
||||
actor->_5AC = ZeroVec;
|
||||
actor->_638 = qrand();
|
||||
actor->_622 = 0;
|
||||
actor->_626 = actor->init_data._2C + (s16)RANDOM_F(actor->init_data._2E);
|
||||
actor->_628 = actor->_626;
|
||||
actor->_624 = 2;
|
||||
actor->_594 = NULL;
|
||||
actor->_598 = NULL;
|
||||
actor->_5AC.x = 30.f;
|
||||
actor->_5AC.x = 30.f;
|
||||
mfish_tai_normal_init(actor, gamex);
|
||||
}
|
||||
|
||||
void mfish_tai_normal_init() {
|
||||
// NOT BAD
|
||||
|
||||
return;
|
||||
void mfish_tai_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
if (actor->_34 == mfish_tai_turn) {
|
||||
actor->_626 = actor->init_data._2C + (s16)RANDOM_F(actor->init_data._2E);
|
||||
actor->_628 = actor->_626;
|
||||
actor->_5F0 = RANDOM_F(actor->init_data._14) + actor->init_data._10;
|
||||
}
|
||||
actor->_34 = mfish_tai_normal;
|
||||
}
|
||||
|
||||
void mfish_tai_normal() {
|
||||
return;
|
||||
void mfish_tai_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
|
||||
s16 ss = (ABS(actor->_622) * ((0.75f * actor->init_data._30) / 32749.0f));
|
||||
// extra extsh here
|
||||
int s = (s16)MIN(DEG2SHORT_ANGLE2(25), MAX(ss, DEG2SHORT_ANGLE2(5)));
|
||||
|
||||
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y + (s16)(sin_s(actor->_636) * actor->_632),
|
||||
CALC_EASE2(0.3f), (s16)(s >> 1) >> 1, DEG2SHORT_ANGLE(0.125f));
|
||||
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.15f), DEG2SHORT_ANGLE(1.25f),
|
||||
DEG2SHORT_ANGLE(0.125f));
|
||||
|
||||
if (actor->_598) {
|
||||
f32 d = (actor->_598->init_data._08 + actor->init_data._08);
|
||||
f32 o_y = actor->_598->_5A0.y;
|
||||
f32 o_z = actor->_598->_5A0.z;
|
||||
f32 v = MAX(d - ABS(actor->_598->_5A0.z - actor->_5A0.z), 0.0f);
|
||||
v = v / d;
|
||||
if (actor->_598->_59C != 0x23) {
|
||||
if (actor->_598->_5A0.y < actor->_5A0.y) {
|
||||
if (actor->_5A0.y < (o_y + (actor->_598->init_data._04 + actor->init_data._04))) {
|
||||
add_calc2(&actor->_5A0.y, (o_y + (actor->_598->init_data._04 + actor->init_data._04)) + 2.0f, 0.2f,
|
||||
v * 0.1f);
|
||||
}
|
||||
} else {
|
||||
if (actor->_5A0.y > o_y - (actor->_598->init_data._04 + actor->init_data._04)) {
|
||||
add_calc2(&actor->_5A0.y, (o_y - (actor->_598->init_data._04 + actor->init_data._04)) - 2.0f, 0.2f,
|
||||
v * 0.1f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (actor->_598->_5A0.z < actor->_5A0.z) {
|
||||
add_calc2(&actor->_5A0.z, o_z + d, 0.05f, v * 0.1f);
|
||||
} else {
|
||||
add_calc2(&actor->_5A0.z, o_z - d, 0.05f, v * 0.1f);
|
||||
}
|
||||
}
|
||||
|
||||
if (actor->_5FC < actor->_5AC.x - actor->init_data._28 * 0.5f) {
|
||||
if (actor->_612.y < 0) {
|
||||
s16 s;
|
||||
if (actor->_604 > actor->_608) {
|
||||
s = actor->_60C.y - DEG2SHORT_ANGLE(90);
|
||||
} else {
|
||||
s = actor->_60C.y + DEG2SHORT_ANGLE(90);
|
||||
}
|
||||
actor->_612.y = s;
|
||||
actor->_5AC.x = RANDOM_F(80.f) + 30.f;
|
||||
} else {
|
||||
add_calc_short_angle2(&actor->_612.y, DEG2SHORT_ANGLE(90), CALC_EASE(0.5f), DEG2SHORT_ANGLE(7.5f),
|
||||
DEG2SHORT_ANGLE(0.5f));
|
||||
}
|
||||
} else if (actor->_600 < actor->_5AC.x - actor->init_data._28 * 0.5f) {
|
||||
if (actor->_612.y > 0) {
|
||||
s16 s;
|
||||
if (actor->_604 > actor->_608) {
|
||||
s = actor->_60C.y + DEG2SHORT_ANGLE(90);
|
||||
} else {
|
||||
s = actor->_60C.y - DEG2SHORT_ANGLE(90);
|
||||
}
|
||||
actor->_612.y = s;
|
||||
actor->_5AC.x = RANDOM_F(80.f) + 30.f;
|
||||
} else {
|
||||
add_calc_short_angle2(&actor->_612.y, DEG2SHORT_ANGLE(-90), CALC_EASE(0.5f), DEG2SHORT_ANGLE(7.5f),
|
||||
DEG2SHORT_ANGLE(0.5f));
|
||||
}
|
||||
} else if (actor->_62E & 0x100) {
|
||||
actor->_5A0.z += 0.05f;
|
||||
if (ABS((s16)(actor->_612.y - DEG2SHORT_ANGLE(180))) < DEG2SHORT_ANGLE(110)) {
|
||||
if (actor->_612.y > DEG2SHORT_ANGLE(0)) {
|
||||
actor->_612.y -= DEG2SHORT_ANGLE(1.5f);
|
||||
} else {
|
||||
actor->_612.y += DEG2SHORT_ANGLE(1.5f);
|
||||
}
|
||||
}
|
||||
} else if (actor->_62E & 0x1e) {
|
||||
mfish_tai_turn_init(actor, gamex);
|
||||
} else if (actor->_62E & 0x20 && actor->_5F8 > actor->init_data._08 * 0.5f) {
|
||||
if (actor->init_data._20 < actor->_594->init_data._20) {
|
||||
s16 escAngle = mfish_get_escape_angle(actor, gamex);
|
||||
add_calc_short_angle2(&actor->_612.y, escAngle, CALC_EASE(0.25f), DEG2SHORT_ANGLE(2.5f),
|
||||
DEG2SHORT_ANGLE(0));
|
||||
}
|
||||
} else if (actor->_626 < 0) {
|
||||
f32 f = RANDOM_F(1.0f);
|
||||
actor->_612.y = actor->_60C.y;
|
||||
if (RANDOM_F(1.0f) < GETREG(TAKREG, 0x1c) * 0.1f + 0.1f) {
|
||||
if (actor->_612.y < 0) {
|
||||
if (actor->_604 > actor->_608) {
|
||||
actor->_612.y = actor->_60C.y - DEG2SHORT_ANGLE(157.5f);
|
||||
} else {
|
||||
actor->_612.y = actor->_60C.y + DEG2SHORT_ANGLE(157.5f);
|
||||
}
|
||||
} else {
|
||||
if (actor->_604 > actor->_608) {
|
||||
actor->_612.y = actor->_60C.y + DEG2SHORT_ANGLE(157.5f);
|
||||
} else {
|
||||
actor->_612.y = actor->_60C.y - DEG2SHORT_ANGLE(157.5f);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if ((actor->_608 - actor->_604) * cos_s(actor->_60C.y) < 0.0f) {
|
||||
actor->_612.y += (s16)(f * actor->init_data._30);
|
||||
} else {
|
||||
actor->_612.y -= (s16)(f * actor->init_data._30);
|
||||
}
|
||||
}
|
||||
actor->_626 = actor->init_data._2C + (s16)RANDOM_F(actor->init_data._2E);
|
||||
actor->_628 = actor->_626;
|
||||
actor->_5F0 = actor->init_data._10 + Rnd_EX_f(actor->init_data._14);
|
||||
}
|
||||
}
|
||||
|
||||
void mfish_tai_turn_init() {
|
||||
// NOT BAD
|
||||
void mfish_tai_turn_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
s16 b = (s16)actor->_62C;
|
||||
|
||||
return;
|
||||
if (ABS(actor->_622) > DEG2SHORT_ANGLE(45)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ((s16)(actor->_60C.y - b) > 0) {
|
||||
if (actor->_62E & 6) {
|
||||
b = b + DEG2SHORT_ANGLE(170);
|
||||
} else {
|
||||
b = b + DEG2SHORT_ANGLE(95);
|
||||
}
|
||||
} else {
|
||||
if (actor->_62E & 6) {
|
||||
b = b - DEG2SHORT_ANGLE(170);
|
||||
} else {
|
||||
b = b - DEG2SHORT_ANGLE(95);
|
||||
}
|
||||
}
|
||||
|
||||
if (ABS((s16)(b - actor->_612.y)) > DEG2SHORT_ANGLE(45)) {
|
||||
actor->_34 = mfish_tai_turn;
|
||||
}
|
||||
|
||||
actor->_612.y = b;
|
||||
}
|
||||
|
||||
void mfish_tai_turn() {
|
||||
return;
|
||||
void mfish_tai_turn(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y, CALC_EASE2(0.25f + GETREG(TAKREG, 0x17) * 0.01f),
|
||||
(s16)(DEG2SHORT_ANGLE2(15.0f + 0.1f * GETREG(TAKREG, 0x18)) >> 1) >> 1,
|
||||
DEG2SHORT_ANGLE(0.125f));
|
||||
|
||||
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.2f + GETREG(TAKREG, 0x19) * 0.01f),
|
||||
(s16)(DEG2SHORT_ANGLE(15.0f + 0.1f * GETREG(TAKREG, 0x1a)) >> 1) >> 1,
|
||||
DEG2SHORT_ANGLE(0.125f));
|
||||
|
||||
if (ABS((s16)actor->_622) < DEG2SHORT_ANGLE(3)) {
|
||||
mfish_tai_normal_init(actor, gamex);
|
||||
}
|
||||
}
|
||||
|
||||
void mfish_tai_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
xyz_t p;
|
||||
f32 v;
|
||||
|
||||
GAME_PLAY* game = (GAME_PLAY*)gamex;
|
||||
return;
|
||||
actor->_34(actor, gamex);
|
||||
actor->_618.x += DEG2SHORT_ANGLE(RANDOM_F(3.0f) * actor->_5E8 + 0.1f);
|
||||
actor->_5F4 = sin_s(actor->_618.x) * 5.0f;
|
||||
if (actor->_62E & 0x20) {
|
||||
add_calc2(&actor->_5A0.y, actor->_5F4 + actor->init_data._0C, 0.02f, 0.05f);
|
||||
} else {
|
||||
add_calc2(&actor->_5A0.y, actor->_5F4 + actor->init_data._0C, 0.1f, 0.125f);
|
||||
}
|
||||
|
||||
if (ABS(actor->_622) > DEG2SHORT_ANGLE(20)) {
|
||||
add_calc_short_angle2(&actor->_632, MAX(DEG2SHORT_ANGLE2((GETREG(TAKREG, 0x27) + 5.0f) * actor->_5E8), 0),
|
||||
CALC_EASE(0.25f), DEG2SHORT_ANGLE(2.5f), DEG2SHORT_ANGLE(0.5f));
|
||||
} else if ((actor->_62E & 0x20) == 0) {
|
||||
add_calc_short_angle2(&actor->_632, MAX(DEG2SHORT_ANGLE2((GETREG(TAKREG, 0x28) + 30.0f) * actor->_5E8), 0),
|
||||
CALC_EASE(0.25f), DEG2SHORT_ANGLE(5.0f), DEG2SHORT_ANGLE(0.5f));
|
||||
} else {
|
||||
add_calc_short_angle2(&actor->_632, DEG2SHORT_ANGLE(5), CALC_EASE(0.1f), DEG2SHORT_ANGLE(2.5f),
|
||||
DEG2SHORT_ANGLE(0.25f));
|
||||
}
|
||||
|
||||
actor->_636 += (s16)DEG2SHORT_ANGLE2((GETREG(TAKREG, 0x29) + 10.0f) * 0.5f);
|
||||
|
||||
if (ABS(actor->_622) > DEG2SHORT_ANGLE2(GETREG(TAKREG, 0x37) + 60.f) ||
|
||||
(s16)(ABS(actor->_622) - ABS(actor->_618.z)) < DEG2SHORT_ANGLE(5)) {
|
||||
add_calc2(&actor->_5EC, 0.05f, 0.1f, 0.005f);
|
||||
add_calc2(&actor->_5E8, MAX(actor->_5F0, actor->init_data._10), 0.05f, actor->_5EC);
|
||||
} else {
|
||||
add_calc0(&actor->_5EC, 0.1f, 0.002f);
|
||||
add_calc2(&actor->_5E8, 0.16f, 1.0f - actor->init_data._18, 0.001f);
|
||||
}
|
||||
|
||||
actor->_5D0.x = actor->_5E8 * sin_s(actor->_60C.y);
|
||||
actor->_5D0.z = actor->_5E8 * cos_s(actor->_60C.y);
|
||||
|
||||
mfish_get_flow_vec(&p, actor, gamex);
|
||||
|
||||
actor->_5A0.x += actor->_5D0.x + p.x;
|
||||
actor->_5A0.z += actor->_5D0.z + p.z;
|
||||
|
||||
mfish_onefish_mv(actor, gamex);
|
||||
actor->_38._00.frame_control.speed =
|
||||
(0.1f + 0.01f * GETREG(TAKREG, 0x14)) * 0.5f + (1.5f + 0.01f * GETREG(TAKREG, 0x15)) * actor->_5E8;
|
||||
add_calc0(&actor->_5F8, 0.25f, 0.05f);
|
||||
actor->_5F8 = MIN(1.0f, actor->_5F8);
|
||||
mfish_body_wind_anime_play(actor, gamex);
|
||||
Museum_Fish_BGCheck(actor, gamex);
|
||||
|
||||
if (actor->_5A0.y < (GETREG(TAKREG, 0x47) + 55.0f) - actor->init_data._04) {
|
||||
actor->_5A0.y = (GETREG(TAKREG, 0x47) + 55.0f) - actor->init_data._04;
|
||||
}
|
||||
|
||||
actor->_626--;
|
||||
}
|
||||
|
||||
void mfish_tai_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f,
|
||||
BOOL mfish_tai_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f,
|
||||
void* arg, s_xyz* joint1, xyz_t* trans) {
|
||||
return;
|
||||
MUSEUM_FISH_PRIVATE_DATA* actor = (MUSEUM_FISH_PRIVATE_DATA*)arg;
|
||||
if (joint_num == 1) {
|
||||
int s = (joint1->x + actor->_618.z) >> 3;
|
||||
joint1->x = MY_CLAMP(s, DEG2SHORT_ANGLE(-15), DEG2SHORT_ANGLE(15));
|
||||
} else if (joint_num == 2) {
|
||||
int s = joint1->y - (int)(actor->_618.z * (0.01f * GETREG(TAKREG, 0x4b) + 1.5f));
|
||||
joint1->y = MY_CLAMP(s, DEG2SHORT_ANGLE(-90), DEG2SHORT_ANGLE(90));
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void mfish_tai_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
|
||||
// NOT BAD
|
||||
GAME_PLAY* game = (GAME_PLAY*)gamex;
|
||||
return;
|
||||
YET_SKELETON* skele = &actor->_38;
|
||||
Mtx* mtxp;
|
||||
if (gamex->frame_counter & 1) {
|
||||
mtxp = &skele->_70;
|
||||
} else {
|
||||
mtxp = &skele->_2b0;
|
||||
}
|
||||
OPEN_DISP(gamex->graph);
|
||||
Matrix_translate(actor->_5A0.x, actor->_5A0.y, actor->_5A0.z, 0);
|
||||
Matrix_rotateXYZ(actor->_60C.x, actor->_60C.y, actor->_60C.z, 1);
|
||||
Matrix_translate(0.0f, 0.0f, actor->init_data._24, 1);
|
||||
Matrix_scale(actor->init_data._00, actor->init_data._00, actor->init_data._00, 1);
|
||||
gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(gamex->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
cKF_Si3_draw_R_SV(gamex, &skele->_00, mtxp, mfish_zarigani_before_disp, NULL, actor);
|
||||
CLOSE_DISP(gamex->graph);
|
||||
}
|
||||
|
||||
@@ -122,7 +122,7 @@ void mfish_zarigani_stand_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex)
|
||||
}
|
||||
}
|
||||
|
||||
v = (-(actor->_60C.x * (360.0f / 0x10000)) / 90.0f);
|
||||
v = (-SHORT2DEG_ANGLE2(actor->_60C.x) / 90.0f);
|
||||
v *= (20.0f + GETREG(TAKREG, 0x1b) * 0.1f);
|
||||
actor->_5AC.x = sin_s(actor->_60C.y) * v;
|
||||
actor->_5AC.z = cos_s(actor->_60C.y) * v;
|
||||
@@ -155,7 +155,7 @@ void mfish_zarigani_jump_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
mfish_zarigani_wait_process_init(actor, gamex);
|
||||
return;
|
||||
}
|
||||
actor->_5AC.y = (actor->_60C.x * (360.f / 0x10000)) / 90.f;
|
||||
actor->_5AC.y = SHORT2DEG_ANGLE2(actor->_60C.x) / 90.f;
|
||||
actor->_5AC.y *= 20.f + GETREG(TAKREG, 0x1c) * 0.1f;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user