Files
ac-decomp/src/m_player_lib.c
T
2024-09-13 11:06:18 -04:00

3711 lines
130 KiB
C

#include "m_player_lib.h"
#include "m_play.h"
#include "m_actor.h"
#include "m_common_data.h"
#include "jsyswrap.h"
#include "libultra/libultra.h"
#include "ac_t_umbrella.h"
#include "ac_snowman.h"
#include "ac_uki.h"
extern cKF_Animation_R_c cKF_ba_r_ply_1_wait1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_walk1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_axe1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_run1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_push1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_pull1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_hold_wait1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_pickup1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_Lturn1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_Rturn1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_get1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_get_change1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_get_putaway1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_open1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_putaway1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_trans_wait1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_transfer1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_umb_open1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_umbrella1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_dash1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_run_slip1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_get_pull1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_get_m1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_kamae_move_m1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_kamae_wait_m1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru_a1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru_getup_a1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru_getup_n1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru_n1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_net1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_net_swing1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_axe_swing1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_kamae_slip_m1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru_getup1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_sitdown1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_sitdown_wait1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_standup1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_putaway_m1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_bed_wait1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_inbed_L1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_inbed_R1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_intrain1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_open_d1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_open_h1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_open_k1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_negaeri_L1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_negaeri_R1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_outbed_L1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_outbed_R1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_outtrain1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_close_d1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_close_h1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_close_k1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_wait_d1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_wait_h1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_wait_k1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_go_out_o1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_go_out_s1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_into_s1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_axe_hane1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_axe_suka1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_hold_wait_h1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_hold_wait_o1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_get_t1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_get_t2;
extern cKF_Animation_R_c cKF_ba_r_ply_1_putaway_t1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_sao1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_sao_swing1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_turi_hiki1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_turi_wait1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_not_get_t1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_menu_catch1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_menu_change1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_umb_close1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_not_sao_swing1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_intrain_wait1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_clear_table1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_dig1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_fill_up1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_not_dig1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_clear_table_l1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_pickup_l1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_scoop1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_confirm1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_dig_suka1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_get_d1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_putaway_d1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_dig_kabu1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_fill_up_i1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_send_mail1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_get_f1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_get_pull_f1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_get_putaway_f1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_trans_wait_f1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_transfer_f1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_shake1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_tired1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_wash1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_wash2;
extern cKF_Animation_R_c cKF_ba_r_ply_1_wash3;
extern cKF_Animation_R_c cKF_ba_r_ply_1_wash4;
extern cKF_Animation_R_c cKF_ba_r_ply_1_wash5;
extern cKF_Animation_R_c cKF_ba_r_ply_1_fukubiki1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_omairi1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_saisen1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_return_mail1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_return_mail2;
extern cKF_Animation_R_c cKF_ba_r_ply_1_return_mail3;
extern cKF_Animation_R_c cKF_ba_r_ply_1_eat1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_gaaan1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_gaaan2;
extern cKF_Animation_R_c cKF_ba_r_ply_1_deru1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_guratuku1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_mogaku1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_otiru1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_zassou1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_knock1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_biku1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_hati1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_hati2;
extern cKF_Animation_R_c cKF_ba_r_ply_1_hati3;
extern cKF_Animation_R_c cKF_ba_r_ply_1_push_yuki1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_deru2;
extern cKF_Animation_R_c cKF_ba_r_ply_1_otiru2;
extern cKF_Animation_R_c cKF_ba_r_ply_1_itazura1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_umb_rot1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_pickup_wait1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_yatta1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_yatta2;
extern cKF_Animation_R_c cKF_ba_r_ply_1_yatta3;
extern cKF_Animation_R_c cKF_ba_r_ply_1_kaza1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_mosquito1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_mosquito2;
extern cKF_Animation_R_c cKF_ba_r_ply_1_ride1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_ride2;
extern cKF_Animation_R_c cKF_ba_r_ply_1_ridewait;
extern cKF_Animation_R_c cKF_ba_r_ply_1_getoff1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_getoff2;
extern cKF_Animation_R_c cKF_ba_r_ply_1_utiwa_wait1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_utiwa_d1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_axe_break1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_axe_breakwait1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_light_on1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou2_1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou2_2;
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou3;
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou4_1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou4_2;
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou5_1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou5_2;
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou6_1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou6_2;
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou7_1;
extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou7_2;
extern cKF_Animation_R_c cKF_ba_r_ply_1_omairi_us1;
extern cKF_Animation_R_c* mPlib_Get_Pointer_Animation(int anim_idx) {
static cKF_Animation_R_c* data[] = {
&cKF_ba_r_ply_1_wait1,
&cKF_ba_r_ply_1_walk1,
&cKF_ba_r_ply_1_axe1,
&cKF_ba_r_ply_1_run1,
&cKF_ba_r_ply_1_push1,
&cKF_ba_r_ply_1_pull1,
&cKF_ba_r_ply_1_hold_wait1,
&cKF_ba_r_ply_1_pickup1,
&cKF_ba_r_ply_1_Lturn1,
&cKF_ba_r_ply_1_Rturn1,
&cKF_ba_r_ply_1_get1,
&cKF_ba_r_ply_1_get_change1,
&cKF_ba_r_ply_1_get_putaway1,
&cKF_ba_r_ply_1_open1,
&cKF_ba_r_ply_1_putaway1,
&cKF_ba_r_ply_1_trans_wait1,
&cKF_ba_r_ply_1_transfer1,
&cKF_ba_r_ply_1_umb_open1,
&cKF_ba_r_ply_1_umbrella1,
&cKF_ba_r_ply_1_dash1,
&cKF_ba_r_ply_1_run_slip1,
&cKF_ba_r_ply_1_get_pull1,
&cKF_ba_r_ply_1_get_m1,
&cKF_ba_r_ply_1_kamae_move_m1,
&cKF_ba_r_ply_1_kamae_wait_m1,
&cKF_ba_r_ply_1_kokeru_a1,
&cKF_ba_r_ply_1_kokeru_getup_a1,
&cKF_ba_r_ply_1_kokeru_getup_n1,
&cKF_ba_r_ply_1_kokeru_n1,
&cKF_ba_r_ply_1_net1,
&cKF_ba_r_ply_1_net_swing1,
&cKF_ba_r_ply_1_axe_swing1,
&cKF_ba_r_ply_1_kamae_slip_m1,
&cKF_ba_r_ply_1_kokeru1,
&cKF_ba_r_ply_1_kokeru_getup1,
&cKF_ba_r_ply_1_sitdown1,
&cKF_ba_r_ply_1_sitdown_wait1,
&cKF_ba_r_ply_1_standup1,
&cKF_ba_r_ply_1_putaway_m1,
&cKF_ba_r_ply_1_bed_wait1,
&cKF_ba_r_ply_1_inbed_L1,
&cKF_ba_r_ply_1_inbed_R1,
&cKF_ba_r_ply_1_intrain1,
&cKF_ba_r_ply_1_kagu_open_d1,
&cKF_ba_r_ply_1_kagu_open_h1,
&cKF_ba_r_ply_1_kagu_open_k1,
&cKF_ba_r_ply_1_negaeri_L1,
&cKF_ba_r_ply_1_negaeri_R1,
&cKF_ba_r_ply_1_outbed_L1,
&cKF_ba_r_ply_1_outbed_R1,
&cKF_ba_r_ply_1_outtrain1,
&cKF_ba_r_ply_1_kagu_close_d1,
&cKF_ba_r_ply_1_kagu_close_h1,
&cKF_ba_r_ply_1_kagu_close_k1,
&cKF_ba_r_ply_1_kagu_wait_d1,
&cKF_ba_r_ply_1_kagu_wait_h1,
&cKF_ba_r_ply_1_kagu_wait_k1,
&cKF_ba_r_ply_1_go_out_o1,
&cKF_ba_r_ply_1_go_out_s1,
&cKF_ba_r_ply_1_into_s1,
&cKF_ba_r_ply_1_axe_hane1,
&cKF_ba_r_ply_1_axe_suka1,
&cKF_ba_r_ply_1_hold_wait_h1,
&cKF_ba_r_ply_1_hold_wait_o1,
&cKF_ba_r_ply_1_get_t1,
&cKF_ba_r_ply_1_get_t2,
&cKF_ba_r_ply_1_putaway_t1,
&cKF_ba_r_ply_1_sao1,
&cKF_ba_r_ply_1_sao_swing1,
&cKF_ba_r_ply_1_turi_hiki1,
&cKF_ba_r_ply_1_turi_wait1,
&cKF_ba_r_ply_1_not_get_t1,
&cKF_ba_r_ply_1_menu_catch1,
&cKF_ba_r_ply_1_menu_change1,
&cKF_ba_r_ply_1_umb_close1,
&cKF_ba_r_ply_1_not_sao_swing1,
&cKF_ba_r_ply_1_intrain_wait1,
&cKF_ba_r_ply_1_clear_table1,
&cKF_ba_r_ply_1_dig1,
&cKF_ba_r_ply_1_fill_up1,
&cKF_ba_r_ply_1_not_dig1,
&cKF_ba_r_ply_1_clear_table_l1,
&cKF_ba_r_ply_1_pickup_l1,
&cKF_ba_r_ply_1_scoop1,
&cKF_ba_r_ply_1_confirm1,
&cKF_ba_r_ply_1_dig_suka1,
&cKF_ba_r_ply_1_get_d1,
&cKF_ba_r_ply_1_putaway_d1,
&cKF_ba_r_ply_1_dig_kabu1,
&cKF_ba_r_ply_1_fill_up_i1,
&cKF_ba_r_ply_1_send_mail1,
&cKF_ba_r_ply_1_get_f1,
&cKF_ba_r_ply_1_get_pull_f1,
&cKF_ba_r_ply_1_get_putaway_f1,
&cKF_ba_r_ply_1_trans_wait_f1,
&cKF_ba_r_ply_1_transfer_f1,
&cKF_ba_r_ply_1_shake1,
&cKF_ba_r_ply_1_tired1,
&cKF_ba_r_ply_1_wash1,
&cKF_ba_r_ply_1_wash2,
&cKF_ba_r_ply_1_wash3,
&cKF_ba_r_ply_1_wash4,
&cKF_ba_r_ply_1_wash5,
&cKF_ba_r_ply_1_fukubiki1,
&cKF_ba_r_ply_1_omairi1,
&cKF_ba_r_ply_1_saisen1,
&cKF_ba_r_ply_1_return_mail1,
&cKF_ba_r_ply_1_return_mail2,
&cKF_ba_r_ply_1_return_mail3,
&cKF_ba_r_ply_1_eat1,
&cKF_ba_r_ply_1_gaaan1,
&cKF_ba_r_ply_1_gaaan2,
&cKF_ba_r_ply_1_deru1,
&cKF_ba_r_ply_1_guratuku1,
&cKF_ba_r_ply_1_mogaku1,
&cKF_ba_r_ply_1_otiru1,
&cKF_ba_r_ply_1_zassou1,
&cKF_ba_r_ply_1_knock1,
&cKF_ba_r_ply_1_biku1,
&cKF_ba_r_ply_1_hati1,
&cKF_ba_r_ply_1_hati2,
&cKF_ba_r_ply_1_hati3,
&cKF_ba_r_ply_1_push_yuki1,
&cKF_ba_r_ply_1_deru2,
&cKF_ba_r_ply_1_otiru2,
&cKF_ba_r_ply_1_itazura1,
&cKF_ba_r_ply_1_umb_rot1,
&cKF_ba_r_ply_1_pickup_wait1,
&cKF_ba_r_ply_1_yatta1,
&cKF_ba_r_ply_1_yatta2,
&cKF_ba_r_ply_1_yatta3,
&cKF_ba_r_ply_1_kaza1,
&cKF_ba_r_ply_1_mosquito1,
&cKF_ba_r_ply_1_mosquito2,
&cKF_ba_r_ply_1_ride1,
&cKF_ba_r_ply_1_ride2,
&cKF_ba_r_ply_1_ridewait,
&cKF_ba_r_ply_1_getoff1,
&cKF_ba_r_ply_1_getoff2,
&cKF_ba_r_ply_1_utiwa_wait1,
&cKF_ba_r_ply_1_utiwa_d1,
&cKF_ba_r_ply_1_axe_break1,
&cKF_ba_r_ply_1_axe_breakwait1,
&cKF_ba_r_ply_1_light_on1,
&cKF_ba_r_ply_1_taisou1,
&cKF_ba_r_ply_1_taisou2_1,
&cKF_ba_r_ply_1_taisou2_2,
&cKF_ba_r_ply_1_taisou3,
&cKF_ba_r_ply_1_taisou4_1,
&cKF_ba_r_ply_1_taisou4_2,
&cKF_ba_r_ply_1_taisou5_1,
&cKF_ba_r_ply_1_taisou5_2,
&cKF_ba_r_ply_1_taisou6_1,
&cKF_ba_r_ply_1_taisou6_2,
&cKF_ba_r_ply_1_taisou7_1,
&cKF_ba_r_ply_1_taisou7_2,
&cKF_ba_r_ply_1_omairi_us1,
};
if (anim_idx >= 0 && anim_idx < mPlayer_ANIM_NUM && data[anim_idx] != NULL) {
return data[anim_idx];
}
return NULL;
}
extern int mPlib_Get_BasicPlayerAnimeIndex_fromItemKind(int item_kind) {
if (item_kind >= 0 && item_kind < (mPlayer_ITEM_KIND_NUM + 1)) {
// clang-format off
static const u8 data[] = {
mPlayer_ANIM_AXE1,
mPlayer_ANIM_AXE1,
mPlayer_ANIM_AXE1,
mPlayer_ANIM_AXE1,
mPlayer_ANIM_AXE1,
mPlayer_ANIM_AXE1,
mPlayer_ANIM_AXE1,
mPlayer_ANIM_AXE1,
mPlayer_ANIM_AXE1,
mPlayer_ANIM_NET1,
mPlayer_ANIM_NET1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_UMBRELLA1,
mPlayer_ANIM_SAO1,
mPlayer_ANIM_SAO1,
mPlayer_ANIM_SCOOP1,
mPlayer_ANIM_SCOOP1,
mPlayer_ANIM_KAZA1,
mPlayer_ANIM_KAZA1,
mPlayer_ANIM_KAZA1,
mPlayer_ANIM_KAZA1,
mPlayer_ANIM_KAZA1,
mPlayer_ANIM_KAZA1,
mPlayer_ANIM_KAZA1,
mPlayer_ANIM_KAZA1,
mPlayer_ANIM_KAZA1,
mPlayer_ANIM_KAZA1,
mPlayer_ANIM_KAZA1,
mPlayer_ANIM_KAZA1,
mPlayer_ANIM_KAZA1,
mPlayer_ANIM_KAZA1,
mPlayer_ANIM_KAZA1,
mPlayer_ANIM_KAZA1,
mPlayer_ANIM_UTIWA_WAIT1,
mPlayer_ANIM_UTIWA_WAIT1,
mPlayer_ANIM_UTIWA_WAIT1,
mPlayer_ANIM_UTIWA_WAIT1,
mPlayer_ANIM_UTIWA_WAIT1,
mPlayer_ANIM_UTIWA_WAIT1,
mPlayer_ANIM_UTIWA_WAIT1,
mPlayer_ANIM_UTIWA_WAIT1,
mPlayer_ANIM_WAIT1,
};
// clang-format on
return data[item_kind];
}
return -1;
}
extern int mPlib_Get_BasicPartTableIndex_fromAnimeIndex(int anim_idx) {
if (anim_idx >= 0 && anim_idx < mPlayer_ANIM_NUM) {
// clang-format off
static const s8 data[] = {
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_AXE,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_PICK_UP,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NET,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NET,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_AXE,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_PICK_UP,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_PICK_UP,
mPlayer_PART_TABLE_PICK_UP,
mPlayer_PART_TABLE_AXE,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NET,
mPlayer_PART_TABLE_PICK_UP,
mPlayer_PART_TABLE_PICK_UP,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NET,
mPlayer_PART_TABLE_NET,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
mPlayer_PART_TABLE_NORMAL,
};
// clang-format on
return data[anim_idx];
}
return -1;
}
extern Gfx tol_axe_1_model[];
extern Gfx tol_axe_1_b_model[];
extern Gfx tol_axe_1_c_model[];
extern Gfx tol_axe_2_model[];
extern cKF_Skeleton_R_c cKF_bs_r_tol_net_1;
extern cKF_Skeleton_R_c cKF_bs_r_tol_net_2;
extern cKF_Animation_R_c cKF_ba_r_tol_net_1_get_m1;
extern cKF_Animation_R_c cKF_ba_r_tol_net_1_net_swing1;
extern cKF_Animation_R_c cKF_ba_r_tol_net_1_kamae_main_m1;
extern cKF_Animation_R_c cKF_ba_r_tol_net_1_kokeru_getup_n1;
extern cKF_Animation_R_c cKF_ba_r_tol_net_1_kokeru_n1;
extern cKF_Animation_R_c cKF_ba_r_tol_net_1_swing_wait1;
extern cKF_Animation_R_c cKF_ba_r_tol_net_1_yatta_m1;
extern cKF_Skeleton_R_c cKF_bs_r_tol_sao_1;
extern cKF_Skeleton_R_c cKF_bs_r_tol_sao_2;
extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_sao_get_t1;
extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_sao_move1;
extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_sao_sinari1;
extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_sao_swing1;
extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_sao_wait1;
extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_not_sao_swing1;
extern Gfx tol_scoop_1_model[];
extern Gfx tol_scoop_2_model[];
extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon1;
extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon2;
extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon3;
extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon4;
extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon5;
extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon6;
extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon7;
extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon8;
extern cKF_Animation_R_c cKF_ba_r_tol_balloon1_wait;
extern cKF_Animation_R_c cKF_ba_r_tol_balloon1_gyaza1;
extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza1;
extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza2;
extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza3;
extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza4;
extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza5;
extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza6;
extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza7;
extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza8;
extern cKF_Animation_R_c cKF_ba_r_tol_kaza1_wait;
extern Gfx tol_fan1_model[];
extern Gfx tol_fan2_model[];
extern Gfx tol_fan3_model[];
extern Gfx tol_fan4_model[];
extern Gfx tol_fan5_model[];
extern Gfx tol_fan6_model[];
extern Gfx tol_fan7_model[];
extern Gfx tol_fan8_model[];
extern void* mPlib_Get_Item_DataPointer(int data_kind) {
if (mPlayer_ITEM_DATA_VALID(data_kind)) {
static void* mPlib_Item_DataPointer[] = {
tol_axe_1_model,
tol_axe_1_b_model,
tol_axe_1_c_model,
tol_axe_2_model,
&cKF_bs_r_tol_net_1,
&cKF_bs_r_tol_net_2,
&cKF_ba_r_tol_net_1_get_m1,
&cKF_ba_r_tol_net_1_net_swing1,
&cKF_ba_r_tol_net_1_kamae_main_m1,
&cKF_ba_r_tol_net_1_kokeru_getup_n1,
&cKF_ba_r_tol_net_1_kokeru_n1,
&cKF_ba_r_tol_net_1_swing_wait1,
&cKF_ba_r_tol_net_1_yatta_m1,
&cKF_bs_r_tol_sao_1,
&cKF_bs_r_tol_sao_2,
&cKF_ba_r_tol_sao_1_sao_get_t1,
&cKF_ba_r_tol_sao_1_sao_move1,
&cKF_ba_r_tol_sao_1_sao_sinari1,
&cKF_ba_r_tol_sao_1_sao_swing1,
&cKF_ba_r_tol_sao_1_sao_wait1,
&cKF_ba_r_tol_sao_1_not_sao_swing1,
tol_scoop_1_model,
tol_scoop_2_model,
&cKF_bs_r_tol_balloon1,
&cKF_bs_r_tol_balloon2,
&cKF_bs_r_tol_balloon3,
&cKF_bs_r_tol_balloon4,
&cKF_bs_r_tol_balloon5,
&cKF_bs_r_tol_balloon6,
&cKF_bs_r_tol_balloon7,
&cKF_bs_r_tol_balloon8,
&cKF_ba_r_tol_balloon1_wait,
&cKF_ba_r_tol_balloon1_gyaza1,
&cKF_bs_r_tol_kaza1,
&cKF_bs_r_tol_kaza2,
&cKF_bs_r_tol_kaza3,
&cKF_bs_r_tol_kaza4,
&cKF_bs_r_tol_kaza5,
&cKF_bs_r_tol_kaza6,
&cKF_bs_r_tol_kaza7,
&cKF_bs_r_tol_kaza8,
&cKF_ba_r_tol_kaza1_wait,
tol_fan1_model,
tol_fan2_model,
tol_fan3_model,
tol_fan4_model,
tol_fan5_model,
tol_fan6_model,
tol_fan7_model,
tol_fan8_model,
};
return mPlib_Item_DataPointer[data_kind];
}
return NULL;
}
extern int mPlib_Get_BasicItemShapeIndex_fromItemKind(int item_kind) {
if (item_kind >= 0 && item_kind < (mPlayer_ITEM_KIND_NUM + 1)) {
// clang-format off
static const s8 data[] = {
mPlayer_ITEM_DATA_AXE,
mPlayer_ITEM_DATA_AXE,
mPlayer_ITEM_DATA_AXE_B,
mPlayer_ITEM_DATA_AXE_B,
mPlayer_ITEM_DATA_AXE_B,
mPlayer_ITEM_DATA_AXE_C,
mPlayer_ITEM_DATA_AXE_C,
mPlayer_ITEM_DATA_AXE_C,
mPlayer_ITEM_DATA_GOLD_AXE,
mPlayer_ITEM_DATA_NET,
mPlayer_ITEM_DATA_GOLD_NET,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
mPlayer_ITEM_DATA_ROD,
mPlayer_ITEM_DATA_GOLD_ROD,
mPlayer_ITEM_DATA_SHOVEL,
mPlayer_ITEM_DATA_GOLD_SHOVEL,
mPlayer_ITEM_DATA_BALLOON1,
mPlayer_ITEM_DATA_BALLOON2,
mPlayer_ITEM_DATA_BALLOON3,
mPlayer_ITEM_DATA_BALLOON4,
mPlayer_ITEM_DATA_BALLOON5,
mPlayer_ITEM_DATA_BALLOON6,
mPlayer_ITEM_DATA_BALLOON7,
mPlayer_ITEM_DATA_BALLOON8,
mPlayer_ITEM_DATA_PINWHEEL1,
mPlayer_ITEM_DATA_PINWHEEL2,
mPlayer_ITEM_DATA_PINWHEEL3,
mPlayer_ITEM_DATA_PINWHEEL4,
mPlayer_ITEM_DATA_PINWHEEL5,
mPlayer_ITEM_DATA_PINWHEEL6,
mPlayer_ITEM_DATA_PINWHEEL7,
mPlayer_ITEM_DATA_PINWHEEL8,
mPlayer_ITEM_DATA_FAN1,
mPlayer_ITEM_DATA_FAN2,
mPlayer_ITEM_DATA_FAN3,
mPlayer_ITEM_DATA_FAN4,
mPlayer_ITEM_DATA_FAN5,
mPlayer_ITEM_DATA_FAN6,
mPlayer_ITEM_DATA_FAN7,
mPlayer_ITEM_DATA_FAN8,
0x00,
};
// clang-format on
return data[item_kind];
}
return -1;
}
extern int mPlib_Get_BasicItemAnimeIndex_fromItemKind(int item_kind) {
if (item_kind >= 0 && item_kind < (mPlayer_ITEM_KIND_NUM + 1)) {
// clang-format off
static const s8 data[] = {
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
mPlayer_ITEM_DATA_KAMAE_MAIN_M,
mPlayer_ITEM_DATA_KAMAE_MAIN_M,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
mPlayer_ITEM_DATA_ROD_WAIT,
mPlayer_ITEM_DATA_ROD_WAIT,
-1,
-1,
mPlayer_ITEM_DATA_BALLOON_GYAZA,
mPlayer_ITEM_DATA_BALLOON_GYAZA,
mPlayer_ITEM_DATA_BALLOON_GYAZA,
mPlayer_ITEM_DATA_BALLOON_GYAZA,
mPlayer_ITEM_DATA_BALLOON_GYAZA,
mPlayer_ITEM_DATA_BALLOON_GYAZA,
mPlayer_ITEM_DATA_BALLOON_GYAZA,
mPlayer_ITEM_DATA_BALLOON_GYAZA,
mPlayer_ITEM_DATA_PINWHEEL_WAIT,
mPlayer_ITEM_DATA_PINWHEEL_WAIT,
mPlayer_ITEM_DATA_PINWHEEL_WAIT,
mPlayer_ITEM_DATA_PINWHEEL_WAIT,
mPlayer_ITEM_DATA_PINWHEEL_WAIT,
mPlayer_ITEM_DATA_PINWHEEL_WAIT,
mPlayer_ITEM_DATA_PINWHEEL_WAIT,
mPlayer_ITEM_DATA_PINWHEEL_WAIT,
-1,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00
};
// clang-format on
return data[item_kind];
}
return -1;
}
extern u8 mPlib_Get_Item_DataPointerType(int data_idx) {
if (data_idx >= 0 && data_idx < mPlayer_ITEM_DATA_NUM) {
// clang-format off
static const u8 mPlib_Item_DataPointerType[] = {
mPlayer_ITEM_DATA_TYPE_GFX,
mPlayer_ITEM_DATA_TYPE_GFX,
mPlayer_ITEM_DATA_TYPE_GFX,
mPlayer_ITEM_DATA_TYPE_GFX,
mPlayer_ITEM_DATA_TYPE_SKELETON,
mPlayer_ITEM_DATA_TYPE_SKELETON,
mPlayer_ITEM_DATA_TYPE_NET_ANIMATION,
mPlayer_ITEM_DATA_TYPE_NET_ANIMATION,
mPlayer_ITEM_DATA_TYPE_NET_ANIMATION,
mPlayer_ITEM_DATA_TYPE_NET_ANIMATION,
mPlayer_ITEM_DATA_TYPE_NET_ANIMATION,
mPlayer_ITEM_DATA_TYPE_NET_ANIMATION,
mPlayer_ITEM_DATA_TYPE_NET_ANIMATION,
mPlayer_ITEM_DATA_TYPE_SKELETON,
mPlayer_ITEM_DATA_TYPE_SKELETON,
mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION,
mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION,
mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION,
mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION,
mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION,
mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION,
mPlayer_ITEM_DATA_TYPE_GFX,
mPlayer_ITEM_DATA_TYPE_GFX,
mPlayer_ITEM_DATA_TYPE_SKELETON,
mPlayer_ITEM_DATA_TYPE_SKELETON,
mPlayer_ITEM_DATA_TYPE_SKELETON,
mPlayer_ITEM_DATA_TYPE_SKELETON,
mPlayer_ITEM_DATA_TYPE_SKELETON,
mPlayer_ITEM_DATA_TYPE_SKELETON,
mPlayer_ITEM_DATA_TYPE_SKELETON,
mPlayer_ITEM_DATA_TYPE_SKELETON,
mPlayer_ITEM_DATA_TYPE_BALLOON_ANIMATION,
mPlayer_ITEM_DATA_TYPE_BALLOON_ANIMATION,
mPlayer_ITEM_DATA_TYPE_SKELETON,
mPlayer_ITEM_DATA_TYPE_SKELETON,
mPlayer_ITEM_DATA_TYPE_SKELETON,
mPlayer_ITEM_DATA_TYPE_SKELETON,
mPlayer_ITEM_DATA_TYPE_SKELETON,
mPlayer_ITEM_DATA_TYPE_SKELETON,
mPlayer_ITEM_DATA_TYPE_SKELETON,
mPlayer_ITEM_DATA_TYPE_SKELETON,
mPlayer_ITEM_DATA_TYPE_PINWHEEL_ANIMATION,
mPlayer_ITEM_DATA_TYPE_GFX,
mPlayer_ITEM_DATA_TYPE_GFX,
mPlayer_ITEM_DATA_TYPE_GFX,
mPlayer_ITEM_DATA_TYPE_GFX,
mPlayer_ITEM_DATA_TYPE_GFX,
mPlayer_ITEM_DATA_TYPE_GFX,
mPlayer_ITEM_DATA_TYPE_GFX,
mPlayer_ITEM_DATA_TYPE_GFX,
};
// clang-format on
return mPlib_Item_DataPointerType[data_idx];
}
return mPlayer_ITEM_DATA_TYPE_GFX;
}
static u32 mPlib_Get_UseFaceRom_index(int sex, int face_type, int swell, int decoy, int res_type) {
int swell_flag = swell != FALSE;
int decoy_flag = decoy != FALSE;
int ofs;
if (res_type != mPlayer_USE_FACE_ROM_TYPE_TEX) {
ofs = face_type * 8;
ofs += sex * 64;
ofs += swell_flag * 128;
} else {
ofs = decoy_flag * 32;
ofs += face_type;
ofs += sex * 8;
ofs += swell_flag * 16;
}
return ofs;
}
static u32 mPlib_Get_UseFaceTexRom_p_common(int sex, int face_type, int swell, int decoy) {
u32 idx = mPlib_Get_UseFaceRom_index(sex, face_type, swell, decoy, mPlayer_USE_FACE_ROM_TYPE_TEX);
u32 base_address = JW_GetAramAddress(RESOURCE_FACE_BOY);
return base_address + idx * 0xE20;
}
static u32 mPlib_Get_UseFaceTexRom_p(void) {
return mPlib_Get_UseFaceTexRom_p_common(Now_Private->gender, Now_Private->face, Common_Get(player_bee_swell_flag),
Common_Get(player_decoy_flag));
}
static u32 mPlib_Get_UseFacePalletRom_p(void) {
int sunburn_rank = Now_Private->sunburn.rank;
int decoy_flag = Common_Get(player_decoy_flag);
u32 base;
u32 ofs;
if (sunburn_rank > 0 && decoy_flag == FALSE) {
u32 idx = mPlib_Get_UseFaceRom_index(Now_Private->gender, Now_Private->face, Common_Get(player_bee_swell_flag),
FALSE, mPlayer_USE_FACE_ROM_TYPE_PAL);
base = mPlib_Get_UseFaceTexRom_p_common(mPr_SEX_FEMALE, mPr_FACE_TYPE7, TRUE, TRUE);
ofs = 0xE00 + (sunburn_rank + idx) * 0x20;
} else {
base = mPlib_Get_UseFaceTexRom_p();
ofs = 0xE00;
}
return base + ofs;
}
extern void mPlib_Object_Exchange_keep_new_PlayerMdl(GAME_PLAY* play) {
Actor_data* player_data = play->player_data;
actor_dlftbls[player_data->profile].profile->obj_bank_id = mPlib_get_player_Object_Bank();
}
static int mPlib_Object_Exchange_keep_new(GAME_PLAY* play, s16 bank, u32 src, u32 size, int aram_flag) {
Object_Exchange_c* obj_ex = &play->object_exchange;
Object_Bank_c* bank_p = &obj_ex->banks[obj_ex->bank_idx];
bank_p->bank_id = bank;
bank_p->dma_start = obj_ex->next_bank_ram_address;
bank_p->ram_start = obj_ex->next_bank_ram_address;
bank_p->size = size;
if (src != 0) {
if (aram_flag) {
_JW_GetResourceAram(src, (u8*)bank_p->dma_start, size);
} else {
bcopy((void*)src, bank_p->dma_start, size);
}
DCStoreRangeNoSync(bank_p->ram_start, size);
}
if (obj_ex->bank_idx < (mSc_OBJECT_BANK_NUM - 1)) {
obj_ex->next_bank_ram_address = (char*)ALIGN_NEXT((u32)obj_ex->next_bank_ram_address + size, 32);
obj_ex->bank_idx++;
}
return mSc_bank_regist_check(obj_ex, bank);
}
static int Player_bank_ID_Index = 0;
static int Change_Player_bank_ID_Index(void) {
Player_bank_ID_Index ^= 1;
return Player_bank_ID_Index;
}
static int Player_face_bank_ID_Index = 0;
static int Change_Player_face_bank_ID_Index(void) {
Player_face_bank_ID_Index ^= 1;
return Player_face_bank_ID_Index;
}
extern u32 mPlib_Get_PlayerTexRom_p(int idx) {
if (mPlib_Check_PlayerClothInAram(idx)) {
u32 addr = JW_GetAramAddress(RESOURCE_TEX_BOY);
addr += idx * mNW_DESIGN_TEX_SIZE;
return addr;
} else {
int org_idx = idx - (CLOTH_NUM + 1);
if (!mPr_ORIGINAL_DESIGN_IDX_VALID(org_idx)) {
org_idx = 0;
}
return (u32)Now_Private->my_org[org_idx & 7].design.data;
}
}
static u32 mPlib_Get_UseTexRom_p(void) {
return mPlib_Get_PlayerTexRom_p(Now_Private->cloth.idx);
}
static int Player_Tex_bank_ID[] = { -1, -1 };
extern void mPlib_Object_Exchange_keep_new_PlayerTex(GAME_PLAY* play, int bank_idx, int bank) {
u32 tex = mPlib_Get_UseTexRom_p();
int idx = mPlib_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_14, tex, mNW_DESIGN_TEX_SIZE,
mPlib_Check_PlayerClothInAram(Now_Private->cloth.idx));
Player_Tex_bank_ID[bank_idx] = bank + idx;
}
extern u32 mPlib_Get_PlayerPalletRom_p(int idx) {
if (mPlib_Check_PlayerClothInAram(idx)) {
u32 addr = JW_GetAramAddress(RESOURCE_PALLET_BOY);
addr += idx * mNW_PALETTE_SIZE;
return addr;
} else {
int org_idx = idx - (CLOTH_NUM + 1);
if (!mPr_ORIGINAL_DESIGN_IDX_VALID(org_idx)) {
org_idx = 0;
}
return (u32)mNW_PaletteIdx2Palette(Now_Private->my_org[org_idx & 7].palette);
}
}
static u32 mPlib_Get_UsePalletRom_p(void) {
return mPlib_Get_PlayerPalletRom_p(Now_Private->cloth.idx);
}
static int Player_Pallet_bank_ID[] = { -1, -1 };
extern void mPlib_Object_Exchange_keep_new_PlayerPallet(GAME_PLAY* play, int bank_idx, int bank) {
u32 pal = mPlib_Get_UsePalletRom_p();
Player_Pallet_bank_ID[bank_idx] =
bank + mPlib_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_15, pal, mNW_PALETTE_SIZE,
mPlib_Check_PlayerClothInAram(Now_Private->cloth.idx));
}
extern int mPlib_Check_PlayerClothInAram(int idx) {
if (idx < (CLOTH_NUM + 1)) {
return TRUE;
}
return FALSE;
}
static int Player_face_tex_bank_ID = -1;
extern void mPlib_Object_Exchange_keep_new_PlayerFaceTex(GAME_PLAY* play) {
Player_face_tex_bank_ID = mPlib_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_52, 0, 0xE00, TRUE);
}
static int Player_face_pallet_bank_ID[] = { -1, -1 };
extern void mPlib_Object_Exchange_keep_new_PlayerFacePallet(GAME_PLAY* play, int bank, int bank_idx) {
Player_face_pallet_bank_ID[bank_idx] =
bank + mPlib_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_52, 0, mNW_PALETTE_SIZE, TRUE);
}
extern void mPlib_Object_Exchange_keep_Player_dt(GAME_PLAY* play) {
Player_face_tex_bank_ID = -1;
Player_face_pallet_bank_ID[0] = -1;
Player_face_pallet_bank_ID[1] = -1;
Player_bank_ID_Index = 0;
Player_face_bank_ID_Index = 0;
Player_Tex_bank_ID[0] = -1;
Player_Tex_bank_ID[1] = -1;
Player_Pallet_bank_ID[0] = -1;
Player_Pallet_bank_ID[1] = -1;
}
extern u8* mPlib_get_player_tex_p(GAME* game) {
GAME_PLAY* play = (GAME_PLAY*)game;
Object_Exchange_c* obj_ex = &play->object_exchange;
int bank_no = Player_Tex_bank_ID[Player_bank_ID_Index];
if (bank_no >= 0 && obj_ex->banks[bank_no].bank_id > 0) {
return (u8*)obj_ex->banks[bank_no].ram_start;
}
return NULL;
}
extern u16* mPlib_get_player_pallet_p(GAME* game) {
u8* tex_p = mPlib_get_player_tex_p(game);
if (tex_p != NULL) {
tex_p = tex_p + mNW_DESIGN_TEX_SIZE;
}
return (u16*)tex_p;
}
extern u8* mPlib_get_player_face_p(GAME* game) {
GAME_PLAY* play = (GAME_PLAY*)game;
Object_Exchange_c* obj_ex = &play->object_exchange;
int bank_no = Player_face_tex_bank_ID;
if (bank_no >= 0 && obj_ex->banks[bank_no].bank_id > 0) {
return (u8*)obj_ex->banks[bank_no].ram_start;
}
return NULL;
}
extern u16* mPlib_get_player_face_pallet_p(GAME* game) {
GAME_PLAY* play = (GAME_PLAY*)game;
Object_Exchange_c* obj_ex = &play->object_exchange;
int bank_no = Player_face_pallet_bank_ID[Player_face_bank_ID_Index];
if (bank_no >= 0 && obj_ex->banks[bank_no].bank_id > 0) {
return (u16*)obj_ex->banks[bank_no].ram_start;
}
return NULL;
}
extern void mPlib_change_player_cloth(GAME* game, u16 cloth_idx) {
int idx = cloth_idx;
Change_Player_bank_ID_Index();
{
u8* player_tex_p = mPlib_get_player_tex_p(game);
u32 player_tex_rom_p = mPlib_Get_PlayerTexRom_p(idx);
if (mPlib_Check_PlayerClothInAram(idx)) {
_JW_GetResourceAram(player_tex_rom_p, player_tex_p, mNW_DESIGN_TEX_SIZE);
} else {
bcopy((u8*)player_tex_rom_p, player_tex_p, mNW_DESIGN_TEX_SIZE);
}
DCStoreRangeNoSync(player_tex_p, mNW_DESIGN_TEX_SIZE);
}
{
u16* player_pallet_p = mPlib_get_player_pallet_p(game);
u32 player_pallet_rom_p = mPlib_Get_PlayerPalletRom_p(idx);
if (mPlib_Check_PlayerClothInAram(idx)) {
_JW_GetResourceAram(player_pallet_rom_p, (u8*)player_pallet_p, mNW_PALETTE_SIZE);
} else {
bcopy((u16*)player_pallet_rom_p, player_pallet_p, mNW_PALETTE_SIZE);
}
DCStoreRangeNoSync(player_pallet_p, mNW_PALETTE_SIZE);
}
}
extern void mPlib_change_player_face_pallet(GAME* game) {
Change_Player_face_bank_ID_Index();
{
u16* player_face_pallet_p = mPlib_get_player_face_pallet_p(game);
u32 player_face_pallet_rom_p = mPlib_Get_UseFacePalletRom_p();
if (player_face_pallet_p != NULL && player_face_pallet_rom_p != 0) {
_JW_GetResourceAram(player_face_pallet_rom_p, (u8*)player_face_pallet_p, mNW_PALETTE_SIZE);
DCStoreRangeNoSync(player_face_pallet_p, mNW_PALETTE_SIZE);
}
}
}
extern void mPlib_change_player_face(GAME* game) {
u8* player_face_p = mPlib_get_player_face_p(game);
u32 player_face_rom_p = mPlib_Get_UseFaceTexRom_p();
if (player_face_p != NULL && player_face_rom_p != 0) {
_JW_GetResourceAram(player_face_rom_p, player_face_p, 0xE00);
DCStoreRangeNoSync(player_face_p, 0xE00);
}
mPlib_change_player_face_pallet(game);
}
extern PLAYER_ACTOR* get_player_actor_withoutCheck(GAME_PLAY* play) {
return (PLAYER_ACTOR*)&play->actor_info.list[ACTOR_PART_PLAYER].actor[0];
}
static int mPlib_check_DynamicLinkFile_m_player(void) {
return SubmenuArea_IsPlayer() != FALSE;
}
extern int mPlib_get_player_actor_main_index(GAME* game) {
return GET_PLAYER_ACTOR_GAME(game)->now_main_index;
}
extern int mPlib_get_player_actor_request_main_index(GAME* game) {
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game);
if (player->requested_main_index_changed) {
return player->requested_main_index;
}
return -1;
}
extern cKF_Skeleton_R_c cKF_bs_r_boy_1;
extern cKF_Skeleton_R_c cKF_bs_r_grl_1;
extern cKF_Skeleton_R_c* mPlib_get_player_mdl_p(void) {
if (Now_Private->gender == mPr_SEX_MALE) {
return &cKF_bs_r_boy_1;
} else {
return &cKF_bs_r_grl_1;
}
}
extern s16 mPlib_get_player_Object_Bank(void) {
if (Now_Private->gender == mPr_SEX_MALE) {
return ACTOR_OBJ_BANK_8;
} else {
return ACTOR_OBJ_BANK_51;
}
}
extern s8 BOY_part_data[][mPlayer_JOINT_NUM + 1];
extern void mPlib_DMA_player_Part_Table(s8* part_table_p, int idx) {
if (idx >= 0 && idx < mPlayer_PART_TABLE_NUM) {
bcopy(&BOY_part_data[idx], part_table_p, sizeof(BOY_part_data[idx]));
}
}
extern void mPlib_change_player_cloth_info(mPr_cloth_c* cloth_p, mActor_name_t item) {
cloth_p->item = item;
cloth_p->idx = ITEM_IS_CLOTH(item) ? (item - ITM_CLOTH_START) : 0;
}
extern void mPlib_change_player_cloth_info_lv2(Private_c* priv, mActor_name_t item) {
mPlib_change_player_cloth_info(&priv->cloth, item);
}
extern void mPlib_Load_PlayerTexAndPallet(void* tex_p, void* pal_p, int idx) {
if (idx >= 0 && idx < (CLOTH_NUM + 1 + mPr_ORIGINAL_DESIGN_COUNT) && tex_p != NULL && pal_p != NULL) {
u32 tex_rom_p = mPlib_Get_PlayerTexRom_p(idx);
u32 pal_rom_p = mPlib_Get_PlayerPalletRom_p(idx);
if (mPlib_Check_PlayerClothInAram(idx)) {
_JW_GetResourceAram(tex_rom_p, (u8*)tex_p, mNW_DESIGN_TEX_SIZE);
_JW_GetResourceAram(pal_rom_p, (u8*)pal_p, mNW_PALETTE_SIZE);
} else {
bcopy((u8*)tex_rom_p, tex_p, mNW_DESIGN_TEX_SIZE);
bcopy((u16*)pal_rom_p, pal_p, mNW_PALETTE_SIZE);
}
DCStoreRangeNoSync(tex_p, mNW_DESIGN_TEX_SIZE);
DCStoreRangeNoSync(pal_p, mNW_PALETTE_SIZE);
}
}
static mPlayer_change_data_from_submenu_c change_data_from_submenu;
extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p(void) {
return &change_data_from_submenu;
}
extern void mPlib_Clear_change_data_from_submenu(void) {
bzero(&change_data_from_submenu, sizeof(change_data_from_submenu));
}
extern void mPlib_request_main_give_from_submenu(mActor_name_t item, int after_mode, int present_flag,
int surface_flag) {
mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p();
mPlayer_request_give_c* req_give_p = &change_data_from_submenu_p->request_main_data.give;
change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_GIVE;
change_data_from_submenu_p->requested_index_pending = TRUE;
req_give_p->item = item;
req_give_p->mode = after_mode;
req_give_p->present_flag = present_flag;
req_give_p->on_surface_flag = surface_flag;
}
extern void mPlib_request_main_putin_scoop_from_submenu(const xyz_t* pos_p, mActor_name_t item, int gold_scoop_flag) {
mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p();
mPlayer_request_putin_scoop_c* req_putin_scoop_p = &change_data_from_submenu_p->request_main_data.putin_scoop;
change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_PUTIN_SCOOP;
change_data_from_submenu_p->requested_index_pending = TRUE;
req_putin_scoop_p->dig_pos = *pos_p;
req_putin_scoop_p->item = item;
req_putin_scoop_p->get_gold_scoop_flag = gold_scoop_flag;
}
extern void mPlib_request_main_release_creature_gyoei_from_submenu(s16 angle_y, s16 item, int gold_scoop_flag) {
mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p();
mPlayer_request_release_creature_c* req_release_creature_p =
&change_data_from_submenu_p->request_main_data.release_creature;
mPlayer_request_release_creature_gyoei_c* release_gyoei_p = &req_release_creature_p->data.gyoei;
change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_RELEASE_CREATURE;
change_data_from_submenu_p->requested_index_pending = TRUE;
req_release_creature_p->type = mPlayer_CREATURE_GYOEI;
req_release_creature_p->gold_scoop_flag = gold_scoop_flag;
release_gyoei_p->angle_y = angle_y;
release_gyoei_p->_02 = item;
}
extern void mPlib_request_main_release_creature_insect_from_submenu(int insect_type, int gold_scoop_flag) {
mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p();
mPlayer_request_release_creature_c* req_release_creature_p =
&change_data_from_submenu_p->request_main_data.release_creature;
mPlayer_request_release_creature_insect_c* release_insect_p = &req_release_creature_p->data.insect;
ACTOR* actorx = GET_PLAYER_ACTOR_NOW_ACTOR();
change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_RELEASE_CREATURE;
change_data_from_submenu_p->requested_index_pending = TRUE;
req_release_creature_p->type = mPlayer_CREATURE_INSECT;
req_release_creature_p->gold_scoop_flag = gold_scoop_flag;
release_insect_p->pos.x = actorx->world.position.x + 7.0f * sin_s(actorx->shape_info.rotation.y);
release_insect_p->pos.y = actorx->world.position.y + 13.0f;
release_insect_p->pos.z = actorx->world.position.z + 7.0f * cos_s(actorx->shape_info.rotation.y);
release_insect_p->type = insect_type;
}
extern s8 mPlib_Get_ItemNoToItemKind(mActor_name_t itemNo) {
switch (itemNo) {
case ITM_NET:
return mPlayer_ITEM_KIND_NET;
case ITM_GOLDEN_NET:
return mPlayer_ITEM_KIND_GOLD_NET;
case ITM_AXE:
return mPlayer_ITEM_KIND_AXE;
case ITM_AXE_USE_1:
return mPlayer_ITEM_KIND_AXE_USE_1;
case ITM_AXE_USE_2:
return mPlayer_ITEM_KIND_AXE_USE_2;
case ITM_AXE_USE_3:
return mPlayer_ITEM_KIND_AXE_USE_3;
case ITM_AXE_USE_4:
return mPlayer_ITEM_KIND_AXE_USE_4;
case ITM_AXE_USE_5:
return mPlayer_ITEM_KIND_AXE_USE_5;
case ITM_AXE_USE_6:
return mPlayer_ITEM_KIND_AXE_USE_6;
case ITM_AXE_USE_7:
return mPlayer_ITEM_KIND_AXE_USE_7;
case ITM_GOLDEN_AXE:
return mPlayer_ITEM_KIND_GOLD_AXE;
case ITM_UMBRELLA00:
return mPlayer_ITEM_KIND_UMBRELLA00;
case ITM_UMBRELLA01:
return mPlayer_ITEM_KIND_UMBRELLA01;
case ITM_UMBRELLA02:
return mPlayer_ITEM_KIND_UMBRELLA02;
case ITM_UMBRELLA03:
return mPlayer_ITEM_KIND_UMBRELLA03;
case ITM_UMBRELLA04:
return mPlayer_ITEM_KIND_UMBRELLA04;
case ITM_UMBRELLA05:
return mPlayer_ITEM_KIND_UMBRELLA05;
case ITM_UMBRELLA06:
return mPlayer_ITEM_KIND_UMBRELLA06;
case ITM_UMBRELLA07:
return mPlayer_ITEM_KIND_UMBRELLA07;
case ITM_UMBRELLA08:
return mPlayer_ITEM_KIND_UMBRELLA08;
case ITM_UMBRELLA09:
return mPlayer_ITEM_KIND_UMBRELLA09;
case ITM_UMBRELLA10:
return mPlayer_ITEM_KIND_UMBRELLA10;
case ITM_UMBRELLA11:
return mPlayer_ITEM_KIND_UMBRELLA11;
case ITM_UMBRELLA12:
return mPlayer_ITEM_KIND_UMBRELLA12;
case ITM_UMBRELLA13:
return mPlayer_ITEM_KIND_UMBRELLA13;
case ITM_UMBRELLA14:
return mPlayer_ITEM_KIND_UMBRELLA14;
case ITM_UMBRELLA15:
return mPlayer_ITEM_KIND_UMBRELLA15;
case ITM_UMBRELLA16:
return mPlayer_ITEM_KIND_UMBRELLA16;
case ITM_UMBRELLA17:
return mPlayer_ITEM_KIND_UMBRELLA17;
case ITM_UMBRELLA18:
return mPlayer_ITEM_KIND_UMBRELLA18;
case ITM_UMBRELLA19:
return mPlayer_ITEM_KIND_UMBRELLA19;
case ITM_UMBRELLA20:
return mPlayer_ITEM_KIND_UMBRELLA20;
case ITM_UMBRELLA21:
return mPlayer_ITEM_KIND_UMBRELLA21;
case ITM_UMBRELLA22:
return mPlayer_ITEM_KIND_UMBRELLA22;
case ITM_UMBRELLA23:
return mPlayer_ITEM_KIND_UMBRELLA23;
case ITM_UMBRELLA24:
return mPlayer_ITEM_KIND_UMBRELLA24;
case ITM_UMBRELLA25:
return mPlayer_ITEM_KIND_UMBRELLA25;
case ITM_UMBRELLA26:
return mPlayer_ITEM_KIND_UMBRELLA26;
case ITM_UMBRELLA27:
return mPlayer_ITEM_KIND_UMBRELLA27;
case ITM_UMBRELLA28:
return mPlayer_ITEM_KIND_UMBRELLA28;
case ITM_UMBRELLA29:
return mPlayer_ITEM_KIND_UMBRELLA29;
case ITM_UMBRELLA30:
return mPlayer_ITEM_KIND_UMBRELLA30;
case ITM_UMBRELLA31:
return mPlayer_ITEM_KIND_UMBRELLA31;
case ITM_MY_ORG_UMBRELLA0:
return mPlayer_ITEM_KIND_ORG_UMBRELLA00;
case ITM_MY_ORG_UMBRELLA1:
return mPlayer_ITEM_KIND_ORG_UMBRELLA01;
case ITM_MY_ORG_UMBRELLA2:
return mPlayer_ITEM_KIND_ORG_UMBRELLA02;
case ITM_MY_ORG_UMBRELLA3:
return mPlayer_ITEM_KIND_ORG_UMBRELLA03;
case ITM_MY_ORG_UMBRELLA4:
return mPlayer_ITEM_KIND_ORG_UMBRELLA04;
case ITM_MY_ORG_UMBRELLA5:
return mPlayer_ITEM_KIND_ORG_UMBRELLA05;
case ITM_MY_ORG_UMBRELLA6:
return mPlayer_ITEM_KIND_ORG_UMBRELLA06;
case ITM_MY_ORG_UMBRELLA7:
return mPlayer_ITEM_KIND_ORG_UMBRELLA07;
case ITM_ROD:
return mPlayer_ITEM_KIND_ROD;
case ITM_GOLDEN_ROD:
return mPlayer_ITEM_KIND_GOLD_ROD;
case ITM_SHOVEL:
return mPlayer_ITEM_KIND_SHOVEL;
case ITM_GOLDEN_SHOVEL:
return mPlayer_ITEM_KIND_GOLD_SHOVEL;
case ITM_RED_BALLOON:
return mPlayer_ITEM_KIND_RED_BALLOON;
case ITM_YELLOW_BALLOON:
return mPlayer_ITEM_KIND_YELLOW_BALLOON;
case ITM_BLUE_BALLOON:
return mPlayer_ITEM_KIND_BLUE_BALLOON;
case ITM_GREEN_BALLOON:
return mPlayer_ITEM_KIND_GREEN_BALLOON;
case ITM_PURPLE_BALLOON:
return mPlayer_ITEM_KIND_PURPLE_BALLOON;
case ITM_BUNNY_P_BALLOON:
return mPlayer_ITEM_KIND_BUNNY_P_BALLOON;
case ITM_BUNNY_B_BALLOON:
return mPlayer_ITEM_KIND_BUNNY_B_BALLOON;
case ITM_BUNNY_O_BALLOON:
return mPlayer_ITEM_KIND_BUNNY_O_BALLOON;
case ITM_YELLOW_PINWHEEL:
return mPlayer_ITEM_KIND_YELLOW_PINWHEEL;
case ITM_RED_PINWHEEL:
return mPlayer_ITEM_KIND_RED_PINWHEEL;
case ITM_TIGER_PINWHEEL:
return mPlayer_ITEM_KIND_TIGER_PINWHEEL;
case ITM_GREEN_PINWHEEL:
return mPlayer_ITEM_KIND_GREEN_PINWHEEL;
case ITM_PINK_PINWHEEL:
return mPlayer_ITEM_KIND_PINK_PINWHEEL;
case ITM_STRIPED_PINWHEEL:
return mPlayer_ITEM_KIND_STRIPED_PINWHEEL;
case ITM_FLOWER_PINWHEEL:
return mPlayer_ITEM_KIND_FLOWER_PINWHEEL;
case ITM_FANCY_PINWHEEL:
return mPlayer_ITEM_KIND_FANCY_PINWHEEL;
case ITM_BLUEBELL_FAN:
return mPlayer_ITEM_KIND_BLUEBELL_FAN;
case ITM_PLUM_FAN:
return mPlayer_ITEM_KIND_PLUM_FAN;
case ITM_BAMBOO_FAN:
return mPlayer_ITEM_KIND_BAMBOO_FAN;
case ITM_CLOUD_FAN:
return mPlayer_ITEM_KIND_CLOUD_FAN;
case ITM_MAPLE_FAN:
return mPlayer_ITEM_KIND_MAPLE_FAN;
case ITM_FAN_FAN:
return mPlayer_ITEM_KIND_FAN_FAN;
case ITM_FLOWER_FAN:
return mPlayer_ITEM_KIND_FLOWER_FAN;
case ITM_LEAF_FAN:
return mPlayer_ITEM_KIND_LEAF_FAN;
default:
return -1;
}
}
extern int mPlib_Get_ItemKindTOBalloonShapeType(int item_kind) {
if (mPlayer_ITEM_IS_BALLOON(item_kind) != FALSE) {
return item_kind - mPlayer_ITEM_KIND_RED_BALLOON;
}
return 0;
}
static int mPlib_Get_itemNOTOBalloonShapeType(mActor_name_t itemNo) {
return mPlib_Get_ItemKindTOBalloonShapeType(mPlib_Get_ItemNoToItemKind(itemNo));
}
extern void mPlib_request_main_release_creature_balloon_from_submenu(mActor_name_t itemNo, int gold_scoop_flag) {
mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p();
mPlayer_request_release_creature_c* req_release_creature_p =
&change_data_from_submenu_p->request_main_data.release_creature;
mPlayer_request_release_creature_balloon_c* release_balloon_p = &req_release_creature_p->data.balloon;
ACTOR* actorx = GET_PLAYER_ACTOR_NOW_ACTOR(); /* @unused */
change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_RELEASE_CREATURE;
change_data_from_submenu_p->requested_index_pending = TRUE;
req_release_creature_p->type = mPlayer_CREATURE_BALLOON;
req_release_creature_p->gold_scoop_flag = gold_scoop_flag;
release_balloon_p->balloon_type = mPlib_Get_itemNOTOBalloonShapeType(itemNo);
}
extern void mPlib_request_main_wait_from_submenu(void) {
mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p();
change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_WAIT;
change_data_from_submenu_p->requested_index_pending = TRUE;
}
extern void mPlib_request_main_demo_get_golden_item_from_submenu(void) {
mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p();
change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM;
change_data_from_submenu_p->requested_index_pending = TRUE;
}
extern void mPlib_request_main_mail_land_from_submenu(void) {
mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p();
change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_MAIL_LAND;
change_data_from_submenu_p->requested_index_pending = TRUE;
}
extern void mPlib_request_main_demo_wait_from_submenu(ACTOR* speak_actor_p) {
mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p();
mPlayer_request_demo_wait_c* req_demo_wait_p = &change_data_from_submenu_p->request_main_data.demo_wait;
change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_DEMO_WAIT;
change_data_from_submenu_p->requested_index_pending = TRUE;
req_demo_wait_p->umbrella_flag = FALSE;
req_demo_wait_p->label = (u32)speak_actor_p;
if (speak_actor_p != NULL) {
mPlib_Set_able_force_speak_label(speak_actor_p);
}
}
extern void mPlib_Set_unable_wade(int v) {
Common_Set(unable_wade, v);
}
extern int mPlib_Get_unable_wade(void) {
return Common_Get(unable_wade);
}
extern int mPlib_Check_able_force_speak_label(GAME* game, ACTOR* label) {
if (Common_Get(player_actor_exists) == FALSE) {
return FALSE;
}
return GET_PLAYER_ACTOR_GAME(game)->Check_able_force_speak_label_proc(game, label);
}
extern void mPlib_Set_able_force_speak_label(ACTOR* label) {
if (Common_Get(player_actor_exists)) {
GET_PLAYER_ACTOR_NOW()->able_force_speak_label = (u32)label;
}
}
extern void mPlib_Reset_able_force_speak_label(void) {
mPlib_Set_able_force_speak_label(NULL);
}
extern u8 ply_1_get_change12_tex_index[];
extern u8 ply_1_kokeru_a12_tex_index[];
extern u8 ply_1_kokeru_getup_a12_tex_index[];
extern u8 ply_1_kokeru_getup_n12_tex_index[];
extern u8 ply_1_kokeru_n12_tex_index[];
extern u8 ply_1_axe_swing12_tex_index[];
extern u8 ply_1_kokeru12_tex_index[];
extern u8 ply_1_kokeru_getup12_tex_index[];
extern u8 ply_1_axe_hane12_tex_index[];
extern u8 ply_1_axe_suka12_tex_index[];
extern u8 ply_1_get_t12_tex_index[];
extern u8 ply_1_menu_change12_tex_index[];
extern u8 ply_1_not_sao_swing12_tex_index[];
extern u8 ply_1_not_dig12_tex_index[];
extern u8 ply_1_dig_suka12_tex_index[];
extern u8 ply_1_shake12_tex_index[];
extern u8 ply_1_eat12_tex_index[];
extern u8 ply_1_gaaan12_tex_index[];
extern u8 ply_1_deru12_tex_index[];
extern u8 ply_1_guratuku12_tex_index[];
extern u8 ply_1_otiru12_tex_index[];
extern u8 ply_1_biku12_tex_index[];
extern u8 ply_1_hati12_tex_index[];
extern u8 ply_1_hati22_tex_index[];
extern u8 ply_1_hati32_tex_index[];
extern u8 ply_1_deru22_tex_index[];
extern u8 ply_1_otiru22_tex_index[];
extern u8 ply_1_itazura12_tex_index[];
extern u8 ply_1_yatta12_tex_index[];
extern u8 ply_1_yatta22_tex_index[];
extern u8 ply_1_yatta32_tex_index[];
extern u8 ply_1_mosquito12_tex_index[];
extern u8 ply_1_axe_break12_tex_index[];
extern u8* mPlib_Get_PlayerEyeTexAnimation_p(int anim_idx) {
if (anim_idx >= 0 && anim_idx < mPlayer_ANIM_NUM) {
static u8* const eye_tex_index_table[] = {
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
ply_1_get_change12_tex_index,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
ply_1_kokeru_a12_tex_index,
ply_1_kokeru_getup_a12_tex_index,
ply_1_kokeru_getup_n12_tex_index,
ply_1_kokeru_n12_tex_index,
NULL,
NULL,
ply_1_axe_swing12_tex_index,
NULL,
ply_1_kokeru12_tex_index,
ply_1_kokeru_getup12_tex_index,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
ply_1_axe_hane12_tex_index,
ply_1_axe_suka12_tex_index,
NULL,
NULL,
ply_1_get_t12_tex_index,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
ply_1_menu_change12_tex_index,
NULL,
ply_1_not_sao_swing12_tex_index,
NULL,
NULL,
NULL,
NULL,
ply_1_not_dig12_tex_index,
NULL,
NULL,
NULL,
NULL,
ply_1_dig_suka12_tex_index,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
ply_1_shake12_tex_index,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
ply_1_eat12_tex_index,
ply_1_gaaan12_tex_index,
NULL,
ply_1_deru12_tex_index,
ply_1_guratuku12_tex_index,
NULL,
ply_1_otiru12_tex_index,
NULL,
NULL,
ply_1_biku12_tex_index,
ply_1_hati12_tex_index,
ply_1_hati22_tex_index,
ply_1_hati32_tex_index,
NULL,
ply_1_deru22_tex_index,
ply_1_otiru22_tex_index,
ply_1_itazura12_tex_index,
NULL,
NULL,
ply_1_yatta12_tex_index,
ply_1_yatta22_tex_index,
ply_1_yatta32_tex_index,
NULL,
ply_1_mosquito12_tex_index,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
ply_1_axe_break12_tex_index,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
};
return eye_tex_index_table[anim_idx];
}
return NULL;
}
extern u8 ply_1_get_change11_tex_index[];
extern u8 ply_1_kokeru_a11_tex_index[];
extern u8 ply_1_kokeru_getup_a11_tex_index[];
extern u8 ply_1_kokeru_getup_n11_tex_index[];
extern u8 ply_1_kokeru_n11_tex_index[];
extern u8 ply_1_axe_swing11_tex_index[];
extern u8 ply_1_kokeru11_tex_index[];
extern u8 ply_1_kokeru_getup11_tex_index[];
extern u8 ply_1_axe_hane11_tex_index[];
extern u8 ply_1_axe_suka11_tex_index[];
extern u8 ply_1_get_t11_tex_index[];
extern u8 ply_1_get_t21_tex_index[];
extern u8 ply_1_not_get_t11_tex_index[];
extern u8 ply_1_menu_change11_tex_index[];
extern u8 ply_1_not_sao_swing11_tex_index[];
extern u8 ply_1_not_dig11_tex_index[];
extern u8 ply_1_dig_suka11_tex_index[];
extern u8 ply_1_eat11_tex_index[];
extern u8 ply_1_gaaan11_tex_index[];
extern u8 ply_1_deru11_tex_index[];
extern u8 ply_1_guratuku11_tex_index[];
extern u8 ply_1_mogaku11_tex_index[];
extern u8 ply_1_otiru11_tex_index[];
extern u8 ply_1_biku11_tex_index[];
extern u8 ply_1_hati11_tex_index[];
extern u8 ply_1_hati21_tex_index[];
extern u8 ply_1_hati31_tex_index[];
extern u8 ply_1_deru21_tex_index[];
extern u8 ply_1_otiru21_tex_index[];
extern u8 ply_1_itazura11_tex_index[];
extern u8 ply_1_yatta11_tex_index[];
extern u8 ply_1_yatta21_tex_index[];
extern u8 ply_1_yatta31_tex_index[];
extern u8 ply_1_mosquito11_tex_index[];
extern u8 ply_1_axe_break11_tex_index[];
extern u8* mPlib_Get_PlayerMouthTexAnimation_p(int anim_idx) {
if (anim_idx >= 0 && anim_idx < mPlayer_ANIM_NUM) {
static u8* const mouth_tex_index_table[] = {
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
ply_1_get_change11_tex_index,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
ply_1_kokeru_a11_tex_index,
ply_1_kokeru_getup_a11_tex_index,
ply_1_kokeru_getup_n11_tex_index,
ply_1_kokeru_n11_tex_index,
NULL,
NULL,
ply_1_axe_swing11_tex_index,
NULL,
ply_1_kokeru11_tex_index,
ply_1_kokeru_getup11_tex_index,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
ply_1_axe_hane11_tex_index,
ply_1_axe_suka11_tex_index,
NULL,
NULL,
ply_1_get_t11_tex_index,
ply_1_get_t21_tex_index,
NULL,
NULL,
NULL,
NULL,
NULL,
ply_1_not_get_t11_tex_index,
NULL,
ply_1_menu_change11_tex_index,
NULL,
ply_1_not_sao_swing11_tex_index,
NULL,
NULL,
NULL,
NULL,
ply_1_not_dig11_tex_index,
NULL,
NULL,
NULL,
NULL,
ply_1_dig_suka11_tex_index,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
ply_1_eat11_tex_index,
ply_1_gaaan11_tex_index,
NULL,
ply_1_deru11_tex_index,
ply_1_guratuku11_tex_index,
ply_1_mogaku11_tex_index,
ply_1_otiru11_tex_index,
NULL,
NULL,
ply_1_biku11_tex_index,
ply_1_hati11_tex_index,
ply_1_hati21_tex_index,
ply_1_hati31_tex_index,
NULL,
ply_1_deru21_tex_index,
ply_1_otiru21_tex_index,
ply_1_itazura11_tex_index,
NULL,
NULL,
ply_1_yatta11_tex_index,
ply_1_yatta21_tex_index,
ply_1_yatta31_tex_index,
NULL,
ply_1_mosquito11_tex_index,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
ply_1_axe_break11_tex_index,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
};
return mouth_tex_index_table[anim_idx];
}
return NULL;
}
extern u8* mPlib_Get_eye_tex_p(int idx) {
if (idx >= 0 && idx < mPlayer_EYE_TEX_NUM) {
u8* face_tex_p = mPlib_get_player_face_p(gamePT);
if (face_tex_p != NULL) {
return face_tex_p + idx * 0x100;
}
}
return NULL;
}
extern u8* mPlib_Get_mouth_tex_p(int idx) {
if (idx >= 0 && idx < mPlayer_MOUTH_TEX_NUM) {
u8* face_tex_p = mPlib_get_player_face_p(gamePT);
if (face_tex_p != NULL) {
face_tex_p += (mPlayer_EYE_TEX_NUM * 0x100) + idx * 0x100;
return face_tex_p;
}
}
return NULL;
}
extern int mPlib_request_main_invade_type1(GAME* game) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_invade_all_proc(game, mPlayer_REQUEST_PRIORITY_2);
}
extern int mPlib_request_main_refuse_type1(GAME* game) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_refuse_all_proc(game, mPlayer_REQUEST_PRIORITY_34);
}
extern int mPlib_request_main_wait_type3(GAME* game) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_return_demo_all_proc(game, mPlayer_INDEX_WAIT, 3.0f,
mPlayer_REQUEST_PRIORITY_19);
}
extern int mPlib_request_main_demo_get_golden_item2_type1(GAME* game, int golden_item_type) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_get_golden_item2_all_proc(game, golden_item_type,
mPlayer_REQUEST_PRIORITY_34);
}
extern int mPlib_request_main_talk_end_type1(GAME* game, int wait_demo, int demo_get_golden_axe) {
if (wait_demo == FALSE) {
if (demo_get_golden_axe == FALSE) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_return_demo_all_proc(game, mPlayer_INDEX_WAIT, 3.0f,
mPlayer_REQUEST_PRIORITY_19);
} else {
return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_get_golden_axe_wait_all_proc(
game, mPlayer_REQUEST_PRIORITY_33);
}
} else {
return mPlib_request_main_demo_wait_type1(game, FALSE, NULL);
}
}
extern int mPlib_request_main_talk_type1(GAME* game, ACTOR* talk_actor_p, int turn_flag, int umbrella_flag) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_talk_all_proc(game, talk_actor_p, turn_flag, -5.0f, umbrella_flag,
mPlayer_REQUEST_PRIORITY_19);
}
extern int mPlib_request_main_hold_type1(GAME* game, int ftr_no, int player_direct, const xyz_t* player_pos_p) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_hold_all_proc(game, ftr_no, player_direct, player_pos_p, -5.0f, 1,
mPlayer_REQUEST_PRIORITY_9);
}
extern int mPlib_request_main_recieve_wait_type1(GAME* game, mActor_name_t item, int counter_flag) {
GET_PLAYER_ACTOR_GAME(game)->request_main_recieve_wait_all_proc(
game, GET_PLAYER_ACTOR_GAME(game)->main_data.talk.talk_actor_p,
GET_PLAYER_ACTOR_GAME(game)->main_data.talk.turn_flag, GET_PLAYER_ACTOR_GAME(game)->now_main_index, item,
counter_flag, mPlayer_REQUEST_PRIORITY_19);
}
extern int mPlib_request_main_give_type1(GAME* game, mActor_name_t item, int mode, int present, int on_surface) {
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game);
int return_main_index = player->now_main_index;
ACTOR* talk_actor_p;
int turn_flag;
if (return_main_index == mPlayer_INDEX_TALK) {
talk_actor_p = player->main_data.talk.talk_actor_p;
turn_flag = player->main_data.talk.turn_flag;
} else {
talk_actor_p = NULL;
turn_flag = FALSE;
}
GET_PLAYER_ACTOR_GAME(game)->request_main_give_all_proc(game, talk_actor_p, turn_flag, return_main_index, item,
mode, present, on_surface, mPlayer_REQUEST_PRIORITY_19);
}
extern int mPlib_request_main_sitdown_type1(GAME* game, int direct, const xyz_t* pos_p, int ftr_no) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_sitdown_all_proc(game, direct, pos_p, ftr_no,
mPlayer_REQUEST_PRIORITY_2);
}
extern int mPlib_request_main_close_furniture_type1(GAME* game) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_close_furniture_all_proc(game, mPlayer_REQUEST_PRIORITY_23);
}
extern int mPlib_request_main_lie_bed_type1(GAME* game, int direct, const xyz_t* pos_p, int head_direct, int ftr_no) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_lie_bed_all_proc(game, direct, pos_p, head_direct, ftr_no,
mPlayer_REQUEST_PRIORITY_9);
}
extern int mPlib_request_main_hide_type1(GAME* game) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_hide_all_proc(game, mPlayer_REQUEST_PRIORITY_43);
}
extern int mPlib_request_main_groundhog_type1(GAME* game) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_groundhog_proc(game, mPlayer_REQUEST_PRIORITY_43);
}
extern int mPlib_request_main_door_type1(GAME* game, const xyz_t* pos_p, s16 angle_y, int door_type, void* door_label) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_door_all_proc(game, pos_p, angle_y, door_type, door_label,
mPlayer_REQUEST_PRIORITY_7) != FALSE;
}
extern int mPlib_request_main_door_type2(GAME* game, const xyz_t* pos_p, s16 angle_y, int door_type, void* door_label) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_door_all_proc(game, pos_p, angle_y, door_type, door_label,
mPlayer_REQUEST_PRIORITY_19);
}
extern int mPlib_request_main_outdoor_type1(GAME* game, int is_start_demo, int door_type) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_outdoor_all_proc(game, is_start_demo, door_type,
mPlayer_REQUEST_PRIORITY_43);
}
extern int mPlib_request_main_wash_car_type1(GAME* game, const xyz_t* car_pos_p, const xyz_t* ret_pos_p,
s16 ret_angle_y, ACTOR* ctrl_actor_p) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_wash_car_all_proc(game, car_pos_p, ret_pos_p, ret_angle_y,
ctrl_actor_p, mPlayer_REQUEST_PRIORITY_19);
}
extern int mPlib_request_main_rotate_octagon_type1(GAME* game, const xyz_t* pos_p, s16 angle_y) {
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_TALK) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_rotate_octagon_all_proc(
game, GET_PLAYER_ACTOR_GAME(game)->main_data.talk.talk_actor_p,
GET_PLAYER_ACTOR_GAME(game)->main_data.talk.turn_flag, GET_PLAYER_ACTOR_GAME(game)->now_main_index, pos_p,
angle_y, mPlayer_REQUEST_PRIORITY_19);
} else {
return GET_PLAYER_ACTOR_GAME(game)->request_main_rotate_octagon_all_proc(
game, NULL, FALSE, GET_PLAYER_ACTOR_GAME(game)->now_main_index, pos_p, angle_y,
mPlayer_REQUEST_PRIORITY_19);
}
}
extern int mPlib_request_main_throw_money_type1(GAME* game, const xyz_t* pos_p, s16 angle_y) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_throw_money_all_proc(game, pos_p, angle_y,
mPlayer_REQUEST_PRIORITY_19);
}
extern int mPlib_request_main_pray_type1(GAME* game, const xyz_t* pos_p, s16 angle_y) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_pray_all_proc(game, pos_p, angle_y, mPlayer_REQUEST_PRIORITY_19);
}
extern int mPlib_request_main_mail_jump_type1(GAME* game, const xyz_t* pos_p, s16 angle_y) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_mail_jump_all_proc(game, pos_p, angle_y,
mPlayer_REQUEST_PRIORITY_9);
}
extern int mPlib_request_main_stung_bee_type1(GAME* game) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_stung_bee_all_proc(game, mPlayer_REQUEST_PRIORITY_25);
}
extern int mPlib_request_main_stung_mosquito_type1(void* label) {
return GET_PLAYER_ACTOR_NOW()->request_main_stung_mosquito_all_proc(gamePT, label, mPlayer_REQUEST_PRIORITY_25);
}
extern int mPlib_request_main_switch_on_lighthouse_type1(GAME* game, const xyz_t* pos_p, s16 angle_y) {
return GET_PLAYER_ACTOR_NOW()->request_main_switch_on_lighthouse_all_proc(game, pos_p, angle_y,
mPlayer_REQUEST_PRIORITY_9);
}
extern int mPlib_request_main_demo_geton_boat_type1(f32 goal_x, f32 goal_z, s16 angleY) {
ACTOR* actorx = GET_PLAYER_ACTOR_NOW_ACTOR();
xyz_t goal_pos;
goal_pos.x = goal_x;
goal_pos.z = goal_z;
goal_pos.y = actorx->world.position.y;
return GET_PLAYER_ACTOR_NOW()->request_main_demo_geton_boat_all_proc(gamePT, &goal_pos, angleY,
mPlayer_REQUEST_PRIORITY_19);
}
extern int mPlib_request_main_demo_getoff_boat_standup_type1(const xyz_t* pos_p, s16 angleY) {
return GET_PLAYER_ACTOR_NOW()->request_main_demo_getoff_boat_standup_all_proc(gamePT, pos_p, angleY,
mPlayer_REQUEST_PRIORITY_19);
}
extern int mPlib_request_main_shock_type1(GAME* game, f32 time, s16 angle_y, int axe_swing) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_shock_all_proc(game, time, angle_y, FALSE, axe_swing,
mPlayer_REQUEST_PRIORITY_14);
}
extern int mPlib_request_main_change_cloth_forNPC_type1(GAME* game, mActor_name_t cloth_item, u16 cloth_idx,
int try_on_flag) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_change_cloth_forNPC_proc(game, cloth_item, cloth_idx, try_on_flag);
}
extern int mPlib_request_main_push_snowball_type1(GAME* game, void* label) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_push_snowball_all_proc(game, label, FALSE,
mPlayer_REQUEST_PRIORITY_2);
}
extern int mPlib_request_main_push_snowball_end_type1(GAME* game) {
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PUSH_SNOWBALL) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_wait_all_proc(game, -5.0f, 0.0f, 0,
mPlayer_REQUEST_PRIORITY_1);
}
return FALSE;
}
extern int mPlib_request_main_demo_wait_type1(GAME* game, int umbrella_flag, void* label) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_wait_all_proc(game, umbrella_flag, label,
mPlayer_REQUEST_PRIORITY_19);
}
extern int mPlib_request_main_demo_walk_type1(GAME* game, f32 goal_x, f32 goal_z, f32 speed, int wait_flag) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_walk_all_proc(game, goal_x, goal_z, speed, wait_flag,
mPlayer_REQUEST_PRIORITY_19);
}
extern int mPlib_request_main_demo_geton_train_type1(GAME* game, const xyz_t* pos_p) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_geton_train_all_proc(game, pos_p, DEG2SHORT_ANGLE2(180.0f),
mPlayer_REQUEST_PRIORITY_19);
}
extern int mPlib_request_main_demo_getoff_train_type1(GAME* game) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_getoff_train_all_proc(
game, &GET_PLAYER_ACTOR_GAME_ACTOR(game)->world.position,
GET_PLAYER_ACTOR_GAME_ACTOR(game)->shape_info.rotation.y, mPlayer_REQUEST_PRIORITY_19);
}
extern int mPlib_request_main_demo_standing_train_type1(GAME* game) {
return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_standing_train_all_proc(game, mPlayer_REQUEST_PRIORITY_19);
}
extern int mPlib_check_request_main_talk_type1_priority(GAME* game) {
int res = FALSE;
if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0) {
if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_TALK) == FALSE) {
if (mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_DEMO_WAIT &&
mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_DEMO_WALK &&
mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_TIRED &&
mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_TALK &&
mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_WASH_CAR &&
mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_DEMO_STANDING_TRAIN) {
res = TRUE;
}
}
}
return res;
}
extern int mPlib_check_request_main_speak_type1_priority(GAME* game) {
int res = FALSE;
if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0) {
if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_TALK) == FALSE) {
res = TRUE;
}
}
return res;
}
extern int mPlib_check_request_main_door_type1_priority(GAME* game) {
int res = FALSE;
if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_7) > 0) {
if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_DOOR) == FALSE) {
res = TRUE;
}
}
return res;
}
extern int mPlib_check_request_main_door_type2_priority(GAME* game) {
int res = FALSE;
if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0) {
if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_DOOR) == FALSE) {
res = TRUE;
}
}
return res;
}
extern int mPlib_check_request_main_wade_priority(GAME* game) {
int res;
if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_WADE_SNOWBALL) {
res = FALSE;
if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_2) > 0) {
if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_WADE_SNOWBALL) ==
FALSE) {
res = TRUE;
}
}
} else {
res = FALSE;
if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_2) > 0) {
if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_WADE) == FALSE) {
res = TRUE;
}
}
}
return res;
}
extern int mPlib_check_request_main_demo_wade_priority(GAME* game) {
int res = FALSE;
if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0) {
if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_DEMO_WADE) ==
FALSE) {
res = TRUE;
}
}
return res;
}
extern int mPlib_check_request_main_demo_geton_boat_wade_priority(GAME* game) {
int res = FALSE;
if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0) {
if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(
mPlayer_INDEX_DEMO_GETON_BOAT_WADE) == FALSE) {
res = TRUE;
}
}
return res;
}
static int mPlib_strength_request_main_index_priority(GAME* game, int priority) {
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game);
if (player->requested_main_index_priority < priority) {
player->requested_main_index_priority = priority;
return TRUE;
}
return FALSE;
}
extern int mPlib_strength_request_main_wade_priority(GAME* game) {
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WADE) {
return TRUE;
}
if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_WADE) {
mPlib_strength_request_main_index_priority(game, mPlayer_REQUEST_PRIORITY_19);
return TRUE;
}
return FALSE;
}
extern int mPlib_strength_request_main_demo_wade_priority(GAME* game) {
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_WADE) {
return TRUE;
}
if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_DEMO_WADE) {
mPlib_strength_request_main_index_priority(game, mPlayer_REQUEST_PRIORITY_19);
return TRUE;
}
return FALSE;
}
extern int mPlib_strength_request_main_wade_snowball_priority(GAME* game) {
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WADE_SNOWBALL) {
return TRUE;
}
if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_WADE_SNOWBALL) {
mPlib_strength_request_main_index_priority(game, mPlayer_REQUEST_PRIORITY_19);
return TRUE;
}
return FALSE;
}
extern int mPlib_strength_request_main_demo_geton_boat_wade_priority(GAME* game) {
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_GETON_BOAT_WADE) {
return TRUE;
}
if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_DEMO_GETON_BOAT_WADE) {
mPlib_strength_request_main_index_priority(game, mPlayer_REQUEST_PRIORITY_19);
return TRUE;
}
return FALSE;
}
extern int mPlib_strength_request_main_door_priority(GAME* game) {
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DOOR) {
return TRUE;
}
if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_DOOR) {
mPlib_strength_request_main_index_priority(game, mPlayer_REQUEST_PRIORITY_19);
return TRUE;
}
return FALSE;
}
extern int mPlib_check_request_main_outdoor_priority(GAME* game) {
return TRUE;
}
extern int mPlib_Check_SetOrderSubmenu(void) {
mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p();
return change_data_from_submenu_p->requested_index_pending != FALSE;
}
static int mPlib_check_request_change_item(void) {
int idx;
if (Common_Get(player_actor_exists) == FALSE) {
return TRUE;
}
if (mPlib_check_DynamicLinkFile_m_player() == FALSE) {
return TRUE;
}
idx = GET_PLAYER_ACTOR_GAME(gamePT)->check_request_change_item_proc(gamePT);
return mPlayer_MAIN_INDEX_VALID(idx);
}
static int mPlib_CheckScene_AbleSubmenu(void) {
if (Common_Get(player_actor_exists) == FALSE) {
return FALSE;
}
if (mPlib_check_DynamicLinkFile_m_player() == FALSE) {
return FALSE;
}
return GET_PLAYER_ACTOR_GAME(gamePT)->CheckScene_AbleSubmenu_proc();
}
extern int mPlib_able_submenu_type1(GAME* game) {
int res = FALSE;
if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0 &&
mPlib_Check_SetOrderSubmenu() == FALSE && mPlib_check_request_change_item() == FALSE &&
mPlib_check_player_warp_forEvent() == FALSE &&
GET_PLAYER_ACTOR_GAME(game)->able_submenu_request_main_index_proc(game) && mPlib_CheckScene_AbleSubmenu()) {
res = TRUE;
}
return res;
}
static int mPlib_check_priority_event_type1(GAME* game) {
return GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_17) > 0;
}
extern int mPlib_check_player_open_umbrella(GAME* game) {
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game);
if (player->umbrella_actor != NULL) {
UMBRELLA_ACTOR* umbrella_actor = (UMBRELLA_ACTOR*)player->umbrella_actor;
if (umbrella_actor->opened_fully) {
return TRUE;
}
}
return FALSE;
}
extern int mPlib_check_player_outdoor_start(GAME* game) {
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_OUTDOOR) {
mPlayer_main_outdoor_c* outdoor_p = &GET_PLAYER_ACTOR_GAME(game)->main_data.outdoor;
if (outdoor_p->is_demo) {
return TRUE;
}
}
return FALSE;
}
extern int mPlib_check_label_player_demo_wait(GAME* game, void* label) {
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_WAIT) {
mPlayer_main_demo_wait_c* demo_wait_p = &GET_PLAYER_ACTOR_GAME(game)->main_data.demo_wait;
if (demo_wait_p->label == (u32)label) {
return TRUE;
}
}
return FALSE;
}
extern void mPlib_Set_goal_player_demo_walk(f32 pos_x, f32 pos_z, f32 speed) {
mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 2, (int)pos_x);
mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 4, (int)pos_z);
mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 7, (int)(speed * 100.0f));
}
extern void mPlib_Get_goal_player_demo_walk(f32* pos_x_p, f32* pos_z_p, f32* speed_p) {
*pos_x_p = (f32)(int)mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 2);
*pos_z_p = (f32)(int)mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 4);
*speed_p = (f32)(int)mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 7) * 0.01f;
}
extern void mPlib_Set_continue_player_after_demo_walk(int value) {
mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 8, value);
}
extern int mPlib_Get_continue_player_after_demo_walk(void) {
return mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 8);
}
extern void mPlib_Set_end_player_demo_walk(int value) {
mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 9, value);
}
extern int mPlib_Get_end_player_demo_walk(void) {
return mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 9);
}
extern int mPlib_Get_space_putin_item(void) {
return mPr_GetPossessionItemIdxWithCond(Now_Private, EMPTY_NO, mPr_ITEM_COND_NORMAL);
}
extern int mPlib_Get_space_putin_item_forTICKET(mActor_name_t* item_p) {
mActor_name_t item = *item_p;
if (ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && ITEM_NAME_GET_CAT(item) == ITEM1_CAT_TICKET) {
int ticket_month = (item >> 3) & 0xF;
int ticket_count = 1 + (item & 7);
int ticket_begin = ITM_TICKET_START | (ticket_month << 3);
int ticket_end = ticket_begin + (5 - ticket_count);
int idx = mPr_GetPossessionItemIdxKindWithCond(Now_Private, ticket_begin, ticket_end, mPr_ITEM_COND_NORMAL);
if (idx >= 0) {
*item_p = Now_Private->inventory.pockets[idx] + ticket_count;
return idx;
}
} else if (ITEM_IS_PAPER(item)) {
int paper_base = item - ITM_PAPER_START;
int paper_type = PAPER2TYPE(paper_base);
int paper_num = PAPER2STACK(paper_base) + 1;
int i;
for (i = 4 - paper_num; i > 0; i--) {
mActor_name_t paper_item = ITM_PAPER_START + paper_type + (i - 1) * PAPER_UNIQUE_NUM;
int idx = mPr_GetPossessionItemIdxWithCond(Now_Private, paper_item, mPr_ITEM_COND_NORMAL);
if (idx != -1) {
*item_p = (mActor_name_t)(ITM_PAPER_START + paper_type + (i + paper_num - 1) * PAPER_UNIQUE_NUM);
return idx;
}
}
}
return mPlib_Get_space_putin_item();
}
extern int mPlib_Get_space_putin_item_forHITODAMA(mActor_name_t* item_p) {
mActor_name_t item = *item_p;
if (ITEM_IS_WISP(item)) {
int hitodama_count = ITEM_IS_WISP(item) ? (1 + (item - ITM_SPIRIT0)) : 0;
mActor_name_t hitodama_begin = ITM_SPIRIT0;
mActor_name_t hitodama_end = hitodama_begin + (5 - hitodama_count);
int idx = mPr_GetPossessionItemIdxKindWithCond(Now_Private, hitodama_begin, hitodama_end, mPr_ITEM_COND_NORMAL);
if (idx >= 0) {
*item_p = Now_Private->inventory.pockets[idx] + hitodama_count;
return idx;
}
}
return mPlib_Get_space_putin_item();
}
extern int mPlib_able_player_warp_forEvent(void) {
if (mPlib_check_DynamicLinkFile_m_player() == FALSE) {
return FALSE;
}
if (mPlib_check_player_warp_forEvent()) {
return FALSE;
}
if (mEv_CheckFirstIntro()) {
return FALSE;
}
if (Common_Get(player_actor_exists) == FALSE) {
return FALSE;
}
if (Common_Get(complete_payment_type) != mPlayer_COMPLETE_PAYMENT_TYPE_NONE) {
return FALSE;
}
if (Common_Get(fail_emu_flag) != FALSE) {
return FALSE;
}
if (mPlib_Check_SetOrderSubmenu()) {
return FALSE;
}
if (mPlib_check_request_change_item()) {
return FALSE;
}
if (mPlib_check_priority_event_type1(gamePT)) {
return GET_PLAYER_ACTOR_NOW()->check_cancel_event_without_priority_proc(gamePT) == FALSE;
}
if (mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_RELAX_ROD ||
mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_READY_NET ||
mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_READY_WALK_NET ||
mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_HOLD ||
mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_SITDOWN_WAIT ||
mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_WAIT_BED ||
mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_STRUGGLE_PITFALL) {
if (GET_PLAYER_ACTOR_NOW()->requested_main_index_changed == FALSE) {
return TRUE;
}
}
return FALSE;
}
extern int mPlib_request_player_warp_forEvent(void) {
Common_Set(player_warp_request, TRUE);
return TRUE;
}
extern int mPlib_cancel_player_warp_forEvent(void) {
Common_Set(player_warp_request, FALSE);
return TRUE;
}
extern int mPlib_check_player_warp_forEvent(void) {
return Common_Get(player_warp_request);
}
extern int mPlib_Check_HitAxe(xyz_t* pos_p) {
return GET_PLAYER_ACTOR_NOW()->Check_HitAxe_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p);
}
extern int mPlib_Check_VibUnit_OneFrame(const xyz_t* pos_p) {
return GET_PLAYER_ACTOR_NOW()->Check_VibUnit_OneFrame_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p);
}
extern int mPlib_Check_StopNet(xyz_t* pos_p) {
return GET_PLAYER_ACTOR_NOW()->Check_StopNet_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p);
}
extern u32 mPlib_Get_item_net_catch_label(void) {
return GET_PLAYER_ACTOR_NOW()->Get_item_net_catch_label_proc(GET_PLAYER_ACTOR_NOW_ACTOR());
}
extern int mPlib_Change_item_net_catch_label(u32 label, s8 type) {
return GET_PLAYER_ACTOR_NOW()->Change_item_net_catch_label_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), label, type);
}
extern int mPlib_Check_HitScoop(xyz_t* pos_p) {
return GET_PLAYER_ACTOR_NOW()->Check_HitScoop_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p);
}
extern int mPlib_Check_DigScoop(xyz_t* pos_p) {
return GET_PLAYER_ACTOR_NOW()->Check_DigScoop_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p);
}
extern int mPlib_Get_address_able_display(void) {
return GET_PLAYER_ACTOR_NOW()->address_able_display;
}
static ACTOR* mPlib_Search_exist_npc_inCircle_forScoop(GAME* game, const xyz_t* pos_p, f32 radius_sq) {
GAME_PLAY* play = (GAME_PLAY*)game;
Actor_info* actor_info = &play->actor_info;
Actor_list* npc_actor_list = &actor_info->list[ACTOR_PART_NPC];
ACTOR* actor = npc_actor_list->actor;
f32 pos_x = pos_p->x;
f32 pos_z = pos_p->z;
for (actor; actor != NULL; actor = actor->next_actor) {
f32 dx = actor->world.position.x - pos_x;
f32 dz = actor->world.position.z - pos_z;
if (Math3DVecLengthSquare2D(dx, dz) < radius_sq) {
NPC_ACTOR* npc_actor = (NPC_ACTOR*)actor;
if (npc_actor->condition_info.hide_flg == FALSE) {
return actor;
}
}
}
return NULL;
}
static ACTOR* mPlib_Search_exist_psnowman_inCircle_forScoop(GAME* game, const xyz_t* pos_p, f32 radius_sq) {
GAME_PLAY* play = (GAME_PLAY*)game;
Actor_info* actor_info = &play->actor_info;
Actor_list* bg_actor_list = &actor_info->list[ACTOR_PART_BG];
ACTOR* actor = bg_actor_list->actor;
f32 pos_x = pos_p->x;
f32 pos_z = pos_p->z;
for (actor; actor != NULL; actor = actor->next_actor) {
if (actor->id == mAc_PROFILE_PSNOWMAN) {
f32 dx = actor->world.position.x - pos_x;
f32 dz = actor->world.position.z - pos_z;
if (Math3DVecLengthSquare2D(dx, dz) < radius_sq) {
return actor;
}
}
}
return NULL;
}
static ACTOR* mPlib_Search_exist_snowball_forScoop(GAME* game, const xyz_t* pos_p) {
GAME_PLAY* play = (GAME_PLAY*)game;
Actor_info* actor_info = &play->actor_info;
Actor_list* bg_actor_list = &actor_info->list[ACTOR_PART_BG];
ACTOR* actor = bg_actor_list->actor;
f32 pos_x = pos_p->x;
f32 pos_y = pos_p->y;
f32 pos_z = pos_p->z;
for (actor; actor != NULL; actor = actor->next_actor) {
if (actor->id == mAc_PROFILE_SNOWMAN) {
SNOWMAN_ACTOR* snowball = (SNOWMAN_ACTOR*)actor;
f32 dy = actor->world.position.y - pos_y;
f32 abs_dy = ABS(dy);
f32 radius = MIN(10.0f + 20.0f * snowball->normalized_scale, 19.0f);
if (abs_dy <= 35.0f) {
f32 dx = actor->world.position.x - pos_x;
f32 dz = actor->world.position.z - pos_z;
f32 len;
f32 sq_radius;
radius += 19.0f;
len = Math3DVecLengthSquare2D(dx, dz);
sq_radius = SQ(radius);
if (len < sq_radius) {
return actor;
}
}
}
}
return NULL;
}
static ACTOR* mPlib_Search_exist_ball_forScoop(GAME* game, const xyz_t* pos_p) {
GAME_PLAY* play = (GAME_PLAY*)game;
Actor_info* actor_info = &play->actor_info;
Actor_list* bg_actor_list = &actor_info->list[ACTOR_PART_BG];
ACTOR* actor = bg_actor_list->actor;
f32 pos_x = pos_p->x;
f32 pos_y = pos_p->y;
f32 pos_z = pos_p->z;
for (actor; actor != NULL; actor = actor->next_actor) {
if (actor->id == mAc_PROFILE_BALL) {
f32 dy = actor->world.position.y - pos_y;
f32 abs_dy = ABS(dy);
if (abs_dy <= 20.0f) {
f32 dx = actor->world.position.x - pos_x;
f32 dz = actor->world.position.z - pos_z;
if (Math3DVecLengthSquare2D(dx, dz) < SQ(39.0f)) {
return actor;
}
}
}
}
return NULL;
}
extern int mPlib_Check_scoop_after(GAME* game, xyz_t* pos_p, mActor_name_t* item_p, ACTOR** reflect_actor_pp,
int gold_scoop) {
ACTOR* player_actor = GET_PLAYER_ACTOR_GAME_ACTOR(game);
xyz_t* player_pos_p = &player_actor->world.position;
int player_ux;
int player_uz;
int field_type = Common_Get(field_type);
if (reflect_actor_pp != NULL) {
*reflect_actor_pp = NULL;
}
*item_p = EMPTY_NO;
if (field_type == mFI_FIELDTYPE2_FG) {
if (mFI_Wpos2UtNum(&player_ux, &player_uz, *player_pos_p)) {
// clang-format off
static const int add_num[8][2] = {
{ -1, -1 },
{ 0, -1 },
{ 1, -1 },
{ -1, 0 },
// { 0, 0 }, <--- player pos
{ 1, 0 },
{ -1, 1 },
{ 0, 1 },
{ 1, 1 },
};
// clang-format on
xyz_t unit_pos[8];
int unit_num[8][2];
int unit_exist[8];
xyz_t center_ut_pos;
xyz_t unit_dist[8];
s16 unit_angle_y[8];
int unit_abs_diff_angle_y[8];
f32 player_pos_x = player_pos_p->x;
f32 player_pos_y = player_pos_p->y;
f32 player_pos_z = player_pos_p->z;
int idx = 0;
int min_angle_y;
int player_angle_y;
int i;
mFI_UtNum2CenterWpos(&center_ut_pos, player_ux, player_uz);
/* Get the center position for each surrounding unit and if it exists or not */
for (i = 0; i < 8; i++) {
unit_num[i][0] = player_ux + add_num[i][0];
unit_num[i][1] = player_uz + add_num[i][1];
unit_exist[i] = mFI_UtNum2CenterWpos(&unit_pos[i], unit_num[i][0], unit_num[i][1]);
unit_pos[i].y = player_pos_y;
if (unit_exist[i] == FALSE) {
unit_pos[i].x = center_ut_pos.x + unit_num[i][0] * mFI_UT_WORLDSIZE_X_F;
unit_pos[i].z = center_ut_pos.z + unit_num[i][1] * mFI_UT_WORLDSIZE_Z_F;
}
}
/* Calculate distance and angle to center of each surrounding unit */
for (i = 0; i < 8; i++) {
unit_dist[i].x = unit_pos[i].x - player_pos_x;
unit_dist[i].z = unit_pos[i].z - player_pos_z;
unit_angle_y[i] = atans_table(unit_dist[i].z, unit_dist[i].x);
}
player_angle_y = player_actor->shape_info.rotation.y;
min_angle_y = DEG2SHORT_ANGLE2(360.0f);
/* Find the closest unit in relation to player's rotation */
for (i = 0; i < 8; i++) {
int diff_angle_y = unit_angle_y[i] - player_angle_y;
unit_abs_diff_angle_y[i] = ABS(diff_angle_y);
if (unit_abs_diff_angle_y[i] > DEG2SHORT_ANGLE2(180.0f)) {
unit_abs_diff_angle_y[i] = DEG2SHORT_ANGLE2(360.0f) - unit_abs_diff_angle_y[i];
}
if (min_angle_y > unit_abs_diff_angle_y[i]) {
min_angle_y = unit_abs_diff_angle_y[i];
idx = i;
}
}
/* Special handling for diagonal units */
if (idx == 0 || idx == 2 || idx == 5 || idx == 7) {
int near_wall;
int too_far_away = FALSE;
int check_ut0;
int check_ut1;
int wall0 = FALSE;
int wall1 = FALSE;
f32 base_ut_y = mCoBG_GetBgY_OnlyCenter_FromWpos2(unit_pos[idx], 0.0f);
if (idx == 0) {
check_ut0 = 1;
check_ut1 = 3;
} else if (idx == 2) {
check_ut0 = 1;
check_ut1 = 4;
} else if (idx == 5) {
check_ut0 = 3;
check_ut1 = 6;
} else {
check_ut0 = 4;
check_ut1 = 6;
}
if (unit_exist[check_ut0]) {
f32 ground0 = mCoBG_GetBgY_OnlyCenter_FromWpos2(unit_pos[check_ut0], 0.0f);
f32 ground1 = mCoBG_Wpos2BgUtCenterHeight_AddColumn(unit_pos[check_ut0]);
/* If the base ground position and the 'column' height aren't the same, and our ground position is
* less than the 'column' height, there must be a wall in front of us. */
if (ground0 != ground1 && base_ut_y < ground1) {
wall0 = TRUE;
}
}
if (unit_exist[check_ut1]) {
f32 ground0 = mCoBG_GetBgY_OnlyCenter_FromWpos2(unit_pos[check_ut1], 0.0f);
f32 ground1 = mCoBG_Wpos2BgUtCenterHeight_AddColumn(unit_pos[check_ut1]);
/* If the base ground position and the 'column' height aren't the same, and our ground position is
* less than the 'column' height, there must be a wall in front of us. */
if (ground0 != ground1 && base_ut_y < ground1) {
wall1 = TRUE;
}
}
/* If both units diagonally have a wall then we've definitely hit a wall */
if (wall0 && wall1) {
near_wall = TRUE;
} else {
near_wall = FALSE;
}
if (near_wall == FALSE) {
f32 dist = Math3DVecLengthSquare2D(unit_dist[idx].z, unit_dist[idx].x);
if (SQ(63.245553f) > dist) {
too_far_away = FALSE;
} else {
too_far_away = TRUE;
}
}
if (too_far_away || near_wall) {
min_angle_y = DEG2SHORT_ANGLE2(360.0f);
if (min_angle_y > unit_abs_diff_angle_y[1]) {
min_angle_y = unit_abs_diff_angle_y[1];
idx = 1;
}
if (min_angle_y > unit_abs_diff_angle_y[3]) {
min_angle_y = unit_abs_diff_angle_y[3];
idx = 3;
}
if (min_angle_y > unit_abs_diff_angle_y[4]) {
min_angle_y = unit_abs_diff_angle_y[4];
idx = 4;
}
if (min_angle_y > unit_abs_diff_angle_y[6]) {
min_angle_y = unit_abs_diff_angle_y[6];
idx = 6;
}
}
}
if (unit_exist[idx] == FALSE) {
*pos_p = unit_pos[idx];
return mPlayer_INDEX_AIR_SCOOP;
} else {
mActor_name_t* scoop_fg_p = mFI_UtNum2UtFG(unit_num[idx][0], unit_num[idx][1]);
mActor_name_t scoop_fg = scoop_fg_p == NULL ? EMPTY_NO : *scoop_fg_p;
int is_stump;
int is_stone_tencoin;
int is_tree;
int is_rsv;
int is_special_scoop_item;
is_stump = FALSE;
is_stone_tencoin = FALSE;
is_tree = FALSE;
is_rsv = FALSE;
is_special_scoop_item = TRUE;
if (IS_ITEM_TREE_STUMP(scoop_fg) != FALSE) {
is_stump = TRUE;
} else if (IS_ITEM_STONE_TC(scoop_fg) != FALSE) {
is_stone_tencoin = TRUE;
} else if (IS_ITEM_HITTABLE_TREE(scoop_fg) != FALSE) {
is_tree = TRUE;
} else if (scoop_fg == DUMMY_RESERVE) {
is_rsv = TRUE;
} else {
is_special_scoop_item = FALSE;
}
{
f32 diff_col_y;
f32 diff_pos_y;
f32 tmp_y;
unit_pos[idx].y = mCoBG_Wpos2BgUtCenterHeight_AddColumn(unit_pos[idx]);
diff_col_y = unit_pos[idx].y - mCoBG_GetBgY_OnlyCenter_FromWpos2(unit_pos[idx], 0.0f);
diff_pos_y = unit_pos[idx].y - player_pos_p->y;
*pos_p = unit_pos[idx];
if (is_special_scoop_item && diff_pos_y > diff_col_y) {
return mPlayer_INDEX_REFLECT_SCOOP;
}
if (is_special_scoop_item && diff_pos_y < -diff_col_y) {
return mPlayer_INDEX_AIR_SCOOP;
}
if (!is_special_scoop_item && diff_pos_y > 63.245552f) {
return mPlayer_INDEX_REFLECT_SCOOP;
}
if (!is_special_scoop_item && diff_pos_y < -63.245552f) {
return mPlayer_INDEX_AIR_SCOOP;
}
if (is_stump || is_stone_tencoin || is_tree || is_rsv) {
pos_p->y = mCoBG_GetBgY_OnlyCenter_FromWpos2(*pos_p, 0.0f);
diff_pos_y = pos_p->y - player_pos_p->y;
}
{
xyz_t start_pos = *player_pos_p;
xyz_t end_pos = *pos_p;
xyz_t rev_pos;
xyz_t start2_pos = *player_pos_p;
xyz_t end2_pos = *pos_p;
xyz_t rev2_pos;
xyz_t rev3_pos;
xyz_t rev4_pos;
start_pos.y += 1.0f;
end_pos.y += 1.0f;
start2_pos.y -= 1.0f;
end2_pos.y -= 1.0f;
if (is_stump) {
mCoBG_LineCheck_RemoveFg(&rev_pos, start_pos, end_pos, &mNT_ItIsStump,
mCoBG_LINECHECK_CAT_WALL);
mCoBG_LineCheck_RemoveFg(&rev3_pos, end_pos, start_pos, &mNT_ItIsStump,
mCoBG_LINECHECK_CAT_WALL);
mCoBG_LineCheck_RemoveFg(&rev2_pos, start2_pos, end2_pos, &mNT_ItIsStump,
mCoBG_LINECHECK_CAT_WALL);
mCoBG_LineCheck_RemoveFg(&rev4_pos, end2_pos, start2_pos, &mNT_ItIsStump,
mCoBG_LINECHECK_CAT_WALL);
} else if (is_stone_tencoin) {
mCoBG_LineCheck_RemoveFg(&rev_pos, start_pos, end_pos, &mNT_ItIsStoneCoin10,
mCoBG_LINECHECK_CAT_WALL);
mCoBG_LineCheck_RemoveFg(&rev3_pos, end_pos, start_pos, &mNT_ItIsStoneCoin10,
mCoBG_LINECHECK_CAT_WALL);
mCoBG_LineCheck_RemoveFg(&rev2_pos, start2_pos, end2_pos, &mNT_ItIsStoneCoin10,
mCoBG_LINECHECK_CAT_WALL);
mCoBG_LineCheck_RemoveFg(&rev4_pos, end2_pos, start2_pos, &mNT_ItIsStoneCoin10,
mCoBG_LINECHECK_CAT_WALL);
} else if (is_rsv) {
mCoBG_LineCheck_RemoveFg(&rev_pos, start_pos, end_pos, &mNT_ItIsReserveDummy,
mCoBG_LINECHECK_CAT_WALL);
mCoBG_LineCheck_RemoveFg(&rev3_pos, end_pos, start_pos, &mNT_ItIsReserveDummy,
mCoBG_LINECHECK_CAT_WALL);
mCoBG_LineCheck_RemoveFg(&rev2_pos, start2_pos, end2_pos, &mNT_ItIsReserveDummy,
mCoBG_LINECHECK_CAT_WALL);
mCoBG_LineCheck_RemoveFg(&rev4_pos, end2_pos, start2_pos, &mNT_ItIsReserveDummy,
mCoBG_LINECHECK_CAT_WALL);
} else if (!is_tree) {
mCoBG_LineCheck_RemoveFg(&rev_pos, start_pos, end_pos, NULL, mCoBG_LINECHECK_CAT_WALL);
mCoBG_LineCheck_RemoveFg(&rev3_pos, end_pos, start_pos, NULL, mCoBG_LINECHECK_CAT_WALL);
mCoBG_LineCheck_RemoveFg(&rev2_pos, start2_pos, end2_pos, NULL, mCoBG_LINECHECK_CAT_WALL);
mCoBG_LineCheck_RemoveFg(&rev4_pos, end2_pos, start2_pos, NULL, mCoBG_LINECHECK_CAT_WALL);
}
if (!is_tree) {
if (((rev_pos.x != 0.0f || rev_pos.y != 0.0f || rev_pos.z != 0.0f) &&
(rev2_pos.x != 0.0f || rev2_pos.y != 0.0f || rev2_pos.z != 0.0f)) ||
((rev3_pos.x != 0.0f || rev3_pos.y != 0.0f || rev3_pos.z != 0.0f) &&
(rev4_pos.x != 0.0f || rev4_pos.y != 0.0f || rev4_pos.z != 0.0f))) {
if (diff_pos_y >= 0.0f) {
return mPlayer_INDEX_REFLECT_SCOOP;
} else {
return mPlayer_INDEX_AIR_SCOOP;
}
}
}
{
int dig_status;
int hit_flag = FALSE;
ACTOR* hit_actor_p;
mActor_name_t hit_item;
dig_status = mFI_GetDigStatus(&hit_item, *pos_p, gold_scoop);
/* Don't let the player hit NPCs with the shovel */
hit_actor_p = mPlib_Search_exist_npc_inCircle_forScoop(game, pos_p, SQ(39.0f));
if (hit_actor_p != NULL) {
return mPlayer_INDEX_AIR_SCOOP;
}
hit_actor_p = mPlib_Search_exist_psnowman_inCircle_forScoop(game, pos_p, SQ(39.0f));
if (hit_actor_p != NULL) {
hit_flag = TRUE;
}
if (hit_actor_p == NULL) {
hit_actor_p = mPlib_Search_exist_snowball_forScoop(game, pos_p);
if (hit_actor_p != NULL) {
hit_flag = TRUE;
}
}
if (hit_actor_p == NULL) {
hit_actor_p = mPlib_Search_exist_ball_forScoop(game, pos_p);
if (hit_actor_p != NULL) {
hit_flag = TRUE;
}
}
if (reflect_actor_pp != NULL) {
*reflect_actor_pp = hit_actor_p;
}
if (scoop_fg != hit_item) {
*item_p = hit_item;
} else {
*item_p = scoop_fg;
}
if (is_tree) {
return mPlayer_INDEX_REFLECT_SCOOP;
}
if (is_rsv) {
return mPlayer_INDEX_REFLECT_SCOOP;
}
switch (dig_status) {
case mFI_DIGSTATUS_FILLIN:
if (hit_flag) {
return mPlayer_INDEX_REFLECT_SCOOP;
} else if (is_stone_tencoin) {
return mPlayer_INDEX_REFLECT_SCOOP;
} else {
return mPlayer_INDEX_FILL_SCOOP;
}
break;
case mFI_DIGSTATUS_DIG:
case mFI_DIGSTATUS_PUT_ITEM:
if (hit_flag) {
return mPlayer_INDEX_REFLECT_SCOOP;
} else if (is_stone_tencoin) {
return mPlayer_INDEX_REFLECT_SCOOP;
} else {
return mPlayer_INDEX_DIG_SCOOP;
}
break;
case mFI_DIGSTATUS_GET_ITEM:
if (hit_flag) {
return mPlayer_INDEX_REFLECT_SCOOP;
} else if (is_stone_tencoin) {
return mPlayer_INDEX_REFLECT_SCOOP;
} else {
return mPlayer_INDEX_GET_SCOOP;
}
break;
case mFI_DIGSTATUS_MISS:
return mPlayer_INDEX_AIR_SCOOP;
default:
if (is_stone_tencoin) {
*item_p = scoop_fg;
}
return mPlayer_INDEX_REFLECT_SCOOP;
}
}
}
}
}
}
}
return -1;
}
extern int mPlib_Check_scene_able_change_camera_pos(void) {
if (mFI_CheckFieldData()) {
int field_type = mFI_GET_TYPE(mFI_GetFieldId());
return (field_type == mFI_FIELD_NPCROOM0 || field_type == mFI_FIELD_PLAYER0_ROOM ||
Save_Get(scene_no) == SCENE_MUSEUM_ROOM_FOSSIL || Save_Get(scene_no) == SCENE_MUSEUM_ROOM_PAINTING ||
Save_Get(scene_no) == SCENE_MUSEUM_ROOM_INSECT || Save_Get(scene_no) == SCENE_MUSEUM_ROOM_FISH);
}
return FALSE;
}
extern int mPlib_Check_RotateOctagon(void) {
return GET_PLAYER_ACTOR_NOW()->Check_RotateOctagon_proc(gamePT);
}
extern int mPlib_Set_EndWashCar(void) {
if (mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_WASH_CAR) {
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW();
mPlayer_main_wash_car_c* wash_car_p = &player->main_data.wash_car;
wash_car_p->ret_order = TRUE;
return TRUE;
}
return FALSE;
}
extern int mPlib_Set_AnimeSpeedWashCar(f32 anime_speed) {
if (mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_WASH_CAR) {
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW();
player->keyframe0.frame_control.speed = anime_speed;
player->keyframe1.frame_control.speed = anime_speed;
return TRUE;
}
return FALSE;
}
extern int mPlib_Check_now_handin_item_kind(void) {
return GET_PLAYER_ACTOR_NOW()->item_kind;
}
extern int mPlib_Check_now_handin_item(void) {
return GET_PLAYER_ACTOR_NOW()->item_kind >= 0;
}
extern void mPlib_Set_able_hand_all_item_in_demo(s8 v) {
GET_PLAYER_ACTOR_NOW()->able_hand_all_item_in_demo = v;
}
extern int mPlib_Get_status_for_bee(void) {
return GET_PLAYER_ACTOR_NOW()->Get_status_for_bee_proc(GET_PLAYER_ACTOR_NOW_ACTOR());
}
extern int mPlib_Check_end_stung_bee(void) {
return GET_PLAYER_ACTOR_NOW()->Check_end_stung_bee_proc(GET_PLAYER_ACTOR_NOW_ACTOR());
}
extern int mPlib_Check_Label_main_push_snowball(void* label) {
return GET_PLAYER_ACTOR_NOW()->Check_Label_main_push_snowball_proc(gamePT, label);
}
extern int mPlib_Check_Label_main_wade_snowball(void* label) {
return GET_PLAYER_ACTOR_NOW()->Check_Label_main_wade_snowball_proc(gamePT, label);
}
extern int mPlib_Set_ScrollDemo_forWade_snowball(int dir, const xyz_t* snowball_dist_p) {
return GET_PLAYER_ACTOR_NOW()->Set_ScrollDemo_forWade_snowball_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), dir,
snowball_dist_p);
}
extern int mPlib_GetSnowballPos_forWadeSnowball(xyz_t* pos_p) {
return GET_PLAYER_ACTOR_NOW()->GetSnowballPos_forWadeSnowball_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p);
}
extern int mPlib_CheckCondition_forWadeSnowball(const xyz_t* pos_p, s16 angle_y) {
return GET_PLAYER_ACTOR_NOW()->CheckCondition_forWadeSnowball_proc(gamePT, pos_p, angle_y);
}
extern int mPlib_SetParam_for_push_snowball(const xyz_t* pos_p, s16 angle_y, f32 anim_speed) {
return GET_PLAYER_ACTOR_NOW()->SetParam_for_push_snowball_proc(gamePT, pos_p, angle_y, anim_speed);
}
extern void mPlib_Set_crash_snowball_for_wade(int v) {
GET_PLAYER_ACTOR_NOW()->crash_snowball_for_wade = v;
}
static mPlayer_Controller_Data_c controller_data_for_title_demo;
extern mPlayer_Controller_Data_c* mPlib_Get_controller_data_for_title_demo_p(void) {
return &controller_data_for_title_demo;
}
extern void mPlib_Clear_controller_data_for_title_demo(void) {
bzero(&controller_data_for_title_demo, sizeof(controller_data_for_title_demo));
controller_data_for_title_demo.equipped_item = ITM_PAPER_START; /* @BUG - this should be a tool, not paper */
}
extern void mPlib_SetData1_controller_data_for_title_demo(int btn_a, int btn_b, f32 stick_x, f32 stick_y) {
mCon_calc(&controller_data_for_title_demo.mcon, stick_x, stick_y);
if (controller_data_for_title_demo.trigger_btn_a == FALSE && btn_a != FALSE) {
controller_data_for_title_demo.trigger_btn_a = TRUE;
} else {
controller_data_for_title_demo.trigger_btn_a = FALSE;
}
controller_data_for_title_demo.btn_a = btn_a;
if (controller_data_for_title_demo.trigger_btn_b == FALSE && btn_b != FALSE) {
controller_data_for_title_demo.trigger_btn_b = TRUE;
} else {
controller_data_for_title_demo.trigger_btn_b = FALSE;
}
controller_data_for_title_demo.btn_b = btn_b;
}
extern void mPlib_SetData2_controller_data_for_title_demo(mActor_name_t item) {
controller_data_for_title_demo.equipped_item = item;
}
extern int mPlib_Check_CorrectPlayerPos_forEvent(void) {
if (Common_Get(player_actor_exists)) {
int main_index = GET_PLAYER_ACTOR_NOW()->now_main_index;
if (mPlayer_MAIN_INDEX_VALID(main_index) != FALSE) {
// clang-format off
static const s8 data[] = {
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
TRUE,
TRUE,
TRUE,
TRUE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
TRUE,
TRUE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
FALSE,
};
// clang-format on
return data[main_index];
}
}
return FALSE;
}
extern int mPlib_Check_UKI_COMEBACK_STATUS(void) {
if (Common_Get(player_actor_exists)) {
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW();
if (player->fishing_rod_actor_p) {
UKI_ACTOR* uki_actor = (UKI_ACTOR*)player->fishing_rod_actor_p;
return uki_actor->status == aUKI_STATUS_COMEBACK;
}
}
return FALSE;
}
extern int mPlib_Check_tree_shaken(const xyz_t* pos_p) {
return GET_PLAYER_ACTOR_NOW()->Check_tree_shaken_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p);
}
extern int mPlib_Check_tree_shaken_little(const xyz_t* pos_p) {
return GET_PLAYER_ACTOR_NOW()->Check_tree_shaken_little_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p);
}
extern int mPlib_Check_tree_shaken_big(const xyz_t* pos_p) {
return GET_PLAYER_ACTOR_NOW()->Check_tree_shaken_big_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p);
}
extern mActor_name_t mPlib_Get_itemNo_forWindow(void) {
if (Common_Get(player_actor_exists) == FALSE) {
return EMPTY_NO;
}
if (SubmenuArea_IsPlayer() == FALSE) {
return EMPTY_NO;
}
return GET_PLAYER_ACTOR_NOW()->Get_itemNo_forWindow_proc(GET_PLAYER_ACTOR_NOW_ACTOR());
}
extern int mPlib_able_birth_bee(void) {
if (mEv_CheckFirstIntro() != FALSE || Common_Get(reset_flag) != FALSE ||
Common_Get(player_bee_chase_flag) != FALSE || mEv_CheckTitleDemo() > 0) {
return FALSE;
}
return TRUE;
}
extern int mPlib_check_able_change_camera_normal_index(void) {
if (Common_Get(player_actor_exists) == FALSE) {
return EMPTY_NO;
}
if (SubmenuArea_IsPlayer() == FALSE) {
return EMPTY_NO;
}
return GET_PLAYER_ACTOR_NOW()->check_able_change_camera_normal_index_proc(GET_PLAYER_ACTOR_NOW_ACTOR());
}
extern int mPlib_check_player_actor_main_index_Furniture_Move(GAME* game) {
int res = FALSE;
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PUSH ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PULL) {
res = TRUE;
}
return res;
}
extern int mPlib_check_player_actor_main_index_RecieveMove(GAME* game) {
int res = FALSE;
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RECIEVE_WAIT ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RECIEVE_STRETCH ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RECIEVE ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RECIEVE_PUTAWAY) {
res = TRUE;
}
return res;
}
extern int mPlib_check_player_actor_main_index_Pitfall(GAME* game) {
int res = FALSE;
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_READY_PITFALL ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_FALL_PITFALL ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_STRUGGLE_PITFALL ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_CLIMBUP_PITFALL) {
res = TRUE;
}
return res;
}
extern int mPlib_check_player_actor_main_index_OutDoorMove(GAME* game) {
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DMA ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_INTRO ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_OUTDOOR ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_COMPLETE_PAYMENT ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RETURN_OUTDOOR ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RETURN_OUTDOOR2 ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_TAKEOUT_ITEM) {
return TRUE;
}
return FALSE;
}
extern int mPlib_check_player_actor_main_index_OutDoorMove2(GAME* game) {
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DMA ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_INTRO ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_OUTDOOR ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RETURN_OUTDOOR ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_COMPLETE_PAYMENT ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_TAKEOUT_ITEM) {
return TRUE;
}
return FALSE;
}
extern int mPlib_check_player_actor_main_index_AllWade(GAME* game) {
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WADE ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_WADE ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WADE_SNOWBALL ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_GETON_BOAT_WADE) {
return TRUE;
}
return FALSE;
}
extern int mPlib_check_player_actor_main_index_catch_insect(GAME* game) {
return (mPlib_Get_item_net_catch_label() != 0 &&
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_SWING_NET) ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PULL_NET ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_NOTICE_NET ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PUTAWAY_NET;
}
extern int mPlib_check_player_actor_main_index_catch_fish(GAME* game) {
return mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_FLY_ROD ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_NOTICE_ROD ||
mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PUTAWAY_ROD;
}
extern int mPlib_check_player_actor_start_switch_on_lighthouse(GAME* game) {
if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_SWITCH_ON_LIGHTHOUSE &&
GET_PLAYER_ACTOR_GAME(game)->keyframe0.frame_control.current_frame > 1.0f) {
return TRUE;
}
return FALSE;
}
extern int mPlib_Check_stung_mosquito(void* label) {
return GET_PLAYER_ACTOR_NOW()->Check_stung_mosquito_proc(gamePT, label);
}
extern void mPlib_Set_boat_angleZ(s16 angle_z) {
GET_PLAYER_ACTOR_NOW()->boat_angleZ = angle_z;
}
extern int mPlib_CheckButtonOnly_forDush(void) {
return chkButton(BUTTON_B) || chkButton(BUTTON_L) || chkButton(BUTTON_R);
}
extern int mPlib_Check_golden_item_get_demo_end(int gold_item_type) {
static u8 data[] = {
(1 << mPlayer_GOLDEN_ITEM_TYPE_AXE),
(1 << mPlayer_GOLDEN_ITEM_TYPE_NET),
(1 << mPlayer_GOLDEN_ITEM_TYPE_ROD),
(1 << mPlayer_GOLDEN_ITEM_TYPE_SHOVEL),
};
return data[gold_item_type] & Now_Private->golden_items_collected;
}
extern void mPlib_Set_change_color_request(void) {
PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW();
player->change_color_request = TRUE;
}