Match ito

This commit is contained in:
roeming
2025-01-05 20:54:10 -05:00
parent 9c52644bb8
commit db08f0ce13
2 changed files with 114 additions and 11 deletions
+1 -1
View File
@@ -388,7 +388,7 @@ void mfish_big_fish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_ito_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_ito_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_ito_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f,
BOOL mfish_ito_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_ito_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
+113 -10
View File
@@ -1,23 +1,126 @@
void mfish_ito_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
GAME_PLAY* game = (GAME_PLAY*)gamex;
return;
//! BUG: unused
s16 s = qrand();
actor->_5A0.y = actor->init_data._0C;
mfish_onefish_ct(actor, gamex);
actor->_5E8 = 0.0f;
actor->_5AC = ZeroVec;
actor->_5F0 = actor->_5E8;
actor->_60C.y = DEG2SHORT_ANGLE(90);
actor->_612.y = actor->_60C.y;
actor->_5F4 = 0.0f;
actor->_5D0.y = 0.0f;
actor->_622 = 0;
actor->_624 = 7;
actor->_63A = qrand();
actor->_63C = qrand();
actor->_640 = 0;
actor->_634 = 0;
actor->_632 = 0;
actor->_644 = 0;
actor->_5AC.x = 0.0f;
actor->_5AC.z = 0.0f;
actor->_626 = actor->init_data._2C + (s16)RANDOM_F(actor->init_data._2E);
}
void mfish_ito_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
GAME_PLAY* game = (GAME_PLAY*)gamex;
return;
xyz_t p;
mfish_onefish_mv(actor, gamex);
mfish_body_wind_anime_play(actor, gamex);
actor->_38._00.frame_control.speed = (sin_s(actor->_63A) * 0.6f + 3.0f) * 0.5f;
actor->_5AC.y = sin_s(actor->_63A) * 0.2f;
add_calc2(&actor->_5E8, actor->_5F0, 0.1f, 0.02f);
actor->_5D0.x = actor->_5E8 * sin_s(actor->_60C.y);
actor->_5D0.z = actor->_5E8 * cos_s(actor->_60C.y);
if (ABS(actor->_600 - actor->_5FC) > 60.f) {
if (actor->_600 > actor->_5FC) {
add_calc2(&actor->_5F0, 0.1f, CALC_EASE(0.05f), 0.005f);
} else {
add_calc2(&actor->_5F0, -0.1f, CALC_EASE(0.05f), 0.005f);
}
}
mfish_get_flow_vec(&p, actor, gamex);
actor->_5A0.x += actor->_5D0.x + p.x * 0.1f;
actor->_5A0.z += actor->_5D0.z + p.z * 0.1f;
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y, CALC_EASE2(0.2f), DEG2SHORT_ANGLE(1.875f),
DEG2SHORT_ANGLE(0.05f));
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.2f), DEG2SHORT_ANGLE(1.25f),
DEG2SHORT_ANGLE(0.025f));
add_calc(&actor->_5A0.y, actor->init_data._0C + actor->_5F4, CALC_EASE(0.05f), 0.15f, 0.05f);
actor->_646 += DEG2SHORT_ANGLE(10);
add_calc_short_angle2(&actor->_634, actor->_640, CALC_EASE2(0.1f),
(s16)(DEG2SHORT_ANGLE(GETREG(TAKREG, 0x3d) * 0.1f + 0.8f) >> 1) >> 1,
DEG2SHORT_ANGLE(0.025f));
add_calc_short_angle2(&actor->_644, actor->_634, CALC_EASE2(0.1f), DEG2SHORT_ANGLE(0.625f),
DEG2SHORT_ANGLE(0.025f));
add_calc2(&actor->_5AC.x, actor->_5AC.z, 0.25f, 0.001f);
if (actor->_626-- < 0) {
if (RANDOM_F(1.0f) > 0.5f && actor->_600 > 5.0f) {
if (actor->_60C.y > 0) {
actor->_612.y = DEG2SHORT_ANGLE(90);
} else {
actor->_612.y = DEG2SHORT_ANGLE(-90);
}
actor->_5F0 = actor->init_data._10 + MAX(-actor->init_data._10, RANDOM_F(actor->init_data._14));
actor->_642 = DEG2SHORT_ANGLE(RANDOM2_F(2.0f) + 3.0f);
actor->_634 = DEG2SHORT_ANGLE(RANDOM_F(10.0f) + 20.0f);
actor->_640 = DEG2SHORT_ANGLE(RANDOM_F(10.0f));
actor->_5AC.z = Rnd_EX_f(0.06f);
} else {
actor->_5F0 = -0.1f;
actor->_5F4 = RANDOM2_F(5.0f);
actor->_642 = 0;
actor->_634 = 0;
actor->_640 = 0;
actor->_5AC.z = 0.0f;
}
actor->_626 = actor->init_data._2C + (s16)RANDOM_F(actor->init_data._2E);
}
Museum_Fish_BGCheck(actor, gamex);
}
void mfish_ito_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f,
BOOL mfish_ito_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) {
f32 v;
int i = joint1->x + (actor->_618.z >> 1);
joint1->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20));
i = joint1->y + (int)(actor->_644 * (GETREG(TAKREG, 0x14) * 0.01f + 0.5f) * sin_s(actor->_646));
joint1->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30));
v = actor->_5AC.x * actor->_644 * sin_s(actor->_646 - DEG2SHORT_ANGLE(90));
trans->z += v;
Matrix_scale(1.0f, sin_s(actor->_63A + actor->_63C) * 0.025f + 1.0f, sin_s(actor->_63A) * 0.025f + 1.0f, 1);
} else if (joint_num == 2) {
int i;
i = joint1->y - 2 * actor->_618.z +
(int)(actor->_644 * (GETREG(TAKREG, 0x15) * 0.01f + 0.7f) *
sin_s(actor->_646 + DEG2SHORT_ANGLE(-90.f + GETREG(TAKREG, 0x17))));
joint1->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-40), DEG2SHORT_ANGLE(40));
i = joint1->x - (actor->_618.z >> 1);
joint1->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20));
Matrix_scale(1.0f, sin_s(actor->_63A + DEG2SHORT_ANGLE(270)) * 0.05f + 1.0f,
sin_s(actor->_63A + DEG2SHORT_ANGLE(90)) * 0.05f + 1.0f, 1);
}
return TRUE;
}
void mfish_ito_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->_5AC.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_sfish_before_disp, NULL, actor);
CLOSE_DISP(gamex->graph);
}