mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 06:34:18 -04:00
match dojou
This commit is contained in:
@@ -247,7 +247,7 @@ void mfish_afish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
|
||||
|
||||
void mfish_aroana_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
|
||||
void mfish_aroana_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor);
|
||||
void mfish_aroana_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor);
|
||||
void mfish_aroana_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex);
|
||||
void mfish_aroana_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* actor);
|
||||
void mfish_aroana_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
|
||||
void mfish_aroana_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor);
|
||||
@@ -370,7 +370,7 @@ void mfish_dojou_normal();
|
||||
void mfish_dojou_turn_init();
|
||||
void mfish_dojou_turn();
|
||||
void mfish_dojou_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
|
||||
void mfish_dojou_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f,
|
||||
BOOL mfish_dojou_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_dojou_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
|
||||
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
|
||||
void mfish_afish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
GAME_PLAY* game = (GAME_PLAY*)gamex;
|
||||
// NOT BAD
|
||||
mfish_onefish_ct(actor, gamex);
|
||||
mfish_base_ct(actor, gamex);
|
||||
actor->_5EC = 0.0f;
|
||||
actor->_5E8 = actor->init_data._10;
|
||||
actor->_34 = mfish_afish_normal_process;
|
||||
actor->_624 = 0;
|
||||
}
|
||||
|
||||
void mfish_afish_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
|
||||
@@ -223,13 +227,18 @@ 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;
|
||||
mfish_onefish_mv(actor, gamex);
|
||||
mfish_afish_base_mv(actor, gamex);
|
||||
Museum_Fish_BGCheck(actor, gamex);
|
||||
if (actor->_640 > 0) {
|
||||
actor->_640--;
|
||||
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, actor->_5E8 * 2.0f + 0.5f, 0.2f, 0.1f);
|
||||
}
|
||||
}
|
||||
|
||||
void mfish_afish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
// NOT BAD
|
||||
GAME_PLAY* game = (GAME_PLAY*)gamex;
|
||||
return;
|
||||
mfish_onefish_dw(actor, gamex);
|
||||
}
|
||||
|
||||
@@ -1,16 +1,18 @@
|
||||
|
||||
void mfish_aroana_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
// NOT BAD
|
||||
GAME_PLAY* game = (GAME_PLAY*)gamex;
|
||||
return;
|
||||
mfish_onefish_ct(actor, gamex);
|
||||
mfish_base_ct(actor, gamex);
|
||||
actor->_34 = mfish_aroana_normal_process;
|
||||
actor->_624 = 0;
|
||||
}
|
||||
|
||||
void mfish_aroana_dummy_process_init() {
|
||||
// NOT BAD
|
||||
return;
|
||||
void mfish_aroana_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
|
||||
actor->_5F0 = actor->_5E8;
|
||||
actor->_5EC = 0.0f;
|
||||
actor->_34 = mfish_aroana_dummy_process;
|
||||
}
|
||||
|
||||
void mfish_aroana_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor) {
|
||||
void mfish_aroana_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y, CALC_EASE2(0.2f), DEG2SHORT_ANGLE(2.5f),
|
||||
DEG2SHORT_ANGLE(0.25f));
|
||||
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.2f), DEG2SHORT_ANGLE(2.0f), DEG2SHORT_ANGLE(0.25f));
|
||||
@@ -166,9 +168,10 @@ void mfish_aroana_turn_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
|
||||
}
|
||||
}
|
||||
|
||||
void mfish_aroana_long_move_process_init() {
|
||||
// NOT BAD
|
||||
return;
|
||||
void mfish_aroana_long_move_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
|
||||
actor->_5F0 = MAX(actor->_5E8, 0.2f);
|
||||
actor->_5EC = 0.0f;
|
||||
actor->_34 = mfish_aroana_long_move_process;
|
||||
}
|
||||
|
||||
void mfish_aroana_long_move_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
|
||||
@@ -242,9 +245,10 @@ void mfish_aroana_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
}
|
||||
|
||||
void mfish_aroana_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
// NOT BAD
|
||||
GAME_PLAY* game = (GAME_PLAY*)gamex;
|
||||
return;
|
||||
mfish_onefish_mv(actor, gamex);
|
||||
mfish_aroana_base_mv(actor, gamex);
|
||||
Museum_Fish_BGCheck(actor, gamex);
|
||||
actor->_38._00.frame_control.speed = (actor->_5E8 * 2.0f) / (actor->init_data._10 + actor->init_data._14) + 0.5f;
|
||||
}
|
||||
|
||||
BOOL mfish_aroana_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f,
|
||||
|
||||
@@ -583,8 +583,10 @@ void mfish_onefish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
}
|
||||
|
||||
void mfish_ani_base_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_normal_process;
|
||||
actor->_624 = 0;
|
||||
}
|
||||
|
||||
void mfish_ani_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
|
||||
@@ -1,40 +1,209 @@
|
||||
|
||||
void mfish_dojou_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->_60C.x = DEG2SHORT_ANGLE2(RANDOM2_F(actor->init_data._30 * 2.0f));
|
||||
actor->_612.x = actor->_60C.x;
|
||||
actor->_5F4 = 110.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->_624 = 6;
|
||||
actor->_5AC.x = 0.0f;
|
||||
mfish_dojou_normal_init(actor, gamex);
|
||||
}
|
||||
|
||||
void mfish_dojou_normal_init() {
|
||||
// NOT BAD
|
||||
return;
|
||||
void mfish_dojou_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
actor->_5F0 = RANDOM_F(actor->init_data._14) + actor->init_data._10;
|
||||
actor->_34 = mfish_dojou_normal;
|
||||
}
|
||||
|
||||
void mfish_dojou_normal() {
|
||||
return;
|
||||
void mfish_dojou_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
actor->_632 = DEG2SHORT_ANGLE(actor->_5E8 * 30.f);
|
||||
actor->_636 += DEG2SHORT_ANGLE(10);
|
||||
actor->_622 = add_calc_short_angle2(&actor->_60C.y,
|
||||
actor->_612.y + (s16)(actor->_632 * sin_s(actor->_636) * cos_s(actor->_60C.x)),
|
||||
CALC_EASE2(0.3f), DEG2SHORT_ANGLE(3.75f), DEG2SHORT_ANGLE(0.25f));
|
||||
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.25f), DEG2SHORT_ANGLE(2.5f),
|
||||
DEG2SHORT_ANGLE(0.25f));
|
||||
if (actor->_62E & 0x1e) {
|
||||
mfish_dojou_turn_init(actor, gamex);
|
||||
} else if (actor->_62E & 0x20) {
|
||||
add_calc_short_angle2(&actor->_612.y, mfish_get_escape_angle(actor, gamex), CALC_EASE(0.5f),
|
||||
DEG2SHORT_ANGLE(15), DEG2SHORT_ANGLE(0.5f));
|
||||
} else if (actor->_626 < 0) {
|
||||
f32 v = RANDOM_F(1.0f);
|
||||
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);
|
||||
if (RANDOM_F(1.0f) < 0.5f) {
|
||||
actor->_612.y += DEG2SHORT_ANGLE((v - 0.3f) * 90.f);
|
||||
} else {
|
||||
actor->_612.y -= DEG2SHORT_ANGLE((v - 0.3f) * 90.f);
|
||||
}
|
||||
if (ABS(actor->_612.x) > DEG2SHORT_ANGLE(50)) {
|
||||
actor->_612.x = RANDOM2_F(actor->init_data._30 * 2.0f * (v - 0.3f));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void mfish_dojou_turn_init() {
|
||||
// NOT BAD
|
||||
return;
|
||||
void mfish_dojou_turn_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
if ((s16)(actor->_60C.y - actor->_62C) > 0) {
|
||||
actor->_612.y = actor->_62C + DEG2SHORT_ANGLE(115);
|
||||
} else {
|
||||
actor->_612.y = actor->_62C - DEG2SHORT_ANGLE(115);
|
||||
}
|
||||
actor->_5F0 = actor->init_data._14 + actor->init_data._10;
|
||||
actor->_34 = mfish_dojou_turn;
|
||||
}
|
||||
|
||||
void mfish_dojou_turn() {
|
||||
return;
|
||||
void mfish_dojou_turn(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
actor->_632 = DEG2SHORT_ANGLE(actor->_5E8 * 15.0f);
|
||||
actor->_636 += DEG2SHORT_ANGLE(10);
|
||||
actor->_622 = add_calc_short_angle2(
|
||||
&actor->_60C.y, actor->_612.y + (s16)(actor->_632 * sin_s(actor->_636) * cos_s(actor->_60C.x)),
|
||||
CALC_EASE2(0.3f), (s16)(DEG2SHORT_ANGLE(ABS(cos_s(actor->_60C.x)) * 15.0f) >> 1) >> 1, DEG2SHORT_ANGLE(0.25f));
|
||||
|
||||
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.25f),
|
||||
(s16)(DEG2SHORT_ANGLE(ABS(cos_s(actor->_60C.x)) * 10.0f) >> 1) >> 1, DEG2SHORT_ANGLE(0.25f));
|
||||
|
||||
if (ABS(actor->_622) < DEG2SHORT_ANGLE(1)) {
|
||||
mfish_dojou_normal_init(actor, gamex);
|
||||
}
|
||||
}
|
||||
|
||||
void mfish_dojou_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
f32 v;
|
||||
xyz_t p;
|
||||
actor->_34(actor, gamex);
|
||||
actor->_61E = add_calc_short_angle2(&actor->_60C.x,
|
||||
actor->_612.x + (s16)(actor->_632 * sin_s(actor->_636) * sin_s(actor->_60C.x)),
|
||||
CALC_EASE(0.1f), DEG2SHORT_ANGLE(5), DEG2SHORT_ANGLE(0.5f));
|
||||
add_calc_short_angle2(&actor->_618.x, actor->_61E, CALC_EASE(0.1f), DEG2SHORT_ANGLE(5), DEG2SHORT_ANGLE(0.5f));
|
||||
|
||||
GAME_PLAY* game = (GAME_PLAY*)gamex;
|
||||
return;
|
||||
if (actor->_5E8 > actor->_5F0) {
|
||||
add_calc2(&actor->_5E8, actor->_5F0, 0.2f, 0.05f);
|
||||
} else {
|
||||
add_calc2(&actor->_5E8, actor->_5F0, 0.1f, 0.02f);
|
||||
}
|
||||
|
||||
if (actor->_5F0 < 0.0f) {
|
||||
add_calc0(&actor->_5F0, 0.1f, 0.05f);
|
||||
add_calc_short_angle2(&actor->_612.x, 0, CALC_EASE(0.2f), DEG2SHORT_ANGLE(1.5f), DEG2SHORT_ANGLE(0.5f));
|
||||
} else {
|
||||
if (ABS(actor->_60C.x) > DEG2SHORT_ANGLE(50)) {
|
||||
add_calc2(&actor->_5F0, (actor->init_data._14 + actor->init_data._10) * 2.0f, 0.2f, 0.1f);
|
||||
}
|
||||
}
|
||||
|
||||
v = cos_s(actor->_60C.x) * actor->_5E8;
|
||||
actor->_5D0.x = v * sin_s(actor->_60C.y);
|
||||
actor->_5D0.z = v * cos_s(actor->_60C.y);
|
||||
actor->_5D0.y = -actor->_5E8 * sin_s(actor->_60C.x);
|
||||
mfish_get_flow_vec(&p, actor, gamex);
|
||||
actor->_5A0.x += actor->_5D0.x + p.x;
|
||||
actor->_5A0.y += actor->_5D0.y + p.y;
|
||||
actor->_5A0.z += actor->_5D0.z + p.z;
|
||||
mfish_onefish_mv(actor, gamex);
|
||||
if (ABS(actor->_612.x) > DEG2SHORT_ANGLE(15)) {
|
||||
add_calc2(&actor->_38._00.frame_control.speed,
|
||||
(GETREG(TAKREG, 0x1a) * 0.1f + 3.0f) * 0.5f + (GETREG(TAKREG, 0x1b) * 0.1f + 3.0f) * actor->_5E8,
|
||||
0.2f, 0.1f);
|
||||
add_calc2(&actor->_5AC.x, 1.0f, 0.1f, 0.02f);
|
||||
} else {
|
||||
add_calc2(&actor->_38._00.frame_control.speed, actor->_5E8 * 1.5f + 0.5f, 0.2f, 0.1f);
|
||||
add_calc0(&actor->_5AC.x, 0.1f, 0.02f);
|
||||
}
|
||||
actor->_5B8 = actor->_5A0;
|
||||
Museum_Fish_BGCheck(actor, gamex);
|
||||
if (actor->_5A0.y < actor->init_data._08 + 50.f) {
|
||||
actor->_5A0.y = actor->init_data._08 + 50.f;
|
||||
if (actor->_612.x > 0) {
|
||||
if ((RANDOM_F(1.0f) < 0.5f && actor->_63E < 0) || actor->_63E > 0) {
|
||||
actor->_612.x = DEG2SHORT_ANGLE(-80);
|
||||
actor->_5F4 = 110.0f;
|
||||
if (actor->_63E <= 0) {
|
||||
actor->_63E = 1;
|
||||
} else {
|
||||
actor->_63E--;
|
||||
}
|
||||
} else {
|
||||
if (actor->_63E == 0) {
|
||||
actor->_63E--;
|
||||
}
|
||||
actor->_612.x = DEG2SHORT_ANGLE(-10);
|
||||
actor->_5F4 = 75.0f;
|
||||
}
|
||||
}
|
||||
} else if (actor->_5A0.y > actor->_5F4 - actor->init_data._08) {
|
||||
actor->_5A0.y = actor->_5F4 - actor->init_data._08;
|
||||
if (actor->_5F4 > 100.0f) {
|
||||
actor->_612.x = DEG2SHORT_ANGLE(80);
|
||||
mfish_hamon_make(actor, gamex);
|
||||
} else {
|
||||
actor->_612.x = DEG2SHORT_ANGLE(10);
|
||||
}
|
||||
} else {
|
||||
if (actor->_63E > 0) {
|
||||
if (actor->_612.x > 0) {
|
||||
add_calc_short_angle2(&actor->_612.x, DEG2SHORT_ANGLE(75), CALC_EASE(0.25f), DEG2SHORT_ANGLE(0.25f),
|
||||
DEG2SHORT_ANGLE(0.0f));
|
||||
} else {
|
||||
add_calc_short_angle2(&actor->_612.x, DEG2SHORT_ANGLE(-75), CALC_EASE(0.25f), DEG2SHORT_ANGLE(0.25f),
|
||||
DEG2SHORT_ANGLE(0.0f));
|
||||
}
|
||||
}
|
||||
actor->_626--;
|
||||
}
|
||||
actor->_612.x = MAX((s16)-actor->init_data._30, MIN(actor->init_data._30, actor->_612.x));
|
||||
}
|
||||
|
||||
void mfish_dojou_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f,
|
||||
BOOL mfish_dojou_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 i = joint1->x + actor->_618.z;
|
||||
joint1->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-45), DEG2SHORT_ANGLE(40));
|
||||
i = joint1->y + actor->_618.z;
|
||||
joint1->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-40), DEG2SHORT_ANGLE(40));
|
||||
} else if (joint_num == 2) {
|
||||
int i = (s16)(joint1->z - actor->_618.x);
|
||||
f32 z;
|
||||
f32 t;
|
||||
joint1->z = MY_CLAMP(i, DEG2SHORT_ANGLE(-40), DEG2SHORT_ANGLE(40));
|
||||
z = actor->_618.z;
|
||||
t = joint1->y * ((GETREG(TAKREG, 0x19) * 0.1f + 0.8f) * actor->_5AC.x + 1.0f);
|
||||
i = (int)t - (int)z;
|
||||
|
||||
joint1->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-80), DEG2SHORT_ANGLE(80));
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void mfish_dojou_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
|
||||
|
||||
GAME_PLAY* game = (GAME_PLAY*)gamex;
|
||||
return;
|
||||
YET_SKELETON* skele = &actor->_38;
|
||||
Mtx* mtxp;
|
||||
s16 s;
|
||||
if (gamex->frame_counter & 1) {
|
||||
mtxp = &skele->_70;
|
||||
} else {
|
||||
mtxp = &skele->_2b0;
|
||||
}
|
||||
s = actor->_60C.x;
|
||||
OPEN_DISP(gamex->graph);
|
||||
Matrix_translate(actor->_5A0.x, actor->_5A0.y, actor->_5A0.z, 0);
|
||||
Matrix_RotateY(actor->_60C.y, 1);
|
||||
Matrix_translate(0.0f, 0.0f, actor->init_data._24 * (0.5f * cos_s(s) + ABS(cos_s(s))), 1);
|
||||
Matrix_RotateY(s, 1);
|
||||
Matrix_translate(0.0f, 0.0f, -actor->init_data._24 * 0.5f * cos_s(s), 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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user