From 4576a7245bf2ba666b9486d7d457cf209c9a094a Mon Sep 17 00:00:00 2001 From: roeming Date: Mon, 2 Dec 2024 18:50:28 -0500 Subject: [PATCH] assorted mfish progress --- include/ac_museum_fish.h | 80 ++- src/actor/ac_museum_fish.c | 30 +- src/actor/ac_museum_fish_afish.c_inc | 7 +- src/actor/ac_museum_fish_aroana.c_inc | 9 +- src/actor/ac_museum_fish_base.c_inc | 695 +++++++++++++++++++--- src/actor/ac_museum_fish_bass.c_inc | 105 +++- src/actor/ac_museum_fish_big_fish.c_inc | 1 + src/actor/ac_museum_fish_dojou.c_inc | 2 + src/actor/ac_museum_fish_donko.c_inc | 1 + src/actor/ac_museum_fish_gupi.c_inc | 5 +- src/actor/ac_museum_fish_ito.c_inc | 1 + src/actor/ac_museum_fish_kaseki.c_inc | 3 +- src/actor/ac_museum_fish_kingyo.c_inc | 5 +- src/actor/ac_museum_fish_koi.c_inc | 35 +- src/actor/ac_museum_fish_medaka.c_inc | 4 +- src/actor/ac_museum_fish_seafish.c_inc | 3 +- src/actor/ac_museum_fish_small_fish.c_inc | 4 +- src/actor/ac_museum_fish_tai.c_inc | 7 +- src/actor/ac_museum_fish_unagi.c_inc | 4 +- 19 files changed, 834 insertions(+), 167 deletions(-) diff --git a/include/ac_museum_fish.h b/include/ac_museum_fish.h index 2a075235..26651ded 100644 --- a/include/ac_museum_fish.h +++ b/include/ac_museum_fish.h @@ -17,16 +17,10 @@ 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*); // unsure temp structs -typedef struct _YET_SKELETON { - cKF_SkeletonInfo_R_c _00; - Mtx _70; - u8 padding[0x200]; - Mtx _2b0; -} YET_SKELETON; - typedef struct _MUSEUM_FISH_INIT_DATA { f32 _00; f32 _04; @@ -44,18 +38,41 @@ typedef struct _MUSEUM_FISH_INIT_DATA { s16 _30; } MUSEUM_FISH_INIT_DATA; // size: 0x34 +#define artificial_padding(currentOffset, lastOffset, typeOfLastMember) \ + u8 __##currentOffset##padding[currentOffset - lastOffset - sizeof(typeOfLastMember)] + +#define offsetof(structName, memberName) ((size_t) & (((structName*)0)->memberName)) + +typedef struct _YET_SKELETON { + cKF_SkeletonInfo_R_c _00; + Mtx _70; // offset A8 + artificial_padding(0x2b0, 0x70, Mtx); + Mtx _2b0; + artificial_padding(0x46C, 0x2b0, Mtx); + void* _46C; + + artificial_padding(0x4F0, 0x46C, void*); + s_xyz _4F0; + artificial_padding(0x514, 0x4F0, s_xyz); + s_xyz _514; + artificial_padding(0x54C, 0x514, s_xyz); + void* _54C; + void* _550; +} YET_SKELETON; + typedef struct _FISH_PRIVATE_DATA { MUSEUM_FISH_INIT_DATA init_data; - void* _34; // function pointer to dummy_process function + PRIV_FISH_PROCESS _34; // size:4 YET_SKELETON _38; - void* _4A4; - void* _584; - void* _588; + void* _590; + s32 _594; + s32 _598; s32 _59C; // fish num xyz_t _5A0; xyz_t _5AC; xyz_t _5B8; + artificial_padding(0x5D0, 0x5B8, xyz_t); f32 _5D0; f32 _5D4; f32 _5D8; @@ -64,10 +81,18 @@ typedef struct _FISH_PRIVATE_DATA { f32 _5EC; f32 _5F0; f32 _5F4; - s_xz _60C; - s_xz _612; + f32 _5F8; + f32 _5FC; + f32 _600; + f32 _604; + f32 _608; + s_xyz _60C; + s_xyz _612; + artificial_padding(0x61A, 0x612, s_xyz); s16 _61A; s16 _61C; + s16 _61E; + s16 _620; s16 _622; s16 _624; s16 _626; @@ -79,6 +104,9 @@ typedef struct _FISH_PRIVATE_DATA { s16 _632; s16 _634; s16 _636; + s16 _638; + s16 _63A; + s16 _63C; s16 _63E; s16 _640; } MUSEUM_FISH_PRIVATE_DATA; @@ -155,14 +183,14 @@ BOOL mfish_WallCheck(MUSEUM_FISH_PRIVATE_DATA* priv); s16 mfish_get_hide_camera_angle(MUSEUM_FISH_PRIVATE_DATA* priv); void mfish_dummy_process_init(); void mfish_dummy_process(); -void mfish_normal_process_init(); -void mfish_normal_process(); -void mfish_turn_process_init(); -void mfish_turn_process(); -void mfish_peck_process_init(); -void mfish_peck_process(); -void mfish_ground_peck_process_init(); -void mfish_ground_peck_process(); +void mfish_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_turn_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_peck_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_peck_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_ground_peck_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_ground_peck_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); void mfish_base_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); void mfish_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); void mfish_onefish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); @@ -173,17 +201,17 @@ void mfish_ani_base_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); void mfish_ani_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); void mfish_ani_base_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); void Museum_Fish_BigFishObjCheck(); -void Museum_Fish_ObjBGCheck(); +void Museum_Fish_ObjBGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex, f32 f1, f32 f2); void Museum_Fish_DonkoBGCheck(); void Museum_Fish_objchk_pos_set(); -void Museum_Fish_BGCheck(); +void Museum_Fish_BGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); void Museum_Fish_Kusa_Check(); void Museum_Fish_Object_Check(); void mfish_body_wind_anime_play(); void mfish_get_player_angle(); -void mfish_peck_check(); -void mfish_peck_wall_check(); -void mfish_ground_peck_before_check(); +BOOL mfish_peck_check(); +BOOL mfish_peck_wall_check(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +BOOL mfish_ground_peck_before_check(); void mfish_get_player_area(); void mfish_get_flow_vec(xyz_t* pos, MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); void mfish_get_escape_angle(); diff --git a/src/actor/ac_museum_fish.c b/src/actor/ac_museum_fish.c index da61f71e..01944472 100644 --- a/src/actor/ac_museum_fish.c +++ b/src/actor/ac_museum_fish.c @@ -12,6 +12,7 @@ #include "m_debug_mode.h" #include "libforest/gbi_extensions.h" #include "m_rcp.h" +#include "ac_gyoei.h" // found useful macros #define MY_MAX(a, b) (((a) >= (b)) ? (a) : (b)) @@ -21,6 +22,10 @@ #define CALC_EASE(x) (1 - sqrtf(1 - (x))) #define CALC_EASE2(x) CALC_EASE(CALC_EASE(x)) #define SHORT2DEG_ANGLE2(x) ((x) * (360.0f / 65536.0f)) +#define RANDOMF_RANGE(min, max) ((f32)(min) + (f32)RANDOM_F((f32)(max) - (f32)(min))) +#define RANDOM2F_RANGE(min, max) ((f32)(min) + (f32)RANDOM2_F((f32)(max) - (f32)(min))) +#define RANDOM_RANGE(min, max) ((int)(min) + (int)RANDOM((int)(max) - (int)(min))) +#define RANDOM2_RANGE(min, max) ((int)(min) + (int)RANDOM2((int)(max) - (int)(min))) // delete this stuff later typedef Mtx; @@ -678,10 +683,10 @@ void Museum_Fish_Prv_data_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game, int actor->_5A0 = ZeroVec; } - actor->_5A0.y = mfish_init_data[fishNum]._0C + fqrand2() * 10.0f; + actor->_5A0.y = mfish_init_data[fishNum]._0C + RANDOM2_F(10); if (r6 == 1) { - actor->_5A0.x += fqrand2() * 90.0f; - actor->_5A0.z += fqrand2() * 90.0f; + actor->_5A0.x += RANDOM2_F(90); + actor->_5A0.z += RANDOM2_F(90); } actor->_34 = &mfish_normal_process; mfish_ct[fishNum](actor, game); @@ -721,16 +726,16 @@ void Museum_Fish_Actor_ct(ACTOR* actorx, GAME* gamex) { for (i = 0; i < 40; i++, prv++) { prv->_62E &= ~1; if (mMmd_FishInfo(i)) { - prv->_584 = mfish_model_tbl[i]; - prv->_588 = mfish_anime_init_tbl[i]; + prv->_38._550 = mfish_model_tbl[i]; + prv->_38._550 = mfish_anime_init_tbl[i]; prv->_62E |= 1; Museum_Fish_Prv_data_init(prv, gamex, i, 1); } } for (i = 0; i < 20; i++) { - actor->_14d50[i] = 40.0f + 80.0f * fqrand(); - actor->_14d78[i] = 2.0f + 3.0f * fqrand(); + actor->_14d50[i] = RANDOMF_RANGE(80, 120); + actor->_14d78[i] = RANDOMF_RANGE(2, 5); } } @@ -915,7 +920,7 @@ void Museum_Fish_Actor_move(ACTOR* actorx, GAME* game) { for (i = 0; i < 40; i++, prv++) { f32 v = search_position_distanceXZ(&p, &prv->_5A0); if (actor->_14db4 == prv->_630 && v < 60.0f) { - prv->_626 = fqrand() * 60.0f; + prv->_626 = RANDOM_F(60); } } } @@ -947,11 +952,10 @@ void Museum_Fish_Actor_move(ACTOR* actorx, GAME* game) { suisou_awa_group[i], 0); if (actor->_14d78[i] > 0) { actor->_14d78[i]--; - - actor->_14d50[i] = fqrand() * 8 + 2; + actor->_14d50[i] = RANDOMF_RANGE(2, 10); } else { - actor->_14d50[i] = fqrand() * 160 + 80; - actor->_14d78[i] = fqrand() * 3 + 2; + actor->_14d50[i] = RANDOMF_RANGE(160, 240); + actor->_14d78[i] = RANDOMF_RANGE(2, 5); } } } @@ -971,7 +975,7 @@ void Museum_Fish_Actor_move(ACTOR* actorx, GAME* game) { for (i = 0; i < 5; i++) { if (i == 2) { - actor->_14d78[i] += (s16)DEG2SHORT_ANGLE2((float)GETREG(TAKREG, 20) * 0.1f + 0.5f + fqrand()); + actor->_14d78[i] += (s16)DEG2SHORT_ANGLE2((float)GETREG(TAKREG, 20) * 0.1f + 0.5f + RANDOM_F(1)); } else { actor->_14d78[i] += 8; } diff --git a/src/actor/ac_museum_fish_afish.c_inc b/src/actor/ac_museum_fish_afish.c_inc index 1598921a..d509e25a 100644 --- a/src/actor/ac_museum_fish_afish.c_inc +++ b/src/actor/ac_museum_fish_afish.c_inc @@ -1,7 +1,7 @@ void mfish_afish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { GAME_PLAY* game = (GAME_PLAY*)gamex; - return; + // NOT BAD } void mfish_afish_dummy_process_init() { @@ -39,11 +39,12 @@ void mfish_afish_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { void mfish_afish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { GAME_PLAY* game = (GAME_PLAY*)gamex; + // NOT BAD return; } void mfish_afish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { - + // NOT BAD GAME_PLAY* game = (GAME_PLAY*)gamex; return; -} \ No newline at end of file +} diff --git a/src/actor/ac_museum_fish_aroana.c_inc b/src/actor/ac_museum_fish_aroana.c_inc index 9a09f09f..8544a34d 100644 --- a/src/actor/ac_museum_fish_aroana.c_inc +++ b/src/actor/ac_museum_fish_aroana.c_inc @@ -1,10 +1,12 @@ void mfish_aroana_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { + // NOT BAD GAME_PLAY* game = (GAME_PLAY*)gamex; return; } void mfish_aroana_dummy_process_init() { + // NOT BAD return; } @@ -29,6 +31,7 @@ void mfish_aroana_turn_process() { } void mfish_aroana_long_move_process_init() { + // NOT BAD return; } @@ -41,7 +44,7 @@ void mfish_aroana_base_FishMove() { } void mfish_aroana_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { - + // NOT BAD GAME_PLAY* game = (GAME_PLAY*)gamex; return; } @@ -58,7 +61,7 @@ void mfish_aroana_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int jo } void mfish_aroana_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { - + // NOT BAD GAME_PLAY* game = (GAME_PLAY*)gamex; return; -} \ No newline at end of file +} diff --git a/src/actor/ac_museum_fish_base.c_inc b/src/actor/ac_museum_fish_base.c_inc index 68b1343b..16e835a8 100644 --- a/src/actor/ac_museum_fish_base.c_inc +++ b/src/actor/ac_museum_fish_base.c_inc @@ -1,6 +1,6 @@ f32 Rnd_EX_f(f32 v) { - f32 rand1 = 2 * fqrand2(); - f32 rand2 = fqrand(); + f32 rand1 = RANDOM2_F(2); + f32 rand2 = RANDOM_F(1); if (rand2 > (rand1 * rand1)) { if (rand1 > 0) { rand1 = sqrtf(rand2); @@ -12,9 +12,9 @@ f32 Rnd_EX_f(f32 v) { return v * rand1; } -f32 Rnd_EX_fx(f32 v1) { - f32 rand1 = 2 * fqrand2(); - f32 rand2 = fqrand(); +f32 Rnd_EX_fx(f32 v) { + f32 rand1 = RANDOM2_F(2); + f32 rand2 = RANDOM_F(1); if (rand2 > (rand1 * rand1)) { if (rand1 > 0) { rand1 = sqrtf(rand2); @@ -23,7 +23,7 @@ f32 Rnd_EX_fx(f32 v1) { } } rand1 = rand1 / 2; - return v1 * rand1; + return v * rand1; } void mfish_base_FishMove(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { @@ -36,16 +36,16 @@ void mfish_base_FishMove(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { add_calc0(&actor->_5E8, 1.0f - actor->init_data._18, 0.025f); } - actor->_5D0 = actor->_5E8 * sin_s(actor->_60C.z); - actor->_5D8 = actor->_5E8 * cos_s(actor->_60C.z); + actor->_5D0 = actor->_5E8 * sin_s(actor->_60C.y); + actor->_5D8 = actor->_5E8 * cos_s(actor->_60C.y); add_calc(&actor->_5D4, MAX(ABS(actor->_5E8 * sin_s(actor->_60C.x)), 0.1f), 0.1f, 0.1f, 0.005f); add_calc2(&actor->_5A0.y, actor->_5F4 + actor->init_data._0C, 0.1f, actor->_5D4); mfish_move_smooth(actor, game); mfish_get_flow_vec(&pos, actor, game); - actor->_5A0.y += actor->_5D0 + actor->_5DC.x; - actor->_5A0.z += actor->_5D0 + actor->_5DC.x; + actor->_5A0.x += actor->_5D0 + actor->_5DC.x; + actor->_5A0.z += actor->_5D8 + actor->_5DC.z; actor->_5A0.y = actor->_5A0.y + actor->_5DC.y; actor->_5A0.y = MAX(60, MIN(110, actor->_5A0.y)); } @@ -87,8 +87,8 @@ BOOL mfish_WallCheck(MUSEUM_FISH_PRIVATE_DATA* prv) { p = prv->_5A0; - p.x += sin_s(prv->_60C.x) * (GETREG(TAKREG, 70) + 30.0f); - p.z += cos_s(prv->_60C.x) * (GETREG(TAKREG, 70) + 30.0f); + p.x += sin_s(prv->_60C.y) * (GETREG(TAKREG, 70) + 30.0f); + p.z += cos_s(prv->_60C.y) * (GETREG(TAKREG, 70) + 30.0f); p1 = p; @@ -96,18 +96,18 @@ BOOL mfish_WallCheck(MUSEUM_FISH_PRIVATE_DATA* prv) { } s16 mfish_get_hide_camera_angle(MUSEUM_FISH_PRIVATE_DATA* priv) { - s16 v = priv->_60C.z; - if (v > 0 || (priv->_630 == 2 && fqrand() < 0.8f)) { + s16 v = priv->_60C.y; + if (v > 0 || (priv->_630 == 2 && RANDOM_F(1) < 0.8f)) { if (v > DEG2SHORT_ANGLE(90)) { - v = DEG2SHORT_ANGLE(90) + DEG2SHORT_ANGLE(45 * fqrand()); + v = DEG2SHORT_ANGLE(90) + DEG2SHORT_ANGLE(RANDOM_F(45)); } else { - v = DEG2SHORT_ANGLE(90) - DEG2SHORT_ANGLE(45 * fqrand()); + v = DEG2SHORT_ANGLE(90) - DEG2SHORT_ANGLE(RANDOM_F(45)); } } else { if (v > DEG2SHORT_ANGLE(-90)) { - v = DEG2SHORT_ANGLE(-90) + DEG2SHORT_ANGLE(45 * fqrand()); + v = DEG2SHORT_ANGLE(-90) + DEG2SHORT_ANGLE(RANDOM_F(45)); } else { - v = DEG2SHORT_ANGLE(-90) - DEG2SHORT_ANGLE(45 * fqrand()); + v = DEG2SHORT_ANGLE(-90) - DEG2SHORT_ANGLE(RANDOM_F(45)); } } return v; @@ -115,20 +115,20 @@ s16 mfish_get_hide_camera_angle(MUSEUM_FISH_PRIVATE_DATA* priv) { void mfish_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* prv) { prv->_634 = mfish_get_hide_camera_angle(prv); - if (prv->_630 == 2 && prv->_60C.z < 0 && prv->_634 > 0) { + if (prv->_630 == 2 && prv->_60C.y < 0 && prv->_634 > 0) { prv->_5F0 = MAX(prv->init_data._10, GETREG(TAKREG, 80) * 0.1f + 1.2f); } prv->_34 = mfish_dummy_process; } -void mfish_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor) { +void mfish_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { // no clue what's going on here - add_calc_short_angle2(&actor->_612.z, actor->_634, CALC_EASE2(0.0f), DEG2SHORT_ANGLE(3.75f), 0x2d); - actor->_622 = add_calc_short_angle2(&actor->_60C.z, actor->_612.z, 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), 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->_61C, actor->_622, CALC_EASE2(0.5f), DEG2SHORT_ANGLE(5.0f), 0x2d); if (actor->_630 == 2) { - if (actor->_612.z < 0) { + if (actor->_612.y < 0) { actor->_626--; } else { add_calc2(&actor->_5E8, actor->_5F0, 0.1f, 0.05f); @@ -142,7 +142,7 @@ void mfish_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* fishActor) { f32 t; f32 temp; - ra = fqrand() * fishActor->init_data._14 + fishActor->init_data._10; + ra = RANDOM_F(fishActor->init_data._14) + fishActor->init_data._10; t = (ra) / MAX(fishActor->init_data._14 + fishActor->init_data._10, 1); if (ra > fishActor->_5E8) { @@ -155,30 +155,30 @@ void mfish_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* fishActor) { atans_table(fishActor->_5E8, fishActor->_5F4 + fishActor->init_data._0C - fishActor->_5A0.y) >> 4; fishActor->_5D4 = 0; - if (fqrand() > fishActor->init_data._1C) { + if (RANDOM_F(1) > fishActor->init_data._1C) { int diff; - fishActor->_612.z += (s16)Rnd_EX_fx(fishActor->init_data._30 * 2.0f); - diff = fishActor->_612.z - fishActor->_60C.z; + fishActor->_612.y += (s16)Rnd_EX_fx(fishActor->init_data._30 * 2.0f); + diff = fishActor->_612.y - fishActor->_60C.y; if (ABS((s16)diff) < DEG2SHORT_ANGLE(20)) { if ((s16)diff > 0) { - fishActor->_612.z += DEG2SHORT_ANGLE(20); + fishActor->_612.y += DEG2SHORT_ANGLE(20); } else { - fishActor->_612.z += DEG2SHORT_ANGLE(-20); + fishActor->_612.y += DEG2SHORT_ANGLE(-20); } } fishActor->_632 = DEG2SHORT_ANGLE(t * 15 + 20); } else { - if ((s16)(fishActor->_612.z - fishActor->_60C.z) > 0) { - fishActor->_612.z += DEG2SHORT_ANGLE(15); + if ((s16)(fishActor->_612.y - fishActor->_60C.y) > 0) { + fishActor->_612.y += DEG2SHORT_ANGLE(15); } else { - fishActor->_612.z += DEG2SHORT_ANGLE(-15); + fishActor->_612.y += DEG2SHORT_ANGLE(-15); } fishActor->_632 = DEG2SHORT_ANGLE((GETREG(TAKREG, 42) + 40.0f) * t + 30); } - if ((s16)(fishActor->_612.z - fishActor->_60C.z) > 0) { + if ((s16)(fishActor->_60C.y - fishActor->_612.y) > 0) { fishActor->_636 = DEG2SHORT_ANGLE(0); } else { fishActor->_636 = DEG2SHORT_ANGLE(-180); @@ -188,7 +188,7 @@ void mfish_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* fishActor) { fishActor->_34 = mfish_normal_process; } -void mfish_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor) { +void mfish_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { if (actor->_632 > DEG2SHORT_ANGLE(20)) { add_calc(&actor->_5E8, actor->_5F0, CALC_EASE(0.2f), (((actor->_632 - DEG2SHORT_ANGLE(20)) / DEG2SHORT_ANGLE(2)) * 0.04f + 0.1f) * 0.5f, 0.05f); @@ -197,70 +197,327 @@ void mfish_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor) { } add_calc_short_angle2(&actor->_632, 0, CALC_EASE2(0.5f), DEG2SHORT_ANGLE(1.25f), DEG2SHORT_ANGLE(0.25f)); actor->_636 += DEG2SHORT_ANGLE(10.0f); - actor->_622 = add_calc_short_angle2(&actor->_60C.z, actor->_612.z + (s16)(actor->_632 * sin_s(actor->_636)), + actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y + (s16)(actor->_632 * sin_s(actor->_636)), CALC_EASE2(0.5f), DEG2SHORT_ANGLE(6.25f), 45); add_calc_short_angle2(&actor->_61C, actor->_622, CALC_EASE2(0.5f), DEG2SHORT_ANGLE(3.75f), 45); if (actor->_5E8 < 0.01f || actor->_630 == 2 && actor->_5E8 < 0.05f) { mfish_dummy_process_init(actor); } else if (actor->_5E8 > 1.0f && actor->_62E & 0x1e) { - if ((s16)(actor->_60C.z - actor->_62C) > 0) { - actor->_612.z = actor->_62C + DEG2SHORT_ANGLE(112.5f); + if ((s16)(actor->_60C.y - actor->_62C) > 0) { + actor->_612.y = actor->_62C + DEG2SHORT_ANGLE(112.5f); } else { - actor->_612.z = actor->_62C - DEG2SHORT_ANGLE(112.5f); + actor->_612.y = actor->_62C - DEG2SHORT_ANGLE(112.5f); } actor->_632 = 0; } } -void mfish_turn_process_init() { - return; +void mfish_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) { + s16 v = DEG2SHORT_ANGLE(RANDOM_F(75.0f)) + DEG2SHORT_ANGLE(45); + actor->_61A = + DEG2SHORT_ANGLE(((actor->_5E8 + 0.5f) / (actor->init_data._10 + actor->init_data._14 + 0.5f)) * 7.5f + 7.5f); + + if (actor->_62E & 0xC0) { + if (actor->_62E & 0x40) { + v = ABS(v); + } else { + v = -ABS(v); + } + } else if (actor->_62E & 0x1e) { + if ((s16)(actor->_62C - actor->_60C.y) < 0) { + v = -v; + } else { + v = v; + } + } else if (actor->_62E & 0x20) { + if ((s16)(actor->_62A - actor->_60C.y) < 0) { + v = -v; + } else { + v = v; + } + } + + if (v > 0) { + actor->_62E |= 0x40; + } else { + actor->_62E |= 0x80; + } + + actor->_612.y += v; + + if (actor->_630 == 2) { + s16 tmp = actor->_612.y + DEG2SHORT_ANGLE(90); + if (tmp > DEG2SHORT_ANGLE(135)) { + actor->_612.y = DEG2SHORT_ANGLE(-45); + } else if (tmp > DEG2SHORT_ANGLE(-135)) { + actor->_612.y = DEG2SHORT_ANGLE(-135); + } + } + + actor->_5F0 = actor->init_data._10 + actor->init_data._14 * 0.7f; + + if (fqrand() < 0.2f) { + actor->_63E = fqrand() * 3.0f + 1.0f; + } else { + actor->_63E = 0; + } + actor->_34 = mfish_turn_process; } -void mfish_turn_process() { - return; +void mfish_turn_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { + if (ABS(actor->_622) > DEG2SHORT_ANGLE(20)) { + add_calc(&actor->_5E8, actor->_5F0, CALC_EASE(0.1f), (GETREG(TAKREG, 0x4e) * 0.01f + 0.5f) * 0.5f, 0.05f); + } + add_calc2(&actor->_5F0, MAX(actor->init_data._10, 0.0f), 0.5f, 0.2f); + add_calc_short_angle2(&actor->_632, 0, CALC_EASE2(0.5f), DEG2SHORT_ANGLE(2.5f), DEG2SHORT_ANGLE(0.25f)); + actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y + (s16)(actor->_632 * sin_s(actor->_636)), + CALC_EASE(0.2f), actor->_61A >> 1, DEG2SHORT_ANGLE(0.25f)); + add_calc_short_angle2(&actor->_61C, actor->_622, CALC_EASE2(0.4f), DEG2SHORT_ANGLE(3.75f), DEG2SHORT_ANGLE(0.25f)); + + if (ABS((s16)(actor->_612.y - actor->_61C)) < DEG2SHORT_ANGLE(2) && actor->_5E8 < 0.1f) { + if (actor->_63E > 0) { + if (mfish_WallCheck(actor)) { + mfish_turn_process_init(actor); + } else { + mfish_normal_process_init(actor); + } + actor->_63E--; + } else { + mfish_dummy_process_init(actor); + } + } } -void mfish_peck_process_init() { - return; +void mfish_peck_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { + f32 fVar8; + f32 fVar9; + int t; + s16 atanx; + s16 atany; + f32 dist; + + actor->_5D4 = 0.0f; + mfish_get_player_angle(actor, game, &atanx, &atany, &dist); + fVar9 = (actor->init_data)._14 + (actor->init_data)._10; + + if (dist < 20.0f) { + fVar9 *= 0.75f; + actor->_5F0 = MAX(fVar9, 0.5f); + } + + if (fVar9 > actor->_5E8) { + actor->_5F0 = fVar9; + } + + fVar8 = (fVar9 / 8.0f); + + if (ABS((s16)(atanx - actor->_60C.y)) < actor->init_data._30) { + actor->_612.y = atanx; + } else if ((s16)(atanx - actor->_60C.y) > 0) { + actor->_612.y = actor->_60C.y + actor->init_data._30; + } else { + actor->_612.y = actor->_60C.y - actor->init_data._30; + } + + if (atany < 0) { + actor->_5F4 = actor->_5F4 + fqrand() * 2.5f; + actor->_5F4 = MAX(MIN(10, actor->_5F4), -10); + + } else { + actor->_5F4 = actor->_5F4 - fqrand() * 2.5f; + actor->_5F4 = MAX(MIN(10, actor->_5F4), -10); + } + + actor->_632 = DEG2SHORT_ANGLE((fVar8 * 30.0f) + 20.0f); + + if (qrand() & 0x8000) { + actor->_636 = 0x4000; + } else { + actor->_636 = -0x4000; + } + + actor->_62E &= ~0xC0; + actor->_34 = mfish_peck_process; } -void mfish_peck_process() { - return; +void mfish_peck_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { + s16 atanx; + s16 atany; + f32 dist; + + mfish_get_player_angle(actor, gamex, &atanx, &atany, &dist); + + if (actor->_632 > DEG2SHORT_ANGLE(15)) { + add_calc(&actor->_5E8, actor->_5F0, CALC_EASE(0.25f), + (((actor->_632 - DEG2SHORT_ANGLE(15)) / DEG2SHORT_ANGLE(2)) * 0.04f + 0.01f) * 0.5f, 0.05f); + } else if (actor->_626 > actor->_628 - 16) { + add_calc(&actor->_5E8, actor->_5F0, CALC_EASE(0.1f), 0.5f, 0.05f); + } else if (dist > 20) { + add_calc2(&actor->_5E8, MAX(actor->_5E8, 0.4f), 0.25f, 0.05f); + } + + add_calc_short_angle2(&actor->_632, 0, CALC_EASE2(0.25f), DEG2SHORT_ANGLE(0.75f), DEG2SHORT_ANGLE(0.25f)); + actor->_636 += DEG2SHORT_ANGLE(10); + actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y + (s16)(sin_s(actor->_636) * actor->_632), + CALC_EASE2(0.5f), DEG2SHORT_ANGLE(6.25f), DEG2SHORT_ANGLE(0.25f)); + add_calc_short_angle2(&actor->_61C, actor->_622, CALC_EASE2(0.5f), DEG2SHORT_ANGLE(3.75f), DEG2SHORT_ANGLE(0.25f)); + + if (mfish_peck_wall_check(actor, gamex)) { + if (fqrand() < 0.9f) { + actor->_5E8 = -0.3f - fqrand() * 0.3f; + actor->_626 = 10; + } else { + actor->_5E8 = -0.5f; + actor->_626 = actor->init_data._2C + (s16)(fqrand() * actor->init_data._2E); + actor->_626 >>= 3; + } + actor->_628 = actor->_626; + actor->_5F0 = 0.0f; + } } -void mfish_ground_peck_process_init() { - return; +void mfish_ground_peck_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { + xyz_t p = suisou_pos[actor->_630]; + xyz_t_sub(&p, &actor->_5A0, &p); + + actor->_5F4 = ((actor->init_data._08 * 0.3f + 65.0f) - MAX(ABS(p.x), ABS(p.z)) * 0.15f) - actor->init_data._0C; + actor->_612.x = DEG2SHORT_ANGLE(60); + actor->_626 = (int)(Rnd_EX_f(30.0f) + 15.0f) << 1; + + if (actor->_34 != mfish_ground_peck_process) { + actor->_63E = fqrand() * 2.0f + 3.0f; + } else { + actor->_63E--; + } + + actor->_5F0 = 0.5f; + actor->_34 = mfish_ground_peck_process; } -void mfish_ground_peck_process() { - return; +void mfish_ground_peck_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { + xyz_t p = suisou_pos[actor->_630]; + xyz_t_sub(&p, &actor->_5A0, &p); + actor->_5F4 = ((actor->init_data._08 * 0.3f + 64.0f) - (MAX(ABS(p.x), ABS(p.y)) * 0.15f)) - actor->init_data._0C; + xyz_t_mult_v(&actor->_5DC, 0.1f); + + if (actor->_5A0.y > actor->_5F4 + actor->init_data._0C + 4.0f) { + if (actor->_612.x < DEG2SHORT_ANGLE(40)) { + actor->_612.x = DEG2SHORT_ANGLE(40); + } + actor->_626++; + add_calc2(&actor->_5F0, 0.5f, 0.6f, 0.5f); + } else if ((s16)(actor->_612.x - actor->_60C.x) > 0) { + add_calc2(&actor->_5F0, 0.2f, 0.5f, 0.4f); + } else { + if (actor->_5E8 > 0) { + actor->_5E8 = -0.2f; + } else { + add_calc0(&actor->_5F0, 0.2f, 0.1f); + } + } + + if (actor->_612.x < DEG2SHORT_ANGLE(15)) { + actor->_612.x = DEG2SHORT_ANGLE(15); + } + + add_calc(&actor->_5E8, actor->_5F0 * cos_s(actor->_60C.x), CALC_EASE(0.5f), 0.25f, 0.05f); + + mfish_dummy_process(actor, gamex); } void mfish_base_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { - GAME_PLAY* game = (GAME_PLAY*)gamex; - return; + GAME_PLAY* play = (GAME_PLAY*)gamex; + f32 f = fqrand() * 2; + f32 s; + s16 q = qrand(); + actor->_5E8 = f; + actor->_5D0 = cos_s(q) * f; + actor->_5D8 = sin_s(q) * f; + actor->_60C.y = q; + actor->_612.y = actor->_60C.y; + if (actor->_59C == 4 || actor->_59C == 9) { + actor->_5F4 = 0.0f; + } else if (actor->_59C == 0x1b) { + actor->_5F4 = fqrand() * 5.0f; + } else { + actor->_5F4 = fqrand2() * 10.0f; + } + actor->_5D4 = 0.0; + actor->_5AC = ZeroVec; + actor->_63E = qrand(); + actor->_622 = actor->_60C.y; } void mfish_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { GAME_PLAY* game = (GAME_PLAY*)gamex; - return; + + if (actor->_5F8 > actor->init_data._08 * 20.0f) { + actor->_5F8 = 0.0f; + actor->_626 = 0; + } + + if (actor->_626-- <= 0) { + actor->_626 = actor->init_data._2C + (s16)(fqrand() * actor->init_data._2E); + actor->_628 = actor->_626; + if (mfish_peck_check(actor, gamex)) { + actor->_626 >>= 2; + actor->_628 = actor->_626; + mfish_peck_process_init(actor, gamex); + } else if (mfish_WallCheck(actor)) { + mfish_turn_process_init(actor); + } else if (mfish_ground_peck_before_check(actor, gamex)) { + mfish_ground_peck_process_init(actor, gamex); + } else { + mfish_normal_process_init(actor); + } + } else if (actor->_34 == mfish_normal_process) { + if ((actor->_62E & 0x1E && ABS((s16)(actor->_62C - actor->_60C.y)) < DEG2SHORT_ANGLE(30)) || + (actor->_62E & 0x20 && + ABS((s16)(actor->_62A + DEG2SHORT_ANGLE(180) - actor->_60C.y)) < DEG2SHORT_ANGLE(30))) { + actor->_626 = actor->init_data._2C + (s16)(fqrand() * actor->init_data._2E); + actor->_628 = actor->_626; + mfish_turn_process_init(actor); + } + } + + if (actor->_624 == 10) { + actor->_5AC.y = 0; + actor->_5A0.y = actor->init_data._0C; + } else if (actor->_630 == 2) { + actor->_5AC.y = sin_s(actor->_638) * 0.2f; + } else { + actor->_5AC.y = 0; + } + + actor->_638 += DEG2SHORT_ANGLE(10); + actor->_34(actor, gamex); + + if (ABS(actor->_61C) > ABS(actor->_622)) { + add_calc2(&actor->_5E8, MIN(GETREG(TAKREG, 19) * 0.1f + 0.2f, actor->_5E8), 0.2f, 0.5f); + } + + add_calc_short_angle2(&actor->_60C.x, actor->_612.x, CALC_EASE(0.1f), DEG2SHORT_ANGLE(5), DEG2SHORT_ANGLE(0.5f)); + add_calc_short_angle2(&actor->_612.x, 0, CALC_EASE(0.1f), DEG2SHORT_ANGLE(2.5f), DEG2SHORT_ANGLE(0.5f)); + mfish_base_FishMove(actor, gamex); } void mfish_onefish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { GAME_PLAY* game = (GAME_PLAY*)gamex; - YET_SKELETON* huh = &actor->_38; - // looks like it loads from 0x38, which i labeled as the skeleton, - // but then it adds like 0x514 to it, so this must be huge - - // cKF_SkeletonInfo_R_ct(&huh->_00, huh->_00); //TODO + YET_SKELETON* s = &actor->_38; + cKF_SkeletonInfo_R_ct(&s->_00, s->_54C, s->_550, &s->_4F0, &s->_514); + cKF_SkeletonInfo_R_init_standard_repeat_speedsetandmorph(&s->_00, s->_550, NULL, 1.875f, 0.0f); + actor->_626 = actor->init_data._2C + (s16)(actor->init_data._2E * fqrand()); + actor->_628 = actor->_626; + actor->_60C.x = DEG2SHORT_ANGLE(0); + actor->_60C.y = DEG2SHORT_ANGLE(-90); + actor->_60C.z = DEG2SHORT_ANGLE(0); + actor->_5DC = ZeroVec; return; } void mfish_onefish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { - GAME_PLAY* game = (GAME_PLAY*)gamex; cKF_SkeletonInfo_R_play(&actor->_38._00); - return; } int mfish_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, void* arg, @@ -292,8 +549,8 @@ void mfish_onefish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { YET_SKELETON* skele; Mtx* mtx; - GAME_PLAY* play; GRAPH* graph; + GAME_PLAY* play; play = (GAME_PLAY*)gamex; skele = &actor->_38; @@ -307,9 +564,9 @@ void mfish_onefish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { graph = play->game.graph; Matrix_translate(actor->_5A0.x, actor->_5A0.y + actor->_5AC.y, actor->_5A0.z, 0); - Matrix_RotateY(actor->_60C.z, 1); + Matrix_RotateY(actor->_60C.y, 1); - Matrix_translate(0.0f, 0.25f * actor->init_data._04, 0.5f * actor->init_data._24, 1); + Matrix_translate(0.0f, 0.25f * actor->init_data._04, 1.5f * actor->init_data._24, 1); Matrix_RotateX(actor->_60C.x, 1); Matrix_RotateZ(MY_CLAMP(-(actor->_61C >> 1), DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20)), 1); Matrix_translate(0.0f, 0.25f * -actor->init_data._04, 0.5f * -actor->init_data._24, 1); @@ -328,32 +585,289 @@ void mfish_ani_base_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { } void mfish_ani_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { - GAME_PLAY* game = (GAME_PLAY*)gamex; - return; + GAME_PLAY* play = (GAME_PLAY*)gamex; + mfish_onefish_mv(actor, gamex); + mfish_base_mv(actor, gamex); + Museum_Fish_BGCheck(actor, gamex); + + if (actor->_630 == 2) { + actor->_38._00.frame_control.speed = + (actor->_5E8 * 3.0f) / (actor->init_data._10 + actor->init_data._14) + 1.0f; + } else if (actor->_59C == 0xe || actor->_59C == 0x1 || actor->_59C == 0) { + if (actor->_5F0 - 0.1f > actor->_5E8 && actor->_34 == mfish_normal_process && actor->_626 > actor->_628 - 10) { + actor->_38._00.frame_control.speed = + ((actor->_5F0 - actor->_5E8) * 3.0f) / (actor->init_data._10 + actor->init_data._14) + 1.5f; + } else { + add_calc2(&actor->_38._00.frame_control.speed, 2.0f * actor->_5E8 + 0.5f, 0.2f, 0.1f); + } + } else { + if (actor->_626 > actor->_628 - 10 && actor->_5F0 > 0) { + actor->_38._00.frame_control.speed = + (actor->_5E8 * 4.0f) / (actor->init_data._10 + actor->init_data._14) + 1.25f; + } else { + add_calc2(&actor->_38._00.frame_control.speed, 2.0f * actor->_5E8 + 0.5f, 0.2f, 0.1f); + } + } + + mfish_body_wind_anime_play(actor, gamex); } void mfish_ani_base_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { GAME_PLAY* game = (GAME_PLAY*)gamex; - return; + // NOT BAD } -void Museum_Fish_BigFishObjCheck() { - return; +void Museum_Fish_BigFishObjCheck(MUSEUM_FISH_PRIVATE_DATA* actor) { + int i; + MUSEUM_FISH_PRIVATE_DATA* fish[2]; + f32 max[2] = { 430.0f, 530.0f }; + fish[0] = &MF_Control_Actor->prvFish[aGYO_TYPE_ARAPAIMA]; + fish[1] = &MF_Control_Actor->prvFish[aGYO_TYPE_GIANT_SNAKEHEAD]; + + for (i = 0; i < 2; i++) { + f32 v; + xyz_t ip = fish[i]->_5B8; + xyz_t op; + f32 f27 = actor->init_data._08 * (sin_s(actor->_60C.y) * 0.3f + 0.7f) + fish[i]->init_data._08; + f32 f26 = 10.f + (actor->init_data._08 * (0.7f + 0.3f * cos_s(actor->_60C.y))); + f32 f25 = actor->init_data._04 + fish[i]->init_data._04; + xyz_t_sub(&actor->_5B8, &ip, &op); + if (ABS(op.z) < f26 && ABS(op.y) < f25 && ABS(op.x) < f27) { + f27 -= ABS(op.x); + f26 -= ABS(op.z); + f25 -= ABS(op.y); + if (f25 < MIN(f27, f26)) { + if (op.y < 0) { + actor->_5A0.y -= MIN(f25, 0.25f); + fish[i]->_5A0.y += MIN(f25, 0.05f); + } else { + actor->_5A0.y += MIN(f25, 0.25f); + fish[i]->_5A0.y -= MIN(f25, 0.05f); + } + } else if (f26 < f27) { + v = ABS(cos_s(actor->_60C.y) * actor->_5E8); + if (op.z < 0) { + actor->_5A0.z -= MIN(f26, MAX(0.5f, v)); + if (fish[i]->_5B8.z < max[i] + 10.0f) { + fish[i]->_5A0.z += MIN(f26, 0.05f); + } + } else { + actor->_5A0.z += MIN(f26, MAX(0.5f, v)); + if (fish[i]->_5B8.z > max[i] - 10.0f) { + fish[i]->_5A0.z -= MIN(f26, 0.05f); + } + } + } else { + v = ABS(sin_s(actor->_60C.y) * actor->_5E8); + if (op.x < 0) { + actor->_5A0.x -= MIN(f27, MAX(0.5f, v)); + fish[i]->_5A0.x += MIN(f27, 0.05f); + } else { + actor->_5A0.x += MIN(f27, MAX(0.5f, v)); + fish[i]->_5A0.x -= MIN(f27, 0.05f); + } + } + } + } } -void Museum_Fish_ObjBGCheck() { - return; +void Museum_Fish_ObjBGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex, f32 f1, f32 f2) { + xyz_t p = suisou_pos[actor->_630]; + f32 a, b, c, d, e; + + switch (actor->_630) { + case 0: + e = 85.0f; + a = -20.0f + p.x; + b = 1000.0f + p.x; + c = -25.0f + p.z; + d = -1000.0f + p.z; + break; + case 1: + a = -5.0f + p.x; + c = -10.0f + p.z; + b = 1000.0f + p.x; + d = -1000.0f + p.z; + // needs cast, temp doesn't work + e = 75.0f - cos_s((int)DEG2SHORT_ANGLE(180.0f * (actor->_5B8.x - a) / 70.0f)) * 5.0f; + break; + case 2: + e = 80.0f; + a = -1000.0f + p.x; + b = -5.0f + p.x; + c = -20.0f + p.z; + d = -1000.0f + p.z; + break; + case 3: + e = 75.0f; + a = -20.0f + p.x; + b = 1000.0f + p.x; + c = -5.0f + p.z; + d = -1000.0f + p.z; + break; + case 4: + default: + return; + } + + e -= actor->_5A0.y; + if (e > 0.0f) { + f32 v1, v2; + b -= (actor->_5A0.x + (actor->init_data._28 * f1)); + a -= (actor->_5A0.x - (actor->init_data._28 * f1)); + c -= (actor->_5A0.z + (actor->init_data._28 * f2)); + d -= (actor->_5A0.z - (actor->init_data._28 * f2)); + if (b > 0.0f && c > 0.0f && a < 0.0f && d < 0.0f) { + if (b > -a) { + if ((actor->_62E & 2) == 0) { + actor->_62E |= 4; + } + v1 = a; + } else { + if ((actor->_62E & 4) == 0) { + actor->_62E |= 2; + } + v1 = b; + } + + if (c > -d) { + if ((actor->_62E & 8) == 0) { + actor->_62E |= 0x10; + } + v2 = d; + } else { + if ((actor->_62E & 0x10) == 0) { + actor->_62E |= 8; + } + v2 = c; + } + + if (e < MIN(ABS(v2), ABS(v1)) && actor->_624 != 10) { + actor->_5A0.y += e; + if (actor->_624 == 3) { + actor->_612.x = DEG2SHORT_ANGLE(45); + } else if (actor->_59C == 15) { + if (actor->_612.x > DEG2SHORT_ANGLE(30)) { + actor->_612.x -= DEG2SHORT_ANGLE(2); + } else if (actor->_612.x < DEG2SHORT_ANGLE(-30)) { + actor->_612.x += DEG2SHORT_ANGLE(2); + } + } + } else { + if (ABS(v2) < ABS(v1)) { + actor->_5A0.z += v2; + } else { + actor->_5A0.x += v1; + } + } + } + } } -void Museum_Fish_DonkoBGCheck() { - return; +void Museum_Fish_DonkoBGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { + f32 a, b, c, d; + f32 f25; + f32 f26; + f32 f24; + f32 f27; + xyz_t p = suisou_pos[actor->_630]; + f32 v = (sin_s(actor->_60C.y) * 0.7f) * (ABS(cos_s(actor->_61C)) * 0.5f + 0.5f) + 0.3f; + f32 v2 = (cos_s(actor->_60C.y) * 0.7f) * (ABS(cos_s(actor->_61C)) * 0.5f + 0.5f) + 0.3f; + actor->_62E &= ~0x1e; + actor->_62C = 0; + Museum_Fish_objchk_pos_set(actor, gamex); + // asm 17C + a = (+00.0f + p.x); + b = (-45.5f + p.x); + c = (+45.0f + p.z); + d = (-17.5f + p.z); + f27 = 76.0f - 6.0f * cos_s(DEG2SHORT_ANGLE2(180.0f * (actor->_5B8.x - p.x) / 55.0f)); + f26 = 76.0f - 6.0f * cos_s(DEG2SHORT_ANGLE2((actor->_5B8.x + sin_s(actor->_60C.z) - p.x) * 180.0f / 55.0f)); + + a -= (actor->_5A0.x + actor->init_data._28 * v); + c -= (actor->_5A0.x - actor->init_data._28 * v); + b -= (actor->_5A0.z + actor->init_data._28 * v2); + d -= (actor->_5A0.z - actor->init_data._28 * v2); + + /* + f31 = a + f30 = b + f28 = c + f29 = d + */ + + actor->_5FC = -a; + actor->_600 = b; + actor->_604 = -c; + actor->_608 = d; + + // asm 2E8 + f27 -= actor->_5A0.y; + f26 -= actor->_5A0.y; + if (a > 0.0f) { + actor->_5FC = 0.0f; + actor->_5A0.x += a; + actor->_62E |= 2; + } else if (b < 0.0f) { + actor->_600 = 0.0f; + actor->_5A0.x += b; + actor->_62E |= 4; + } + + if (c > 0.0f) { + actor->_604 = 0.0f; + actor->_5A0.z += c; + actor->_62E |= 0x8; + } else if (d < 0.0f) { + actor->_608 = 0.0f; + actor->_5A0.z += d; + actor->_62E |= 0x10; + } + + if (actor->_62E & 2) { + actor->_62C = DEG2SHORT_ANGLE(-90); + } else if (actor->_62E & 4) { + actor->_62C = DEG2SHORT_ANGLE(90); + } + + if (actor->_62E & 8) { + if (actor->_62E & 6) { + actor->_62C = DEG2SHORT_ANGLE(180) - (actor->_62C >> 1); + } else { + actor->_62C = DEG2SHORT_ANGLE(-180); + } + } else if (actor->_62E & 0x10) { + if (actor->_62E & 6) { + actor->_62C = (actor->_62C >> 1); + } else { + actor->_62C = 0; + } + } + + f25 = MIN(MIN(actor->_608, actor->_604), MIN(actor->_5FC, actor->_600)); + if (f25 < 5.0f) { + f27 -= 0.5f * (5.0f - f25); + } + + f25 = MIN(MIN(actor->_608 - cos_s(actor->_60C.y), actor->_604 + cos_s(actor->_60C.y)), + MIN(actor->_600 - sin_s(actor->_60C.y), actor->_5FC + sin_s(actor->_60C.y))); + // asm 5D8 + if (f25 < 5.0f) { + f26 -= 0.5f * (5.0f - f25); + } + f26 -= f27; + actor->_612.x = atans_table(1.0f, -f26); + if (f27 > 0.0f) { + actor->_5A0.y += f27; + actor->_5D4 *= 0.95f; + } } void Museum_Fish_objchk_pos_set() { - return; + // NOT BAD } -void Museum_Fish_BGCheck() { +void Museum_Fish_BGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { return; } @@ -369,19 +883,36 @@ void mfish_body_wind_anime_play() { return; } -void mfish_get_player_angle() { +void mfish_get_player_angle(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game, s16* atanx, s16* atany, f32* distance) { + PLAYER_ACTOR* playerActor = get_player_actor_withoutCheck((GAME_PLAY*)game); + xyz_t p; + xyz_t p1; + f32 v; + p = playerActor->actor_class.world.position; + p.y += 40.0f; + xyz_t_sub(&p, &actor->_5A0, &p1); + v = p1.x * p1.x + p1.z * p1.z; + v = sqrtf(v); + if (atanx) { + *atanx = atans_table(p1.z, p1.x); + } + if (atany) { + *atany = atans_table(v, -p1.y); + } + if (distance) { + *distance = v; + } +} + +BOOL mfish_peck_check() { return; } -void mfish_peck_check() { - return; +BOOL mfish_peck_wall_check(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { + // NOT BAD } -void mfish_peck_wall_check() { - return; -} - -void mfish_ground_peck_before_check() { +BOOL mfish_ground_peck_before_check() { return; } diff --git a/src/actor/ac_museum_fish_bass.c_inc b/src/actor/ac_museum_fish_bass.c_inc index 20e44707..ae18c8df 100644 --- a/src/actor/ac_museum_fish_bass.c_inc +++ b/src/actor/ac_museum_fish_bass.c_inc @@ -63,10 +63,10 @@ void mfish_bass_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* fishActor) { f32 t; f32 temp; - ra = fqrand() * fishActor->init_data._14 + fishActor->init_data._10; + ra = RANDOM_F(fishActor->init_data._14) + fishActor->init_data._10; t = (ra) / MAX(fishActor->init_data._14 + fishActor->init_data._10, 1); - if (fqrand() > 0.25f && !(fishActor->_62E & 0x200)) { + if (RANDOM_F(1) > 0.25f && !(fishActor->_62E & 0x200)) { fishActor->_62E |= 0x200; } else { fishActor->_62E &= ~0x200; @@ -86,7 +86,7 @@ void mfish_bass_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* fishActor) { fishActor->_612.x = CLAMP(fishActor->_612.x, DEG2SHORT_ANGLE(-50), DEG2SHORT_ANGLE(50)); fishActor->_5D4 = 0; - if (fqrand() > fishActor->init_data._1C) { + if (RANDOM_F(1) > fishActor->init_data._1C) { int diff; fishActor->_612.z += (s16)Rnd_EX_fx(fishActor->init_data._30 * 2.0f); @@ -128,7 +128,7 @@ void mfish_bass_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* fishActor) { fishActor->_34 = mfish_bass_normal_process; } -void mfish_bass_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor) { +void mfish_bass_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { if (((actor->_62E & 0x200) != 0 && actor->_632 > DEG2SHORT_ANGLE(20)) || actor->_640 > 0) { f32 v = (actor->_5AC.y * 0.03f + 0.02f); add_calc2(&actor->_5EC, @@ -167,7 +167,7 @@ void mfish_bass_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) { s16 a; s16 b; - b = a = 0x2000 + DEG2SHORT_ANGLE(fqrand() * 75.0f); + b = a = 0x2000 + DEG2SHORT_ANGLE(RANDOM_F(75)); actor->_61A = DEG2SHORT_ANGLE((actor->_5AC.y * 4.0f + 4.0f) * (SHORT2DEG_ANGLE2(a) / 120.0f) + 2.0f + actor->_5AC.y); if (actor->_62E & 0x1e) { @@ -194,7 +194,7 @@ void mfish_bass_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) { actor->_612.z += b; - if ((fqrand() < 0.25f) && (actor->_62E & 0x200) == 0) { + if ((RANDOM_F(1) < 0.25f) && (actor->_62E & 0x200) == 0) { actor->_62E |= 0x200; } else { actor->_62E &= ~0x200; @@ -208,8 +208,8 @@ void mfish_bass_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) { actor->_5AC.x = Rnd_EX_fx(0.1f) + 0.15f; } - if (fqrand() < 0.2f) { - actor->_63E = (s16)(fqrand() * 3.0f + 1.0f); + if (RANDOM_F(1) < 0.2f) { + actor->_63E = RANDOMF_RANGE(1, 4); } else { actor->_63E = 0; } @@ -220,7 +220,40 @@ void mfish_bass_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) { void mfish_bass_turn_process(MUSEUM_FISH_PRIVATE_DATA* actor) { int a; - if (ABS(actor->_622) > DEG2SHORT_ANGLE(20)) {} + f32 v0, v1, v2, v3, v4; + v0 = actor->_5AC.y * 0.2f + 0.05f; + v1 = actor->_5AC.y * 0.04f + 0.01f; + v2 = actor->_5AC.y * 0.04f + 0.01f; + v3 = actor->_5AC.y * 0.15f + 0.1f; + v4 = actor->_5AC.y * 0.15f + 0.05f; + + if (ABS(actor->_622) > DEG2SHORT_ANGLE(20)) { + add_calc2(&actor->_5E8, v0, v1, v2); + add_calc(&actor->_5E8, actor->_5F0, CALC_EASE(0.1f), actor->_5EC * 0.5f, 0.05f); + } + + add_calc2(&actor->_5F0, MAX(actor->init_data._10, 0.0f), v3, v4); + add_calc_short_angle2(&actor->_632, 0, CALC_EASE2(0.5f), DEG2SHORT_ANGLE(2.5f), 45); + + actor->_622 = add_calc_short_angle2(&actor->_60C.z, ((s16)(sin_s(actor->_636) * actor->_632) + actor->_612.z), + CALC_EASE(0.2f), actor->_61A >> 1, 45); + + add_calc_short_angle2(&actor->_61C, actor->_622, CALC_EASE2(0.25f), DEG2SHORT_ANGLE(2.5f), 22); + + if (ABS((s16)(actor->_60C.z - actor->_612.z)) < DEG2SHORT_ANGLE(2.0f) && actor->_5E8 < 0.1f) { + if (actor->_63E > 0) { + if (mfish_WallCheck(actor)) { + mfish_bass_tail_anim_set(actor, 1); + mfish_bass_turn_process_init(actor); + + } else { + mfish_bass_normal_process_init(actor); + } + actor->_63E--; + } else { + mfish_bass_dummy_process_init(actor); + } + } } void mfish_bass_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { @@ -245,9 +278,59 @@ void mfish_bass_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { } void mfish_bass_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { + mfish_onefish_mv(actor, gamex); - GAME_PLAY* game = (GAME_PLAY*)gamex; - return; + if (actor->_5F8 > actor->init_data._08 * 20.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 (mfish_WallCheck(actor)) { + mfish_bass_tail_anim_set(actor, 1); + mfish_bass_turn_process_init(actor); + } else { + mfish_bass_tail_anim_set(actor, 0); + mfish_bass_turn_process_init(actor); + } + } else if (actor->_34 == &mfish_bass_normal_process) { + if (((actor->_62E & 0x1e) && ABS((s16)(actor->_60C.z - actor->_62C)) < DEG2SHORT_ANGLE(30)) || + ((actor->_62E & 0x20) && + ABS((s16)((actor->_62A - DEG2SHORT_ANGLE(-180)) - actor->_60C.z)) < DEG2SHORT_ANGLE(30))) { + actor->_626 = actor->init_data._2C + (s16)(actor->init_data._2E * fqrand()); + actor->_628 = actor->_626; + mfish_bass_tail_anim_set(actor, 1); + mfish_bass_turn_process_init(actor); + } + } + actor->_638 += DEG2SHORT_ANGLE(10); + actor->_34(actor, gamex); + + if (ABS(actor->_622) > ABS(actor->_61C)) { + add_calc2(&actor->_5E8, MIN(GETREG(TAKREG, 19) * 0.01f + 1.0f, actor->_5E8), GETREG(TAKREG, 18) * 0.01f + 0.2f, + GETREG(TAKREG, 17) * 0.01f + 0.5f); + } + + add_calc_short_angle2(&actor->_60C.x, actor->_612.x, CALC_EASE(0.05f), DEG2SHORT_ANGLE(actor->_5AC.y + 3.0f) >> 1, + 9); + add_calc_short_angle2(&actor->_612.x, 0, CALC_EASE(0.05f), DEG2SHORT_ANGLE(actor->_5AC.y * 0.5f + 2.0f) >> 1, 9); + + mfish_bass_base_FishMove(actor, gamex); + Museum_Fish_BGCheck(actor, gamex); + if (actor->_640 > 0) { + f32 tmp, num, denom; + denom = (actor->init_data._14 + actor->init_data._10); + actor->_640--; + num = (actor->_5AC.z * (actor->_5F0 - actor->_5E8)); + tmp = (actor->_5AC.y * 0.7f + 0.4f); + add_calc2(&actor->_38._00.frame_control.speed, tmp * (1.75f + num / denom), 0.5f, 0.5f); + } else { + add_calc2(&actor->_38._00.frame_control.speed, (actor->_5E8 * 2.0f + 0.5f) * (actor->_5AC.y * 0.8f + 0.6f), + 0.2f, 0.1f); + } } void mfish_bass_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { diff --git a/src/actor/ac_museum_fish_big_fish.c_inc b/src/actor/ac_museum_fish_big_fish.c_inc index 748303c4..e6943887 100644 --- a/src/actor/ac_museum_fish_big_fish.c_inc +++ b/src/actor/ac_museum_fish_big_fish.c_inc @@ -16,6 +16,7 @@ void mfish_bfish_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joi } void mfish_big_fish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { + // NOT BAD GAME_PLAY* game = (GAME_PLAY*)gamex; return; diff --git a/src/actor/ac_museum_fish_dojou.c_inc b/src/actor/ac_museum_fish_dojou.c_inc index 44047c30..59c8f00a 100644 --- a/src/actor/ac_museum_fish_dojou.c_inc +++ b/src/actor/ac_museum_fish_dojou.c_inc @@ -5,6 +5,7 @@ void mfish_dojou_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { } void mfish_dojou_normal_init() { + // NOT BAD return; } @@ -13,6 +14,7 @@ void mfish_dojou_normal() { } void mfish_dojou_turn_init() { + // NOT BAD return; } diff --git a/src/actor/ac_museum_fish_donko.c_inc b/src/actor/ac_museum_fish_donko.c_inc index a03d40e2..ce87320a 100644 --- a/src/actor/ac_museum_fish_donko.c_inc +++ b/src/actor/ac_museum_fish_donko.c_inc @@ -12,6 +12,7 @@ void mfish_donko_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { void mfish_donko_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) { + // NOT BAD return; } diff --git a/src/actor/ac_museum_fish_gupi.c_inc b/src/actor/ac_museum_fish_gupi.c_inc index db34b40a..aaa5fddd 100644 --- a/src/actor/ac_museum_fish_gupi.c_inc +++ b/src/actor/ac_museum_fish_gupi.c_inc @@ -1,10 +1,12 @@ void mfish_gupi_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { + // NOT BAD GAME_PLAY* game = (GAME_PLAY*)gamex; return; } void mfish_gupi_normal_init() { + // NOT BAD return; } @@ -13,6 +15,7 @@ void mfish_gupi_normal() { } void mfish_gupi_turn_init() { + // NOT BAD return; } @@ -35,4 +38,4 @@ void mfish_gupi_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { GAME_PLAY* game = (GAME_PLAY*)gamex; return; -} \ No newline at end of file +} diff --git a/src/actor/ac_museum_fish_ito.c_inc b/src/actor/ac_museum_fish_ito.c_inc index d17cfb27..804288d7 100644 --- a/src/actor/ac_museum_fish_ito.c_inc +++ b/src/actor/ac_museum_fish_ito.c_inc @@ -17,6 +17,7 @@ void mfish_ito_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint void mfish_ito_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { + // NOT BAD GAME_PLAY* game = (GAME_PLAY*)gamex; return; } diff --git a/src/actor/ac_museum_fish_kaseki.c_inc b/src/actor/ac_museum_fish_kaseki.c_inc index ff53dc1c..a83d92eb 100644 --- a/src/actor/ac_museum_fish_kaseki.c_inc +++ b/src/actor/ac_museum_fish_kaseki.c_inc @@ -5,6 +5,7 @@ void mfish_kaseki_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { } void mfish_kaseki_normal_init() { + // NOT BAD return; } @@ -31,4 +32,4 @@ void mfish_kaseki_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { GAME_PLAY* game = (GAME_PLAY*)gamex; return; -} \ No newline at end of file +} diff --git a/src/actor/ac_museum_fish_kingyo.c_inc b/src/actor/ac_museum_fish_kingyo.c_inc index 7021c6fa..030a4981 100644 --- a/src/actor/ac_museum_fish_kingyo.c_inc +++ b/src/actor/ac_museum_fish_kingyo.c_inc @@ -5,6 +5,7 @@ void mfish_kingyo_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { } void mfish_kingyo_normal_init() { + // NOT BAD return; } @@ -13,6 +14,7 @@ void mfish_kingyo_normal() { } void mfish_kingyo_turn_init() { + // NOT BAD return; } @@ -21,6 +23,7 @@ void mfish_kingyo_turn() { } void mfish_kingyo_peck_init() { + // NOT BAD return; } @@ -43,4 +46,4 @@ void mfish_kingyo_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { GAME_PLAY* game = (GAME_PLAY*)gamex; return; -} \ No newline at end of file +} diff --git a/src/actor/ac_museum_fish_koi.c_inc b/src/actor/ac_museum_fish_koi.c_inc index 24b675d9..7994696f 100644 --- a/src/actor/ac_museum_fish_koi.c_inc +++ b/src/actor/ac_museum_fish_koi.c_inc @@ -1,28 +1,21 @@ + void mfish_koi_tail_anim_set(MUSEUM_FISH_PRIVATE_DATA* actor, s32 r4) { f32 temp; + f32 temp2; + f32 temp3; if (r4 == 0) { - actor->_640 = (int)(6.0f * fqrand()) + 25; - //! BUG: fqrand2 called without being used - // Maybe some kind of min-max macro, where we're multiplying fqrand2 by 0 (temp - temp), - // but including fqrand2() directly in the equation below generates extra fmuls instr for some reason. - // The only way around it we found was to call it like this. - fqrand2(); - temp = 6.5f; - actor->_5AC.x = temp + (f32)(temp - temp); + actor->_640 = RANDOM_RANGE(25, 31); + actor->_5AC.x = RANDOM2F_RANGE(6.5f, 6.5f); } else if (r4 == 1) { if (actor->_640 == 0) { - actor->_640 = (int)(4.0f * fqrand()) + 20; - //! BUG: fqrand2 called without being used (see context above) - fqrand2(); - temp = 5.0f; - actor->_5AC.x = temp + (f32)(temp - temp); + actor->_640 = RANDOM_RANGE(20, 24); + actor->_5AC.x = RANDOM2F_RANGE(5.0f, 5.0f); + } + } else { + if (actor->_640 == 0) { + actor->_640 = RANDOM_RANGE(45, 51); + actor->_5AC.x = RANDOM2F_RANGE(1.0f, 1.0f); } - } else if (actor->_640 == 0) { - actor->_640 = (int)(6.0f * fqrand()) + 45; - //! BUG: fqrand2 called without being used (see context above) - fqrand2(); - temp = 1.0f; - actor->_5AC.x = temp + (f32)(temp - temp); } } @@ -74,7 +67,7 @@ void mfish_koi_peck_process() { return; } -void mfish_koi_long_move_process_init() { +void mfish_koi_long_move_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) { return; } @@ -107,4 +100,4 @@ void mfish_koi_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { GAME_PLAY* game = (GAME_PLAY*)gamex; return; -} \ No newline at end of file +} diff --git a/src/actor/ac_museum_fish_medaka.c_inc b/src/actor/ac_museum_fish_medaka.c_inc index 95c6756c..5eb3e92b 100644 --- a/src/actor/ac_museum_fish_medaka.c_inc +++ b/src/actor/ac_museum_fish_medaka.c_inc @@ -5,6 +5,7 @@ void mfish_medaka_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { } void mfish_medaka_normal_init() { + // NOT BAD return; } @@ -13,6 +14,7 @@ void mfish_medaka_normal() { } void mfish_medaka_turn_init() { + // NOT BAD return; } @@ -35,4 +37,4 @@ void mfish_medaka_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { GAME_PLAY* game = (GAME_PLAY*)gamex; return; -} \ No newline at end of file +} diff --git a/src/actor/ac_museum_fish_seafish.c_inc b/src/actor/ac_museum_fish_seafish.c_inc index c1f83683..458e7fa4 100644 --- a/src/actor/ac_museum_fish_seafish.c_inc +++ b/src/actor/ac_museum_fish_seafish.c_inc @@ -5,6 +5,7 @@ void mfish_seafish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { } void mfish_seafish_normal_init() { + // NOT BAD return; } @@ -35,4 +36,4 @@ void mfish_seafish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { GAME_PLAY* game = (GAME_PLAY*)gamex; return; -} \ No newline at end of file +} diff --git a/src/actor/ac_museum_fish_small_fish.c_inc b/src/actor/ac_museum_fish_small_fish.c_inc index 82a8a8cf..ea142ec6 100644 --- a/src/actor/ac_museum_fish_small_fish.c_inc +++ b/src/actor/ac_museum_fish_small_fish.c_inc @@ -5,6 +5,7 @@ void mfish_small_fish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { } void mfish_sfish_normal_init() { + // NOT BAD return; } @@ -17,6 +18,7 @@ void mfish_sfish_turn_init() { } void mfish_sfish_turn() { + // NOT BAD return; } @@ -35,4 +37,4 @@ void mfish_small_fish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { GAME_PLAY* game = (GAME_PLAY*)gamex; return; -} \ No newline at end of file +} diff --git a/src/actor/ac_museum_fish_tai.c_inc b/src/actor/ac_museum_fish_tai.c_inc index f42625c2..75424454 100644 --- a/src/actor/ac_museum_fish_tai.c_inc +++ b/src/actor/ac_museum_fish_tai.c_inc @@ -5,6 +5,8 @@ void mfish_tai_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { } void mfish_tai_normal_init() { + // NOT BAD + return; } @@ -13,6 +15,8 @@ void mfish_tai_normal() { } void mfish_tai_turn_init() { + // NOT BAD + return; } @@ -33,6 +37,7 @@ void mfish_tai_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint void mfish_tai_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { + // NOT BAD GAME_PLAY* game = (GAME_PLAY*)gamex; return; -} \ No newline at end of file +} diff --git a/src/actor/ac_museum_fish_unagi.c_inc b/src/actor/ac_museum_fish_unagi.c_inc index fa7e7ace..14ff9f68 100644 --- a/src/actor/ac_museum_fish_unagi.c_inc +++ b/src/actor/ac_museum_fish_unagi.c_inc @@ -5,6 +5,7 @@ void mfish_unagi_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { } void mfish_unagi_get_next_rail_type() { + // NOT BAD return; } @@ -56,7 +57,8 @@ void mfish_unagi_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joi } void mfish_unagi_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { + // NOT BAD GAME_PLAY* game = (GAME_PLAY*)gamex; return; -} \ No newline at end of file +}