#ifndef M_PLAYER_H #define M_PLAYER_H #include "types.h" #include "m_actor.h" #include "m_lib.h" #include "c_keyframe.h" #include "libultra/ultratypes.h" #ifdef __cplusplus extern "C" { #endif #define mPlayer_DEBT0 17400 /* Buy house */ #define mPlayer_DEBT1 148000 /* 1st upgrade main floor */ #define mPlayer_DEBT2 398000 /* 2nd upgrade main floor */ #define mPlayer_DEBT3 49800 /* Basement */ #define mPlayer_DEBT4 798000 /* Upper floor */ /* These are in frames */ #define mPlayer_SUNBURN_TIME_VILLAGE (15 * mTM_SECONDS_IN_MINUTE * FRAMES_PER_SECOND) #define mPlayer_SUNBURN_TIME_ISLAND (5 * mTM_SECONDS_IN_MINUTE * FRAMES_PER_SECOND) #define mPlayer_SUNBURN_MAX_RANK 8 #define mPlayer_RADIO_EXERCISE_COMMAND_RING_BUFFER_SIZE 8 typedef struct player_actor_s PLAYER_ACTOR; #define mPlayer_FORCE_POSITION_ANGLE_NONE 0 // where is (1 << 0) ?? #define mPlayer_FORCE_POSITION_ANGLE_POSX (1 << 1) #define mPlayer_FORCE_POSITION_ANGLE_POSY (1 << 2) #define mPlayer_FORCE_POSITION_ANGLE_POSZ (1 << 3) #define mPlayer_FORCE_POSITION_ANGLE_ROTX (1 << 4) #define mPlayer_FORCE_POSITION_ANGLE_ROTY (1 << 5) #define mPlayer_FORCE_POSITION_ANGLE_ROTZ (1 << 6) #define mPlayer_WALK_FLAG_SET_POS (1 << 1) #define mPlayer_WALK_FLAG_RESET_MORPH (1 << 2) #define mPlayer_NET_CATCH_TABLE_COUNT 8 enum { mPlayer_JOINT_ROOT, mPlayer_JOINT_BASE, mPlayer_JOINT_LFOOT_BASE, mPlayer_JOINT_LFOOT1, mPlayer_JOINT_LFOOT2, mPlayer_JOINT_LFOOT3, mPlayer_JOINT_RFOOT_BASE, mPlayer_JOINT_RFOOT1, mPlayer_JOINT_RFOOT2, mPlayer_JOINT_RFOOT3, mPlayer_JOINT_TAIL_BASE, mPlayer_JOINT_TAIL1, mPlayer_JOINT_TAIL2, mPlayer_JOINT_CHEST, mPlayer_JOINT_LARM_BASE, mPlayer_JOINT_LARM1, mPlayer_JOINT_LARM2, mPlayer_JOINT_RARM_BASE, mPlayer_JOINT_RARM1, mPlayer_JOINT_RARM2, mPlayer_JOINT_HAND, mPlayer_JOINT_HEAD_BASE, mPlayer_JOINT_MOUTH_BASE, mPlayer_JOINT_MOUTH, mPlayer_JOINT_HEAD, mPlayer_JOINT_FEEL, mPlayer_JOINT_NUM }; enum { mPlayer_ADDRESSABLE_TRUE, mPlayer_ADDRESSABLE_FALSE_MOVEMENT, mPlayer_ADDRESSABLE_FALSE_TALKING, mPlayer_ADDRESSABLE_FALSE_READY_NET, mPlayer_ADDRESSABLE_NUM }; enum { mPlayer_COMPLETE_PAYMENT_TYPE_NONE, mPlayer_COMPLETE_PAYMENT_TYPE_ARBEIT, mPlayer_COMPLETE_PAYMENT_TYPE_HOUSE, mPlayer_COMPLETE_PAYMENT_TYPE_NUM }; enum { mPlayer_BGM_VOLUME_MODE_NORMAL, mPlayer_BGM_VOLUME_MODE_COLLECT_INSECTS, mPlayer_BGM_VOLUME_MODE_FISHING, mPlayer_BGM_VOLUME_MODE_NUM }; enum { mPlayer_INDEX_DMA, mPlayer_INDEX_INTRO, mPlayer_INDEX_REFUSE, mPlayer_INDEX_REFUSE_PICKUP, mPlayer_INDEX_RETURN_DEMO, mPlayer_INDEX_RETURN_OUTDOOR, mPlayer_INDEX_RETURN_OUTDOOR2, mPlayer_INDEX_WAIT, mPlayer_INDEX_WALK, mPlayer_INDEX_RUN, mPlayer_INDEX_DASH, mPlayer_INDEX_TUMBLE, mPlayer_INDEX_TUMBLE_GETUP, mPlayer_INDEX_TURN_DASH, mPlayer_INDEX_FALL, mPlayer_INDEX_WADE, mPlayer_INDEX_DOOR, mPlayer_INDEX_OUTDOOR, mPlayer_INDEX_INVADE, mPlayer_INDEX_HOLD, mPlayer_INDEX_PUSH, mPlayer_INDEX_PULL, mPlayer_INDEX_ROTATE_FURNITURE, mPlayer_INDEX_OPEN_FURNITURE, mPlayer_INDEX_WAIT_OPEN_FURNITURE, mPlayer_INDEX_CLOSE_FURNITURE, mPlayer_INDEX_LIE_BED, mPlayer_INDEX_WAIT_BED, mPlayer_INDEX_ROLL_BED, mPlayer_INDEX_STANDUP_BED, mPlayer_INDEX_PICKUP, mPlayer_INDEX_PICKUP_JUMP, mPlayer_INDEX_PICKUP_FURNITURE, mPlayer_INDEX_PICKUP_EXCHANGE, mPlayer_INDEX_SITDOWN, mPlayer_INDEX_SITDOWN_WAIT, mPlayer_INDEX_STANDUP, mPlayer_INDEX_SWING_AXE, mPlayer_INDEX_AIR_AXE, mPlayer_INDEX_REFLECT_AXE, mPlayer_INDEX_BROKEN_AXE, mPlayer_INDEX_SLIP_NET, mPlayer_INDEX_READY_NET, mPlayer_INDEX_READY_WALK_NET, mPlayer_INDEX_SWING_NET, mPlayer_INDEX_PULL_NET, mPlayer_INDEX_STOP_NET, mPlayer_INDEX_NOTICE_NET, mPlayer_INDEX_PUTAWAY_NET, mPlayer_INDEX_READY_ROD, mPlayer_INDEX_CAST_ROD, mPlayer_INDEX_AIR_ROD, mPlayer_INDEX_RELAX_ROD, mPlayer_INDEX_COLLECT_ROD, mPlayer_INDEX_VIB_ROD, mPlayer_INDEX_FLY_ROD, mPlayer_INDEX_NOTICE_ROD, mPlayer_INDEX_PUTAWAY_ROD, mPlayer_INDEX_DIG_SCOOP, mPlayer_INDEX_FILL_SCOOP, mPlayer_INDEX_REFLECT_SCOOP, mPlayer_INDEX_AIR_SCOOP, mPlayer_INDEX_GET_SCOOP, mPlayer_INDEX_PUTAWAY_SCOOP, mPlayer_INDEX_PUTIN_SCOOP, mPlayer_INDEX_TALK, mPlayer_INDEX_RECIEVE_WAIT, mPlayer_INDEX_RECIEVE_STRETCH, mPlayer_INDEX_RECIEVE, mPlayer_INDEX_RECIEVE_PUTAWAY, mPlayer_INDEX_GIVE, mPlayer_INDEX_GIVE_WAIT, mPlayer_INDEX_TAKEOUT_ITEM, mPlayer_INDEX_PUTIN_ITEM, mPlayer_INDEX_DEMO_WAIT, mPlayer_INDEX_DEMO_WALK, mPlayer_INDEX_DEMO_GETON_TRAIN, mPlayer_INDEX_DEMO_GETON_TRAIN_WAIT, mPlayer_INDEX_DEMO_GETOFF_TRAIN, mPlayer_INDEX_DEMO_STANDING_TRAIN, mPlayer_INDEX_DEMO_WADE, mPlayer_INDEX_HIDE, mPlayer_INDEX_GROUNDHOG, mPlayer_INDEX_RELEASE_CREATURE, mPlayer_INDEX_WASH_CAR, mPlayer_INDEX_TIRED, mPlayer_INDEX_ROTATE_OCTAGON, mPlayer_INDEX_THROW_MONEY, mPlayer_INDEX_PRAY, mPlayer_INDEX_SHAKE_TREE, mPlayer_INDEX_MAIL_JUMP, mPlayer_INDEX_MAIL_LAND, mPlayer_INDEX_READY_PITFALL, mPlayer_INDEX_FALL_PITFALL, mPlayer_INDEX_STRUGGLE_PITFALL, mPlayer_INDEX_CLIMBUP_PITFALL, mPlayer_INDEX_STUNG_BEE, mPlayer_INDEX_NOTICE_BEE, mPlayer_INDEX_REMOVE_GRASS, mPlayer_INDEX_SHOCK, mPlayer_INDEX_KNOCK_DOOR, mPlayer_INDEX_CHANGE_CLOTH, mPlayer_INDEX_PUSH_SNOWBALL, mPlayer_INDEX_ROTATE_UMBRELLA, mPlayer_INDEX_WADE_SNOWBALL, mPlayer_INDEX_COMPLETE_PAYMENT, mPlayer_INDEX_FAIL_EMU, mPlayer_INDEX_STUNG_MOSQUITO, mPlayer_INDEX_NOTICE_MOSQUITO, mPlayer_INDEX_SWING_FAN, mPlayer_INDEX_SWITCH_ON_LIGHTHOUSE, mPlayer_INDEX_RADIO_EXERCISE, mPlayer_INDEX_DEMO_GETON_BOAT, mPlayer_INDEX_DEMO_GETON_BOAT_SITDOWN, mPlayer_INDEX_DEMO_GETON_BOAT_WAIT, mPlayer_INDEX_DEMO_GETON_BOAT_WADE, mPlayer_INDEX_DEMO_GETOFF_BOAT_STANDUP, mPlayer_INDEX_DEMO_GETOFF_BOAT, mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM, mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM2, mPlayer_INDEX_DEMO_GET_GOLDEN_AXE_WAIT, mPlayer_INDEX_NUM }; #define mPlayer_MAIN_INDEX_VALID(idx) ((idx) >= 0 && (idx) < mPlayer_INDEX_NUM) enum { mPlayer_REQUEST_PRIORITY_0, mPlayer_REQUEST_PRIORITY_1, mPlayer_REQUEST_PRIORITY_2, mPlayer_REQUEST_PRIORITY_3, mPlayer_REQUEST_PRIORITY_4, mPlayer_REQUEST_PRIORITY_5, mPlayer_REQUEST_PRIORITY_6, mPlayer_REQUEST_PRIORITY_7, mPlayer_REQUEST_PRIORITY_8, mPlayer_REQUEST_PRIORITY_9, mPlayer_REQUEST_PRIORITY_10, mPlayer_REQUEST_PRIORITY_11, mPlayer_REQUEST_PRIORITY_12, mPlayer_REQUEST_PRIORITY_13, mPlayer_REQUEST_PRIORITY_14, mPlayer_REQUEST_PRIORITY_15, mPlayer_REQUEST_PRIORITY_16, mPlayer_REQUEST_PRIORITY_17, mPlayer_REQUEST_PRIORITY_18, mPlayer_REQUEST_PRIORITY_19, mPlayer_REQUEST_PRIORITY_20, mPlayer_REQUEST_PRIORITY_21, mPlayer_REQUEST_PRIORITY_22, mPlayer_REQUEST_PRIORITY_23, mPlayer_REQUEST_PRIORITY_24, mPlayer_REQUEST_PRIORITY_25, mPlayer_REQUEST_PRIORITY_26, mPlayer_REQUEST_PRIORITY_27, mPlayer_REQUEST_PRIORITY_28, mPlayer_REQUEST_PRIORITY_29, mPlayer_REQUEST_PRIORITY_30, mPlayer_REQUEST_PRIORITY_31, mPlayer_REQUEST_PRIORITY_32, mPlayer_REQUEST_PRIORITY_33, mPlayer_REQUEST_PRIORITY_34, mPlayer_REQUEST_PRIORITY_35, mPlayer_REQUEST_PRIORITY_36, mPlayer_REQUEST_PRIORITY_37, mPlayer_REQUEST_PRIORITY_38, mPlayer_REQUEST_PRIORITY_39, mPlayer_REQUEST_PRIORITY_40, mPlayer_REQUEST_PRIORITY_41, mPlayer_REQUEST_PRIORITY_42, mPlayer_REQUEST_PRIORITY_43, mPlayer_REQUEST_PRIORITY_44, mPlayer_REQUEST_PRIORITY_45, mPlayer_REQUEST_PRIORITY_NUM }; #define mPlayer_REQUEST_PRIORITY_NONE -1 #define mPlayer_REQUEST_PRIORITY_VALID(prio) ((prio) >= 0 && (prio) <= mPlayer_REQUEST_PRIORITY_45) 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_MAIN_NONE, mPlayer_ITEM_MAIN_AXE_NORMAL, mPlayer_ITEM_MAIN_NET_NORMAL, mPlayer_ITEM_MAIN_NET_SWING, mPlayer_ITEM_MAIN_NET_STOP, mPlayer_ITEM_MAIN_TUMBLE, mPlayer_ITEM_MAIN_TUBMLE_GETUP, mPlayer_ITEM_MAIN_NET_PULL, mPlayer_ITEM_MAIN_NET_PUTAWAY, mPlayer_ITEM_MAIN_NET_COMPLETE_COLLECTION, mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, mPlayer_ITEM_MAIN_ROD_NORMAL, mPlayer_ITEM_MAIN_ROD_READY, mPlayer_ITEM_MAIN_ROD_CAST, mPlayer_ITEM_MAIN_ROD_AIR, mPlayer_ITEM_MAIN_ROD_RELAX, mPlayer_ITEM_MAIN_ROD_COLLECT, mPlayer_ITEM_MAIN_ROD_VIB, mPlayer_ITEM_MAIN_ROD_FLY, mPlayer_ITEM_MAIN_ROD_PUTAWAY, mPlayer_ITEM_MAIN_SCOOP_NORMAL, mPlayer_ITEM_MAIN_BALLOON_NORMAL, mPlayer_ITEM_MAIN_WINDMILL_NORMAL, mPlayer_ITEM_MAIN_FAN_NORMAL, mPlayer_ITEM_MAIN_NUM, }; #define mPlayer_ITEM_MAIN_VALID(main_index) \ ((main_index) >= (mPlayer_ITEM_MAIN_NONE) && (main_index) < (mPlayer_ITEM_MAIN_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_UMBRELLA00, 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_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? */ }; #define mPlayer_ITEM_KIND_NONE -1 #define mPlayer_ITEM_KIND_CHECK(kind, min, max) ((kind) >= (min) && (kind) < ((max) + 1)) #define mPlayer_ITEM_IS_AXE(kind) mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_AXE, mPlayer_ITEM_KIND_GOLD_AXE) #define mPlayer_ITEM_IS_NET(kind) mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_NET, mPlayer_ITEM_KIND_GOLD_NET) #define mPlayer_ITEM_IS_ROD(kind) mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_ROD, mPlayer_ITEM_KIND_GOLD_ROD) #define mPlayer_ITEM_IS_SHOVEL(kind) \ mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_SHOVEL, mPlayer_ITEM_KIND_GOLD_SHOVEL) #define mPlayer_ITEM_IS_UMBRELLA(kind) \ mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_UMBRELLA00, mPlayer_ITEM_KIND_ORG_UMBRELLA07) #define mPlayer_ITEM_IS_BALLOON(kind) \ mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_RED_BALLOON, mPlayer_ITEM_KIND_BUNNY_O_BALLOON) #define mPlayer_ITEM_IS_WINDMILL(kind) \ mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_YELLOW_PINWHEEL, mPlayer_ITEM_KIND_FANCY_PINWHEEL) #define mPlayer_ITEM_IS_FAN(kind) \ mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_BLUEBELL_FAN, mPlayer_ITEM_KIND_LEAF_FAN) #define mPlayer_ITEM_IS_NOT_TOOL(kind) \ (mPlayer_ITEM_IS_UMBRELLA(kind) || mPlayer_ITEM_IS_BALLOON(kind) || mPlayer_ITEM_IS_WINDMILL(kind) || \ mPlayer_ITEM_IS_FAN(kind)) #define mPlayer_ITEM_KIND_VALID(kind) (mPlayer_ITEM_KIND_CHECK(kind, 0, mPlayer_ITEM_KIND_NUM)) 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 }; #define mPlayer_ITEM_DATA_VALID(type) ((type) >= 0 && type < mPlayer_ITEM_DATA_NUM) enum { mPlayer_ITEM_DATA_TYPE_GFX, mPlayer_ITEM_DATA_TYPE_SKELETON, mPlayer_ITEM_DATA_TYPE_NET_ANIMATION, mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION, mPlayer_ITEM_DATA_TYPE_BALLOON_ANIMATION, mPlayer_ITEM_DATA_TYPE_PINWHEEL_ANIMATION, mPlayer_ITEM_DATA_TYPE_NUM }; enum { mPlayer_PART_TABLE_NORMAL, mPlayer_PART_TABLE_AXE, mPlayer_PART_TABLE_PICK_UP, mPlayer_PART_TABLE_NET, mPlayer_PART_TABLE_FAN, mPlayer_PART_TABLE_NUM }; enum { mPlayer_CREATURE_INSECT, mPlayer_CREATURE_GYOEI, mPlayer_CREATURE_BALLOON, mPlayer_CREATURE_NUM }; enum { mPlayer_BED_ACTION_NONE, mPlayer_BED_ACTION_ROLL, mPlayer_BED_ACTION_OUT, mPlayer_BED_ACTION_NUM }; enum { mPlayer_DRAW_TYPE_NONE, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NUM }; enum { mPlayer_SHADOW_TYPE_NORMAL, mPlayer_SHADOW_TYPE_WORLD_POS, mPlayer_SHADOW_TYPE_ANIME_POS, mPlayer_SHADOW_TYPE_NONE, mPlayer_SHADOW_TYPE_NUM }; enum { mPlayer_STATUS_FOR_BEE_WAIT, mPlayer_STATUS_FOR_BEE_ATTACK, mPlayer_STATUS_FOR_BEE_ENTER_BUILDING, mPlayer_STATUS_FOR_BEE_NUM }; enum { mPlayer_NET_CATCH_TYPE_INSECT, mPlayer_NET_CATCH_TYPE_ANT, mPlayer_NET_CATCH_TYPE_NUM }; enum { mPlayer_ABLE_ITEM_CAN_USE_ALL, mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, mPlayer_ABLE_ITEM_RESTRICTED, mPlayer_ABLE_ITEM_NONE, mPlayer_ABLE_ITEM_NUM }; enum { mPlayer_AXE_HIT_NONE, mPlayer_AXE_HIT_REFLECT, mPlayer_AXE_HIT_TREE, mPlayer_AXE_HIT_NUM }; enum { mPlayer_AXE_BREAK_FROM_SWING, mPlayer_AXE_BREAK_FROM_REFLECT, mPlayer_AXE_BREAK_FROM_NUM }; enum { mPlayer_RADIO_EXERCISE_CMD0, mPlayer_RADIO_EXERCISE_CMD1, mPlayer_RADIO_EXERCISE_CMD2, mPlayer_RADIO_EXERCISE_CMD3, mPlayer_RADIO_EXERCISE_CMD4, mPlayer_RADIO_EXERCISE_CMD5, mPlayer_RADIO_EXERCISE_CMD6, mPlayer_RADIO_EXERCISE_CMD7, mPlayer_RADIO_EXERCISE_CMD8, mPlayer_RADIO_EXERCISE_CMD9, mPlayer_RADIO_EXERCISE_CMD10, mPlayer_RADIO_EXERCISE_CMD11, mPlayer_RADIO_EXERCISE_CMD12, mPlayer_RADIO_EXERCISE_CMD13, mPlayer_RADIO_EXERCISE_CMD14, mPlayer_RADIO_EXERCISE_CMD15, mPlayer_RADIO_EXERCISE_CMD16, mPlayer_RADIO_EXERCISE_CMD17, mPlayer_RADIO_EXERCISE_CMD_NUM }; enum { mPlayer_GOLDEN_ITEM_TYPE_AXE, mPlayer_GOLDEN_ITEM_TYPE_NET, mPlayer_GOLDEN_ITEM_TYPE_ROD, mPlayer_GOLDEN_ITEM_TYPE_SHOVEL, mPlayer_GOLDEN_ITEM_TYPE_NUM }; enum { mPlayer_USE_FACE_ROM_TYPE_TEX, mPlayer_USE_FACE_ROM_TYPE_PAL, mPlayer_USE_FACE_ROM_TYPE_NUM }; enum { mPlayer_EYE_TEX0, mPlayer_EYE_TEX1, mPlayer_EYE_TEX2, mPlayer_EYE_TEX3, mPlayer_EYE_TEX4, mPlayer_EYE_TEX5, mPlayer_EYE_TEX6, mPlayer_EYE_TEX7, mPlayer_EYE_TEX_NUM }; enum { mPlayer_MOUTH_TEX0, mPlayer_MOUTH_TEX1, mPlayer_MOUTH_TEX2, mPlayer_MOUTH_TEX3, mPlayer_MOUTH_TEX4, mPlayer_MOUTH_TEX5, mPlayer_MOUTH_TEX_NUM }; #define mPlayer_SETUP_TEXTURE_ANIMATION_NONE (0 << 0) /* Where is (1 << 0)? */ #define mPlayer_SETUP_TEXTURE_ANIMATION_EYE (1 << 1) #define mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH (1 << 2) typedef struct player_request_return_demo_s { int prev_main_index; f32 time; } mPlayer_request_return_demo_c; typedef struct player_request_return_outdoor_s { int prev_main_index; f32 time; f32 _08; } mPlayer_request_return_outdoor_c; typedef struct player_request_return_outdoor2_s { int prev_main_index; f32 time; f32 _08; } mPlayer_request_return_outdoor2_c; typedef struct player_request_wait_s { f32 morph_speed; f32 _04; int flags; } mPlayer_request_wait_c; typedef struct player_request_talk_s { ACTOR* talk_actor; int turn_flag; f32 morph_speed; int umbrella_flag; } mPlayer_request_talk_c; typedef struct player_request_hold_s { int ftr_no; s16 angle_y; xyz_t player_pos; f32 morph_speed; int flags; } mPlayer_request_hold_c; typedef struct player_request_recieve_wait_s { ACTOR* talk_actor; int turn_flag; int prev_main_index; mActor_name_t item; int on_surface_flag; } mPlayer_request_recieve_wait_c; typedef struct player_request_give_s { ACTOR* talk_actor; int turn_flag; int prev_main_index; mActor_name_t item; int mode; int present_flag; int on_surface_flag; } mPlayer_request_give_c; typedef struct player_request_sitdown_s { s16 angle; xyz_t pos; int ftrID; } mPlayer_request_sitdown_c; typedef struct player_request_close_funriture_s { int anim_idx; } mPlayer_request_close_furniture_c; typedef struct player_request_lie_bed_s { int direction; s16 angle; xyz_t wpos; int flags; } mPlayer_request_lie_bed_c; typedef struct player_request_door_s { s16 angle_y; xyz_t player_pos; int type; u32 label; } mPlayer_request_door_c; typedef struct player_request_outdoor_s { int type; int is_start_demo; } mPlayer_request_outdoor_c; typedef struct player_request_demo_wait_s { int umbrella_flag; u32 label; } mPlayer_request_demo_wait_c; typedef struct player_request_demo_walk_s { f32 goal_pos_x; f32 goal_pos_z; f32 speed; int wait_flag; } mPlayer_request_demo_walk_c; typedef struct player_request_demo_geton_train_s { s16 angle_y; xyz_t player_pos; } mPlayer_request_demo_geton_train_c; typedef struct player_request_demo_getoff_train_s { s16 angle_y; xyz_t player_pos; } mPlayer_request_demo_getoff_train_c; typedef struct player_request_rotate_octagon_s { ACTOR* talk_actor; int turn_flag; int prev_main_index; xyz_t pos; s16 angle_y; } mPlayer_request_rotate_octagon_c; typedef struct player_request_wash_car_s { xyz_t car_pos; xyz_t orig_pos; s16 orig_angle_y; ACTOR* parent_actor; } mPlayer_request_wash_car_c; typedef struct player_request_throw_money_s { xyz_t pos; s16 angle_y; } mPlayer_request_throw_money_c; typedef struct player_request_pray_s { xyz_t pos; s16 angle_y; } mPlayer_request_pray_c; typedef struct player_request_mail_jump_s { xyz_t pos; s16 angle_y; } mPlayer_request_mail_jump_c; typedef struct player_request_shock_s { f32 start_time; s16 target_angle_y; u8 bee_chase_bgm_flag; int axe_flag; } mPlayer_request_shock_c; typedef struct player_request_push_snowball_s { u32 label; int wade_flag; } mPlayer_request_push_snowball_c; typedef struct player_request_stung_mosquito_s { u32 label; } mPlayer_request_stung_mosquito_c; typedef struct player_request_notice_mosquito_s { u32 label; } mPlayer_request_notice_mosquito_c; typedef struct player_request_switch_on_lighthouse_s { s16 angle_y; xyz_t pos; } mPlayer_request_switch_on_lighthouse_c; typedef struct player_request_demo_geton_boat_s { xyz_t pos; s16 angle_y; } mPlayer_request_demo_geton_boat_c; typedef struct player_request_demo_getoff_boat_standup_s { xyz_t pos; s16 angle_y; } mPlayer_request_demo_getoff_boat_standup_c; typedef struct player_request_demo_get_golden_item_s { int type; } mPlayer_request_demo_get_golden_item_c; typedef struct player_request_walk_s { xyz_t pos; f32 morph_speed; int flags; } mPlayer_request_walk_c; typedef struct player_request_run_s { f32 morph_speed; int flags; } mPlayer_request_run_c; typedef struct player_request_dash_s { f32 morph_speed; int flags; } mPlayer_request_dash_c; typedef struct player_request_turn_dash_s { s16 target_angle_y; } mPlayer_request_turn_dash_c; typedef struct player_request_fall_s { f32 morph_speed; int flags; } mPlayer_request_fall_c; typedef struct player_request_wade_s { int dir; } mPlayer_request_wade_c; typedef struct player_request_wade_snowball_s { int dir; xyz_t snowball_dist; u32 label; } mPlayer_request_wade_snowball_c; typedef struct player_request_push_s { int ftrNo; s16 angle_y; xyz_t player_pos; } mPlayer_request_push_c; typedef struct player_request_pull_s { int ftrNo; s16 angle_y; xyz_t start_pos; xyz_t end_pos; xyz_t ofs; } mPlayer_request_pull_c; typedef struct player_request_rotate_furniture_s { int ftrNo; s16 angle_y; xyz_t player_pos; int rotate_type; } mPlayer_request_rotate_furniture_c; typedef struct player_request_open_furniture_s { s16 angle_y; xyz_t player_pos; int anim_idx; } mPlayer_request_open_furniture_c; typedef struct player_request_wait_open_furniture_s { int anim_idx; } mPlayer_request_wait_open_furniture_c; typedef struct player_request_wait_close_furniture_s { int anim_idx; } mPlayer_request_wait_close_furniture_c; typedef struct player_request_roll_bed_s { int move_dir; } mPlayer_request_roll_bed_c; typedef struct player_request_standup_bed_s { int move_dir; } mPlayer_request_standup_bed_c; typedef struct player_request_pickup_s { int inv_slot; mActor_name_t item; xyz_t target_pos; xyz_t item_pos; int flag; } mPlayer_request_pickup_c; typedef struct player_request_pickup_jump_s { int inv_slot; mActor_name_t item; xyz_t item_pos; int ftr_flag; int knife_and_fork_flag; } mPlayer_request_pickup_jump_c; typedef struct player_request_pickup_furniture_s { int inv_slot; mActor_name_t item; xyz_t item_pos; } mPlayer_request_pickup_furniture_c; typedef struct player_request_pickup_exchange_s { xyz_t target_pos; mActor_name_t item; } mPlayer_request_pickup_exchange_c; typedef struct player_request_sitdown_wait_s { int ftrID; } mPlayer_request_sitdown_wait_c; typedef struct player_request_standup_s { int ftrID; } mPlayer_request_standup_c; typedef struct player_request_swing_axe_s { xyz_t goal_pos; mActor_name_t hit_item; u16 axe_damage_no; int hit_ut_x; int hit_ut_z; int break_flag; } mPlayer_request_swing_axe_c; typedef struct player_request_reflect_axe_s { xyz_t goal_pos; mActor_name_t hit_item; u16 axe_damage_no; ACTOR* hit_actor; int _14; int break_flag; } mPlayer_request_reflect_axe_c; typedef struct player_request_notice_net_s { int already_collected; } mPlayer_request_notice_net_c; typedef struct player_request_putaway_net_s { int exchange_flag; } mPlayer_request_putaway_net_c; typedef struct player_request_cast_rod_s { xyz_t bobber_target_pos; } mPlayer_request_cast_rod_c; typedef struct player_request_notice_rod_s { s16 angle_y; } mPlayer_request_notice_rod_c; typedef struct player_request_putaway_rod_s { s16 angle_y; int exchange_flag; } mPlayer_request_putaway_rod_c; typedef struct player_request_dig_scoop_s { xyz_t dig_pos; mActor_name_t item; } mPlayer_request_dig_scoop_c; typedef struct player_request_fill_scoop_s { xyz_t dig_pos; } mPlayer_request_fill_scoop_c; typedef struct player_request_reflect_scoop_s { xyz_t dig_pos; mActor_name_t item; ACTOR* hit_actor; } mPlayer_request_reflect_scoop_c; typedef struct player_request_putin_scoop_s { xyz_t dig_pos; mActor_name_t item; int get_gold_scoop_flag; } mPlayer_request_putin_scoop_c; typedef struct player_request_putaway_scoop_s { xyz_t dig_pos; mActor_name_t item; int _10; } mPlayer_request_putaway_scoop_c; typedef struct player_request_get_scoop_s { xyz_t dig_pos; mActor_name_t item; } mPlayer_request_get_scoop_c; typedef struct player_request_recieve_stretch_s { ACTOR* talk_actor; int turn_flag; int prev_main_index; mActor_name_t item; int on_surface_flag; } mPlayer_request_recieve_stretch_c; typedef struct player_request_recieve_s { ACTOR* talk_actor; int turn_flag; int prev_main_index; mActor_name_t item; int on_surface_flag; } mPlayer_request_recieve_c; typedef struct player_request_recieve_putaway_s { ACTOR* talk_actor; int turn_flag; int prev_main_index; mActor_name_t item; int on_surface_flag; } mPlayer_request_recieve_putaway_c; typedef struct player_request_give_wait_s { ACTOR* talk_actor; int turn_flag; int prev_main_index; mActor_name_t item; int on_surface_flag; // TODO: verify this flag is correct } mPlayer_request_give_wait_c; typedef struct player_request_demo_wade_s { int dir; } mPlayer_request_demo_wade_c; typedef struct player_request_release_creature_gyoei_s { s16 angle_y; s16 _02; } mPlayer_request_release_creature_gyoei_c; typedef struct player_request_release_creature_insect_s { xyz_t pos; int type; } mPlayer_request_release_creature_insect_c; typedef struct player_request_release_creature_balloon_s { int balloon_type; } mPlayer_request_release_creature_balloon_c; typedef union { mPlayer_request_release_creature_gyoei_c gyoei; mPlayer_request_release_creature_insect_c insect; mPlayer_request_release_creature_balloon_c balloon; } mPlayer_request_release_creature_u; typedef struct player_request_release_creature_s { int type; int gold_scoop_flag; mPlayer_request_release_creature_u data; ACTOR* actor; } mPlayer_request_release_creature_c; typedef struct player_request_shake_tree_s { xyz_t pos; mActor_name_t item; int ut_x; int ut_z; } mPlayer_request_shake_tree_c; typedef struct player_request_ready_pitfall_s { xyz_t pos; } mPlayer_request_ready_pitfall_c; typedef struct player_request_remove_grass_s { xyz_t grass_pos; xyz_t target_pos; } mPlayer_request_remove_grass_c; typedef struct player_request_change_cloth_s { ACTOR* talk_actor; int turn_flag; int prev_main_index; mActor_name_t cloth_item; u16 cloth_idx; int try_on_flag; } mPlayer_request_change_cloth_c; typedef struct player_request_swing_fan_s { int start_swing; } mPlayer_request_swing_fan_c; typedef struct player_request_radio_exercise_s { int cmd; f32 speed; } mPlayer_request_radio_exercise_c; typedef struct player_request_demo_geton_boat_wade_s { int dir; f32 border_ofs; } mPlayer_request_demo_geton_boat_wade_c; typedef struct player_request_demo_getoff_boat_s { xyz_t pos; s16 angle_y; } mPlayer_request_demo_getoff_boat_c; typedef struct player_request_give_from_submenu_s { xyz_t unused; // assumed based on size mActor_name_t item; int mode_after; // player mode after the action finishes int present_flag; // set if the item is wrapped as presnet int counter_flag; // set when the item slides across a counter } mPlayer_request_give_from_submenu_c; typedef struct player_request_putin_scoop_from_submenu_s { xyz_t wpos; mActor_name_t item; int got_gold_scoop; } mPlayer_request_putin_scoop_from_submenu_data_c; typedef struct { int _0; ACTOR* speak_actor; } mPlayer_request_demo_wait_from_submenu_c; typedef union { mPlayer_request_give_from_submenu_c give_from_submenu; mPlayer_request_putin_scoop_from_submenu_data_c putin_scoop_from_submenu; mPlayer_request_demo_wait_from_submenu_c demo_wait_from_submenu; mPlayer_request_return_demo_c return_demo; mPlayer_request_wait_c wait; mPlayer_request_talk_c talk; mPlayer_request_hold_c hold; mPlayer_request_recieve_wait_c recieve_wait; mPlayer_request_give_c give; mPlayer_request_sitdown_c sitdown; mPlayer_request_close_furniture_c close_furniture; mPlayer_request_lie_bed_c lie_bed; mPlayer_request_door_c door; mPlayer_request_outdoor_c outdoor; mPlayer_request_demo_wait_c demo_wait; mPlayer_request_demo_walk_c demo_walk; mPlayer_request_demo_geton_train_c demo_geton_train; mPlayer_request_demo_getoff_train_c demo_getoff_train; mPlayer_request_rotate_octagon_c rotate_octagon; mPlayer_request_wash_car_c wash_car; mPlayer_request_throw_money_c throw_money; mPlayer_request_pray_c pray; mPlayer_request_mail_jump_c mail_jump; mPlayer_request_shock_c shock; mPlayer_request_push_snowball_c push_snowball; mPlayer_request_stung_mosquito_c stung_mosquito; mPlayer_request_notice_mosquito_c notice_mosquito; mPlayer_request_switch_on_lighthouse_c switch_on_lighthouse; mPlayer_request_demo_geton_boat_c demo_geton_boat; mPlayer_request_demo_getoff_boat_standup_c demo_getoff_boat_standup; mPlayer_request_demo_get_golden_item_c demo_get_golden_item; mPlayer_request_walk_c walk; mPlayer_request_run_c run; mPlayer_request_dash_c dash; mPlayer_request_turn_dash_c turn_dash; mPlayer_request_fall_c fall; mPlayer_request_wade_c wade; mPlayer_request_wade_snowball_c wade_snowball; mPlayer_request_push_c push; mPlayer_request_pull_c pull; mPlayer_request_rotate_furniture_c rotate_furniture; mPlayer_request_open_furniture_c open_furniture; mPlayer_request_wait_open_furniture_c wait_open_furniture; mPlayer_request_wait_close_furniture_c wait_close_furniture; mPlayer_request_roll_bed_c roll_bed; mPlayer_request_standup_bed_c standup_bed; mPlayer_request_pickup_c pickup; mPlayer_request_pickup_jump_c pickup_jump; mPlayer_request_pickup_furniture_c pickup_furniture; mPlayer_request_pickup_exchange_c pickup_exchange; mPlayer_request_sitdown_wait_c sitdown_wait; mPlayer_request_standup_c standup; mPlayer_request_swing_axe_c swing_axe; mPlayer_request_reflect_axe_c reflect_axe; mPlayer_request_notice_net_c notice_net; mPlayer_request_putaway_net_c putaway_net; mPlayer_request_cast_rod_c cast_rod; mPlayer_request_notice_rod_c notice_rod; mPlayer_request_putaway_rod_c putaway_rod; mPlayer_request_dig_scoop_c dig_scoop; mPlayer_request_fill_scoop_c fill_scoop; mPlayer_request_reflect_scoop_c reflect_scoop; mPlayer_request_putin_scoop_c putin_scoop; mPlayer_request_putaway_scoop_c putaway_scoop; mPlayer_request_get_scoop_c get_scoop; mPlayer_request_recieve_stretch_c recieve_stretch; mPlayer_request_recieve_c recieve; mPlayer_request_recieve_putaway_c recieve_putaway; mPlayer_request_give_wait_c give_wait; mPlayer_request_demo_wade_c demo_wade; mPlayer_request_release_creature_c release_creature; mPlayer_request_shake_tree_c shake_tree; mPlayer_request_ready_pitfall_c ready_pitfall; mPlayer_request_remove_grass_c remove_grass; mPlayer_request_change_cloth_c change_cloth; mPlayer_request_swing_fan_c swing_fan; mPlayer_request_radio_exercise_c radio_exercise; mPlayer_request_demo_geton_boat_wade_c demo_geton_boat_wade; mPlayer_request_demo_getoff_boat_c demo_getoff_boat; u64 align; // TODO: is this necessary? it makes the size correct for this and mPlayer_request_main_data } mPlayer_request_backup_u; typedef struct player_request_takeout_item_s { mPlayer_request_backup_u request_data; int request_main_index; } mPlayer_request_takeout_item_c; typedef struct player_request_putin_item_s { mPlayer_request_backup_u request_data; int request_main_index; } mPlayer_request_putin_item_c; typedef struct player_request_knock_door_s { mPlayer_request_backup_u request_data; int request_main_index; xyz_t pos; s16 angle_y; } mPlayer_request_knock_door_c; typedef union { mPlayer_request_give_from_submenu_c give_from_submenu; mPlayer_request_putin_scoop_from_submenu_data_c putin_scoop_from_submenu; mPlayer_request_demo_wait_from_submenu_c demo_wait_from_submenu; mPlayer_request_return_demo_c return_demo; mPlayer_request_return_outdoor_c return_outdoor; mPlayer_request_return_outdoor2_c return_outdoor2; mPlayer_request_wait_c wait; mPlayer_request_talk_c talk; mPlayer_request_hold_c hold; mPlayer_request_recieve_wait_c recieve_wait; mPlayer_request_give_c give; mPlayer_request_sitdown_c sitdown; mPlayer_request_close_furniture_c close_furniture; mPlayer_request_lie_bed_c lie_bed; mPlayer_request_door_c door; mPlayer_request_outdoor_c outdoor; mPlayer_request_demo_wait_c demo_wait; mPlayer_request_demo_walk_c demo_walk; mPlayer_request_demo_geton_train_c demo_geton_train; mPlayer_request_demo_getoff_train_c demo_getoff_train; mPlayer_request_rotate_octagon_c rotate_octagon; mPlayer_request_wash_car_c wash_car; mPlayer_request_throw_money_c throw_money; mPlayer_request_pray_c pray; mPlayer_request_mail_jump_c mail_jump; mPlayer_request_shock_c shock; mPlayer_request_push_snowball_c push_snowball; mPlayer_request_stung_mosquito_c stung_mosquito; mPlayer_request_notice_mosquito_c notice_mosquito; mPlayer_request_switch_on_lighthouse_c switch_on_lighthouse; mPlayer_request_demo_geton_boat_c demo_geton_boat; mPlayer_request_demo_getoff_boat_standup_c demo_getoff_boat_standup; mPlayer_request_demo_get_golden_item_c demo_get_golden_item; mPlayer_request_walk_c walk; mPlayer_request_run_c run; mPlayer_request_dash_c dash; mPlayer_request_turn_dash_c turn_dash; mPlayer_request_fall_c fall; mPlayer_request_wade_c wade; mPlayer_request_wade_snowball_c wade_snowball; mPlayer_request_push_c push; mPlayer_request_pull_c pull; mPlayer_request_rotate_furniture_c rotate_furniture; mPlayer_request_open_furniture_c open_furniture; mPlayer_request_wait_open_furniture_c wait_open_furniture; mPlayer_request_wait_close_furniture_c wait_close_furniture; mPlayer_request_roll_bed_c roll_bed; mPlayer_request_standup_bed_c standup_bed; mPlayer_request_pickup_c pickup; mPlayer_request_pickup_jump_c pickup_jump; mPlayer_request_pickup_furniture_c pickup_furniture; mPlayer_request_pickup_exchange_c pickup_exchange; mPlayer_request_sitdown_wait_c sitdown_wait; mPlayer_request_standup_c standup; mPlayer_request_swing_axe_c swing_axe; mPlayer_request_reflect_axe_c reflect_axe; mPlayer_request_notice_net_c notice_net; mPlayer_request_putaway_net_c putaway_net; mPlayer_request_cast_rod_c cast_rod; mPlayer_request_notice_rod_c notice_rod; mPlayer_request_putaway_rod_c putaway_rod; mPlayer_request_dig_scoop_c dig_scoop; mPlayer_request_fill_scoop_c fill_scoop; mPlayer_request_reflect_scoop_c reflect_scoop; mPlayer_request_putin_scoop_c putin_scoop; mPlayer_request_putaway_scoop_c putaway_scoop; mPlayer_request_get_scoop_c get_scoop; mPlayer_request_recieve_stretch_c recieve_stretch; mPlayer_request_recieve_c recieve; mPlayer_request_recieve_putaway_c recieve_putaway; mPlayer_request_give_wait_c give_wait; mPlayer_request_demo_wade_c demo_wade; mPlayer_request_release_creature_c release_creature; mPlayer_request_shake_tree_c shake_tree; mPlayer_request_ready_pitfall_c ready_pitfall; mPlayer_request_remove_grass_c remove_grass; mPlayer_request_change_cloth_c change_cloth; mPlayer_request_swing_fan_c swing_fan; mPlayer_request_radio_exercise_c radio_exercise; mPlayer_request_demo_geton_boat_wade_c demo_geton_boat_wade; mPlayer_request_demo_getoff_boat_c demo_getoff_boat; mPlayer_request_takeout_item_c takeout_item; mPlayer_request_putin_item_c putin_item; mPlayer_request_knock_door_c knock_door; /* TODO: others? */ // u8 force_size[72]; // TEMP } mPlayer_request_main_data; /* Current main state data structs */ typedef struct player_main_intro_s { f32 timer; } mPlayer_main_intro_c; typedef struct player_main_return_demo_s { f32 timer; f32 max_timer; int prev_main_index; } mPlayer_main_return_demo_c; typedef struct player_main_return_outdoor_s { f32 timer; f32 max_timer; int prev_main_index; } mPlayer_main_return_outdoor_c; typedef struct player_main_return_outdoor2_s { f32 timer; f32 max_timer; int prev_main_index; } mPlayer_main_return_outdoor2_c; typedef struct player_main_wait_s { int radio_exercise_command; } mPlayer_main_wait_c; typedef struct player_main_door_s { u32 label; } mPlayer_main_door_c; typedef struct player_main_outdoor_s { int is_demo; } mPlayer_main_outdoor_c; typedef struct player_main_hold_s { int ftr_no; s16 angle_y; xyz_t player_pos; int flags; } mPlayer_main_hold_c; typedef struct player_main_push_s { int ftr_no; } mPlayer_main_push_c; typedef struct player_main_pull_s { int ftr_no; xyz_t start_pos; xyz_t ofs; f32 timer; } mPlayer_main_pull_c; typedef struct player_main_rotate_furniture_s { int ftr_no; xyz_t pos; int _10; int rotate_type; } mPlayer_main_rotate_furniture_c; typedef struct player_main_open_furniture_s { s16 angle_y; xyz_t player_pos; int anim_idx; } mPlayer_main_open_furniture_c; typedef struct player_main_lie_bed_s { int flags; } mPlayer_main_lie_bed_c; typedef struct player_main_wait_bed_s { int flags; } mPlayer_main_wait_bed_c; typedef struct player_main_sitdown_s { int ftrID; } mPlayer_main_sitdown_c; typedef struct player_main_sitdown_wait_s { int ftrID; } mPlayer_main_sitdown_wait_c; typedef struct player_main_wade_s { int dir; xyz_t start_pos; xyz_t end_pos; f32 timer; } mPlayer_main_wade_c; typedef struct player_main_pickup_s { xyz_t target_pos; xyz_t item_pos; xyz_t item_offset; f32 scale; f32 timer; mActor_name_t item; int exchange_flag; int signboard_flag; } mPlayer_main_pickup_c; typedef struct player_main_pickup_jump_s { xyz_t target_pos; xyz_t item_pos; xyz_t item_offset; f32 scale; mActor_name_t item; int ftr_flag; int exchange_flag; } mPlayer_main_pickup_jump_c; typedef struct player_main_pickup_furniture_s { xyz_t target_pos; xyz_t item_pos; xyz_t item_offset; f32 scale; mActor_name_t item; int exchange_flag; } mPlayer_main_pickup_furniture_c; typedef struct player_main_pickup_exchange_s { xyz_t target_pos; mActor_name_t item; int msg_mode; int submenu_flag; } mPlayer_main_pickup_exchange_c; typedef struct player_main_axe_common_s { /* 0x00 */ xyz_t target_pos; /* 0x0C */ mActor_name_t item; /* 0x0E */ u16 axe_damage_no; } mPlayer_main_axe_common_c; typedef struct player_main_swing_axe_s { /* 0x00 */ mPlayer_main_axe_common_c axe_common; /* 0x10 */ int tree_ut_x; /* 0x14 */ int tree_ut_z; /* 0x18 */ int bee_flag; /* 0x1C */ s16 bee_angle_y; /* 0x20 */ int bee_counter; } mPlayer_main_swing_axe_c; typedef struct player_main_reflect_axe_s { /* 0x00 */ mPlayer_main_axe_common_c axe_common; /* 0x10 */ ACTOR* reflect_actor_p; } mPlayer_main_reflect_axe_c; typedef union player_main_axe_u { mPlayer_main_swing_axe_c swing_axe; mPlayer_main_reflect_axe_c reflect_axe; } mPlayer_main_axe_u; typedef struct player_main_broken_axe_s { mPlayer_main_axe_u axe; int break_type; /* mPlayer_AXE_BREAK_FROM_* */ f32 _28; int _2C; } mPlayer_main_broken_axe_c; typedef struct player_main_slip_net_s { f32 _00; } mPlayer_main_slip_net_c; typedef struct player_main_relax_rod_s { int bee_flag; int mosquito_flag; } mPlayer_main_relax_rod_c; typedef struct player_main_dig_scoop_s { xyz_t target_pos; mActor_name_t item; } mPlayer_main_dig_scoop_c; typedef struct player_main_fill_scoop_s { xyz_t target_pos; } mPlayer_main_fill_scoop_c; typedef struct player_main_reflect_scoop_s { xyz_t target_pos; mActor_name_t item; ACTOR* reflect_actor_p; } mPlayer_main_reflect_scoop_c; typedef struct player_main_get_scoop_s { xyz_t target_pos; mActor_name_t item; f32 scale; int success_flag; f32 timer; int msg_mode; int submenu_flag; } mPlayer_main_get_scoop_c; typedef struct player_main_putaway_scoop_s { xyz_t target_pos; mActor_name_t item; f32 scale; int submenu_flag; } mPlayer_main_putaway_scoop_c; typedef struct player_main_putin_scoop_s { xyz_t target_pos; mActor_name_t item; int get_gold_scoop_flag; // TODO: check this } mPlayer_main_putin_scoop_c; typedef struct player_main_talk_s { ACTOR* talk_actor_p; int turn_flag; int feel_type; } mPlayer_main_talk_c; typedef struct player_main_recieve_wait_s { ACTOR* talk_actor_p; int turn_flag; int ret_main_index; mActor_name_t item; int surface_flag; } mPlayer_main_recieve_wait_c; typedef struct player_main_recieve_stretch_s { ACTOR* talk_actor_p; int turn_flag; int ret_main_index; mActor_name_t item; int surface_flag; } mPlayer_main_recieve_stretch_c; typedef struct player_main_recieve_s { ACTOR* talk_actor_p; int turn_flag; int ret_main_index; mActor_name_t item; int surface_flag; } mPlayer_main_recieve_c; typedef struct player_main_recieve_putaway_s { ACTOR* talk_actor_p; int turn_flag; int ret_main_index; int surface_flag; } mPlayer_main_recieve_putaway_c; typedef struct player_main_give_s { ACTOR* talk_actor_p; int turn_flag; int ret_main_index; mActor_name_t item; int surface_flag; } mPlayer_main_give_c; typedef struct player_main_give_wait_s { ACTOR* talk_actor_p; int turn_flag; int ret_main_index; int surface_flag; } mPlayer_main_give_wait_c; typedef struct player_main_takeout_item_s { mPlayer_request_takeout_item_c back_request_data; f32 timer; } mPlayer_main_takeout_item_c; typedef struct player_main_putin_item_s { mPlayer_request_putin_item_c back_request_data; f32 timer; } mPlayer_main_putin_item_c; typedef struct player_main_demo_wait_s { int effect_id; u32 label; } mPlayer_main_demo_wait_c; typedef struct player_main_release_creature_s { int type; int golden_scoop_flag; ACTOR* release_actor_p; f32 timer; int actor_birth_flag; } mPlayer_main_release_creature_c; typedef struct player_main_wash_car_s { int anime_idx; int change_anime_idx; int counter; xyz_t ret_pos; s16 ret_angle_y; ACTOR* control_actor; int ret_order; int effect_flag; } mPlayer_main_wash_car_c; typedef struct player_main_rotate_octagon_s { ACTOR* talk_actor_p; int turn_flag; int return_main_index; } mPlayer_main_rotate_octagon_c; typedef struct player_main_swing_net_s { f32 swing_timer; } mPlayer_main_swing_net_c; typedef struct player_main_pull_net_s { f32 timer; int already_collected; } mPlayer_main_pull_net_c; typedef struct player_main_stop_net_s { int _00; } mPlayer_main_stop_net_c; typedef struct player_main_notice_net_s { int state; int not_full_pocket; int exchange_flag; int already_collected; int end_effect_flag; } mPlayer_main_notice_net_c; typedef struct player_main_putaway_net_s { int exchange_flag; } mPlayer_main_putaway_net_c; typedef struct player_main_cast_rod_s { xyz_t bobber_target_pos; } mPlayer_main_cast_rod_c; typedef struct player_main_notice_rod_s { f32 timer; int state; int not_full_pocket; s16 angle_y; int exchange_flag; int already_collected; int end_effect_flag; } mPlayer_main_notice_rod_c; typedef struct player_main_putaway_rod_s { f32 timer; s16 angle_y; int exchange_flag; } mPlayer_main_putaway_rod_c; typedef struct player_main_demo_wade_s { int dir; xyz_t start_pos; xyz_t end_pos; f32 timer; } mPlayer_main_demo_wade_c; typedef struct player_main_shake_tree_s { xyz_t target_pos; mActor_name_t item; int tree_ut_x; int tree_ut_z; int bee_flag; s16 bee_angle_y; int bee_spawn_timer; } mPlayer_main_shake_tree_c; typedef struct player_main_struggle_pitfall_s { f32 button_presses; f32 target_anim_speed; } mPlayer_main_struggle_pitfall_c; typedef struct player_main_stung_bee_s { f32 timer; } mPlayer_main_stung_bee_c; typedef struct player_main_notice_bee_s { f32 timer; int msg_mode; } mPlayer_main_notice_bee_c; typedef struct player_main_remove_grass_s { xyz_t grass_pos; xyz_t target_pos; } mPlayer_main_remove_grass_c; typedef struct player_main_shock_s { f32 start_time; s16 target_angle_y; f32 timer; f32 end_time; s8 bee_chase_bgm_flag; int axe_flag; int bgm_stop_flag; } mPlayer_main_shock_c; typedef struct player_main_knock_door_s { mPlayer_request_knock_door_c request_data; } mPlayer_main_knock_door_c; typedef struct player_main_change_netcloth_s { ACTOR* talk_actor; int turn_flag; int prev_main_index; mActor_name_t cloth_item; u16 cloth_idx; } mPlayer_main_change_cloth_c; typedef struct player_main_push_snowball_s { u32 label; } mPlayer_main_push_snowball_c; typedef struct player_main_complete_payment_s { f32 timer; int msg_mode; } mPlayer_main_complete_payment_c; typedef struct player_main_fail_emu_s { f32 timer; int msg_mode; } mPlayer_main_fail_emu_c; typedef struct player_main_stung_mosquito_s { u32 label; } mPlayer_main_stung_mosquito_c; typedef struct player_main_notice_mosquito_s { u32 label; f32 timer; int msg_mode; } mPlayer_main_notice_mosquito_c; typedef struct player_main_radio_exercise_s { int cmd; int _04; int _08; int _0C; } mPlayer_main_radio_exercise_c; typedef struct player_main_wade_snowball_s { int dir; xyz_t start_pos; xyz_t end_pos; f32 timer; xyz_t snowball_dist; u32 snowball_label; } mPlayer_main_wade_snowball_c; typedef struct player_main_demo_geton_boat_wade_s { int dir; xyz_t start_pos; xyz_t end_pos; f32 timer; } mPlayer_main_demo_geton_boat_wade_c; typedef struct player_main_demo_geton_boat_sitdown_s { s16 angle_z; } mPlayer_main_demo_geton_boat_sitdown_c; typedef struct player_main_demo_getoff_boat_standup_s { xyz_t pos; s16 angle_y; s16 angle_z; } mPlayer_main_demo_getoff_boat_standup_c; typedef struct player_main_demo_get_golden_item_s { f32 timer; int msg_mode; int type; } mPlayer_main_demo_get_golden_item_c; typedef struct player_main_demo_get_golden_axe_wait_s { f32 timer; } mPlayer_main_demo_get_golden_axe_wait_c; typedef struct player_main_uki_s { xyz_t cast_goal_point; } mPlayer_main_uki_c; typedef struct player_main_putaway_uki_s { f32 unk0; } mPlayer_main_putaway_uki_c; typedef struct player_main_balloon_s { int balloon_shape_type; } mPlayer_main_balloon_c; typedef struct player_main_turn_dash_s { s16 target_angle_y; } mPlayer_main_turn_dash_c; typedef struct player_main_fall_s { f32 morph_speed; int flags; } mPlayer_main_turn_fall_c; typedef union { mPlayer_main_intro_c intro; mPlayer_main_return_demo_c return_demo; mPlayer_main_return_outdoor_c return_outdoor; mPlayer_main_return_outdoor2_c return_outdoor2; mPlayer_main_wait_c wait; mPlayer_main_door_c door; mPlayer_main_outdoor_c outdoor; mPlayer_main_hold_c hold; mPlayer_main_push_c push; mPlayer_main_pull_c pull; mPlayer_main_rotate_furniture_c rotate_furniture; mPlayer_main_open_furniture_c open_furniture; mPlayer_main_lie_bed_c lie_bed; mPlayer_main_wait_bed_c wait_bed; mPlayer_main_sitdown_c sitdown; mPlayer_main_sitdown_wait_c sitdown_wait; mPlayer_main_wade_c wade; mPlayer_main_pickup_c pickup; mPlayer_main_pickup_jump_c pickup_jump; mPlayer_main_pickup_furniture_c pickup_furniture; mPlayer_main_pickup_exchange_c pickup_exchange; mPlayer_main_swing_axe_c swing_axe; mPlayer_main_reflect_axe_c reflect_axe; mPlayer_main_broken_axe_c broken_axe; mPlayer_main_swing_net_c swing_net; mPlayer_main_pull_net_c pull_net; mPlayer_main_stop_net_c stop_net; mPlayer_main_notice_net_c notice_net; mPlayer_main_putaway_net_c putaway_net; mPlayer_main_slip_net_c slip_net; mPlayer_main_cast_rod_c cast_rod; mPlayer_main_relax_rod_c relax_rod; mPlayer_main_notice_rod_c notice_rod; mPlayer_main_putaway_rod_c putaway_rod; mPlayer_main_dig_scoop_c dig_scoop; mPlayer_main_fill_scoop_c fill_scoop; mPlayer_main_reflect_scoop_c reflect_scoop; mPlayer_main_get_scoop_c get_scoop; mPlayer_main_putaway_scoop_c putaway_scoop; mPlayer_main_putin_scoop_c putin_scoop; mPlayer_main_demo_wade_c demo_wade; mPlayer_main_talk_c talk; mPlayer_main_recieve_wait_c recieve_wait; mPlayer_main_recieve_stretch_c recieve_stretch; mPlayer_main_recieve_c recieve; mPlayer_main_recieve_putaway_c recieve_putaway; mPlayer_main_give_c give; mPlayer_main_give_wait_c give_wait; mPlayer_main_takeout_item_c takeout_item; mPlayer_main_putin_item_c putin_item; mPlayer_main_demo_wait_c demo_wait; mPlayer_main_release_creature_c release_creature; mPlayer_main_wash_car_c wash_car; mPlayer_main_rotate_octagon_c rotate_octagon; mPlayer_main_shake_tree_c shake_tree; mPlayer_main_struggle_pitfall_c struggle_pitfall; mPlayer_main_stung_bee_c stung_bee; mPlayer_main_notice_bee_c notice_bee; mPlayer_main_remove_grass_c remove_grass; mPlayer_main_shock_c shock; mPlayer_main_knock_door_c knock_door; mPlayer_main_change_cloth_c change_cloth; mPlayer_main_push_snowball_c push_snowball; mPlayer_main_complete_payment_c complete_payment; mPlayer_main_fail_emu_c fail_emu; mPlayer_main_stung_mosquito_c stung_mosquito; mPlayer_main_notice_mosquito_c notice_mosquito; mPlayer_main_radio_exercise_c radio_exercise; mPlayer_main_wade_snowball_c wade_snowball; mPlayer_main_demo_geton_boat_wade_c demo_geton_boat_wade; mPlayer_main_demo_geton_boat_sitdown_c demo_geton_boat_sitdown; mPlayer_main_demo_getoff_boat_standup_c demo_getoff_boat_standup; mPlayer_main_demo_get_golden_item_c demo_get_golden_item; mPlayer_main_demo_get_golden_axe_wait_c demo_get_golden_axe_wait; mPlayer_main_uki_c uki; mPlayer_main_putaway_uki_c putaway_uki; mPlayer_main_balloon_c balloon; mPlayer_main_turn_dash_c turn_dash; mPlayer_main_turn_fall_c fall; u8 force_size[72]; // TEMP } mPlayer_main_data; typedef struct { int requested_main_index; int requested_index_pending; mPlayer_request_main_data request_main_data; } mPlayer_change_data_from_submenu_c; typedef struct controller_data_s { MCON mcon; s8 trigger_btn_a; s8 btn_a; s8 trigger_btn_b; s8 btn_b; mActor_name_t equipped_item; } mPlayer_Controller_Data_c; typedef struct player_eye_pattern_s { s16 pattern; s16 timer; } mPlayer_eye_pattern_c; /* sizeof(struct player_actor_s) == 0x13A8 */ struct player_actor_s { /* 0x0000 */ ACTOR actor_class; /* 0x0174 */ cKF_SkeletonInfo_R_c keyframe0; /* 0x01E4 */ cKF_SkeletonInfo_R_c keyframe1; /* 0x0252 */ s_xyz joint_data[mPlayer_JOINT_NUM + 1]; /* 0x02F4 */ s_xyz morph_data[mPlayer_JOINT_NUM + 1]; /* 0x0398 */ Mtx work_mtx[2][13]; /* swapped between frames */ /* 0x0A18 */ cKF_SkeletonInfo_R_c item_keyframe; /* for item animations */ /* 0x0A88 */ s_xyz item_joint_data[8]; /* 0x0AB8 */ s_xyz item_morph_data[8]; /* 0x0AE8 */ Mtx item_work_mtx[2][4]; /* swapped between frames */ /* 0x0CE8 */ mPlayer_eye_pattern_c eye_pattern_normal; /* 0x0CEC */ int blink_count; /* 0x0CF0 */ int eye_tex_idx; /* 0x0CF4 */ int mouth_tex_idx; /* 0x0CF8 */ int now_main_index; /* 0x0CFC */ int prev_main_index; /* 0x0D00 */ int changed_main_index; /* 0x0D04 */ int now_item_main_index; /* 0x0D08 */ int requested_main_index; /* 0x0D0C */ int requested_main_index_priority; /* 0x0D10 */ int requested_main_index_changed; /* 0x0D14 */ int settled_requested_main_index_priority; /* 0x0D18 */ mPlayer_main_data main_data; // TODO: Union of many types... /* 0x0D60 */ mPlayer_request_main_data requested_main_index_data; // Union of many types... /* 0x0DA8 */ u8 _0DA8[0x0DB4 - 0x0DA8]; /* unused */ /* 0x0DB4 */ int animation0_idx; /* 0x0DB8 */ int animation1_idx; /* 0x0DBC */ int part_table_idx; /* 0x0DC0 */ int _0DC0; /* 0x0DC4 */ int item_shape_addr[2]; /* 0x0DCC */ int item_anim_addr[2]; /* 0x0DD4 */ int item_shape_segaddr[2]; /* 0x0DDC */ int item_anim_segaddr[2]; /* 0x0DE4 */ int item_shape_type[2]; /* 0x0DEC */ int item_animation_idx[2]; /* 0x0DF4 */ int item_bank_idx; /* 0x0DF8 */ f32 item_scale; /* 0x0DFC */ xyz_t shape_angle_delta; /* 0x0E08 */ xyz_t world_angle_delta; /* 0x0E14 */ s_xyz old_shape_angle; /* 0x0E1A */ s_xyz old_world_angle; /* 0x0E20 */ xyz_t shadow_pos; /* 0x0E2C */ xyz_t axe_pos; /* 0x0E38 */ xyz_t net_pos; /* 0x0E44 */ xyz_t net_top_col_pos; /* 0x0E50 */ xyz_t net_bot_col_pos; /* 0x0E5C */ s_xyz net_angle; /* 0x0E64 */ ACTOR* umbrella_actor; /* 0x0E68 */ int umbrella_state; /* 0x0E6C */ s8 unable_hand_item_in_demo; /* 0x0E6D */ s8 able_hand_all_item_in_demo; /* 0x0E70 */ u32 item_net_catch_label; /* 0x0E74 */ s8 item_net_catch_type; /* 0x0E75 */ s8 item_net_has_catch; /* 0x0E78 */ u32 item_net_catch_label_request_table[mPlayer_NET_CATCH_TABLE_COUNT]; /* 0x0E98 */ s8 item_net_catch_type_request_table[mPlayer_NET_CATCH_TABLE_COUNT]; /* 0x0EA0 */ xyz_t item_net_catch_pos_request_table[mPlayer_NET_CATCH_TABLE_COUNT]; /* 0x0F00 */ f32 item_net_catch_radius_request_table[mPlayer_NET_CATCH_TABLE_COUNT]; /* 0x0F20 */ int item_net_catch_request_use_count; /* 0x0F24 */ u32 item_net_catch_label_request_force; /* 0x0F28 */ s8 item_net_catch_type_request_force; /* 0x0F2C */ int item_net_catch_insect_idx; #if VERSION >= VER_GAFU01_00 /* 0x0F30 */ xyz_t item_net_catch_correct_pos; /* 0x0F3C */ int item_net_catch_correct_pos_set; #endif /* 0x0F30 */ ACTOR* fishing_rod_actor_p; /* 0x0F34 */ xyz_t item_rod_top_pos; /* 0x0F40 */ xyz_t item_rod_virtual_top_pos; /* 0x0F4C */ int item_rod_top_pos_set; /* 0x0F50 */ s16 item_rod_angle_z; /* 0x0F54 */ ClObjTris_c item_axe_tris; /* 0x0F68 */ ClObjTrisElem_c item_axe_tris_elem_tbl[1]; /* 0x0FAC */ ClObjTris_c item_net_tris; /* 0x0FC0 */ ClObjTrisElem_c item_net_tris_elem_tbl[1]; /* 0x1004 */ xyz_t scoop_pos; /* 0x1010 */ ClObjPipe_c col_pipe; /* 0x102C */ xyz_t head_pos; /* 0x1038 */ xyz_t feel_pos; /* 0x1044 */ xyz_t right_hand_pos; /* 0x1050 */ xyz_t right_hand_move; /* 0x105C */ xyz_t left_hand_pos; /* 0x1068 */ MtxF right_hand_mtx; /* 0x10A8 */ MtxF left_hand_mtx; /* 0x10E8 */ xyz_t right_foot_pos; /* 0x10F4 */ xyz_t left_foot_pos; /* 0x1100 */ s_xyz right_foot_angle; /* 0x1106 */ s_xyz left_foot_angle; /* 0x110C */ int draw_effect_idx; // subtract 1 for the effect id /* 0x1110 */ s8 part_table[mPlayer_JOINT_NUM + 1]; /* 0x112B */ s8 item_kind; /* 0x112C */ int item_matrix_set; /* 0x1130 */ xyz_t net_start_pos; /* 0x113C */ xyz_t net_end_pos; /* 0x1148 */ xyz_t other_item_start_pos; /* 0x1154 */ xyz_t other_item_end_pos; /* 0x1160 */ f32 other_item_move_dist; /* 0x1164 */ s_xyz windmill_param; /* 0x116A */ s_xyz windmill_angle; /* 0x1170 */ int balloon_start_pos_set_flag; /* 0x1174 */ ACTOR* balloon_actor; /* 0x1178 */ s16 balloon_lean_angle; /* 0x117A */ s_xyz balloon_angle; /* 0x1180 */ f32 balloon_add_rot_z; /* 0x1184 */ f32 balloon_anim_max_frame; /* 0x1188 */ f32 balloon_anim_speed; /* 0x118C */ int balloon_stop_movement_flag; /* 0x1190 */ s16 ballon_add_rot_x; /* 0x1192 */ s16 balloon_add_rot_x_counter; /* 0x1194 */ f32 balloon_current_frame; /* 0x1198 */ s8 address_able_display; /* 0x119A */ s_xyz head_angle; /* 0x11A0 */ xyz_t force_position; /* 0x11AC */ s_xyz force_angle; /* 0x11B2 */ u8 force_position_angle_flag; /* 0x11B4 */ f32 shake_tree_timer[3]; /* 0x11C0 */ int shake_tree_ut_x[3]; /* 0x11CC */ int shake_tree_ut_z[3]; /* 0x11D8 */ int shake_tree_little[3]; /* 0x11E4 */ xyz_t pitfall_pos; /* 0x11F0 */ int pitfall_flag; /* 0x11F4 */ f32 ripple_timer; /* 0x11F8 */ s8 ripple_foot_idx; // == 0: left, != 0: right /* 0x11F9 */ s8 bgm_volume_mode; /* 0x11FC */ int crash_snowball_for_wade; /* 0x1200 */ xyz_t snowball_dist; /* 0x120C */ int request_wade_dir; /* 0x1210 */ u16 cancel_wade_timer; /* 0x1214 */ int excute_cancel_wade; /* 0x1218 */ f32 geton_boat_wade_border_start; /* 0x121C */ u16 player_frame_counter; /* 0x121E */ s8 bee_chase_bgm_flag; /* 0x121F */ s8 status_for_bee; /* 0x1220 */ u32 able_force_speak_label; /* 0x1224 */ int player_sunburn_rankup; /* 0x1228 */ int player_sunburn_rankdown; /* 0x122C */ s8 radio_exercise_command_ring_buffer[mPlayer_RADIO_EXERCISE_COMMAND_RING_BUFFER_SIZE]; /* 0x1234 */ s8 radio_exercise_ring_buffer_cmd_timer; /* 0x1238 */ int radio_exercise_command_ring_buffer_index; /* 0x123C */ int radio_exercise_continue_cmd_idx; /* 0x1240 */ f32 radio_exercise_cmd_timer; /* 0x1244 */ u32 old_sound_frame_counter; /* 0x1248 */ s16 boat_angleZ; /* 0x124C */ int change_color_request; /* 0x1250 */ int change_color_flag; /* 0x1254 */ f32 change_color_timer; /* 0x1258 */ int change_color_rgb[3]; /* 0x1264 */ int change_color_near; /* 0x1268 */ int change_color_far; /* 0x126C */ int refuse_pickup_knife_fork_flag; /* 0x1270 */ int (*request_main_invade_all_proc)(GAME*, int); /* 0x1274 */ int (*request_main_refuse_all_proc)(GAME*, int); /* 0x1278 */ int (*request_main_return_demo_all_proc)(GAME*, int, f32, int); /* 0x127C */ int (*request_main_wait_all_proc)(GAME*, f32, f32, int, int); /* 0x1280 */ int (*request_main_talk_all_proc)(GAME*, ACTOR*, int, f32, int, int); /* 0x1284 */ int (*request_main_hold_all_proc)(GAME*, int, int, const xyz_t*, f32, int, int); /* 0x1288 */ int (*request_main_recieve_wait_all_proc)(GAME*, ACTOR*, int, int, mActor_name_t, int, int); /* 0x128C */ int (*request_main_give_all_proc)(GAME*, ACTOR*, int, int, mActor_name_t, int, int, int, int); /* 0x1290 */ int (*request_main_sitdown_all_proc)(GAME*, int, const xyz_t*, int, int); /* 0x1294 */ int (*request_main_close_furniture_all_proc)(GAME*, int); /* 0x1298 */ int (*request_main_lie_bed_all_proc)(GAME*, int, const xyz_t*, int, int, int); /* 0x129C */ int (*request_main_hide_all_proc)(GAME*, int); /* 0x12A0 */ int (*request_main_groundhog_proc)(GAME*, int); /* 0x12A4 */ int (*request_main_door_all_proc)(GAME*, const xyz_t*, s16, int, void*, int); /* 0x12A8 */ int (*request_main_outdoor_all_proc)(GAME*, int, int, int); /* 0x12AC */ int (*request_main_wash_car_all_proc)(GAME*, const xyz_t*, const xyz_t*, s16, ACTOR*, int); /* 0x12B0 */ int (*request_main_rotate_octagon_all_proc)(GAME*, ACTOR*, int, int, const xyz_t*, s16, int); /* 0x12B4 */ int (*request_main_throw_money_all_proc)(GAME*, const xyz_t*, s16, int); /* 0x12B8 */ int (*request_main_pray_all_proc)(GAME*, const xyz_t*, s16, int); /* 0x12BC */ int (*request_main_mail_jump_all_proc)(GAME*, const xyz_t*, s16, int); /* 0x12C0 */ int (*request_main_demo_wait_all_proc)(GAME*, int, void*, int); /* 0x12C4 */ int (*request_main_demo_walk_all_proc)(GAME*, f32, f32, f32, int, int); /* 0x12C8 */ int (*request_main_demo_geton_train_all_proc)(GAME*, const xyz_t*, s16, int); /* 0x12CC */ int (*request_main_demo_getoff_train_all_proc)(GAME*, const xyz_t*, s16, int); /* 0x12D0 */ int (*request_main_demo_standing_train_all_proc)(GAME*, int); /* 0x12D4 */ int (*request_main_stung_bee_all_proc)(GAME*, int); /* 0x12D8 */ int (*request_main_shock_all_proc)(GAME*, f32, s16, s8, int, int); /* 0x12DC */ int (*request_main_change_cloth_forNPC_proc)(GAME*, mActor_name_t, u16, int); /* 0x12E0 */ int (*request_main_push_snowball_all_proc)(GAME*, void*, int, int); /* 0x12E4 */ int (*request_main_stung_mosquito_all_proc)(GAME*, void*, int); /* 0x12E8 */ int (*request_main_switch_on_lighthouse_all_proc)(GAME*, const xyz_t*, s16, int); /* 0x12EC */ int (*request_main_demo_geton_boat_all_proc)(GAME*, const xyz_t*, s16, int); /* 0x12F0 */ int (*request_main_demo_getoff_boat_standup_all_proc)(GAME*, const xyz_t*, s16, int); /* 0x12F4 */ int (*request_main_demo_get_golden_item2_all_proc)(GAME*, int, int); /* 0x12F8 */ int (*request_main_demo_get_golden_axe_wait_all_proc)(GAME*, int); /* 0x12FC */ int (*check_request_main_priority_proc)(GAME*, int); /* 0x1300 */ void* (*get_door_label_proc)(GAME*); /* 0x1304 */ int (*Set_Item_net_catch_request_table_proc)(ACTOR*, GAME*, u32, s8, const xyz_t*, f32); /* 0x1308 */ f32 (*Get_Item_net_catch_swing_timer_proc)(ACTOR*, GAME*); /* 0x130C */ int (*Set_Item_net_catch_request_force_proc)(ACTOR*, GAME*, u32, s8); /* 0x1310 */ void (*Set_force_position_angle_proc)(GAME*, const xyz_t*, const s_xyz*, u8); /* 0x1314 */ u8 (*Get_force_position_angle_proc)(GAME*, xyz_t*, s_xyz*); /* 0x1318 */ int (*Get_WadeEndPos_proc)(GAME*, xyz_t*); /* 0x131C */ int (*Check_Label_main_push_snowball_proc)(GAME*, void*); /* 0x1320 */ int (*SetParam_for_push_snowball_proc)(GAME*, const xyz_t*, s16, f32); /* 0x1324 */ int (*able_submenu_request_main_index_proc)(GAME*); /* 0x1328 */ int (*check_able_change_camera_normal_index_proc)(ACTOR*); /* 0x132C */ int (*Check_able_force_speak_label_proc)(GAME*, void*); /* 0x1330 */ int (*check_cancel_request_change_proc_index_proc)(int); /* 0x1334 */ u32 (*Get_item_net_catch_label_proc)(ACTOR*); /* 0x1338 */ int (*Change_item_net_catch_label_proc)(ACTOR*, u32, s8); /* 0x133C */ int (*Check_StopNet_proc)(ACTOR*, xyz_t*); /* 0x1340 */ int (*Check_HitAxe_proc)(ACTOR*, xyz_t*); /* 0x1344 */ int (*Check_VibUnit_OneFrame_proc)(ACTOR*, const xyz_t*); /* 0x1348 */ int (*Check_HitScoop_proc)(ACTOR*, xyz_t*); /* 0x134C */ int (*Check_DigScoop_proc)(ACTOR*, xyz_t*); /* 0x1350 */ int (*check_request_change_item_proc)(GAME*); /* 0x1354 */ int (*Check_RotateOctagon_proc)(GAME*); /* 0x1358 */ int (*Check_end_stung_bee_proc)(ACTOR*); /* 0x135C */ int (*Get_status_for_bee_proc)(ACTOR*); /* 0x1360 */ int (*Set_ScrollDemo_forWade_snowball_proc)(ACTOR*, int, const xyz_t*); /* 0x1364 */ int (*Check_tree_shaken_proc)(ACTOR*, const xyz_t*); /* 0x1368 */ int (*Check_tree_shaken_little_proc)(ACTOR*, const xyz_t*); /* 0x136C */ int (*Check_tree_shaken_big_proc)(ACTOR*, const xyz_t*); /* 0x1370 */ int (*Check_Label_main_wade_snowball_proc)(GAME*, void*); /* 0x1374 */ int (*GetSnowballPos_forWadeSnowball_proc)(ACTOR*, xyz_t*); /* 0x1378 */ int (*CheckCondition_forWadeSnowball_proc)(GAME*, const xyz_t*, s16); /* 0x137C */ mActor_name_t (*Get_itemNo_forWindow_proc)(ACTOR*); /* 0x1380 */ int (*check_cancel_event_without_priority_proc)(GAME*); /* 0x1384 */ int (*CheckScene_AbleSubmenu_proc)(); /* 0x1388 */ int (*Check_stung_mosquito_proc)(GAME*, void*); /* 0x138C */ int a_btn_pressed; /* 0x1390 */ int a_btn_triggers_submenu; /* 0x1394 */ mActor_name_t item_in_front; /* item directly in front of the player */ /* 0x1398 */ xyz_t forward_ut_pos; /* wpos of unit in front of player */ /* 0x13A4 */ s8 update_scene_bg_mode; }; extern void Player_actor_ct(ACTOR*, GAME*); extern void Player_actor_dt(ACTOR*, GAME*); extern void Player_actor_move(ACTOR*, GAME*); extern void Player_actor_draw(ACTOR*, GAME*); #ifdef __cplusplus } #endif #endif