d_a_e_dt, d_a_e_ot equivalent (#2305)

This commit is contained in:
Caroline Madsen 2025-02-21 01:44:54 -05:00 committed by GitHub
parent bbc7944e54
commit 531a6d6d68
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 3682 additions and 3266 deletions

View File

@ -1618,7 +1618,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_e_dd"),
ActorRel(NonMatching, "d_a_e_df"),
ActorRel(NonMatching, "d_a_e_dk"),
ActorRel(NonMatching, "d_a_e_dt"),
ActorRel(Equivalent, "d_a_e_dt"), # weak func order
ActorRel(NonMatching, "d_a_e_fb"),
ActorRel(NonMatching, "d_a_e_fk"),
ActorRel(NonMatching, "d_a_e_fs"),
@ -1649,7 +1649,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_e_nz"),
ActorRel(NonMatching, "d_a_e_oc"),
ActorRel(MatchingFor("GZ2E01"), "d_a_e_oct_bg"),
ActorRel(NonMatching, "d_a_e_ot"),
ActorRel(Equivalent, "d_a_e_ot"), # weak func order
ActorRel(MatchingFor("GZ2E01"), "d_a_e_ph"),
ActorRel(NonMatching, "d_a_e_pm"),
ActorRel(NonMatching, "d_a_e_po"),

View File

@ -1,7 +1,13 @@
#ifndef D_A_E_DT_H
#define D_A_E_DT_H
#include "f_op/f_op_actor_mng.h"
#include "SSystem/SComponent/c_phase.h"
#include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
#include "d/d_cc_uty.h"
#include "f_op/f_op_actor.h"
class daE_OT_c;
/**
* @ingroup actors-enemies
@ -12,19 +18,20 @@
*
*/
class daE_DT_c : public fopEn_enemy_c {
/* 806AD97C */ void ctrlJoint(J3DJoint*, J3DModel*);
/* 806ADBA0 */ void JointCallBack(J3DJoint*, int);
/* 806ADBEC */ void ctrlJointTuba(J3DJoint*, J3DModel*);
/* 806ADD30 */ void JointCallBackTuba(J3DJoint*, int);
/* 806ADD7C */ void draw();
public:
/* 806AD97C */ int ctrlJoint(J3DJoint*, J3DModel*);
/* 806ADBA0 */ static int JointCallBack(J3DJoint*, int);
/* 806ADBEC */ int ctrlJointTuba(J3DJoint*, J3DModel*);
/* 806ADD30 */ static int JointCallBackTuba(J3DJoint*, int);
/* 806ADD7C */ int draw();
/* 806AE5C8 */ void demo_skip(int);
/* 806AE618 */ void DemoSkipCallBack(void*, int);
/* 806AE618 */ static int DemoSkipCallBack(void*, int);
/* 806AE64C */ void setBck(int, u8, f32, f32);
/* 806AE6F0 */ void checkBck(int);
/* 806AE6F0 */ bool checkBck(int);
/* 806AE74C */ void setActionMode(int, int);
/* 806AE758 */ void damage_check();
/* 806AEB48 */ void setStabPos();
/* 806AEBD4 */ void checkBeforeBg(f32);
/* 806AEBD4 */ bool checkBeforeBg(f32);
/* 806AED94 */ void checkTongueBg();
/* 806AEEFC */ void checkWaterSurface();
/* 806AEFE8 */ void setSmallWaterEffect();
@ -42,11 +49,11 @@ class daE_DT_c : public fopEn_enemy_c {
/* 806AF9D8 */ void setDeadYodareEffect();
/* 806AFAE0 */ void setBoxTubaEffect();
/* 806AFBBC */ void setBoxTubaLandEffect();
/* 806AFD30 */ void getNumberOfOtama();
/* 806AFD30 */ int getNumberOfOtama();
/* 806AFE24 */ void setStayOtamaFall();
/* 806AFEAC */ void setStayOtamaDelete();
/* 806B0114 */ void checkBombEat();
/* 806B01B4 */ void isShutterOpen();
/* 806B0114 */ bool checkBombEat();
/* 806B01B4 */ bool isShutterOpen();
/* 806B0200 */ void executeWait();
/* 806B0368 */ void executeCry();
/* 806B063C */ void executeShake();
@ -57,37 +64,143 @@ class daE_DT_c : public fopEn_enemy_c {
/* 806B1BEC */ void executeDamage();
/* 806B1D48 */ void executeBombDamage();
/* 806B1F78 */ void executeDeath();
/* 806B28E4 */ void pointInSight(cXyz*);
/* 806B28E4 */ bool pointInSight(cXyz*);
/* 806B29D4 */ void executeOpening();
/* 806B3B08 */ void calcCamera();
/* 806B40D8 */ void calcBoxAndTuba();
/* 806B4724 */ void action();
/* 806B49F0 */ void mtx_set();
/* 806B4B24 */ void cc_set();
/* 806B4FD8 */ void execute();
/* 806B5158 */ void _delete();
/* 806B5214 */ void CreateHeap();
/* 806B5460 */ void create();
/* 806B4FD8 */ int execute();
/* 806B5158 */ int _delete();
/* 806B5214 */ int CreateHeap();
/* 806B5460 */ cPhs__Step create();
bool isFlyingAttack() { return mFlyingAttack; }
bool isFlyingAttackLand() { return mFlyingAttackLand; }
u8 isDead() { return mDead; }
bool isDemoJump() { return mDemoJump; }
MtxP getBackMtx() { return mpMorf->getModel()->getAnmMtx(1); }
fpc_ProcID getDemoId() { return mDemoID; }
private:
/* 0x5ac */ u8 field_0x5ac[0x1174 - 0x5ac];
/* 0x05AC */ request_of_phase_process_class mPhase[3];
/* 0x05C4 */ J3DModel* mpChestModel;
/* 0x05C8 */ J3DModel* mpSpitModel;
/* 0x05CC */ J3DModel* mpSpitBModel;
/* 0x05D0 */ mDoExt_McaMorfSO* mpMorf;
/* 0x05D4 */ Z2CreatureEnemy mSound;
/* 0x0678 */ fpc_ProcID mDemoID;
/* 0x067C */ daE_OT_c* mDemoOtama[3];
/* 0x0688 */ cXyz mTargetPos;
/* 0x0694 */ cXyz mCamCenter;
/* 0x06A0 */ cXyz mCamEye;
/* 0x06AC */ cXyz mChestPos;
/* 0x06B8 */ cXyz mChestSpeed;
/* 0x06C4 */ csXyz mChestAngle;
/* 0x06CA */ csXyz mSpitAngle[3];
/* 0x06DC */ s16 field_0x6dc;
/* 0x06DE */ s16 field_0x6de;
/* 0x06E0 */ f32 mCamFovy;
/* 0x06E4 */ f32 field_0x6e4;
/* 0x06E8 */ f32 field_0x6e8;
/* 0x06EC */ f32 mScale;
/* 0x06F0 */ f32 mSpitScale[3];
/* 0x06FC */ f32 mSpitScaleX;
/* 0x0700 */ f32 mSpitOffset;
/* 0x0704 */ int field_0x704;
/* 0x0708 */ int mAction;
/* 0x070C */ int mMode;
/* 0x0710 */ u32 mShadowKey;
/* 0x0714 */ int field_0x714;
/* 0x0718 */ f32 mSpitFade[4];
/* 0x0728 */ f32 mWaterSurface;
/* 0x072C */ f32 field_0x72c;
/* 0x0730 */ int field_0x730;
/* 0x0734 */ s16 field_0x734;
/* 0x0736 */ s16 field_0x736;
/* 0x0738 */ s16 mTargetAngleY;
/* 0x073A */ s16 field_0x73a;
/* 0x073C */ s16 mCamBank;
/* 0x073E */ s16 field_0x73e;
/* 0x0740 */ s16 field_0x740;
/* 0x0742 */ s16 field_0x742;
/* 0x0744 */ s16 field_0x744;
/* 0x0748 */ f32 field_0x748;
/* 0x074C */ s16 field_0x74c;
/* 0x074E */ s16 field_0x74e;
/* 0x0750 */ s16 field_0x750;
/* 0x0752 */ s16 field_0x752;
/* 0x0754 */ s16 field_0x754;
/* 0x0758 */ int mTimer;
/* 0x075C */ int mWalkTimer;
/* 0x0760 */ int mDamageTimer;
/* 0x0764 */ int mDemoTimer;
/* 0x0768 */ int mSpitTimer;
/* 0x076C */ u8 mBodyDamageTimer;
/* 0x076D */ u8 mLegLDamageTimer;
/* 0x076E */ u8 mLegRDamageTimer;
/* 0x076F */ u8 mQuakeTimer;
/* 0x0770 */ u8 mEyePosMode;
/* 0x0771 */ bool mLinkPressed;
/* 0x0772 */ u8 mDemoMode;
/* 0x0773 */ u8 mHitCounter;
/* 0x0774 */ u8 field_0x774;
/* 0x0775 */ u8 field_0x775;
/* 0x0776 */ bool mFlyingAttack;
/* 0x0777 */ bool mFlyingAttackLand;
/* 0x0778 */ u8 mChestMode;
/* 0x0779 */ u8 mDead;
/* 0x077A */ u8 mSwBit;
/* 0x077C */ f32 mBlurRate;
/* 0x0780 */ u8 mBlurMode;
/* 0x0781 */ bool field_0x781;
/* 0x0782 */ bool mDemoJump;
/* 0x0783 */ bool field_0x783;
/* 0x0784 */ dBgS_AcchCir mAcchCir;
/* 0x07C4 */ dBgS_ObjAcch mAcch;
/* 0x099C */ dCcD_Stts mCcStts;
/* 0x09D8 */ dCcD_Sph mBodyCcSph[2];
/* 0x0C48 */ dCcD_Sph mLegCcSph[2];
/* 0x0EB8 */ dCcD_Sph mTongueCcSph[2];
/* 0x1128 */ dCcU_AtInfo mAtInfo;
/* 0x114C */ u32 mParticleKey[4];
/* 0x115C */ u32 mSmokeKey;
/* 0x1160 */ u32 mRippleKey[2];
/* 0x1168 */ u8 field_0x1168[0x116c - 0x1168];
/* 0x116C */ u32 mSpitKey;
/* 0x1170 */ bool mHIOInit;
};
STATIC_ASSERT(sizeof(daE_DT_c) == 0x1174);
class daE_DT_HIO_c {
public:
/* 806AD90C */ daE_DT_HIO_c();
/* 806B5BDC */ ~daE_DT_HIO_c();
/* 806B5BDC */ virtual ~daE_DT_HIO_c() {}
/* 0x04 */ s8 field_0x4;
/* 0x08 */ f32 mScale;
/* 0x0C */ f32 mWalkSpeed;
/* 0x10 */ f32 field_0x10;
/* 0x14 */ f32 field_0x14;
/* 0x18 */ f32 field_0x18;
/* 0x1C */ f32 mStunTimer;
/* 0x20 */ f32 mPressTimer;
/* 0x24 */ f32 mMaxFallSpeed;
/* 0x28 */ f32 field_0x28;
/* 0x2C */ f32 field_0x2c;
};
struct E_DT_n {
static u8 eDt_ShakeFrame[40];
static u8 eDt_ShakeFrameDemo[40];
static u8 cc_dt_body_src[64];
static u8 cc_dt_tongue_src[64];
static u8 mDt_OtamaNum[4];
static u8 mDt_OtamaNo[80];
static u8 m_fall_no[4];
static u8 m_tongue_pos[12];
static f32 eDt_ShakeFrame[10];
static f32 eDt_ShakeFrameDemo[10];
static dCcD_SrcSph cc_dt_body_src;
static dCcD_SrcSph cc_dt_tongue_src;
static int mDt_OtamaNum;
static int mDt_OtamaNo[20];
static int m_fall_no;
static cXyz m_tongue_pos;
};

View File

@ -1,18 +1,24 @@
#ifndef D_A_E_OT_H
#define D_A_E_OT_H
#include "f_op/f_op_actor_mng.h"
#include "SSystem/SComponent/c_phase.h"
#include "d/actor/d_a_e_dt.h"
#include "d/d_bg_s_acch.h"
#include "d/d_cc_d.h"
#include "d/d_cc_uty.h"
#include "f_op/f_op_actor.h"
/**
* @ingroup actors-enemies
* @class daE_OT_c
* @brief ???
* @brief Toado
*
* @details
*
*/
class daE_OT_c : public fopEn_enemy_c {
/* 8073A314 */ void draw();
public:
/* 8073A314 */ int draw();
/* 8073A454 */ void setBck(int, u8, f32, f32);
/* 8073A4F8 */ void setActionMode(int, int);
/* 8073A510 */ void damage_check();
@ -29,20 +35,71 @@ class daE_OT_c : public fopEn_enemy_c {
/* 8073BB9C */ void action();
/* 8073BD78 */ void mtx_set();
/* 8073BE10 */ void cc_set();
/* 8073BF84 */ void execute();
/* 8073C058 */ void _delete();
/* 8073C0EC */ void CreateHeap();
/* 8073C31C */ void create();
/* 8073BF84 */ int execute();
/* 8073C058 */ int _delete();
/* 8073C0EC */ int CreateHeap();
/* 8073C31C */ cPhs__Step create();
int getChildNo() { return mChildNo; }
int getActionMode() { return mAction; }
void setShakeEgg() { mMode = 4; }
void setDeleteEgg() { mMode = 6; }
void setFallEgg() { mMode = 8; }
enum Action {
/* 0x0 */ ACT_EGG,
/* 0x1 */ ACT_BORN,
/* 0x2 */ ACT_ATTACK,
/* 0x3 */ ACT_PANIC,
/* 0x4 */ ACT_DAMAGE,
};
private:
/* 0x5ac */ u8 field_0x5ac[0xb98 - 0x5ac];
/* 0x5AC */ request_of_phase_process_class mPhase;
/* 0x5B4 */ mDoExt_McaMorfSO* mpMorf;
/* 0x5B8 */ J3DModel* mpEggModel;
/* 0x5BC */ mDoExt_btkAnm* mpEggAnm;
/* 0x5C0 */ Z2CreatureEnemy mSound;
/* 0x664 */ cXyz mEggPos;
/* 0x670 */ daE_DT_c* mpToadActor;
/* 0x674 */ int mAction;
/* 0x678 */ int mMode;
/* 0x67C */ u32 mShadowKey;
/* 0x680 */ f32 mScale;
/* 0x684 */ f32 mAnmSpeed;
/* 0x688 */ f32 mWaterSurface;
/* 0x68C */ int mChildNo;
/* 0x690 */ s16 mTargetAngleY;
/* 0x692 */ u8 mDemoMode;
/* 0x693 */ bool mHatched;
/* 0x694 */ u8 mTimer1;
/* 0x695 */ u8 mTimer2;
/* 0x698 */ dBgS_AcchCir mAcchCir;
/* 0x6D8 */ dBgS_ObjAcch mAcch;
/* 0x8B0 */ dCcD_Stts mCcStts;
/* 0x8EC */ dCcD_Sph mCcSph;
/* 0xA24 */ dCcD_Sph mAtSph;
/* 0xB5C */ dCcU_AtInfo mAtInfo;
/* 0xB80 */ u32 mWaterEffectKey[4];
/* 0xB90 */ u32 mRippleKey;
/* 0xB94 */ bool mHIOInit;
};
STATIC_ASSERT(sizeof(daE_OT_c) == 0xb98);
class daE_OT_HIO_c {
public:
/* 8073A2CC */ daE_OT_HIO_c();
/* 8073C9B0 */ ~daE_OT_HIO_c();
/* 8073C9B0 */ virtual ~daE_OT_HIO_c() {}
/* 0x04 */ s8 field_0x4;
/* 0x08 */ f32 mAttackSpeed;
/* 0x0C */ f32 mHeartDropRate;
/* 0x10 */ f32 field_0x10;
/* 0x14 */ f32 field_0x14;
/* 0x18 */ f32 field_0x18;
/* 0x1C */ f32 field_0x1c;
};
#endif /* D_A_E_OT_H */
#endif /* D_A_E_OT_H */

View File

@ -12,6 +12,7 @@
*
*/
class daAmiShutter_c : public fopAc_ac_c {
public:
/* 80BA155C */ void setBaseMtx();
/* 80BA15E4 */ void CreateHeap();
/* 80BA1650 */ void create();
@ -34,8 +35,12 @@ class daAmiShutter_c : public fopAc_ac_c {
/* 80BA2080 */ void Draw();
/* 80BA2124 */ void Delete();
/* 80BA22E8 */ ~daAmiShutter_c();
bool isShutterOpen() { return mOpen; }
private:
/* 0x568 */ u8 field_0x568[0x5dc - 0x568];
/* 0x568 */ u8 field_0x568[0x5d9 - 0x568];
/* 0x5D9 */ bool mOpen;
};
STATIC_ASSERT(sizeof(daAmiShutter_c) == 0x5dc);

View File

@ -410,7 +410,7 @@ public:
FLG2_SCN_CHG_START = 0x8000,
FLG2_UNK_4000 = 0x4000,
FLG2_UNK_2000 = 0x2000,
FLG2_UNK_1000 = 0x1000,
FLG2_PRESSED_DAMAGE = 0x1000,
FLG2_UNK_800 = 0x800,
FLG2_PLAYER_SHADOW = 0x400,
FLG2_UNK_200 = 0x200,
@ -462,7 +462,7 @@ public:
};
enum daPy_ERFLG0 {
ERFLG0_UNK_80000000 = 0x80000000,
ERFLG0_FORCE_SUBJECT_CANCEL = 0x80000000,
ERFLG0_UNK_40000000 = 0x40000000,
ERFLG0_UNK_20000000 = 0x20000000,
ERFLG0_WOLF_FCHAIN_PULL = 0x10000000,
@ -1035,6 +1035,8 @@ public:
void onNsScream() { onEndResetFlg1(ERFLG1_UNK_1); }
void onNsScreamAnm() { onEndResetFlg1(daPy_ERFLG1(ERFLG1_UNK_1 | ERFLG1_UNK_2)); }
void onNeckSearchWide() { onEndResetFlg0(ERFLG0_UNK_400); }
void offPressedDamage() { offNoResetFlg2(FLG2_PRESSED_DAMAGE); }
void onForceSubjectCancel() { onEndResetFlg0(ERFLG0_FORCE_SUBJECT_CANCEL); }
u32 checkBoarSingleBattle() const { return checkNoResetFlg2(daPy_FLG2(FLG2_UNK_1000000 | FLG2_BOAR_SINGLE_BATTLE)); }
u32 checkWolfDashAutoJump() const { return checkNoResetFlg2(FLG2_WOLF_DASH_AUTO_JUMP); }

View File

@ -408,7 +408,7 @@ public:
/* 80181E64 */ cXyz Eye();
/* 80181E98 */ cXyz Center();
/* 8018295C */ void footHeightOf(fopAc_ac_c*);
/* 801829AC */ void Bank();
/* 801829AC */ cSAngle Bank() { return mBank + mShake.field_0x40; }
bool Active() { return field_0x24 == 0; }
f32 TrimHeight() { return mTrimHeight; }
@ -454,6 +454,8 @@ public:
}
}
void U2(s16 i_val) { field_0x8c = i_val; }
static engine_fn engine_tbl[];
/* 0x000 */ camera_class* field_0x0;

View File

@ -61,7 +61,7 @@ void daAlink_c::freezeTimerDamage() {
/* 800D6F00-800D6F2C 0D1840 002C+00 1/0 0/0 0/0 .text onPressedDamage__9daAlink_cFRC4cXyzs */
void daAlink_c::onPressedDamage(cXyz const& param_0, s16 param_1) {
onNoResetFlg2(FLG2_UNK_1000);
onNoResetFlg2(FLG2_PRESSED_DAMAGE);
field_0x3104 = param_1;
field_0x3744 = param_0;
}
@ -478,7 +478,7 @@ BOOL daAlink_c::checkDamageAction() {
return procCoSandWallHitInit();
}
if (checkNoResetFlg2(FLG2_UNK_1000)) {
if (checkNoResetFlg2(FLG2_PRESSED_DAMAGE)) {
if (commonLargeDamageUpInit(-4, 1, 0, 0)) {
current.pos = field_0x3744;
shape_angle.y = field_0x3104;
@ -1261,7 +1261,7 @@ int daAlink_c::procLargeDamageUpInit(int param_0, int param_1, s16 param_2, s16
mProcVar4.field_0x3010 = 0;
if (param_0 == -4) {
onNoResetFlg2(FLG2_UNK_1000);
onNoResetFlg2(FLG2_PRESSED_DAMAGE);
mProcVar0.field_0x3008 = 0;
mProcVar1.field_0x300a = 1;
mProcVar2.field_0x300c = 1;
@ -1380,7 +1380,7 @@ int daAlink_c::procLargeDamageUp() {
onEndResetFlg0(ERFLG0_UNK_8000000);
if (field_0x3198 == -4) {
if (checkNoResetFlg2(FLG2_UNK_1000)) {
if (checkNoResetFlg2(FLG2_PRESSED_DAMAGE)) {
return 1;
}

View File

@ -4478,7 +4478,7 @@ BOOL daAlink_c::subjectCancelTrigger() {
int daAlink_c::checkSubjectEnd(BOOL i_playSound) {
setDoStatus(0x12);
if (checkEventRun() || checkEquipAnime() || doTrigger() || checkSetItemTrigger(fpcNm_ITEM_HAWK_EYE) || subjectCancelTrigger() || checkEndResetFlg0(ERFLG0_UNK_80000000) || dComIfGp_checkCameraAttentionStatus(field_0x317c, 0x2000)) {
if (checkEventRun() || checkEquipAnime() || doTrigger() || checkSetItemTrigger(fpcNm_ITEM_HAWK_EYE) || subjectCancelTrigger() || checkEndResetFlg0(ERFLG0_FORCE_SUBJECT_CANCEL) || dComIfGp_checkCameraAttentionStatus(field_0x317c, 0x2000)) {
if (i_playSound) {
seStartSystem(Z2SE_SUBJ_VIEW_OUT);
}

View File

@ -5868,7 +5868,7 @@ int daAlink_c::procWolfLargeDamageUpInit(int param_0, int param_1, s16 param_2,
field_0x3478 = daAlinkHIO_wlDamLarge_c0::m.field_0x0.mCancelFrame;
if (param_0 == -4) {
onNoResetFlg2(FLG2_UNK_1000);
onNoResetFlg2(FLG2_PRESSED_DAMAGE);
mProcVar0.field_0x3008 = 0;
var_f31 = 0.0f;
} else if (param_0 == -5 && mDemo.getParam1() > 0) {
@ -5958,7 +5958,7 @@ int daAlink_c::procWolfLargeDamageUp() {
}
if (field_0x319c == -4) {
if (checkNoResetFlg2(FLG2_UNK_1000)) {
if (checkNoResetFlg2(FLG2_PRESSED_DAMAGE)) {
return 1;
}
temp_r29->setRate(daAlinkHIO_wlDamLarge_c0::m.field_0x0.mSpeed);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff