From 58c515d5710258415be6e9f873126365c975f3a1 Mon Sep 17 00:00:00 2001 From: Cuyler36 <24523422+Cuyler36@users.noreply.github.com> Date: Sun, 18 Aug 2024 09:54:54 -0400 Subject: [PATCH] Finish player struct members other than main_data union --- include/m_collision_obj.h | 260 +++++++++++++++++++------------------- include/m_player.h | 44 ++++++- 2 files changed, 165 insertions(+), 139 deletions(-) diff --git a/include/m_collision_obj.h b/include/m_collision_obj.h index 55539fcc..66255085 100644 --- a/include/m_collision_obj.h +++ b/include/m_collision_obj.h @@ -11,216 +11,210 @@ extern "C" { #endif enum collision_type { - ClObj_TYPE_JNT_SPH, - ClObj_TYPE_PIPE, - ClObj_TYPE_TRIS, + ClObj_TYPE_JNT_SPH, + ClObj_TYPE_PIPE, + ClObj_TYPE_TRIS, - ClObj_TYPE_NUM + ClObj_TYPE_NUM }; -enum weight{ - MASS_IMMOVABLE, - MASS_HEAVY, - MASS_NORMAL -}; +enum weight { MASS_IMMOVABLE, MASS_HEAVY, MASS_NORMAL }; #define MASSTYPE_IMMOVABLE 0xFF #define MASSTYPE_HEAVY 0xFE typedef struct collision_obj_s { - ACTOR* owner_actor; // actor which owns this collision object - ACTOR* collided_actor; // actor which the owner collided with or NULL + ACTOR* owner_actor; // actor which owns this collision object + ACTOR* collided_actor; // actor which the owner collided with or NULL - u8 collision_flags0; - u8 collision_flags1; + u8 collision_flags0; + u8 collision_flags1; - u8 collision_type; + u8 collision_type; } ClObj_c; typedef struct collision_elem_s { - u8 flags; + u8 flags; } ClObjElem_c; typedef struct collision_pipe_attribute_s { - Math3D_pipe_c pipe; + Math3D_pipe_c pipe; } ClObjPipeAttr_c; typedef struct collision_pipe_s { - ClObj_c collision_obj; - ClObjElem_c element; - ClObjPipeAttr_c attribute; + ClObj_c collision_obj; + ClObjElem_c element; + ClObjPipeAttr_c attribute; } ClObjPipe_c; /* static data */ typedef struct collision_obj_data_s { - u8 collision_flags0; - u8 collision_flags1; - u8 type; + u8 collision_flags0; + u8 collision_flags1; + u8 type; } ClObjData_c; typedef struct collision_obj_elem_data_s { - u8 flags; + u8 flags; } ClObjElemData_c; typedef struct collision_obj_pipe_attr_data_s { - Math3D_pipe_c pipe; + Math3D_pipe_c pipe; } ClObjPipeAttrData_c; typedef struct collision_obj_pipe_data_s { - ClObjData_c collision_data; - ClObjElemData_c element_data; - ClObjPipeAttrData_c attribute_data; + ClObjData_c collision_data; + ClObjElemData_c element_data; + ClObjPipeAttrData_c attribute_data; } ClObjPipeData_c; -typedef struct collision_check_tris_element_attr_data_s{ - xyz_t vtx[3]; -}ClObjTrisElemAttrData_c; +typedef struct collision_check_tris_element_attr_data_s { + xyz_t vtx[3]; +} ClObjTrisElemAttrData_c; -typedef struct collision_check_tris_element_data_s{ - ClObjElemData_c element; - ClObjTrisElemAttrData_c data; -}ClObjTrisElemData_c; +typedef struct collision_check_tris_element_data_s { + ClObjElemData_c element; + ClObjTrisElemAttrData_c data; +} ClObjTrisElemData_c; -typedef struct collision_check_tris_element_s{ +typedef struct collision_check_tris_element_s { Math3D_triangle_c tri; xyz_t t; -}ClObjTrisElemAttr_c; +} ClObjTrisElemAttr_c; -typedef struct collision_tris_elem_s{ - ClObjElem_c element; - ClObjTrisElemAttr_c attribute; -}ClObjTrisElem_c; +typedef struct collision_tris_elem_s { + ClObjElem_c element; + ClObjTrisElemAttr_c attribute; +} ClObjTrisElem_c; typedef struct collision_tris_s { - ClObj_c collision_obj; - int count; - ClObjTrisElem_c* elements; + ClObj_c collision_obj; + int count; + ClObjTrisElem_c* elements; } ClObjTris_c; typedef struct ClObjTris_Init { - ClObjData_c data; - int count; - ClObjTrisElemData_c* elem_data; + ClObjData_c data; + int count; + ClObjTrisElemData_c* elem_data; } ClObjTrisData_c; -typedef struct collision_obj_joint_sphere_elem_attribute_s{ +typedef struct collision_obj_joint_sphere_elem_attribute_s { Math3D_sphere_c s1; Math3D_sphere_c s2; f32 unk8; u8 unk14; -}ClObjJntSphElemAttr_c; +} ClObjJntSphElemAttr_c; -typedef struct collision_joint_sphere_elem_s{ - ClObjElem_c element; - ClObjJntSphElemAttr_c attribute; -}ClObjJntSphElem_c; +typedef struct collision_joint_sphere_elem_s { + ClObjElem_c element; + ClObjJntSphElemAttr_c attribute; +} ClObjJntSphElem_c; typedef struct collision_joint_sphere_s { - ClObj_c collision_obj; - int count; - ClObjJntSphElem_c* elements; -}ClObjJntSph_c; + ClObj_c collision_obj; + int count; + ClObjJntSphElem_c* elements; +} ClObjJntSph_c; #define Cl_COLLIDER_NUM 50 typedef struct collision_check_s { - u16 flags; - int collider_num; - ClObj_c* collider_table[Cl_COLLIDER_NUM]; + u16 flags; + int collider_num; + ClObj_c* collider_table[Cl_COLLIDER_NUM]; } CollisionCheck_c; /* This appears to again be copy-paste from OoT? */ typedef struct status_s { - xyz_t collision_vec; - s16 radius; - s16 height; - s16 offset; + xyz_t collision_vec; + s16 radius; + s16 height; + s16 offset; - u8 weight; - u8 hp; - u8 damage; + u8 weight; + u8 hp; + u8 damage; - u8 damage_effect; - u8 at_hit_effect; - u8 ac_hit_effect; + u8 damage_effect; + u8 at_hit_effect; + u8 ac_hit_effect; } Status_c; typedef struct status_data_s { - u8 health; // assuming this is inherited from OoT, seems largely unused - s16 radius; - s16 height; - s16 offset; - u8 weight; + u8 health; // assuming this is inherited from OoT, seems largely unused + s16 radius; + s16 height; + s16 offset; + u8 weight; } StatusData_c; typedef struct mco_work_s { - int count; - ClObj_c* colliders[10]; + int count; + ClObj_c* colliders[10]; } McoWork; extern McoWork mco_work; - -typedef void (*CollisionOCFunction)(GAME*, CollisionCheck_c*, ClObj_c*,ClObj_c*); +typedef void (*CollisionOCFunction)(GAME*, CollisionCheck_c*, ClObj_c*, ClObj_c*); typedef int (*CollisionOCClear)(GAME*, ClObj_c*); typedef int (*CollisionClearFunction)(GAME*, ClObj_c*); -extern void CollisionCheck_workTrisElemCenter(ClObjTrisElem_c *, xyz_t *); -extern int ClObj_ct(GAME *, ClObj_c *); -extern int ClObj_dt(GAME *, ClObj_c *); -extern int ClObj_set4(GAME *, ClObj_c *, ACTOR *, ClObjData_c *); -extern void ClObj_OCClear(GAME *, ClObj_c *); -extern int ClObjElem_ct(ClObjElem_c *); -extern int ClObjElem_set(ClObjElem_c *, ClObjElemData_c *); -extern void ClObjElem_OCClear(GAME *, ClObjElem_c *); -extern int ClObjJntSphElem_OCClear(GAME *, ClObjJntSphElem_c *); -extern int ClObjJntSph_OCClear(GAME *, ClObj_c *); -extern int ClObjPipeAttr_ct(GAME *, ClObjPipeAttr_c *); -extern int ClObjPipeAttr_dt(GAME *, ClObjPipeAttr_c *); -extern int ClObjPipeAttr_set(GAME *, ClObjPipeAttr_c *, ClObjPipeAttr_c *); -extern int ClObjPipe_ct(GAME *, ClObjPipe_c *); -extern int ClObjPipe_dt(GAME *, ClObjPipe_c *); -extern int ClObjPipe_set5(GAME *, ClObjPipe_c *, ACTOR *, ClObjPipeData_c *); -extern int ClObjPipe_OCClear(GAME *, ClObj_c *); -extern int ClObjTrisElemAttr_ct(GAME *, ClObjTrisElemAttr_c *); -extern int ClObjTrisElemAttr_dt(GAME *, ClObjTrisElemAttr_c *); -extern int ClObjTrisElemAttr_set(GAME *, ClObjTrisElemAttr_c *, ClObjTrisElemAttrData_c *); -extern int ClObjTrisElem_ct(GAME *, ClObjTrisElem_c *); -extern int ClObjTrisElem_dt(GAME *, ClObjTrisElem_c *); -extern int ClObjTrisElem_set(GAME *, ClObjTrisElem_c *, ClObjTrisElemData_c *); -extern int ClObjTrisElem_OCClear(GAME *, ClObjTrisElem_c *); -extern int ClObjTris_ct(GAME *, ClObjTris_c *); -extern int ClObjTris_dt_nzf(GAME *, ClObjTris_c *); -extern int ClObjTris_set5_nzm(GAME *, ClObjTris_c *, ACTOR *, ClObjTrisData_c *, ClObjTrisElem_c *); -extern int ClObjTris_OCClear(GAME *, ClObj_c *); -extern void CollisionCheck_ct(GAME *, CollisionCheck_c *); -extern void CollisionCheck_dt(GAME *, CollisionCheck_c *); -extern void CollisionCheck_clear(GAME *, CollisionCheck_c *); -extern int CollisionCheck_setOC(GAME *, CollisionCheck_c *, ClObj_c *); +extern void CollisionCheck_workTrisElemCenter(ClObjTrisElem_c*, xyz_t*); +extern int ClObj_ct(GAME*, ClObj_c*); +extern int ClObj_dt(GAME*, ClObj_c*); +extern int ClObj_set4(GAME*, ClObj_c*, ACTOR*, ClObjData_c*); +extern void ClObj_OCClear(GAME*, ClObj_c*); +extern int ClObjElem_ct(ClObjElem_c*); +extern int ClObjElem_set(ClObjElem_c*, ClObjElemData_c*); +extern void ClObjElem_OCClear(GAME*, ClObjElem_c*); +extern int ClObjJntSphElem_OCClear(GAME*, ClObjJntSphElem_c*); +extern int ClObjJntSph_OCClear(GAME*, ClObj_c*); +extern int ClObjPipeAttr_ct(GAME*, ClObjPipeAttr_c*); +extern int ClObjPipeAttr_dt(GAME*, ClObjPipeAttr_c*); +extern int ClObjPipeAttr_set(GAME*, ClObjPipeAttr_c*, ClObjPipeAttr_c*); +extern int ClObjPipe_ct(GAME*, ClObjPipe_c*); +extern int ClObjPipe_dt(GAME*, ClObjPipe_c*); +extern int ClObjPipe_set5(GAME*, ClObjPipe_c*, ACTOR*, ClObjPipeData_c*); +extern int ClObjPipe_OCClear(GAME*, ClObj_c*); +extern int ClObjTrisElemAttr_ct(GAME*, ClObjTrisElemAttr_c*); +extern int ClObjTrisElemAttr_dt(GAME*, ClObjTrisElemAttr_c*); +extern int ClObjTrisElemAttr_set(GAME*, ClObjTrisElemAttr_c*, ClObjTrisElemAttrData_c*); +extern int ClObjTrisElem_ct(GAME*, ClObjTrisElem_c*); +extern int ClObjTrisElem_dt(GAME*, ClObjTrisElem_c*); +extern int ClObjTrisElem_set(GAME*, ClObjTrisElem_c*, ClObjTrisElemData_c*); +extern int ClObjTrisElem_OCClear(GAME*, ClObjTrisElem_c*); +extern int ClObjTris_ct(GAME*, ClObjTris_c*); +extern int ClObjTris_dt_nzf(GAME*, ClObjTris_c*); +extern int ClObjTris_set5_nzm(GAME*, ClObjTris_c*, ACTOR*, ClObjTrisData_c*, ClObjTrisElem_c*); +extern int ClObjTris_OCClear(GAME*, ClObj_c*); +extern void CollisionCheck_ct(GAME*, CollisionCheck_c*); +extern void CollisionCheck_dt(GAME*, CollisionCheck_c*); +extern void CollisionCheck_clear(GAME*, CollisionCheck_c*); +extern int CollisionCheck_setOC(GAME*, CollisionCheck_c*, ClObj_c*); extern int get_type(u8); -extern void CollisionCheck_setOC_HitInfo(ClObj_c *, ClObjElem_c *, xyz_t *, ClObj_c *, ClObjElem_c *, xyz_t *, f32); -extern void CollisionCheck_OC_JntSph_Vs_JntSph(GAME *, CollisionCheck_c *, ClObj_c *, ClObj_c *); -extern void CollisionCheck_OC_JntSph_Vs_Pipe(GAME *, CollisionCheck_c *, ClObj_c *, ClObj_c *); -extern void CollisionCheck_OC_Pipe_Vs_JntSph(GAME *, CollisionCheck_c *, ClObj_c *, ClObj_c *); -extern void CollisionCheck_OC_Pipe_Vs_Pipe(GAME *, CollisionCheck_c *, ClObj_c *, ClObj_c *); -extern int CollisionCheck_Check1ClObjNoOC(ClObj_c *); -extern int CollisionCheck_Check2ClObjNoOC(ClObj_c *, ClObj_c *); -extern void CollisionCheck_OC(GAME *, CollisionCheck_c *); -extern void CollisionCheck_setOCC_HitInfo(GAME *, ClObj_c *, ClObjTrisElem_c *, xyz_t *, ClObj_c *, ClObjElem_c *, xyz_t *, xyz_t *); -extern void CollisionCheck_OCC_Tris_Vs_JntSph(GAME *, CollisionCheck_c *, ClObjTris_c *, ClObjJntSph_c *); -extern void CollisionCheck_OCC_Tris_Vs_Pipe(GAME *, CollisionCheck_c *, ClObjTris_c *, ClObjPipe_c *); -extern int CollisionCheck_Check1ClObjNoOCC(ClObj_c *); -extern void CollisionCheck_OCC(GAME *, CollisionCheck_c *); -extern int ClObjTrisElem_OCCClear(GAME *, ClObjTrisElem_c *); -extern int ClObj_OCCClear(GAME *, ClObj_c *); -extern int ClObjTris_OCCClear(GAME *, ClObj_c *); -extern int CollisionCheck_setOCC(GAME *, CollisionCheck_c *, ClObj_c *); -extern void CollisionCheck_Status_ct(Status_c *); -extern void CollisionCheck_Status_Clear(Status_c *); -extern void CollisionCheck_Status_set3(Status_c *, StatusData_c *); -extern int CollisionCheck_Uty_ActorWorldPosSetPipeC(ACTOR *, ClObjPipe_c *); - - +extern void CollisionCheck_setOC_HitInfo(ClObj_c*, ClObjElem_c*, xyz_t*, ClObj_c*, ClObjElem_c*, xyz_t*, f32); +extern void CollisionCheck_OC_JntSph_Vs_JntSph(GAME*, CollisionCheck_c*, ClObj_c*, ClObj_c*); +extern void CollisionCheck_OC_JntSph_Vs_Pipe(GAME*, CollisionCheck_c*, ClObj_c*, ClObj_c*); +extern void CollisionCheck_OC_Pipe_Vs_JntSph(GAME*, CollisionCheck_c*, ClObj_c*, ClObj_c*); +extern void CollisionCheck_OC_Pipe_Vs_Pipe(GAME*, CollisionCheck_c*, ClObj_c*, ClObj_c*); +extern int CollisionCheck_Check1ClObjNoOC(ClObj_c*); +extern int CollisionCheck_Check2ClObjNoOC(ClObj_c*, ClObj_c*); +extern void CollisionCheck_OC(GAME*, CollisionCheck_c*); +extern void CollisionCheck_setOCC_HitInfo(GAME*, ClObj_c*, ClObjTrisElem_c*, xyz_t*, ClObj_c*, ClObjElem_c*, xyz_t*, + xyz_t*); +extern void CollisionCheck_OCC_Tris_Vs_JntSph(GAME*, CollisionCheck_c*, ClObjTris_c*, ClObjJntSph_c*); +extern void CollisionCheck_OCC_Tris_Vs_Pipe(GAME*, CollisionCheck_c*, ClObjTris_c*, ClObjPipe_c*); +extern int CollisionCheck_Check1ClObjNoOCC(ClObj_c*); +extern void CollisionCheck_OCC(GAME*, CollisionCheck_c*); +extern int ClObjTrisElem_OCCClear(GAME*, ClObjTrisElem_c*); +extern int ClObj_OCCClear(GAME*, ClObj_c*); +extern int ClObjTris_OCCClear(GAME*, ClObj_c*); +extern int CollisionCheck_setOCC(GAME*, CollisionCheck_c*, ClObj_c*); +extern void CollisionCheck_Status_ct(Status_c*); +extern void CollisionCheck_Status_Clear(Status_c*); +extern void CollisionCheck_Status_set3(Status_c*, StatusData_c*); +extern int CollisionCheck_Uty_ActorWorldPosSetPipeC(ACTOR*, ClObjPipe_c*); #ifdef __cplusplus } diff --git a/include/m_player.h b/include/m_player.h index c02169eb..8bad75dd 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -1382,7 +1382,7 @@ struct player_actor_s { /* 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]; /* TODO: finish */ + /* 0x0DA8 */ u8 _0DA8[0x0DB4 - 0x0DA8]; /* unused */ /* 0x0DB4 */ int animation0_idx; /* 0x0DB8 */ int animation1_idx; /* 0x0DBC */ int _0DBC; @@ -1402,7 +1402,29 @@ struct player_actor_s { /* 0x0E50 */ xyz_t net_bot_col_pos; /* 0x0E5C */ s_xyz net_angle; /* 0x0E64 */ ACTOR* umbrella_actor; - /* 0x0E68 */ u8 _0E68[0x1004 - 0x0E68]; // TODO + /* 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[8]; + /* 0x0E98 */ s8 item_net_catch_type_request_table[8]; + /* 0x0EA0 */ xyz_t item_net_catch_pos_request_table[8]; + /* 0x0F00 */ f32 item_net_catch_radius_request_table[8]; + /* 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; + /* 0x0F30 */ ACTOR* fishing_rod_actor_p; + /* 0x0F34 */ xyz_t item_rod_top_pos; + /* 0x0F40 */ xyz_t item_rod_virtual_top_pos; + /* 0x0F4C */ int update_item_rod_top_pos; + /* 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; @@ -1429,8 +1451,16 @@ struct player_actor_s { /* 0x116A */ s_xyz windmill_angle; /* 0x1170 */ int balloon_start_pos_set_flag; /* 0x1174 */ ACTOR* balloon_actor; - /* 0x1178 */ u8 _1178[0x1198 - 0x1178]; // TODO - /* 0x1198 */ s8 _1198; + /* 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; @@ -1439,8 +1469,10 @@ struct player_actor_s { /* 0x11C0 */ int shake_tree_ut_x[3]; /* 0x11CC */ int shake_tree_ut_z[3]; /* 0x11D8 */ int shake_tree_little[3]; - /* 0x11E4 */ u8 _11E4[0x11F8 - 0x11E4]; // TODO - /* 0x11F8 */ s8 _11F8; + /* 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;