From 0567b622378d55fdc05e1e55144756c679eb476d Mon Sep 17 00:00:00 2001 From: roeming Date: Fri, 27 Dec 2024 20:01:46 -0500 Subject: [PATCH] match fish_tai --- include/ac_museum_fish.h | 5 +- src/actor/ac_museum_fish.c | 2 +- src/actor/ac_museum_fish_afish.c_inc | 2 +- src/actor/ac_museum_fish_aroana.c_inc | 2 +- src/actor/ac_museum_fish_base.c_inc | 14 +- src/actor/ac_museum_fish_bass.c_inc | 13 +- src/actor/ac_museum_fish_kaseki.c_inc | 2 +- src/actor/ac_museum_fish_koi.c_inc | 6 +- src/actor/ac_museum_fish_namazu.c_inc | 321 +++++++++++++++++++++--- src/actor/ac_museum_fish_tai.c_inc | 274 ++++++++++++++++++-- src/actor/ac_museum_fish_zarigani.c_inc | 4 +- 11 files changed, 573 insertions(+), 72 deletions(-) diff --git a/include/ac_museum_fish.h b/include/ac_museum_fish.h index 27cb5dc3..53ff5e16 100644 --- a/include/ac_museum_fish.h +++ b/include/ac_museum_fish.h @@ -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); diff --git a/src/actor/ac_museum_fish.c b/src/actor/ac_museum_fish.c index b4642eb2..f5c5f4b0 100644 --- a/src/actor/ac_museum_fish.c +++ b/src/actor/ac_museum_fish.c @@ -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) { diff --git a/src/actor/ac_museum_fish_afish.c_inc b/src/actor/ac_museum_fish_afish.c_inc index 1fb11029..5c9523eb 100644 --- a/src/actor/ac_museum_fish_afish.c_inc +++ b/src/actor/ac_museum_fish_afish.c_inc @@ -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; diff --git a/src/actor/ac_museum_fish_aroana.c_inc b/src/actor/ac_museum_fish_aroana.c_inc index aa873826..5de55ff3 100644 --- a/src/actor/ac_museum_fish_aroana.c_inc +++ b/src/actor/ac_museum_fish_aroana.c_inc @@ -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; diff --git a/src/actor/ac_museum_fish_base.c_inc b/src/actor/ac_museum_fish_base.c_inc index 690af7ab..8e648fa7 100644 --- a/src/actor/ac_museum_fish_base.c_inc +++ b/src/actor/ac_museum_fish_base.c_inc @@ -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 diff --git a/src/actor/ac_museum_fish_bass.c_inc b/src/actor/ac_museum_fish_bass.c_inc index dd379e18..5dfbcd60 100644 --- a/src/actor/ac_museum_fish_bass.c_inc +++ b/src/actor/ac_museum_fish_bass.c_inc @@ -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) { diff --git a/src/actor/ac_museum_fish_kaseki.c_inc b/src/actor/ac_museum_fish_kaseki.c_inc index d611a08a..66f3b448 100644 --- a/src/actor/ac_museum_fish_kaseki.c_inc +++ b/src/actor/ac_museum_fish_kaseki.c_inc @@ -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)), diff --git a/src/actor/ac_museum_fish_koi.c_inc b/src/actor/ac_museum_fish_koi.c_inc index 9b43ca2a..6eabc9c9 100644 --- a/src/actor/ac_museum_fish_koi.c_inc +++ b/src/actor/ac_museum_fish_koi.c_inc @@ -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; diff --git a/src/actor/ac_museum_fish_namazu.c_inc b/src/actor/ac_museum_fish_namazu.c_inc index 2fe67e6a..cf72b2ee 100644 --- a/src/actor/ac_museum_fish_namazu.c_inc +++ b/src/actor/ac_museum_fish_namazu.c_inc @@ -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); } diff --git a/src/actor/ac_museum_fish_tai.c_inc b/src/actor/ac_museum_fish_tai.c_inc index 75424454..8eb681ab 100644 --- a/src/actor/ac_museum_fish_tai.c_inc +++ b/src/actor/ac_museum_fish_tai.c_inc @@ -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); } diff --git a/src/actor/ac_museum_fish_zarigani.c_inc b/src/actor/ac_museum_fish_zarigani.c_inc index e468b399..1845dd62 100644 --- a/src/actor/ac_museum_fish_zarigani.c_inc +++ b/src/actor/ac_museum_fish_zarigani.c_inc @@ -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; }