mirror of
https://github.com/zeldaret/tp
synced 2026-07-07 22:22:05 -04:00
d_a_alink work / lv4digsand done / e_s1 matched (#2224)
* d_a_alink work / d_a_obj_lv4digsand done * d_a_e_s1 matched, not linked * d_a_e_s1 documentation
This commit is contained in:
@@ -674,6 +674,7 @@ public:
|
||||
FTANM_UNK_7B = 0x7B,
|
||||
FTANM_UNK_7C = 0x7C,
|
||||
FTANM_UNK_8A = 0x8A,
|
||||
FTANM_UNK_8B = 0x8B,
|
||||
FTANM_UNK_8D = 0x8D,
|
||||
FTANM_UNK_8E = 0x8E,
|
||||
FTANM_UNK_8F = 0x8F,
|
||||
@@ -682,6 +683,7 @@ public:
|
||||
FTANM_UNK_95 = 0x95,
|
||||
FTANM_UNK_96 = 0x96,
|
||||
FTANM_UNK_97 = 0x97,
|
||||
FTANM_UNK_99 = 0x99,
|
||||
FTANM_UNK_9A = 0x9A,
|
||||
FTANM_UNK_9B = 0x9B,
|
||||
FTANM_UNK_9C = 0x9C,
|
||||
@@ -1309,7 +1311,7 @@ public:
|
||||
/* 800A39B8 */ void handBgCheck();
|
||||
/* 800A3C8C */ JKRHeap* setItemHeap();
|
||||
/* 800A3CE4 */ void setIdxMask(u16*, u16*);
|
||||
/* 800A3D0C */ void* getAnimeResource(daPy_anmHeap_c*, u16, u32);
|
||||
/* 800A3D0C */ J3DAnmTransform* getAnimeResource(daPy_anmHeap_c*, u16, u32);
|
||||
/* 800A3D7C */ J3DModel* initModel(J3DModelData*, u32, u32);
|
||||
/* 800A3E30 */ J3DModel* initModel(u16, u32);
|
||||
/* 800A3E98 */ J3DModel* initModelEnv(u16, u32);
|
||||
@@ -2001,7 +2003,7 @@ public:
|
||||
/* 800E7460 */ int procPickUp();
|
||||
/* 800E75EC */ int procPickPutInit(int);
|
||||
/* 800E76E0 */ int procPickPut();
|
||||
/* 800E7894 */ void checkSetChainPullAnime(s16);
|
||||
/* 800E7894 */ BOOL checkSetChainPullAnime(s16);
|
||||
/* 800E794C */ s16 getChainStickAngleY(s16) const;
|
||||
/* 800E7994 */ u8 checkChainEmphasys();
|
||||
/* 800E79F8 */ BOOL searchFmChainPos();
|
||||
@@ -2361,8 +2363,8 @@ public:
|
||||
/* 80102B1C */ int checkSwimAction(int);
|
||||
/* 80103058 */ int checkSwimUpAction();
|
||||
/* 801032C8 */ void swimOutAfter(int);
|
||||
/* 80103398 */ bool checkSwimFall();
|
||||
/* 801033CC */ void checkSwimOutAction();
|
||||
/* 80103398 */ BOOL checkSwimFall();
|
||||
/* 801033CC */ int checkSwimOutAction();
|
||||
/* 80103698 */ void setSwimMoveAnime();
|
||||
/* 80103EE0 */ bool checkSwimButtonAccept();
|
||||
/* 80103F08 */ bool checkUpSwimButtonAccept();
|
||||
@@ -2743,12 +2745,12 @@ public:
|
||||
/* 80128F5C */ void setWolfAtnMoveDirection();
|
||||
/* 80129114 */ void setBlendWolfAtnMoveAnime(f32);
|
||||
/* 8012933C */ void setBlendWolfAtnBackMoveAnime(f32);
|
||||
/* 8012948C */ void setDoubleAnimeWolf(f32, f32, f32, daAlink_c::daAlink_WANM,
|
||||
/* 8012948C */ int setDoubleAnimeWolf(f32, f32, f32, daAlink_c::daAlink_WANM,
|
||||
daAlink_c::daAlink_WANM, int, f32);
|
||||
/* 80129678 */ void setSingleAnimeWolfBase(daAlink_c::daAlink_WANM);
|
||||
/* 801296A8 */ void setSingleAnimeWolfBaseMorf(daAlink_c::daAlink_WANM, f32);
|
||||
/* 801296D8 */ void setSingleAnimeWolfBaseSpeed(daAlink_c::daAlink_WANM, f32, f32);
|
||||
/* 80129704 */ void setSingleAnimeWolf(daAlink_c::daAlink_WANM, f32, f32, s16, f32);
|
||||
/* 80129704 */ int setSingleAnimeWolf(daAlink_c::daAlink_WANM, f32, f32, s16, f32);
|
||||
/* 80129848 */ void setSingleAnimeWolfParam(daAlink_c::daAlink_WANM, daAlinkHIO_anm_c const*);
|
||||
/* 8012987C */ int checkWolfLandAction(int);
|
||||
/* 80129958 */ BOOL checkMidnaUseAbility() const;
|
||||
@@ -2758,7 +2760,7 @@ public:
|
||||
/* 8012A02C */ BOOL wolfSideBgCheck(s16);
|
||||
/* 8012A228 */ BOOL checkWolfAttackReverse(int);
|
||||
/* 8012A330 */ int checkWolfBarrierHitReverse();
|
||||
/* 8012A41C */ bool checkWolfBarrierWallHit(cBgS_PolyInfo&);
|
||||
/* 8012A41C */ BOOL checkWolfBarrierWallHit(cBgS_PolyInfo&);
|
||||
/* 8012A498 */ void wolfBgCheck();
|
||||
/* 8012ACCC */ void changeWolfBlendRate(int);
|
||||
/* 8012AD1C */ void setWolfFootMatrix();
|
||||
@@ -3572,7 +3574,7 @@ public:
|
||||
/* 0x02154 */ J3DAnmTexPattern* field_0x2154;
|
||||
/* 0x02158 */ J3DAnmTextureSRTKey* mpFaceBtk;
|
||||
/* 0x0215C */ daPy_frameCtrl_c* field_0x215c;
|
||||
/* 0x02160 */ s8* field_0x2160;
|
||||
/* 0x02160 */ u16* field_0x2160;
|
||||
/* 0x02164 */ mDoExt_bckAnm field_0x2164;
|
||||
/* 0x02180 */ daAlink_matAnm_c* field_0x2180[2];
|
||||
/* 0x02188 */ dEyeHL_c mEyeHL1;
|
||||
@@ -3750,16 +3752,20 @@ public:
|
||||
union {
|
||||
s16 field_0x300a;
|
||||
s16 mBoardSwordChargeTime;
|
||||
s16 mDigActorName;
|
||||
} /* 0x0300A */ mProcVar1;
|
||||
union {
|
||||
s16 field_0x300c;
|
||||
s16 mPuzzleAimAngle;
|
||||
s16 mDigType;
|
||||
} /* 0x0300C */ mProcVar2;
|
||||
union {
|
||||
s16 field_0x300e;
|
||||
s16 mDigChangeArea;
|
||||
} /* 0x0300E */ mProcVar3;
|
||||
union {
|
||||
s16 field_0x3010;
|
||||
s16 mDigExitID;
|
||||
} /* 0x03010 */ mProcVar4;
|
||||
union {
|
||||
s16 field_0x3012;
|
||||
|
||||
+85
-10
@@ -1,6 +1,20 @@
|
||||
#ifndef D_A_E_S1_H
|
||||
#define D_A_E_S1_H
|
||||
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "Z2AudioLib/Z2Creature.h"
|
||||
#include "d/d_jnt_col.h"
|
||||
#include "d/d_bg_s_acch.h"
|
||||
#include "d/d_cc_d.h"
|
||||
#include "d/d_cc_uty.h"
|
||||
|
||||
struct dPath;
|
||||
|
||||
struct s1_ke_s {
|
||||
/* 0x000 */ cXyz field_0x0[16];
|
||||
/* 0x0C0 */ cXyz field_0xc0[16];
|
||||
/* 0x180 */ cXyz field_0x180;
|
||||
};
|
||||
|
||||
/**
|
||||
* @ingroup actors-enemies
|
||||
@@ -11,22 +25,83 @@
|
||||
*
|
||||
*/
|
||||
class e_s1_class : public fopEn_enemy_c {
|
||||
private:
|
||||
/* 0x5ac */ u8 field_0x5ac[0x3084 - 0x5ac];
|
||||
public:
|
||||
/* 0x05AC */ request_of_phase_process_class mPhase;
|
||||
/* 0x05B4 */ u8 mRoofSpawn;
|
||||
/* 0x05B5 */ u8 mPrm1;
|
||||
/* 0x05B6 */ u8 mGroupID;
|
||||
/* 0x05B7 */ u8 mSwBit;
|
||||
/* 0x05B8 */ u8 field_0x5B8[0x05BC - 0x05B8];
|
||||
/* 0x05BC */ dPath* mpPath;
|
||||
/* 0x05C0 */ s8 mCurrentPathPointNo;
|
||||
/* 0x05C1 */ s8 mPathDirection;
|
||||
/* 0x05C4 */ cXyz mPathTargetPos;
|
||||
/* 0x05D0 */ s16 mTargetAngle;
|
||||
/* 0x05D4 */ mDoExt_McaMorfSO* mpMorf;
|
||||
/* 0x05D8 */ int mAnm;
|
||||
/* 0x05DC */ u8 field_0x5DC[0x05E0 - 0x05DC];
|
||||
/* 0x05E0 */ Z2CreatureEnemy mSound;
|
||||
/* 0x0684 */ dJntCol_c mJntCol;
|
||||
/* 0x0694 */ s16 mCounter;
|
||||
/* 0x0696 */ s16 mAction;
|
||||
/* 0x0698 */ s16 mMode;
|
||||
/* 0x069A */ s8 mDrawShadow;
|
||||
/* 0x069C */ u32 mShadowKey;
|
||||
/* 0x06A0 */ s16 mTimers[4];
|
||||
/* 0x06A8 */ s16 mHitInvincibilityTimer;
|
||||
/* 0x06AA */ s16 field_0x6aa;
|
||||
/* 0x06AC */ f32 field_0x6ac;
|
||||
/* 0x06B0 */ s16 field_0x6b0;
|
||||
/* 0x06B2 */ s16 field_0x6b2;
|
||||
/* 0x06B4 */ u8 field_0x6B4[0x06B6 - 0x06B4];
|
||||
/* 0x06B6 */ s16 field_0x6b6;
|
||||
/* 0x06B8 */ s8 mIsSlowAttack;
|
||||
/* 0x06B9 */ s8 field_0x6b9;
|
||||
/* 0x06BA */ s8 field_0x6ba;
|
||||
/* 0x06BB */ s8 field_0x6bb;
|
||||
/* 0x06BC */ dBgS_AcchCir mAcchCir;
|
||||
/* 0x06FC */ dBgS_ObjAcch mAcch;
|
||||
/* 0x08D4 */ dCcD_Stts mCcStts;
|
||||
/* 0x0910 */ dCcD_Sph mCcSph[3];
|
||||
/* 0x0CB8 */ dCcD_Sph mCcAtSph;
|
||||
/* 0x0DF0 */ dCcU_AtInfo mAtInfo;
|
||||
/* 0x0E14 */ s1_ke_s mKe[22];
|
||||
/* 0x301C */ mDoExt_3DlineMat0_c mLineMat;
|
||||
/* 0x3038 */ s16 mDemoMode;
|
||||
/* 0x303A */ s16 mDemoTimer;
|
||||
/* 0x303C */ cXyz mDemoCamEye;
|
||||
/* 0x3048 */ cXyz mDemoCamCenter;
|
||||
/* 0x3054 */ f32 field_0x3054;
|
||||
/* 0x3058 */ f32 field_0x3058;
|
||||
/* 0x305C */ f32 mDemoCamBank;
|
||||
/* 0x3060 */ f32 field_0x3060;
|
||||
/* 0x3064 */ f32 mSearchRange;
|
||||
/* 0x3068 */ f32 field_0x3068;
|
||||
/* 0x306C */ s8 field_0x306c;
|
||||
/* 0x306D */ u8 field_0x306D[0x307C - 0x306D];
|
||||
/* 0x307C */ u32 mBodyEffEmtrID;
|
||||
/* 0x3080 */ u8 mInitHIO;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(e_s1_class) == 0x3084);
|
||||
|
||||
class daE_S1_HIO_c {
|
||||
public:
|
||||
/* 8077AB8C */ daE_S1_HIO_c();
|
||||
/* 80780840 */ ~daE_S1_HIO_c();
|
||||
/* 80780840 */ virtual ~daE_S1_HIO_c() {}
|
||||
|
||||
/* 0x04 */ s8 field_0x4;
|
||||
/* 0x08 */ f32 mBaseSize;
|
||||
/* 0x0C */ f32 mMoveSpeed;
|
||||
/* 0x10 */ u8 field_0x10[0x14 - 0x10];
|
||||
/* 0x14 */ f32 mDashSpeed;
|
||||
/* 0x18 */ f32 field_0x18;
|
||||
/* 0x1C */ s16 mFallSEWaitTime;
|
||||
/* 0x1E */ s16 mAllDeadWaitTime;
|
||||
/* 0x20 */ f32 mReactionDist;
|
||||
/* 0x24 */ f32 mReactionAngle;
|
||||
/* 0x28 */ s16 mReactionTime;
|
||||
/* 0x2A */ u8 mInvincible;
|
||||
};
|
||||
|
||||
struct s1_ke_s {
|
||||
/* 807803F4 */ ~s1_ke_s();
|
||||
/* 80780470 */ s1_ke_s();
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif /* D_A_E_S1_H */
|
||||
|
||||
@@ -32,6 +32,7 @@ public:
|
||||
FLG0_UNK_8000000 = 0x8000000,
|
||||
FLG0_NPC_NEAR = 0x100000,
|
||||
FLG0_NPC_FAR = 0x40000,
|
||||
FLG0_UNK_20000 = 0x20000,
|
||||
FLG0_NO_INPUT = 0x4000,
|
||||
FLG0_NO_DRAW = 0x2000,
|
||||
FLG0_UNK_400 = 0x400,
|
||||
@@ -118,6 +119,11 @@ public:
|
||||
BOOL checkWolfNoPos() const { return checkStateFlg0(FLG0_UNK_800); }
|
||||
int checkMetamorphoseEnable() { return (this->*mpFunc)(); }
|
||||
int checkShadowModelDrawDemoForce() const { return checkStateFlg1(FLG1_SHADOW_MODEL_DRAW_DEMO_FORCE); }
|
||||
|
||||
void setForceNeckAimPos(const cXyz& i_pos) {
|
||||
onStateFlg0(FLG0_UNK_20000);
|
||||
field_0x9c4 = i_pos;
|
||||
}
|
||||
|
||||
void onTagWaitPosWarp(const cXyz* param_0) {
|
||||
field_0x9ac = *param_0;
|
||||
|
||||
@@ -83,8 +83,12 @@ public:
|
||||
static void* mCutNameList[5];
|
||||
static u8 mCutList[60];
|
||||
|
||||
bool chkSFight() { return field_0x166b == 1; }
|
||||
|
||||
private:
|
||||
/* 0x568 */ u8 field_0x568[0x1674 - 0x568];
|
||||
/* 0x0568 */ u8 field_0x568[0x166B - 0x568];
|
||||
/* 0x166B */ u8 field_0x166b;
|
||||
/* 0x166C */ u8 field_0x166c[0x1674 - 0x166C];
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daNpc_Moi_c) == 0x1674);
|
||||
|
||||
@@ -73,6 +73,7 @@ public:
|
||||
void setEventWolf() { mFlags |= 0x80; }
|
||||
void setEvent() { mFlags |= 0x8; }
|
||||
void setAway() { mFlags |= 2; }
|
||||
void setAttack() { mFlags |= 1; }
|
||||
|
||||
void setHawkPath(u8 i_pathNo) {
|
||||
if (i_pathNo != 0xFF) {
|
||||
|
||||
@@ -18,6 +18,9 @@ public:
|
||||
/* 80BDC7D8 */ int execute();
|
||||
/* 80BDCB0C */ int draw();
|
||||
|
||||
void onDigStart() { field_0x568 = 1; }
|
||||
s16 getSceneNum() const { return field_0x56c; }
|
||||
|
||||
private:
|
||||
/* 0x568 */ u8 field_0x568;
|
||||
/* 0x569 */ u8 field_0x569;
|
||||
|
||||
@@ -32,6 +32,8 @@ public:
|
||||
|
||||
u8 getSceneNum() { return (fopAcM_GetParam(this) >> 0xC) & 0xFF; }
|
||||
int getItemNum() { return getSceneNum(); }
|
||||
u8 getType() const { return mType; }
|
||||
void onDigFlg() { mDigFlg = true; }
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daObjDigpl_c) == 0x5C0);
|
||||
|
||||
@@ -47,8 +47,8 @@ public:
|
||||
/* 80BDD2B8 */ virtual int Delete();
|
||||
|
||||
u8 getSwNo() { return fopAcM_GetParamBit(this, 0, 8); }
|
||||
void startDig() { mAction = ACTION_DIG_e; }
|
||||
void endDig() { mAction = ACTION_END_e; }
|
||||
void startDig() { mMode = ACTION_DIG_e; }
|
||||
void endDig() { mMode = ACTION_END_e; }
|
||||
|
||||
private:
|
||||
/* 0x5A0 */ request_of_phase_process_class mPhaseReq;
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
#define D_A_OBJ_LV4DIGSAND_H
|
||||
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "d/d_bg_s_movebg_actor.h"
|
||||
#include "d/d_bg_s_acch.h"
|
||||
#include "d/d_cc_d.h"
|
||||
|
||||
/**
|
||||
* @ingroup actors-objects
|
||||
@@ -11,14 +14,11 @@
|
||||
* @details
|
||||
*
|
||||
*/
|
||||
class daObjL4DigSand_c : public fopAc_ac_c {
|
||||
class daObjL4DigSand_c : public dBgS_MoveBgActor {
|
||||
public:
|
||||
/* 80C66B18 */ void initBaseMtx();
|
||||
/* 80C66B54 */ void setBaseMtx();
|
||||
/* 80C66BC8 */ void Create();
|
||||
/* 80C66C24 */ void CreateHeap();
|
||||
/* 80C66C94 */ void create1st();
|
||||
/* 80C66D40 */ void Execute(f32 (**)[3][4]);
|
||||
/* 80C66C94 */ int create1st();
|
||||
/* 80C66DD0 */ void action();
|
||||
/* 80C66E74 */ void mode_init_wait();
|
||||
/* 80C66E80 */ void mode_wait();
|
||||
@@ -26,11 +26,27 @@ public:
|
||||
/* 80C66FFC */ void mode_dig();
|
||||
/* 80C670AC */ void mode_init_end();
|
||||
/* 80C67100 */ void mode_end();
|
||||
/* 80C67104 */ void Draw();
|
||||
/* 80C671A8 */ void Delete();
|
||||
|
||||
private:
|
||||
/* 0x568 */ u8 field_0x568[0x944 - 0x568];
|
||||
/* 80C66C24 */ virtual int CreateHeap();
|
||||
/* 80C66BC8 */ virtual int Create();
|
||||
/* 80C66D40 */ virtual int Execute(f32 (**)[3][4]);
|
||||
/* 80C67104 */ virtual int Draw();
|
||||
/* 80C671A8 */ virtual int Delete();
|
||||
|
||||
u8 getSwNo() { return fopAcM_GetParamBit(this, 0, 8); }
|
||||
void startDig() { field_0x941 = 1; }
|
||||
void endDig() { field_0x941 = 2; }
|
||||
|
||||
/* 0x5A0 */ request_of_phase_process_class mPhase;
|
||||
/* 0x5A8 */ J3DModel* mpModel;
|
||||
/* 0x5AC */ dBgS_ObjAcch mAcch;
|
||||
/* 0x784 */ dBgS_AcchCir mAcchCir;
|
||||
/* 0x7C4 */ dCcD_Stts mCcStts;
|
||||
/* 0x800 */ dCcD_Cyl mCcCyl;
|
||||
/* 0x93C */ f32 mGroundY;
|
||||
/* 0x940 */ u8 mMode;
|
||||
/* 0x941 */ u8 field_0x941;
|
||||
/* 0x942 */ u8 mTimer;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daObjL4DigSand_c) == 0x944);
|
||||
|
||||
@@ -53,7 +53,6 @@ public:
|
||||
daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int,
|
||||
daNpcT_evtData_c const*, char**);
|
||||
/* 80CD5B84 */ void chkGoal();
|
||||
/* 801312C8 */ void setWolfHowling();
|
||||
|
||||
/* 80CD5B7C */ s32 getBackboneJointNo();
|
||||
/* 80CD5B74 */ s32 getHeadJointNo();
|
||||
@@ -72,6 +71,17 @@ public:
|
||||
/* 80CD05D0 */ void drawGhost();
|
||||
/* 80CD06BC */ bool afterSetMotionAnm(int, int, f32, int);
|
||||
|
||||
void setWolfHowling() {
|
||||
if (field_0x10c8 != 0) {
|
||||
fopAc_ac_c* actor_p = field_0x10e4.getActorP();
|
||||
JUT_ASSERT(0x1A3, 0 != actor_p);
|
||||
|
||||
((daObj_Sekizoa_c*)actor_p)->setWolfHowling();
|
||||
} else {
|
||||
field_0x1173 = 1;
|
||||
}
|
||||
}
|
||||
|
||||
u8 getType() {
|
||||
int prm = fopAcM_GetParam(this) >> 0x1C;
|
||||
|
||||
@@ -116,6 +126,14 @@ public:
|
||||
|
||||
static void* mCutNameList[9];
|
||||
static u8 mCutList[108];
|
||||
|
||||
/* 0x0E40 */ u8 field_0xe40[0x10C8 - 0xE40];
|
||||
/* 0x10C8 */ u8 field_0x10c8;
|
||||
/* 0x10C9 */ u8 field_0x10c9[0x10E4 - 0x10C9];
|
||||
/* 0x10E4 */ daNpcT_ActorMngr_c field_0x10e4;
|
||||
/* 0x10EC */ u8 field_0x10ec[0x1173 - 0x10ec];
|
||||
/* 0x1173 */ u8 field_0x1173;
|
||||
/* 0x1174 */ u8 field_0x1174[0x1180 - 0x1174];
|
||||
};
|
||||
|
||||
#endif /* D_A_OBJ_SEKIZOA_H */
|
||||
|
||||
@@ -387,6 +387,7 @@ public:
|
||||
ERFLG1_UNK_20000000 = 0x20000000,
|
||||
ERFLG1_UNK_10000000 = 0x10000000,
|
||||
ERFLG1_UNK_4000000 = 0x4000000,
|
||||
ERFLG1_UNK_2000000 = 0x2000000,
|
||||
ERFLG1_UNK_1000000 = 0x1000000,
|
||||
ERFLG1_UNK_200000 = 0x200000,
|
||||
ERFLG1_UNK_100000 = 0x100000,
|
||||
@@ -420,12 +421,14 @@ public:
|
||||
};
|
||||
|
||||
enum daPy_RFLG0 {
|
||||
RFLG0_WOLF_BARK = 0x80000000,
|
||||
RFLG0_UNK_40000000 = 0x40000000,
|
||||
RFLG0_UNK_20000000 = 0x20000000,
|
||||
RFLG0_UNK_10000000 = 0x10000000,
|
||||
RFLG0_UNK_8000000 = 0x8000000,
|
||||
RFLG0_UNK_4000000 = 0x4000000,
|
||||
RFLG0_GRAB_PUT_START = 0x400000,
|
||||
RFLG0_WOLF_GROWL = 0x200000,
|
||||
RFLG0_UNK_80000 = 0x80000,
|
||||
RFLG0_UNK_40000 = 0x40000,
|
||||
RFLG0_UNK_20000 = 0x20000,
|
||||
@@ -869,6 +872,10 @@ public:
|
||||
u32 checkMagneBootsOn() const { return checkNoResetFlg0(FLG0_MAGNE_BOOTS_ON); }
|
||||
BOOL checkFastSwordCut() const { return checkNoResetFlg0(FLG0_UNK_80000); }
|
||||
u32 checkMidnaRide() const { return checkNoResetFlg0(FLG0_MIDNA_RIDE); }
|
||||
BOOL checkWolfGrowl() const { return checkResetFlg0(RFLG0_WOLF_GROWL); }
|
||||
BOOL checkWolfThreat() const { return checkWolfGrowl(); }
|
||||
BOOL checkWolfBark() const { return checkResetFlg0(RFLG0_WOLF_BARK); }
|
||||
|
||||
void onPlayerNoDraw() { onNoResetFlg0(FLG0_PLAYER_NO_DRAW); }
|
||||
void offPlayerNoDraw() { offNoResetFlg0(FLG0_PLAYER_NO_DRAW); }
|
||||
void onPushPullKeep() { onNoResetFlg0(FLG0_PUSH_PULL_KEEP); }
|
||||
@@ -879,6 +886,8 @@ public:
|
||||
void onForceGameOver() { onNoResetFlg2(FLG2_FORCE_GAMEOVER); }
|
||||
void onForceWolfChange() { onEndResetFlg0(ERFLG0_UNK_2); }
|
||||
void onDoPutEmphasys() { onEndResetFlg1(ERFLG1_UNK_10000000); }
|
||||
void onNsScream() { onEndResetFlg1(ERFLG1_UNK_1); }
|
||||
void onNsScreamAnm() { onEndResetFlg1(daPy_ERFLG1(ERFLG1_UNK_1 | ERFLG1_UNK_2)); }
|
||||
|
||||
u32 checkBoarSingleBattle() const { return checkNoResetFlg2(FLG2_BOAR_SINGLE_BATTLE); }
|
||||
u32 checkWolfDashAutoJump() const { return checkNoResetFlg2(FLG2_WOLF_DASH_AUTO_JUMP); }
|
||||
|
||||
@@ -21,10 +21,14 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
f32 getLandArea() const { return mLandArea; }
|
||||
void onNextCheckFlg() { mNextCheckFlg = true; }
|
||||
s16 getNotSlideFlg() const { return shape_angle.z; }
|
||||
|
||||
/* 0x568 */ s8 field_0x568;
|
||||
/* 0x568 */ s8 field_0x569;
|
||||
/* 0x568 */ u8 field_0x56a;
|
||||
/* 0x568 */ u8 field_0x56b;
|
||||
/* 0x569 */ s8 field_0x569;
|
||||
/* 0x56A */ u8 field_0x56a;
|
||||
/* 0x56B */ u8 mNextCheckFlg;
|
||||
/* 0x56C */ u8 field_0x56c[4];
|
||||
/* 0x570 */ u8 field_0x570;
|
||||
/* 0x571 */ u8 field_0x571;
|
||||
@@ -34,7 +38,7 @@ public:
|
||||
/* 0x574 */ u16 field_0x576;
|
||||
/* 0x578 */ dMsgFlow_c mMsgFlow;
|
||||
/* 0x5C4 */ dPath* field_0x5c4;
|
||||
/* 0x5C8 */ f32 field_0x5c8;
|
||||
/* 0x5C8 */ f32 mLandArea;
|
||||
};
|
||||
|
||||
#endif /* D_A_TAG_WLJUMP_H */
|
||||
|
||||
@@ -391,6 +391,10 @@ public:
|
||||
i_info->field_0x1e = param_1;
|
||||
}
|
||||
|
||||
void EventFlag(int i_flag) {
|
||||
mEventData.field_0x24 = i_flag;
|
||||
}
|
||||
|
||||
static engine_fn engine_tbl[];
|
||||
|
||||
/* 0x000 */ camera_class* field_0x0;
|
||||
|
||||
@@ -271,12 +271,14 @@ public:
|
||||
void onWolfDownPullEndFlg() { mFlags |= 0x20; }
|
||||
void onWolfNoLock() { mFlags |= 0x200; }
|
||||
void onDownFlg() { mFlags |= 1; }
|
||||
void onHeadLockFlg() { mFlags |= 0x80; }
|
||||
|
||||
void offWolfBiteDamage() { mFlags &= ~0x40; }
|
||||
void offCutDownHitFlg() { mFlags &= ~0x2; }
|
||||
void offWolfDownPullFlg() { mFlags &= ~0x10; }
|
||||
void offDownFlg() { mFlags &= ~0x17; }
|
||||
void offWolfNoLock() { mFlags &= ~0x200; }
|
||||
void offHeadLockFlg() { mFlags &= ~0x80; }
|
||||
|
||||
void setMidnaBindMode(u8 i_bindMode) { mMidnaBindMode = i_bindMode; }
|
||||
void setMidnaBindID(u8 i_idx, u32 i_bindID) { mMidnaBindID[i_idx] = i_bindID; }
|
||||
@@ -285,6 +287,7 @@ public:
|
||||
void setThrowModeThrowRight() { mThrowMode |= 0x10; }
|
||||
void setThrowModeThrowLeft() { mThrowMode |= 8; }
|
||||
void setDownPos(const cXyz* i_pos) { mDownPos = *i_pos; }
|
||||
void setHeadLockPos(const cXyz* i_pos) { mHeadLockPos = *i_pos; }
|
||||
|
||||
/* 0x568 */ cXyz mDownPos;
|
||||
/* 0x574 */ cXyz mHeadLockPos;
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
#ifndef F_OP_ACTOR_ENEMY_H_
|
||||
#define F_OP_ACTOR_ENEMY_H_
|
||||
|
||||
#include "SSystem/SComponent/c_math.h"
|
||||
#include "Z2AudioLib/Z2Creature.h"
|
||||
#include "d/actor/d_a_midna.h"
|
||||
#include "d/actor/d_a_player.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_s_play.h"
|
||||
|
||||
// NONMATCHING ?
|
||||
static int setMidnaBindEffect(fopEn_enemy_c* i_actorP, Z2CreatureEnemy* i_creatureP, cXyz* i_effPos,
|
||||
cXyz* i_effSize) {
|
||||
static GXColor e_prim[] = {
|
||||
{0xFF, 0x78, 0x00, 0x00},
|
||||
{0xFF, 0x64, 0x78, 0x00},
|
||||
};
|
||||
static GXColor e_env[] = {
|
||||
{0x5A, 0x2D, 0x2D, 0x00},
|
||||
{0x3C, 0x1E, 0x1E, 0x00},
|
||||
};
|
||||
|
||||
daPy_py_c* player = daPy_getPlayerActorClass();
|
||||
fopAc_ac_c* a_this = (fopAc_ac_c*)i_actorP;
|
||||
|
||||
if (player->getMidnaActor() && player->checkWolfLock(a_this)) {
|
||||
cXyz sp48;
|
||||
|
||||
BOOL darkworld_check;
|
||||
if (dKy_darkworld_check()) {
|
||||
darkworld_check = 1;
|
||||
} else {
|
||||
darkworld_check = 0;
|
||||
}
|
||||
|
||||
if (i_actorP->getMidnaBindMode() == 0) {
|
||||
i_actorP->setMidnaBindMode(1);
|
||||
|
||||
csXyz sp68;
|
||||
MTXCopy(player->getMidnaActor()->getMtxHairTop(), mDoMtx_stack_c::get());
|
||||
|
||||
cXyz sp54(nREG_F(8) + 100.0f, nREG_F(9), nREG_F(10));
|
||||
mDoMtx_stack_c::multVec(&sp54, &sp48);
|
||||
|
||||
cXyz sp60 = sp48 - *i_effPos;
|
||||
|
||||
sp68.y = cM_atan2s(sp60.x, sp60.z);
|
||||
sp68.x = -cM_atan2s(sp60.y, JMAFastSqrt(sp60.x * sp60.x + sp60.z * sp60.z));
|
||||
sp68.z = 0;
|
||||
|
||||
s32 room_no = fopAcM_GetRoomNo(a_this);
|
||||
JPABaseEmitter* emitter = dComIfGp_particle_set(
|
||||
0x29B, i_effPos, &a_this->tevStr, &sp68, i_effSize, 0xFF, NULL, room_no,
|
||||
&e_prim[darkworld_check], &e_env[darkworld_check], NULL);
|
||||
|
||||
if (emitter != NULL) {
|
||||
emitter->setGlobalParticleHeightScale((JREG_F(7) + 0.01f) * sp60.abs());
|
||||
}
|
||||
|
||||
room_no = fopAcM_GetRoomNo(a_this);
|
||||
dComIfGp_particle_set(0x29C, i_effPos, &a_this->tevStr, &a_this->shape_angle, i_effSize,
|
||||
0xFF, NULL, room_no, &e_prim[darkworld_check],
|
||||
&e_env[darkworld_check], NULL);
|
||||
|
||||
i_creatureP->startCreatureSound(Z2SE_MIDNA_BIND_LOCK_ON, 0, -1);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
static u16 eff_id[] = {0x29D, 0x29E, 0x29F};
|
||||
|
||||
u32* bind_id = i_actorP->getMidnaBindID(i);
|
||||
*bind_id = dComIfGp_particle_set(*bind_id, eff_id[i], i_effPos, &a_this->tevStr,
|
||||
&a_this->shape_angle, i_effSize, 0xFF, NULL,
|
||||
fopAcM_GetRoomNo(a_this), &e_prim[darkworld_check],
|
||||
&e_env[darkworld_check], NULL);
|
||||
}
|
||||
|
||||
i_creatureP->startCreatureSound(Z2SE_MIDNA_BIND_LOCK_SUS, 0, -1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
i_actorP->setMidnaBindMode(0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -116,6 +116,7 @@ public:
|
||||
static bool getTriPla(cM3dGPla* i_plane) { return dComIfG_Bgsp().GetTriPla(mGndCheck, i_plane); }
|
||||
static int getRoomId() { return dComIfG_Bgsp().GetRoomId(mGndCheck); }
|
||||
static int getPolyColor() { return dComIfG_Bgsp().GetPolyColor(mGndCheck); }
|
||||
static int getPolyAtt0() { return dComIfG_Bgsp().GetPolyAtt0(mGndCheck); }
|
||||
static dBgS_ObjGndChk* getGroundCheck() { return &mGndCheck; }
|
||||
static f32 getGroundY() { return mGroundY; }
|
||||
};
|
||||
@@ -607,7 +608,7 @@ s32 fopAcM_createWarpHole(const cXyz*, const csXyz*, int, u8, u8, u8);
|
||||
|
||||
fopAc_ac_c* fopAcM_myRoomSearchEnemy(s8 roomNo);
|
||||
|
||||
s32 fopAcM_createDisappear(const fopAc_ac_c*, const cXyz*, u8, u8, u8);
|
||||
s32 fopAcM_createDisappear(const fopAc_ac_c* i_actor, const cXyz* i_pos, u8 i_size, u8 i_type, u8 i_enemyID);
|
||||
void fopAcM_setCarryNow(fopAc_ac_c*, int);
|
||||
void fopAcM_cancelCarryNow(fopAc_ac_c*);
|
||||
s32 fopAcM_otoCheck(const fopAc_ac_c*, f32);
|
||||
@@ -728,76 +729,4 @@ inline bool fopAcM_CheckFoodStatus(const fopAc_ac_c* actor, fopAcM_FOOD status)
|
||||
return actor->field_0x567 == status;
|
||||
}
|
||||
|
||||
/* static inline int setMidnaBindEffect(fopEn_enemy_c* i_actorP, Z2CreatureEnemy* i_creatureP, cXyz* param_2,
|
||||
cXyz* param_3) {
|
||||
static GXColor e_prim[] = {
|
||||
{0xFF, 0x78, 0x00, 0x00},
|
||||
{0xFF, 0x64, 0x78, 0x00},
|
||||
};
|
||||
static GXColor e_env[] = {
|
||||
{0x5A, 0x2D, 0x2D, 0x00},
|
||||
{0x3C, 0x1E, 0x1E, 0x00},
|
||||
};
|
||||
|
||||
daPy_py_c* player = daPy_getPlayerActorClass();
|
||||
fopAc_ac_c* a_this = (fopAc_ac_c*)i_actorP;
|
||||
|
||||
if (player->getMidnaActor() && player->checkWolfLock(a_this)) {
|
||||
cXyz sp48;
|
||||
|
||||
BOOL darkworld_check;
|
||||
if (dKy_darkworld_check()) {
|
||||
darkworld_check = 1;
|
||||
} else {
|
||||
darkworld_check = 0;
|
||||
}
|
||||
|
||||
if (i_actorP->getMidnaBindMode() == 0) {
|
||||
i_actorP->setMidnaBindMode(1);
|
||||
|
||||
csXyz sp68;
|
||||
MTXCopy(player->getMidnaActor()->getMtxHairTop(), mDoMtx_stack_c::get());
|
||||
|
||||
cXyz sp54(nREG_F(8) + 100.0f, nREG_F(9), nREG_F(10));
|
||||
mDoMtx_stack_c::multVec(&sp54, &sp48);
|
||||
|
||||
cXyz sp60 = sp48 - *param_2;
|
||||
|
||||
sp68.y = cM_atan2s(sp60.x, sp60.z);
|
||||
sp68.x = -cM_atan2s(sp60.y, JMAFastSqrt(sp60.x * sp60.x + sp60.z * sp60.z));
|
||||
sp68.z = 0;
|
||||
|
||||
JPABaseEmitter* emitter = dComIfGp_particle_set(
|
||||
0x29B, param_2, &a_this->tevStr, &sp68, param_3, 0xFF, NULL, fopAcM_GetRoomNo(a_this),
|
||||
&e_prim[darkworld_check], &e_env[darkworld_check], NULL);
|
||||
|
||||
if (emitter != NULL) {
|
||||
emitter->setGlobalParticleHeightScale((JREG_F(7) + 0.01f) * sp60.abs());
|
||||
}
|
||||
|
||||
dComIfGp_particle_set(0x29C, param_2, &a_this->tevStr, &a_this->shape_angle,
|
||||
param_3, 0xFF, NULL, fopAcM_GetRoomNo(a_this), &e_prim[darkworld_check],
|
||||
&e_env[darkworld_check], NULL);
|
||||
|
||||
i_creatureP->startCreatureSound(Z2SE_MIDNA_BIND_LOCK_ON, 0, -1);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
static u16 eff_id[] = {0x29D, 0x29E, 0x29F};
|
||||
|
||||
u32* bind_id = i_actorP->getMidnaBindID(i);
|
||||
*bind_id = dComIfGp_particle_set(*bind_id, eff_id[i], param_2, &a_this->tevStr,
|
||||
&a_this->shape_angle, param_3, 0xFF, NULL, fopAcM_GetRoomNo(a_this),
|
||||
&e_prim[darkworld_check], &e_env[darkworld_check], NULL);
|
||||
|
||||
}
|
||||
|
||||
i_creatureP->startCreatureSound(Z2SE_MIDNA_BIND_LOCK_SUS, 0, -1);
|
||||
return 1;
|
||||
}
|
||||
|
||||
i_actorP->setMidnaBindMode(0);
|
||||
return 0;
|
||||
} */
|
||||
|
||||
#endif
|
||||
|
||||
@@ -43,4 +43,19 @@ inline BOOL checkEqual(s32 a, s32 b) {
|
||||
// hack to make strings with no references compile properly
|
||||
#define DEAD_STRING(s) OSReport(s)
|
||||
|
||||
#define UNK_BSS(name) \
|
||||
static u8 lit_##name[1 + 3 /* padding */];
|
||||
|
||||
#define UNK_REL_DATA \
|
||||
static u8 cNullVec__6Z2Calc[12] = { \
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
|
||||
}; \
|
||||
static u32 lit_1787[1 + 4 /* padding */] = { \
|
||||
0x02000201, \
|
||||
0x40080000, \
|
||||
0x00000000, \
|
||||
0x3FE00000, \
|
||||
0x00000000, \
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -420,6 +420,7 @@ public:
|
||||
u16 getOldFrameStartJoint() { return mOldFrameStartJoint; }
|
||||
u16 getOldFrameEndJoint() { return mOldFrameEndJoint; }
|
||||
Quaternion* getOldFrameQuaternion(int i_no) { return &mOldFrameQuaternion[i_no]; }
|
||||
f32 getOldFrameMorfCounter() { return mOldFrameMorfCounter; }
|
||||
|
||||
private:
|
||||
/* 0x00 */ bool mOldFrameFlg;
|
||||
|
||||
Reference in New Issue
Block a user