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;