diff --git a/src/actor/ac_museum_fish_koi.c_inc b/src/actor/ac_museum_fish_koi.c_inc index 1a2621a8..24b675d9 100644 --- a/src/actor/ac_museum_fish_koi.c_inc +++ b/src/actor/ac_museum_fish_koi.c_inc @@ -1,6 +1,29 @@ - -void mfish_koi_tail_anim_set() { - return; +void mfish_koi_tail_anim_set(MUSEUM_FISH_PRIVATE_DATA* actor, s32 r4) { + f32 temp; + 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); + } 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); + } + } 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); + } } void mfish_koi_move_smooth() { @@ -9,7 +32,14 @@ void mfish_koi_move_smooth() { void mfish_koi_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { GAME_PLAY* game = (GAME_PLAY*)gamex; - return; + + mfish_onefish_ct(actor, gamex); + mfish_base_ct(actor, gamex); + + actor->_34 = mfish_koi_normal_process; + actor->_5E8 = actor->init_data._10; + actor->_5AC.z = 1.0f; + actor->_624 = 9; } void mfish_koi_dummy_process_init() {