match hasu

This commit is contained in:
roeming
2024-12-19 21:38:30 -05:00
parent 8c72d85c72
commit a7326c31f4
4 changed files with 238 additions and 40 deletions
+42 -15
View File
@@ -59,23 +59,36 @@ typedef struct _YET_SKELETON {
artificial_padding(0x4F0, 0x514, s_xyz);
s_xyz _514;
artificial_padding(0x514, 0x538, s_xyz);
artificial_padding(0x514, 0x526, s_xyz);
s_xyz _526;
artificial_padding(0x526, 0x538, s_xyz);
s_xyz _538;
// unused 2 byte padding here
xyz_t _540;
cKF_Skeleton_R_c* _54C;
cKF_Animation_R_c* _550;
void* _554;
cKF_Animation_R_c* _550[2];
} YET_SKELETON; // size 558
typedef struct _YET_SKELETON_2 {
YET_SKELETON _00;
f32 _558;
f32 _55C;
f32 _560;
f32 _564;
s16 _568;
s16 _56A;
s16 _56C;
} YET_SKELETON_2;
typedef struct _FISH_PRIVATE_DATA {
MUSEUM_FISH_INIT_DATA init_data;
PRIV_FISH_PROCESS _34; // size:4
YET_SKELETON _38;
void* _590;
YET_SKELETON_2* _590;
struct _FISH_PRIVATE_DATA* _594;
struct _FISH_PRIVATE_DATA* _598;
s32 _59C; // fish num
xyz_t _5A0;
xyz_t _5AC;
@@ -133,9 +146,9 @@ typedef struct _MUSEUM_FISH_ACTOR {
int _174;
MUSEUM_FISH_PRIVATE_DATA prvFish[40]; // offset: 0x178 size: 0xFB48
MUSEUM_FISH_KUSA_DATA prvKusa[14]; // offset: 0xFCB8 size: 0x4AD0
void* _14788; // offset: 0x14788 size: 4
YET_SKELETON_2 _14788; // offset: 0x14788 size: 0x570
artificial_padding(0x14788, 0x14d08, void*);
u8 _14cf8[16]; // temp
xyz_t _14d08[2];
int numFishDisplayed; // offset: 0x14d20, size: 4
@@ -309,6 +322,7 @@ 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,
void* arg, s_xyz* joint1, xyz_t* trans);
void mfish_tai_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_small_fish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_sfish_normal_init();
void mfish_sfish_normal();
@@ -318,6 +332,7 @@ void mfish_small_fish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_sfish_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_small_fish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_gupi_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_gupi_normal_init();
void mfish_gupi_normal();
@@ -327,6 +342,7 @@ void mfish_gupi_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_gupi_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_gupi_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_medaka_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_medaka_normal_init();
void mfish_medaka_normal();
@@ -336,6 +352,7 @@ void mfish_medaka_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_medaka_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_medaka_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_kingyo_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_kingyo_normal_init();
void mfish_kingyo_normal();
@@ -347,6 +364,7 @@ void mfish_kingyo_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_kingyo_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_kingyo_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_dojou_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_dojou_normal_init();
void mfish_dojou_normal();
@@ -356,21 +374,25 @@ 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,
void* arg, s_xyz* joint1, xyz_t* trans);
void mfish_dojou_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_donko_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_donko_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
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);
void mfish_donko_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_big_fish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_big_fish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_bfish_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_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,
void* arg, s_xyz* joint1, xyz_t* trans);
void mfish_ito_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_unagi_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_unagi_get_next_rail_type();
void mfish_unagi_aim_wind_angle_calc();
@@ -386,6 +408,7 @@ void mfish_unagi_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_unagi_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_unagi_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_namazu_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_namazu_body_wind_anime_play();
void mfish_namazu_normal_process_init();
@@ -401,6 +424,7 @@ 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,
void* arg, s_xyz* joint1, xyz_t* trans);
void mfish_namazu_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_zarigani_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_zarigani_normal_process_init();
void mfish_zarigani_normal_process();
@@ -414,6 +438,7 @@ void mfish_zarigani_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_zarigani_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_zarigani_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_kurage_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_kurage_normal_init();
void mfish_kurage_normal();
@@ -421,15 +446,17 @@ void mfish_kurage_turn_init();
void mfish_kurage_turn();
void mfish_kurage_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_kurage_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_hasu_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_hasu_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_hasu_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_kaeru_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_kaeru_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void hasu_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, void* arg,
void mfish_hasu_ct(YET_SKELETON_2* actor, GAME* game);
void mfish_hasu_mv();
void mfish_hasu_dw();
void mfish_kaeru_ct();
void mfish_kaeru_mv();
BOOL hasu_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 hasu_after_disp();
void mfish_kaeru_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
BOOL hasu_after_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_kaeru_dw();
#ifdef __cplusplus
}
+2 -2
View File
@@ -717,7 +717,7 @@ void Museum_Fish_Actor_ct(ACTOR* actorx, GAME* gamex) {
if (mMmd_FishInfo(0x21)) {
actor->prvFish[0x21]._590 = &actor->_14788;
} else {
mfish_hasu_ct((MUSEUM_FISH_PRIVATE_DATA*)&actor->_14788, gamex);
mfish_hasu_ct(&actor->_14788, gamex);
}
prv = actor->prvFish;
@@ -725,7 +725,7 @@ void Museum_Fish_Actor_ct(ACTOR* actorx, GAME* gamex) {
prv->_62E &= ~1;
if (mMmd_FishInfo(i)) {
prv->_38._54C = mfish_model_tbl[i];
prv->_38._550 = mfish_anime_init_tbl[i];
prv->_38._550[0] = mfish_anime_init_tbl[i];
prv->_62E |= 1;
Museum_Fish_Prv_data_init(prv, gamex, i, 1);
}
+2 -2
View File
@@ -504,8 +504,8 @@ void mfish_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
void mfish_onefish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
GAME_PLAY* game = (GAME_PLAY*)gamex;
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);
cKF_SkeletonInfo_R_ct(&s->_00, s->_54C, s->_550[0], &s->_4F0, &s->_514);
cKF_SkeletonInfo_R_init_standard_repeat_speedsetandmorph(&s->_00, s->_550[0], 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);
+192 -21
View File
@@ -1,44 +1,215 @@
// Pretty sure all the floats in this file are correct
void mfish_hasu_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
extern cKF_Skeleton_R_c cKF_bs_r_obj_museum5_hasu;
extern cKF_Animation_R_c cKF_ba_r_obj_museum5_hasu;
GAME_PLAY* game = (GAME_PLAY*)gamex;
return;
void mfish_hasu_ct(YET_SKELETON_2* actor, GAME* gamex) {
cKF_SkeletonInfo_R_ct(&actor->_00._00, &cKF_bs_r_obj_museum5_hasu, &cKF_ba_r_obj_museum5_hasu, &actor->_00._4F0,
&actor->_00._526);
cKF_SkeletonInfo_R_init_standard_repeat_speedsetandmorph(&actor->_00._00, &cKF_ba_r_obj_museum5_hasu, NULL, 1.75,
0.0);
}
void mfish_hasu_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
GAME_PLAY* game = (GAME_PLAY*)gamex;
return;
void mfish_hasu_mv(YET_SKELETON* actor, GAME* gamex) {
cKF_SkeletonInfo_R_play(&actor->_00);
}
void mfish_hasu_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
GAME_PLAY* game = (GAME_PLAY*)gamex;
return;
void mfish_hasu_dw(YET_SKELETON* actor, GAME* gamex) {
Mtx* mtxp;
if (gamex->frame_counter & 1) {
mtxp = &actor->_70;
} else {
mtxp = &actor->_2b0;
}
OPEN_DISP(gamex->graph);
Matrix_translate(hasu_pos.x + GETREG(TAKREG, 0x42) * 0.1f, hasu_pos.y, hasu_pos.z + GETREG(TAKREG, 0x43) * 0.1f, 0);
Matrix_RotateY(DEG2SHORT_ANGLE(-180), 1);
Matrix_scale(0.01f, 0.01f, 0.01f, 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, &actor->_00, mtxp, NULL, NULL, NULL);
CLOSE_DISP(gamex->graph);
}
extern cKF_Animation_R_c cKF_ba_r_act_mus_kaeru_a1_big;
void mfish_kaeru_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
GAME_PLAY* game = (GAME_PLAY*)gamex;
return;
//! TODO: grabbed keyframe from ghidra, probably a cast to a larger struct
YET_SKELETON* skele = &actor->_38;
YET_SKELETON_2* keyframe = actor->_590;
skele->_550[1] = &cKF_ba_r_act_mus_kaeru_a1_big;
cKF_SkeletonInfo_R_ct(&skele->_00, skele->_54C, skele->_550[0], &skele->_4F0, &skele->_514);
cKF_SkeletonInfo_R_init_standard_repeat_speedsetandmorph(&skele->_00, skele->_550[0], NULL, 1.75f, 0.0f);
cKF_SkeletonInfo_R_ct(&keyframe->_00._00, &cKF_bs_r_obj_museum5_hasu, &cKF_ba_r_obj_museum5_hasu,
&keyframe->_00._4F0, &keyframe->_00._526);
cKF_SkeletonInfo_R_init_standard_repeat_speedsetandmorph(&keyframe->_00._00, &cKF_ba_r_obj_museum5_hasu, NULL,
1.75f, 0.0f);
actor->_5A0.x = 453.9f;
actor->_5A0.y = 116.0f;
actor->_5A0.z = 250.4f;
actor->_5AC = ZeroVec;
actor->_626 = 0;
actor->_612.x = 0;
actor->_612.y = 0;
actor->_612.z = 0;
actor->_60C = ZeroSVec;
actor->_5AC.x = -1.5f;
actor->_5AC.z = -2.0f;
actor->_60C.y = DEG2SHORT_ANGLE(135);
actor->_60C.y = DEG2SHORT_ANGLE(135);
actor->_640 = 0;
actor->_63E = RANDOM_F(8.0f) + 1.0f;
actor->_624 = 4;
}
void mfish_kaeru_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
GAME_PLAY* game = (GAME_PLAY*)gamex;
return;
YET_SKELETON* skele1 = &actor->_38;
YET_SKELETON_2* skele2 = actor->_590;
cKF_SkeletonInfo_R_play(&skele1->_00);
cKF_SkeletonInfo_R_play(&skele2->_00._00);
skele2->_568 += DEG2SHORT_ANGLE(GETREG(TAKREG, 0xb) + 5.0f);
skele2->_56A += DEG2SHORT_ANGLE(GETREG(TAKREG, 0xb) + 5.0f);
skele2->_56C += DEG2SHORT_ANGLE(GETREG(TAKREG, 0xb) + 5.0f);
add_calc0(&skele2->_55C, 0.2f, GETREG(TAKREG, 0xc) * 0.1f + 0.5f);
add_calc0(&skele2->_560, 0.2f, GETREG(TAKREG, 0xc) * 0.1f + 0.5f);
add_calc0(&skele2->_564, 0.2f, GETREG(TAKREG, 0xc) * 0.1f + 0.5f);
// some other macro?
if ((float)__fabs(skele1->_00.frame_control.current_frame - skele1->_00.frame_control.start_frame) < 0.008f) {
actor->_63E--;
if (actor->_63E <= 0) {
if (actor->_640 == 1) {
actor->_640 = 0;
} else {
actor->_640 = 1;
}
actor->_63E = RANDOM_F(8.0f) + 1.0f;
cKF_SkeletonInfo_R_init_standard_repeat_morph(&skele1->_00, skele1->_550[actor->_640], NULL, 0.f);
}
if (actor->_640 == 1) {
sAdo_OngenTrgStart(0x77, &actor->_5A0);
actor->_612.x = 1;
}
}
if (actor->_612.x > 0) {
actor->_612.x++;
if (actor->_612.x == GETREG(TAKREG, 0x31) + 0xf || actor->_612.x == (GETREG(TAKREG, 0x32) + 0x19)) {
s16 v = GETREG(TAKREG, 0x4d) + 0x3c;
xyz_t v1 = hasu_pos;
v1.x += (-32.6f + GETREG(TAKREG, 0x49) * 0.1f);
v1.y += 116.f;
v1.z += (-26.6f + GETREG(TAKREG, 0x4a) * 0.1f);
if (actor->_612.x == GETREG(TAKREG, 0x31) + 0xf) {
skele2->_564 = GETREG(TAKREG, 10) + 30.0f;
skele2->_56C = DEG2SHORT_ANGLE(-180);
if (RANDOM_F(1.0f) < GETREG(TAKREG, 0x2b) * 0.01f + 0.6f) {
actor->_612.z = 1;
}
} else {
actor->_612.x = 0;
}
v1.x += -1.0f;
v1.y += -1.0f;
v1.z += -4.0f;
Common_Get(clip.effect_clip)->effect_make_proc(0x45, v1, 2, DEG2SHORT_ANGLE(0), gamex, -1, 6, v);
}
}
if (actor->_612.y > 0) {
actor->_612.y++;
if (actor->_612.y == GETREG(TAKREG, 0x33) + 0xd || actor->_612.y == GETREG(TAKREG, 0x34) + 0x17) {
xyz_t v1 = hasu_pos;
s16 v = GETREG(TAKREG, 0x4c) + 0x23;
v1.x += (-2.3f + GETREG(TAKREG, 0x47) * 0.1f);
v1.y += 116.f;
v1.z += (-13.7f + GETREG(TAKREG, 0x48) * 0.1f);
if (actor->_612.y == GETREG(TAKREG, 0x33) + 0xd) {
skele2->_560 = GETREG(TAKREG, 10) + 30.0f;
skele2->_56A = DEG2SHORT_ANGLE(-180);
} else {
actor->_612.y = 0;
}
v1.x += -1.f;
v1.y += -1.f;
v1.z += -4.f;
Common_Get(clip.effect_clip)->effect_make_proc(0x45, v1, 2, DEG2SHORT_ANGLE(0), gamex, -1, 6, v);
}
}
if (actor->_612.z > 0) {
actor->_612.z++;
if (actor->_612.z == GETREG(TAKREG, 0x35) + 0x17 || actor->_612.z == GETREG(TAKREG, 0x36) + 0x21) {
xyz_t v1 = hasu_pos;
s16 v = GETREG(TAKREG, 0x4b) + 10;
v1.x += (-7.7f + GETREG(TAKREG, 0x45) * 0.1f);
v1.y += 116.0f;
v1.z += (-32.3f + GETREG(TAKREG, 0x46) * 0.1f);
if (actor->_612.z == GETREG(TAKREG, 0x35) + 0x17) {
skele2->_55C = GETREG(TAKREG, 10) + 30.0f;
skele2->_568 = DEG2SHORT_ANGLE(-180);
if (RANDOM_F(1.0f) < GETREG(TAKREG, 0x2c) * 0.01f + 0.6f) {
actor->_612.y = 1;
}
} else {
actor->_612.z = 0;
}
v1.x += -1.0f;
v1.y += -1.0f;
v1.z += -4.0f;
Common_Get(clip.effect_clip)->effect_make_proc(0x45, v1, 2, DEG2SHORT_ANGLE(0), gamex, -1, 6, v);
}
}
}
void hasu_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, void* arg,
BOOL hasu_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;
YET_SKELETON_2* v2 = actor->_590;
if (joint_num == 7) {
trans->z += v2->_55C * sin_s(v2->_568);
} else if (joint_num == 4) {
trans->z += v2->_560 * sin_s(v2->_56A);
} else if (joint_num == 9) {
trans->z += v2->_564 * sin_s(v2->_56C);
}
return TRUE;
}
void hasu_after_disp() {
return;
BOOL hasu_after_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) {
MUSEUM_FISH_PRIVATE_DATA* actor = (MUSEUM_FISH_PRIVATE_DATA*)arg;
YET_SKELETON_2* skele = actor->_590;
if (joint_num == 9) {
Matrix_Position_Zero(&actor->_5A0);
actor->_5A0.y = skele->_564 * actor->init_data._00 * sin_s(skele->_56C) + 116.0f;
}
return TRUE;
}
void mfish_kaeru_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
YET_SKELETON* skele = &actor->_38;
YET_SKELETON_2* keyframe = actor->_590;
Mtx *mtxp, *mtxp2;
if (gamex->frame_counter & 1) {
mtxp = &skele->_70;
mtxp2 = &keyframe->_00._70;
} else {
mtxp = &skele->_2b0;
mtxp2 = &keyframe->_00._2b0;
}
GAME_PLAY* game = (GAME_PLAY*)gamex;
return;
OPEN_DISP(gamex->graph);
Matrix_translate(hasu_pos.x + GETREG(TAKREG, 0x42) * 0.1f, hasu_pos.y, hasu_pos.z + GETREG(TAKREG, 0x43) * 0.1f, 0);
Matrix_RotateY(DEG2SHORT_ANGLE(-180), 1);
Matrix_scale(0.01f, 0.01f, 0.01f, 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, &keyframe->_00._00, mtxp2, hasu_before_disp, hasu_after_disp, actor);
Matrix_translate(actor->_5A0.x + actor->_5AC.x, actor->_5A0.y, actor->_5A0.z + actor->_5AC.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, NULL, NULL, actor);
CLOSE_DISP(gamex->graph);
}