summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2025-02-19 15:43:26 -0800
committerGitHub <noreply@github.com>2025-02-19 18:43:26 -0500
commitbbc7944e54bd4c6095c82ca9877c48488a16cdff (patch)
treed417a6408bd4ce2193f5ad41da93dabd6b297712 /include
parent376a5be6e304b5ec49e899e0f79287690522e08a (diff)
d_a_boomerang / d_a_grass mostly done, d_a_spinner done (#2304)
* d_a_boomerang mostly done * d_a_grass mostly done * d_a_spinner done
Diffstat (limited to 'include')
-rw-r--r--include/SSystem/SComponent/c_counter.h2
-rw-r--r--include/d/actor/d_a_alink.h34
-rw-r--r--include/d/actor/d_a_boomerang.h174
-rw-r--r--include/d/actor/d_a_grass.h30
-rw-r--r--include/d/actor/d_a_player.h5
-rw-r--r--include/d/actor/d_a_spinner.h61
-rw-r--r--include/d/actor/d_a_tag_sppath.h5
-rw-r--r--include/d/d_cc_d.h1
-rw-r--r--include/d/d_cc_mass_s.h2
-rw-r--r--include/d/d_cc_s.h9
-rw-r--r--include/d/d_com_inf_game.h8
-rw-r--r--include/d/d_kankyo.h1
-rw-r--r--include/d/d_path.h1
13 files changed, 215 insertions, 118 deletions
diff --git a/include/SSystem/SComponent/c_counter.h b/include/SSystem/SComponent/c_counter.h
index 19cd6bd3a4..975824eb9e 100644
--- a/include/SSystem/SComponent/c_counter.h
+++ b/include/SSystem/SComponent/c_counter.h
@@ -6,7 +6,7 @@
struct counter_class {
u32 mCounter0;
s32 mCounter1;
- s32 mTimer;
+ u32 mTimer;
};
extern counter_class g_Counter;
diff --git a/include/d/actor/d_a_alink.h b/include/d/actor/d_a_alink.h
index 957b7147e4..32ec4f92b8 100644
--- a/include/d/actor/d_a_alink.h
+++ b/include/d/actor/d_a_alink.h
@@ -3555,6 +3555,40 @@ public:
mDoMtx_multVec(getRightHandMatrix(), &m_handRightInSidePos, o_pos);
}
+ cXyz* getLineTopPosP() {
+ return mSight.getPosP();
+ }
+
+ cXyz* getBoomerangLockPosP() {
+ return &mHeldItemRootPos;
+ }
+
+ BOOL boomerangLockTrigger() {
+ return itemActionTrigger();
+ }
+
+ BOOL checkBoomerangLockTrigger() {
+ return boomerangLockTrigger();
+ }
+
+ BOOL checkDemoSpinnerKeep() const {
+ return mDemo.getDemoMode() == 14 && mDemo.getParam0() == 1;
+ }
+
+ BOOL checkDemoSpinnerKeepSpeed() const {
+ return mDemo.getDemoMode() == 14 && mDemo.getParam0() == 2;
+ }
+
+ bool checkSpinnerRideOwn(const fopAc_ac_c* param_0) {
+ return checkSpinnerRide() && mRideAcKeep.getActorConst() == param_0;
+ }
+
+ BOOL checkSpinnerReady() const { return mProcID == PROC_SPINNER_READY; }
+
+ BOOL checkGameOverWindow() const { return mProcID == PROC_DEAD && field_0x3478 < 0.01f; }
+
+ f32 getSlideLimit() const { return field_0x3470; }
+
inline bool checkWindSpeedOnXZ() const;
inline void startRestartRoomFromOut(int, u32, int);
inline u16 getReadyItem();
diff --git a/include/d/actor/d_a_boomerang.h b/include/d/actor/d_a_boomerang.h
index 974fe99645..9198ac4702 100644
--- a/include/d/actor/d_a_boomerang.h
+++ b/include/d/actor/d_a_boomerang.h
@@ -5,7 +5,9 @@
#include "d/d_particle_copoly.h"
#include "f_op/f_op_actor_mng.h"
-class daBoomerang_sight_c {
+#define BOOMERANG_LOCK_MAX 5
+
+class daBoomerang_sight_c : public dDlst_base_c {
public:
/* 8049E0B8 */ int createHeap();
/* 8049E36C */ void initialize();
@@ -13,48 +15,48 @@ public:
/* 8049EDA8 */ void initFrame(int);
/* 8049EDE8 */ void copyNumData(int);
/* 8049EEC8 */ void setSight(cXyz const*, int);
- /* 8049EF60 */ void draw();
- /* 804A278C */ virtual ~daBoomerang_sight_c();
+ /* 8049EF60 */ virtual void draw();
+ /* 804A278C */ virtual ~daBoomerang_sight_c() {}
u8 getReserve() const { return mReserve; }
- u8 getAlpha(int i_index) { return mAlpha[i_index]; }
- void offRedSight() { mRedSight = false; }
+ u8 getAlpha(int i_index) { return m_alpha[i_index]; }
+ void offRedSight() { m_redSight = false; }
void onReserve() { mReserve = 1; }
void offReserve() { mReserve = 0; }
private:
- /* 0x04 */ J2DScreen* field_0x4;
- /* 0x08 */ J2DPane* field_0x8;
- /* 0x0C */ J2DPane* field_0xc;
- /* 0x10 */ J2DPane* field_0x10;
- /* 0x14 */ J2DPane* field_0x14;
- /* 0x18 */ J2DAnmTevRegKey* field_0x18;
- /* 0x1C */ J2DAnmTevRegKey* field_0x1c;
- /* 0x20 */ J2DScreen* field_0x20;
- /* 0x24 */ J2DPane* field_0x24;
- /* 0x28 */ J2DPane* field_0x28;
- /* 0x2C */ J2DPane* field_0x2c;
- /* 0x30 */ J2DPane* field_0x30;
- /* 0x34 */ J2DAnmTevRegKey* field_0x34;
- /* 0x38 */ J2DAnmTevRegKey* field_0x38;
- /* 0x3C */ J2DScreen* field_0x3c;
- /* 0x40 */ J2DPane* field_0x40;
- /* 0x44 */ J2DPane* field_0x44;
- /* 0x48 */ J2DPane* field_0x48;
- /* 0x4C */ J2DPane* field_0x4c;
- /* 0x50 */ J2DAnmTevRegKey* field_0x50;
- /* 0x54 */ J2DAnmTevRegKey* field_0x54;
- /* 0x58 */ J2DAnmColor* field_0x58;
- /* 0x5C */ J2DAnmTransform* field_0x5c;
- /* 0x60 */ bool mRedSight;
+ /* 0x04 */ J2DScreen* m_cursorYellowScrn;
+ /* 0x08 */ J2DPane* m_cursorYellowAllPane;
+ /* 0x0C */ J2DPane* m_cursorYellow0Pane;
+ /* 0x10 */ J2DPane* m_cursorYellow1Pane;
+ /* 0x14 */ J2DPane* m_cursorYellow2Pane;
+ /* 0x18 */ J2DAnmTevRegKey* m_cursorYellow2Brk;
+ /* 0x1C */ J2DAnmTevRegKey* m_cursorYellowBrk;
+ /* 0x20 */ J2DScreen* m_cursorRedScrn;
+ /* 0x24 */ J2DPane* m_cursorRedAllPane;
+ /* 0x28 */ J2DPane* m_cursorRed0Pane;
+ /* 0x2C */ J2DPane* m_cursorRed1Pane;
+ /* 0x30 */ J2DPane* m_cursorRed2Pane;
+ /* 0x34 */ J2DAnmTevRegKey* m_cursorRed2Brk;
+ /* 0x38 */ J2DAnmTevRegKey* m_cursorRedBrk;
+ /* 0x3C */ J2DScreen* m_cursorOrangeScrn;
+ /* 0x40 */ J2DPane* m_cursorOrangeAllPane;
+ /* 0x44 */ J2DPane* m_cursorOrange0Pane;
+ /* 0x48 */ J2DPane* m_cursorOrange1Pane;
+ /* 0x4C */ J2DPane* m_cursorOrange2Pane;
+ /* 0x50 */ J2DAnmTevRegKey* m_cursorOrange2Brk;
+ /* 0x54 */ J2DAnmTevRegKey* m_cursorOrangeBrk;
+ /* 0x58 */ J2DAnmColor* m_cursorYellowBpk;
+ /* 0x5C */ J2DAnmTransform* m_cursorYellowBck;
+ /* 0x60 */ bool m_redSight;
/* 0x61 */ u8 mReserve;
- /* 0x62 */ u8 mAlpha[6];
- /* 0x68 */ f32 field_0x68[6];
- /* 0x80 */ f32 field_0x80[6];
+ /* 0x62 */ u8 m_alpha[6];
+ /* 0x68 */ f32 m_proj_posX[6];
+ /* 0x80 */ f32 m_proj_posY[6];
/* 0x98 */ f32 field_0x98[6];
/* 0xB0 */ f32 field_0xb0[6];
- /* 0xC8 */ cXyz field_0xc8[6];
+ /* 0xC8 */ cXyz m_pos[6];
}; // Size: 0x110
class daAlink_c;
@@ -70,10 +72,16 @@ class daAlink_c;
class daBoomerang_c : public fopAc_ac_c {
public:
enum daBoomerang_FLG0 {
- /* 0x001 */ FLG0_1 = 0x001,
- /* 0x004 */ FLG0_UNK = 0x004,
- /* 0x010 */ FLG0_10 = 0x010,
- /* 0x200 */ FLG0_0x200 = 0x200,
+ /* 0x001 */ FLG0_1 = 0x1,
+ /* 0x002 */ FLG0_2 = 0x2,
+ /* 0x004 */ FLG0_4 = 0x4,
+ /* 0x010 */ FLG0_10 = 0x10,
+ /* 0x020 */ FLG0_20 = 0x20,
+ /* 0x040 */ FLG0_40 = 0x40,
+ /* 0x080 */ FLG0_80 = 0x80,
+ /* 0x100 */ FLG0_100 = 0x100,
+ /* 0x200 */ FLG0_200 = 0x200,
+ /* 0x400 */ FLG0_400 = 0x400,
/* 0x800 */ FLG0_LOCK_DIST_CANCEL = 0x800,
/* 0x080 */ WIND_CATCH = 0x80,
};
@@ -95,85 +103,86 @@ public:
/* 8049FE6C */ void checkBgHit(cXyz*, cXyz*);
/* 804A006C */ JPABaseEmitter* setEffectTraceMatrix(u32*, u16);
/* 804A012C */ void setEffect();
- /* 804A0874 */ void procWait();
- /* 804A0F0C */ void procMove();
+ /* 804A0874 */ int procWait();
+ /* 804A0F0C */ int procMove();
/* 804A1814 */ int execute();
/* 804A1BF4 */ ~daBoomerang_c();
/* 804A1EE4 */ int createHeap();
/* 804A2084 */ int create();
/* 804A230C */ daBoomerang_c();
- u32 checkStateFlg0(daBoomerang_FLG0 i_flag) { return mStateFlg0 & i_flag; }
- void onStateFlg0(daBoomerang_FLG0 flag) { mStateFlg0 |= flag; }
+ u32 checkStateFlg0(daBoomerang_FLG0 i_flag) const { return m_stateFlg0 & i_flag; }
+ void onStateFlg0(daBoomerang_FLG0 flag) { m_stateFlg0 |= flag; }
+ void offStateFlg0(daBoomerang_FLG0 flag) { m_stateFlg0 &= ~flag; }
void onWindCatch() { onStateFlg0(WIND_CATCH); }
- bool checkForceDelete() const { return mForceDelete; }
- void onForceDelete() { mForceDelete = true; }
+ bool checkForceDelete() const { return m_forceDelete; }
+ void onForceDelete() { m_forceDelete = true; }
bool checkCharge() const { return true; }
void setThrow() { fopAcM_SetParam(this, 1); }
- void setAimActor(fopAc_ac_c* i_actor) { (this->*mpSetAimActorFn)(i_actor); }
- void cancelLockActor(fopAc_ac_c* i_actor) { (this->*mpCancelLockActorFn)(i_actor); }
- u8 getLockReserve() const { return mSight.getReserve(); }
- bool getLockCntMax() { return mLockCnt >= 5; }
+ void setAimActor(fopAc_ac_c* i_actor) { (this->*m_setAimActorFn)(i_actor); }
+ void cancelLockActor(fopAc_ac_c* i_actor) { (this->*m_cancelLockActorFn)(i_actor); }
+ u8 getLockReserve() const { return m_sight.getReserve(); }
+ bool getLockCntMax() { return m_lockCnt >= BOOMERANG_LOCK_MAX; }
void onLockDistanceCancel() { onStateFlg0(FLG0_LOCK_DIST_CANCEL); }
private:
- /* 0x568 */ J3DModel* field_0x568;
- /* 0x56C */ J3DModel* field_0x56c;
+ /* 0x568 */ J3DModel* mp_boomModel;
+ /* 0x56C */ J3DModel* mp_shippuModel;
/* 0x570 */ J3DAnmTextureSRTKey* m_windBtk;
- /* 0x574 */ mDoExt_bckAnm mBck;
- /* 0x590 */ J3DModel* field_0x590;
+ /* 0x574 */ mDoExt_bckAnm m_shippuBck;
+ /* 0x590 */ J3DModel* mp_setboomEfModel;
/* 0x594 */ J3DAnmTextureSRTKey* m_waitEffBtk;
- /* 0x598 */ daBoomerang_sight_c mSight;
- /* 0x6A8 */ s32 field_0x6a8;
- /* 0x6AC */ s32 field_0x6ac[5];
- /* 0x6C0 */ fopAc_ac_c* mLockActors[5]; // Actors corresponding to the five target points
- /* 0x6D4 */ u32 field_0x6d4;
+ /* 0x598 */ daBoomerang_sight_c m_sight;
+ /* 0x6A8 */ fpc_ProcID m_lockLineActorID;
+ /* 0x6AC */ fpc_ProcID m_lockActorIDs[BOOMERANG_LOCK_MAX];
+ /* 0x6C0 */ fopAc_ac_c* m_lockActors[BOOMERANG_LOCK_MAX]; // Actors corresponding to the five target points
+ /* 0x6D4 */ fpc_ProcID field_0x6d4;
/* 0x6D8 */ fopAc_ac_c* field_0x6d8;
- /* 0x6DC */ cXyz mLockActorsPositions[5];
- /* 0x718 */ u8 field_0x718[5];
- /* 0x720 */ Z2SoundObjSimple field_0x720;
- /* 0x740 */ dBgS_Acch field_0x740;
- /* 0x918 */ dPaPo_c field_0x918;
- /* 0x950 */ u8 mLockCnt;
+ /* 0x6DC */ cXyz m_lockActorsPositions[BOOMERANG_LOCK_MAX];
+ /* 0x718 */ u8 field_0x718[BOOMERANG_LOCK_MAX];
+ /* 0x720 */ Z2SoundObjSimple m_sound;
+ /* 0x740 */ dBgS_ObjAcch m_acch;
+ /* 0x918 */ dPaPo_c m_papo;
+ /* 0x950 */ u8 m_lockCnt;
/* 0x951 */ u8 field_0x951;
/* 0x952 */ u8 field_0x952;
- /* 0x953 */ u8 field_0x953;
+ /* 0x953 */ s8 m_reverb;
/* 0x954 */ u8 field_0x954;
/* 0x955 */ u8 field_0x955;
- /* 0x956 */ bool mForceDelete;
+ /* 0x956 */ bool m_forceDelete;
/* 0x957 */ u8 field_0x957;
/* 0x958 */ s16 field_0x958;
- /* 0x95A */ s16 field_0x95a;
+ /* 0x95A */ s16 m_modelRotY;
/* 0x95C */ s16 field_0x95c;
/* 0x95E */ s16 field_0x95e;
/* 0x960 */ s16 field_0x960;
/* 0x962 */ s16 field_0x962;
- /* 0x964 */ u32 mStateFlg0;
+ /* 0x964 */ u32 m_stateFlg0;
/* 0x968 */ u32 field_0x968;
/* 0x96C */ u32 field_0x96c;
/* 0x970 */ u32 field_0x970;
/* 0x974 */ u32 field_0x974;
/* 0x978 */ u32 field_0x978;
/* 0x97C */ u32 field_0x97c;
- /* 0x980 */ f32 field_0x980;
- /* 0x984 */ f32 field_0x984;
+ /* 0x980 */ f32 mGroundY;
+ /* 0x984 */ f32 m_lockLineSqdist;
/* 0x988 */ f32 field_0x988;
- /* 0x98C */ f32 field_0x98c;
- /* 0x990 */ cXyz field_0x990;
+ /* 0x98C */ f32 m_shippuFrame;
+ /* 0x990 */ cXyz m_aimPos;
/* 0x99C */ cXyz field_0x99c;
- /* 0x9A8 */ f32 field_0x9a8;
- /* 0x9AC */ cXyz field_0x9ac;
+ /* 0x9A8 */ f32 m_shippuSize;
+ /* 0x9AC */ cXyz m_moveTargetPos;
/* 0x9B8 */ cXyz field_0x9b8;
- /* 0x9C4 */ cXyz field_0x9c4;
- /* 0x9D0 */ dCcD_Stts field_0x9d0;
- /* 0xA0C */ dCcD_Cps field_0xa0c;
- /* 0xB50 */ dCcD_Cyl field_0xb50;
- /* 0xC8C */ dBgS_BoomerangLinChk field_0xc8c;
- /* 0xCFC */ dBgS_ObjLinChk field_0xcfc;
- /* 0xD6C */ dBgS_ObjGndChk field_0xd6c;
- /* 0xDC0 */ int (daBoomerang_c::*mpProcFn)();
- /* 0xDCC */ void (daBoomerang_c::*mpSetAimActorFn)(fopAc_ac_c*);
- /* 0xDD8 */ void (daBoomerang_c::*mpCancelLockActorFn)(fopAc_ac_c*);
+ /* 0x9C4 */ cXyz m_movePos;
+ /* 0x9D0 */ dCcD_Stts m_colliderStts;
+ /* 0xA0C */ dCcD_Cps m_atCps;
+ /* 0xB50 */ dCcD_Cyl m_windAtCyl;
+ /* 0xC8C */ dBgS_BoomerangLinChk m_boomLineChk;
+ /* 0xCFC */ dBgS_ObjLinChk m_lineChk;
+ /* 0xD6C */ dBgS_ObjGndChk m_gndChk;
+ /* 0xDC0 */ int (daBoomerang_c::*m_procFn)();
+ /* 0xDCC */ void (daBoomerang_c::*m_setAimActorFn)(fopAc_ac_c*);
+ /* 0xDD8 */ void (daBoomerang_c::*m_cancelLockActorFn)(fopAc_ac_c*);
};
STATIC_ASSERT(sizeof(daBoomerang_c) == 0xDE4);
@@ -188,5 +197,4 @@ public:
static f32 const m_lockWindScale;
};
-
#endif /* D_A_BOOMERANG_H */
diff --git a/include/d/actor/d_a_grass.h b/include/d/actor/d_a_grass.h
index ff01bde653..16d908c818 100644
--- a/include/d/actor/d_a_grass.h
+++ b/include/d/actor/d_a_grass.h
@@ -35,6 +35,8 @@ public:
/* 8051EDF0 */ void deleteData();
/* 80520928 */ dGrass_room_c();
+ dGrass_data_c* getData() { return mp_data; }
+
/* 0x0 */ dGrass_data_c* mp_data;
};
@@ -60,17 +62,19 @@ public:
/* 805208E4 */ void setAnm(int, s16);
/* 8051F03C */ virtual void draw();
- /* 8051BFBC */ virtual ~dGrass_packet_c();
+ /* 8051BFBC */ virtual ~dGrass_packet_c() {}
typedef void (dGrass_packet_c::*deleteFunc)(int);
static deleteFunc m_deleteRoom;
dGrass_anm_c* getAnm() { return m_anm; }
+ dGrass_anm_c* getAnm(int i_no) { return &m_anm[i_no]; }
+
dGrass_data_c* getData() { return m_data; }
void deleteAnm(int i_idx) { m_anm[i_idx].m_state = 0; }
- /* 0x00010 */ u16 field_0x10;
+ /* 0x00010 */ u16 m_dataNum;
/* 0x00014 */ dGrass_data_c m_data[1500];
/* 0x1BD64 */ dGrass_anm_c m_anm[112];
/* 0x1D5E4 */ dGrass_room_c m_room[64];
@@ -86,7 +90,7 @@ public:
/* 0x1D708 */ u32 m_Mkusa_9q_DL_size;
/* 0x1D70C */ u8* mp_Mkusa_9q_cDL;
/* 0x1D710 */ u32 m_Mkusa_9q_cDL_size;
- /* 0x1D714 */ u16 field_0x1d714;
+ /* 0x1D714 */ s16 field_0x1d714;
}; // Size: 0x1D718
STATIC_ASSERT(sizeof(dGrass_packet_c) == 0x1D718);
@@ -117,6 +121,8 @@ public:
/* 80521C08 */ void deleteData();
/* 80522FB4 */ dFlower_room_c();
+ dFlower_data_c* getData() { return mp_data; }
+
/* 0x0 */ dFlower_data_c* mp_data;
};
@@ -148,11 +154,18 @@ public:
static deleteFunc m_deleteRoom;
dFlower_anm_c* getAnm(int i_idx) { return &m_anm[i_idx]; }
+ dFlower_anm_c* getAnm() { return &m_anm[0]; }
dFlower_data_c* getData() { return m_data; }
void deleteAnm(int i_idx) { m_anm[i_idx].m_state = 0; }
- /* 0x00010 */ u16 field_0x10;
+ void setPlayerCutFlg(int i_flag) { m_playerCutFlg = i_flag != 0; }
+ void setPlayerSwordAngY(s16 i_angY) { m_playerSwordAngY = i_angY; }
+ void setPlayerSwordMoveAngY(s16 i_angY) { m_playerSwordMoveAngY = i_angY; }
+ void setPlayerSwordTop(cXyz& i_pos) { m_playerSwordTop = i_pos; }
+ cXyz& getPlayerSwordTop() { return m_playerSwordTop; }
+
+ /* 0x00010 */ u16 m_dataNum;
/* 0x00014 */ dFlower_data_c m_data[1000];
/* 0x11954 */ dFlower_anm_c m_anm[72];
/* 0x12914 */ dFlower_room_c m_room[64];
@@ -183,17 +196,18 @@ public:
*/
class daGrass_c : public fopAc_ac_c {
public:
- /* 8051BEFC */ int createGrass();
+ /* 8051BEFC */ bool createGrass();
/* 8051BF68 */ void deleteGrass();
/* 8051C040 */ void executeGrass();
/* 8051C074 */ void drawGrass();
/* 8051C0A8 */ void newGrassData(cXyz&, int, u8, u8, s16, u8);
- /* 8051C0D4 */ int createFlower();
+ /* 8051C0D4 */ bool createFlower();
/* 8051C140 */ void deleteFlower();
/* 8051C218 */ void executeFlower();
/* 8051C24C */ void drawFlower();
/* 8051C280 */ void newFlowerData(s8, cXyz&, int, s8, s16);
- /* 8051C304 */ int create();
+
+ /* 8051C304 */ inline int create();
inline int Delete();
inline int execute();
@@ -217,7 +231,7 @@ namespace daGrass_prm {
inline u8 getItemBitNo(daGrass_c* i_this) { return (fopAcM_GetParam(i_this) >> 8) & 0xFF; }
};
-struct offset_data {
+struct daGrass_offsetData {
/* 0x0 */ u8 num;
/* 0x4 */ csXyz* set_type;
};
diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h
index 24ba5827fb..9862f623c8 100644
--- a/include/d/actor/d_a_player.h
+++ b/include/d/actor/d_a_player.h
@@ -38,6 +38,7 @@ public:
static void initDropAngleY() { m_dropAngleY = 0x4000; }
static void offEventKeepFlg() { m_eventKeepFlg = 0; }
+ static void onEventKeepFlg() { m_eventKeepFlg = 1; }
static s16 m_dropAngleY;
static s16 m_eventKeepFlg;
@@ -935,6 +936,8 @@ public:
void offWolfEnemyHangBite() { offNoResetFlg2(FLG2_WOLF_ENEMY_HANG_BITE); }
bool onWolfEnemyHangBite(fopAc_ac_c* param_0) { return onWolfEnemyBiteAll(param_0, FLG2_WOLF_ENEMY_HANG_BITE); }
+ u32 checkItemSightBgHit() const { return checkResetFlg0(RFLG0_UNK_2000000); }
+
void setCanoeSlider() { mSpecialMode = 0x2D; }
void offCanoeSlider() {
@@ -1002,6 +1005,8 @@ public:
cXyz* getRightHandPosP() { return &mRightHandPos; }
cXyz* getHeadTopPosP() { return &mHeadTopPos; }
+ const cXyz& getSwordTopPos() const { return mSwordTopPos; }
+
u32 checkWolf() const { return checkNoResetFlg1(FLG1_IS_WOLF); }
u32 checkEquipHeavyBoots() const { return checkNoResetFlg0(FLG0_EQUIP_HVY_BOOTS); }
u32 checkMagneBootsOn() const { return checkNoResetFlg0(FLG0_MAGNE_BOOTS_ON); }
diff --git a/include/d/actor/d_a_spinner.h b/include/d/actor/d_a_spinner.h
index 5f97df743d..9cc8ba531e 100644
--- a/include/d/actor/d_a_spinner.h
+++ b/include/d/actor/d_a_spinner.h
@@ -15,6 +15,15 @@
*/
class daSpinner_c : public fopAc_ac_c {
public:
+ enum daSpinner_TAG {
+ TAG_NONE,
+ TAG_START,
+ TAG_2,
+ TAG_INTO,
+ TAG_INTO_INC_ROT,
+ TAG_END,
+ };
+
/* 804D198C */ int createHeap();
/* 804D1A70 */ int create();
/* 804D1FD0 */ ~daSpinner_c();
@@ -40,28 +49,28 @@ public:
static u32 getWaitArg() { return 0; }
- int getDeleteFlg() const { return mDeleteFlg; }
+ BOOL getDeleteFlg() const { return mDeleteFlg; }
- bool checkSpinnerTagEnd() const { return mSpinnerTag == 5; }
- bool checkSpinnerTagIntoIncRot() const { return mSpinnerTag == 4; }
- bool checkSpinnerTagInto() const { return mSpinnerTag == 3; }
+ bool checkSpinnerTagEnd() const { return mSpinnerTag == TAG_END; }
+ bool checkSpinnerTagIntoIncRot() const { return mSpinnerTag == TAG_INTO_INC_ROT; }
+ bool checkSpinnerTagInto() const { return mSpinnerTag == TAG_INTO; }
bool checkGroundHit() { return mAcch.ChkGroundHit(); }
u8 getButtonJump() const { return mButtonJump; }
u8 getJumpFlg() const { return mJumpFlg; }
- void setMove(f32 i_speed, s16 param_1) {
+ void setMove(f32 i_speed, s16 i_moveTime) {
fopAcM_SetParam(this, 1);
speedF = i_speed;
- field_0xa7a = param_1;
+ mRideMoveTime = i_moveTime;
mCyl.OnAtSetBit();
}
void clearPathMove() { mpPathMove = NULL; }
void setSpinnerTag(const cXyz& param_0) {
- if (!mSpinnerTag) {
- mSpinnerTag = 1;
+ if (mSpinnerTag == TAG_NONE) {
+ mSpinnerTag = TAG_START;
}
clearPathMove();
@@ -69,61 +78,61 @@ public:
}
void offSpinnerTag() {
- if (mSpinnerTag != 0) {
- mSpinnerTag = 5;
+ if (mSpinnerTag != TAG_NONE) {
+ mSpinnerTag = TAG_END;
}
}
bool reflectAccept() {
bool accept = false;
- if (!mBck.isStop() && mSpinnerTag == 0) {
+ if (!mBck.isStop() && mSpinnerTag == TAG_NONE) {
accept = true;
}
return accept;
}
- MtxP getModelMtx() { return mpModel->getBaseTRMtx(); }
+ MtxPtr getModelMtx() { return mpModel->getBaseTRMtx(); }
- s16 getAngleY() { return shape_angle.y + field_0xa7e; }
+ s16 getAngleY() { return shape_angle.y + mRotY; }
- void forceDelete() { mDeleteFlg = 1; }
+ void forceDelete() { mDeleteFlg = true; }
private:
/* 0x568 */ J3DModel* mpModel;
/* 0x56C */ mDoExt_bckAnm mBck;
- /* 0x588 */ J3DAnmTransform* field_0x588;
+ /* 0x588 */ J3DAnmTransform* mpSpoutBck;
/* 0x58C */ dBgS_AcchCir mAcchCir[3];
- /* 0x64C */ dBgS_Acch mAcch;
+ /* 0x64C */ dBgS_LinkAcch mAcch;
/* 0x824 */ dBgS_LinkLinChk mLinChk;
- /* 0x894 */ dPaPo_c field_0x894;
- /* 0x8CC */ Z2SoundObjSimple field_0x8cc;
+ /* 0x894 */ dPaPo_c mPaPo;
+ /* 0x8CC */ Z2SoundObjSimple mSound;
/* 0x8EC */ dCcD_Stts mStts;
/* 0x928 */ dCcD_Cyl mCyl;
/* 0xA64 */ dPath* mpPathMove;
/* 0xA68 */ dPath* field_0xa68;
/* 0xA6C */ u8 field_0xa6c;
/* 0xA6D */ u8 mJumpFlg;
- /* 0xA6E */ s8 field_0xa6e;
+ /* 0xA6E */ s8 mReverb;
/* 0xA6F */ u8 mSpinnerTag;
/* 0xA70 */ u8 mButtonJump;
/* 0xA71 */ u8 mDeleteFlg;
- /* 0xA72 */ u8 field_0xa72;
- /* 0xA73 */ s8 field_0xa73;
+ /* 0xA72 */ u8 mPathNo;
+ /* 0xA73 */ s8 mPathDirection;
/* 0xA74 */ u8 field_0xa74;
- /* 0xA75 */ u8 field_0xa75;
- /* 0xA76 */ u8 field_0xa76;
+ /* 0xA75 */ u8 mTrigJump;
+ /* 0xA76 */ s8 field_0xa76;
/* 0xA77 */ u8 mPathForceRemove;
/* 0xA78 */ u8 field_0xa78;
/* 0xA79 */ u8 field_0xa79;
- /* 0xA7A */ s16 field_0xa7a;
+ /* 0xA7A */ s16 mRideMoveTime;
/* 0xA7C */ s16 field_0xa7c;
- /* 0xA7E */ s16 field_0xa7e;
+ /* 0xA7E */ s16 mRotY;
/* 0xA80 */ s16 field_0xa80;
/* 0xA82 */ s16 field_0xa82;
/* 0xA84 */ f32 field_0xa84;
/* 0xA88 */ f32 field_0xa88;
- /* 0xA8C */ u32 field_0xa8c[2];
+ /* 0xA8C */ u32 mSpreadEmitterIDs[2];
/* 0xA94 */ u32 field_0xa94;
/* 0xA98 */ cXyz field_0xa98;
/* 0xAA4 */ cXyz field_0xaa4;
diff --git a/include/d/actor/d_a_tag_sppath.h b/include/d/actor/d_a_tag_sppath.h
index 68fd623e60..d32a0280fe 100644
--- a/include/d/actor/d_a_tag_sppath.h
+++ b/include/d/actor/d_a_tag_sppath.h
@@ -12,6 +12,11 @@ public:
/* 80D62024 */ int getNearPathPos(cXyz*, dPath*);
/* 80D629C0 */ int execute();
+ dPath* getKeepPath() { return mpBestPath; }
+ u16 getKeepPointNum() const { return mBestNo; }
+ bool checkDirectionFront() const { return field_0x6e8 == 1; }
+ bool checkDirectionNone() const { return field_0x6e8 == 0; }
+
/* 0x568 */ dPath* mpInitPath;
/* 0x56C */ dPath* mpBestPath;
/* 0x570 */ dCcD_Cyl mCyl;
diff --git a/include/d/d_cc_d.h b/include/d/d_cc_d.h
index db51eccd17..d08639e575 100644
--- a/include/d/d_cc_d.h
+++ b/include/d/d_cc_d.h
@@ -407,6 +407,7 @@ public:
cXyz* GetTgRVecP() { return mGObjTg.GetRVecP(); }
bool ChkTgHookshotThrough() { return mGObjTg.ChkSPrm(0x80); }
bool ChkTgShieldHit() { return mGObjTg.ChkRPrm(2); }
+ bool ChkTgSpinnerReflect() { return mGObjTg.ChkSPrm(0x200); }
static const Z2SoundID m_hitSeID[24];
diff --git a/include/d/d_cc_mass_s.h b/include/d/d_cc_mass_s.h
index d6fd4e17c3..da4478eb48 100644
--- a/include/d/d_cc_mass_s.h
+++ b/include/d/d_cc_mass_s.h
@@ -35,6 +35,8 @@ private:
/* 0x0C */ f32 mCoHitLen;
public:
+ virtual ~dCcMassS_HitInf() {}
+
void ClearPointer();
void SetAreaHitObj(cCcD_Obj* obj) { mpArea = obj; }
void SetCoHitObj(cCcD_Obj* obj) { mpCoObj = obj; }
diff --git a/include/d/d_cc_s.h b/include/d/d_cc_s.h
index 8787b9c385..619bb360b8 100644
--- a/include/d/d_cc_s.h
+++ b/include/d/d_cc_s.h
@@ -49,6 +49,15 @@ public:
u32 GetMassResultCam() { return mMass_Mng.GetResultCam(); }
void PrepareMass() { mMass_Mng.Prepare(); }
+ u32 ChkMass(cXyz* param_0, fopAc_ac_c** param_1, dCcMassS_HitInf* param_2) {
+ u32 rt = mMass_Mng.Chk(param_0, param_1, param_2);
+ return rt;
+ }
+
+ void SetMassAttr(f32 radius, f32 height, u8 param_2, u8 param_3) {
+ mMass_Mng.SetAttr(radius, height, param_2, param_3);
+ }
+
static bool m_mtrl_hit_tbl[64];
// /* 0x0000 */ cCcS mCCcS;
diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h
index d6517f018b..392c2623eb 100644
--- a/include/d/d_com_inf_game.h
+++ b/include/d/d_com_inf_game.h
@@ -9,6 +9,7 @@
#include "d/d_event_manager.h"
#include "d/d_particle.h"
#include "f_op/f_op_camera_mng.h"
+#include "m_Do/m_Do_controller_pad.h"
#include "global.h"
class JKRAramArchive;
@@ -848,6 +849,8 @@ int dComIfG_resLoad(request_of_phase_process_class* i_phase, char const* i_arcNa
int dComIfG_resLoad(request_of_phase_process_class* i_phase, char const* i_resName, JKRHeap* heap);
int dComIfG_TimerDeleteRequest(int i_mode);
int dComIfG_TimerStart(int i_mode, s16 i_time);
+u32 dComIfG_getTrigA(u32 i_padNo);
+
bool dComIfGp_isLightDropMapVisible();
int dComIfG_TimerEnd(int i_mode, int param_1);
void dComIfGs_onStageBossEnemy(int i_stageNo);
@@ -981,6 +984,10 @@ inline int dComIfG_getObjctResName2Index(const char* i_arcName, const char* i_re
return g_dComIfG_gameInfo.mResControl.getObjectResName2Index(i_arcName, i_resName);
}
+inline u32 dComIfG_getTrigB(u32 i_padNo) {
+ return mDoCPd_c::getTrig(i_padNo) & PAD_BUTTON_B;
+}
+
u8 dComIfGs_getMixItemIndex(int i_no);
void dComIfGs_setSelectItemIndex(int i_no, u8 item_index);
void dComIfGs_setMixItemIndex(int i_no, u8 item_index);
@@ -1029,6 +1036,7 @@ u8 dComIfGs_checkGetInsectNum();
u8 dComIfGs_getSelectMixItemNoArrowIndex(int i_selmixItemIdx);
BOOL dComIfGs_isStageTbox(int i_stageNo, int i_no);
s8 dComIfGs_PolyDamageOff_Check();
+void dComIfGs_Grass_hide_Set(s8 param_0);
inline void dComIfGs_init() {
g_dComIfG_gameInfo.info.init();
diff --git a/include/d/d_kankyo.h b/include/d/d_kankyo.h
index 6e0da0c62b..d187374959 100644
--- a/include/d/d_kankyo.h
+++ b/include/d/d_kankyo.h
@@ -615,5 +615,6 @@ BOOL dKy_SunMoon_Light_Check();
void dKy_bgparts_activelight_set(LIGHT_INFLUENCE* light_inf_p, int bgpart_id);
void dKy_bgparts_activelight_cut(int bgpart_id);
int dKy_Indoor_check();
+void dKy_GfFog_tevstr_set(dKy_tevstr_c* tevstr_p);
#endif /* D_KANKYO_D_KANKYO_H */
diff --git a/include/d/d_path.h b/include/d/d_path.h
index 82e25d6b5c..517cd4f575 100644
--- a/include/d/d_path.h
+++ b/include/d/d_path.h
@@ -13,6 +13,7 @@ struct dPath {
/* 0x4 */ u8 field_0x4;
/* 0x5 */ bool m_closed;
/* 0x6 */ u8 field_0x6;
+ /* 0x7 */ u8 field_0x7;
/* 0x8 */ dStage_dPnt_c* m_points;
};