zramark work, sWallShutter / firewood2 done (#2187)

* obj_zramark done except weaks

* setup fixes

* obj_sWallShutter done

* firewood2 done

* remove asm
This commit is contained in:
TakaRikka
2024-08-07 08:32:04 -07:00
committed by GitHub
parent 106d72032c
commit e7e5453771
55 changed files with 1681 additions and 2957 deletions
+1 -1
View File
@@ -483,7 +483,7 @@ public:
void SetAtHit(cCcD_Obj* obj) { mObjAt.SetHit(obj); }
void SetTgHit(cCcD_Obj* obj) { mObjTg.SetHit(obj); }
void SetCoHit(cCcD_Obj* obj) { mObjCo.SetHit(obj); }
bool ChkAtType(u32 type) const { return mObjAt.MskType(type); }
BOOL ChkAtType(u32 type) const { return mObjAt.MskType(type); }
u32 ChkCoNoCrr() const { return mObjCo.ChkNoCrr(); }
u32 ChkCoSph3DCrr() const { return mObjCo.ChkSph3DCrr(); }
void OnAtSPrmBit(u32 flag) { mObjAt.OnSPrmBit(flag); }
@@ -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);
@@ -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];
@@ -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 */
@@ -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;
};
@@ -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;
};
@@ -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; }
int get_MarkType() {
u8 type = fopAcM_GetParam(this) >> 0x10;
if (type == 0xFF) {
type = 0;
}
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;
};
STATIC_ASSERT(sizeof(daObjZraMark_c) == 0x3e40);
class _ZraMark_Hahen_c : public fopAc_ac_c {
class daObjZraMark_Hio_Param_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();
/* 0x00 */ f32 mMarkSize;
/* 0x04 */ f32 mInteriorMarkSize;
/* 0x08 */ f32 field_0x8;
/* 0x0C */ f32 mMarkCollisionRadius;
/* 0x10 */ f32 mMarkCollisionHeight;
};
class _ZraMark_Hahen_Mng_c : public fopAc_ac_c {
public:
/* 80D43968 */ void create(cXyz const&, s8, s8, s8, s8);
/* 80D439F8 */ void calc();
/* 80D43A74 */ void draw();
};
#endif /* D_A_OBJ_ZRAMARK_H */