diff options
| author | TakaRikka <38417346+TakaRikka@users.noreply.github.com> | 2024-08-07 08:32:04 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-07 09:32:04 -0600 |
| commit | e7e5453771e88272aaa55de7f20db50bf68c6b54 (patch) | |
| tree | 8c35b4fba096153646509453857fafd4d921b1c9 /include/rel/d | |
| parent | 106d72032c3c62fb5fd930a1044a38bf44cc1036 (diff) | |
zramark work, sWallShutter / firewood2 done (#2187)
* obj_zramark done except weaks
* setup fixes
* obj_sWallShutter done
* firewood2 done
* remove asm
Diffstat (limited to 'include/rel/d')
6 files changed, 253 insertions, 74 deletions
diff --git a/include/rel/d/a/npc/d_a_npc_hoz/d_a_npc_hoz.h b/include/rel/d/a/npc/d_a_npc_hoz/d_a_npc_hoz.h index 5689e268f5..c5bce6e980 100644 --- a/include/rel/d/a/npc/d_a_npc_hoz/d_a_npc_hoz.h +++ b/include/rel/d/a/npc/d_a_npc_hoz/d_a_npc_hoz.h @@ -79,6 +79,7 @@ public: /* 80A065D4 */ bool checkRemoveJoint(int); bool getGameStartFlag() { return mGameStartFlag; } + void setPotBreakFlag() { mPotBreakFlag = true; } static void* mCutNameList[8]; static u8 mCutList[96]; @@ -86,7 +87,8 @@ public: private: /* 0xE40 */ u8 field_0xe40[0x14d]; /* 0xF8D */ bool mGameStartFlag; - /* 0xF8E */ u8 field_0xf8e[0x3a]; + /* 0xF8E */ bool mPotBreakFlag; + /* 0xF8F */ u8 field_0xf8f[0x39]; }; STATIC_ASSERT(sizeof(daNpc_Hoz_c) == 0xFC8); diff --git a/include/rel/d/a/npc/d_a_npc_zra/d_a_npc_zra.h b/include/rel/d/a/npc/d_a_npc_zra/d_a_npc_zra.h index 4ad04a637c..f1a62e1eca 100644 --- a/include/rel/d/a/npc/d_a_npc_zra/d_a_npc_zra.h +++ b/include/rel/d/a/npc/d_a_npc_zra/d_a_npc_zra.h @@ -319,6 +319,7 @@ public: /* 80B8C3E8 */ void adjustShapeAngle(); int getType() { return mType; } u32 getAngleNoFromParam() { return (u8)(fopAcM_GetParam(this) >> 8); } + void setBlastFlag(u8 i_flag) { mBlastFlag = i_flag; } /* 0x0B48 */ Z2Creature mCreatureSound; /* 0x0BD8 */ J3DModel* mpObjectModel[3]; @@ -390,7 +391,7 @@ public: /* 0x1595 */ int mRiverPathIdx; /* 0x159C */ cXyz field_0x159c[3]; /* 0x15C0 */ u8 field_0x15c0; - /* 0x15C1 */ bool field_0x15c1; + /* 0x15C1 */ bool mBlastFlag; #ifdef NONMATCHING static char* mEvtCutNameList[11]; diff --git a/include/rel/d/a/obj/d_a_obj_balloon/d_a_obj_balloon.h b/include/rel/d/a/obj/d_a_obj_balloon/d_a_obj_balloon.h index b72e62e3a4..77026773d5 100644 --- a/include/rel/d/a/obj/d_a_obj_balloon/d_a_obj_balloon.h +++ b/include/rel/d/a/obj/d_a_obj_balloon/d_a_obj_balloon.h @@ -17,6 +17,12 @@ */ class daObj_Balloon_c : public fopAc_ac_c { public: + enum Size_e { + SIZE_LARGE_e, + SIZE_MEDIUM_e, + SIZE_SMALL_e, + }; + /* 80BA7FF4 */ int draw(); /* 80BA80F4 */ void saveBestScore(); /* 80BA810C */ void cc_set(); @@ -29,19 +35,19 @@ public: /* 0x568 */ request_of_phase_process_class mPhase; /* 0x570 */ J3DModel* mModel; - /* 0x574 */ int field_0x574; - /* 0x578 */ u8 field_0x578; - /* 0x579 */ u8 field_0x579; - /* 0x57C */ int field_0x57c; - /* 0x580 */ s16 field_0x580; - /* 0x582 */ s16 field_0x582; - /* 0x584 */ s16 field_0x584; - /* 0x586 */ s16 field_0x586; + /* 0x574 */ u32 mShadowKey; + /* 0x578 */ u8 mType; + /* 0x579 */ u8 mRotateMode; + /* 0x57C */ int mRotateTimer; + /* 0x580 */ s16 mRotateZ; + /* 0x582 */ s16 mRotateY; + /* 0x584 */ s16 mRotZTarget; + /* 0x586 */ s16 mRotYTarget; /* 0x588 */ dBgS_AcchCir mAcchCir; /* 0x5C8 */ dBgS_ObjAcch mAcch; /* 0x7A0 */ dCcD_Stts mStts; /* 0x7D8 */ dCcD_Sph mSph; - /* 0x914 */ u8 field_0x914; + /* 0x914 */ u8 mHIOInit; /* 0x914 */ u8 mUnused[8]; }; @@ -51,8 +57,8 @@ public: /* 80BA8D64 */ virtual ~daObj_Balloon_HIO_c() {} /* 0x04 */ s8 field_0x04; - /* 0x08 */ f32 field_0x08[3]; - /* 0x14 */ f32 field_0x14[3]; + /* 0x08 */ f32 mScale[3]; + /* 0x14 */ f32 mScore[3]; }; #endif /* D_A_OBJ_BALLOON_H */ diff --git a/include/rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2.h b/include/rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2.h index f951e0ddcc..ee152ce696 100644 --- a/include/rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2.h +++ b/include/rel/d/a/obj/d_a_obj_fireWood2/d_a_obj_fireWood2.h @@ -3,11 +3,12 @@ #include "d/com/d_com_inf_game.h" #include "f_op/f_op_actor_mng.h" +#include "d/cc/d_cc_d.h" /** * @ingroup actors-objects * @class daFireWood2_c - * @brief Torch Stand + * @brief Firewood 2 (Flame) * * @details * @@ -15,43 +16,44 @@ class daFireWood2_c : public fopAc_ac_c { public: /* 80BE82D0 */ void setBaseMtx(); - /* 80BE8328 */ void create(); + /* 80BE8328 */ int create(); /* 80BE8640 */ void lightInit(); /* 80BE86CC */ void setLight(); /* 80BE86FC */ void cutLight(); /* 80BE872C */ void pointLightProc(); - /* 80BE87DC */ void Execute(); + /* 80BE87DC */ int Execute(); /* 80BE8D98 */ int Draw(); - /* 80BE8DA0 */ void Delete(); + /* 80BE8DA0 */ int Delete(); - static u8 const mCcDObjInfo[48]; - static u8 mCcDCyl[68]; + static const dCcD_SrcGObjInf mCcDObjInfo; + static dCcD_SrcCyl mCcDCyl; private: /* 0x568 */ u8 field_0x568[0x574 - 0x568]; - /* 0x574 */ dCcD_Stts mStts; - /* 0x5B0 */ dCcD_Cyl mCyl; - /* 0x6EC */ cXyz field_0x6ec; - /* 0x6F8 */ u8 field_0x6f8; - /* 0x6F9 */ u8 field_0x6f9; - /* 0x6FA */ u8 field_0x6fa; - /* 0x6FB */ u8 field_0x6fb; - /* 0x6FC */ u32 field_0x6fc; - /* 0x700 */ u32 field_0x700; - /* 0x704 */ u32 field_0x704; - /* 0x708 */ u32 field_0x708; - /* 0x70C */ cXyz field_0x70c; - /* 0x718 */ u8 field_0x718; - /* 0x71C */ f32 field_0x71c; + /* 0x574 */ dCcD_Stts mCcStts; + /* 0x5B0 */ dCcD_Cyl mCcCyl; + /* 0x6EC */ cXyz mFlamePos; + /* 0x6F8 */ u8 mIsLit; + /* 0x6F9 */ u8 mIsSwitch; + /* 0x6FA */ u8 mSwitchType; + /* 0x6FB */ u8 mFlameType; + /* 0x6FC */ u32 mFlameEmtrIDs[4]; + /* 0x70C */ cXyz mLightPos; + /* 0x718 */ u8 mIsPLight; + /* 0x71C */ f32 mBossLightStrength; /* 0x720 */ LIGHT_INFLUENCE mLightInfluence; }; STATIC_ASSERT(sizeof(daFireWood2_c) == 0x740); -class daFireWood2_HIO_c { +class daFireWood2_HIO_c : public mDoHIO_entry_c { public: /* 80BE824C */ daFireWood2_HIO_c(); - /* 80BE8E54 */ ~daFireWood2_HIO_c(); + /* 80BE8E54 */ virtual ~daFireWood2_HIO_c() {} + + /* 0x04 */ f32 mFlameOffsetY; + /* 0x08 */ f32 mCollisionDiameter; + /* 0x0C */ f32 mCollisionHeight; }; diff --git a/include/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter.h b/include/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter.h index 890bb3be0e..0fc1bfe1ef 100644 --- a/include/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter.h +++ b/include/rel/d/a/obj/d_a_obj_sWallShutter/d_a_obj_sWallShutter.h @@ -2,21 +2,33 @@ #define D_A_OBJ_SWALLSHUTTER_H #include "f_op/f_op_actor_mng.h" +#include "d/bg/d_bg_s_movebg_actor.h" +#include "m_Do/m_Do_hostIO.h" /** * @ingroup actors-objects * @class daSwShutter_c - * @brief Rider Gate + * @brief Shutter Wall (Switch) * * @details * */ -class daSwShutter_c : public fopAc_ac_c { +class daSwShutter_c : public dBgS_MoveBgActor { public: + enum TYPE_e { + TYPE_ROCKWALL_e, // Goron Mines Shutter Wall + TYPE_SUBDAN_e, // Cave of Ordeals Shutter Wall + }; + + enum MODE_e { + MODE_WAIT, + MODE_MOVE_DOWN_INIT, + MODE_MOVE_DOWN, + MODE_MOVE_DOWN_END, + }; + /* 805982A4 */ void setBaseMtx(); - /* 80598344 */ void CreateHeap(); - /* 805983C4 */ void create(); - /* 80598564 */ void Execute(f32 (**)[3][4]); + /* 805983C4 */ int create(); /* 805985B4 */ void moveMain(); /* 8059873C */ void init_modeWait(); /* 80598748 */ void modeWait(); @@ -26,19 +38,51 @@ public: /* 80598AFC */ void modeMoveDown(); /* 80598D4C */ void init_modeMoveDownEnd(); /* 80598D58 */ void modeMoveDownEnd(); - /* 80598D5C */ void Draw(); - /* 80598E00 */ void Delete(); + + /* 80598344 */ virtual int CreateHeap(); + /* 80598564 */ virtual int Execute(Mtx**); + /* 80598D5C */ virtual int Draw(); + /* 80598E00 */ virtual int Delete(); -private: - /* 0x568 */ u8 field_0x568[0x5e8 - 0x568]; + int getSwBit() { return fopAcM_GetParamBit(this, 0, 8); } + int getModelType() { return fopAcM_GetParamBit(this, 8, 4); } + + /* 0x5A0 */ request_of_phase_process_class mPhase; + /* 0x5A8 */ J3DModel* mpModel; + /* 0x5AC */ u8 mModelType; + /* 0x5AD */ u8 mMode; + /* 0x5B0 */ f32 field_0x5b0; + /* 0x5B4 */ u8 field_0x5B4[0x5B8 - 0x5B4]; + /* 0x5B8 */ csXyz mShakeRot; + /* 0x5C0 */ f32 mShakeStrength; + /* 0x5C4 */ f32 mShakeAmpZ; + /* 0x5C8 */ f32 mShakeAmpY; + /* 0x5CC */ f32 mShakeAtten; + /* 0x5D0 */ f32 mMaxAtten; + /* 0x5D4 */ f32 mMinAtten; + /* 0x5D8 */ int mCounter; + /* 0x5DC */ u32 mEmitterID0; + /* 0x5E0 */ u32 mEmitterID1; + /* 0x5E4 */ u8 field_0x5e4[0x5e8 - 0x5e4]; }; STATIC_ASSERT(sizeof(daSwShutter_c) == 0x5e8); -class daSwShutter_HIO_c { +class daSwShutter_HIO_c : public mDoHIO_entry_c { public: /* 805981EC */ daSwShutter_HIO_c(); - /* 80598ECC */ ~daSwShutter_HIO_c(); + /* 80598ECC */ virtual ~daSwShutter_HIO_c() {} + + /* 0x04 */ f32 mInitSpeed; + /* 0x08 */ f32 mMaxSpeed; + /* 0x0C */ f32 mAcceleration; + /* 0x10 */ u8 mVibrationStrength; + /* 0x14 */ f32 mShakeStrength; + /* 0x18 */ f32 mShakeAmpZ; + /* 0x1C */ f32 mShakeAmpY; + /* 0x20 */ f32 mShakeAtten; + /* 0x24 */ f32 mMaxAtten; + /* 0x28 */ f32 mMinAtten; }; diff --git a/include/rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark.h b/include/rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark.h index 9ea061a0df..2a956db22c 100644 --- a/include/rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark.h +++ b/include/rel/d/a/obj/d_a_obj_zraMark/d_a_obj_zraMark.h @@ -1,56 +1,180 @@ #ifndef D_A_OBJ_ZRAMARK_H #define D_A_OBJ_ZRAMARK_H +#include "JSystem/J3DGraphBase/J3DMaterial.h" +#include "d/a/d_a_npc.h" +#include "d/cc/d_cc_d.h" #include "f_op/f_op_actor_mng.h" +class daNpc_Hoz_c; + +class _ZraMark_Hahen_c { +public: + _ZraMark_Hahen_c() { + mpModel = NULL; + setColor(0); + } + + /* 80D4347C */ int create(cXyz const&, s8, s8, s8, s8); + /* 80D434F8 */ BOOL loadModel(); + /* 80D4357C */ void init(cXyz const&, s8, s8, s8); + /* 80D43808 */ void calcSpeed(); + /* 80D43864 */ void setMtx(); + /* 80D438C8 */ void draw(); + + void setColor(const s8& i_color) { mColor = i_color; } + s8 getColor() { return mColor; } + void setPos(const cXyz& i_pos) { mPos = i_pos; } + void setSpeed(const cXyz& i_speed) { mSpeed = i_speed; } + + void calcAngle() { + mAngle += field_0x3aa; + } + + void posMove() { + mPos += mSpeed; + } + + void fall() { + calcAngle(); + calcSpeed(); + posMove(); + } + + /* 0x000 */ J3DModel* mpModel; + /* 0x004 */ dKy_tevstr_c mTevstr; + /* 0x38C */ cXyz mPos; + /* 0x398 */ cXyz mSpeed; + /* 0x3A4 */ csXyz mAngle; + /* 0x3AA */ csXyz field_0x3aa; + /* 0x3B0 */ cXyz field_0x3b0; + /* 0x3BC */ s16 field_0x3bc; + /* 0x3C0 */ f32 field_0x3c0; + /* 0x3C4 */ u8 field_0x3C4[0x3C8 - 0x3C4]; + /* 0x3C8 */ s8 mColor; + /* 0x3CC */ Z2SoundObjSimple mSound; +}; + +class _ZraMark_Hahen_Mng_c { +public: + _ZraMark_Hahen_Mng_c() : field_0x2(0) {} + + /* 80D43968 */ int create(cXyz const&, s8, s8, s8, s8); + /* 80D439F8 */ void calc(); + /* 80D43A74 */ void draw(); + + s16 getTimer() { return mTimer; } + void setTimer(s16 i_timer) { mTimer = i_timer; } + + void decTimer() { + if (mTimer > 0) { + mTimer--; + } + } + + /* 0x0 */ s16 mTimer; + /* 0x2 */ u8 field_0x2; + /* 0x4 */ _ZraMark_Hahen_c mHahen[14]; +}; + /** * @ingroup actors-objects * @class daObjZraMark_c - * @brief Zora Mark + * @brief Iza's River Ride Destructible Buoy * * @details * */ class daObjZraMark_c : public fopAc_ac_c { public: - /* 80D42678 */ void Create(); - /* 80D4287C */ void CreateHeap(); - /* 80D42A7C */ void Execute(); - /* 80D42B0C */ void Draw(); - /* 80D42C98 */ void Delete(); - /* 80D42CE0 */ void getType(); + enum TYPE_e { + TYPE_BRANCH_GREEN, + TYPE_GREEN, + TYPE_BRANCH_RED, + TYPE_RED, + }; + + /* 80D42678 */ int Create(); + /* 80D4287C */ int CreateHeap(); + /* 80D42A7C */ int Execute(); + /* 80D42B0C */ int Draw(); + /* 80D42C98 */ int Delete(); + /* 80D42CE0 */ int getType(); /* 80D42D2C */ void setBaseMtx(); /* 80D42EE0 */ void col_init(); /* 80D42F5C */ void col_set(); - /* 80D432C8 */ void schHoz(); - /* 80D43314 */ void entryPointer(fopAc_ac_c*); + /* 80D432C8 */ daNpc_Hoz_c* schHoz(); + /* 80D43314 */ bool entryPointer(fopAc_ac_c*); /* 80D43370 */ void informBlast(); u8 getMarkNo() { return fopAcM_GetParam(this) & 0xff; } -private: - /* 0x568 */ u8 field_0x568[0x3e40 - 0x568]; -}; + void initBlastFlag() { mBlastFlag = false; } + void onBlastFlag() { mBlastFlag = true; } + bool is_blasted() { return mBlastFlag == true; } + bool is_branch_pat() { return mType == 0 || mType == 2; } -STATIC_ASSERT(sizeof(daObjZraMark_c) == 0x3e40); + int get_MarkType() { + u8 type = fopAcM_GetParam(this) >> 0x10; + if (type == 0xFF) { + type = 0; + } -class _ZraMark_Hahen_c : public fopAc_ac_c { -public: - /* 80D4347C */ void create(cXyz const&, s8, s8, s8, s8); - /* 80D434F8 */ void loadModel(); - /* 80D4357C */ void init(cXyz const&, s8, s8, s8); - /* 80D43808 */ void calcSpeed(); - /* 80D43864 */ void setMtx(); - /* 80D438C8 */ void draw(); - /* 80D43B48 */ ~_ZraMark_Hahen_c(); - /* 80D43BB4 */ _ZraMark_Hahen_c(); + return type; + } + + void _Disp_Vase() { + _Material_On(0); + _Material_On(2); + } + + void _Vanish_Vase() { + _Material_Off(0); + _Material_Off(2); + } + + void _Material_On(u16 i_jointNo) { + mpModel->getModelData()->getMaterialNodePointer(i_jointNo)->getShape()->show(); + } + + void _Material_Off(u16 i_jointNo) { + mpModel->getModelData()->getMaterialNodePointer(i_jointNo)->getShape()->hide(); + } + + BOOL checkHitAt(cCcD_Obj* i_hitobj) { + if (is_blasted()) { + return false; + } + + if (get_MarkType() != 0) { + return i_hitobj->ChkAtType(AT_TYPE_IRON_BALL | AT_TYPE_BOMB); + } else { + return i_hitobj->ChkAtType(AT_TYPE_BOMB); + } + } + + /* 0x0568 */ request_of_phase_process_class mPhase[1]; + /* 0x0570 */ J3DModel* mpModel; + /* 0x0574 */ Mtx field_0x574; + /* 0x05A4 */ dCcD_Stts mCcStts; + /* 0x05E0 */ dCcD_Cyl mCcCyl; + /* 0x071C */ daNpcF_ActorMngr_c mActorMngr[2]; + /* 0x072C */ u8 field_0x72c; + /* 0x072D */ u8 mType; + /* 0x072E */ u8 mBlastFlag; + /* 0x0730 */ daNpc_Hoz_c* mpHoz; + /* 0x0734 */ Z2SoundObjSimple mSound; + /* 0x0754 */ _ZraMark_Hahen_Mng_c mHahenMngr; }; -class _ZraMark_Hahen_Mng_c : public fopAc_ac_c { +STATIC_ASSERT(sizeof(daObjZraMark_c) == 0x3e40); + +class daObjZraMark_Hio_Param_c { public: - /* 80D43968 */ void create(cXyz const&, s8, s8, s8, s8); - /* 80D439F8 */ void calc(); - /* 80D43A74 */ void draw(); + /* 0x00 */ f32 mMarkSize; + /* 0x04 */ f32 mInteriorMarkSize; + /* 0x08 */ f32 field_0x8; + /* 0x0C */ f32 mMarkCollisionRadius; + /* 0x10 */ f32 mMarkCollisionHeight; }; - #endif /* D_A_OBJ_ZRAMARK_H */ |
