diff --git a/include/m_inventory_ovl.h b/include/m_inventory_ovl.h index 8d316922..856a7c8c 100644 --- a/include/m_inventory_ovl.h +++ b/include/m_inventory_ovl.h @@ -13,6 +13,36 @@ extern "C" { #define mIV_PLAYER_JOINT_NUM 27 #define mIV_ITEM_JOINT_NUM 8 +#define mIV_PLAYER_EFFECT_NUM 20 + +enum { + mIV_ITEM_SCALE_TYPE_NONE, + mIV_ITEM_SCALE_TYPE_SHRINK, + mIV_ITEM_SCALE_TYPE_GROW, + mIV_ITEM_SCALE_TYPE_GROW_FAST, + mIV_ITEM_SCALE_TYPE_GROW_FASTEST, + mIV_ITEM_SCALE_TYPE_PRESENT, + + mIV_ITEM_SCALE_TYPE_NUM +}; + +enum { + mIV_PAGE_FISH_COLLECTION, + mIV_PAGE_INVENTORY, + mIV_PAGE_INSECT_COLLECTION, + mIV_PAGE_ORIGINAL_DESIGNS, + + mIV_PAGE_NUM +}; + +typedef struct inventory_effect_s { + int timer; + xyz_t pos; + f32 scale; + f32 speed; +} mIV_pl_eff_c; + +typedef mActor_name_t (*mIV_SET_COLLECT_ITEMNO_PROC)(int, int); /* sizeof (struct inventory_ovl_s) == 0x5EC */ struct inventory_ovl_s { @@ -42,8 +72,19 @@ struct inventory_ovl_s { u8 release_flag; u8 food_idx; - - u8 _3E3[0x5EC - 0x3E3]; + u8 item_scale_type[mPr_POCKETS_SLOT_COUNT]; + u8 page_order[mIV_PAGE_NUM]; + s16 page_move_timer; + s16 remove_timer; + mIV_pl_eff_c pl_eff[mIV_PLAYER_EFFECT_NUM]; + mIV_SET_COLLECT_ITEMNO_PROC set_collect_itemNo_proc; + u16 item_mark_bitfield; + u16 _5E2; + s16 _5E4; + u8 _5E6[2]; + u16 mail_mark_bitfield; + u8 original_flag; + u8 wc_flag; }; extern void mIV_inventory_ovl_construct(Submenu* submenu); diff --git a/include/m_player.h b/include/m_player.h index 21d4ee79..f492dbab 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -155,6 +155,321 @@ enum { mPlayer_INDEX_DEMO_GET_GOLDEN_AXE_WAIT }; +enum { + mPlayer_ANIM_WAIT1, + mPlayer_ANIM_WALK1, + mPlayer_ANIM_AXE1, + mPlayer_ANIM_RUN1, + mPlayer_ANIM_PUSH1, + mPlayer_ANIM_PULL1, + mPlayer_ANIM_HOLD_WAIT1, + mPlayer_ANIM_PICKUP1, + mPlayer_ANIM_LTURN1, + mPlayer_ANIM_RTURN1, + mPlayer_ANIM_GET1, + mPlayer_ANIM_GET_CHANGE1, + mPlayer_ANIM_GET_PUTAWAY1, + mPlayer_ANIM_OPEN1, + mPlayer_ANIM_PUTAWAY1, + mPlayer_ANIM_TRANS_WAIT1, + mPlayer_ANIM_TRANSFER1, + mPlayer_ANIM_UMB_OPEN1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_DASH1, + mPlayer_ANIM_RUN_SLIP1, + mPlayer_ANIM_GET_PULL1, + mPlayer_ANIM_GET_M1, + mPlayer_ANIM_KAMAE_MOVE_M1, + mPlayer_ANIM_KAMAE_WAIT_M1, + mPlayer_ANIM_KOKERU_A1, + mPlayer_ANIM_KOKERU_GETUP_A1, + mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_NET1, + mPlayer_ANIM_NET_SWING1, + mPlayer_ANIM_AXE_SWING1, + mPlayer_ANIM_KAMAE_SLIP_M1, + mPlayer_ANIM_KOKERU1, + mPlayer_ANIM_KOKERU_GETUP1, + mPlayer_ANIM_SITDOWN1, + mPlayer_ANIM_SITDOWN_WAIT1, + mPlayer_ANIM_STANDUP1, + mPlayer_ANIM_PUTAWAY_M1, + mPlayer_ANIM_BED_WAIT1, + mPlayer_ANIM_INBED_L1, + mPlayer_ANIM_INBED_R1, + mPlayer_ANIM_INTRAIN1, + mPlayer_ANIM_KAGU_OPEN_D1, + mPlayer_ANIM_KAGU_OPEN_H1, + mPlayer_ANIM_KAGU_OPEN_K1, + mPlayer_ANIM_NEGAERI_L1, + mPlayer_ANIM_NEGAERI_R1, + mPlayer_ANIM_OUTBED_L1, + mPlayer_ANIM_OUTBED_R1, + mPlayer_ANIM_OUTTRAIN1, + mPlayer_ANIM_KAGU_CLOSE_D1, + mPlayer_ANIM_KAGU_CLOSE_H1, + mPlayer_ANIM_KAGU_CLOSE_K1, + mPlayer_ANIM_KAGU_WAIT_D1, + mPlayer_ANIM_KAGU_WAIT_H1, + mPlayer_ANIM_KAGU_WAIT_K1, + mPlayer_ANIM_GO_OUT_O1, + mPlayer_ANIM_GO_OUT_S1, + mPlayer_ANIM_INTO_S1, + mPlayer_ANIM_AXE_HANE1, + mPlayer_ANIM_AXE_SUKA1, + mPlayer_ANIM_HOLD_WAIT_H1, + mPlayer_ANIM_HOLD_WAIT_O1, + mPlayer_ANIM_GET_T1, + mPlayer_ANIM_GET_T2, + mPlayer_ANIM_PUTAWAY_T1, + mPlayer_ANIM_SAO1, + mPlayer_ANIM_SAO_SWING1, + mPlayer_ANIM_TURI_HIKI1, + mPlayer_ANIM_TURI_WAIT1, + mPlayer_ANIM_NOT_GET_T1, + mPlayer_ANIM_MENU_CATCH1, + mPlayer_ANIM_MENU_CHANGE1, + mPlayer_ANIM_UMB_CLOSE1, + mPlayer_ANIM_NOT_SAO_SWING1, + mPlayer_ANIM_INTRAIN_WAIT1, + mPlayer_ANIM_CLEAR_TABLE1, + mPlayer_ANIM_DIG1, + mPlayer_ANIM_FILL_UP1, + mPlayer_ANIM_NOT_DIG1, + mPlayer_ANIM_CLEAR_TABLE_L1, + mPlayer_ANIM_PICKUP_L1, + mPlayer_ANIM_SCOOP1, + mPlayer_ANIM_CONFIRM1, + mPlayer_ANIM_DIG_SUKA1, + mPlayer_ANIM_GET_D1, + mPlayer_ANIM_PUTAWAY_D1, + mPlayer_ANIM_DIG_KABU1, + mPlayer_ANIM_FILL_UP_I1, + mPlayer_ANIM_SEND_MAIL1, + mPlayer_ANIM_GET_F1, + mPlayer_ANIM_GET_PULL_F1, + mPlayer_ANIM_GET_PUTAWAY_F1, + mPlayer_ANIM_TRANS_WAIT_F1, + mPlayer_ANIM_TRANSFER_F1, + mPlayer_ANIM_SHAKE1, + mPlayer_ANIM_TIRED1, + mPlayer_ANIM_WASH1, + mPlayer_ANIM_WASH2, + mPlayer_ANIM_WASH3, + mPlayer_ANIM_WASH4, + mPlayer_ANIM_WASH5, + mPlayer_ANIM_FUKUBIKI1, + mPlayer_ANIM_OMAIRI1, + mPlayer_ANIM_SAISEN1, + mPlayer_ANIM_RETURN_MAIL1, + mPlayer_ANIM_RETURN_MAIL2, + mPlayer_ANIM_RETURN_MAIL3, + mPlayer_ANIM_EAT1, + mPlayer_ANIM_GAAAN1, + mPlayer_ANIM_GAAAN2, + mPlayer_ANIM_DERU1, + mPlayer_ANIM_GURATUKU1, + mPlayer_ANIM_MOGAKU1, + mPlayer_ANIM_OTIRU1, + mPlayer_ANIM_ZASSOU1, + mPlayer_ANIM_KNOCK1, + mPlayer_ANIM_BIKU1, + mPlayer_ANIM_HATI1, + mPlayer_ANIM_HATI2, + mPlayer_ANIM_HATI3, + mPlayer_ANIM_PUSH_YUKI1, + mPlayer_ANIM_DERU2, + mPlayer_ANIM_OTIRU2, + mPlayer_ANIM_ITAZURA1, + mPlayer_ANIM_UMB_ROT1, + mPlayer_ANIM_PICKUP_WAIT1, + mPlayer_ANIM_YATTA1, + mPlayer_ANIM_YATTA2, + mPlayer_ANIM_YATTA3, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_MOSQUITO1, + mPlayer_ANIM_MOSQUITO2, + mPlayer_ANIM_RIDE1, + mPlayer_ANIM_RIDE2, + mPlayer_ANIM_RIDEWAIT, + mPlayer_ANIM_GETOFF1, + mPlayer_ANIM_GETOFF2, + mPlayer_ANIM_UTIWA_WAIT1, + mPlayer_ANIM_UTIWA_D1, + mPlayer_ANIM_AXE_BREAK1, + mPlayer_ANIM_AXE_BREAKWAIT1, + mPlayer_ANIM_LIGHT_ON1, + mPlayer_ANIM_TAISOU1, + mPlayer_ANIM_TAISOU2_1, + mPlayer_ANIM_TAISOU2_2, + mPlayer_ANIM_TAISOU3, + mPlayer_ANIM_TAISOU4_1, + mPlayer_ANIM_TAISOU4_2, + mPlayer_ANIM_TAISOU5_1, + mPlayer_ANIM_TAISOU5_2, + mPlayer_ANIM_TAISOU6_1, + mPlayer_ANIM_TAISOU6_2, + mPlayer_ANIM_TAISOU7_1, + mPlayer_ANIM_TAISOU7_2, + mPlayer_ANIM_OMAIRI_US1, + + mPlayer_ANIM_NUM +}; + +enum { + mPlayer_ITEM_KIND_AXE, + mPlayer_ITEM_KIND_AXE_USE_1, + mPlayer_ITEM_KIND_AXE_USE_2, + mPlayer_ITEM_KIND_AXE_USE_3, + mPlayer_ITEM_KIND_AXE_USE_4, + mPlayer_ITEM_KIND_AXE_USE_5, + mPlayer_ITEM_KIND_AXE_USE_6, + mPlayer_ITEM_KIND_AXE_USE_7, + mPlayer_ITEM_KIND_GOLD_AXE, + + mPlayer_ITEM_KIND_NET, + mPlayer_ITEM_KIND_GOLD_NET, + + mPlayer_ITEM_KIND_UMBRELLA00, + mPlayer_ITEM_KIND_UMBRELLA01, + mPlayer_ITEM_KIND_UMBRELLA02, + mPlayer_ITEM_KIND_UMBRELLA03, + mPlayer_ITEM_KIND_UMBRELLA04, + mPlayer_ITEM_KIND_UMBRELLA05, + mPlayer_ITEM_KIND_UMBRELLA06, + mPlayer_ITEM_KIND_UMBRELLA07, + mPlayer_ITEM_KIND_UMBRELLA08, + mPlayer_ITEM_KIND_UMBRELLA09, + mPlayer_ITEM_KIND_UMBRELLA10, + mPlayer_ITEM_KIND_UMBRELLA11, + mPlayer_ITEM_KIND_UMBRELLA12, + mPlayer_ITEM_KIND_UMBRELLA13, + mPlayer_ITEM_KIND_UMBRELLA14, + mPlayer_ITEM_KIND_UMBRELLA15, + mPlayer_ITEM_KIND_UMBRELLA16, + mPlayer_ITEM_KIND_UMBRELLA17, + mPlayer_ITEM_KIND_UMBRELLA18, + mPlayer_ITEM_KIND_UMBRELLA19, + mPlayer_ITEM_KIND_UMBRELLA20, + mPlayer_ITEM_KIND_UMBRELLA21, + mPlayer_ITEM_KIND_UMBRELLA22, + mPlayer_ITEM_KIND_UMBRELLA23, + mPlayer_ITEM_KIND_UMBRELLA24, + mPlayer_ITEM_KIND_UMBRELLA25, + mPlayer_ITEM_KIND_UMBRELLA26, + mPlayer_ITEM_KIND_UMBRELLA27, + mPlayer_ITEM_KIND_UMBRELLA28, + mPlayer_ITEM_KIND_UMBRELLA29, + mPlayer_ITEM_KIND_UMBRELLA30, + mPlayer_ITEM_KIND_UMBRELLA31, + + mPlayer_ITEM_KIND_ORG_UMBRELLA01, + mPlayer_ITEM_KIND_ORG_UMBRELLA02, + mPlayer_ITEM_KIND_ORG_UMBRELLA03, + mPlayer_ITEM_KIND_ORG_UMBRELLA04, + mPlayer_ITEM_KIND_ORG_UMBRELLA05, + mPlayer_ITEM_KIND_ORG_UMBRELLA06, + mPlayer_ITEM_KIND_ORG_UMBRELLA07, + mPlayer_ITEM_KIND_ORG_UMBRELLA08, + + mPlayer_ITEM_KIND_ROD, + mPlayer_ITEM_KIND_GOLD_ROD, + + mPlayer_ITEM_KIND_SHOVEL, + mPlayer_ITEM_KIND_GOLD_SHOVEL, + + mPlayer_ITEM_KIND_RED_BALLOON, + mPlayer_ITEM_KIND_YELLOW_BALLOON, + mPlayer_ITEM_KIND_BLUE_BALLOON, + mPlayer_ITEM_KIND_GREEN_BALLOON, + mPlayer_ITEM_KIND_PURPLE_BALLOON, + mPlayer_ITEM_KIND_BUNNY_P_BALLOON, + mPlayer_ITEM_KIND_BUNNY_B_BALLOON, + mPlayer_ITEM_KIND_BUNNY_O_BALLOON, + + mPlayer_ITEM_KIND_YELLOW_PINWHEEL, + mPlayer_ITEM_KIND_RED_PINWHEEL, + mPlayer_ITEM_KIND_TIGER_PINWHEEL, + mPlayer_ITEM_KIND_GREEN_PINWHEEL, + mPlayer_ITEM_KIND_PINK_PINWHEEL, + mPlayer_ITEM_KIND_STRIPED_PINWHEEL, + mPlayer_ITEM_KIND_FLOWER_PINWHEEL, + mPlayer_ITEM_KIND_FANCY_PINWHEEL, + + mPlayer_ITEM_KIND_BLUEBELL_FAN, + mPlayer_ITEM_KIND_PLUM_FAN, + mPlayer_ITEM_KIND_BAMBOO_FAN, + mPlayer_ITEM_KIND_CLOUD_FAN, + mPlayer_ITEM_KIND_MAPLE_FAN, + mPlayer_ITEM_KIND_FAN_FAN, + mPlayer_ITEM_KIND_FLOWER_FAN, + mPlayer_ITEM_KIND_LEAF_FAN, + + mPlayer_ITEM_KIND_NUM /* Are there more? */ +}; + +enum { + mPlayer_ITEM_DATA_AXE, // model + mPlayer_ITEM_DATA_AXE_B, // model + mPlayer_ITEM_DATA_AXE_C, // model + mPlayer_ITEM_DATA_GOLD_AXE, // model + + mPlayer_ITEM_DATA_NET, // skeleton + mPlayer_ITEM_DATA_GOLD_NET, // skeleton + mPlayer_ITEM_DATA_NET_GET_M, // animation + mPlayer_ITEM_DATA_NET_SWING, // animation + mPlayer_ITEM_DATA_KAMAE_MAIN_M, // animation + mPlayer_ITEM_DATA_KOKERU_GETUP_N, // animation + mPlayer_ITEM_DATA_KOKERU_N, // animation + mPlayer_ITEM_DATA_SWING_WAIT, // animation + mPlayer_ITEM_DATA_YATTA_M, // animation + + mPlayer_ITEM_DATA_ROD, // skeleton + mPlayer_ITEM_DATA_GOLD_ROD, // skeleton + mPlayer_ITEM_DATA_ROD_GET_T, // animation + mPlayer_ITEM_DATA_ROD_MOVE, // animation + mPlayer_ITEM_DATA_ROD_SINARI, // animation + mPlayer_ITEM_DATA_ROD_SWING, // animation + mPlayer_ITEM_DATA_ROD_WAIT, // animation + mPlayer_ITEM_DATA_ROD_NOT_SWING, // animation + + mPlayer_ITEM_DATA_SHOVEL, // model + mPlayer_ITEM_DATA_GOLD_SHOVEL, // model + + mPlayer_ITEM_DATA_BALLOON1, // skeleton + mPlayer_ITEM_DATA_BALLOON2, // skeleton + mPlayer_ITEM_DATA_BALLOON3, // skeleton + mPlayer_ITEM_DATA_BALLOON4, // skeleton + mPlayer_ITEM_DATA_BALLOON5, // skeleton + mPlayer_ITEM_DATA_BALLOON6, // skeleton + mPlayer_ITEM_DATA_BALLOON7, // skeleton + mPlayer_ITEM_DATA_BALLOON8, // skeleton + mPlayer_ITEM_DATA_BALLOON_WAIT, // animation + mPlayer_ITEM_DATA_BALLOON_GYAZA, // animation + + mPlayer_ITEM_DATA_PINWHEEL1, // skeleton + mPlayer_ITEM_DATA_PINWHEEL2, // skeleton + mPlayer_ITEM_DATA_PINWHEEL3, // skeleton + mPlayer_ITEM_DATA_PINWHEEL4, // skeleton + mPlayer_ITEM_DATA_PINWHEEL5, // skeleton + mPlayer_ITEM_DATA_PINWHEEL6, // skeleton + mPlayer_ITEM_DATA_PINWHEEL7, // skeleton + mPlayer_ITEM_DATA_PINWHEEL8, // skeleton + mPlayer_ITEM_DATA_PINWHEEL_WAIT, // animation + + mPlayer_ITEM_DATA_FAN1, // model + mPlayer_ITEM_DATA_FAN2, // model + mPlayer_ITEM_DATA_FAN3, // model + mPlayer_ITEM_DATA_FAN4, // model + mPlayer_ITEM_DATA_FAN5, // model + mPlayer_ITEM_DATA_FAN6, // model + mPlayer_ITEM_DATA_FAN7, // model + mPlayer_ITEM_DATA_FAN8, // model + + mPlayer_ITEM_DATA_NUM +}; + enum { mPlayer_CREATURE_INSECT, mPlayer_CREATURE_GYOEI, diff --git a/src/m_inventory_ovl.c b/src/m_inventory_ovl.c new file mode 100644 index 00000000..b7f71880 --- /dev/null +++ b/src/m_inventory_ovl.c @@ -0,0 +1,362 @@ +#include "m_inventory_ovl.h" + +#include "m_player_lib.h" +#include "ac_set_ovl_gyoei.h" +#include "ac_set_ovl_insect.h" +#include "m_room_type.h" +#include "m_common_data.h" + +enum { + mIV_ANIM_WALK, + mIV_ANIM_CATCH, + mIV_ANIM_CHANGE, + mIV_ANIM_EAT, + + mIV_ANIM_NUM +}; + +enum { + mIV_ITEM_KIND_AXE, + mIV_ITEM_KIND_NET, + mIV_ITEM_KIND_UMBRELLA, + mIV_ITEM_KIND_ROD, + mIV_ITEM_KIND_SHOVEL, + + mIV_ITEM_KIND_GOLD_AXE, + mIV_ITEM_KIND_GOLD_NET, + mIV_ITEM_KIND_GOLD_ROD, + mIV_ITEM_KIND_GOLD_SHOVEL, + + mIV_ITEM_KIND_RED_BALLOON, + mIV_ITEM_KIND_YELLOW_BALLOON, + mIV_ITEM_KIND_BLUE_BALLOON, + mIV_ITEM_KIND_GREEN_BALLOON, + mIV_ITEM_KIND_PURPLE_BALLOON, + mIV_ITEM_KIND_BUNNY_P_BALLOON, + mIV_ITEM_KIND_BUNNY_B_BALLOON, + mIV_ITEM_KIND_BUNNY_O_BALLOON, + + mIV_ITEM_KIND_YELLOW_PINWHEEL, + mIV_ITEM_KIND_RED_PINWHEEL, + mIV_ITEM_KIND_TIGER_PINWHEEL, + mIV_ITEM_KIND_GREEN_PINWHEEL, + mIV_ITEM_KIND_PINK_PINWHEEL, + mIV_ITEM_KIND_STRIPED_PINWHEEL, + mIV_ITEM_KIND_FLOWER_PINWHEEL, + mIV_ITEM_KIND_FANCY_PINWHEEL, + + mIV_ITEM_KIND_BLUEBELL_FAN, + mIV_ITEM_KIND_PLUM_FAN, + mIV_ITEM_KIND_BAMBOO_FAN, + mIV_ITEM_KIND_CLOUD_FAN, + mIV_ITEM_KIND_MAPLE_FAN, + mIV_ITEM_KIND_FAN_FAN, + mIV_ITEM_KIND_FLOWER_FAN, + mIV_ITEM_KIND_LEAF_FAN, + + mIV_ITEM_KIND_AXE_USE_1, + mIV_ITEM_KIND_AXE_USE_2, + mIV_ITEM_KIND_AXE_USE_3, + mIV_ITEM_KIND_AXE_USE_4, + mIV_ITEM_KIND_AXE_USE_5, + mIV_ITEM_KIND_AXE_USE_6, + mIV_ITEM_KIND_AXE_USE_7, + + mIV_ITEM_KIND_NUM +}; + +static int mIV_Get_pl_main_anime_index(int type) { + static u16 player_main_animation_index_table[mIV_ANIM_NUM] = { + mPlayer_ANIM_WALK1, + mPlayer_ANIM_MENU_CATCH1, + mPlayer_ANIM_MENU_CHANGE1, + mPlayer_ANIM_EAT1, + }; + + if (type >= mIV_ANIM_WALK && type < mIV_ANIM_NUM) { + return player_main_animation_index_table[type]; + } + + return -1; +} + +// clang-format off +#define F(n) aSOG_FISH_TYPE_##n + +/* Fish collection layout */ +static u8 mIV_fish_collect_list[] = { + F(CRUCIAN_CARP), F(BROOK_TROUT), F(CARP), F(KOI), F(BARBEL_STEED), F(DACE), F(CATFISH), F(GIANT_CATFISH), + F(PALE_CHUB), F(BITTERLING), F(LOACH), F(BLUEGILL), F(SMALL_BASS), F(BASS), F(LARGE_BASS), F(GIANT_SNAKEHEAD), + F(EEL), F(FRESHWATER_GOBY), F(POND_SMELT), F(SWEETFISH), F(CHERRY_SALMON), F(RAINBOW_TROUT), F(LARGE_CHAR), F(STRINGFISH), + F(SALMON), F(GOLDFISH), F(POPEYED_GOLDFISH), F(GUPPY), F(ANGELFISH), F(PIRANHA), F(AROWANA), F(COELACANTH), + F(CRAWFISH), F(FROG), F(KILLIFISH), F(JELLYFISH), F(SEA_BASS), F(RED_SNAPPER), F(BARRED_KNIFEJAW), F(ARAPAIMA), +}; +#undef F +// clang-format on + +// clang-format off +#define I(n) aSOI_INSECT_TYPE_##n + +/* Insect collection layout */ +static u8 mIV_insect_collect_list[] = { + I(COMMON_BUTTERFLY), I(YELLOW_BUTTERFLY), I(TIGER_BUTTERFLY), I(PURPLE_BUTTERFLY), I(BROWN_CICADA), I(ROBUST_CICADA), I(WALKER_CICADA), I(EVENING_CICADA), + I(RED_DRAGONFLY), I(COMMON_DRAGONFLY), I(DARNER_DRAGONFLY), I(BANDED_DRAGONFLY), I(CRICKET), I(GRASSHOPPER), I(PINE_CRICKET), I(BELL_CRICKET), + I(LADYBUG), I(SPOTTED_LADYBUG), I(MANTIS), I(LONG_LOCUST), I(MIGRATORY_LOCUST), I(COCKROACH), I(BEE), I(FIREFLY), + I(DRONE_BEETLE), I(LONGHORN_BEETLE), I(JEWEL_BEETLE), I(DYNASTID_BEETLE), I(FLAT_STAG_BEETLE), I(SAW_STAG_BEETLE), I(MOUNTAIN_BEETLE), I(GIANT_BEETLE), + I(POND_SKATER), I(ANT), I(PILL_BUG), I(MOSQUITO), I(MOLE_CRICKET), I(SPIDER), I(SNAIL), I(BAGWORM), +}; +#undef I +// clang-format on + +static mActor_name_t mIV_set_collect_itemNo(int type, int page) { + if (type == mIV_PAGE_INSECT_COLLECTION) { + int insect_no = mIV_insect_collect_list[type]; + int bit = mRmTp_FtrItemNo2FtrIdx(FTR_INSECT_START + FTR_NO_2_IDX(insect_no)); + + if (Now_Private->furniture_collected_bitfield[bit >> 5] & (1 << (bit & 31)) != 0) { + return ITM_INSECT_START + insect_no; + } else { + return EMPTY_NO; + } + } else { + int fish_no = mIV_fish_collect_list[type]; + int bit = FTR_IDX_2_NO(FTR_NO_2_IDX(0x31A) + FTR_NO_2_IDX(fish_no)); + + if (Now_Private->furniture_collected_bitfield[bit >> 5] & (1 << (bit & 31)) != 0) { + return mNT_FishIdx2FishItemNo(fish_no); + } else { + return EMPTY_NO; + } + } +} + +static int mIV_get_player_item_anime_id(void) { + mActor_name_t item = Now_Private->equipment; + + if (item >= ITM_NET && item <= ITM_NET) { + return mIV_ITEM_KIND_NET; + } + + if (item == ITM_AXE) { + return mIV_ITEM_KIND_AXE; + } + + if (item == ITM_GOLDEN_AXE) { + return mIV_ITEM_KIND_GOLD_AXE; + } + + if (item == ITM_AXE_USE_1) { + return mIV_ITEM_KIND_AXE_USE_1; + } + + if (item == ITM_AXE_USE_2) { + return mIV_ITEM_KIND_AXE_USE_2; + } + + if (item == ITM_AXE_USE_3) { + return mIV_ITEM_KIND_AXE_USE_3; + } + + if (item == ITM_AXE_USE_4) { + return mIV_ITEM_KIND_AXE_USE_4; + } + + if (item == ITM_AXE_USE_5) { + return mIV_ITEM_KIND_AXE_USE_5; + } + + if (item == ITM_AXE_USE_6) { + return mIV_ITEM_KIND_AXE_USE_6; + } + + if (item == ITM_AXE_USE_7) { + return mIV_ITEM_KIND_AXE_USE_7; + } + + if (item >= ITM_ROD && item <= ITM_ROD) { + return mIV_ITEM_KIND_ROD; + } + + if (item >= ITM_UMBRELLA_START && item <= ITM_MY_ORG_UMBRELLA7) { + return mIV_ITEM_KIND_UMBRELLA; + } + + if (item >= ITM_SHOVEL && item <= ITM_SHOVEL) { + return mIV_ITEM_KIND_SHOVEL; + } + + /* duplicate golden axe check */ + if (item >= ITM_GOLDEN_AXE && item <= ITM_GOLDEN_AXE) { + return mIV_ITEM_KIND_GOLD_AXE; + } + + if (item >= ITM_GOLDEN_NET && item <= ITM_GOLDEN_NET) { + return mIV_ITEM_KIND_GOLD_NET; + } + + if (item >= ITM_GOLDEN_ROD && item <= ITM_GOLDEN_ROD) { + return mIV_ITEM_KIND_GOLD_ROD; + } + + if (item >= ITM_GOLDEN_SHOVEL && item <= ITM_GOLDEN_SHOVEL) { + return mIV_ITEM_KIND_GOLD_SHOVEL; + } + + if (item == ITM_RED_BALLOON) { + return mIV_ITEM_KIND_RED_BALLOON; + } + + if (item == ITM_YELLOW_BALLOON) { + return mIV_ITEM_KIND_YELLOW_BALLOON; + } + + if (item == ITM_BLUE_BALLOON) { + return mIV_ITEM_KIND_BLUE_BALLOON; + } + + if (item == ITM_GREEN_BALLOON) { + return mIV_ITEM_KIND_GREEN_BALLOON; + } + + if (item == ITM_PURPLE_BALLOON) { + return mIV_ITEM_KIND_PURPLE_BALLOON; + } + + if (item == ITM_BUNNY_P_BALLOON) { + return mIV_ITEM_KIND_BUNNY_P_BALLOON; + } + + if (item == ITM_BUNNY_B_BALLOON) { + return mIV_ITEM_KIND_BUNNY_B_BALLOON; + } + + if (item == ITM_BUNNY_O_BALLOON) { + return mIV_ITEM_KIND_BUNNY_O_BALLOON; + } + + if (item == ITM_YELLOW_PINWHEEL) { + return mIV_ITEM_KIND_YELLOW_PINWHEEL; + } + + if (item == ITM_RED_PINWHEEL) { + return mIV_ITEM_KIND_RED_PINWHEEL; + } + + if (item == ITM_TIGER_PINWHEEL) { + return mIV_ITEM_KIND_TIGER_PINWHEEL; + } + + if (item == ITM_GREEN_PINWHEEL) { + return mIV_ITEM_KIND_GREEN_PINWHEEL; + } + + if (item == ITM_PINK_PINWHEEL) { + return mIV_ITEM_KIND_PINK_PINWHEEL; + } + + if (item == ITM_STRIPED_PINWHEEL) { + return mIV_ITEM_KIND_STRIPED_PINWHEEL; + } + + if (item == ITM_FLOWER_PINWHEEL) { + return mIV_ITEM_KIND_FLOWER_PINWHEEL; + } + + if (item == ITM_FANCY_PINWHEEL) { + return mIV_ITEM_KIND_FANCY_PINWHEEL; + } + + if (item == ITM_BLUEBELL_FAN) { + return mIV_ITEM_KIND_BLUEBELL_FAN; + } + + if (item == ITM_PLUM_FAN) { + return mIV_ITEM_KIND_PLUM_FAN; + } + + if (item == ITM_BAMBOO_FAN) { + return mIV_ITEM_KIND_BAMBOO_FAN; + } + + if (item == ITM_CLOUD_FAN) { + return mIV_ITEM_KIND_CLOUD_FAN; + } + + if (item == ITM_MAPLE_FAN) { + return mIV_ITEM_KIND_MAPLE_FAN; + } + + if (item == ITM_FAN_FAN) { + return mIV_ITEM_KIND_FAN_FAN; + } + + if (item == ITM_FLOWER_FAN) { + return mIV_ITEM_KIND_FLOWER_FAN; + } + + if (item == ITM_LEAF_FAN) { + return mIV_ITEM_KIND_LEAF_FAN; + } + + return mIV_ITEM_KIND_NUM; /* No animation */ +} + +static int mIV_ChangeIndex_mIV_to_mPlib(s16 idx) { + static s8 data[] = { + mPlayer_ITEM_KIND_AXE, + mPlayer_ITEM_KIND_NET, + mPlayer_ITEM_KIND_UMBRELLA00, + mPlayer_ITEM_KIND_ROD, + mPlayer_ITEM_KIND_SHOVEL, + + mPlayer_ITEM_KIND_GOLD_AXE, + mPlayer_ITEM_KIND_GOLD_NET, + mPlayer_ITEM_KIND_GOLD_ROD, + mPlayer_ITEM_KIND_GOLD_SHOVEL, + + mPlayer_ITEM_KIND_RED_BALLOON, + mPlayer_ITEM_KIND_YELLOW_BALLOON, + mPlayer_ITEM_KIND_BLUE_BALLOON, + mPlayer_ITEM_KIND_GREEN_BALLOON, + mPlayer_ITEM_KIND_PURPLE_BALLOON, + mPlayer_ITEM_KIND_BUNNY_P_BALLOON, + mPlayer_ITEM_KIND_BUNNY_B_BALLOON, + mPlayer_ITEM_KIND_BUNNY_O_BALLOON, + + mPlayer_ITEM_KIND_YELLOW_PINWHEEL, + mPlayer_ITEM_KIND_RED_PINWHEEL, + mPlayer_ITEM_KIND_TIGER_PINWHEEL, + mPlayer_ITEM_KIND_GREEN_PINWHEEL, + mPlayer_ITEM_KIND_PINK_PINWHEEL, + mPlayer_ITEM_KIND_STRIPED_PINWHEEL, + mPlayer_ITEM_KIND_FLOWER_PINWHEEL, + mPlayer_ITEM_KIND_FANCY_PINWHEEL, + + mPlayer_ITEM_KIND_BLUEBELL_FAN, + mPlayer_ITEM_KIND_PLUM_FAN, + mPlayer_ITEM_KIND_BAMBOO_FAN, + mPlayer_ITEM_KIND_CLOUD_FAN, + mPlayer_ITEM_KIND_MAPLE_FAN, + mPlayer_ITEM_KIND_FAN_FAN, + mPlayer_ITEM_KIND_FLOWER_FAN, + mPlayer_ITEM_KIND_LEAF_FAN, + + mPlayer_ITEM_KIND_AXE_USE_1, + mPlayer_ITEM_KIND_AXE_USE_2, + mPlayer_ITEM_KIND_AXE_USE_3, + mPlayer_ITEM_KIND_AXE_USE_4, + mPlayer_ITEM_KIND_AXE_USE_5, + mPlayer_ITEM_KIND_AXE_USE_6, + mPlayer_ITEM_KIND_AXE_USE_7, + }; + + if (idx >= 0 && idx < mIV_ITEM_KIND_NUM) { + return data[idx]; + } + + return -1; +} + +static int mIV_Get_player_item_shape_index(int idx) { + if (idx >= 0 && idx < mIV_ITEM_KIND_NUM) {} +}