diff options
| author | Max Roncace <me@caseif.net> | 2025-05-22 09:22:16 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-22 16:22:16 +0300 |
| commit | 3c2a99e701934bcde95e55420d993ffa3f635ef2 (patch) | |
| tree | 2e2876b70e3d8d12d765eeef80f5f7ac596c175c /include/d | |
| parent | 15463d89bf44c73f613e7a72d535c3bb50663a36 (diff) | |
d_a_mg_fish matching (#2450)
Diffstat (limited to 'include/d')
| -rw-r--r-- | include/d/actor/d_a_mg_fish.h | 114 | ||||
| -rw-r--r-- | include/d/actor/d_a_mg_rod.h | 103 | ||||
| -rw-r--r-- | include/d/actor/d_a_player.h | 7 |
3 files changed, 171 insertions, 53 deletions
diff --git a/include/d/actor/d_a_mg_fish.h b/include/d/actor/d_a_mg_fish.h index 655ddacc9f..2267cb8738 100644 --- a/include/d/actor/d_a_mg_fish.h +++ b/include/d/actor/d_a_mg_fish.h @@ -7,11 +7,16 @@ #include "d/d_bg_s_acch.h" #include "d/d_cc_d.h" +/** + * @ingroup actors-unsorted + * @class mf_ke_s + * @brief Fishing line ("keburu") + * + * @details + */ struct mf_ke_s { - /* 80535F74 */ ~mf_ke_s(); - /* 80535FD4 */ mf_ke_s(); - - /* 0x00 */ u8 field_0x0[0x48]; + /* 0x00 */ cXyz mControlPoints[5]; + /* 0x3C */ cXyz mMovementDir; }; /** @@ -22,59 +27,86 @@ struct mf_ke_s { * @details * */ -class mg_fish_class : public fopEn_enemy_c { +class mg_fish_class { public: + /* 0x0 */ fopEn_enemy_c actor; /* 0x5AC */ request_of_phase_process_class mPhaseReq; - /* 0x5B4 */ s16 field_0x5b4; - /* 0x5B6 */ s16 field_0x5b6; - /* 0x5B8 */ s16 field_0x5b8; - /* 0x5BC */ f32 field_0x5bc; - /* 0x5C0 */ cXyz field_0x5c0; - /* 0x5CC */ u8 field_0x5cc[0xc]; - /* 0x5D8 */ f32 field_0x5d8; - /* 0x5DC */ f32 field_0x5dc; + /* 0x5B4 */ s16 mBobTimer; + /* 0x5B6 */ s16 mCurAction; + /* 0x5B8 */ s16 mActionPhase; + /* 0x5BC */ f32 mJointScale; + /* 0x5C0 */ cXyz mNextPos; + /* 0x5CC */ s16 mMovementYaw; + /* 0x5CE */ s16 mMovementPitch; + /* 0x5D0 */ s16 mMaxStep; + /* 0x5D2 */ s16 mCurSwimStep; + /* 0x5D4 */ f32 field_0x5d4; + /* 0x5D8 */ f32 mSurfaceY; + /* 0x5DC */ f32 mGroundY; /* 0x5E0 */ cXyz field_0x5e0; /* 0x5EC */ f32 field_0x5ec; - /* 0x5F0 */ f32 field_0x5f0; - /* 0x5F4 */ u8 field_0x5f4[8]; + /* 0x5F0 */ f32 mDistToPlayer; + /* 0x5F4 */ s16 mYawToPlayer; + /* 0x5F6 */ s16 field_0x5f6; + /* 0x5F8 */ s16 field_0x5f8; /* 0x5FC */ char* mResName; /* 0x600 */ mDoExt_McaMorf* mpMorf; - /* 0x604 */ J3DAnmTransform* field_0x604; - /* 0x608 */ u8 field_0x608[4]; + /* 0x604 */ J3DAnmTransform* mAnmTransform; + /* 0x608 */ u32 mShadowId; /* 0x60C */ int mAnmID; /* 0x610 */ mDoExt_brkAnm* mpBrkAnm; /* 0x614 */ J3DModel* mpModel[3]; /* 0x620 */ mDoExt_btpAnm* mpBtpAnm; - /* 0x624 */ s16 field_0x624; - /* 0x626 */ u8 field_0x626[2]; - /* 0x628 */ s16 field_0x628; - /* 0x62A */ u8 field_0x62a[8]; - /* 0x632 */ u16 field_0x632; + /* 0x624 */ s16 field_0x624[5]; + /* 0x62E */ s16 field_0x62e; + /* 0x630 */ s16 mRemainingHookTime; + /* 0x632 */ s16 field_0x632; /* 0x634 */ u8 mGedouKind; /* 0x635 */ u8 mKind2; /* 0x638 */ cXyz field_0x638; - /* 0x644 */ u16 field_0x644; - /* 0x646 */ u8 field_0x646[0x1e]; - /* 0x664 */ cXyz field_0x664[10]; - /* 0x6DC */ csXyz field_0x6dc[10]; - /* 0x718 */ s16 field_0x718[10]; - /* 0x72C */ int field_0x72c; - /* 0x730 */ s16 field_0x730; - /* 0x732 */ u8 field_0x732[0xe]; + /* 0x644 */ s16 mRotZ; + /* 0x648 */ u32 mBaitId; + /* 0x64C */ u32 mRodId; + /* 0x650 */ f32 field_0x650; + /* 0x654 */ f32 field_0x654; + /* 0x658 */ s8 mHookedState; + /* 0x659 */ s8 field_0x659; + /* 0x65A */ s8 field_0x65a; + /* 0x65B */ u8 field_0x65b; + /* 0x65C */ u8 field_0x65c; + /* 0x65D */ u8 field_0x65d; + /* 0x660 */ f32 field_0x660; + /* 0x664 */ cXyz mJointTranslations[10]; + /* 0x6DC */ csXyz mJointRotations[10]; + /* 0x718 */ s16 jointYaws1[10]; + /* 0x72C */ s32 mNumJoints; + /* 0x730 */ s16 jointYaws2[6]; + /* 0x73C */ f32 field_0x73c; /* 0x740 */ f32 field_0x740; - /* 0x744 */ u8 field_0x744[0x10]; + /* 0x744 */ f32 mBobAmp; + /* 0x748 */ f32 field_0x748; + /* 0x74C */ f32 field_0x74c; + /* 0x750 */ u8 field_0x750; /* 0x754 */ mf_ke_s field_0x754[2]; - /* 0x7E4 */ mDoExt_3DlineMat0_c field_0x7e4; + /* 0x7E4 */ mDoExt_3DlineMat0_c mLineMat; /* 0x800 */ Z2Creature mSound; /* 0x890 */ dBgS_AcchCir mAcchCir; /* 0x8D0 */ dBgS_ObjAcch mAcch; /* 0xAA8 */ dCcD_Stts mCcStatus; /* 0xAE4 */ dCcD_Cyl mCcCyl; - /* 0xC20 */ u8 field_0xc20[0x1c]; + /* 0xC20 */ u32 field_0xc20; + /* 0xC24 */ u8 field_0xc24[0xc28 - 0xc24]; + /* 0xC28 */ s32 mEmitterIds[3]; + /* 0xC34 */ u32 field_0xc34; + /* 0xC38 */ u32 field_0xc38; /* 0xC3C */ u8 field_0xc3c; - /* 0xC3D */ u8 field_0xc3d[0xb]; + /* 0xC3D */ u8 mCaughtType; + /* 0xC3E */ u8 field_0xc3e; + /* 0xC3F */ u8 field_0xc3f; + /* 0xC40 */ f32 field_0xc40; + /* 0xC44 */ u8 field_0xc44; /* 0xC48 */ J3DJointCallBack mNodeCallBack; - /* 0xC4C */ u32 field_0xc4c; + /* 0xC4C */ u32 mSkullfishId; }; STATIC_ASSERT(sizeof(mg_fish_class) == 0xC50); @@ -82,7 +114,17 @@ STATIC_ASSERT(sizeof(mg_fish_class) == 0xC50); class daMg_Fish_HIO_c { public: /* 80529D2C */ daMg_Fish_HIO_c(); - /* 805360A8 */ ~daMg_Fish_HIO_c(); + /* 805360A8 */ virtual ~daMg_Fish_HIO_c() {} + + /* 0x4 */ s8 field_0x4; + /* 0x8 */ f32 field_0x8; + /* 0xC */ f32 field_0xc; + /* 0x10 */ f32 field_0x10; + /* 0x14 */ f32 field_0x14; + /* 0x18 */ u8 field_0x18; + /* 0x19 */ u8 field_0x19; + /* 0x1A */ u8 field_0x1a; + /* 0x1B */ u8 field_0x1b; }; diff --git a/include/d/actor/d_a_mg_rod.h b/include/d/actor/d_a_mg_rod.h index ce70fe8474..fb30fa8c35 100644 --- a/include/d/actor/d_a_mg_rod.h +++ b/include/d/actor/d_a_mg_rod.h @@ -9,7 +9,14 @@ #include "f_op/f_op_actor_mng.h" struct mg_rod_s { - /* 0x0 */ cXyz field_0x0[16]; + /* 0x0 */ u8 field_0x0[0x14 - 0x0]; + /* 0x14 */ void* field_0x14; + /* 0x18 */ u8 field_0x18[0x2E - 0x18]; + /* 0x2E */ s16 field_0x2e; + /* 0x30 */ s16 field_0x30; + /* 0x32 */ u8 field_0x32[0x54 - 0x32]; + /* 0x54 */ u32 field_0x54; + /* 0x58 */ u8 field_0x58[0xC0 - 0x58]; }; struct mg_line_s { @@ -43,7 +50,14 @@ public: bool checkRodEquipPermission() { return field_0x1514 == 0; } bool checkReelSpin() { return field_0x14f0 != 0; } - /* 0x0568 */ u8 field_0x568[0x590 - 0x568]; + /* 0x0568 */ u8 field_0x568[0x57A - 0x568]; + /* 0x057A */ s16 field_0x57a; + /* 0x057C */ u8 field_0x57c[0x57E - 0x57C]; + /* 0x057E */ s16 field_0x57e; + /* 0x0580 */ s16 field_0x580; + /* 0x0582 */ u8 field_0x582[0x584 - 0x582]; + /* 0x0584 */ s16 field_0x584; + /* 0x0586 */ u8 field_0x586[0x590 - 0x586]; /* 0x0590 */ f32 field_0x590; /* 0x0594 */ u8 field_0x594[0x5A4 - 0x594]; /* 0x05A4 */ mg_rod_s field_0x5a4; @@ -53,9 +67,11 @@ public: /* 0x06C4 */ u8 field_0x6c4[0x6C8 - 0x6C4]; /* 0x06C8 */ cXyz field_0x6c8; /* 0x06D4 */ cXyz field_0x6d4; - /* 0x06E0 */ u8 field_0x6e0[0x6EC - 0x6E0]; + /* 0x06E0 */ s16 field_0x6e0; + /* 0x06E2 */ u8 field_0x6e2[0x6EC - 0x6E2]; /* 0x06EC */ cXyz field_0x6ec; - /* 0x06F8 */ u8 field_0x6f8[0x71C - 0x6F8]; + /* 0x06F8 */ f32 field_0x6f8; + /* 0x06FC */ u8 field_0x6fc[0x71C - 0x6FC]; /* 0x071C */ csXyz field_0x71c[6]; /* 0x0740 */ u8 field_0x740[0x744 - 0x740]; /* 0x0744 */ cXyz field_0x744; @@ -63,36 +79,91 @@ public: /* 0x075C */ u8 field_0x75c[0x764 - 0x75C]; /* 0x0764 */ cXyz field_0x764; /* 0x0770 */ mg_line_s field_0x770; - /* 0x0C20 */ u8 field_0xc20[0xF7C - 0xC20]; + /* 0x0C20 */ u8 field_0xc20[0xF5C - 0xC20]; + /* 0x0F5C */ f32 field_0xf5c; + /* 0x0F60 */ f32 field_0xf60; + /* 0x0F64 */ f32 field_0xf64; + /* 0x0F68 */ u8 field_0xf68[0xF7C - 0xF68]; /* 0x0F7C */ s16 field_0xf7c; /* 0x0F7E */ s16 field_0xf7e; - /* 0x0F80 */ u8 field_0xf80[0xFAC - 0xF80]; + /* 0x0F80 */ s8 field_0xf80; + /* 0x0F81 */ u8 field_0xf81[0xFAC - 0xF81]; /* 0x0FAC */ mg_hook_s field_0xfac[2]; - /* 0x0FEC */ u8 field_0xfec[0x100D - 0xFEC]; + /* 0x0FEC */ u8 field_0xfec[0xFFC - 0xFEC]; + /* 0x0FFC */ s16 field_0xffc; + /* 0x0FFE */ u8 field_0xffe[2]; + /* 0x1000 */ s16 field_0x1000; + /* 0x1002 */ u8 field_0x1002[2]; + /* 0x1004 */ s16 field_0x1004; + /* 0x1006 */ s16 field_0x1006; + /* 0x1008 */ s8 field_0x1008; + /* 0x1009 */ s8 field_0x1009; + /* 0x100A */ s8 field_0x100a; + /* 0x100B */ u8 field_0x100b[1]; + /* 0x100C */ u8 field_0x100c; /* 0x100D */ s8 field_0x100d; - /* 0x100E */ u8 field_0x100e[0x1060 - 0x100E]; + /* 0x100E */ u8 field_0x100e[1]; + /* 0x100F */ s8 field_0x100f; + /* 0x1010 */ u8 field_0x1010[0x102C - 0x1010]; + /* 0x102C */ s8 field_0x102c; + /* 0x102D */ s8 field_0x102d; + /* 0x102E */ u8 field_0x102e[0x1060 - 0x102E]; /* 0x1060 */ cXyz mHookPosition; /* 0x106C */ cXyz field_0x106c; /* 0x1078 */ cXyz field_0x1078; /* 0x1084 */ csXyz field_0x1084; - /* 0x108A */ u8 field_0x108a[0x10B4 - 0x108A]; + /* 0x108A */ u8 field_0x108a[0x1090 - 0x108A]; + /* 0x1090 */ f32 field_0x1090; + /* 0x1094 */ u8 field_0x1094[0x10A4 - 0x1094]; + /* 0x10A4 */ s8 field_0x10a4; + /* 0x10A5 */ s8 field_0x10a5; + /* 0x10A6 */ s8 field_0x10a6; + /* 0x10A7 */ s8 field_0x10a7; + /* 0x10A8 */ s8 field_0x10a8; + /* 0x10A9 */ s8 field_0x10a9; + /* 0x10AA */ s8 field_0x10aa; + /* 0x10AB */ u8 field_0x10ab; + /* 0x10AC */ s32 mFishId; + /* 0x10B0 */ s16 field_0x10b0; + /* 0x10B2 */ u8 field_0x10b2[2]; /* 0x10B4 */ Z2Creature field_0x10b4; - /* 0x1144 */ u8 field_0x1144[0x1190 - 0x1144]; + /* 0x1144 */ u8 field_0x1144[0x114A - 0x1144]; + /* 0x114A */ s16 field_0x114a; + /* 0x114C */ s16 field_0x114c; + /* 0x114E */ u8 field_0x114e[0x1178 - 0x114E]; + /* 0x1178 */ u32 field_0x1178; + /* 0x117C */ u8 field_0x117c[0x1190 - 0x117C]; /* 0x1190 */ dBgS_AcchCir field_0x1190; /* 0x11D0 */ dBgS_ObjAcch field_0x11d0; /* 0x13A8 */ u8 field_0x13a8[0x13B4 - 0x13A8]; /* 0x13B4 */ s16 field_0x13b4; /* 0x13B6 */ s16 field_0x13b6; - /* 0x13B8 */ u8 field_0x13b8[0x1474 - 0x13B8]; + /* 0x13B8 */ u8 field_0x13b8[0x1408 - 0x13B8]; + /* 0x1408 */ f32 field_0x1408; + /* 0x140C */ u8 field_0x140c[0x1410 - 0x140C]; + /* 0x1410 */ f32 field_0x1410; + /* 0x1414 */ u8 field_0x1414[0x146D - 0x1414]; + /* 0x146D */ s8 field_0x146d; + /* 0x146E */ u8 field_0x146e[0x1474 - 0x146E]; /* 0x1474 */ dMsgFlow_c mMsgFlow; - /* 0x14C0 */ u8 field_0x14c0[0x14C8 - 0x14C0]; + /* 0x14C0 */ u8 field_0x14c0[0x14C2 - 0x14C0]; + /* 0x14C2 */ s16 field_0x14c2; + /* 0x14C4 */ u8 field_0x14c4[0x14C8 - 0x14C4]; /* 0x14C8 */ f32 mRodStickX; /* 0x14CC */ f32 mRodStickY; - /* 0x14D0 */ u8 field_0x14d0[0x14F0 - 0x14D0]; - /* 0x14F0 */ int field_0x14f0; - /* 0x14F4 */ u8 field_0x14f4[0x1514 - 0x14F4]; + /* 0x14D0 */ u8 field_0x14d0[0x14D8 - 0x14D0]; + /* 0x14D8 */ f32 field_0x14d8; + /* 0x14DC */ f32 field_0x14dc; + /* 0x14E0 */ u8 field_0x14e0[0x14F0 - 0x14E0]; + /* 0x14F0 */ s32 field_0x14f0; + /* 0x14F4 */ u8 field_0x14f4[0x14FC - 0x14F4]; + /* 0x14F4 */ s16 field_0x14fc; + /* 0x14F4 */ u8 field_0x14fe[0x1508 - 0x14FE]; + /* 0x1508 */ f32 field_0x1508; + /* 0x150C */ u8 field_0x150c[0x1514 - 0x150C]; /* 0x1514 */ u8 field_0x1514; - /* 0x1515 */ u8 field_0x1515[0x1518 - 0x1515]; + /* 0x1515 */ u8 field_0x1515; + /* 0x1516 */ u8 field_0x1516[0x1518 - 0x1516]; /* 0x1518 */ dCcD_Stts field_0x1518; /* 0x1554 */ dCcD_Sph field_0x1554; /* 0x168C */ u8 field_0x168c; diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index ce65907dd7..bfe343f1c6 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -475,7 +475,7 @@ public: ERFLG0_UNK_200000 = 0x200000, ERFLG0_UNK_100000 = 0x100000, ERFLG0_UNK_80000 = 0x80000, - ERFLG0_UNK_40000 = 0x40000, + ERFLG0_FISHING_ROD_GET_FISH = 0x40000, ERFLG0_UNK_20000 = 0x20000, ERFLG0_UNK_10000 = 0x10000, ERFLG0_UNK_4000 = 0x4000, @@ -928,6 +928,7 @@ public: void onNotAutoJump() { onEndResetFlg0(ERFLG0_NOT_AUTO_JUMP); } void onNotHang() { onEndResetFlg0(ERFLG0_NOT_HANG); } void onWolfFchainPull() { onEndResetFlg0(ERFLG0_WOLF_FCHAIN_PULL); } + void onFishingRodGetFish() { onEndResetFlg0(ERFLG0_FISHING_ROD_GET_FISH); } void onShieldBackBone() { onEndResetFlg1(ERFLG1_GANON_FINISH); } void onWolfEyeKeep() { onEndResetFlg1(ERFLG1_WOLF_EYE_KEEP); } void onPortalWarpMidnaAtnKeep() { onEndResetFlg2(ERFLG2_PORTAL_WARP_MIDNA_ATN_KEEP); } @@ -1143,6 +1144,10 @@ public: onEndResetFlg2(ERFLG2_UNK_2); } + void onFishingRelease() { + this->mEndResetFlg0 |= 0x4000000; + } + static daMidna_c* m_midnaActor; void setGiantPuzzle() { mSpecialMode = SMODE_WOLF_PUZZLE; } |
