diff --git a/include/ac_museum_fish.h b/include/ac_museum_fish.h index 76ee92bb..a5bc8a62 100644 --- a/include/ac_museum_fish.h +++ b/include/ac_museum_fish.h @@ -1,11 +1,7 @@ #ifndef AC_MUSEUM_FISH_H #define AC_MUSEUM_FISH_H -#include "types.h" #include "m_actor.h" -#include "c_keyframe.h" -#include "libu64/u64types.h" -#include "ac_gyoei.h" #ifdef __cplusplus extern "C" { @@ -13,476 +9,6 @@ extern "C" { extern ACTOR_PROFILE Museum_Fish_Profile; -typedef struct _FISH_PRIVATE_DATA; - -typedef void (*PRIV_FISH_CONSTRUCTOR)(struct _FISH_PRIVATE_DATA*, GAME*); -typedef void (*PRIV_FISH_MOVE)(struct _FISH_PRIVATE_DATA*, GAME*); -typedef void (*PRIV_FISH_DRAW)(struct _FISH_PRIVATE_DATA*, GAME*); -// typedef void (*PRIV_FISH_PROCESS)(struct _FISH_PRIVATE_DATA*, GAME*); -typedef void (*PRIV_FISH_PROCESS)(struct _FISH_PRIVATE_DATA*, GAME*); - -// unsure temp structs - -typedef struct _MUSEUM_FISH_INIT_DATA { - f32 renderScale; - f32 _04; - f32 _08; - f32 _0C; - f32 _10; - f32 _14; - f32 _18; - f32 _1C; - f32 _20; - f32 _24; - f32 _28; - s16 activeFramesMin; - s16 activeFramesRange; - s16 _30; -} MUSEUM_FISH_INIT_DATA; // size: 0x34 - -#define artificial_padding(lastOffset, currentOffset, typeOfLastMember) \ - u8 __##currentOffset##padding[currentOffset - lastOffset - sizeof(typeOfLastMember)] - -// #define offsetof(structName, memberName) ((size_t) & (((structName*)0)->memberName)) - -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); - 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 - -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 enum fish_type MUSEUM_FISH_TYPE; - -typedef struct _FISH_PRIVATE_DATA { - MUSEUM_FISH_INIT_DATA init_data; - PRIV_FISH_PROCESS currentProcess; // size:4 - YET_SKELETON _38; - - YET_SKELETON_2* _590; - struct _FISH_PRIVATE_DATA* _594; - struct _FISH_PRIVATE_DATA* _598; - - MUSEUM_FISH_TYPE fishIDEnum; - xyz_t position; - xyz_t _5AC; - xyz_t _5B8; - artificial_padding(0x5B8, 0x5D0, xyz_t); - xyz_t _5D0; - xyz_t _5DC; - f32 _5E8; - f32 _5EC; - f32 _5F0; - f32 _5F4; - f32 _5F8; - f32 _5FC; - f32 _600; - f32 _604; - f32 _608; - s_xyz _60C; - s_xyz _612; - s_xyz _618; - s16 _61E; - s16 _620; - s16 _622; - s16 _624; - s16 activityFrameCount; - s16 savedActivityFrameCount; - s16 _62A; - s16 _62C; - s16 _62E_flags; - s16 group; - s16 _632; - s16 _634; - s16 _636; - s16 _638; - s16 _63A; - s16 _63C; - s16 _63E; - s16 _640; - s16 _642; - s16 _644; - s16 _646; -} MUSEUM_FISH_PRIVATE_DATA; // size 648 - -// Holds data for the underwater grass -typedef YET_SKELETON MUSEUM_FISH_KUSA_DATA; - -typedef struct _FISH_DISPLAY_MSG_INFO { - s16 fishName; - s16 fishInfo; -} FISH_DISPLAY_MSG_INFO; - -typedef struct _MUSEUM_FISH_ACTOR { - ACTOR actor; // offset: 0, size: 0x174 - 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 - - u8 _14cf8[16]; // temp - - xyz_t lightPosition[2]; - int numFishDisplayed; // offset: 0x14d20, size: 4 - int fishDisplayMsgIter; // offset: 0x14d24, size: 4 - FISH_DISPLAY_MSG_INFO fishDisplayMsgInfo[10]; // offset: 0x14d28, size: 4*10 - - s16 _14d50[20]; - s16 _14d78[20]; - artificial_padding(0x14d78, 0x14daa, s16[20]); - - s16 _14daa[5]; - s16 _14db4; - s16 _14db6; // offset: 0x14db6, size: 2 - s16 lightID1; // offset: 0x14db8, size: 2 - s16 lightID2; // offset: 0x14dba, size: 2 - s16 lightPower[2]; // offset: 0x14dbc, size: 4 - s16 _14dc0; // offset: 0x14dc0, size: 2 - s16 _14dc2; // offset: 0x14dc2, size: 2 - s16 _14dc4; // offset: 0x14dc4, size: 2 - s16 _14dc8; // offset: 0x14dc8, size: 2 -} MUSEUM_FISH_ACTOR; // size 14DCA - -// ac_museum_fish.c_inc -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); -BOOL Museum_Fish_Check_Talk_Distance(GAME* gamex, int index); -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_Actor_move(ACTOR* actor, GAME* game); -void Museum_Fish_Suisou_draw(ACTOR* actor, GAME* game, int r5); -int kusa_before_disp(GAME* r3, cKF_SkeletonInfo_R_c* r4, int r5, Gfx** r6, u8* r7, void* arg, s_xyz* r9, xyz_t* r10); -void Museum_Fish_Kusa_Draw(ACTOR* actor, GAME* game, int r5); -void Museum_Fish_Actor_draw(ACTOR* actor, GAME* game); -BOOL mfish_cull_check(GAME* game, xyz_t* worldPos, f32 x, f32 y, f32 _y); -void mfish_point_ligh_pos_get(ACTOR* actorx, GAME* game, int r5); -void mfish_point_light_ct(ACTOR* actor, GAME* game); -void mfish_point_light_dt(ACTOR* r30, GAME* r31); -void mfish_point_light_mv(MUSEUM_FISH_ACTOR* actor, GAME* game); -void mfish_normal_light_set(ACTOR* actor, GAME* game); - -// ac_museum_fish_base.c_inc -f32 Rnd_EX_f(f32 v1); -f32 Rnd_EX_fx(f32 v1); -void mfish_base_FishMove(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -int mfish_PosWallCheck(MUSEUM_FISH_PRIVATE_DATA* priv, xyz_t* pos); -BOOL mfish_WallCheck(MUSEUM_FISH_PRIVATE_DATA* priv); -s16 mfish_get_hide_camera_angle(MUSEUM_FISH_PRIVATE_DATA* priv); -void mfish_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); -void mfish_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); -void mfish_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); -void mfish_turn_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_peck_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_peck_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_ground_peck_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_ground_peck_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_base_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_onefish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_onefish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -BOOL mfish_before_disp(GAME*, cKF_SkeletonInfo_R_c*, int, Gfx**, u8*, void*, s_xyz*, xyz_t*); -void mfish_onefish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_ani_base_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_ani_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_ani_base_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -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); -void Museum_Fish_DonkoBGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void Museum_Fish_objchk_pos_set(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void Museum_Fish_BGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void Museum_Fish_Kusa_Check(MUSEUM_FISH_ACTOR* actor, GAME* game); -void Museum_Fish_Object_Check(MUSEUM_FISH_ACTOR* actor, GAME* game); -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); -BOOL mfish_peck_check(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -BOOL mfish_peck_wall_check(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -BOOL mfish_ground_peck_before_check(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_get_player_area(MUSEUM_FISH_ACTOR* actor, GAME* game); -void mfish_get_flow_vec(xyz_t* pos, MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -s16 mfish_get_escape_angle(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_move_smooth(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_hamon_make(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); - -// ac_museum_fish_afish.c_inc -void mfish_afish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_afish_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); -void mfish_afish_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_afish_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); -void mfish_afish_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_afish_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); -void mfish_afish_turn_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_afish_base_FishMove(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_afish_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_afish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_afish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); - -// ac_museum_fish_aroana.c_inc -void mfish_aroana_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_aroana_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); -void mfish_aroana_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex); -void mfish_aroana_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); -void mfish_aroana_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_aroana_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); -void mfish_aroana_turn_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_aroana_long_move_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); -void mfish_aroana_long_move_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_aroana_base_FishMove(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_aroana_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_aroana_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -BOOL mfish_aroana_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans); -void mfish_aroana_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); - -// ac_museum_fish_koi.c_inc -void mfish_koi_tail_anim_set(MUSEUM_FISH_PRIVATE_DATA* actor, s32 r4); -void mfish_koi_move_smooth(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_koi_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_koi_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); -void mfish_koi_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_koi_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); -void mfish_koi_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_koi_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); -void mfish_koi_turn_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_koi_peck_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_koi_peck_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_koi_long_move_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); -void mfish_koi_long_move_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_koi_base_FishMove(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_koi_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_koi_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -BOOL mfish_koi_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans); -void mfish_koi_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); - -// ac_museum_fish_kaseki.c_inc -void mfish_kaseki_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_kaseki_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex); -void mfish_kaseki_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex); -void mfish_kaseki_move_wall_smooth(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex); -void mfish_kaseki_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -BOOL mfish_kaseki_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans); -void mfish_kaseki_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); - -// ac_museum_fish_bass.c_inc -void mfish_bass_tail_anim_set(MUSEUM_FISH_PRIVATE_DATA* actor, s32 r4); -void mfish_bass_base_FishMove(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_bass_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); -void mfish_bass_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_bass_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); -void mfish_bass_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_bass_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); -void mfish_bass_turn_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_bass_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_bass_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_bass_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); - -// ac_museum_fish_seafish.c_inc -void mfish_seafish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_seafish_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_seafish_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_seafish_turn_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_seafish_turn(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_seafish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -BOOL mfish_seafish_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans); -void mfish_seafish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); - -// ac_museum_fish_tai.c_inc -void mfish_tai_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_tai_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_tai_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_tai_turn_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_tai_turn(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_tai_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -BOOL mfish_tai_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans); -void mfish_tai_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); - -// ac_museum_fish_sfish.c_inc -void mfish_small_fish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_sfish_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_sfish_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_sfish_turn_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_sfish_turn(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_small_fish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -BOOL mfish_sfish_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans); -void mfish_small_fish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); - -// ac_museum_fish_gupi.c_inc -void mfish_gupi_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_gupi_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_gupi_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_gupi_turn_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_gupi_turn(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_gupi_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -BOOL mfish_gupi_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans); -void mfish_gupi_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); - -// ac_museum_fish_medaka.c_inc -void mfish_medaka_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_medaka_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_medaka_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_medaka_turn_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_medaka_turn(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_medaka_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -BOOL mfish_medaka_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans); -void mfish_medaka_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); - -// ac_museum_fish_kingyo.c_inc -void mfish_kingyo_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_kingyo_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_kingyo_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_kingyo_turn_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_kingyo_turn(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_kingyo_peck_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_kingyo_peck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_kingyo_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -BOOL mfish_kingyo_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans); -void mfish_kingyo_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); - -// ac_museum_fish_dojou.c_inc -void mfish_dojou_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_dojou_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_dojou_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_dojou_turn_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_dojou_turn(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_dojou_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -BOOL mfish_dojou_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans); -void mfish_dojou_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); - -// ac_museum_fish_donko.c_inc -void mfish_donko_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_donko_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -BOOL mfish_donko_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans); -void mfish_donko_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); - -// ac_museum_fish_big_fish.c_inc -void mfish_big_fish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_big_fish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -BOOL mfish_bfish_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans); -void mfish_big_fish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); - -// ac_museum_fish_ito.c_inc -void mfish_ito_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_ito_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -BOOL mfish_ito_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans); -void mfish_ito_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); - -// ac_museum_fish_unagi.c_inc -void mfish_unagi_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -s16 mfish_unagi_get_next_rail_type(MUSEUM_FISH_PRIVATE_DATA* actor); -void mfish_unagi_aim_wind_angle_calc(MUSEUM_FISH_PRIVATE_DATA* actor); -void mfish_unagi_rail_move_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_unagi_rail_move(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_unagi_normal_to_reverse_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_unagi_normal_to_reverse(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_unagi_rail_move_reverse_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_unagi_rail_move_reverse(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_unagi_reverse_to_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_unagi_reverse_to_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_unagi_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -BOOL mfish_unagi_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans); -void mfish_unagi_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); - -// ac_museum_fish_namazu.c_inc -void mfish_namazu_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_namazu_body_wind_anime_play(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_namazu_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); -void mfish_namazu_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -//! TODO: these should take (actor, game) because they're assigned to _34, but are statically called with just (actor) -void mfish_namazu_dummy_process_init(); -void mfish_namazu_dummy_process(); -void mfish_namazu_turn_process_init(); -void mfish_namazu_turn_process(); -void mfish_namazu_ground_sweep_process_init(); -void mfish_namazu_ground_sweep_process(); -void mfish_namazu_base_FishMove(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_namazu_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -BOOL mfish_namazu_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans); -void mfish_namazu_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); - -// ac_museum_fish_zarigani.c_inc -void mfish_zarigani_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_zarigani_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_zarigani_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_zarigani_wait_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_zarigani_wait_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_zarigani_stand_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_zarigani_stand_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_zarigani_jump_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_zarigani_jump_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_zarigani_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -BOOL mfish_zarigani_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans); -void mfish_zarigani_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); - -// ac_museum_fish_kurage.c_inc -void mfish_kurage_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_kurage_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_kurage_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_kurage_turn_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -void mfish_kurage_turn(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); -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_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_num, Gfx** joint_m, u8* joint_f, void* arg, - s_xyz* joint1, xyz_t* trans); -BOOL hasu_after_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, void* arg, - s_xyz* joint1, xyz_t* trans); -void mfish_kaeru_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex); - #ifdef __cplusplus } #endif diff --git a/include/ac_museum_fish_priv.h b/include/ac_museum_fish_priv.h new file mode 100644 index 00000000..a2cb98a7 --- /dev/null +++ b/include/ac_museum_fish_priv.h @@ -0,0 +1,521 @@ +#ifndef AC_MUSEUM_FISH_PRIV_H +#define AC_MUSEUM_FISH_PRIV_H + +#include "ac_museum_fish.h" +#include "m_msg.h" +#include "m_common_data.h" +#include "sys_matrix.h" +#include "m_player_lib.h" +#include "m_debug_mode.h" +#include "m_rcp.h" +#include "ac_gyoei.h" + +#ifdef __cplusplus +extern "C" { +#endif + +// found useful macros +#define MY_MAX(a, b) (((a) >= (b)) ? (a) : (b)) +#define MY_CLAMP(v, l, h) MIN(MY_MAX((l), (v)), (h)) +#define ARRAY_LEN(a) (sizeof(a) / sizeof(*a)) + +#define CALC_EASE(x) (1.0f - sqrtf(1.0f - (x))) +#define CALC_EASE2(x) CALC_EASE(CALC_EASE(x)) +#define SHORT2DEG_ANGLE2(x) ((x) * (360.0f / 65536.0f)) +#define RANDOMF_RANGE(min, max) ((f32)(min) + (f32)RANDOM_F((f32)(max) - (f32)(min))) +#define RANDOM2F_RANGE(min, max) ((f32)(min) + (f32)RANDOM2_F((f32)(max) - (f32)(min))) +#define RANDOM_RANGE(min, max) ((int)(min) + (int)RANDOM((int)(max) - (int)(min))) +#define RANDOM2_RANGE(min, max) ((int)(min) + (int)RANDOM2((int)(max) - (int)(min))) + +#define artificial_padding(lastOffset, currentOffset, typeOfLastMember) \ + u8 __##currentOffset##padding[currentOffset - lastOffset - sizeof(typeOfLastMember)] + +typedef struct _FISH_PRIVATE_DATA; + +typedef void (*PRIV_FISH_CONSTRUCTOR)(struct _FISH_PRIVATE_DATA*, GAME*); +typedef void (*PRIV_FISH_MOVE)(struct _FISH_PRIVATE_DATA*, GAME*); +typedef void (*PRIV_FISH_DRAW)(struct _FISH_PRIVATE_DATA*, GAME*); +typedef void (*PRIV_FISH_PROCESS)(struct _FISH_PRIVATE_DATA*, GAME*); + +// struct decls +typedef struct _MUSEUM_FISH_INIT_DATA { + f32 renderScale; + f32 _04; + f32 _08; + f32 _0C; + f32 _10; + f32 _14; + f32 _18; + f32 _1C; + f32 _20; + f32 _24; + 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); + 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 + +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 enum fish_type MUSEUM_FISH_TYPE; + +typedef struct _FISH_PRIVATE_DATA { + MUSEUM_FISH_INIT_DATA init_data; + PRIV_FISH_PROCESS currentProcess; // size:4 + YET_SKELETON _38; + + YET_SKELETON_2* _590; + struct _FISH_PRIVATE_DATA* _594; + struct _FISH_PRIVATE_DATA* _598; + + MUSEUM_FISH_TYPE fishIDEnum; + xyz_t position; + xyz_t _5AC; + xyz_t _5B8; + artificial_padding(0x5B8, 0x5D0, xyz_t); + xyz_t _5D0; + xyz_t _5DC; + f32 _5E8; + f32 _5EC; + f32 _5F0; + f32 _5F4; + f32 _5F8; + f32 _5FC; + f32 _600; + f32 _604; + f32 _608; + s_xyz _60C; + s_xyz _612; + s_xyz _618; + s16 _61E; + s16 _620; + s16 _622; + s16 _624; + s16 activityFrameCount; + s16 savedActivityFrameCount; + s16 _62A; + s16 _62C; + s16 _62E_flags; + s16 group; + s16 _632; + s16 _634; + s16 _636; + s16 _638; + s16 _63A; + s16 _63C; + s16 _63E; + s16 _640; + s16 _642; + s16 _644; + s16 _646; +} MUSEUM_FISH_PRIVATE_DATA; // size 648 + +// Holds data for the underwater grass +typedef YET_SKELETON MUSEUM_FISH_KUSA_DATA; + +typedef struct _FISH_DISPLAY_MSG_INFO { + s16 fishName; + s16 fishInfo; +} FISH_DISPLAY_MSG_INFO; + +typedef struct _MUSEUM_FISH_ACTOR { + ACTOR actor; // offset: 0, size: 0x174 + 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 + + u8 _14cf8[16]; // temp + + xyz_t lightPosition[2]; + int numFishDisplayed; // offset: 0x14d20, size: 4 + int fishDisplayMsgIter; // offset: 0x14d24, size: 4 + FISH_DISPLAY_MSG_INFO fishDisplayMsgInfo[10]; // offset: 0x14d28, size: 4*10 + + s16 _14d50[20]; + s16 _14d78[20]; + artificial_padding(0x14d78, 0x14daa, s16[20]); + + s16 _14daa[5]; + s16 _14db4; + s16 _14db6; // offset: 0x14db6, size: 2 + s16 lightID1; // offset: 0x14db8, size: 2 + s16 lightID2; // offset: 0x14dba, size: 2 + s16 lightPower[2]; // offset: 0x14dbc, size: 4 + s16 _14dc0; // offset: 0x14dc0, size: 2 + s16 _14dc2; // offset: 0x14dc2, size: 2 + s16 _14dc4; // offset: 0x14dc4, size: 2 + s16 _14dc8; // offset: 0x14dc8, size: 2 +} MUSEUM_FISH_ACTOR; // size 14DCA + +// data +extern ACTOR_PROFILE Museum_Fish_Profile; +// technically static, but this helps with vscode includes +extern xyz_t suisou_pos[5]; +extern int kusa_group_tbl[14]; +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 float kusa_start_frame[14]; + +// functions + +// ac_museum_fish.c_inc +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); +BOOL Museum_Fish_Check_Talk_Distance(GAME* gamex, int index); +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_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, + void* arg, s_xyz* joint_rot, xyz_t* joint_pos); +void Museum_Fish_Kusa_Draw(ACTOR* actor, GAME* game, int r5); +void Museum_Fish_Actor_draw(ACTOR* actor, GAME* game); +BOOL mfish_cull_check(GAME* game, xyz_t* worldPos, f32 x, f32 y, f32 _y); +void mfish_point_ligh_pos_get(ACTOR* actorx, GAME* game, int r5); +void mfish_point_light_ct(ACTOR* actor, GAME* game); +void mfish_point_light_dt(ACTOR* r30, GAME* r31); +void mfish_point_light_mv(MUSEUM_FISH_ACTOR* actor, GAME* game); +void mfish_normal_light_set(ACTOR* actor, GAME* game); + +// ac_museum_fish_base.c_inc +f32 Rnd_EX_f(f32 v1); +f32 Rnd_EX_fx(f32 v1); +void mfish_base_FishMove(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +int mfish_PosWallCheck(MUSEUM_FISH_PRIVATE_DATA* priv, xyz_t* pos); +BOOL mfish_WallCheck(MUSEUM_FISH_PRIVATE_DATA* priv); +s16 mfish_get_hide_camera_angle(MUSEUM_FISH_PRIVATE_DATA* priv); +void mfish_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_turn_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_peck_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_peck_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_ground_peck_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_ground_peck_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_base_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_onefish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_onefish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +BOOL mfish_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); +void mfish_onefish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_ani_base_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_ani_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_ani_base_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +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); +void Museum_Fish_DonkoBGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void Museum_Fish_objchk_pos_set(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void Museum_Fish_BGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void Museum_Fish_Kusa_Check(MUSEUM_FISH_ACTOR* actor, GAME* game); +void Museum_Fish_Object_Check(MUSEUM_FISH_ACTOR* actor, GAME* game); +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); +BOOL mfish_peck_check(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +BOOL mfish_peck_wall_check(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +BOOL mfish_ground_peck_before_check(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_get_player_area(MUSEUM_FISH_ACTOR* actor, GAME* game); +void mfish_get_flow_vec(xyz_t* pos, MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +s16 mfish_get_escape_angle(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_move_smooth(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_hamon_make(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); + +// ac_museum_fish_afish.c_inc +void mfish_afish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_afish_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_afish_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_afish_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_afish_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_afish_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_afish_turn_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_afish_base_FishMove(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_afish_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_afish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_afish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); + +// ac_museum_fish_aroana.c_inc +void mfish_aroana_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_aroana_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_aroana_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex); +void mfish_aroana_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_aroana_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_aroana_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_aroana_turn_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_aroana_long_move_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_aroana_long_move_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_aroana_base_FishMove(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_aroana_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_aroana_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +BOOL mfish_aroana_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); +void mfish_aroana_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); + +// ac_museum_fish_koi.c_inc +void mfish_koi_tail_anim_set(MUSEUM_FISH_PRIVATE_DATA* actor, s32 r4); +void mfish_koi_move_smooth(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_koi_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_koi_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_koi_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_koi_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_koi_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_koi_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_koi_turn_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_koi_peck_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_koi_peck_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_koi_long_move_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_koi_long_move_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_koi_base_FishMove(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_koi_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_koi_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +BOOL mfish_koi_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); +void mfish_koi_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); + +// ac_museum_fish_kaseki.c_inc +void mfish_kaseki_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_kaseki_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex); +void mfish_kaseki_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex); +void mfish_kaseki_move_wall_smooth(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex); +void mfish_kaseki_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +BOOL mfish_kaseki_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); +void mfish_kaseki_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); + +// ac_museum_fish_bass.c_inc +void mfish_bass_tail_anim_set(MUSEUM_FISH_PRIVATE_DATA* actor, s32 r4); +void mfish_bass_base_FishMove(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_bass_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_bass_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_bass_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_bass_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_bass_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_bass_turn_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_bass_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_bass_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_bass_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); + +// ac_museum_fish_seafish.c_inc +void mfish_seafish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_seafish_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_seafish_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_seafish_turn_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_seafish_turn(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_seafish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +BOOL mfish_seafish_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); +void mfish_seafish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); + +// ac_museum_fish_tai.c_inc +void mfish_tai_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_tai_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_tai_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_tai_turn_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_tai_turn(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_tai_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +BOOL mfish_tai_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); +void mfish_tai_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); + +// ac_museum_fish_sfish.c_inc +void mfish_small_fish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_sfish_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_sfish_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_sfish_turn_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_sfish_turn(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_small_fish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +BOOL mfish_sfish_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); +void mfish_small_fish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); + +// ac_museum_fish_gupi.c_inc +void mfish_gupi_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_gupi_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_gupi_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_gupi_turn_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_gupi_turn(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_gupi_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +BOOL mfish_gupi_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); +void mfish_gupi_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); + +// ac_museum_fish_medaka.c_inc +void mfish_medaka_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_medaka_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_medaka_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_medaka_turn_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_medaka_turn(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_medaka_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +BOOL mfish_medaka_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); +void mfish_medaka_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); + +// ac_museum_fish_kingyo.c_inc +void mfish_kingyo_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_kingyo_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_kingyo_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_kingyo_turn_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_kingyo_turn(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_kingyo_peck_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_kingyo_peck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_kingyo_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +BOOL mfish_kingyo_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); +void mfish_kingyo_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); + +// ac_museum_fish_dojou.c_inc +void mfish_dojou_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_dojou_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_dojou_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_dojou_turn_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_dojou_turn(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_dojou_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +BOOL mfish_dojou_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); +void mfish_dojou_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); + +// ac_museum_fish_donko.c_inc +void mfish_donko_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_donko_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +BOOL mfish_donko_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); +void mfish_donko_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); + +// ac_museum_fish_big_fish.c_inc +void mfish_big_fish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_big_fish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +BOOL mfish_bfish_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); +void mfish_big_fish_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); + +// ac_museum_fish_ito.c_inc +void mfish_ito_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_ito_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +BOOL mfish_ito_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); +void mfish_ito_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); + +// ac_museum_fish_unagi.c_inc +void mfish_unagi_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +s16 mfish_unagi_get_next_rail_type(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_unagi_aim_wind_angle_calc(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_unagi_rail_move_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_unagi_rail_move(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_unagi_normal_to_reverse_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_unagi_normal_to_reverse(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_unagi_rail_move_reverse_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_unagi_rail_move_reverse(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_unagi_reverse_to_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_unagi_reverse_to_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_unagi_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +BOOL mfish_unagi_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); +void mfish_unagi_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); + +// ac_museum_fish_namazu.c_inc +void mfish_namazu_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_namazu_body_wind_anime_play(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_namazu_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_namazu_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_namazu_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_namazu_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_namazu_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_namazu_turn_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_namazu_ground_sweep_process_init(MUSEUM_FISH_PRIVATE_DATA* actor); +void mfish_namazu_ground_sweep_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_namazu_base_FishMove(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_namazu_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +BOOL mfish_namazu_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); +void mfish_namazu_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); + +// ac_museum_fish_zarigani.c_inc +void mfish_zarigani_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_zarigani_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_zarigani_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_zarigani_wait_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_zarigani_wait_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_zarigani_stand_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_zarigani_stand_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_zarigani_jump_process_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_zarigani_jump_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_zarigani_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +BOOL mfish_zarigani_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); +void mfish_zarigani_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); + +// ac_museum_fish_kurage.c_inc +void mfish_kurage_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_kurage_normal_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_kurage_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_kurage_turn_init(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +void mfish_kurage_turn(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game); +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_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, + void* arg, s_xyz* joint_rot, xyz_t* joint_pos); +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); +void mfish_kaeru_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex); + +#ifdef __cplusplus +} +#endif + +#endif // !AC_MUSEUM_FISH_PRIV_H diff --git a/src/actor/ac_museum_fish.c b/src/actor/ac_museum_fish.c index 291b99b3..f8d9ebb0 100644 --- a/src/actor/ac_museum_fish.c +++ b/src/actor/ac_museum_fish.c @@ -1,24 +1,4 @@ -#include "ac_museum_fish.h" -#include "m_msg.h" -#include "m_common_data.h" -#include "sys_matrix.h" -#include "m_player_lib.h" -#include "m_debug_mode.h" -#include "m_rcp.h" -#include "ac_gyoei.h" - -// found useful macros -#define MY_MAX(a, b) (((a) >= (b)) ? (a) : (b)) -#define MY_CLAMP(v, l, h) MIN(MY_MAX((l), (v)), (h)) -#define ARRAY_LEN(a) (sizeof(a) / sizeof(*a)) - -#define CALC_EASE(x) (1.0f - sqrtf(1.0f - (x))) -#define CALC_EASE2(x) CALC_EASE(CALC_EASE(x)) -#define SHORT2DEG_ANGLE2(x) ((x) * (360.0f / 65536.0f)) -#define RANDOMF_RANGE(min, max) ((f32)(min) + (f32)RANDOM_F((f32)(max) - (f32)(min))) -#define RANDOM2F_RANGE(min, max) ((f32)(min) + (f32)RANDOM2_F((f32)(max) - (f32)(min))) -#define RANDOM_RANGE(min, max) ((int)(min) + (int)RANDOM((int)(max) - (int)(min))) -#define RANDOM2_RANGE(min, max) ((int)(min) + (int)RANDOM2((int)(max) - (int)(min))) +#include "ac_museum_fish_priv.h" // extern data // clang-format off @@ -115,7 +95,6 @@ extern cKF_Animation_R_c cKF_ba_r_obj_museum5_kusa3; // data - MUSEUM_FISH_ACTOR* MF_Control_Actor; /* Init stuff */ @@ -494,134 +473,6 @@ PRIV_FISH_DRAW mfish_dw[40] = { /* ARAPAIMA */ mfish_big_fish_dw }; -xyz_t unagi_rail_pos[25] = { - { 228.0f, 57.0f, 192.0f }, - { 231.0f, 57.0f, 203.0f }, - { 237.0f, 57.0f, 215.0f }, - { 245.0f, 58.0f, 225.0f }, - { 252.0f, 59.0f, 233.0f }, - { 254.0f, 60.0f, 245.0f }, - { 248.0f, 60.0f, 255.0f }, - { 238.0f, 60.0f, 256.0f }, - { 231.0f, 60.0f, 247.0f }, - { 222.0f, 60.0f, 240.0f }, - { 212.0f, 60.0f, 243.0f }, - { 203.0f, 60.0f, 249.0f }, - { 196.0f, 60.0f, 248.0f }, - { 191.0f, 60.0f, 241.0f }, - { 191.0f, 60.0f, 234.0f }, - { 187.0f, 60.0f, 223.0f }, - { 183.0f, 60.0f, 212.0f }, - { 181.0f, 60.0f, 203.0f }, - { 182.0f, 57.0f, 191.0f }, - { 187.0f, 56.0f, 183.0f }, - { 193.0f, 56.0f, 176.0f }, - { 201.0f, 56.0f, 172.0f }, - { 209.0f, 56.0f, 173.0f }, - { 216.0f, 56.0f, 176.0f }, - { 221.0f, 56.0f, 182.0f } -}; - -xyz_t unagi_rail_pos2[20] = { - { 228.0f, 57.0f, 192.0f }, - { 236.0f, 57.0f, 201.0f }, - { 244.0f, 57.0f, 204.0f }, - { 250.0f, 58.0f, 213.0f }, - { 254.0f, 59.0f, 225.0f }, - { 250.0f, 60.0f, 238.0f }, - { 243.0f, 60.0f, 242.0f }, - { 235.0f, 60.0f, 238.0f }, - { 226.0f, 60.0f, 233.0f }, - { 215.0f, 60.0f, 229.0f }, - { 205.0f, 60.0f, 228.0f }, - { 198.0f, 60.0f, 229.0f }, - { 191.0f, 60.0f, 227.0f }, - { 186.0f, 60.0f, 222.0f }, - { 181.0f, 60.0f, 216.0f }, - { 181.0f, 60.0f, 207.0f }, - { 184.0f, 60.0f, 196.0f }, - { 191.0f, 60.0f, 186.0f }, - { 201.0f, 57.0f, 177.0f }, - { 213.0f, 56.0f, 178.0f } -}; - -xyz_t unagi_rail_pos3[25] = { - { 228.0f, 57.0f, 192.0f }, - { 231.0f, 57.0f, 203.0f }, - { 229.0f, 57.0f, 213.0f }, - { 222.0f, 58.0f, 225.0f }, - { 212.0f, 59.0f, 226.0f }, - { 204.0f, 60.0f, 227.0f }, - { 197.0f, 60.0f, 230.0f }, - { 193.0f, 60.0f, 236.0f }, - { 195.0f, 60.0f, 246.0f }, - { 201.0f, 60.0f, 253.0f }, - { 212.0f, 60.0f, 256.0f }, - { 222.0f, 60.0f, 255.0f }, - { 237.0f, 60.0f, 254.0f }, - { 243.0f, 60.0f, 246.0f }, - { 240.0f, 60.0f, 232.0f }, - { 232.0f, 60.0f, 227.0f }, - { 223.0f, 60.0f, 225.0f }, - { 209.0f, 60.0f, 225.0f }, - { 198.0f, 60.0f, 220.0f }, - { 190.0f, 60.0f, 209.0f }, - { 187.0f, 60.0f, 196.0f }, - { 191.0f, 60.0f, 184.0f }, - { 197.0f, 60.0f, 178.0f }, - { 207.0f, 59.0f, 173.0f }, - { 221.0f, 57.0f, 180.0f } -}; - -xyz_t unagi_normal_to_reverse_rail_pos[12] = { - { 228.0f, 57.0f, 192.0f }, - { 236.0f, 57.0f, 201.0f }, - { 244.0f, 57.0f, 204.0f }, - { 250.0f, 58.0f, 213.0f }, - { 254.0f, 59.0f, 225.0f }, - { 250.0f, 60.0f, 238.0f }, - { 243.0f, 60.0f, 242.0f }, - { 235.0f, 60.0f, 236.0f }, - { 226.0f, 60.0f, 228.0f }, - { 225.0f, 60.0f, 219.0f }, - { 228.0f, 58.0f, 208.0f }, - { 228.0f, 57.0f, 192.0f } -}; - -xyz_t unagi_reverse_to_normal_rail_pos[19] = { - { 228.0f, 57.0f, 192.0f }, - { 218.0f, 56.0f, 178.0f }, - { 204.0f, 57.0f, 176.0f }, - { 191.0f, 58.0f, 186.0f }, - { 184.0f, 59.0f, 196.0f }, - { 189.0f, 60.0f, 208.0f }, - { 198.0f, 60.0f, 215.0f }, - { 205.0f, 60.0f, 224.0f }, - { 204.0f, 60.0f, 235.0f }, - { 196.0f, 60.0f, 242.0f }, - { 188.0f, 60.0f, 241.0f }, - { 183.0f, 60.0f, 233.0f }, - { 180.0f, 60.0f, 219.0f }, - { 181.0f, 60.0f, 207.0f }, - { 184.0f, 60.0f, 196.0f }, - { 191.0f, 59.0f, 186.0f }, - { 204.0f, 57.0f, 176.0f }, - { 218.0f, 56.0f, 178.0f }, - { 228.0f, 57.0f, 192.0f } -}; - -xyz_t *unagi_rail_tbl[3] = { - unagi_rail_pos, - unagi_rail_pos2, - unagi_rail_pos3 -}; - -int unagi_rail_num_tbl[3] = { - ARRAY_LEN(unagi_rail_pos), - ARRAY_LEN(unagi_rail_pos2), - ARRAY_LEN(unagi_rail_pos3), -}; - #include "../src/actor/ac_museum_fish_base.c_inc" // clang-format on @@ -695,10 +546,6 @@ void Museum_Fish_Actor_ct(ACTOR* actorx, GAME* gamex) { mfish_point_light_ct(actorx, gamex); for (i = 0; i < 14; i++) { - // 0x0060 : kusa_group_tbl - // 0x1300 : kusa_model - // 0x1338 : kusa_anime - // 0x1370 : kusa_start_frame 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); @@ -707,7 +554,6 @@ void Museum_Fish_Actor_ct(ACTOR* actorx, GAME* gamex) { actor->prvKusa[i]._00.frame_control.current_frame = kusa_start_frame[i]; actor->prvKusa[i]._538.x = qrand(); actor->prvKusa[i]._538.z = qrand(); - // actor->_101f0[i * 2 + 2] = qrand(); } if (mMmd_FishInfo(aGYO_TYPE_FROG)) { @@ -886,7 +732,7 @@ void Museum_Fish_Actor_move(ACTOR* actorx, GAME* game) { 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); @@ -951,14 +797,10 @@ void Museum_Fish_Actor_move(ACTOR* actorx, GAME* game) { } Museum_Fish_Talk_process(actorx, game); - - { - // needs a new variable - MUSEUM_FISH_PRIVATE_DATA* prv = actor->prvFish; - for (i = 0; i < aGYO_TYPE_NUM; i++, prv++) { - if (prv->_62E_flags & 1) { - mfish_mv[i](prv, game); - } + prv2 = actor->prvFish; + for (i = 0; i < aGYO_TYPE_NUM; i++, prv2++) { + if (prv2->_62E_flags & 1) { + mfish_mv[i](prv2, game); } } @@ -1031,17 +873,17 @@ void Museum_Fish_Suisou_draw(ACTOR* actorx, GAME* game, int r5) { } } -BOOL kusa_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** mjoint_m, u8* joint_f, void* arg, - s_xyz* joint1, xyz_t* trans) { +BOOL kusa_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_KUSA_DATA* actor = (MUSEUM_FISH_KUSA_DATA*)arg; - if (joint_num > 0) { + if (joint_idx > 0) { f32 v = (actor->_54C == &cKF_bs_r_obj_museum5_kusa3) ? 35.0f : 20.f; - joint1->y += (s16)(sin_s(actor->_538.x + (joint_num * DEG2SHORT_ANGLE(90))) * 1274.0f); - joint1->x += (s16)(sin_s(actor->_538.z + (joint_num * DEG2SHORT_ANGLE(90))) * 4369.0f); + joint_rot->y += (s16)(sin_s(actor->_538.x + (joint_idx * DEG2SHORT_ANGLE(90))) * 1274.0f); + joint_rot->x += (s16)(sin_s(actor->_538.z + (joint_idx * DEG2SHORT_ANGLE(90))) * 4369.0f); - trans->y -= actor->_540.x * (v * joint_num); - trans->z += actor->_540.z * (v * joint_num); + joint_pos->y -= actor->_540.x * (v * joint_idx); + joint_pos->z += actor->_540.z * (v * joint_idx); } return TRUE; } diff --git a/src/actor/ac_museum_fish_afish.c_inc b/src/actor/ac_museum_fish_afish.c_inc index 2ed81fb0..e09ed9e1 100644 --- a/src/actor/ac_museum_fish_afish.c_inc +++ b/src/actor/ac_museum_fish_afish.c_inc @@ -1,3 +1,4 @@ +#include "ac_museum_fish_priv.h" void mfish_afish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { mfish_onefish_ct(actor, gamex); diff --git a/src/actor/ac_museum_fish_aroana.c_inc b/src/actor/ac_museum_fish_aroana.c_inc index f29391f0..ba181b64 100644 --- a/src/actor/ac_museum_fish_aroana.c_inc +++ b/src/actor/ac_museum_fish_aroana.c_inc @@ -1,3 +1,4 @@ +#include "ac_museum_fish_priv.h" void mfish_aroana_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { mfish_onefish_ct(actor, gamex); @@ -21,8 +22,6 @@ void mfish_aroana_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { add_calc0(&actor->_5F0, 0.01f, 0.001f); } -// close copy of mfish_afish_normal_process_init - void mfish_aroana_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) { f32 v = RANDOM_F(actor->init_data._14) + actor->init_data._10; @@ -151,10 +150,8 @@ void mfish_aroana_turn_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { if (ABS((s16)(actor->_60C.y - actor->_612.y)) < DEG2SHORT_ANGLE(2) && actor->_5E8 < 0.1f) { if (actor->_63E > 0) { if (mfish_WallCheck(actor)) { - // actor->_640 = 10; mfish_aroana_turn_process_init(actor); } else { - // actor->_640 = 10; mfish_aroana_normal_process_init(actor); } actor->_63E--; @@ -253,18 +250,18 @@ void mfish_aroana_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { actor->_38._00.frame_control.speed = (actor->_5E8 * 2.0f) / (actor->init_data._10 + actor->init_data._14) + 0.5f; } -BOOL mfish_aroana_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans) { +BOOL mfish_aroana_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; int v; - if (joint_num == 1) { + if (joint_idx == 1) { Matrix_scale(1.0, sin_s(actor->_63A + actor->_63C) * 0.025f + 1.0f, sin_s(actor->_63A) * 0.025f + 1.0f, 1); - } else if (joint_num == 2) { - v = joint1->y - (actor->_618.z << 1); - joint1->y = MIN(MAX(v, DEG2SHORT_ANGLE(-40)), DEG2SHORT_ANGLE(40)); + } else if (joint_idx == 2) { + v = joint_rot->y - (actor->_618.z << 1); + joint_rot->y = MIN(MAX(v, DEG2SHORT_ANGLE(-40)), DEG2SHORT_ANGLE(40)); - v = joint1->x - (actor->_618.z >> 2); - joint1->x = MIN(MAX(v, DEG2SHORT_ANGLE(-20)), DEG2SHORT_ANGLE(20)); + v = joint_rot->x - (actor->_618.z >> 2); + joint_rot->x = MIN(MAX(v, DEG2SHORT_ANGLE(-20)), DEG2SHORT_ANGLE(20)); Matrix_scale(1.0f, sin_s(actor->_63A + DEG2SHORT_ANGLE(270)) * 0.05f + 1.0f, sin_s(actor->_63A + DEG2SHORT_ANGLE(90)) * 0.05f + 1.0f, 1); diff --git a/src/actor/ac_museum_fish_base.c_inc b/src/actor/ac_museum_fish_base.c_inc index b94e2791..0ebe63d9 100644 --- a/src/actor/ac_museum_fish_base.c_inc +++ b/src/actor/ac_museum_fish_base.c_inc @@ -1,3 +1,5 @@ +#include "ac_museum_fish_priv.h" + f32 Rnd_EX_f(f32 v) { f32 rand1 = RANDOM2_F(2); f32 rand2 = RANDOM_F(1); @@ -121,7 +123,6 @@ void mfish_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* prv) { } void mfish_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { - // no clue what's going on here add_calc_short_angle2(&actor->_612.y, actor->_634, 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), @@ -526,10 +527,10 @@ void mfish_onefish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { cKF_SkeletonInfo_R_play(&actor->_38._00); } -int mfish_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, void* arg, - s_xyz* joint1, xyz_t* trans) { +int mfish_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; - if (joint_num == 2) { + if (joint_idx == 2) { int v, t; if (actor->group != 4) { @@ -542,10 +543,10 @@ int mfish_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, v = 3; } - t = joint1->y - (actor->_618.z * v); - joint1->y = MY_CLAMP(t, DEG2SHORT_ANGLE(-60), DEG2SHORT_ANGLE(60)); - t = joint1->x - (actor->_618.z >> 1); - joint1->x = MY_CLAMP(t, DEG2SHORT_ANGLE(-25), DEG2SHORT_ANGLE(25)); + t = joint_rot->y - (actor->_618.z * v); + joint_rot->y = MY_CLAMP(t, DEG2SHORT_ANGLE(-60), DEG2SHORT_ANGLE(60)); + t = joint_rot->x - (actor->_618.z >> 1); + joint_rot->x = MY_CLAMP(t, DEG2SHORT_ANGLE(-25), DEG2SHORT_ANGLE(25)); } return 1; } @@ -643,6 +644,7 @@ void mfish_ani_base_dw(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { #include "../src/actor/ac_museum_fish_zarigani.c_inc" #include "../src/actor/ac_museum_fish_kurage.c_inc" #include "../src/actor/ac_museum_fish_hasu.c_inc" + void Museum_Fish_BigFishObjCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { int i; MUSEUM_FISH_PRIVATE_DATA* fish[2]; @@ -802,7 +804,7 @@ void Museum_Fish_DonkoBGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { actor->_62E_flags &= ~0x1e; actor->_62C = 0; Museum_Fish_objchk_pos_set(actor, gamex); - // asm 17C + a = (+00.0f + p.x); b = (+45.0f + p.x); d = (-17.5f + p.z); @@ -816,19 +818,11 @@ void Museum_Fish_DonkoBGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { c -= (actor->position.z + actor->init_data._28 * v2); d -= (actor->position.z - actor->init_data._28 * v2); - /* - f31 = a - f30 = b - f28 = c - f29 = d - */ - actor->_5FC = -a; actor->_600 = b; actor->_604 = -c; actor->_608 = d; - // asm 2E8 f27 -= actor->position.y; f26 -= actor->position.y; if (a > 0.0f) { @@ -878,7 +872,6 @@ void Museum_Fish_DonkoBGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { f25 = MIN(MIN(actor->_608 - cos_s(actor->_60C.y), actor->_604 + cos_s(actor->_60C.y)), MIN(actor->_600 - sin_s(actor->_60C.y), actor->_5FC + sin_s(actor->_60C.y))); - // asm 5D8 if (f25 < 5.0f) { f26 -= 0.5f * (5.0f - f25); } @@ -896,7 +889,7 @@ void Museum_Fish_objchk_pos_set(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { actor->_5B8.z += (actor->init_data._24 * cos_s(actor->_60C.y)); } -void Museum_Fish_old_chk_pos_set() { +void Museum_Fish_old_chk_pos_set(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { // UNUSED/STRIPPED } @@ -961,7 +954,6 @@ void Museum_Fish_BGCheck(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { actor->_62E_flags |= 0x8; } - // asm 468 Museum_Fish_objchk_pos_set(actor, game); actor->_5FC = actor->_5B8.x - (p.x - f29); actor->_600 = (p.x + f30) - actor->_5B8.x; @@ -1068,9 +1060,7 @@ void Museum_Fish_Kusa_Check(MUSEUM_FISH_ACTOR* actor, GAME* game) { actor->prvKusa[j]._538.y = DEG2SHORT_ANGLE(3.5f); } } - // asm 3fc-410 } - // asm 414 if (f28 > 0.0f) { f->_62E_flags |= 0x100; f->position.x += (f30 / f28); @@ -1079,15 +1069,14 @@ void Museum_Fish_Kusa_Check(MUSEUM_FISH_ACTOR* actor, GAME* game) { f28 = 0.0f; f29 = 0.0f; f30 = 0.0f; - // asm 460 } } } void Museum_Fish_Object_Check(MUSEUM_FISH_ACTOR* actor, GAME* game) { int i; - MUSEUM_FISH_PRIVATE_DATA* fj; // r31 - MUSEUM_FISH_PRIVATE_DATA* f; // r29 + MUSEUM_FISH_PRIVATE_DATA* fj; + MUSEUM_FISH_PRIVATE_DATA* f; int j; f32 f31; f32 f30; @@ -1111,15 +1100,14 @@ void Museum_Fish_Object_Check(MUSEUM_FISH_ACTOR* actor, GAME* game) { f = actor->prvFish; for (i = 0; i < aGYO_TYPE_NUM; i++, f++) { - // asm b8 if (i != 0x21 && i != 0x20 && i != 0x1a && i != 0x27 && i != 0xa && f->_62E_flags & 1) { 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) { - test.x = f->_5B8.x - fj->_5B8.x; // f31 - test.y = f->_5B8.y - fj->_5B8.y; // f29 - test.z = f->_5B8.z - fj->_5B8.z; // f30 + test.x = f->_5B8.x - fj->_5B8.x; + test.y = f->_5B8.y - fj->_5B8.y; + test.z = f->_5B8.z - fj->_5B8.z; sq_xz = SQ(test.x) + SQ(test.z); sq_xzy = sq_xz + SQ(test.y); if (sqrtf(sq_xzy) < f23) { @@ -1133,7 +1121,7 @@ void Museum_Fish_Object_Check(MUSEUM_FISH_ACTOR* actor, GAME* game) { if (sq_xz < SQ(additive)) { f22 = additive - sqrtf(SQ(test.x) + SQ(test.z)); - // bug? + //! 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); } else { @@ -1174,8 +1162,6 @@ void Museum_Fish_Object_Check(MUSEUM_FISH_ACTOR* actor, GAME* game) { } } } - - // asm 5ec - 5f8 } if (f25 > 0.0f) { @@ -1208,7 +1194,6 @@ void Museum_Fish_Object_Check(MUSEUM_FISH_ACTOR* actor, GAME* game) { if (f->group == 3 && f->_624 != 7) { Museum_Fish_BigFishObjCheck(f, game); } - // asm 728 } } diff --git a/src/actor/ac_museum_fish_bass.c_inc b/src/actor/ac_museum_fish_bass.c_inc index 706fc44d..e7a6e5dd 100644 --- a/src/actor/ac_museum_fish_bass.c_inc +++ b/src/actor/ac_museum_fish_bass.c_inc @@ -1,3 +1,4 @@ +#include "ac_museum_fish_priv.h" void mfish_bass_tail_anim_set(MUSEUM_FISH_PRIVATE_DATA* actor, s32 r4) { if (r4 == 0) { @@ -53,7 +54,6 @@ void mfish_bass_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) { } void mfish_bass_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { - // no clue what's going on here add_calc_short_angle2(&actor->_612.y, actor->_634, 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)); @@ -62,7 +62,6 @@ void mfish_bass_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { } void mfish_bass_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* fishActor) { - //! NOTE: wrong floats in this file, based on objdiff f32 ra; f32 t; f32 temp; @@ -133,7 +132,6 @@ void mfish_bass_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* fishActor) { } void mfish_bass_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { - //! NOTE: wrong floats in this file, based on objdiff if (((actor->_62E_flags & 0x200) != 0 && actor->_632 > DEG2SHORT_ANGLE(20)) || actor->_640 > 0) { f32 v = (actor->_5AC.y * 0.03f + 0.02f); add_calc2(&actor->_5EC, @@ -283,7 +281,6 @@ void mfish_bass_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { } void mfish_bass_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { - //! NOTE: wrong floats in this file, based on objdiff mfish_onefish_mv(actor, gamex); if (actor->_5F8 > actor->init_data._08 * 20.0f) { diff --git a/src/actor/ac_museum_fish_big_fish.c_inc b/src/actor/ac_museum_fish_big_fish.c_inc index 6fe49ea9..087e7307 100644 --- a/src/actor/ac_museum_fish_big_fish.c_inc +++ b/src/actor/ac_museum_fish_big_fish.c_inc @@ -1,3 +1,4 @@ +#include "ac_museum_fish_priv.h" void mfish_big_fish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { qrand(); @@ -35,7 +36,6 @@ void mfish_big_fish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { } void mfish_big_fish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { - //! NOTE: wrong floats in this function, based on objdiff xyz_t p; mfish_onefish_mv(actor, gamex); mfish_body_wind_anime_play(actor, gamex); @@ -146,12 +146,11 @@ void mfish_big_fish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { Museum_Fish_BGCheck(actor, gamex); } -BOOL mfish_bfish_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans) { - //! NOTE: wrong floats in this function, based on objdiff +BOOL mfish_bfish_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; - if (joint_num == 1) { + if (joint_idx == 1) { f32 v; int i; if (actor->fishIDEnum == aGYO_TYPE_ARAPAIMA) { @@ -159,13 +158,13 @@ BOOL mfish_bfish_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joi } else { v = 0.02f; } - i = joint1->x + (actor->_618.z >> 1); - joint1->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20)); - i = joint1->y + (int)(actor->_644 * (GETREG(TAKREG, 0x14) * 0.01f + 0.5f) * sin_s(actor->_646)); - joint1->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30)); - trans->z += actor->_5AC.x * 0.06f * actor->_644 * sin_s(actor->_646 - DEG2SHORT_ANGLE(90)); + i = joint_rot->x + (actor->_618.z >> 1); + joint_rot->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20)); + i = joint_rot->y + (int)(actor->_644 * (GETREG(TAKREG, 0x14) * 0.01f + 0.5f) * sin_s(actor->_646)); + joint_rot->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30)); + joint_pos->z += actor->_5AC.x * 0.06f * actor->_644 * sin_s(actor->_646 - DEG2SHORT_ANGLE(90)); Matrix_scale(1.0f, 1.0f + v * sin_s(actor->_63A + actor->_63C), 1.0f + v * sin_s(actor->_63A), 1); - } else if (joint_num == 2) { + } else if (joint_idx == 2) { f32 v; int i; if (actor->fishIDEnum == aGYO_TYPE_ARAPAIMA) { @@ -173,19 +172,19 @@ BOOL mfish_bfish_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joi } else { v = 0.035f; } - i = joint1->y - (actor->_618.z * 2) + + i = joint_rot->y - (actor->_618.z * 2) + (int)(actor->_644 * (GETREG(TAKREG, 0x15) * 0.01f + 0.75f) * sin_s(actor->_646 + DEG2SHORT_ANGLE(-90.f + GETREG(TAKREG, 0x17)))); - joint1->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-40), DEG2SHORT_ANGLE(40)); - i = joint1->x - (actor->_618.z >> 1); - joint1->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20)); + joint_rot->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-40), DEG2SHORT_ANGLE(40)); + i = joint_rot->x - (actor->_618.z >> 1); + 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_num == 3 && actor->fishIDEnum == aGYO_TYPE_ARAPAIMA) { - int i = joint1->y - actor->_618.z + + } else if (joint_idx == 3 && actor->fishIDEnum == 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)))); - joint1->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30)); + joint_rot->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30)); } return TRUE; diff --git a/src/actor/ac_museum_fish_dojou.c_inc b/src/actor/ac_museum_fish_dojou.c_inc index 271307dc..1b24db38 100644 --- a/src/actor/ac_museum_fish_dojou.c_inc +++ b/src/actor/ac_museum_fish_dojou.c_inc @@ -1,3 +1,4 @@ +#include "ac_museum_fish_priv.h" void mfish_dojou_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { s16 s = qrand(); @@ -165,24 +166,24 @@ void mfish_dojou_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { actor->_612.x = MAX((s16)-actor->init_data._30, MIN(actor->init_data._30, actor->_612.x)); } -BOOL mfish_dojou_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans) { +BOOL mfish_dojou_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; - if (joint_num == 1) { - int i = joint1->x + actor->_618.z; - joint1->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-45), DEG2SHORT_ANGLE(40)); - i = joint1->y + actor->_618.z; - joint1->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-40), DEG2SHORT_ANGLE(40)); - } else if (joint_num == 2) { - int i = (s16)(joint1->z - actor->_618.x); + if (joint_idx == 1) { + int i = joint_rot->x + actor->_618.z; + joint_rot->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-45), DEG2SHORT_ANGLE(40)); + i = joint_rot->y + actor->_618.z; + joint_rot->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-40), DEG2SHORT_ANGLE(40)); + } else if (joint_idx == 2) { + int i = (s16)(joint_rot->z - actor->_618.x); f32 z; f32 t; - joint1->z = MY_CLAMP(i, DEG2SHORT_ANGLE(-40), DEG2SHORT_ANGLE(40)); + joint_rot->z = MY_CLAMP(i, DEG2SHORT_ANGLE(-40), DEG2SHORT_ANGLE(40)); z = actor->_618.z; - t = joint1->y * ((GETREG(TAKREG, 0x19) * 0.1f + 0.8f) * actor->_5AC.x + 1.0f); + t = joint_rot->y * ((GETREG(TAKREG, 0x19) * 0.1f + 0.8f) * actor->_5AC.x + 1.0f); i = (int)t - (int)z; - joint1->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-80), DEG2SHORT_ANGLE(80)); + joint_rot->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-80), DEG2SHORT_ANGLE(80)); } return TRUE; } diff --git a/src/actor/ac_museum_fish_donko.c_inc b/src/actor/ac_museum_fish_donko.c_inc index 86cedac4..488fe0ec 100644 --- a/src/actor/ac_museum_fish_donko.c_inc +++ b/src/actor/ac_museum_fish_donko.c_inc @@ -1,3 +1,4 @@ +#include "ac_museum_fish_priv.h" void mfish_donko_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { //! BUG: ? @@ -94,17 +95,17 @@ void mfish_donko_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { Museum_Fish_DonkoBGCheck(actor, gamex); } -BOOL mfish_donko_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans) { +BOOL mfish_donko_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; - if (joint_num == 1) { - int i = joint1->x + (actor->_618.z >> 1); - joint1->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20)); - } else if (joint_num == 2) { - int i = joint1->y - (actor->_618.z << 1); - joint1->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-60), DEG2SHORT_ANGLE(60)); - i = joint1->x - (actor->_618.z >> 1); - joint1->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20)); + if (joint_idx == 1) { + int i = joint_rot->x + (actor->_618.z >> 1); + joint_rot->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20)); + } else if (joint_idx == 2) { + int i = joint_rot->y - (actor->_618.z << 1); + joint_rot->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-60), DEG2SHORT_ANGLE(60)); + i = joint_rot->x - (actor->_618.z >> 1); + joint_rot->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20)); } return TRUE; diff --git a/src/actor/ac_museum_fish_gupi.c_inc b/src/actor/ac_museum_fish_gupi.c_inc index 5924cb5e..742704e8 100644 --- a/src/actor/ac_museum_fish_gupi.c_inc +++ b/src/actor/ac_museum_fish_gupi.c_inc @@ -1,3 +1,4 @@ +#include "ac_museum_fish_priv.h" void mfish_gupi_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { s16 s = qrand(); @@ -167,24 +168,24 @@ void mfish_gupi_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { actor->_612.x = MAX((s16)-actor->init_data._30, MIN(actor->init_data._30, actor->_612.x)); } -BOOL mfish_gupi_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans) { +BOOL mfish_gupi_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; - if (joint_num == 1) { - int s = joint1->x + actor->_618.z; - joint1->x = MY_CLAMP(s, -DEG2SHORT_ANGLE(30), DEG2SHORT_ANGLE(30)); - s = joint1->y + actor->_618.z; - joint1->y = MY_CLAMP(s, -DEG2SHORT_ANGLE(30), DEG2SHORT_ANGLE(30)); - } else if (joint_num == 2) { + if (joint_idx == 1) { + int s = joint_rot->x + actor->_618.z; + joint_rot->x = MY_CLAMP(s, -DEG2SHORT_ANGLE(30), DEG2SHORT_ANGLE(30)); + s = joint_rot->y + actor->_618.z; + joint_rot->y = MY_CLAMP(s, -DEG2SHORT_ANGLE(30), DEG2SHORT_ANGLE(30)); + } else if (joint_idx == 2) { int s; if (actor->_5F0 - 0.001f > actor->_5E8) { - joint1->y += (int)(2.0f * (actor->_5F0 - actor->_5E8) * joint1->y); + joint_rot->y += (int)(joint_rot->y * (2.0f * (actor->_5F0 - actor->_5E8))); } - s = joint1->y - actor->_618.z * 3; - joint1->y = MY_CLAMP(s, -DEG2SHORT_ANGLE(60), DEG2SHORT_ANGLE(60)); - s = joint1->x - (actor->_618.z >> 1); - joint1->x = MY_CLAMP(s, -DEG2SHORT_ANGLE(30), DEG2SHORT_ANGLE(30)); - joint1->z += (s16)(actor->_618.x * (-1.3f + GETREG(TAKREG, 0x4e) * 0.1f)); + s = joint_rot->y - actor->_618.z * 3; + joint_rot->y = MY_CLAMP(s, -DEG2SHORT_ANGLE(60), DEG2SHORT_ANGLE(60)); + s = joint_rot->x - (actor->_618.z >> 1); + joint_rot->x = MY_CLAMP(s, -DEG2SHORT_ANGLE(30), DEG2SHORT_ANGLE(30)); + joint_rot->z += (s16)(actor->_618.x * (-1.3f + GETREG(TAKREG, 0x4e) * 0.1f)); Matrix_scale((GETREG(TAKREG, 0x4b) * 0.01f) * cos_s(actor->_63A) + 0.05f + 1.0f, (GETREG(TAKREG, 0x4c) * 0.01f) * sin_s(actor->_63A) + 0.1f + 1.0f, 1.0f, 1); } diff --git a/src/actor/ac_museum_fish_hasu.c_inc b/src/actor/ac_museum_fish_hasu.c_inc index 65a9a8de..e76be43a 100644 --- a/src/actor/ac_museum_fish_hasu.c_inc +++ b/src/actor/ac_museum_fish_hasu.c_inc @@ -1,4 +1,4 @@ -// Pretty sure all the floats in this file are correct +#include "ac_museum_fish_priv.h" extern cKF_Skeleton_R_c cKF_bs_r_obj_museum5_hasu; extern cKF_Animation_R_c cKF_ba_r_obj_museum5_hasu; @@ -159,25 +159,25 @@ void mfish_kaeru_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { } } -BOOL hasu_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, void* arg, - s_xyz* joint1, xyz_t* trans) { +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; - if (joint_num == 7) { - trans->z += v2->_55C * sin_s(v2->_568); - } else if (joint_num == 4) { - trans->z += v2->_560 * sin_s(v2->_56A); - } else if (joint_num == 9) { - trans->z += v2->_564 * sin_s(v2->_56C); + if (joint_idx == 7) { + joint_pos->z += v2->_55C * sin_s(v2->_568); + } else if (joint_idx == 4) { + joint_pos->z += v2->_560 * sin_s(v2->_56A); + } else if (joint_idx == 9) { + joint_pos->z += v2->_564 * sin_s(v2->_56C); } return TRUE; } -BOOL hasu_after_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, void* arg, - s_xyz* joint1, xyz_t* trans) { +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; - if (joint_num == 9) { + if (joint_idx == 9) { Matrix_Position_Zero(&actor->position); actor->position.y = skele->_564 * actor->init_data.renderScale * sin_s(skele->_56C) + 116.0f; } diff --git a/src/actor/ac_museum_fish_ito.c_inc b/src/actor/ac_museum_fish_ito.c_inc index 93deec89..05f94f15 100644 --- a/src/actor/ac_museum_fish_ito.c_inc +++ b/src/actor/ac_museum_fish_ito.c_inc @@ -1,3 +1,4 @@ +#include "ac_museum_fish_priv.h" void mfish_ito_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { //! BUG: unused @@ -81,26 +82,26 @@ void mfish_ito_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { Museum_Fish_BGCheck(actor, gamex); } -BOOL mfish_ito_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans) { +BOOL mfish_ito_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; - if (joint_num == 1) { + if (joint_idx == 1) { f32 v; - int i = joint1->x + (actor->_618.z >> 1); - joint1->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20)); - i = joint1->y + (int)(actor->_644 * (GETREG(TAKREG, 0x14) * 0.01f + 0.5f) * sin_s(actor->_646)); - joint1->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30)); + int i = joint_rot->x + (actor->_618.z >> 1); + joint_rot->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20)); + i = joint_rot->y + (int)(actor->_644 * (GETREG(TAKREG, 0x14) * 0.01f + 0.5f) * sin_s(actor->_646)); + joint_rot->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30)); v = actor->_5AC.x * actor->_644 * sin_s(actor->_646 - DEG2SHORT_ANGLE(90)); - trans->z += v; + joint_pos->z += v; Matrix_scale(1.0f, sin_s(actor->_63A + actor->_63C) * 0.025f + 1.0f, sin_s(actor->_63A) * 0.025f + 1.0f, 1); - } else if (joint_num == 2) { + } else if (joint_idx == 2) { int i; - i = joint1->y - 2 * actor->_618.z + + i = joint_rot->y - 2 * actor->_618.z + (int)(actor->_644 * (GETREG(TAKREG, 0x15) * 0.01f + 0.75f) * sin_s(actor->_646 + DEG2SHORT_ANGLE(-90.f + GETREG(TAKREG, 0x17)))); - joint1->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-40), DEG2SHORT_ANGLE(40)); - i = joint1->x - (actor->_618.z >> 1); - joint1->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20)); + joint_rot->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-40), DEG2SHORT_ANGLE(40)); + i = joint_rot->x - (actor->_618.z >> 1); + joint_rot->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20)); Matrix_scale(1.0f, sin_s(actor->_63A + DEG2SHORT_ANGLE(270)) * 0.05f + 1.0f, sin_s(actor->_63A + DEG2SHORT_ANGLE(90)) * 0.05f + 1.0f, 1); } diff --git a/src/actor/ac_museum_fish_kaseki.c_inc b/src/actor/ac_museum_fish_kaseki.c_inc index 410d1dc3..522025de 100644 --- a/src/actor/ac_museum_fish_kaseki.c_inc +++ b/src/actor/ac_museum_fish_kaseki.c_inc @@ -1,3 +1,4 @@ +#include "ac_museum_fish_priv.h" void mfish_kaseki_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { mfish_onefish_ct(actor, gamex); @@ -147,27 +148,27 @@ void mfish_kaseki_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { actor->activityFrameCount--; } -BOOL mfish_kaseki_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans) { +BOOL mfish_kaseki_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; int i; - if (joint_num == 1) { - i = joint1->x + (int)(actor->_618.z * (GETREG(TAKREG, 0x47) * 0.01f + 0.5f)); - joint1->x = MIN(MAX(i, DEG2SHORT_ANGLE(-10)), DEG2SHORT_ANGLE(10)); + if (joint_idx == 1) { + i = joint_rot->x + (int)(actor->_618.z * (GETREG(TAKREG, 0x47) * 0.01f + 0.5f)); + joint_rot->x = MIN(MAX(i, DEG2SHORT_ANGLE(-10)), DEG2SHORT_ANGLE(10)); Matrix_scale(1.0f, (GETREG(TAKREG, 0x36) * 0.001f + 0.02f) * sin_s(actor->_63A + actor->_63C) + 1.0f, (GETREG(TAKREG, 0x36) * 0.001f + 0.02f) * sin_s(actor->_63A) + 1.0f, 1); - } else if (joint_num == 2) { - i = joint1->y - (int)(actor->_618.z * (GETREG(TAKREG, 0x46) * 0.01f + 1.25f)); - joint1->y = MIN(MAX(i, DEG2SHORT_ANGLE(-50)), DEG2SHORT_ANGLE(50)); - i = joint1->x - (int)(actor->_618.z * (GETREG(TAKREG, 0x48) * 0.01f + 0.25f)); - joint1->x = MIN(MAX(i, DEG2SHORT_ANGLE(-10)), DEG2SHORT_ANGLE(10)); + } else if (joint_idx == 2) { + i = joint_rot->y - (int)(actor->_618.z * (GETREG(TAKREG, 0x46) * 0.01f + 1.25f)); + joint_rot->y = MIN(MAX(i, DEG2SHORT_ANGLE(-50)), DEG2SHORT_ANGLE(50)); + i = joint_rot->x - (int)(actor->_618.z * (GETREG(TAKREG, 0x48) * 0.01f + 0.25f)); + joint_rot->x = MIN(MAX(i, DEG2SHORT_ANGLE(-10)), DEG2SHORT_ANGLE(10)); Matrix_scale(1.0f, (GETREG(TAKREG, 0x37) * 0.001f + 0.045f) * sin_s(actor->_63A + DEG2SHORT_ANGLE(270)) + 1.0f, (GETREG(TAKREG, 0x37) * 0.001f + 0.045f) * sin_s(actor->_63A + DEG2SHORT_ANGLE(90)) + 1.0f, 1); - } else if (joint_num == 3) { - i = joint1->y - (int)(actor->_618.z * (GETREG(TAKREG, 0x47) * 0.01f + 1.25f)); - joint1->y = MIN(MAX(i, DEG2SHORT_ANGLE(-50)), DEG2SHORT_ANGLE(50)); - i = joint1->x + DEG2SHORT_ANGLE2(GETREG(TAKREG, 0x2d) * sin_s(actor->_63A)); - joint1->x = MIN(MAX(i, DEG2SHORT_ANGLE(-40)), DEG2SHORT_ANGLE(40)); + } else if (joint_idx == 3) { + i = joint_rot->y - (int)(actor->_618.z * (GETREG(TAKREG, 0x47) * 0.01f + 1.25f)); + joint_rot->y = MIN(MAX(i, DEG2SHORT_ANGLE(-50)), DEG2SHORT_ANGLE(50)); + i = joint_rot->x + DEG2SHORT_ANGLE2(GETREG(TAKREG, 0x2d) * sin_s(actor->_63A)); + joint_rot->x = MIN(MAX(i, DEG2SHORT_ANGLE(-40)), DEG2SHORT_ANGLE(40)); } return TRUE; } diff --git a/src/actor/ac_museum_fish_kingyo.c_inc b/src/actor/ac_museum_fish_kingyo.c_inc index 96143ebd..557a8724 100644 --- a/src/actor/ac_museum_fish_kingyo.c_inc +++ b/src/actor/ac_museum_fish_kingyo.c_inc @@ -1,3 +1,4 @@ +#include "ac_museum_fish_priv.h" void mfish_kingyo_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { s16 s = qrand(); @@ -215,24 +216,24 @@ void mfish_kingyo_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { actor->_612.x = MAX((s16)-actor->init_data._30, MIN(actor->init_data._30, actor->_612.x)); } -BOOL mfish_kingyo_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans) { +BOOL mfish_kingyo_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; - if (joint_num == 1) { - int i = joint1->x + actor->_618.z; - joint1->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30)); - i = joint1->y + actor->_618.z; - joint1->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30)); - } else if (joint_num == 2) { + if (joint_idx == 1) { + int i = joint_rot->x + actor->_618.z; + joint_rot->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30)); + i = joint_rot->y + actor->_618.z; + joint_rot->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30)); + } else if (joint_idx == 2) { int i; if (actor->_5F0 - 0.001f > actor->_5E8) { - joint1->y += (int)((actor->_5F0 - actor->_5E8) * 2.0f * joint1->y); + joint_rot->y += (int)((actor->_5F0 - actor->_5E8) * 2.0f * joint_rot->y); } - i = joint1->y - actor->_618.z * 3; - joint1->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-80), DEG2SHORT_ANGLE(80)); - i = joint1->x - (actor->_618.z >> 1); - joint1->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30)); - joint1->z += (int)(actor->_618.x * (-1.3f + 0.1f * GETREG(TAKREG, 0x4e))); + i = joint_rot->y - actor->_618.z * 3; + joint_rot->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-80), DEG2SHORT_ANGLE(80)); + i = joint_rot->x - (actor->_618.z >> 1); + joint_rot->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30)); + joint_rot->z += (int)(actor->_618.x * (-1.3f + 0.1f * GETREG(TAKREG, 0x4e))); Matrix_scale(GETREG(TAKREG, 0x4b) * 0.01f * cos_s(actor->_63A) + 0.05f + 1.0f, GETREG(TAKREG, 0x4c) * 0.01f * sin_s(actor->_63A) + 0.1f + 1.0f, GETREG(TAKREG, 0x4d) * 0.01f * cos_s(actor->_63A) + 0.1f + 1.0f, 1); diff --git a/src/actor/ac_museum_fish_koi.c_inc b/src/actor/ac_museum_fish_koi.c_inc index 09b68c13..21cf9af8 100644 --- a/src/actor/ac_museum_fish_koi.c_inc +++ b/src/actor/ac_museum_fish_koi.c_inc @@ -1,3 +1,5 @@ +#include "ac_museum_fish_priv.h" + void mfish_koi_tail_anim_set(MUSEUM_FISH_PRIVATE_DATA* actor, s32 r4) { f32 temp; f32 temp2; @@ -162,7 +164,6 @@ void mfish_koi_normal_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) { void mfish_koi_normal_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { s16 temp; - //! NOTE: wrong float somewhere in this file, just based on objdiffs colors changing if (ABS(actor->_632) > DEG2SHORT_ANGLE(20) || actor->_640 > 0) { add_calc2(&actor->_5EC, ((actor->_632 - DEG2SHORT_ANGLE(20)) / DEG2SHORT_ANGLE(2)) * 0.0035f + 0.03f, 0.35f, 0.05f); @@ -319,8 +320,6 @@ void mfish_koi_peck_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { s16 atany; f32 dist; - // mfish_get_player_angle(actor, gamex, &atanx, &atany, &dist); - if (ABS(actor->_632) > DEG2SHORT_ANGLE(20) || actor->_640 > 0) { add_calc2(&actor->_5EC, ((actor->_632 - DEG2SHORT_ANGLE(20)) / DEG2SHORT_ANGLE(2)) * 0.0035f + 0.04f, 0.4f, 0.1f); @@ -343,10 +342,8 @@ void mfish_koi_peck_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { actor->_5F0 = 0.05f; actor->activityFrameCount = actor->init_data.activeFramesMin + (s16)RANDOM_F(actor->init_data.activeFramesRange); - // actor->_626 >>= 3; } actor->savedActivityFrameCount = actor->activityFrameCount; - // actor->_5F0 = 0.0f; } } @@ -389,7 +386,6 @@ void mfish_koi_base_FishMove(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { } void mfish_koi_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { - //! NOTE: wrong floats in this file, based on objdiff if (actor->_5F8 > actor->init_data._08 * 20.f) { actor->_5F8 = 0.0f; actor->activityFrameCount = 0; @@ -423,7 +419,6 @@ void mfish_koi_base_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { } } - // actor->_5AC.y = 0.0f; actor->_638 += DEG2SHORT_ANGLE(10); actor->currentProcess(actor, gamex); if (ABS(actor->_618.z) < ABS(actor->_622) && ABS(actor->_622) > DEG2SHORT_ANGLE(2)) { @@ -472,23 +467,23 @@ void mfish_koi_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { } } -BOOL mfish_koi_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans) { +BOOL mfish_koi_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; - if (joint_num == 0) { - trans->x *= actor->_5AC.z; - trans->y *= actor->_5AC.z; - trans->z = (trans->z - 1400.0f) * actor->_5AC.z + 1400.0f; - } else if (joint_num == 1) { - joint1->y = joint1->y * actor->_5AC.z; - } else if (joint_num == 2) { + if (joint_idx == 0) { + joint_pos->x *= actor->_5AC.z; + joint_pos->y *= actor->_5AC.z; + joint_pos->z = (joint_pos->z - 1400.0f) * actor->_5AC.z + 1400.0f; + } else if (joint_idx == 1) { + joint_rot->y *= actor->_5AC.z; + } else if (joint_idx == 2) { int i; - i = joint1->y - (int)(actor->_618.z * (GETREG(TAKREG, 0x47) * 0.1f + 2.0f)); - joint1->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-80), DEG2SHORT_ANGLE(80)); + i = joint_rot->y - (int)(actor->_618.z * (GETREG(TAKREG, 0x47) * 0.1f + 2.0f)); + joint_rot->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-80), DEG2SHORT_ANGLE(80)); - i = joint1->x - (actor->_618.z >> 3); - joint1->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-25), DEG2SHORT_ANGLE(25)); + i = joint_rot->x - (actor->_618.z >> 3); + joint_rot->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-25), DEG2SHORT_ANGLE(25)); } return TRUE; diff --git a/src/actor/ac_museum_fish_kurage.c_inc b/src/actor/ac_museum_fish_kurage.c_inc index eec6471d..7852a592 100644 --- a/src/actor/ac_museum_fish_kurage.c_inc +++ b/src/actor/ac_museum_fish_kurage.c_inc @@ -1,3 +1,4 @@ +#include "ac_museum_fish_priv.h" void mfish_kurage_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { s16 s = qrand(); @@ -102,7 +103,6 @@ void mfish_kurage_turn(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { } void mfish_kurage_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { - //! NOTE: wrong floats in this file, based on objdiff f32 v; xyz_t p; f32 t; diff --git a/src/actor/ac_museum_fish_medaka.c_inc b/src/actor/ac_museum_fish_medaka.c_inc index 3789e73c..600357a8 100644 --- a/src/actor/ac_museum_fish_medaka.c_inc +++ b/src/actor/ac_museum_fish_medaka.c_inc @@ -1,3 +1,4 @@ +#include "ac_museum_fish_priv.h" void mfish_medaka_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { s16 s = qrand(); @@ -137,19 +138,19 @@ void mfish_medaka_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { actor->_612.x = MAX((s16)-actor->init_data._30, MIN(actor->init_data._30, actor->_612.x)); } -BOOL mfish_medaka_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans) { +BOOL mfish_medaka_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; - if (joint_num == 1) { - int i = joint1->x + actor->_618.z; - joint1->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30)); - i = joint1->y + actor->_618.z; - joint1->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30)); - } else if (joint_num == 2) { - int i = joint1->y - (actor->_618.z * 3); - joint1->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-60), DEG2SHORT_ANGLE(60)); - i = joint1->x - (actor->_618.z >> 1); - joint1->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30)); + if (joint_idx == 1) { + int i = joint_rot->x + actor->_618.z; + joint_rot->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30)); + i = joint_rot->y + actor->_618.z; + joint_rot->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30)); + } else if (joint_idx == 2) { + int i = joint_rot->y - (actor->_618.z * 3); + joint_rot->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-60), DEG2SHORT_ANGLE(60)); + i = joint_rot->x - (actor->_618.z >> 1); + joint_rot->x = MY_CLAMP(i, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30)); } return TRUE; } diff --git a/src/actor/ac_museum_fish_namazu.c_inc b/src/actor/ac_museum_fish_namazu.c_inc index e9728e0d..089698af 100644 --- a/src/actor/ac_museum_fish_namazu.c_inc +++ b/src/actor/ac_museum_fish_namazu.c_inc @@ -1,3 +1,4 @@ +#include "ac_museum_fish_priv.h" void mfish_namazu_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { mfish_onefish_ct(actor, gamex); @@ -16,7 +17,6 @@ void mfish_namazu_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { actor->_622 = actor->_60C.y; actor->position.z += 40.0f; actor->_624 = 10; - // maybe s_xyz? but because we're not assigning a ZeroSVec, i'm thinking not? actor->_640 = 0; actor->_642 = 0; actor->_644 = 0; @@ -101,7 +101,7 @@ void mfish_namazu_dummy_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) { actor->currentProcess = mfish_namazu_dummy_process; } -void mfish_namazu_dummy_process(MUSEUM_FISH_PRIVATE_DATA* actor) { +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), DEG2SHORT_ANGLE(0.125f)); @@ -143,7 +143,7 @@ void mfish_namazu_turn_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) { actor->currentProcess = mfish_namazu_turn_process; } -void mfish_namazu_turn_process(MUSEUM_FISH_PRIVATE_DATA* actor) { +void mfish_namazu_turn_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { add_calc2(&actor->_5E8, actor->_5F0, CALC_EASE(0.05f), 0.0625f); add_calc2(&actor->_5F0, 0.05f, CALC_EASE(0.1f), 0.0025f); add_calc_short_angle2(&actor->_632, 0, CALC_EASE2(0.29f), DEG2SHORT_ANGLE(1.25f), DEG2SHORT_ANGLE(0.125f)); @@ -184,7 +184,7 @@ void mfish_namazu_ground_sweep_process_init(MUSEUM_FISH_PRIVATE_DATA* actor) { actor->currentProcess = mfish_namazu_ground_sweep_process; } -void mfish_namazu_ground_sweep_process(MUSEUM_FISH_PRIVATE_DATA* actor) { +void mfish_namazu_ground_sweep_process(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { if (actor->_632 > DEG2SHORT_ANGLE(20)) { add_calc2(&actor->_5E8, actor->_5F0, CALC_EASE(0.075f), (0.4f + 0.02f * ((actor->_632 - DEG2SHORT_ANGLE(20)) / DEG2SHORT_ANGLE(2))) * 0.5f); @@ -282,25 +282,25 @@ void mfish_namazu_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { mfish_namazu_body_wind_anime_play(actor, gamex); } -BOOL mfish_namazu_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans) { +BOOL mfish_namazu_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; int s; - if (joint_num == 0) { - trans->y = -(actor->_5AC.y * MIN(sin_s(actor->_640), 0.5f)); - } else if (joint_num == 1) { - s = joint1->z + actor->_640; - joint1->z = MY_CLAMP(s, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30)); - s = joint1->x + (actor->_618.z >> 2); - joint1->x = MY_CLAMP(s, DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20)); + if (joint_idx == 0) { + joint_pos->y = -(actor->_5AC.y * MIN(sin_s(actor->_640), 0.5f)); + } else if (joint_idx == 1) { + s = joint_rot->z + actor->_640; + joint_rot->z = MY_CLAMP(s, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30)); + s = joint_rot->x + (actor->_618.z >> 2); + joint_rot->x = MY_CLAMP(s, DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20)); Matrix_scale(1.0f, 1.0f + 0.01f * sin_s(actor->_63A + actor->_63C), 1.0f + 0.01f * sin_s(actor->_63A), 1); - } else if (joint_num == 2) { - s = joint1->y - (actor->_618.z << 1); - joint1->y = MY_CLAMP(s, DEG2SHORT_ANGLE(-60), DEG2SHORT_ANGLE(60)); - s = joint1->x - (actor->_618.z >> 2); - joint1->x = MY_CLAMP(s, DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20)); - s = joint1->z - (s16)(actor->_640 * (0.6f + GETREG(TAKREG, 0x4E) * 0.01f)); - joint1->z = MY_CLAMP(s, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30)); + } else if (joint_idx == 2) { + s = joint_rot->y - (actor->_618.z << 1); + joint_rot->y = MY_CLAMP(s, DEG2SHORT_ANGLE(-60), DEG2SHORT_ANGLE(60)); + s = joint_rot->x - (actor->_618.z >> 2); + joint_rot->x = MY_CLAMP(s, DEG2SHORT_ANGLE(-20), DEG2SHORT_ANGLE(20)); + s = joint_rot->z - (s16)(actor->_640 * (0.6f + GETREG(TAKREG, 0x4E) * 0.01f)); + joint_rot->z = MY_CLAMP(s, DEG2SHORT_ANGLE(-30), DEG2SHORT_ANGLE(30)); Matrix_scale(1.0f, 1.0f + 0.005f * sin_s(actor->_63A + DEG2SHORT_ANGLE(270)), 1.0f + 0.005f * sin_s(actor->_63A + DEG2SHORT_ANGLE(90)), 1); } diff --git a/src/actor/ac_museum_fish_seafish.c_inc b/src/actor/ac_museum_fish_seafish.c_inc index 2ac49a41..d3f1a763 100644 --- a/src/actor/ac_museum_fish_seafish.c_inc +++ b/src/actor/ac_museum_fish_seafish.c_inc @@ -1,3 +1,4 @@ +#include "ac_museum_fish_priv.h" void mfish_seafish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { s16 s = qrand(); @@ -67,11 +68,9 @@ void mfish_seafish_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { } if (actor->_598->position.z < actor->position.z) { - // swap here o_5a0_z += sum_i_8; add_calc2(&actor->position.z, o_5a0_z, 0.1f, abs_diff_sum * 0.1f); } else { - // swap here o_5a0_z -= sum_i_8; add_calc2(&actor->position.z, o_5a0_z, 0.1f, abs_diff_sum * 0.1f); } @@ -123,7 +122,6 @@ void mfish_seafish_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { DEG2SHORT_ANGLE(0)); } } else if (actor->activityFrameCount < 0) { - // r in wrong register here r = RANDOM_F(1.0f); actor->_612.y = actor->_60C.y; if ((actor->_608 - actor->_604) * cos_s(actor->_60C.y) < 0.0f) { @@ -179,7 +177,6 @@ void mfish_seafish_turn(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* game) { } void mfish_seafish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { - //! NOTE: wrong floats in this file, based on objdiff xyz_t p; actor->currentProcess(actor, gamex); actor->_618.x += DEG2SHORT_ANGLE(actor->_5E8 * RANDOM_F(3.0f)); @@ -216,17 +213,17 @@ void mfish_seafish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { actor->activityFrameCount--; } -BOOL mfish_seafish_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans) { +BOOL mfish_seafish_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; - if (joint_num == 1) { - int s = joint1->x + (int)(actor->_618.z * (GETREG(TAKREG, 0x37) * 0.01f + 0.5f)); - joint1->x = MIN(MAX(s, DEG2SHORT_ANGLE(-15)), DEG2SHORT_ANGLE(15)); + if (joint_idx == 1) { + int s = joint_rot->x + (int)(actor->_618.z * (GETREG(TAKREG, 0x37) * 0.01f + 0.5f)); + joint_rot->x = MIN(MAX(s, DEG2SHORT_ANGLE(-15)), DEG2SHORT_ANGLE(15)); Matrix_scale(1.0f, (GETREG(TAKREG, 0x36) * 0.001f + 0.035f) * sin_s(actor->_63A + actor->_63C) + 1.0f, (GETREG(TAKREG, 0x36) * 0.001f + 0.035f) * sin_s(actor->_63A) + 1.0f, 1); - } else if (joint_num == 2) { - int v = joint1->y - (actor->_618.z << 1); - joint1->y = MIN(MAX(v, DEG2SHORT_ANGLE(-80)), DEG2SHORT_ANGLE(80)); + } else if (joint_idx == 2) { + int v = joint_rot->y - (actor->_618.z << 1); + joint_rot->y = MIN(MAX(v, DEG2SHORT_ANGLE(-80)), DEG2SHORT_ANGLE(80)); Matrix_scale(1.0f, sin_s(actor->_63A + DEG2SHORT_ANGLE(270)) * 0.07f + 1.0f, sin_s(actor->_63A + DEG2SHORT_ANGLE(90)) * 0.07f + 1.0f, 1); } diff --git a/src/actor/ac_museum_fish_small_fish.c_inc b/src/actor/ac_museum_fish_small_fish.c_inc index 9c9b77eb..f8686e15 100644 --- a/src/actor/ac_museum_fish_small_fish.c_inc +++ b/src/actor/ac_museum_fish_small_fish.c_inc @@ -1,3 +1,4 @@ +#include "ac_museum_fish_priv.h" void mfish_small_fish_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { s16 s = qrand(); @@ -162,19 +163,19 @@ void mfish_small_fish_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { actor->_612.x = MAX((s16)-actor->init_data._30, MIN(actor->init_data._30, actor->_612.x)); } -BOOL mfish_sfish_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans) { +BOOL mfish_sfish_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; - if (joint_num == 1) { - int s = joint1->x + actor->_618.z; - joint1->x = MY_CLAMP(s, -DEG2SHORT_ANGLE(30), DEG2SHORT_ANGLE(30)); - s = joint1->y + actor->_618.z; - joint1->y = MY_CLAMP(s, -DEG2SHORT_ANGLE(30), DEG2SHORT_ANGLE(30)); - } else if (joint_num == 2) { - int s = joint1->y - actor->_618.z * 3; - joint1->y = MY_CLAMP(s, -DEG2SHORT_ANGLE(60), DEG2SHORT_ANGLE(60)); - s = joint1->x - (actor->_618.z >> 1); - joint1->x = MY_CLAMP(s, -DEG2SHORT_ANGLE(30), DEG2SHORT_ANGLE(30)); + if (joint_idx == 1) { + int s = joint_rot->x + actor->_618.z; + joint_rot->x = MY_CLAMP(s, -DEG2SHORT_ANGLE(30), DEG2SHORT_ANGLE(30)); + s = joint_rot->y + actor->_618.z; + joint_rot->y = MY_CLAMP(s, -DEG2SHORT_ANGLE(30), DEG2SHORT_ANGLE(30)); + } else if (joint_idx == 2) { + int s = joint_rot->y - actor->_618.z * 3; + joint_rot->y = MY_CLAMP(s, -DEG2SHORT_ANGLE(60), DEG2SHORT_ANGLE(60)); + s = joint_rot->x - (actor->_618.z >> 1); + joint_rot->x = MY_CLAMP(s, -DEG2SHORT_ANGLE(30), DEG2SHORT_ANGLE(30)); } return TRUE; } diff --git a/src/actor/ac_museum_fish_tai.c_inc b/src/actor/ac_museum_fish_tai.c_inc index 40573d63..353b1b5a 100644 --- a/src/actor/ac_museum_fish_tai.c_inc +++ b/src/actor/ac_museum_fish_tai.c_inc @@ -1,3 +1,4 @@ +#include "ac_museum_fish_priv.h" void mfish_tai_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { s16 s = qrand(); @@ -245,15 +246,15 @@ void mfish_tai_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { actor->activityFrameCount--; } -BOOL mfish_tai_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans) { +BOOL mfish_tai_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; - if (joint_num == 1) { - int s = (joint1->x + actor->_618.z) >> 3; - joint1->x = MY_CLAMP(s, DEG2SHORT_ANGLE(-15), DEG2SHORT_ANGLE(15)); - } else if (joint_num == 2) { - int s = joint1->y - (int)(actor->_618.z * (0.01f * GETREG(TAKREG, 0x4b) + 1.5f)); - joint1->y = MY_CLAMP(s, DEG2SHORT_ANGLE(-90), DEG2SHORT_ANGLE(90)); + if (joint_idx == 1) { + int s = (joint_rot->x + actor->_618.z) >> 3; + joint_rot->x = MY_CLAMP(s, DEG2SHORT_ANGLE(-15), DEG2SHORT_ANGLE(15)); + } else if (joint_idx == 2) { + int s = joint_rot->y - (int)(actor->_618.z * (0.01f * GETREG(TAKREG, 0x4b) + 1.5f)); + joint_rot->y = MY_CLAMP(s, DEG2SHORT_ANGLE(-90), DEG2SHORT_ANGLE(90)); } return TRUE; } diff --git a/src/actor/ac_museum_fish_unagi.c_inc b/src/actor/ac_museum_fish_unagi.c_inc index e0847f91..b92d74ea 100644 --- a/src/actor/ac_museum_fish_unagi.c_inc +++ b/src/actor/ac_museum_fish_unagi.c_inc @@ -1,3 +1,54 @@ +#include "ac_museum_fish_priv.h" + +xyz_t unagi_rail_pos[25] = { { 228.0f, 57.0f, 192.0f }, { 231.0f, 57.0f, 203.0f }, { 237.0f, 57.0f, 215.0f }, + { 245.0f, 58.0f, 225.0f }, { 252.0f, 59.0f, 233.0f }, { 254.0f, 60.0f, 245.0f }, + { 248.0f, 60.0f, 255.0f }, { 238.0f, 60.0f, 256.0f }, { 231.0f, 60.0f, 247.0f }, + { 222.0f, 60.0f, 240.0f }, { 212.0f, 60.0f, 243.0f }, { 203.0f, 60.0f, 249.0f }, + { 196.0f, 60.0f, 248.0f }, { 191.0f, 60.0f, 241.0f }, { 191.0f, 60.0f, 234.0f }, + { 187.0f, 60.0f, 223.0f }, { 183.0f, 60.0f, 212.0f }, { 181.0f, 60.0f, 203.0f }, + { 182.0f, 57.0f, 191.0f }, { 187.0f, 56.0f, 183.0f }, { 193.0f, 56.0f, 176.0f }, + { 201.0f, 56.0f, 172.0f }, { 209.0f, 56.0f, 173.0f }, { 216.0f, 56.0f, 176.0f }, + { 221.0f, 56.0f, 182.0f } }; + +xyz_t unagi_rail_pos2[20] = { { 228.0f, 57.0f, 192.0f }, { 236.0f, 57.0f, 201.0f }, { 244.0f, 57.0f, 204.0f }, + { 250.0f, 58.0f, 213.0f }, { 254.0f, 59.0f, 225.0f }, { 250.0f, 60.0f, 238.0f }, + { 243.0f, 60.0f, 242.0f }, { 235.0f, 60.0f, 238.0f }, { 226.0f, 60.0f, 233.0f }, + { 215.0f, 60.0f, 229.0f }, { 205.0f, 60.0f, 228.0f }, { 198.0f, 60.0f, 229.0f }, + { 191.0f, 60.0f, 227.0f }, { 186.0f, 60.0f, 222.0f }, { 181.0f, 60.0f, 216.0f }, + { 181.0f, 60.0f, 207.0f }, { 184.0f, 60.0f, 196.0f }, { 191.0f, 60.0f, 186.0f }, + { 201.0f, 57.0f, 177.0f }, { 213.0f, 56.0f, 178.0f } }; + +xyz_t unagi_rail_pos3[25] = { { 228.0f, 57.0f, 192.0f }, { 231.0f, 57.0f, 203.0f }, { 229.0f, 57.0f, 213.0f }, + { 222.0f, 58.0f, 225.0f }, { 212.0f, 59.0f, 226.0f }, { 204.0f, 60.0f, 227.0f }, + { 197.0f, 60.0f, 230.0f }, { 193.0f, 60.0f, 236.0f }, { 195.0f, 60.0f, 246.0f }, + { 201.0f, 60.0f, 253.0f }, { 212.0f, 60.0f, 256.0f }, { 222.0f, 60.0f, 255.0f }, + { 237.0f, 60.0f, 254.0f }, { 243.0f, 60.0f, 246.0f }, { 240.0f, 60.0f, 232.0f }, + { 232.0f, 60.0f, 227.0f }, { 223.0f, 60.0f, 225.0f }, { 209.0f, 60.0f, 225.0f }, + { 198.0f, 60.0f, 220.0f }, { 190.0f, 60.0f, 209.0f }, { 187.0f, 60.0f, 196.0f }, + { 191.0f, 60.0f, 184.0f }, { 197.0f, 60.0f, 178.0f }, { 207.0f, 59.0f, 173.0f }, + { 221.0f, 57.0f, 180.0f } }; + +xyz_t unagi_normal_to_reverse_rail_pos[12] = { + { 228.0f, 57.0f, 192.0f }, { 236.0f, 57.0f, 201.0f }, { 244.0f, 57.0f, 204.0f }, { 250.0f, 58.0f, 213.0f }, + { 254.0f, 59.0f, 225.0f }, { 250.0f, 60.0f, 238.0f }, { 243.0f, 60.0f, 242.0f }, { 235.0f, 60.0f, 236.0f }, + { 226.0f, 60.0f, 228.0f }, { 225.0f, 60.0f, 219.0f }, { 228.0f, 58.0f, 208.0f }, { 228.0f, 57.0f, 192.0f } +}; + +xyz_t unagi_reverse_to_normal_rail_pos[19] = { + { 228.0f, 57.0f, 192.0f }, { 218.0f, 56.0f, 178.0f }, { 204.0f, 57.0f, 176.0f }, { 191.0f, 58.0f, 186.0f }, + { 184.0f, 59.0f, 196.0f }, { 189.0f, 60.0f, 208.0f }, { 198.0f, 60.0f, 215.0f }, { 205.0f, 60.0f, 224.0f }, + { 204.0f, 60.0f, 235.0f }, { 196.0f, 60.0f, 242.0f }, { 188.0f, 60.0f, 241.0f }, { 183.0f, 60.0f, 233.0f }, + { 180.0f, 60.0f, 219.0f }, { 181.0f, 60.0f, 207.0f }, { 184.0f, 60.0f, 196.0f }, { 191.0f, 59.0f, 186.0f }, + { 204.0f, 57.0f, 176.0f }, { 218.0f, 56.0f, 178.0f }, { 228.0f, 57.0f, 192.0f } +}; + +xyz_t* unagi_rail_tbl[3] = { unagi_rail_pos, unagi_rail_pos2, unagi_rail_pos3 }; + +int unagi_rail_num_tbl[3] = { + ARRAY_LEN(unagi_rail_pos), + ARRAY_LEN(unagi_rail_pos2), + ARRAY_LEN(unagi_rail_pos3), +}; void mfish_unagi_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { mfish_onefish_ct(actor, gamex); @@ -247,7 +298,6 @@ void mfish_unagi_reverse_to_normal(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) } void mfish_unagi_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { - //! NOTE: wrong floats in this file, based on objdiff xyz_t p1, p2, p3; p1 = ZeroVec; p2 = ZeroVec; @@ -303,35 +353,35 @@ void mfish_unagi_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { Museum_Fish_objchk_pos_set(actor, gamex); } -BOOL mfish_unagi_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans) { +BOOL mfish_unagi_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; - if (joint_num == 1) { + if (joint_idx == 1) { int i = (s16)(actor->_632 * 0.5f * sin_s(actor->_636)); - joint1->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-90), DEG2SHORT_ANGLE(90)); - trans->z += actor->_5F4 * sin_s(actor->_636 + DEG2SHORT_ANGLE(90)); - } else if (joint_num == 2) { + joint_rot->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-90), DEG2SHORT_ANGLE(90)); + joint_pos->z += actor->_5F4 * sin_s(actor->_636 + DEG2SHORT_ANGLE(90)); + } else if (joint_idx == 2) { int i; i = DEG2SHORT_ANGLE2(GETREG(TAKREG, 0x3c)) - (int)(actor->_618.z * (1.0f + 0.01f * GETREG(TAKREG, 0x38))); i += (s16)(actor->_632 * 0.75f * sin_s(actor->_636 + DEG2SHORT_ANGLE2(90))); - joint1->y = MY_CLAMP(i, DEG2SHORT_ANGLE2(-90), DEG2SHORT_ANGLE2(90)); - } else if (joint_num == 3) { + 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 += (s16)(actor->_632 * sin_s(actor->_636 + DEG2SHORT_ANGLE(180))); - joint1->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-90), DEG2SHORT_ANGLE(90)); - } else if (joint_num == 4) { + 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 += (s16)(actor->_632 * 0.75f * sin_s(actor->_636 + DEG2SHORT_ANGLE(270))); - joint1->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-90), DEG2SHORT_ANGLE(90)); - } else if (joint_num == 5) { + 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 += (s16)(actor->_632 * 0.5f * sin_s(actor->_636 + DEG2SHORT_ANGLE(0))); - joint1->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-90), DEG2SHORT_ANGLE(90)); + joint_rot->y = MY_CLAMP(i, DEG2SHORT_ANGLE(-90), DEG2SHORT_ANGLE(90)); } return TRUE; } diff --git a/src/actor/ac_museum_fish_zarigani.c_inc b/src/actor/ac_museum_fish_zarigani.c_inc index 74f03a37..f0ea7d6e 100644 --- a/src/actor/ac_museum_fish_zarigani.c_inc +++ b/src/actor/ac_museum_fish_zarigani.c_inc @@ -1,3 +1,4 @@ +#include "ac_museum_fish_priv.h" void mfish_zarigani_ct(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { YET_SKELETON* skele = &actor->_38; @@ -181,28 +182,28 @@ void mfish_zarigani_mv(MUSEUM_FISH_PRIVATE_DATA* actor, GAME* gamex) { } } -BOOL mfish_zarigani_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_num, Gfx** joint_m, u8* joint_f, - void* arg, s_xyz* joint1, xyz_t* trans) { +BOOL mfish_zarigani_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; - if (joint_num == 2) { - joint1->x += (s16)(actor->_60C.x >> 3); - } else if (joint_num == 3) { - joint1->z += (s16)((joint1->z + DEG2SHORT_ANGLE2(-90.65f) + GETREG(TAKREG, 0x2a)) * - (1.5f + GETREG(TAKREG, 0x29) * 0.1f)); - } else if (joint_num == 5) { - joint1->x += (s16)DEG2SHORT_ANGLE2(3.0f * sin_s(actor->_638)); - joint1->z -= (s16)DEG2SHORT_ANGLE2(5.0f * cos_s(actor->_638)); - joint1->z += (s16)(actor->_618.z * (0.4f + cos_s(actor->_638) * 0.4f)); - } else if (joint_num == 7) { - joint1->x += (s16)DEG2SHORT_ANGLE2(3.0f * sin_s(actor->_638)); - joint1->z -= (s16)DEG2SHORT_ANGLE2(5.0f * cos_s(actor->_638)); - joint1->z += (s16)(actor->_618.z * (0.4f + cos_s(actor->_638) * 0.4f)); - } else if (joint_num == 8) { - joint1->z >>= 2; + if (joint_idx == 2) { + joint_rot->x += (s16)(actor->_60C.x >> 3); + } else if (joint_idx == 3) { + joint_rot->z += (s16)((joint_rot->z + DEG2SHORT_ANGLE2(-90.65f) + GETREG(TAKREG, 0x2a)) * + (1.5f + GETREG(TAKREG, 0x29) * 0.1f)); + } else if (joint_idx == 5) { + joint_rot->x += (s16)DEG2SHORT_ANGLE2(3.0f * sin_s(actor->_638)); + joint_rot->z -= (s16)DEG2SHORT_ANGLE2(5.0f * cos_s(actor->_638)); + joint_rot->z += (s16)(actor->_618.z * (0.4f + cos_s(actor->_638) * 0.4f)); + } else if (joint_idx == 7) { + joint_rot->x += (s16)DEG2SHORT_ANGLE2(3.0f * sin_s(actor->_638)); + joint_rot->z -= (s16)DEG2SHORT_ANGLE2(5.0f * cos_s(actor->_638)); + joint_rot->z += (s16)(actor->_618.z * (0.4f + cos_s(actor->_638) * 0.4f)); + } else if (joint_idx == 8) { + joint_rot->z >>= 2; if (actor->_60C.x < 0) { - joint1->z += actor->_60C.x; + joint_rot->z += actor->_60C.x; } else { - joint1->z += (s16)(actor->_60C.x * (GETREG(TAKREG, 0x20) * 0.1f + 3.0f)); + joint_rot->z += (s16)(actor->_60C.x * (GETREG(TAKREG, 0x20) * 0.1f + 3.0f)); } } return TRUE;