mirror of
https://github.com/zeldaret/tp.git
synced 2025-02-17 06:58:27 +00: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:
parent
5650c7fe08
commit
8a0802554e
@ -17,15 +17,15 @@ mode_init_end__16daObjL4DigSand_cFv = .text:0x0000060C; // type:function size:0x
|
||||
mode_end__16daObjL4DigSand_cFv = .text:0x00000660; // type:function size:0x4 scope:global
|
||||
Draw__16daObjL4DigSand_cFv = .text:0x00000664; // type:function size:0xA4 scope:global
|
||||
Delete__16daObjL4DigSand_cFv = .text:0x00000708; // type:function size:0x34 scope:global
|
||||
daObjL4DigSand_create1st__FP16daObjL4DigSand_c = .text:0x0000073C; // type:function size:0x12C scope:global
|
||||
daObjL4DigSand_create1st__FP16daObjL4DigSand_c = .text:0x0000073C; // type:function size:0x12C scope:local
|
||||
__dt__8cM3dGCylFv = .text:0x00000868; // type:function size:0x48 scope:global
|
||||
__dt__8cM3dGAabFv = .text:0x000008B0; // type:function size:0x48 scope:global
|
||||
__dt__10dCcD_GSttsFv = .text:0x000008F8; // type:function size:0x5C scope:global
|
||||
__dt__12dBgS_AcchCirFv = .text:0x00000954; // type:function size:0x70 scope:global
|
||||
__dt__12dBgS_ObjAcchFv = .text:0x000009C4; // type:function size:0x70 scope:global
|
||||
daObjL4DigSand_MoveBGDelete__FP16daObjL4DigSand_c = .text:0x00000A34; // type:function size:0x20 scope:global
|
||||
daObjL4DigSand_MoveBGExecute__FP16daObjL4DigSand_c = .text:0x00000A54; // type:function size:0x20 scope:global
|
||||
daObjL4DigSand_MoveBGDraw__FP16daObjL4DigSand_c = .text:0x00000A74; // type:function size:0x2C scope:global
|
||||
daObjL4DigSand_MoveBGDelete__FP16daObjL4DigSand_c = .text:0x00000A34; // type:function size:0x20 scope:local
|
||||
daObjL4DigSand_MoveBGExecute__FP16daObjL4DigSand_c = .text:0x00000A54; // type:function size:0x20 scope:local
|
||||
daObjL4DigSand_MoveBGDraw__FP16daObjL4DigSand_c = .text:0x00000A74; // type:function size:0x2C scope:local
|
||||
__dt__10cCcD_GSttsFv = .text:0x00000AA0; // type:function size:0x48 scope:global
|
||||
cLib_calcTimer<Uc>__FPUc = .text:0x00000AE8; // type:function size:0x1C scope:global
|
||||
@20@__dt__14dBgS_ObjGndChkFv = .text:0x00000B04; // type:function size:0x8 scope:local
|
||||
@ -42,14 +42,14 @@ _dtors = .dtors:0x00000000; // type:label scope:global
|
||||
@3767 = .rodata:0x0000000C; // type:object size:0x4 scope:local
|
||||
@stringBase0 = .rodata:0x00000010; // type:object size:0x8 scope:local data:string_table
|
||||
...data.0 = .data:0x00000000; // type:label scope:local
|
||||
cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:global
|
||||
cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:local
|
||||
@1787 = .data:0x0000000C; // type:object size:0x4 scope:local
|
||||
l_arcName = .data:0x00000020; // type:object size:0x4 scope:global data:4byte
|
||||
l_arcName = .data:0x00000020; // type:object size:0x4 scope:local data:4byte
|
||||
@3715 = .data:0x00000024; // type:object size:0xC scope:local
|
||||
@3716 = .data:0x00000030; // type:object size:0xC scope:local
|
||||
@3717 = .data:0x0000003C; // type:object size:0xC scope:local
|
||||
l_func$3714 = .data:0x00000048; // type:object size:0x24 scope:local
|
||||
daObjL4DigSand_METHODS = .data:0x0000006C; // type:object size:0x20 scope:global
|
||||
daObjL4DigSand_METHODS = .data:0x0000006C; // type:object size:0x20 scope:local
|
||||
g_profile_Obj_Lv4DigSand = .data:0x0000008C; // type:object size:0x30 scope:global
|
||||
__vt__12dBgS_AcchCir = .data:0x000000BC; // type:object size:0xC scope:global
|
||||
__vt__10cCcD_GStts = .data:0x000000C8; // type:object size:0xC scope:global
|
||||
@ -59,4 +59,4 @@ __vt__8cM3dGAab = .data:0x000000EC; // type:object size:0xC scope:global
|
||||
__vt__12dBgS_ObjAcch = .data:0x000000F8; // type:object size:0x24 scope:global
|
||||
__vt__14dBgS_ObjGndChk = .data:0x0000011C; // type:object size:0x30 scope:global
|
||||
__vt__16daObjL4DigSand_c = .data:0x0000014C; // type:object size:0x28 scope:global
|
||||
lbl_533_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte
|
||||
lbl_533_bss_0 = .bss:0x00000000; // type:object size:0x1 scope:local data:byte
|
||||
|
@ -1888,7 +1888,7 @@ config.libs = [
|
||||
ActorRel(NonMatching, "d_a_obj_lv4SlideWall"),
|
||||
ActorRel(NonMatching, "d_a_obj_lv4bridge"),
|
||||
ActorRel(NonMatching, "d_a_obj_lv4chandelier"),
|
||||
ActorRel(NonMatching, "d_a_obj_lv4digsand"),
|
||||
ActorRel(Matching, "d_a_obj_lv4digsand"),
|
||||
ActorRel(Matching, "d_a_obj_lv4floor"),
|
||||
ActorRel(Matching, "d_a_obj_lv4gear"),
|
||||
ActorRel(NonMatching, "d_a_obj_lv4prelvtr"),
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
86
include/f_op/f_op_actor_enemy.h
Normal file
86
include/f_op/f_op_actor_enemy.h
Normal file
@ -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;
|
||||
|
@ -3,9 +3,9 @@
|
||||
|
||||
|
||||
namespace std {
|
||||
/* float fabs(float num) {
|
||||
inline float fabs(float num) {
|
||||
return ::fabsf(num);
|
||||
} */
|
||||
}
|
||||
|
||||
inline float fabsf(float num) {
|
||||
return ::fabsf(num);
|
||||
@ -20,4 +20,4 @@ inline float abs(float x) {
|
||||
}
|
||||
} // namespace std
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
@ -551,13 +551,13 @@ SECTION_SDATA2 static u8 bFootJoint[4] = {
|
||||
};
|
||||
|
||||
/* 804531D8-804531E0 0017D8 0008+00 1/1 0/0 0/0 .sdata2 snowID$53110 */
|
||||
SECTION_SDATA2 static u8 snowID[8] = {
|
||||
0x88, 0x4D, 0x88, 0x4E, 0x88, 0x51, 0x88, 0x52,
|
||||
SECTION_SDATA2 static u16 snowID[] = {
|
||||
0x884D, 0x884E, 0x8851, 0x8852,
|
||||
};
|
||||
|
||||
/* 804531E0-804531E8 0017E0 0008+00 1/1 0/0 0/0 .sdata2 smokeID$53111 */
|
||||
SECTION_SDATA2 static u8 smokeID[8] = {
|
||||
0x83, 0xA0, 0x83, 0xA1, 0x83, 0xA4, 0x83, 0xA5,
|
||||
SECTION_SDATA2 static u16 smokeID[] = {
|
||||
0x83A0, 0x83A1, 0x83A4, 0x83A5,
|
||||
};
|
||||
|
||||
/* 804531E8-804531F0 0017E8 0008+00 1/1 0/0 0/0 .sdata2 waterColor$53845 */
|
||||
@ -884,13 +884,13 @@ SECTION_RODATA static Vec const l_ironBallCenterVec = {
|
||||
COMPILER_STRIP_GATE(0x8038FB50, &l_ironBallCenterVec);
|
||||
|
||||
/* 8038FB5C-8038FBBC 01C1BC 0060+00 1/2 0/0 0/0 .rodata l_wolfFootOnFrame */
|
||||
SECTION_RODATA static u8 const l_wolfFootOnFrame[96] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x41, 0x80, 0x00, 0x00, 0x41, 0x98, 0x00, 0x00, 0x40, 0xC0, 0x00, 0x00,
|
||||
0x41, 0x20, 0x00, 0x00, 0x41, 0x40, 0x00, 0x00, 0x40, 0xE0, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00, 0x41, 0xD8, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00,
|
||||
0x41, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xC0, 0x00, 0x00, 0x41, 0x30, 0x00, 0x00,
|
||||
0x41, 0xC0, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x41, 0x40, 0x00, 0x00, 0x41, 0xD0, 0x00, 0x00,
|
||||
0x42, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x30, 0x00, 0x00, 0x42, 0x68, 0x00, 0x00,
|
||||
SECTION_RODATA static f32 const l_wolfFootOnFrame[6][4] = {
|
||||
{0.0f, 16.0f, 19.0f, 6.0f},
|
||||
{10.0f, 12.0f, 7.0f, 3.0f},
|
||||
{0.0f, 20.0f, 27.0f, 8.0f},
|
||||
{17.0f, 0.0f, 24.0f, 11.0f},
|
||||
{24.0f, 32.0f, 12.0f, 26.0f},
|
||||
{56.0f, 0.0f, 44.0f, 58.0f},
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x8038FB5C, &l_wolfFootOnFrame);
|
||||
|
||||
@ -2427,7 +2427,7 @@ void daAlink_c::setIdxMask(u16* o_arcNo, u16* o_resID) {
|
||||
|
||||
/* 800A3D0C-800A3D7C 09E64C 0070+00 5/5 0/0 0/0 .text
|
||||
* getAnimeResource__9daAlink_cFP14daPy_anmHeap_cUsUl */
|
||||
void* daAlink_c::getAnimeResource(daPy_anmHeap_c* p_anmHeap, u16 i_anmID, u32 buf_size) {
|
||||
J3DAnmTransform* daAlink_c::getAnimeResource(daPy_anmHeap_c* p_anmHeap, u16 i_anmID, u32 buf_size) {
|
||||
u16 arcNo;
|
||||
u16 resID = i_anmID;
|
||||
|
||||
@ -2437,10 +2437,10 @@ void* daAlink_c::getAnimeResource(daPy_anmHeap_c* p_anmHeap, u16 i_anmID, u32 bu
|
||||
setIdxMask(&arcNo, &resID);
|
||||
|
||||
if (arcNo == 0xFFFF) {
|
||||
return p_anmHeap->loadDataIdx(resID);
|
||||
return (J3DAnmTransform*)p_anmHeap->loadDataIdx(resID);
|
||||
}
|
||||
|
||||
return p_anmHeap->loadDataDemoRID(resID, arcNo);
|
||||
return (J3DAnmTransform*)p_anmHeap->loadDataDemoRID(resID, arcNo);
|
||||
}
|
||||
|
||||
/* 800A3D7C-800A3E30 09E6BC 00B4+00 16/16 0/0 0/0 .text initModel__9daAlink_cFP12J3DModelDataUlUl
|
||||
|
@ -1228,6 +1228,7 @@ BOOL daAlink_c::checkDeadHP() {
|
||||
/* 80118D7C-80118FF8 1136BC 027C+00 3/3 0/0 0/0 .text checkDeadAction__9daAlink_cFi */
|
||||
BOOL daAlink_c::checkDeadAction(int param_0) {
|
||||
// NONMATCHING
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 80118FF8-801190A4 113938 00AC+00 1/1 0/0 0/0 .text
|
||||
@ -1360,6 +1361,7 @@ static u8 dummy[20];
|
||||
static int daAlink_c_getDemoIDData(dDemo_actor_c* param_0, int* param_1, int* param_2,
|
||||
int* param_3, u16* param_4, int* param_5, int* param_6) {
|
||||
// NONMATCHING
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 801195C0-801195F8 113F00 0038+00 7/0 0/0 0/0 .text procDemoCommon__9daAlink_cFv */
|
||||
|
@ -441,7 +441,9 @@ int daAlink_c::procPickPut() {
|
||||
}
|
||||
|
||||
/* 800E7894-800E794C 0E21D4 00B8+00 2/2 0/0 0/0 .text checkSetChainPullAnime__9daAlink_cFs */
|
||||
void daAlink_c::checkSetChainPullAnime(s16 param_0){// NONMATCHING
|
||||
BOOL daAlink_c::checkSetChainPullAnime(s16 param_0) {
|
||||
// NONMATCHING
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 800E794C-800E7994 0E228C 0048+00 3/3 0/0 0/0 .text getChainStickAngleY__9daAlink_cCFs
|
||||
|
@ -129,7 +129,6 @@ void daAlink_c::setWaterInAnmRate(daPy_frameCtrl_c* i_frameCtrl, f32 i_rate) {
|
||||
}
|
||||
|
||||
/* 80101D70-801023E4 0FC6B0 0674+00 2/2 0/0 0/0 .text swimBgCheck__9daAlink_cFf */
|
||||
// NONMATCHING
|
||||
void daAlink_c::swimBgCheck(f32 param_0) {
|
||||
offNoResetFlg1(FLG1_UNK_20000000);
|
||||
|
||||
@ -140,17 +139,19 @@ void daAlink_c::swimBgCheck(f32 param_0) {
|
||||
cXyz start_pos(current.pos);
|
||||
cXyz end_pos;
|
||||
|
||||
s16 uvar1;
|
||||
s16 var_r29;
|
||||
if (getZoraSwim()) {
|
||||
uvar1 = field_0x3080;
|
||||
var_r29 = field_0x3080;
|
||||
} else {
|
||||
uvar1 = mProcVar2.field_0x300c;
|
||||
var_r29 = mProcVar2.field_0x300c;
|
||||
start_pos.y += daAlinkHIO_wlWallHang_c0::m.field_0x78;
|
||||
}
|
||||
|
||||
end_pos.set(start_pos.x + (param_0 * cM_scos(uvar1)) * cM_ssin(shape_angle.y),
|
||||
start_pos.y - param_0 * cM_ssin(uvar1),
|
||||
start_pos.z + (param_0 * cM_scos(uvar1)) * cM_scos(shape_angle.y));
|
||||
f32 var_f28 = param_0 * cM_scos(var_r29);
|
||||
|
||||
end_pos.set(start_pos.x + (var_f28 * cM_ssin(shape_angle.y)),
|
||||
start_pos.y - param_0 * cM_ssin(var_r29),
|
||||
start_pos.z + (var_f28 * cM_scos(shape_angle.y)));
|
||||
|
||||
if (!commonLineCheck(&start_pos, &end_pos)) {
|
||||
return;
|
||||
@ -162,15 +163,15 @@ void daAlink_c::swimBgCheck(f32 param_0) {
|
||||
if (cBgW_CheckBWall(tri.mNormal.y) &&
|
||||
(mProcID != PROC_METAMORPHOSE || dComIfG_Bgsp().GetWallCode(mLinkLinChk) != 7))
|
||||
{
|
||||
cXyz tmp2 = end_pos - mLinkLinChk.i_GetCross();
|
||||
f32 absxz = tmp2.absXZ();
|
||||
cXyz sp14 = end_pos - mLinkLinChk.i_GetCross();
|
||||
f32 temp_f1 = sp14.absXZ();
|
||||
|
||||
s16 svar8 = tmp2.atan2sX_Z();
|
||||
s16 svar9 = cM_atan2s(-tri.mNormal.x, -tri.mNormal.z);
|
||||
f32 cos = cM_scos(svar8 - svar9);
|
||||
s16 var_r28 = sp14.atan2sX_Z();
|
||||
f32 var_f26 = cM_scos(var_r28 - cM_atan2s(-tri.mNormal.x, -tri.mNormal.z));
|
||||
f32 var_f29 = -temp_f1 * var_f26;
|
||||
|
||||
f32 fvar14 = -absxz * cos * tri.mNormal.x;
|
||||
f32 fvar15 = -absxz * cos * tri.mNormal.z;
|
||||
f32 var_f31 = var_f29 * tri.mNormal.x;
|
||||
f32 var_f30 = var_f29 * tri.mNormal.z;
|
||||
|
||||
if (mProcID == PROC_METAMORPHOSE ||
|
||||
(getZoraSwim() && cLib_distanceAngleS(cM_atan2s(tri.mNormal.y, tri.mNormal.absXZ()),
|
||||
@ -179,37 +180,158 @@ void daAlink_c::swimBgCheck(f32 param_0) {
|
||||
onNoResetFlg1(FLG1_UNK_20000000);
|
||||
}
|
||||
|
||||
start_pos.x -= fvar14;
|
||||
start_pos.z -= fvar15;
|
||||
end_pos.x -= fvar14;
|
||||
end_pos.z -= fvar15;
|
||||
start_pos.x -= var_f31;
|
||||
start_pos.z -= var_f30;
|
||||
end_pos.x -= var_f31;
|
||||
end_pos.z -= var_f30;
|
||||
|
||||
if (commonLineCheck(&start_pos, &end_pos)) {
|
||||
dComIfG_Bgsp().GetTriPla(mLinkLinChk, &tri);
|
||||
|
||||
if (cBgW_CheckBWall(tri.mNormal.y)) {
|
||||
tmp2 = end_pos - mLinkLinChk.i_GetCross();
|
||||
f32 absxz2 = tmp2.absXZ();
|
||||
sp14 = end_pos - mLinkLinChk.i_GetCross();
|
||||
temp_f1 = sp14.absXZ();
|
||||
|
||||
s16 svar8_2 = tmp2.atan2sX_Z();
|
||||
s16 svar9_2 = cM_atan2s(-tri.mNormal.x, -tri.mNormal.z);
|
||||
f32 cos_2 = cM_scos(svar8_2 - svar9_2);
|
||||
var_r28 = sp14.atan2sX_Z();
|
||||
var_f26 = cM_scos(var_r28 - cM_atan2s(-tri.mNormal.x, -tri.mNormal.z));
|
||||
var_f29 = -temp_f1 * var_f26;
|
||||
|
||||
fvar14 += -absxz2 * cos_2 * tri.mNormal.x;
|
||||
fvar15 += -absxz2 * cos_2 * tri.mNormal.z;
|
||||
var_f31 += var_f29 * tri.mNormal.x;
|
||||
var_f30 += var_f29 * tri.mNormal.z;
|
||||
}
|
||||
}
|
||||
|
||||
current.pos.x -= fvar14;
|
||||
current.pos.z -= fvar15;
|
||||
field_0x3092 = cM_atan2s(-fvar14, -fvar15);
|
||||
current.pos.x -= var_f31;
|
||||
current.pos.z -= var_f30;
|
||||
field_0x3092 = cM_atan2s(-var_f31, -var_f30);
|
||||
}
|
||||
}
|
||||
|
||||
/* 801023E4-801029C8 0FCD24 05E4+00 3/3 0/0 0/0 .text setSpeedAndAngleSwim__9daAlink_cFv
|
||||
*/
|
||||
void daAlink_c::setSpeedAndAngleSwim() {
|
||||
// NONMATCHING
|
||||
if (!checkBootsOrArmorHeavy() && dComIfGp_getDoStatus() == 0 && (!checkHookshotAnime() || (checkHookshotItem(mEquipItem) && (mItemMode == 0 || mItemMode == 1)))) {
|
||||
if (checkZoraWearAbility()) {
|
||||
if (checkNoResetFlg0(FLG0_SWIM_UP)) {
|
||||
if (field_0x2fcd == 0) {
|
||||
setDoStatus(0x41);
|
||||
}
|
||||
} else {
|
||||
setDoStatus(0x4C);
|
||||
}
|
||||
} else if (!checkNoResetFlg0(FLG0_SWIM_UP)) {
|
||||
setDoStatus(0x97);
|
||||
} else if (mProcID == PROC_SWIM_MOVE && checkUnderMove0BckNoArc(ANM_SWIM_A) && field_0x30d0 == 0 && field_0x30d2 == 0) {
|
||||
setDoStatus(9);
|
||||
}
|
||||
}
|
||||
|
||||
f32 var_f31;
|
||||
f32 var_f30;
|
||||
if (mProcID == PROC_SWIM_HOOKSHOT_MOVE && !checkHookshotWait()) {
|
||||
var_f30 = 0.0f;
|
||||
} else if (checkZoraSwimMove()) {
|
||||
s16 temp_r29 = shape_angle.y;
|
||||
|
||||
if (mTargetedActor != NULL && current.pos.abs2XZ(mTargetedActor->eyePos) > 22500.0f) {
|
||||
setShapeAngleToAtnActor(0);
|
||||
} else if (checkInputOnR()) {
|
||||
s16 var_r28;
|
||||
if (checkEventRun()) {
|
||||
var_r28 = field_0x2fe2;
|
||||
} else {
|
||||
var_r28 = shape_angle.y + (16384.0f * cM_ssin(mStickAngle));
|
||||
}
|
||||
|
||||
cLib_addCalcAngleS(&shape_angle.y, var_r28, daAlinkHIO_swim_c0::m.mUnderwaterTurnRate, daAlinkHIO_swim_c0::m.mUnderwaterTurnMax, daAlinkHIO_swim_c0::m.mUnderwaterTurnMin);
|
||||
}
|
||||
|
||||
current.angle.y = shape_angle.y;
|
||||
var_f30 = 3.0f * cM_scos((shape_angle.y - temp_r29));
|
||||
} else if (!checkAttentionLock()) {
|
||||
if (checkInputOnR()) {
|
||||
s16 temp_r29_2 = shape_angle.y;
|
||||
if (checkNoResetFlg0(FLG0_SWIM_UP)) {
|
||||
cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, daAlinkHIO_swim_c0::m.mTurnRate, daAlinkHIO_swim_c0::m.mTurnMax, daAlinkHIO_swim_c0::m.mTurnMin);
|
||||
} else {
|
||||
cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, daAlinkHIO_swim_c0::m.mUnderwaterTurnRate, daAlinkHIO_swim_c0::m.mUnderwaterTurnMax, daAlinkHIO_swim_c0::m.mUnderwaterTurnMin);
|
||||
}
|
||||
|
||||
f32 var_f29;
|
||||
if (checkUnderMove0BckNoArc(ANM_SWIM_DASH)) {
|
||||
var_f29 = 1.0f;
|
||||
} else {
|
||||
var_f29 = field_0x33a8;
|
||||
}
|
||||
|
||||
var_f30 = 3.0f * var_f29 * cM_scos((shape_angle.y - temp_r29_2));
|
||||
cLib_addCalcAngleS(¤t.angle.y, shape_angle.y, 2, 0x2000, 0x1000);
|
||||
} else {
|
||||
var_f30 = 0.0f;
|
||||
}
|
||||
|
||||
if (checkZeroSpeedF()) {
|
||||
current.angle.y = shape_angle.y;
|
||||
}
|
||||
} else {
|
||||
setShapeAngleToAtnActor(0);
|
||||
|
||||
if (checkInputOnR()) {
|
||||
if (getDirectionFromCurrentAngle() == DIR_BACKWARD) {
|
||||
current.angle.y += 0x8000;
|
||||
mNormalSpeed *= -1.0f;
|
||||
}
|
||||
|
||||
if (checkZeroSpeedF()) {
|
||||
current.angle.y = field_0x2fe2;
|
||||
}
|
||||
|
||||
s16 temp_r29_3 = current.angle.y;
|
||||
if (checkNoResetFlg0(FLG0_SWIM_UP)) {
|
||||
cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, daAlinkHIO_swim_c0::m.mTurnRate, daAlinkHIO_swim_c0::m.mTurnMax, daAlinkHIO_swim_c0::m.mTurnMin);
|
||||
} else {
|
||||
cLib_addCalcAngleS(¤t.angle.y, field_0x2fe2, daAlinkHIO_swim_c0::m.mUnderwaterTurnRate, daAlinkHIO_swim_c0::m.mUnderwaterTurnMax, daAlinkHIO_swim_c0::m.mUnderwaterTurnMin);
|
||||
}
|
||||
|
||||
var_f30 = daAlinkHIO_swim_c0::m.mAcceleration * field_0x33a8 * cM_scos((s16)(current.angle.y - temp_r29_3));
|
||||
} else {
|
||||
var_f30 = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
f32 var_f28;
|
||||
if (daAlinkHIO_swim_c0::m.mMaxForwardSpeed < mNormalSpeed && !checkZoraWearAbility()) {
|
||||
var_f28 = daAlinkHIO_swim_c0::m.mDDeceleration;
|
||||
} else {
|
||||
var_f28 = daAlinkHIO_swim_c0::m.mDeceleration;
|
||||
}
|
||||
|
||||
setNormalSpeedF(var_f30, var_f28);
|
||||
|
||||
if (dComIfGp_checkPlayerStatus0(0, 0x10)) {
|
||||
mNormalSpeed = 0.0f;
|
||||
}
|
||||
|
||||
if (checkSwimNeckUpDown()) {
|
||||
s16 sp14;
|
||||
if (speed.y >= 0.0f) {
|
||||
var_f31 = -speed.y / daAlinkHIO_swim_c0::m.mMaxFloatUpSpeed;
|
||||
if (var_f31 < -1.0f) {
|
||||
var_f31 = -1.0f;
|
||||
}
|
||||
sp14 = 6144.0f * var_f31;
|
||||
} else {
|
||||
var_f31 = speed.y / maxFallSpeed;
|
||||
if (var_f31 > 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
}
|
||||
sp14 = 8192.0f * var_f31;
|
||||
}
|
||||
|
||||
cLib_addCalcAngleS(&field_0x30a0, sp14, 5, 0x1000, 0x400);
|
||||
} else {
|
||||
field_0x30a0 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* 801029C8-80102B1C 0FD308 0154+00 3/3 0/0 0/0 .text checkNextActionSwim__9daAlink_cFv
|
||||
@ -249,13 +371,211 @@ int daAlink_c::checkNextActionSwim() {
|
||||
|
||||
/* 80102B1C-80103058 0FD45C 053C+00 3/3 0/0 0/0 .text checkSwimAction__9daAlink_cFi */
|
||||
int daAlink_c::checkSwimAction(int param_0) {
|
||||
// NONMATCHING
|
||||
f32 var_f31;
|
||||
if (checkWolf()) {
|
||||
if (getMoveBGActorName(mLinkAcch.m_gnd, NULL) == PROC_Obj_ITA) {
|
||||
var_f31 = 200.0f;
|
||||
} else {
|
||||
var_f31 = daAlinkHIO_wlSwim_c0::m.field_0x48;
|
||||
}
|
||||
} else {
|
||||
var_f31 = daAlinkHIO_swim_c0::m.mInitHeight;
|
||||
}
|
||||
|
||||
if (checkNoResetFlg0(FLG0_UNK_80) && !checkNoResetFlg0(FLG0_UNDERWATER) && !checkModeFlg(0x40000) && mProcID != PROC_MAGNE_BOOTS_FLY && ((mProcID != PROC_WOLF_LOCK_ATTACK && mProcID != PROC_WOLF_LOCK_ATTACK_TURN) || mProcVar5.field_0x3012 == 0) && mDemo.getDemoMode() != 0x11) {
|
||||
f32 var_f28;
|
||||
f32 var_f29;
|
||||
f32 var_f30;
|
||||
|
||||
if (checkWolf()) {
|
||||
if (checkWolfDashMode()) {
|
||||
var_f29 = daAlinkHIO_wlSwim_c0::m.field_0x50;
|
||||
} else {
|
||||
var_f29 = daAlinkHIO_wlSwim_c0::m.field_0x80;
|
||||
}
|
||||
|
||||
var_f28 = daAlinkHIO_wlSwim_c0::m.field_0x58;
|
||||
} else {
|
||||
var_f29 = getSwimFrontMaxSpeed();
|
||||
var_f28 = getSwimMaxFallSpeed();
|
||||
}
|
||||
|
||||
if (dComIfGp_checkPlayerStatus1(0, 0x10000)) {
|
||||
var_f30 = mLeftFootPos.y;
|
||||
} else if (dComIfGp_checkPlayerStatus1(0, 0x2000000)) {
|
||||
var_f30 = (-65.0f + current.pos.y) - var_f31;
|
||||
} else {
|
||||
var_f30 = current.pos.y;
|
||||
}
|
||||
|
||||
if (mWaterY - var_f30 > var_f31 || (param_0 != 0 && mWaterY >= var_f30 && mWaterY - mLinkAcch.GetGroundH() > var_f31)) {
|
||||
cXyz sp14;
|
||||
offNoResetFlg0(FLG0_SWIM_UP);
|
||||
mZ2Link.setInWater(true);
|
||||
|
||||
field_0x594 = var_f29;
|
||||
|
||||
if (!param_0) {
|
||||
mNormalSpeed *= 0.75f;
|
||||
}
|
||||
|
||||
if (mNormalSpeed >= field_0x594) {
|
||||
mNormalSpeed = field_0x594;
|
||||
}
|
||||
|
||||
swimDeleteItem();
|
||||
|
||||
if (checkEquipAnime()) {
|
||||
resetUpperAnime(UPPER_2, 3.0f);
|
||||
}
|
||||
|
||||
field_0x3080 = 0;
|
||||
|
||||
if (param_0) {
|
||||
if (current.pos.y - mWaterY > -5.0f) {
|
||||
onNoResetFlg0(FLG0_SWIM_UP);
|
||||
mZ2Link.setInWater(false);
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (checkModeFlg(2) && !checkPossibleWaterInMode()) {
|
||||
dComIfGp_getVibration().StartShock(2, 1, cXyz(0.0f, 1.0f, 0.0f));
|
||||
current.pos.y = var_f30 + var_f31;
|
||||
|
||||
speed.y = 0.75f * field_0x3528.y;
|
||||
if (speed.y < var_f28) {
|
||||
speed.y = var_f28;
|
||||
} else if (speed.y > 0.0f) {
|
||||
speed.y = 0.0f;
|
||||
}
|
||||
|
||||
if (checkWolf()) {
|
||||
if (checkNoResetFlg2(FLG2_UNK_8)) {
|
||||
daAlink_WANM var_r29;
|
||||
if (cM_rnd() < 0.5f) {
|
||||
var_r29 = WANM_FLING_LEFT;
|
||||
onNoResetFlg2(FLG2_WOLF_ENEMY_LEFT_THROW);
|
||||
} else {
|
||||
var_r29 = WANM_FLING_RIGHT;
|
||||
offNoResetFlg2(FLG2_WOLF_ENEMY_LEFT_THROW);
|
||||
}
|
||||
setWolfEnemyThrowUpperAnime(var_r29, 0.0f);
|
||||
}
|
||||
|
||||
return procWolfSwimWaitInit(1);
|
||||
}
|
||||
|
||||
if (mProcID == PROC_DIVE_JUMP) {
|
||||
seStartOnlyReverb(Z2SE_AL_JUMP_DIVE_WATER);
|
||||
|
||||
if (checkZoraWearAbility()) {
|
||||
field_0x3000 = 30;
|
||||
}
|
||||
return procSwimMoveInit();
|
||||
}
|
||||
|
||||
return procSwimWaitInit(1);
|
||||
}
|
||||
|
||||
if (checkBootsOrArmorHeavy() || checkPossibleWaterInMode()) {
|
||||
onNoResetFlg0(FLG0_UNDERWATER);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (checkWolf()) {
|
||||
return procWolfSwimUpInit();
|
||||
}
|
||||
|
||||
return procSwimUpInit();
|
||||
}
|
||||
} else if (!checkNoResetFlg0(FLG0_SWIM_UP) && !checkBootsOrArmorHeavy() && !checkPossibleWaterInMode() && !checkModeFlg(0x40000)) {
|
||||
if (checkNoResetFlg0(FLG0_UNK_80) && mWaterY - current.pos.y > var_f31) {
|
||||
if (checkWolf()) {
|
||||
return procWolfSwimWaitInit(0);
|
||||
}
|
||||
|
||||
return procSwimWaitInit(0);
|
||||
}
|
||||
|
||||
swimOutAfter(0);
|
||||
|
||||
if (checkWolf()) {
|
||||
return procWolfWaitInit();
|
||||
}
|
||||
|
||||
return procWaitInit();
|
||||
} else if (checkModeFlg(0x40000) && mProcID != PROC_CAUGHT && mProcID != PROC_DEAD) {
|
||||
return checkSwimOutAction();
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 80103058-801032C8 0FD998 0270+00 7/7 0/0 0/0 .text checkSwimUpAction__9daAlink_cFv */
|
||||
int daAlink_c::checkSwimUpAction() {
|
||||
// NONMATCHING
|
||||
if (checkNoResetFlg0(FLG0_SWIM_UP)) {
|
||||
if (!checkHookshotAnime()) {
|
||||
return checkSubjectAction();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!getZoraSwim()) {
|
||||
if (checkWolf()) {
|
||||
field_0x3480 = daAlinkHIO_wlSwim_c0::m.field_0x48;
|
||||
} else {
|
||||
cLib_addCalc(&field_0x3480, daAlinkHIO_swim_c0::m.mInitHeight, 0.5f, 15.0f, 1.0f);
|
||||
}
|
||||
} else {
|
||||
field_0x3480 = 65.0f;
|
||||
}
|
||||
|
||||
f32 var_f31;
|
||||
if (checkWolf()) {
|
||||
var_f31 = daAlinkHIO_wlSwim_c0::m.field_0x4C;
|
||||
} else {
|
||||
var_f31 = daAlinkHIO_swim_c0::m.mResurfaceHeight;
|
||||
}
|
||||
|
||||
if (!checkBootsOrArmorHeavy() && !checkNoResetFlg0(FLG0_SWIM_UP)) {
|
||||
if (speed.y >= 0.0f && mWaterY - current.pos.y < var_f31) {
|
||||
if (checkWolf()) {
|
||||
return procWolfSwimUpInit();
|
||||
} else {
|
||||
return procSwimUpInit();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (current.pos.y - field_0x3480 < mLinkAcch.GetGroundH()) {
|
||||
if (!checkBootsOrArmorHeavy()) {
|
||||
current.pos.y = field_0x3480 + mLinkAcch.GetGroundH();
|
||||
field_0x3798.y = current.pos.y;
|
||||
mProcVar3.field_0x300e = getGroundAngle(&mLinkAcch.m_gnd, shape_angle.y);
|
||||
mProcVar4.field_0x3010 = 2;
|
||||
|
||||
if (speed.y < -1.0f) {
|
||||
speed.y = -1.0f;
|
||||
}
|
||||
} else {
|
||||
current.pos.y = mLinkAcch.GetGroundH();
|
||||
mLinkAcch.SetGroundHit();
|
||||
onNoResetFlg0(FLG0_UNDERWATER);
|
||||
procLandInit(0.0f);
|
||||
field_0x2f99 = 0x90;
|
||||
return 1;
|
||||
}
|
||||
} else if (mLinkAcch.ChkRoofHit()) {
|
||||
mProcVar3.field_0x300e = getRoofAngle(&mLinkAcch.m_roof, shape_angle.y);
|
||||
mProcVar4.field_0x3010 = 2;
|
||||
|
||||
if (speed.y > 1.0f) {
|
||||
speed.y = 1.0f;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -282,7 +602,7 @@ void daAlink_c::swimOutAfter(int param_0) {
|
||||
}
|
||||
|
||||
/* 80103398-801033CC 0FDCD8 0034+00 1/1 0/0 0/0 .text checkSwimFall__9daAlink_cFv */
|
||||
bool daAlink_c::checkSwimFall() {
|
||||
BOOL daAlink_c::checkSwimFall() {
|
||||
if (!checkNoResetFlg0(FLG0_UNK_80) || current.pos.y > mWaterY + l_autoUpHeight) {
|
||||
return true;
|
||||
}
|
||||
@ -291,13 +611,271 @@ bool daAlink_c::checkSwimFall() {
|
||||
}
|
||||
|
||||
/* 801033CC-80103698 0FDD0C 02CC+00 1/1 0/0 0/0 .text checkSwimOutAction__9daAlink_cFv */
|
||||
void daAlink_c::checkSwimOutAction() {
|
||||
// NONMATCHING
|
||||
int daAlink_c::checkSwimOutAction() {
|
||||
f32 var_f31;
|
||||
if (checkWolf()) {
|
||||
var_f31 = daAlinkHIO_wlSwim_c0::m.field_0x48;
|
||||
} else {
|
||||
var_f31 = daAlinkHIO_swim_c0::m.mInitHeight;
|
||||
}
|
||||
|
||||
if (checkSwimFall()) {
|
||||
swimOutAfter(1);
|
||||
|
||||
cXyz sp8(field_0x3594.x + (mNormalSpeed * cM_ssin(current.angle.y)), 0.0f, field_0x3594.z + (mNormalSpeed * cM_scos(current.angle.y)));
|
||||
mNormalSpeed = sp8.absXZ();
|
||||
current.angle.y = sp8.atan2sX_Z();
|
||||
|
||||
if (checkWolf()) {
|
||||
if (mNormalSpeed > daAlinkHIO_wlAutoJump_c0::m.field_0x74) {
|
||||
mNormalSpeed = daAlinkHIO_wlAutoJump_c0::m.field_0x74;
|
||||
}
|
||||
return procWolfFallInit(2, daAlinkHIO_wlAutoJump_c0::m.field_0x54);
|
||||
} else {
|
||||
if (mNormalSpeed > daAlinkHIO_autoJump_c0::m.mMaxJumpSpeed) {
|
||||
mNormalSpeed = daAlinkHIO_autoJump_c0::m.mMaxJumpSpeed;
|
||||
}
|
||||
return procFallInit(2, daAlinkHIO_autoJump_c0::m.mFallInterpolation);
|
||||
}
|
||||
}
|
||||
|
||||
if (!checkNoResetFlg0(FLG0_UNK_80) || mWaterY - mLinkAcch.GetGroundH() <= var_f31 - 5.0f) {
|
||||
current.pos.y = mWaterY;
|
||||
swimOutAfter(1);
|
||||
return commonCheckNextAction(0);
|
||||
}
|
||||
|
||||
if (checkMagicArmorHeavy() && checkNoResetFlg0(FLG0_SWIM_UP)) {
|
||||
offNoResetFlg0(FLG0_SWIM_UP);
|
||||
mZ2Link.setInWater(true);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 80103698-80103EE0 0FDFD8 0848+00 4/4 0/0 0/0 .text setSwimMoveAnime__9daAlink_cFv */
|
||||
void daAlink_c::setSwimMoveAnime() {
|
||||
// NONMATCHING
|
||||
daPy_frameCtrl_c* temp_r28 = &mUnderFrameCtrl[0];
|
||||
daPy_frameCtrl_c* temp_r27 = &mUpperFrameCtrl[2];
|
||||
|
||||
f32 var_f31;
|
||||
f32 temp_f25 = temp_r28->getEnd();
|
||||
f32 var_f26 = temp_r28->getFrame() * temp_f25;
|
||||
|
||||
if (field_0x3000 != 0 && !checkHookshotAnime()) {
|
||||
field_0x2f98 = 4;
|
||||
} else if (checkHookshotAnime() || (checkAttentionLock() && !getZoraSwim())) {
|
||||
field_0x3000 = 0;
|
||||
if (checkInputOnR()) {
|
||||
field_0x2f98 = getDirectionFromShapeAngle();
|
||||
} else if (field_0x2f98 >= 4 || mNormalSpeed < 3.0f) {
|
||||
field_0x2f98 = 0;
|
||||
}
|
||||
} else if (checkInputOnR() || field_0x2f98 >= 4 || mNormalSpeed < 3.0f) {
|
||||
field_0x2f98 = 0;
|
||||
}
|
||||
|
||||
daAlink_ANM var_r29;
|
||||
BOOL var_r26 = 1;
|
||||
BOOL var_r25 = 0;
|
||||
|
||||
if (field_0x2f98 == 4) {
|
||||
f32 temp_f29 = daAlinkHIO_swim_c0::m.mMaxUnderwaterSpeed + daAlinkHIO_swim_c0::m.mUnderwaterButtonSpeed;
|
||||
|
||||
field_0x3478 = daAlinkHIO_swim_c0::m.mUnderwaterMinAnmSpeed;
|
||||
field_0x347c = daAlinkHIO_swim_c0::m.mUnderwaterMaxAnmSpeed;
|
||||
|
||||
if (field_0x594 < daAlinkHIO_swim_c0::m.mMaxUnderwaterSpeed) {
|
||||
field_0x594 = daAlinkHIO_swim_c0::m.mMaxUnderwaterSpeed;
|
||||
} else if (doTrigger()) {
|
||||
field_0x594 += 0.75f;
|
||||
if (field_0x594 > temp_f29) {
|
||||
field_0x594 = temp_f29;
|
||||
}
|
||||
|
||||
if (!checkSwimMoveHandAnime() && !checkZoraSwimDamageAnime()) {
|
||||
f32 var_f28;
|
||||
if (field_0x2060->getOldFrameMorfCounter() > 5.0f) {
|
||||
var_f28 = -1.0f;
|
||||
} else {
|
||||
var_f28 = 3.0f;
|
||||
}
|
||||
|
||||
setUpperAnime(0x23F, UPPER_2, 1.0f, 0.0f, 0x28, var_f28);
|
||||
mProcVar5.field_0x3012 = 0;
|
||||
var_r25 = 1;
|
||||
} else if (temp_r27->getFrame() > 25.0f) {
|
||||
mProcVar5.field_0x3012 = 1;
|
||||
}
|
||||
} else if (!checkSwimMoveHandAnime()) {
|
||||
cLib_chaseF(&field_0x594, daAlinkHIO_swim_c0::m.mMaxUnderwaterSpeed, 0.4f);
|
||||
}
|
||||
|
||||
var_f31 = 1.0f / daAlinkHIO_swim_c0::m.mMaxUnderwaterSpeed;
|
||||
|
||||
if (checkZoraWearAbility() && (field_0x3198 == ANM_SWIM_DIVE || (field_0x3198 == ANM_SWIM_ZORA_START && !checkAnmEnd(temp_r28)))) {
|
||||
var_r29 = ANM_SWIM_ZORA_START;
|
||||
} else {
|
||||
var_r29 = ANM_SWIM_C;
|
||||
|
||||
if (field_0x3198 == ANM_SWIM_ZORA_START) {
|
||||
var_r26 = 0;
|
||||
if (mProcVar4.field_0x3010 == 1) {
|
||||
mProcVar4.field_0x3010 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (field_0x2f98 == 0) {
|
||||
if (checkSwimDashMode() && checkUnderMove0BckNoArc(ANM_SWIM_DASH) && !checkAnmEnd(temp_r28)) {
|
||||
var_r29 = ANM_SWIM_DASH;
|
||||
} else if (mNormalSpeed < 3.0f || checkHookshotAnime()) {
|
||||
var_r29 = ANM_SWIM_WAIT;
|
||||
field_0x30d0 = 0;
|
||||
} else {
|
||||
var_r29 = ANM_SWIM_A;
|
||||
}
|
||||
|
||||
if (checkSwimDashMode()) {
|
||||
field_0x3478 = daAlinkHIO_swim_c0::m.mDMinAnmSpeed;
|
||||
field_0x347c = daAlinkHIO_swim_c0::m.mDMaxAnmSpeed;
|
||||
field_0x594 = daAlinkHIO_swim_c0::m.mDMaxSpeed;
|
||||
} else {
|
||||
field_0x3478 = daAlinkHIO_swim_c0::m.mForwardMinAnmSpeed;
|
||||
field_0x347c = daAlinkHIO_swim_c0::m.mForwardMaxAnmSpeed;
|
||||
field_0x594 = getSwimFrontMaxSpeed();
|
||||
}
|
||||
|
||||
var_f31 = 1.0f / field_0x594;
|
||||
} else if (field_0x2f98 == 1) {
|
||||
var_r29 = ANM_ATN_SWIM_BACK;
|
||||
field_0x3478 = daAlinkHIO_swim_c0::m.mBackwardMinAnmSpeed;
|
||||
field_0x347c = daAlinkHIO_swim_c0::m.mBackwardMaxAnmSpeed;
|
||||
|
||||
if (checkZoraWearAbility()) {
|
||||
field_0x594 = 10.0f;
|
||||
} else {
|
||||
field_0x594 = daAlinkHIO_swim_c0::m.mMaxBackwardSpeed;
|
||||
}
|
||||
|
||||
var_f31 = 1.0f / field_0x594;
|
||||
} else {
|
||||
if (field_0x2f98 == 2) {
|
||||
var_r29 = ANM_ATN_SWIM_LEFT;
|
||||
} else {
|
||||
var_r29 = ANM_ATN_SWIM_RIGHT;
|
||||
}
|
||||
|
||||
field_0x3478 = daAlinkHIO_swim_c0::m.mStrafeMinAnmSpeed;
|
||||
field_0x347c = daAlinkHIO_swim_c0::m.mStrafeMaxAnmSpeed;
|
||||
|
||||
if (checkZoraWearAbility()) {
|
||||
field_0x594 = 12.0f;
|
||||
} else {
|
||||
field_0x594 = daAlinkHIO_swim_c0::m.mMaxStrafeSpeed;
|
||||
}
|
||||
|
||||
var_f31 = 1.0f / field_0x594;
|
||||
}
|
||||
|
||||
field_0x347c -= field_0x3478;
|
||||
|
||||
if (field_0x2f98 != 0) {
|
||||
field_0x30d0 = 0;
|
||||
}
|
||||
|
||||
if (checkBootsOrArmorHeavy()) {
|
||||
var_r29 = ANM_SWIM_WAIT;
|
||||
field_0x594 = daAlinkHIO_swim_c0::m.mUnderwaterMaxSinkSpeed;
|
||||
if (mEquipItem != NO_ITEM && !checkHookshotAnime()) {
|
||||
setDoStatus(4);
|
||||
}
|
||||
}
|
||||
|
||||
if (var_r29 != field_0x3198) {
|
||||
if (field_0x3198 == ANM_SWIM_ZORA_START) {
|
||||
speed.y = 0.0f;
|
||||
}
|
||||
|
||||
field_0x3198 = var_r29;
|
||||
|
||||
if (checkUnderMove0BckNoArc(ANM_SWIM_DASH)) {
|
||||
field_0x30d2 = daAlinkHIO_swim_c0::m.field_0x5e;
|
||||
}
|
||||
|
||||
if (var_r29 == ANM_SWIM_WAIT) {
|
||||
setSingleAnimeBaseSpeed(ANM_SWIM_WAIT, daAlinkHIO_swim_c0::m.mWaitAnmSpeed, daAlinkHIO_swim_c0::m.mWaitInterpolation);
|
||||
} else {
|
||||
f32 var_f27;
|
||||
if (var_r26 != 0) {
|
||||
var_f27 = daAlinkHIO_swim_c0::m.mMoveInterpolation;
|
||||
} else {
|
||||
var_f27 = 0.0f;
|
||||
}
|
||||
setSingleAnimeBaseMorf(var_r29, var_f27);
|
||||
}
|
||||
}
|
||||
|
||||
if (var_r29 != ANM_SWIM_WAIT && var_r29 != ANM_SWIM_DASH) {
|
||||
f32 temp_f30 = var_f31 * fabsf(mNormalSpeed);
|
||||
if (temp_f30 > 1.0f && field_0x2f98 == 4) {
|
||||
temp_r28->setRate(daAlinkHIO_swim_c0::m.mUnderwaterMaxAnmSpeed + ((temp_f30 - 1.0f) * daAlinkHIO_swim_c0::m.mUnderwaterButtonAnmSpeed));
|
||||
} else {
|
||||
temp_r28->setRate(field_0x3478 + (field_0x347c * temp_f30));
|
||||
}
|
||||
}
|
||||
|
||||
if (checkSwimMoveHandAnime()) {
|
||||
if (temp_r27->checkPass(17.0f)) {
|
||||
seStartOnlyReverb(Z2SE_AL_WATER_STROKE_L);
|
||||
}
|
||||
|
||||
if (var_r29 == ANM_SWIM_C) {
|
||||
temp_r27->setRate(temp_r28->getRate());
|
||||
|
||||
if (var_r25 == 0 && temp_r27->checkPass(0.0f)) {
|
||||
if (mProcVar5.field_0x3012 != 0) {
|
||||
mProcVar5.field_0x3012 = 0;
|
||||
} else {
|
||||
resetUpperAnime(UPPER_2, 3.0f);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
resetUpperAnime(UPPER_2, -1.0f);
|
||||
}
|
||||
}
|
||||
|
||||
maxFallSpeed = getSwimMaxFallSpeed();
|
||||
|
||||
if (var_r29 == ANM_SWIM_C || var_r29 == ANM_SWIM_ZORA_START) {
|
||||
if (!checkZoraWearAbility()) {
|
||||
if (field_0x3080 != -0x3800) {
|
||||
setOldRootQuaternion(0x4000, 0, 0);
|
||||
}
|
||||
field_0x3080 = -0x3800;
|
||||
} else if (mProcVar4.field_0x3010 == 1) {
|
||||
cLib_addCalcAngleS(&field_0x3080, mProcVar3.field_0x300e, 5, 0x1000, 0x100);
|
||||
} else if (mProcVar4.field_0x3010 == 2) {
|
||||
cLib_addCalcAngleS(&field_0x3080, mProcVar3.field_0x300e, 5, 0x1000, 0x100);
|
||||
mProcVar4.field_0x3010 = 0;
|
||||
} else {
|
||||
s16 var_r24;
|
||||
if (checkInputOnR() && !checkEventRun()) {
|
||||
var_r24 = 13653.0f * cM_scos(mStickAngle);
|
||||
} else {
|
||||
var_r24 = 0;
|
||||
}
|
||||
|
||||
cLib_addCalcAngleS(&field_0x3080, var_r24, 5, 0x200, 0x80);
|
||||
}
|
||||
} else if (field_0x3080 != 0) {
|
||||
setOldRootQuaternion(field_0x3080, 0, 0);
|
||||
field_0x3080 = 0;
|
||||
mProcVar4.field_0x3010 = 0;
|
||||
|
||||
if (!checkZoraWearAbility()) {
|
||||
mNormalSpeed = 0.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 80103EE0-80103F08 0FE820 0028+00 5/5 0/0 0/0 .text checkSwimButtonAccept__9daAlink_cFv
|
||||
@ -580,7 +1158,7 @@ int daAlink_c::procSwimMove() {
|
||||
onNoResetFlg1(FLG1_DASH_MODE);
|
||||
field_0x30d0 = daAlinkHIO_swim_c0::m.field_0x5c;
|
||||
setSingleAnimeParam(ANM_SWIM_DASH, &daAlinkHIO_swim_c0::m.mDashAnm);
|
||||
field_0x3198 = 0xC6;
|
||||
field_0x3198 = ANM_SWIM_DASH;
|
||||
} else if (!checkZoraSwimMove() && (!checkUpSwimButtonAccept() || !doButton()) &&
|
||||
mNormalSpeed < daAlinkHIO_swim_c0::m.mForwardMinSpeed)
|
||||
{
|
||||
@ -836,7 +1414,7 @@ int daAlink_c::procSwimHookshotMove() {
|
||||
|
||||
/* 8010519C-80105728 0FFADC 058C+00 1/1 0/0 0/0 .text
|
||||
* procSwimDamageInit__9daAlink_cFP12dCcD_GObjInf */
|
||||
// NONMATCHING - instruction block order issue
|
||||
// NONMATCHING - cLib_minMaxLimit regalloc issue
|
||||
int daAlink_c::procSwimDamageInit(dCcD_GObjInf* param_0) {
|
||||
seStartOnlyReverb(Z2SE_AL_DAMAGE_NORMAL);
|
||||
dComIfGp_getVibration().StartShock(2, 31, cXyz(0.0f, 1.0f, 0.0f));
|
||||
@ -909,7 +1487,7 @@ int daAlink_c::procSwimDamageInit(dCcD_GObjInf* param_0) {
|
||||
}
|
||||
|
||||
mNormalSpeed = 0.0f;
|
||||
field_0x347c = 3.141593f / (mUnderFrameCtrl->getEnd() - mUnderFrameCtrl->getStart());
|
||||
field_0x347c = M_PI / (mUnderFrameCtrl->getEnd() - mUnderFrameCtrl->getStart());
|
||||
field_0x3480 = daAlinkHIO_swim_c0::m.mInitHeight;
|
||||
current.angle.y = shape_angle.y;
|
||||
|
||||
|
@ -6,6 +6,7 @@
|
||||
#include "d/actor/d_a_alink.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "d/actor/d_a_horse.h"
|
||||
#include "d/actor/d_a_npc_tk.h"
|
||||
#include "d/actor/d_a_obj_yobikusa.h"
|
||||
|
||||
@ -229,9 +230,9 @@ int daAlink_c::procGrassWhistleWait() {
|
||||
mProcVar5.field_0x3012 = 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
setGrassCancelStatus(0);
|
||||
}
|
||||
|
||||
setGrassCancelStatus(0);
|
||||
} else if (checkAnmEnd(&mUpperFrameCtrl[2])) {
|
||||
setGrassCancelStatus(0x12);
|
||||
setDoStatus(0x2C);
|
||||
@ -296,8 +297,29 @@ int daAlink_c::procCoHorseCallWaitInit(int param_0) {
|
||||
/* 801120C8-801121B4 10CA08 00EC+00 1/0 0/0 0/0 .text procCoHorseCallWait__9daAlink_cFv
|
||||
*/
|
||||
int daAlink_c::procCoHorseCallWait() {
|
||||
// NONMATCHING
|
||||
return 0;
|
||||
setGrassCancelStatus(0);
|
||||
|
||||
mProcVar4.field_0x3010--;
|
||||
if (mProcVar4.field_0x3010 > 2 && dComIfGp_getHorseActor() != NULL) {
|
||||
cLib_addCalcAngleS(&shape_angle.y, fopAcM_searchActorAngleY(this, dComIfGp_getHorseActor()), 2, 0x2000, 0x800);
|
||||
current.angle.y = shape_angle.y;
|
||||
}
|
||||
|
||||
if (mProcVar4.field_0x3010 == 60) {
|
||||
dCam_getBody()->EventFlag(2);
|
||||
} else if (mProcVar4.field_0x3010 == 15) {
|
||||
dCam_getBody()->EventFlag(3);
|
||||
} else if (mProcVar4.field_0x3010 == 0) {
|
||||
resetSpecialEvent();
|
||||
|
||||
if (checkWolf()) {
|
||||
procWolfWaitInit();
|
||||
} else {
|
||||
procWaitInit();
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 801121B4-80112220 10CAF4 006C+00 1/0 0/0 0/0 .text procHawkCatchInit__9daAlink_cFv */
|
||||
@ -343,6 +365,35 @@ int daAlink_c::procHawkSubjectInit() {
|
||||
|
||||
/* 80112304-8011243C 10CC44 0138+00 1/0 0/0 0/0 .text procHawkSubject__9daAlink_cFv */
|
||||
int daAlink_c::procHawkSubject() {
|
||||
// NONMATCHING
|
||||
return 0;
|
||||
if (mProcVar2.field_0x300c != 0) {
|
||||
if (mProcVar2.field_0x300c != 0) {
|
||||
mProcVar2.field_0x300c--;
|
||||
if (mProcVar2.field_0x300c == 0) {
|
||||
checkWaitAction();
|
||||
}
|
||||
}
|
||||
} else if (checkEventRun()) {
|
||||
dComIfGp_evmng_cutEnd(field_0x3184);
|
||||
} else {
|
||||
fopAc_ac_c* temp_r29 = field_0x280c.getActor();
|
||||
setGrassCancelStatus(0x12);
|
||||
setDoStatus(0x31);
|
||||
|
||||
if (doTrigger()) {
|
||||
mProcVar2.field_0x300c = 2;
|
||||
if (temp_r29 != NULL) {
|
||||
((daNPC_TK_c*)temp_r29)->setAttack();
|
||||
field_0x280c.clearData();
|
||||
}
|
||||
} else if (grassCancelTrigger()) {
|
||||
return checkWaitAction();
|
||||
} else if (setBodyAngleToCamera()) {
|
||||
cXyz sp8;
|
||||
checkSightLine(10000.0f, &sp8);
|
||||
mSight.setPos(&sp8);
|
||||
mSight.onDrawFlg();
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -4,13 +4,9 @@
|
||||
//
|
||||
|
||||
#include "d/actor/d_a_obj_digsnow.h"
|
||||
|
||||
#include "d/actor/d_a_player.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
#include <cmath.h>
|
||||
|
||||
/* 80BDCC58-80BDCC94 000078 003C+00 1/1 0/0 0/0 .text initBaseMtx__14daObjDigSnow_cFv */
|
||||
void daObjDigSnow_c::initBaseMtx() {
|
||||
@ -62,8 +58,9 @@ static char* l_arcName = "Y_horiyuk";
|
||||
|
||||
/* 80BDCD64-80BDCDD4 000184 0070+00 1/0 0/0 0/0 .text CreateHeap__14daObjDigSnow_cFv */
|
||||
int daObjDigSnow_c::CreateHeap() {
|
||||
J3DModelData* model_data = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 4);
|
||||
mpModel = mDoExt_J3DModel__create(model_data, 0x80000, 0x11000084);
|
||||
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 4);
|
||||
JUT_ASSERT(0x9F, modelData != 0);
|
||||
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
|
||||
|
||||
if (mpModel == NULL) {
|
||||
return FALSE;
|
||||
@ -74,28 +71,25 @@ int daObjDigSnow_c::CreateHeap() {
|
||||
|
||||
/* 80BDCDD4-80BDCE84 0001F4 00B0+00 1/1 0/0 0/0 .text create1st__14daObjDigSnow_cFv */
|
||||
int daObjDigSnow_c::create1st() {
|
||||
cPhs__Step step;
|
||||
|
||||
if (dComIfGs_isSwitch(getSwNo(), fopAcM_GetHomeRoomNo(this))) {
|
||||
return cPhs_ERROR_e;
|
||||
} else {
|
||||
step = (cPhs__Step)dComIfG_resLoad(&mPhaseReq, l_arcName);
|
||||
if (step == cPhs_COMPLEATE_e) {
|
||||
step =
|
||||
(cPhs__Step)MoveBGCreate(l_arcName, 7, dBgS_MoveBGProc_TypicalRotY, 0x1000, NULL);
|
||||
if (step == cPhs_ERROR_e) {
|
||||
return step;
|
||||
}
|
||||
}
|
||||
|
||||
cPhs__Step phase_state = (cPhs__Step)dComIfG_resLoad(&mPhaseReq, l_arcName);
|
||||
if (phase_state == cPhs_COMPLEATE_e) {
|
||||
phase_state = (cPhs__Step)MoveBGCreate(l_arcName, 7, dBgS_MoveBGProc_TypicalRotY, 0x1000, NULL);
|
||||
if (phase_state == cPhs_ERROR_e) {
|
||||
return phase_state;
|
||||
}
|
||||
}
|
||||
|
||||
return step;
|
||||
return phase_state;
|
||||
}
|
||||
|
||||
/* 80BDCE84-80BDCF00 0002A4 007C+00 1/0 0/0 0/0 .text Execute__14daObjDigSnow_cFPPA3_A4_f
|
||||
*/
|
||||
int daObjDigSnow_c::Execute(Mtx** i_mtx) {
|
||||
if (dComIfGp_getLinkPlayer()->checkWolf()) {
|
||||
if (daPy_py_c::i_checkNowWolf()) {
|
||||
attention_info.flags = 0x80;
|
||||
} else {
|
||||
attention_info.flags = 0;
|
||||
@ -145,14 +139,20 @@ void daObjDigSnow_c::mode_init_dig() {
|
||||
f32 gnd_height = dComIfG_Bgsp().GroundCross(&obj_gnd_chk);
|
||||
if (gnd_height != -1000000000.0f) {
|
||||
mGroundHeight = gnd_height;
|
||||
} else {
|
||||
#ifdef DEBUG
|
||||
// "No BG under digsnow!"
|
||||
OS_REPORT_ERROR("掘る雪の下にBGがありません!");
|
||||
fopAcM_delete(this);
|
||||
#endif
|
||||
}
|
||||
|
||||
startDig();
|
||||
mAction = 1;
|
||||
}
|
||||
|
||||
/* 80BDD124-80BDD1BC 000544 0098+00 1/0 0/0 0/0 .text mode_dig__14daObjDigSnow_cFv */
|
||||
void daObjDigSnow_c::mode_dig() {
|
||||
f32 step = fabsf(((current.pos.y - mGroundHeight) + 10.0f) / 35.0f);
|
||||
f32 step = std::fabs(((current.pos.y - mGroundHeight) + 10.0f) / 35.0f);
|
||||
if (step < 1.0f) {
|
||||
step = 1.0f;
|
||||
}
|
||||
@ -167,13 +167,12 @@ void daObjDigSnow_c::mode_dig() {
|
||||
void daObjDigSnow_c::mode_init_end() {
|
||||
dComIfGs_onSwitch(getSwNo(), fopAcM_GetHomeRoomNo(this));
|
||||
fopAcM_delete(this);
|
||||
endDig();
|
||||
|
||||
mAction = 2;
|
||||
}
|
||||
|
||||
/* 80BDD210-80BDD214 000630 0004+00 1/0 0/0 0/0 .text mode_end__14daObjDigSnow_cFv */
|
||||
void daObjDigSnow_c::mode_end() {
|
||||
/* empty function */
|
||||
}
|
||||
void daObjDigSnow_c::mode_end() {}
|
||||
|
||||
/* 80BDD214-80BDD2B8 000634 00A4+00 1/0 0/0 0/0 .text Draw__14daObjDigSnow_cFv */
|
||||
int daObjDigSnow_c::Draw() {
|
||||
@ -197,7 +196,6 @@ int daObjDigSnow_c::Delete() {
|
||||
*/
|
||||
static int daObjDigSnow_create1st(daObjDigSnow_c* i_this) {
|
||||
fopAcM_SetupActor(i_this, daObjDigSnow_c);
|
||||
|
||||
return i_this->create1st();
|
||||
}
|
||||
|
||||
@ -241,4 +239,4 @@ extern actor_process_profile_definition g_profile_Obj_DigSnow = {
|
||||
0x44100, // mStatus
|
||||
fopAc_ACTOR_e, // mActorType
|
||||
fopAc_CULLBOX_CUSTOM_e, // cullType
|
||||
};
|
||||
};
|
||||
|
@ -1,139 +1,49 @@
|
||||
/**
|
||||
* @file d_a_obj_lv4digsand.cpp
|
||||
*
|
||||
*/
|
||||
* Arbiter's Grounds Dig Sand
|
||||
*/
|
||||
|
||||
#include "d/actor/d_a_obj_lv4digsand.h"
|
||||
#include "dol2asm.h"
|
||||
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" void initBaseMtx__16daObjL4DigSand_cFv();
|
||||
extern "C" void setBaseMtx__16daObjL4DigSand_cFv();
|
||||
extern "C" void Create__16daObjL4DigSand_cFv();
|
||||
extern "C" void CreateHeap__16daObjL4DigSand_cFv();
|
||||
extern "C" void create1st__16daObjL4DigSand_cFv();
|
||||
extern "C" void Execute__16daObjL4DigSand_cFPPA3_A4_f();
|
||||
extern "C" void action__16daObjL4DigSand_cFv();
|
||||
extern "C" void mode_init_wait__16daObjL4DigSand_cFv();
|
||||
extern "C" void mode_wait__16daObjL4DigSand_cFv();
|
||||
extern "C" void mode_init_dig__16daObjL4DigSand_cFv();
|
||||
extern "C" void __dt__14dBgS_ObjGndChkFv();
|
||||
extern "C" void mode_dig__16daObjL4DigSand_cFv();
|
||||
extern "C" void mode_init_end__16daObjL4DigSand_cFv();
|
||||
extern "C" void mode_end__16daObjL4DigSand_cFv();
|
||||
extern "C" void Draw__16daObjL4DigSand_cFv();
|
||||
extern "C" void Delete__16daObjL4DigSand_cFv();
|
||||
extern "C" static void daObjL4DigSand_create1st__FP16daObjL4DigSand_c();
|
||||
extern "C" void __dt__8cM3dGCylFv();
|
||||
extern "C" void __dt__8cM3dGAabFv();
|
||||
extern "C" void __dt__10dCcD_GSttsFv();
|
||||
extern "C" void __dt__12dBgS_AcchCirFv();
|
||||
extern "C" void __dt__12dBgS_ObjAcchFv();
|
||||
extern "C" static void daObjL4DigSand_MoveBGDelete__FP16daObjL4DigSand_c();
|
||||
extern "C" static void daObjL4DigSand_MoveBGExecute__FP16daObjL4DigSand_c();
|
||||
extern "C" static void daObjL4DigSand_MoveBGDraw__FP16daObjL4DigSand_c();
|
||||
extern "C" void __dt__10cCcD_GSttsFv();
|
||||
extern "C" void func_80C67588(void* _this, u8*);
|
||||
extern "C" static void func_80C675A4();
|
||||
extern "C" static void func_80C675AC();
|
||||
extern "C" static void func_80C675B4();
|
||||
extern "C" static void func_80C675BC();
|
||||
extern "C" static void func_80C675C4();
|
||||
extern "C" extern char const* const d_a_obj_lv4digsand__stringBase0;
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern "C" void mDoMtx_YrotM__FPA4_fs();
|
||||
extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
|
||||
extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
|
||||
extern "C" void fopAcM_delete__FP10fopAc_ac_c();
|
||||
extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData();
|
||||
extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
|
||||
extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
|
||||
extern "C" void onSwitch__10dSv_info_cFii();
|
||||
extern "C" void isSwitch__10dSv_info_cCFii();
|
||||
extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
|
||||
extern "C" void GroundCross__4cBgSFP11cBgS_GndChk();
|
||||
extern "C" void __ct__12dBgS_AcchCirFv();
|
||||
extern "C" void __dt__9dBgS_AcchFv();
|
||||
extern "C" void __ct__9dBgS_AcchFv();
|
||||
extern "C" void __ct__11dBgS_GndChkFv();
|
||||
extern "C" void __dt__11dBgS_GndChkFv();
|
||||
extern "C" void __ct__16dBgS_MoveBgActorFv();
|
||||
extern "C" bool IsDelete__16dBgS_MoveBgActorFv();
|
||||
extern "C" bool ToFore__16dBgS_MoveBgActorFv();
|
||||
extern "C" bool ToBack__16dBgS_MoveBgActorFv();
|
||||
extern "C" void
|
||||
MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f();
|
||||
extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv();
|
||||
extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv();
|
||||
extern "C" void SetObj__16dBgS_PolyPassChkFv();
|
||||
extern "C" void __ct__10dCcD_GSttsFv();
|
||||
extern "C" void __ct__12dCcD_GObjInfFv();
|
||||
extern "C" void checkItemGet__FUci();
|
||||
extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
|
||||
extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
|
||||
extern "C" void SetPos__11cBgS_GndChkFPC4cXyz();
|
||||
extern "C" void __dt__13cBgS_PolyInfoFv();
|
||||
extern "C" void __dt__8cM3dGCirFv();
|
||||
extern "C" void cLib_chaseF__FPfff();
|
||||
extern "C" void __dl__FPv();
|
||||
extern "C" void __ptmf_scall();
|
||||
extern "C" void _savegpr_27();
|
||||
extern "C" void _savegpr_29();
|
||||
extern "C" void _restgpr_27();
|
||||
extern "C" void _restgpr_29();
|
||||
extern "C" extern void* __vt__8dCcD_Cyl[36];
|
||||
extern "C" extern void* __vt__9dCcD_Stts[11];
|
||||
extern "C" extern void* __vt__12cCcD_CylAttr[25];
|
||||
extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
|
||||
extern "C" extern void* __vt__9cCcD_Stts[8];
|
||||
extern "C" u8 now__14mDoMtx_stack_c[48];
|
||||
extern "C" extern u8 g_dComIfG_gameInfo[122384];
|
||||
extern "C" extern u8 data_80C67760[4];
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/actor/d_a_player.h"
|
||||
#include "d/d_item.h"
|
||||
#include <cmath.h>
|
||||
|
||||
/* 80C66B18-80C66B54 000078 003C+00 1/1 0/0 0/0 .text initBaseMtx__16daObjL4DigSand_cFv
|
||||
*/
|
||||
void daObjL4DigSand_c::initBaseMtx() {
|
||||
// NONMATCHING
|
||||
mpModel->setBaseScale(scale);
|
||||
setBaseMtx();
|
||||
}
|
||||
|
||||
/* 80C66B54-80C66BC8 0000B4 0074+00 2/2 0/0 0/0 .text setBaseMtx__16daObjL4DigSand_cFv */
|
||||
void daObjL4DigSand_c::setBaseMtx() {
|
||||
// NONMATCHING
|
||||
mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
|
||||
mDoMtx_stack_c::YrotM(shape_angle.y);
|
||||
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
MTXCopy(mDoMtx_stack_c::get(), mBgMtx);
|
||||
}
|
||||
|
||||
/* 80C66BC8-80C66C24 000128 005C+00 1/0 0/0 0/0 .text Create__16daObjL4DigSand_cFv */
|
||||
void daObjL4DigSand_c::Create() {
|
||||
// NONMATCHING
|
||||
int daObjL4DigSand_c::Create() {
|
||||
initBaseMtx();
|
||||
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
|
||||
fopAcM_setCullSizeBox2(this, mpModel->getModelData());
|
||||
|
||||
attention_info.distances[fopAc_attn_ETC_e] = 31;
|
||||
mode_init_wait();
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80C675E4-80C675E4 000010 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DEAD static char const* const stringBase_80C675E4 = "P_DSand";
|
||||
#pragma pop
|
||||
|
||||
/* 80C675EC-80C675F8 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
|
||||
SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
|
||||
static u8 cNullVec__6Z2Calc[12] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
/* 80C675F8-80C6760C 00000C 0004+10 0/0 0/0 0/0 .data @1787 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
|
||||
static u32 lit_1787[1 + 4 /* padding */] = {
|
||||
0x02000201,
|
||||
/* padding */
|
||||
0x40080000,
|
||||
@ -144,91 +54,173 @@ SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
|
||||
#pragma pop
|
||||
|
||||
/* 80C6760C-80C67610 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */
|
||||
SECTION_DATA static void* l_arcName = (void*)&d_a_obj_lv4digsand__stringBase0;
|
||||
static char* l_arcName = "P_DSand";
|
||||
|
||||
/* 80C66C24-80C66C94 000184 0070+00 1/0 0/0 0/0 .text CreateHeap__16daObjL4DigSand_cFv */
|
||||
void daObjL4DigSand_c::CreateHeap() {
|
||||
// NONMATCHING
|
||||
int daObjL4DigSand_c::CreateHeap() {
|
||||
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 4);
|
||||
JUT_ASSERT(0x9B, modelData != 0);
|
||||
|
||||
mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
|
||||
if (mpModel == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 80C66C94-80C66D40 0001F4 00AC+00 1/1 0/0 0/0 .text create1st__16daObjL4DigSand_cFv */
|
||||
void daObjL4DigSand_c::create1st() {
|
||||
// NONMATCHING
|
||||
int daObjL4DigSand_c::create1st() {
|
||||
if (fopAcM_isSwitch(this, getSwNo())) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
int phase_state = dComIfG_resLoad(&mPhase, l_arcName);
|
||||
if (phase_state == cPhs_COMPLEATE_e) {
|
||||
phase_state = MoveBGCreate(l_arcName, 7, NULL, 0x1100, NULL);
|
||||
if (phase_state == cPhs_ERROR_e) {
|
||||
return phase_state;
|
||||
}
|
||||
}
|
||||
|
||||
return phase_state;
|
||||
}
|
||||
|
||||
/* 80C66D40-80C66DD0 0002A0 0090+00 1/0 0/0 0/0 .text Execute__16daObjL4DigSand_cFPPA3_A4_f */
|
||||
void daObjL4DigSand_c::Execute(f32 (**param_0)[3][4]) {
|
||||
// NONMATCHING
|
||||
int daObjL4DigSand_c::Execute(f32 (**param_0)[3][4]) {
|
||||
if (daPy_py_c::i_checkNowWolf() && checkItemGet(SMELL_POH, 1)) {
|
||||
attention_info.flags = 0x80;
|
||||
} else {
|
||||
attention_info.flags = 0;
|
||||
}
|
||||
|
||||
action();
|
||||
|
||||
*param_0 = &mBgMtx;
|
||||
setBaseMtx();
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80C67610-80C6761C -00001 000C+00 0/1 0/0 0/0 .data @3715 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* lit_3715[3] = {
|
||||
(void*)NULL,
|
||||
(void*)0xFFFFFFFF,
|
||||
(void*)mode_wait__16daObjL4DigSand_cFv,
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
/* 80C6761C-80C67628 -00001 000C+00 0/1 0/0 0/0 .data @3716 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* lit_3716[3] = {
|
||||
(void*)NULL,
|
||||
(void*)0xFFFFFFFF,
|
||||
(void*)mode_dig__16daObjL4DigSand_cFv,
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
/* 80C67628-80C67634 -00001 000C+00 0/1 0/0 0/0 .data @3717 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static void* lit_3717[3] = {
|
||||
(void*)NULL,
|
||||
(void*)0xFFFFFFFF,
|
||||
(void*)mode_end__16daObjL4DigSand_cFv,
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
/* 80C67634-80C67658 000048 0024+00 0/1 0/0 0/0 .data l_func$3714 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DATA static u8 l_func[36] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
#pragma pop
|
||||
|
||||
/* 80C66DD0-80C66E74 000330 00A4+00 1/1 0/0 0/0 .text action__16daObjL4DigSand_cFv */
|
||||
void daObjL4DigSand_c::action() {
|
||||
// NONMATCHING
|
||||
typedef void (daObjL4DigSand_c::*mode_func)();
|
||||
static mode_func l_func[] = {
|
||||
&daObjL4DigSand_c::mode_wait,
|
||||
&daObjL4DigSand_c::mode_dig,
|
||||
&daObjL4DigSand_c::mode_end,
|
||||
};
|
||||
|
||||
(this->*l_func[mMode])();
|
||||
}
|
||||
|
||||
/* 80C66E74-80C66E80 0003D4 000C+00 1/1 0/0 0/0 .text mode_init_wait__16daObjL4DigSand_cFv */
|
||||
void daObjL4DigSand_c::mode_init_wait() {
|
||||
// NONMATCHING
|
||||
mMode = 0;
|
||||
}
|
||||
|
||||
/* 80C66E80-80C66EAC 0003E0 002C+00 1/0 0/0 0/0 .text mode_wait__16daObjL4DigSand_cFv */
|
||||
void daObjL4DigSand_c::mode_wait() {
|
||||
// NONMATCHING
|
||||
if (field_0x941 == 1) {
|
||||
mode_init_dig();
|
||||
}
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80C675D4-80C675D8 000000 0004+00 2/2 0/0 0/0 .rodata @3746 */
|
||||
SECTION_RODATA static f32 const lit_3746 = -1000000000.0f;
|
||||
COMPILER_STRIP_GATE(0x80C675D4, &lit_3746);
|
||||
/* 80C66EAC-80C66F84 00040C 00D8+00 1/1 0/0 0/0 .text mode_init_dig__16daObjL4DigSand_cFv
|
||||
*/
|
||||
void daObjL4DigSand_c::mode_init_dig() {
|
||||
dBgS_ObjGndChk gndchk;
|
||||
gndchk.SetActorPid(mBase.mBsPcId);
|
||||
gndchk.SetPos(¤t.pos);
|
||||
|
||||
f32 gnd_y = dComIfG_Bgsp().GroundCross(&gndchk);
|
||||
if (gnd_y != -1000000000.0f) {
|
||||
mGroundY = gnd_y;
|
||||
} else {
|
||||
#ifdef DEBUG
|
||||
// "No BG below dig-sand!"
|
||||
OS_REPORT_ERROR("掘れる砂の下にBGがありません!");
|
||||
fopAcM_delete(this);
|
||||
#endif
|
||||
}
|
||||
|
||||
mTimer = 20;
|
||||
mMode = 1;
|
||||
}
|
||||
|
||||
/* 80C66FFC-80C670AC 00055C 00B0+00 1/0 0/0 0/0 .text mode_dig__16daObjL4DigSand_cFv */
|
||||
void daObjL4DigSand_c::mode_dig() {
|
||||
if (cLib_calcTimer<u8>(&mTimer) == 0) {
|
||||
f32 var_f31 = std::fabs(((current.pos.y - mGroundY) + 10.0f) / 15.0f);
|
||||
if (var_f31 < 1.0f) {
|
||||
var_f31 = 1.0f;
|
||||
}
|
||||
|
||||
if (cLib_chaseF(¤t.pos.y, mGroundY - 10.0f, var_f31) && field_0x941 == 2) {
|
||||
mode_init_end();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 80C670AC-80C67100 00060C 0054+00 1/1 0/0 0/0 .text mode_init_end__16daObjL4DigSand_cFv
|
||||
*/
|
||||
void daObjL4DigSand_c::mode_init_end() {
|
||||
fopAcM_onSwitch(this, getSwNo());
|
||||
fopAcM_delete(this);
|
||||
mMode = 2;
|
||||
}
|
||||
|
||||
/* 80C67100-80C67104 000660 0004+00 1/0 0/0 0/0 .text mode_end__16daObjL4DigSand_cFv */
|
||||
void daObjL4DigSand_c::mode_end() {}
|
||||
|
||||
/* 80C67104-80C671A8 000664 00A4+00 1/0 0/0 0/0 .text Draw__16daObjL4DigSand_cFv */
|
||||
int daObjL4DigSand_c::Draw() {
|
||||
g_env_light.settingTevStruct(0x10, ¤t.pos, &tevStr);
|
||||
g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr);
|
||||
|
||||
dComIfGd_setListBG();
|
||||
mDoExt_modelUpdateDL(mpModel);
|
||||
dComIfGd_setList();
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 80C671A8-80C671DC 000708 0034+00 1/0 0/0 0/0 .text Delete__16daObjL4DigSand_cFv */
|
||||
int daObjL4DigSand_c::Delete() {
|
||||
dComIfG_resDelete(&mPhase, l_arcName);
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 80C671DC-80C67308 00073C 012C+00 1/0 0/0 0/0 .text
|
||||
* daObjL4DigSand_create1st__FP16daObjL4DigSand_c */
|
||||
static int daObjL4DigSand_create1st(daObjL4DigSand_c* i_this) {
|
||||
fopAcM_SetupActor(i_this, daObjL4DigSand_c);
|
||||
return i_this->create1st();
|
||||
}
|
||||
|
||||
/* 80C674D4-80C674F4 000A34 0020+00 1/0 0/0 0/0 .text
|
||||
* daObjL4DigSand_MoveBGDelete__FP16daObjL4DigSand_c */
|
||||
static int daObjL4DigSand_MoveBGDelete(daObjL4DigSand_c* i_this) {
|
||||
return i_this->MoveBGDelete();
|
||||
}
|
||||
|
||||
/* 80C674F4-80C67514 000A54 0020+00 1/0 0/0 0/0 .text
|
||||
* daObjL4DigSand_MoveBGExecute__FP16daObjL4DigSand_c */
|
||||
static int daObjL4DigSand_MoveBGExecute(daObjL4DigSand_c* i_this) {
|
||||
return i_this->MoveBGExecute();
|
||||
}
|
||||
|
||||
/* 80C67514-80C67540 000A74 002C+00 1/0 0/0 0/0 .text
|
||||
* daObjL4DigSand_MoveBGDraw__FP16daObjL4DigSand_c */
|
||||
static int daObjL4DigSand_MoveBGDraw(daObjL4DigSand_c* i_this) {
|
||||
return i_this->MoveBGDraw();
|
||||
}
|
||||
|
||||
/* 80C67658-80C67678 -00001 0020+00 1/0 0/0 0/0 .data daObjL4DigSand_METHODS */
|
||||
static actor_method_class daObjL4DigSand_METHODS = {
|
||||
(process_method_func)daObjL4DigSand_create1st__FP16daObjL4DigSand_c,
|
||||
(process_method_func)daObjL4DigSand_MoveBGDelete__FP16daObjL4DigSand_c,
|
||||
(process_method_func)daObjL4DigSand_MoveBGExecute__FP16daObjL4DigSand_c,
|
||||
0,
|
||||
(process_method_func)daObjL4DigSand_MoveBGDraw__FP16daObjL4DigSand_c,
|
||||
(process_method_func)daObjL4DigSand_create1st,
|
||||
(process_method_func)daObjL4DigSand_MoveBGDelete,
|
||||
(process_method_func)daObjL4DigSand_MoveBGExecute,
|
||||
(process_method_func)NULL,
|
||||
(process_method_func)daObjL4DigSand_MoveBGDraw,
|
||||
};
|
||||
|
||||
/* 80C67678-80C676A8 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Lv4DigSand */
|
||||
@ -248,234 +240,3 @@ extern actor_process_profile_definition g_profile_Obj_Lv4DigSand = {
|
||||
fopAc_ACTOR_e, // mActorType
|
||||
fopAc_CULLBOX_CUSTOM_e, // cullType
|
||||
};
|
||||
|
||||
/* 80C676A8-80C676B4 0000BC 000C+00 1/1 0/0 0/0 .data __vt__12dBgS_AcchCir */
|
||||
SECTION_DATA extern void* __vt__12dBgS_AcchCir[3] = {
|
||||
(void*)NULL /* RTTI */,
|
||||
(void*)NULL,
|
||||
(void*)__dt__12dBgS_AcchCirFv,
|
||||
};
|
||||
|
||||
/* 80C676B4-80C676C0 0000C8 000C+00 2/2 0/0 0/0 .data __vt__10cCcD_GStts */
|
||||
SECTION_DATA extern void* __vt__10cCcD_GStts[3] = {
|
||||
(void*)NULL /* RTTI */,
|
||||
(void*)NULL,
|
||||
(void*)__dt__10cCcD_GSttsFv,
|
||||
};
|
||||
|
||||
/* 80C676C0-80C676CC 0000D4 000C+00 1/1 0/0 0/0 .data __vt__10dCcD_GStts */
|
||||
SECTION_DATA extern void* __vt__10dCcD_GStts[3] = {
|
||||
(void*)NULL /* RTTI */,
|
||||
(void*)NULL,
|
||||
(void*)__dt__10dCcD_GSttsFv,
|
||||
};
|
||||
|
||||
/* 80C676CC-80C676D8 0000E0 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGCyl */
|
||||
SECTION_DATA extern void* __vt__8cM3dGCyl[3] = {
|
||||
(void*)NULL /* RTTI */,
|
||||
(void*)NULL,
|
||||
(void*)__dt__8cM3dGCylFv,
|
||||
};
|
||||
|
||||
/* 80C676D8-80C676E4 0000EC 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */
|
||||
SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
|
||||
(void*)NULL /* RTTI */,
|
||||
(void*)NULL,
|
||||
(void*)__dt__8cM3dGAabFv,
|
||||
};
|
||||
|
||||
/* 80C676E4-80C67708 0000F8 0024+00 2/2 0/0 0/0 .data __vt__12dBgS_ObjAcch */
|
||||
SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = {
|
||||
(void*)NULL /* RTTI */,
|
||||
(void*)NULL,
|
||||
(void*)__dt__12dBgS_ObjAcchFv,
|
||||
(void*)NULL,
|
||||
(void*)NULL,
|
||||
(void*)func_80C675C4,
|
||||
(void*)NULL,
|
||||
(void*)NULL,
|
||||
(void*)func_80C675BC,
|
||||
};
|
||||
|
||||
/* 80C67708-80C67738 00011C 0030+00 2/2 0/0 0/0 .data __vt__14dBgS_ObjGndChk */
|
||||
SECTION_DATA extern void* __vt__14dBgS_ObjGndChk[12] = {
|
||||
(void*)NULL /* RTTI */,
|
||||
(void*)NULL,
|
||||
(void*)__dt__14dBgS_ObjGndChkFv,
|
||||
(void*)NULL,
|
||||
(void*)NULL,
|
||||
(void*)func_80C675A4,
|
||||
(void*)NULL,
|
||||
(void*)NULL,
|
||||
(void*)func_80C675B4,
|
||||
(void*)NULL,
|
||||
(void*)NULL,
|
||||
(void*)func_80C675AC,
|
||||
};
|
||||
|
||||
/* 80C66EAC-80C66F84 00040C 00D8+00 1/1 0/0 0/0 .text mode_init_dig__16daObjL4DigSand_cFv
|
||||
*/
|
||||
void daObjL4DigSand_c::mode_init_dig() {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C66F84-80C66FFC 0004E4 0078+00 4/3 0/0 0/0 .text __dt__14dBgS_ObjGndChkFv */
|
||||
// dBgS_ObjGndChk::~dBgS_ObjGndChk() {
|
||||
extern "C" void __dt__14dBgS_ObjGndChkFv() {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80C675D8-80C675DC 000004 0004+00 0/1 0/0 0/0 .rodata @3765 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static f32 const lit_3765 = 10.0f;
|
||||
COMPILER_STRIP_GATE(0x80C675D8, &lit_3765);
|
||||
#pragma pop
|
||||
|
||||
/* 80C675DC-80C675E0 000008 0004+00 0/1 0/0 0/0 .rodata @3766 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static f32 const lit_3766 = 15.0f;
|
||||
COMPILER_STRIP_GATE(0x80C675DC, &lit_3766);
|
||||
#pragma pop
|
||||
|
||||
/* 80C675E0-80C675E4 00000C 0004+00 0/1 0/0 0/0 .rodata @3767 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static f32 const lit_3767 = 1.0f;
|
||||
COMPILER_STRIP_GATE(0x80C675E0, &lit_3767);
|
||||
#pragma pop
|
||||
|
||||
/* 80C66FFC-80C670AC 00055C 00B0+00 1/0 0/0 0/0 .text mode_dig__16daObjL4DigSand_cFv */
|
||||
void daObjL4DigSand_c::mode_dig() {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C670AC-80C67100 00060C 0054+00 1/1 0/0 0/0 .text mode_init_end__16daObjL4DigSand_cFv
|
||||
*/
|
||||
void daObjL4DigSand_c::mode_init_end() {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C67100-80C67104 000660 0004+00 1/0 0/0 0/0 .text mode_end__16daObjL4DigSand_cFv */
|
||||
void daObjL4DigSand_c::mode_end() {
|
||||
/* empty function */
|
||||
}
|
||||
|
||||
/* 80C67104-80C671A8 000664 00A4+00 1/0 0/0 0/0 .text Draw__16daObjL4DigSand_cFv */
|
||||
void daObjL4DigSand_c::Draw() {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C671A8-80C671DC 000708 0034+00 1/0 0/0 0/0 .text Delete__16daObjL4DigSand_cFv */
|
||||
void daObjL4DigSand_c::Delete() {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80C67738-80C67760 00014C 0028+00 1/1 0/0 0/0 .data __vt__16daObjL4DigSand_c */
|
||||
SECTION_DATA extern void* __vt__16daObjL4DigSand_c[10] = {
|
||||
(void*)NULL /* RTTI */,
|
||||
(void*)NULL,
|
||||
(void*)CreateHeap__16daObjL4DigSand_cFv,
|
||||
(void*)Create__16daObjL4DigSand_cFv,
|
||||
(void*)Execute__16daObjL4DigSand_cFPPA3_A4_f,
|
||||
(void*)Draw__16daObjL4DigSand_cFv,
|
||||
(void*)Delete__16daObjL4DigSand_cFv,
|
||||
(void*)IsDelete__16dBgS_MoveBgActorFv,
|
||||
(void*)ToFore__16dBgS_MoveBgActorFv,
|
||||
(void*)ToBack__16dBgS_MoveBgActorFv,
|
||||
};
|
||||
|
||||
/* 80C671DC-80C67308 00073C 012C+00 1/0 0/0 0/0 .text
|
||||
* daObjL4DigSand_create1st__FP16daObjL4DigSand_c */
|
||||
static void daObjL4DigSand_create1st(daObjL4DigSand_c* param_0) {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C67308-80C67350 000868 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
|
||||
// cM3dGCyl::~cM3dGCyl() {
|
||||
extern "C" void __dt__8cM3dGCylFv() {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C67350-80C67398 0008B0 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
|
||||
// cM3dGAab::~cM3dGAab() {
|
||||
extern "C" void __dt__8cM3dGAabFv() {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C67398-80C673F4 0008F8 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */
|
||||
// dCcD_GStts::~dCcD_GStts() {
|
||||
extern "C" void __dt__10dCcD_GSttsFv() {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C673F4-80C67464 000954 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */
|
||||
// dBgS_AcchCir::~dBgS_AcchCir() {
|
||||
extern "C" void __dt__12dBgS_AcchCirFv() {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C67464-80C674D4 0009C4 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
|
||||
// dBgS_ObjAcch::~dBgS_ObjAcch() {
|
||||
extern "C" void __dt__12dBgS_ObjAcchFv() {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C674D4-80C674F4 000A34 0020+00 1/0 0/0 0/0 .text
|
||||
* daObjL4DigSand_MoveBGDelete__FP16daObjL4DigSand_c */
|
||||
static void daObjL4DigSand_MoveBGDelete(daObjL4DigSand_c* param_0) {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C674F4-80C67514 000A54 0020+00 1/0 0/0 0/0 .text
|
||||
* daObjL4DigSand_MoveBGExecute__FP16daObjL4DigSand_c */
|
||||
static void daObjL4DigSand_MoveBGExecute(daObjL4DigSand_c* param_0) {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C67514-80C67540 000A74 002C+00 1/0 0/0 0/0 .text
|
||||
* daObjL4DigSand_MoveBGDraw__FP16daObjL4DigSand_c */
|
||||
static void daObjL4DigSand_MoveBGDraw(daObjL4DigSand_c* param_0) {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C67540-80C67588 000AA0 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */
|
||||
// cCcD_GStts::~cCcD_GStts() {
|
||||
extern "C" void __dt__10cCcD_GSttsFv() {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C67588-80C675A4 000AE8 001C+00 1/1 0/0 0/0 .text cLib_calcTimer<Uc>__FPUc */
|
||||
extern "C" void func_80C67588(void* _this, u8* param_0) {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C675A4-80C675AC 000B04 0008+00 1/0 0/0 0/0 .text @20@__dt__14dBgS_ObjGndChkFv */
|
||||
static void func_80C675A4() {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C675AC-80C675B4 000B0C 0008+00 1/0 0/0 0/0 .text @76@__dt__14dBgS_ObjGndChkFv */
|
||||
static void func_80C675AC() {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C675B4-80C675BC 000B14 0008+00 1/0 0/0 0/0 .text @60@__dt__14dBgS_ObjGndChkFv */
|
||||
static void func_80C675B4() {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C675BC-80C675C4 000B1C 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
|
||||
static void func_80C675BC() {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C675C4-80C675CC 000B24 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
|
||||
static void func_80C675C4() {
|
||||
// NONMATCHING
|
||||
}
|
||||
|
||||
/* 80C675E4-80C675E4 000010 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
@ -1925,11 +1925,11 @@ fopAc_ac_c* fopAcM_myRoomSearchEnemy(s8 roomNo) {
|
||||
|
||||
/* 8001CAD8-8001CB48 017418 0070+00 0/0 0/0 81/81 .text
|
||||
* fopAcM_createDisappear__FPC10fopAc_ac_cPC4cXyzUcUcUc */
|
||||
s32 fopAcM_createDisappear(const fopAc_ac_c* i_actor, const cXyz* i_pos, u8 param_3, u8 param_4,
|
||||
u8 param_5) {
|
||||
s32 fopAcM_createDisappear(const fopAc_ac_c* i_actor, const cXyz* i_pos, u8 i_size, u8 i_type,
|
||||
u8 i_enemyID) {
|
||||
s8 roomNo = fopAcM_GetRoomNo(i_actor);
|
||||
return fopAcM_GetID(fopAcM_fastCreate(PROC_DISAPPEAR,
|
||||
(param_5 << 0x10) | (param_3 << 0x8) | param_4, i_pos,
|
||||
(i_enemyID << 0x10) | (i_size << 0x8) | i_type, i_pos,
|
||||
roomNo, &i_actor->current.angle, NULL, 0xFF, NULL, NULL));
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user