summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2025-08-22 22:58:29 -0700
committerGitHub <noreply@github.com>2025-08-23 08:58:29 +0300
commit0a8679f92eaf0ca12e3413b0c4fdda7e7cf81a2a (patch)
tree89b3f9772b58f87c4e110ad74c72b5097d45a491 /include
parentaec2c0987d96057fc3d31c9aea1e9c03bd39421e (diff)
d_a_mg_rod mostly done (#2598)
* d_a_mg_rod mostly done * pr
Diffstat (limited to 'include')
-rw-r--r--include/d/actor/d_a_alink.h46
-rw-r--r--include/d/actor/d_a_mg_rod.h327
-rw-r--r--include/d/actor/d_a_obj_life_container.h4
-rw-r--r--include/d/actor/d_a_player.h5
-rw-r--r--include/d/d_com_inf_game.h8
-rw-r--r--include/d/d_menu_window.h2
-rw-r--r--include/d/d_meter2_info.h10
7 files changed, 309 insertions, 93 deletions
diff --git a/include/d/actor/d_a_alink.h b/include/d/actor/d_a_alink.h
index c71b8d88de..1a84f4e036 100644
--- a/include/d/actor/d_a_alink.h
+++ b/include/d/actor/d_a_alink.h
@@ -3564,6 +3564,36 @@ public:
return var_r4;
}
+ BOOL setCanoeCast() {
+ if (mProcVar2.field_0x300c == 0 && checkCanoeFishingWaitAnime()) {
+ mProcVar2.field_0x300c = 1;
+ return TRUE;
+ } else {
+ return FALSE;
+ }
+ }
+
+ bool checkFishingRodGrabLeft() const { return mItemVar0.field_0x3018 == 0; }
+
+ void setCanoeFishingWaitAngle(s16 i_angle) { field_0x311a = i_angle; }
+
+ void setFishingArnmAngle(s16 i_angle) { field_0x3160.set(0, 0, i_angle); }
+ void setFishingArm1Angle(const csXyz& i_angle) { mFishingArm1Angle = i_angle; }
+ void setFishingArm2Angle(const csXyz& i_angle) { field_0x3160 = i_angle; }
+
+ void onFishingRodCastingEnd() { onNoResetFlg1(FLG1_UNK_8000); }
+ void endFishingCastWait() { offNoResetFlg2(FLG2_UNK_20000000); }
+
+ void startFishingCastWait() {
+ if (checkFishingRodItem(mEquipItem)) {
+ onNoResetFlg2(FLG2_UNK_20000000);
+ }
+ }
+
+ f32 getFishingReelFrame() const { return mUpperFrameCtrl[2].getFrame(); }
+
+ void changeFishGetFace(u8 param_0) { field_0x2fc8 = param_0; }
+
BOOL checkSlideMode() {
return mProcID == PROC_SLIDE || mProcID == PROC_SLIDE_LAND ||
mProcID == PROC_WOLF_SLIDE_READY || mProcID == PROC_WOLF_SLIDE_LAND ||
@@ -3578,6 +3608,22 @@ public:
return (mEquipItem == 0x5C || mEquipItem == 0x5F) || mEquipItem == 0x5E;
}
+ bool checkFisingRodWorm() const { return mItemMode == 0x74; }
+
+ bool checkFisingRodBee() const { return mItemMode == 0x76; }
+
+ void fishingCastWaitAnimeStart() {
+ if (mProcID == PROC_FISHING_CAST) {
+ mProcVar3.field_0x300e = 0;
+ }
+ }
+
+ void fishingCastWaitAnimeStop() {
+ if (mProcID == PROC_FISHING_CAST) {
+ mProcVar3.field_0x300e = 1;
+ }
+ }
+
MtxP getCopyRodMtx() {
if (mHeldItemModel != NULL) {
return mHeldItemModel->getAnmMtx(0);
diff --git a/include/d/actor/d_a_mg_rod.h b/include/d/actor/d_a_mg_rod.h
index fb30fa8c35..2f0b8f82dd 100644
--- a/include/d/actor/d_a_mg_rod.h
+++ b/include/d/actor/d_a_mg_rod.h
@@ -8,27 +8,66 @@
#include "d/d_msg_flow.h"
#include "f_op/f_op_actor_mng.h"
+#define MG_ROD_LURE_LINE_LEN 106
+#define MG_ROD_UKI_LINE_LEN 100
+
+enum mg_catch_type {
+ MG_CATCH_FISH,
+ MG_CATCH_BT, // Boot
+ MG_CATCH_SP, // Spoon
+ MG_CATCH_LH, // Rupee Bag
+ MG_CATCH_SG, // Skullfish
+ MG_CATCH_BB, // Bombfish
+ MG_CATCH_BIN, // Empty Bottle
+ MG_CATCH_KN, // Can
+ MG_CATCH_ED, // Branch
+ MG_CATCH_SY, // Wheel
+};
+
+enum mg_lure_type {
+ MG_LURE_FR, // Frog
+ MG_LURE_PE, // Swimmer
+ MG_LURE_PO, // Popper
+ MG_LURE_WS, // Spinner
+ MG_LURE_SP, // Spoon (Sinking)
+};
+
+enum mg_rod_kind {
+ MG_ROD_KIND_LURE, // Henna Fishing Rod
+ MG_ROD_KIND_UKI, // Player Fishing Rod
+};
+
+enum mg_rod_uki_action {
+ ACTION_UKI_READY,
+ ACTION_UKI_STANDBY,
+
+ ACTION_UKI_HIT = 5,
+ ACTION_UKI_CATCH,
+};
+
+enum mg_rod_lure_action {
+ ACTION_LURE_ONBOAT,
+ ACTION_LURE_STANDBY,
+
+ ACTION_LURE_CAST = 3,
+ ACTION_LURE_ACTION,
+ ACTION_LURE_HIT,
+ ACTION_LURE_CATCH,
+ ACTION_LURE_BARE,
+ ACTION_LURE_HEART,
+};
+
struct mg_rod_s {
- /* 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];
+ /* 0x0 */ cXyz field_0x0[16];
};
struct mg_line_s {
- /* 0x0 */ cXyz field_0x0[100];
+ /* 0x0 */ cXyz pos[100];
};
struct mg_hook_s {
- /* 804BAF78 */ ~mg_hook_s();
- /* 804BAFD8 */ mg_hook_s();
-
/* 0x00 */ cXyz field_0x0[2];
- /* 0x18 */ u8 field_0x18[0x20 - 0x18];
+ /* 0x18 */ csXyz field_0x18;
};
struct wd_ss;
@@ -41,132 +80,224 @@ struct wd_ss;
* @details
*
*/
-class dmg_rod_class : public fopAc_ac_c {
+class dmg_rod_class {
public:
- /* 804BAC0C */ dmg_rod_class();
-
- f32 getRodStickX() { return mRodStickX; }
- f32 getRodStickY() { return mRodStickY; }
+ f32 getRodStickX() { return rod_stick_x; }
+ f32 getRodStickY() { return rod_stick_y; }
bool checkRodEquipPermission() { return field_0x1514 == 0; }
- bool checkReelSpin() { return field_0x14f0 != 0; }
-
- /* 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];
+ bool checkReelSpin() { return reel_btn_flags != 0; }
+
+ /* 0x0000 */ fopAc_ac_c actor;
+ /* 0x0568 */ request_of_phase_process_class phase;
+ /* 0x0570 */ char* arcname;
+ /* 0x0574 */ u8 arg0;
+ /* 0x0575 */ u8 arg1;
+ /* 0x0576 */ u8 arg2;
+ /* 0x0578 */ s16 field_0x578;
+ /* 0x057A */ s16 timers[10];
/* 0x0590 */ f32 field_0x590;
- /* 0x0594 */ u8 field_0x594[0x5A4 - 0x594];
- /* 0x05A4 */ mg_rod_s field_0x5a4;
- /* 0x0664 */ u8 field_0x664[0x6AC - 0x664];
+ /* 0x0594 */ f32 field_0x594;
+ /* 0x0598 */ f32 field_0x598;
+ /* 0x059C */ f32 field_0x59c;
+ /* 0x05A0 */ u8 field_0x5A0[0x05A4 - 0x05A0];
+ /* 0x05A4 */ mg_rod_s mg_rod; // below to mg_line_s part of mg_rod_s?
+ /* 0x0664 */ J3DModel* rod_uki_model[15];
+ /* 0x06A0 */ f32 field_0x6a0;
+ /* 0x06A4 */ f32 field_0x6a4;
+ /* 0x06A8 */ u8 field_0x6a8;
/* 0x06AC */ cXyz field_0x6ac;
/* 0x06B8 */ cXyz field_0x6b8;
- /* 0x06C4 */ u8 field_0x6c4[0x6C8 - 0x6C4];
+ /* 0x06C4 */ s16 field_0x6c4;
/* 0x06C8 */ cXyz field_0x6c8;
/* 0x06D4 */ cXyz field_0x6d4;
- /* 0x06E0 */ s16 field_0x6e0;
- /* 0x06E2 */ u8 field_0x6e2[0x6EC - 0x6E2];
+ /* 0x06E0 */ f32 field_0x6e0;
+ /* 0x06E4 */ f32 field_0x6e4;
+ /* 0x06E8 */ s8 field_0x6e8;
/* 0x06EC */ cXyz field_0x6ec;
/* 0x06F8 */ f32 field_0x6f8;
- /* 0x06FC */ u8 field_0x6fc[0x71C - 0x6FC];
+ /* 0x06FC */ f32 cast_power;
+ /* 0x0700 */ mDoExt_McaMorf* rod_modelMorf;
+ /* 0x0704 */ J3DModel* unk_ring_model[6];
/* 0x071C */ csXyz field_0x71c[6];
- /* 0x0740 */ u8 field_0x740[0x744 - 0x740];
+ /* 0x0740 */ u8 field_0x740[0x0744 - 0x0740];
/* 0x0744 */ cXyz field_0x744;
/* 0x0750 */ cXyz field_0x750;
- /* 0x075C */ u8 field_0x75c[0x764 - 0x75C];
+ /* 0x075C */ s16 field_0x75c;
+ /* 0x075E */ s16 field_0x75e;
+ /* 0x0760 */ f32 field_0x760;
/* 0x0764 */ cXyz field_0x764;
- /* 0x0770 */ mg_line_s field_0x770;
- /* 0x0C20 */ u8 field_0xc20[0xF5C - 0xC20];
+ /* 0x0770 */ mg_line_s mg_line; // below to mg_hook_s part of mg_line_s?
+ /* 0x0C20 */ f32 field_0xc20[98];
+ /* 0x0DA8 */ u8 field_0xDA8[0x0DB0 - 0x0DA8];
+ /* 0x0DB0 */ f32 field_0xdb0[98];
+ /* 0x0F38 */ u8 field_0xF38[0x0F40 - 0x0F38];
+ /* 0x0F40 */ mDoExt_3DlineMat0_c linemat;
/* 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 */ s8 field_0xf80;
- /* 0x0F81 */ u8 field_0xf81[0xFAC - 0xF81];
- /* 0x0FAC */ mg_hook_s field_0xfac[2];
- /* 0x0FEC */ u8 field_0xfec[0xFFC - 0xFEC];
+ /* 0x0F68 */ f32 field_0xf68;
+ /* 0x0F6C */ u8 field_0xF6C[0x0F6E - 0x0F6C];
+ /* 0x0F6E */ s8 field_0xf6e;
+ /* 0x0F6F */ u8 field_0xF6F[0x0F74 - 0x0F6F];
+ /* 0x0F74 */ f32 field_0xf74;
+ /* 0x0F78 */ f32 field_0xf78;
+ /* 0x0F7C */ s16 kind;
+ /* 0x0F7E */ s16 action;
+ /* 0x0F80 */ s8 lure_type;
+ /* 0x0F81 */ s8 field_0xf81;
+ /* 0x0F84 */ J3DModel* lure_model[5];
+ /* 0x0F98 */ J3DModel* hook_model[2];
+ /* 0x0FA0 */ J3DModel* ring_model;
+ /* 0x0FA4 */ u8 field_0xFA4[0x0FAC - 0x0FA4];
+ /* 0x0FAC */ mg_hook_s mg_hook[2];
+ /* 0x0FEC */ f32 field_0xfec;
+ /* 0x0FF0 */ s16 field_0xff0;
+ /* 0x0FF2 */ s16 field_0xff2;
+ /* 0x0FF4 */ s16 field_0xff4;
+ /* 0x0FF8 */ f32 field_0xff8;
/* 0x0FFC */ s16 field_0xffc;
- /* 0x0FFE */ u8 field_0xffe[2];
+ /* 0x0FFE */ s16 field_0xffe;
/* 0x1000 */ s16 field_0x1000;
- /* 0x1002 */ u8 field_0x1002[2];
+ /* 0x1002 */ s16 field_0x1002;
/* 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];
+ /* 0x100B */ u8 field_0x100b;
/* 0x100C */ u8 field_0x100c;
/* 0x100D */ s8 field_0x100d;
- /* 0x100E */ u8 field_0x100e[1];
+ /* 0x100E */ s8 field_0x100e;
/* 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;
+ /* 0x1010 */ cXyz field_0x1010;
+ /* 0x101C */ s16 field_0x101c[1];
+ /* 0x101E */ s16 field_0x101e;
+ /* 0x1020 */ s16 field_0x1020;
+ /* 0x1022 */ s16 field_0x1022;
+ /* 0x1024 */ J3DModel* uki_model;
+ /* 0x1028 */ J3DModel* uki_saki_model;
+ /* 0x102C */ s8 esa_kind;
+ /* 0x102D */ s8 hook_kind;
+ /* 0x102E */ s8 field_0x102e;
+ /* 0x102F */ u8 field_0x102f;
+ /* 0x1030 */ J3DModel* esa_model[2];
+ /* 0x1038 */ u8 field_0x1038[0x103C - 0x1038];
+ /* 0x103C */ s16 field_0x103c[8];
+ /* 0x104C */ u8 field_0x104C[0x104E - 0x104C];
+ /* 0x104E */ s16 field_0x104e[8];
+ /* 0x1060 */ cXyz hook_pos;
/* 0x106C */ cXyz field_0x106c;
/* 0x1078 */ cXyz field_0x1078;
/* 0x1084 */ csXyz field_0x1084;
- /* 0x108A */ u8 field_0x108a[0x1090 - 0x108A];
+ /* 0x108A */ s16 field_0x108a;
+ /* 0x108C */ s16 field_0x108c;
+ /* 0x108E */ s16 field_0x108e;
/* 0x1090 */ f32 field_0x1090;
- /* 0x1094 */ u8 field_0x1094[0x10A4 - 0x1094];
+ /* 0x1094 */ f32 field_0x1094;
+ /* 0x1098 */ u8 field_0x1098[0x109C - 0x1098];
+ /* 0x109C */ s16 field_0x109c;
+ /* 0x109E */ s16 field_0x109e;
+ /* 0x10A0 */ s16 field_0x10a0;
+ /* 0x10A2 */ s16 field_0x10a2;
/* 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;
+ /* 0x10AA */ u8 field_0x10aa;
/* 0x10AB */ u8 field_0x10ab;
- /* 0x10AC */ s32 mFishId;
+ /* 0x10AC */ fpc_ProcID mg_fish_id;
/* 0x10B0 */ s16 field_0x10b0;
- /* 0x10B2 */ u8 field_0x10b2[2];
- /* 0x10B4 */ Z2Creature field_0x10b4;
- /* 0x1144 */ u8 field_0x1144[0x114A - 0x1144];
+ /* 0x10B4 */ Z2Creature sound;
+ /* 0x1144 */ fpc_ProcID boat_actor_id;
+ /* 0x1148 */ s8 field_0x1148;
/* 0x114A */ s16 field_0x114a;
/* 0x114C */ s16 field_0x114c;
- /* 0x114E */ u8 field_0x114e[0x1178 - 0x114E];
+ /* 0x114E */ s16 field_0x114e;
+ /* 0x1150 */ s16 field_0x1150;
+ /* 0x1154 */ f32 field_0x1154;
+ /* 0x1158 */ u8 field_0x1158[0x1165 - 0x1158];
+ /* 0x1165 */ s8 field_0x1165;
+ /* 0x1168 */ u32 sibuki_eff[4];
/* 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[0x1408 - 0x13B8];
- /* 0x1408 */ f32 field_0x1408;
- /* 0x140C */ u8 field_0x140c[0x1410 - 0x140C];
+ /* 0x117C */ u32 field_0x117c;
+ /* 0x1180 */ u32 field_0x1180[2];
+ /* 0x1188 */ f32 field_0x1188;
+ /* 0x118C */ f32 field_0x118c;
+ /* 0x1190 */ dBgS_AcchCir acchcir;
+ /* 0x11D0 */ dBgS_ObjAcch acch;
+ /* 0x13A8 */ u8 field_0x13a8;
+ /* 0x13AC */ f32 field_0x13ac;
+ /* 0x13B0 */ f32 field_0x13b0;
+ /* 0x13B4 */ s16 play_cam_mode;
+ /* 0x13B6 */ s16 play_cam_timer;
+ /* 0x13B8 */ cXyz play_cam_eye;
+ /* 0x13C4 */ cXyz play_cam_center;
+ /* 0x13D0 */ cXyz play_cam_eye_target;
+ /* 0x13DC */ cXyz play_cam_center_target;
+ /* 0x13E8 */ cXyz play_cam_eye_speed;
+ /* 0x13F4 */ cXyz play_cam_center_speed;
+ /* 0x1400 */ s16 field_0x1400;
+ /* 0x1402 */ s16 field_0x1402;
+ /* 0x1404 */ s16 field_0x1404;
+ /* 0x1406 */ u8 field_0x1406;
+ /* 0x1407 */ u8 field_0x1407;
+ /* 0x1408 */ f32 play_cam_fovy;
+ /* 0x140C */ f32 field_0x140c;
/* 0x1410 */ f32 field_0x1410;
- /* 0x1414 */ u8 field_0x1414[0x146D - 0x1414];
+ /* 0x1414 */ f32 field_0x1414;
+ /* 0x1418 */ s16 field_0x1418;
+ /* 0x141A */ s16 field_0x141a;
+ /* 0x141C */ f32 field_0x141c;
+ /* 0x1420 */ f32 field_0x1420;
+ /* 0x1424 */ f32 field_0x1424;
+ /* 0x1428 */ f32 field_0x1428;
+ /* 0x142C */ f32 field_0x142c;
+ /* 0x1430 */ u8 field_0x1430[0x1434 - 0x1430];
+ /* 0x1434 */ cXyz field_0x1434;
+ /* 0x1440 */ cXyz field_0x1440;
+ /* 0x144C */ cXyz field_0x144c;
+ /* 0x1458 */ cXyz field_0x1458;
+ /* 0x1464 */ f32 field_0x1464;
+ /* 0x1468 */ u8 field_0x1468[0x146C - 0x1468];
+ /* 0x146C */ u8 field_0x146c;
/* 0x146D */ s8 field_0x146d;
- /* 0x146E */ u8 field_0x146e[0x1474 - 0x146E];
- /* 0x1474 */ dMsgFlow_c mMsgFlow;
- /* 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[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];
+ /* 0x146E */ u8 field_0x146E[0x1470 - 0x146E];
+ /* 0x1470 */ u8 field_0x1470;
+ /* 0x1472 */ s16 field_0x1472;
+ /* 0x1474 */ dMsgFlow_c msgflow;
+ /* 0x14C0 */ u8 field_0x14c0;
+ /* 0x14C2 */ u16 field_0x14c2;
+ /* 0x14C4 */ u16 catch_flow_id;
+ /* 0x14C6 */ u8 field_0x14C6[0x14C8 - 0x14C6];
+ /* 0x14C8 */ f32 rod_stick_x;
+ /* 0x14CC */ f32 rod_stick_y;
+ /* 0x14D0 */ f32 field_0x14d0;
+ /* 0x14D4 */ f32 field_0x14d4;
+ /* 0x14D8 */ f32 rod_substick_x;
+ /* 0x14DC */ f32 rod_substick_y;
+ /* 0x14E0 */ f32 prev_rod_substick_y;
+ /* 0x14E4 */ u8 field_0x14e4;
+ /* 0x14E5 */ u8 field_0x14E5[0x14EC - 0x14E5];
+ /* 0x14EC */ f32 field_0x14ec;
+ /* 0x14F0 */ int reel_btn_flags;
+ /* 0x14F4 */ f32 reel_speed;
+ /* 0x14F8 */ s16 field_0x14f8;
+ /* 0x14FA */ s16 field_0x14fa;
+ /* 0x14FC */ s16 field_0x14fc;
+ /* 0x14FE */ u8 field_0x14FE[0x1504 - 0x14FE];
+ /* 0x1504 */ f32 field_0x1504;
/* 0x1508 */ f32 field_0x1508;
- /* 0x150C */ u8 field_0x150c[0x1514 - 0x150C];
+ /* 0x150C */ f32 field_0x150c;
+ /* 0x1510 */ u8 field_0x1510[0x1514 - 0x1510];
/* 0x1514 */ u8 field_0x1514;
/* 0x1515 */ u8 field_0x1515;
- /* 0x1516 */ u8 field_0x1516[0x1518 - 0x1516];
- /* 0x1518 */ dCcD_Stts field_0x1518;
- /* 0x1554 */ dCcD_Sph field_0x1554;
+ /* 0x1518 */ dCcD_Stts ccStts;
+ /* 0x1554 */ dCcD_Sph ccSph;
/* 0x168C */ u8 field_0x168c;
+ /* 0x168D */ u8 field_0x168d;
+ /* 0x168E */ u8 HIOInit;
};
STATIC_ASSERT(sizeof(dmg_rod_class) == 0x1690);
@@ -174,7 +305,17 @@ STATIC_ASSERT(sizeof(dmg_rod_class) == 0x1690);
class dmg_rod_HIO_c {
public:
/* 804A95EC */ dmg_rod_HIO_c();
- /* 804BB070 */ ~dmg_rod_HIO_c();
+ /* 804BB070 */ virtual ~dmg_rod_HIO_c() {}
+
+ /* 0x04 */ s8 id;
+ /* 0x08 */ f32 field_0x8;
+ /* 0x0C */ f32 field_0xc;
+ /* 0x10 */ f32 field_0x10;
+ /* 0x14 */ f32 field_0x14;
+ /* 0x18 */ f32 field_0x18;
+ /* 0x1C */ f32 field_0x1c;
+ /* 0x20 */ f32 field_0x20;
+ /* 0x24 */ u8 force_fish_msg_output;
};
#endif /* D_A_MG_ROD_H */
diff --git a/include/d/actor/d_a_obj_life_container.h b/include/d/actor/d_a_obj_life_container.h
index e1526401dd..bbaf2f3f5e 100644
--- a/include/d/actor/d_a_obj_life_container.h
+++ b/include/d/actor/d_a_obj_life_container.h
@@ -56,6 +56,10 @@ public:
u8 getItemNo() { return fopAcM_GetParamBit(this, 0, 8); }
int getSwNo() { return 0xFF; }
+ void startCtrl() {
+ actionInitWait2();
+ }
+
void setPos(cXyz);
private:
diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h
index f488f273f2..8b8a3f1f3e 100644
--- a/include/d/actor/d_a_player.h
+++ b/include/d/actor/d_a_player.h
@@ -930,6 +930,8 @@ public:
bool checkMidnaAtnPos() const { return checkNoResetFlg1(FLG1_MIDNA_ATN_POS); }
bool checkMidnaHairAtnPos() const { return checkNoResetFlg1(FLG1_MIDNA_HAIR_ATN_POS); }
bool checkAttentionLock() const { return checkResetFlg0(RFLG0_UNK_10000); }
+ BOOL checkFishingRodUseStart() const { return checkResetFlg1(RFLG1_UNK_80); }
+ BOOL checkFishingRodUseAccept() const { return checkResetFlg1(RFLG1_UNK_200); }
void onBossRoomWait() { onEndResetFlg0(ERFLG0_BOSS_ROOM_WAIT); }
void onBeeFollow() { onEndResetFlg0(ERFLG0_BEE_FOLLOW); }
@@ -944,6 +946,9 @@ public:
void onPortalWarpMidnaAtnKeep() { onEndResetFlg2(ERFLG2_PORTAL_WARP_MIDNA_ATN_KEEP); }
void onFogFade() { onNoResetFlg2(FLG2_UNK_4000); }
void onDkCaught2() { onNoResetFlg0(FLG0_DK_CAUGHT); }
+ void onFishingRodReelEnd() { onEndResetFlg0(ERFLG0_UNK_20000); }
+ void onFishingHit() { onEndResetFlg0(ERFLG0_UNK_10000); }
+ void onFishingKeep() { onEndResetFlg2(ERFLG2_UNK_1); }
BOOL checkStickArrowReset() const { return checkResetFlg0(RFLG0_UNK_1); }
u32 getCutAtFlg() const { return checkNoResetFlg0(FLG0_UNK_40); }
diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h
index 847020ec5f..cab9d3f57d 100644
--- a/include/d/d_com_inf_game.h
+++ b/include/d/d_com_inf_game.h
@@ -2009,6 +2009,14 @@ inline u8 dComIfGs_getFishSize(u8 param_0) {
return g_dComIfG_gameInfo.info.getPlayer().getFishingInfo().getMaxSize(param_0);
}
+inline void dComIfGs_addFishNum(u8 param_0) {
+ g_dComIfG_gameInfo.info.getPlayer().getFishingInfo().addFishCount(param_0);
+}
+
+inline void dComIfGs_setFishSize(u8 param_0, u8 param_1) {
+ g_dComIfG_gameInfo.info.getPlayer().getFishingInfo().setMaxSize(param_0, param_1);
+}
+
inline u8 dComIfGs_getGetNumber(int i_no) {
return g_dComIfG_gameInfo.info.getPlayer().getLetterInfo().getGetNumber(i_no);
}
diff --git a/include/d/d_menu_window.h b/include/d/d_menu_window.h
index fa2da1448e..bf18a47eda 100644
--- a/include/d/d_menu_window.h
+++ b/include/d/d_menu_window.h
@@ -32,6 +32,8 @@ BOOL dMw_LEFT_TRIGGER();
BOOL dMw_RIGHT_TRIGGER();
void dMw_onPauseWindow();
void dMw_offPauseWindow();
+void dMw_onMenuRing();
+void dMw_offMenuRing();
class dDlst_MENU_CAPTURE_c;
diff --git a/include/d/d_meter2_info.h b/include/d/d_meter2_info.h
index 6700a2b838..7558a635d1 100644
--- a/include/d/d_meter2_info.h
+++ b/include/d/d_meter2_info.h
@@ -204,6 +204,8 @@ public:
void setHorseLifeCount(s16 i_count) { mHorseLifeCount = i_count; }
void resetTouchKeyCheck() { mTouchKeyCheck = 0; }
void resetWindowAccept() { mWindowAccept = 0xFFFF; }
+ void onWindowAccept(int param_0) { mWindowAccept |= (u16)(1 << param_0); }
+ void offWindowAccept(int param_0) { mWindowAccept &= ~(u16)(1 << param_0); }
public:
/* 0x04 */ u8 unk_0x4[4];
@@ -842,4 +844,12 @@ inline void dMeter2Info_setMiniGameCount(s8 i_count) {
g_meter2_info.setMiniGameCount(i_count);
}
+inline void dMeter2Info_onWindowAccept(int param_0) {
+ g_meter2_info.onWindowAccept(param_0);
+}
+
+inline void dMeter2Info_offWindowAccept(int param_0) {
+ g_meter2_info.offWindowAccept(param_0);
+}
+
#endif /* D_METER_D_METER2_INFO_H */