Cleanup ac_museum_fish some

This commit is contained in:
Cuyler36
2025-05-03 11:20:35 -04:00
parent 855589902b
commit e618d4dd97
23 changed files with 632 additions and 577 deletions
+60 -60
View File
@@ -14,6 +14,16 @@
extern "C" {
#endif
enum {
mfish_TANK_0,
mfish_TANK_1,
mfish_TANK_2,
mfish_TANK_3,
mfish_TANK_4,
mfish_TANK_NUM
};
// found useful macros
#define MY_MAX(a, b) (((a) >= (b)) ? (a) : (b))
#define MY_CLAMP(v, l, h) MIN(MY_MAX((l), (v)), (h))
@@ -40,7 +50,7 @@ typedef void (*PRIV_FISH_PROCESS)(struct _FISH_PRIVATE_DATA*, GAME*);
// struct decls
typedef struct _MUSEUM_FISH_INIT_DATA {
f32 renderScale;
f32 _04;
f32 ofs_y;
f32 _08;
f32 _0C;
f32 _10;
@@ -48,65 +58,55 @@ typedef struct _MUSEUM_FISH_INIT_DATA {
f32 _18;
f32 _1C;
f32 _20;
f32 _24;
f32 ofs_z;
f32 _28;
s16 activeFramesMin;
s16 activeFramesRange;
s16 _30;
} MUSEUM_FISH_INIT_DATA; // size: 0x34
typedef struct _YET_SKELETON {
cKF_SkeletonInfo_R_c _00; // offset 0, size 0x70
Mtx _70; // offset 70, size
artificial_padding(0x70, 0x2b0, Mtx);
Mtx _2b0;
artificial_padding(0x2b0, 0x46C, Mtx);
void* _46C;
artificial_padding(0x46C, 0x4F0, void*);
s_xyz _4F0;
artificial_padding(0x4F0, 0x514, s_xyz);
s_xyz _514;
artificial_padding(0x514, 0x526, s_xyz);
s_xyz _526;
artificial_padding(0x526, 0x538, s_xyz);
typedef struct fish_keyframe_s {
cKF_SkeletonInfo_R_c keyframe; // offset 0, size 0x70
Mtx mtx[2][9];
s_xyz work[6];
s_xyz morph[6];
s_xyz _538;
// unused 2 byte padding here
xyz_t _540;
cKF_Skeleton_R_c* _54C;
cKF_Animation_R_c* _550[2];
} YET_SKELETON; // size 558
} mfish_keyframe_c; // 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 hasu_s {
/* 0x000 */ cKF_SkeletonInfo_R_c keyframe; // offset 0, size 0x70
/* 0x070 */ Mtx mtx[2][9];
/* 0x4F0 */ s_xyz work[9];
/* 0x526 */ s_xyz morph[9];
/* 0x55C */ f32 _55C;
/* 0x560 */ f32 _560;
/* 0x564 */ f32 _564;
/* 0x568 */ s16 _568;
/* 0x56A */ s16 _56A;
/* 0x56C */ s16 _56C;
// 2 bytes pad
} mfish_hasu_c;
typedef enum fish_type MUSEUM_FISH_TYPE;
typedef struct _FISH_PRIVATE_DATA MUSEUM_FISH_PRIVATE_DATA;
typedef struct _FISH_PRIVATE_DATA {
struct _FISH_PRIVATE_DATA {
MUSEUM_FISH_INIT_DATA init_data;
PRIV_FISH_PROCESS currentProcess; // size:4
YET_SKELETON _38;
mfish_keyframe_c kf;
YET_SKELETON_2* _590;
struct _FISH_PRIVATE_DATA* _594;
struct _FISH_PRIVATE_DATA* _598;
mfish_hasu_c* hasu_p; // lilypad
MUSEUM_FISH_PRIVATE_DATA* _594;
MUSEUM_FISH_PRIVATE_DATA* _598;
MUSEUM_FISH_TYPE fishIDEnum;
MUSEUM_FISH_TYPE fish_idx;
xyz_t position;
xyz_t _5AC;
xyz_t _5B8;
xyz_t objchk_pos;
artificial_padding(0x5B8, 0x5D0, xyz_t);
xyz_t _5D0;
xyz_t _5DC;
@@ -128,12 +128,12 @@ typedef struct _FISH_PRIVATE_DATA {
s16 _624;
s16 activityFrameCount;
s16 savedActivityFrameCount;
s16 _62A;
s16 escape_angle;
s16 _62C;
s16 _62E_flags;
s16 group;
s16 tank;
s16 _632;
s16 _634;
s16 hide_camera_angle;
s16 _636;
s16 _638;
s16 _63A;
@@ -143,10 +143,10 @@ typedef struct _FISH_PRIVATE_DATA {
s16 _642;
s16 _644;
s16 _646;
} MUSEUM_FISH_PRIVATE_DATA; // size 648
}; // size 648
// Holds data for the underwater grass
typedef YET_SKELETON MUSEUM_FISH_KUSA_DATA;
typedef mfish_keyframe_c MUSEUM_FISH_KUSA_DATA;
typedef struct _FISH_DISPLAY_MSG_INFO {
s16 fishName;
@@ -158,7 +158,7 @@ typedef struct _MUSEUM_FISH_ACTOR {
int _174;
MUSEUM_FISH_PRIVATE_DATA prvFish[aGYO_TYPE_NUM]; // offset: 0x178 size: 0xFB48
MUSEUM_FISH_KUSA_DATA prvKusa[14]; // offset: 0xFCB8 size: 0x4AD0
YET_SKELETON_2 _14788; // offset: 0x14788 size: 0x570
mfish_hasu_c _14788; // offset: 0x14788 size: 0x570
u8 _14cf8[16]; // temp
@@ -172,8 +172,8 @@ typedef struct _MUSEUM_FISH_ACTOR {
artificial_padding(0x14d78, 0x14daa, s16[20]);
s16 _14daa[5];
s16 _14db4;
s16 _14db6; // offset: 0x14db6, size: 2
s16 player_area;
s16 player_area_update_timer; // offset: 0x14db6, size: 2
s16 lightID1; // offset: 0x14db8, size: 2
s16 lightID2; // offset: 0x14dba, size: 2
s16 lightPower[2]; // offset: 0x14dbc, size: 4
@@ -192,13 +192,13 @@ extern xyz_t kusa_pos[14];
extern xyz_t hasu_pos;
extern xyz_t suisou_awa_pos[20];
extern s16 suisou_awa_group[20];
extern cKF_Skeleton_R_c* mfish_model_tbl[40];
extern cKF_Animation_R_c* mfish_anime_init_tbl[40];
extern MUSEUM_FISH_INIT_DATA mfish_init_data[40];
extern s16 mfish_group_tbl[40];
extern PRIV_FISH_CONSTRUCTOR mfish_ct[40];
extern PRIV_FISH_MOVE mfish_mv[40];
extern PRIV_FISH_DRAW mfish_dw[40];
extern cKF_Skeleton_R_c* mfish_model_tbl[aGYO_TYPE_NUM];
extern cKF_Animation_R_c* mfish_anime_init_tbl[aGYO_TYPE_NUM];
extern MUSEUM_FISH_INIT_DATA mfish_init_data[aGYO_TYPE_NUM];
extern s16 mfish_group_tbl[aGYO_TYPE_NUM];
extern PRIV_FISH_CONSTRUCTOR mfish_ct[aGYO_TYPE_NUM];
extern PRIV_FISH_MOVE mfish_mv[aGYO_TYPE_NUM];
extern PRIV_FISH_DRAW mfish_dw[aGYO_TYPE_NUM];
extern float kusa_start_frame[14];
// functions
@@ -207,11 +207,11 @@ extern float kusa_start_frame[14];
void Museum_Fish_Prv_data_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game, int fishNum, int r6);
void Museum_Fish_Actor_ct(ACTOR* actor, GAME* game);
void Museum_Fish_Actor_dt(ACTOR* actor, GAME* game);
int Museum_Fish_GetMsgNo(ACTOR* actor);
// int Museum_Fish_GetMsgNo(ACTOR* actor);
BOOL Museum_Fish_Check_Talk_Distance(GAME* gamex, int index);
void Museum_Fish_Set_MsgFishInfo(ACTOR* actor, int param2);
// void Museum_Fish_Set_MsgFishInfo(ACTOR* actor, int param2);
void Museum_Fish_set_talk_info(ACTOR* actor);
void Museum_Fish_Talk_process(ACTOR* actor, GAME* game);
// void Museum_Fish_Talk_process(ACTOR* actor, GAME* game);
void Museum_Fish_Actor_move(ACTOR* actor, GAME* game);
void Museum_Fish_Suisou_draw(ACTOR* actor, GAME* game, int r5);
BOOL kusa_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, u8* joint_flags,
@@ -503,9 +503,9 @@ void mfish_kurage_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
void mfish_kurage_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game);
// ac_museum_fish_hasu.c_inc
void mfish_hasu_ct(YET_SKELETON_2* actor, GAME* game);
void mfish_hasu_mv(YET_SKELETON_2* actor, GAME* game);
void mfish_hasu_dw(YET_SKELETON_2* actor, GAME* game);
void mfish_hasu_ct(mfish_hasu_c* actor, GAME* game);
void mfish_hasu_mv(mfish_hasu_c* actor, GAME* game);
void mfish_hasu_dw(mfish_hasu_c* actor, GAME* game);
void mfish_kaeru_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex);
void mfish_kaeru_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex);
BOOL hasu_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, u8* joint_flags,
+135 -112
View File
@@ -120,7 +120,22 @@ static xyz_t suisou_pos[5] = {
{ 320.0f, 40.0f, 20.0f }
};
int kusa_group_tbl[14] = { 0, 2, 1, 3, 3, 4, 4, 4, 4, 4, 0, 2, 1, 3 };
int kusa_group_tbl[14] = {
mfish_TANK_0,
mfish_TANK_2,
mfish_TANK_1,
mfish_TANK_3,
mfish_TANK_3,
mfish_TANK_4,
mfish_TANK_4,
mfish_TANK_4,
mfish_TANK_4,
mfish_TANK_4,
mfish_TANK_0,
mfish_TANK_2,
mfish_TANK_1,
mfish_TANK_3,
};
xyz_t kusa_pos[14] = {
{ 179.0f, 40.0f, 170.0f },
@@ -165,13 +180,29 @@ xyz_t suisou_awa_pos[20] = {
};
s16 suisou_awa_group[20] = {
4, 4, 4, 4, 4,
4, 4, 4, 0, 0,
0, 1, 1, 1, 2,
2, 2, 3, 3, 3
mfish_TANK_4,
mfish_TANK_4,
mfish_TANK_4,
mfish_TANK_4,
mfish_TANK_4,
mfish_TANK_4,
mfish_TANK_4,
mfish_TANK_4,
mfish_TANK_0,
mfish_TANK_0,
mfish_TANK_0,
mfish_TANK_1,
mfish_TANK_1,
mfish_TANK_1,
mfish_TANK_2,
mfish_TANK_2,
mfish_TANK_2,
mfish_TANK_3,
mfish_TANK_3,
mfish_TANK_3,
};
cKF_Skeleton_R_c* mfish_model_tbl[40] = {
cKF_Skeleton_R_c* mfish_model_tbl[aGYO_TYPE_NUM] = {
/* CRUCIAN_CARP */ &cKF_bs_r_act_mus_funa_a1,
/* BROOK_TROUT */ &cKF_bs_r_act_mus_hera_a1,
/* CARP */ &cKF_bs_r_act_mus_koi_a1,
@@ -214,7 +245,7 @@ cKF_Skeleton_R_c* mfish_model_tbl[40] = {
/* ARAPAIMA */ &cKF_bs_r_act_mus_pira_a1
};
cKF_Animation_R_c* mfish_anime_init_tbl[40] = {
cKF_Animation_R_c* mfish_anime_init_tbl[aGYO_TYPE_NUM] = {
/* CRUCIAN_CARP */ &cKF_ba_r_act_mus_funa_a1,
/* BROOK_TROUT */ &cKF_ba_r_act_mus_hera_a1,
/* CARP */ &cKF_ba_r_act_mus_koi_a1,
@@ -257,7 +288,7 @@ cKF_Animation_R_c* mfish_anime_init_tbl[40] = {
/* ARAPAIMA */ &cKF_ba_r_act_mus_pira_a1
};
MUSEUM_FISH_INIT_DATA mfish_init_data[40] = {
MUSEUM_FISH_INIT_DATA mfish_init_data[aGYO_TYPE_NUM] = {
/* CRUCIAN_CARP */ { 0.0100f, 3.8f, 7.5f, 74.0f, 0.400f, 0.450f, 0.98995f, 0.2f, 0.40f, -3.5f, -6.0f, 120, 120, DEG2SHORT_ANGLE(70) },
/* BROOK_TROUT */ { 0.0100f, 4.6f, 7.0f, 78.0f, 0.400f, 0.600f, 0.98995f, 0.2f, 0.40f, -3.5f, -6.0f, 100, 160, DEG2SHORT_ANGLE(70) },
/* CARP */ { 0.0100f, 6.0f, 10.6f, 80.0f, 0.350f, 0.300f, 0.98995f, 0.2f, 0.60f, -5.0f, -9.0f, 100, 150, DEG2SHORT_ANGLE(90) },
@@ -300,50 +331,50 @@ MUSEUM_FISH_INIT_DATA mfish_init_data[40] = {
/* ARAPAIMA */ { 0.0120f, 9.3f, 31.5f, 75.0f, 0.050f, 0.100f, 0.97468f, 0.2f, 0.90f, -14.0f, -31.0f, 240, 480, DEG2SHORT_ANGLE(90) }
};
s16 mfish_group_tbl[40] = {
/* CRUCIAN_CARP */ 0,
/* BROOK_TROUT */ 0,
/* CARP */ 0,
/* KOI */ 0,
/* CATFISH */ 1,
/* SMALL_BASS */ 1,
/* BASS */ 1,
/* LARGE_BASS */ 1,
/* BLUEGILL */ 1,
/* GIANT_CATFISH */ 1,
/* GIANT_SNAKEHEAD */ 3,
/* BARBEL_STEED */ 0,
/* DACE */ 2,
/* PALE_CHUB */ 2,
/* BITTERLING */ 0,
/* LOACH */ 1,
/* POND_SMELT */ 2,
/* SWEETFISH */ 2,
/* CHERRY_SALMON */ 2,
/* LARGE_CHAR */ 2,
/* RAINBOW_TROUT */ 2,
/* STRINGFISH */ 2,
/* SALMON */ 4,
/* GOLDFISH */ 0,
/* PIRANHA */ 3,
/* AROWANA */ 3,
/* EEL */ 0,
/* FRESHWATER_GOBY */ 1,
/* ANGELFISH */ 3,
/* GUPPY */ 3,
/* POPEYED_GOLDFISH */ 0,
/* COELACANTH */ 4,
/* CRAWFISH */ 2,
/* FROG */ 1,
/* KILLIFISH */ 0,
/* JELLYFISH */ 4,
/* SEA_BASS */ 4,
/* RED_SNAPPER */ 4,
/* BARRED_KNIFEJAW */ 4,
/* ARAPAIMA */ 3
s16 mfish_group_tbl[aGYO_TYPE_NUM] = {
/* CRUCIAN_CARP */ mfish_TANK_0,
/* BROOK_TROUT */ mfish_TANK_0,
/* CARP */ mfish_TANK_0,
/* KOI */ mfish_TANK_0,
/* CATFISH */ mfish_TANK_1,
/* SMALL_BASS */ mfish_TANK_1,
/* BASS */ mfish_TANK_1,
/* LARGE_BASS */ mfish_TANK_1,
/* BLUEGILL */ mfish_TANK_1,
/* GIANT_CATFISH */ mfish_TANK_1,
/* GIANT_SNAKEHEAD */ mfish_TANK_3,
/* BARBEL_STEED */ mfish_TANK_0,
/* DACE */ mfish_TANK_2,
/* PALE_CHUB */ mfish_TANK_2,
/* BITTERLING */ mfish_TANK_0,
/* LOACH */ mfish_TANK_1,
/* POND_SMELT */ mfish_TANK_2,
/* SWEETFISH */ mfish_TANK_2,
/* CHERRY_SALMON */ mfish_TANK_2,
/* LARGE_CHAR */ mfish_TANK_2,
/* RAINBOW_TROUT */ mfish_TANK_2,
/* STRINGFISH */ mfish_TANK_2,
/* SALMON */ mfish_TANK_4,
/* GOLDFISH */ mfish_TANK_0,
/* PIRANHA */ mfish_TANK_3,
/* AROWANA */ mfish_TANK_3,
/* EEL */ mfish_TANK_0,
/* FRESHWATER_GOBY */ mfish_TANK_1,
/* ANGELFISH */ mfish_TANK_3,
/* GUPPY */ mfish_TANK_3,
/* POPEYED_GOLDFISH */ mfish_TANK_0,
/* COELACANTH */ mfish_TANK_4,
/* CRAWFISH */ mfish_TANK_2,
/* FROG */ mfish_TANK_1,
/* KILLIFISH */ mfish_TANK_0,
/* JELLYFISH */ mfish_TANK_4,
/* SEA_BASS */ mfish_TANK_4,
/* RED_SNAPPER */ mfish_TANK_4,
/* BARRED_KNIFEJAW */ mfish_TANK_4,
/* ARAPAIMA */ mfish_TANK_3,
};
PRIV_FISH_CONSTRUCTOR mfish_ct[40] = {
PRIV_FISH_CONSTRUCTOR mfish_ct[aGYO_TYPE_NUM] = {
/* CRUCIAN_CARP */ mfish_afish_ct,
/* BROOK_TROUT */ mfish_afish_ct,
/* CARP */ mfish_koi_ct,
@@ -386,7 +417,7 @@ PRIV_FISH_CONSTRUCTOR mfish_ct[40] = {
/* ARAPAIMA */ mfish_big_fish_ct
};
PRIV_FISH_MOVE mfish_mv[40] = {
PRIV_FISH_MOVE mfish_mv[aGYO_TYPE_NUM] = {
/* CRUCIAN_CARP */ mfish_afish_mv,
/* BROOK_TROUT */ mfish_afish_mv,
/* CARP */ mfish_koi_mv,
@@ -430,7 +461,7 @@ PRIV_FISH_MOVE mfish_mv[40] = {
};
PRIV_FISH_DRAW mfish_dw[40] = {
PRIV_FISH_DRAW mfish_dw[aGYO_TYPE_NUM] = {
/* CRUCIAN_CARP */ mfish_afish_dw,
/* BROOK_TROUT */ mfish_afish_dw,
/* CARP */ mfish_koi_dw,
@@ -478,12 +509,12 @@ PRIV_FISH_DRAW mfish_dw[40] = {
// clang-format on
void Museum_Fish_Prv_data_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game, int fishNum, int r6) {
actor->fishIDEnum = fishNum;
actor->fish_idx = fishNum;
actor->init_data = mfish_init_data[fishNum];
actor->group = mfish_group_tbl[fishNum];
actor->tank = mfish_group_tbl[fishNum];
if (actor->group >= 0) {
actor->position = suisou_pos[actor->group];
if (actor->tank >= 0) {
actor->position = suisou_pos[actor->tank];
} else {
actor->position = ZeroVec;
}
@@ -541,23 +572,23 @@ void Museum_Fish_Actor_ct(ACTOR* actorx, GAME* gamex) {
int i;
MUSEUM_FISH_PRIVATE_DATA* prv;
MF_Control_Actor = actor;
actor->_14db6 = 0x1e;
actor->player_area_update_timer = 0x1e;
mfish_point_light_ct(actorx, gamex);
for (i = 0; i < 14; i++) {
actor->prvKusa[i]._54C = kusa_model[i];
cKF_SkeletonInfo_R_ct(&actor->prvKusa[i]._00, kusa_model[i], kusa_anime[i], &actor->prvKusa[i]._4F0,
&actor->prvKusa[i]._514);
cKF_SkeletonInfo_R_init_standard_repeat_speedsetandmorph(&actor->prvKusa[i]._00, kusa_anime[i], NULL,
kusa_group_tbl[i] == 2 ? 1.5f : 0.5f, 0.0f);
actor->prvKusa[i]._00.frame_control.current_frame = kusa_start_frame[i];
cKF_SkeletonInfo_R_ct(&actor->prvKusa[i].keyframe, kusa_model[i], kusa_anime[i], actor->prvKusa[i].work,
actor->prvKusa[i].morph);
cKF_SkeletonInfo_R_init_standard_repeat_speedsetandmorph(&actor->prvKusa[i].keyframe, kusa_anime[i], NULL,
kusa_group_tbl[i] == mfish_TANK_2 ? 1.5f : 0.5f, 0.0f);
actor->prvKusa[i].keyframe.frame_control.current_frame = kusa_start_frame[i];
actor->prvKusa[i]._538.x = qrand();
actor->prvKusa[i]._538.z = qrand();
}
if (mMmd_FishInfo(aGYO_TYPE_FROG)) {
actor->prvFish[aGYO_TYPE_FROG]._590 = &actor->_14788;
actor->prvFish[aGYO_TYPE_FROG].hasu_p = &actor->_14788;
} else {
mfish_hasu_ct(&actor->_14788, gamex);
}
@@ -566,8 +597,8 @@ void Museum_Fish_Actor_ct(ACTOR* actorx, GAME* gamex) {
for (i = 0; i < aGYO_TYPE_NUM; i++, prv++) {
prv->_62E_flags &= ~1;
if (mMmd_FishInfo(i)) {
prv->_38._54C = mfish_model_tbl[i];
prv->_38._550[0] = mfish_anime_init_tbl[i];
prv->kf._54C = mfish_model_tbl[i];
prv->kf._550[0] = mfish_anime_init_tbl[i];
prv->_62E_flags |= 1;
Museum_Fish_Prv_data_init(prv, gamex, i, 1);
}
@@ -583,8 +614,8 @@ void Museum_Fish_Actor_dt(ACTOR* actor, GAME* game) {
mfish_point_light_dt(actor, game);
}
int Museum_Fish_GetMsgNo(ACTOR* actorx) {
MUSEUM_FISH_ACTOR* actor = (MUSEUM_FISH_ACTOR*)actorx;
int Museum_Fish_GetMsgNo(MUSEUM_FISH_ACTOR* actor) {
// MUSEUM_FISH_ACTOR* actor = (MUSEUM_FISH_ACTOR*)actorx;
static u8 item_name[mIN_ITEM_NAME_LEN];
int itemArticle;
@@ -616,10 +647,9 @@ int Museum_Fish_GetMsgNo(ACTOR* actorx) {
}
BOOL Museum_Fish_Check_Talk_Distance(GAME* gamex, int index) {
GAME_PLAY* game = (GAME_PLAY*)gamex;
s16 subAngle;
xyz_t pos;
PLAYER_ACTOR* actor;
ACTOR* playerx;
// fish tank locations?
static xyz_t kanban_pos[5] = { { 260.0f, 40.0f, 300.0f },
@@ -628,9 +658,9 @@ BOOL Museum_Fish_Check_Talk_Distance(GAME* gamex, int index) {
{ 460.0f, 40.0f, 540.0f },
{ 500.0f, 40.0f, 60.0f } };
actor = get_player_actor_withoutCheck(game);
subAngle = DEG2SHORT_ANGLE(-180) + actor->actor_class.world.angle.y;
xyz_t_sub(&actor->actor_class.world.position, &kanban_pos[index], &pos);
playerx = GET_PLAYER_ACTOR_GAME_ACTOR(gamex);
subAngle = DEG2SHORT_ANGLE(-180) + playerx->world.angle.y;
xyz_t_sub(&playerx->world.position, &kanban_pos[index], &pos);
if (ABS(pos.x) < 20.0f && ABS(pos.z) < 20.0f && ABS(subAngle) < 0x3000) {
return TRUE;
@@ -638,8 +668,8 @@ BOOL Museum_Fish_Check_Talk_Distance(GAME* gamex, int index) {
return FALSE;
}
void Museum_Fish_Set_MsgFishInfo(ACTOR* actorx, int param2) {
MUSEUM_FISH_ACTOR* actor = (MUSEUM_FISH_ACTOR*)actorx;
void Museum_Fish_Set_MsgFishInfo(MUSEUM_FISH_ACTOR* actor, int param2) {
// MUSEUM_FISH_ACTOR* actor = (MUSEUM_FISH_ACTOR*)actorx;
int i;
// defines how many fish are in each grouping of fish names
static int group_max_num[5] = { 10, 9, 9, 6, 6 };
@@ -673,7 +703,7 @@ void Museum_Fish_set_talk_info(ACTOR* actorx) {
static rgba_t window_color = { 255, 255, 0xcd, 255 };
int r3;
if (actor->numFishDisplayed > 0) { // maybe related to if there are fish in the tank
r3 = Museum_Fish_GetMsgNo(actorx);
r3 = Museum_Fish_GetMsgNo(actor);
actor->fishDisplayMsgIter++; // maybe iterating through the fish donation record, given which fish are donated?
} else {
r3 = 0x2fa1;
@@ -687,23 +717,19 @@ void Museum_Fish_set_talk_info(ACTOR* actorx) {
mDemo_Set_use_zoom_sound(TRUE);
}
void Museum_Fish_Talk_process(ACTOR* actorx, GAME* game) {
MUSEUM_FISH_ACTOR* actor = (MUSEUM_FISH_ACTOR*)actorx;
void Museum_Fish_Talk_process(MUSEUM_FISH_ACTOR* actor, GAME* game) {
// MUSEUM_FISH_ACTOR* actor = (MUSEUM_FISH_ACTOR*)actorx;
if (mDemo_Check(8, actorx) != 0) {
GAME_PLAY* _gamePT;
PLAYER_ACTOR* playerActor = get_player_actor_withoutCheck((GAME_PLAY*)game);
s_xyz rotation = playerActor->actor_class.shape_info.rotation;
if (mDemo_Check(mDemo_TYPE_SPEAK, (ACTOR*)actor) != 0) {
s_xyz rotation = GET_PLAYER_ACTOR_GAME_ACTOR(game)->shape_info.rotation;
add_calc_short_angle2(&rotation.y, DEG2SHORT_ANGLE(-180), 0.3f, DEG2SHORT_ANGLE(22.5f), 0);
_gamePT = (GAME_PLAY*)gamePT;
get_player_actor_withoutCheck(_gamePT)->Set_force_position_angle_proc(&_gamePT->game, NULL, &rotation, 32);
GET_PLAYER_ACTOR_NOW()->Set_force_position_angle_proc(gamePT, NULL, &rotation, 32);
if (mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) != 0) {
int choseNum = mChoice_Get_ChoseNum(mChoice_Get_base_window_p());
if (choseNum != -1) {
if (choseNum == 0) {
mMsg_Window_c* windowC;
int msgNum = Museum_Fish_GetMsgNo(actorx);
int msgNum = Museum_Fish_GetMsgNo(actor);
actor->fishDisplayMsgIter += 1;
mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), msgNum);
mMsg_Unset_LockContinue(mMsg_Get_base_window_p());
@@ -717,8 +743,8 @@ void Museum_Fish_Talk_process(ACTOR* actorx, GAME* game) {
int i;
for (i = 0; i < 5; i++) {
if (Museum_Fish_Check_Talk_Distance(game, i)) {
Museum_Fish_Set_MsgFishInfo(actorx, i);
mDemo_Request(8, actorx, &Museum_Fish_set_talk_info);
Museum_Fish_Set_MsgFishInfo(actor, i);
mDemo_Request(mDemo_TYPE_SPEAK, (ACTOR*)actor, &Museum_Fish_set_talk_info);
}
}
}
@@ -728,42 +754,39 @@ void Museum_Fish_Actor_move(ACTOR* actorx, GAME* game) {
int i;
int j;
MUSEUM_FISH_PRIVATE_DATA* prv;
s16 old_14db4;
s16 oldplayer_area;
f32 v;
GAME_PLAY* play = (GAME_PLAY*)game;
MUSEUM_FISH_ACTOR* actor = (MUSEUM_FISH_ACTOR*)actorx;
MUSEUM_FISH_PRIVATE_DATA* prv2;
mfish_point_light_mv(actor, &play->game);
old_14db4 = actor->_14db4;
mfish_get_player_area(actor, &play->game);
mfish_point_light_mv((MUSEUM_FISH_ACTOR*)actorx, game);
oldplayer_area = actor->player_area;
mfish_get_player_area((MUSEUM_FISH_ACTOR*)actorx, game);
if (actor->_14db4 != old_14db4) {
PLAYER_ACTOR* player;
if (actor->player_area != oldplayer_area) {
xyz_t p;
prv = actor->prvFish;
player = get_player_actor_withoutCheck(play);
p = player->actor_class.world.position;
p = GET_PLAYER_ACTOR_GAME_ACTOR(game)->world.position;
if (actor->_14db4 == 3) {
if (actor->player_area == mfish_TANK_3) {
actor->prvFish[aGYO_TYPE_GOLDFISH].activityFrameCount = 0;
actor->prvFish[aGYO_TYPE_POPEYED_GOLDFISH].activityFrameCount = 0;
actor->prvFish[aGYO_TYPE_PIRANHA].activityFrameCount = 0;
} else if (actor->_14db4 == 0) {
} else if (actor->player_area == mfish_TANK_0) {
actor->prvFish[aGYO_TYPE_CARP].activityFrameCount = 20;
actor->prvFish[aGYO_TYPE_KOI].activityFrameCount = 20;
}
for (i = 0; i < aGYO_TYPE_NUM; i++, prv++) {
f32 v = search_position_distanceXZ(&p, &prv->position);
if (actor->_14db4 == prv->group && v < 60.0f) {
if (actor->player_area == prv->tank && v < 60.0f) {
prv->activityFrameCount = RANDOM_F(60);
}
}
}
for (j = 0; j < 14; j++) {
cKF_SkeletonInfo_R_play(&actor->prvKusa[j]._00);
if (kusa_group_tbl[j] == 2) {
cKF_SkeletonInfo_R_play(&actor->prvKusa[j].keyframe);
if (kusa_group_tbl[j] == mfish_TANK_2) {
add_calc2(&actor->prvKusa[j]._540.x, -4.0f, 0.5f, 0.5f);
add_calc_short_angle2(&actor->prvKusa[j]._538.y, DEG2SHORT_ANGLE(3.5f), CALC_EASE2(0.1f), 22, 4);
} else {
@@ -778,13 +801,13 @@ void Museum_Fish_Actor_move(ACTOR* actorx, GAME* game) {
add_calc_short_angle2(&actor->prvKusa[j]._538.y, DEG2SHORT_ANGLE(0), CALC_EASE2(0.1f), 22, 4);
}
Museum_Fish_Kusa_Check(actor, &play->game);
Museum_Fish_Object_Check(actor, &play->game);
Museum_Fish_Kusa_Check((MUSEUM_FISH_ACTOR*)actorx, game);
Museum_Fish_Object_Check((MUSEUM_FISH_ACTOR*)actorx, game);
for (i = 0; i < 20; i++) {
actor->_14d50[i]--;
if (actor->_14d50[i] < 0) {
common_data.clip.effect_clip->effect_make_proc(0x6e, suisou_awa_pos[i], 2, 0, &play->game, -1,
eEC_CLIP->effect_make_proc(eEC_EFFECT_SUISOU_AWA, suisou_awa_pos[i], 2, 0, game, RSV_NO,
suisou_awa_group[i], 0);
if (actor->_14d78[i] > 0) {
actor->_14d78[i]--;
@@ -796,7 +819,7 @@ void Museum_Fish_Actor_move(ACTOR* actorx, GAME* game) {
}
}
Museum_Fish_Talk_process(actorx, game);
Museum_Fish_Talk_process((MUSEUM_FISH_ACTOR*)actorx, game);
prv2 = actor->prvFish;
for (i = 0; i < aGYO_TYPE_NUM; i++, prv2++) {
if (prv2->_62E_flags & 1) {
@@ -894,16 +917,16 @@ void Museum_Fish_Kusa_Draw(ACTOR* actorx, GAME* game, int r5) {
if (mfish_cull_check(game, &kusa_pos[r5], 0.0f, 0.0f, 120.0f)) {
Mtx* mtx;
if (play->game.frame_counter % 2 != 0) {
mtx = &actor->prvKusa[r5]._70;
mtx = actor->prvKusa[r5].mtx[0];
} else {
mtx = &actor->prvKusa[r5]._2b0;
mtx = actor->prvKusa[r5].mtx[1];
}
OPEN_DISP(game->graph);
Matrix_translate(kusa_pos[r5].x, 0, kusa_pos[r5].z, 0);
Matrix_scale(0.01f, 0.01f, 0.01f, 1);
gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
CLOSE_DISP(game->graph);
cKF_Si3_draw_R_SV(game, &actor->prvKusa[r5]._00, mtx, kusa_before_disp, NULL, &actor->prvKusa[r5]);
cKF_Si3_draw_R_SV(game, &actor->prvKusa[r5].keyframe, mtx, kusa_before_disp, NULL, &actor->prvKusa[r5]);
}
}
@@ -934,8 +957,8 @@ void Museum_Fish_Actor_draw(ACTOR* actorx, GAME* game) {
prv = actor->prvFish;
for (i = 0; i < aGYO_TYPE_NUM; i++, prv++) {
if (prv->_62E_flags & 1 && prv->fishIDEnum != aGYO_TYPE_JELLYFISH && prv->fishIDEnum != aGYO_TYPE_FROG &&
mfish_cull_check(game, &prv->_5B8, prv->init_data._08 + 50.0f, prv->init_data._08 + 10.0f,
if (prv->_62E_flags & 1 && prv->fish_idx != aGYO_TYPE_JELLYFISH && prv->fish_idx != aGYO_TYPE_FROG &&
mfish_cull_check(game, &prv->objchk_pos, prv->init_data._08 + 50.0f, prv->init_data._08 + 10.0f,
prv->init_data._08 + 10.0f)) {
mfish_dw[i](prv, game);
}
@@ -944,8 +967,8 @@ void Museum_Fish_Actor_draw(ACTOR* actorx, GAME* game) {
if (actor->prvFish[aGYO_TYPE_JELLYFISH]._62E_flags & 1 &&
mfish_cull_check(game, &actor->prvFish[aGYO_TYPE_JELLYFISH].position,
actor->prvFish[aGYO_TYPE_JELLYFISH].init_data._08 + 10.0f,
actor->prvFish[aGYO_TYPE_JELLYFISH].init_data._04,
actor->prvFish[aGYO_TYPE_JELLYFISH].init_data._04)) {
actor->prvFish[aGYO_TYPE_JELLYFISH].init_data.ofs_y,
actor->prvFish[aGYO_TYPE_JELLYFISH].init_data.ofs_y)) {
mfish_dw[0x23](&actor->prvFish[aGYO_TYPE_JELLYFISH], game);
}
+9 -9
View File
@@ -11,15 +11,15 @@ void mfish_afish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
void mfish_afish_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
f32 v;
actor->_634 = mfish_get_hide_camera_angle(actor);
actor->hide_camera_angle = mfish_get_hide_camera_angle(actor);
if (actor->_62E_flags & 0x1e) {
if ((s16)(actor->_612.y - actor->_62C) > 0) {
actor->_634 = actor->_62C + DEG2SHORT_ANGLE(90);
actor->hide_camera_angle = actor->_62C + DEG2SHORT_ANGLE(90);
} else {
actor->_634 = actor->_62C - DEG2SHORT_ANGLE(90);
actor->hide_camera_angle = actor->_62C - DEG2SHORT_ANGLE(90);
}
} else {
add_calc_short_angle2(&actor->_634, actor->_612.y, CALC_EASE(0.4f), DEG2SHORT_ANGLE(7.5f),
add_calc_short_angle2(&actor->hide_camera_angle, actor->_612.y, CALC_EASE(0.4f), DEG2SHORT_ANGLE(7.5f),
DEG2SHORT_ANGLE(0.5f));
}
@@ -29,7 +29,7 @@ void mfish_afish_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
}
void mfish_afish_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
add_calc_short_angle2(&actor->_612.y, actor->_634, CALC_EASE2(0.2f), DEG2SHORT_ANGLE(3.75f),
add_calc_short_angle2(&actor->_612.y, actor->hide_camera_angle, CALC_EASE2(0.2f), DEG2SHORT_ANGLE(3.75f),
DEG2SHORT_ANGLE(0.25f));
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y, CALC_EASE2(0.5f), DEG2SHORT_ANGLE(5),
DEG2SHORT_ANGLE(0.25f));
@@ -119,7 +119,7 @@ void mfish_afish_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
} else {
s3 = -ABS(s3);
}
} else if (actor->_62E_flags & 0x20 && (actor->_62A - actor->_60C.y) < 0) {
} else if (actor->_62E_flags & 0x20 && (actor->escape_angle - actor->_60C.y) < 0) {
s3 = -s3;
}
@@ -209,7 +209,7 @@ void mfish_afish_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
} else if (actor->currentProcess == mfish_afish_normal_process) {
if ((actor->_62E_flags & 0x1e && ABS((s16)(actor->_62C - actor->_60C.y)) < DEG2SHORT_ANGLE(30)) ||
(actor->_62E_flags & 0x20 &&
ABS((s16)(DEG2SHORT_ANGLE(180) + actor->_62A - actor->_60C.y)) < DEG2SHORT_ANGLE(30))) {
ABS((s16)(DEG2SHORT_ANGLE(180) + actor->escape_angle - actor->_60C.y)) < DEG2SHORT_ANGLE(30))) {
actor->activityFrameCount =
actor->init_data.activeFramesMin + (s16)RANDOM_F(actor->init_data.activeFramesRange);
actor->savedActivityFrameCount = actor->activityFrameCount;
@@ -235,10 +235,10 @@ void mfish_afish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
Museum_Fish_BGCheck(actor, gamex);
if (actor->_640 > 0) {
actor->_640--;
actor->_38._00.frame_control.speed =
actor->kf.keyframe.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);
add_calc2(&(actor->kf).keyframe.frame_control.speed, actor->_5E8 * 2.0f + 0.5f, 0.2f, 0.1f);
}
}
+8 -8
View File
@@ -112,7 +112,7 @@ void mfish_aroana_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
} else {
s3 = -ABS(s3);
}
} else if (actor->_62E_flags & 0x20 && (actor->_62A - actor->_60C.y) < 0) {
} else if (actor->_62E_flags & 0x20 && (actor->escape_angle - actor->_60C.y) < 0) {
s3 = -s3;
}
@@ -224,7 +224,7 @@ void mfish_aroana_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
} else if (actor->currentProcess == mfish_aroana_normal_process) {
if ((actor->_62E_flags & 0x1e && ABS((s16)(actor->_62C - actor->_60C.y)) < DEG2SHORT_ANGLE(30)) ||
(actor->_62E_flags & 0x20 &&
ABS((s16)(DEG2SHORT_ANGLE(180) + actor->_62A - actor->_60C.y)) < DEG2SHORT_ANGLE(30))) {
ABS((s16)(DEG2SHORT_ANGLE(180) + actor->escape_angle - actor->_60C.y)) < DEG2SHORT_ANGLE(30))) {
actor->activityFrameCount =
actor->init_data.activeFramesMin + (s16)RANDOM_F(actor->init_data.activeFramesRange);
actor->savedActivityFrameCount = actor->activityFrameCount;
@@ -247,7 +247,7 @@ void mfish_aroana_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
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;
actor->kf.keyframe.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_idx, Gfx** joint_shape,
@@ -270,19 +270,19 @@ BOOL mfish_aroana_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int jo
}
void mfish_aroana_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
YET_SKELETON* skele = &actor->_38;
mfish_keyframe_c* skele = &actor->kf;
Mtx* mtxp;
if (gamex->frame_counter & 1) {
mtxp = &skele->_70;
mtxp = skele->mtx[0];
} else {
mtxp = &skele->_2b0;
mtxp = skele->mtx[1];
}
OPEN_DISP(gamex->graph);
Matrix_translate(actor->position.x, actor->position.y + actor->_5AC.y, actor->position.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_translate(0.0f, 0.0f, actor->init_data.ofs_z, 1);
Matrix_scale(actor->init_data.renderScale, actor->init_data.renderScale, actor->init_data.renderScale, 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_aroana_before_disp, NULL, actor);
cKF_Si3_draw_R_SV(gamex, &skele->keyframe, mtxp, mfish_aroana_before_disp, NULL, actor);
CLOSE_DISP(play->game.graph);
}
+176 -144
View File
@@ -31,7 +31,7 @@ f32 Rnd_EX_fx(f32 v) {
void mfish_base_FishMove(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
f32 t;
xyz_t pos;
if (actor->fishIDEnum == aGYO_TYPE_PIRANHA && actor->currentProcess != mfish_peck_process) {
if (actor->fish_idx == aGYO_TYPE_PIRANHA && actor->currentProcess != mfish_peck_process) {
actor->_5E8 *= actor->init_data._18;
} else {
add_calc0(&actor->_5E8, 1.0f - actor->init_data._18, 0.025f);
@@ -53,10 +53,10 @@ void mfish_base_FishMove(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
int mfish_PosWallCheck(MUSEUM_FISH_PRIVATE_DATA* priv, xyz_t* pos) {
u32 flag = 0;
xyz_t p = suisou_pos[priv->group];
xyz_t p = suisou_pos[priv->tank];
f32 a, b, c, d;
if (priv->group < 4) {
if (priv->tank < 4) {
a = priv->init_data._28 + 45;
b = priv->init_data._28 + 45;
c = priv->init_data._28 + 45;
@@ -98,7 +98,7 @@ BOOL mfish_WallCheck(MUSEUM_FISH_PRIVATE_DATA* prv) {
s16 mfish_get_hide_camera_angle(MUSEUM_FISH_PRIVATE_DATA* priv) {
s16 v = priv->_60C.y;
if (v > 0 || (priv->group == 2 && RANDOM_F(1) < 0.8f)) {
if (v > 0 || (priv->tank == 2 && RANDOM_F(1) < 0.8f)) {
if (v > DEG2SHORT_ANGLE(90)) {
v = DEG2SHORT_ANGLE(90) + DEG2SHORT_ANGLE(RANDOM_F(45));
} else {
@@ -115,21 +115,21 @@ 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->group == 2 && prv->_60C.y < 0 && prv->_634 > 0) {
prv->hide_camera_angle = mfish_get_hide_camera_angle(prv);
if (prv->tank == 2 && prv->_60C.y < 0 && prv->hide_camera_angle > 0) {
prv->_5F0 = MAX(prv->init_data._10, GETREG(TAKREG, 80) * 0.1f + 1.2f);
}
prv->currentProcess = mfish_dummy_process;
}
void mfish_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
add_calc_short_angle2(&actor->_612.y, actor->_634, CALC_EASE2(0.2f), DEG2SHORT_ANGLE(3.75f),
add_calc_short_angle2(&actor->_612.y, actor->hide_camera_angle, CALC_EASE2(0.2f), DEG2SHORT_ANGLE(3.75f),
DEG2SHORT_ANGLE(0.25f));
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y, CALC_EASE2(0.5f), DEG2SHORT_ANGLE(5.0f),
DEG2SHORT_ANGLE(0.25f));
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.5f), DEG2SHORT_ANGLE(5.0f), DEG2SHORT_ANGLE(0.25f));
if (actor->group == 2) {
if (actor->tank == mfish_TANK_2) {
if (actor->_612.y < 0) {
actor->activityFrameCount--;
} else {
@@ -203,7 +203,7 @@ void mfish_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
CALC_EASE2(0.5f), DEG2SHORT_ANGLE(6.25f), 45);
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.5f), DEG2SHORT_ANGLE(3.75f), 45);
if (actor->_5E8 < 0.01f || actor->group == 2 && actor->_5E8 < 0.05f) {
if (actor->_5E8 < 0.01f || actor->tank == mfish_TANK_2 && actor->_5E8 < 0.05f) {
mfish_dummy_process_init(actor);
} else if (actor->_5E8 > 1.0f && actor->_62E_flags & 0x1e) {
if ((s16)(actor->_60C.y - actor->_62C) > 0) {
@@ -233,7 +233,7 @@ void mfish_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
v = v;
}
} else if (actor->_62E_flags & 0x20) {
if ((s16)(actor->_62A - actor->_60C.y) < 0) {
if ((s16)(actor->escape_angle - actor->_60C.y) < 0) {
v = -v;
} else {
v = v;
@@ -248,7 +248,7 @@ void mfish_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
actor->_612.y += v;
if (actor->group == 2) {
if (actor->tank == mfish_TANK_2) {
s16 tmp = actor->_612.y + DEG2SHORT_ANGLE(90);
if (tmp > DEG2SHORT_ANGLE(135)) {
actor->_612.y = DEG2SHORT_ANGLE(-45);
@@ -383,7 +383,7 @@ void mfish_peck_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
}
void mfish_ground_peck_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
xyz_t p = suisou_pos[actor->group];
xyz_t p = suisou_pos[actor->tank];
xyz_t_sub(&p, &actor->position, &p);
actor->_5F4 = ((actor->init_data._08 * 0.3f + 65.0f) - MAX(ABS(p.x), ABS(p.z)) * 0.15f) - actor->init_data._0C;
@@ -401,7 +401,7 @@ void mfish_ground_peck_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex
}
void mfish_ground_peck_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
xyz_t p = suisou_pos[actor->group];
xyz_t p = suisou_pos[actor->tank];
xyz_t_sub(&p, &actor->position, &p);
actor->_5F4 = ((actor->init_data._08 * 0.3f + 65.0f) - (MAX(ABS(p.x), ABS(p.z)) * 0.15f)) - actor->init_data._0C;
xyz_t_mult_v(&actor->_5DC, 0.1f);
@@ -441,9 +441,9 @@ void mfish_base_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
actor->_5D0.z = sin_s(q) * f;
actor->_60C.y = q;
actor->_612.y = actor->_60C.y;
if (actor->fishIDEnum == aGYO_TYPE_CATFISH || actor->fishIDEnum == aGYO_TYPE_GIANT_CATFISH) {
if (actor->fish_idx == aGYO_TYPE_CATFISH || actor->fish_idx == aGYO_TYPE_GIANT_CATFISH) {
actor->_5F4 = 0.0f;
} else if (actor->fishIDEnum == aGYO_TYPE_FRESHWATER_GOBY) {
} else if (actor->fish_idx == aGYO_TYPE_FRESHWATER_GOBY) {
actor->_5F4 = RANDOM_F(5.0f);
} else {
actor->_5F4 = RANDOM2_F(10.0f);
@@ -480,7 +480,7 @@ void mfish_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
} else if (actor->currentProcess == mfish_normal_process) {
if ((actor->_62E_flags & 0x1E && ABS((s16)(actor->_62C - actor->_60C.y)) < DEG2SHORT_ANGLE(30)) ||
(actor->_62E_flags & 0x20 &&
ABS((s16)(actor->_62A + DEG2SHORT_ANGLE(180) - actor->_60C.y)) < DEG2SHORT_ANGLE(30))) {
ABS((s16)(actor->escape_angle + DEG2SHORT_ANGLE(180) - actor->_60C.y)) < DEG2SHORT_ANGLE(30))) {
actor->activityFrameCount =
actor->init_data.activeFramesMin + (s16)RANDOM_F(actor->init_data.activeFramesRange);
actor->savedActivityFrameCount = actor->activityFrameCount;
@@ -491,7 +491,7 @@ void mfish_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
if (actor->_624 == 10) {
actor->_5AC.y = 0;
actor->position.y = actor->init_data._0C;
} else if (actor->group == 2) {
} else if (actor->tank == mfish_TANK_2) {
actor->_5AC.y = sin_s(actor->_638) * 0.2f;
} else {
actor->_5AC.y = 0;
@@ -511,9 +511,9 @@ 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[0], &s->_4F0, &s->_514);
cKF_SkeletonInfo_R_init_standard_repeat_speedsetandmorph(&s->_00, s->_550[0], NULL, 1.0f, 0.0f);
mfish_keyframe_c* s = &actor->kf;
cKF_SkeletonInfo_R_ct(&s->keyframe, s->_54C, s->_550[0], s->work, s->morph);
cKF_SkeletonInfo_R_init_standard_repeat_speedsetandmorph(&s->keyframe, s->_550[0], NULL, 1.0f, 0.0f);
actor->activityFrameCount = actor->init_data.activeFramesMin + (s16)RANDOM_F(actor->init_data.activeFramesRange);
actor->savedActivityFrameCount = actor->activityFrameCount;
actor->_60C.x = DEG2SHORT_ANGLE(0);
@@ -524,7 +524,7 @@ void mfish_onefish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
}
void mfish_onefish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
cKF_SkeletonInfo_R_play(&actor->_38._00);
cKF_SkeletonInfo_R_play(&actor->kf.keyframe);
}
int mfish_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, u8* joint_flags,
@@ -533,7 +533,7 @@ int mfish_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx,
if (joint_idx == 2) {
int v, t;
if (actor->group != 4) {
if (actor->tank != mfish_TANK_4) {
v = 2;
} else if (actor->init_data._20 > 0.7f) {
v = 1;
@@ -548,22 +548,22 @@ int mfish_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx,
t = joint_rot->x - (actor->_618.z >> 1);
joint_rot->x = MY_CLAMP(t, DEG2SHORT_ANGLE(-25), DEG2SHORT_ANGLE(25));
}
return 1;
return TRUE;
}
void mfish_onefish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
YET_SKELETON* skele;
mfish_keyframe_c* skele;
Mtx* mtx;
GRAPH* graph;
GAME_PLAY* play;
play = (GAME_PLAY*)gamex;
skele = &actor->_38;
skele = &actor->kf;
if (play->game.frame_counter % 2 != 0) {
mtx = &skele->_70;
mtx = skele->mtx[0];
} else {
mtx = &skele->_2b0;
mtx = skele->mtx[1];
}
graph = play->game.graph;
@@ -571,17 +571,17 @@ void mfish_onefish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
Matrix_translate(actor->position.x, actor->position.y + actor->_5AC.y, actor->position.z, 0);
Matrix_RotateY(actor->_60C.y, 1);
Matrix_translate(0.0f, 0.25f * actor->init_data._04, 1.5f * actor->init_data._24, 1);
Matrix_translate(0.0f, 0.25f * actor->init_data.ofs_y, 1.5f * actor->init_data.ofs_z, 1);
Matrix_RotateX(actor->_60C.x, 1);
Matrix_RotateZ(MY_CLAMP(-(actor->_618.z >> 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);
Matrix_translate(0.0f, 0.25f * -actor->init_data.ofs_y, 0.5f * -actor->init_data.ofs_z, 1);
Matrix_scale(actor->init_data.renderScale, actor->init_data.renderScale, actor->init_data.renderScale, 1);
OPEN_DISP(graph);
gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(play->game.graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
CLOSE_DISP(graph);
cKF_Si3_draw_R_SV(&play->game, &skele->_00, mtx, &mfish_before_disp, 0, actor);
cKF_Si3_draw_R_SV(&play->game, &skele->keyframe, mtx, &mfish_before_disp, 0, actor);
}
void mfish_ani_base_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
@@ -597,24 +597,24 @@ void mfish_ani_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
mfish_base_mv(actor, gamex);
Museum_Fish_BGCheck(actor, gamex);
if (actor->group == 2) {
actor->_38._00.frame_control.speed =
if (actor->tank == mfish_TANK_2) {
actor->kf.keyframe.frame_control.speed =
(actor->_5E8 * 3.0f) / (actor->init_data._10 + actor->init_data._14) + 1.0f;
} else if (actor->fishIDEnum == aGYO_TYPE_BITTERLING || actor->fishIDEnum == aGYO_TYPE_BROOK_TROUT ||
actor->fishIDEnum == aGYO_TYPE_CRUCIAN_CARP) {
} else if (actor->fish_idx == aGYO_TYPE_BITTERLING || actor->fish_idx == aGYO_TYPE_BROOK_TROUT ||
actor->fish_idx == aGYO_TYPE_CRUCIAN_CARP) {
if (actor->_5F0 - 0.1f > actor->_5E8 && actor->currentProcess == mfish_normal_process &&
actor->activityFrameCount > actor->savedActivityFrameCount - 10) {
actor->_38._00.frame_control.speed =
actor->kf.keyframe.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);
add_calc2(&actor->kf.keyframe.frame_control.speed, 2.0f * actor->_5E8 + 0.5f, 0.2f, 0.1f);
}
} else {
if (actor->activityFrameCount > actor->savedActivityFrameCount - 10 && actor->_5F0 > 0) {
actor->_38._00.frame_control.speed =
actor->kf.keyframe.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);
add_calc2(&actor->kf.keyframe.frame_control.speed, 2.0f * actor->_5E8 + 0.5f, 0.2f, 0.1f);
}
}
@@ -654,12 +654,12 @@ void Museum_Fish_BigFishObjCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
for (i = 0; i < 2; i++) {
f32 v;
xyz_t ip = fish[i]->_5B8;
xyz_t ip = fish[i]->objchk_pos;
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);
f32 f25 = actor->init_data.ofs_y + fish[i]->init_data.ofs_y;
xyz_t_sub(&actor->objchk_pos, &ip, &op);
if (ABS(op.z) < f26 && ABS(op.y) < f25 && ABS(op.x) < f27) {
f27 -= ABS(op.x);
f26 -= ABS(op.z);
@@ -676,12 +676,12 @@ void Museum_Fish_BigFishObjCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
v = ABS(cos_s(actor->_60C.y) * actor->_5E8);
if (op.z < 0) {
actor->position.z -= MIN(f26, MAX(0.5f, v));
if (fish[i]->_5B8.z < max[i] + 10.0f) {
if (fish[i]->objchk_pos.z < max[i] + 10.0f) {
fish[i]->position.z += MIN(f26, 0.05f);
}
} else {
actor->position.z += MIN(f26, MAX(0.5f, v));
if (fish[i]->_5B8.z > max[i] - 10.0f) {
if (fish[i]->objchk_pos.z > max[i] - 10.0f) {
fish[i]->position.z -= MIN(f26, 0.05f);
}
}
@@ -700,40 +700,40 @@ void Museum_Fish_BigFishObjCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
}
void Museum_Fish_ObjBGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex, f32 f1, f32 f2) {
xyz_t p = suisou_pos[actor->group];
xyz_t p = suisou_pos[actor->tank];
f32 a, b, c, d, e;
switch (actor->group) {
case 0:
switch (actor->tank) {
case mfish_TANK_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:
case mfish_TANK_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;
e = 75.0f - cos_s((int)DEG2SHORT_ANGLE(180.0f * (actor->objchk_pos.x - a) / 70.0f)) * 5.0f;
break;
case 2:
case mfish_TANK_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:
case mfish_TANK_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:
case mfish_TANK_4:
default:
return;
}
@@ -774,7 +774,7 @@ void Museum_Fish_ObjBGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex, f32 f1
actor->position.y += e;
if (actor->_624 == 3) {
actor->_612.x = DEG2SHORT_ANGLE(45);
} else if (actor->fishIDEnum == aGYO_TYPE_LOACH) {
} else if (actor->fish_idx == aGYO_TYPE_LOACH) {
if (actor->_612.x > DEG2SHORT_ANGLE(30)) {
actor->_612.x -= DEG2SHORT_ANGLE(2);
} else if (actor->_612.x < DEG2SHORT_ANGLE(-30)) {
@@ -798,7 +798,7 @@ void Museum_Fish_DonkoBGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
f32 f24;
f32 f25;
f32 f26;
xyz_t p = suisou_pos[actor->group];
xyz_t p = suisou_pos[actor->tank];
f32 v = (sin_s(actor->_60C.y) * 0.7f) * (ABS(cos_s(actor->_618.z)) * 0.5f + 0.5f) + 0.3f;
f32 v2 = (cos_s(actor->_60C.y) * 0.7f) * (ABS(cos_s(actor->_618.z)) * 0.5f + 0.5f) + 0.3f;
actor->_62E_flags &= ~0x1e;
@@ -810,8 +810,8 @@ void Museum_Fish_DonkoBGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
d = (-17.5f + p.z);
c = (-45.0f + 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.y) - p.x) * 180.0f / 55.0f));
f27 = 76.0f - 6.0f * cos_s(DEG2SHORT_ANGLE2(180.0f * (actor->objchk_pos.x - p.x) / 55.0f));
f26 = 76.0f - 6.0f * cos_s(DEG2SHORT_ANGLE2((actor->objchk_pos.x + sin_s(actor->_60C.y) - p.x) * 180.0f / 55.0f));
a -= (actor->position.x + actor->init_data._28 * v);
b -= (actor->position.x - actor->init_data._28 * v);
@@ -884,17 +884,17 @@ void Museum_Fish_DonkoBGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
}
void Museum_Fish_objchk_pos_set(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
actor->_5B8 = actor->position;
actor->_5B8.x += (actor->init_data._24 * sin_s(actor->_60C.y));
actor->_5B8.z += (actor->init_data._24 * cos_s(actor->_60C.y));
actor->objchk_pos = actor->position;
actor->objchk_pos.x += (actor->init_data.ofs_z * sin_s(actor->_60C.y));
actor->objchk_pos.z += (actor->init_data.ofs_z * cos_s(actor->_60C.y));
}
void Museum_Fish_old_chk_pos_set(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
static void Museum_Fish_old_chk_pos_set(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
// UNUSED/STRIPPED
}
void Museum_Fish_BGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
xyz_t p = suisou_pos[actor->group];
xyz_t p = suisou_pos[actor->tank];
f32 f29, f30, f28, f27, f31, f26, f25;
s32 r31 = 0;
@@ -918,7 +918,7 @@ void Museum_Fish_BGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
f25 = 1.0f;
}
if (actor->group < 4) {
if (actor->tank < mfish_TANK_4) {
f30 = 54.0f + actor->init_data._28 * f26;
f29 = 54.0f + actor->init_data._28 * f26;
f28 = 54.0f + actor->init_data._28 * f25;
@@ -928,7 +928,7 @@ void Museum_Fish_BGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
f29 = actor->init_data._28 * f26 + 189.0f;
f28 = actor->init_data._28 * f25 + 14.0f;
f27 = actor->init_data._28 * f25 + 25.0f;
f31 = actor->_5B8.x - p.x;
f31 = actor->objchk_pos.x - p.x;
f27 += cos_s(f31 * 32768.0f / 180.0f) * 9.0f;
f27 += 21.0f;
r31 = DEG2SHORT_ANGLE(sin_s(f31 * 32768.0f / 180.0f) * -10.0f);
@@ -938,29 +938,29 @@ void Museum_Fish_BGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
actor->_62C = 0;
Museum_Fish_objchk_pos_set(actor, game);
if (actor->_5B8.x > (p.x + f30)) {
actor->position.x += (p.x + f30) - actor->_5B8.x;
if (actor->objchk_pos.x > (p.x + f30)) {
actor->position.x += (p.x + f30) - actor->objchk_pos.x;
actor->_62E_flags |= 0x4;
} else if (actor->_5B8.x < p.x - f29) {
actor->position.x += (p.x - f29) - actor->_5B8.x;
} else if (actor->objchk_pos.x < p.x - f29) {
actor->position.x += (p.x - f29) - actor->objchk_pos.x;
actor->_62E_flags |= 0x2;
}
if (actor->_5B8.z > (p.z + f28)) {
actor->position.z += (p.z + f28) - actor->_5B8.z;
if (actor->objchk_pos.z > (p.z + f28)) {
actor->position.z += (p.z + f28) - actor->objchk_pos.z;
actor->_62E_flags |= 0x10;
} else if (actor->_5B8.z < (p.z - f27)) {
actor->position.z += (p.z - f27) - actor->_5B8.z;
} else if (actor->objchk_pos.z < (p.z - f27)) {
actor->position.z += (p.z - f27) - actor->objchk_pos.z;
actor->_62E_flags |= 0x8;
}
Museum_Fish_objchk_pos_set(actor, game);
actor->_5FC = actor->_5B8.x - (p.x - f29);
actor->_600 = (p.x + f30) - actor->_5B8.x;
actor->_604 = actor->_5B8.z - (p.z - f27);
actor->_608 = (p.z + f28) - actor->_5B8.z;
actor->_5FC = actor->objchk_pos.x - (p.x - f29);
actor->_600 = (p.x + f30) - actor->objchk_pos.x;
actor->_604 = actor->objchk_pos.z - (p.z - f27);
actor->_608 = (p.z + f28) - actor->objchk_pos.z;
if (actor->group < 4 && actor->fishIDEnum != aGYO_TYPE_EEL) {
if (actor->tank < mfish_TANK_4 && actor->fish_idx != aGYO_TYPE_EEL) {
Museum_Fish_ObjBGCheck(actor, game, f26, f25);
}
@@ -986,7 +986,22 @@ void Museum_Fish_BGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
}
void Museum_Fish_Kusa_Check(MUSEUM_FISH_ACTOR* actor, GAME* game) {
static int kusa_group_tbl[14] = { 0, 2, 1, 3, 3, 4, 4, 4, 4, 4, 0, 2, 1, 3 };
static int kusa_group_tbl[14] = {
mfish_TANK_0,
mfish_TANK_2,
mfish_TANK_1,
mfish_TANK_3,
mfish_TANK_3,
mfish_TANK_4,
mfish_TANK_4,
mfish_TANK_4,
mfish_TANK_4,
mfish_TANK_4,
mfish_TANK_0,
mfish_TANK_2,
mfish_TANK_1,
mfish_TANK_3,
};
MUSEUM_FISH_KUSA_DATA* k;
MUSEUM_FISH_PRIVATE_DATA* f = actor->prvFish;
int i;
@@ -1000,13 +1015,13 @@ void Museum_Fish_Kusa_Check(MUSEUM_FISH_ACTOR* actor, GAME* game) {
f->_62E_flags &= ~0x100;
// this if statement salso works as a continue statement
if (f->fishIDEnum != aGYO_TYPE_EEL && f->fishIDEnum != aGYO_TYPE_COELACANTH &&
f->fishIDEnum != aGYO_TYPE_FROG) {
if (f->fish_idx != aGYO_TYPE_EEL && f->fish_idx != aGYO_TYPE_COELACANTH &&
f->fish_idx != aGYO_TYPE_FROG) {
for (j = 0; j < 14; j++) {
f32 f1 = (j < 5) ? 90.0f : (j < 10) ? 115.0f : 80.0f;
if (kusa_group_tbl[j] == f->group && f->_5B8.y < f1) {
if (kusa_group_tbl[j] == f->tank && f->objchk_pos.y < f1) {
f32 z;
f32 x;
f32 d;
@@ -1014,8 +1029,8 @@ void Museum_Fish_Kusa_Check(MUSEUM_FISH_ACTOR* actor, GAME* game) {
f32 dx;
f32 dy;
if (kusa_group_tbl[j] == 4) {
if (f->fishIDEnum == aGYO_TYPE_COELACANTH) {
if (kusa_group_tbl[j] == mfish_TANK_4) {
if (f->fish_idx == aGYO_TYPE_COELACANTH) {
d = 5.0f + f->init_data._08;
} else {
d = 10.0f + f->init_data._08;
@@ -1026,8 +1041,8 @@ void Museum_Fish_Kusa_Check(MUSEUM_FISH_ACTOR* actor, GAME* game) {
dSQ = d * d;
}
x = f->_5B8.x - (kusa_pos[j].x + actor->prvKusa[j]._540.x);
z = f->_5B8.z - (kusa_pos[j].z + actor->prvKusa[j]._540.z);
x = f->objchk_pos.x - (kusa_pos[j].x + actor->prvKusa[j]._540.x);
z = f->objchk_pos.z - (kusa_pos[j].z + actor->prvKusa[j]._540.z);
sq = SQ(x) + SQ(z);
if (sq < dSQ) {
@@ -1037,7 +1052,7 @@ void Museum_Fish_Kusa_Check(MUSEUM_FISH_ACTOR* actor, GAME* game) {
d -= sqrtf(sq);
d *= 0.1f;
f30 += sin_s(v) * d;
if (kusa_group_tbl[j] == 4) {
if (kusa_group_tbl[j] == mfish_TANK_4) {
f29 += MAX(cos_s(v), 0.2f) * d;
} else {
f29 += cos_s(v) * d;
@@ -1047,7 +1062,7 @@ void Museum_Fish_Kusa_Check(MUSEUM_FISH_ACTOR* actor, GAME* game) {
actor->prvKusa[j]._540.x -= (f->init_data._20 * 1.5f) * d * sin_s(v);
if (kusa_group_tbl[j] == 4) {
if (kusa_group_tbl[j] == mfish_TANK_4) {
actor->prvKusa[j]._540.z -= (f->init_data._20 * 1.5f) * d * MAX(cos_s(v), 0.1f);
} else {
actor->prvKusa[j]._540.z -= (f->init_data._20 * 1.5f) * d * cos_s(v);
@@ -1100,14 +1115,32 @@ void Museum_Fish_Object_Check(MUSEUM_FISH_ACTOR* actor, GAME* game) {
f = actor->prvFish;
for (i = 0; i < aGYO_TYPE_NUM; i++, f++) {
if (i != 0x21 && i != 0x20 && i != 0x1a && i != 0x27 && i != 0xa && f->_62E_flags & 1) {
if (
// clang-format off
i != aGYO_TYPE_FROG &&
i != aGYO_TYPE_CRAWFISH &&
i != aGYO_TYPE_EEL &&
i != aGYO_TYPE_ARAPAIMA &&
i != aGYO_TYPE_GIANT_SNAKEHEAD &&
f->_62E_flags & 1
// clang-format on
) {
for (j = 0; j < aGYO_TYPE_NUM; j++, fj++) {
if (f->group == fj->group && i != j && j != 0x21 && j != 0x1a && j != 0x27 && j != 10 &&
fj->_62E_flags & 1 != 0) {
if (
// clang-format off
f->tank == fj->tank &&
i != j &&
j != aGYO_TYPE_FROG &&
j != aGYO_TYPE_EEL &&
j != aGYO_TYPE_ARAPAIMA &&
j != aGYO_TYPE_GIANT_SNAKEHEAD &&
(fj->_62E_flags & 1) != 0
// clang-format on
) {
test.x = f->_5B8.x - fj->_5B8.x;
test.y = f->_5B8.y - fj->_5B8.y;
test.z = f->_5B8.z - fj->_5B8.z;
test.x = f->objchk_pos.x - fj->objchk_pos.x;
test.y = f->objchk_pos.y - fj->objchk_pos.y;
test.z = f->objchk_pos.z - fj->objchk_pos.z;
sq_xz = SQ(test.x) + SQ(test.z);
sq_xzy = sq_xz + SQ(test.y);
if (sqrtf(sq_xzy) < f23) {
@@ -1115,7 +1148,7 @@ void Museum_Fish_Object_Check(MUSEUM_FISH_ACTOR* actor, GAME* game) {
f->_598 = fj;
}
if (ABS(test.y) < (f->init_data._04 + fj->init_data._04)) {
if (ABS(test.y) < (f->init_data.ofs_y + fj->init_data.ofs_y)) {
f32 additive = f->init_data._08 + fj->init_data._08;
if (sq_xz < SQ(additive)) {
@@ -1123,19 +1156,19 @@ void Museum_Fish_Object_Check(MUSEUM_FISH_ACTOR* actor, GAME* game) {
//! BUG: multiplying by zero?
if (test.y > atans_table(sqrtf(SQ(test.x) + SQ(test.z)), test.y) * 0.0f) {
test.y = -test.y + (f->init_data._04 + fj->init_data._04);
test.y = -test.y + (f->init_data.ofs_y + fj->init_data.ofs_y);
} else {
test.y = -test.y - (f->init_data._04 + fj->init_data._04);
test.y = -test.y - (f->init_data.ofs_y + fj->init_data.ofs_y);
}
test.y *= 0.2f + (GETREG(TAKREG, 0x11)) * 0.0001f;
f22 *= 0.2f + (GETREG(TAKREG, 0x12)) * 0.0001f;
f->_62A = atans_table(test.z, test.x);
f->escape_angle = atans_table(test.z, test.x);
f->_62E_flags |= 0x20;
fj->_62A = f->_62A + DEG2SHORT_ANGLE(180);
fj->escape_angle = f->escape_angle + DEG2SHORT_ANGLE(180);
f->_62E_flags |= 0x20;
f->_594 = fj;
if ((fj->_62E_flags & 0x1e) == 0 || ABS((s16)(fj->_62C - f->_62A)) >= DEG2SHORT_ANGLE(90)) {
if ((fj->_62E_flags & 0x1e) == 0 || ABS((s16)(fj->_62C - f->escape_angle)) >= DEG2SHORT_ANGLE(90)) {
f32 v = (fj->init_data._20 / (f->init_data._20 + fj->init_data._20));
v *= (1.0f - f->init_data._20);
f22 *= v;
@@ -1147,9 +1180,9 @@ void Museum_Fish_Object_Check(MUSEUM_FISH_ACTOR* actor, GAME* game) {
test.y *= v;
}
if (f22 < ABS(test.y) || f->_624 == 0xa || f->fishIDEnum == aGYO_TYPE_COELACANTH) {
f28 += sin_s(f->_62A) * f22;
f27 += cos_s(f->_62A) * f22;
if (f22 < ABS(test.y) || f->_624 == 0xa || f->fish_idx == aGYO_TYPE_COELACANTH) {
f28 += sin_s(f->escape_angle) * f22;
f27 += cos_s(f->escape_angle) * f22;
f25 += 1.0f;
} else {
f26 += test.y;
@@ -1180,7 +1213,7 @@ void Museum_Fish_Object_Check(MUSEUM_FISH_ACTOR* actor, GAME* game) {
if (f24 > 0 && f25 > 0) {
xyz_t r;
xyz_t_sub(&f->_594->position, &f->position, &r);
f->_62A = atans_table(r.z, r.x);
f->escape_angle = atans_table(r.z, r.x);
}
f25 = 0.0f;
@@ -1191,7 +1224,7 @@ void Museum_Fish_Object_Check(MUSEUM_FISH_ACTOR* actor, GAME* game) {
f23 = FLT_MAX;
fj = actor->prvFish;
}
if (f->group == 3 && f->_624 != 7) {
if (f->tank == 3 && f->_624 != 7) {
Museum_Fish_BigFishObjCheck(f, game);
}
}
@@ -1207,11 +1240,10 @@ void mfish_body_wind_anime_play(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
}
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 p = GET_PLAYER_ACTOR_GAME_ACTOR(game)->world.position;
xyz_t p1;
f32 v;
p = playerActor->actor_class.world.position;
p.y += 40.0f;
xyz_t_sub(&p, &actor->position, &p1);
v = SQ(p1.x) + SQ(p1.z);
@@ -1228,18 +1260,19 @@ void mfish_get_player_angle(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game, s16* at
}
BOOL mfish_peck_check(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
Private_c* commonData_prv = common_data.now_private;
Private_c* commonData_prv = Now_Private;
if (MF_Control_Actor->_14db4 == actor->group) {
if (actor->fishIDEnum == aGYO_TYPE_PIRANHA) {
if (MF_Control_Actor->player_area == actor->tank) {
if (actor->fish_idx == aGYO_TYPE_PIRANHA) {
return TRUE;
} else if (mPr_GetPossessionItemIdx(commonData_prv, 0x2806) != -1) {
if (actor->fishIDEnum == aGYO_TYPE_CARP || actor->fishIDEnum == aGYO_TYPE_KOI) {
} else if (mPr_GetPossessionItemIdx(commonData_prv, ITM_FOOD_CANDY) != -1) {
if (actor->fish_idx == aGYO_TYPE_CARP || actor->fish_idx == aGYO_TYPE_KOI) {
return TRUE;
}
} else if (mPr_GetPossessionItemIdxItem1Category(commonData_prv, ITEM1_CAT_FRUIT) != -1) {
if (actor->fish_idx == aGYO_TYPE_GOLDFISH || actor->fish_idx == aGYO_TYPE_POPEYED_GOLDFISH) {
return TRUE;
}
} else if (mPr_GetPossessionItemIdxItem1Category(commonData_prv, 8) != -1 &&
(actor->fishIDEnum == aGYO_TYPE_GOLDFISH || actor->fishIDEnum == aGYO_TYPE_POPEYED_GOLDFISH)) {
return TRUE;
}
}
@@ -1249,8 +1282,7 @@ BOOL mfish_peck_check(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
BOOL mfish_peck_wall_check(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
s16 temp = (actor->_60C.y - actor->_62C);
if (actor->_62E_flags & 0x1E && ABS(temp) < DEG2SHORT_ANGLE(45)) {
PLAYER_ACTOR* playerActor = get_player_actor_withoutCheck((GAME_PLAY*)gamex);
xyz_t target = playerActor->actor_class.world.position;
xyz_t target = GET_PLAYER_ACTOR_GAME_ACTOR(gamex)->world.position;
return search_position_distance(&actor->position, &target) < 60.0f;
}
return FALSE;
@@ -1260,7 +1292,7 @@ BOOL mfish_ground_peck_before_check(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex
xyz_t p, p2;
f32 v;
p2 = p = suisou_pos[actor->group];
p2 = p = suisou_pos[actor->tank];
xyz_t_sub(&p2, &actor->position, &p2);
@@ -1268,7 +1300,7 @@ BOOL mfish_ground_peck_before_check(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex
if (actor->currentProcess == mfish_ground_peck_process) {
return actor->_63E > 0;
} else if ((actor->group == 2) && (actor->position.x < p.x + 20.0f) && (actor->position.z > p.z - 10.0f) &&
} else if ((actor->tank == mfish_TANK_2) && (actor->position.x < p.x + 20.0f) && (actor->position.z > p.z - 10.0f) &&
(actor->position.y < (actor->init_data._08 * 0.5f + 75.0f) - (v * 0.15f)) && (RANDOM_F(1.0f) > 0.2f)) {
return TRUE;
}
@@ -1277,45 +1309,45 @@ BOOL mfish_ground_peck_before_check(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex
}
void mfish_get_player_area(MUSEUM_FISH_ACTOR* actor, GAME* gamex) {
PLAYER_ACTOR* player = get_player_actor_withoutCheck((GAME_PLAY*)gamex);
xyz_t p = player->actor_class.world.position;
ACTOR* playerx = GET_PLAYER_ACTOR_GAME_ACTOR(gamex);
xyz_t p = playerx->world.position;
if (actor->_14db6-- < 0) {
actor->_14db6 = 0x1e;
if (actor->player_area_update_timer-- < 0) {
actor->player_area_update_timer = 0x1e;
} else {
return;
}
if (p.z < 80.0f) {
actor->_14db4 = 4;
actor->player_area = mfish_TANK_4;
return;
}
if (p.z > 120.0f && p.z < 320.0f) {
if (p.x < 320.0f) {
actor->_14db4 = 0;
actor->player_area = mfish_TANK_0;
} else {
actor->_14db4 = 1;
actor->player_area = mfish_TANK_1;
}
return;
}
if (p.z > 360.0f && p.z < 560.0f) {
if (p.x < 320.0f && p.x > 120.0f) {
actor->_14db4 = 2;
actor->player_area = mfish_TANK_2;
} else {
actor->_14db4 = 3;
actor->player_area = mfish_TANK_3;
}
return;
}
actor->_14db4 = -1;
actor->player_area = -1;
}
void mfish_get_flow_vec(xyz_t* pos, MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
f32 v;
xyz_t p2;
xyz_t p = suisou_pos[actor->group];
xyz_t p = suisou_pos[actor->tank];
xyz_t t;
xyz_t p3;
@@ -1326,15 +1358,15 @@ void mfish_get_flow_vec(xyz_t* pos, MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game)
f32 d;
f32 dSQ;
if (actor->group == 0) {
if (actor->tank == mfish_TANK_0) {
v = 0.05f;
} else if (actor->group == 1) {
} else if (actor->tank == mfish_TANK_1) {
v = 0.06f;
} else if (actor->group == 2) {
} else if (actor->tank == mfish_TANK_2) {
v = 0.2f;
} else if (actor->group == 3) {
} else if (actor->tank == mfish_TANK_3) {
v = 0.05f;
} else if (actor->group == 4) {
} else if (actor->tank == mfish_TANK_4) {
v = 0.08f;
}
xyz_t_sub(&actor->position, &p, &t);
@@ -1345,9 +1377,9 @@ void mfish_get_flow_vec(xyz_t* pos, MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game)
p2.y = (s * 0.5f) * cos_s(DEG2SHORT_ANGLE2(180.0f * t.y / 70.0f));
s2 = atans_table(t.z, t.x);
s2 += MF_Control_Actor->_14daa[actor->group];
s2 += MF_Control_Actor->_14daa[actor->tank];
if (actor->group == 2) {
if (actor->tank == mfish_TANK_2) {
p2.x += (GETREG(TAKREG, 0xc) * 0.01f + 2.0f) * cos_s(s2);
p2.z += (GETREG(TAKREG, 0xc) * 0.01f + 2.0f) * sin_s(s2);
} else {
@@ -1363,9 +1395,9 @@ void mfish_get_flow_vec(xyz_t* pos, MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game)
p2.z *= cos_s(actor->_618.z);
}
if (actor->group == 4) {
if (actor->tank == mfish_TANK_4) {
p2.z += (GETREG(TAKREG, 0xb) * 0.01f + 0.5f) * cos_s(actor->_60C.y + DEG2SHORT_ANGLE(90));
} else if (actor->group == 2) {
} else if (actor->tank == mfish_TANK_2) {
p2.x -= ABS(cos_s(actor->_60C.y)) * 0.02f;
if (ABS((s16)(actor->_60C.y - DEG2SHORT_ANGLE(270))) < DEG2SHORT_ANGLE(100)) {
p2.x = MIN(-1.0f + GETREG(TAKREG, 0x48) * 0.001f, p2.x);
@@ -1373,7 +1405,7 @@ void mfish_get_flow_vec(xyz_t* pos, MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game)
}
if (actor->_598 != NULL) {
if (actor->group == 4) {
if (actor->tank == mfish_TANK_4) {
s = actor->_598->init_data._08 * 10.0f + actor->init_data._08 * 2.0f;
} else {
s = actor->_598->init_data._08 * 5.0f + actor->init_data._08 * 2.0f;
@@ -1391,7 +1423,7 @@ void mfish_get_flow_vec(xyz_t* pos, MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game)
}
}
if (actor->group == 2 && p2.x < 0.0f) {
if (actor->tank == mfish_TANK_2 && p2.x < 0.0f) {
p2.x *= 1.1f;
}
@@ -1428,7 +1460,7 @@ s16 mfish_get_escape_angle(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
return v1;
} else {
return actor->_62A;
return actor->escape_angle;
}
}
@@ -1465,11 +1497,11 @@ void mfish_move_smooth(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
add_calc0(&actor->_5E8, 0.1f * cos_s(vv << 1), 0.02f);
}
if ((actor->group == 0 || actor->_624 == 10 || actor->_624 == 11 ||
actor->fishIDEnum == aGYO_TYPE_AROWANA) &&
if ((actor->tank == mfish_TANK_0 || actor->_624 == 10 || actor->_624 == 11 ||
actor->fish_idx == aGYO_TYPE_AROWANA) &&
ABS(vv) < DEG2SHORT_ANGLE(90) && ABS(actor->_622) < DEG2SHORT_ANGLE(10)) {
if (actor->currentProcess == mfish_afish_dummy_process) {
o = &actor->_634;
o = &actor->hide_camera_angle;
} else {
o = &actor->_612.y;
}
@@ -1497,6 +1529,6 @@ void mfish_hamon_make(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
xyz_t p = actor->position;
p.y = 115.0f;
Common_Get(clip.effect_clip)
->effect_make_proc(0x45, p, 2, DEG2SHORT_ANGLE(180) + actor->_60C.y, game, -1, 7, 0);
->effect_make_proc(eEC_EFFECT_TURI_HAMON, p, 2, DEG2SHORT_ANGLE(180) + actor->_60C.y, game, RSV_NO, 7, 0);
}
}
+18 -18
View File
@@ -33,17 +33,17 @@ void mfish_bass_base_FishMove(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
}
void mfish_bass_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
actor->_634 = mfish_get_hide_camera_angle(actor);
actor->hide_camera_angle = mfish_get_hide_camera_angle(actor);
if ((actor->_62E_flags & 0x1E) != 0) {
// works with temp instead of cast
if ((s16)(actor->_612.y - actor->_62C) > 0) {
actor->_634 = actor->_62C + DEG2SHORT_ANGLE(90);
actor->hide_camera_angle = actor->_62C + DEG2SHORT_ANGLE(90);
} else {
actor->_634 = actor->_62C - DEG2SHORT_ANGLE(90);
actor->hide_camera_angle = actor->_62C - DEG2SHORT_ANGLE(90);
}
} else {
add_calc_short_angle2(&actor->_634, actor->_612.y, CALC_EASE(0.5f), DEG2SHORT_ANGLE(22.5),
add_calc_short_angle2(&actor->hide_camera_angle, actor->_612.y, CALC_EASE(0.5f), DEG2SHORT_ANGLE(22.5),
DEG2SHORT_ANGLE(0.5f));
}
@@ -54,7 +54,7 @@ void mfish_bass_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
}
void mfish_bass_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
add_calc_short_angle2(&actor->_612.y, actor->_634, CALC_EASE2(0.1f), DEG2SHORT_ANGLE(2.5f), DEG2SHORT_ANGLE(0.25f));
add_calc_short_angle2(&actor->_612.y, actor->hide_camera_angle, CALC_EASE2(0.1f), DEG2SHORT_ANGLE(2.5f), DEG2SHORT_ANGLE(0.25f));
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y, CALC_EASE2(0.25f), DEG2SHORT_ANGLE(1.25f),
DEG2SHORT_ANGLE(0.25f));
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.25f), DEG2SHORT_ANGLE(1.25f),
@@ -184,7 +184,7 @@ void mfish_bass_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
b = -ABS(a);
}
} else if (actor->_62E_flags & 0x20) {
if ((s16)(actor->_62A - actor->_60C.y) < 0) {
if ((s16)(actor->escape_angle - actor->_60C.y) < 0) {
b = -a;
}
}
@@ -267,9 +267,9 @@ void mfish_bass_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
actor->currentProcess = mfish_bass_normal_process;
if (actor->fishIDEnum == aGYO_TYPE_LARGE_BASS) {
if (actor->fish_idx == aGYO_TYPE_LARGE_BASS) {
actor->_5AC.y = 0;
} else if (actor->fishIDEnum == aGYO_TYPE_BASS) {
} else if (actor->fish_idx == aGYO_TYPE_BASS) {
actor->_5AC.y = 0.5f;
} else {
actor->_5AC.y = 1;
@@ -303,7 +303,7 @@ void mfish_bass_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
} else if (actor->currentProcess == &mfish_bass_normal_process) {
if (((actor->_62E_flags & 0x1e) && ABS((s16)(actor->_62C - actor->_60C.y)) < DEG2SHORT_ANGLE(30)) ||
((actor->_62E_flags & 0x20) &&
ABS((s16)((actor->_62A - DEG2SHORT_ANGLE(-180)) - actor->_60C.y)) < DEG2SHORT_ANGLE(30))) {
ABS((s16)((actor->escape_angle - DEG2SHORT_ANGLE(-180)) - actor->_60C.y)) < DEG2SHORT_ANGLE(30))) {
actor->activityFrameCount =
actor->init_data.activeFramesMin + (s16)RANDOM_F(actor->init_data.activeFramesRange);
actor->savedActivityFrameCount = actor->activityFrameCount;
@@ -330,30 +330,30 @@ void mfish_bass_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
// needed tmp before the decrement for some reason
tmp = (0.4f + (0.7f * actor->_5AC.y));
actor->_640--;
add_calc2(&actor->_38._00.frame_control.speed,
add_calc2(&actor->kf.keyframe.frame_control.speed,
tmp * (1.75f +
actor->_5AC.z * (actor->_5F0 - actor->_5E8) / ((actor->init_data._14) + actor->init_data._10)),
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),
add_calc2(&actor->kf.keyframe.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) {
YET_SKELETON* skele;
mfish_keyframe_c* skele;
Mtx* mtx;
GRAPH* graph;
GAME_PLAY* play;
play = (GAME_PLAY*)gamex;
skele = &actor->_38;
skele = &actor->kf;
if (play->game.frame_counter % 2 != 0) {
mtx = &skele->_70;
mtx = skele->mtx[0];
} else {
mtx = &skele->_2b0;
mtx = skele->mtx[1];
}
graph = play->game.graph;
@@ -361,16 +361,16 @@ void mfish_bass_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
Matrix_translate(actor->position.x, actor->position.y, actor->position.z, 0);
Matrix_RotateY(actor->_60C.y, 1);
Matrix_translate(0, 0.25f * actor->init_data._04, 1.5f * actor->init_data._24, 1);
Matrix_translate(0, 0.25f * actor->init_data.ofs_y, 1.5f * actor->init_data.ofs_z, 1);
Matrix_RotateX(actor->_60C.x, 1);
Matrix_RotateZ(MY_CLAMP(-(actor->_618.z >> 1), DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20)), 1);
Matrix_translate(0, 0.25f * -actor->init_data._04, 0.5f * -actor->init_data._24, 1);
Matrix_translate(0, 0.25f * -actor->init_data.ofs_y, 0.5f * -actor->init_data.ofs_z, 1);
Matrix_scale(actor->init_data.renderScale, actor->init_data.renderScale, actor->init_data.renderScale, 1);
OPEN_DISP(graph);
gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(play->game.graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
CLOSE_DISP(graph);
cKF_Si3_draw_R_SV(&play->game, &skele->_00, mtx, &mfish_before_disp, 0, actor);
cKF_Si3_draw_R_SV(&play->game, &skele->keyframe, mtx, &mfish_before_disp, 0, actor);
return;
}
+25 -25
View File
@@ -8,12 +8,12 @@ void mfish_big_fish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
actor->_5AC = ZeroVec;
actor->_5F0 = actor->_5E8;
actor->_60C.y = DEG2SHORT_ANGLE(90);
if (actor->fishIDEnum == aGYO_TYPE_ARAPAIMA) {
if (actor->fish_idx == aGYO_TYPE_ARAPAIMA) {
actor->_60C.y = -actor->_60C.y;
actor->position.z = 430.0f;
actor->position.x += 40.0f;
actor->_640 = 0;
} else if (actor->fishIDEnum == aGYO_TYPE_GIANT_SNAKEHEAD) {
} else if (actor->fish_idx == aGYO_TYPE_GIANT_SNAKEHEAD) {
actor->position.z = 530.0f;
actor->position.x -= 40.0f;
}
@@ -26,7 +26,7 @@ void mfish_big_fish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
actor->_63A = qrand();
actor->_63C = qrand();
actor->_640 = 0;
actor->_634 = 0;
actor->hide_camera_angle = 0;
actor->_632 = 0;
actor->_644 = 0;
actor->_5AC.x = 0.0f;
@@ -39,17 +39,17 @@ void mfish_big_fish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
xyz_t p;
mfish_onefish_mv(actor, gamex);
mfish_body_wind_anime_play(actor, gamex);
if (actor->fishIDEnum == aGYO_TYPE_ARAPAIMA) {
actor->_38._00.frame_control.speed = (sin_s(actor->_63A) * 0.2f + 1.0f) * 0.5f;
if (actor->fish_idx == aGYO_TYPE_ARAPAIMA) {
actor->kf.keyframe.frame_control.speed = (sin_s(actor->_63A) * 0.2f + 1.0f) * 0.5f;
} else {
actor->_38._00.frame_control.speed =
actor->kf.keyframe.frame_control.speed =
((GETREG(TAKREG, 0x37) * 0.01f) + 0.5f + sin_s(actor->_63A) * (GETREG(TAKREG, 0x38) * 0.01f + 0.1f)) * 0.5f;
}
actor->_5AC.y = 0.0f;
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 (actor->fishIDEnum == aGYO_TYPE_ARAPAIMA) {
if (actor->fish_idx == aGYO_TYPE_ARAPAIMA) {
if (actor->_600 > 35.0f) {
if (actor->_632 > DEG2SHORT_ANGLE(10)) {
add_calc0(&actor->_5F0, 1.0f - actor->init_data._18, 0.005f);
@@ -85,16 +85,16 @@ void mfish_big_fish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
DEG2SHORT_ANGLE(0.05f));
actor->_636 += DEG2SHORT_ANGLE(GETREG(TAKREG, 0x47) * 0.1f + 3.0f);
add_calc(&actor->position.y, actor->init_data._0C + actor->_5F4, CALC_EASE(0.05f), 0.15f, 0.05f);
if (actor->group == 2) {
if (actor->tank == mfish_TANK_2) {
actor->_636 += DEG2SHORT_ANGLE(10);
} else {
actor->_646 += actor->_642;
}
add_calc_short_angle2(&actor->_634, actor->_640, CALC_EASE2(0.1f),
add_calc_short_angle2(&actor->hide_camera_angle, actor->_640, CALC_EASE2(0.1f),
(s16)(DEG2SHORT_ANGLE(GETREG(TAKREG, 0x3d) * 0.1f + 0.8f) >> 1) >> 1,
DEG2SHORT_ANGLE(0.025f));
if (actor->_5E8 > 0.0f) {
add_calc_short_angle2(&actor->_644, actor->_634, CALC_EASE2(0.1f), DEG2SHORT_ANGLE(0.625f),
add_calc_short_angle2(&actor->_644, actor->hide_camera_angle, CALC_EASE2(0.1f), DEG2SHORT_ANGLE(0.625f),
DEG2SHORT_ANGLE(0.025f));
} else {
add_calc_short_angle2(&actor->_644, DEG2SHORT_ANGLE(0), CALC_EASE2(0.1f), DEG2SHORT_ANGLE(0.625f),
@@ -102,8 +102,8 @@ void mfish_big_fish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
}
add_calc2(&actor->_5AC.x, actor->_5AC.z, 0.25f, 0.02f);
if (actor->activityFrameCount-- < 0) {
if ((actor->fishIDEnum == aGYO_TYPE_ARAPAIMA && actor->_600 < 10.0f) ||
(actor->fishIDEnum == aGYO_TYPE_GIANT_SNAKEHEAD && actor->_5FC < 10.0f)) {
if ((actor->fish_idx == aGYO_TYPE_ARAPAIMA && actor->_600 < 10.0f) ||
(actor->fish_idx == aGYO_TYPE_GIANT_SNAKEHEAD && actor->_5FC < 10.0f)) {
if (actor->_60C.y > 0) {
actor->_612.y = DEG2SHORT_ANGLE(90);
} else {
@@ -114,18 +114,18 @@ void mfish_big_fish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
if (RANDOM_F(1.0f) < GETREG(TAKREG, 0x46) * 0.01f + 0.5f) {
actor->_642 = DEG2SHORT_ANGLE(RANDOM2_F(2.0f) + 3.0f);
if (actor->fishIDEnum == aGYO_TYPE_ARAPAIMA || GETREG(TAKREG, 0x39) == 1) {
actor->_634 = DEG2SHORT_ANGLE(RANDOM_F(10.f) + 20.f);
if (actor->fish_idx == aGYO_TYPE_ARAPAIMA || GETREG(TAKREG, 0x39) == 1) {
actor->hide_camera_angle = DEG2SHORT_ANGLE(RANDOM_F(10.f) + 20.f);
actor->_640 = DEG2SHORT_ANGLE(RANDOM_F(10.f));
actor->_5AC.z = Rnd_EX_f(1.0f);
} else {
actor->_634 = DEG2SHORT_ANGLE(RANDOM_F(5.0f) + 15.0f);
actor->hide_camera_angle = DEG2SHORT_ANGLE(RANDOM_F(5.0f) + 15.0f);
actor->_640 = DEG2SHORT_ANGLE(RANDOM_F(10.f));
actor->_5AC.z = Rnd_EX_f(0.5f);
}
} else {
actor->_642 = DEG2SHORT_ANGLE(RANDOM2_F(2.0f) + 3.0f);
actor->_634 = 0;
actor->hide_camera_angle = 0;
actor->_640 = 0;
actor->_5AC.z = 0.0f;
actor->_632 = DEG2SHORT_ANGLE(GETREG(TAKREG, 0x48) + 45.0f);
@@ -136,7 +136,7 @@ void mfish_big_fish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
actor->_5F0 = -0.01f;
actor->_5F4 = RANDOM2_F(5.0f);
actor->_642 = 0;
actor->_634 = 0;
actor->hide_camera_angle = 0;
actor->_640 = 0;
actor->_5AC.z = 0.0f;
}
@@ -153,7 +153,7 @@ BOOL mfish_bfish_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joi
if (joint_idx == 1) {
f32 v;
int i;
if (actor->fishIDEnum == aGYO_TYPE_ARAPAIMA) {
if (actor->fish_idx == aGYO_TYPE_ARAPAIMA) {
v = 0.015f;
} else {
v = 0.02f;
@@ -167,7 +167,7 @@ BOOL mfish_bfish_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joi
} else if (joint_idx == 2) {
f32 v;
int i;
if (actor->fishIDEnum == aGYO_TYPE_ARAPAIMA) {
if (actor->fish_idx == aGYO_TYPE_ARAPAIMA) {
v = 0.025f;
} else {
v = 0.035f;
@@ -180,7 +180,7 @@ BOOL mfish_bfish_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joi
joint_rot->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20));
Matrix_scale(1.0f, 1.0f + v * sin_s(actor->_63A + DEG2SHORT_ANGLE(270)),
1.0f + v * sin_s(actor->_63A + DEG2SHORT_ANGLE(90)), 1);
} else if (joint_idx == 3 && actor->fishIDEnum == aGYO_TYPE_ARAPAIMA) {
} else if (joint_idx == 3 && actor->fish_idx == aGYO_TYPE_ARAPAIMA) {
int i = joint_rot->y - actor->_618.z +
(int)(actor->_644 * (1.0f + 0.01f * GETREG(TAKREG, 0x16)) *
sin_s(actor->_646 + DEG2SHORT_ANGLE(-180.f + GETREG(TAKREG, 0x18))));
@@ -191,19 +191,19 @@ BOOL 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) {
YET_SKELETON* skele = &actor->_38;
mfish_keyframe_c* skele = &actor->kf;
Mtx* mtxp;
if (gamex->frame_counter & 1) {
mtxp = &skele->_70;
mtxp = skele->mtx[0];
} else {
mtxp = &skele->_2b0;
mtxp = skele->mtx[1];
}
OPEN_DISP(gamex->graph);
Matrix_translate(actor->position.x, actor->position.y, actor->position.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_translate(0.0f, 0.0f, actor->init_data.ofs_z, 1);
Matrix_scale(actor->init_data.renderScale, actor->init_data.renderScale, actor->init_data.renderScale, 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_bfish_before_disp, NULL, actor);
cKF_Si3_draw_R_SV(gamex, &skele->keyframe, mtxp, mfish_bfish_before_disp, NULL, actor);
CLOSE_DISP(gamex->graph);
}
+9 -9
View File
@@ -114,15 +114,15 @@ void mfish_dojou_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
actor->position.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,
add_calc2(&actor->kf.keyframe.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_calc2(&actor->kf.keyframe.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->position;
actor->objchk_pos = actor->position;
Museum_Fish_BGCheck(actor, gamex);
if (actor->position.y < actor->init_data._08 + 50.f) {
actor->position.y = actor->init_data._08 + 50.f;
@@ -189,23 +189,23 @@ BOOL mfish_dojou_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joi
}
void mfish_dojou_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
YET_SKELETON* skele = &actor->_38;
mfish_keyframe_c* skele = &actor->kf;
Mtx* mtxp;
s16 s;
if (gamex->frame_counter & 1) {
mtxp = &skele->_70;
mtxp = skele->mtx[0];
} else {
mtxp = &skele->_2b0;
mtxp = skele->mtx[1];
}
s = actor->_60C.x;
OPEN_DISP(gamex->graph);
Matrix_translate(actor->position.x, actor->position.y, actor->position.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_translate(0.0f, 0.0f, actor->init_data.ofs_z * (0.5f * cos_s(s) + ABS(cos_s(s))), 1);
Matrix_RotateX(s, 1);
Matrix_translate(0.0f, 0.0f, -actor->init_data._24 * 0.5f * cos_s(s), 1);
Matrix_translate(0.0f, 0.0f, -actor->init_data.ofs_z * 0.5f * cos_s(s), 1);
Matrix_scale(actor->init_data.renderScale, actor->init_data.renderScale, actor->init_data.renderScale, 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_dojou_before_disp, NULL, actor);
cKF_Si3_draw_R_SV(gamex, &skele->keyframe, mtxp, mfish_dojou_before_disp, NULL, actor);
CLOSE_DISP(gamex->graph);
}
+10 -10
View File
@@ -29,16 +29,16 @@ void mfish_donko_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
mfish_body_wind_anime_play(actor, gamex);
if (actor->activityFrameCount > actor->savedActivityFrameCount - 10) {
actor->_38._00.frame_control.speed = (actor->_5E8 * 3.0f + 1.0f) * 0.5f;
actor->kf.keyframe.frame_control.speed = (actor->_5E8 * 3.0f + 1.0f) * 0.5f;
} else {
add_calc2(&actor->_38._00.frame_control.speed, actor->_5E8 * 2.0f + 0.125f, 0.2f, 0.1f);
add_calc2(&actor->kf.keyframe.frame_control.speed, actor->_5E8 * 2.0f + 0.125f, 0.2f, 0.1f);
}
actor->_5AC.y = 0.0f;
actor->_5D0.x = actor->_5E8 * sin_s(actor->_60C.y);
actor->_5D0.z = actor->_5E8 * cos_s(actor->_60C.y);
x = (actor->position.x - (suisou_pos[actor->group].x + 22.5f));
z = (actor->position.z - (suisou_pos[actor->group].z - 31.25f));
x = (actor->position.x - (suisou_pos[actor->tank].x + 22.5f));
z = (actor->position.z - (suisou_pos[actor->tank].z - 31.25f));
actor->_5D0.x -= x * 0.002f;
actor->_5D0.z -= z * 0.002f;
@@ -112,21 +112,21 @@ BOOL mfish_donko_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joi
}
void mfish_donko_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
YET_SKELETON* skele = &actor->_38;
mfish_keyframe_c* skele = &actor->kf;
Mtx* mtxp;
if (gamex->frame_counter & 1) {
mtxp = &skele->_70;
mtxp = skele->mtx[0];
} else {
mtxp = &skele->_2b0;
mtxp = skele->mtx[1];
}
OPEN_DISP(gamex->graph);
Matrix_translate(actor->position.x, actor->position.y, actor->position.z, 0);
Matrix_RotateY(actor->_60C.y, 1);
Matrix_translate(0.0f, 0.0f, actor->init_data._24 * 1.5f, 1);
Matrix_translate(0.0f, 0.0f, actor->init_data.ofs_z * 1.5f, 1);
Matrix_RotateX(actor->_60C.x, 1);
Matrix_translate(0.0f, 0.0f, -actor->init_data._24 * 0.5f, 1);
Matrix_translate(0.0f, 0.0f, -actor->init_data.ofs_z * 0.5f, 1);
Matrix_scale(actor->init_data.renderScale, actor->init_data.renderScale, actor->init_data.renderScale, 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_donko_before_disp, NULL, actor);
cKF_Si3_draw_R_SV(gamex, &skele->keyframe, mtxp, mfish_donko_before_disp, NULL, actor);
CLOSE_DISP(gamex->graph);
}
+10 -10
View File
@@ -62,7 +62,7 @@ void mfish_gupi_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
s16 s;
//! BUG: unused?
RANDOM_F(1.0f);
s = search_position_angleY(&suisou_pos[actor->group], &actor->position);
s = search_position_angleY(&suisou_pos[actor->tank], &actor->position);
actor->_5F8 = 0.0f;
actor->_612.y = s + DEG2SHORT_ANGLE(RANDOM2_F(90.0));
actor->activityFrameCount =
@@ -129,13 +129,13 @@ void mfish_gupi_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
mfish_onefish_mv(actor, gamex);
if (actor->_5F0 - 0.01f > actor->_5E8 && actor->_5F0 > 0.1f) {
actor->_38._00.frame_control.speed =
actor->kf.keyframe.frame_control.speed =
(1.0f + GETREG(TAKREG, 0x28) * 0.1f) * 0.5f + (3.0f + GETREG(TAKREG, 0x29) * 0.1f) * actor->_5E8;
} else {
add_calc2(&actor->_38._00.frame_control.speed, actor->_5E8 * 2.0f + 0.5f, 0.2f, 0.1f);
add_calc2(&actor->kf.keyframe.frame_control.speed, actor->_5E8 * 2.0f + 0.5f, 0.2f, 0.1f);
}
actor->_63A += (s16)DEG2SHORT_ANGLE2(GETREG(TAKREG, 0x47) + 3.0f);
actor->_5B8 = actor->position;
actor->objchk_pos = actor->position;
Museum_Fish_BGCheck(actor, gamex);
if (actor->position.y < (actor->_5F4 - 30.f) + actor->init_data._08) {
@@ -193,23 +193,23 @@ BOOL mfish_gupi_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int join
}
void mfish_gupi_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
YET_SKELETON* skele = &actor->_38;
mfish_keyframe_c* skele = &actor->kf;
Mtx* mtxp;
s16 v;
if (gamex->frame_counter & 1) {
mtxp = &skele->_70;
mtxp = skele->mtx[0];
} else {
mtxp = &skele->_2b0;
mtxp = skele->mtx[1];
}
v = actor->_60C.x * 0.7f;
OPEN_DISP(gamex->graph);
Matrix_translate(actor->position.x, actor->position.y, actor->position.z, 0);
Matrix_RotateY(actor->_60C.y, 1);
Matrix_translate(0.0f, 0.0f, actor->init_data._24 * 1.5f, 1);
Matrix_translate(0.0f, 0.0f, actor->init_data.ofs_z * 1.5f, 1);
Matrix_RotateX(v, 1);
Matrix_translate(0.0f, 0.0f, -actor->init_data._24 * 0.5f, 1);
Matrix_translate(0.0f, 0.0f, -actor->init_data.ofs_z * 0.5f, 1);
Matrix_scale(actor->init_data.renderScale, actor->init_data.renderScale, actor->init_data.renderScale, 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_gupi_before_disp, NULL, actor);
cKF_Si3_draw_R_SV(gamex, &skele->keyframe, mtxp, mfish_gupi_before_disp, NULL, actor);
CLOSE_DISP(gamex->graph);
}
+35 -35
View File
@@ -3,43 +3,43 @@
extern cKF_Skeleton_R_c cKF_bs_r_obj_museum5_hasu;
extern cKF_Animation_R_c cKF_ba_r_obj_museum5_hasu;
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, 0.5f,
void mfish_hasu_ct(mfish_hasu_c* actor, GAME* gamex) {
cKF_SkeletonInfo_R_ct(&actor->keyframe, &cKF_bs_r_obj_museum5_hasu, &cKF_ba_r_obj_museum5_hasu, actor->work,
actor->morph);
cKF_SkeletonInfo_R_init_standard_repeat_speedsetandmorph(&actor->keyframe, &cKF_ba_r_obj_museum5_hasu, NULL, 0.5f,
0.0f);
}
void mfish_hasu_mv(YET_SKELETON_2* actor, GAME* gamex) {
cKF_SkeletonInfo_R_play(&actor->_00._00);
void mfish_hasu_mv(mfish_hasu_c* actor, GAME* gamex) {
cKF_SkeletonInfo_R_play(&actor->keyframe);
}
void mfish_hasu_dw(YET_SKELETON_2* actor, GAME* gamex) {
void mfish_hasu_dw(mfish_hasu_c* actor, GAME* gamex) {
Mtx* mtxp;
if (gamex->frame_counter & 1) {
mtxp = &actor->_00._70;
mtxp = actor->mtx[0];
} else {
mtxp = &actor->_00._2b0;
mtxp = actor->mtx[1];
}
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._00, mtxp, NULL, NULL, NULL);
cKF_Si3_draw_R_SV(gamex, &actor->keyframe, 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) {
YET_SKELETON* skele = &actor->_38;
YET_SKELETON_2* keyframe = actor->_590;
mfish_keyframe_c* skele = &actor->kf;
mfish_hasu_c* keyframe = actor->hasu_p;
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, 0.5f, 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, 0.5f,
cKF_SkeletonInfo_R_ct(&skele->keyframe, skele->_54C, skele->_550[0], skele->work, skele->morph);
cKF_SkeletonInfo_R_init_standard_repeat_speedsetandmorph(&skele->keyframe, skele->_550[0], NULL, 0.5f, 0.0f);
cKF_SkeletonInfo_R_ct(&keyframe->keyframe, &cKF_bs_r_obj_museum5_hasu, &cKF_ba_r_obj_museum5_hasu,
keyframe->work, keyframe->morph);
cKF_SkeletonInfo_R_init_standard_repeat_speedsetandmorph(&keyframe->keyframe, &cKF_ba_r_obj_museum5_hasu, NULL, 0.5f,
0.0f);
actor->position.x = 453.9f;
actor->position.y = 116.0f;
@@ -61,18 +61,18 @@ void mfish_kaeru_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
void mfish_kaeru_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
GAME_PLAY* game = (GAME_PLAY*)gamex;
YET_SKELETON* skele1 = &actor->_38;
YET_SKELETON_2* skele2 = actor->_590;
cKF_SkeletonInfo_R_play(&skele1->_00);
cKF_SkeletonInfo_R_play(&skele2->_00._00);
mfish_keyframe_c* skele1 = &actor->kf;
mfish_hasu_c* skele2 = actor->hasu_p;
cKF_SkeletonInfo_R_play(&skele1->keyframe);
cKF_SkeletonInfo_R_play(&skele2->keyframe);
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) {
if (F32_IS_ZERO(skele1->keyframe.frame_control.current_frame - skele1->keyframe.frame_control.start_frame)) {
actor->_63E--;
if (actor->_63E <= 0) {
if (actor->_640 == 1) {
@@ -81,7 +81,7 @@ void mfish_kaeru_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
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);
cKF_SkeletonInfo_R_init_standard_repeat_morph(&skele1->keyframe, skele1->_550[actor->_640], NULL, 0.f);
}
if (actor->_640 == 1) {
sAdo_OngenTrgStart(0x77, &actor->position);
@@ -162,7 +162,7 @@ void mfish_kaeru_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
BOOL hasu_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, u8* joint_flags,
void* arg, s_xyz* joint_rot, xyz_t* joint_pos) {
MUSEUM_FISH_PRIVATE_DATA* actor = (MUSEUM_FISH_PRIVATE_DATA*)arg;
YET_SKELETON_2* v2 = actor->_590;
mfish_hasu_c* v2 = actor->hasu_p;
if (joint_idx == 7) {
joint_pos->z += v2->_55C * sin_s(v2->_568);
} else if (joint_idx == 4) {
@@ -176,7 +176,7 @@ BOOL hasu_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx,
BOOL hasu_after_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, u8* joint_flags,
void* arg, s_xyz* joint_rot, xyz_t* joint_pos) {
MUSEUM_FISH_PRIVATE_DATA* actor = (MUSEUM_FISH_PRIVATE_DATA*)arg;
YET_SKELETON_2* skele = actor->_590;
mfish_hasu_c* skele = actor->hasu_p;
if (joint_idx == 9) {
Matrix_Position_Zero(&actor->position);
actor->position.y = skele->_564 * actor->init_data.renderScale * sin_s(skele->_56C) + 116.0f;
@@ -185,15 +185,15 @@ BOOL hasu_after_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx,
}
void mfish_kaeru_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
YET_SKELETON* skele = &actor->_38;
YET_SKELETON_2* keyframe = actor->_590;
mfish_keyframe_c* skele = &actor->kf;
mfish_hasu_c* keyframe = actor->hasu_p;
Mtx *mtxp, *mtxp2;
if (gamex->frame_counter & 1) {
mtxp = &skele->_70;
mtxp2 = &keyframe->_00._70;
mtxp = skele->mtx[0];
mtxp2 = keyframe->mtx[0];
} else {
mtxp = &skele->_2b0;
mtxp2 = &keyframe->_00._2b0;
mtxp = skele->mtx[1];
mtxp2 = keyframe->mtx[1];
}
OPEN_DISP(gamex->graph);
@@ -201,13 +201,13 @@ void mfish_kaeru_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
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);
cKF_Si3_draw_R_SV(gamex, &keyframe->keyframe, mtxp2, hasu_before_disp, hasu_after_disp, actor);
Matrix_translate(actor->position.x + actor->_5AC.x, actor->position.y, actor->position.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_translate(0.0f, 0.0f, actor->init_data.ofs_z, 1);
Matrix_scale(actor->init_data.renderScale, actor->init_data.renderScale, actor->init_data.renderScale, 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);
cKF_Si3_draw_R_SV(gamex, &skele->keyframe, mtxp, NULL, NULL, actor);
CLOSE_DISP(gamex->graph);
}
+11 -11
View File
@@ -17,7 +17,7 @@ void mfish_ito_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
actor->_63A = qrand();
actor->_63C = qrand();
actor->_640 = 0;
actor->_634 = 0;
actor->hide_camera_angle = 0;
actor->_632 = 0;
actor->_644 = 0;
actor->_5AC.x = 0.0f;
@@ -29,7 +29,7 @@ void mfish_ito_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
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->kf.keyframe.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);
@@ -50,10 +50,10 @@ void mfish_ito_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
DEG2SHORT_ANGLE(0.025f));
add_calc(&actor->position.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),
add_calc_short_angle2(&actor->hide_camera_angle, 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),
add_calc_short_angle2(&actor->_644, actor->hide_camera_angle, 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->activityFrameCount-- < 0) {
@@ -65,14 +65,14 @@ void mfish_ito_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
}
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->hide_camera_angle = 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->hide_camera_angle = 0;
actor->_640 = 0;
actor->_5AC.z = 0.0f;
}
@@ -110,19 +110,19 @@ BOOL mfish_ito_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint
void mfish_ito_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
YET_SKELETON* skele = &actor->_38;
mfish_keyframe_c* skele = &actor->kf;
Mtx* mtxp;
if (gamex->frame_counter & 1) {
mtxp = &skele->_70;
mtxp = skele->mtx[0];
} else {
mtxp = &skele->_2b0;
mtxp = skele->mtx[1];
}
OPEN_DISP(gamex->graph);
Matrix_translate(actor->position.x, actor->position.y + actor->_5AC.y, actor->position.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_translate(0.0f, 0.0f, actor->init_data.ofs_z, 1);
Matrix_scale(actor->init_data.renderScale, actor->init_data.renderScale, actor->init_data.renderScale, 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_ito_before_disp, NULL, actor);
cKF_Si3_draw_R_SV(gamex, &skele->keyframe, mtxp, mfish_ito_before_disp, NULL, actor);
CLOSE_DISP(gamex->graph);
}
+12 -12
View File
@@ -14,7 +14,7 @@ void mfish_kaseki_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
actor->_5AC = ZeroVec;
actor->_638 = qrand();
actor->_622 = 0;
actor->_634 = 0;
actor->hide_camera_angle = 0;
actor->activityFrameCount = actor->init_data.activeFramesMin + (s16)RANDOM_F(actor->init_data.activeFramesRange);
actor->_624 = 1;
actor->_594 = NULL;
@@ -31,7 +31,7 @@ void mfish_kaseki_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
void mfish_kaseki_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
s16 s = ABS(actor->_622) * (actor->init_data._30 * (GETREG(TAKREG, 0x1d) * 0.001f + 0.5f) / 32749.0f);
s = MIN(actor->_634, MAX(s, DEG2SHORT_ANGLE2(5)));
s = MIN(actor->hide_camera_angle, MAX(s, DEG2SHORT_ANGLE2(5)));
add_calc_short_angle2(&actor->_632, 0, CALC_EASE(0.5), DEG2SHORT_ANGLE(5), DEG2SHORT_ANGLE(0.5f));
actor->_636 += 455;
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y + (s16)(actor->_632 * sin_s(actor->_636)),
@@ -110,10 +110,10 @@ void mfish_kaseki_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
actor->currentProcess(actor, game);
add_calc2(&actor->position.y, actor->init_data._0C, 0.5f, 0.1f);
if (ABS(actor->_622) > DEG2SHORT_ANGLE(10)) {
add_calc_short_angle2(&actor->_634, DEG2SHORT_ANGLE(20), CALC_EASE(0.25f), DEG2SHORT_ANGLE(0.25f),
add_calc_short_angle2(&actor->hide_camera_angle, DEG2SHORT_ANGLE(20), CALC_EASE(0.25f), DEG2SHORT_ANGLE(0.25f),
DEG2SHORT_ANGLE(0));
} else {
add_calc_short_angle2(&actor->_634, DEG2SHORT_ANGLE(1), CALC_EASE(0.25f), DEG2SHORT_ANGLE(1.25f),
add_calc_short_angle2(&actor->hide_camera_angle, DEG2SHORT_ANGLE(1), CALC_EASE(0.25f), DEG2SHORT_ANGLE(1.25f),
DEG2SHORT_ANGLE(0));
}
@@ -139,11 +139,11 @@ void mfish_kaseki_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
actor->position.x += actor->_5D0.x;
actor->position.z += actor->_5D0.z;
mfish_onefish_mv(actor, game);
actor->_38._00.frame_control.speed = actor->_5E8 * 0.75f + 0.25f;
actor->kf.keyframe.frame_control.speed = actor->_5E8 * 0.75f + 0.25f;
mfish_body_wind_anime_play(actor, game);
Museum_Fish_BGCheck(actor, game);
if (actor->position.y < 55.0f - actor->init_data._04) {
actor->position.y = 55.0f - actor->init_data._04;
if (actor->position.y < 55.0f - actor->init_data.ofs_y) {
actor->position.y = 55.0f - actor->init_data.ofs_y;
}
actor->activityFrameCount--;
}
@@ -174,19 +174,19 @@ BOOL mfish_kaseki_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int jo
}
void mfish_kaseki_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
YET_SKELETON* skele = &actor->_38;
mfish_keyframe_c* skele = &actor->kf;
Mtx* mtxp;
if (gamex->frame_counter & 1) {
mtxp = &skele->_70;
mtxp = skele->mtx[0];
} else {
mtxp = &skele->_2b0;
mtxp = skele->mtx[1];
}
OPEN_DISP(gamex->graph);
Matrix_translate(actor->position.x, actor->position.y, actor->position.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_translate(0.0f, 0.0f, actor->init_data.ofs_z, 1);
Matrix_scale(actor->init_data.renderScale, actor->init_data.renderScale, actor->init_data.renderScale, 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_kaseki_before_disp, NULL, actor);
cKF_Si3_draw_R_SV(gamex, &skele->keyframe, mtxp, mfish_kaseki_before_disp, NULL, actor);
CLOSE_DISP(gamex->graph);
}
+12 -12
View File
@@ -57,7 +57,7 @@ void mfish_kingyo_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
}
} else if (actor->_5F8 > actor->init_data._08 * 30.f) {
f32 v = RANDOM_F(1.0f);
s16 s = search_position_angleY(&suisou_pos[actor->group], &actor->position);
s16 s = search_position_angleY(&suisou_pos[actor->tank], &actor->position);
actor->_5F8 = 0.0f;
actor->_612.y = s + DEG2SHORT_ANGLE(RANDOM2_F(90));
actor->activityFrameCount =
@@ -126,7 +126,7 @@ void mfish_kingyo_peck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
}
if (actor->_62E_flags & 0x20 && dist > 40.f) {
if ((s16)(actor->_612.y - actor->_62A) > 0) {
if ((s16)(actor->_612.y - actor->escape_angle) > 0) {
actor->_612.y += DEG2SHORT_ANGLE(90);
} else {
actor->_612.y -= DEG2SHORT_ANGLE(90);
@@ -147,7 +147,7 @@ void mfish_kingyo_peck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
actor->savedActivityFrameCount = actor->activityFrameCount;
actor->_640 = RANDOM_F(130.f);
}
} else if (MF_Control_Actor->_14db4 != actor->group) {
} else if (MF_Control_Actor->player_area != actor->tank) {
mfish_kingyo_turn_init(actor, gamex);
} else if (mfish_peck_wall_check(actor, gamex)) {
actor->_5F0 = 0.0f;
@@ -190,15 +190,15 @@ void mfish_kingyo_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
if ((((actor->_5F0 - 0.01f) > actor->_5E8) ||
(actor->activityFrameCount > (s16)(actor->savedActivityFrameCount - actor->_640))) &&
actor->_5F0 > 0.1f) {
actor->_38._00.frame_control.speed =
actor->kf.keyframe.frame_control.speed =
(5.0f + GETREG(TAKREG, 0x28) * 0.1f) * 0.5f + (4.0f + GETREG(TAKREG, 0x29) * 0.1f) * actor->_5E8;
} else {
add_calc2(&actor->_5F0, GETREG(TAKREG, 0x31) * 0.001f + 0.05f, GETREG(TAKREG, 0x32) * 0.001f + 0.01f,
GETREG(TAKREG, 0x33) * 0.001f + 0.002f);
add_calc2(&actor->_38._00.frame_control.speed, actor->_5E8 * 2.0f + 0.5f, 0.2f, 0.1f);
add_calc2(&actor->kf.keyframe.frame_control.speed, actor->_5E8 * 2.0f + 0.5f, 0.2f, 0.1f);
}
actor->_63A += (s16)DEG2SHORT_ANGLE2(GETREG(TAKREG, 0x47) + 3.0f);
actor->_5B8 = actor->position;
actor->objchk_pos = actor->position;
Museum_Fish_BGCheck(actor, gamex);
if (actor->position.y < 60.f + actor->init_data._08) {
actor->position.y = 60.f + actor->init_data._08;
@@ -242,23 +242,23 @@ BOOL mfish_kingyo_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int jo
}
void mfish_kingyo_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
YET_SKELETON* skele = &actor->_38;
mfish_keyframe_c* skele = &actor->kf;
Mtx* mtxp;
s16 s;
if (gamex->frame_counter & 1) {
mtxp = &skele->_70;
mtxp = skele->mtx[0];
} else {
mtxp = &skele->_2b0;
mtxp = skele->mtx[1];
}
s = actor->_60C.x * (GETREG(TAKREG, 0x41) * 0.01f + 0.75f);
OPEN_DISP(gamex->graph);
Matrix_translate(actor->position.x, actor->position.y, actor->position.z, 0);
Matrix_RotateY(actor->_60C.y, 1);
Matrix_translate(0.0f, 0.0f, actor->init_data._24 * 1.5f, 1);
Matrix_translate(0.0f, 0.0f, actor->init_data.ofs_z * 1.5f, 1);
Matrix_RotateX(s, 1);
Matrix_translate(0.0f, 0.0f, -actor->init_data._24 * 0.5f, 1);
Matrix_translate(0.0f, 0.0f, -actor->init_data.ofs_z * 0.5f, 1);
Matrix_scale(actor->init_data.renderScale, actor->init_data.renderScale, actor->init_data.renderScale, 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_kingyo_before_disp, NULL, actor);
cKF_Si3_draw_R_SV(gamex, &skele->keyframe, mtxp, mfish_kingyo_before_disp, NULL, actor);
CLOSE_DISP(gamex->graph);
}
+17 -17
View File
@@ -55,7 +55,7 @@ void mfish_koi_move_smooth(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
if (ABS(vv) < DEG2SHORT_ANGLE(90) && ABS(actor->_622) < DEG2SHORT_ANGLE(15)) {
if (actor->currentProcess == mfish_koi_dummy_process) {
o = &actor->_634;
o = &actor->hide_camera_angle;
} else {
o = &actor->_612.y;
}
@@ -89,15 +89,15 @@ void mfish_koi_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
}
void mfish_koi_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
actor->_634 = mfish_get_hide_camera_angle(actor);
actor->hide_camera_angle = mfish_get_hide_camera_angle(actor);
if (actor->_62E_flags & 0x1e) {
if ((s16)(actor->_612.y - actor->_62C) > 0) {
actor->_634 = actor->_62C + DEG2SHORT_ANGLE(90);
actor->hide_camera_angle = actor->_62C + DEG2SHORT_ANGLE(90);
} else {
actor->_634 = actor->_62C - DEG2SHORT_ANGLE(90);
actor->hide_camera_angle = actor->_62C - DEG2SHORT_ANGLE(90);
}
} else {
add_calc_short_angle2(&actor->_634, actor->_612.y, CALC_EASE(0.4), DEG2SHORT_ANGLE(7.5f),
add_calc_short_angle2(&actor->hide_camera_angle, actor->_612.y, CALC_EASE(0.4), DEG2SHORT_ANGLE(7.5f),
DEG2SHORT_ANGLE(0.5f));
}
actor->_5F0 = MIN(MAX(actor->init_data._10, 0.1f), actor->_5E8);
@@ -106,7 +106,7 @@ void mfish_koi_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
}
void mfish_koi_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
add_calc_short_angle2(&actor->_612.y, actor->_634, CALC_EASE2(0.2f), DEG2SHORT_ANGLE(3.75f),
add_calc_short_angle2(&actor->_612.y, actor->hide_camera_angle, CALC_EASE2(0.2f), DEG2SHORT_ANGLE(3.75f),
DEG2SHORT_ANGLE(0.25f));
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y, CALC_EASE2(0.25f), DEG2SHORT_ANGLE(3.75f),
DEG2SHORT_ANGLE(0.125f));
@@ -208,7 +208,7 @@ void mfish_koi_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
s3 = -ABS(s3);
}
actor->_62E_flags &= ~0xC0;
} else if (actor->_62E_flags & 0x20 && (actor->_62A - actor->_60C.y) < 0) {
} else if (actor->_62E_flags & 0x20 && (actor->escape_angle - actor->_60C.y) < 0) {
s3 = -s3;
}
@@ -410,7 +410,7 @@ void mfish_koi_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
} else if (actor->currentProcess == mfish_koi_normal_process) {
if ((actor->_62E_flags & 0x1e && ABS((s16)(actor->_62C - actor->_60C.y)) < DEG2SHORT_ANGLE(30)) ||
(actor->_62E_flags & 0x20 &&
ABS((s16)(DEG2SHORT_ANGLE(180) + actor->_62A - actor->_60C.y)) < DEG2SHORT_ANGLE(30))) {
ABS((s16)(DEG2SHORT_ANGLE(180) + actor->escape_angle - actor->_60C.y)) < DEG2SHORT_ANGLE(30))) {
actor->activityFrameCount =
actor->init_data.activeFramesMin + (s16)RANDOM_F(actor->init_data.activeFramesRange);
actor->savedActivityFrameCount = actor->activityFrameCount;
@@ -442,13 +442,13 @@ void mfish_koi_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
if (actor->_640 > 0) {
actor->_640--;
if (actor->currentProcess == mfish_koi_dummy_process || actor->currentProcess == mfish_koi_long_move_process) {
add_calc2(&actor->_38._00.frame_control.speed,
add_calc2(&actor->kf.keyframe.frame_control.speed,
(actor->_5AC.x * MAX(actor->_5F0 - actor->_5E8, 0.0f)) /
(actor->init_data._10 + actor->init_data._14) +
0.15f,
0.5f, 0.5f);
} else {
add_calc2(&actor->_38._00.frame_control.speed,
add_calc2(&actor->kf.keyframe.frame_control.speed,
(actor->_5AC.x * MAX(actor->_5F0 - actor->_5E8, 0.0f)) /
(actor->init_data._10 + actor->init_data._14) +
0.15f,
@@ -461,7 +461,7 @@ void mfish_koi_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
(actor->init_data._14 + actor->init_data._10),
0.5f, 0.1f);
} else {
add_calc2(&actor->_38._00.frame_control.speed,
add_calc2(&actor->kf.keyframe.frame_control.speed,
(actor->_5E8 * 2.0f) / (actor->init_data._10 + actor->init_data._14) + 0.3f, 0.2f, 0.1f);
add_calc2(&actor->_5AC.z, 1.0f, 0.1f, 0.025f);
}
@@ -490,22 +490,22 @@ BOOL mfish_koi_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint
}
void mfish_koi_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
YET_SKELETON* skele = &actor->_38;
mfish_keyframe_c* skele = &actor->kf;
Mtx* mtxp;
if (gamex->frame_counter & 1) {
mtxp = &skele->_70;
mtxp = skele->mtx[0];
} else {
mtxp = &skele->_2b0;
mtxp = skele->mtx[1];
}
OPEN_DISP(gamex->graph);
Matrix_translate(actor->position.x, actor->position.y, actor->position.z, 0);
Matrix_RotateY(actor->_60C.y, 1);
Matrix_translate(0.0f, actor->init_data._04 * 0.25f, actor->init_data._24 * 1.5f, 1);
Matrix_translate(0.0f, actor->init_data.ofs_y * 0.25f, actor->init_data.ofs_z * 1.5f, 1);
Matrix_RotateX(actor->_60C.x, 1);
Matrix_RotateZ(MY_CLAMP(-(actor->_618.z >> 2), DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20)), 1);
Matrix_translate(0.0f, -actor->init_data._04 * 0.25f, -actor->init_data._24 * 0.5f, 1);
Matrix_translate(0.0f, -actor->init_data.ofs_y * 0.25f, -actor->init_data.ofs_z * 0.5f, 1);
Matrix_scale(actor->init_data.renderScale, actor->init_data.renderScale, actor->init_data.renderScale, 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_koi_before_disp, NULL, actor);
cKF_Si3_draw_R_SV(gamex, &skele->keyframe, mtxp, mfish_koi_before_disp, NULL, actor);
CLOSE_DISP(gamex->graph);
}
+1 -1
View File
@@ -171,7 +171,7 @@ void mfish_kurage_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
actor->position.y += actor->_5D0.y + actor->_5DC.y;
actor->position.z += actor->_5D0.z + actor->_5DC.z;
actor->_5B8 = actor->position;
actor->objchk_pos = actor->position;
Museum_Fish_BGCheck(actor, gamex);
if (actor->position.y < 55.0f + actor->init_data._08) {
+10 -10
View File
@@ -20,7 +20,7 @@ void mfish_medaka_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
}
void mfish_medaka_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
if (actor->group == 2) {
if (actor->tank == mfish_TANK_2) {
if (actor->activityFrameCount < 0) {
actor->_5F0 = actor->init_data._10 + Rnd_EX_f(actor->init_data._14);
}
@@ -58,7 +58,7 @@ void mfish_medaka_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
}
} else if (actor->_5F8 > actor->init_data._08 * 30.f) {
f32 v = RANDOM_F(1.0f);
s16 s = search_position_angleY(&suisou_pos[actor->group], &actor->position);
s16 s = search_position_angleY(&suisou_pos[actor->tank], &actor->position);
actor->_5F8 = 0.0f;
actor->_612.y = s + DEG2SHORT_ANGLE(RANDOM2_F(90));
actor->activityFrameCount =
@@ -120,8 +120,8 @@ void mfish_medaka_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
actor->position.y += actor->_5D0.y + p.y;
actor->position.z += actor->_5D0.z + p.z;
mfish_onefish_mv(actor, gamex);
add_calc2(&actor->_38._00.frame_control.speed, actor->_5E8 * 2.0f + 0.5f, 0.2f, 0.1f);
actor->_5B8 = actor->position;
add_calc2(&actor->kf.keyframe.frame_control.speed, actor->_5E8 * 2.0f + 0.5f, 0.2f, 0.1f);
actor->objchk_pos = actor->position;
Museum_Fish_BGCheck(actor, gamex);
if (actor->position.y < 70.f + actor->init_data._08) {
actor->position.y = 70.f + actor->init_data._08;
@@ -156,23 +156,23 @@ BOOL mfish_medaka_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int jo
}
void mfish_medaka_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
YET_SKELETON* skele = &actor->_38;
mfish_keyframe_c* skele = &actor->kf;
Mtx* mtxp;
s16 s;
if (gamex->frame_counter & 1) {
mtxp = &skele->_70;
mtxp = skele->mtx[0];
} else {
mtxp = &skele->_2b0;
mtxp = skele->mtx[1];
}
s = actor->_60C.x * (GETREG(TAKREG, 0x41) * 0.01f + 0.75f);
OPEN_DISP(gamex->graph);
Matrix_translate(actor->position.x, actor->position.y, actor->position.z, 0);
Matrix_RotateY(actor->_60C.y, 1);
Matrix_translate(0.0f, 0.0f, actor->init_data._24 * 1.5f, 1);
Matrix_translate(0.0f, 0.0f, actor->init_data.ofs_z * 1.5f, 1);
Matrix_RotateX(s, 1);
Matrix_translate(0.0f, 0.0f, -actor->init_data._24 * 0.5f, 1);
Matrix_translate(0.0f, 0.0f, -actor->init_data.ofs_z * 0.5f, 1);
Matrix_scale(actor->init_data.renderScale, actor->init_data.renderScale, actor->init_data.renderScale, 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_medaka_before_disp, NULL, actor);
cKF_Si3_draw_R_SV(gamex, &skele->keyframe, mtxp, mfish_medaka_before_disp, NULL, actor);
CLOSE_DISP(gamex->graph);
}
+14 -14
View File
@@ -8,7 +8,7 @@ void mfish_namazu_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
actor->_612.y = actor->_60C.y;
actor->_5F4 = 0.0f;
actor->_5AC = ZeroVec;
if (actor->fishIDEnum == aGYO_TYPE_CATFISH) {
if (actor->fish_idx == aGYO_TYPE_CATFISH) {
actor->_5AC.y = 1500.f;
} else {
actor->_5AC.y = 1700.f;
@@ -96,14 +96,14 @@ void mfish_namazu_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
}
void mfish_namazu_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
actor->_634 = mfish_get_hide_camera_angle(actor);
add_calc_short_angle2(&actor->_634, actor->_612.y, CALC_EASE(0.5f), DEG2SHORT_ANGLE(10), DEG2SHORT_ANGLE(0.5f));
actor->hide_camera_angle = mfish_get_hide_camera_angle(actor);
add_calc_short_angle2(&actor->hide_camera_angle, actor->_612.y, CALC_EASE(0.5f), DEG2SHORT_ANGLE(10), DEG2SHORT_ANGLE(0.5f));
actor->currentProcess = mfish_namazu_dummy_process;
}
void mfish_namazu_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) {
if (actor->_5E8 < 0.5f) {
add_calc_short_angle2(&actor->_612.y, actor->_634, CALC_EASE2(0.1f), DEG2SHORT_ANGLE(1.25f),
add_calc_short_angle2(&actor->_612.y, actor->hide_camera_angle, CALC_EASE2(0.1f), DEG2SHORT_ANGLE(1.25f),
DEG2SHORT_ANGLE(0.125f));
}
actor->_622 = add_calc_short_angle2(&actor->_60C.y, actor->_612.y, CALC_EASE2(0.05f), DEG2SHORT_ANGLE(0.8125f),
@@ -127,7 +127,7 @@ void mfish_namazu_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) {
angle = -ABS(angle);
}
} else if (actor->_62E_flags & 0x20) {
if ((s16)(actor->_62A - actor->_60C.y) < 0) {
if ((s16)(actor->escape_angle - actor->_60C.y) < 0) {
angle = -angle;
}
}
@@ -221,7 +221,7 @@ void mfish_namazu_base_FishMove(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
}
void mfish_namazu_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
xyz_t p = suisou_pos[actor->group];
xyz_t p = suisou_pos[actor->tank];
f32 v;
int s;
mfish_onefish_mv(actor, gamex);
@@ -244,7 +244,7 @@ void mfish_namazu_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
} else if (actor->currentProcess == mfish_namazu_normal_process) {
if ((actor->_62E_flags & 0x1e && ABS((s16)(actor->_62C - actor->_60C.y)) < DEG2SHORT_ANGLE(45)) ||
(actor->_62E_flags & 0x20 &&
ABS((s16)(actor->_62A + DEG2SHORT_ANGLE(180) - actor->_60C.y)) < DEG2SHORT_ANGLE(30))) {
ABS((s16)(actor->escape_angle + DEG2SHORT_ANGLE(180) - actor->_60C.y)) < DEG2SHORT_ANGLE(30))) {
actor->activityFrameCount =
actor->init_data.activeFramesMin + (s16)RANDOM_F(actor->init_data.activeFramesRange);
actor->savedActivityFrameCount = actor->activityFrameCount;
@@ -273,12 +273,12 @@ void mfish_namazu_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
actor->_642 = 0;
}
add_calc_short_angle2(&actor->_640, actor->_642, CALC_EASE(0.2f), DEG2SHORT_ANGLE(0.25f), DEG2SHORT_ANGLE(0.05f));
actor->_38._00.frame_control.speed = (actor->_5E8 * 0.75f) / (actor->init_data._10 + actor->init_data._14) + 0.125f;
actor->kf.keyframe.frame_control.speed = (actor->_5E8 * 0.75f) / (actor->init_data._10 + actor->init_data._14) + 0.125f;
mfish_namazu_base_FishMove(actor, gamex);
Museum_Fish_BGCheck(actor, gamex);
xyz_t_sub(&p, &actor->position, &p);
v = 60.f + MAX(ABS(p.x), ABS(p.z)) * -0.15f;
actor->position.y = v + actor->init_data._04;
actor->position.y = v + actor->init_data.ofs_y;
mfish_namazu_body_wind_anime_play(actor, gamex);
}
@@ -308,19 +308,19 @@ BOOL mfish_namazu_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int jo
}
void mfish_namazu_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
YET_SKELETON* skele = &actor->_38;
mfish_keyframe_c* skele = &actor->kf;
Mtx* mtxp;
if (gamex->frame_counter & 1) {
mtxp = &skele->_70;
mtxp = skele->mtx[0];
} else {
mtxp = &skele->_2b0;
mtxp = skele->mtx[1];
}
OPEN_DISP(gamex->graph);
Matrix_translate(actor->position.x, actor->position.y, actor->position.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_translate(0.0f, 0.0f, actor->init_data.ofs_z, 1);
Matrix_scale(actor->init_data.renderScale, actor->init_data.renderScale, actor->init_data.renderScale, 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_namazu_before_disp, NULL, actor);
cKF_Si3_draw_R_SV(gamex, &skele->keyframe, mtxp, mfish_namazu_before_disp, NULL, actor);
CLOSE_DISP(gamex->graph);
}
+11 -11
View File
@@ -52,15 +52,15 @@ void mfish_seafish_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
abs_diff_sum /= sum_i_8;
if (actor->_598->fishIDEnum != aGYO_TYPE_JELLYFISH) {
if (actor->_598->fish_idx != aGYO_TYPE_JELLYFISH) {
f32 this_5a0_y = actor->position.y;
if (o_5a0_y < actor->position.y) {
t = o_5a0_y + (actor->_598->init_data._04 + actor->init_data._04);
t = o_5a0_y + (actor->_598->init_data.ofs_y + actor->init_data.ofs_y);
if (this_5a0_y < t) {
add_calc2(&actor->position.y, t + 2.0f, 0.2f, abs_diff_sum * 0.1f);
}
} else {
t = o_5a0_y - (actor->_598->init_data._04 + actor->init_data._04);
t = o_5a0_y - (actor->_598->init_data.ofs_y + actor->init_data.ofs_y);
if (this_5a0_y > t) {
add_calc2(&actor->position.y, t - 2.0f, 0.2f, abs_diff_sum * 0.1f);
}
@@ -197,7 +197,7 @@ void mfish_seafish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
} else {
add_calc2(&actor->_5E8, actor->_5F0, 0.2f, 0.02f);
}
actor->_38._00.frame_control.speed =
actor->kf.keyframe.frame_control.speed =
(GETREG(TAKREG, 0x14) * 0.01f + 0.5f) * 0.5f + (GETREG(TAKREG, 0x15) * 0.01f + 1.2f) * actor->_5E8;
actor->_5D0.x = actor->_5E8 * sin_s(actor->_60C.y);
actor->_5D0.z = actor->_5E8 * cos_s(actor->_60C.y);
@@ -207,8 +207,8 @@ void mfish_seafish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
mfish_onefish_mv(actor, gamex);
mfish_body_wind_anime_play(actor, gamex);
Museum_Fish_BGCheck(actor, gamex);
if (actor->position.y < GETREG(TAKREG, 0x47) + 55.0f - actor->init_data._04) {
actor->position.y = GETREG(TAKREG, 0x47) + 55.0f - actor->init_data._04;
if (actor->position.y < GETREG(TAKREG, 0x47) + 55.0f - actor->init_data.ofs_y) {
actor->position.y = GETREG(TAKREG, 0x47) + 55.0f - actor->init_data.ofs_y;
}
actor->activityFrameCount--;
}
@@ -231,19 +231,19 @@ BOOL mfish_seafish_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int j
}
void mfish_seafish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
YET_SKELETON* skele = &actor->_38;
mfish_keyframe_c* skele = &actor->kf;
Mtx* mtxp;
if (gamex->frame_counter & 1) {
mtxp = &skele->_70;
mtxp = skele->mtx[0];
} else {
mtxp = &skele->_2b0;
mtxp = skele->mtx[1];
}
OPEN_DISP(gamex->graph);
Matrix_translate(actor->position.x, actor->position.y, actor->position.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_translate(0.0f, 0.0f, actor->init_data.ofs_z, 1);
Matrix_scale(actor->init_data.renderScale, actor->init_data.renderScale, actor->init_data.renderScale, 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_seafish_before_disp, NULL, actor);
cKF_Si3_draw_R_SV(gamex, &skele->keyframe, mtxp, mfish_seafish_before_disp, NULL, actor);
CLOSE_DISP(gamex->graph);
}
+14 -14
View File
@@ -20,7 +20,7 @@ void mfish_small_fish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
}
void mfish_sfish_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
if (actor->group == 2) {
if (actor->tank == mfish_TANK_2) {
if (actor->activityFrameCount < 0) {
actor->_5F0 = actor->init_data._10 + Rnd_EX_f(actor->init_data._14);
}
@@ -48,7 +48,7 @@ void mfish_sfish_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
actor->init_data.activeFramesMin + (s16)RANDOM_F(actor->init_data.activeFramesRange);
actor->savedActivityFrameCount = actor->activityFrameCount;
actor->_5F0 = actor->init_data._10 + Rnd_EX_f(actor->init_data._14);
if (actor->group == 2 && actor->_5F0 < actor->init_data._10 + actor->init_data._14 * 0.5f) {
if (actor->tank == mfish_TANK_2 && actor->_5F0 < actor->init_data._10 + actor->init_data._14 * 0.5f) {
actor->_612.y = atans_table(-actor->_5DC.z, -actor->_5DC.x);
actor->activityFrameCount *= 5;
}
@@ -66,7 +66,7 @@ void mfish_sfish_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
s16 s;
//! BUG: unused?
RANDOM_F(1.0f);
s = search_position_angleY(&suisou_pos[actor->group], &actor->position);
s = search_position_angleY(&suisou_pos[actor->tank], &actor->position);
actor->_5F8 = 0.0f;
actor->_612.y = s + DEG2SHORT_ANGLE(RANDOM2_F(90.0));
actor->activityFrameCount =
@@ -84,7 +84,7 @@ void mfish_sfish_turn_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
actor->_612.y = actor->_62C - DEG2SHORT_ANGLE(115);
}
if (actor->group == 2) {
if (actor->tank == mfish_TANK_2) {
if (actor->_5F0 < 0.0f) {
actor->_5F0 = actor->init_data._10 + MAX(-actor->init_data._10, RANDOM_F(actor->init_data._14));
}
@@ -138,13 +138,13 @@ void mfish_small_fish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
actor->position.y += actor->_5D0.y + p.y;
actor->position.z += actor->_5D0.z + p.z;
mfish_onefish_mv(actor, gamex);
if (actor->group == 2) {
actor->_38._00.frame_control.speed = actor->_5E8 * 2.0f + 1.0f;
if (actor->tank == mfish_TANK_2) {
actor->kf.keyframe.frame_control.speed = actor->_5E8 * 2.0f + 1.0f;
} else {
add_calc2(&actor->_38._00.frame_control.speed, actor->_5E8 * 2.0f + 0.5f, 0.2f, 0.1f);
add_calc2(&actor->kf.keyframe.frame_control.speed, actor->_5E8 * 2.0f + 0.5f, 0.2f, 0.1f);
}
actor->_5B8 = actor->position;
actor->objchk_pos = actor->position;
Museum_Fish_BGCheck(actor, gamex);
if (actor->position.y < 55.0f + actor->init_data._08) {
@@ -181,23 +181,23 @@ BOOL mfish_sfish_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joi
}
void mfish_small_fish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
YET_SKELETON* skele = &actor->_38;
mfish_keyframe_c* skele = &actor->kf;
Mtx* mtxp;
s16 v;
if (gamex->frame_counter & 1) {
mtxp = &skele->_70;
mtxp = skele->mtx[0];
} else {
mtxp = &skele->_2b0;
mtxp = skele->mtx[1];
}
v = actor->_60C.x * 0.7f;
OPEN_DISP(gamex->graph);
Matrix_translate(actor->position.x, actor->position.y, actor->position.z, 0);
Matrix_RotateY(actor->_60C.y, 1);
Matrix_translate(0.0f, 0.0f, actor->init_data._24 * 1.5f, 1);
Matrix_translate(0.0f, 0.0f, actor->init_data.ofs_z * 1.5f, 1);
Matrix_RotateX(v, 1);
Matrix_translate(0.0f, 0.0f, -actor->init_data._24 * 0.5f, 1);
Matrix_translate(0.0f, 0.0f, -actor->init_data.ofs_z * 0.5f, 1);
Matrix_scale(actor->init_data.renderScale, actor->init_data.renderScale, actor->init_data.renderScale, 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);
cKF_Si3_draw_R_SV(gamex, &skele->keyframe, mtxp, mfish_sfish_before_disp, NULL, actor);
CLOSE_DISP(gamex->graph);
}
+13 -13
View File
@@ -49,15 +49,15 @@ void mfish_tai_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
f32 o_z = actor->_598->position.z;
f32 v = MAX(d - ABS(actor->_598->position.z - actor->position.z), 0.0f);
v = v / d;
if (actor->_598->fishIDEnum != aGYO_TYPE_JELLYFISH) {
if (actor->_598->fish_idx != aGYO_TYPE_JELLYFISH) {
if (actor->_598->position.y < actor->position.y) {
if (actor->position.y < (o_y + (actor->_598->init_data._04 + actor->init_data._04))) {
add_calc2(&actor->position.y, (o_y + (actor->_598->init_data._04 + actor->init_data._04)) + 2.0f,
if (actor->position.y < (o_y + (actor->_598->init_data.ofs_y + actor->init_data.ofs_y))) {
add_calc2(&actor->position.y, (o_y + (actor->_598->init_data.ofs_y + actor->init_data.ofs_y)) + 2.0f,
0.2f, v * 0.1f);
}
} else {
if (actor->position.y > o_y - (actor->_598->init_data._04 + actor->init_data._04)) {
add_calc2(&actor->position.y, (o_y - (actor->_598->init_data._04 + actor->init_data._04)) - 2.0f,
if (actor->position.y > o_y - (actor->_598->init_data.ofs_y + actor->init_data.ofs_y)) {
add_calc2(&actor->position.y, (o_y - (actor->_598->init_data.ofs_y + actor->init_data.ofs_y)) - 2.0f,
0.2f, v * 0.1f);
}
}
@@ -232,15 +232,15 @@ void mfish_tai_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
actor->position.z += actor->_5D0.z + p.z;
mfish_onefish_mv(actor, gamex);
actor->_38._00.frame_control.speed =
actor->kf.keyframe.frame_control.speed =
(0.1f + 0.01f * GETREG(TAKREG, 0x14)) * 0.5f + (1.5f + 0.01f * GETREG(TAKREG, 0x15)) * actor->_5E8;
add_calc0(&actor->_5F8, 0.25f, 0.05f);
actor->_5F8 = MIN(1.0f, actor->_5F8);
mfish_body_wind_anime_play(actor, gamex);
Museum_Fish_BGCheck(actor, gamex);
if (actor->position.y < (GETREG(TAKREG, 0x47) + 55.0f) - actor->init_data._04) {
actor->position.y = (GETREG(TAKREG, 0x47) + 55.0f) - actor->init_data._04;
if (actor->position.y < (GETREG(TAKREG, 0x47) + 55.0f) - actor->init_data.ofs_y) {
actor->position.y = (GETREG(TAKREG, 0x47) + 55.0f) - actor->init_data.ofs_y;
}
actor->activityFrameCount--;
@@ -260,19 +260,19 @@ BOOL mfish_tai_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint
}
void mfish_tai_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
YET_SKELETON* skele = &actor->_38;
mfish_keyframe_c* skele = &actor->kf;
Mtx* mtxp;
if (gamex->frame_counter & 1) {
mtxp = &skele->_70;
mtxp = skele->mtx[0];
} else {
mtxp = &skele->_2b0;
mtxp = skele->mtx[1];
}
OPEN_DISP(gamex->graph);
Matrix_translate(actor->position.x, actor->position.y, actor->position.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_translate(0.0f, 0.0f, actor->init_data.ofs_z, 1);
Matrix_scale(actor->init_data.renderScale, actor->init_data.renderScale, actor->init_data.renderScale, 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_tai_before_disp, NULL, actor);
cKF_Si3_draw_R_SV(gamex, &skele->keyframe, mtxp, mfish_tai_before_disp, NULL, actor);
CLOSE_DISP(gamex->graph);
}
+10 -10
View File
@@ -344,9 +344,9 @@ void mfish_unagi_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
DEG2SHORT_ANGLE(0.25f));
add_calc_short_angle2(&actor->_618.z, actor->_622, CALC_EASE2(0.25f), DEG2SHORT_ANGLE(1.25f),
DEG2SHORT_ANGLE(0.125f));
add_calc_short_angle2(&actor->_38._538.x, actor->_618.z, CALC_EASE2(0.2f), DEG2SHORT_ANGLE(1.25f),
add_calc_short_angle2(&actor->kf._538.x, actor->_618.z, CALC_EASE2(0.2f), DEG2SHORT_ANGLE(1.25f),
DEG2SHORT_ANGLE(0.125f));
add_calc_short_angle2(&actor->_38._538.y, actor->_38._538.x, CALC_EASE2(0.15f), DEG2SHORT_ANGLE(1.25f),
add_calc_short_angle2(&actor->kf._538.y, actor->kf._538.x, CALC_EASE2(0.15f), DEG2SHORT_ANGLE(1.25f),
DEG2SHORT_ANGLE(0.125f));
actor->currentProcess(actor, gamex);
add_calc2(&actor->_5F4, actor->_632 * (GETREG(TAKREG, 0x47) * 0.001f + 0.04f), 0.25f, 91.0f);
@@ -369,17 +369,17 @@ BOOL mfish_unagi_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joi
joint_rot->y = MY_CLAMP(i, DEG2SHORT_ANGLE2(-90), DEG2SHORT_ANGLE2(90));
} else if (joint_idx == 3) {
int i;
i = DEG2SHORT_ANGLE2(GETREG(TAKREG, 0x3d)) - (int)(actor->_38._538.x * (1.1f + 0.01f * GETREG(TAKREG, 0x39)));
i = DEG2SHORT_ANGLE2(GETREG(TAKREG, 0x3d)) - (int)(actor->kf._538.x * (1.1f + 0.01f * GETREG(TAKREG, 0x39)));
i += (s16)(actor->_632 * sin_s(actor->_636 + DEG2SHORT_ANGLE(180)));
joint_rot->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-90), DEG2SHORT_ANGLE(90));
} else if (joint_idx == 4) {
int i;
i = DEG2SHORT_ANGLE2(GETREG(TAKREG, 0x3e)) - (int)(actor->_38._538.y * (1.2f + 0.01f * GETREG(TAKREG, 0x3a)));
i = DEG2SHORT_ANGLE2(GETREG(TAKREG, 0x3e)) - (int)(actor->kf._538.y * (1.2f + 0.01f * GETREG(TAKREG, 0x3a)));
i += (s16)(actor->_632 * 0.75f * sin_s(actor->_636 + DEG2SHORT_ANGLE(270)));
joint_rot->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-90), DEG2SHORT_ANGLE(90));
} else if (joint_idx == 5) {
int i;
i = DEG2SHORT_ANGLE2(GETREG(TAKREG, 0x3f)) - (int)(actor->_38._538.z * (1.3f + 0.01f * GETREG(TAKREG, 0x3b)));
i = DEG2SHORT_ANGLE2(GETREG(TAKREG, 0x3f)) - (int)(actor->kf._538.z * (1.3f + 0.01f * GETREG(TAKREG, 0x3b)));
i += (s16)(actor->_632 * 0.5f * sin_s(actor->_636 + DEG2SHORT_ANGLE(0)));
joint_rot->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-90), DEG2SHORT_ANGLE(90));
}
@@ -387,19 +387,19 @@ BOOL mfish_unagi_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joi
}
void mfish_unagi_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
YET_SKELETON* skele = &actor->_38;
mfish_keyframe_c* skele = &actor->kf;
Mtx* mtxp;
if (gamex->frame_counter & 1) {
mtxp = &skele->_70;
mtxp = skele->mtx[0];
} else {
mtxp = &skele->_2b0;
mtxp = skele->mtx[1];
}
OPEN_DISP(gamex->graph);
Matrix_translate(actor->position.x + actor->_5AC.x, actor->position.y, actor->position.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_translate(0.0f, 0.0f, actor->init_data.ofs_z, 1);
Matrix_scale(actor->init_data.renderScale, actor->init_data.renderScale, actor->init_data.renderScale, 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_unagi_before_disp, NULL, actor);
cKF_Si3_draw_R_SV(gamex, &skele->keyframe, mtxp, mfish_unagi_before_disp, NULL, actor);
CLOSE_DISP(gamex->graph);
}
+12 -12
View File
@@ -1,10 +1,10 @@
#include "ac_museum_fish_priv.h"
void mfish_zarigani_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
YET_SKELETON* skele = &actor->_38;
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, 0.5f, 0.0f);
actor->position = suisou_pos[actor->group];
mfish_keyframe_c* skele = &actor->kf;
cKF_SkeletonInfo_R_ct(&skele->keyframe, skele->_54C, skele->_550[0], skele->work, skele->morph);
cKF_SkeletonInfo_R_init_standard_repeat_speedsetandmorph(&skele->keyframe, skele->_550[0], NULL, 0.5f, 0.0f);
actor->position = suisou_pos[actor->tank];
actor->position.y = 53.0f;
actor->_60C.y = qrand();
actor->_612.y = actor->_60C.y;
@@ -22,7 +22,7 @@ void mfish_zarigani_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* g
void mfish_zarigani_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
actor->activityFrameCount--;
cKF_SkeletonInfo_R_play(&actor->_38._00);
cKF_SkeletonInfo_R_play(&actor->kf.keyframe);
if (actor->_5F0 > 0.0f) {
add_calc_short_angle2(&actor->_644, (s16)DEG2SHORT_ANGLE2(actor->_5F0 * 30.0f + 1.0f), CALC_EASE(0.25f),
DEG2SHORT_ANGLE(0.125f), DEG2SHORT_ANGLE(0.5f));
@@ -107,7 +107,7 @@ void mfish_zarigani_stand_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* ga
void mfish_zarigani_stand_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
f32 v;
cKF_SkeletonInfo_R_play(&actor->_38._00);
cKF_SkeletonInfo_R_play(&actor->kf.keyframe);
if (actor->activityFrameCount > 0) {
actor->activityFrameCount--;
if (add_calc_short_angle2(&actor->_60C.x, (s16)DEG2SHORT_ANGLE2(-45.0f + GETREG(TAKREG, 0x1a)), CALC_EASE(0.1),
@@ -167,7 +167,7 @@ void mfish_zarigani_jump_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
void mfish_zarigani_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
f32 v;
xyz_t p = suisou_pos[actor->group];
xyz_t p = suisou_pos[actor->tank];
add_calc(&actor->_5E8, actor->_5F0, 0.1f, 0.2f, 0.01f);
actor->currentProcess(actor, gamex);
actor->_638 += actor->_644;
@@ -210,21 +210,21 @@ BOOL mfish_zarigani_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int
}
void mfish_zarigani_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) {
YET_SKELETON* skele = &actor->_38;
mfish_keyframe_c* skele = &actor->kf;
Mtx* mtxp;
if (gamex->frame_counter & 1) {
mtxp = &skele->_70;
mtxp = skele->mtx[0];
} else {
mtxp = &skele->_2b0;
mtxp = skele->mtx[1];
}
OPEN_DISP(gamex->graph);
Matrix_translate(actor->position.x + actor->_5AC.x, actor->position.y + actor->_5AC.y,
actor->position.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_translate(0.0f, 0.0f, actor->init_data.ofs_z, 1);
Matrix_rotateXYZ(DEG2SHORT_ANGLE(-90), DEG2SHORT_ANGLE(-180), DEG2SHORT_ANGLE(0), 1);
Matrix_scale(actor->init_data.renderScale, actor->init_data.renderScale, actor->init_data.renderScale, 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);
cKF_Si3_draw_R_SV(gamex, &skele->keyframe, mtxp, mfish_zarigani_before_disp, NULL, actor);
CLOSE_DISP(gamex->graph);
}