most of d_a_alink_wolf done / some misc (#1993)

* wip on alink_wolf

* setup procvar unions

* most of d_a_alink_wolf done + some misc
This commit is contained in:
TakaRikka
2023-11-27 03:14:06 -08:00
committed by GitHub
parent 6b0df1f30d
commit 9ff0f5029f
81 changed files with 7557 additions and 2081 deletions
+1 -1
View File
@@ -28,7 +28,7 @@ void* __va_arg(_va_list_struct*, int);
// __builtin_va_info: initialize the __va_list_struct
// _var_arg_typeof: convert type to integer for __va_arg
#define __va_start(list, fmt) __builtin_va_info(&list)
#define __va_arg(list, type) (*((type*)__va_arg(ap, _var_arg_typeof(type))))
#define __va_arg(list, type) (*((type*)__va_arg(list, _var_arg_typeof(type))))
#define va_start __va_start
#define va_arg __va_arg
#define va_end __va_end
+1
View File
@@ -32,6 +32,7 @@ public:
void calcMinMax(cXyz*, cXyz*);
const cXyz* GetCP(void) const { return &mCenter; }
f32 GetR(void) const { return mRadius; }
f32* GetRP() { return &mRadius; }
f32 GetH(void) const { return mHeight; }
cXyz& GetC() { return mCenter; }
+1
View File
@@ -78,6 +78,7 @@ public:
u8 getLinkState() const { return mLinkState; }
u8 getMoveSpeed() const { return mMoveSpeed; }
bool isRiding() const { return mRiding; }
void i_setLinkState(u8 i_state) { mLinkState = i_state; }
static Z2CreatureLink* mLinkPtr;
+5 -1
View File
@@ -32,7 +32,7 @@ public:
f32 getNowPitch();
f32 getNowInputValue();
void calcPitchMod(f32, f32);
void startWolfHowlSound(f32, f32, bool, f32);
s8 startWolfHowlSound(f32, f32, bool, f32);
void setCorrectData(s8, Z2WolfHowlData*);
SongNote getCorrectLine(u8);
u8 getCorrectLineNum();
@@ -42,6 +42,10 @@ public:
int startGuideMelody(bool);
void skipCorrectDemo();
void setCorrectCurve(s8 i_curve) { setCorrectData(i_curve, NULL); }
u32 getTimer() { return mTimer; }
u8 getReleaseTimer() { return mReleaseTimer; }
private:
/* 0x00 */ JAISoundHandle field_0x00;
/* 0x04 */ JAISoundHandle field_0x04;
+78 -102
View File
@@ -129,7 +129,6 @@ public:
/* 800CFCB8 */ ~daAlink_footData_c();
/* 800CFCF4 */ daAlink_footData_c();
private:
/* 0x00 */ u8 field_0x00[2];
/* 0x02 */ u16 field_0x2;
/* 0x04 */ u16 field_0x4;
@@ -666,12 +665,22 @@ public:
FTANM_UNK_7B = 0x7B,
FTANM_UNK_7C = 0x7C,
FTANM_UNK_8A = 0x8A,
FTANM_UNK_8D = 0x8D,
FTANM_UNK_8E = 0x8E,
FTANM_UNK_8F = 0x8F,
FTANM_UNK_90 = 0x90,
FTANM_UNK_91 = 0x91,
FTANM_UNK_95 = 0x95,
FTANM_UNK_96 = 0x96,
FTANM_UNK_97 = 0x97,
FTANM_UNK_9A = 0x9A,
FTANM_UNK_9B = 0x9B,
FTANM_UNK_9C = 0x9C,
FTANM_UNK_9D = 0x9D,
FTANM_UNK_9F = 0x9F,
FTANM_UNK_A0 = 0xA0,
FTANM_UNK_A1 = 0xA1,
FTANM_UNK_A2 = 0xA2,
};
enum daAlink_WARP_MAT_MODE {
@@ -1961,7 +1970,7 @@ public:
/* 800E53F8 */ void setGrabItemThrow();
/* 800E57AC */ BOOL checkUpperGrabItemThrow(f32);
/* 800E5830 */ void putObjLineCheck(dBgS_LinChk&, cXyz*, fopAc_ac_c*);
/* 800E5B6C */ void grabLineCheck(cXyz*, cXyz*);
/* 800E5B6C */ bool grabLineCheck(cXyz*, cXyz*);
/* 800E5BB4 */ void setGrabItemActor(fopAc_ac_c*);
/* 800E5CBC */ int procGrabReadyInit();
/* 800E5EC8 */ int procGrabReady();
@@ -2739,8 +2748,8 @@ public:
/* 801299A8 */ void checkWolfUseAbility();
/* 80129A80 */ int checkWolfGroundSpecialMode();
/* 80129B44 */ int checkNextActionWolf(int);
/* 8012A02C */ void wolfSideBgCheck(s16);
/* 8012A228 */ void checkWolfAttackReverse(int);
/* 8012A02C */ BOOL wolfSideBgCheck(s16);
/* 8012A228 */ BOOL checkWolfAttackReverse(int);
/* 8012A330 */ int checkWolfBarrierHitReverse();
/* 8012A41C */ bool checkWolfBarrierWallHit(cBgS_PolyInfo&);
/* 8012A498 */ void wolfBgCheck();
@@ -2748,7 +2757,7 @@ public:
/* 8012AD1C */ void setWolfFootMatrix();
/* 8012B724 */ void wolfFootBgCheck();
/* 8012BFA8 */ BOOL checkWolfWaitSlipPolygon();
/* 8012C1F4 */ void setWolfWaitSlip();
/* 8012C1F4 */ f32 setWolfWaitSlip();
/* 8012C308 */ void checkWolfAtnDoCharge();
/* 8012C30C */ void setWolfChainPos();
/* 8012CB0C */ void setWolfAnmVoice();
@@ -2827,8 +2836,8 @@ public:
/* 80133164 */ int procWolfRopeStagger();
/* 8013384C */ int procWolfRopeSubjectivityInit();
/* 80133930 */ int procWolfRopeSubjectivity();
/* 80133D6C */ void getWolfTagJumpTime() const;
/* 80133EF0 */ cXyz* checkMidnaLockJumpPoint() const;
/* 80133D6C */ int getWolfTagJumpTime() const;
/* 80133EF0 */ const cXyz* checkMidnaLockJumpPoint() const;
/* 80134000 */ int procWolfTagJumpInit(fopAc_ac_c*);
/* 80134838 */ int procWolfTagJump();
/* 80134DB8 */ int procWolfTagJumpLandInit(fopAc_ac_c*);
@@ -2836,7 +2845,7 @@ public:
/* 80135160 */ int procWolfGiantPuzzleInit();
/* 801351F8 */ int procWolfGiantPuzzle();
/* 80135458 */ void setWolfHangGroundY();
/* 801354C8 */ void changeWolfHangEndProc();
/* 801354C8 */ int changeWolfHangEndProc();
/* 801355EC */ int procWolfHangReadyInit();
/* 80135668 */ int procWolfHangReady();
/* 801356F0 */ int procWolfHangWallCatchInit(int);
@@ -2854,9 +2863,9 @@ public:
/* 80136F54 */ int procWolfScreamWaitInit();
/* 80136FF8 */ int procWolfScreamWait();
/* 801370E4 */ f32 getWolfLieMoveAnmSpeed();
/* 8013712C */ void getWolfLieMoveSpeed();
/* 8013712C */ f32 getWolfLieMoveSpeed();
/* 801371A0 */ BOOL checkMidnaDisappearMode() const;
/* 801371FC */ void checkWolfLieContinue(int);
/* 801371FC */ BOOL checkWolfLieContinue(int);
/* 801372B4 */ int checkNextActionWolfFromLie();
/* 80137330 */ void setWolfLieMoveVoice(int);
/* 801373F8 */ bool checkWolfLieCode();
@@ -2886,11 +2895,11 @@ public:
/* 801391DC */ fopAc_ac_c* getWolfLockActorEnd();
/* 801391E4 */ void searchWolfLockEnemy(fopAc_ac_c*, void*);
/* 801392E4 */ void checkWolfComboCnt();
/* 801393A4 */ void checkWolfAttackAction();
/* 801393A4 */ BOOL checkWolfAttackAction();
/* 801395B4 */ void setWolfEnemyThrowUpperAnime(daAlink_c::daAlink_WANM, f32);
/* 80139600 */ BOOL setWolfEnemyHangBitePos(fopEn_enemy_c*);
/* 801396F8 */ void setWolfBiteDamage(fopEn_enemy_c*);
/* 801397A4 */ void checkWolfLockAttackChargeState();
/* 801397A4 */ BOOL checkWolfLockAttackChargeState();
/* 801398A8 */ int procWolfRollAttackChargeInit();
/* 80139908 */ int procWolfRollAttackCharge();
/* 801399C4 */ int procWolfRollAttackMoveInit();
@@ -3131,8 +3140,10 @@ public:
bool i_checkSmallUpperGuardAnime() const { return checkUpperAnime(0x16); }
bool i_checkFmChainGrabAnime() const { return checkUpperAnime(0x62) || checkUpperAnime(0x2A0); }
// wrapping functions that use this with "#pragma optimization_level 2" can help fix some issues, but not always
// this might be a fake match, but helps fix usage in many functions
#pragma optimization_level 2
BOOL i_checkAttentionLock() { return mAttention->Lockon(); }
#pragma optimization_level 3
bool checkUpperAnime(u16 i_idx) const { return mUpperAnmHeap[UPPER_2].getIdx() == i_idx; }
bool checkUnderAnime(u16 i_idx) const { return mUnderAnmHeap[UNDER_2].getIdx() == i_idx; }
@@ -3161,6 +3172,7 @@ public:
bool checkWolfGrabAnimeObj() const { return checkUpperAnime(0x2DA); }
bool checkWolfGrabAnimeStick() const { return checkUpperAnime(0x2DB); }
bool checkWolfGrabAnime() const { return checkWolfGrabAnimeObj() || checkWolfGrabAnimeStick(); }
bool checkWolfSwimDashAnime() const { return checkUnderMove0BckNoArcWolf(WANM_SWIM_DASH); }
bool checkKandelaarSwingAnime() const { return false; }
bool checkBowChargeWaitAnime() const { return checkUpperAnime(0xA); }
bool checkBowReloadAnime() const { return checkUpperAnime(0x9); }
@@ -3223,9 +3235,13 @@ public:
field_0x2fa3 = 0;
field_0x2844.clearData();
}
s32 checkPlayerDemoMode() const { return mDemo.getDemoType(); }
BOOL i_checkSpecialDemoMode() const { return mDemo.getDemoType() == 5; }
static bool checkMidnaChargeAttack() { return i_dComIfGs_isEventBit(0x501); }
u16 getMidnaMsgNum() const { return mMidnaMsgNum; }
u32 getStartEvent() { return fopAcM_GetParam(this) >> 0x18; }
const daAlink_AnmData* getAnmData(daAlink_ANM anmID) const { return &m_anmDataTable[anmID]; }
const daAlink_FaceTexData* getFaceTexData(daAlink_FTANM i_anmID) const { return &m_faceTexDataTable[i_anmID]; }
@@ -3279,6 +3295,7 @@ public:
void clearIronBallActor() { field_0x173c.SetActor(this); }
BOOL checkCanoeRideOwn(const fopAc_ac_c* param_0) const { return checkCanoeRide() && mRideAcKeep.getActorConst() == param_0; }
bool checkWolfDashMode() const { return i_checkNoResetFlg1(FLG1_DASH_MODE); }
bool checkWolfLieWaterIn() const { return mWaterY > current.pos.y + 20.5f; }
J3DModel* initModel(J3DModelData* p_modelData, u32 param_1) {
return initModel(p_modelData, 0x80000, param_1);
@@ -3323,10 +3340,12 @@ public:
mDamageColorTime = 32 - (mDamageTimer % 16);
}
// Gets the cardinal direction of the Left Stick relative to player facing angle
int getDirectionFromShapeAngle() const {
return getDirectionFromAngle(field_0x2fe2 - shape_angle.y);
}
// Gets the cardinal direction of the Left Stick relative to player angle
int getDirectionFromCurrentAngle() const {
return getDirectionFromAngle(field_0x2fe2 - current.angle.y);
}
@@ -3381,7 +3400,7 @@ private:
/* 0x00650 */ J3DModel* mpLinkModel;
/* 0x00654 */ J3DModel* mpLinkFaceModel;
/* 0x00658 */ J3DModel* mpLinkHatModel;
/* 0x0065C */ J3DModel* field_0x065c;
/* 0x0065C */ J3DModel* mpLinkHandModel;
/* 0x00660 */ J3DModel* mpSwAModel; // Ordon Sword model
/* 0x00664 */ J3DModel* mpSwASheathModel; // Ordon Sword sheath model
/* 0x00668 */ J3DModel* mpSwMModel; // Master Sword model
@@ -3410,10 +3429,10 @@ private:
/* 0x006C4 */ J3DAnmTextureSRTKey* m_nSwordBtk;
/* 0x006C8 */ J3DAnmTextureSRTKey* m_mSwordBtk;
/* 0x006CC */ J3DAnmTevRegKey* m_mSwordBrk;
/* 0x006D0 */ void* field_0x06d0;
/* 0x006D4 */ void* field_0x06d4;
/* 0x006D8 */ void* field_0x06d8;
/* 0x006DC */ void* field_0x06dc;
/* 0x006D0 */ J3DShape* field_0x06d0;
/* 0x006D4 */ J3DShape* field_0x06d4;
/* 0x006D8 */ J3DShape* field_0x06d8;
/* 0x006DC */ J3DShape* field_0x06dc;
/* 0x006E0 */ J3DShape* field_0x06e0;
/* 0x006E4 */ J3DShape* field_0x06e4;
/* 0x006E8 */ J3DShape* field_0x06e8;
@@ -3421,9 +3440,9 @@ private:
/* 0x006F0 */ J3DShape* field_0x06f0;
/* 0x006F4 */ J3DAnmTevRegKey* field_0x06f4;
/* 0x006F8 */ J3DAnmTevRegKey* field_0x06f8;
/* 0x006FC */ J3DModel* field_0x06fc; // related to human link
/* 0x00700 */ J3DModel* field_0x0700;
/* 0x00704 */ J3DAnmBase* field_0x0704;
/* 0x006FC */ J3DModel* mpKanteraModel;
/* 0x00700 */ J3DModel* mpKanteraGlowModel;
/* 0x00704 */ J3DAnmTextureSRTKey* mpKanteraGlowBtk;
/* 0x00708 */ J3DModel* mHeldItemModel;
/* 0x0070C */ J3DModel* mpHookTipModel; // related to held item
/* 0x00710 */ J3DModel* field_0x0710; // related to held item
@@ -3442,16 +3461,16 @@ private:
/* 0x00774 */ u8 field_0x0774[0x77C - 0x774];
/* 0x0077C */ dBgS_ObjLinChk* mpHookshotLinChk;
/* 0x00780 */ u8 field_0x780[4];
/* 0x00784 */ J3DModel* field_0x784[2];
/* 0x00784 */ J3DModel* mpLinkBootModels[2];
/* 0x0078C */ J3DModel* mpWlChainModels[4];
/* 0x0079C */ J3DModel* field_0x79c; // related to wolf
/* 0x007A0 */ J3DModel* mpWlMidnaHatModel;
/* 0x007A4 */ J3DModel* field_0x7a4; // related to wolf
/* 0x0079C */ J3DModel* mpWlMidnaModel;
/* 0x007A0 */ J3DModel* mpWlMidnaMaskModel;
/* 0x007A4 */ J3DModel* mpWlMidnaHandModel;
/* 0x007A8 */ J3DModel* mpWlMidnaHairModel;
/* 0x007AC */ J3DAnmTevRegKey* field_0x7ac;
/* 0x007B0 */ J3DAnmTevRegKey* field_0x7b0;
/* 0x007B4 */ J3DAnmTevRegKey* field_0x7b4;
/* 0x007B8 */ J3DAnmTevRegKey* field_0x7b8;
/* 0x007AC */ J3DAnmTevRegKey* mpDMidnaBrk;
/* 0x007B0 */ J3DAnmTevRegKey* mpDMidnaMaskBrk;
/* 0x007B4 */ J3DAnmTevRegKey* mpDMidnaHandBrk;
/* 0x007B8 */ J3DAnmTevRegKey* mpDMidnaHairHandBrk;
/* 0x007BC */ mDoExt_bckAnm* m_sWindowBck;
/* 0x007C0 */ u32 mpWarpTexData;
/* 0x007C4 */ daPy_actorKeep_c mWolfLockAcKeep[10];
@@ -3561,8 +3580,8 @@ private:
/* 0x02F1C */ dPaPo_c* field_0x2f1c;
/* 0x02F20 */ dPa_hermiteEcallBack_c field_0x2f20;
/* 0x02F38 */ dPa_hermiteEcallBack_c field_0x2f38;
/* 0x02F50 */ Vec* field_0x2f50;
/* 0x02F54 */ Vec* field_0x2f54;
/* 0x02F50 */ const Vec* field_0x2f50;
/* 0x02F54 */ const Vec* field_0x2f54;
/* 0x02F58 */ u16* field_0x2f58;
/* 0x02F5C */ LIGHT_INFLUENCE field_0x2f5c;
/* 0x02F7C */ u8 field_0x2f7c[16];
@@ -3666,10 +3685,22 @@ private:
/* 0x03002 */ s16 field_0x3002;
/* 0x03004 */ s16 field_0x3004;
/* 0x03006 */ s16 field_0x3006;
/* 0x03008 */ s16 field_0x3008;
/* 0x0300A */ s16 field_0x300a;
/* 0x0300C */ s16 field_0x300c; // might need more accurate name
/* 0x0300E */ csXyz field_0x300e;
// `mProcVar`'s are variables that are context dependent for each `PROC` action.
// (The exact setup may need to be simplified later)
union {
s16 field_0x3008;
s16 mHowlExitID;
} /* 0x03008 */ mProcVar0;
union {
s16 field_0x300a;
} /* 0x0300A */ mProcVar1;
union {
s16 field_0x300c;
s16 mPuzzleAimAngle;
} /* 0x0300C */ mProcVar2;
union {
csXyz field_0x300e;
} /* 0x0300E */ mProcVar3;
/* 0x03014 */ s16 mFallVoiceInit;
/* 0x03016 */ u8 field_0x3016[2];
/* 0x03018 */ s16 field_0x3018;
@@ -3682,30 +3713,10 @@ private:
/* 0x03026 */ s16 field_0x3026;
/* 0x03028 */ s16 field_0x3028;
/* 0x0302A */ u8 field_0x302a[2];
/* 0x0302C */ s16 field_0x302c;
/* 0x0302E */ s16 field_0x302e;
/* 0x03030 */ s16 field_0x3030;
/* 0x03032 */ s16 field_0x3032;
/* 0x03034 */ s16 field_0x3034;
/* 0x03036 */ s16 field_0x3036;
/* 0x03038 */ u8 field_0x3038[2];
/* 0x0303A */ s16 field_0x303a;
/* 0x0303C */ u8 field_0x303c[4];
/* 0x03040 */ s16 field_0x3040;
/* 0x03042 */ s16 field_0x3042;
/* 0x03044 */ s16 field_0x3044;
/* 0x03046 */ s16 field_0x3046;
/* 0x03048 */ s16 field_0x3048;
/* 0x0304A */ s16 field_0x304a;
/* 0x0304C */ u8 field_0x304c[2];
/* 0x0304E */ s16 field_0x304e;
/* 0x03050 */ u8 field_0x3050[4];
/* 0x03054 */ s16 field_0x3054;
/* 0x03056 */ s16 field_0x3056;
/* 0x03058 */ u8 field_0x3058[2];
/* 0x0305A */ s16 field_0x305a;
/* 0x0305C */ s16 field_0x305c;
/* 0x0305E */ u8 field_0x305e[2];
/* 0x0302C */ s16 field_0x302c[10];
/* 0x03040 */ s16 field_0x3040[10];
/* 0x03054 */ s16 field_0x3054[3];
/* 0x0305A */ s16 field_0x305a[3];
/* 0x03060 */ s16 field_0x3060;
/* 0x03062 */ s16 field_0x3062;
/* 0x03064 */ s16 field_0x3064;
@@ -3731,10 +3742,8 @@ private:
/* 0x0308E */ s16 mFastShotTime;
/* 0x03090 */ s16 field_0x3090;
/* 0x03092 */ s16 field_0x3092;
/* 0x03094 */ s16 field_0x3094;
/* 0x03096 */ u8 field_0x3096[4];
/* 0x0309A */ s16 field_0x309a;
/* 0x0309C */ u8 field_0x309c[4];
/* 0x03094 */ s16 field_0x3094[3];
/* 0x0309A */ s16 field_0x309a[3];
/* 0x030A0 */ s16 field_0x30a0;
/* 0x030A2 */ s16 field_0x30a2;
/* 0x030A4 */ s16 field_0x30a4;
@@ -3851,8 +3860,7 @@ private:
/* 0x03298 */ u8 field_0x3298[8];
/* 0x032A0 */ J3DGXColorS10 field_0x32a0[2];
/* 0x032B0 */ J3DGXColorS10 field_0x32b0[2];
/* 0x032C0 */ s16 field_0x32c0;
/* 0x032C2 */ u8 field_0x32c2[2];
/* 0x032C0 */ s16 field_0x32c0[2];
/* 0x032C4 */ u16 field_0x32c4;
/* 0x032C6 */ u16 field_0x32c6;
/* 0x032C8 */ u32 field_0x32c8;
@@ -5717,7 +5725,7 @@ public:
static daAlinkHIO_wlAtDown_c1 const m;
};
class daAlinkHIO_wlAtWaTl_c1 {
class daAlinkHIO_wlAtWait_c1 {
public:
/* 0x00 */ daAlinkHIO_anm_c field_0x0;
/* 0x14 */ s16 field_0x14;
@@ -5731,53 +5739,21 @@ public:
/* 0x30 */ f32 field_0x30;
/* 0x34 */ f32 field_0x34;
/* 0x38 */ f32 field_0x38;
}; // Size: 0x3C
};
class daAlinkHIO_wlAtWaTl_c0 {
public:
static daAlinkHIO_wlAtWaTl_c1 const m;
static daAlinkHIO_wlAtWait_c1 const m;
};
class daAlinkHIO_wlAtWaSc_c1 {
public:
/* 0x00 */ daAlinkHIO_anm_c field_0x0;
/* 0x14 */ s16 field_0x14;
/* 0x16 */ s16 field_0x16;
/* 0x18 */ f32 field_0x18;
/* 0x1C */ f32 field_0x1C;
/* 0x20 */ f32 field_0x20;
/* 0x24 */ f32 field_0x24;
/* 0x28 */ f32 field_0x28;
/* 0x2C */ f32 field_0x2C;
/* 0x30 */ f32 field_0x30;
/* 0x34 */ f32 field_0x34;
/* 0x38 */ f32 field_0x38;
}; // Size: 0x3C
class daAlinkHIO_wlAtWaSc_c0 {
public:
static daAlinkHIO_wlAtWaSc_c1 const m;
static daAlinkHIO_wlAtWait_c1 const m;
};
class daAlinkHIO_wlAtWaLr_c1 {
public:
/* 0x00 */ daAlinkHIO_anm_c field_0x0;
/* 0x14 */ s16 field_0x14;
/* 0x16 */ s16 field_0x16;
/* 0x18 */ f32 field_0x18;
/* 0x1C */ f32 field_0x1C;
/* 0x20 */ f32 field_0x20;
/* 0x24 */ f32 field_0x24;
/* 0x28 */ f32 field_0x28;
/* 0x2C */ f32 field_0x2C;
/* 0x30 */ f32 field_0x30;
/* 0x34 */ f32 field_0x34;
/* 0x38 */ f32 field_0x38;
}; // Size: 0x3C
class daAlinkHIO_wlAtWaLr_c0 {
public:
static daAlinkHIO_wlAtWaLr_c1 const m;
static daAlinkHIO_wlAtWait_c1 const m;
};
class daAlinkHIO_wlAtRoll_c1 {
+43 -22
View File
@@ -259,6 +259,7 @@ public:
FLG1_UNK_10000000 = 0x10000000,
FLG1_UNK_4000000 = 0x4000000,
FLG1_IS_WOLF = 0x2000000,
FLG1_UNK_800000 = 0x800000,
FLG1_DASH_MODE = 0x400000,
FLG1_UNK_10000 = 0x10000,
FLG1_UNK_8000 = 0x8000,
@@ -290,9 +291,11 @@ public:
FLG2_STATUS_WINDOW_DRAW = 0x400000,
FLG2_UNK_280000 = 0x280000,
FLG2_UNK_200000 = 0x200000,
FLG2_UNK_100000 = 0x100000,
FLG2_UNK_80000 = 0x80000,
FLG2_UNK_40000 = 0x40000,
FLG2_UNK_20000 = 0x20000,
FLG2_UNK_10000 = 0x10000,
FLG2_SCN_CHG_START = 0x8000,
FLG2_UNK_4000 = 0x4000,
FLG2_UNK_2000 = 0x2000,
@@ -317,11 +320,14 @@ public:
FLG3_UNK_4000000 = 0x4000000,
FLG3_UNK_2000000 = 0x2000000,
FLG3_UNK_1000000 = 0x1000000,
FLG3_UNK_800000 = 0x800000,
FLG3_UNK_400000 = 0x400000,
FLG3_UNK_200000 = 0x200000,
FLG3_UNK_100000 = 0x100000,
FLG3_UNK_80000 = 0x80000,
FLG3_COPY_ROD_THROW_AFTER = 0x40000,
FLG3_UNK_4000 = 0x4000,
FLG3_UNK_400 = 0x400,
FLG3_UNK_200 = 0x200,
FLG3_UNK_100 = 0x100,
FLG3_UNK_80 = 0x80,
@@ -333,6 +339,7 @@ public:
enum daPy_ERFLG0 {
ERFLG0_UNK_40000000 = 0x40000000,
ERFLG0_UNK_20000000 = 0x20000000,
ERFLG0_UNK_10000000 = 0x10000000,
ERFLG0_UNK_8000000 = 0x8000000,
ERFLG0_UNK_2000000 = 0x2000000,
@@ -362,16 +369,19 @@ public:
ERFLG1_UNK_20000000 = 0x20000000,
ERFLG1_UNK_10000000 = 0x10000000,
ERFLG1_UNK_4000000 = 0x4000000,
ERFLG1_UNK_200000 = 0x200000,
ERFLG1_UNK_100000 = 0x100000,
ERFLG1_UNK_40000 = 0x40000,
ERFLG1_UNK_10000 = 0x10000,
ERFLG1_UNK_2000 = 0x2000,
ERFLG1_UNK_800 = 0x800,
ERFLG1_UNK_400 = 0x400,
ERFLG1_UNK_200 = 0x200,
ERFLG1_UNK_100 = 0x100,
ERFLG1_UNK_80 = 0x80,
ERFLG1_UNK_10 = 0x10,
ERFLG1_UNK_40 = 0x40,
ERFLG1_UNK_20 = 0x20,
ERFLG1_UNK_10 = 0x10,
ERFLG1_UNK_8 = 8,
ERFLG1_UNK_4 = 4,
ERFLG1_UNK_2 = 2,
@@ -386,9 +396,11 @@ public:
};
enum daPy_RFLG0 {
RFLG0_UNK_40000000 = 0x40000000,
RFLG0_UNK_8000000 = 0x8000000,
RFLG0_UNK_4000000 = 0x4000000,
RFLG0_UNK_20000 = 0x20000,
RFLG0_UNK_8000 = 0x8000,
RFLG0_UNK_4000 = 0x4000,
RFLG0_FRONT_ROLL_CRASH = 0x2000,
RFLG0_ENEMY_ATTN_LOCK = 0x1000,
@@ -407,6 +419,8 @@ public:
RFLG1_UNK_30 = 0x30,
RFLG1_UNK_2 = 0x2,
RFLG1_WOLF_ATTACK_REVERSE = 0x1,
RFLG1_UNK_C = 0xC,
};
enum {
@@ -742,6 +756,7 @@ public:
bool checkFrontRollCrash() const { return i_checkResetFlg0(RFLG0_FRONT_ROLL_CRASH); }
bool checkWolfAttackReverse() const { return checkResetFlg1(RFLG1_WOLF_ATTACK_REVERSE); }
bool checkFreezeDamage() const { return i_checkNoResetFlg1(FLG1_UNK_40000000); }
bool checkWolfTagLockJumpReady() const { return i_checkResetFlg0(RFLG0_UNK_20000); }
void onForceAutoJump() { i_onEndResetFlg0(ERFLG0_FORCE_AUTO_JUMP); }
void onNotAutoJump() { i_onEndResetFlg0(ERFLG0_NOT_AUTO_JUMP); }
@@ -749,6 +764,12 @@ public:
void onShieldBackBone() { i_onEndResetFlg1(ERFLG1_GANON_FINISH); }
void onFogFade() { i_onNoResetFlg2(FLG2_UNK_4000); }
void offCargoCarry() {
if (checkCargoCarry()) {
mSpecialMode = 0;
}
}
void offGoronSideMove() {
if (i_checkGoronSideMove()) {
mSpecialMode = 0;
@@ -762,38 +783,38 @@ public:
// some functions use these function as an inline
// is there a better way to handle this?
int i_checkNoResetFlg0(daPy_FLG0 pFlag) const { return mNoResetFlg0 & pFlag; }
int i_checkNoResetFlg1(daPy_FLG1 pFlag) const { return mNoResetFlg1 & pFlag; }
int i_checkNoResetFlg2(daPy_FLG2 pFlag) const { return mNoResetFlg2 & pFlag; }
int i_checkNoResetFlg3(daPy_FLG3 pFlag) const { return mNoResetFlg3 & pFlag; }
u32 i_checkNoResetFlg0(daPy_FLG0 i_flag) const { return mNoResetFlg0 & i_flag; }
u32 i_checkNoResetFlg1(daPy_FLG1 i_flag) const { return mNoResetFlg1 & i_flag; }
u32 i_checkNoResetFlg2(daPy_FLG2 i_flag) const { return mNoResetFlg2 & i_flag; }
u32 i_checkNoResetFlg3(daPy_FLG3 i_flag) const { return mNoResetFlg3 & i_flag; }
void i_onNoResetFlg0(int pFlg) { mNoResetFlg0 |= pFlg; }
void i_onNoResetFlg1(int pFlg) { mNoResetFlg1 |= pFlg; }
void i_onNoResetFlg2(int pFlg) { mNoResetFlg2 |= pFlg; }
void i_onNoResetFlg3(int pFlg) { mNoResetFlg3 |= pFlg; }
void i_onNoResetFlg0(int i_flag) { mNoResetFlg0 |= i_flag; }
void i_onNoResetFlg1(int i_flag) { mNoResetFlg1 |= i_flag; }
void i_onNoResetFlg2(int i_flag) { mNoResetFlg2 |= i_flag; }
void i_onNoResetFlg3(int i_flag) { mNoResetFlg3 |= i_flag; }
void i_offNoResetFlg0(int pFlg) { mNoResetFlg0 &= ~pFlg; }
void i_offNoResetFlg1(int pFlg) { mNoResetFlg1 &= ~pFlg; }
void i_offNoResetFlg2(int pFlg) { mNoResetFlg2 &= ~pFlg; }
void i_offNoResetFlg3(int pFlg) { mNoResetFlg3 &= ~pFlg; }
void i_offNoResetFlg0(int i_flag) { mNoResetFlg0 &= ~i_flag; }
void i_offNoResetFlg1(int i_flag) { mNoResetFlg1 &= ~i_flag; }
void i_offNoResetFlg2(int i_flag) { mNoResetFlg2 &= ~i_flag; }
void i_offNoResetFlg3(int i_flag) { mNoResetFlg3 &= ~i_flag; }
void i_offResetFlg0(int flag) { mResetFlg0 &= ~flag; }
void i_offResetFlg1(int flag) { mResetFlg1 &= ~flag; }
void i_onResetFlg0(int flag) { mResetFlg0 |= flag; }
void i_onResetFlg1(int flag) { mResetFlg1 |= flag; }
void i_onEndResetFlg0(int flag) { mEndResetFlg0 |= flag; }
void i_onEndResetFlg2(int flag) { mEndResetFlg2 |= flag; }
void i_offEndResetFlg2(daPy_ERFLG2 flag) { mEndResetFlg2 &= ~flag; }
void i_onEndResetFlg0(int i_flag) { mEndResetFlg0 |= i_flag; }
void i_onEndResetFlg2(int i_flag) { mEndResetFlg2 |= i_flag; }
void i_offEndResetFlg2(daPy_ERFLG2 i_flag) { mEndResetFlg2 &= ~i_flag; }
int i_checkResetFlg0(daPy_py_c::daPy_RFLG0 flag) const { return mResetFlg0 & flag; }
int checkResetFlg1(daPy_py_c::daPy_RFLG1 flag) const { return mResetFlg1 & flag; }
u32 i_checkResetFlg0(daPy_py_c::daPy_RFLG0 i_flag) const { return mResetFlg0 & i_flag; }
u32 checkResetFlg1(daPy_py_c::daPy_RFLG1 i_flag) const { return mResetFlg1 & i_flag; }
int i_checkEndResetFlg0(daPy_py_c::daPy_ERFLG0 flag) const { return mEndResetFlg0 & flag; }
int i_checkEndResetFlg1(daPy_py_c::daPy_ERFLG1 flag) const { return mEndResetFlg1 & flag; }
int i_checkEndResetFlg2(daPy_py_c::daPy_ERFLG2 flag) const { return mEndResetFlg2 & flag; }
u32 i_checkEndResetFlg0(daPy_py_c::daPy_ERFLG0 i_flag) const { return mEndResetFlg0 & i_flag; }
u32 i_checkEndResetFlg1(daPy_py_c::daPy_ERFLG1 i_flag) const { return mEndResetFlg1 & i_flag; }
u32 i_checkEndResetFlg2(daPy_py_c::daPy_ERFLG2 i_flag) const { return mEndResetFlg2 & i_flag; }
void i_onEndResetFlg1(daPy_ERFLG1 pFlg) { mEndResetFlg1 |= pFlg; }
void i_onEndResetFlg1(daPy_ERFLG1 i_flag) { mEndResetFlg1 |= i_flag; }
u32 i_checkWolf() const { return i_checkNoResetFlg1(FLG1_IS_WOLF); }
BOOL i_checkEquipHeavyBoots() const { return i_checkNoResetFlg0(FLG0_EQUIP_HVY_BOOTS); }
+1
View File
@@ -167,6 +167,7 @@ public:
// inline dupe
void i_ClrGroundHit() { m_flags &= ~GROUND_HIT; }
bool i_ChkGroundHit() const { return m_flags & GROUND_HIT; }
public:
/* 0x02C */ u32 m_flags;
+2
View File
@@ -322,6 +322,8 @@ public:
void OffTgShield() { mGObjTg.OffSPrm(0x1); }
void OnTgShieldFrontRange() { mGObjTg.OnSPrm(0x8); }
void OffTgShieldFrontRange() { mGObjTg.OffSPrm(0x8); }
void OnTgSmallShield() { mGObjTg.OnSPrm(0x10); }
void OffTgSmallShield() { mGObjTg.OffSPrm(0x10); }
bool ChkTgIronBallRebound() { return mGObjTg.ChkSPrm(0x100); }
s16* GetTgShieldFrontRangeYAngle() { return mGObjTg.GetShieldFrontRangeYAngle(); }
s16 GetTgShieldRange() { return mGObjTg.GetShieldRange(); }
+4
View File
@@ -1776,6 +1776,10 @@ inline BOOL dComIfGs_isStageMiddleBoss() {
return g_dComIfG_gameInfo.info.getMemory().getBit().isStageBossEnemy2();
}
inline void dComIfGs_setTransformStatus(u8 i_status) {
g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().setTransformStatus(i_status);
}
void dComIfGp_setSelectItem(int index);
s32 dComIfGp_offHeapLockFlag(int flag);
void dComIfGp_createSubExpHeap2D();
+1 -1
View File
@@ -207,7 +207,7 @@ public:
dAttCatch_c& getCatghTarget() { return mCatghTarget; }
u8 getCatchChgItem() { return mCatghTarget.getChangeItem(); }
BOOL chkFlag(u32 flag) { return mFlags & flag; }
BOOL chkFlag(u32 flag) { return (mFlags & flag) ? TRUE : FALSE; }
void setFlag(u32 flag) { mFlags |= flag; }
void clrFlag(u32 flag) { mFlags &= ~flag; }
int GetActionCount() { return mActionCount; }
+4 -1
View File
@@ -52,7 +52,8 @@ public:
struct dCamStyleData {
struct StyleData {
/* 0x0 */ u32 field_0x0;
/* 0x4 */ u8 field_0x4[0x78 - 0x4];
/* 0x4 */ u16 field_0x4;
/* 0x6 */ u8 field_0x6[0x78 - 0x6];
}; // Size: 0x78
/* 0x0 */ u8 field_0x0[4];
@@ -87,6 +88,8 @@ public:
/* 0x14 */ int mStyleID;
/* 0x18 */ u8 field_0x18[4];
u16 Algorythmn(s32 i_style) { return mCamStyleData[i_style].field_0x4; }
/* 8008858C */ virtual ~dCamParam_c();
};
+57 -26
View File
@@ -77,23 +77,39 @@ struct d2DBSplinePath {
/* 801828D4 */ virtual ~d2DBSplinePath();
};
struct dCamera_event_param {
/* 0x00 */ char name[16];
/* 0x10 */ int field_0x10;
/* 0x14 */ int value;
};
struct dCamera_event_data {
/* 0x000 */ u8 field_0x0;
/* 0x004 */ int field_0x4;
/* 0x008 */ u8 field_0x8[4];
/* 0x008 */ int field_0x8;
/* 0x00C */ int field_0xc;
/* 0x010 */ u8 field_0x10;
/* 0x014 */ int field_0x14;
/* 0x018 */ int field_0x18;
/* 0x01C */ int field_0x1c;
/* 0x020 */ int field_0x20;
/* 0x024 */ u8 field_0x24[0xEC - 0x24];
/* 0x024 */ int field_0x24;
/* 0x028 */ u8 field_0x28[0x2C - 0x28];
/* 0x02C */ dCamera_event_param mEventParams[8];
/* 0x0EC */ dStage_MapEvent_dt_c* field_0xec;
/* 0x0F0 */ d2DBSplinePath field_0xf0;
}; // Size: 0x124
struct dCamera_type_data {
/* 0x00 */ char name[24];
/* 0x18 */ s16 field_0x18[2][11];
}; // Size: 0x44
class camera_class;
class dCamera_c;
typedef bool (dCamera_c::*engine_fn)(s32);
class dCamera_c {
public:
class dCamInfo_c {
@@ -163,12 +179,18 @@ public:
/* 0x40 */ cSAngle field_0x40;
}; // Size: 0x44
/* 80088A7C */ void StartEventCamera(int, int, ...);
/* 80088BBC */ void EndEventCamera(int);
/* 80088A7C */ int StartEventCamera(int, int, ...);
/* 80088BBC */ int EndEventCamera(int);
/* 80088C24 */ int searchEventArgData(char*);
/* 8008908C */ void getEvIntData(int*, char*, int);
/* 80088CB0 */ void getEvIntData(int*, char*);
/* 80089154 */ void getEvFloatData(f32*, char*, f32);
/* 80088D90 */ void getEvFloatData(f32*, char*);
/* 80089154 */ void getEvFloatData(f32*, char*, f32);
/* 80088E58 */ void getEvFloatListData(f32**, char*);
/* 80088F1C */ void getEvXyzListData(cXyz**, char*);
/* 8008941C */ void getEvStringPntData(char*, char*);
/* 80088FE0 */ void getEvStringPntData(char*);
/* 8008922C */ void getEvXyzData(cXyz*, char*, cXyz);
/* 8008933C */ void getEvStringData(char*, char*, char*);
/* 800894C4 */ void getEvActor(char*);
/* 800895F4 */ void getEvActor(char*, char*);
@@ -180,10 +202,11 @@ public:
/* 8008BE2C */ void uniformTransEvCamera();
/* 8008BE50 */ void uniformBrakeEvCamera();
/* 8008BE74 */ void uniformAcceleEvCamera();
/* 8008BE98 */ void transEvCamera(int);
/* 8008E938 */ void watchActorEvCamera();
/* 8008FAE8 */ void restorePosEvCamera();
/* 80090174 */ void talktoEvCamera();
/* 80090230 */ void maptoolIdEvCamera();
/* 80090230 */ bool maptoolIdEvCamera();
/* 80090478 */ void styleEvCamera();
/* 80090514 */ void gameOverEvCamera();
/* 80091468 */ void tactEvCamera();
@@ -242,7 +265,7 @@ public:
/* 8016469C */ void onStyleChange(s32, s32);
/* 801647B0 */ void onRoomChange(s32);
/* 80164878 */ void getParamTargetActor(s32);
/* 80164944 */ void GetCameraTypeFromMapToolID(s32, s32);
/* 80164944 */ int GetCameraTypeFromMapToolID(s32, s32);
/* 80164B64 */ int GetCameraTypeFromCameraName(char const*);
/* 80164C10 */ void GetCameraTypeFromToolData(stage_camera2_data_class*);
/* 80164C64 */ void pushInfo(dCamera_c::dCamInfo_c*, s16);
@@ -270,31 +293,31 @@ public:
/* 80167E3C */ void tooNearEscape(cXyz*);
/* 80167EF4 */ void getWaterSurfaceHeight(cXyz*);
/* 80167FEC */ void checkGroundInfo();
/* 80168744 */ void chaseCamera(s32);
/* 8016C384 */ void lockonCamera(s32);
/* 80168744 */ bool chaseCamera(s32);
/* 8016C384 */ bool lockonCamera(s32);
/* 8016E448 */ void getMsgCmdSpeaker();
/* 8016E4A4 */ void getMsgCmdCut(s32);
/* 8016E4F4 */ void talktoCamera(s32);
/* 8016E4F4 */ bool talktoCamera(s32);
/* 80174E18 */ void talkBasePos(fopAc_ac_c*);
/* 80174E34 */ void talkEyePos(fopAc_ac_c*);
/* 80174EA4 */ bool CalcSubjectAngle(s16*, s16*);
/* 80174EAC */ void SaveZoomRatio();
/* 80174ED4 */ void subjectCamera(s32);
/* 80176074 */ void magneCamera(s32);
/* 801767F8 */ void colosseumCamera(s32);
/* 80174ED4 */ bool subjectCamera(s32);
/* 80176074 */ bool magneCamera(s32);
/* 801767F8 */ bool colosseumCamera(s32);
/* 80176DF0 */ bool test1Camera(s32);
/* 80176DF8 */ bool test2Camera(s32);
/* 80176E00 */ void towerCamera(s32);
/* 80178E50 */ void hookshotCamera(s32);
/* 80179590 */ void railCamera(s32);
/* 8017A2A0 */ void paraRailCamera(s32);
/* 8017ADC0 */ void rideCamera(s32);
/* 80176E00 */ bool towerCamera(s32);
/* 80178E50 */ bool hookshotCamera(s32);
/* 80179590 */ bool railCamera(s32);
/* 8017A2A0 */ bool paraRailCamera(s32);
/* 8017ADC0 */ bool rideCamera(s32);
/* 8017D974 */ bool manualCamera(s32);
/* 8017D97C */ void observeCamera(s32);
/* 8017DFAC */ void fixedFrameCamera(s32);
/* 8017E730 */ void fixedPositionCamera(s32);
/* 8017F25C */ void oneSideCamera(s32);
/* 8017F828 */ void eventCamera(s32);
/* 8017D97C */ bool observeCamera(s32);
/* 8017DFAC */ bool fixedFrameCamera(s32);
/* 8017E730 */ bool fixedPositionCamera(s32);
/* 8017F25C */ bool oneSideCamera(s32);
/* 8017F828 */ bool eventCamera(s32);
/* 8018050C */ void currentEvCamera();
/* 801806D4 */ bool letCamera(s32);
/* 801806DC */ void setEventRecoveryTrans(s16);
@@ -334,7 +357,15 @@ public:
f32 TrimHeight() { return mTrimHeight; }
int Type() { return mCurType; }
bool i_chkFlag(u32 i_flag) { return mEventFlags & i_flag; }
void i_setFlag(u32 i_flag) { mEventFlags |= i_flag; }
void i_clrFlag(u32 i_flag) { mEventFlags &= ~i_flag; }
#ifdef NONMATCHING
static engine_fn engine_tbl[];
#else
static u8 engine_tbl[240];
#endif
/* 0x000 */ camera_class* field_0x0;
/* 0x004 */ int mRoomNo;
@@ -396,7 +427,7 @@ public:
/* 0x160 */ int field_0x160;
/* 0x164 */ u8 field_0x164[0x170 - 0x164];
/* 0x170 */ int field_0x170;
/* 0x174 */ u32 field_0x174;
/* 0x174 */ u32 mCurCamTypeTimer;
/* 0x178 */ u32 mCameraID;
/* 0x17C */ u32 mPadID;
/* 0x180 */ fopAc_ac_c* mpPlayerActor;
@@ -469,8 +500,8 @@ public:
/* 0x678 */ int field_0x678;
/* 0x67C */ int mCamStyle;
/* 0x680 */ int field_0x684;
/* 0x684 */ u8* mCamTypeData;
/* 0x688 */ int field_0x688;
/* 0x684 */ dCamera_type_data* mCamTypeData;
/* 0x688 */ int mCamTypeNum;
/* 0x68C */ int mCurType;
/* 0x690 */ int mNextType;
/* 0x694 */ int mMapToolType;
+2 -2
View File
@@ -13,8 +13,8 @@ public:
/* 0x0 */ u8 field_0x0;
/* 0x1 */ s8 mType;
/* 0x2 */ s16 mJntNum;
/* 0x4 */ u32 field_0x4;
/* 0x8 */ void* field_0x8;
/* 0x4 */ f32 field_0x4;
/* 0x8 */ Vec* field_0x8;
};
class dJntCol_c {
+7 -1
View File
@@ -344,7 +344,9 @@ struct dStage_MapEvent_dt_c {
/* 0x07 */ u8 field_0x7;
/* 0x08 */ u8 field_0x8;
/* 0x09 */ u8 field_0x9;
/* 0x0A */ u8 field_0xA[0xD - 0xA];
/* 0x0A */ u8 field_0xA;
/* 0x0B */ u8 field_0xB;
/* 0x0C */ u8 field_0xC;
/* 0x0D */ char mName[7];
/* 0x14 */ u16 field_0x14;
/* 0x16 */ u8 field_0x16;
@@ -1071,6 +1073,10 @@ inline u32 dStage_stagInfo_ChkKeyDisp(stage_stag_info_class* pstag) {
return pstag->field_0x09 & 1;
}
inline u8 dStage_stagInfo_GetWolfDashType(stage_stag_info_class* pstag) {
return (pstag->field_0x09 >> 6) & 3;
}
inline u32 dStage_sclsInfo_getSceneLayer(stage_scls_info_class* p_info) {
return p_info->field_0xb & 0xF;
}
+4
View File
@@ -4,6 +4,8 @@
#include "d/a/d_a_itembase.h"
#include "global.h"
int dEv_noFinishSkipProc(void*, int);
struct dStage_MapEvent_dt_c;
class fopAc_ac_c;
@@ -162,6 +164,8 @@ public:
bool isChangeOK(void* param_0) { return mChangeOK == param_0; }
u8 getPreItemNo() { return mPreItemNo; }
u8 getGtItm() { return mGtItm; }
void i_startCheckSkipEdge(void* param_0) { setSkipProc(param_0, dEv_noFinishSkipProc, 0); }
bool i_checkSkipEdge() { return chkFlag2(8) != false; }
public:
/* 0x000 */ u8 field_0x0[4];
+9 -1
View File
@@ -151,7 +151,7 @@ public:
/* 80238528 */ void getSelectWord(int);
/* 80238544 */ static void setSelectWordFlag(u8);
/* 80238574 */ void getSelectWordFlag();
/* 80238588 */ bool isHowlHearingMode();
/* 80238588 */ static bool isHowlHearingMode();
/* 802385B4 */ static u8 getSelectBombBagID();
/* 802385E0 */ static s16 getSelectBombPrice();
/* 8023860C */ static void setEquipBombInfo();
@@ -364,6 +364,14 @@ inline void dMsgObject_setEquipBombInfo() {
dMsgObject_c::setEquipBombInfo();
}
inline bool dMsgObject_isHowlHearingMode() {
return dMsgObject_c::isHowlHearingMode();
}
inline void dMsgObject_onMsgSend() {
dMsgObject_getMsgObjectClass()->onMsgSend();
}
class dMsgObject_HowlHIO_c {
public:
/* 80232AEC */ dMsgObject_HowlHIO_c();
+2
View File
@@ -21,6 +21,8 @@ public:
/* 80051524 */ JPABaseEmitter* getCenterEmitter(int, int);
void clearCenterID() { clearID(field_0x8[0], &field_0x36); }
void changeWaterOffset(f32 i_offset) { mWaterOffset = i_offset; }
void changeRippleOffset(f32 i_offset) { mRippleOffset = i_offset; }
/* 0x00 */ u32 field_0x0[2];
/* 0x08 */ u32 field_0x8[2][4];
+1
View File
@@ -411,6 +411,7 @@ public:
void setLife(u16 i_life) { mLife = i_life; }
void setMaxLife(u8 i_maxLife) { mMaxLife = i_maxLife; }
void setSelectEquip(int i_equipId, u8 i_itemNo) { mSelectEquip[i_equipId] = i_itemNo; }
void setTransformStatus(u8 i_status) { mTransformStatus = i_status; }
private:
/* 0x00 */ u16 mMaxLife;
+9
View File
@@ -248,11 +248,20 @@ public:
bool checkWolfNoLock() const { return mFlags & 0x200; }
bool checkHeadLockFlg() const { return mFlags & 0x80; }
bool checkDownFlg() const { return mFlags & 0x1; }
bool checkDeadFlg() const { return mFlags & 0x8; }
cXyz& getDownPos() { return mDownPos; }
cXyz& getHeadLockPos() { return mHeadLockPos; }
void onCutDownHitFlg() { mFlags |= 2; }
void onWolfBiteDamage() { mFlags |= 0x40; }
void onWolfDownStartFlg() { mFlags |= 0x14; }
void onWolfDownPullEndFlg() { mFlags |= 0x20; }
void setThrowModeCatch() { mThrowMode |= 2; }
void setThrowModeDash() { mThrowMode |= 4; }
void setThrowModeThrowRight() { mThrowMode |= 0x10; }
void setThrowModeThrowLeft() { mThrowMode |= 8; }
/* 0x568 */ cXyz mDownPos;
/* 0x574 */ cXyz mHeadLockPos;
/* 0x580 */ J3DModel* mBallModel;
+4 -4
View File
@@ -2,10 +2,10 @@
#define F_OP_ACTOR_ITER_H_
typedef int (*fopAcIt_ExecutorFunc)(void*, void*);
typedef void* (*fopAcIt_JudgeFunc)(void*, void*);
typedef int (*fopAcIt_ExecutorFunc)(void* actor, void* data);
typedef void* (*fopAcIt_JudgeFunc)(void* actor, void* data);
int fopAcIt_Executor(fopAcIt_ExecutorFunc, void*);
void* fopAcIt_Judge(fopAcIt_JudgeFunc, void*);
int fopAcIt_Executor(fopAcIt_ExecutorFunc executeFunc, void* data);
void* fopAcIt_Judge(fopAcIt_JudgeFunc judgeFunc, void* data);
#endif
+8
View File
@@ -129,6 +129,14 @@ inline void mDoAud_changeSubBgmStatus(s32 param_0) {
Z2AudioMgr::getInterface()->changeSubBgmStatus(param_0);
}
inline void mDoAud_taktModeMute() {
Z2AudioMgr::getInterface()->taktModeMute();
}
inline void mDoAud_taktModeMuteOff() {
Z2AudioMgr::getInterface()->taktModeMuteOff();
}
inline void mDoAud_mEnvse_framework() {
g_mEnvSeMgr.framework();
}
+3
View File
@@ -402,6 +402,7 @@ public:
bool getOldFrameFlg() { return mOldFrameFlg; }
void onOldFrameFlg() { mOldFrameFlg = true; }
void offOldFrameFlg() { mOldFrameFlg = false; }
f32 getOldFrameRate() { return mOldFrameRate; }
J3DTransformInfo* getOldFrameTransInfo(int i) { return &mOldFrameTransInfo[i]; }
u16 getOldFrameStartJoint() { return mOldFrameStartJoint; }
@@ -506,6 +507,8 @@ public:
/* 800134F8 */ void setMaterial();
/* 800135D0 */ void draw();
cXyz* getPos(int i_idx) { return field_0x38[i_idx].field_0x0; }
private:
/* 0x08 */ GXTexObj field_0x8;
/* 0x28 */ GXColor field_0x28;
+1
View File
@@ -180,6 +180,7 @@ public:
f32 getMorfFrame() const { return mMorfFrame; }
f32 getBlendRate() { return field_0x594[1].getRatio(); }
u16 getAnmIdx(int i_idx) const { return mAnmIdx[i_idx]; }
int callHorse(const cXyz* param_0) { return (this->*mpCallHorseFn)(param_0); }
daHoZelda_c* i_getZeldaActor() { return (daHoZelda_c*)mZeldaActorKeep.getActor(); }
+102 -1
View File
@@ -1,6 +1,107 @@
#ifndef D_A_KAGO_H
#define D_A_KAGO_H
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
#include "d/d_path.h"
class daKago_c : public fopAc_ac_c {
public:
/* 80849660 */ void getBckName(int);
/* 808496F0 */ void setBck(int, u8, f32, f32);
/* 80849798 */ void checkBck(int);
/* 808497F8 */ void draw();
/* 80849980 */ void executeBalloonMenu();
/* 80849BA8 */ void checkGroundHeight(cXyz, f32*);
/* 8084A070 */ void checkRoofHeight(cXyz);
/* 8084A210 */ void checkMoveHeight();
/* 8084A2A8 */ void checkSizeBg();
/* 8084A6DC */ bool getBeforeGroundHeight(u8);
/* 8084A6E4 */ void demo_skip(int);
/* 8084AA64 */ void DemoSkipCallBack(void*, int);
/* 8084AA98 */ void setActionMode(int, int);
/* 8084AAAC */ void setMidnaTagPos();
/* 8084AB40 */ void setMidnaRideOn();
/* 8084AB8C */ void setPlayerRideOn();
/* 8084ABC8 */ void setRideOff();
/* 8084AC2C */ void searchNearPassPoint();
/* 8084AE78 */ void setSceneChange(int);
/* 8084AF40 */ void createBalloonScore();
/* 8084AFB0 */ void startBalloonScore();
/* 8084B024 */ void endBalloonScore();
/* 8084B088 */ void checkNextPath(cXyz);
/* 8084B108 */ void checkHeight();
/* 8084B134 */ void checkYaguraPos(cXyz);
/* 8084B1E0 */ void checkWallHitFall(int);
/* 8084B56C */ void checkAttackStart();
/* 8084B5DC */ void getValueY(f32);
/* 8084B6F4 */ void getValueX(f32);
/* 8084B718 */ void getValueAbsX(f32);
/* 8084B744 */ void flySpeedCalcLockOn();
/* 8084B96C */ void flySpeedCalc(s16, int);
/* 8084C078 */ void checkFlySceneChange();
/* 8084C178 */ void setFlyAway();
/* 8084C204 */ void setFlyAnime();
/* 8084C2CC */ void executeFly();
/* 8084C8FC */ void executeStagger();
/* 8084D108 */ void executeWait();
/* 8084D354 */ void calcAttackMove(int);
/* 8084D50C */ void executeAttack();
/* 8084DA18 */ void calcCircleCamera(int);
/* 8084DBFC */ void executeEvent();
/* 8084DD18 */ void initPerchDemo();
/* 8084E2D4 */ void executePerchDemo();
/* 8084F09C */ void PerchDemoAwayForward();
/* 8084FA58 */ void executePerch();
/* 8084FAA8 */ void executeEvent2();
/* 8084FB50 */ void initFirstDemo();
/* 80850384 */ void executeFirstDemo();
/* 808513E4 */ void executePerch2();
/* 80851434 */ void executeLandingLakeHairia();
/* 80851DEC */ void executeLandingBoartHouse();
/* 808525B0 */ void executeLanding();
/* 80852610 */ void moveDemoFly();
/* 80852D90 */ void setFlyEffect();
/* 80852F14 */ void setDashEffect();
/* 808530A4 */ void setDamageEffect();
/* 80853228 */ void setDashBlurEffect(int);
/* 80853460 */ void setWallHitEffect(cXyz, int);
/* 8085350C */ void setSibukiEffect();
/* 8085366C */ void setDashSibukiEffect();
/* 80853730 */ void setWaterFallEffect();
/* 8085392C */ void setFlySound();
/* 80853BCC */ void action();
/* 80853EF0 */ void mtx_set();
/* 80853FB0 */ void cc_set();
/* 80854058 */ void execute();
/* 80854190 */ void _delete();
/* 80854220 */ void ctrlJoint(J3DJoint*, J3DModel*);
/* 808542DC */ void JointCallBack(J3DJoint*, int);
/* 80854328 */ void CreateHeap();
/* 808544D8 */ void create();
void setEvent() {
field_0x6e1 = 0;
field_0x740 = 2;
field_0x744 = 0;
}
void setKagoPath(u8 i_pathNo) {
if (i_pathNo != 0xFF) {
field_0x76c = dPath_GetRoomPath(i_pathNo, fopAcM_GetRoomNo(this));
}
}
MtxP getLegR3Mtx() { return mLegR3Mtx; }
/* 0x568 */ u8 field_0x568[0x620 - 0x568];
/* 0x620 */ Mtx mLegR3Mtx;
/* 0x650 */ u8 field_0x650[0x6E1 - 0x650];
/* 0x6E1 */ u8 field_0x6e1;
/* 0x6E2 */ u8 field_0x6E2[0x740 - 0x6E2];
/* 0x740 */ int field_0x740;
/* 0x744 */ int field_0x744;
/* 0x748 */ u8 field_0x748[0x76C - 0x748];
/* 0x76C */ dPath* field_0x76c;
};
#endif /* D_A_KAGO_H */
+3 -1
View File
@@ -166,10 +166,12 @@ public:
inline static BOOL checkMidnaRealBody();
bool i_checkMidnaTired() {
static bool i_checkMidnaTired() {
return dComIfGs_isTransformLV(3) && !i_dComIfGs_isEventBit(0x1E08);
}
void resetRatBody() {}
static u8 const m_texDataTable[84];
static u8 const m_anmDataTable[636];
+67 -1
View File
@@ -1,6 +1,72 @@
#ifndef D_A_E_PM_H
#define D_A_E_PM_H
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
class daE_PM_c : public fopEn_enemy_c {
public:
/* 80741FB4 */ void DemoSkip(int);
/* 80742004 */ void DemoSkipCallBack(void*, int);
/* 80742038 */ void CreateHeap();
/* 80742448 */ void initCcCylinder();
/* 807424C0 */ void setCcCylinder();
/* 80742508 */ void ctrlJoint(J3DJoint*, J3DModel*);
/* 80742600 */ void Particle_Set(u16, cXyz);
/* 80742674 */ void SetAnm(int, int, f32, f32);
/* 80742810 */ void Yazirushi();
/* 807428A8 */ void SearchRndP();
/* 80742958 */ void SearchFarP();
/* 80742C94 */ void SearchNearP();
/* 80742E1C */ void SearchNextPos();
/* 80742FB4 */ void SetGakkiEffect();
/* 807430C4 */ void CameraSet();
/* 80743210 */ void SetStopingCam();
/* 80743294 */ void SetStopCam(cXyz, f32, f32, s16);
/* 807433E8 */ void SetMoveCam2(f32, f32);
/* 80743524 */ void SetMoveCam(f32, f32);
/* 80743600 */ void SetReleaseCam();
/* 807436A4 */ void Ap_StartAction();
/* 80743D8C */ void Ap_CreateAction();
/* 807444F0 */ void Ap_EscapeAction();
/* 80744790 */ void AppearAction();
/* 80744878 */ void DemoBeforeEscape();
/* 80744DA0 */ void DemoAfterEscape();
/* 807453F4 */ void DemoMoveAction();
/* 80745438 */ void WaitAction();
/* 807455F4 */ void GroundCheck();
/* 80745970 */ void EscapeAction();
/* 80745C44 */ void DeathAction();
/* 80745DBC */ void Action();
/* 80745ED0 */ void DemoBossStart2();
/* 80746624 */ void DemoBossStart();
/* 80747194 */ void BossEscapeAction();
/* 807476A0 */ void BossDamageAction();
/* 80747F38 */ void BossWaitAction();
/* 807480A4 */ void BossDeathAction();
/* 80748964 */ void BossAction();
/* 80748B18 */ void Execute();
/* 80748D74 */ void StartAction();
/* 8074954C */ void GakkiLoopAction(cXyz, f32);
/* 807499C0 */ void DemoCreateAction();
/* 80749C0C */ void CreateAction();
/* 80749D9C */ void CreateChk();
/* 80749ED0 */ void LampAction();
/* 8074A14C */ void DamageAction();
/* 8074A210 */ void At_Check();
/* 8074A3DC */ void ObjHit();
/* 8074A644 */ void EyeMove();
/* 8074A6CC */ void Draw();
/* 8074AAC0 */ void Delete();
/* 8074AB28 */ void setBaseMtx();
/* 8074ABA8 */ void setGakkiBaseMtx();
/* 8074AC10 */ void setLampBaseMtx();
/* 8074AEF8 */ void SkipChk();
/* 8074B4DC */ void Create();
void AppearSet() { mAppear = true; }
/* 0x5AC */ u8 field_0x5ac[0x619 - 0x5AC];
/* 0x619 */ bool mAppear;
};
#endif /* D_A_E_PM_H */
+39 -134
View File
@@ -1,141 +1,46 @@
#ifndef D_A_E_YC_H
#define D_A_E_YC_H
#include "dolphin/types.h"
// #include "f_op/f_op_actor.h"
// #include "Z2AudioLib/Z2Creature.h"
// #include "d/com/d_com_inf_game.h"
// #include "d/bg/d_bg_s_acch.h"
// #include "d/cc/d_cc_d.h"
#include "f_op/f_op_actor_mng.h"
// struct dCcD_GStts {
// /* 80083760 */ dCcD_GStts();
// /* 80083830 */ void Move();
// };
class e_yc_class : public fopEn_enemy_c {
public:
MtxP getLegR3Mtx() { return field_0x5B8->getModel()->i_getAnmMtx(28); }
// struct dCcD_Stts {
// /* 80083860 */ void Init(int, int, fopAc_ac_c*);
// };
// struct dCcD_SrcSph {};
// struct dCcD_Sph {
// /* 80084A34 */ void Set(dCcD_SrcSph const&);
// };
// struct cCcD_Obj {};
// struct dCcD_GObjInf {
// /* 80083A28 */ dCcD_GObjInf();
// /* 80084460 */ int ChkTgHit();
// /* 800844F8 */ cCcD_Obj* GetTgHitObj();
// };
// struct dBgS_PolyPassChk {
// /* 80078E68 */ void SetObj();
// };
// struct dBgS_ObjAcch {
// /* 807F274C */ ~dBgS_ObjAcch();
// };
// struct dBgS_AcchCir {
// /* 80075EAC */ dBgS_AcchCir();
// /* 80075F58 */ void SetWall(f32, f32);
// };
// struct dBgS {};
// struct dBgS_Acch {
// /* 80075F94 */ ~dBgS_Acch();
// /* 800760A0 */ dBgS_Acch();
// /* 80076248 */ void Set(cXyz*, cXyz*, fopAc_ac_c*, int, dBgS_AcchCir*, cXyz*, csXyz*, csXyz*);
// /* 80076AAC */ void CrrPos(dBgS&);
// };
// struct cM3dGSph {
// /* 8026F648 */ void SetC(cXyz const&);
// /* 8026F708 */ void SetR(f32);
// /* 807F26BC */ ~cM3dGSph();
// };
// struct cM3dGAab {
// /* 807F2704 */ ~cM3dGAab();
// };
// struct cCcS {
// /* 80264BA8 */ void Set(cCcD_Obj*);
// };
// struct request_of_phase_process_class {};
// struct mDoMtx_stack_c {
// /* 8000CE38 */ void scaleM(f32, f32, f32);
// static u8 now[48];
// };
// struct daE_YC_HIO_c {
// /* 807EFECC */ daE_YC_HIO_c();
// /* 807F27BC */ ~daE_YC_HIO_c();
// };
// struct dVibration_c {
// /* 8006FA24 */ void StartShock(int, int, cXyz);
// };
// struct dPa_levelEcallBack {};
// struct dPa_control_c {
// struct level_c {
// /* 8004B918 */ void getEmitter(u32);
// };
// /* 8004C218 */ void setHitMark(u16, fopAc_ac_c*, cXyz const*, csXyz const*, cXyz const*, u32);
// /* 8004D4CC */ void set(u32, u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*,
// cXyz const*, u8, dPa_levelEcallBack*, s8, _GXColor const*,
// _GXColor const*, cXyz const*, f32);
// /* 8004CA90 */ void set(u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, cXyz const*,
// u8, dPa_levelEcallBack*, s8, _GXColor const*, _GXColor const*,
// cXyz const*, f32);
// };
// class e_yc_class : public fopAc_ac_c {
// public:
// /* 0x568 */ u8 field_0x568[80];
// /* 0x5B8 */ int field_0x5B8;
// /* 0x5BC */ Z2CreatureEnemy mEnemy;
// /* 0x660 */ int mAnm;
// /* 0x664 */ int field_0x664;
// /* 0x668 */ u8 field_0x668[6];
// /* 0x66E */ s16 mCurrentAction;
// /* 0x670 */ s16 field_0x670;
// /* 0x672 */ u8 field_0x672[2];
// /* 0x674 */ f32 field_0x674;
// /* 0x678 */ f32 field_0x678;
// /* 0x67C */ f32 field_0x67C;
// /* 0x680 */ s16 field_0x680;
// /* 0x682 */ u8 field_0x682[2];
// /* 0x684 */ f32 field_0x684;
// /* 0x688 */ u32 field_0x688;
// /* 0x68C */ u8 field_0x68C[4];
// /* 0x690 */ f32 field_0x690;
// /* 0x694 */ u8 field_0x694[28];
// /* 0x69C */ f32 field_0x69C;
// /* 0x6A0 */ s16 field_0x6A0;
// /* 0x6A2 */ s16 field_0x6A2;
// /* 0x6A4 */ s16 field_0x6A4;
// /* 0x6A6 */ s16 field_0x6A6;
// /* 0x6A8 */ s16 field_0x6A8;
// /* 0x6AA */ s16 field_0x6AA;
// /* 0x6AC */ void* field_0x6AC;
// /* 0x6B0 */ u8 field_0x6B0[72];
// /* 0x6F4 */ dBgS_Acch mBgS_Acch;
// /* 0x8CC */ u8 field_0x8CC[28];
// /* 0x8E8 */ dCcD_GStts mCcD_GStts;
// /* 0x908 */ dCcD_GObjInf mCcD_GObjInf;
// /* 0xA0C */ u8 field_0xA0C[364];
// /* 0xB78 */ cCcD_Obj* mpTgHitObj;
// };
/* 0x5AC */ u8 field_0x5ac[0x5B8 - 0x5AC];
/* 0x5B8 */ mDoExt_McaMorfSO* field_0x5B8;
/* 0x5BC */ Z2CreatureEnemy mEnemy;
/* 0x660 */ int mAnm;
/* 0x664 */ int field_0x664;
/* 0x668 */ u8 field_0x668[6];
/* 0x66E */ s16 mCurrentAction;
/* 0x670 */ s16 field_0x670;
/* 0x672 */ u8 field_0x672[2];
/* 0x674 */ f32 field_0x674;
/* 0x678 */ f32 field_0x678;
/* 0x67C */ f32 field_0x67C;
/* 0x680 */ s16 field_0x680;
/* 0x682 */ u8 field_0x682[2];
/* 0x684 */ f32 field_0x684;
/* 0x688 */ u32 field_0x688;
/* 0x68C */ u8 field_0x68C[4];
/* 0x690 */ f32 field_0x690;
/* 0x694 */ u8 field_0x694[28];
/* 0x69C */ f32 field_0x69C;
/* 0x6A0 */ s16 field_0x6A0;
/* 0x6A2 */ s16 field_0x6A2;
/* 0x6A4 */ s16 field_0x6A4;
/* 0x6A6 */ s16 field_0x6A6;
/* 0x6A8 */ s16 field_0x6A8;
/* 0x6AA */ s16 field_0x6AA;
/* 0x6AC */ void* field_0x6AC;
/* 0x6B0 */ u8 field_0x6B0[72];
/* 0x6F4 */ dBgS_Acch mBgS_Acch;
/* 0x8CC */ u8 field_0x8CC[28];
/* 0x8E8 */ dCcD_GStts mCcD_GStts;
/* 0x908 */ dCcD_GObjInf mCcD_GObjInf;
/* 0xA0C */ u8 field_0xA0C[364];
/* 0xB78 */ cCcD_Obj* mpTgHitObj;
};
#endif /* D_A_E_YC_H */
@@ -1,6 +1,27 @@
#ifndef D_A_KYTAG03_H
#define D_A_KYTAG03_H
#include "dolphin/types.h"
#include "d/d_path.h"
#include "f_op/f_op_actor_mng.h"
class kytag03_class : public fopAc_ac_c {
public:
/* 0x568 */ dPath* mpPath;
/* 0x56C */ JPABaseEmitter* mpEmitter;
/* 0x570 */ f32 field_0x570;
/* 0x574 */ f32 field_0x574;
/* 0x578 */ f32 field_0x578;
/* 0x57C */ f32 field_0x57c;
/* 0x580 */ int field_0x580;
/* 0x584 */ u8 field_0x584;
/* 0x585 */ u8 field_0x585;
/* 0x586 */ u8 field_0x586;
/* 0x587 */ u8 field_0x587;
/* 0x588 */ u8 field_0x588;
/* 0x589 */ u8 field_0x589;
/* 0x58A */ u16 field_0x58a;
/* 0x58C */ u8 field_0x58C[0x58E - 0x58C];
/* 0x58E */ u8 field_0x58e;
};
#endif /* D_A_KYTAG03_H */
@@ -1,6 +1,66 @@
#ifndef D_A_NPC_GWOLF_H
#define D_A_NPC_GWOLF_H
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
#include "d/a/d_a_npc.h"
class daNpc_GWolf_c : public daNpcF_c {
public:
/* 809F30AC */ daNpc_GWolf_c();
/* 809F34C0 */ void create();
/* 809F37C0 */ void CreateHeap();
/* 809F3BD8 */ void Delete();
/* 809F3C0C */ void Execute();
/* 809F3C2C */ void Draw();
/* 809F3CBC */ void draw(int, int, f32, GXColorS10*, int);
/* 809F3FB8 */ void ctrlJoint(J3DJoint*, J3DModel*);
/* 809F41EC */ void createHeapCallBack(fopAc_ac_c*);
/* 809F420C */ void ctrlJointCallBack(J3DJoint*, int);
/* 809F4E38 */ void getTypeFromParam();
/* 809F4E84 */ void getModeFromParam();
/* 809F4F00 */ void isDelete();
/* 809F4FF4 */ void reset();
/* 809F520C */ void playMotion();
/* 809F55D0 */ void chkAction(int (daNpc_GWolf_c::*)(void*));
/* 809F55FC */ void setAction(int (daNpc_GWolf_c::*)(void*));
/* 809F56A4 */ void selectAction();
/* 809F5770 */ void doNormalAction(int);
/* 809F5884 */ void doEvent();
/* 809F5B60 */ void setLookMode(int);
/* 809F5B84 */ void lookat();
/* 809F5E0C */ void ECut_attackWarp(int);
/* 809F6548 */ void ECut_attackWarpHorse(int);
/* 809F6BFC */ void ECut_howlingSessionA(int);
/* 809F70A8 */ void meetGWolfSkip();
/* 809F70EC */ void ECut_meetGWolf(int);
/* 809F71E0 */ void wait(void*);
/* 809F75C0 */ void waitHowling(void*);
/* 809F775C */ void waitBrave(void*);
/* 809F77E4 */ void talk(void*);
/* 809F797C */ void test(void*);
/* 809F7A30 */ void getGroundSlope(dBgS_ObjAcch&, s16);
/* 809F32C0 */ ~daNpc_GWolf_c();
/* 809F4258 */ void setParam();
/* 809F4390 */ BOOL main();
/* 809F4558 */ BOOL ctrlBtk();
/* 809F4638 */ void adjustShapeAngle();
/* 809F4698 */ void setAttnPos();
/* 809F4BB0 */ bool setExpressionAnm(int, bool);
/* 809F4BB8 */ void setExpression(int, f32);
/* 809F4BBC */ void setMotionAnm(int, f32);
/* 809F4DE8 */ void setMotion(int, f32, int);
/* 809F4E2C */ BOOL drawDbgInfo();
/* 809F4E34 */ void drawOtherMdls();
void setHowlingEndFlag() { field_0xe1c = 2; }
void setHowlingFlag() { field_0xe1c = 1; }
static void* mEvtCutNameList[5];
static u8 mEvtCutList[60];
/* 0xB48 */ u8 field_0xb48[0xE1C - 0xB48];
/* 0xE1C */ u8 field_0xe1c;
};
#endif /* D_A_NPC_GWOLF_H */
+16 -5
View File
@@ -1,14 +1,16 @@
#ifndef D_A_NPC_TK_H
#define D_A_NPC_TK_H
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
#include "d/d_path.h"
struct cXyz;
class fopAc_ac_c;
class J3DJoint;
class J3DModel;
struct daNPC_TK_c {
class daNPC_TK_c : public fopAc_ac_c {
public:
/* 80B01498 */ void setBck(int, u8, f32, f32);
/* 80B0153C */ void checkBck(int);
/* 80B01598 */ void draw();
@@ -59,10 +61,19 @@ struct daNPC_TK_c {
/* 80B0BBC8 */ void CreateHeap();
/* 80B0BD24 */ void create();
void setBump() { mBump |= 4; }
void setBump() { mFlags |= 4; }
void setEventWolf() { mFlags |= 0x80; }
u8 field_0x0[0x6BE];
u16 mBump;
void setHawkPath(u8 i_pathNo) {
if (i_pathNo != 0xFF) {
field_0x6c8 = dPath_GetRoomPath(i_pathNo, fopAcM_GetRoomNo(this));
}
}
/* 0x568 */ u8 field_0x568[0x6BE - 0x568];
/* 0x6BE */ u16 mFlags;
/* 0x6C0 */ u8 field_0x6c0[0x6C8 - 0x6C0];
/* 0x6C8 */ dPath* field_0x6c8;
};
#endif /* D_A_NPC_TK_H */
@@ -1,6 +1,53 @@
#ifndef D_A_OBJ_CROPE_H
#define D_A_OBJ_CROPE_H
#include "dolphin/types.h"
#include "d/cc/d_cc_d.h"
#include "f_op/f_op_actor_mng.h"
class daObjCrope_c : public fopAc_ac_c {
public:
/* 80BCCCD8 */ void createHeap();
/* 80BCCD64 */ void create();
/* 80BCD524 */ ~daObjCrope_c();
/* 80BCD6C4 */ void setNormalRopePos();
/* 80BCD9EC */ void setRideRopePos();
/* 80BCE4FC */ void execute();
/* 80BCE9BC */ void draw();
cXyz* getRopeStartPos() { return mLineMat.getPos(0); }
cXyz* getRopeEndPos() { return &mLineMat.getPos(0)[99]; }
cXyz* getRopeVec() { return &mRopeVec; }
cXyz& getPlayerNearPos() { return mPlayerNearPos; }
void onOutFlg() { mOutFlg = true; }
void setFrontJoint(int i_jointNo) { mFrontJoint = i_jointNo; }
void setBackJoint(int i_jointNo) { mBackJoint = i_jointNo; }
f32 getStartRate(const cXyz* param_0) {
return field_0x714 ? field_0x724 * (param_0->x - getRopeStartPos()->x) :
field_0x724 * (param_0->z - getRopeStartPos()->z);
}
void rideKeep() {
setFrontJoint(-2);
setBackJoint(-1);
}
/* 0x0568 */ request_of_phase_process_class mPhase;
/* 0x0570 */ dCcD_Stts mCcStts;
/* 0x05AC */ dCcD_Sph mCollider;
/* 0x06E4 */ Mtx field_0x6e4;
/* 0x0714 */ u8 field_0x714;
/* 0x0715 */ u8 mOutFlg;
/* 0x0716 */ u8 mCoCancelTimer;
/* 0x0718 */ int mFrontJoint;
/* 0x071C */ int mBackJoint;
/* 0x0720 */ f32 field_0x720;
/* 0x0724 */ f32 field_0x724;
/* 0x0728 */ cXyz mRopeVec;
/* 0x0734 */ cXyz mPlayerNearPos;
/* 0x0740 */ cXyz field_0x740[98];
/* 0x0BD8 */ cXyz field_0xbd8[98];
/* 0x1070 */ mDoExt_3DlineMat1_c mLineMat;
};
#endif /* D_A_OBJ_CROPE_H */
@@ -1,6 +1,114 @@
#ifndef D_A_OBJ_SEKIZOA_H
#define D_A_OBJ_SEKIZOA_H
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
#include "d/a/d_a_npc.h"
class daObj_Sekizoa_c : public daNpcT_c {
public:
/* 80CCE34C */ ~daObj_Sekizoa_c();
/* 80CCE570 */ void create();
/* 80CCE8B0 */ void CreateHeap();
/* 80CCEC54 */ void Delete();
/* 80CCEC88 */ void Execute();
/* 80CCECA8 */ void Draw();
/* 80CCED74 */ void createHeapCallBack(fopAc_ac_c*);
/* 80CCED94 */ void srchSekizoa(void*, void*);
/* 80CCEE30 */ void getSekizoaP(int);
/* 80CCEFA4 */ void getKMsgTagP();
/* 80CCF03C */ void isDelete();
/* 80CCF138 */ void reset();
/* 80CCF708 */ void srchActors();
/* 80CD04FC */ void setYariAnm(int, int, f32);
/* 80CD0A84 */ void selectAction();
/* 80CD0B08 */ void chkAction(int (daObj_Sekizoa_c::*)(void*));
/* 80CD0B34 */ void setAction(int (daObj_Sekizoa_c::*)(void*));
/* 80CD0BDC */ void checkMoveDirection();
/* 80CD0DE8 */ void getWaitMotionNo();
/* 80CD0E30 */ void getGameMotionNo();
/* 80CD0E78 */ void getNoJumpMotionNo();
/* 80CD0EAC */ void getHitMotionNo();
/* 80CD0EE0 */ void getStepMotionNo();
/* 80CD0F14 */ void jump();
/* 80CD14D8 */ void landing();
/* 80CD1688 */ void cutStart(int);
/* 80CD2708 */ void cutTurn(int);
/* 80CD2908 */ void cutJump(int);
/* 80CD2B64 */ void cutGoal(int);
/* 80CD376C */ void cutExit(int);
/* 80CD38F0 */ void cutFree(int);
/* 80CD3BD8 */ void cutExtinction(int);
/* 80CD3F08 */ void wait(void*);
/* 80CD425C */ void puzzle(void*);
/* 80CD45B0 */ void talk(void*);
/* 80CD5A40 */ daObj_Sekizoa_c(daNpcT_faceMotionAnmData_c const*, daNpcT_motionAnmData_c const*,
daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int,
daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int,
daNpcT_evtData_c const*, char**);
/* 80CD5B84 */ void chkGoal();
/* 801312C8 */ void setWolfHowling();
/* 80CD5B7C */ s32 getBackboneJointNo();
/* 80CD5B74 */ s32 getHeadJointNo();
/* 80CCF358 */ void afterJntAnm(int);
/* 80CCF3E4 */ void setParam();
/* 80CCF6BC */ bool checkChangeEvt();
/* 80CCF9A8 */ bool evtTalk();
/* 80CCFAA8 */ bool evtCutProc();
/* 80CCF704 */ void setAfterTalkMotion();
/* 80CCFBA0 */ void action();
/* 80CCFD08 */ void beforeMove();
/* 80CCFD80 */ void setAttnPos();
/* 80CD009C */ void setCollision();
/* 80CD03C0 */ int drawDbgInfo();
/* 80CD03C8 */ void drawOtherMdl();
/* 80CD05D0 */ void drawGhost();
/* 80CD06BC */ bool afterSetMotionAnm(int, int, f32, int);
u8 getType() {
int prm = fopAcM_GetParam(this) >> 0x1C;
u8 type;
switch (mSubtype) {
case 0:
switch (prm) {
case 1:
type = 2;
break;
case 2:
type = 4;
break;
case 3:
type = 6;
break;
default:
type = 0;
break;
}
break;
case 1:
switch (prm) {
case 1:
type = 3;
break;
case 2:
type = 5;
break;
default:
type = 1;
break;
}
break;
default:
type = 0;
break;
}
return type;
}
static void* mCutNameList[9];
static u8 mCutList[108];
};
#endif /* D_A_OBJ_SEKIZOA_H */
@@ -1,6 +1,23 @@
#ifndef D_A_OBJ_SMW_STONE_H
#define D_A_OBJ_SMW_STONE_H
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
class daSmWStone_c : public fopAc_ac_c {
public:
/* 80CDE538 */ daSmWStone_c();
/* 80CDE588 */ ~daSmWStone_c();
/* 80CDE614 */ void create();
/* 80CDE8D8 */ void execute();
/* 80CDE92C */ void draw();
/* 80CDEA2C */ void Delete();
/* 80CDEAA4 */ void exeModeHowl();
/* 80CDEBA0 */ void setModelMtx();
/* 80CDEC04 */ void createHeap();
/* 80CDED30 */ void init();
/* 80CDED9C */ void chkWlfInRange();
int getTuneId() { return 2; }
};
#endif /* D_A_OBJ_SMW_STONE_H */
@@ -1,6 +1,28 @@
#ifndef D_A_OBJ_WIND_STONE_H
#define D_A_OBJ_WIND_STONE_H
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
class daWindStone_c : public fopAc_ac_c {
public:
/* 80D37A18 */ daWindStone_c();
/* 80D37A68 */ ~daWindStone_c();
/* 80D37AF4 */ void createHeap();
/* 80D37C20 */ void create();
/* 80D37F0C */ void execute();
/* 80D37F6C */ void draw();
/* 80D3806C */ void Delete();
/* 80D3811C */ void setModelMtx();
/* 80D38180 */ void init();
/* 80D381EC */ void chkWlfInRange();
/* 80D38278 */ void chkEveOccur();
/* 80D382C4 */ void exeModeHowl();
/* 80D3835C */ void exeModeMapDisp();
/* 80D383FC */ void chkMapDispMode();
/* 80D384C4 */ void getGoldWolfIdx();
s8 getTuneId() { return fopAcM_GetParamBit(this, 4, 4); }
int getNextSceneId() { return fopAcM_GetParamBit(this, 0, 4); }
};
#endif /* D_A_OBJ_WIND_STONE_H */
@@ -33,7 +33,7 @@ public:
static u8 const M_attr[64];
static u8 ActionTable[72];
u8 getType() { return mSubtype & 0x7F; }
int getType() { return mSubtype & 0x7F; }
u8 getPathID() { return fopAcM_GetParam(this); }
bool isPlayerCorrect() { return (s8)(u8)(fopAcM_GetParam(this) >> 8) > 0; }
@@ -1,6 +1,6 @@
#ifndef D_A_TAG_ATTACK_ITEM_H
#define D_A_TAG_ATTACK_ITEM_H
#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
#endif /* D_A_TAG_ATTACK_ITEM_H */
@@ -6,8 +6,10 @@
class daTag_Howl_c : public fopAc_ac_c {
public:
u8 field_0x568;
u8 field_0x569;
/* 0x568 */ s8 mCurveID;
/* 0x569 */ u8 field_0x569;
s8 getCurveID() { return mCurveID; }
/* 8048D958 */ int create();
/* 8048D9BC */ int destroy();
@@ -17,7 +19,6 @@ public:
/* 8048DC1C */ int getParam();
/* 8048DC68 */ u8 getSwitchBit();
/* 8048DCFC */ virtual ~daTag_Howl_c() {}
}; // Size: 0x570
#endif /* D_A_TAG_HOWL_H */
@@ -15,7 +15,7 @@ public:
/* 80D63F74 */ virtual ~daTagWrHowl_c();
u8 getTuneId() { return fopAcM_GetParamBit(this, 4, 4); }
s8 getTuneId() { return fopAcM_GetParamBit(this, 4, 4); }
/* 0x56C */ f32 field_0x56c;
/* 0x570 */ f32 field_0x570;
+3 -2
View File
@@ -244,7 +244,7 @@ void Z2WolfHowlMgr::calcPitchMod(f32 param_0, f32 param_1) {
}
/* 802CAED4-802CB100 2C5814 022C+00 0/0 1/1 0/0 .text startWolfHowlSound__13Z2WolfHowlMgrFffbf */
void Z2WolfHowlMgr::startWolfHowlSound(f32 param_0, f32 param_1, bool param_2, f32 param_3) {
s8 Z2WolfHowlMgr::startWolfHowlSound(f32 param_0, f32 param_1, bool param_2, f32 param_3) {
if (mCorrectCurveID > 1) {
Z2GetSeqMgr()->i_setWindStoneVol(0.0f, 0);
}
@@ -291,7 +291,8 @@ void Z2WolfHowlMgr::startWolfHowlSound(f32 param_0, f32 param_1, bool param_2, f
resetState();
}
}
checkLine();
return checkLine();
}
/* 802CB100-802CB320 2C5A40 0220+00 0/0 1/1 0/0 .text
+2 -1
View File
@@ -3,7 +3,8 @@
// Translation Unit: d_a_kago
//
#include "rel/d/a/d_a_kago/d_a_kago.h"
// #include "rel/d/a/d_a_kago/d_a_kago.h"
#include "dolphin/types.h"
#include "dol2asm.h"
//
+2 -1
View File
@@ -3,7 +3,8 @@
// Translation Unit: d_a_e_pm
//
#include "rel/d/a/e/d_a_e_pm/d_a_e_pm.h"
// #include "rel/d/a/e/d_a_e_pm/d_a_e_pm.h"
#include "dolphin/types.h"
#include "d/cc/d_cc_d.h"
#include "dol2asm.h"
+2 -1
View File
@@ -3,7 +3,8 @@
// Translation Unit: d_a_e_yc
//
#include "rel/d/a/e/d_a_e_yc/d_a_e_yc.h"
// #include "rel/d/a/e/d_a_e_yc/d_a_e_yc.h"
#include "dolphin/types.h"
#include "d/cc/d_cc_d.h"
#include "dol2asm.h"
+2 -1
View File
@@ -3,7 +3,8 @@
// Translation Unit: d_a_kytag03
//
#include "rel/d/a/kytag/d_a_kytag03/d_a_kytag03.h"
// #include "rel/d/a/kytag/d_a_kytag03/d_a_kytag03.h"
#include "dolphin/types.h"
#include "dol2asm.h"
//
+2 -1
View File
@@ -3,7 +3,8 @@
// Translation Unit: d_a_npc_gwolf
//
#include "rel/d/a/npc/d_a_npc_gwolf/d_a_npc_gwolf.h"
// #include "rel/d/a/npc/d_a_npc_gwolf/d_a_npc_gwolf.h"
#include "dolphin/types.h"
#include "dol2asm.h"
//
+59 -1
View File
@@ -3,7 +3,8 @@
// Translation Unit: d_a_npc_tk
//
#include "rel/d/a/npc/d_a_npc_tk/d_a_npc_tk.h"
// #include "rel/d/a/npc/d_a_npc_tk/d_a_npc_tk.h"
#include "dolphin/types.h"
#include "d/cc/d_cc_d.h"
#include "dol2asm.h"
@@ -236,6 +237,63 @@ struct J3DFrameCtrl {
/* 8032842C */ void checkPass(f32);
};
struct daNPC_TK_c {
/* 80B01498 */ void setBck(int, u8, f32, f32);
/* 80B0153C */ void checkBck(int);
/* 80B01598 */ void draw();
/* 80B016D4 */ void checkBeforeBg();
/* 80B01878 */ void setActionMode(int);
/* 80B018F4 */ void setAddCalcSpeedXZ(cXyz&, cXyz const&, f32, f32, f32);
/* 80B01C84 */ void chaseTargetPos(cXyz, f32, f32, s16);
/* 80B01D84 */ void getMasterPointer();
/* 80B01DA0 */ void setMasterShoulder(cXyz*);
/* 80B01E48 */ void setAwayAction(int);
/* 80B01EF4 */ void setFlySE();
/* 80B02254 */ void executeFly();
/* 80B026F8 */ void initPerchDemo(int);
/* 80B02B5C */ void executePerchDemo(int);
/* 80B03658 */ void executePerch();
/* 80B03754 */ void executeHandOn();
/* 80B039A8 */ void checkWaterSurface(f32);
/* 80B03A70 */ void executeAttack();
/* 80B048BC */ void executeAway();
/* 80B04BF8 */ void setCarryActorMtx();
/* 80B04F64 */ void getTakePosY();
/* 80B04FA8 */ void getTakeOffPosY();
/* 80B04FEC */ void executeBack();
/* 80B05BD0 */ void getHanjoHandPos();
/* 80B05C7C */ void executeStayHanjo();
/* 80B05EC8 */ void executeAttackLink();
/* 80B0686C */ void executeBackHanjo();
/* 80B07114 */ void checkAttackDemo();
/* 80B072CC */ void executeAttackDemo();
/* 80B07610 */ void executeBackHanjoDemo();
/* 80B08168 */ void executeWolfEvent();
/* 80B08208 */ void calcWolfDemoCam();
/* 80B082A4 */ void calcWolfDemoCam2();
/* 80B0839C */ void executeWolfPerch();
/* 80B09A3C */ void executeResistanceDemo();
/* 80B0A444 */ void setHawkSideCamera(cXyz);
/* 80B0A500 */ void setHawkCamera(fopAc_ac_c*);
/* 80B0A568 */ void endHawkCamera();
/* 80B0A614 */ void calcDemoCamera();
/* 80B0B004 */ void checkActionSet();
/* 80B0B284 */ void action();
/* 80B0B5CC */ void mtx_set();
/* 80B0B6DC */ void cc_set();
/* 80B0B7CC */ void execute();
/* 80B0B918 */ void _delete();
/* 80B0B9AC */ void ctrlJoint(J3DJoint*, J3DModel*);
/* 80B0BB7C */ void JointCallBack(J3DJoint*, int);
/* 80B0BBC8 */ void CreateHeap();
/* 80B0BD24 */ void create();
void setBump() { mBump |= 4; }
u8 field_0x0[0x6BE];
u16 mBump;
};
//
// Forward References:
//
+4 -4
View File
@@ -764,8 +764,8 @@ static dJntColData_c kibako_jc_data = {
1,
1,
0,
0x42340000,
&kibako_jv_offset
45.0f,
(Vec*)kibako_jv_offset
};
/* 8047A71C-8047A728 -00001 000C+00 1/1 0/0 0/0 .data taru_jc_data */
@@ -773,8 +773,8 @@ static dJntColData_c taru_jc_data = {
1,
1,
0,
0x42340000,
&taru_jv_offset
45.0f,
(Vec*)taru_jv_offset
};
/* 8047A728-8047A734 -00001 000C+00 0/1 0/0 0/0 .data @5956 */
+2 -1
View File
@@ -3,7 +3,8 @@
// Translation Unit: d_a_obj_crope
//
#include "rel/d/a/obj/d_a_obj_crope/d_a_obj_crope.h"
// #include "rel/d/a/obj/d_a_obj_crope/d_a_obj_crope.h"
#include "dolphin/types.h"
#include "d/cc/d_cc_d.h"
#include "dol2asm.h"
@@ -3,7 +3,8 @@
// Translation Unit: d_a_obj_sekizoa
//
#include "rel/d/a/obj/d_a_obj_sekizoa/d_a_obj_sekizoa.h"
// #include "rel/d/a/obj/d_a_obj_sekizoa/d_a_obj_sekizoa.h"
#include "dolphin/types.h"
#include "dol2asm.h"
//
@@ -3,7 +3,8 @@
// Translation Unit: d_a_obj_smw_stone
//
#include "rel/d/a/obj/d_a_obj_smw_stone/d_a_obj_smw_stone.h"
// #include "rel/d/a/obj/d_a_obj_smw_stone/d_a_obj_smw_stone.h"
#include "dolphin/types.h"
#include "dol2asm.h"
//
@@ -3,7 +3,8 @@
// Translation Unit: d_a_obj_wind_stone
//
#include "rel/d/a/obj/d_a_obj_wind_stone/d_a_obj_wind_stone.h"
// #include "rel/d/a/obj/d_a_obj_wind_stone/d_a_obj_wind_stone.h"
#include "dolphin/types.h"
#include "dol2asm.h"
//
@@ -4,52 +4,42 @@
//
#include "rel/d/a/tag/d_a_tag_attack_item/d_a_tag_attack_item.h"
#include "SSystem/SComponent/c_math.h"
#include "d/a/d_a_player.h"
#include "d/cc/d_cc_d.h"
#include "d/com/d_com_inf_game.h"
#include "d/event/d_event_lib.h"
#include "dol2asm.h"
//
// Types:
//
struct csXyz {
/* 802673F4 */ csXyz(s16, s16, s16);
};
struct mDoMtx_stack_c {
/* 8000CD64 */ void transS(cXyz const&);
/* 8000CF44 */ void ZXYrotM(csXyz const&);
};
struct fopAc_ac_c {
/* 80018B64 */ fopAc_ac_c();
/* 80018C8C */ ~fopAc_ac_c();
};
struct daTagAtkItem_c {
// need to figure out how to use dEvLib_callback_c properly
class daTagAtkItem_c : public fopAc_ac_c /* , public dEvLib_callback_c */ {
public:
/* 805A2958 */ void setBaseMtx();
/* 805A2990 */ void Create();
/* 805A2A34 */ void create();
/* 805A2C48 */ void execute();
/* 805A2990 */ int Create();
/* 805A2A34 */ int create();
/* 805A2C48 */ int execute();
/* 805A2CA8 */ void action();
/* 805A2D10 */ void eventStart();
/* 805A2D34 */ void eventEnd();
/* 805A2D58 */ void checkHit();
/* 805A2D58 */ BOOL checkHit();
/* 805A2F54 */ void createItem();
/* 805A3038 */ bool _delete();
/* 805A3038 */ int _delete();
/* 805A3118 */ ~daTagAtkItem_c();
};
/* 805A2D10 */ BOOL eventStart();
/* 805A2D34 */ BOOL eventEnd();
struct dEvLib_callback_c {
/* 8004886C */ void eventUpdate();
/* 80048940 */ void orderEvent(int, int, int);
/* 805A30A0 */ ~dEvLib_callback_c();
/* 805A30E8 */ bool eventRun();
/* 805A30F0 */ bool eventStart();
/* 805A30F8 */ bool eventEnd();
};
u8 getEvId() { return fopAcM_GetParamBit(this, 0x18, 8); }
u8 getNum() { return fopAcM_GetParamBit(this, 8, 8); }
u8 getItemBit() { return fopAcM_GetParamBit(this, 0x10, 8); }
u8 getItemNo() { return fopAcM_GetParamBit(this, 0, 8); }
struct cCcS {
/* 80264BA8 */ void Set(cCcD_Obj*);
/* 0x568 */ u8 temp[0x57C - 0x568]; // remove when dEvLib_callback_c setup
/* 0x57C */ u8 field_0x57C[0x584 - 0x57C];
/* 0x584 */ dCcD_Stts mCcStts;
/* 0x5C0 */ dCcD_Cyl mCyl;
};
//
@@ -112,62 +102,48 @@ extern "C" void _savegpr_27();
extern "C" void _savegpr_29();
extern "C" void _restgpr_27();
extern "C" void _restgpr_29();
extern "C" extern void* g_fopAc_Method[8];
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
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" extern u8 g_dComIfG_gameInfo[122384];
//
// Declarations:
//
/* 805A2958-805A2990 000078 0038+00 1/1 0/0 0/0 .text setBaseMtx__14daTagAtkItem_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagAtkItem_c::setBaseMtx() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_attack_item/d_a_tag_attack_item/setBaseMtx__14daTagAtkItem_cFv.s"
void daTagAtkItem_c::setBaseMtx() {
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(shape_angle);
}
#pragma pop
/* ############################################################################################## */
/* 805A32C8-805A32CC 000000 0004+00 2/2 0/0 0/0 .rodata @3657 */
SECTION_RODATA static f32 const lit_3657 = 50.0f;
COMPILER_STRIP_GATE(0x805A32C8, &lit_3657);
/* 805A32CC-805A32D0 000004 0004+00 1/2 0/0 0/0 .rodata @3658 */
SECTION_RODATA static f32 const lit_3658 = 100.0f;
COMPILER_STRIP_GATE(0x805A32CC, &lit_3658);
/* 805A32F4-805A3338 000000 0044+00 1/1 0/0 0/0 .data l_cyl_src */
static dCcD_SrcCyl l_cyl_src = {
{
{0x0, {{0x0, 0x0, 0x1f}, {0x400020, 0x11}, 0x78}}, // mObj
{dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
{dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x6}, // mGObjTg
{0x0}, // mGObjCo
}, // mObjInf
{0x0, {{0x0, 0x0, 0x1f}, {0x400020, 0x11}, 0x78}}, // mObj
{dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
{dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x6}, // mGObjTg
{0x0}, // mGObjCo
}, // mObjInf
{
{0.0f, 0.0f, 0.0f}, // mCenter
50.0f, // mRadius
100.0f // mHeight
} // mCyl
{0.0f, 0.0f, 0.0f}, // mCenter
50.0f, // mRadius
100.0f // mHeight
} // mCyl
};
/* 805A2990-805A2A34 0000B0 00A4+00 1/1 0/0 0/0 .text Create__14daTagAtkItem_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagAtkItem_c::Create() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_attack_item/d_a_tag_attack_item/Create__14daTagAtkItem_cFv.s"
int daTagAtkItem_c::Create() {
mCcStts.Init(0, 0xFF, this);
mCyl.Set(l_cyl_src);
mCyl.SetStts(&mCcStts);
mCyl.SetR(mScale.x * 50.0f);
mCyl.SetH(mScale.y * 100.0f);
current.pos.y = orig.pos.y - mScale.y * 100.0f;
return 1;
}
#pragma pop
/* ############################################################################################## */
/* 805A3338-805A3358 -00001 0020+00 1/0 0/0 0/0 .data l_daTagAtkItem_Method */
@@ -249,7 +225,7 @@ SECTION_DATA extern void* __vt__17dEvLib_callback_c[6] = {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagAtkItem_c::create() {
asm int daTagAtkItem_c::create() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_attack_item/d_a_tag_attack_item/func_805A2A34.s"
}
@@ -289,16 +265,41 @@ extern "C" asm void __dt__10dCcD_GSttsFv() {
#pragma pop
/* 805A2C48-805A2CA8 000368 0060+00 1/1 0/0 0/0 .text execute__14daTagAtkItem_cFv */
// matches with dEvLib_callback_c setup
#ifdef NONMATCHING
int daTagAtkItem_c::execute() {
action();
setBaseMtx();
eventUpdate();
mCyl.SetC(current.pos);
dComIfG_Ccsp()->Set(&mCyl);
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagAtkItem_c::execute() {
asm int daTagAtkItem_c::execute() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_attack_item/d_a_tag_attack_item/execute__14daTagAtkItem_cFv.s"
}
#pragma pop
#endif
/* 805A2CA8-805A2D10 0003C8 0068+00 1/1 0/0 0/0 .text action__14daTagAtkItem_cFv */
// matches with dEvLib_callback_c setup
#ifdef NONMATCHING
void daTagAtkItem_c::action() {
if (checkHit()) {
if (getEvId() != 0xFF) {
orderEvent(getEvId(), 0xFF, 1);
} else {
createItem();
fopAcM_delete(this);
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -307,155 +308,122 @@ asm void daTagAtkItem_c::action() {
#include "asm/rel/d/a/tag/d_a_tag_attack_item/d_a_tag_attack_item/action__14daTagAtkItem_cFv.s"
}
#pragma pop
#endif
/* 805A2D10-805A2D34 000430 0024+00 2/1 0/0 0/0 .text eventStart__14daTagAtkItem_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagAtkItem_c::eventStart() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_attack_item/d_a_tag_attack_item/eventStart__14daTagAtkItem_cFv.s"
BOOL daTagAtkItem_c::eventStart() {
createItem();
return TRUE;
}
#pragma pop
/* 805A2D34-805A2D58 000454 0024+00 2/1 0/0 0/0 .text eventEnd__14daTagAtkItem_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagAtkItem_c::eventEnd() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_attack_item/d_a_tag_attack_item/eventEnd__14daTagAtkItem_cFv.s"
BOOL daTagAtkItem_c::eventEnd() {
fopAcM_delete(this);
return TRUE;
}
#pragma pop
/* ############################################################################################## */
/* 805A32D0-805A32D8 000008 0004+04 0/1 0/0 0/0 .rodata @3859 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3859[4 + 4 /* padding */] = {
0x00,
0x00,
0x00,
0x00,
/* padding */
0x00,
0x00,
0x00,
0x00,
};
COMPILER_STRIP_GATE(0x805A32D0, &lit_3859);
#pragma pop
/* 805A32D8-805A32E0 000010 0008+00 0/1 0/0 0/0 .rodata @3860 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3860[8] = {
0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x805A32D8, &lit_3860);
#pragma pop
/* 805A32E0-805A32E8 000018 0008+00 0/1 0/0 0/0 .rodata @3861 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3861[8] = {
0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x805A32E0, &lit_3861);
#pragma pop
/* 805A32E8-805A32F0 000020 0008+00 0/1 0/0 0/0 .rodata @3862 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const lit_3862[8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x805A32E8, &lit_3862);
#pragma pop
/* 805A2D58-805A2F54 000478 01FC+00 1/1 0/0 0/0 .text checkHit__14daTagAtkItem_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagAtkItem_c::checkHit() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_attack_item/d_a_tag_attack_item/checkHit__14daTagAtkItem_cFv.s"
}
#pragma pop
BOOL daTagAtkItem_c::checkHit() {
if (mCyl.ChkTgHit()) {
cCcD_Obj* hitobj_p = mCyl.GetTgHitObj();
if (hitobj_p != NULL &&
(hitobj_p->ChkAtType(AT_TYPE_IRON_BALL) || hitobj_p->ChkAtType(AT_TYPE_BOMB)))
{
#ifdef DEBUG
// "Attack Reaction Item: Rotate attack hit!\n"
OSReport("攻撃反応アイテム:回転アタックヒット!\n");
#endif
return true;
}
}
/* ############################################################################################## */
/* 805A32F0-805A32F4 000028 0004+00 1/1 0/0 0/0 .rodata @3898 */
SECTION_RODATA static f32 const lit_3898 = 32767.0f;
COMPILER_STRIP_GATE(0x805A32F0, &lit_3898);
daPy_py_c* player_p = daPy_getPlayerActorClass();
if ((player_p->checkFrontRollCrash() || player_p->checkWolfAttackReverse()) &&
player_p->current.pos.absXZ(current.pos) < mScale.x * 50.0f &&
fabsf(player_p->current.pos.y - current.pos.y) < mScale.y * 100.0f)
{
#ifdef DEBUG
// "Attack Reaction Item: Rotate attack hit!\n"
OSReport("攻撃反応アイテム:回転アタックヒット!\n");
#endif
return true;
}
return false;
}
/* 805A2F54-805A3038 000674 00E4+00 2/2 0/0 0/0 .text createItem__14daTagAtkItem_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daTagAtkItem_c::createItem() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_attack_item/d_a_tag_attack_item/createItem__14daTagAtkItem_cFv.s"
void daTagAtkItem_c::createItem() {
csXyz angle(0, 0, 0);
int create_num;
if (getNum() == 0xFF) {
create_num = 1;
} else {
create_num = getNum();
}
int item_bit = getItemBit();
for (int i = 0; i < create_num; i++) {
angle.y += (s16)cM_rndFX(0x7FFF);
fopAcM_createItemFromTable(&orig.pos, getItemNo(), item_bit, fopAcM_GetHomeRoomNo(this),
&angle, 0, NULL, NULL, NULL, false);
if (item_bit != 0xFF) {
item_bit++;
}
}
}
#pragma pop
/* 805A3038-805A3040 000758 0008+00 1/1 0/0 0/0 .text _delete__14daTagAtkItem_cFv */
bool daTagAtkItem_c::_delete() {
return true;
int daTagAtkItem_c::_delete() {
return 1;
}
/* 805A3040-805A3060 000760 0020+00 1/0 0/0 0/0 .text daTagAtkItem_Execute__FP14daTagAtkItem_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTagAtkItem_Execute(daTagAtkItem_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_attack_item/d_a_tag_attack_item/daTagAtkItem_Execute__FP14daTagAtkItem_c.s"
static int daTagAtkItem_Execute(daTagAtkItem_c* i_this) {
return i_this->execute();
}
#pragma pop
/* 805A3060-805A3080 000780 0020+00 1/0 0/0 0/0 .text daTagAtkItem_Delete__FP14daTagAtkItem_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTagAtkItem_Delete(daTagAtkItem_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_attack_item/d_a_tag_attack_item/daTagAtkItem_Delete__FP14daTagAtkItem_c.s"
static int daTagAtkItem_Delete(daTagAtkItem_c* i_this) {
return i_this->_delete();
}
#pragma pop
/* 805A3080-805A30A0 0007A0 0020+00 1/0 0/0 0/0 .text daTagAtkItem_Create__FP14daTagAtkItem_c */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void daTagAtkItem_Create(daTagAtkItem_c* param_0) {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_attack_item/d_a_tag_attack_item/daTagAtkItem_Create__FP14daTagAtkItem_c.s"
static int daTagAtkItem_Create(daTagAtkItem_c* i_this) {
return i_this->create();
}
#pragma pop
/* 805A30A0-805A30E8 0007C0 0048+00 1/0 0/0 0/0 .text __dt__17dEvLib_callback_cFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm dEvLib_callback_c::~dEvLib_callback_c() {
// asm dEvLib_callback_c::~dEvLib_callback_c() {
extern "C" asm void __dt__17dEvLib_callback_cFv() {
nofralloc
#include "asm/rel/d/a/tag/d_a_tag_attack_item/d_a_tag_attack_item/__dt__17dEvLib_callback_cFv.s"
}
#pragma pop
/* 805A30E8-805A30F0 000808 0008+00 2/0 0/0 0/0 .text eventRun__17dEvLib_callback_cFv */
bool dEvLib_callback_c::eventRun() {
// bool dEvLib_callback_c::eventRun() {
extern "C" bool eventRun__17dEvLib_callback_cFv() {
return true;
}
/* 805A30F0-805A30F8 000810 0008+00 1/0 0/0 0/0 .text eventStart__17dEvLib_callback_cFv
*/
bool dEvLib_callback_c::eventStart() {
// bool dEvLib_callback_c::eventStart() {
extern "C" bool eventStart__17dEvLib_callback_cFv() {
return true;
}
/* 805A30F8-805A3100 000818 0008+00 1/0 0/0 0/0 .text eventEnd__17dEvLib_callback_cFv */
bool dEvLib_callback_c::eventEnd() {
// bool dEvLib_callback_c::eventEnd() {
extern "C" bool eventEnd__17dEvLib_callback_cFv() {
return true;
}
+20 -14
View File
@@ -23,12 +23,14 @@ int daTag_Howl_c::destroy() {
/* 8048D9C4-8048DA24 0000E4 0060+00 1/1 0/0 0/0 .text execute__12daTag_Howl_cFv */
int daTag_Howl_c::execute() {
this->current.roomNo = dStage_roomControl_c::mStayNo;
this->mAttentionInfo.mFlags = 0;
if (isAreaCheck() != NULL) {
this->mAttentionInfo.mFlags |= 0x80;
this->mAttentionInfo.field_0x0[7] = 0x41;
fopAcM_SetRoomNo(this, dComIfGp_roomControl_getStayNo());
mAttentionInfo.mFlags = 0;
if (isAreaCheck()) {
mAttentionInfo.mFlags |= 0x80;
mAttentionInfo.field_0x0[7] = 0x41;
}
return 1;
}
@@ -41,22 +43,26 @@ int daTag_Howl_c::draw() {
u8 daTag_Howl_c::isAreaCheck() {
if (getSwitchBit() != 0xFF) {
if (dComIfGs_isSaveSwitch(getSwitchBit())) {
return 0;
return false;
}
}
cXyz pos = daPy_getPlayerActorClass()->current.pos - current.pos;
if (dComIfGp_getLinkPlayer()->i_checkNoResetFlg1(daPy_py_c::FLG1_IS_WOLF)) {
if ((pos.absXZ() < mScale.x) && (-mScale.y < pos.y) && (pos.y < mScale.y)) {
return 1;
cXyz vec_to_player = daPy_getPlayerActorClass()->current.pos - current.pos;
if (daPy_py_c::i_checkNowWolf()) {
if (vec_to_player.absXZ() < mScale.x && -mScale.y < vec_to_player.y &&
vec_to_player.y < mScale.y)
{
return true;
}
}
return 0;
return false;
}
/* 8048DC1C-8048DC68 00033C 004C+00 1/1 0/0 0/0 .text getParam__12daTag_Howl_cFv */
int daTag_Howl_c::getParam() {
field_0x568 = mBase.mParameters & 0xf;
field_0x569 = mBase.mParameters >> 0x1e;
mCurveID = fopAcM_GetParam(this) & 0xF;
field_0x569 = fopAcM_GetParam(this) >> 0x1E;
mScale.x *= 100.0f;
mScale.y *= 100.0f;
mScale.z *= 100.0f;
@@ -65,7 +71,7 @@ int daTag_Howl_c::getParam() {
/* 8048DC68-8048DC74 000388 000C+00 1/1 0/0 0/0 .text getSwitchBit__12daTag_Howl_cFv */
u8 daTag_Howl_c::getSwitchBit() {
return this->mBase.mParameters >> 4 & 0xff;
return (fopAcM_GetParam(this) >> 4) & 0xFF;
}
/* 8048DC74-8048DC94 000394 0020+00 1/0 0/0 0/0 .text daTag_Howl_Create__FPv */
+537 -77
View File
@@ -33,15 +33,12 @@
#include "rel/d/a/tag/d_a_tag_magne/d_a_tag_magne.h"
#include "rel/d/a/tag/d_a_tag_mist/d_a_tag_mist.h"
#include "rel/d/a/tag/d_a_tag_wljump/d_a_tag_wljump.h"
#include "rel/d/a/obj/d_a_obj_sekizoa/d_a_obj_sekizoa.h"
//
// Types:
//
struct daObj_Sekizoa_c {
/* 801312C8 */ void setWolfHowling();
};
struct daObjMovebox {
struct Act_c {
struct Prm_e {};
@@ -4787,8 +4784,8 @@ COMPILER_STRIP_GATE(0x8038FAC0, &l_crawlTopUpOffset);
/* 8038FACC-8038FAD8 01C12C 000C+00 0/1 0/0 0/0 .rodata l_wolfLieTopUpOffset */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const l_wolfLieTopUpOffset[12] = {
0x00, 0x00, 0x00, 0x00, 0x42, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
SECTION_RODATA static Vec const l_wolfLieTopUpOffset = {
0.0f, 75.0f, 0.0f
};
COMPILER_STRIP_GATE(0x8038FACC, &l_wolfLieTopUpOffset);
#pragma pop
@@ -4796,8 +4793,8 @@ COMPILER_STRIP_GATE(0x8038FACC, &l_wolfLieTopUpOffset);
/* 8038FAD8-8038FAE4 01C138 000C+00 0/1 0/0 0/0 .rodata l_crawlSideOffset */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const l_crawlSideOffset[12] = {
0x42, 0x5C, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
SECTION_RODATA static Vec const l_crawlSideOffset = {
55.0f, 80.0f, 0.0f
};
COMPILER_STRIP_GATE(0x8038FAD8, &l_crawlSideOffset);
#pragma pop
@@ -4805,8 +4802,8 @@ COMPILER_STRIP_GATE(0x8038FAD8, &l_crawlSideOffset);
/* 8038FAE4-8038FAF0 01C144 000C+00 0/1 0/0 0/0 .rodata l_wolfLieSideOffset */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const l_wolfLieSideOffset[12] = {
0x42, 0x5C, 0x00, 0x00, 0x42, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
SECTION_RODATA static Vec const l_wolfLieSideOffset = {
55.0f, 75.0f, 0.0f
};
COMPILER_STRIP_GATE(0x8038FAE4, &l_wolfLieSideOffset);
#pragma pop
@@ -6228,28 +6225,41 @@ SECTION_RODATA static u32 const label[12] = {
COMPILER_STRIP_GATE(0x80391E48, &label);
/* 80391E78-80391E8C 01E4D8 0014+00 1/1 0/0 0/0 .rodata normalType0$50859 */
SECTION_RODATA static u8 const normalType0[20] = {
0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
SECTION_RODATA static int const normalType0[] = {
3, 3, 3, 0, 0,
};
COMPILER_STRIP_GATE(0x80391E78, &normalType0);
/* 80391E8C-80391EA0 01E4EC 0014+00 1/1 0/0 0/0 .rodata normalType1$50860 */
SECTION_RODATA static u8 const normalType1_50860[20] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x03,
SECTION_RODATA static int const normalType1_50860[] = {
0, 0, 0, 3, 3,
};
COMPILER_STRIP_GATE(0x80391E8C, &normalType1_50860);
struct daAlink_WCutParamTbl {
/* 0x0 */ daAlink_c::daAlink_WANM m_anmID;
/* 0x4 */ u8 m_cutType;
}; // Size: 0x8
/* 80391EA0-80391EC0 01E500 0020+00 0/1 0/0 0/0 .rodata dataTabl$51470 */
#pragma push
#pragma force_active on
SECTION_RODATA static u8 const dataTabl[32] = {
0x00, 0x00, 0x00, 0x40, 0x2C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x2E, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x43, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x2D, 0x00, 0x00, 0x00,
static const daAlink_WCutParamTbl dataTabl[] = {
{
daAlink_c::WANM_ATTACK_B_LEFT,
daAlink_c::CUT_TYPE_WOLF_B_LEFT,
},
{
daAlink_c::WANM_ATTACK_B_FRONT,
daAlink_c::CUT_TYPE_WOLF_B_FRONT,
},
{
daAlink_c::WANM_ATTACK_B_TAIL,
daAlink_c::CUT_TYPE_WOLF_B_BACK,
},
{
daAlink_c::WANM_ATTACK_B_RIGHT,
daAlink_c::CUT_TYPE_WOLF_B_RIGHT,
},
};
COMPILER_STRIP_GATE(0x80391EA0, &dataTabl);
#pragma pop
/* 80391EC0-80391ECC 01E520 000C+00 1/1 0/0 0/0 .rodata arm1Vec$56040 */
SECTION_RODATA static u8 const arm1Vec[12] = {
@@ -11461,21 +11471,133 @@ SECTION_DATA static u8 l_jntColPos17[12] = {
};
/* 803B29AC-803B2A84 -00001 00D8+00 1/1 0/0 0/0 .data l_jntColData */
SECTION_DATA static void* l_jntColData[54] = {
(void*)0x01000001, (void*)0x41900000, (void*)&l_jntColPos0, (void*)0x00000004,
(void*)0x41800000, (void*)&l_jntColPos1, (void*)0x01000007, (void*)0x40E00000,
(void*)&l_jntColPos2, (void*)0x0100000C, (void*)0x40E00000, (void*)&l_jntColPos2,
(void*)0x01000008, (void*)0x40C00000, (void*)&l_jntColPos4, (void*)0x0100000D,
(void*)0x40C00000, (void*)&l_jntColPos4, (void*)0x00000009, (void*)0x40C00000,
(void*)&l_jntColPos6, (void*)0x0000000E, (void*)0x40C00000, (void*)&l_jntColPos6,
(void*)0x01000010, (void*)0x41900000, (void*)&l_jntColPos8, (void*)0x01000012,
(void*)0x41000000, (void*)&l_jntColPos9, (void*)0x01000017, (void*)0x41000000,
(void*)&l_jntColPos10, (void*)0x01000013, (void*)0x40E00000, (void*)&l_jntColPos11,
(void*)0x01000018, (void*)0x40E00000, (void*)&l_jntColPos12, (void*)0x01000014,
(void*)0x40C00000, (void*)&l_jntColPos13, (void*)0x01000019, (void*)0x40C00000,
(void*)&l_jntColPos14, (void*)0x0203000F, (void*)0x42200000, (void*)&l_jntColPos15,
(void*)0x02030005, (void*)0x42200000, (void*)&l_jntColPos16, (void*)0x0003000F,
(void*)0x42340000, (void*)&l_jntColPos17,
static dJntColData_c l_jntColData[] = {
{
1,
0,
1,
18.0f,
(Vec*)l_jntColPos0,
},
{
0,
0,
4,
16.0f,
(Vec*)l_jntColPos1,
},
{
1,
0,
7,
7.0f,
(Vec*)l_jntColPos2,
},
{
1,
0,
12,
7.0f,
(Vec*)l_jntColPos2,
},
{
1,
0,
8,
6.0f,
(Vec*)l_jntColPos4,
},
{
1,
0,
13,
6.0f,
(Vec*)l_jntColPos4,
},
{
0,
0,
9,
6.0f,
(Vec*)l_jntColPos6,
},
{
0,
0,
14,
6.0f,
(Vec*)l_jntColPos6,
},
{
1,
0,
16,
18.0f,
(Vec*)l_jntColPos8,
},
{
1,
0,
18,
8.0f,
(Vec*)l_jntColPos9,
},
{
1,
0,
23,
8.0f,
(Vec*)l_jntColPos10,
},
{
1,
0,
19,
7.0f,
(Vec*)l_jntColPos11,
},
{
1,
0,
24,
7.0f,
(Vec*)l_jntColPos12,
},
{
1,
0,
20,
6.0f,
(Vec*)l_jntColPos13,
},
{
1,
0,
25,
6.0f,
(Vec*)l_jntColPos14,
},
{
2,
3,
15,
40.0f,
(Vec*)l_jntColPos15,
},
{
2,
3,
5,
40.0f,
(Vec*)l_jntColPos16,
},
{
0,
3,
15,
45.0f,
(Vec*)l_jntColPos17,
},
};
/* 803B2A84-803B2A9C 00FBA4 0018+00 1/0 0/0 0/0 .data l_wolfJntColPos0 */
@@ -11538,25 +11660,133 @@ SECTION_DATA static u8 l_wolfJntColPos16[24] = {
};
/* 803B2B68-803B2C40 -00001 00D8+00 1/1 0/0 0/0 .data l_wolfJntColData */
SECTION_DATA static void* l_wolfJntColData[54] = {
(void*)0x01000001, (void*)0x41E00000, (void*)&l_wolfJntColPos0,
(void*)0x00000004, (void*)0x41C80000, (void*)&l_wolfJntColPos1,
(void*)0x01000010, (void*)0x41200000, (void*)&l_wolfJntColPos2,
(void*)0x01000015, (void*)0x41200000, (void*)&l_wolfJntColPos2,
(void*)0x01000011, (void*)0x40C00000, (void*)&l_wolfJntColPos4,
(void*)0x01000016, (void*)0x40C00000, (void*)&l_wolfJntColPos4,
(void*)0x01000012, (void*)0x40800000, (void*)&l_wolfJntColPos6,
(void*)0x01000017, (void*)0x40800000, (void*)&l_wolfJntColPos6,
(void*)0x01000013, (void*)0x40800000, (void*)&l_wolfJntColPos8,
(void*)0x01000018, (void*)0x40800000, (void*)&l_wolfJntColPos8,
(void*)0x0100001C, (void*)0x41300000, (void*)&l_wolfJntColPos10,
(void*)0x01000021, (void*)0x41300000, (void*)&l_wolfJntColPos10,
(void*)0x0100001D, (void*)0x40E00000, (void*)&l_wolfJntColPos12,
(void*)0x01000022, (void*)0x40E00000, (void*)&l_wolfJntColPos12,
(void*)0x0100001E, (void*)0x40A00000, (void*)&l_wolfJntColPos14,
(void*)0x01000023, (void*)0x40A00000, (void*)&l_wolfJntColPos14,
(void*)0x0100001F, (void*)0x40C00000, (void*)&l_wolfJntColPos16,
(void*)0x01000024, (void*)0x40A00000, (void*)&l_wolfJntColPos16,
static dJntColData_c l_wolfJntColData[] = {
{
1,
0,
1,
28.0f,
(Vec*)l_wolfJntColPos0,
},
{
0,
0,
4,
25.0f,
(Vec*)l_wolfJntColPos1,
},
{
1,
0,
16,
10.0f,
(Vec*)l_wolfJntColPos2,
},
{
1,
0,
21,
10.0f,
(Vec*)l_wolfJntColPos2,
},
{
1,
0,
17,
6.0f,
(Vec*)l_wolfJntColPos4,
},
{
1,
0,
22,
6.0f,
(Vec*)l_wolfJntColPos4,
},
{
1,
0,
18,
4.0f,
(Vec*)l_wolfJntColPos6,
},
{
1,
0,
23,
4.0f,
(Vec*)l_wolfJntColPos6,
},
{
1,
0,
19,
4.0f,
(Vec*)l_wolfJntColPos8,
},
{
1,
0,
24,
4.0f,
(Vec*)l_wolfJntColPos8,
},
{
1,
0,
28,
11.0f,
(Vec*)l_wolfJntColPos10,
},
{
1,
0,
33,
11.0f,
(Vec*)l_wolfJntColPos10,
},
{
1,
0,
29,
7.0f,
(Vec*)l_wolfJntColPos12,
},
{
1,
0,
34,
7.0f,
(Vec*)l_wolfJntColPos12,
},
{
1,
0,
30,
5.0f,
(Vec*)l_wolfJntColPos14,
},
{
1,
0,
35,
5.0f,
(Vec*)l_wolfJntColPos14,
},
{
1,
0,
31,
6.0f,
(Vec*)l_wolfJntColPos16,
},
{
1,
0,
36,
5.0f,
(Vec*)l_wolfJntColPos16,
},
};
/* 803B2C40-803B2C50 00FD60 000D+03 0/1 0/0 0/0 .data defaultPortal$39238 */
@@ -12285,8 +12515,8 @@ extern "C" asm void __dt__14J3DMaterialAnmFv() {
/* 800A48F0-800A4910 09F230 0020+00 1/1 0/0 0/0 .text daAlink_createHeap__FP10fopAc_ac_c
*/
static int daAlink_createHeap(fopAc_ac_c* link) {
return ((daAlink_c*)link)->createHeap();
static int daAlink_createHeap(fopAc_ac_c* i_this) {
return ((daAlink_c*)i_this)->createHeap();
}
bool daPy_py_c::checkWoodSwordEquip() {
@@ -13895,7 +14125,7 @@ asm void daAlink_c::setCollision() {
#ifdef NONMATCHING
f32 daAlink_c::getBaseAnimeFrame() const {
if (mProcID == PROC_SUMOU_ACTION && mSpeedModifier > 0.0f) {
return field_0x300c;
return mProcVar2.field_0x300c;
}
return mUnderFrameCtrl[0].getFrame();
@@ -15513,7 +15743,7 @@ f32 daAlink_c::getFrontRollRate() {
/* 800B4B7C-800B5284 0AF4BC 0708+00 2/2 0/0 0/0 .text decideCommonDoStatus__9daAlink_cFv
*/
// almost, small branch issues and need fix for i_checkAttentionLock
// almost, small branch issues
#ifdef NONMATCHING
void daAlink_c::decideCommonDoStatus() {
if (!i_checkFmChainGrabAnime() && i_dComIfGp_getDoStatus() == 0) {
@@ -16648,9 +16878,9 @@ BOOL daAlink_c::checkItemChangeFromButton() {
} else {
u8 i;
for (i = 0; i < 2; i++) {
int tmp = checkNewItemChange(i);
if (tmp && itemTriggerCheck(1 << i)) {
return changeItemTriggerKeepProc(i, tmp);
int proc_type = checkNewItemChange(i);
if (proc_type != 0 && itemTriggerCheck(1 << i)) {
return changeItemTriggerKeepProc(i, proc_type);
}
}
@@ -16808,10 +17038,8 @@ int daAlink_c::commonCheckNextAction(int param_0) {
}
/* 800BA0D0-800BA6A0 0B4A10 05D0+00 91/91 0/0 0/0 .text checkNextAction__9daAlink_cFi */
// checkAttentionLock issue / literals
// matches with literals
#ifdef NONMATCHING
#pragma push
#pragma optimization_level 2
int daAlink_c::checkNextAction(int param_0) {
f32 temp_f31 = field_0x594;
@@ -16933,7 +17161,6 @@ int daAlink_c::checkNextAction(int param_0) {
return ret;
}
#pragma pop
#else
#pragma push
#pragma optimization_level 0
@@ -17479,7 +17706,7 @@ void daAlink_c::posMove() {
if (checkRootTransClearMode()) {
cXyz sp78 = field_0x34d4 - sp108;
if (mProcID == PROC_CLIMB_UP_START && field_0x300e.z != 0) {
if (mProcID == PROC_CLIMB_UP_START && mProcVar3.field_0x300e.z != 0) {
sp78 = cXyz::Zero;
}
@@ -18453,14 +18680,14 @@ bool daAlink_c::checkNotAutoJumpStage() {
}
/* 800C0678-800C077C 0BAFB8 0104+00 3/3 0/0 0/0 .text checkCastleTownUseItem__9daAlink_cFUs */
bool daAlink_c::checkCastleTownUseItem(u16 item_id) {
bool daAlink_c::checkCastleTownUseItem(u16 i_itemNo) {
if (checkNotBattleStage()) {
if (item_id == KANTERA || checkTradeItem(item_id) ||
(item_id == DUNGEON_BACK && checkLv7DungeonShop()) ||
(checkRoomSpecial() && (item_id == EMPTY_BOTTLE || checkDungeonWarpItem(item_id))) ||
(checkStageName("R_SP128") && item_id == COPY_ROD) ||
(checkLv2DungeonRoomSpecial() && item_id == HVY_BOOTS) ||
(checkBottleItem(item_id) && item_id != EMPTY_BOTTLE))
if (i_itemNo == KANTERA || checkTradeItem(i_itemNo) ||
(i_itemNo == DUNGEON_BACK && checkLv7DungeonShop()) ||
(checkRoomSpecial() && (i_itemNo == EMPTY_BOTTLE || checkDungeonWarpItem(i_itemNo))) ||
(checkStageName("R_SP128") && i_itemNo == COPY_ROD) ||
(checkLv2DungeonRoomSpecial() && i_itemNo == HVY_BOOTS) ||
(checkBottleItem(i_itemNo) && i_itemNo != EMPTY_BOTTLE))
{
return true;
} else {
@@ -18470,7 +18697,92 @@ bool daAlink_c::checkCastleTownUseItem(u16 item_id) {
return true;
}
enum daAlink_ItemProc {
/* 0 */ ITEM_PROC_NONE,
/* 1 */ ITEM_PROC_BOOTS_EQUIP,
/* 2 */ ITEM_PROC_SET_HVYBOOTS,
/* 3 */ ITEM_PROC_BOTTLE_DRINK,
/* 4 */ ITEM_PROC_SPINNER_READY,
/* 5 */ ITEM_PROC_DUNGEON_WARP_READY,
/* 6 */ ITEM_PROC_BOTTLE_OPEN,
/* 7 */ ITEM_PROC_FISHING_FOOD,
/* 8 */ ITEM_PROC_KANDELAAR_POUR,
/* 9 */ ITEM_PROC_SUBJECTIVITY,
/* 10 */ ITEM_PROC_PICK_PUT,
/* 11 */ ITEM_PROC_OFF_KANDELAAR,
/* 12 */ ITEM_PROC_COMMON_CHANGE_ITEM,
/* 13 */ ITEM_PROC_BOTTLE_SWING,
/* 14 */ ITEM_PROC_NOT_USE_ITEM,
/* 15 */ ITEM_PROC_GRASS_WHISTLE,
};
/* 800C077C-800C0A9C 0BB0BC 0320+00 1/1 0/0 0/0 .text changeItemTriggerKeepProc__9daAlink_cFUci */
// matches with literals
#ifdef NONMATCHING
int daAlink_c::changeItemTriggerKeepProc(u8 i_selItemIdx, int i_procType) {
u32 sel_item = dComIfGp_getSelectItem(i_selItemIdx);
mSelectItemId = i_selItemIdx;
if (i_procType == ITEM_PROC_GRASS_WHISTLE) {
procGrassWhistleWaitInit(3, -1, 0, 0, NULL);
} else if (i_procType == ITEM_PROC_BOTTLE_DRINK) {
if (i_checkReinRide()) {
procHorseBottleDrinkInit(sel_item);
} else if (checkCanoeRide()) {
procCanoeBottleDrinkInit(sel_item);
} else {
procBottleDrinkInit(sel_item);
}
} else if (i_procType == ITEM_PROC_KANDELAAR_POUR) {
if (i_checkReinRide()) {
procHorseKandelaarPourInit();
} else if (checkCanoeRide()) {
procCanoeKandelaarPourInit();
} else {
procKandelaarPourInit();
}
} else if (i_procType == ITEM_PROC_FISHING_FOOD) {
procFishingFoodInit();
} else if (i_procType == ITEM_PROC_BOOTS_EQUIP) {
procBootsEquipInit();
} else if (i_procType == ITEM_PROC_SET_HVYBOOTS) {
setHeavyBoots(1);
} else if (i_procType == ITEM_PROC_SPINNER_READY) {
procSpinnerReadyInit();
} else if (i_procType == ITEM_PROC_DUNGEON_WARP_READY) {
procDungeonWarpReadyInit();
} else if (i_procType == ITEM_PROC_BOTTLE_OPEN) {
procBottleOpenInit(sel_item);
} else if (i_procType == ITEM_PROC_BOTTLE_SWING) {
procBottleSwingInit(NULL, 0);
} else if (i_procType == ITEM_PROC_NOT_USE_ITEM) {
procNotUseItemInit(sel_item);
} else if (i_procType == ITEM_PROC_SUBJECTIVITY) {
procCoSubjectivityInit();
dComIfGp_setPlayerStatus0(0, 0x200000);
seStartSystem(Z2SE_AL_HAWK_EYE_PUTON);
} else if (i_procType == ITEM_PROC_PICK_PUT) {
procPickPutInit(1);
} else if (i_procType == ITEM_PROC_OFF_KANDELAAR) {
offKandelaarModel();
} else if (i_procType == ITEM_PROC_COMMON_CHANGE_ITEM) {
field_0x2fde = NO_ITEM;
itemEquip(sel_item);
if (i_dComIfGp_checkPlayerStatus0(0, 0x2000) &&
((checkBowAndSlingItem(field_0x2fde) || checkHookshotItem(field_0x2fde) ||
field_0x2fde == COPY_ROD) ||
field_0x2fde == BOOMERANG))
{
commonChangeItem();
resetUpperAnime(UPPER_2, -1.0f);
checkItemActionInitStart();
}
}
return 1;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -18479,9 +18791,156 @@ asm int daAlink_c::changeItemTriggerKeepProc(u8 param_0, int param_1) {
#include "asm/d/a/d_a_alink/changeItemTriggerKeepProc__9daAlink_cFUci.s"
}
#pragma pop
#endif
/* 800C0A9C-800C12DC 0BB3DC 0840+00 1/1 0/0 0/0 .text checkNewItemChange__9daAlink_cFUc
*/
/**
* Determines whether an item action can occur, and which action to use.
*
* @return a `daAlink_ItemProc` value corresponding to the `PROC` function to run in `changeItemTriggerKeepProc`
*/
// matches with literals
#ifdef NONMATCHING
int daAlink_c::checkNewItemChange(u8 param_0) {
u32 sel_item = dComIfGp_getSelectItem(param_0);
if (checkSpinnerRide() || sel_item == BOMB_BAG_LV1 ||
((sel_item == KANTERA || checkOilBottleItem(sel_item)) &&
checkWaterInKandelaarOffset(mWaterY)) ||
(checkCanoeRide() && checkStageName("F_SP127")) || checkCloudSea() ||
((i_checkModeFlg(0x40000) || i_checkNoResetFlg0(FLG0_UNDERWATER)) &&
!checkAcceptUseItemInWater(sel_item)) ||
(i_checkModeFlg(0x40000) && sel_item == WATER_BOMB) || !checkCastleTownUseItem(sel_item) ||
(checkBoardRide() && sel_item != 0x103) ||
(i_checkModeFlg(0x400) &&
(sel_item == EMPTY_BOTTLE || sel_item == POKE_BOMB || sel_item == IRONBALL ||
sel_item == COPY_ROD || checkFishingRodItem(sel_item))) ||
((field_0x2fa8 == 6 || field_0x2fbd == 1 || field_0x2fbd == 2 ||
mWaterY - current.pos.y > 45.0f ||
(field_0x2fbc == 6 && mWaterY - current.pos.y >= 0.0f) || field_0x2fbd == 3) &&
sel_item == SPINNER) ||
(checkBossRoom() && checkDungeonWarpItem(sel_item)) ||
(sel_item == DUNGEON_EXIT &&
(checkLv7DungeonShop() ||
(checkStageName("D_MN07") && i_fopAcM_isSwitch(this, 0x4D) &&
!i_fopAcM_isSwitch(this, 0x18)) ||
(checkStageName("D_MN10") && fopAcM_GetRoomNo(this) == 15))) ||
(i_checkMagneBootsOn() && sel_item != 0x103 && !checkDrinkBottleItem(sel_item) &&
sel_item != HVY_BOOTS && !checkBowItem(sel_item)))
{
return ITEM_PROC_NONE;
} else if (sel_item == HVY_BOOTS || checkDungeonWarpItem(sel_item) ||
checkTradeItem(sel_item) ||
(checkBottleItem(sel_item) && sel_item != EMPTY_BOTTLE) || sel_item == SPINNER ||
sel_item == POKE_BOMB || sel_item == HORSE_FLUTE || sel_item == HAWK_EYE)
{
if (i_checkReinRide() || checkCanoeRide()) {
if (checkDrinkBottleItem(sel_item)) {
return ITEM_PROC_BOTTLE_DRINK;
}
if (checkOilBottleItem(sel_item) && checkItemSetButton(0x48) != 2) {
return ITEM_PROC_KANDELAAR_POUR;
}
} else if (sel_item == HVY_BOOTS) {
if (!checkBoardRide()) {
if ((mLinkAcch.ChkGroundHit() && !i_checkModeFlg(0x70C52)) ||
(i_checkMagneBootsOn() && cBgW_CheckBGround(mMagneBootsTopVec.y)) ||
mProcID == PROC_HANG_CLIMB)
{
return ITEM_PROC_BOOTS_EQUIP;
}
return ITEM_PROC_SET_HVYBOOTS;
}
} else if (checkDrinkBottleItem(sel_item) && i_checkMagneBootsOn()) {
if (cBgW_CheckBGround(mMagneBootsTopVec.y)) {
return ITEM_PROC_BOTTLE_DRINK;
}
} else if (mLinkAcch.ChkGroundHit()) {
if (!i_checkModeFlg(0x70C52)) {
if (sel_item == SPINNER) {
cXyz sp38(current.pos.x, current.pos.y + l_autoUpHeight, current.pos.z);
cXyz sp2C(sp38);
cXyz sp20;
s16 var_r30 = 0;
for (int i = 0; i < 4; i++, var_r30 += 0x2000) {
sp2C.x = sp38.x + cM_ssin(var_r30) * 120.0f;
sp2C.z = sp38.z + cM_scos(var_r30) * 120.0f;
if (commonLineCheck(&sp38, &sp2C)) {
sp2C.x = (sp38.x * 2.0f) - sp2C.x;
sp2C.z = (sp38.z * 2.0f) - sp2C.z;
sp20 = mLinkLinChk.i_GetCross();
if (commonLineCheck(&sp38, &sp2C)) {
if (mLinkLinChk.i_GetCross().abs2XZ(sp20) < 14400.0f) {
return ITEM_PROC_NONE;
}
}
}
}
return ITEM_PROC_SPINNER_READY;
} else if (checkDungeonWarpItem(sel_item)) {
return ITEM_PROC_DUNGEON_WARP_READY;
} else if (checkItemSetButton(0x108) != 2 &&
(sel_item == WORM || sel_item == BEE_CHILD))
{
int temp_r3_8 = dComIfGp_getSelectItem(checkItemSetButton(0x108));
if (temp_r3_8 == WORM_ROD || temp_r3_8 == JEWEL_WORM_ROD) {
if (sel_item == BEE_CHILD) {
return ITEM_PROC_BOTTLE_DRINK;
}
return ITEM_PROC_NONE;
}
if (sel_item == BEE_CHILD &&
(temp_r3_8 == BEE_ROD || temp_r3_8 == JEWEL_BEE_ROD))
{
return ITEM_PROC_BOTTLE_DRINK;
}
return ITEM_PROC_FISHING_FOOD;
} else if (checkDrinkBottleItem(sel_item)) {
return ITEM_PROC_BOTTLE_DRINK;
} else if (checkOpenBottleItem(sel_item)) {
return ITEM_PROC_BOTTLE_OPEN;
} else if (checkTradeItem(sel_item)) {
return ITEM_PROC_NOT_USE_ITEM;
} else if (sel_item == HORSE_FLUTE) {
return ITEM_PROC_GRASS_WHISTLE;
} else if (checkOilBottleItem(sel_item) && checkItemSetButton(0x48) != 2) {
return ITEM_PROC_KANDELAAR_POUR;
} else if (sel_item == HAWK_EYE) {
if (acceptSubjectModeChange()) {
return ITEM_PROC_SUBJECTIVITY;
}
} else if (sel_item == POKE_BOMB && dComIfGp_getSelectItemNum(param_0) &&
field_0x2fcf < 2)
{
return ITEM_PROC_PICK_PUT;
}
}
}
} else if (sel_item != NO_ITEM && mEquipItem != sel_item) {
if ((checkBombItem(sel_item) && !dComIfGp_getSelectItemNum(param_0)) ||
((sel_item == NORMAL_BOMB || sel_item == WATER_BOMB) && mActiveBombNum >= 3) ||
(sel_item == IRONBALL && (!mLinkAcch.ChkGroundHit() || i_checkModeFlg(0x70C52))) ||
(sel_item == KANTERA && (i_checkNoResetFlg0(FLG0_UNDERWATER) ||
i_checkEndResetFlg1(ERFLG1_UNK_4) || i_checkModeFlg(0x40000))))
{
return ITEM_PROC_NONE;
}
return ITEM_PROC_COMMON_CHANGE_ITEM;
}
if (mEquipItem == sel_item && mSelectItemId != param_0 && mEquipItem == EMPTY_BOTTLE) {
return ITEM_PROC_BOTTLE_SWING;
}
return ITEM_PROC_NONE;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -18490,6 +18949,7 @@ asm int daAlink_c::checkNewItemChange(u8 param_0) {
#include "asm/d/a/d_a_alink/checkNewItemChange__9daAlink_cFUc.s"
}
#pragma pop
#endif
/* 800C12DC-800C1704 0BBC1C 0428+00 67/67 0/0 0/0 .text deleteEquipItem__9daAlink_cFii */
#pragma push
@@ -18598,7 +19058,7 @@ void daAlink_c::commonProcInit(daAlink_c::daAlink_PROC i_procID) {
initForceRideHorse();
}
if (field_0x300c != 0) {
if (mProcVar2.field_0x300c != 0) {
changeWarpMaterial(1);
}
} else if (mProcID == PROC_GRAB_STAND) {
+3 -3
View File
@@ -2911,7 +2911,7 @@ const daAlinkHIO_wlRope_c1 daAlinkHIO_wlRope_c0::m = {
/* 8038F4A4-8038F4E0 01BB04 003C+00 0/1 0/0 0/0 .rodata m__22daAlinkHIO_wlAtWaLr_c0 */
#pragma push
#pragma force_active on
const daAlinkHIO_wlAtWaLr_c1 daAlinkHIO_wlAtWaLr_c0::m = {
const daAlinkHIO_wlAtWait_c1 daAlinkHIO_wlAtWaLr_c0::m = {
{
41,
0.9f,
@@ -2936,7 +2936,7 @@ const daAlinkHIO_wlAtWaLr_c1 daAlinkHIO_wlAtWaLr_c0::m = {
/* 8038F4E0-8038F51C 01BB40 003C+00 0/1 0/0 0/0 .rodata m__22daAlinkHIO_wlAtWaSc_c0 */
#pragma push
#pragma force_active on
const daAlinkHIO_wlAtWaSc_c1 daAlinkHIO_wlAtWaSc_c0::m = {
const daAlinkHIO_wlAtWait_c1 daAlinkHIO_wlAtWaSc_c0::m = {
{
15,
0.9f,
@@ -2961,7 +2961,7 @@ const daAlinkHIO_wlAtWaSc_c1 daAlinkHIO_wlAtWaSc_c0::m = {
/* 8038F51C-8038F558 01BB7C 003C+00 0/1 0/0 0/0 .rodata m__22daAlinkHIO_wlAtWaTl_c0 */
#pragma push
#pragma force_active on
const daAlinkHIO_wlAtWaTl_c1 daAlinkHIO_wlAtWaTl_c0::m = {
const daAlinkHIO_wlAtWait_c1 daAlinkHIO_wlAtWaTl_c0::m = {
{
42,
1.05f,
-6
View File
@@ -160,8 +160,6 @@ void daAlink_c::setBoomerangReadyQuake() {
}
/* 800E055C-800E05E8 0DAE9C 008C+00 2/2 0/0 0/0 .text setBoomerangReadyAnime__9daAlink_cFv */
#pragma push
#pragma optimization_level 2
void daAlink_c::setBoomerangReadyAnime() {
f32 var_f31;
if (i_checkAttentionLock()) {
@@ -173,7 +171,6 @@ void daAlink_c::setBoomerangReadyAnime() {
setUpperAnimeBaseSpeed(0x54, var_f31, lit_6109);
setBoomerangReadyQuake();
}
#pragma pop
/* 800E05E8-800E0630 0DAF28 0048+00 2/2 0/0 0/0 .text setThrowBoomerangAnime__9daAlink_cFv */
void daAlink_c::setThrowBoomerangAnime() {
@@ -313,8 +310,6 @@ void daAlink_c::checkUpperItemActionBoomerangFly() {
}
/* 800E0BE4-800E0D8C 0DB524 01A8+00 4/4 0/0 0/0 .text checkNextActionBoomerang__9daAlink_cFv */
#pragma push
#pragma optimization_level 2
int daAlink_c::checkNextActionBoomerang() {
if ((checkBoomerangCatchAnime() &&
mUpperFrameCtrl[2].getFrame() <= daAlinkHIO_boom_c0::m.mCatchAnm.mCheckFrame) ||
@@ -355,7 +350,6 @@ int daAlink_c::checkNextActionBoomerang() {
return procBoomerangMoveInit();
}
}
#pragma pop
/* 800E0D8C-800E0E64 0DB6CC 00D8+00 1/1 0/0 0/0 .text checkBoomerangCatchAction__9daAlink_cFv */
int daAlink_c::checkBoomerangCatchAction() {
+12 -12
View File
@@ -119,21 +119,21 @@ int daAlink_c::procBottleDrinkInit(u16 param_0) {
setBottleModel(param_0);
dComIfGp_setPlayerStatus1(0, 0x2000);
field_0x3194 = 1;
field_0x3008 = 0;
mProcVar0.field_0x3008 = 0;
u32 id = fopAcM_GetID(this);
dCam_getBody()->StartEventCamera(0x12, id, "Type", 1, &field_0x3194, 0);
field_0x300c = 0;
field_0x300e.x = 0;
mProcVar2.field_0x300c = 0;
mProcVar3.field_0x300e.x = 0;
return 1;
}
/* 8010F698-8010F6F4 109FD8 005C+00 1/0 0/0 0/0 .text procBottleDrink__9daAlink_cFv */
int daAlink_c::procBottleDrink() {
if (field_0x300e.x != 0) {
if (mProcVar3.field_0x300e.x != 0) {
dComIfGp_evmng_cutEnd(field_0x3184);
} else {
field_0x300e.x = commonBottleDrink(0);
mProcVar3.field_0x300e.x = commonBottleDrink(0);
}
return 1;
@@ -158,9 +158,9 @@ int daAlink_c::procBottleOpenInit(u16 param_0) {
keepItemData();
setBottleModel(param_0);
dComIfGp_setPlayerStatus1(0, 0x4000);
field_0x300a = 0;
mProcVar1.field_0x300a = 0;
field_0x32cc = -1;
field_0x3008 = 1;
mProcVar0.field_0x3008 = 1;
if (mEquipItem == FAIRY) {
field_0x3194 = 3;
@@ -170,23 +170,23 @@ int daAlink_c::procBottleOpenInit(u16 param_0) {
if (mEquipItem == WORM) {
field_0x32cc = fopAcM_create(PROC_NPC_WORM, 2, &current.pos, fopAcM_GetRoomNo(this),
NULL, NULL, -1);
field_0x3008 = 0;
field_0x300a = 1;
mProcVar0.field_0x3008 = 0;
mProcVar1.field_0x300a = 1;
}
}
field_0x300e.x = 0;
mProcVar3.field_0x300e.x = 0;
u32 id = fopAcM_GetID(this);
dCam_getBody()->StartEventCamera(0x12, id, "Type", 1, &field_0x3194, 0);
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
field_0x27c8.initialize();
if (param_0 == 0x67) {
setCylAtParam(0x200, 0, 0, 0, 0, 30.0f, 30.0f);
}
field_0x300e.y = 0;
mProcVar3.field_0x300e.y = 0;
return 1;
}
+3 -9
View File
@@ -167,16 +167,11 @@ asm void daAlink_c::changeArrowType() {
#pragma pop
/* 800DED88-800DEE1C 0D96C8 0094+00 1/1 0/0 0/0 .text cancelBowMoveRideNotAtn__9daAlink_cFv */
#pragma push
#pragma optimization_level 2
BOOL daAlink_c::cancelBowMoveRideNotAtn() {
return i_checkModeFlg(0x400) && i_checkAttentionLock() && mTargetedActor == NULL;
}
#pragma pop
/* 800DEE1C-800DEEDC 0D975C 00C0+00 3/3 0/0 0/0 .text cancelBowMove__9daAlink_cFv */
#pragma push
#pragma optimization_level 2
BOOL daAlink_c::cancelBowMove() {
if (mTargetedActor == NULL && !i_checkAttentionLock() && mFastShotTime == 0 &&
!checkBowReadyAnime() && (!checkBowShootAnime() || mUpperFrameCtrl[2].checkAnmEnd()))
@@ -187,7 +182,6 @@ BOOL daAlink_c::cancelBowMove() {
return false;
}
#pragma pop
/* 800DEEDC-800DEFB8 0D981C 00DC+00 3/3 0/0 0/0 .text setBowReadyAnime__9daAlink_cFv */
void daAlink_c::setBowReadyAnime() {
@@ -370,7 +364,7 @@ int daAlink_c::procBowMoveInit() {
}
setBlendAtnMoveAnime(daAlinkHIO_bow_c0::m.mStartInterpolation);
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
setBowOrSlingStatus();
return 1;
}
@@ -379,11 +373,11 @@ int daAlink_c::procBowMoveInit() {
int daAlink_c::procBowMove() {
cancelBowMove();
if (mFastShotTime == 0 && field_0x300c != 0 && checkBowWaitAnime() && !itemButton()) {
if (mFastShotTime == 0 && mProcVar2.field_0x300c != 0 && checkBowWaitAnime() && !itemButton()) {
resetUpperAnime(UPPER_2, lit_6041);
}
field_0x300c = 1;
mProcVar2.field_0x300c = 1;
i_onEndResetFlg0(ERFLG0_UNK_8000000);
if (!checkNextAction(0)) {
+10 -10
View File
@@ -127,11 +127,11 @@ BOOL daAlink_c::checkCanoeFishingRodGrabOrPut() const {
/* 800F3FC4-800F4008 0EE904 0044+00 2/2 0/0 0/0 .text initCanoeRide__9daAlink_cFv */
void daAlink_c::initCanoeRide() {
field_0x300e.z = 1;
mProcVar3.field_0x300e.z = 1;
field_0x3588 = l_waitBaseAnime;
field_0x384c = (cXyz*)&l_canoeBaseAnime;
mRideStatus = 3;
field_0x300e.y = 0;
mProcVar3.field_0x300e.y = 0;
}
/* 800F4008-800F40E4 0EE948 00DC+00 2/2 0/0 0/0 .text checkCanoeJumpRide__9daAlink_cFv */
@@ -146,7 +146,7 @@ BOOL daAlink_c::checkCanoeJumpRide() {
if (speed.y < FLOAT_LABEL(lit_6108) && canoe != NULL && fopAcM_GetName(canoe) == PROC_CANOE &&
canoe->checkJumpRideFlg() && !checkDeadHP() &&
(mProcID != PROC_FALL || field_0x300e.y != 0)) {
(mProcID != PROC_FALL || mProcVar3.field_0x300e.y != 0)) {
return procCanoeJumpRideInit(canoe);
}
@@ -267,11 +267,11 @@ int daAlink_c::procCanoeRideInit() {
if ((s16)(fopAcM_searchActorAngleY(canoe, this) - canoe->shape_angle.y) > 0) {
shape_angle.y = canoe->shape_angle.y - 0x4000;
field_0x3008 = 0;
mProcVar0.field_0x3008 = 0;
field_0x37c8.x = lit_20991;
} else {
shape_angle.y = canoe->shape_angle.y + 0x4000;
field_0x3008 = 1;
mProcVar0.field_0x3008 = 1;
field_0x37c8.x = lit_20992;
}
@@ -279,7 +279,7 @@ int daAlink_c::procCanoeRideInit() {
current.angle.y = shape_angle.y;
initCanoeRide();
field_0x300e.x = 0x80;
mProcVar3.field_0x300e.x = 0x80;
swimOutAfter(1);
return 1;
}
@@ -297,12 +297,12 @@ int daAlink_c::procCanoeRide() {
if (frameCtrl->checkAnmEnd()) {
procCanoeWaitInit(1);
} else if (frameCtrl->getFrame() < lit_7710) {
field_0x300e.x += 0x180;
mProcVar3.field_0x300e.x += 0x180;
if (field_0x3008 == 0) {
canoe->incShapeAngleZ(-field_0x300e.x);
if (mProcVar0.field_0x3008 == 0) {
canoe->incShapeAngleZ(-mProcVar3.field_0x300e.x);
} else {
canoe->incShapeAngleZ(field_0x300e.x);
canoe->incShapeAngleZ(mProcVar3.field_0x300e.x);
}
canoe->incShapeOffsetY(lit_21021);
}
+7 -13
View File
@@ -73,7 +73,7 @@ BOOL daAlink_c::checkForestOldCentury() {
/* 800E145C-800E1530 0DBD9C 00D4+00 1/0 0/0 0/0 .text checkCopyRodTopUse__9daAlink_cFv */
BOOL daAlink_c::checkCopyRodTopUse() {
// Event flag 0x2580: Dominion Rod power restored
return (i_dComIfGs_isEventBit(0x2580) && !(mProcID == PROC_UNEQUIP && field_0x300e.x != 0)) ||
return (i_dComIfGs_isEventBit(0x2580) && !(mProcID == PROC_UNEQUIP && mProcVar3.field_0x300e.x != 0)) ||
i_dStage_stagInfo_GetSaveTbl(dComIfGp_getStageStagInfo()) == 0x15 ||
checkForestOldCentury();
}
@@ -126,8 +126,6 @@ void daAlink_c::setCopyRodModel() {
/* 800E1840-800E191C 0DC180 00DC+00 2/2 0/0 0/0 .text setCopyRodReadyAnime__9daAlink_cFv
*/
#pragma push
#pragma optimization_level 2
void daAlink_c::setCopyRodReadyAnime() {
f32 speed;
if (i_checkAttentionLock()) {
@@ -148,7 +146,6 @@ void daAlink_c::setCopyRodReadyAnime() {
mAtCps[0].SetAtType(0x1000000);
initLockAt();
}
#pragma pop
/* 800E191C-800E1A30 0DC25C 0114+00 1/1 0/0 0/0 .text throwCopyRod__9daAlink_cFv */
void daAlink_c::throwCopyRod() {
@@ -230,8 +227,6 @@ void daAlink_c::checkUpperItemActionCopyRodFly() {
}
/* 800E1C44-800E1D6C 0DC584 0128+00 2/2 0/0 0/0 .text checkNextActionCopyRod__9daAlink_cFv */
#pragma push
#pragma optimization_level 2
int daAlink_c::checkNextActionCopyRod() {
if ((checkBoomerangCatchAnime() &&
mUpperFrameCtrl[2].getFrame() <= daAlinkHIO_boom_c0::m.mCatchAnm.mCheckFrame) ||
@@ -258,7 +253,6 @@ int daAlink_c::checkNextActionCopyRod() {
return procCopyRodMoveInit();
}
#pragma pop
/* 800E1D6C-800E1E20 0DC6AC 00B4+00 1/1 0/0 0/0 .text setCopyRodSight__9daAlink_cFv */
void daAlink_c::setCopyRodSight() {
@@ -382,8 +376,8 @@ int daAlink_c::procCopyRodSwingInit() {
mNormalSpeed = FLOAT_LABEL(lit_6108);
current.angle.y = shape_angle.y;
field_0x300c = 1;
field_0x300e.x = 0;
mProcVar2.field_0x300c = 1;
mProcVar3.field_0x300e.x = 0;
voiceStart(Z2SE_AL_V_ATTACK_S);
mAtCps[0].SetR(lit_11442);
@@ -395,7 +389,7 @@ int daAlink_c::procCopyRodSwingInit() {
/* 800E21FC-800E2308 0DCB3C 010C+00 1/0 0/0 0/0 .text procCopyRodSwing__9daAlink_cFv */
int daAlink_c::procCopyRodSwing() {
daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl;
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
if (frameCtrl->checkAnmEnd()) {
setCopyRodControllAnime();
@@ -405,16 +399,16 @@ int daAlink_c::procCopyRodSwing() {
setCopyRodControllAnime();
}
} else if (frameCtrl->getFrame() >= field_0x3478 && frameCtrl->getFrame() < field_0x347c) {
if (field_0x300e.x == 0) {
if (mProcVar3.field_0x300e.x == 0) {
seStartSwordCut(Z2SE_AL_COPYROD_SWING);
}
field_0x300e.x = 1;
mProcVar3.field_0x300e.x = 1;
if (changeCutReverseProc(ANM_CUT_RECOIL_A)) {
return 1;
}
} else {
field_0x300e.x = 0;
mProcVar3.field_0x300e.x = 0;
}
return 1;
+3 -3
View File
@@ -196,7 +196,7 @@ void daAlink_c::setCrawlMoveHoll() {
f32 frame_ctrl_rate = mUnderFrameCtrl[0].getRate();
if (frame_ctrl_rate != FLOAT_LABEL(lit_6108)) {
cLib_addCalcAngleS(&shape_angle.y, field_0x300c, 5, 0x1000, 0x800);
cLib_addCalcAngleS(&shape_angle.y, mProcVar2.field_0x300c, 5, 0x1000, 0x800);
current.angle.y = shape_angle.y;
}
@@ -330,8 +330,8 @@ int daAlink_c::procCrawlAutoMoveInit(int param_0, cXyz* param_1) {
field_0x37c8 = *param_1;
field_0x33cc = lit_6040;
field_0x3198 = param_0;
field_0x3008 = 20;
field_0x300a = 300;
mProcVar0.field_0x3008 = 20;
mProcVar1.field_0x300a = 300;
dComIfGp_setPlayerStatus0(0, 0x8000000);
setCrawlMoveDirectionArrow();
+116 -125
View File
@@ -212,8 +212,6 @@ void daAlink_c::resetCombo(int param_0) {
}
/* 800D1454-800D152C 0CBD94 00D8+00 1/1 0/0 0/0 .text checkComboCnt__9daAlink_cFv */
#pragma push
#pragma optimization_level 2
void daAlink_c::checkComboCnt() {
if ((mEquipItem == EQUIP_SWORD && mComboCutCount == 2) &&
(i_checkAttentionLock() &&
@@ -228,7 +226,6 @@ void daAlink_c::checkComboCnt() {
resetCombo(1);
}
}
#pragma pop
/* 800D152C-800D1540 0CBE6C 0014+00 22/22 0/0 0/0 .text setCutType__9daAlink_cFUc */
void daAlink_c::setCutType(u8 type) {
@@ -519,10 +516,10 @@ void daAlink_c::setSwordVoiceSe(u32 i_seID) {
/* 800D22BC-800D2304 0CCBFC 0048+00 3/3 0/0 0/0 .text setSwordChargeVoiceSe__9daAlink_cFv
*/
void daAlink_c::setSwordChargeVoiceSe() {
if (field_0x300c != 0) {
field_0x300c--;
if (mProcVar2.field_0x300c != 0) {
mProcVar2.field_0x300c--;
if (field_0x300c == 0) {
if (mProcVar2.field_0x300c == 0) {
setSwordVoiceSe(Z2SE_AL_V_TAME);
}
}
@@ -545,8 +542,6 @@ bool daAlink_c::checkCutTurnInputTrigger() {
}
/* 800D23C0-800D2684 0CCD00 02C4+00 7/7 0/0 0/0 .text checkCutAction__9daAlink_cFv */
#pragma push
#pragma optimization_level 2
int daAlink_c::checkCutAction() {
if (commonCutAction()) {
return 1;
@@ -580,8 +575,8 @@ int daAlink_c::checkCutAction() {
} else {
procCutNormalInit(normalType3[cutDir]);
}
} else if (mProcID == PROC_CUT_NORMAL && field_0x300a != 4) {
if (field_0x300a == 2) {
} else if (mProcID == PROC_CUT_NORMAL && mProcVar1.field_0x300a != 4) {
if (mProcVar1.field_0x300a == 2) {
procCutNormalInit(1);
} else {
procCutNormalInit(2);
@@ -600,18 +595,17 @@ int daAlink_c::checkCutAction() {
return 1;
}
#pragma pop
/* 800D2684-800D26EC 0CCFC4 0068+00 9/9 0/0 0/0 .text checkCutTurnCharge__9daAlink_cFv */
void daAlink_c::checkCutTurnCharge() {
if (swordButton()) {
if (field_0x300e.z < 3) {
field_0x300e.z++;
if (mProcVar3.field_0x300e.z < 3) {
mProcVar3.field_0x300e.z++;
} else {
i_onResetFlg0(RFLG0_UNK_40);
}
} else {
field_0x300e.z = 0;
mProcVar3.field_0x300e.z = 0;
}
}
@@ -729,9 +723,9 @@ void daAlink_c::cancelCutCharge() {
*/
void daAlink_c::initCutAtnActorSearch() {
if (cLib_distanceAngleS(getShapeAngleYAtnActor(), shape_angle.y) < 0x800) {
field_0x300e.y = 1;
mProcVar3.field_0x300e.y = 1;
} else {
field_0x300e.y = 0;
mProcVar3.field_0x300e.y = 0;
}
field_0x32cc = (u32)mTargetedActor;
@@ -740,7 +734,7 @@ void daAlink_c::initCutAtnActorSearch() {
/* 800D2C54-800D2C78 0CD594 0024+00 3/3 0/0 0/0 .text checkCutAtnActorChange__9daAlink_cFv */
void daAlink_c::checkCutAtnActorChange() {
if (field_0x32cc != (u32)mTargetedActor) {
field_0x300e.y = 0;
mProcVar3.field_0x300e.y = 0;
field_0x32cc = (u32)mTargetedActor;
}
}
@@ -797,8 +791,6 @@ asm void daAlink_c::setCutJumpSpeed(int param_0) {
#endif
/* 800D2F58-800D31B8 0CD898 0260+00 3/3 0/0 0/0 .text procCutNormalInit__9daAlink_cFi */
#pragma push
#pragma optimization_level 2
int daAlink_c::procCutNormalInit(int i_type) {
const daAlink_cutParamTbl* cutParams = &cutParamTable_7312[i_type];
@@ -841,9 +833,9 @@ int daAlink_c::procCutNormalInit(int i_type) {
current.angle.y = shape_angle.y;
if (!i_checkAttentionLock() && checkInputOnR()) {
field_0x300c = field_0x2fe2;
mProcVar2.field_0x300c = field_0x2fe2;
} else {
field_0x300c = shape_angle.y;
mProcVar2.field_0x300c = shape_angle.y;
}
if (mComboCutCount != 1) {
@@ -856,23 +848,22 @@ int daAlink_c::procCutNormalInit(int i_type) {
setSwordAtParam(dCcG_At_Spl_UNK_0, 1, cutParams->m_atSe, 2, daAlinkHIO_cut_c0::m.mSwordLength,
daAlinkHIO_cut_c0::m.mSwordRadius);
setSwordComboVoice();
field_0x300e.z = 0;
mProcVar3.field_0x300e.z = 0;
dComIfGp_setPlayerStatus0(0, 0x8000);
setCutWaterDropEffect();
int cutDir = getCutDirection();
if (mComboCutCount == 1 && (cutDir == DIR_LEFT || cutDir == DIR_RIGHT)) {
field_0x300e.x = 1;
mProcVar3.field_0x300e.x = 1;
} else {
field_0x300e.x = 0;
mProcVar3.field_0x300e.x = 0;
}
field_0x300a = 4;
mProcVar1.field_0x300a = 4;
initCutAtnActorSearch();
return 1;
}
#pragma pop
/* 800D31B8-800D34D8 0CDAF8 0320+00 1/0 0/0 0/0 .text procCutNormal__9daAlink_cFv */
int daAlink_c::procCutNormal() {
@@ -890,14 +881,14 @@ int daAlink_c::procCutNormal() {
i_onEndResetFlg0(ERFLG0_UNK_8000000);
field_0x2f99 = 4;
if (field_0x300e.x != 0 && i_checkNoResetFlg2(FLG2_UNK_2)) {
if (mProcVar3.field_0x300e.x != 0 && i_checkNoResetFlg2(FLG2_UNK_2)) {
int cutDir = getCutDirection();
if ((cutDir == DIR_RIGHT && mCutType == CUT_TYPE_NM_LEFT &&
frameCtrl->getFrame() > lit_7448) ||
(cutDir == DIR_LEFT && mCutType == CUT_TYPE_NM_RIGHT &&
frameCtrl->getFrame() > lit_7448))
{
field_0x300a = cutDir;
mProcVar1.field_0x300a = cutDir;
}
}
@@ -909,7 +900,7 @@ int daAlink_c::procCutNormal() {
} else {
checkNextAction(0);
}
} else if ((!(frameCtrl->getFrame() > field_0x3484) && field_0x300a == 4) ||
} else if ((!(frameCtrl->getFrame() > field_0x3484) && mProcVar1.field_0x300a == 4) ||
!checkCutCancelNextMode(3))
{
if (frameCtrl->getFrame() > field_0x3484) {
@@ -920,14 +911,14 @@ int daAlink_c::procCutNormal() {
return 1;
}
if (setShapeAngleToAtnActor(field_0x300e.y)) {
field_0x300c = shape_angle.y;
if (setShapeAngleToAtnActor(mProcVar3.field_0x300e.y)) {
mProcVar2.field_0x300c = shape_angle.y;
if (cLib_distanceAngleS(getShapeAngleYAtnActor(), shape_angle.y) < 0x800) {
field_0x300e.y = 1;
mProcVar3.field_0x300e.y = 1;
}
} else {
cLib_addCalcAngleS(&shape_angle.y, field_0x300c, 2, 0x2000, 0x800);
cLib_addCalcAngleS(&shape_angle.y, mProcVar2.field_0x300c, 2, 0x2000, 0x800);
}
current.angle.y = shape_angle.y;
@@ -970,8 +961,8 @@ int daAlink_c::procCutFinishInit(int i_type) {
commonProcInit(PROC_CUT_FINISH);
setCutType(cutParams->m_cutType);
field_0x3198 = cutParams->field_0x4;
field_0x300c = cutParams->field_0xa;
field_0x300e.x = cutParams->field_0xb;
mProcVar2.field_0x300c = cutParams->field_0xa;
mProcVar3.field_0x300e.x = cutParams->field_0xb;
BOOL var_r30 = FALSE;
if (i_type == 0) {
@@ -1022,13 +1013,13 @@ int daAlink_c::procCutFinishInit(int i_type) {
if (mComboCutCount == 3) {
field_0x3484 = cutData->mComboCheckFrame;
field_0x3008 = cutData->mComboStopTime;
mProcVar0.field_0x3008 = cutData->mComboStopTime;
setSwordAtParam(dCcG_At_Spl_UNK_0, 1, cutParams->m_atSe, 2,
daAlinkHIO_cut_c0::m.mSwordLength, daAlinkHIO_cut_c0::m.mSwordRadius);
field_0x32d0 = Z2SE_AL_SWORD_SWING_S;
} else {
field_0x3484 = cutData->mCutAnm.mCheckFrame;
field_0x3008 = cutData->mStopTime;
mProcVar0.field_0x3008 = cutData->mStopTime;
setSwordAtParam(dCcG_At_Spl_UNK_1, 3, cutParams->m_atSe, (var_r30 ? TRUE : FALSE) + 3,
daAlinkHIO_cut_c0::m.mSwordLength, daAlinkHIO_cut_c0::m.mSwordRadius);
@@ -1052,7 +1043,7 @@ int daAlink_c::procCutFinishInit(int i_type) {
field_0x2f99 = 13;
}
field_0x300e.z = 0;
mProcVar3.field_0x300e.z = 0;
dComIfGp_setPlayerStatus0(0, 0x8000);
setCutWaterDropEffect();
initCutAtnActorSearch();
@@ -1096,18 +1087,18 @@ int daAlink_c::procCutFinish() {
field_0x2f99 = 4;
}
if (frameCtrl_p->getFrame() >= field_0x300e.x) {
if (frameCtrl_p->getFrame() >= mProcVar3.field_0x300e.x) {
onModeFlg(0x100);
} else if (frameCtrl_p->getFrame() >= field_0x300c) {
} else if (frameCtrl_p->getFrame() >= mProcVar2.field_0x300c) {
offModeFlg(0x100);
}
if (checkAnmEnd(frameCtrl_p)) {
resetCombo(1);
if (field_0x3008 > 0) {
if (mProcVar0.field_0x3008 > 0) {
if (!(frameCtrl_p->getFrame() > field_0x3484) || !checkCutCancelNextMode(3)) {
field_0x3008--;
mProcVar0.field_0x3008--;
}
} else if (mDemo.getDemoMode() == 0x24 || mDemo.getDemoMode() == 0x54) {
dComIfGp_evmng_cutEnd(field_0x3184);
@@ -1125,10 +1116,10 @@ int daAlink_c::procCutFinish() {
return 1;
}
setShapeAngleToAtnActor(field_0x300e.y);
setShapeAngleToAtnActor(mProcVar3.field_0x300e.y);
if (cLib_distanceAngleS(getShapeAngleYAtnActor(), shape_angle.y) < 0x800) {
field_0x300e.y = 1;
mProcVar3.field_0x300e.y = 1;
}
current.angle.y = shape_angle.y;
@@ -1199,7 +1190,7 @@ int daAlink_c::procCutFinishJumpUpInit() {
daAlinkHIO_cutFnJU_c0::m.mCutAnm.mEndFrame,
daAlinkHIO_cutFnJU_c0::m.mCutAnm.mInterpolation);
setSwordVoiceSe(Z2SE_AL_V_SOTOMO_ATK);
field_0x300e.z = 0;
mProcVar3.field_0x300e.z = 0;
field_0x3478 = current.pos.y;
dComIfGp_setPlayerStatus0(0, 0x8000);
setCutWaterDropEffect();
@@ -1258,13 +1249,13 @@ int daAlink_c::procCutFinishJumpUpLandInit() {
if (mComboCutCount == 3) {
field_0x3484 = daAlinkHIO_cutFnJU_c0::m.mComboCheckFrame;
field_0x3008 = daAlinkHIO_cutFnJU_c0::m.mComboStopTime;
mProcVar0.field_0x3008 = daAlinkHIO_cutFnJU_c0::m.mComboStopTime;
} else {
field_0x3484 = daAlinkHIO_cutFnJU_c0::m.mLandAnm.mCheckFrame;
field_0x3008 = daAlinkHIO_cutFnJU_c0::m.mStopTime;
mProcVar0.field_0x3008 = daAlinkHIO_cutFnJU_c0::m.mStopTime;
}
field_0x300e.z = 0;
mProcVar3.field_0x300e.z = 0;
field_0x3588 = l_halfAtnWaitBaseAnime;
initCutAtnActorSearch();
return 1;
@@ -1287,9 +1278,9 @@ int daAlink_c::procCutFinishJumpUpLand() {
if (frameCtrl->checkAnmEnd()) {
if (mDemo.getDemoMode() == 0x52) {
dComIfGp_evmng_cutEnd(field_0x3184);
} else if (field_0x3008 > 0) {
} else if (mProcVar0.field_0x3008 > 0) {
if (!(frameCtrl->getFrame() > field_0x3484) || !checkCutCancelNextMode(3)) {
field_0x3008--;
mProcVar0.field_0x3008--;
}
} else {
mNormalSpeed = FLOAT_LABEL(lit_6108);
@@ -1301,10 +1292,10 @@ int daAlink_c::procCutFinishJumpUpLand() {
resetCombo(1);
}
setShapeAngleToAtnActor(field_0x300e.y);
setShapeAngleToAtnActor(mProcVar3.field_0x300e.y);
if (cLib_distanceAngleS(getShapeAngleYAtnActor(), shape_angle.y) < 0x800) {
field_0x300e.y = 1;
mProcVar3.field_0x300e.y = 1;
}
current.angle.y = shape_angle.y;
@@ -1330,13 +1321,13 @@ int daAlink_c::procCutReverseInit(daAlink_c::daAlink_ANM i_anmID) {
if (i_anmID == ANM_SHIELD_ATTACK_RECOIL) {
setSingleAnimeParam(i_anmID, &daAlinkHIO_guard_c0::m.mRecoilAnm);
field_0x300c = 1;
mProcVar2.field_0x300c = 1;
field_0x3478 = daAlinkHIO_guard_c0::m.mRecoilAnm.mCheckFrame;
field_0x2f98 = 2;
setUpperGuardAnime(lit_6041);
} else {
setSingleAnimeParam(i_anmID, &daAlinkHIO_cut_c0::m.mRecoilAnm);
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
field_0x3478 = daAlinkHIO_cut_c0::m.mRecoilAnm.mCheckFrame;
field_0x2f98 = 4;
}
@@ -1344,7 +1335,7 @@ int daAlink_c::procCutReverseInit(daAlink_c::daAlink_ANM i_anmID) {
mNormalSpeed = daAlinkHIO_cut_c0::m.mRecoilSpeed;
current.angle.y = shape_angle.y - -0x8000;
field_0x307e = 0;
field_0x300e.z = 0;
mProcVar3.field_0x300e.z = 0;
int temp_r3;
if (mCutType == CUT_TYPE_MORTAL_DRAW_A || mCutType == CUT_TYPE_MORTAL_DRAW_B ||
@@ -1369,12 +1360,12 @@ int daAlink_c::procCutReverse() {
daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl;
cLib_chaseF(&mNormalSpeed, FLOAT_LABEL(lit_6108), daAlinkHIO_cut_c0::m.mRecoilDeceleration);
if (field_0x300c == 0) {
if (mProcVar2.field_0x300c == 0) {
checkCutTurnCharge();
i_onEndResetFlg0(ERFLG0_UNK_8000000);
}
if (field_0x300c != 0) {
if (mProcVar2.field_0x300c != 0) {
setUpperGuardAnime(lit_6041);
}
@@ -1545,8 +1536,8 @@ int daAlink_c::procCutTurnInit(int param_0, int param_1) {
field_0x3484 = cutData->mRightAttackStartFrame;
field_0x3488 = cutData->mRightAttackEndFrame;
field_0x300e.y = 1;
field_0x300a = 6;
mProcVar3.field_0x300e.y = 1;
mProcVar1.field_0x300a = 6;
} else {
anmID = ANM_CUT_TURN_LEFT;
anm_data = &cutData->mLeftTurnAnm;
@@ -1559,8 +1550,8 @@ int daAlink_c::procCutTurnInit(int param_0, int param_1) {
field_0x3484 = cutData->mLeftAttackStartFrame;
field_0x3488 = cutData->mLeftAttackEndFrame;
field_0x300e.y = 0;
field_0x300a = 8;
mProcVar3.field_0x300e.y = 0;
mProcVar1.field_0x300a = 8;
}
field_0x3480 = anm_data->->mCheckFrame;
@@ -1610,12 +1601,12 @@ int daAlink_c::procCutTurnInit(int param_0, int param_1) {
field_0x347c = lit_6896;
field_0x3588 = l_halfAtnWaitBaseAnime;
field_0x3008 = cutData->mStopTime;
mProcVar0.field_0x3008 = cutData->mStopTime;
current.angle.y = shape_angle.y;
field_0x3180 = 0;
dComIfGp_setPlayerStatus0(0, 0x8000);
mNormalSpeed = FLOAT_LABEL(lit_6108);
field_0x300e.z = 0;
mProcVar3.field_0x300e.z = 0;
setCutWaterDropEffect();
initCutTurnAt(field_0x347c, var_r29_3);
return 1;
@@ -1651,9 +1642,9 @@ int daAlink_c::procCutTurn() {
}
if (frameCtrl->checkAnmEnd()) {
if (field_0x3008 > 0) {
if (mProcVar0.field_0x3008 > 0) {
if (!(frameCtrl->getFrame() > field_0x3480) || !checkCutCancelNextMode(3)) {
field_0x3008--;
mProcVar0.field_0x3008--;
}
} else if (mDemo.getDemoMode() == 0x24) {
dComIfGp_evmng_cutEnd(field_0x3184);
@@ -1693,7 +1684,7 @@ int daAlink_c::procCutTurnChargeInit() {
setSingleAnimeParam(ANM_CUT_TURN_CHARGE_START, &daAlinkHIO_cutTurn_c0::m.mChargeAnm);
mNormalSpeed = FLOAT_LABEL(lit_6108);
current.angle.y = shape_angle.y;
field_0x300c = daAlinkHIO_cut_c0::m.mNormalSwingDuration;
mProcVar2.field_0x300c = daAlinkHIO_cut_c0::m.mNormalSwingDuration;
return 1;
}
@@ -1707,7 +1698,7 @@ int daAlink_c::procCutTurnCharge() {
field_0x307e = daAlinkHIO_cut_c0::m.mComboDuration;
if (!swordButton() && mDemo.getDemoMode() != 0x5B) {
if (field_0x300c != 0) {
if (mProcVar2.field_0x300c != 0) {
checkCutAction();
} else {
cancelCutCharge();
@@ -1748,10 +1739,10 @@ int daAlink_c::procCutTurnMoveInit(int param_0) {
if (!checkWoodSwordEquip()) {
simpleAnmPlay(m_nSwordBtk);
} else {
field_0x3008 = 1;
mProcVar0.field_0x3008 = 1;
}
field_0x300c = param_0;
mProcVar2.field_0x300c = param_0;
i_onNoResetFlg1(FLG1_UNK_10000000);
dComIfGp_setPlayerStatus0(0, 0x40000000);
return 1;
@@ -1766,9 +1757,9 @@ int daAlink_c::procCutTurnMove() {
if (!checkWoodSwordEquip()) {
simpleAnmPlay(m_nSwordBtk);
} else {
field_0x3008++;
if (field_0x3008 >= 14.0f) {
field_0x3008 = 100;
mProcVar0.field_0x3008++;
if (mProcVar0.field_0x3008 >= 14.0f) {
mProcVar0.field_0x3008 = 100;
}
}
@@ -1779,9 +1770,9 @@ int daAlink_c::procCutTurnMove() {
return 1;
}
BOOL var_r4 = m_nSwordBtk->getFrame() >= 14.0f || field_0x3008 >= 14.0f;
BOOL var_r4 = m_nSwordBtk->getFrame() >= 14.0f || mProcVar0.field_0x3008 >= 14.0f;
if (field_0x300c != 0) {
if (mProcVar2.field_0x300c != 0) {
if (checkDownAttackState() && !var_r4) {
setDoStatusEmphasys(0x30);
} else if (checkCutHeadState() && !var_r4) {
@@ -1797,7 +1788,7 @@ int daAlink_c::procCutTurnMove() {
if (var_r4) {
dComIfGp_evmng_cutEnd(field_0x3184);
}
} else if ((field_0x300c == 0 && swordButton()) || (field_0x300c != 0 && doButton())) {
} else if ((mProcVar2.field_0x300c == 0 && swordButton()) || (mProcVar2.field_0x300c != 0 && doButton())) {
f32 var_f30 = 0.0f;
i_onResetFlg0(RFLG0_UNK_10);
@@ -1871,12 +1862,12 @@ int daAlink_c::procCutTurnMove() {
mSpeedModifier = 1.0f;
}
} else if (var_r4) {
if (field_0x300c != 0) {
if (mProcVar2.field_0x300c != 0) {
procCutLargeJumpInit();
} else {
procCutTurnInit(0, 1);
}
} else if (field_0x300c != 0) {
} else if (mProcVar2.field_0x300c != 0) {
checkDoCutAction();
} else {
cancelCutCharge();
@@ -1908,14 +1899,14 @@ int daAlink_c::procCutDownInit() {
resetCombo(1);
cXyz sp2C;
field_0x300e.x = 0;
mProcVar3.field_0x300e.x = 0;
if (mTargetedActor != NULL) {
sp2C = static_cast<fopEn_enemy_c*>(mTargetedActor)->getDownPos();
field_0x280c.setData(mTargetedActor);
if (fopAcM_GetName(mTargetedActor) == PROC_B_GND) {
field_0x300e.x = 1;
mProcVar3.field_0x300e.x = 1;
}
} else {
sp2C.set(current.pos.x + cM_ssin(shape_angle.y) * 100.0f, current.pos.y,
@@ -1923,7 +1914,7 @@ int daAlink_c::procCutDownInit() {
field_0x280c.clearData();
}
if (field_0x300e.x != 0) {
if (mProcVar3.field_0x300e.x != 0) {
mNormalSpeed = 0.0f;
speed.y = 0.0f;
offModeFlg(2);
@@ -1967,7 +1958,7 @@ int daAlink_c::procCutDownInit() {
temp_f1 = JMAFastSqrt(temp_f1 * 2.0f * var_f5);
mNormalSpeed = var_f31 / (temp_f1 - var_f4 * var_f5);
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
}
setSwordVoiceSe(Z2SE_AL_V_TODOME_JUMP);
@@ -1988,14 +1979,14 @@ asm int daAlink_c::procCutDownInit() {
/* 800D57F8-800D58A0 0D0138 00A8+00 1/0 0/0 0/0 .text procCutDown__9daAlink_cFv */
int daAlink_c::procCutDown() {
if (field_0x300e.x != 0) {
if (mProcVar3.field_0x300e.x != 0) {
return 1;
}
if (mLinkAcch.ChkGroundHit() && speed.y <= FLOAT_LABEL(lit_6108)) {
procCutDownLandInit((fopEn_enemy_c*)field_0x280c.getActor());
} else if (mUnderFrameCtrl[0].checkAnmEnd() && field_0x300c == 0) {
field_0x300c = 1;
} else if (mUnderFrameCtrl[0].checkAnmEnd() && mProcVar2.field_0x300c == 0) {
mProcVar2.field_0x300c = 1;
setSingleAnimeParam(ANM_CUT_FINISHING_BLOW_FALL, &daAlinkHIO_cutDown_c0::m.mFallAnm);
}
@@ -2016,7 +2007,7 @@ int daAlink_c::procCutDownLandInit(fopEn_enemy_c* i_enemy) {
mSwordTopPos.abs2XZ(i_enemy->getDownPos()) < 10000.0f &&
fabsf(i_enemy->current.pos.y - current.pos.y) < 100.0f))
{
field_0x300e.x = 1;
mProcVar3.field_0x300e.x = 1;
if (i_enemy != NULL) {
i_enemy->onCutDownHitFlg();
@@ -2025,16 +2016,16 @@ int daAlink_c::procCutDownLandInit(fopEn_enemy_c* i_enemy) {
}
var_r30 = 0x20;
field_0x3008 = daAlinkHIO_cutDown_c0::m.mSuccessStopTime;
mProcVar0.field_0x3008 = daAlinkHIO_cutDown_c0::m.mSuccessStopTime;
dComIfGp_getVibration().StartShock(4, 31, cXyz(0.0f, 1.0f, 0.0f));
} else {
var_r30 = mPolySound;
field_0x300e.x = 0;
field_0x3008 = daAlinkHIO_cutDown_c0::m.mFailStopTime;
mProcVar3.field_0x300e.x = 0;
mProcVar0.field_0x3008 = daAlinkHIO_cutDown_c0::m.mFailStopTime;
}
mZ2Link.startCollisionSE(Z2SE_HIT_SWORD_STAB, var_r30);
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
mNormalSpeed = 0.0f;
i_offResetFlg0(RFLG0_UNK_8000000);
@@ -2042,7 +2033,7 @@ int daAlink_c::procCutDownLandInit(fopEn_enemy_c* i_enemy) {
setFootEffectProcType(2);
i_onResetFlg1(RFLG1_UNK_30);
field_0x300e.y = 0;
mProcVar3.field_0x300e.y = 0;
dComIfGp_setPlayerStatus1(0, 0x400000);
field_0x3588 = l_halfAtnWaitBaseAnime;
@@ -2071,15 +2062,15 @@ int daAlink_c::procCutDownLand() {
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
field_0x2f99 = 4;
if (field_0x300c != 0) {
if (mProcVar2.field_0x300c != 0) {
i_onEndResetFlg0(ERFLG0_UNK_8000000);
}
if (checkAnmEnd(frameCtrl_p)) {
if (field_0x300c == 0) {
if (field_0x3008 != 0) {
field_0x3008--;
} else if (field_0x300e.x != 0) {
if (mProcVar2.field_0x300c == 0) {
if (mProcVar0.field_0x3008 != 0) {
mProcVar0.field_0x3008--;
} else if (mProcVar3.field_0x300e.x != 0) {
if (mDemo.getDemoMode() == 0x51) {
dComIfGp_evmng_cutEnd(field_0x3184);
} else {
@@ -2088,16 +2079,16 @@ int daAlink_c::procCutDownLand() {
} else {
setSingleAnimeParam(ANM_CUT_FINISHING_BLOW_MISS,
&daAlinkHIO_cutDown_c0::m.mMissAnm);
field_0x300c = 1;
mProcVar2.field_0x300c = 1;
}
} else {
checkNextAction(0);
}
} else if (field_0x300c != 0) {
} else if (mProcVar2.field_0x300c != 0) {
if (frameCtrl_p->getFrame() >= 37.0f) {
field_0x300e.y = 0;
mProcVar3.field_0x300e.y = 0;
} else if (frameCtrl_p->getFrame() >= 30.0f) {
field_0x300e.y = 254;
mProcVar3.field_0x300e.y = 254;
}
if (frameCtrl_p->checkPass(54.0f)) {
@@ -2159,7 +2150,7 @@ int daAlink_c::procCutHeadInit() {
field_0x3478 = (fvar5 * 2.0f) / (fvar10 * 3.0f * fvar10);
mNormalSpeed = field_0x3478 * fvar10 * 2.0f;
field_0x300e.x = 0;
mProcVar3.field_0x300e.x = 0;
current.angle.y = sp2C.atan2sX_Z();
shape_angle.y = current.angle.y;
@@ -2184,7 +2175,7 @@ asm int daAlink_c::procCutHeadInit() {
/* 800D5FC8-800D6130 0D0908 0168+00 1/0 0/0 0/0 .text procCutHead__9daAlink_cFv */
int daAlink_c::procCutHead() {
if (field_0x300e.x == 0) {
if (mProcVar3.field_0x300e.x == 0) {
cLib_chaseF(&mNormalSpeed, FLOAT_LABEL(lit_6108), field_0x3478);
if (speed.y <= FLOAT_LABEL(lit_6108)) {
@@ -2193,7 +2184,7 @@ int daAlink_c::procCutHead() {
mNormalSpeed = tmp_0;
speed.y = tmp_0;
setSpecialGravity(tmp_0, mMaxFallSpeed, 0);
field_0x300e.x = 1;
mProcVar3.field_0x300e.x = 1;
setCutWaterDropEffect();
setSwordVoiceSe(Z2SE_AL_V_KABUTO_ATK);
}
@@ -2259,7 +2250,7 @@ int daAlink_c::procCutLargeJumpChargeInit() {
setSingleAnimeParam(ANM_CUT_JUMP_LARGE_CHARGE, &daAlinkHIO_cutLargeJump_c0::m.mChargeAnm);
mNormalSpeed = FLOAT_LABEL(lit_6108);
current.angle.y = shape_angle.y;
field_0x300c = daAlinkHIO_cut_c0::m.mNormalSwingDuration;
mProcVar2.field_0x300c = daAlinkHIO_cut_c0::m.mNormalSwingDuration;
return 1;
}
@@ -2302,15 +2293,15 @@ int daAlink_c::procCutLargeJumpInit() {
field_0x3588 = l_halfAtnWaitBaseAnime;
mNormalSpeed = FLOAT_LABEL(lit_6108);
current.angle.y = shape_angle.y;
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
setSwordAtParam(dCcG_At_Spl_UNK_0, 1, 1, 2, daAlinkHIO_cut_c0::m.mSwordLength,
daAlinkHIO_cut_c0::m.mSwordRadius);
setCutType(CUT_TYPE_LARGE_JUMP_INIT);
setSwordVoiceSe(Z2SE_AL_V_JUMP_ATTACK_L_1);
setCutWaterDropEffect();
field_0x300e.x = 4;
field_0x300e.y = 0;
mProcVar3.field_0x300e.x = 4;
mProcVar3.field_0x300e.y = 0;
field_0x3198 = 2;
return 1;
}
@@ -2319,7 +2310,7 @@ int daAlink_c::procCutLargeJumpInit() {
int daAlink_c::procCutLargeJump() {
daPy_frameCtrl_c* frameCtrl = &mUnderFrameCtrl[0];
if (field_0x300e.y != 0) {
if (mProcVar3.field_0x300e.y != 0) {
field_0x2f99 = 4;
}
@@ -2327,15 +2318,15 @@ int daAlink_c::procCutLargeJump() {
field_0x3198 = getCutTurnDirection();
}
if (field_0x300c == 0) {
if (mProcVar2.field_0x300c == 0) {
if (frameCtrl->checkAnmEnd()) {
field_0x2f99 = 12;
setSingleAnimeParam(ANM_CUT_JUMP_LARGE, &daAlinkHIO_cutLargeJump_c0::m.mCutAnm);
field_0x300c = 1;
mProcVar2.field_0x300c = 1;
setSwordVoiceSe(Z2SE_AL_V_JUMP_ATTACK_L_2);
} else {
if (frameCtrl->getFrame() >= lit_7307) {
field_0x300e.y = 1;
mProcVar3.field_0x300e.y = 1;
}
if (!i_checkModeFlg(2) && frameCtrl->getFrame() >= lit_7808) {
@@ -2355,10 +2346,10 @@ int daAlink_c::procCutLargeJump() {
}
}
} else {
if (field_0x300e.x != 0) {
field_0x300e.x--;
if (mProcVar3.field_0x300e.x != 0) {
mProcVar3.field_0x300e.x--;
if (field_0x300e.x == 0) {
if (mProcVar3.field_0x300e.x == 0) {
setSwordAtParam(dCcG_At_Spl_UNK_1, 3, 1, 4, daAlinkHIO_cut_c0::m.mSwordLength,
daAlinkHIO_cut_c0::m.mSwordRadius);
setCutType(CUT_TYPE_LARGE_JUMP);
@@ -2394,7 +2385,7 @@ int daAlink_c::procCutLargeJumpLandInit(int param_0) {
setCutType(CUT_TYPE_LARGE_JUMP);
field_0x3478 = daAlinkHIO_cutLargeJump_c0::m.mLandAttackRadius;
field_0x347c = lit_6896;
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
field_0x3198 = param_0;
f32 tmp_0 = FLOAT_LABEL(lit_6108);
@@ -2432,9 +2423,9 @@ int daAlink_c::procCutLargeJumpLand() {
i_onResetFlg0(RFLG0_UNK_2);
if (frameCtrl->getFrame() >= daAlinkHIO_cutLargeJump_c0::m.mLandAttackInitFrame) {
if (field_0x300c == 0) {
if (mProcVar2.field_0x300c == 0) {
resetAtCollision(0);
field_0x300c = 1;
mProcVar2.field_0x300c = 1;
setCutType(CUT_TYPE_LARGE_JUMP_FINISH);
initCutTurnAt(field_0x347c, 4);
}
@@ -2457,9 +2448,9 @@ int daAlink_c::procSwordUnequipSpInit() {
mNormalSpeed = FLOAT_LABEL(lit_6108);
field_0x3588 = l_halfAtnWaitBaseAnime;
field_0x3198 = 0;
field_0x300c = 0;
field_0x300e.x = (0x1E - mDemo.getDemoMode()) != 0;
field_0x300e.y = 0;
mProcVar2.field_0x300c = 0;
mProcVar3.field_0x300e.x = (0x1E - mDemo.getDemoMode()) != 0;
mProcVar3.field_0x300e.y = 0;
return 1;
}
@@ -2472,20 +2463,20 @@ int daAlink_c::procSwordUnequipSp() {
daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl;
if (field_0x300e.x != 0) {
if (mProcVar3.field_0x300e.x != 0) {
field_0x2f99 = 4;
} else {
field_0x300e.x = 1;
mProcVar3.field_0x300e.x = 1;
}
i_onEndResetFlg0(ERFLG0_UNK_8000000);
if (field_0x300c != 0) {
if (mProcVar2.field_0x300c != 0) {
i_onEndResetFlg1(ERFLG1_GANON_FINISH);
}
if (field_0x300e.y == 0 && mDemo.getDemoMode() == 0x1E && mDemo.getParam1() == 1) {
field_0x300e.y = 1;
if (mProcVar3.field_0x300e.y == 0 && mDemo.getDemoMode() == 0x1E && mDemo.getParam1() == 1) {
mProcVar3.field_0x300e.y = 1;
setFaceBasicBck(0x149);
setFaceBasicBtp(0x3E1);
}
@@ -2530,7 +2521,7 @@ int daAlink_c::procSwordUnequipSp() {
} else {
if (frameCtrl->getFrame() >= lit_7710) {
field_0x2f93 = 0xFE;
field_0x300c = 1;
mProcVar2.field_0x300c = 1;
i_onEndResetFlg1(ERFLG1_GANON_FINISH);
}
+16 -16
View File
@@ -33,23 +33,23 @@ void daAlink_c::setDkCaught(fopAc_ac_c* param_0) {
/* 800D6E24-800D6F00 0D1764 00DC+00 2/2 0/0 0/0 .text freezeTimerDamage__9daAlink_cFv */
void daAlink_c::freezeTimerDamage() {
field_0x3008--;
field_0x300a++;
mProcVar0.field_0x3008--;
mProcVar1.field_0x300a++;
if (field_0x300a % 45 == 0) {
if (mProcVar1.field_0x300a % 45 == 0) {
setDamagePoint(1, 1, 0, 0);
}
if (escapeTrigger()) {
field_0x3008 -= 2;
mProcVar0.field_0x3008 -= 2;
}
if (checkInputOnR() && abs((s16)(mStickAngle - mPrevStickAngle)) > 0x1000) {
field_0x3008 -= 2;
mProcVar0.field_0x3008 -= 2;
}
if (field_0x3008 < 0) {
field_0x3008 = 0;
if (mProcVar0.field_0x3008 < 0) {
mProcVar0.field_0x3008 = 0;
}
}
@@ -425,7 +425,7 @@ asm int daAlink_c::procCoLargeDamageWallInit(int param_0, int param_1, s16 param
*/
int daAlink_c::procCoLargeDamageWall() {
if (mUnderFrameCtrl[0].checkAnmEnd()) {
procCoLargeDamageInit(field_0x3198, field_0x3008, field_0x3080, field_0x3082, NULL, 0);
procCoLargeDamageInit(field_0x3198, mProcVar0.field_0x3008, field_0x3080, field_0x3082, NULL, 0);
}
return 1;
@@ -497,8 +497,8 @@ int daAlink_c::procLandDamage() {
}
} else {
if (frameCtrl->checkAnmEnd()) {
if (field_0x3008 > 0) {
field_0x3008--;
if (mProcVar0.field_0x3008 > 0) {
mProcVar0.field_0x3008--;
} else {
setSingleAnimeParam(ANM_DMG_FALL_RECOVER, &daAlinkHIO_damFall_c0::m.mStandAnm);
field_0x3198 = 1;
@@ -582,7 +582,7 @@ asm int daAlink_c::procDkCaught() {
void daAlink_c::setScreamWaitAnime() {
setSingleAnimeBase(ANM_WAIT_F);
voiceStart(Z2SE_AL_V_TERRORED);
field_0x300c = 1;
mProcVar2.field_0x300c = 1;
f32 tmp_0 = FLOAT_LABEL(lit_6108);
dComIfGp_getVibration().StartQuake(5, 1, cXyz(tmp_0, lit_6040, tmp_0));
@@ -597,7 +597,7 @@ int daAlink_c::procScreamWaitInit() {
} else {
setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed,
daAlinkHIO_basic_c0::m.mAnmBlendFactor);
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
}
current.angle.y = shape_angle.y;
@@ -611,7 +611,7 @@ int daAlink_c::procScreamWait() {
if (!i_checkEndResetFlg1(ERFLG1_UNK_1)) {
checkNextAction(0);
} else if (field_0x300c == 0 && i_checkEndResetFlg1(ERFLG1_UNK_2)) {
} else if (mProcVar2.field_0x300c == 0 && i_checkEndResetFlg1(ERFLG1_UNK_2)) {
setScreamWaitAnime();
}
@@ -719,7 +719,7 @@ int daAlink_c::procCoSwimFreezeReturnInit() {
u32 id = fopAcM_GetID(this);
dCam_getBody()->StartEventCamera(9, id, "Type", 1, &field_0x3194, 0);
field_0x300c = 0x2D;
mProcVar2.field_0x300c = 0x2D;
return 1;
}
@@ -727,7 +727,7 @@ int daAlink_c::procCoSwimFreezeReturnInit() {
// matches with literals
#ifdef NONMATCHING
int daAlink_c::procCoSwimFreezeReturn() {
if (field_0x300c == 0) {
if (mProcVar2.field_0x300c == 0) {
if (checkRestartDead(4, 1)) {
i_onNoResetFlg1(FLG1_UNK_40000000);
} else {
@@ -737,7 +737,7 @@ int daAlink_c::procCoSwimFreezeReturn() {
dStage_changeScene(3, 0.0f, mode, fopAcM_GetRoomNo(this), shape_angle.y, -1);
}
} else {
field_0x300c--;
mProcVar2.field_0x300c--;
}
return 1;
+257 -257
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -342,7 +342,7 @@ asm void daAlink_c::setWolfBarrierHitEffect(dBgS_LinChk& param_0) {
/* 80124144-801241E0 11EA84 009C+00 9/9 0/0 0/0 .text setCutWaterDropEffect__9daAlink_cFv
*/
void daAlink_c::setCutWaterDropEffect() {
if (field_0x32c0 > 0) {
if (field_0x32c0[0] > 0) {
cXyz sp18;
mDoMtx_multVecZero(mpLinkModel->i_getAnmMtx(1), &sp18);
dComIfGp_particle_setColor(0x2A4, &sp18, &mTevStr, NULL, NULL, FLOAT_LABEL(lit_6108), -1,
+9 -9
View File
@@ -176,7 +176,7 @@ static u8 lit_4421[12];
#pragma pop
/* 80425634-80425640 052354 000C+00 2/3 0/0 0/0 .bss l_wolfRopeBaseAnime */
static f32 l_wolfRopeBaseAnime[3];
static Vec l_wolfRopeBaseAnime;
/* 80425640-8042564C 052360 000C+00 0/1 0/0 0/0 .bss @14255 */
#pragma push
@@ -324,9 +324,9 @@ asm void daAlink_c::putObjLineCheck(dBgS_LinChk& param_0, cXyz* param_1, fopAc_a
#pragma pop
/* 800E5B6C-800E5BB4 0E04AC 0048+00 3/3 0/0 0/0 .text grabLineCheck__9daAlink_cFP4cXyzP4cXyz */
void daAlink_c::grabLineCheck(cXyz* i_start, cXyz* i_end) {
bool daAlink_c::grabLineCheck(cXyz* i_start, cXyz* i_end) {
mObjLinChk.Set(i_start, i_end, mGrabItemAcKeep.getActor());
dComIfG_Bgsp().LineCross(&mObjLinChk);
return dComIfG_Bgsp().LineCross(&mObjLinChk);
}
/* 800E5BB4-800E5CBC 0E04F4 0108+00 6/6 0/0 0/0 .text setGrabItemActor__9daAlink_cFP10fopAc_ac_c
@@ -858,8 +858,8 @@ static fopAc_ac_c* daAlink_searchGoat(fopAc_ac_c* i_actor, void*) {
/* 800E91C4-800E9210 0E3B04 004C+00 1/0 0/0 0/0 .text cancelGoronThrowEvent__9daAlink_cFv
*/
void daAlink_c::cancelGoronThrowEvent() {
if (mProcID == PROC_GOAT_CATCH && field_0x300e.z == 0) {
field_0x300e.z = 1;
if (mProcID == PROC_GOAT_CATCH && mProcVar3.field_0x300e.z == 0) {
mProcVar3.field_0x300e.z = 1;
i_dComIfGp_event_reset();
}
}
@@ -892,14 +892,14 @@ int daAlink_c::procGoatMoveInit() {
field_0x594 = daAlinkHIO_atnMove_c0::m.mMaxSpeed;
setSingleAnimeBase(ANM_ATN_COW);
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
fopAc_ac_c* goat_p = (fopAc_ac_c*)fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchGoat, NULL);
if (goat_p != NULL) {
field_0x280c.setData(goat_p);
}
field_0x300e.x = 0;
mProcVar3.field_0x300e.x = 0;
deleteEquipItem(FALSE, FALSE);
return 1;
}
@@ -1002,8 +1002,8 @@ int daAlink_c::procGoronMoveInit() {
current.angle.y = shape_angle.y + -0x4000;
field_0x594 = daAlinkHIO_atnMove_c0::m.mMaxSpeed;
setSingleAnimeBase(ANM_ATN_RIGHT);
field_0x300c = 1;
field_0x300e.x = 0;
mProcVar2.field_0x300c = 1;
mProcVar3.field_0x300e.x = 0;
return 1;
}
+32 -32
View File
@@ -398,7 +398,7 @@ int daAlink_c::procHangReadyInit() {
commonProcInit(PROC_HANG_READY);
setSingleAnimeParam(ANM_CLIMB_JUMP, &daAlinkHIO_wallCatch_c0::m.mJumpAnm);
field_0x300c = field_0x306e + 0x8000;
mProcVar2.field_0x300c = field_0x306e + 0x8000;
field_0x3198 = field_0x2f91;
f32 tmp_0 = FLOAT_LABEL(lit_6108);
@@ -409,11 +409,11 @@ int daAlink_c::procHangReadyInit() {
/* 800FC240-800FC2F4 0F6B80 00B4+00 1/0 0/0 0/0 .text procHangReady__9daAlink_cFv */
int daAlink_c::procHangReady() {
cLib_addCalcAngleS(&shape_angle.y, field_0x300c, 2, 0x1000, 0x400);
cLib_addCalcAngleS(&shape_angle.y, mProcVar2.field_0x300c, 2, 0x1000, 0x400);
current.angle.y = shape_angle.y;
if (checkAnmEnd(mUnderFrameCtrl)) {
shape_angle.y = field_0x300c;
shape_angle.y = mProcVar2.field_0x300c;
current.angle.y = shape_angle.y;
int hang_init;
@@ -443,7 +443,7 @@ int daAlink_c::procHangLeverDownInit() {
commonProcInit(PROC_HANG_LEVER_DOWN);
field_0x280c.setData(field_0x27f4);
setSingleAnimeParam(ANM_CLIMB_JUMP, &daAlinkHIO_wallCatch_c0::m.mJumpAnm);
field_0x300c = field_0x27f4->shape_angle.y + 0x8000;
mProcVar2.field_0x300c = field_0x27f4->shape_angle.y + 0x8000;
field_0x3198 = 145;
f32 tmp_0 = FLOAT_LABEL(lit_6108);
@@ -525,11 +525,11 @@ int daAlink_c::procBossBodyHangInit(fopAc_ac_c* param_0) {
setSpecialGravity(tmp_0, mMaxFallSpeed, 0);
speed.y = FLOAT_LABEL(lit_6108);
field_0x300c = 0;
field_0x300e.x = 0;
field_0x300e.y = 0;
field_0x3008 = 0;
field_0x300e.z = 0;
mProcVar2.field_0x300c = 0;
mProcVar3.field_0x300e.x = 0;
mProcVar3.field_0x300e.y = 0;
mProcVar0.field_0x3008 = 0;
mProcVar3.field_0x300e.z = 0;
field_0x3080 = 0;
field_0x280c.setData(param_0);
@@ -691,8 +691,8 @@ int daAlink_c::procLadderUpEndInit(int param_0) {
field_0x30a0 = -0x0800;
field_0x33f4 = lit_6041;
field_0x300c = 1;
field_0x300e.y = 1;
mProcVar2.field_0x300c = 1;
mProcVar3.field_0x300e.y = 1;
dComIfGp_setPlayerStatus0(0, 0x2000000);
return 1;
}
@@ -711,8 +711,8 @@ int daAlink_c::procLadderUpEnd() {
!checkNextAction(1))
{
if (frame_ctrl->getFrame() >= lit_15341) {
field_0x300c = 0;
field_0x300e.y = 0;
mProcVar2.field_0x300c = 0;
mProcVar3.field_0x300e.y = 0;
} else if (frame_ctrl->getFrame() >= lit_17382) {
field_0x30a0 = 0;
field_0x33f4 = FLOAT_LABEL(lit_6108);
@@ -749,8 +749,8 @@ int daAlink_c::procLadderDownStart() {
changeLadderMoveProc(0);
}
} else if (frame_ctrl->getFrame() >= lit_10286) {
field_0x300c = 1;
field_0x300e.y = 1;
mProcVar2.field_0x300c = 1;
mProcVar3.field_0x300e.y = 1;
}
return 1;
@@ -769,8 +769,8 @@ int daAlink_c::procLadderDownEndInit(int param_0) {
field_0x30a0 = 0x2800;
field_0x33f4 = lit_6040;
field_0x300c = 0;
field_0x300e.y = 0;
mProcVar2.field_0x300c = 0;
mProcVar3.field_0x300e.y = 0;
dComIfGp_setPlayerStatus0(0, 0x2000000);
return 1;
}
@@ -1211,7 +1211,7 @@ int daAlink_c::procRoofHangStartInit(cBgS_PolyInfo const& param_0, cXyz const& p
mNormalSpeed = tmp_0;
speed.y = tmp_0;
field_0x2f99 = 0x50;
field_0x3008 = param_2;
mProcVar0.field_0x3008 = param_2;
return 1;
}
@@ -1222,11 +1222,11 @@ int daAlink_c::procRoofHangStart() {
}
if (field_0x33a8 < lit_13700) {
field_0x3008 = 0;
mProcVar0.field_0x3008 = 0;
}
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
if (field_0x3008 == 0 &&
if (mProcVar0.field_0x3008 == 0 &&
(checkAnmEnd(frame_ctrl) ||
(checkInputOnR() &&
frame_ctrl->getFrame() > daAlinkHIO_roofHang_c0::m.field_0x0.mCheckFrame)))
@@ -1257,10 +1257,10 @@ int daAlink_c::procRoofHangWait() {
}
if (field_0x33a8 < lit_13700) {
field_0x3008 = 0;
mProcVar0.field_0x3008 = 0;
}
if (field_0x3008 == 0) {
if (mProcVar0.field_0x3008 == 0) {
checkNextActionRoofHang();
}
@@ -1348,17 +1348,17 @@ int daAlink_c::procRoofHangTurnInit() {
f32 anm_speed;
if ((s16)(field_0x2fe2 - shape_angle.y) < 0) {
anm_speed = -daAlinkHIO_roofHang_c0::m.field_0x44;
field_0x3008 = 1;
mProcVar0.field_0x3008 = 1;
shape_angle.y += 0x8000;
setOldRootQuaternion(0, -0x8000, 0);
field_0x2060->getOldFrameTransInfo(0)->mTranslate.z = lit_26275;
field_0x300c = field_0x2fe2;
mProcVar2.field_0x300c = field_0x2fe2;
field_0x3478 = FLOAT_LABEL(lit_6108);
field_0x347c = lit_7625;
} else {
anm_speed = daAlinkHIO_roofHang_c0::m.field_0x44;
field_0x3008 = 0;
field_0x300c = field_0x2fe2 + 0x8000;
mProcVar0.field_0x3008 = 0;
mProcVar2.field_0x300c = field_0x2fe2 + 0x8000;
field_0x3478 = lit_7625;
field_0x347c = lit_26276;
}
@@ -1366,7 +1366,7 @@ int daAlink_c::procRoofHangTurnInit() {
current.angle.y = shape_angle.y;
setSingleAnimeBaseSpeed(ANM_ROOF_HANG_TURN, anm_speed, daAlinkHIO_roofHang_c0::m.field_0x48);
if (field_0x3008 != 0) {
if (mProcVar0.field_0x3008 != 0) {
setFaceBasicTexture(FTANM_UNK_4);
} else {
setFaceBasicTexture(FTANM_UNK_3);
@@ -1389,7 +1389,7 @@ int daAlink_c::procRoofHangTurn() {
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
if (checkAnmEnd(frame_ctrl)) {
if (field_0x3008 == 0) {
if (mProcVar0.field_0x3008 == 0) {
shape_angle.y += 0x8000;
current.angle.y = shape_angle.y;
setOldRootQuaternion(0, -0x8000, 0);
@@ -1399,7 +1399,7 @@ int daAlink_c::procRoofHangTurn() {
checkNextActionRoofHang();
} else {
if (frame_ctrl->getFrame() >= field_0x3478 && frame_ctrl->getFrame() <= field_0x347c) {
cLib_addCalcAngleS(&shape_angle.y, field_0x300c, 3, 0x200, 0x100);
cLib_addCalcAngleS(&shape_angle.y, mProcVar2.field_0x300c, 3, 0x200, 0x100);
current.angle.y = shape_angle.y;
}
@@ -1441,7 +1441,7 @@ int daAlink_c::procRoofSwitchHangInit(fopAc_ac_c* param_0) {
setOldRootQuaternion(0, current.angle.y - shape_angle.y, 0);
shape_angle.y = current.angle.y;
field_0x2f99 = 0x50;
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
return 1;
}
@@ -1456,8 +1456,8 @@ int daAlink_c::procRoofSwitchHang() {
if (checkAnmEnd(mUnderFrameCtrl)) {
setSingleAnimeBaseSpeed(ANM_ROOF_HANG_WAIT, daAlinkHIO_roofHang_c0::m.field_0x1C,
daAlinkHIO_roofHang_c0::m.field_0x20);
field_0x300c = 1;
} else if (field_0x300c != 0) {
mProcVar2.field_0x300c = 1;
} else if (mProcVar2.field_0x300c != 0) {
setDoStatus(0x33);
if (doTrigger()) {
+64 -91
View File
@@ -360,7 +360,7 @@ void daAlink_c::cancelHookshotShot() {
}
/* 80108F64-8010903C 1038A4 00D8+00 4/4 0/0 0/0 .text cancelHookshotMove__9daAlink_cFv */
// checkAttentionLock has weird codegen
// matches with literals
#ifdef NONMATCHING
bool daAlink_c::cancelHookshotMove() {
if (mFastShotTime == 0 && mItemMode == HS_MODE_NONE_e) {
@@ -441,8 +441,6 @@ void daAlink_c::initHookshotReady() {
/* 801091E4-80109284 103B24 00A0+00 1/1 0/0 0/0 .text setHookshotReadyAnime__9daAlink_cFv
*/
#pragma push
#pragma optimization_level 2
void daAlink_c::setHookshotReadyAnime() {
f32 speed;
if (!i_checkAttentionLock() && mFastShotTime == 0) {
@@ -455,12 +453,9 @@ void daAlink_c::setHookshotReadyAnime() {
field_0x3020 = 0;
initHookshotReady();
}
#pragma pop
/* 80109284-801095C8 103BC4 0344+00 3/3 0/0 0/0 .text checkUpperItemActionHookshot__9daAlink_cFv
*/
// checkAttentionLock
#ifdef NONMATCHING
int daAlink_c::checkUpperItemActionHookshot() {
if (checkHookshotWait()) {
mSearchBallScale = FLT_MAX;
@@ -554,20 +549,8 @@ int daAlink_c::checkUpperItemActionHookshot() {
return cancelUpperItemReadyAnime(0);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int daAlink_c::checkUpperItemActionHookshot() {
nofralloc
#include "asm/d/a/d_a_alink/checkUpperItemActionHookshot__9daAlink_cFv.s"
}
#pragma pop
#endif
/* 801095C8-801097A0 103F08 01D8+00 7/7 0/0 0/0 .text checkNextActionHookshot__9daAlink_cFv */
// matches with a i_checkAttentionLock fix
#ifdef NONMATCHING
int daAlink_c::checkNextActionHookshot() {
if (mProcID == PROC_HOOKSHOT_ROOF_SHOOT || mProcID == PROC_HOOKSHOT_WALL_SHOOT) {
return 0;
@@ -610,16 +593,6 @@ int daAlink_c::checkNextActionHookshot() {
return procHookshotMoveInit();
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm int daAlink_c::checkNextActionHookshot() {
nofralloc
#include "asm/d/a/d_a_alink/checkNextActionHookshot__9daAlink_cFv.s"
}
#pragma pop
#endif
/* 801097A0-80109890 1040E0 00F0+00 2/2 0/0 0/0 .text setHookshotReturnEnd__9daAlink_cFv
*/
@@ -830,13 +803,13 @@ void daAlink_c::setHookshotPos() {
if (checkHookshotWait() || mItemMode == 2) {
csXyz* var_r28;
if (mProcID == PROC_HOOKSHOT_WALL_SHOOT || mProcID == PROC_HOOKSHOT_ROOF_SHOOT) {
var_r28 = &field_0x300e;
var_r28 = &mProcVar3.field_0x300e;
} else {
var_r28 = &mBodyAngle;
}
if (mProcID == PROC_HOOKSHOT_WALL_SHOOT) {
field_0x301e = field_0x300e.y;
field_0x301e = mProcVar3.field_0x300e.y;
} else {
field_0x301e = (s16)(shape_angle.y + mBodyAngle.y);
}
@@ -1223,13 +1196,13 @@ void daAlink_c::initHookshotRoofWaitActor(fopAc_ac_c* i_actor) {
mDoMtx_stack_c::XrotS(-i_actor->shape_angle.x);
mDoMtx_stack_c::YrotM(-i_actor->shape_angle.y);
mDoMtx_stack_c::multVecSR(&field_0x37c8, &field_0x37c8);
field_0x3008 = i_actor->shape_angle.y;
mProcVar0.field_0x3008 = i_actor->shape_angle.y;
fopAcM_setHookCarryNow(i_actor);
field_0x300e.y = 1;
mProcVar3.field_0x300e.y = 1;
} else {
mCargoCarryAcKeep.clearData();
field_0x300e.y = 0;
mProcVar3.field_0x300e.y = 0;
}
}
@@ -1286,7 +1259,7 @@ int daAlink_c::checkLandHookshotHang() {
/* 8010B96C-8010BA6C 1062AC 0100+00 3/3 0/0 0/0 .text commonHookshotRoofWait__9daAlink_cFv */
int daAlink_c::commonHookshotRoofWait() {
setJumpMode();
if (field_0x300e.y != 0) {
if (mProcVar3.field_0x300e.y != 0) {
mCargoCarryAcKeep.setActor();
fopAc_ac_c* carryAc_p = mCargoCarryAcKeep.getActor();
@@ -1460,11 +1433,11 @@ int daAlink_c::procHookshotFlyInit() {
shape_angle.y = field_0x301e;
current.angle.y = shape_angle.y;
field_0x3008 = 1;
field_0x300a = 4;
mProcVar0.field_0x3008 = 1;
mProcVar1.field_0x300a = 4;
field_0x2f99 = 0x50;
field_0x300c = mItemMode;
field_0x300e.z = 0;
mProcVar2.field_0x300c = mItemMode;
mProcVar3.field_0x300e.z = 0;
procHookshotFly();
return 1;
@@ -1506,29 +1479,29 @@ int daAlink_c::procHookshotFly() {
setHookshotTopPosFly();
field_0x37d4 = mHookshotTopPos - mHeldItemRootPos;
if (field_0x3008 != 0 && cLib_distanceAngleS(field_0x37d4.atan2sX_Z(), temp_r24) > 0x4000) {
if (mProcVar0.field_0x3008 != 0 && cLib_distanceAngleS(field_0x37d4.atan2sX_Z(), temp_r24) > 0x4000) {
setHookshotReturnEnd();
} else {
field_0x3008 = 0;
mProcVar0.field_0x3008 = 0;
f32 temp_f31 = field_0x37d4.abs();
f32 temp_f30 = daAlinkHIO_hookshot_c0::m.mStickReturnSpeed + spAC.abs(mHookshotTopPos);
if (temp_f31 < temp_f30 || field_0x300a == 0) {
if (temp_f31 < temp_f30 || mProcVar1.field_0x300a == 0) {
setHookshotReturnEnd();
} else {
field_0x37d4 *= temp_f30 / temp_f31;
seStartOnlyReverbLevel(Z2SE_LK_HS_WIND_UP);
if (temp_f31 < temp_f30 * 1.5f) {
field_0x300a--;
mProcVar1.field_0x300a--;
}
}
}
current.pos += field_0x37d4;
if (checkSetItemTrigger(W_HOOKSHOT) != 0) {
field_0x300e.z = 1;
} else if (field_0x300e.z != 0 && !itemButton()) {
field_0x300e.z = 0;
mProcVar3.field_0x300e.z = 1;
} else if (mProcVar3.field_0x300e.z != 0 && !itemButton()) {
mProcVar3.field_0x300e.z = 0;
}
if (mItemMode != 5 && mItemMode != HS_MODE_FLY_e) {
@@ -1543,7 +1516,7 @@ int daAlink_c::procHookshotFly() {
BOOL var_r27 = 0;
BOOL force_fall = checkStageName("D_MN10") && fopAcM_GetRoomNo(this) == 4;
if (field_0x300c == 4 && dComIfG_Bgsp().ChkPolySafe(mPolyInfo2)) {
if (mProcVar2.field_0x300c == 4 && dComIfG_Bgsp().ChkPolySafe(mPolyInfo2)) {
var_r28 = dComIfG_Bgsp().GetTriPla(mPolyInfo2, &poly);
var_r27 = cBgW_CheckBRoof(poly.mNormal.y);
if (!checkHookshotStickBG(mPolyInfo2)) {
@@ -1589,7 +1562,7 @@ int daAlink_c::procHookshotFly() {
procFallInit(1, 5.0f);
field_0x2f99 = 0x70;
} else if (targetAc_name == PROC_E_PH || targetAc_name == PROC_B_DR || var_r29) {
procHookshotRoofWaitInit(1, targetAc_p, field_0x300e.z);
procHookshotRoofWaitInit(1, targetAc_p, mProcVar3.field_0x300e.z);
} else if (var_r28 && dComIfG_Bgsp().GetMonkeyBarsCode(mPolyInfo2)) {
cXyz sp88;
mDoMtx_stack_c::ZXYrotS(field_0x301c, field_0x301e, 0);
@@ -1598,9 +1571,9 @@ int daAlink_c::procHookshotFly() {
procRoofHangStartInit(mPolyInfo2, sp88, 0);
} else if (var_r28 && var_r27) {
procHookshotRoofWaitInit(1, NULL, field_0x300e.z);
procHookshotRoofWaitInit(1, NULL, mProcVar3.field_0x300e.z);
} else if (var_r28 && field_0x2f91 != 3 && fabsf(poly.mNormal.y) < 0.05f) {
procHookshotWallWaitInit(1, poly.mNormal.atan2sX_Z(), field_0x300e.z);
procHookshotWallWaitInit(1, poly.mNormal.atan2sX_Z(), mProcVar3.field_0x300e.z);
} else {
procFallInit(1, 5.0f);
field_0x2f99 = 0x70;
@@ -1659,11 +1632,11 @@ int daAlink_c::procHookshotRoofWaitInit(int param_0, fopAc_ac_c* param_1, int pa
anm = ANM_HOOKSHOT_HANG_END_RIGHT;
}
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
setSingleAnimeParam(anm, &daAlinkHIO_hookshot_c0::m.mRoofHangAnm);
} else {
setHookshotRoofWaitAnime();
field_0x300c = 1;
mProcVar2.field_0x300c = 1;
}
resetHookshotMode();
@@ -1679,7 +1652,7 @@ int daAlink_c::procHookshotRoofWaitInit(int param_0, fopAc_ac_c* param_1, int pa
}
field_0x2b98 = 6.5f;
field_0x300e.z = param_2;
mProcVar3.field_0x300e.z = param_2;
dComIfGp_setPlayerStatus1(0, 0x10000);
field_0x814.SetWeight(255);
@@ -1735,23 +1708,23 @@ int daAlink_c::procHookshotRoofWait() {
setShapeAngleToAtnActor(0);
if (field_0x300c == 0) {
if (mProcVar2.field_0x300c == 0) {
if (checkSetItemTrigger(W_HOOKSHOT)) {
field_0x300e.z = 1;
} else if (field_0x300e.z != 0 && !itemButton()) {
field_0x300e.z = 0;
mProcVar3.field_0x300e.z = 1;
} else if (mProcVar3.field_0x300e.z != 0 && !itemButton()) {
mProcVar3.field_0x300e.z = 0;
}
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
if (frameCtrl_p->checkAnmEnd() ||
((checkInputOnR() || field_0x300e.z != 0 || checkHookshotRoofLv7Boss()) &&
((checkInputOnR() || mProcVar3.field_0x300e.z != 0 || checkHookshotRoofLv7Boss()) &&
frameCtrl_p->getFrame() > daAlinkHIO_hookshot_c0::m.mRoofHangAnm.mCheckFrame))
{
setHookshotRoofWaitAnime();
field_0x300c = 1;
mProcVar2.field_0x300c = 1;
}
} else if (!checkHookshotRoofLv7Boss()) {
if (checkSetItemTrigger(W_HOOKSHOT) || field_0x300e.z != 0) {
if (checkSetItemTrigger(W_HOOKSHOT) || mProcVar3.field_0x300e.z != 0) {
return procHookshotRoofShootInit(mCargoCarryAcKeep.getActor());
}
hookshotRoofTurn();
@@ -1798,8 +1771,8 @@ int daAlink_c::procHookshotRoofShootInit(fopAc_ac_c* param_0) {
dComIfGp_setPlayerStatus0(0, 0x4000);
field_0x814.SetWeight(255);
field_0x300c = 0;
field_0x300e.x = mBodyAngle.x;
mProcVar2.field_0x300c = 0;
mProcVar3.field_0x300e.x = mBodyAngle.x;
return 1;
}
#else
@@ -1815,7 +1788,7 @@ asm int daAlink_c::procHookshotRoofShootInit(fopAc_ac_c* param_0) {
/* 8010CD60-8010CF6C 1076A0 020C+00 1/0 0/0 0/0 .text procHookshotRoofShoot__9daAlink_cFv
*/
// matches with a i_checkAttentionLock fix
// matches with literals
#ifdef NONMATCHING
int daAlink_c::procHookshotRoofShoot() {
if (checkHookshotWait()) {
@@ -1838,7 +1811,7 @@ int daAlink_c::procHookshotRoofShoot() {
}
if (!checkUpperItemActionHookshot()) {
mBodyAngle.x = field_0x300e.x;
mBodyAngle.x = mProcVar3.field_0x300e.x;
if (!i_checkAttentionLock() && mFastShotTime == 0) {
if (checkHookshotWait()) {
@@ -1846,14 +1819,14 @@ int daAlink_c::procHookshotRoofShoot() {
mUnderFrameCtrl[0].setFrame(0.0f);
getNowAnmPackUnder(UNDER_0)->setFrame(0.0f);
if (field_0x300c != 0 && setBodyAngleToCamera()) {
if (mProcVar2.field_0x300c != 0 && setBodyAngleToCamera()) {
setHookshotSight();
}
} else {
dComIfGp_setPlayerStatus0(0, 0x40000);
}
field_0x300c = 1;
mProcVar2.field_0x300c = 1;
} else {
if (mTargetedActor == NULL && mItemMode == HS_MODE_NONE_e) {
return procHookshotRoofWaitInit(0, mCargoCarryAcKeep.getActor(), 0);
@@ -1862,7 +1835,7 @@ int daAlink_c::procHookshotRoofShoot() {
if (checkHookshotWait()) {
mUnderFrameCtrl[0].setRate(1.0f);
if (field_0x300c == 0) {
if (mProcVar2.field_0x300c == 0) {
setBodyAngleXReadyAnime(0);
hookshotRoofTurn();
} else {
@@ -1870,10 +1843,10 @@ int daAlink_c::procHookshotRoofShoot() {
}
}
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
}
field_0x300e.x = mBodyAngle.x;
mProcVar3.field_0x300e.x = mBodyAngle.x;
mBodyAngle.x = 0;
}
@@ -2001,11 +1974,11 @@ int daAlink_c::procHookshotWallWaitInit(int param_0, s16 param_1, int param_2) {
anm = ANM_HOOKSHOT_WALL_END_RIGHT;
}
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
setSingleAnimeParam(anm, &daAlinkHIO_hookshot_c0::m.mWallHangAnm);
} else {
setHookshotWallWaitAnime();
field_0x300c = 1;
mProcVar2.field_0x300c = 1;
}
dComIfGp_setPlayerStatus1(0, 0x2000000);
@@ -2020,7 +1993,7 @@ int daAlink_c::procHookshotWallWaitInit(int param_0, s16 param_1, int param_2) {
setHookshotHangMoveBGCollect();
}
field_0x300e.z = param_2;
mProcVar3.field_0x300e.z = param_2;
return 1;
}
#else
@@ -2078,22 +2051,22 @@ int daAlink_c::procHookshotWallWait() {
return procFallInit(1, 5.0f);
}
if (field_0x300c == 0) {
if (mProcVar2.field_0x300c == 0) {
if (checkSetItemTrigger(W_HOOKSHOT)) {
field_0x300e.z = 1;
} else if (field_0x300e.z != 0 && !itemButton()) {
field_0x300e.z = 0;
mProcVar3.field_0x300e.z = 1;
} else if (mProcVar3.field_0x300e.z != 0 && !itemButton()) {
mProcVar3.field_0x300e.z = 0;
}
daPy_frameCtrl_c* frameCtrl_p = mUnderFrameCtrl;
if (frameCtrl_p->checkAnmEnd() ||
((checkInputOnR() || field_0x300e.z != 0) &&
((checkInputOnR() || mProcVar3.field_0x300e.z != 0) &&
frameCtrl_p->getFrame() > daAlinkHIO_hookshot_c0::m.mWallHangAnm.mCheckFrame))
{
setHookshotWallWaitAnime();
field_0x300c = 1;
mProcVar2.field_0x300c = 1;
}
} else if (checkSetItemTrigger(W_HOOKSHOT) || field_0x300e.z != 0) {
} else if (checkSetItemTrigger(W_HOOKSHOT) || mProcVar3.field_0x300e.z != 0) {
return procHookshotWallShootInit();
}
@@ -2133,10 +2106,10 @@ int daAlink_c::procHookshotWallShootInit() {
initHookshotReady();
dComIfGp_setPlayerStatus0(0, 0x4000);
field_0x300c = 0;
field_0x300e.x = mBodyAngle.x;
field_0x300e.y = shape_angle.y;
field_0x310c = field_0x300e.y;
mProcVar2.field_0x300c = 0;
mProcVar3.field_0x300e.x = mBodyAngle.x;
mProcVar3.field_0x300e.y = shape_angle.y;
field_0x310c = mProcVar3.field_0x300e.y;
setHookshotReadyMaterial();
return 1;
}
@@ -2153,7 +2126,7 @@ asm int daAlink_c::procHookshotWallShootInit() {
/* 8010D6CC-8010D93C 10800C 0270+00 1/0 0/0 0/0 .text procHookshotWallShoot__9daAlink_cFv
*/
// matches with a i_checkAttentionLock fix
// matches with literals
#ifdef NONMATCHING
int daAlink_c::procHookshotWallShoot() {
if (checkHookshotWait()) {
@@ -2174,8 +2147,8 @@ int daAlink_c::procHookshotWallShoot() {
BOOL var_r31 = false;
if (!checkUpperItemActionHookshot()) {
s16 old_angle = shape_angle.y;
mBodyAngle.x = field_0x300e.x;
shape_angle.y = field_0x300e.y;
mBodyAngle.x = mProcVar3.field_0x300e.x;
shape_angle.y = mProcVar3.field_0x300e.y;
if (!i_checkAttentionLock() && mFastShotTime == 0) {
if (checkHookshotWait()) {
@@ -2183,14 +2156,14 @@ int daAlink_c::procHookshotWallShoot() {
mUnderFrameCtrl[0].setFrame(0.0f);
getNowAnmPackUnder(UNDER_0)->setFrame(0.0f);
if (field_0x300c != 0 && setBodyAngleToCamera()) {
if (mProcVar2.field_0x300c != 0 && setBodyAngleToCamera()) {
var_r31 = true;
}
} else {
dComIfGp_setPlayerStatus0(0, 0x40000);
}
field_0x300c = 1;
mProcVar2.field_0x300c = 1;
} else {
if (mTargetedActor == NULL && mItemMode == HS_MODE_NONE_e) {
shape_angle.y = old_angle;
@@ -2200,7 +2173,7 @@ int daAlink_c::procHookshotWallShoot() {
if (checkHookshotWait()) {
setWaterInAnmRate(mUnderFrameCtrl, 1.0f);
if (field_0x300c == 0) {
if (mProcVar2.field_0x300c == 0) {
setBodyAngleXReadyAnime(0);
if (!setShapeAngleToAtnActor(0)) {
@@ -2209,7 +2182,7 @@ int daAlink_c::procHookshotWallShoot() {
}
}
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
}
if ((s16)(shape_angle.y - old_angle) > 0x4000) {
@@ -2222,10 +2195,10 @@ int daAlink_c::procHookshotWallShoot() {
setHookshotSight();
}
field_0x300e.x = mBodyAngle.x;
mProcVar3.field_0x300e.x = mBodyAngle.x;
mBodyAngle.x = 0;
field_0x310c = shape_angle.y;
field_0x300e.y = shape_angle.y;
mProcVar3.field_0x300e.y = shape_angle.y;
shape_angle.y = old_angle;
}
+14 -14
View File
@@ -473,7 +473,7 @@ int daAlink_c::setSyncBoarRunPos() {
shape_angle.z = sp28.x;
current.angle.y = shape_angle.y;
if (mProcID == PROC_BOAR_RUN && field_0x300e.x != 0) {
if (mProcID == PROC_BOAR_RUN && mProcVar3.field_0x300e.x != 0) {
mUnderFrameCtrl[0].setFrame(e_wb_p->nowAnimeFrame());
getNowAnmPackUnder(UNDER_0)->setFrame(e_wb_p->nowAnimeFrame());
}
@@ -1378,7 +1378,7 @@ int daAlink_c::procHorseCutChargeReadyInit() {
resetUnderAnime(UNDER_2, lit_6041);
}
field_0x300c = daAlinkHIO_cut_c0::m.mNormalSwingDuration;
mProcVar2.field_0x300c = daAlinkHIO_cut_c0::m.mNormalSwingDuration;
field_0x3004 = 0;
i_onNoResetFlg1(FLG1_UNK_10000000);
return 1;
@@ -1410,7 +1410,7 @@ int daAlink_c::procHorseCutTurnInit() {
setSyncRide(1);
field_0x3478 = daAlinkHIO_hoCutCharge_c0::m.field_0x50;
setCylAtParam(getSwordAtType(), dCcG_At_Spl_UNK_1, 3, 1, 3, field_0x3478 * 0.5f, 200.0f);
field_0x300e.y = daAlinkHIO_hoCutCharge_c0::m.field_0x3E;
mProcVar3.field_0x300e.y = daAlinkHIO_hoCutCharge_c0::m.field_0x3E;
voiceStart(Z2SE_AL_V_KAITEN);
setCutWaterDropEffect();
setHorseZeldaDamage();
@@ -1466,7 +1466,7 @@ int daAlink_c::procHorseBowSubjectInit() {
setSyncRidePos();
setBaseRideAnime();
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
setBowOrSlingStatus();
return 1;
}
@@ -1826,12 +1826,12 @@ int daAlink_c::procHorseRunInit() {
setSingleAnimeBaseMorf(ANM_HORSE_TAME_WAIT_B, -1.0f);
setSyncHorsePos();
field_0x2fab = 0;
field_0x300e.y = 0;
field_0x300e.z = 0;
mProcVar3.field_0x300e.y = 0;
mProcVar3.field_0x300e.z = 0;
field_0x3478 = 1000.0f - cM_rndF(500.0f);
field_0x300c = 0;
field_0x300e.x = 30;
mProcVar2.field_0x300c = 0;
mProcVar3.field_0x300e.x = 30;
field_0x3004 = 0;
field_0x3002 = 0;
mDoAud_changeSubBgmStatus(2);
@@ -1890,7 +1890,7 @@ int daAlink_c::procHorseGetKeyInit() {
deleteEquipItem(FALSE, FALSE);
setSingleAnimeBase(ANM_KEY_CATCH);
setSyncRidePos();
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
return 1;
}
@@ -1904,7 +1904,7 @@ int daAlink_c::procHorseGetKey() {
} else if (frameCtrl_p->getFrame() >= lit_16038) {
field_0x2f92 = 254;
field_0x2f93 = 254;
field_0x300c = 1;
mProcVar2.field_0x300c = 1;
} else if (frameCtrl_p->getFrame() >= lit_7448) {
field_0x2f92 = 2;
} else if (frameCtrl_p->getFrame() >= lit_7808) {
@@ -1949,14 +1949,14 @@ int daAlink_c::procBoarRunInit() {
resetUpperAnime(UPPER_2, -1.0f);
resetUnderAnime(UNDER_2, -1.0f);
field_0x300e.y = 0;
field_0x300e.z = 0;
mProcVar3.field_0x300e.y = 0;
mProcVar3.field_0x300e.z = 0;
field_0x3478 = 3000.0f - cM_rndF(1500.0f);
setSingleAnimeBaseSpeed(ANM_HORSE_TAME_WAIT_A_TO_B, 1.0f, 4.0f);
field_0x300e.x = 0;
mProcVar3.field_0x300e.x = 0;
setSyncBoarPos();
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
deleteEquipItem(FALSE, FALSE);
return 1;
}
+2 -2
View File
@@ -411,7 +411,7 @@ int daAlink_c::procMagneBootsFlyInit() {
field_0x3478 = 0.0f;
field_0x594 = daAlinkHIO_magneBoots_c0::m.mMaxMagneFlySpeed;
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
voiceStart(Z2SE_AL_V_MAGNET_CAUGHT);
return 1;
}
@@ -461,7 +461,7 @@ int daAlink_c::procMagneBootsFly() {
cLib_addCalcAngleS(&shape_angle.x, sp24.atan2sY_XZ() + -0x4000, 5, 0x1000, 0x100);
cLib_addCalcAngleS(&shape_angle.y, sp24.atan2sX_Z(), 5, 0x1000, 0x100);
field_0x300c += 0x1C00;
mProcVar2.field_0x300c += 0x1C00;
}
return 1;
+12 -12
View File
@@ -160,9 +160,9 @@ int daAlink_c::procBoardRowInit() {
commonProcInit(PROC_BOARD_ROW);
setSingleAnimeBaseSpeed(ANM_RIDE_KICK, getBoardRowAnmSpeed(), daAlinkHIO_board_c0::m.mPushInterpolation);
i_onResetFlg1(0x40);
field_0x3008 = 4;
field_0x300e.y = 1;
field_0x300e.z = 0;
mProcVar0.field_0x3008 = 4;
mProcVar3.field_0x300e.y = 1;
mProcVar3.field_0x300e.z = 0;
return 1;
}
@@ -182,9 +182,9 @@ int daAlink_c::procBoardTurnInit() {
commonProcInit(PROC_BOARD_TURN);
setSingleAnime(ANM_RIDE_JUMP, FLOAT_LABEL(lit_6108), lit_6040, daAlinkHIO_board_c0::m.mAirborneAnm.mEndFrame, lit_6109);
mNormalSpeed = FLOAT_LABEL(lit_6108);
field_0x300e.y = shape_angle.y + 0x8000;
field_0x300e.z = 0;
field_0x300a = 0;
mProcVar3.field_0x300e.y = shape_angle.y + 0x8000;
mProcVar3.field_0x300e.z = 0;
mProcVar1.field_0x300a = 0;
return 1;
}
@@ -203,8 +203,8 @@ asm int daAlink_c::procBoardTurn() {
#ifdef NONMATCHING
int daAlink_c::procBoardJumpInit(f32 param_0, int param_1) {
commonProcInit(PROC_BOARD_JUMP);
field_0x3008 = 0;
field_0x300e.z = 1;
mProcVar0.field_0x3008 = 0;
mProcVar3.field_0x300e.z = 1;
setSingleAnime(ANM_RIDE_JUMP, FLOAT_LABEL(lit_6108),
daAlinkHIO_board_c0::m.mAirborneAnm.mStartFrame,
@@ -215,7 +215,7 @@ int daAlink_c::procBoardJumpInit(f32 param_0, int param_1) {
speed.y = cLib_minMaxLimit(param_0, daAlinkHIO_board_c0::m.mMinJumpSpeedY, daAlinkHIO_board_c0::m.mMaxJumpSpeedY);
}
field_0x300e.y = 0;
mProcVar3.field_0x300e.y = 0;
seStartOnlyReverb(Z2SE_AL_SNOBO_JUMP);
return 1;
}
@@ -240,12 +240,12 @@ int daAlink_c::procBoardJump() {
if (!i_checkModeFlg(2)) {
setBoardLandAnime();
procBoardWaitInit(NULL);
} else if (field_0x300e.z != 0 && field_0x300e.y == 0 && field_0x2060->getOldFrameRate() < lit_8782) {
} else if (mProcVar3.field_0x300e.z != 0 && mProcVar3.field_0x300e.y == 0 && field_0x2060->getOldFrameRate() < lit_8782) {
setSingleAnime(ANM_RIDE_JUMP, daAlinkHIO_board_c0::m.mAirborneAnm.mSpeed,
daAlinkHIO_board_c0::m.mAirborneAnm.mStartFrame,
daAlinkHIO_board_c0::m.mAirborneAnm.mEndFrame,
lit_6041);
field_0x300e.y = 1;
mProcVar3.field_0x300e.y = 1;
}
}
@@ -298,7 +298,7 @@ int daAlink_c::procBoardCutInit() {
setCommonBoardAnime(0);
setCutDash(1, var_r31);
field_0x300e.z = 0;
mProcVar3.field_0x300e.z = 0;
return 1;
}
+5 -8
View File
@@ -236,8 +236,6 @@ BOOL daAlink_c::checkUpperItemActionIronBall() {
}
/* 801153F8-801154E4 10FD38 00EC+00 2/2 0/0 0/0 .text checkNextActionIronBall__9daAlink_cFv */
#pragma push
#pragma optimization_level 2
int daAlink_c::checkNextActionIronBall() {
if (mFastShotTime != 0) {
mFastShotTime--;
@@ -258,7 +256,6 @@ int daAlink_c::checkNextActionIronBall() {
return procIronBallMoveInit();
}
}
#pragma pop
/* 801154E4-80115564 10FE24 0080+00 1/1 0/0 0/0 .text procIronBallSubjectInit__9daAlink_cFv */
int daAlink_c::procIronBallSubjectInit() {
@@ -359,7 +356,7 @@ int daAlink_c::procIronBallThrowInit() {
field_0x3588 = l_ironBallBaseAnime;
mNormalSpeed = FLOAT_LABEL(lit_6108);
current.angle.y = shape_angle.y;
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
field_0x3018 = 3;
field_0x3024 = 0;
field_0x3026 = 0;
@@ -385,13 +382,13 @@ int daAlink_c::procIronBallReturnInit() {
commonProcInit(PROC_IRON_BALL_RETURN);
if (field_0x3018 == 8) {
field_0x300c = 1;
mProcVar2.field_0x300c = 1;
setSingleAnimeParam(ANM_IRONBALL_CATCH, &daAlinkHIO_ironBall_c0::m.mCatchAnm);
field_0x2f99 = 12;
} else {
setSingleAnimeBaseSpeed(ANM_IRONBALL_PULL, daAlinkHIO_ironBall_c0::m.mPullAnmSpeed, daAlinkHIO_ironBall_c0::m.mPullInterpolation);
field_0x2f99 = 12;
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
}
field_0x3588 = l_ironBallBaseAnime;
@@ -408,8 +405,8 @@ int daAlink_c::procIronBallReturn() {
field_0x2f99 = 4;
if (field_0x3018 == 8 && field_0x300c == 0) {
field_0x300c = 1;
if (field_0x3018 == 8 && mProcVar2.field_0x300c == 0) {
mProcVar2.field_0x300c = 1;
setSingleAnimeParam(ANM_IRONBALL_CATCH, &daAlinkHIO_ironBall_c0::m.mCatchAnm);
field_0x2f99 = 12;
seStartOnlyReverb(Z2SE_AL_IB_CATCH);
+3 -3
View File
@@ -30,14 +30,14 @@ static fopAc_ac_c* daAlink_searchTagKtOnFire(fopAc_ac_c* i_actor, void* param_1)
/* 801106E8-8011078C 10B028 00A4+00 1/0 0/0 0/0 .text setKandelaarMtx__9daAlink_cFPA4_fii
*/
void daAlink_c::setKandelaarMtx(Mtx i_mtx, int param_1, int param_2) {
if (field_0x06fc != NULL) {
if (mpKanteraModel != NULL) {
if (i_checkNoResetFlg2(FLG2_UNK_1)) {
deleteEquipItem(0, 1);
}
i_onEndResetFlg1(ERFLG1_UNK_4);
field_0x06fc->i_setBaseTRMtx(i_mtx);
mpKanteraModel->i_setBaseTRMtx(i_mtx);
if (param_1 == 0) {
i_onEndResetFlg1(ERFLG1_UNK_8);
}
@@ -163,7 +163,7 @@ asm void daAlink_c::setKandelaarModel() {
void daAlink_c::resetOilBottleModel() {
deleteEquipItem(0, 1);
if (field_0x300e.x != 0) {
if (mProcVar3.field_0x300e.x != 0) {
setKandelaarModel();
mEquipItem = KANTERA;
}
+167 -176
View File
File diff suppressed because it is too large Load Diff
+17 -17
View File
@@ -153,7 +153,7 @@ int daAlink_c::procSpinnerReadyInit() {
field_0x3588 = l_waitBaseAnime;
field_0x33b0 = field_0x3588.y;
field_0x34d4 = l_waitBaseAnime;
field_0x300c = 8;
mProcVar2.field_0x300c = 8;
return 1;
}
@@ -169,11 +169,11 @@ int daAlink_c::procSpinnerReady() {
current.pos.x = spinner->current.pos.x;
current.pos.z = spinner->current.pos.z;
field_0x300c--;
mProcVar2.field_0x300c--;
field_0x2f99 = 15;
if ((field_0x300c < 0 && current.pos.y <= spinner->getModelMtx()[1][3]) ||
field_0x300c < -30) {
if ((mProcVar2.field_0x300c < 0 && current.pos.y <= spinner->getModelMtx()[1][3]) ||
mProcVar2.field_0x300c < -30) {
current.pos.y = spinner->getModelMtx()[1][3];
procSpinnerWaitInit();
}
@@ -202,13 +202,13 @@ int daAlink_c::procSpinnerWaitInit() {
speed.y = 0.0f;
setSpecialGravity(0.0f, mMaxFallSpeed, 0);
mNormalSpeed = 0.0f;
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
field_0x300e.x = shape_angle.y;
field_0x300e.y = 0;
mProcVar3.field_0x300e.x = shape_angle.y;
mProcVar3.field_0x300e.y = 0;
field_0x3198 = ANM_RIDE_CROUCH;
field_0x33b0 = 70.0f;
field_0x300e.z = 0;
mProcVar3.field_0x300e.z = 0;
field_0x37a4 = mRideAcKeep.getActor()->current.pos;
return 1;
@@ -242,9 +242,9 @@ int daAlink_c::procSpinnerWait() {
}
int itemSetBtn = checkItemSetButton(SPINNER);
if (field_0x300c == 0) {
if (mProcVar2.field_0x300c == 0) {
if (!itemButton()) {
field_0x300c = 1;
mProcVar2.field_0x300c = 1;
mNormalSpeed = getSpinnerRideSpeedF();
spinner->setMove(mNormalSpeed, getSpinnerRideMoveTime());
} else if (checkInputOnR()) {
@@ -258,7 +258,7 @@ int daAlink_c::procSpinnerWait() {
}
current.angle.y = shape_angle.y;
field_0x300e.x = shape_angle.y;
mProcVar3.field_0x300e.x = shape_angle.y;
}
} else {
if (checkSetItemTrigger(SPINNER) || swordSwingTrigger() || itemSetBtn == 2) {
@@ -285,7 +285,7 @@ int daAlink_c::procSpinnerWait() {
current.angle.y = spinner->current.angle.y;
if (spinner->checkSpinnerTagIntoIncRot()) {
field_0x300e.z = 1;
mProcVar3.field_0x300e.z = 1;
setSpinnerStatus(ACTION_STR_SPIN, ACTION_FLG_CONTINUATION);
if (field_0x3198 != ANM_RIDE_KICK && field_0x2060->getOldFrameRate() < 0.01f) {
@@ -295,7 +295,7 @@ int daAlink_c::procSpinnerWait() {
fopAcM_seStartCurrent(spinner, Z2SE_OBJ_SPNR_SW_PUSH, 0);
}
} else if (spinner->checkSpinnerTagInto()) {
if (field_0x300e.z != 0) {
if (mProcVar3.field_0x300e.z != 0) {
setSpinnerStatus(ACTION_STR_SPIN, ACTION_FLG_CONTINUATION);
} else {
setSpinnerStatus(ACTION_STR_SPIN, ACTION_FLG_DEFAULT);
@@ -312,18 +312,18 @@ int daAlink_c::procSpinnerWait() {
setSingleAnime(ANM_RIDE_JUMP, 0.0f, daAlinkHIO_board_c0::m.mAirborneAnm.mStartFrame,
daAlinkHIO_board_c0::m.mAirborneAnm.mEndFrame,
daAlinkHIO_board_c0::m.mAirborneAnm.mInterpolation);
field_0x300e.y = 0;
mProcVar3.field_0x300e.y = 0;
} else if (field_0x3198 == ANM_RIDE_JUMP) {
if (!spinner->getJumpFlg()) {
setSingleAnime(ANM_RIDE_JUMP_LAND, daAlinkHIO_board_c0::m.mLandAnm.mSpeed,
daAlinkHIO_board_c0::m.mLandAnm.mStartFrame, 16,
daAlinkHIO_board_c0::m.mLandAnm.mInterpolation);
field_0x3198 = ANM_RIDE_JUMP_LAND;
} else if (field_0x300e.y == 0 && field_0x2060->getOldFrameRate() < 0.01f) {
} else if (mProcVar3.field_0x300e.y == 0 && field_0x2060->getOldFrameRate() < 0.01f) {
setSingleAnime(ANM_RIDE_JUMP, daAlinkHIO_board_c0::m.mAirborneAnm.mSpeed,
daAlinkHIO_board_c0::m.mAirborneAnm.mStartFrame,
daAlinkHIO_board_c0::m.mAirborneAnm.mEndFrame, -1.0f);
field_0x300e.y = 1;
mProcVar3.field_0x300e.y = 1;
}
} else if ((field_0x3198 == ANM_RIDE_JUMP_LAND && frameCtrl->checkAnmEnd()) ||
(field_0x3198 != ANM_RIDE_JUMP_LAND && field_0x3198 != ANM_RIDE_CROUCH)) {
@@ -334,7 +334,7 @@ int daAlink_c::procSpinnerWait() {
}
setSpinnerSyncPos();
shape_angle.y = field_0x300e.x;
shape_angle.y = mProcVar3.field_0x300e.x;
return 1;
}
+7 -7
View File
@@ -51,8 +51,8 @@ int daAlink_c::procSumouReadyInit() {
field_0x34d4 = field_0x3588;
field_0x2f99 = 4;
mSpecialMode = 1;
field_0x300c = 0;
field_0x300e.x = 0;
mProcVar2.field_0x300c = 0;
mProcVar3.field_0x300e.x = 0;
deleteEquipItem(0, 1);
if (mThrowBoomerangAcKeep.getActor() != NULL) {
@@ -109,7 +109,7 @@ int daAlink_c::procSumouSideMoveInit() {
field_0x2f99 = 12;
setFootEffectProcType(5);
field_0x3008 = 15;
mProcVar0.field_0x3008 = 15;
return 1;
}
@@ -159,7 +159,7 @@ int daAlink_c::procSumouStaggerInit() {
setSingleAnimeBase(ANM_SUMOU_STAGGER);
mNormalSpeed = FLOAT_LABEL(lit_6108);
field_0x2f99 = 12;
field_0x3008 = 30;
mProcVar0.field_0x3008 = 30;
return 1;
}
@@ -171,10 +171,10 @@ int daAlink_c::procSumouStagger() {
return 1;
}
field_0x3008--;
mProcVar0.field_0x3008--;
if (mSpecialMode == 0x1C || mSpecialMode == 0x21 || mSpecialMode == 0x1B) {
procSumouActionInit(0, 0, 0);
} else if (field_0x3008 == 0) {
} else if (mProcVar0.field_0x3008 == 0) {
procSumouSideMoveInit();
}
@@ -213,7 +213,7 @@ int daAlink_c::procSumouShikoInit() {
field_0x3588 = l_waitBaseAnime;
field_0x34d4 = field_0x3588;
field_0x2f99 = 12;
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
mSpecialMode = 0;
setFootEffectProcType(5);
+32 -32
View File
@@ -142,7 +142,7 @@ void daAlink_c::swimBgCheck(f32 param_0) {
if (getZoraSwim()) {
uvar1 = field_0x3080;
} else {
uvar1 = field_0x300c;
uvar1 = mProcVar2.field_0x300c;
start_pos.y += daAlinkHIO_wlWallHang_c0::m.field_0x78;
}
@@ -363,7 +363,7 @@ BOOL daAlink_c::checkSwimNeckUpDown() const {
/* 80104034-801040F8 0FE974 00C4+00 3/3 0/0 0/0 .text setSwimUpDownOffset__9daAlink_cFv
*/
void daAlink_c::setSwimUpDownOffset() {
field_0x300c += (s16)((cM_rndF(lit_16570) + lit_27477) * lit_27476);
mProcVar2.field_0x300c += (s16)((cM_rndF(lit_16570) + lit_27477) * lit_27476);
f32 var_f1;
if (i_checkWolf()) {
@@ -376,7 +376,7 @@ void daAlink_c::setSwimUpDownOffset() {
var_f1 = daAlinkHIO_swim_c0::m.mWaitVibrationIntensity;
}
field_0x2b98 = var_f1 * cM_ssin(field_0x300c);
field_0x2b98 = var_f1 * cM_ssin(mProcVar2.field_0x300c);
}
/* 801040F8-801041E8 0FEA38 00F0+00 2/2 0/0 0/0 .text procSwimUpInit__9daAlink_cFv */
@@ -394,8 +394,8 @@ int daAlink_c::procSwimUpInit() {
mZ2Link.setInWater(false);
setSingleAnimeParam(ANM_SWIM_RESURFACE, &daAlinkHIO_swim_c0::m.mResurfaceAnm);
dComIfGp_setPlayerStatus0(0, 0x100000);
field_0x3008 = 0;
field_0x300e.y = 0;
mProcVar0.field_0x3008 = 0;
mProcVar3.field_0x300e.y = 0;
field_0x3480 = daAlinkHIO_swim_c0::m.mInitHeight;
field_0x3000 = 0;
@@ -448,10 +448,10 @@ int daAlink_c::procSwimWaitInit(int param_0) {
if (param_0) {
seStartMapInfo(Z2SE_AL_INTO_WATER);
field_0x300e.y = 0;
mProcVar3.field_0x300e.y = 0;
field_0x3480 = daAlinkHIO_swim_c0::m.mInitHeight;
} else if (!mode_40000) {
field_0x300e.y = 0;
mProcVar3.field_0x300e.y = 0;
field_0x3480 = daAlinkHIO_swim_c0::m.mInitHeight;
}
@@ -480,8 +480,8 @@ int daAlink_c::procSwimWaitInit(int param_0) {
speed.y = FLOAT_LABEL(lit_6108);
}
field_0x300c = 0;
field_0x3008 = 0;
mProcVar2.field_0x300c = 0;
mProcVar0.field_0x3008 = 0;
field_0x594 = getSwimFrontMaxSpeed();
return 1;
}
@@ -552,7 +552,7 @@ int daAlink_c::procSwimMoveInit() {
if (!mode_40000) {
field_0x3480 = daAlinkHIO_swim_c0::m.mInitHeight;
field_0x300e.y = 0;
mProcVar3.field_0x300e.y = 0;
}
if (proc_swim_dive || proc_dive_jump) {
@@ -560,8 +560,8 @@ int daAlink_c::procSwimMoveInit() {
if (proc_dive_jump) {
field_0x3080 = 0x2800;
field_0x300e.x = field_0x3080;
field_0x300e.y = 1;
mProcVar3.field_0x300e.x = field_0x3080;
mProcVar3.field_0x300e.y = 1;
setOldRootQuaternion(-field_0x3080, 0, 0);
}
} else {
@@ -578,7 +578,7 @@ int daAlink_c::procSwimMoveInit() {
swimDeleteItem();
dComIfGp_setPlayerStatus0(0, 0x100000);
field_0x3008 = 0;
mProcVar0.field_0x3008 = 0;
return 1;
}
@@ -630,18 +630,18 @@ int daAlink_c::procSwimDiveInit() {
speed.y = 0.0f;
if (i_checkNoResetFlg0(FLG0_UNK_100)) {
field_0x300c = 1;
mProcVar2.field_0x300c = 1;
setSingleAnimeParam(ANM_SWIM_DIVE, &daAlinkHIO_swim_c0::m.mDiveAnm);
voiceStart(Z2SE_AL_V_DIVING);
} else {
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
setSingleAnimeParam(ANM_SWIM_DIVE, &daAlinkHIO_swim_c0::m.mUnderwaterDiveAnm);
}
field_0x2f99 = 0x10;
field_0x3588 = l_waitBaseAnime;
field_0x3480 = daAlinkHIO_swim_c0::m.mInitHeight;
field_0x300e.y = 0;
mProcVar3.field_0x300e.y = 0;
dComIfGp_setPlayerStatus0(0, 0x100000);
field_0x3000 = 30;
@@ -666,7 +666,7 @@ asm int daAlink_c::procSwimDiveInit() {
int daAlink_c::procSwimDive() {
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
if (field_0x300c == 0) {
if (mProcVar2.field_0x300c == 0) {
setDoStatus(0x4C);
} else if (i_checkNoResetFlg0(FLG0_UNK_100) && frame_ctrl->getFrame() > 20.0f) {
i_offNoResetFlg0(FLG0_UNK_100);
@@ -682,7 +682,7 @@ int daAlink_c::procSwimDive() {
field_0x3478 = 1.0f;
}
if (frame_ctrl->checkPass(15.0f) && field_0x300c != 0) {
if (frame_ctrl->checkPass(15.0f) && mProcVar2.field_0x300c != 0) {
cXyz pos(current.pos.x, mWaterY, current.pos.z);
fopKyM_createWpillar(&pos, 0.7f, 0);
}
@@ -694,10 +694,10 @@ int daAlink_c::procSwimDive() {
if (checkAnmEnd(frame_ctrl)) {
speed.y = daAlinkHIO_swim_c0::m.mMaxSinkSpeed;
if (field_0x300c != 0) {
if (mProcVar2.field_0x300c != 0) {
field_0x3080 = 0x2800;
field_0x300e.x = field_0x3080;
field_0x300e.y = 1;
mProcVar3.field_0x300e.x = field_0x3080;
mProcVar3.field_0x300e.y = 1;
}
setOldRootQuaternion(-field_0x3080, 0, 0);
@@ -743,12 +743,12 @@ int daAlink_c::procSwimHookshotSubjectInit() {
speed.y = FLOAT_LABEL(lit_6108);
}
field_0x300c = 0;
field_0x3008 = 0;
mProcVar2.field_0x300c = 0;
mProcVar0.field_0x3008 = 0;
field_0x594 = getSwimFrontMaxSpeed();
field_0x3480 = daAlinkHIO_swim_c0::m.mInitHeight;
field_0x300e.y = 0;
mProcVar3.field_0x300e.y = 0;
field_0x30d0 = 0;
setHookshotReadyMaterial();
@@ -818,7 +818,7 @@ int daAlink_c::procSwimHookshotMoveInit() {
speed.y = FLOAT_LABEL(lit_6108);
}
field_0x3008 = 0;
mProcVar0.field_0x3008 = 0;
if (field_0x3080 != 0) {
setOldRootQuaternion(field_0x3080, 0, 0);
@@ -826,7 +826,7 @@ int daAlink_c::procSwimHookshotMoveInit() {
}
field_0x3480 = daAlinkHIO_swim_c0::m.mInitHeight;
field_0x300e.y = 0;
mProcVar3.field_0x300e.y = 0;
field_0x30d0 = 0;
dComIfGp_setPlayerStatus0(0, 0x104000);
@@ -934,11 +934,11 @@ int daAlink_c::procSwimDamageInit(dCcD_GObjInf* param_0) {
temp_r30->y,
temp_r30->z * cM_scos(shape_angle.y) + temp_r30->x * cM_ssin(shape_angle.y));
field_0x3008 =
mProcVar0.field_0x3008 =
cLib_minMaxLimit(cM_atan2s(sp24.z, sp24.y), (s16)-daAlinkHIO_damSwim_c0::m.field_0x78,
(s16)daAlinkHIO_damSwim_c0::m.field_0x78);
field_0x300a = cLib_minMaxLimit(
mProcVar1.field_0x300a = cLib_minMaxLimit(
cM_atan2s(sp24.x, -JMAFastSqrt(sp24.y * sp24.y + sp24.z * sp24.z)),
(s16)-daAlinkHIO_damSwim_c0::m.field_0x7A, (s16)daAlinkHIO_damSwim_c0::m.field_0x7A);
@@ -946,8 +946,8 @@ int daAlink_c::procSwimDamageInit(dCcD_GObjInf* param_0) {
if (bvar4) {
setSingleAnimeParam(ANM_SWIM_DMG_FREEZE, &daAlinkHIO_damSwim_c0::m.field_0x64);
field_0x3478 = daAlinkHIO_damSwim_c0::m.field_0x64.mCheckFrame;
field_0x3008 = 0;
field_0x300a = 0;
mProcVar0.field_0x3008 = 0;
mProcVar1.field_0x300a = 0;
} else if (dir == DIR_FORWARD) {
setSingleAnimeParam(ANM_SWIM_DMG_FRONT, &daAlinkHIO_damSwim_c0::m.field_0x0);
field_0x3478 = daAlinkHIO_damSwim_c0::m.field_0x0.mCheckFrame;
@@ -987,8 +987,8 @@ int daAlink_c::procSwimDamage() {
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
f32 fvar8 = cM_fsin(field_0x347c * (frame_ctrl->getFrame() - frame_ctrl->getStart()));
mBodyAngle.x = field_0x3008 * fvar8;
mBodyAngle.z = -field_0x300a * fvar8;
mBodyAngle.x = mProcVar0.field_0x3008 * fvar8;
mBodyAngle.z = -mProcVar1.field_0x300a * fvar8;
mBodyAngle.y = 0;
if (checkSwimUpAction()) {
+5 -5
View File
@@ -87,9 +87,9 @@ int daAlink_c::loadModelDVD() {
if (mClothesChangeWaitTimer == 2) {
mEyeHL1.remove();
mEyeHL2.remove();
field_0x79c = NULL;
mpWlMidnaHatModel = NULL;
field_0x7a4 = NULL;
mpWlMidnaModel = NULL;
mpWlMidnaMaskModel = NULL;
mpWlMidnaHandModel = NULL;
mpWlMidnaHairModel = NULL;
if (!i_checkNoResetFlg2(FLG2_UNK_280000)) {
@@ -291,13 +291,13 @@ void daAlink_c::statusWindowDraw() {
basicModelDraw(mpLinkModel);
if (!i_checkWolf()) {
basicModelDraw(field_0x065c);
basicModelDraw(mpLinkHandModel);
basicModelDraw(mpLinkHatModel);
basicModelDraw(mpLinkFaceModel);
if (i_checkEquipHeavyBoots()) {
for (int i = 0; i < 2; i++) {
basicModelDraw(field_0x784[i]);
basicModelDraw(mpLinkBootModels[i]);
}
}
}
+10 -10
View File
@@ -72,10 +72,10 @@ int daAlink_c::procGrassWhistleGetInit() {
field_0x280c.setData(field_0x27f4);
daObjYobikusa_c* yobikusa = (daObjYobikusa_c*)field_0x27f4;
field_0x300c = yobikusa->getType();
field_0x300e.x = yobikusa->getPathID();
field_0x300e.y = yobikusa->isPlayerCorrect();
field_0x300e.z = yobikusa->shape_angle.y + 0x8000;
mProcVar2.field_0x300c = yobikusa->getType();
mProcVar3.field_0x300e.x = yobikusa->getPathID();
mProcVar3.field_0x300e.y = yobikusa->isPlayerCorrect();
mProcVar3.field_0x300e.z = yobikusa->shape_angle.y + 0x8000;
field_0x37c8.set(yobikusa->current.pos.x + cM_ssin(yobikusa->shape_angle.y) * 50.0f,
yobikusa->current.pos.y + 50.0f,
yobikusa->current.pos.z + cM_scos(yobikusa->shape_angle.y) * 50.0f);
@@ -99,9 +99,9 @@ int daAlink_c::procGrassWhistleGet() {
daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl;
if (frameCtrl->checkAnmEnd()) {
procGrassWhistleWaitInit(field_0x300c, field_0x300e.x, field_0x300e.y, field_0x300e.z, &field_0x37c8);
procGrassWhistleWaitInit(mProcVar2.field_0x300c, mProcVar3.field_0x300e.x, mProcVar3.field_0x300e.y, mProcVar3.field_0x300e.z, &field_0x37c8);
} else if (mEquipItem == NO_ITEM && frameCtrl->getFrame() >= lit_7710) {
setGrassWhistleModel(field_0x300c);
setGrassWhistleModel(mProcVar2.field_0x300c);
if (field_0x280c.getActor() != NULL) {
fopAcM_setCarryNow(field_0x280c.getActor(), 0);
@@ -140,11 +140,11 @@ int daAlink_c::procCoHorseCallWaitInit(int param_0) {
commonProcInit(PROC_HORSE_CALL_WAIT);
if (param_0 == 4) {
field_0x300e.y = 2;
mProcVar3.field_0x300e.y = 2;
} else if (param_0 == 1) {
field_0x300e.y = 0x3D;
mProcVar3.field_0x300e.y = 0x3D;
} else {
field_0x300e.y = 0x10;
mProcVar3.field_0x300e.y = 0x10;
}
if (i_checkWolf()) {
@@ -204,7 +204,7 @@ int daAlink_c::procHawkSubjectInit() {
field_0x280c.setData(actor);
}
field_0x300c = 0;
mProcVar2.field_0x300c = 0;
mBodyAngle.y = 0;
deleteEquipItem(0, 1);
return 1;
+4978 -340
View File
File diff suppressed because it is too large Load Diff
+42 -17
View File
@@ -984,6 +984,30 @@ SECTION_DATA static void* lit_4497[3] = {
#pragma pop
/* 803BA25C-803BA34C 01737C 00F0+00 2/3 3/3 0/0 .data engine_tbl__9dCamera_c */
#ifdef NONMATCHING
engine_fn dCamera_c::engine_tbl[] = {
&dCamera_c::letCamera,
&dCamera_c::chaseCamera,
&dCamera_c::lockonCamera,
&dCamera_c::talktoCamera,
&dCamera_c::subjectCamera,
&dCamera_c::fixedPositionCamera,
&dCamera_c::fixedFrameCamera,
&dCamera_c::towerCamera,
&dCamera_c::rideCamera,
&dCamera_c::manualCamera,
&dCamera_c::eventCamera,
&dCamera_c::hookshotCamera,
&dCamera_c::colosseumCamera,
&dCamera_c::observeCamera,
&dCamera_c::magneCamera,
&dCamera_c::railCamera,
&dCamera_c::paraRailCamera,
&dCamera_c::oneSideCamera,
&dCamera_c::test1Camera,
&dCamera_c::test2Camera,
};
#else
SECTION_DATA u8 dCamera_c::engine_tbl[240] = {
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,
@@ -1001,6 +1025,7 @@ SECTION_DATA u8 dCamera_c::engine_tbl[240] = {
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,
};
#endif
/* 803BA34C-803BA378 -00001 002C+00 1/1 0/0 0/0 .data @7128 */
SECTION_DATA static void* lit_7128[11] = {
@@ -2012,7 +2037,7 @@ asm void dCamera_c::getParamTargetActor(s32 param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCamera_c::GetCameraTypeFromMapToolID(s32 param_0, s32 param_1) {
asm int dCamera_c::GetCameraTypeFromMapToolID(s32 param_0, s32 param_1) {
nofralloc
#include "asm/d/d_camera/GetCameraTypeFromMapToolID__9dCamera_cFll.s"
}
@@ -2577,7 +2602,7 @@ SECTION_SDATA2 static f32 lit_10582 = -50.0f;
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCamera_c::chaseCamera(s32 param_0) {
asm bool dCamera_c::chaseCamera(s32 param_0) {
nofralloc
#include "asm/d/d_camera/chaseCamera__9dCamera_cFl.s"
}
@@ -2691,7 +2716,7 @@ SECTION_SDATA2 static f32 lit_11175 = 1.0f / 50.0f;
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCamera_c::lockonCamera(s32 param_0) {
asm bool dCamera_c::lockonCamera(s32 param_0) {
nofralloc
#include "asm/d/d_camera/lockonCamera__9dCamera_cFl.s"
}
@@ -2838,7 +2863,7 @@ SECTION_SDATA2 static f32 lit_12297 = 7.0f / 25.0f;
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCamera_c::talktoCamera(s32 param_0) {
asm bool dCamera_c::talktoCamera(s32 param_0) {
nofralloc
#include "asm/d/d_camera/talktoCamera__9dCamera_cFl.s"
}
@@ -2914,7 +2939,7 @@ SECTION_SDATA2 static f32 lit_12869 = -511.0f;
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCamera_c::subjectCamera(s32 param_0) {
asm bool dCamera_c::subjectCamera(s32 param_0) {
nofralloc
#include "asm/d/d_camera/subjectCamera__9dCamera_cFl.s"
}
@@ -2928,7 +2953,7 @@ SECTION_SDATA2 static f32 lit_13132 = 4.0f;
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCamera_c::magneCamera(s32 param_0) {
asm bool dCamera_c::magneCamera(s32 param_0) {
nofralloc
#include "asm/d/d_camera/magneCamera__9dCamera_cFl.s"
}
@@ -2942,7 +2967,7 @@ SECTION_SDATA2 static f32 lit_13314 = 0.9990000128746033f;
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCamera_c::colosseumCamera(s32 param_0) {
asm bool dCamera_c::colosseumCamera(s32 param_0) {
nofralloc
#include "asm/d/d_camera/colosseumCamera__9dCamera_cFl.s"
}
@@ -2966,7 +2991,7 @@ SECTION_SDATA2 static f32 lit_13673 = 1.0f / 40.0f;
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCamera_c::towerCamera(s32 param_0) {
asm bool dCamera_c::towerCamera(s32 param_0) {
nofralloc
#include "asm/d/d_camera/towerCamera__9dCamera_cFl.s"
}
@@ -2995,7 +3020,7 @@ SECTION_SDATA2 static f32 lit_14064 = -100.0f;
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCamera_c::hookshotCamera(s32 param_0) {
asm bool dCamera_c::hookshotCamera(s32 param_0) {
nofralloc
#include "asm/d/d_camera/hookshotCamera__9dCamera_cFl.s"
}
@@ -3014,7 +3039,7 @@ static u8 struct_80451040[4];
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCamera_c::railCamera(s32 param_0) {
asm bool dCamera_c::railCamera(s32 param_0) {
nofralloc
#include "asm/d/d_camera/railCamera__9dCamera_cFl.s"
}
@@ -3033,7 +3058,7 @@ static u8 struct_80451044[4];
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCamera_c::paraRailCamera(s32 param_0) {
asm bool dCamera_c::paraRailCamera(s32 param_0) {
nofralloc
#include "asm/d/d_camera/paraRailCamera__9dCamera_cFl.s"
}
@@ -3106,7 +3131,7 @@ SECTION_SDATA2 static f32 lit_15487 = 1.1500000953674316f;
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCamera_c::rideCamera(s32 param_0) {
asm bool dCamera_c::rideCamera(s32 param_0) {
nofralloc
#include "asm/d/d_camera/rideCamera__9dCamera_cFl.s"
}
@@ -3138,7 +3163,7 @@ SECTION_SDATA2 static f32 lit_15773 = 4.0f / 3.0f;
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCamera_c::observeCamera(s32 param_0) {
asm bool dCamera_c::observeCamera(s32 param_0) {
nofralloc
#include "asm/d/d_camera/observeCamera__9dCamera_cFl.s"
}
@@ -3148,7 +3173,7 @@ asm void dCamera_c::observeCamera(s32 param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCamera_c::fixedFrameCamera(s32 param_0) {
asm bool dCamera_c::fixedFrameCamera(s32 param_0) {
nofralloc
#include "asm/d/d_camera/fixedFrameCamera__9dCamera_cFl.s"
}
@@ -3159,7 +3184,7 @@ asm void dCamera_c::fixedFrameCamera(s32 param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCamera_c::fixedPositionCamera(s32 param_0) {
asm bool dCamera_c::fixedPositionCamera(s32 param_0) {
nofralloc
#include "asm/d/d_camera/fixedPositionCamera__9dCamera_cFl.s"
}
@@ -3169,7 +3194,7 @@ asm void dCamera_c::fixedPositionCamera(s32 param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCamera_c::oneSideCamera(s32 param_0) {
asm bool dCamera_c::oneSideCamera(s32 param_0) {
nofralloc
#include "asm/d/d_camera/oneSideCamera__9dCamera_cFl.s"
}
@@ -3227,7 +3252,7 @@ SECTION_DEAD static char const* const stringBase_803942F2 = "WideMode";
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCamera_c::eventCamera(s32 param_0) {
asm bool dCamera_c::eventCamera(s32 param_0) {
nofralloc
#include "asm/d/d_camera/eventCamera__9dCamera_cFl.s"
}
+183 -253
View File
@@ -4,224 +4,26 @@
//
#include "d/d_ev_camera.h"
#include "d/a/d_a_alink.h"
#include "d/com/d_com_inf_game.h"
#include "d/d_camera.h"
#include "d/d_demo.h"
#include "dol2asm.h"
#include "m_Do/m_Do_controller_pad.h"
//
// Types:
//
struct mDoCPd_c {
static u8 m_cpadInfo[256];
};
struct fopAc_ac_c {};
struct daPy_py_c {
/* 800977B4 */ void checkMidnaRide() const;
/* 80097850 */ bool checkCanoeRide() const;
/* 80097858 */ bool checkBoardRide() const;
/* 80097860 */ bool checkSpinnerRide() const;
/* 80097868 */ bool checkBoarRide() const;
static u8 m_midnaActor[4];
};
struct daMidna_c {
/* 800977A8 */ void checkNoDraw() const;
};
struct daAlink_c {
/* 80097870 */ void getShadowTalkAtnPos();
};
struct dEvt_control_c {
/* 800432EC */ void convPId(unsigned int);
/* 800434D8 */ void searchMapEventData(u8);
};
struct Vec {};
struct cXyz {
/* 80009184 */ ~cXyz();
/* 8008E790 */ void abs() const;
/* 8008E8D0 */ void operator-=(Vec const&);
/* 8008E904 */ void operator+=(Vec const&);
/* 800977D8 */ void operator=(cXyz const&);
/* 800977F4 */ cXyz(cXyz const&);
/* 80266AE4 */ void operator+(Vec const&) const;
/* 80266B34 */ void operator-(Vec const&) const;
/* 80266B84 */ void operator*(f32) const;
/* 80266CE4 */ void norm() const;
/* 80266EF4 */ void normalize();
static f32 Zero[3];
};
struct dEvent_manager_c {
/* 800480EC */ void getMySubstanceP(int, char const*, int);
/* 80048144 */ void getMySubstanceNum(int, char const*);
/* 800483C4 */ void setGoal(cXyz*);
};
struct dDemo_object_c {
/* 80039128 */ void getActiveCamera();
};
struct dDemo_c {
static u8 m_object[4];
};
struct dCcS {
/* 80086D8C */ void ChkCamera(cXyz&, cXyz&, f32, fopAc_ac_c*, fopAc_ac_c*, fopAc_ac_c*);
};
struct dCamera_c {
struct dCamInfo_c {};
/* 80088A7C */ void StartEventCamera(int, int, ...);
/* 80088BBC */ void EndEventCamera(int);
/* 80088C24 */ void searchEventArgData(char*);
/* 8008908C */ void getEvIntData(int*, char*, int);
/* 80088CB0 */ void getEvIntData(int*, char*);
/* 80088D90 */ void getEvFloatData(f32*, char*);
/* 80089154 */ void getEvFloatData(f32*, char*, f32);
/* 80088E58 */ void getEvFloatListData(f32**, char*);
/* 80088F1C */ void getEvXyzListData(cXyz**, char*);
/* 8008941C */ void getEvStringPntData(char*, char*);
/* 80088FE0 */ void getEvStringPntData(char*);
/* 8008922C */ void getEvXyzData(cXyz*, char*, cXyz);
/* 8008933C */ void getEvStringData(char*, char*, char*);
/* 800894C4 */ void getEvActor(char*);
/* 800895F4 */ void getEvActor(char*, char*);
/* 80089730 */ void pauseEvCamera();
/* 800897E8 */ void fixedFrameEvCamera();
/* 8008A510 */ void stokerEvCamera();
/* 8008A974 */ void rollingEvCamera();
/* 8008B9B0 */ void fixedPositionEvCamera();
/* 8008BE2C */ void uniformTransEvCamera();
/* 8008BE50 */ void uniformBrakeEvCamera();
/* 8008BE74 */ void uniformAcceleEvCamera();
/* 8008BE98 */ void transEvCamera(int);
/* 8008E938 */ void watchActorEvCamera();
/* 8008FAE8 */ void restorePosEvCamera();
/* 80090174 */ void talktoEvCamera();
/* 80090230 */ void maptoolIdEvCamera();
/* 80090478 */ void styleEvCamera();
/* 80090514 */ void gameOverEvCamera();
/* 80091468 */ void tactEvCamera();
/* 800923B8 */ bool turnToActorEvCamera();
/* 800923C0 */ void stbWaitEvCamera();
/* 800924D0 */ void saveEvCamera();
/* 8009258C */ void loadEvCamera();
/* 800929AC */ void useItem0EvCamera();
/* 800937AC */ void useItem1EvCamera();
/* 80094240 */ void getItemEvCamera();
/* 80094A70 */ void possessedEvCamera();
/* 80095010 */ void fixedFramesEvCamera();
/* 8009544C */ void bSplineEvCamera();
/* 800956E4 */ void twoActor0EvCamera();
/* 80095E7C */ void peepHoleEvCamera();
/* 80095FD0 */ void digHoleEvCamera();
/* 800965AC */ void hintTalkEvCamera();
/* 80096EDC */ void bspTransEvCamera();
/* 80097694 */ bool portalWarpEvCamera();
/* 8009771C */ void attentionPos(fopAc_ac_c*);
/* 80097738 */ void directionOf(fopAc_ac_c*);
/* 8009775C */ void positionOf(fopAc_ac_c*);
/* 80097778 */ void setFlag(u32);
/* 8009778C */ void eyePos(fopAc_ac_c*);
/* 80164944 */ void GetCameraTypeFromMapToolID(s32, s32);
/* 80164C64 */ void pushInfo(dCamera_c::dCamInfo_c*, s16);
/* 80164E20 */ void relationalPos(fopAc_ac_c*, fopAc_ac_c*, cXyz*, f32);
/* 80164D6C */ void relationalPos(fopAc_ac_c*, cXyz*);
/* 8016517C */ void pointInSight(cXyz*);
/* 80165AF0 */ void lineBGCheck(cXyz*, cXyz*, u32);
/* 801659F4 */ void lineBGCheck(cXyz*, cXyz*, cXyz*, u32);
/* 80180C68 */ void Reset();
/* 80181170 */ void StartBlure(int, fopAc_ac_c*, f32, f32);
/* 80181208 */ void SetBlureAlpha(f32);
/* 80181210 */ void SetBlureScale(f32, f32, f32);
/* 80181220 */ void SetBlurePosition(f32, f32, f32);
static u8 engine_tbl[240];
};
struct dCamParam_c {
/* 80088620 */ void SearchStyle(u32);
};
struct cSAngle {
/* 80030510 */ ~cSAngle();
/* 80270F68 */ cSAngle(cSAngle const&);
/* 80270FC8 */ cSAngle(f32);
/* 80270F98 */ cSAngle(s16);
/* 8027100C */ void Val(f32);
/* 80271030 */ void Degree() const;
/* 802710CC */ void Abs() const;
/* 802710E8 */ void Inv() const;
/* 80271120 */ void Cos() const;
/* 802711A4 */ void operator-(cSAngle const&) const;
/* 80271148 */ void operator-() const;
/* 80271174 */ void operator+(cSAngle const&) const;
/* 802711FC */ void operator+(s16) const;
/* 802711D4 */ void operator+=(cSAngle const&);
/* 80271264 */ void operator*(f32) const;
/* 802712B4 */ void operator*=(f32);
static u8 _0[2 + 2 /* padding */];
static u8 _90[2 + 2 /* padding */];
};
struct dCamMath {
/* 8008813C */ void rationalBezierRatio(f32, f32);
/* 80088384 */ void xyzRotateY(cXyz&, cSAngle);
/* 800883EC */ void xyzHorizontalDistance(cXyz&, cXyz&);
};
struct d2DBSplinePath {
/* 80097878 */ void Init(s32, s32);
/* 80097904 */ void Step();
/* 80097B20 */ void Calc(f32*);
/* 80097A6C */ void Calc(cXyz*);
};
struct camera_class {};
struct cSGlobe {
/* 8007167C */ ~cSGlobe();
/* 8008E774 */ void operator=(cSGlobe const&);
/* 8008E894 */ void U(cSAngle const&);
/* 8008FA58 */ void V(cSAngle const&);
/* 80271880 */ cSGlobe(cXyz const&);
/* 802717F0 */ cSGlobe(cSGlobe const&);
/* 80271850 */ cSGlobe(f32, cSAngle const&, cSAngle const&);
/* 80271A08 */ void Val(f32, cSAngle const&, cSAngle const&);
/* 80271A70 */ void Val(cXyz const&);
/* 80271AB4 */ void Xyz() const;
/* 80271B30 */ void Norm() const;
/* 80271B7C */ void Invert();
};
struct cM3dGPla {
/* 8001DB90 */ ~cM3dGPla();
};
struct cM3dGLin {
/* 80036A5C */ ~cM3dGLin();
/* 8026F2A8 */ cM3dGLin(cXyz const&, cXyz const&);
};
struct cBgS_PolyInfo {};
struct cBgS {
/* 80074744 */ void GetTriPla(cBgS_PolyInfo const&, cM3dGPla*) const;
};
//
// Forward References:
//
extern "C" static void func_800889F8();
extern "C" static bool func_800889F8(int);
extern "C" void StartEventCamera__9dCamera_cFiie();
extern "C" void EndEventCamera__9dCamera_cFi();
extern "C" void searchEventArgData__9dCamera_cFPc();
@@ -375,10 +177,6 @@ extern "C" void Xyz__7cSGlobeCFv();
extern "C" void Norm__7cSGlobeCFv();
extern "C" void Invert__7cSGlobeFv();
extern "C" void __dl__FPv();
extern "C" void PSVECAdd();
extern "C" void PSVECSubtract();
extern "C" void PSVECSquareMag();
extern "C" void __va_arg();
extern "C" void __register_global_object();
extern "C" void __ptmf_scall();
extern "C" void _savegpr_24();
@@ -393,15 +191,10 @@ extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" void strcmp();
extern "C" void strcpy();
extern "C" extern void* __vt__8cM3dGPla[3];
extern "C" u8 engine_tbl__9dCamera_c[240];
extern "C" u8 m_cpadInfo__8mDoCPd_c[256];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" f32 Zero__4cXyz[3];
extern "C" extern u32 __float_nan;
extern "C" extern u8 mStayNo__20dStage_roomControl_c[4];
extern "C" u8 m_object__7dDemo_c[4];
extern "C" extern u8 struct_80450F88[8];
extern "C" u8 m_midnaActor__9daPy_py_c[4];
@@ -417,7 +210,7 @@ extern "C" u8 _90__7cSAngle[2 + 2 /* padding */];
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
static asm void func_800889F8() {
static asm bool func_800889F8(int) {
nofralloc
#include "asm/d/d_ev_camera/func_800889F8.s"
}
@@ -425,35 +218,74 @@ static asm void func_800889F8() {
/* 80088A7C-80088BBC 0833BC 0140+00 0/0 15/15 2/2 .text StartEventCamera__9dCamera_cFiie
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCamera_c::StartEventCamera(int param_0, int param_1, ...) {
nofralloc
#include "asm/d/d_ev_camera/StartEventCamera__9dCamera_cFiie.s"
int dCamera_c::StartEventCamera(int param_0, int param_1, ...) {
if (i_chkFlag(0x20000000)) {
return 0;
}
mEventData.field_0x14 = param_1;
mEventData.field_0x18 = param_0;
va_list args;
va_start(args, param_1);
for (int i = 0; i < 8; i++) {
char* param_name = va_arg(args, char*);
if (param_name != NULL) {
strcpy(mEventData.mEventParams[i].name, param_name);
mEventData.mEventParams[i].field_0x10 = va_arg(args, int);
mEventData.mEventParams[i].value = va_arg(args, int);
} else {
mEventData.mEventParams[i].name[0] = 0;
break;
}
}
va_end(args);
i_setFlag(0x20000000);
mCurCamTypeTimer = 0;
mEventData.field_0x0 = 0;
return 1;
}
#pragma pop
/* 80088BBC-80088C24 0834FC 0068+00 0/0 3/3 4/4 .text EndEventCamera__9dCamera_cFi */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCamera_c::EndEventCamera(int param_0) {
nofralloc
#include "asm/d/d_ev_camera/EndEventCamera__9dCamera_cFi.s"
int dCamera_c::EndEventCamera(int param_0) {
if (!i_chkFlag(0x20000000)) {
return 0;
}
if (mEventData.field_0x14 == -1 || mEventData.field_0x14 == param_0) {
i_clrFlag(0x20000000);
mEventData.field_0x0 = 1;
if (i_dComIfGp_getEvent().runCheck()) {
i_dComIfGp_getEventManager().setCameraPlay(2);
}
return 1;
}
return 0;
}
#pragma pop
/* 80088C24-80088CB0 083564 008C+00 10/10 0/0 0/0 .text searchEventArgData__9dCamera_cFPc
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCamera_c::searchEventArgData(char* param_0) {
nofralloc
#include "asm/d/d_ev_camera/searchEventArgData__9dCamera_cFPc.s"
int dCamera_c::searchEventArgData(char* i_eventName) {
int i;
bool found_event = false;
for (i = 0; i < 8; i++) {
if (*mEventData.mEventParams[i].name == 0) {
break;
}
if (strcmp(mEventData.mEventParams[i].name, i_eventName) == 0) {
found_event = true;
break;
}
}
return found_event ? i : -1;
}
#pragma pop
/* 80088CB0-80088D90 0835F0 00E0+00 3/3 1/1 0/0 .text getEvIntData__9dCamera_cFPiPc */
#pragma push
@@ -846,7 +678,8 @@ static asm void func_8008E750() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void cSGlobe::operator=(cSGlobe const& param_0) {
// asm void cSGlobe::operator=(cSGlobe const& param_0) {
extern "C" asm void __as__7cSGlobeFRC7cSGlobe() {
nofralloc
#include "asm/d/d_ev_camera/__as__7cSGlobeFRC7cSGlobe.s"
}
@@ -856,7 +689,8 @@ asm void cSGlobe::operator=(cSGlobe const& param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void cXyz::abs() const {
// asm void cXyz::abs() const {
extern "C" asm void abs__4cXyzCFv() {
nofralloc
#include "asm/d/d_ev_camera/abs__4cXyzCFv.s"
}
@@ -866,7 +700,8 @@ asm void cXyz::abs() const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void cSGlobe::U(cSAngle const& param_0) {
// asm void cSGlobe::U(cSAngle const& param_0) {
extern "C" asm void U__7cSGlobeFRC7cSAngle() {
nofralloc
#include "asm/d/d_ev_camera/U__7cSGlobeFRC7cSAngle.s"
}
@@ -876,7 +711,8 @@ asm void cSGlobe::U(cSAngle const& param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void cXyz::operator-=(Vec const& param_0) {
// asm void cXyz::operator-=(Vec const& param_0) {
extern "C" asm void __ami__4cXyzFRC3Vec() {
nofralloc
#include "asm/d/d_ev_camera/__ami__4cXyzFRC3Vec.s"
}
@@ -886,7 +722,8 @@ asm void cXyz::operator-=(Vec const& param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void cXyz::operator+=(Vec const& param_0) {
// asm void cXyz::operator+=(Vec const& param_0) {
extern "C" asm void __apl__4cXyzFRC3Vec() {
nofralloc
#include "asm/d/d_ev_camera/__apl__4cXyzFRC3Vec.s"
}
@@ -968,7 +805,8 @@ asm void dCamera_c::watchActorEvCamera() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void cSGlobe::V(cSAngle const& param_0) {
// asm void cSGlobe::V(cSAngle const& param_0) {
extern "C" asm void V__7cSGlobeFRC7cSAngle() {
nofralloc
#include "asm/d/d_ev_camera/V__7cSGlobeFRC7cSAngle.s"
}
@@ -1033,14 +871,98 @@ SECTION_DEAD static char const* const stringBase_8037AC5C = "CameraID";
#pragma pop
/* 80090230-80090478 08AB70 0248+00 0/0 1/0 0/0 .text maptoolIdEvCamera__9dCamera_cFv */
// matches with sinit
#ifdef NONMATCHING
bool dCamera_c::maptoolIdEvCamera() {
if (mCurCamTypeTimer == 0) {
int id;
getEvIntData(&id, "ID", g_dComIfG_gameInfo.play.getEvent().getMapToolId());
mEventData.field_0x8 = 0;
field_0x160 = 0;
mCurCamTypeTimer = 0;
mEventData.field_0xec = dEvt_control_c::searchMapEventData(id);
#ifdef DEBUG
OSReport("%06d: %s: %d: map data ID %d %x\n", field_0xa8, __FILE__, 2792, id,
mEventData.field_0xec);
#endif
int var_r6 = 0xFF;
if (mEventData.field_0xec != NULL && mEventData.field_0xec->mType == 0) {
var_r6 = mEventData.field_0xec->field_0x16;
}
getEvIntData(&mEventData.field_0x24, "CameraID", var_r6);
}
int temp_r31 = mEventData.field_0x24;
if (mEventData.field_0xec == NULL || temp_r31 == 0xFF) {
#ifdef DEBUG
OSReport("%d: %s: %d: ERROR!! no map data!!!\n", field_0xa8, __FILE__, 2805);
#endif
return 1;
}
int room_no = dComIfGp_roomControl_getStayNo();
if (func_800889F8(mEventData.field_0xec->field_0x4)) {
room_no = -1;
}
if (mEventData.field_0xec->mType == 0 && mEventData.field_0xec->field_0xC != 0xFF) {
if (mEventData.field_0xec->field_0xC & 1) {
i_clrFlag(0x200000);
}
if (mEventData.field_0xec->field_0xC & 2) {
field_0x88 = 0;
}
}
mEventData.field_0xc = GetCameraTypeFromMapToolID(temp_r31, room_no);
bool var_r31 = 0;
if (mEventData.field_0xc != 0xFF) {
s32 style = mCamTypeData[mEventData.field_0xc].field_0x18[field_0x190][0];
#ifdef DEBUG
if (mCurCamTypeTimer == 0) {
OSReport("type %d mode %d style %d\n", mEventData.field_0xc, 0, style);
}
#endif
bool var_r3 = (this->*engine_tbl[mCamParam.Algorythmn(style)])(style);
if (mEventData.field_0xec->mType == 0) {
if (mEventData.field_0xec->field_0x14 == 0xFF ||
mCurCamTypeTimer > mEventData.field_0xec->field_0x14)
{
var_r31 = 1;
}
} else {
return var_r3;
}
} else {
mEventData.field_0xec = NULL;
var_r31 = 1;
}
if (var_r31) {
if (mEventData.field_0xec->mType == 0 && (mEventData.field_0xec->field_0xC & 0x20)) {
return mDoCPd_c::getHoldA(mPadID) || mDoCPd_c::getHoldB(mPadID);
}
return 1;
}
return 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void dCamera_c::maptoolIdEvCamera() {
asm bool dCamera_c::maptoolIdEvCamera() {
nofralloc
#include "asm/d/d_ev_camera/maptoolIdEvCamera__9dCamera_cFv.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 8037AAF4-8037AAF4 007154 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -1986,8 +1908,7 @@ bool dCamera_c::portalWarpEvCamera() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void __sinit_d_ev_camera_cpp() {
nofralloc
asm void __sinit_d_ev_camera_cpp(){nofralloc
#include "asm/d/d_ev_camera/__sinit_d_ev_camera_cpp.s"
}
#pragma pop
@@ -2062,7 +1983,8 @@ asm void daMidna_c::checkNoDraw() const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daPy_py_c::checkMidnaRide() const {
// asm void daPy_py_c::checkMidnaRide() const {
extern "C" asm void checkMidnaRide__9daPy_py_cCFv() {
nofralloc
#include "asm/d/d_ev_camera/checkMidnaRide__9daPy_py_cCFv.s"
}
@@ -2072,7 +1994,8 @@ asm void daPy_py_c::checkMidnaRide() const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void fopAcM_GetID(void const* param_0) {
// asm void fopAcM_GetID(void const* param_0) {
extern "C" asm void fopAcM_GetID__FPCv() {
nofralloc
#include "asm/d/d_ev_camera/fopAcM_GetID__FPCv.s"
}
@@ -2082,7 +2005,8 @@ asm void fopAcM_GetID(void const* param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void cXyz::operator=(cXyz const& param_0) {
// asm void cXyz::operator=(cXyz const& param_0) {
extern "C" asm void __as__4cXyzFRC4cXyz() {
nofralloc
#include "asm/d/d_ev_camera/__as__4cXyzFRC4cXyz.s"
}
@@ -2092,7 +2016,8 @@ asm void cXyz::operator=(cXyz const& param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm cXyz::cXyz(cXyz const& param_0) {
// asm cXyz::cXyz(cXyz const& param_0) {
extern "C" asm void __ct__4cXyzFRC4cXyz() {
nofralloc
#include "asm/d/d_ev_camera/__ct__4cXyzFRC4cXyz.s"
}
@@ -2116,22 +2041,26 @@ void func_8009784C() {
}
/* 80097850-80097858 092190 0008+00 0/0 1/0 0/0 .text checkCanoeRide__9daPy_py_cCFv */
bool daPy_py_c::checkCanoeRide() const {
// bool daPy_py_c::checkCanoeRide() const {
extern "C" bool checkCanoeRide__9daPy_py_cCFv() {
return false;
}
/* 80097858-80097860 092198 0008+00 0/0 1/0 0/0 .text checkBoardRide__9daPy_py_cCFv */
bool daPy_py_c::checkBoardRide() const {
// bool daPy_py_c::checkBoardRide() const {
extern "C" bool checkBoardRide__9daPy_py_cCFv() {
return false;
}
/* 80097860-80097868 0921A0 0008+00 0/0 1/0 0/0 .text checkSpinnerRide__9daPy_py_cCFv */
bool daPy_py_c::checkSpinnerRide() const {
// bool daPy_py_c::checkSpinnerRide() const {
extern "C" bool checkSpinnerRide__9daPy_py_cCFv() {
return false;
}
/* 80097868-80097870 0921A8 0008+00 0/0 1/0 0/0 .text checkBoarRide__9daPy_py_cCFv */
bool daPy_py_c::checkBoarRide() const {
// bool daPy_py_c::checkBoarRide() const {
extern "C" bool checkBoarRide__9daPy_py_cCFv() {
return false;
}
@@ -2140,7 +2069,8 @@ bool daPy_py_c::checkBoarRide() const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void daAlink_c::getShadowTalkAtnPos() {
// asm void daAlink_c::getShadowTalkAtnPos() {
extern "C" asm void getShadowTalkAtnPos__9daAlink_cFv() {
nofralloc
#include "asm/d/d_ev_camera/getShadowTalkAtnPos__9daAlink_cFv.s"
}