diff --git a/include/ac_museum_insect_priv.h b/include/ac_museum_insect_priv.h index ef69f446..b40096d2 100644 --- a/include/ac_museum_insect_priv.h +++ b/include/ac_museum_insect_priv.h @@ -23,10 +23,16 @@ struct _MUSEUM_INSECT_PRIVATE_DATA; typedef void (*PRIV_INSECT_PROCESS)(struct _MUSEUM_INSECT_PRIVATE_DATA*, GAME*); +typedef struct _MUSEUM_INSECT_SKELETON { + cKF_SkeletonInfo_R_c _00; + artificial_padding(0, 0x2ac, cKF_SkeletonInfo_R_c); + cKF_Animation_R_c* _2AC; +} MUSEUM_INSECT_SKELETON; + typedef struct _MUSEUM_INSECT_PRIVATE_DATA { int _00; PRIV_INSECT_PROCESS _04; - artificial_padding(4, 0xc, PRIV_INSECT_PROCESS); + MUSEUM_INSECT_SKELETON* _08; f32 _0C; f32 _10; f32 _14; // scale @@ -76,24 +82,54 @@ typedef struct _MUSEUM_INSECT_ACTOR { s16 _2F9C[5]; // offset: 0x2F9C } MUSEUM_INSECT_ACTOR; +// bss extern MUSEUM_INSECT_ACTOR* MI_Control_Actor; + +// data +extern rgba_t window_color; +extern Gfx *m_monshiro_disp_tbl[], *m_monki_disp_tbl[], *m_ageha_disp_tbl[], *m_ohmurasaki_disp_tbl[], + *m_minmin_disp_tbl[], *m_tukutuku_disp_tbl[], *m_higurashi_disp_tbl[], *m_abura_disp_tbl[], *m_shiokara_disp_tbl[], + *m_akiakane_disp_tbl[], *m_ginyanma_disp_tbl[], *m_oniyanma_disp_tbl[], *m_syouryou_disp_tbl[], + *m_tonosama_disp_tbl[], *m_koorogi_disp_tbl[], *m_kirigirisu_disp_tbl[], *m_suzumushi_disp_tbl[], + *m_matumushi_disp_tbl[], *m_tentou_disp_tbl[], *m_nanahoshi_disp_tbl[], *m_kamakiri_disp_tbl[], + *m_maimai_disp_tbl[], *m_hachi_disp_tbl[], *m_kanabun_disp_tbl[], *m_kabuto_disp_tbl[], *m_hirata_disp_tbl[], + *m_tamamushi_disp_tbl[], *m_gomadara_disp_tbl[], *m_nokogiri_disp_tbl[], *m_miyama_disp_tbl[], *m_okuwa_disp_tbl[], + *m_amenbo_disp_tbl[], *m_mino_disp_tbl[], *m_kumo_disp_tbl[], *m_goki_disp_tbl[], *m_genji_disp_tbl[], + *m_dango_disp_tbl[], *m_ari_disp_tbl[], *m_okera_disp_tbl[], *m_ka_disp_tbl[]; +extern Gfx** minsect_mdl[aINS_INSECT_TYPE_NUM]; extern PRIV_INSECT_PROCESS minsect_ct[aINS_INSECT_TYPE_NUM]; extern PRIV_INSECT_PROCESS minsect_mv[aINS_INSECT_TYPE_NUM]; extern PRIV_INSECT_PROCESS minsect_dw[aINS_INSECT_TYPE_NUM]; -extern f32 minsect_scale_tbl[aINS_INSECT_TYPE_NUM]; -extern f32 minsect_scale_tbl[aINS_INSECT_TYPE_NUM]; -extern int active_time_tbl[40]; -extern int relax_time_tbl[40]; -extern rgba_t window_color; -extern f32 base_high_tbl[4]; -extern xyz_t flower_pos[4]; -extern xyz_t ohmurasaki_tree_pos; -extern s16 aim_angle_tbl[6]; -extern Gfx** minsect_mdl[40]; -extern xyz_t tonbo_rock_pos[1]; -extern xyz_t tentou_flower_pos[1]; +extern f32 minsect_shadow_scale_tbl[aINS_INSECT_TYPE_NUM]; +extern int active_time_tbl[aINS_INSECT_TYPE_NUM]; +extern int relax_time_tbl[aINS_INSECT_TYPE_NUM]; +extern xyz_t flower_pos[8]; +extern xyz_t tree_pos[8]; +extern xyz_t rock_pos[2]; +extern xyz_t tonbo_rock_pos[6]; +extern xyz_t tentou_flower_pos[4]; extern xyz_t hachi_base_pos; -extern xyz_t kabuto_base_pos[1]; +extern xyz_t kabuto_base_pos[9]; +extern cKF_Skeleton_R_c* kuwagata_model_tbl[4]; +extern cKF_Animation_R_c* kuwagata_anim_tbl[4]; +extern xyz_t kuwagata_base_pos[4]; +extern xyz_t amenbo_center_pos; +extern xyz_t rail_pos[6]; +extern xyz_t ari_rail_pos[3]; +extern f32 minsect_scale_tbl[aINS_INSECT_TYPE_NUM]; + +// rodata +extern const f32 base_high_tbl[4]; +extern const s16 aim_angle_tbl[6]; +extern const xyz_t mino_base_pos; +extern const xyz_t mino_top_pos; +extern const xyz_t mino_bottom_pos; +extern const xyz_t kumo_base_pos; +extern const xyz_t kumo_top_pos; +extern const xyz_t kumo_bottom_pos; +extern const xyz_t base_genji_pos; +extern const xyz_t genji_mizu_pos; +extern const xyz_t okera_base_pos; // ac_museum_insect.c int Museum_Insect_GetMsgNo(ACTOR* actorx); @@ -108,17 +144,17 @@ void Museum_Insect_Actor_draw(ACTOR* actor, GAME* game); // ac_museum_insect_base.c_inc void mID_insect_moveF(MUSEUM_INSECT_PRIVATE_DATA* actor); -void minsect_amenbo_ct(void); -void minsect_amenbo_mv(void); -void minsect_amenbo_dw(void); -void ari_alone_ct(void); +void minsect_amenbo_ct(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void minsect_amenbo_mv(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void minsect_amenbo_dw(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void ari_alone_ct(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); void ari_alone_make(void); void ari_alone_dt(void); void ari_alone_move(void); void ari_alone_draw(void); -void minsect_ari_ct(void); -void minsect_ari_mv(void); -void minsect_ari_dw(void); +void minsect_ari_ct(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void minsect_ari_mv(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void minsect_ari_dw(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); void minsect_draw_shadow(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); void minsect_fly_BGCheck(MUSEUM_INSECT_PRIVATE_DATA* actor, f32 f1, f32 f2); void minsect_garden_BGCheck(MUSEUM_INSECT_PRIVATE_DATA* actor, f32 f1, f32 f2); @@ -225,22 +261,22 @@ void minsect_kabuto_mv(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); void minsect_kabuto_dw(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); // ac_museum_insect_kuwagata.c_inc -void mi_kuwagata_rensa_init(void); -void mi_kuwagata_rensa(void); -void mi_kuwagata_wait_init(void); -void mi_kuwagata_wait(void); -void mi_kuwagata_move_init(void); -void mi_kuwagata_move(void); -void mi_kuwagata_battle_init(void); -void mi_kuwagata_battle(void); -void mi_kuwagata_menace_init(void); -void mi_kuwagata_menace(void); -void mi_kuwagata_attack_init(void); -void mi_kuwagata_attack(void); -void mi_kuwagata_setupAction(void); -void minsect_kuwagata_ct(void); -void minsect_kuwagata_mv(void); -void minsect_kuwagata_dw(void); +void mi_kuwagata_rensa_init(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void mi_kuwagata_rensa(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void mi_kuwagata_wait_init(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void mi_kuwagata_wait(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void mi_kuwagata_move_init(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void mi_kuwagata_move(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void mi_kuwagata_battle_init(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void mi_kuwagata_battle(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void mi_kuwagata_menace_init(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void mi_kuwagata_menace(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void mi_kuwagata_attack_init(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void mi_kuwagata_attack(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void mi_kuwagata_setupAction(MUSEUM_INSECT_PRIVATE_DATA* actor, int r4, GAME* game); +void minsect_kuwagata_ct(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void minsect_kuwagata_mv(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void minsect_kuwagata_dw(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); // ac_museum_insect_mino.c_inc void minsect_mino_up_init(void); @@ -255,9 +291,9 @@ void minsect_mino_wait_init(void); void minsect_mino_wait(void); void minsect_mino_hineri(void); void minsect_mino_setupAction(void); -void minsect_mino_ct(void); -void minsect_mino_mv(void); -void minsect_mino_dw(void); +void minsect_mino_ct(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void minsect_mino_mv(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void minsect_mino_dw(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); // ac_museum_insect_kumo.c_inc void minsect_kumo_hide_init(void); @@ -274,31 +310,31 @@ void minsect_kumo_wait_init(void); void minsect_kumo_wait(void); void minsect_kumo_hineri(void); void minsect_kumo_setupAction(void); -void minsect_kumo_ct(void); -void minsect_kumo_mv(void); -void minsect_kumo_dw(void); +void minsect_kumo_ct(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void minsect_kumo_mv(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void minsect_kumo_dw(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); // ac_museum_insect_goki.c_inc -void minsect_goki_ct(void); +void minsect_goki_ct(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); void goki_player_check(void); void goki_wall_hit_angle_corect_sub(void); void goki_wall_hit_angle_corect(void); void goki_set_talk_info_init(void); void goki_talk_process(void); void goki_talk_process_init(void); -void minsect_goki_mv(void); -void minsect_goki_dw(void); +void minsect_goki_mv(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void minsect_goki_dw(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); // ac_museum_insect_genji.c_inc void mi_genji_check_player(void); -void genji_light_ct(void); +void genji_light_ct(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); void genji_light_make(void); void genji_light_anime(void); void genji_light_move(void); void genji_light_draw(void); -void minsect_genji_ct(void); -void minsect_genji_mv(void); -void minsect_genji_dw(void); +void minsect_genji_ct(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void minsect_genji_mv(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void minsect_genji_dw(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); // ac_museum_insect_dango.c_inc void mi_dango_defence_anime(void); @@ -308,13 +344,13 @@ void mi_dango_move(void); void mi_dango_defence_init(void); void mi_dango_defence(void); void mi_dango_setupAction(void); -void minsect_dango_ct(void); -void minsect_dango_mv(void); -void minsect_dango_dw(void); +void minsect_dango_ct(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void minsect_dango_mv(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void minsect_dango_dw(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); // ac_museum_insect_okera.c_inc void mi_okera_check_player(void); -void minsect_okera_ct(void); +void minsect_okera_ct(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); void okera_dig_up_process_init(void); void okera_dig_up_process(void); void okera_normal_process_init(void); @@ -323,13 +359,13 @@ void okera_dig_down_process_init(void); void okera_dig_down_process(void); void okera_dig_wait_process_init(void); void okera_dig_wait_process(void); -void minsect_okera_mv(void); -void minsect_okera_dw(void); +void minsect_okera_mv(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void minsect_okera_dw(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); // ac_museum_insect_ka.c_inc -void minsect_ka_ct(void); -void minsect_ka_mv(void); -void minsect_ka_dw(void); +void minsect_ka_ct(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void minsect_ka_mv(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); +void minsect_ka_dw(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game); #ifdef __cplusplus } diff --git a/src/actor/ac_museum_insect.c b/src/actor/ac_museum_insect.c index 05711d1b..1d6b8fa8 100644 --- a/src/actor/ac_museum_insect.c +++ b/src/actor/ac_museum_insect.c @@ -1,4 +1,87 @@ #include "ac_museum_insect_priv.h" +// clang-format off +extern Gfx + act_m_mu_monshiro1T_model, + act_m_mu_monshiro2T_model, + act_m_mu_monki1T_model, + act_m_mu_monki2T_model, + act_m_mu_kiageha1T_model, + act_m_mu_kiageha2T_model, + act_m_mu_ohmurasaki1T_model, + act_m_mu_ohmurasaki2T_model, + act_m_mu_minmin1_1T_model, + act_m_mu_minmin1_2T_model, + act_m_mu_tukutuku1_1T_model, + act_m_mu_tukutuku1_2T_model, + act_m_mu_higurashi1_1T_model, + act_m_mu_higurashi1_2T_model, + act_m_mu_abura1_1T_model, + act_m_mu_abura1_2T_model, + act_m_mu_shiokara1_1T_model, + act_m_mu_shiokara1_2T_model, + act_m_mu_shiokara2_2T_model, + act_m_mu_akiakane1_1T_model, + act_m_mu_akiakane1_2T_model, + act_m_mu_akiakane2_2T_model, + act_m_mu_ginyanma1_1T_model, + act_m_mu_ginyanma1_2T_model, + act_m_mu_ginyanma2_2T_model, + act_m_mu_oniyanma1_1T_model, + act_m_mu_oniyanma1_2T_model, + act_m_mu_oniyanma2_2T_model, + act_m_mu_syouryou1T_model, + act_m_mu_syouryou2_2T_model, + act_m_mu_tonosama1T_model, + act_m_mu_tonosama2_2T_model, + act_m_mu_koorogi1T_model, + act_m_mu_koorogi2_2T_model, + act_m_mu_kirigirisu1T_model, + act_m_mu_kirigirisu2_2T_model, + act_m_mu_suzumushi1T_model, + act_m_mu_suzumushi2_2T_model, + act_m_mu_matumushi1T_model, + act_m_mu_matumushi2_2T_model, + act_m_mu_tentou1T_model, + act_m_mu_tentou2T_model, + act_m_mu_nanahoshi1T_model, + act_m_mu_nanahoshi2T_model, + act_m_mu_kamakiri1T_model, + act_m_mu_kamakiri2_2T_model, + act_m_mu_maimaiT_model, + act_m_mu_hachi1_1T_model, + act_m_mu_hachi1_2T_model, + act_m_mu_hachi2_2T_model, + act_m_mu_kanabun1T_model, + act_m_mu_kabuto1T_model, + act_m_mu_hirata1T_model, + act_m_mu_tamamushi1T_model, + act_m_mu_gomadara1T_model, + act_m_mu_nokogiri1T_model, + act_m_mu_miyama1T_model, + act_m_mu_okuwa1T_model, + act_m_mu_amenbo1T_model, + act_m_mu_amenbo2T_model, + act_m_mu_mino1_1T_model, + act_m_mu_mino1_2T_model, + act_m_mu_mino2T_model, + act_m_mu_kumo1_1T_mode, + act_m_mu_kumo1_2T_mode, + act_m_mu_kumo2T_model, + act_m_mu_kumo1_1T_model, + act_m_mu_kumo1_2T_model, + act_m_mu_danna1T_model, + act_m_mu_danna2T_model, + act_m_mu_genji2_a_model, + act_m_mu_genji2_b_model, + act_m_mu_genji2_c_model, + act_m_mu_genji2_d_model, + act_m_mu_dango1T_model, + act_m_mu_dango2T_model, + act_m_mu_ariT_model, + act_m_mu_keraT_model, + act_m_mu_ka1T_model, + act_m_mu_ka2_1T_model, + act_m_mu_ka2_2T_model; ACTOR_PROFILE Museum_Insect_Profile = { mAc_PROFILE_MUSEUM_INSECT, @@ -14,6 +97,760 @@ ACTOR_PROFILE Museum_Insect_Profile = { NULL, }; +rgba_t window_color = { + 0xff, 0xff, 0xcd, 0xff +}; + +Gfx *m_monshiro_disp_tbl[] = { + &act_m_mu_monshiro1T_model, + &act_m_mu_monshiro2T_model, + NULL +}; + +Gfx *m_monki_disp_tbl[] = { + &act_m_mu_monki1T_model, + &act_m_mu_monki2T_model, + NULL +}; + +Gfx *m_ageha_disp_tbl[] = { + &act_m_mu_kiageha1T_model, + &act_m_mu_kiageha2T_model, + NULL +}; + +Gfx *m_ohmurasaki_disp_tbl[] = { + &act_m_mu_ohmurasaki1T_model, + &act_m_mu_ohmurasaki2T_model, + NULL +}; + +Gfx *m_minmin_disp_tbl[] = { + &act_m_mu_minmin1_1T_model, + &act_m_mu_minmin1_2T_model, + NULL +}; + +Gfx *m_tukutuku_disp_tbl[] = { + &act_m_mu_tukutuku1_1T_model, + &act_m_mu_tukutuku1_2T_model, + NULL +}; + +Gfx *m_higurashi_disp_tbl[] = { + &act_m_mu_higurashi1_1T_model, + &act_m_mu_higurashi1_2T_model, + NULL +}; + +Gfx *m_abura_disp_tbl[] = { + &act_m_mu_abura1_1T_model, + &act_m_mu_abura1_2T_model, + NULL +}; + +Gfx *m_shiokara_disp_tbl[] = { + &act_m_mu_shiokara1_1T_model, + &act_m_mu_shiokara1_2T_model, + &act_m_mu_shiokara2_2T_model, + NULL +}; + +Gfx *m_akiakane_disp_tbl[] = { + &act_m_mu_akiakane1_1T_model, + &act_m_mu_akiakane1_2T_model, + &act_m_mu_akiakane2_2T_model, + NULL +}; + +Gfx *m_ginyanma_disp_tbl[] = { + &act_m_mu_ginyanma1_1T_model, + &act_m_mu_ginyanma1_2T_model, + &act_m_mu_ginyanma2_2T_model, + NULL +}; + +Gfx *m_oniyanma_disp_tbl[] = { + &act_m_mu_oniyanma1_1T_model, + &act_m_mu_oniyanma1_2T_model, + &act_m_mu_oniyanma2_2T_model, + NULL +}; + +Gfx *m_syouryou_disp_tbl[] = { + &act_m_mu_syouryou1T_model, + &act_m_mu_syouryou2_2T_model, + NULL +}; + +Gfx *m_tonosama_disp_tbl[] = { + &act_m_mu_tonosama1T_model, + &act_m_mu_tonosama2_2T_model, + NULL +}; + +Gfx *m_koorogi_disp_tbl[] = { + &act_m_mu_koorogi1T_model, + &act_m_mu_koorogi2_2T_model, + NULL +}; + +Gfx *m_kirigirisu_disp_tbl[] = { + &act_m_mu_kirigirisu1T_model, + &act_m_mu_kirigirisu2_2T_model, + NULL +}; + +Gfx *m_suzumushi_disp_tbl[] = { + &act_m_mu_suzumushi1T_model, + &act_m_mu_suzumushi2_2T_model, + NULL +}; + +Gfx *m_matumushi_disp_tbl[] = { + &act_m_mu_matumushi1T_model, + &act_m_mu_matumushi2_2T_model, + NULL +}; + +Gfx *m_tentou_disp_tbl[] = { + &act_m_mu_tentou1T_model, + &act_m_mu_tentou2T_model, + NULL +}; + +Gfx *m_nanahoshi_disp_tbl[] = { + &act_m_mu_nanahoshi1T_model, + &act_m_mu_nanahoshi2T_model, + NULL +}; + +Gfx *m_kamakiri_disp_tbl[] = { + &act_m_mu_kamakiri1T_model, + &act_m_mu_kamakiri2_2T_model, + NULL +}; + +Gfx *m_maimai_disp_tbl[] = { + &act_m_mu_maimaiT_model, + NULL +}; + +Gfx *m_hachi_disp_tbl[] = { + &act_m_mu_hachi1_1T_model, + &act_m_mu_hachi1_2T_model, + &act_m_mu_hachi2_2T_model, + NULL +}; + +Gfx *m_kanabun_disp_tbl[] = { + &act_m_mu_kanabun1T_model, + NULL +}; + +Gfx *m_kabuto_disp_tbl[] = { + &act_m_mu_kabuto1T_model, + NULL +}; + +Gfx *m_hirata_disp_tbl[] = { + &act_m_mu_hirata1T_model, + NULL +}; + +Gfx *m_tamamushi_disp_tbl[] = { + &act_m_mu_tamamushi1T_model, + NULL +}; + +Gfx *m_gomadara_disp_tbl[] = { + &act_m_mu_gomadara1T_model, + NULL +}; + +Gfx *m_nokogiri_disp_tbl[] = { + &act_m_mu_nokogiri1T_model, + NULL +}; + +Gfx *m_miyama_disp_tbl[] = { + &act_m_mu_miyama1T_model, + NULL +}; + +Gfx *m_okuwa_disp_tbl[] = { + &act_m_mu_okuwa1T_model, + NULL +}; + +Gfx *m_amenbo_disp_tbl[] = { + &act_m_mu_amenbo1T_model, + &act_m_mu_amenbo2T_model, + NULL +}; + +Gfx *m_mino_disp_tbl[] = { + &act_m_mu_mino1_1T_model, + &act_m_mu_mino1_2T_model, + &act_m_mu_mino2T_model, + NULL +}; + +Gfx *m_kumo_disp_tbl[] = { + &act_m_mu_kumo1_1T_model, + &act_m_mu_kumo1_2T_model, + &act_m_mu_kumo2T_model, + NULL +}; + +Gfx *m_goki_disp_tbl[] = { + &act_m_mu_danna1T_model, + &act_m_mu_danna2T_model, + NULL +}; + +Gfx *m_genji_disp_tbl[] = { + &act_m_mu_genji2_a_model, + &act_m_mu_genji2_b_model, + &act_m_mu_genji2_c_model, + &act_m_mu_genji2_d_model, + NULL +}; + +Gfx *m_dango_disp_tbl[] = { + &act_m_mu_dango1T_model, + &act_m_mu_dango2T_model, + NULL +}; + +Gfx *m_ari_disp_tbl[] = { + &act_m_mu_ariT_model, + NULL +}; + +Gfx *m_okera_disp_tbl[] = { + &act_m_mu_keraT_model, + NULL +}; + +Gfx *m_ka_disp_tbl[] = { + &act_m_mu_ka1T_model, + &act_m_mu_ka2_1T_model, + &act_m_mu_ka2_2T_model, + NULL +}; + +Gfx **minsect_mdl[] = { + m_monshiro_disp_tbl, + m_monki_disp_tbl, + m_ageha_disp_tbl, + m_ohmurasaki_disp_tbl, + m_minmin_disp_tbl, + m_tukutuku_disp_tbl, + m_higurashi_disp_tbl, + m_abura_disp_tbl, + m_hachi_disp_tbl, + m_shiokara_disp_tbl, + m_akiakane_disp_tbl, + m_ginyanma_disp_tbl, + m_oniyanma_disp_tbl, + m_syouryou_disp_tbl, + m_tonosama_disp_tbl, + m_koorogi_disp_tbl, + m_kirigirisu_disp_tbl, + m_suzumushi_disp_tbl, + m_matumushi_disp_tbl, + m_kanabun_disp_tbl, + m_kabuto_disp_tbl, + m_hirata_disp_tbl, + m_tamamushi_disp_tbl, + m_gomadara_disp_tbl, + m_tentou_disp_tbl, + m_nanahoshi_disp_tbl, + m_kamakiri_disp_tbl, + m_genji_disp_tbl, + m_goki_disp_tbl, + m_nokogiri_disp_tbl, + m_miyama_disp_tbl, + m_okuwa_disp_tbl, + m_maimai_disp_tbl, + m_okera_disp_tbl, + m_amenbo_disp_tbl, + m_mino_disp_tbl, + m_dango_disp_tbl, + m_kumo_disp_tbl, + m_ari_disp_tbl, + m_ka_disp_tbl +}; + +PRIV_INSECT_PROCESS minsect_ct[] = { + minsect_chou_ct, + minsect_chou_ct, + minsect_chou_ct, + minsect_chou_ct, + minsect_semi_ct, + minsect_semi_ct, + minsect_semi_ct, + minsect_semi_ct, + minsect_hachi_ct, + minsect_tonbo_ct, + minsect_tonbo_ct, + minsect_tonbo_ct, + minsect_tonbo_ct, + minsect_batta_ct, + minsect_batta_ct, + minsect_batta_ct, + minsect_batta_ct, + minsect_batta_ct, + minsect_batta_ct, + minsect_kabuto_ct, + minsect_kabuto_ct, + minsect_kuwagata_ct, + minsect_kabuto_ct, + minsect_kabuto_ct, + minsect_tentou_ct, + minsect_tentou_ct, + minsect_tentou_ct, + minsect_genji_ct, + minsect_goki_ct, + minsect_kuwagata_ct, + minsect_kuwagata_ct, + minsect_kuwagata_ct, + minsect_tentou_ct, + minsect_okera_ct, + minsect_amenbo_ct, + minsect_mino_ct, + minsect_dango_ct, + minsect_kumo_ct, + minsect_ari_ct, + minsect_ka_ct +}; + +PRIV_INSECT_PROCESS minsect_mv[] = { + minsect_chou_mv, + minsect_chou_mv, + minsect_chou_mv, + minsect_chou_mv, + minsect_semi_mv, + minsect_semi_mv, + minsect_semi_mv, + minsect_semi_mv, + minsect_hachi_mv, + minsect_tonbo_mv, + minsect_tonbo_mv, + minsect_tonbo_mv, + minsect_tonbo_mv, + minsect_batta_mv, + minsect_batta_mv, + minsect_batta_mv, + minsect_batta_mv, + minsect_batta_mv, + minsect_batta_mv, + minsect_kabuto_mv, + minsect_kabuto_mv, + minsect_kuwagata_mv, + minsect_kabuto_mv, + minsect_kabuto_mv, + minsect_tentou_mv, + minsect_tentou_mv, + minsect_tentou_mv, + minsect_genji_mv, + minsect_goki_mv, + minsect_kuwagata_mv, + minsect_kuwagata_mv, + minsect_kuwagata_mv, + minsect_tentou_mv, + minsect_okera_mv, + minsect_amenbo_mv, + minsect_mino_mv, + minsect_dango_mv, + minsect_kumo_mv, + minsect_ari_mv, + minsect_ka_mv +}; + +PRIV_INSECT_PROCESS minsect_dw[] = { + minsect_chou_dw, + minsect_chou_dw, + minsect_chou_dw, + minsect_chou_dw, + minsect_semi_dw, + minsect_semi_dw, + minsect_semi_dw, + minsect_semi_dw, + minsect_hachi_dw, + minsect_tonbo_dw, + minsect_tonbo_dw, + minsect_tonbo_dw, + minsect_tonbo_dw, + minsect_batta_dw, + minsect_batta_dw, + minsect_batta_dw, + minsect_batta_dw, + minsect_batta_dw, + minsect_batta_dw, + minsect_kabuto_dw, + minsect_kabuto_dw, + minsect_kuwagata_dw, + minsect_kabuto_dw, + minsect_kabuto_dw, + minsect_tentou_dw, + minsect_tentou_dw, + minsect_tentou_dw, + minsect_genji_dw, + minsect_goki_dw, + minsect_kuwagata_dw, + minsect_kuwagata_dw, + minsect_kuwagata_dw, + minsect_tentou_dw, + minsect_okera_dw, + minsect_amenbo_dw, + minsect_mino_dw, + minsect_dango_dw, + minsect_kumo_dw, + minsect_ari_dw, + minsect_ka_dw +}; + +f32 minsect_shadow_scale_tbl[] = { + 1.0f, + 1.0f, + 1.5f, + 1.5f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 1.0f, + 1.0f, + 1.0f, + 1.5f, + 1.5f, + 1.8f, + 1.0f, + 1.5f, + 1.0f, + 1.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 1.0f, + 0.0f, + 0.0f, + 0.0f, + 0.0f, + 1.0f, + 0.0f, + 1.0f, + 0.6f, + 0.7f, + 0.0f, + 0.0f +}; + +int active_time_tbl[] = { + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC( 4, 0, 0), + mTM_TIME2SEC( 4, 0, 0), + mTM_TIME2SEC( 4, 0, 0), + mTM_TIME2SEC( 0, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC(16, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC(16, 0, 0), + mTM_TIME2SEC(16, 0, 0), + mTM_TIME2SEC( 0, 0, 0), + mTM_TIME2SEC(19, 0, 0), + mTM_TIME2SEC(19, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC(19, 0, 0), + mTM_TIME2SEC( 0, 0, 0), + mTM_TIME2SEC(19, 0, 0), + mTM_TIME2SEC(19, 0, 0), + mTM_TIME2SEC(19, 0, 0), + mTM_TIME2SEC( 0, 0, 0), + mTM_TIME2SEC( 0, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC( 0, 0, 0), + mTM_TIME2SEC( 0, 0, 0), + mTM_TIME2SEC( 0, 0, 0), + mTM_TIME2SEC( 0, 0, 0), + mTM_TIME2SEC( 0, 0, 0) +}; + +int relax_time_tbl[] = { + mTM_TIME2SEC(17, 0, 0), + mTM_TIME2SEC(17, 0, 0), + mTM_TIME2SEC(17, 0, 0), + mTM_TIME2SEC(17, 0, 0), + mTM_TIME2SEC(17, 0, 0), + mTM_TIME2SEC(17, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC(17, 0, 0), + mTM_TIME2SEC( 0, 0, 0), + mTM_TIME2SEC(17, 0, 0), + mTM_TIME2SEC(17, 0, 0), + mTM_TIME2SEC(17, 0, 0), + mTM_TIME2SEC(17, 0, 0), + mTM_TIME2SEC(17, 0, 0), + mTM_TIME2SEC(17, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC(16, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC( 0, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC(16, 0, 0), + mTM_TIME2SEC(17, 0, 0), + mTM_TIME2SEC(17, 0, 0), + mTM_TIME2SEC(17, 0, 0), + mTM_TIME2SEC(17, 0, 0), + mTM_TIME2SEC(4, 0, 0), + mTM_TIME2SEC( 0, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC( 8, 0, 0), + mTM_TIME2SEC( 0, 0, 0), + mTM_TIME2SEC( 0, 0, 0), + mTM_TIME2SEC(19, 0, 0), + mTM_TIME2SEC( 0, 0, 0), + mTM_TIME2SEC( 0, 0, 0), + mTM_TIME2SEC( 0, 0, 0), + mTM_TIME2SEC( 0, 0, 0), + mTM_TIME2SEC( 0, 0, 0) +}; + +xyz_t flower_pos[8] = { + { 147.0f, 66.f, 169.f }, + { 238.0f, 66.f, 201.f }, + { 264.0f, 66.f, 164.f }, + { 165.0f, 66.f, 219.f }, + { 181.0f, 66.f, 235.f }, + { 199.0f, 66.f, 188.f }, + { 327.5f, 66.f, 154.f }, + { 410.0f, 66.f, 190.f } +}; + +xyz_t ohmurasaki_tree_pos = { + 360.f, 85.f, 265.f +}; + +xyz_t tree_pos[8] = { + { 92.f, 0.f, -15.f }, + { 168.f, 0.f, 5.f }, + { 244.f, 0.f, -15.f }, + { 316.f, 0.f, 5.f }, + { 392.f, 0.f, -15.f }, + { 468.f, 0.f, 5.f }, + { 360.f, 0.f, 245.f }, + { 165.f, 0.f, 485.f } +}; + +xyz_t rock_pos[] = { + { 225.f, 0.f, 388.5f }, + { 385.f, 0.f, 485.0f } +}; + +xyz_t tonbo_rock_pos[6] = { + { 215.f, 68.f, 403.f }, + { 232.f, 60.f, 381.f }, + { 372.f, 65.f, 482.f }, + { 390.f, 68.f, 469.f }, + { 328.f, 72.f, 501.f }, + { 351.f, 72.f, 501.f } +}; + +xyz_t tentou_flower_pos[4] = { + { 410.0f, 65.f, 240.0f }, + { 213.5f, 65.f, 155.0f }, + { 233.0f, 65.f, 233.5f }, + { 294.0f, 65.f, 170.5f }, +}; + +xyz_t hachi_base_pos = { + 165.5f, 78.5f, 482.5f +}; + +xyz_t kabuto_base_pos[9] = { + { 165.5f, 78.5f, 482.5f }, + { 389.5f, 66.5f, -14.5f }, + { 241.5f, 67.0f, -15.5f }, + { 165.0f, 81.5f, 0.5f }, + { 89.0f, 64.0f, -15.5f }, + { 466.0f, 84.0f, 1.5f }, + { 171.0f, 64.5f, 5.5f }, + { 319.0f, 81.0f, 1.0f }, + { 313.0f, 63.0f, 5.5f } +}; + +extern cKF_Skeleton_R_c + cKF_bs_r_act_m_hirata_b, + cKF_bs_r_act_m_nokogiri_b, + cKF_bs_r_act_m_miyama_b, + cKF_bs_r_act_m_okuwa_b; + +cKF_Skeleton_R_c *kuwagata_model_tbl[] = { + &cKF_bs_r_act_m_hirata_b, + &cKF_bs_r_act_m_nokogiri_b, + &cKF_bs_r_act_m_miyama_b, + &cKF_bs_r_act_m_okuwa_b +}; + +extern cKF_Animation_R_c + cKF_ba_r_act_m_hirata_b, + cKF_ba_r_act_m_nokogiri_b, + cKF_ba_r_act_m_miyama_b, + cKF_ba_r_act_m_okuwa_b; + +cKF_Animation_R_c *kuwagata_anim_tbl[] = { + &cKF_ba_r_act_m_hirata_b, + &cKF_ba_r_act_m_nokogiri_b, + &cKF_ba_r_act_m_miyama_b, + &cKF_ba_r_act_m_okuwa_b +}; + +xyz_t kuwagata_base_pos[4] = { + { 166.f, 80.5f, 0.5f }, + { 169.f, 66.5f, 5.0f }, + { 318.f, 80.0f, 1.0f }, + { 315.f, 65.0f, 5.5f } +}; + +xyz_t amenbo_center_pos = { + 289.f, 25.f, 218.f +}; + +xyz_t rail_pos[6] = { + { 368.f, 45.f, 467.f }, + { 363.f, 45.f, 482.f }, + { 374.f, 45.f, 499.f }, + { 393.f, 45.f, 502.f }, + { 407.f, 45.f, 488.f }, + { 407.f, 45.f, 469.f } +}; + +xyz_t ari_rail_pos[3] = { + { 177.f, 45.f, -14.f }, + { 242.f, 45.f, 10.f }, + { 307.f, 45.f, -14.f } +}; + +f32 minsect_scale_tbl[40] = { + 0.01f, + 0.01f, + 0.01f, + 0.01f, + 0.008f, + 0.008f, + 0.008f, + 0.008f, + 0.01f, + 0.01f, + 0.01f, + 0.01f, + 0.01f, + 0.01f, + 0.01f, + 0.01f, + 0.01f, + 0.01f, + 0.01f, + 0.01f, + 0.01f, + 0.01f, + 0.009f, + 0.009f, + 0.009f, + 0.009f, + 0.01f, + 0.01f, + 0.01f, + 0.01f, + 0.01f, + 0.01f, + 0.01f, + 0.01f, + 0.007f, + 0.01f, + 0.01f, + 0.01f, + 0.01f, + 0.01f +}; + +// rodata +const s16 aim_angle_tbl[6] = { + DEG2SHORT_ANGLE(45 + 0), + DEG2SHORT_ANGLE(45 + 90), + DEG2SHORT_ANGLE(45 + 180), + DEG2SHORT_ANGLE(45 + 270), + DEG2SHORT_ANGLE(45 + 180), + DEG2SHORT_ANGLE(45 + 90) +}; + +const f32 base_high_tbl[4] = { + 85.f, 95.f, 90.f, 90.f +}; + +const xyz_t mino_base_pos = { + 135.f, 64.f, 474.f +}; + +const xyz_t mino_top_pos = { + 135.f, 90.f, 474.f +}; + +const xyz_t mino_bottom_pos = { + 135.f, 54.f, 474.f +}; + +const xyz_t kumo_base_pos = { + 330.f, 64.5f, 229.f +}; + +const xyz_t kumo_top_pos = { + 330.f, 90.f, 229.f +}; + +const xyz_t kumo_bottom_pos = { + 330.f, 54.f, 229.f +}; + +const xyz_t base_genji_pos = { + 258.f, 62.f, 258.5f +}; + +const xyz_t genji_mizu_pos = { + 289.f, 25.f, 218.f +}; + +const xyz_t okera_base_pos = { + 235.f, 45.f, 445.f +}; + +// clang-format on + int Museum_Insect_GetMsgNo(ACTOR* actorx) { static u8 item_name[mIN_ITEM_NAME_LEN]; MUSEUM_INSECT_ACTOR* actor = (MUSEUM_INSECT_ACTOR*)actorx; diff --git a/src/actor/ac_museum_insect_base.c_inc b/src/actor/ac_museum_insect_base.c_inc index 1de02a44..ceeded51 100644 --- a/src/actor/ac_museum_insect_base.c_inc +++ b/src/actor/ac_museum_insect_base.c_inc @@ -18,13 +18,13 @@ void mID_insect_moveF(MUSEUM_INSECT_PRIVATE_DATA* actor) { } -void minsect_amenbo_ct(void) { +void minsect_amenbo_ct(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { } -void minsect_amenbo_mv(void) { +void minsect_amenbo_mv(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { } -void minsect_amenbo_dw(void) { +void minsect_amenbo_dw(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { } -void ari_alone_ct(void) { +void ari_alone_ct(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { } void ari_alone_make(void) { } @@ -34,11 +34,11 @@ void ari_alone_move(void) { } void ari_alone_draw(void) { } -void minsect_ari_ct(void) { +void minsect_ari_ct(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { } -void minsect_ari_mv(void) { +void minsect_ari_mv(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { } -void minsect_ari_dw(void) { +void minsect_ari_dw(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { } void minsect_draw_shadow(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { } diff --git a/src/actor/ac_museum_insect_batta.c_inc b/src/actor/ac_museum_insect_batta.c_inc index 66e27312..e5a4c019 100644 --- a/src/actor/ac_museum_insect_batta.c_inc +++ b/src/actor/ac_museum_insect_batta.c_inc @@ -13,7 +13,7 @@ void mi_batta_check_player(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { } void mi_batta_suzumushi_hane_anime(MUSEUM_INSECT_PRIVATE_DATA* actor) { - static f32 scaleX_table[7]; + static f32 scaleX_table[7] = { 1.15f, 0.9f, 1.15f, 0.9f, 1.15f, 0.9f, 1.15f }; if (actor->_82 < 7) { if (chase_f(&actor->_58, (GETREG(NMREG, 1) * 0.01f + 1.0f) * scaleX_table[actor->_82], 0.23f) == 1) { actor->_82--; @@ -27,7 +27,7 @@ void mi_batta_suzumushi_hane_anime(MUSEUM_INSECT_PRIVATE_DATA* actor) { } void mi_batta_hane_anime(MUSEUM_INSECT_PRIVATE_DATA* actor) { - static f32 scaleX_table[7]; + static f32 scaleX_table[7] = { 1.15f, 0.5f, 1.15f, 0.5f, 1.15f, 0.5f, 1.15f }; if (actor->_7C < 7) { if (chase_f(&actor->_58, (GETREG(NMREG, 1) * 0.01f + 1.0f) * scaleX_table[actor->_7C], 0.23f) == 1) { actor->_7C--; diff --git a/src/actor/ac_museum_insect_hachi.c_inc b/src/actor/ac_museum_insect_hachi.c_inc index 00f57d76..09ca5304 100644 --- a/src/actor/ac_museum_insect_hachi.c_inc +++ b/src/actor/ac_museum_insect_hachi.c_inc @@ -1,7 +1,7 @@ #include "ac_museum_insect_priv.h" void mi_hachi_hane_anime(MUSEUM_INSECT_PRIVATE_DATA* actor) { - static f32 scaleX_table[7]; + static f32 scaleX_table[7] = { 1.f, 0.85f, 1.15f, 0.85f, 1.15f, 0.85f, 1.15f }; if (actor->_78 < 7) { if (chase_f(&actor->_5C, (GETREG(NMREG, 1) * 0.01f + 1.0f) * scaleX_table[actor->_78], 0.115f) == 1) { actor->_78--; @@ -139,8 +139,8 @@ void mi_hachi_move(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { } void mi_hachi_setupAction(MUSEUM_INSECT_PRIVATE_DATA* actor, int r4, GAME* game) { - static PRIV_INSECT_PROCESS init_proc[1]; - static PRIV_INSECT_PROCESS move_proc[1]; + static PRIV_INSECT_PROCESS init_proc[3] = { mi_hachi_wait_init, mi_hachi_move_init, mi_hachi_mitu_init }; + static PRIV_INSECT_PROCESS move_proc[3] = { mi_hachi_wait, mi_hachi_move, mi_hachi_mitu }; actor->_04 = move_proc[r4]; init_proc[r4](actor, game); } diff --git a/src/actor/ac_museum_insect_kuwagata.c_inc b/src/actor/ac_museum_insect_kuwagata.c_inc index 356389bc..9bef25dc 100644 --- a/src/actor/ac_museum_insect_kuwagata.c_inc +++ b/src/actor/ac_museum_insect_kuwagata.c_inc @@ -1 +1,90 @@ #include "ac_museum_insect_priv.h" + +void mi_kuwagata_rensa_init(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { + actor->_7A = 0; +} +void mi_kuwagata_rensa(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { + add_calc_short_angle2(&actor->_78, actor->_7A, CALC_EASE2(0.4f), DEG2SHORT_ANGLE(0.75f), DEG2SHORT_ANGLE(0.25f)); +} + +void mi_kuwagata_wait_init(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { + actor->_6E = (s16)RANDOM_F(200.f) + 40; + cKF_SkeletonInfo_R_init_standard_repeat_speedsetandmorph(&actor->_08->_00, actor->_08->_2AC, NULL, 0.5f, 0.0f); +} + +void mi_kuwagata_wait(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { + actor->_6E--; + if (actor->_6E < 0) { + actor->_7A = DEG2SHORT_ANGLE(-7); + actor->_6E = (s16)RANDOM_F(200.F) + 40; + if (RANDOM_F(1.0f) > 0.7f || GETREG(NMREG, 1)) { + mi_kuwagata_setupAction(actor, 3, game); + return; + } else if (RANDOM_F(1.0f) > 0.7f || GETREG(NMREG, 0)) { + mi_kuwagata_setupAction(actor, 2, game); + return; + } + } + + if (actor->_78 == actor->_7A) { + actor->_7A = 0; + } + actor->_76--; + if (actor->_76 < 0) { + cKF_SkeletonInfo_R_play(&actor->_08->_00); + if ((int)actor->_08->_00.frame_control.current_frame == 14) { + actor->_76 = (s16)RANDOM_F(356.F) + 4; + if (actor->_8E == 0) { + actor->_76 *= 10; + } + } else if ((int)actor->_08->_00.frame_control.current_frame == 1) { + actor->_76 = (s16)RANDOM_F(1760.f) + 40; + if (actor->_8E == 0) { + actor->_76 *= 10; + } + } + } + add_calc_short_angle2(&actor->_78, actor->_7A, CALC_EASE2(0.4f), DEG2SHORT_ANGLE(0.75f), DEG2SHORT_ANGLE(0.25f)); +} + +void mi_kuwagata_move_init(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { + return; +} + +void mi_kuwagata_move(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { + return; +} + +void mi_kuwagata_battle_init(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { + if (actor->_8C & 4) { + actor->_40 = 0.05f; + } else if (actor->_8C & 8) { + actor->_40 = -0.05f; + } + actor->_6E = (s16)RANDOM_F(120.f) + 60; + actor->_7C = 0x10; +} + +void mi_kuwagata_battle(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { +} +void mi_kuwagata_menace_init(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { +} +void mi_kuwagata_menace(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { +} + +void mi_kuwagata_attack_init(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { + return; +} + +void mi_kuwagata_attack(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { + return; +} + +void mi_kuwagata_setupAction(MUSEUM_INSECT_PRIVATE_DATA* actor, int r4, GAME* game) { +} +void minsect_kuwagata_ct(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { +} +void minsect_kuwagata_mv(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { +} +void minsect_kuwagata_dw(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { +} diff --git a/src/actor/ac_museum_insect_semi.c_inc b/src/actor/ac_museum_insect_semi.c_inc index adeae11f..0a7890e2 100644 --- a/src/actor/ac_museum_insect_semi.c_inc +++ b/src/actor/ac_museum_insect_semi.c_inc @@ -1,7 +1,9 @@ #include "ac_museum_insect_priv.h" void minsect_semi_ct(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { - const static xyz_t init_pos[1] = { 0, 0, 0 }; + const static xyz_t init_pos[4] = { + { 97.f, 85.f, -18.5f }, { 396.f, 85.5f, -20.f }, { 471.5f, 65.5f, 4.5f }, { 248.f, 88.f, -21.f } + }; int s; actor->_58 = 1.0f; actor->_70 = 0; @@ -18,7 +20,7 @@ void minsect_semi_ct(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { } void mi_semi_hane_anime(MUSEUM_INSECT_PRIVATE_DATA* actor) { - static float scaleX_table[1]; + static float scaleX_table[7] = { 1.15f, 1.f, 1.15f, 1.f, 1.15f, 1.f, 1.15f }; if (actor->_70 < 7) { if (chase_f(&actor->_58, (GETREG(NMREG, 1) * 0.01f + 1.0f) * scaleX_table[actor->_70], 0.23f) == TRUE) { actor->_70--; diff --git a/src/actor/ac_museum_insect_tentou.c_inc b/src/actor/ac_museum_insect_tentou.c_inc index ad9593dd..459fc8f6 100644 --- a/src/actor/ac_museum_insect_tentou.c_inc +++ b/src/actor/ac_museum_insect_tentou.c_inc @@ -13,7 +13,7 @@ void mi_tentou_check_player(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { } void mi_tentou_kama_anime(MUSEUM_INSECT_PRIVATE_DATA* actor) { - const static f32 scaleX_table[1]; + static f32 scaleX_table[7] = { 1.f, 0.95f, 1.15f, 0.95f, 1.15f, 0.95f, 1.15f }; if (actor->_7E < 7) { if (chase_f(&actor->_5C, (GETREG(NMREG, 1) * 0.01f + 1.0f) * scaleX_table[actor->_7E], 0.115f) == 1) { actor->_7E--; @@ -87,8 +87,8 @@ void mi_tentou_move(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { } } if (actor->_00 != 32) { - add_calc_short_angle2(&actor->_68.y, actor->_72, CALC_EASE2(0.5f), DEG2SHORT_ANGLE(0.25), - DEG2SHORT_ANGLE(0.125)); + add_calc_short_angle2(&actor->_68.y, actor->_72, CALC_EASE2(0.5f), DEG2SHORT_ANGLE(2.125), + DEG2SHORT_ANGLE(0.25)); } else { add_calc_short_angle2(&actor->_68.y, actor->_72, CALC_EASE2(0.2f), DEG2SHORT_ANGLE(0.25), DEG2SHORT_ANGLE(0.125)); @@ -171,8 +171,8 @@ void mi_tentou_menace(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { } void mi_tentou_setupAction(MUSEUM_INSECT_PRIVATE_DATA* actor, int r4, GAME* game) { - static PRIV_INSECT_PROCESS move_proc[1]; - static PRIV_INSECT_PROCESS init_proc[1]; + static PRIV_INSECT_PROCESS move_proc[3] = { mi_tentou_wait_init, mi_tentou_move_init, mi_tentou_menace_init }; + static PRIV_INSECT_PROCESS init_proc[3] = { mi_tentou_wait, mi_tentou_move, mi_tentou_menace }; actor->_04 = move_proc[r4]; init_proc[r4](actor, game); } diff --git a/src/actor/ac_museum_insect_tonbo.c_inc b/src/actor/ac_museum_insect_tonbo.c_inc index a6280cc0..d337ba8b 100644 --- a/src/actor/ac_museum_insect_tonbo.c_inc +++ b/src/actor/ac_museum_insect_tonbo.c_inc @@ -19,7 +19,6 @@ void minsect_tonbo_ct(MUSEUM_INSECT_PRIVATE_DATA* actor, GAME* game) { actor->_76 = qrand(); minsect_tonbo_normal_process_init(actor, game); } else { - static xyz_t tonbo_rock_pos[1]; actor->_74 = actor->_00 - 9; MI_Control_Actor->_2F9C[2] |= (1 << actor->_74); actor->_44 = actor->_1C = tonbo_rock_pos[actor->_74];