diff --git a/include/JSystem/J3DGraphAnimator/J3DAnimation.h b/include/JSystem/J3DGraphAnimator/J3DAnimation.h index e0b78ce035..18ff4ee9e2 100644 --- a/include/JSystem/J3DGraphAnimator/J3DAnimation.h +++ b/include/JSystem/J3DGraphAnimator/J3DAnimation.h @@ -299,6 +299,8 @@ public: virtual ~J3DFrameCtrl() {} f32 getRate() const { return mRate; } + f32 getFrame() const { return mFrame; } + u8 getAttribute() const { return mAttribute; } void setAttribute(u8 attr) { mAttribute = attr; } void setEnd(s16 end) { mEnd = end; } void setRate(f32 rate) { mRate = rate; } diff --git a/include/JSystem/J3DGraphAnimator/J3DMaterialAnm.h b/include/JSystem/J3DGraphAnimator/J3DMaterialAnm.h index 191908b869..f3c349f72a 100644 --- a/include/JSystem/J3DGraphAnimator/J3DMaterialAnm.h +++ b/include/JSystem/J3DGraphAnimator/J3DMaterialAnm.h @@ -124,6 +124,8 @@ public: /* 800A4820 */ virtual ~J3DMaterialAnm(); /* 8032C3C4 */ virtual void calc(J3DMaterial*) const; + const J3DTexMtxAnm& getTexMtxAnm(int i) const { return mTexMtxAnm[i]; } + private: /* 0x04 */ J3DMatColorAnm mMatColorAnm[2]; /* 0x14 */ J3DTexMtxAnm mTexMtxAnm[8]; diff --git a/include/JSystem/J3DGraphAnimator/J3DModel.h b/include/JSystem/J3DGraphAnimator/J3DModel.h index 290f05fe66..16bf6deacd 100644 --- a/include/JSystem/J3DGraphAnimator/J3DModel.h +++ b/include/JSystem/J3DGraphAnimator/J3DModel.h @@ -34,7 +34,7 @@ public: /* 803281B4 */ void calcBumpMtx(); /* 803282B8 */ void calcBBoardMtx(); /* 803282EC */ void prepareShapePackets(); - Mtx* getAnmMtx(int); + MtxP getAnmMtx(int); /* 80327CA4 */ virtual void update(); /* 80327E4C */ virtual void entry(); @@ -48,6 +48,7 @@ public: void onFlag(u32 flag) { mFlags |= flag; } void offFlag(u32 flag) { mFlags &= ~flag; } bool checkFlag(u32 flag) const { return (mFlags & flag) ? true : false; } + Mtx& getBaseTRMtx() { return mBaseTransformMtx; } // is there a better way to handle inlines with same name as non-inlines? MtxP i_getAnmMtx(int p1) { return mMtxBuffer->getAnmMtx(p1); } diff --git a/include/JSystem/J3DGraphBase/J3DMaterial.h b/include/JSystem/J3DGraphBase/J3DMaterial.h index d4219a9985..5478f70764 100644 --- a/include/JSystem/J3DGraphBase/J3DMaterial.h +++ b/include/JSystem/J3DGraphBase/J3DMaterial.h @@ -49,6 +49,7 @@ public: J3DColorBlock* getColorBlock() const { return mColorBlock; } J3DTexGenBlock* getTexGenBlock() const { return mTexGenBlock; } J3DDisplayListObj* getSharedDisplayListObj() const { return mSharedDLObj; } + J3DShape* getShape() { return mShape; } J3DMaterialAnm* getMaterialAnm() const { if ((u32)mMaterialAnm < 0xC0000000) { return mMaterialAnm; diff --git a/include/JSystem/J3DGraphBase/J3DShape.h b/include/JSystem/J3DGraphBase/J3DShape.h index 9410d61ab9..332acb3d15 100644 --- a/include/JSystem/J3DGraphBase/J3DShape.h +++ b/include/JSystem/J3DGraphBase/J3DShape.h @@ -48,6 +48,8 @@ public: void setVertexDataPointer(J3DVertexData* pVtxData) { mVertexData = pVtxData; } void* getVcdVatCmd() const { return mVcdVatCmd; } void setVcdVatCmd(void* pVatCmd) { mVcdVatCmd = pVatCmd; } + void show() { offFlag(1); } + void hide() { onFlag(1); } static void resetVcdVatCache() { sOldVcdVatCmd = NULL; } diff --git a/include/JSystem/JMath/JMath.h b/include/JSystem/JMath/JMath.h index d71f5de5e7..cb252d9aea 100644 --- a/include/JSystem/JMath/JMath.h +++ b/include/JSystem/JMath/JMath.h @@ -10,6 +10,14 @@ inline f32 JMAFastReciprocal(f32 value) { return __fres(value); } +inline f32 JMAFastSqrt(f32 input) { + if (input > 0.0f) { + f64 tmp = __frsqrte(input); + return tmp * input; + } + return input; +} + namespace JMath { inline f32 fastReciprocal(f32 value) { diff --git a/include/SSystem/SComponent/c_cc_d.h b/include/SSystem/SComponent/c_cc_d.h index dff6740eed..1bc91d70f0 100644 --- a/include/SSystem/SComponent/c_cc_d.h +++ b/include/SSystem/SComponent/c_cc_d.h @@ -273,6 +273,7 @@ public: u8 GetWeightUc() const { return mWeight; } void SetWeight(u8 weight) { mWeight = weight; } fopAc_ac_c* GetAc() { return mActor; } + void SetActor(void* ac) { mActor = (fopAc_ac_c*)ac; } }; // Size = 0x1C STATIC_ASSERT(0x1C == sizeof(cCcD_Stts)); @@ -281,8 +282,8 @@ class cCcD_Obj; // placeholder class cCcD_ObjCommonBase { protected: - /* 0x00 */ int mSPrm; - /* 0x04 */ int mRPrm; + /* 0x00 */ u32 mSPrm; + /* 0x04 */ u32 mRPrm; /* 0x08 */ cCcD_Obj* mHitObj; /* 0x0C vtable */ public: @@ -295,6 +296,8 @@ public: s32 getRPrm() const { return mRPrm; } cCcD_Obj* getHitObj() { return mHitObj; } u32 MskSPrm(u32 mask) const { return mSPrm & mask; } + void OnSPrmBit(u32 flag) { mSPrm |= flag; } + void OffSPrmBit(u32 flag) { mSPrm &= ~flag; } }; STATIC_ASSERT(0x10 == sizeof(cCcD_ObjCommonBase)); @@ -311,6 +314,8 @@ public: bool ChkSet() const { return MskSPrm(1); } u8 GetAtp() const { return mAtp; } u32 MskType(u32 msk) const { return mType & msk; } + void SetType(u32 type) { mType = type; } + void SetAtp(int atp) { mAtp = atp; } protected: /* 0x10 */ int mType; @@ -388,6 +393,11 @@ public: bool ChkAtType(u32 type) const { return mObjAt.MskType(type); } u32 ChkCoNoCrr() const { return mObjCo.ChkNoCrr(); } u32 ChkCoSph3DCrr() const { return mObjCo.ChkSph3DCrr(); } + void OnAtSPrmBit(u32 flag) { mObjAt.OnSPrmBit(flag); } + void OffAtSPrmBit(u32 flag) { mObjAt.OffSPrmBit(flag); } + void SetAtType(u32 type) { mObjAt.SetType(type); } + void OnAtSetBit() { mObjAt.OnSPrmBit(1); } + void SetAtAtp(int atp) { mObjAt.SetAtp(atp); } }; // Size = 0x40 diff --git a/include/SSystem/SComponent/c_lib.h b/include/SSystem/SComponent/c_lib.h index 8ff0092bc1..ca3406b0e0 100644 --- a/include/SSystem/SComponent/c_lib.h +++ b/include/SSystem/SComponent/c_lib.h @@ -42,6 +42,18 @@ inline u8 cLib_checkBit(u8& pVar, u8 pBit) { return pVar & pBit; } +template +inline T cLib_minMaxLimit(T param_0, T min, T max) { + if (param_0 < min) { + return max; + } + min = param_0; + if (min > max) { + min = max; + } + return min; +} + void MtxInit(void); void MtxTrans(float, float, float, unsigned char); void MtxScale(float, float, float, unsigned char); diff --git a/include/SSystem/SComponent/c_xyz.h b/include/SSystem/SComponent/c_xyz.h index 0f28e22048..f7a57a7b6a 100644 --- a/include/SSystem/SComponent/c_xyz.h +++ b/include/SSystem/SComponent/c_xyz.h @@ -2,6 +2,7 @@ #define C_XYZ_H #include "dolphin/mtx/vec.h" +#include "msl_c/math.h" #include "global.h" struct cXyz : Vec { @@ -116,6 +117,10 @@ struct cXyz : Vec { cXyz tmp2(other.x, 0, other.z); return tmp.abs2(tmp2); } + f32 absXZ(const Vec& other) const { + f32 abs = abs2XZ(other); + return sqrtf(abs); + } f32 getMagXZ() const { return cXyz(this->x, 0, this->z).getSquareMag(); } }; diff --git a/include/d/a/d_a_alink.h b/include/d/a/d_a_alink.h index cdce05bcbf..22e01aed97 100644 --- a/include/d/a/d_a_alink.h +++ b/include/d/a/d_a_alink.h @@ -4,6 +4,7 @@ #include "JSystem/J3DGraphBase/J3DMatBlock.h" #include "Z2AudioLib/Z2Creature.h" #include "Z2AudioLib/Z2WolfHowlMgr.h" +#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h" #include "d/a/d_a_player.h" #include "d/bg/d_bg_s.h" #include "d/cc/d_cc_d.h" @@ -17,12 +18,12 @@ #include "d/msg/d_msg_flow.h" #include "d/particle/d_particle.h" #include "d/particle/d_particle_copoly.h" +#include "rel/d/a/tag/d_a_tag_mmsg/d_a_tag_mmsg.h" #include "dolphin/types.h" class fopEn_enemy_c; class daAlinkHIO_anm_c; class J3DAnmTevRegKey; -class dCcG_At_Spl; class dDemo_actor_c; class J2DScreen; @@ -78,7 +79,7 @@ public: /* 800CFD58 */ virtual ~daAlink_blur_c(); private: - /* 0x010 */ u8 field_0x10[4]; + /* 0x010 */ void* m_blurTex; /* 0x014 */ int field_0x14; /* 0x018 */ u8 field_0x18[4]; /* 0x01C */ int field_0x1c; @@ -108,13 +109,55 @@ public: /* 800CFCF4 */ daAlink_footData_c(); private: - u8 field_0x00[0xa4]; + /* 0x00 */ u8 field_0x00[0x8]; + /* 0x08 */ cXyz field_0x8; + /* 0x14 */ Mtx field_0x14; + /* 0x44 */ Mtx field_0x44; + /* 0x74 */ Mtx field_0x74; +}; // Size: 0xA4 + +STATIC_ASSERT(sizeof(daAlink_footData_c) == 0xA4); + +class daAlink_matAnm_c : public J3DMaterialAnm { +public: + /* 8009D8E4 */ void init(); + /* 800D0180 */ void offSetFlg(); + + /* 800D0B8C */ virtual ~daAlink_matAnm_c(); + /* 8009D90C */ virtual void calc(J3DMaterial*) const; + +private: + /* 0x0F4 */ f32 field_0xf4; + /* 0x0F8 */ f32 field_0xf8; + /* 0x0FC */ f32 mNowOffsetX; + /* 0x100 */ f32 mNowOffsetY; + /* 0x104 */ int mSetFlag; }; class daAlink_c : public daPy_py_c { public: enum daAlink_ANM { - GANON_FINISH = 408 // name probably wrong, fix later + /* 0x13 */ ANM_DASH = 19, + /* 0x15 */ ANM_WAIT_TURN = 0x15, + /* 0x19 */ ANM_IDLE = 0x19, // name might be inaccurate + /* 0x1B */ ANM_WAIT_INIT = 0x1B, + /* 0x1D */ ANM_SIDE_STEP_LEFT = 0x1D, + /* 0x1E */ ANM_SIDE_STEP_RIGHT, + /* 0x1F */ ANM_SIDE_STEP_LEFT_LAND, + /* 0x20 */ ANM_SIDE_STEP_RIGHT_LAND, + /* 0x21 */ ANM_BACK_JUMP = 0x21, + /* 0x22 */ ANM_BACK_JUMP_LAND, + /* 0x23 */ ANM_FRONT_ROLL, + /* 0x24 */ ANM_ROLL_CRASH, + /* 0x71 */ ANM_CUT_JUMP = 0x71, + /* 0x90 */ ANM_SERVICE_WAIT = 0x90, + /* 0xB6 */ ANM_TIRED_WAIT = 0xB6, + /* 0xB7 */ ANM_TIRED_WAIT_INIT, + /* 0xBD */ ANM_FORWARD_SLIDE = 0xBD, + /* 0xBE */ ANM_BACKWARD_SLIDE, + /* 0xBF */ ANM_BACKWARD_SLIDE_LAND, + /* 0xC0 */ ANM_FORWARD_SLIDE_LAND, + ANM_GANON_FINISH = 408 // name probably wrong, fix later }; enum daAlink_UPPER { @@ -126,157 +169,196 @@ public: enum daAlink_UNDER {}; enum daAlink_FTANM {}; enum daAlink_WARP_MAT_MODE {}; - enum daAlink_WANM {}; + + enum daAlink_WANM { + /* 0x5E */ ANM_WOLF_HOWL_SUCCESS = 94 + }; enum MODE_FLG { - PLAYER_FLY = 0x70852, + /* 0x00000001 */ MODE_IDLE = (1 << 0), + /* 0x00000002 */ MODE_JUMP = (1 << 1), + /* 0x00000004 */ MODE_DISABLE_ITEMS = (1 << 2), // ? + /* 0x00000008 */ MODE_HIT_STUN = (1 << 3), + /* 0x00000010 */ MODE_CLIMB = (1 << 4), // ? + /* 0x00000020 */ MODE_UNK_20 = 0x20, // related to wolf? + /* 0x00000040 */ MODE_NO_COLLISION = 0x40, // disables wall col checks + /* 0x00000080 */ MODE_GUARD_ENABLED = 0x80, + /* 0x00000100 */ MODE_UNK_100 = 0x100, + /* 0x00000400 */ MODE_RIDING = 0x400, + /* 0x00000800 */ MODE_UNK_800 = 0x800, + /* 0x00001000 */ MODE_UNK_1000 = 0x1000, // affects things like anim set when controlling rod statue + /* 0x00002000 */ MODE_UNK_2000 = 0x2000, + /* 0x00004000 */ MODE_UNK_4000 = 0x4000, + /* 0x00008000 */ MODE_UNK_8000 = 0x8000, + /* 0x00010000 */ MODE_VINE_CLIMB = 0x10000, // used for vine climbing + /* 0x00020000 */ MODE_ROPE_WALK = 0x20000, + /* 0x00040000 */ MODE_SWIMMING = 0x40000, // this might be more than swimming + /* 0x00100000 */ MODE_GRAB_PLACE = 0x100000, + /* 0x00800000 */ MODE_UNK_800000 = 0x800000, // moves camera down + /* 0x01000000 */ MODE_UNK_1000000 = 0x1000000, // attention related? + /* 0x02000000 */ MODE_UNK_2000000 = 0x2000000, // maybe related to snow/sand? + /* 0x04000000 */ MODE_UNK_4000000 = 0x4000000, + /* 0x08000000 */ MODE_UNK_8000000 = 0x8000000, + /* 0x10000000 */ MODE_UNK_10000000 = 0x10000000, // catch boomerang? + /* 0x20000000 */ MODE_UNK_20000000 = 0x20000000, + /* 0x40000000 */ MODE_UNK_40000000 = 0x40000000, }; enum daAlink_PROC { - PREACTION_UNEQUIP, - SERVICE_WAIT, - HUMAN_WAIT = 3, - HUMAN_SIDESTEP = 10, - HUMAN_SIDESTEP_LAND, - HUMAN_SLIDE, - FRONT_ROLL = 14, - FRONT_ROLL_CRASH, - HUMAN_KNOCKBACK, - SIDE_ROLL, - BACK_JUMP, - BACK_JUMP_LAND, - SLIP, - HUMAN_AUTOJUMP, - DIVE_JUMP, - ROLL_JUMP, - FALL, - LAND, - SMALL_JUMP, - STEP_MOVE, - GUARD_SLIP = 29, - GUARD_ATTACK, - GUARD_BREAK, - TURN_MOVE, - CUT_NORMAL, - CUT_FINISH, - CUT_FINISH_JUMP_UP, - CUT_FINISH_JUMP_UP_LAND, - CUT_REVERSE, - CUT_JUMP, - CUT_JUMP_LAND, - COMBO_CUT_TURN, - CUT_CHARGE, - CUT_TURN_MOVE, - CUT_DOWN, - CUT_DOWN_LAND, - CUT_HEAD, - CUT_HEAD_LAND, - CUT_LARGE_JUMP_CHARGE, - CUT_LARGE_JUMP, - CUT_LARGE_JUMP_LAND, - DAMAGE, - LAND_DAMAGE = 52, - CRAWL_START, - CRAWL_MOVE, - CRAWL_AUTOMOVE, - CRAWL_END, - PULL_MOVE, - HORSE_RIDE, - HORSE_GETOFF, - HORSE_TURN = 61, - HORSE_JUMP, - HORSE_LAND, - HORSE_SUBJECTIVITY, - HORSE_CUT, - HORSE_CUT_CHARGE_READY, - HORSE_CUT_TURN, - HORSE_DAMAGE, - RIDE_BOW_READY, - HORSE_BOTTLE_DRINK = 76, - HORSE_KANDELAAR_POUR = 78, - HORSE_RUN, - HORSE_HANG, - BOAR_RUN = 83, - HANG_START = 85, - HANG_FALL_START, - HANG_UP, - HANG_WAIT, - HANG_MOVE, - COPY_ROD_SWING = 101, - GRAB_READY = 108, - GRAB_UP, - GRAB_THROW = 111, - GRAB_DOWN, - GRAB_REBOUND = 114, - GRAB_STAND, - INSECT_CATCH, - PICK_UP, - PICK_PUT, - HUMAN_ST_ESCAPE, - CLIMB_MOVE_VERTICAL = 130, - CLIMB_MOVE_HORIZONTAL, - CANOE_RIDE = 140, - CANOE_JUMP_RIDE, - CANOE_GETOFF, - CANOE_ROW = 144, - CANOE_PADDLE_SHIFT, - CANOE_PADDLE_PUT, - CANOE_PADDLE_GRAB, - CANOE_ROD_GRAB, - CANOE_FISHING_REEL = 150, - CANOE_FISHING_GET, - CANOE_SUBJECTIVITY, - CANOE_BOTTLE_DRINK = 160, - CANOE_KANDELAAR_POUR, - FISHING_FOOD = 163, - BOARD_CUT_TURN = 173, - FM_CHAIN_UP, - BOTTLE_DRINK = 179, - EMPTY_BOTTLE_SWING = 181, - GRASS_WHISTLE = 186, - HAWK_WAIT = 188, - FLOOR_DOWN_REBOUND = 189, - GORON_RIDE_WAIT, - GOAT_THROW = 192, - GOAT_STROKE, - MAGNE_BOOTS_FLY = 204, - BOOTS_EQUIP, - SUMOU_PUSH = 207, - SUMOU_SIDE_MOVE, - SUMOU_ACTION, - SUMOU_STAGGER, - SUMOU_WIN_LOSE, - BOSS_ENEMY_HANG = 220, - SCREAM_WAIT = 222, - DUNGEON_WARP_READY = 234, - WOLF_HOWL = 237, - WOLF_WAIT = 241, - WOLF_DASH = 243, - WOLF_KNOCKBACK = 244, - WOLF_SIDESTEP = 247, - WOLF_AUTOJUMP = 252, - WOLF_RSIT = 255, - WOLF_DAMAGE = 263, - WOLF_SLIDE = 271, - WOLF_ROPE_HANG = 275, - WOLF_TAGLOCK_JUMP = 280, - WOLF_TAGLOCK_LAND, - WOLF_DOWNATTACK_PULLOUT = 291, - WOLF_JUMPATTACK = 284, - WOLF_ST_ESCAPE = 289, - WOLF_CHAIN = 305, - WOLF_DIG, - WOLF_ENEMY_HANG_BITE = 310, - SUBJECTIVITY = 318, - POLY_DAMAGE = 321, - ELEC_DAMAGE, - PUSH_PULL_WAIT, - PUSH_MOVE, - TRESURE_STAND = 328, - METAMORPHOSE = 333, - DEAD = 336, - LARGE_DAMAGE = 345, - LARGE_DAMAGE_WALL, + /* 0x000 */ PREACTION_UNEQUIP, + /* 0x001 */ SERVICE_WAIT, + /* 0x003 */ HUMAN_WAIT = 3, + /* 0x004 */ HUMAN_MOVE, + /* 0x005 */ HUMAN_ATN_MOVE, + /* 0x006 */ HUMAN_ATN_ACTOR_WAIT, + /* 0x007 */ HUMAN_ATN_ACTOR_MOVE, + /* 0x008 */ HUMAN_WAIT_TURN, + /* 0x009 */ HUMAN_MOVE_TURN, + /* 0x00A */ HUMAN_SIDESTEP, + /* 0x00B */ HUMAN_SIDESTEP_LAND, + /* 0x00C */ HUMAN_SLIDE, + /* 0x00D */ HUMAN_SLIDE_LAND, + /* 0x00E */ FRONT_ROLL, + /* 0x00F */ FRONT_ROLL_CRASH, + /* 0x010 */ HUMAN_KNOCKBACK, + /* 0x011 */ SIDE_ROLL, + /* 0x012 */ BACK_JUMP, + /* 0x013 */ BACK_JUMP_LAND, + /* 0x014 */ SLIP, + /* 0x015 */ HUMAN_AUTOJUMP, + /* 0x016 */ DIVE_JUMP, + /* 0x017 */ ROLL_JUMP, + /* 0x018 */ FALL, + /* 0x019 */ LAND, + /* 0x01A */ SMALL_JUMP, + /* 0x01B */ STEP_MOVE, + /* 0x01D */ GUARD_SLIP = 29, + /* 0x01E */ GUARD_ATTACK, + /* 0x01F */ GUARD_BREAK, + /* 0x020 */ TURN_MOVE, + /* 0x021 */ CUT_NORMAL, + /* 0x022 */ CUT_FINISH, + /* 0x023 */ CUT_FINISH_JUMP_UP, + /* 0x024 */ CUT_FINISH_JUMP_UP_LAND, + /* 0x025 */ CUT_REVERSE, + /* 0x026 */ CUT_JUMP, + /* 0x027 */ CUT_JUMP_LAND, + /* 0x028 */ COMBO_CUT_TURN, + /* 0x029 */ CUT_CHARGE, + /* 0x02A */ CUT_TURN_MOVE, + /* 0x02B */ CUT_DOWN, + /* 0x02C */ CUT_DOWN_LAND, + /* 0x02D */ CUT_HEAD, + /* 0x02E */ CUT_HEAD_LAND, + /* 0x02F */ CUT_LARGE_JUMP_CHARGE, + /* 0x030 */ CUT_LARGE_JUMP, + /* 0x031 */ CUT_LARGE_JUMP_LAND, + /* 0x032 */ DAMAGE, + /* 0x034 */ LAND_DAMAGE = 52, + /* 0x035 */ CRAWL_START, + /* 0x036 */ CRAWL_MOVE, + /* 0x037 */ CRAWL_AUTOMOVE, + /* 0x038 */ CRAWL_END, + /* 0x039 */ PULL_MOVE, + /* 0x03A */ HORSE_RIDE, + /* 0x03B */ HORSE_GETOFF, + /* 0x03D */ HORSE_TURN = 61, + /* 0x03E */ HORSE_JUMP, + /* 0x03F */ HORSE_LAND, + /* 0x040 */ HORSE_SUBJECTIVITY, + /* 0x041 */ HORSE_CUT, + /* 0x042 */ HORSE_CUT_CHARGE_READY, + /* 0x043 */ HORSE_CUT_TURN, + /* 0x044 */ HORSE_DAMAGE, + /* 0x045 */ RIDE_BOW_READY, + /* 0x04C */ HORSE_BOTTLE_DRINK = 76, + /* 0x04E */ HORSE_KANDELAAR_POUR = 78, + /* 0x04F */ HORSE_RUN, + /* 0x050 */ HORSE_HANG, + /* 0x053 */ BOAR_RUN = 83, + /* 0x055 */ HANG_START = 85, + /* 0x056 */ HANG_FALL_START, + /* 0x057 */ HANG_UP, + /* 0x058 */ HANG_WAIT, + /* 0x059 */ HANG_MOVE, + /* 0x065 */ COPY_ROD_SWING = 101, + /* 0x06B */ CLIMB_MOVE_LADDER = 107, + /* 0x06C */ GRAB_READY = 108, + /* 0x06D */ GRAB_UP, + /* 0x06F */ GRAB_THROW = 111, + /* 0x070 */ GRAB_DOWN, + /* 0x072 */ GRAB_REBOUND = 114, + /* 0x073 */ GRAB_STAND, + /* 0x074 */ INSECT_CATCH, + /* 0x075 */ PICK_UP, + /* 0x076 */ PICK_PUT, + /* 0x077 */ HUMAN_ST_ESCAPE, + /* 0x082 */ CLIMB_MOVE_VERTICAL = 130, + /* 0x083 */ CLIMB_MOVE_HORIZONTAL, + /* 0x084 */ CLIMB_HANG, + /* 0x08C */ CANOE_RIDE = 140, + /* 0x08D */ CANOE_JUMP_RIDE, + /* 0x08E */ CANOE_GETOFF, + /* 0x090 */ CANOE_ROW = 144, + /* 0x091 */ CANOE_PADDLE_SHIFT, + /* 0x092 */ CANOE_PADDLE_PUT, + /* 0x093 */ CANOE_PADDLE_GRAB, + /* 0x094 */ CANOE_ROD_GRAB, + /* 0x096 */ CANOE_FISHING_REEL = 150, + /* 0x097 */ CANOE_FISHING_GET, + /* 0x098 */ CANOE_SUBJECTIVITY, + /* 0x0A0 */ CANOE_BOTTLE_DRINK = 160, + /* 0x0A1 */ CANOE_KANDELAAR_POUR, + /* 0x0A3 */ FISHING_FOOD = 163, + /* 0x0AD */ BOARD_CUT_TURN = 173, + /* 0x0AF */ FM_CHAIN_UP, + /* 0x0B3 */ BOTTLE_DRINK = 179, + /* 0x0B5 */ BOTTLE_SWING = 181, + /* 0x0BA */ GRASS_WHISTLE = 186, + /* 0x0BC */ HAWK_WAIT = 188, + /* 0x0BD */ FLOOR_DOWN_REBOUND = 189, + /* 0x0BE */ GORON_RIDE_WAIT, + /* 0x0C0 */ GOAT_THROW = 192, + /* 0x0C1 */ GOAT_STROKE, + /* 0x0CC */ MAGNE_BOOTS_FLY = 204, + /* 0x0CD */ BOOTS_EQUIP, + /* 0x0CF */ SUMOU_PUSH = 207, + /* 0x0D0 */ SUMOU_SIDE_MOVE, + /* 0x0D1 */ SUMOU_ACTION, + /* 0x0D2 */ SUMOU_STAGGER, + /* 0x0D3 */ SUMOU_WIN_LOSE, + /* 0x0DC */ BOSS_ENEMY_HANG = 220, + /* 0x0DE */ SCREAM_WAIT = 222, + /* 0x0EA */ DUNGEON_WARP_READY = 234, + /* 0x0ED */ WOLF_HOWL = 237, + /* 0x0F1 */ WOLF_WAIT = 241, + /* 0x0F2 */ WOLF_MOVE, + /* 0x0F3 */ WOLF_DASH, + /* 0x0F4 */ WOLF_KNOCKBACK, + /* 0x0F7 */ WOLF_SIDESTEP = 247, + /* 0x0FC */ WOLF_AUTOJUMP = 252, + /* 0x0FF */ WOLF_RSIT = 255, + /* 0x107 */ WOLF_DAMAGE = 263, + /* 0x10F */ WOLF_SLIDE = 271, + /* 0x114 */ WOLF_ROPE_HANG = 276, + /* 0x118 */ WOLF_TAGLOCK_JUMP = 280, + /* 0x119 */ WOLF_TAGLOCK_LAND, + /* 0x11C */ WOLF_JUMPATTACK = 284, + /* 0x121 */ WOLF_ST_ESCAPE = 289, + /* 0x123 */ WOLF_DOWNATTACK_PULLOUT = 291, + /* 0x131 */ WOLF_CHAIN = 305, + /* 0x132 */ WOLF_DIG, + /* 0x136 */ WOLF_ENEMY_HANG_BITE = 310, + /* 0x13E */ SUBJECTIVITY = 318, + /* 0x141 */ POLY_DAMAGE = 321, + /* 0x142 */ ELEC_DAMAGE, + /* 0x143 */ PUSH_PULL_WAIT, + /* 0x144 */ PUSH_MOVE, + /* 0x148 */ TRESURE_STAND = 328, + /* 0x14D */ METAMORPHOSE = 333, + /* 0x150 */ DEAD = 336, + /* 0x159 */ LARGE_DAMAGE = 345, + /* 0x15A */ LARGE_DAMAGE_WALL, }; // this might be one of the above enums, but not clear yet @@ -297,9 +379,10 @@ public: /* 0x24 */ cXyz field_0x24; }; - class hsChainShape_c { - /* 800D0CDC */ ~hsChainShape_c(); - /* 80107900 */ void draw(); + class hsChainShape_c : public J3DPacket { + public: + /* 80107900 */ virtual void draw(); + /* 800D0CDC */ virtual ~hsChainShape_c(); }; /* 8009D87C */ bool getE3Zhint(); @@ -326,7 +409,7 @@ public: /* 800A1AEC */ void setEyeMove(cXyz*, s16, s16); /* 800A1F90 */ void setNeckAngle(); /* 800A2198 */ void commonLineCheck(cXyz*, cXyz*); - /* 800A21E0 */ void getMoveBGActorName(cBgS_PolyInfo&, int); + /* 800A21E0 */ static s16 getMoveBGActorName(cBgS_PolyInfo&, int); /* 800A2280 */ void checkGoronRide(); /* 800A22E8 */ void setMoveSlantAngle(); /* 800A2710 */ void setArmMatrix(); @@ -343,10 +426,10 @@ public: /* 800A3E98 */ void initModelEnv(u16, u32); /* 800A3F00 */ void initDemoModel(J3DModel**, char const*, u32); /* 800A3F98 */ void initDemoBck(mDoExt_bckAnm**, char const*); - /* 800A4068 */ void createHeap(); + /* 800A4068 */ static void createHeap(); /* 800A4910 */ void setSelectEquipItem(int); - /* 800A4BC8 */ void checkBoarStart(); - /* 800A4C40 */ void checkCanoeStart(); + /* 800A4BC8 */ BOOL checkBoarStart(); + /* 800A4C40 */ BOOL checkCanoeStart(); /* 800A4CB4 */ void playerInit(); /* 800A54F4 */ BOOL checkHorseStart(u32, int); /* 800A551C */ void setStartProcInit(); @@ -447,14 +530,14 @@ public: /* 800B1FB8 */ bool checkLv2MiddleBossBgRide(s16); /* 800B1FD8 */ void getSlidePolygon(cM3dGPla*); /* 800B21EC */ void checkSlope() const; - /* 800B25CC */ u32 itemTriggerCheck(u8); - /* 800B25E8 */ u32 itemButtonCheck(u8); + /* 800B25CC */ BOOL itemTriggerCheck(u8); + /* 800B25E8 */ BOOL itemButtonCheck(u8); /* 800B2604 */ void itemButton(); /* 800B2634 */ void itemTrigger(); /* 800B2664 */ void spActionButton(); /* 800B2688 */ void spActionTrigger(); - /* 800B26AC */ u32 midnaTalkTrigger() const; - /* 800B26B8 */ void swordSwingTrigger(); + /* 800B26AC */ BOOL midnaTalkTrigger() const; + /* 800B26B8 */ BOOL swordSwingTrigger(); /* 800B26DC */ void setItemActionButtonStatus(u8); /* 800B26FC */ void itemActionTrigger(); /* 800B271C */ void setStickData(); @@ -465,7 +548,7 @@ public: /* 800B3268 */ void setDoStatusEmphasys(u8); /* 800B3280 */ void setDoStatusContinuation(u8); /* 800B3298 */ void setBStatus(u8); - /* 800B32B0 */ void checkAtnWaitAnime(); + /* 800B32B0 */ BOOL checkAtnWaitAnime(); /* 800B3358 */ void setTiredVoice(daPy_frameCtrl_c*); /* 800B33E4 */ void checkRestHPAnime(); /* 800B3494 */ void getDirectionFromAngle(s16); @@ -485,19 +568,19 @@ public: /* 800B4918 */ float getMetamorphoseFarDis() const; /* 800B4928 */ s16 getMetamorphoseFarAngle() const; /* 800B4938 */ void setMidnaMsg(); - /* 800B4950 */ void notTalk(); + /* 800B4950 */ bool notTalk(); /* 800B4A08 */ void setTalkStatus(); - /* 800B4B2C */ void getFrontRollRate(); + /* 800B4B2C */ f32 getFrontRollRate(); /* 800B4B7C */ void decideCommonDoStatus(); /* 800B5284 */ void decideDoStatus(); - /* 800B58EC */ void checkWaitAction(); + /* 800B58EC */ BOOL checkWaitAction(); /* 800B5BC0 */ void setFallVoice(); /* 800B5C34 */ void setLandPassiveData(); /* 800B5C64 */ void setStepLandVibration(); /* 800B5CCC */ void checkLandAction(int); /* 800B5F6C */ void checkSlideAction(); /* 800B607C */ void checkAutoJumpAction(); - /* 800B69CC */ void checkCutJumpInFly(); + /* 800B69CC */ bool checkCutJumpInFly(); /* 800B6A30 */ BOOL checkFrontWallTypeAction(); /* 800B6F28 */ void checkItemActionInitStart(); /* 800B7090 */ void checkItemChangeAutoAction(); @@ -505,23 +588,23 @@ public: /* 800B7190 */ void cancelItemUseQuake(int); /* 800B71EC */ void cancelUpperItemReadyAnime(int); /* 800B72E4 */ void checkItemActorPointer(); - /* 800B7390 */ void checkSwordTwirlAction(); - /* 800B74B4 */ void checkUpperItemActionFly(); + /* 800B7390 */ bool checkSwordTwirlAction(); + /* 800B74B4 */ BOOL checkUpperItemActionFly(); /* 800B7528 */ void checkItemButtonChange(); /* 800B75EC */ void checkUpperItemAction(); /* 800B7B7C */ void orderPeep(); /* 800B7BF8 */ void orderTalk(int); /* 800B80C4 */ void orderZTalk(); /* 800B8374 */ void checkNormalAction(); - /* 800B8930 */ void checkReadyItem(); + /* 800B8930 */ bool checkReadyItem(); /* 800B8988 */ void checkItemAction(); /* 800B9010 */ bool checkRAction(); /* 800B9018 */ void checkMoveDoAction(); - /* 800B9148 */ void checkSideRollAction(int); - /* 800B9254 */ void checkNoUpperAnime() const; + /* 800B9148 */ BOOL checkSideRollAction(int); + /* 800B9254 */ BOOL checkNoUpperAnime() const; /* 800B92D0 */ void checkOneHandItemEquipAnime() const; /* 800B92F8 */ void checkItemEquipAnime() const; - /* 800B9340 */ void checkEquipAnime() const; + /* 800B9340 */ BOOL checkEquipAnime() const; /* 800B9398 */ void checkWindDashAnime() const; /* 800B93CC */ void checkSwordTwirlAnime() const; /* 800B93F4 */ void swordEquip(int); @@ -530,9 +613,9 @@ public: /* 800B96A4 */ void itemUnequip(u16, f32); /* 800B97EC */ void checkFastUnequip(); /* 800B983C */ void allUnequip(int); - /* 800B994C */ void checkItemChangeFromButton(); - /* 800B9D2C */ void checkNextActionFromButton(); - /* 800B9F50 */ void checkGroundSpecialMode(); + /* 800B994C */ BOOL checkItemChangeFromButton(); + /* 800B9D2C */ BOOL checkNextActionFromButton(); + /* 800B9F50 */ BOOL checkGroundSpecialMode(); /* 800BA09C */ void commonCheckNextAction(int); /* 800BA0D0 */ int checkNextAction(int); /* 800BA6A0 */ void commonChangeItem(); @@ -544,7 +627,7 @@ public: /* 800BB2B0 */ void setBodyAngleXReadyAnime(int); /* 800BB324 */ void setMagicArmorBrk(int); /* 800BB408 */ BOOL checkMagicArmorHeavy() const; - /* 800BB4B8 */ void checkHeavyStateOn(int, int); + /* 800BB4B8 */ BOOL checkHeavyStateOn(int, int); /* 800BB644 */ void initGravity(); /* 800BB770 */ void setSpecialGravity(f32, f32, int); /* 800BB7A0 */ void transAnimeProc(cXyz*, f32, f32); @@ -571,10 +654,10 @@ public: /* 800BF79C */ void setMetamorphoseModel(int); /* 800BF854 */ void keepItemData(); /* 800BF884 */ void returnKeepItemData(); - /* 800BF8D0 */ void setItemModel(); - /* 800BF9F0 */ void setItemActor(); + /* 800BF8D0 */ BOOL setItemModel(); + /* 800BF9F0 */ BOOL setItemActor(); /* 800BFD74 */ void makeItemType(); - /* 800BFDB0 */ void checkZoraWearAbility() const; + /* 800BFDB0 */ BOOL checkZoraWearAbility() const; /* 800BFDFC */ BOOL checkMagicArmorWearAbility() const; /* 800BFE48 */ void loadAramBmd(u16, u32); /* 800BFF04 */ void loadAram(u16, u32); @@ -588,16 +671,16 @@ public: /* 800C0284 */ void checkField(); /* 800C02C8 */ void checkBossRoom(); /* 800C0310 */ void checkDungeon(); - /* 800C0358 */ bool checkCastleTown(); - /* 800C03A0 */ void checkCloudSea(); - /* 800C03E8 */ void checkRoomOnly(); - /* 800C044C */ void checkLv2DungeonRoomSpecial(); - /* 800C04B4 */ void checkRoomSpecial(); - /* 800C0520 */ bool checkRoom(); - /* 800C0594 */ bool checkNotBattleStage(); - /* 800C05DC */ void checkNotHeavyBootsStage(); - /* 800C0630 */ void checkNotAutoJumpStage(); - /* 800C0678 */ void checkCastleTownUseItem(u16); + /* 800C0358 */ static bool checkCastleTown(); + /* 800C03A0 */ static bool checkCloudSea(); + /* 800C03E8 */ static bool checkRoomOnly(); + /* 800C044C */ static bool checkLv2DungeonRoomSpecial(); + /* 800C04B4 */ static bool checkRoomSpecial(); + /* 800C0520 */ static bool checkRoom(); + /* 800C0594 */ static bool checkNotBattleStage(); + /* 800C05DC */ bool checkNotHeavyBootsStage(); + /* 800C0630 */ bool checkNotAutoJumpStage(); + /* 800C0678 */ static bool checkCastleTownUseItem(u16); /* 800C077C */ void changeItemTriggerKeepProc(u8, int); /* 800C0A9C */ void checkNewItemChange(u8); /* 800C12DC */ void deleteEquipItem(int, int); @@ -609,32 +692,32 @@ public: /* 800C2DDC */ void procPreActionUnequipInit(int, fopAc_ac_c*); /* 800C2EAC */ void procPreActionUnequip(); /* 800C3098 */ bool procServiceWaitInit(); - /* 800C30F0 */ void procServiceWait(); + /* 800C30F0 */ bool procServiceWait(); /* 800C3224 */ void procTiredWaitInit(); - /* 800C3338 */ void procTiredWait(); - /* 800C33B8 */ void procWaitInit(); + /* 800C3338 */ bool procTiredWait(); + /* 800C33B8 */ bool procWaitInit(); /* 800C3504 */ void procWait(); - /* 800C36CC */ void procMoveInit(); - /* 800C3730 */ void procMove(); - /* 800C3810 */ void procAtnMoveInit(); + /* 800C36CC */ bool procMoveInit(); + /* 800C3730 */ bool procMove(); + /* 800C3810 */ bool procAtnMoveInit(); /* 800C3868 */ bool procAtnMove(); - /* 800C38CC */ void procAtnActorWaitInit(); - /* 800C397C */ void procAtnActorWait(); - /* 800C39EC */ void procAtnActorMoveInit(); - /* 800C3A44 */ void procAtnActorMove(); - /* 800C3A94 */ void procWaitTurnInit(); - /* 800C3B1C */ void procWaitTurn(); - /* 800C3C3C */ void procMoveTurnInit(int); - /* 800C3D38 */ void procMoveTurn(); - /* 800C3DA0 */ void procSideStepInit(int); - /* 800C3F60 */ void procSideStep(); - /* 800C40F0 */ void procSideStepLandInit(); - /* 800C4278 */ void procSideStepLand(); - /* 800C4378 */ void procSlideInit(s16); + /* 800C38CC */ bool procAtnActorWaitInit(); + /* 800C397C */ bool procAtnActorWait(); + /* 800C39EC */ bool procAtnActorMoveInit(); + /* 800C3A44 */ bool procAtnActorMove(); + /* 800C3A94 */ bool procWaitTurnInit(); + /* 800C3B1C */ BOOL procWaitTurn(); + /* 800C3C3C */ bool procMoveTurnInit(int); + /* 800C3D38 */ bool procMoveTurn(); + /* 800C3DA0 */ bool procSideStepInit(int); + /* 800C3F60 */ bool procSideStep(); + /* 800C40F0 */ bool procSideStepLandInit(); + /* 800C4278 */ bool procSideStepLand(); + /* 800C4378 */ bool procSlideInit(s16); /* 800C4514 */ void procSlide(); - /* 800C47AC */ void procSlideLandInit(int); - /* 800C4894 */ void procSlideLand(); - /* 800C494C */ void procFrontRollInit(); + /* 800C47AC */ bool procSlideLandInit(int); + /* 800C4894 */ bool procSlideLand(); + /* 800C494C */ bool procFrontRollInit(); /* 800C4B40 */ void procFrontRoll(); /* 800C4F14 */ void procFrontRollCrashInit(); /* 800C4FFC */ void procFrontRollCrash(); @@ -643,7 +726,7 @@ public: /* 800C5328 */ void procSideRollInit(int); /* 800C5484 */ void procSideRoll(); /* 800C5700 */ void backJumpSpeedDec(); - /* 800C57A4 */ void procBackJumpInit(int); + /* 800C57A4 */ bool procBackJumpInit(int); /* 800C5964 */ void procBackJump(); /* 800C5A54 */ void procBackJumpLandInit(int); /* 800C5AF0 */ void procBackJumpLand(); @@ -655,7 +738,7 @@ public: /* 800C6798 */ void procDiveJump(); /* 800C6850 */ void procRollJumpInit(); /* 800C692C */ void procRollJump(); - /* 800C6A48 */ void procFallInit(int, f32); + /* 800C6A48 */ bool procFallInit(int, f32); /* 800C6D20 */ void procFall(); /* 800C6F18 */ void procLandInit(f32); /* 800C6FE4 */ void procLand(); @@ -669,15 +752,15 @@ public: /* 800C7C64 */ void procCoMetamorphose(); /* 800C82E8 */ void procCoMetamorphoseOnlyInit(); /* 800C83A0 */ void procCoMetamorphoseOnly(); - /* 800C8460 */ void procFloorDownReboundInit(); + /* 800C8460 */ BOOL procFloorDownReboundInit(); /* 800C84D0 */ void procFloorDownRebound(); /* 800C854C */ void procGoronRideWaitInit(fopAc_ac_c*); /* 800C85D8 */ void procGoronRideWait(); /* 800C8700 */ void execute(); /* 800CAFC8 */ void setDrawHand(); - /* 800CB480 */ void checkSwordDraw(); - /* 800CB53C */ void checkShieldDraw(); - /* 800CB5F8 */ void checkItemDraw(); + /* 800CB480 */ bool checkSwordDraw(); + /* 800CB53C */ bool checkShieldDraw(); + /* 800CB5F8 */ bool checkItemDraw(); /* 800CB694 */ void initShadowScaleLight(); /* 800CBA38 */ void moveShadowScaleLight(); /* 800CBC18 */ void shadowDraw(); @@ -715,45 +798,44 @@ public: /* 800D0164 */ void set3DStatus(u8, u8); /* 800D018C */ u32 checkModeFlg(u32) const; /* 800D2684 */ void checkCutTurnCharge(); - /* 800D07A4 */ void checkCutJumpCancelTurn() const; /* 800D0E08 */ void checkLightSwordMtrl(); - /* 800D0E98 */ void checkSwordEquipAnime() const; - /* 800D0ECC */ void checkCutDashAnime() const; - /* 800D0EFC */ void checkCutDashEnemyHit(dCcD_GObjInf&); - /* 800D0F5C */ void getSwordAtType(); + /* 800D0E98 */ BOOL checkSwordEquipAnime() const; + /* 800D0ECC */ BOOL checkCutDashAnime() const; + /* 800D0EFC */ BOOL checkCutDashEnemyHit(dCcD_GObjInf&); + /* 800D0F5C */ static u32 getSwordAtType(); /* 800D0F90 */ void initCutTurnAt(f32, int); - /* 800D102C */ void checkCutFinishJumpUp(); + /* 800D102C */ bool checkCutFinishJumpUp(); /* 800D1088 */ void changeCutFast(); /* 800D10E0 */ void checkCutFastReady(); /* 800D1268 */ void setSwordModel(); /* 800D1310 */ void offSwordModel(); - /* 800D13AC */ void checkCutTypeNoBlur() const; - /* 800D13E4 */ void checkCutTurnInput() const; - /* 800D1424 */ void getCutTurnDirection() const; + /* 800D13AC */ BOOL checkCutTypeNoBlur() const; + /* 800D13E4 */ bool checkCutTurnInput() const; + /* 800D1424 */ int getCutTurnDirection() const; /* 800D1430 */ void resetCombo(int); /* 800D1454 */ void checkComboCnt(); /* 800D152C */ void setCutType(u8); /* 800D1540 */ void setCylAtParam(u32, dCcG_At_Spl, u8, u8, int, f32, f32); /* 800D1688 */ void setSwordAtParam(dCcG_At_Spl, u8, u8, int, f32, f32); - /* 800D1788 */ void notSwordHitVibActor(fopAc_ac_c*); + /* 800D1788 */ static bool notSwordHitVibActor(fopAc_ac_c*); /* 800D17EC */ void setSwordHitVibration(dCcD_GObjInf*); - /* 800D1920 */ void checkAtShieldHit(dCcD_GObjInf&); - /* 800D1978 */ void checkCutReverseAt(dCcD_GObjInf*); - /* 800D19C8 */ void changeCutReverseProc(daAlink_c::daAlink_ANM); + /* 800D1920 */ BOOL checkAtShieldHit(dCcD_GObjInf&); + /* 800D1978 */ bool checkCutReverseAt(dCcD_GObjInf*); + /* 800D19C8 */ BOOL changeCutReverseProc(daAlink_c::daAlink_ANM); /* 800D1E1C */ void setCutDash(int, int); - /* 800D20B4 */ void checkForceSwordSwing(); + /* 800D20B4 */ BOOL checkForceSwordSwing(); /* 800D20FC */ void setComboReserb(); - /* 800D2188 */ void checkComboReserb(); - /* 800D21D0 */ void commonCutAction(); + /* 800D2188 */ BOOL checkComboReserb(); + /* 800D21D0 */ bool commonCutAction(); /* 800D2284 */ void setSwordVoiceSe(u32); /* 800D22BC */ void setSwordChargeVoiceSe(); /* 800D2304 */ void setSwordComboVoice(); - /* 800D2368 */ void checkCutTurnInputTrigger(); + /* 800D2368 */ bool checkCutTurnInputTrigger(); /* 800D23C0 */ void checkCutAction(); /* 800D26EC */ void getCutDirection(); /* 800D2760 */ void checkCutCancelNextMode(int); /* 800D27E4 */ void checkDoCutAction(); - /* 800D2890 */ void checkCutBackState(); + /* 800D2890 */ static BOOL checkCutBackState(); /* 800D28F4 */ void checkCutHeadState(); /* 800D29D4 */ void checkDownAttackState(); /* 800D2ABC */ void checkCutLargeTurnState() const; @@ -771,8 +853,8 @@ public: /* 800D3ECC */ void procCutFinishJumpUpLand(); /* 800D4068 */ void procCutReverseInit(daAlink_c::daAlink_ANM); /* 800D41FC */ void procCutReverse(); - /* 800D42FC */ void procCutJumpInit(int); - /* 800D43F8 */ void procCutJump(); + /* 800D42FC */ bool procCutJumpInit(int); + /* 800D43F8 */ bool procCutJump(); /* 800D452C */ void procCutJumpLandInit(int); /* 800D4684 */ void procCutJumpLand(); /* 800D47DC */ void procCutTurnInit(int, int); @@ -846,16 +928,16 @@ public: /* 800DC214 */ void procCoLavaReturn(); /* 800DC278 */ void procCoSwimFreezeReturnInit(); /* 800DC474 */ void procCoSwimFreezeReturn(); - /* 800DC548 */ void checkEnemyGroup(fopAc_ac_c*); - /* 800DC5A4 */ void checkSpecialNpc(fopAc_ac_c*); + /* 800DC548 */ static BOOL checkEnemyGroup(fopAc_ac_c*); + /* 800DC5A4 */ static BOOL checkSpecialNpc(fopAc_ac_c*); /* 800DC5DC */ void checkShieldAttackEmphasys(); - /* 800DC678 */ void checkGuardActionChange(); + /* 800DC678 */ BOOL checkGuardActionChange(); /* 800DC79C */ void stickArrowIncrement(int); /* 800DC8C4 */ void setArrowShieldActor(fopAc_ac_c*, int); /* 800DCA2C */ void checkWoodShieldEquipNotIronBall() const; /* 800DCA80 */ void getArrowShieldOffset(cXyz const*, csXyz const*, cXyz*, cXyz*) const; /* 800DCD74 */ void setArrowShieldPos(cXyz*, csXyz*, cXyz const*, cXyz const*) const; - /* 800DCDF0 */ void checkUpperGuardAnime() const; + /* 800DCDF0 */ BOOL checkUpperGuardAnime() const; /* 800DCF04 */ void checkPlayerGuardAndAttack() const; /* 800DCF64 */ void checkGuardAccept(); /* 800DD008 */ void setUpperGuardAnime(f32); @@ -875,7 +957,7 @@ public: /* 800DE750 */ void getBombArrowFlyExplodeTime() const; /* 800DE760 */ void getArrowIncAtMaxStart() const; /* 800DE770 */ void getArrowIncAtMax() const; - /* 800DE780 */ void checkBowAndSlingItem(int); + /* 800DE780 */ BOOL checkBowAndSlingItem(int); /* 800DE7D4 */ void setSlingModel(); /* 800DE884 */ void checkBowCameraArrowPosP(s16*, s16*); /* 800DE9B8 */ void checkBowReadyAnime() const; @@ -892,7 +974,7 @@ public: /* 800DF798 */ void checkUpperItemActionBowFly(); /* 800DF814 */ void checkNextActionBow(); /* 800DFAE8 */ void setBowModel(); - /* 800DFBC8 */ void checkBowGrabLeftHand() const; + /* 800DFBC8 */ bool checkBowGrabLeftHand() const; /* 800DFC28 */ void setBowHangAnime(); /* 800DFC70 */ void setBowNormalAnime(); /* 800DFCD8 */ void setBowSight(); @@ -972,26 +1054,25 @@ public: /* 800E30DC */ void procBootsEquip(); /* 800E3218 */ void procMagneBootsFlyInit(); /* 800E3454 */ void procMagneBootsFly(); - /* 800E3760 */ void getBombExplodeTime() const; - /* 800E3770 */ void getBombGravity() const; - /* 800E3780 */ void getBombMaxFallSpeed() const; - /* 800E3790 */ void getBombBoundRate() const; - /* 800E37A0 */ void getBombStopSpeedY() const; - /* 800E37B0 */ void getBombMaxSpeedY() const; - /* 800E37C0 */ void getBombEffScale() const; - /* 800E37D0 */ void getBombAtR() const; - /* 800E37E0 */ void getEnemyBombColorR() const; - /* 800E37F0 */ void getBombWaterGravity() const; - /* 800E3800 */ void getBombWaterMaxFallSpeed() const; - /* 800E3810 */ void getBombExplodeWaterEffectLimit() const; - /* 800E3820 */ void getBombInsectLimitAngle() const; + /* 800E3760 */ s16 getBombExplodeTime() const; + /* 800E3770 */ f32 getBombGravity() const; + /* 800E3780 */ f32 getBombMaxFallSpeed() const; + /* 800E3790 */ f32 getBombBoundRate() const; + /* 800E37A0 */ f32 getBombStopSpeedY() const; + /* 800E37B0 */ f32 getBombMaxSpeedY() const; + /* 800E37C0 */ f32 getBombEffScale() const; + /* 800E37D0 */ f32 getBombAtR() const; + /* 800E37E0 */ s16 getEnemyBombColorR() const; + /* 800E37F0 */ f32 getBombWaterGravity() const; + /* 800E3800 */ f32 getBombWaterMaxFallSpeed() const; + /* 800E3810 */ f32 getBombExplodeWaterEffectLimit() const; + /* 800E3820 */ s16 getBombInsectLimitAngle() const; /* 800E38EC */ void checkGrabLineCheck(); - /* 800E3BCC */ void getGrabThrowRate(); /* 800E3C1C */ void checkGrabThrowAnime() const; /* 800E3C6C */ void checkGrabAnime() const; /* 800E3C9C */ void checkGrabAnimeAndThrow() const; - /* 800E3CF4 */ void checkGrabCarryActor(); + /* 800E3CF4 */ BOOL checkGrabCarryActor(); /* 800E3D1C */ void checkGrabSlowMoveActor(); /* 800E3D6C */ void checkGrabHeavyActor(); /* 800E3D94 */ void checkGrabSideActor(); @@ -1099,11 +1180,11 @@ public: /* 800ECDC4 */ void checkHorseWaitLashAnime() const; /* 800ECDEC */ void checkHorseReinLeftOnly() const; /* 800ECE10 */ void getReinHandType() const; - /* 800ECF04 */ void checkHorseLieAnime() const; + /* 800ECF04 */ BOOL checkHorseLieAnime() const; /* 800ECF5C */ void checkHorseSubjectivity() const; /* 800ECF9C */ void setHorseSwordUpAnime(); /* 800ECFF4 */ void setHorseTurnUpperAnime(int); - /* 800ED074 */ void checkHorseNoUpperAnime() const; + /* 800ED074 */ BOOL checkHorseNoUpperAnime() const; /* 800ED0D4 */ void getHorseReinHandPos(cXyz*, cXyz*); /* 800ED1F0 */ void checkHorseNotGrab() const; /* 800ED310 */ void setHorseStirrup(); @@ -1575,7 +1656,7 @@ public: /* 80115860 */ void procIronBallThrow(); /* 801159F0 */ void procIronBallReturnInit(); /* 80115AA0 */ void procIronBallReturn(); - /* 80115C20 */ void checkEventRun() const; + /* 80115C20 */ BOOL checkEventRun() const; /* 80115C50 */ void createNpcTks(cXyz*, int, u32); /* 80115EC0 */ void checkDemoAction(); /* 80116E60 */ void checkDemoMoveMode(u32) const; @@ -1685,7 +1766,7 @@ public: /* 8011EC60 */ void procMasterSwordStick(); /* 8011ED18 */ bool procMasterSwordPullInit(); /* 8011ED8C */ void procMasterSwordPull(); - /* 8011EE40 */ void checkLv7DungeonShop(); + /* 8011EE40 */ static BOOL checkLv7DungeonShop(); /* 8011EE94 */ void procDungeonWarpReadyInit(); /* 8011EFB8 */ void procDungeonWarpReady(); /* 8011F084 */ void procDungeonWarpInit(); @@ -1767,7 +1848,7 @@ public: /* 80127F50 */ void setSpeedAndAngleWolf(); /* 80128478 */ void setSpeedAndAngleWolfAtn(); /* 80128798 */ void checkWolfAtnWait(); - /* 8012880C */ void checkUnderMove0BckNoArcWolf(daAlink_c::daAlink_WANM) const; + /* 8012880C */ BOOL checkUnderMove0BckNoArcWolf(daAlink_c::daAlink_WANM) const; /* 80128844 */ void setBlendWolfMoveAnime(f32); /* 80128F0C */ void checkWolfAtnMoveBack(s16); /* 80128F5C */ void setWolfAtnMoveDirection(); @@ -1929,7 +2010,7 @@ public: /* 80138DC0 */ void setWolfBallModel(); /* 80138F18 */ void resetWolfBallGrab(); /* 80139048 */ void checkWolfLockData(); - /* 801391DC */ void getWolfLockActorEnd(); + /* 801391DC */ fopAc_ac_c* getWolfLockActorEnd(); /* 801391E4 */ void searchWolfLockEnemy(fopAc_ac_c*, void*); /* 801392E4 */ void checkWolfComboCnt(); /* 801393A4 */ void checkWolfAttackAction(); @@ -2008,68 +2089,68 @@ public: /* 80140984 */ void statusWindowDraw(); /* 80140AC8 */ void resetStatusWindow(); - virtual bool getMidnaAtnPos(void) const; + virtual cXyz* getMidnaAtnPos() const; virtual void setMidnaMsgNum(fopAc_ac_c*, u16); - virtual Mtx* getModelMtx(void); - virtual Mtx* getInvMtx(void); - virtual cXyz* getShadowTalkAtnPos(void); - virtual float getGroundY(); - virtual Mtx* getLeftItemMatrix(void); - virtual Mtx* getRightItemMatrix(void); - virtual Mtx* getLeftHandMatrix(void); - virtual Mtx* getRightHandMatrix(void); - virtual Mtx* getLinkBackBone1Matrix(void); - virtual Mtx* getWolfMouthMatrix(void); - virtual Mtx* getWolfBackbone2Matrix(void); - virtual bool getBottleMtx(void); - virtual bool checkPlayerGuard(void) const; + virtual MtxP getModelMtx(); + virtual MtxP getInvMtx(); + virtual cXyz* getShadowTalkAtnPos(); + virtual f32 getGroundY(); + virtual MtxP getLeftItemMatrix(); + virtual MtxP getRightItemMatrix(); + virtual MtxP getLeftHandMatrix(); + virtual MtxP getRightHandMatrix(); + virtual MtxP getLinkBackBone1Matrix(); + virtual MtxP getWolfMouthMatrix(); + virtual MtxP getWolfBackbone2Matrix(); + virtual MtxP getBottleMtx(); + virtual BOOL checkPlayerGuard() const; virtual u32 checkPlayerFly() const; virtual BOOL checkFrontRoll() const; - virtual bool checkWolfDash() const; - virtual bool checkAutoJump(void) const; - virtual bool checkSideStep(void) const; - virtual bool checkWolfTriggerJump(void) const; - virtual bool checkGuardBreakMode(void) const; - virtual bool checkLv3Slide(void) const; - virtual bool checkWolfHowlDemoMode(void) const; - virtual bool checkChainBlockPushPull(void); - virtual bool checkElecDamage(void) const; - virtual bool checkEmptyBottleSwing(void) const; - virtual bool checkBottleSwingMode(void) const; - virtual bool checkHawkWait(void) const; - virtual bool checkGoatThrow(void) const; - virtual bool checkGoatThrowAfter(void) const; - virtual bool checkWolfTagLockJump(void) const; - virtual bool checkWolfTagLockJumpLand(void) const; - virtual bool checkWolfRope(void); - virtual bool checkWolfRopeHang(void) const; - virtual bool checkRollJump(void) const; - virtual bool checkGoronRideWait(void) const; - virtual bool checkWolfChain(void) const; - virtual bool checkWolfWait(void) const; - virtual bool checkWolfJumpAttack(void) const; - virtual bool checkWolfRSit(void) const; - virtual bool checkBottleDrinkEnd(void) const; - virtual bool checkWolfDig(void) const; - virtual bool checkCutCharge(void) const; - virtual BOOL checkCutTurnCharge(void) const; - virtual bool checkCutLargeJumpCharge(void) const; - virtual bool checkComboCutTurn(void) const; - virtual bool checkClimbMove(void) const; - virtual bool checkGrassWhistle(void) const; - virtual bool checkBoarRun(void) const; - virtual float getBaseAnimeFrameRate(void) const; - virtual float getBaseAnimeFrame(void) const; + virtual BOOL checkWolfDash() const; + virtual BOOL checkAutoJump() const; + virtual bool checkSideStep() const; + virtual bool checkWolfTriggerJump() const; + virtual BOOL checkGuardBreakMode() const; + virtual bool checkLv3Slide() const; + virtual bool checkWolfHowlDemoMode() const; + virtual bool checkChainBlockPushPull(); + virtual BOOL checkElecDamage() const; + virtual BOOL checkEmptyBottleSwing() const; + virtual BOOL checkBottleSwingMode() const; + virtual BOOL checkHawkWait() const; + virtual BOOL checkGoatThrow() const; + virtual BOOL checkGoatThrowAfter() const; + virtual BOOL checkWolfTagLockJump() const; + virtual BOOL checkWolfTagLockJumpLand() const; + virtual bool checkWolfRope(); + virtual BOOL checkWolfRopeHang() const; + virtual BOOL checkRollJump() const; + virtual BOOL checkGoronRideWait() const; + virtual BOOL checkWolfChain() const; + virtual BOOL checkWolfWait() const; + virtual BOOL checkWolfJumpAttack() const; + virtual BOOL checkWolfRSit() const; + virtual BOOL checkBottleDrinkEnd() const; + virtual BOOL checkWolfDig() const; + virtual BOOL checkCutCharge() const; + virtual BOOL checkCutTurnCharge() const; + virtual BOOL checkCutLargeJumpCharge() const; + virtual BOOL checkComboCutTurn() const; + virtual BOOL checkClimbMove() const; + virtual BOOL checkGrassWhistle() const; + virtual BOOL checkBoarRun() const; + virtual f32 getBaseAnimeFrameRate() const; + virtual f32 getBaseAnimeFrame() const; virtual void setAnimeFrame(float); virtual bool checkWolfLock(fopAc_ac_c*) const; virtual bool cancelWolfLock(fopAc_ac_c*); - virtual s32 getAtnActorID(void) const; - virtual s32 getItemID(void) const; - virtual s32 getGrabActorID(void) const; + virtual s32 getAtnActorID() const; + virtual s32 getItemID() const; + virtual s32 getGrabActorID() const; virtual bool exchangeGrabActor(fopAc_ac_c*); virtual bool setForceGrab(fopAc_ac_c*, int, int); virtual void setForcePutPos(cXyz const&); - virtual bool checkPlayerNoDraw(void); + virtual BOOL checkPlayerNoDraw(); virtual void voiceStart(u32); virtual void seStartOnlyReverb(u32); virtual void seStartOnlyReverbLevel(u32); @@ -2077,11 +2158,12 @@ public: virtual void setGrabCollisionOffset(float, float, cBgS_PolyInfo*); virtual void onFrollCrashFlg(u8, int); virtual MtxP getModelJointMtx(u16); - virtual bool getHeadMtx(void); + virtual MtxP getHeadMtx(); virtual bool setHookshotCarryOffset(unsigned int, cXyz const*); - virtual bool checkIronBallReturn(void) const; - virtual bool checkIronBallGroundStop(void) const; - virtual bool checkSingleBoarBattleSecondBowReady(void) const; + virtual BOOL checkCutJumpCancelTurn() const; + virtual bool checkIronBallReturn() const; + virtual bool checkIronBallGroundStop() const; + virtual BOOL checkSingleBoarBattleSecondBowReady() const; virtual void setClothesChange(int); virtual void setPlayerPosAndAngle(float (*)[4]); virtual void setPlayerPosAndAngle(cXyz const*, csXyz const*); @@ -2090,7 +2172,7 @@ public: virtual bool checkSetNpcTks(cXyz*, int, int); virtual bool setRollJump(float, float, short); virtual void playerStartCollisionSE(u32, u32); - virtual void cancelDungeonWarpReadyNeck(void); + virtual void cancelDungeonWarpReadyNeck(); virtual void onSceneChangeArea(u8, u8, fopAc_ac_c*); virtual void onSceneChangeAreaJump(u8, u8, fopAc_ac_c*); virtual void onSceneChangeDead(u8, int); @@ -2099,15 +2181,15 @@ public: virtual u32 checkCanoeRide() const; virtual u32 checkBoardRide() const; virtual u32 checkSpinnerRide() const; - virtual fopAc_ac_c* getSpinnerActor(void); - virtual bool checkHorseRideNotReady(void) const; - virtual bool checkArrowChargeEnd(void) const; - virtual void getSearchBallScale(void) const; - virtual bool checkFastShotTime(void); - virtual bool checkNoEquipItem(void) const; + virtual fopAc_ac_c* getSpinnerActor(); + virtual BOOL checkHorseRideNotReady() const; + virtual bool checkArrowChargeEnd() const; + virtual f32 getSearchBallScale() const; + virtual s16 checkFastShotTime(); + virtual bool checkNoEquipItem() const; virtual bool checkKandelaarSwing(int) const; - virtual bool getBoardCutTurnOffsetAngleY(void) const; - virtual cXyz* getMagneBootsTopVec(void); + virtual s16 getBoardCutTurnOffsetAngleY() const; + virtual cXyz* getMagneBootsTopVec(); virtual bool getKandelaarFlamePos(); virtual bool checkUseKandelaar(int); virtual void setDkCaught(fopAc_ac_c*); @@ -2118,58 +2200,77 @@ public: virtual void setWolfEnemyHangBiteAngle(short); virtual void setKandelaarMtx(float (*)[4], int, int); virtual bool getStickAngleFromPlayerShape(short*) const; - virtual bool checkSpinnerPathMove(void); - virtual bool checkSpinnerTriggerAttack(void); - virtual void onSpinnerPathForceRemove(void); - virtual bool getIronBallBgHit(void) const; - virtual bool getIronBallCenterPos(void); - virtual bool checkCanoeFishingGetLeft(void) const; - virtual bool checkCanoeFishingGetRight(void) const; - virtual bool checkBeeChildDrink(void) const; - virtual void skipPortalObjWarp(void); + virtual bool checkSpinnerPathMove(); + virtual bool checkSpinnerTriggerAttack(); + virtual void onSpinnerPathForceRemove(); + virtual bool getIronBallBgHit() const; + virtual bool getIronBallCenterPos(); + virtual bool checkCanoeFishingGetLeft() const; + virtual bool checkCanoeFishingGetRight() const; + virtual u8 checkBeeChildDrink() const; + virtual void skipPortalObjWarp(); virtual bool checkTreasureRupeeReturn(int) const; virtual void setSumouReady(fopAc_ac_c*); virtual void checkAcceptDungeonWarpAlink(int); - virtual s16 getSumouCounter(void) const; - virtual s16 checkSumouWithstand(void) const; - virtual void cancelGoronThrowEvent(void); + virtual s16 getSumouCounter() const; + virtual s16 checkSumouWithstand() const; + virtual void cancelGoronThrowEvent(); virtual void setSumouGraspCancelCount(int); virtual void setSumouPushBackDirection(short); - virtual void setSumouLoseHeadUp(void); - virtual s16 getGiantPuzzleAimAngle(void) const; + virtual void setSumouLoseHeadUp(); + virtual s16 getGiantPuzzleAimAngle() const; virtual void setGoronSideMove(fopAc_ac_c*); virtual void setCargoCarry(fopAc_ac_c*); - virtual bool getHookshotTopPos(void); - virtual bool checkHookshotReturnMode(void) const; - virtual bool checkHookshotShootReturnMode(void) const; - virtual bool checkOctaIealHang(void) const; - virtual void cancelOctaIealHang(void); - virtual void cancelDragonHangBackJump(void); - virtual void setOctaIealWildHang(void); - virtual bool checkDragonHangRide(void) const; + virtual bool getHookshotTopPos(); + virtual bool checkHookshotReturnMode() const; + virtual bool checkHookshotShootReturnMode() const; + virtual bool checkOctaIealHang() const; + virtual void cancelOctaIealHang(); + virtual void cancelDragonHangBackJump(); + virtual void setOctaIealWildHang(); + virtual bool checkDragonHangRide() const; virtual void changeDragonActor(fopAc_ac_c*); - virtual u8 getClothesChangeWaitTimer(void) const; - virtual u8 getShieldChangeWaitTimer(void) const; - virtual bool getSwordChangeWaitTimer(void) const; - virtual bool checkMetamorphose(void) const; - virtual bool checkWolfDownAttackPullOut(void) const; - virtual BOOL checkBootsOrArmorHeavy(void) const; - virtual s32 getBottleOpenAppearItem(void) const; - virtual bool checkItemSwordEquip(void) const; - virtual float getSinkShapeOffset(void) const; - virtual bool checkSinkDead(void) const; - virtual bool checkHorseStart(void); - virtual bool getWolfHowlMgrP(void); - virtual bool checkWolfHowlSuccessAnime(void) const; - virtual bool checkCopyRodTopUse(void); - virtual bool checkCopyRodEquip(void) const; - virtual bool checkCutJumpMode(void) const; + virtual u8 getClothesChangeWaitTimer() const; + virtual u8 getShieldChangeWaitTimer() const; + virtual u8 getSwordChangeWaitTimer() const; + virtual BOOL checkMetamorphose() const; + virtual BOOL checkWolfDownAttackPullOut() const; + virtual BOOL checkBootsOrArmorHeavy() const; + virtual s32 getBottleOpenAppearItem() const; + virtual bool checkItemSwordEquip() const; + virtual float getSinkShapeOffset() const; + virtual BOOL checkSinkDead() const; + virtual BOOL checkHorseStart(); + virtual Z2WolfHowlMgr* getWolfHowlMgrP(); + virtual BOOL checkWolfHowlSuccessAnime() const; + virtual bool checkCopyRodTopUse(); + virtual bool checkCopyRodEquip() const; + virtual BOOL checkCutJumpMode() const; - // inlined version of checkModeFlg + // inlined dupes u32 i_checkModeFlg(u32 pFlag) const { return mModeFlg & pFlag; } + bool i_checkSmallUpperGuardAnime() const { return checkUpperAnime(0x16); } + bool i_checkFmChainGrabAnime() const { return checkUpperAnime(0x62) || checkUpperAnime(0x2A0); } + bool i_checkAttentionLock() { return mAttention->Lockon(); } + bool checkUpperAnime(u16 pIdx) const { return mUpperAnime[UPPER_NOW].getIdx() == pIdx; } bool checkIronBallWaitAnime() const { return checkUpperAnime(0x19C); } s16 checkWolfEyeUp() const { return mWolfEyeUp; } + void onModeFlg(u32 flag) { mModeFlg |= flag; } + void offModeFlg(u32 flag) { mModeFlg &= ~flag; } + bool checkHorseTurnLAnime() const { return checkUpperAnime(0x24C); } + bool checkHorseTurnRAnime() const { return checkUpperAnime(0x24D); } + bool checkHorseTurnAnime() const { return checkHorseTurnLAnime() || checkHorseTurnRAnime(); } + bool checkHookshotShootAnime() const { return checkUpperAnime(0x18C); } + bool checkHookshotReadyAnime() const { return checkUpperAnime(0x18D); } + bool checkHookshotAnime() const { return checkHookshotReadyAnime() || checkHookshotShootAnime(); } + bool swordButton() { return itemButtonCheck(8); } + daPy_actorKeep_c* getThrowBoomerangAcKeep() { return &mThrowBoomerangActor; } + s32 getStartRoomNo() { return fopAcM_GetParam(this) & 0x3F; } + bool checkFisingRodLure() const { return mEquipItem == 0x105; } + bool doTrigger() const { return mItemTrigger & 0x10; } + u32 getStartMode() { return (fopAcM_GetParam(this) >> 0xC) & 0x1F; } + BOOL i_checkReinRide() const { return mRideStatus == 1 || mRideStatus == 2; } static u8 const m_mainBckShield[80]; static u8 const m_mainBckSword[20]; @@ -2187,12 +2288,12 @@ public: private: /* 0x0062C */ void* field_0x062C; - /* 0x00630 */ void* field_0x0630; - /* 0x00634 */ void* field_0x0634; + /* 0x00630 */ int field_0x0630; + /* 0x00634 */ char* mArcName; /* 0x00638 */ JKRExpHeap** field_0x0638; /* 0x0063C */ void* field_0x063C; - /* 0x00640 */ void* field_0x0640; - /* 0x00644 */ void* field_0x0644; + /* 0x00640 */ int field_0x0640; + /* 0x00644 */ char* mShieldArcName; /* 0x00648 */ JKRExpHeap** field_0x0648; /* 0x0064C */ J3DModelData* field_0x064C; /* 0x00650 */ J3DModel* field_0x0650; @@ -2205,7 +2306,7 @@ private: /* 0x0066C */ J3DModel* field_0x066c; /* 0x00670 */ J3DModel* field_0x0670; /* 0x00674 */ J3DModel* field_0x0674; - /* 0x00678 */ J3DModel* field_0x0678; + /* 0x00678 */ J3DModel* mShieldModel; /* 0x0067C */ J3DAnmBase* field_0x067c; /* 0x00680 */ J3DAnmBase* field_0x0680; /* 0x00684 */ J3DModel* field_0x0684; @@ -2221,12 +2322,12 @@ private: /* 0x006AC */ mDoExt_bckAnm* field_0x06ac; /* 0x006B0 */ mDoExt_bckAnm* field_0x06b0; /* 0x006B4 */ J3DAnmTransform* field_0x06b4; - /* 0x006B8 */ J3DModel* field_0x06b8; + /* 0x006B8 */ J3DModel* mSwordModel; /* 0x006BC */ J3DModel* field_0x06bc; /* 0x006C0 */ J3DModelData* field_0x06c0; - /* 0x006C4 */ J3DAnmBase* field_0x06c4; - /* 0x006C8 */ J3DAnmBase* field_0x06c8; - /* 0x006CC */ J3DAnmBase* field_0x06cc; + /* 0x006C4 */ J3DAnmBase* m_nSwordBtk; + /* 0x006C8 */ J3DAnmBase* m_mSwordBtk; + /* 0x006CC */ J3DAnmBase* m_mSwordBck; /* 0x006D0 */ void* field_0x06d0; /* 0x006D4 */ void* field_0x06d4; /* 0x006D8 */ void* field_0x06d8; @@ -2241,7 +2342,7 @@ private: /* 0x006FC */ J3DModel* field_0x06fc; /* 0x00700 */ J3DModel* field_0x0700; /* 0x00704 */ J3DAnmBase* field_0x0704; - /* 0x00708 */ J3DModel* field_0x0708; + /* 0x00708 */ J3DModel* mHeldItemModel; /* 0x0070C */ J3DModel* field_0x070c; /* 0x00710 */ J3DModel* field_0x0710; /* 0x00714 */ J3DModel* field_0x0714; @@ -2254,7 +2355,7 @@ private: /* 0x00730 */ mDoExt_bckAnm field_0x730; /* 0x0074C */ mDoExt_bckAnm field_0x74C; /* 0x00768 */ u8 field_0x0768[0x5C]; - /* 0x007C4 */ daPy_actorKeep_c field_0x07C4[10]; + /* 0x007C4 */ daPy_actorKeep_c mWolfLockAcKeep[10]; /* 0x00814 */ dCcD_Stts field_0x814; /* 0x00850 */ dCcD_Cyl field_0x850[3]; /* 0x00C04 */ dCcD_Cyl field_0xC04[3]; @@ -2300,7 +2401,7 @@ private: /* 0x021B0 */ daPy_anmHeap_c mItemHeap[2]; /* 0x021D8 */ daPy_anmHeap_c mAnmHeap9; /* 0x021EC */ u8 field_0x21ec[4]; - /* 0x021F0 */ daAlink_blur_c mBlur; + /* 0x021F0 */ daAlink_blur_c m_swordBlur; /* 0x027C8 */ dAlink_bottleWaterPcallBack_c field_0x27c8; /* 0x027E0 */ dAttention_c* mAttention; /* 0x027E4 */ dAttList_c* mAttList; @@ -2310,19 +2411,19 @@ private: /* 0x027F4 */ fopAc_ac_c* field_0x27f4; /* 0x027F8 */ fopAc_ac_c* field_0x27f8; /* 0x027FC */ fopAc_ac_c* field_0x27fc; - /* 0x02800 */ fopAc_ac_c* field_0x2800; + /* 0x02800 */ daTagMmsg_c* mMidnaMsg; /* 0x02804 */ fopAc_ac_c* field_0x2804; /* 0x02808 */ fopAc_ac_c* field_0x2808; /* 0x0280C */ daPy_actorKeep_c field_0x280c; /* 0x02814 */ daPy_actorKeep_c mRideActor; // daspinnerc? /* 0x0281C */ daPy_actorKeep_c field_0x281c; /* 0x02824 */ daPy_actorKeep_c mItemActor; // name might be wrong - /* 0x0282C */ daPy_actorKeep_c field_0x282c; - /* 0x02834 */ daPy_actorKeep_c field_0x2834; + /* 0x0282C */ daPy_actorKeep_c mGrabItemActor; + /* 0x02834 */ daPy_actorKeep_c mThrowBoomerangActor; /* 0x0283C */ daPy_actorKeep_c field_0x283c; /* 0x02844 */ daPy_actorKeep_c field_0x2844; /* 0x0284C */ daPy_actorKeep_c field_0x284c; - /* 0x02854 */ daPy_actorKeep_c field_0x2854; + /* 0x02854 */ daPy_actorKeep_c mCargoCarryActor; /* 0x0285C */ daPy_actorKeep_c field_0x285c; /* 0x02864 */ dMsgFlow_c mMsgFlow; /* 0x028B0 */ u8 field_0x28b0[0x40]; @@ -2338,7 +2439,7 @@ private: /* 0x02B98 */ float* field_0x2b9c; /* 0x02BA0 */ float* field_0x2ba0; /* 0x02BA4 */ float* field_0x2ba4; - /* 0x02BA8 */ float* field_0x2ba8; + /* 0x02BA8 */ f32 mSinkShapeOffset; /* 0x02BAC */ cXyz field_0x2bac; /* 0x02BB8 */ Mtx mInvMtx; /* 0x02BE8 */ Mtx field_0x2be8; @@ -2375,17 +2476,17 @@ private: /* 0x02F97 */ u8 field_0x2f97; /* 0x02F98 */ u8 field_0x2f98; /* 0x02F99 */ u8 field_0x2f99; - /* 0x02F9A */ s8 field_0x2f9a; + /* 0x02F9A */ s8 mVoiceReverbIntensity; /* 0x02F9B */ u8 field_0x2f9b; /* 0x02F9C */ u8 mSelectItemId; /* 0x02F9D */ u8 field_0x2f9d; /* 0x02F9E */ u8 field_0x2f9e; /* 0x02F9F */ u8 field_0x2f9f; /* 0x02FA0 */ u8 field_0x2fa0; - /* 0x02FA1 */ u8 field_0x2fa1; - /* 0x02FA2 */ u8 field_0x2fa2; + /* 0x02FA1 */ u8 mRunCutComboCount; + /* 0x02FA2 */ u8 mActiveBombNum; /* 0x02FA3 */ u8 field_0x2fa3; - /* 0x02FA4 */ u8 field_0x2fa4; + /* 0x02FA4 */ u8 mRollCrashFlg; /* 0x02FA5 */ u8 field_0x2fa5; /* 0x02FA6 */ u8 field_0x2fa6; /* 0x02FA7 */ u8 field_0x2fa7; @@ -2398,8 +2499,8 @@ private: /* 0x02FAE */ u8 field_0x2fae; /* 0x02FAF */ u8 field_0x2faf; /* 0x02FB0 */ u8 field_0x2fb0; - /* 0x02FB1 */ u8 field_0x2fb1; - /* 0x02FB2 */ u8 field_0x2fb2; + /* 0x02FB1 */ u8 mWolfLockNum; + /* 0x02FB2 */ u8 mMidnaTalkDelayTimer; /* 0x02FB3 */ u8 field_0x2fb3; /* 0x02FB4 */ u8 field_0x2fb4; /* 0x02FB5 */ u8 field_0x2fb5; @@ -2435,11 +2536,11 @@ private: /* 0x02FD3 */ u8 field_0x2fd3; /* 0x02FD4 */ u8 field_0x2fd4; /* 0x02FD5 */ u8 field_0x2fd5; - /* 0x02FD6 */ u8 field_0x2fd6; + /* 0x02FD6 */ u8 mSwordChangeWaitTimer; /* 0x02FD7 */ u8 field_0x2fd7; /* 0x02FD8 */ u8 field_0x2fd8; /* 0x02FD9 */ u8 field_0x2fd9[3]; - /* 0x02FDC */ u16 field_0x2fdc; + /* 0x02FDC */ u16 mEquipItem; /* 0x02FDE */ u16 field_0x2fde; /* 0x02FE0 */ u16 field_0x2fe0; /* 0x02FE2 */ s16 field_0x2fe2; @@ -2525,7 +2626,7 @@ private: /* 0x03088 */ s16 field_0x3088; /* 0x0308A */ s16 field_0x308a; /* 0x0308C */ s16 field_0x308c; - /* 0x0308E */ s16 field_0x308e; + /* 0x0308E */ s16 mFastShotTime; /* 0x03090 */ s16 field_0x3090; /* 0x03092 */ s16 field_0x3092; /* 0x03094 */ s16 field_0x3094; @@ -2565,7 +2666,7 @@ private: /* 0x030EE */ s16 field_0x30ee; /* 0x030F0 */ u16 field_0x30f0; /* 0x030F2 */ u8 field_0x30f2[2]; - /* 0x030F4 */ s16 field_0x30f4; + /* 0x030F4 */ s16 mSwordFlourishTimer; /* 0x030F6 */ s16 field_0x30f6; /* 0x030F8 */ s16 field_0x30f8; /* 0x030FA */ s16 field_0x30fa; @@ -2602,7 +2703,7 @@ private: /* 0x03172 */ u8 field_0x3172[2]; /* 0x03174 */ int field_0x3174; /* 0x03178 */ int field_0x3178; - /* 0x0317C */ dAttention_c* field_0x317c; + /* 0x0317C */ int field_0x317c; /* 0x03180 */ int field_0x3180; /* 0x03184 */ int field_0x3184; /* 0x03184 */ int field_0x3188; @@ -2719,7 +2820,7 @@ private: /* 0x03484 */ float field_0x3484; /* 0x03488 */ float field_0x3488; /* 0x0348C */ float field_0x348c; - /* 0x03490 */ float field_0x3490; + /* 0x03490 */ float mSearchBallScale; /* 0x03494 */ float field_0x3494; /* 0x03498 */ cXyz field_0x3498; /* 0x034A4 */ cXyz field_0x34a4; @@ -2756,7 +2857,7 @@ private: /* 0x0363C */ cXyz field_0x363c[4]; /* 0x0366C */ cXyz field_0x366c[4]; /* 0x0369C */ cXyz field_0x369c; - /* 0x036A8 */ cXyz field_0x36a8; + /* 0x036A8 */ cXyz mMagneBootsTopVec; /* 0x036B4 */ cXyz field_0x36b4; /* 0x036C0 */ cXyz field_0x36c0[4]; /* 0x036F0 */ cXyz field_0x36f0[4]; @@ -2787,14 +2888,17 @@ private: /* 0x03844 */ csXyz* mIronBallChainAngle; /* 0x03848 */ void* field_0x3848; /* 0x0384C */ float* field_0x384c; + /* 0x03850 */ u32 field_0x3850; + /* 0x03854 */ u32 field_0x3854; + /* 0x03858 */ u32 field_0x3858; }; struct daAlinkHIO_anm_c { - /* 0x00 */ s16 field_0x00; - /* 0x04 */ f32 field_0x04; - /* 0x08 */ f32 field_0x08; - /* 0x0C */ f32 field_0x0c; - /* 0x10 */ f32 field_0x10; + /* 0x00 */ s16 field_0x00; // end f? + /* 0x04 */ f32 field_0x04; // speed? + /* 0x08 */ f32 field_0x08; // start? + /* 0x0C */ f32 field_0x0c; // interpolation? + /* 0x10 */ f32 field_0x10; // CF? }; // size = 0x14 struct daAlinkHIO_basic_c1 { @@ -2901,29 +3005,419 @@ public: static daAlinkHIO_wlAutoJump_c1 const m; }; -class daHorse_c { +class daAlinkHIO_bomb_c1 { public: + /* 0x00 */ s16 mExplodeTime; + /* 0x02 */ s16 mEnemyBombColorR; + /* 0x04 */ s16 mBombInsectLimitAngle; + /* 0x08 */ f32 mGravity; + /* 0x0C */ f32 mMaxFallSpeed; + /* 0x10 */ f32 mBoundRate; + /* 0x14 */ f32 mStopSpeedY; + /* 0x18 */ f32 mMaxSpeedY; + /* 0x1C */ f32 mEffScale; + /* 0x20 */ f32 mAtRadius; + /* 0x24 */ f32 mPokeBombTrackRate; + /* 0x28 */ f32 mWaterGravity; + /* 0x2C */ f32 mWaterMaxFallSpeed; + /* 0x30 */ f32 mThrowSpeedH; + /* 0x34 */ f32 mThrowSpeedV; + /* 0x38 */ f32 mWaterThrowSpeedH; + /* 0x3C */ f32 mWaterThrowSpeedV; + /* 0x40 */ f32 mWolfThrowSpeedH; + /* 0x44 */ f32 mWolfThrowSpeedV; + /* 0x48 */ f32 mExplodeWaterEffectLimit; +}; // Size: 0x4C + +class daAlinkHIO_bomb_c0 { +public: + static daAlinkHIO_bomb_c1 const m; +}; + +class daAlinkHIO_magneBoots_c1 { +public: + /* 0x00 */ daAlinkHIO_anm_c mEquipAnm; + /* 0x14 */ f32 mInputFactor; + /* 0x18 */ f32 mFeetPositionRatio; + /* 0x1C */ f32 mWalkAnmSpeedMax; + /* 0x20 */ f32 mWalkAnmSpeedMin; + /* 0x24 */ f32 mWaterInputFactor; + /* 0x28 */ f32 mWaterStartWalkAnmRate; + /* 0x2C */ f32 mWaterWalkAnmRate; + /* 0x30 */ f32 mMaxMagneFlySpeed; + /* 0x34 */ f32 mMagneFlyAccelRate; + /* 0x38 */ f32 mWaterVelocityY; + /* 0x3C */ f32 mWaterVelocityX; + /* 0x40 */ f32 mWaterVelRateSword; + /* 0x44 */ f32 mZoraWaterInputFactor; + /* 0x48 */ f32 mZoraWaterAnmSpeed; +}; // Size: 0x4C + +class daAlinkHIO_magneBoots_c0 { +public: + static daAlinkHIO_magneBoots_c1 const m; +}; + +class daAlinkHIO_cut_c1 { +public: + /* 0x00 */ daAlinkHIO_anm_c mEquipAnm; + /* 0x14 */ daAlinkHIO_anm_c mReleaseAnm; + /* 0x28 */ daAlinkHIO_anm_c mRecoilAnm; + /* 0x3C */ daAlinkHIO_anm_c mStabAnm; + /* 0x50 */ bool mForceHitCombo; + /* 0x52 */ s16 mComboDuration; + /* 0x54 */ s16 mBlurAlpha; + /* 0x56 */ s16 mNormalSwingDuration; + /* 0x58 */ s16 mDashBlurAlpha; + /* 0x5A */ s16 mUnkTime; // might be related to flourish + /* 0x5C */ s16 mFlourishTime; + /* 0x5E */ s16 mUnkBodyDownwards; // ? + /* 0x60 */ s16 mUnkBodyUpwards; // ? + /* 0x62 */ s16 mSpinSlashWait; // ? maybe related to wii? + /* 0x64 */ f32 mRecoilSpeed; + /* 0x68 */ f32 mRecoilDeceleration; + /* 0x6C */ f32 mFlourishAnmSpeed; + /* 0x70 */ f32 mFlourishEndAnmSpeed; + /* 0x74 */ f32 mSwordLength; + /* 0x78 */ f32 mSwordRadius; + /* 0x7C */ f32 mSwordLengthHorseback; + /* 0x80 */ f32 mSwordRadiusHorseback; + /* 0x84 */ f32 mRunCutLength; + /* 0x88 */ f32 mRunCutRadius; + /* 0x8C */ f32 mUnkReleaseASpeed; + /* 0x90 */ f32 mSwordLengthHorsebackFight; + /* 0x94 */ f32 mSwordRadiusHorsebackFight; + /* 0x98 */ f32 mFlourishControlStartFrame; +}; // Size: 0x9C + +class daAlinkHIO_cut_c0 { +public: + static daAlinkHIO_cut_c1 const m; +}; + +class daAlinkHIO_cutJump_c1 { +public: + /* 0x00 */ daAlinkHIO_anm_c mCutAnm; + /* 0x14 */ daAlinkHIO_anm_c mLandAnm; + /* 0x28 */ f32 mBaseJumpSpeedH; + /* 0x2C */ f32 mBaseJumpSpeedV; + /* 0x30 */ f32 mAirJumpSpeedH; + /* 0x34 */ f32 mAirJumpSpeedV; + /* 0x38 */ f32 mStartAttackFrame; + /* 0x3C */ f32 mEndAttackFrame; + /* 0x40 */ f32 mJumpSpinDelay; +}; // Size: 0x44 + +class daAlinkHIO_cutJump_c0 { +public: + static daAlinkHIO_cutJump_c1 const m; +}; + +class daAlinkHIO_move_c1 { +public: + /* 0x00 */ daAlinkHIO_anm_c mSlideAnm; + /* 0x14 */ s16 mMaxTurnAngle; + /* 0x16 */ s16 mMinTurnAngle; + /* 0x18 */ s16 mTurnAngleRate; + /* 0x1C */ f32 mWaitAnmSpeed; + /* 0x20 */ f32 mWalkAnmSpeed; + /* 0x24 */ f32 mRunAnmSpeed; + /* 0x28 */ f32 mWalkChangeRate; + /* 0x2C */ f32 mRunChangeRate; + /* 0x30 */ f32 mMaxSpeed; + /* 0x34 */ f32 mAcceleration; + /* 0x38 */ f32 mDeceleration; + /* 0x3C */ f32 mSlideThresholdSpeed; // speed needed to trigger a slide + /* 0x40 */ f32 mSlideSpeed; + /* 0x44 */ f32 mSlideDeceleration; + /* 0x48 */ f32 mFootPositionRatio; + /* 0x4C */ f32 mUnkInterpolation; + /* 0x50 */ f32 mMinWalkFrame; + /* 0x54 */ f32 mMinTiredWalkFrame; +}; // Size: 0x58 + +class daAlinkHIO_move_c0 { +public: + static daAlinkHIO_move_c1 const m; +}; + +class daAlinkHIO_sideStep_c1 { +public: + /* 0x00 */ daAlinkHIO_anm_c mSideJumpAnm; + /* 0x14 */ daAlinkHIO_anm_c mSideLandAnm; + /* 0x28 */ daAlinkHIO_anm_c mBackJumpAnm; + /* 0x3C */ daAlinkHIO_anm_c mBackLandAnm; + /* 0x50 */ f32 mSideJumpSpeedH; + /* 0x54 */ f32 mSideJumpSpeedV; + /* 0x58 */ f32 mBackJumpSpeedH; + /* 0x5C */ f32 mBackJumpSpeedV; + /* 0x60 */ f32 mFallHeight; + /* 0x64 */ f32 mFallInterpolation; +}; // Size: 0x68 + +class daAlinkHIO_sideStep_c0 { +public: + static daAlinkHIO_sideStep_c1 const m; +}; + +class daAlinkHIO_atnMove_c1 { +public: + /* 0x00 */ s16 mMaxTurnAngle; + /* 0x02 */ s16 mMinTurnAngle; + /* 0x04 */ s16 mTurnAngleRate; + /* 0x08 */ f32 mWaitAnmSpeed; + /* 0x0C */ f32 mWalkAnmSpeed; + /* 0x10 */ f32 mRunAnmSpeed; + /* 0x14 */ f32 mWalkChangeRate; + /* 0x18 */ f32 mRunChangeRate; + /* 0x1C */ f32 mMaxSpeed; + /* 0x20 */ f32 mAcceleration; + /* 0x24 */ f32 mDeceleration; + /* 0x28 */ f32 mBackWalkAnmSpeed; + /* 0x2C */ f32 mBackRunAnmSpeed; + /* 0x30 */ f32 mBackWalkChangeRate; + /* 0x34 */ f32 mBackRunChangeRate; + /* 0x38 */ f32 mMaxBackwardsSpeed; + /* 0x3C */ f32 mBackAcceleration; + /* 0x40 */ f32 mBackDeceleration; + /* 0x44 */ f32 mMinWalkFrame; + /* 0x48 */ f32 mMinBackWalkFrame; + /* 0x4C */ f32 mWalkForwardAnmSpeed; + /* 0x50 */ f32 mRunForwardAnmSpeed; +}; // Size: 0x54 + +class daAlinkHIO_atnMove_c0 { +public: + static daAlinkHIO_atnMove_c1 const m; +}; + +class daAlinkHIO_wallMove_c1 { +public: + /* 0x00 */ f32 mMinAnmSpeed; + /* 0x04 */ f32 mMaxAnmSpeed; + /* 0x08 */ f32 mInterpolation; + /* 0x0C */ f32 mMinSpeed; + /* 0x10 */ f32 mMaxSpeed; +}; + +class daAlinkHIO_wallMove_c0 { +public: + static daAlinkHIO_wallMove_c1 const m; +}; + +class daAlinkHIO_turnMove_c1 { +public: + /* 0x00 */ daAlinkHIO_anm_c mTurnAnm; + /* 0x14 */ s16 mTurnSpeedRate; + /* 0x16 */ s16 mMaxTurnSpeed; + /* 0x18 */ s16 mMinTurnSpeed; + /* 0x1A */ s16 mMaxHalfTurnSpeed; + /* 0x1C */ f32 mHalfTurnAnmSpeed; + /* 0x20 */ f32 mTwirlCutDelayF; + /* 0x24 */ f32 mSideRollAnmSpeed; + /* 0x28 */ f32 mSideRollSpeed; +}; // Size: 0x2C + +class daAlinkHIO_turnMove_c0 { +public: + static daAlinkHIO_turnMove_c1 const m; +}; + +class daAlinkHIO_slide_c1 { +public: + // most of these havent been verified yet + /* 0x00 */ daAlinkHIO_anm_c mForwardSlideAnm; + /* 0x14 */ daAlinkHIO_anm_c mBackwardSlideAnm; + /* 0x28 */ daAlinkHIO_anm_c mForwardLandAnm; // this and 0x3C might have names reversed? + /* 0x3C */ daAlinkHIO_anm_c mBackwardLandAnm; + /* 0x50 */ f32 mMaxSpeed; + /* 0x54 */ f32 mAcceleration; + /* 0x58 */ f32 mSlideAngle; + /* 0x5C */ f32 mClimbAngle; + /* 0x60 */ f32 mClimbAnmMinSpeed; + /* 0x64 */ f32 mMaxClimbSpeed; + /* 0x68 */ f32 mLavaFloorSlideAngle; // ? + /* 0x6C */ f32 mLavaFloorWeakSlideAngle; // ? + /* 0x70 */ f32 mLavaFloorWeakSlideSpeed; + /* 0x74 */ f32 mMaxClimbAnmSpeed; +}; // Size: 0x78 + +class daAlinkHIO_slide_c0 { +public: + static daAlinkHIO_slide_c1 const m; +}; + +class daAlinkHIO_frontRoll_c1 { +public: + /* 0x00 */ daAlinkHIO_anm_c mRollAnm; + /* 0x14 */ daAlinkHIO_anm_c mCrashAnm; + /* 0x28 */ daAlinkHIO_anm_c mCrashHitAnm; // ? + /* 0x3C */ s16 mCrashAngleThreshold; + /* 0x3E */ s16 mTurnRate; + /* 0x40 */ s16 mTurnMaxAngle; + /* 0x42 */ s16 mTurnMinAngle; + /* 0x44 */ f32 mInitSpeed; + /* 0x48 */ f32 mSpeedRate; + /* 0x4C */ f32 mMinSpeed; + /* 0x50 */ f32 mCrashSpeedThreshold; + /* 0x54 */ f32 mCrashInitF; + /* 0x58 */ f32 mCrashEndF; + /* 0x5C */ f32 mCrashSpeedH; + /* 0x60 */ f32 mCrashSpeedV; + /* 0x64 */ f32 mBootsAttackInitF; + /* 0x68 */ f32 mBootsAttackEndF; + /* 0x6C */ f32 mBootsAttackRadius; +}; // Size: 0x70 + +class daAlinkHIO_frontRoll_c0 { +public: + static daAlinkHIO_frontRoll_c1 const m; +}; + +class daAlinkHIO_wlAttack_c1 { +public: + /* 0x00 */ daAlinkHIO_anm_c mLandAnm; + /* 0x14 */ s16 mUnkTime; + /* 0x16 */ s16 mComboDuration; + /* 0x18 */ f32 mFallHeight; + /* 0x1C */ f32 mFallInterpolation; + /* 0x20 */ f32 mReadyInterpolation; + /* 0x24 */ f32 mAttackRange; + /* 0x28 */ f32 mJumpBackSpeedH; + /* 0x2C */ f32 mJumpBackSpeedV; + /* 0x30 */ f32 mJumpAttackSpeedV; + /* 0x34 */ f32 mJumpAttackSpeedH; +}; // Size: 0x38 + +class daAlinkHIO_wlAttack_c0 { +public: + static daAlinkHIO_wlAttack_c1 const m; +}; + +class daHorseRein_c { +private: + /* 0x00 */ cXyz* field_0x0[2]; + /* 0x08 */ int field_0x8[2]; + /* 0x10 */ f32 field_0x10; + /* 0x14 */ f32 field_0x14; + /* 0x18 */ f32 field_0x18; + /* 0x1C */ cXyz field_0x1c; +}; // Size: 0x28 + +class daHorseFootData_c { +private: + /* 0x0 */ u8 field_0x0[0xE4]; +}; // Size: 0xE4 + +class daHorse_c : public fopAc_ac_c { +public: + enum daHorse_ERFLG0 { + /* 0x010 */ MOVE_ACCEPT = 0x10, + /* 0x080 */ RIDE_RUN_FLG = 0x80, + /* 0x100 */ CUT_TURN_CANCEL = 0x100, + }; + + enum daHorse_RFLG0 { + /* 0x02 */ ENEMY_SEARCH = 2, + /* 0x08 */ LASH_DASH_START = 8, + /* 0x10 */ TURN_STAND = 0x10, + /* 0x40 */ TURN_STAND_CAMERA = 0x40, + }; + + enum daHorse_FLG0 { + /* 0x00000020 */ RODEO_LEFT = 0x20, + /* 0x00000040 */ RIDE_START_FLG = 0x40, + /* 0x00010000 */ PLAYER_BACK_RIDE_LASH = 0x10000, + /* 0x20000000 */ TURN_CANCEL_KEEP = 0x20000000, + /* 0x80000000 */ RODEO_MODE = 0x80000000 + }; + fopAc_ac_c* getZeldaActor(); + bool checkNoBombProc() const { + return field_0x16b4 == 0 || field_0x16b4 == 1; + } + bool checkResetStateFlg0(daHorse_RFLG0 flag) { return mResetStateFlg0 & flag; } + bool checkEndResetStateFlg0(daHorse_ERFLG0 flag) { return mEndResetStateFlg0 & flag; } + bool checkStateFlg0(daHorse_FLG0 flag) { return mStateFlg0 & flag; } + private: - /* 0x0000 */ fopAc_ac_c mActor; - /* 0x0568 */ u8 field_0x568[0xCEC]; + /* 0x0568 */ u8 field_0x568[8]; + /* 0x0570 */ J3DModel* field_0x570; + /* 0x0574 */ void* field_0x574; + /* 0x0578 */ J3DFrameCtrl field_0x578; + /* 0x058C */ int field_0x58c; + /* 0x0590 */ u8 field_0x590[4]; + /* 0x0594 */ mDoExt_AnmRatioPack field_0x594[3]; + /* 0x05AC */ void* field_0x5ac; + /* 0x05B0 */ daPy_frameCtrl_c field_0x5b0[3]; + /* 0x05F8 */ u8 field_0x5f8[4]; + /* 0x05FC */ dBgS_AcchCir field_0x5fc[3]; + /* 0x06BC */ dBgS_Acch field_0x6bc; + /* 0x0894 */ dCcD_Stts field_0x894; + /* 0x08D0 */ dBgS_HorseLinChk field_0x8d0; + /* 0x0940 */ dCcD_Cyl field_0x940[3]; + /* 0x0CF4 */ dCcD_Cyl field_0xcf4; + /* 0x0E30 */ dCcD_Cyl field_0xe30; + /* 0x0F6C */ dCcD_Sph field_0xf6c; + /* 0x10A4 */ Z2CreatureRide field_0x10a4; + /* 0x1140 */ u8 field_0x1140[0x10]; + /* 0x1150 */ daHorseRein_c field_0x1150[3]; + /* 0x11C8 */ u8 field_0x11c8[0x40]; + /* 0x1208 */ dMsgFlow_c field_0x1208; /* 0x1254 */ daPy_actorKeep_c mZeldaActorKeep; + /* 0x125C */ u8 field_0x125c[0xC8]; + /* 0x1324 */ daHorseFootData_c mFootData[4]; + /* 0x16B4 */ u8 field_0x16b4; + /* 0x16B5 */ u8 field_0x16b5[3]; + /* 0x16B8 */ u8 field_0x16b8; + /* 0x16B9 */ u8 field_0x16b9[2]; + /* 0x16BB */ u8 mRodeoPointCnt; + /* 0x16BC */ u8 field_0x16bc[0x36]; + /* 0x16F2 */ s16 mAimNeckAngleY; + /* 0x16F4 */ u8 field_0x16f4[0xA]; + /* 0x16FC */ s16 mDemoMoveAngle; + /* 0x16FE */ u8 field_0x16fe[4]; + /* 0x1702 */ s16 field_0x1702; + /* 0x1704 */ u8 field_0x1704[2]; + /* 0x1706 */ s16 mCowHitAngle; + /* 0x1708 */ s16 mCowHit; + /* 0x170A */ u8 field_0x170a[0x1E]; + /* 0x1728 */ int field_0x1728; + /* 0x172C */ u8 field_0x172c[0x14]; + /* 0x1740 */ u32 field_0x1740; + /* 0x1744 */ u32 mStateFlg0; + /* 0x1748 */ u32 mResetStateFlg0; + /* 0x174C */ u32 mEndResetStateFlg0; + /* 0x1750 */ f32 mMorfFrame; + /* 0x1754 */ u8 field_0x1754[0x14]; + /* 0x1768 */ f32 field_0x1768; + /* 0x176C */ f32 field_0x176c; + /* 0x1770 */ f32 field_0x1770; + /* 0x1774 */ u8 field_0x1774[0x14]; + /* 0x1788 */ f32 mDemoStickR; + /* 0x178C */ f32 mNormalMaxSpeedF; + /* 0x1790 */ f32 mLashMaxSpeedF; + /* 0x1794 */ u8 field_0x1794[0x30]; + /* 0x17C4 */ cXyz mDemoPos0; }; class daMidna_c { public: enum daMidna_ERFLG0 { - NoServiceWait = 128, - ForcePanic = 8, + NO_SERVICE_WAIT = 128, + FORCE_PANIC = 8, + }; + enum daMidna_FLG1 { + FORCE_NORMAL_COLOR = 8, + FORCE_TIRED_COLOR = 4 }; - enum daMidna_FLG1 { ForceNormalColor = 8, ForceTiredColor = 4 }; - void onForcePanic(void); - u32 checkForceNormalColor(void) const; - u32 checkForceTiredColor(void) const; - bool checkMidnaTired(void); - void onNoServiceWait(void); + void onForcePanic(); + u32 checkForceNormalColor() const; + u32 checkForceTiredColor() const; + bool checkMidnaTired(); + void onNoServiceWait(); void onEndResetStateFlg0(daMidna_ERFLG0 pFlg) { mEndResetStateFlg0 |= pFlg; } u32 checkStateFlg1(daMidna_FLG1 pFlg) const { return mStateFlg1 & pFlg; } diff --git a/include/d/a/d_a_player.h b/include/d/a/d_a_player.h index 5807f9b45c..786338348d 100644 --- a/include/d/a/d_a_player.h +++ b/include/d/a/d_a_player.h @@ -27,11 +27,18 @@ private: /* 0x48 */ ResTIMG* field_0x48; }; -struct daPy_boomerangMove_c { +class daPy_boomerangMove_c { +public: /* 8015E5B0 */ void initOffset(cXyz const*); /* 8015E654 */ void posMove(cXyz*, s16*, fopAc_ac_c*, s16); /* 8015E87C */ void bgCheckAfterOffset(cXyz const*); -}; + +private: + /* 0x0 */ u8 field_0x0; + /* 0x2 */ u16 field_0x2; + /* 0x4 */ f32 field_0x4; + /* 0x8 */ f32 field_0x8; +}; // Size: 0xC class daPy_anmHeap_c { public: @@ -66,14 +73,15 @@ private: class daPy_actorKeep_c { public: - daPy_actorKeep_c(void); - void setActor(void); + daPy_actorKeep_c(); + void setActor(); void setData(fopAc_ac_c*); - void clearData(void); + void clearData(); - u32 getID(void) const { return mID; } + u32 getID() const { return mID; } void setID(u32 id) { mID = id; } - fopAc_ac_c* getActor(void) const { return mActor; } + fopAc_ac_c* getActor() const { return mActor; } + fopAc_ac_c* getActorConst() const { return mActor; } private: u32 mID; @@ -84,8 +92,8 @@ class daPy_frameCtrl_c : public J3DFrameCtrl { public: /* 80140D24 */ ~daPy_frameCtrl_c(); /* 80140D80 */ daPy_frameCtrl_c(); - bool checkAnmEnd(void); - void updateFrame(void); + bool checkAnmEnd(); + void updateFrame(); void setFrameCtrl(u8, short, short, float, float); u16 getEndFlg() { return mEndFlg; } @@ -103,12 +111,17 @@ private: /* 0x16 */ u16 mNowSetFlg; }; +class Z2WolfHowlMgr; +class daBoomerang_c; + class daPy_demo_c { public: void setSpecialDemoType(); void setDemoType(u16 pType) { mDemoType = pType; } u16 getDemoType() const { return mDemoType; } + void setDemoMode(u32 mode) { mDemoMode = mode; } + u32 getDemoMode() const { return mDemoMode; } private: /* 0x00 */ u16 mDemoType; @@ -117,24 +130,32 @@ private: /* 0x06 */ s16 mParam2; /* 0x08 */ int mParam0; /* 0x0C */ int mParam1; - /* 0x10 */ int mDemoMode; + /* 0x10 */ u32 mDemoMode; /* 0x14 */ float mStick; /* 0x18 */ cXyz mDemoPos0; -}; // Size = 0x24 +}; // Size: 0x24 class daPy_py_c : public fopAc_ac_c { public: - /* 0x0568 */ u8 field_0x568[8]; - /* 0x0570 */ int mNoResetFlg0; - /* 0x0574 */ int mNoResetFlg1; - /* 0x0578 */ int mNoResetFlg2; - /* 0x057C */ int mNoResetFlg3; - /* 0x0580 */ int mResetFlg0; - /* 0x0584 */ int mResetFlg1; - /* 0x0588 */ int mEndResetFlg0; - /* 0x058C */ int mEndResetFlg1; - /* 0x0590 */ int mEndResetFlg2; - /* 0x0594 */ u8 field_0x594[0x10]; + /* 0x0568 */ u8 mCutType; + /* 0x0569 */ u8 mComboCutCount; + /* 0x056A */ u8 mSpecialMode; // maybe needs better name + /* 0x056B */ u8 field_0x56b; + /* 0x056C */ s16 mDamageTimer; + /* 0x056E */ u8 field_0x56e[2]; + /* 0x0570 */ u32 mNoResetFlg0; + /* 0x0574 */ u32 mNoResetFlg1; + /* 0x0578 */ u32 mNoResetFlg2; + /* 0x057C */ u32 mNoResetFlg3; + /* 0x0580 */ u32 mResetFlg0; + /* 0x0584 */ u32 mResetFlg1; + /* 0x0588 */ u32 mEndResetFlg0; + /* 0x058C */ u32 mEndResetFlg1; + /* 0x0590 */ u32 mEndResetFlg2; + /* 0x0594 */ f32 field_0x594; + /* 0x0598 */ u8 field_0x598[0x4]; + /* 0x059C */ s16 mLookAngleY; + /* 0x059E */ u8 field_0x59e[0x6]; /* 0x05A4 */ cXyz mHeadTopPos; /* 0x05B0 */ cXyz mItemPos; /* 0x05BC */ cXyz mSwordTopPos; @@ -147,23 +168,67 @@ public: public: enum daPy_FLG0 { - EquipHeavyBoots = 0x2000000, - MagneBootsOn = 0x1000, - UnkFrollCrashFlg2 = 0x10, - UnkFrollCrashFlg1 = 0x8 + EQUIP_HEAVY_BOOTS = 0x2000000, + FLG0_UNK_8000000 = 0x8000000, + FLG0_UNK_1000000 = 0x1000000, + UNDER_WATER_MOVEMENT = 0x800000, + FLG0_UNK_80000 = 0x80000, + FLG0_UNK_8000 = 0x8000, + MAGNE_BOOTS_ON = 0x1000, + FLG0_UNK_40 = 0x40, + UNK_F_ROLL_CRASH_2 = 0x10, + UNK_F_ROLL_CRASH_1 = 0x8 }; - enum daPy_FLG1 { Wolf = 0x2000000, ThrowDamage = 0x4000 }; - enum daPy_FLG2 { BoarSingleBattle = 0x1800000, UnkArmor = 0x80000, Unk = 1 }; - enum daPy_FLG3 { CopyRodThrowAfter = 0x40000 }; - enum daPy_ERFLG0 {}; - enum daPy_ERFLG1 { GanonFinish = 0x80000000, UnkForcePutPos = 0x2000 }; + enum daPy_FLG1 { IS_WOLF = 0x2000000, THROW_DAMAGE = 0x4000 }; + enum daPy_FLG2 { FLG2_UNK_4080000 = 0x4080000, FLG2_UNK_2080000 = 0x2080000, BOAR_SINGLE_BATTLE = 0x1800000, STATUS_WINDOW_DRAW = 0x400000, UNK_ARMOR = 0x80000, UNK_FLG2_2 = 2, UNK_DAPY_FLG2_1 = 1 }; + enum daPy_FLG3 { FLG3_UNK_100000 = 0x100000, COPY_ROD_THROW_AFTER = 0x40000 }; + enum daPy_ERFLG0 { ERFLG0_UNK_8000000 = 0x8000000, ERFLG0_UNK_1000000 = 0x1000000, ERFLG0_UNK_100000 = 0x100000, }; + enum daPy_ERFLG1 { GANON_FINISH = 0x80000000, UNK_FORCE_PUT_POS = 0x2000 }; enum daPy_ERFLG2 {}; - enum daPy_RFLG0 {}; + enum daPy_RFLG0 { + RFLG0_UNK_8000000 = 0x8000000, + RFLG0_UNK_80 = 0x80, + RFLG0_UNK_40 = 0x40, + RFLG0_UNK_2 = 0x2, + }; + + enum { + /* 0x01 */ SMODE_SUMO_READY = 1, + /* 0x25 */ SMODE_SUMO_LOSE = 37, + /* 0x2A */ SMODE_GOAT_STOP = 42, + /* 0x2B */ SMODE_GORON_THROW, + /* 0x2C */ SMODE_CARGO_CARRY, + }; + + enum CutType { + /* 0x01 */ TYPE_CUT_VERTICAL = 1, + /* 0x02 */ TYPE_CUT_STAB, + /* 0x03 */ TYPE_CUT_SWEEP, + /* 0x04 */ TYPE_CUT_HORIZONTAL, + /* 0x05 */ TYPE_CUT_HEAD, // Helm Splitter + /* 0x06 */ TYPE_CUT_LEFT_SWEEP_FINISH, + /* 0x07 */ TYPE_CUT_DOWN_FINISH, + /* 0x08 */ TYPE_CUT_TURN_RIGHT, + /* 0x0A */ TYPE_CUT_JUMP = 10, + /* 0x10 */ TYPE_CUT_AIR = 0x10, + /* 0x12 */ TYPE_CUT_LARGE_JUMP_INIT = 0x12, + /* 0x13 */ TYPE_CUT_LARGE_JUMP, + /* 0x14 */ TYPE_CUT_LARGE_JUMP_FINISH, + /* 0x15 */ TYPE_CUT_RIGHT_SWEEP_FINISH, + /* 0x16 */ TYPE_CUT_TURN_LEFT, + /* 0x17 */ TYPE_CUT_LARGE_TURN_LEFT, + /* 0x18 */ TYPE_CUT_LARGE_TURN_RIGHT, + /* 0x1A */ TYPE_CUT_FAST_MOVE = 0x1A, + /* 0x1E */ TYPE_CUT_TWIRL = 0x1E, // Back Slice + /* 0x1F */ TYPE_CUT_FAST, + /* 0x20 */ TYPE_CUT_STAB_FINISH, + /* 0x21 */ TYPE_CUT_STAB_COMBO, + }; void setParamData(int, int, int, int); int checkFishingRodItem(int); - void checkBombItem(int); - void checkBottleItem(int); + static BOOL checkBombItem(int); + static BOOL checkBottleItem(int); void checkDrinkBottleItem(int); static BOOL checkOilBottleItem(int); static BOOL checkOpenBottleItem(int); @@ -171,7 +236,7 @@ public: static BOOL checkHookshotItem(int); static BOOL checkTradeItem(int); static BOOL checkDungeonWarpItem(int); - BOOL checkMasterSwordEquip(); + static BOOL checkMasterSwordEquip(); void checkWoodShieldEquip(); f32 getAttentionOffsetY(); s16 checkNowWolfEyeUp(); @@ -183,105 +248,104 @@ public: void linkGrabSubjectNoDraw(fopAc_ac_c*); void wolfGrabSubjectNoDraw(fopAc_ac_c*); void checkRoomRestartStart(); - void checkCarryStartLightBallA(); - void checkCarryStartLightBallB(); + static u32 checkCarryStartLightBallA(); + static u32 checkCarryStartLightBallB(); float getSpinnerRideSpeed() const; void checkSpinnerReflectEffect(); void checkBoomerangCharge(); bool checkBoomerangChargeTime(); - void getThrowBoomerangActor(); + static daBoomerang_c* getThrowBoomerangActor(); void cancelBoomerangLockActor(fopAc_ac_c*); void setPlayerDamage(int, int); void setMidnaMotionNum(int); void setMidnaFaceNum(int); int checkNoResetFlg0(daPy_FLG0) const; int checkEquipHeavyBoots() const; - int checkBoarSingleBattle(void) const; + int checkBoarSingleBattle() const; int checkEndResetFlg0(daPy_ERFLG0) const; void onNoResetFlg2(daPy_py_c::daPy_FLG2); void offNoResetFlg0(daPy_py_c::daPy_FLG0); int checkEndResetFlg2(daPy_py_c::daPy_ERFLG2) const; bool getSumouMode() const; int checkNoResetFlg3(daPy_py_c::daPy_FLG3) const; - void checkShieldGet(); + BOOL checkShieldGet(); void onNoResetFlg0(daPy_py_c::daPy_FLG0); int checkEndResetFlg1(daPy_py_c::daPy_ERFLG1) const; void offNoResetFlg1(daPy_py_c::daPy_FLG1); void offNoResetFlg2(daPy_py_c::daPy_FLG2); int checkWolf() const; - void checkSwordGet(); + BOOL checkSwordGet(); int checkResetFlg0(daPy_py_c::daPy_RFLG0) const; int checkNoResetFlg2(daPy_py_c::daPy_FLG2) const; int checkMagneBootsOn() const; - virtual void unk(); - virtual bool getMidnaAtnPos(void) const; + virtual cXyz* getMidnaAtnPos() const; virtual void setMidnaMsgNum(fopAc_ac_c*, u16); - virtual Mtx* getModelMtx(void); - virtual Mtx* getInvMtx(void); - virtual cXyz* getShadowTalkAtnPos(void); - virtual float getGroundY(); - virtual Mtx* getLeftItemMatrix(void); - virtual Mtx* getRightItemMatrix(void); - virtual Mtx* getLeftHandMatrix(void); - virtual Mtx* getRightHandMatrix(void); - virtual Mtx* getLinkBackBone1Matrix(void); - virtual Mtx* getWolfMouthMatrix(void); - virtual Mtx* getWolfBackbone2Matrix(void); - virtual bool getBottleMtx(void); - virtual bool checkPlayerGuard(void) const; - virtual bool checkPlayerFly() const; - virtual bool checkFrontRoll() const; - virtual bool checkWolfDash() const; - virtual bool checkAutoJump(void) const; - virtual bool checkSideStep(void) const; - virtual bool checkWolfTriggerJump(void) const; - virtual bool checkGuardBreakMode(void) const; - virtual bool checkLv3Slide(void) const; - virtual bool checkWolfHowlDemoMode(void) const; - virtual bool checkChainBlockPushPull(void); - virtual bool checkElecDamage(void) const; - virtual bool checkEmptyBottleSwing(void) const; - virtual bool checkBottleSwingMode(void) const; - virtual bool checkHawkWait(void) const; - virtual bool checkGoatThrow(void) const; - virtual bool checkGoatThrowAfter(void) const; - virtual bool checkWolfTagLockJump(void) const; - virtual bool checkWolfTagLockJumpLand(void) const; - virtual bool checkWolfRope(void); - virtual bool checkWolfRopeHang(void) const; - virtual bool checkRollJump(void) const; - virtual bool checkGoronRideWait(void) const; - virtual bool checkWolfChain(void) const; - virtual bool checkWolfWait(void) const; - virtual bool checkWolfJumpAttack(void) const; - virtual bool checkWolfRSit(void) const; - virtual bool checkBubbleFly(void) const; - virtual bool checkBottleDrinkEnd(void) const; - virtual bool checkWolfDig(void) const; - virtual bool checkCutCharge(void) const; - virtual bool checkCutTurnCharge(void) const; - virtual bool checkCutLargeJumpCharge(void) const; + virtual MtxP getModelMtx(); + virtual MtxP getInvMtx(); + virtual cXyz* getShadowTalkAtnPos(); + virtual f32 getGroundY(); + virtual MtxP getLeftItemMatrix(); + virtual MtxP getRightItemMatrix(); + virtual MtxP getLeftHandMatrix(); + virtual MtxP getRightHandMatrix(); + virtual MtxP getLinkBackBone1Matrix(); + virtual MtxP getWolfMouthMatrix(); + virtual MtxP getWolfBackbone2Matrix(); + virtual MtxP getBottleMtx(); + virtual BOOL checkPlayerGuard() const; + virtual u32 checkPlayerFly() const; + virtual BOOL checkFrontRoll() const; + virtual BOOL checkWolfDash() const; + virtual BOOL checkAutoJump() const; + virtual bool checkSideStep() const; + virtual bool checkWolfTriggerJump() const; + virtual BOOL checkGuardBreakMode() const; + virtual bool checkLv3Slide() const; + virtual bool checkWolfHowlDemoMode() const; + virtual bool checkChainBlockPushPull(); + virtual BOOL checkElecDamage() const; + virtual BOOL checkEmptyBottleSwing() const; + virtual BOOL checkBottleSwingMode() const; + virtual BOOL checkHawkWait() const; + virtual BOOL checkGoatThrow() const; + virtual BOOL checkGoatThrowAfter() const; + virtual BOOL checkWolfTagLockJump() const; + virtual BOOL checkWolfTagLockJumpLand() const; + virtual bool checkWolfRope(); + virtual BOOL checkWolfRopeHang() const; + virtual BOOL checkRollJump() const; + virtual BOOL checkGoronRideWait() const; + virtual BOOL checkWolfChain() const; + virtual BOOL checkWolfWait() const; + virtual BOOL checkWolfJumpAttack() const; + virtual BOOL checkWolfRSit() const; + virtual bool checkBubbleFly() const; + virtual BOOL checkBottleDrinkEnd() const; + virtual BOOL checkWolfDig() const; + virtual BOOL checkCutCharge() const; + virtual BOOL checkCutTurnCharge() const; + virtual BOOL checkCutLargeJumpCharge() const; virtual bool getBokoFlamePos(cXyz*); - virtual bool checkComboCutTurn(void) const; - virtual bool checkClimbMove(void) const; - virtual bool checkGrassWhistle(void) const; - virtual bool checkBoarRun(void) const; - virtual bool checkFmChainPut(void) const; - virtual bool checkHorseElecDamage(void) const; - virtual float getBaseAnimeFrameRate(void) const; - virtual float getBaseAnimeFrame(void) const; + virtual BOOL checkComboCutTurn() const; + virtual BOOL checkClimbMove() const; + virtual BOOL checkGrassWhistle() const; + virtual BOOL checkBoarRun() const; + virtual bool checkFmChainPut() const; + virtual bool checkHorseElecDamage() const; + virtual float getBaseAnimeFrameRate() const; + virtual float getBaseAnimeFrame() const; virtual void setAnimeFrame(float); virtual bool checkWolfLock(fopAc_ac_c*) const; virtual bool cancelWolfLock(fopAc_ac_c*); - virtual bool getAtnActorID(void) const; - virtual s32 getItemID(void) const; - virtual bool getGrabActorID(void) const; + virtual s32 getAtnActorID() const; + virtual s32 getItemID() const; + virtual s32 getGrabActorID() const; virtual bool exchangeGrabActor(fopAc_ac_c*); virtual bool setForceGrab(fopAc_ac_c*, int, int); virtual void setForcePutPos(cXyz const&); - virtual bool checkPlayerNoDraw(void); - virtual bool checkRopeTag(void); + virtual bool checkPlayerNoDraw(); + virtual bool checkRopeTag(); virtual void voiceStart(u32); virtual void seStartOnlyReverb(u32); virtual void seStartOnlyReverbLevel(u32); @@ -289,14 +353,14 @@ public: virtual void setGrabCollisionOffset(float, float, cBgS_PolyInfo*); virtual void onMagneGrab(float, float); virtual void onFrollCrashFlg(u8, int); - virtual bool getModelJointMtx(u16); - virtual bool getHeadMtx(void); + virtual MtxP getModelJointMtx(u16); + virtual MtxP getHeadMtx(); virtual bool setHookshotCarryOffset(unsigned int, cXyz const*); - // virtual void checkCutJumpCancelTurn() const; - virtual bool checkIronBallReturn(void) const; - virtual bool checkIronBallGroundStop(void) const; - virtual bool checkSingleBoarBattleSecondBowReady(void) const; - virtual bool checkPointSubWindowMode(void) const; + virtual BOOL checkCutJumpCancelTurn() const; + virtual bool checkIronBallReturn() const; + virtual bool checkIronBallGroundStop() const; + virtual BOOL checkSingleBoarBattleSecondBowReady() const; + virtual bool checkPointSubWindowMode() const; virtual void setClothesChange(int); virtual void setPlayerPosAndAngle(float (*)[4]); virtual void setPlayerPosAndAngle(cXyz const*, csXyz const*); @@ -306,27 +370,27 @@ public: virtual bool setRollJump(float, float, short); virtual void playerStartCollisionSE(u32, u32); virtual void changeTextureAnime(u16, u16, int); - virtual void cancelChangeTextureAnime(void); - virtual void cancelDungeonWarpReadyNeck(void); + virtual void cancelChangeTextureAnime(); + virtual void cancelDungeonWarpReadyNeck(); virtual void onSceneChangeArea(u8, u8, fopAc_ac_c*); virtual void onSceneChangeAreaJump(u8, u8, fopAc_ac_c*); virtual void onSceneChangeDead(u8, int); - virtual bool checkHorseRide() const; - virtual bool checkBoarRide() const; - virtual bool checkCanoeRide() const; - virtual bool checkBoardRide() const; + virtual u32 checkHorseRide() const; + virtual u32 checkBoarRide() const; + virtual u32 checkCanoeRide() const; + virtual u32 checkBoardRide() const; virtual u32 checkSpinnerRide() const; - virtual bool getSpinnerActor(void); - virtual bool checkHorseRideNotReady(void) const; - virtual bool checkArrowChargeEnd(void) const; - virtual void getSearchBallScale(void) const; - virtual bool checkFastShotTime(void); - virtual bool checkNoEquipItem(void) const; - virtual bool checkFireMaterial(void) const; + virtual fopAc_ac_c* getSpinnerActor(); + virtual BOOL checkHorseRideNotReady() const; + virtual bool checkArrowChargeEnd() const; + virtual f32 getSearchBallScale() const; + virtual s16 checkFastShotTime(); + virtual bool checkNoEquipItem() const; + virtual bool checkFireMaterial() const; virtual bool checkKandelaarSwing(int) const; - virtual bool getBoardCutTurnOffsetAngleY(void) const; - virtual cXyz* getMagneHitPos(void); - virtual cXyz* getMagneBootsTopVec(void); + virtual s16 getBoardCutTurnOffsetAngleY() const; + virtual cXyz* getMagneHitPos(); + virtual cXyz* getMagneBootsTopVec(); virtual bool getKandelaarFlamePos(); virtual bool checkUseKandelaar(int); virtual void setDkCaught(fopAc_ac_c*); @@ -337,53 +401,53 @@ public: virtual void setWolfEnemyHangBiteAngle(short); virtual void setKandelaarMtx(float (*)[4], int, int); virtual bool getStickAngleFromPlayerShape(short*) const; - virtual bool checkSpinnerPathMove(void); - virtual bool checkSpinnerTriggerAttack(void); - virtual void onSpinnerPathForceRemove(void); - virtual bool getIronBallBgHit(void) const; - virtual bool getIronBallCenterPos(void); - virtual bool checkCanoeFishingGetLeft(void) const; - virtual bool checkCanoeFishingGetRight(void) const; - virtual bool checkBeeChildDrink(void) const; - virtual void skipPortalObjWarp(void); + virtual bool checkSpinnerPathMove(); + virtual bool checkSpinnerTriggerAttack(); + virtual void onSpinnerPathForceRemove(); + virtual bool getIronBallBgHit() const; + virtual bool getIronBallCenterPos(); + virtual bool checkCanoeFishingGetLeft() const; + virtual bool checkCanoeFishingGetRight() const; + virtual u8 checkBeeChildDrink() const; + virtual void skipPortalObjWarp(); virtual bool checkTreasureRupeeReturn(int) const; virtual void setSumouReady(fopAc_ac_c*); virtual bool checkAcceptDungeonWarpAlink(int); - virtual bool getSumouCounter(void) const; - virtual bool checkSumouWithstand(void) const; - virtual void cancelGoronThrowEvent(void); + virtual s16 getSumouCounter() const; + virtual s16 checkSumouWithstand() const; + virtual void cancelGoronThrowEvent(); virtual void setSumouGraspCancelCount(int); virtual void setSumouPushBackDirection(short); - virtual void setSumouLoseHeadUp(void); - virtual s16 getGiantPuzzleAimAngle(void) const; + virtual void setSumouLoseHeadUp(); + virtual s16 getGiantPuzzleAimAngle() const; virtual void setGoronSideMove(fopAc_ac_c*); virtual void setCargoCarry(fopAc_ac_c*); - virtual bool getDpdFarFlg(void) const; - virtual bool getHookshotTopPos(void); - virtual bool checkHookshotReturnMode(void) const; - virtual bool checkHookshotShootReturnMode(void) const; - virtual bool checkOctaIealHang(void) const; - virtual void cancelOctaIealHang(void); - virtual void cancelDragonHangBackJump(void); - virtual void setOctaIealWildHang(void); - virtual bool checkDragonHangRide(void) const; + virtual bool getDpdFarFlg() const; + virtual bool getHookshotTopPos(); + virtual bool checkHookshotReturnMode() const; + virtual bool checkHookshotShootReturnMode() const; + virtual bool checkOctaIealHang() const; + virtual void cancelOctaIealHang(); + virtual void cancelDragonHangBackJump(); + virtual void setOctaIealWildHang(); + virtual bool checkDragonHangRide() const; virtual void changeDragonActor(fopAc_ac_c*); - virtual bool getClothesChangeWaitTimer(void) const; - virtual bool getShieldChangeWaitTimer(void) const; - virtual bool getSwordChangeWaitTimer(void) const; - virtual bool checkMetamorphose(void) const; - virtual bool checkWolfDownAttackPullOut(void) const; - virtual bool checkBootsOrArmorHeavy(void) const; - virtual s32 getBottleOpenAppearItem(void) const; - virtual bool checkItemSwordEquip(void) const; - virtual float getSinkShapeOffset(void) const; - virtual bool checkSinkDead(void) const; - virtual bool checkHorseStart(void); - virtual bool getWolfHowlMgrP(void); - virtual bool checkWolfHowlSuccessAnime(void) const; - virtual bool checkCopyRodTopUse(void); - virtual bool checkCopyRodEquip(void) const; - virtual bool checkCutJumpMode(void) const; + virtual u8 getClothesChangeWaitTimer() const; + virtual u8 getShieldChangeWaitTimer() const; + virtual u8 getSwordChangeWaitTimer() const; + virtual BOOL checkMetamorphose() const; + virtual BOOL checkWolfDownAttackPullOut() const; + virtual BOOL checkBootsOrArmorHeavy() const; + virtual s32 getBottleOpenAppearItem() const; + virtual bool checkItemSwordEquip() const; + virtual float getSinkShapeOffset() const; + virtual BOOL checkSinkDead() const; + virtual BOOL checkHorseStart(); + virtual Z2WolfHowlMgr* getWolfHowlMgrP(); + virtual BOOL checkWolfHowlSuccessAnime() const; + virtual bool checkCopyRodTopUse(); + virtual bool checkCopyRodEquip() const; + virtual BOOL checkCutJumpMode() const; bool getSumouCameraMode() const { bool sumouCameraMode = false; @@ -393,18 +457,37 @@ public: return sumouCameraMode; } + bool checkStatusWindowDraw() { return i_checkNoResetFlg2(STATUS_WINDOW_DRAW); } + // 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; } 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_offNoResetFlg0(int pFlg) { mNoResetFlg0 &= ~pFlg; } void i_offNoResetFlg3(int pFlg) { mNoResetFlg3 &= ~pFlg; } + void i_offResetFlg0(int flag) { mResetFlg0 &= ~flag; } + void i_onResetFlg0(int flag) { mResetFlg0 |= flag; } + void i_onResetFlg1(int flag) { mResetFlg1 |= flag; } + void i_onEndResetFlg0(int flag) { mEndResetFlg0 |= flag; } + int i_checkResetFlg0(daPy_py_c::daPy_RFLG0 flag) const { return mResetFlg0 & flag; } + int i_checkEndResetFlg0(daPy_py_c::daPy_ERFLG0 flag) const { return mEndResetFlg0 & flag; } void i_onEndResetFlg1(daPy_ERFLG1 pFlg) { mEndResetFlg1 |= pFlg; } - int i_checkWolf() { return i_checkNoResetFlg1(Wolf); } - BOOL i_checkEquipHeavyBoots() const { return i_checkNoResetFlg0(EquipHeavyBoots); } + int i_checkWolf() const { return i_checkNoResetFlg1(IS_WOLF); } + BOOL i_checkEquipHeavyBoots() const { return i_checkNoResetFlg0(EQUIP_HEAVY_BOOTS); } + BOOL i_checkMagneBootsOn() const { return i_checkNoResetFlg0(MAGNE_BOOTS_ON); } + + inline u32 getLastSceneMode(); + inline bool checkWoodSwordEquip(); + inline BOOL i_checkSwordGet(); + inline bool i_checkShieldGet() const; inline BOOL checkNowWolf(); + inline bool checkZoraWearFlg() const; static u8 m_midnaActor[4]; }; diff --git a/include/d/cc/d_cc_d.h b/include/d/cc/d_cc_d.h index 0c86f48f73..447f8bee02 100644 --- a/include/d/cc/d_cc_d.h +++ b/include/d/cc/d_cc_d.h @@ -57,6 +57,7 @@ public: /* 80083830 */ void Move(); /* 8008523C */ virtual ~dCcD_GStts() {} void ClrTg() { mTg = 0; } + void SetAtApid(unsigned int id) { mAtApid = id; } // private: /* 0x04 */ u8 mAt; @@ -108,7 +109,11 @@ public: u32 GetGFlag() const { return mGFlag; } u32 GetRPrm() const { return mRPrm; } u32 MskSPrm(u32 mask) const { return mGFlag & mask; } + u32 MskRPrm(u32 mask) const { return mRPrm & mask; } bool ChkSPrm(u32 mask) const { return MskSPrm(mask); } + void OnSPrm(u32 flag) { mGFlag |= flag; } + void OffSPrm(u32 flag) { mGFlag &= ~flag; } + bool ChkRPrm(u32 flag) const { return MskRPrm(flag); } }; // Size = 0x1C class dCcD_GObjAt : public dCcD_GAtTgCoCommonBase { @@ -117,6 +122,9 @@ public: /* 80083C44 */ virtual ~dCcD_GObjAt() {} void SetVec(cXyz& vec) { mVec = vec; } cXyz& GetVec() { return mVec; } + void SetHitMark(u8 mark) { mHitMark = mark; } + void SetSe(u8 se) { mSe = se; } + void SetMtrl(u8 mtrl) { mMtrl = mtrl; } // private: /* 0x1C */ u8 mSe; @@ -156,7 +164,7 @@ public: /* 800840E4 */ virtual ~dCcD_GObjInf(); /* 80084268 */ cCcD_GObjInf* GetGObjInf(); /* 8008426C */ virtual void ClrAtHit(); - /* 800842C0 */ s32 ChkAtHit(); + /* 800842C0 */ u32 ChkAtHit(); /* 80084318 */ void ResetAtHit(); /* 80084358 */ cCcD_Obj* GetAtHitObj(); /* 800843A8 */ cCcD_GObjInf* GetAtHitGObj(); @@ -176,6 +184,15 @@ public: void SetAtVec(cXyz& vec) { mGObjAt.SetVec(vec); } bool ChkAtNoMass() const { return mGObjAt.ChkSPrm(8); } + void OnAtNoHitMark() { mGObjAt.OnSPrm(2); } + void OffAtNoHitMark() { mGObjAt.OffSPrm(2); } + void OnAtNoConHit() { mGObjAt.OnSPrm(1); } + void OffAtNoConHit() { mGObjAt.OffSPrm(1); } + void SetAtHitMark(u8 mark) { mGObjAt.SetHitMark(mark); } + void SetAtSe(u8 se) { mGObjAt.SetSe(se); } + void SetAtMtrl(u8 mtrl) { mGObjAt.SetMtrl(mtrl); } + fopAc_ac_c* GetAtHitAc() { return mGObjAt.GetAc(); } + bool ChkAtShieldHit() { return mGObjAt.ChkRPrm(1); } static u32 const m_hitSeID[24]; @@ -224,6 +241,10 @@ public: dCcD_Tri() {} }; +enum dCcG_At_Spl { + /* 0x1 */ dCcG_At_Spl_UNK_01 = 1, +}; + dCcD_GObjInf* dCcD_GetGObjInf(cCcD_Obj* param_0); #endif /* D_CC_D_CC_D_H */ diff --git a/include/d/com/d_com_inf_game.h b/include/d/com/d_com_inf_game.h index 058e907b88..83b3fd5380 100644 --- a/include/d/com/d_com_inf_game.h +++ b/include/d/com/d_com_inf_game.h @@ -176,6 +176,15 @@ public: void* getPlayerPtr(int ptrIdx) { return mPlayerPtr[ptrIdx]; } JKRArchive* getMain2DArchive() { return mMain2DArchive; } J2DGrafContext* getCurrentGrafPort() { return mCurrentGrafPort; } + dVibration_c& getVibration() { return mVibration; } + void setPlayerStatus(int param_0, int i, u32 flag) { mPlayerStatus[i] |= flag; } + BOOL checkCameraAttentionStatus(int i, u32 flag) { return mCameraInfo[i].mCameraAttentionStatus & flag; } + s8 getPlayerCameraID(int i) { return mPlayerCameraID[i]; } + void set3DStatus(u8 status, u8 direction, u8 flag) { + m3DStatus = status; + m3DDirection = direction; + m3DSetFlag = flag; + } public: /* 0x00000 */ dBgS mDBgS; @@ -384,8 +393,8 @@ public: /* 0x04FD4 */ fopAc_ac_c* mMesgCamInfoActor8; /* 0x04FD8 */ fopAc_ac_c* mMesgCamInfoActor9; /* 0x04FDC */ fopAc_ac_c* mMesgCamInfoActor10; - /* 0x04FE0 */ int mPlayerStatus; - /* 0x04FE4 */ u8 field_0x4fe4[0x14]; + /* 0x04FE0 */ u32 mPlayerStatus[2]; + /* 0x04FE8 */ u8 field_0x4fe8[0x10]; /* 0x04FF8 */ __d_timer_info_c mTimerInfo; /* 0x0500C */ dDlst_window_c* mCurrentWindow; /* 0x05010 */ void* mCurrentView; @@ -451,6 +460,8 @@ void dComIfGs_setSelectEquipSword(u8); void dComIfGs_setSelectEquipShield(u8); void* dComIfG_getStageRes(char const*); void dComLbG_PhaseHandler(request_of_phase_process_class*, int (**param_1)(void*), void*); +void dComIfGp_addSelectItemNum(int, s16); +BOOL dComIfGs_isOneZoneSwitch(int, int); inline void dComIfGp_setRStatus(u8 status, u8 flag) { g_dComIfG_gameInfo.play.setRStatus(status, flag); @@ -1019,4 +1030,40 @@ inline dBgS& dComIfG_Bgsp() { return g_dComIfG_gameInfo.play.mDBgS; } +inline s16 dComIfGs_getStartPoint() { + return g_dComIfG_gameInfo.info.getRestart().getStartPoint(); +} + +inline dVibration_c& dComIfGp_getVibration() { + return g_dComIfG_gameInfo.play.getVibration(); +} + +inline void dComIfGp_setPlayerStatus0(int param_0, u32 flag) { + g_dComIfG_gameInfo.play.setPlayerStatus(param_0, 0, flag); +} + +inline void dComIfGp_setPlayerStatus1(int param_0, u32 flag) { + g_dComIfG_gameInfo.play.setPlayerStatus(param_0, 1, flag); +} + +inline dEvent_manager_c* dComIfGp_getPEvtManager() { + return &g_dComIfG_gameInfo.play.getEvtManager(); +} + +inline void dComIfGp_evmng_cutEnd(int param_0) { + dComIfGp_getPEvtManager()->cutEnd(param_0); +} + +inline BOOL dComIfGp_checkCameraAttentionStatus(int i, u32 flag) { + return g_dComIfG_gameInfo.play.checkCameraAttentionStatus(i, flag); +} + +inline void dComIfGp_set3DStatus(u8 status, u8 direction, u8 flag) { + g_dComIfG_gameInfo.play.set3DStatus(status, direction, flag); +} + +inline u8 dComIfGs_getLastSceneMode() { + return g_dComIfG_gameInfo.info.getRestart().getLastMode(); +} + #endif /* D_COM_D_COM_INF_GAME_H */ diff --git a/include/d/d_attention.h b/include/d/d_attention.h index 0edb7ab71b..ad270ddfb0 100644 --- a/include/d/d_attention.h +++ b/include/d/d_attention.h @@ -148,6 +148,16 @@ public: /* 80070178 */ virtual void execute(u16, J3DTransformInfo*); }; +struct dist_entry { + f32 field_0x0; + f32 field_0x4; + f32 field_0x8; + f32 field_0xc; + f32 field_0x10; + f32 field_0x14; + u32 field_0x18; +}; // Size: 0x1C + class dAttention_c { public: dAttention_c() {} @@ -185,14 +195,22 @@ public: /* 800736CC */ void LockonTargetPId(s32); /* 80073734 */ void ActionTarget(s32); /* 8007378C */ void CheckObjectTarget(s32); - /* 800737E4 */ void LockonTruth(); + /* 800737E4 */ bool LockonTruth(); /* 80073838 */ void checkDistance(cXyz*, s16, cXyz*, f32, f32, f32, f32); dAttCatch_c& getCatghTarget() { return mCatghTarget; } + bool chkFlag(u32 flag) { return mFlags & flag; } + bool Lockon() { + bool chk = true; + if (!LockonTruth() && !chkFlag(0x20000000)) { + chk = false; + } + return chk; + } static u8 loc_type_tbl[12]; static u8 act_type_tbl[20]; - static u8 dist_table[6552]; + static dist_entry dist_table[234]; static u32 loc_type_num; static u32 act_type_num; static u32 chk_type_tbl; diff --git a/include/d/d_bomb.h b/include/d/d_bomb.h index 7a9b57caee..cc3d612a85 100644 --- a/include/d/d_bomb.h +++ b/include/d/d_bomb.h @@ -41,6 +41,14 @@ public: bool checkFlowerBombWait(fopAc_ac_c*); bool checkWaterBomb(fopAc_ac_c*); bool checkInsectBombMove(fopAc_ac_c*); + + static fopAc_ac_c* createNormalBombPlayer(cXyz* p_pos) { + return (fopAc_ac_c*)fopAcM_fastCreate(0x221, 8, p_pos, -1, NULL, NULL, -1, NULL, NULL); + } + + static fopAc_ac_c* createWaterBombPlayer(cXyz* p_pos) { + return (fopAc_ac_c*)fopAcM_fastCreate(0x221, 9, p_pos, -1, NULL, NULL, -1, NULL, NULL); + } }; #endif /* D_D_BOMB_H */ diff --git a/include/d/d_jnt_col.h b/include/d/d_jnt_col.h index 2b88c55ed3..71d566c05d 100644 --- a/include/d/d_jnt_col.h +++ b/include/d/d_jnt_col.h @@ -20,6 +20,8 @@ public: /* 80036C44 */ void getHitmarkPosAndAngle(cXyz const*, csXyz const*, cXyz*, csXyz*, int) const; /* 80036FA8 */ void setArrowPosAndAngle(cXyz const*, cXyz const*, int, cXyz*, csXyz*); + bool checkPassNum(int bit) { return field_0xc & (1 << bit); } + /* 0x00 */ dJntColData_c* mData; /* 0x04 */ J3DModel* mModel; /* 0x08 */ int field_0x8; diff --git a/include/d/event/d_event.h b/include/d/event/d_event.h index 748dfb38be..b541927041 100644 --- a/include/d/event/d_event.h +++ b/include/d/event/d_event.h @@ -80,6 +80,8 @@ public: void isOrderOK(); u16 chkFlag2(u16 flag) { return flag & mFlag2; } + bool runCheck() { return field_0xe5 != 0; } + u16 chkEventFlag(u16 flag) { return flag & mEventFlag; } public: /* 0x000 */ u8 field_0x0[4]; diff --git a/include/d/event/d_event_manager.h b/include/d/event/d_event_manager.h index 45d0c24903..3e68b3a741 100644 --- a/include/d/event/d_event_manager.h +++ b/include/d/event/d_event_manager.h @@ -48,7 +48,7 @@ public: void startCheckOld(char const*); void endCheck(s16); void endCheckOld(char const*); - void getMyStaffId(char const*, fopAc_ac_c*, int); + s32 getMyStaffId(char const*, fopAc_ac_c*, int); void getIsAddvance(int); void getMyActIdx(int, char const* const*, int, int, int); void getMyNowCutName(int); diff --git a/include/d/kankyo/d_kankyo.h b/include/d/kankyo/d_kankyo.h index 4a35b1fc32..42c1e9ead2 100644 --- a/include/d/kankyo/d_kankyo.h +++ b/include/d/kankyo/d_kankyo.h @@ -114,7 +114,6 @@ struct GB_MAPLE_COL_CHANGE { class dKy_tevstr_c { public: -private: /* 0x000 */ J3DLightObj field_0x000; /* 0x074 */ J3DLightObj field_0x074[6]; /* 0x32C */ cXyz field_0x32c; @@ -124,10 +123,18 @@ private: /* 0x34C */ int field_0x34c; /* 0x350 */ int field_0x350; /* 0x354 */ int field_0x354; - /* 0x358 */ int field_0x358; - /* 0x35C */ int field_0x35c; - /* 0x360 */ int field_0x360; - /* 0x364 */ int field_0x364; + /* 0x358 */ u16 field_0x358; + /* 0x35A */ u16 field_0x35a; + /* 0x35C */ u16 field_0x35c; + /* 0x35E */ u8 field_0x35e[2]; + /* 0x360 */ u8 field_0x360; + /* 0x361 */ u8 field_0x361; + /* 0x362 */ u8 field_0x362; + /* 0x363 */ u8 field_0x363; + /* 0x364 */ u8 field_0x364; + /* 0x365 */ u8 field_0x365; + /* 0x366 */ u8 field_0x366; + /* 0x367 */ u8 field_0x367; /* 0x368 */ f32 field_0x368; /* 0x36C */ f32 field_0x36c; /* 0x370 */ f32 field_0x370; @@ -655,6 +662,6 @@ public: STATIC_ASSERT(sizeof(dScnKy_env_light_c) == 4880); -BOOL dKy_darkworld_stage_check(char const*, int); +bool dKy_darkworld_stage_check(char const*, int); #endif /* D_KANKYO_D_KANKYO_H */ diff --git a/include/d/save/d_save.h b/include/d/save/d_save.h index 96baf9dc29..91977e0be3 100644 --- a/include/d/save/d_save.h +++ b/include/d/save/d_save.h @@ -315,6 +315,10 @@ enum ItemTable { /* 0xFF */ NO_ITEM }; +enum EquipItem { + /* 0x103 */ EQUIP_SWORD = 0x103, +}; + enum CollectItem { /* 0x0 */ COLLECT_CLOTHING, /* 0x1 */ COLLECT_SWORD, @@ -915,6 +919,9 @@ class dSv_restart_c { public: void setRoom(const cXyz&, s16, s8); + s16 getStartPoint() const { return mStartPoint; } + u32 getLastMode() const { return mLastMode; } + private: /* 0x00 */ s8 mRoomNo; /* 0x01 */ u8 field_0x01[3]; @@ -999,6 +1006,8 @@ public: dSv_zone_c* getZones() { return mZone; } dSv_player_c& getPlayer() { return mSavedata.getPlayer(); } dSv_event_c& getTmp() { return mTmp; } + dSv_restart_c& getRestart() { return mRestart; } + dSv_event_c& getEvent() { return mSavedata.getEvent(); } s64 getStartTime() { return mStartTime; } s64 getSaveTotalTime() { return mSaveTotalTime; } void initDan(s8 param_0) { mDan.init(param_0); } diff --git a/include/f_op/f_op_actor.h b/include/f_op/f_op_actor.h index b709c27196..bf16d5b99a 100644 --- a/include/f_op/f_op_actor.h +++ b/include/f_op/f_op_actor.h @@ -19,7 +19,7 @@ public: void onCondition(u16); void offCondition(u16); bool checkCommandCatch(); - bool checkCommandDoor(); + BOOL checkCommandDoor(); bool checkCommandDemoAccrpt(); void setCommand(u16 command) { mCommand = command; } @@ -52,7 +52,7 @@ public: struct actor_place { cXyz mPosition; csXyz mAngle; - u8 mRoomNo; + s8 mRoomNo; }; struct actor_attention_types { @@ -88,7 +88,7 @@ public: /* 0x4E4 */ csXyz mCollisionRot; /* 0x4EC */ cXyz mScale; /* 0x4F8 */ cXyz mSpeed; - /* 0x504 */ Mtx* mCullMtx; + /* 0x504 */ MtxP mCullMtx; union { struct { /* 0x508 */ cXyz mMin; diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index ac29bdf894..92a42a42dc 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -54,6 +54,8 @@ public: static bool gndCheck(const cXyz*); static u8 mGndCheck[84]; static f32 mGroundY; + + static f32 getGroundY() { return mGroundY; } }; class fopAcM_wt_c { @@ -100,6 +102,10 @@ inline u32 fopAcM_GetParam(const void* pActor) { return fpcM_GetParam(pActor); } +inline u8 fopAcM_GetGroup(const fopAc_ac_c* p_actor) { + return p_actor->mGroup; +} + inline void fopAcM_OnStatus(fopAc_ac_c* pActor, u32 flag) { pActor->mStatus |= flag; } @@ -132,6 +138,14 @@ inline csXyz& fopAcM_GetShapeAngle_p(fopAc_ac_c* pActor) { return pActor->mCollisionRot; } +inline bool fopAcM_CheckCondition(fopAc_ac_c* p_actor, u32 flag) { + return p_actor->mCondition & flag; +} + +inline void fopAcM_OnCondition(fopAc_ac_c* p_actor, u32 flag) { + p_actor->mCondition |= flag; +} + void* fopAcM_FastCreate(s16 pProcTypeID, FastCreateReqFunc param_2, void* param_3, void* pData); void fopAcM_setStageLayer(void*); int fopAcM_setRoomLayer(void*, int); diff --git a/include/m_Do/m_Do_audio.h b/include/m_Do/m_Do_audio.h index c9f4cfaab0..aebbcd2b20 100644 --- a/include/m_Do/m_Do_audio.h +++ b/include/m_Do/m_Do_audio.h @@ -31,4 +31,8 @@ public: extern JKRSolidHeap* g_mDoAud_audioHeap; +inline void mDoAud_bgmSetSwordUsing(s32 id) { + Z2AudioMgr::getInterface()->mSeqMgr.bgmSetSwordUsing(id); +} + #endif /* M_DO_M_DO_AUDIO_H */ diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index 47c48def6c..efb15dbf7a 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -87,8 +87,10 @@ public: /* 80140DF0 */ ~mDoExt_AnmRatioPack(); /* 80140E2C */ mDoExt_AnmRatioPack(); + void setRatio(f32 ratio) { mRatio = ratio; } + private: - /* 0x0 */ float mRatio; + /* 0x0 */ f32 mRatio; /* 0x4 */ J3DAnmTransform* mAnmTransform; }; // Size = 0x8 diff --git a/include/rel/d/a/d_a_boomerang/d_a_boomerang.h b/include/rel/d/a/d_a_boomerang/d_a_boomerang.h index 6317a31575..111712b628 100644 --- a/include/rel/d/a/d_a_boomerang/d_a_boomerang.h +++ b/include/rel/d/a/d_a_boomerang/d_a_boomerang.h @@ -2,5 +2,127 @@ #define D_A_BOOMERANG_H #include "dolphin/types.h" +#include "f_op/f_op_actor.h" +#include "JSystem/J2DGraph/J2DScreen.h" +#include "d/bg/d_bg_s_acch.h" +#include "d/particle/d_particle_copoly.h" +#include "Z2AudioLib/Z2SoundObject.h" + +class daBoomerang_sight_c { +public: + /* 8049E0B8 */ void createHeap(); + /* 8049E36C */ void initialize(); + /* 8049EB64 */ void playAnime(int, int); + /* 8049EDA8 */ void initFrame(int); + /* 8049EDE8 */ void copyNumData(int); + /* 8049EEC8 */ void setSight(cXyz const*, int); + /* 8049EF60 */ void draw(); + + /* 804A278C */ virtual ~daBoomerang_sight_c(); + +private: + /* 0x04 */ J2DScreen* field_0x4; + /* 0x08 */ J2DPane* field_0x8; + /* 0x0C */ J2DPane* field_0xc; + /* 0x10 */ J2DPane* field_0x10; + /* 0x14 */ J2DPane* field_0x14; + /* 0x18 */ J2DAnmBase* field_0x18; + /* 0x1C */ J2DAnmBase* field_0x1c; + /* 0x20 */ J2DScreen* field_0x20; + /* 0x24 */ J2DPane* field_0x24; + /* 0x28 */ J2DPane* field_0x28; + /* 0x2C */ J2DPane* field_0x2c; + /* 0x30 */ J2DPane* field_0x30; + /* 0x34 */ J2DAnmBase* field_0x34; + /* 0x38 */ J2DAnmBase* field_0x38; + /* 0x3C */ J2DScreen* field_0x3c; + /* 0x40 */ J2DPane* field_0x40; + /* 0x44 */ J2DPane* field_0x44; + /* 0x48 */ J2DPane* field_0x48; + /* 0x4C */ J2DPane* field_0x4c; + /* 0x50 */ J2DAnmBase* field_0x50; + /* 0x54 */ J2DAnmBase* field_0x54; + /* 0x58 */ J2DAnmBase* field_0x58; + /* 0x5C */ J2DAnmBase* field_0x5c; + /* 0x60 */ bool mRedSight; + /* 0x61 */ u8 mReserve; + /* 0x62 */ u8 mAlpha[6]; + /* 0x68 */ f32 field_0x68[6]; + /* 0x80 */ f32 field_0x80[6]; + /* 0x98 */ f32 field_0x98[6]; + /* 0xB0 */ f32 field_0xb0[6]; + /* 0xC8 */ cXyz field_0xc8[6]; +}; // Size: 0x110 + +struct daMirror_c; +class daAlink_c; + +class daBoomerang_c : public fopAc_ac_c { +public: + enum daBoomerang_FLG0 { + /* 0x80 */ WIND_CATCH = 0x80, + }; + + /* 8049F280 */ void windModelCallBack(); + /* 8049F39C */ void draw(); + /* 8049F5F4 */ void lockLineCallback(fopAc_ac_c*); + /* 8049F660 */ void moveLineCallback(fopAc_ac_c*); + /* 8049F710 */ void pushLockList(int); + /* 8049F818 */ void cancelLockActorBase(fopAc_ac_c*); + /* 8049F874 */ void setAimActorBase(fopAc_ac_c*); + /* 8049F8B0 */ void setLockActor(fopAc_ac_c*, int); + /* 8049F9A4 */ void resetLockActor(); + /* 8049F9F0 */ void setRoomInfo(); + /* 8049FAA4 */ void setKeepMatrix(); + /* 8049FBAC */ void setMoveMatrix(); + /* 8049FCD0 */ void setRotAngle(); + /* 8049FD6C */ void setAimPos(); + /* 8049FE6C */ void checkBgHit(cXyz*, cXyz*); + /* 804A006C */ void setEffectTraceMatrix(u32*, u16); + /* 804A012C */ void setEffect(); + /* 804A0874 */ void procWait(); + /* 804A0F0C */ void procMove(); + /* 804A1814 */ void execute(); + /* 804A1BF4 */ ~daBoomerang_c(); + /* 804A1EE4 */ void createHeap(); + /* 804A2084 */ void create(); + /* 804A230C */ daBoomerang_c(); + + void onStateFlg0(daBoomerang_FLG0 flag) { mStateFlg0 |= flag; } + void onWindCatch() { onStateFlg0(WIND_CATCH); } + +private: + /* 0x568 */ daMirror_c* field_0x568; + /* 0x56C */ J3DModel* field_0x56c; + /* 0x570 */ daAlink_c* field_0x570; + /* 0x574 */ u8 field_0x574[0x1C]; + /* 0x590 */ J3DModel* field_0x590; + /* 0x594 */ void* field_0x594; + /* 0x598 */ daBoomerang_sight_c mSight; + /* 0x6A8 */ int field_0x6a8; + /* 0x6AC */ int field_0x6ac[5]; + /* 0x6C0 */ fopAc_ac_c* field_0x6c0[5]; + /* 0x6D4 */ u8 field_0x6d4[8]; + /* 0x6DC */ cXyz field_0x6dc[5]; + /* 0x718 */ u8 field_0x718[5]; + /* 0x720 */ Z2SoundObjSimple field_0x720; + /* 0x740 */ dBgS_Acch field_0x740; + /* 0x918 */ dPaPo_c field_0x918; + /* 0x950 */ u8 field_0x950; + /* 0x951 */ u8 field_0x951; + /* 0x952 */ u8 field_0x952; + /* 0x953 */ u8 field_0x953; + /* 0x954 */ u8 field_0x954; + /* 0x955 */ u8 field_0x955; + /* 0x956 */ u8 field_0x956; + /* 0x957 */ u8 field_0x957; + /* 0x958 */ s16 field_0x958; + /* 0x95A */ s16 field_0x95a; + /* 0x95C */ s16 field_0x95c; + /* 0x95E */ s16 field_0x95e; + /* 0x960 */ s16 field_0x960; + /* 0x962 */ s16 field_0x962; + /* 0x964 */ u32 mStateFlg0; +}; #endif /* D_A_BOOMERANG_H */ diff --git a/include/rel/d/a/d_a_crod/d_a_crod.h b/include/rel/d/a/d_a_crod/d_a_crod.h index c357d01fc0..4ef24817a3 100644 --- a/include/rel/d/a/d_a_crod/d_a_crod.h +++ b/include/rel/d/a/d_a_crod/d_a_crod.h @@ -1,6 +1,28 @@ #ifndef D_A_CROD_H #define D_A_CROD_H +#include "f_op/f_op_actor.h" +#include "f_op/f_op_actor_mng.h" #include "dolphin/types.h" +class daCrod_c { +public: + /* 80141A94 */ void setControllActorData(); + /* 804A2E38 */ void createHeap(); + /* 804A2F18 */ void create(); + /* 804A3304 */ ~daCrod_c(); + /* 804A34B0 */ void setRoomInfo(); + /* 804A34B4 */ void setMatrix(); + /* 804A3500 */ void posMove(); + /* 804A3580 */ void setBckAnm(u16); + /* 804A35FC */ void setReturn(); + /* 804A365C */ void setLightPower(); + /* 804A36D8 */ void execute(); + /* 804A3FD4 */ void draw(); + + static fopAc_ac_c* makeIronBallDummy(fopAc_ac_c* p_actor) { + return (fopAc_ac_c*)fopAcM_fastCreate(0x2F4, 6, &p_actor->mCurrent.mPosition, fopAcM_GetRoomNo(p_actor), NULL, NULL, -1, NULL, NULL); + } +}; + #endif /* D_A_CROD_H */ diff --git a/include/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h b/include/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h index 04447c6feb..828cd41a1a 100644 --- a/include/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h +++ b/include/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h @@ -2,5 +2,203 @@ #define D_A_OBJ_CARRY_H #include "dolphin/types.h" +#include "SSystem/SComponent/c_xyz.h" +#include "d/bg/d_bg_s_acch.h" +#include "d/cc/d_cc_d.h" + +class daObjCarry_c : public fopAc_ac_c { +public: + enum { + /* 0x0 */ TYPE_TSUBO, // Small Blue Pot + /* 0x1 */ TYPE_OOTSUBO, // Big Red Pot + /* 0x2 */ TYPE_KIBAKO, // Box + /* 0x3 */ TYPE_IRON_BALL, // Cannon Ball + /* 0x4 */ TYPE_TARU, // Barrel + /* 0x5 */ TYPE_DOKURO, // Skull + /* 0x6 */ TYPE_BOKKURI, // Deku Nut + /* 0x7 */ TYPE_TSUBO_2, // Small Red Pot + /* 0x8 */ TYPE_BALL_S, // Light Ball A + /* 0x9 */ TYPE_BALL_S_2, // Light Ball B + /* 0xA */ TYPE_AOTSUBO, // Big Blue Pot + /* 0xB */ TYPE_LV8_BALL, + /* 0xC */ TYPE_TSUBO_S, // Small pot - Twilight + /* 0xD */ TYPE_TSUBO_B, // Big pot - Twilight + }; + + /* 80031CF8 */ static void clrSaveFlag(); + /* 80031D04 */ static void setSaveFlag(); + /* 80031D10 */ void chkSaveFlag(); + /* 80031D24 */ void getPos(int); + /* 80031D38 */ void savePos(int, cXyz); + /* 80031D64 */ void onSttsFlag(int, u8); + /* 80031D78 */ void offSttsFlag(int, u8); + /* 80031D8C */ void chkSttsFlag(int, u8); + /* 80031DAC */ void setRoomNo(int, s8); + /* 80031DB8 */ void getRoomNo(int); + /* 8046F6A4 */ void data(); + /* 8046F6BC */ void getArcName(); + /* 8046F6D4 */ void getBmdName(); + /* 8046F6EC */ void checkFlag(u8); + /* 8046F724 */ void initBaseMtx(); + /* 8046F7AC */ void setBaseMtx(); + /* 8046FACC */ void preInit(); + /* 8046FB78 */ daObjCarry_c(); + /* 8046FFA4 */ void checkBreakWolfAttack(); + /* 8046FFF8 */ void checkCarryBoomerang(); + /* 80470054 */ void checkCarryHookshot(); + /* 80470080 */ void checkCarryWolf(); + /* 804700B4 */ void checkCarryOneHand(); + /* 804700F0 */ void Create(); + /* 804705DC */ void CreateInit_tsubo(); + /* 80470650 */ void CreateInit_ootubo(); + /* 80470674 */ void CreateInit_kibako(); + /* 804706D4 */ void CreateInit_ironball(); + /* 804707E0 */ void CreateInit_taru(); + /* 80470840 */ void CreateInit_dokuro(); + /* 80470890 */ void CreateInit_bokkuri(); + /* 804709DC */ void CreateInit_LightBall(); + /* 80470AB4 */ void CreateInit_Lv8Ball(); + /* 80470B5C */ void CreateHeap(); + /* 80470BF4 */ void create(); + /* 80470CF0 */ void checkCreate_LightBallA(); + /* 8047114C */ void checkCreate_LightBallB(); + /* 804715A8 */ void checkCreate_Lv8Ball(); + /* 80471680 */ void resetIconPosForLightBallA(); + /* 804716D4 */ void setIconPosForLightBallAAtR00(); + /* 804717B4 */ void setIconPosForLightBallBAtR00(); + /* 80471894 */ void resetIconPosForLightBallB(); + /* 804718E8 */ void execute(); + /* 8047233C */ void checkCulling(); + /* 80472460 */ void draw(); + /* 80472730 */ void debugDraw(); + /* 80472734 */ void _delete(); + /* 80472B54 */ void crr_pos(); + /* 80472D8C */ void check_sink(f32*); + /* 80472E5C */ void calc_gravity(); + /* 80472EF0 */ void checkRollAngle(); + /* 80473050 */ void mode_proc_call(); + /* 804733E8 */ void mode_init_wait(); + /* 804734B0 */ void mode_proc_wait(); + /* 80473718 */ void mode_init_walk(u8); + /* 804737CC */ void mode_proc_walk(); + /* 80473ED8 */ void mode_init_carry(); + /* 804741A8 */ void mode_proc_carry(); + /* 80474448 */ void mode_init_drop(u8); + /* 80474540 */ void mode_proc_drop(); + /* 80474618 */ void mode_init_float(); + /* 80474734 */ void mode_proc_float(); + /* 80474A08 */ void mode_init_sink(); + /* 80474B8C */ void mode_proc_sink(); + /* 80474D64 */ void mode_init_yogan(); + /* 80474E08 */ void mode_proc_yogan(); + /* 80474E98 */ bool mode_proc_magne(); + /* 80474EA0 */ bool mode_proc_magneCarry(); + /* 80474EA8 */ void mode_init_boomCarry(); + /* 80474FA8 */ void mode_proc_boomCarry(); + /* 80475014 */ void mode_init_growth(); + /* 804750C8 */ void mode_proc_growth(); + /* 8047515C */ bool mode_proc_end(); + /* 80475164 */ void mode_init_dbDrop(u8); + /* 80475210 */ void mode_proc_dbDrop(); + /* 80475238 */ void mode_init_hookCarry(); + /* 80475354 */ void mode_proc_hookCarry(); + /* 80475384 */ void mode_init_fit(); + /* 80475450 */ void mode_proc_fit(); + /* 80475478 */ void mode_proc_controled(); + /* 804754D0 */ void mode_init_resetLightBall(); + /* 80475598 */ void mode_proc_resetLightBall(); + /* 80475618 */ void chkSinkAll(); + /* 8047567C */ void chkWaterLineIn(); + /* 804756D4 */ void chkSinkObj(); + /* 8047573C */ void bg_check(); + /* 80476618 */ void check_bg_damage_proc_base(); + /* 80476764 */ void bg_damage_proc_kotubo(); + /* 804767C4 */ void bg_damage_proc_ootubo(); + /* 804767E4 */ void bg_damage_proc_kibako(); + /* 80476804 */ bool bg_damage_proc_ironball(); + /* 8047680C */ void bg_damage_proc_taru(); + /* 8047682C */ void bg_damage_proc_dokuro(); + /* 8047684C */ void bg_damage_proc_bokkuri(); + /* 80476930 */ bool bg_damage_proc_LightBall(); + /* 80476938 */ bool bg_damage_proc_Lv8Ball(); + /* 80476940 */ void obj_break(bool, bool, bool); + /* 80476A5C */ void check_cc_damage_proc_base(bool); + /* 80476B04 */ void cc_damage_proc_kotubo(); + /* 80476B68 */ void cc_damage_proc_ootubo(); + /* 80476B88 */ void cc_damage_proc_kibako(); + /* 80476CE4 */ void cc_damage_proc_ironball(); + /* 80476E04 */ void cc_damage_proc_taru(); + /* 80476F88 */ void cc_damage_proc_dokuro(); + /* 80476FA8 */ void cc_damage_proc_bokkuri(); + /* 804771B0 */ bool cc_damage_proc_LightBall(); + /* 804771B8 */ bool cc_damage_proc_Lv8Ball(); + /* 804771C0 */ void eff_break_tuboBmd(u16, cXyz); + /* 8047731C */ void eff_break_kibakoBmd(cXyz); + /* 8047747C */ void eff_break_tsubo(); + /* 804774D4 */ void eff_break_ootubo(); + /* 8047752C */ void eff_break_kibako(); + /* 80477574 */ void eff_break_ironball(); + /* 80477578 */ void eff_break_taru(); + /* 804775BC */ void eff_break_dokuro(); + /* 80477614 */ void eff_break_bokkuri(); + /* 80477798 */ void eff_break_kotubo2(); + /* 804777F0 */ void eff_break_LightBall(); + /* 804777F4 */ void eff_break_ootubo2(); + /* 8047784C */ void eff_break_Lv8Ball(); + /* 80477850 */ void eff_break_tsuboL8(); + /* 804778A8 */ void eff_break_ootuboL8(); + /* 80477900 */ void se_break(cBgS_PolyInfo*); + /* 80477990 */ void se_put(cBgS_PolyInfo*); + /* 80477A14 */ void se_put_water(); + /* 80477A98 */ void se_fall_water(); + /* 80477B1C */ void calc_rot_axis_base(u8); + /* 80477FE0 */ void calc_rot_axis_tsubo(); + /* 80478004 */ void calc_rot_axis_ootubo(); + /* 80478028 */ void calc_rot_axis_kibako(); + /* 8047814C */ void calc_rot_axis_ironball(); + /* 80478170 */ void calc_rot_axis_taru(); + /* 80478190 */ void calc_rot_axis_dokuro(); + /* 804781B4 */ void calc_rot_axis_bokkuri(); + /* 804783C0 */ void calc_rot_axis_kotubo2(); + /* 804783E4 */ void calc_rot_axis_LightBall(); + /* 80478408 */ void calc_rot_axis_Lv8Ball(); + /* 8047842C */ void set_wind_power(); + /* 80478808 */ void exec_proc_tsubo(); + /* 80478828 */ void exec_proc_ootubo(); + /* 80478848 */ void exec_proc_kibako(); + /* 8047884C */ void exec_proc_ironball(); + /* 804788C4 */ void exec_proc_taru(); + /* 804788C8 */ void exec_proc_dokuro(); + /* 804788CC */ void exec_proc_bokkuri(); + /* 80478C18 */ void exec_proc_LightBall(); + /* 80478CE4 */ void exec_proc_Lv8Ball(); + /* 80478D78 */ void bg_damage_proc_call(); + /* 80478F50 */ void cc_damage_proc_call(); + /* 80479128 */ void eff_break_call(); + /* 804792D4 */ void calc_rot_call(); + /* 80479480 */ void obj_execute_proc_call(); + /* 8047962C */ void setTgHitCallBack(); + /* 80479648 */ void setCoHitCallBack(); + /* 80479664 */ void CreateInitCall(); + + s32 getType() { return mType; } + + static u8 const mData[2072]; + +private: + /* 0x568 */ u8 field_0x568[8]; + /* 0x570 */ J3DModel* field_0x570; + /* 0x574 */ dBgS_Acch field_0x574; + /* 0x74C */ dBgS_AcchCir field_0x74c; + /* 0x78C */ dCcD_Stts field_0x78c; + /* 0x7C8 */ dCcD_Cyl field_0x7c8; + /* 0x904 */ dCcD_Sph field_0x904; + /* 0xA3C */ dCcD_Cps field_0xa3c; + /* 0xB80 */ dCcD_Cyl field_0xb80; + /* 0xCBC */ u8 field_0xcbc[0x34]; + /* 0xCF0 */ u8 mType; + /* 0xCF4 */ cXyz field_0xcf4; + /* 0xD00 */ +}; #endif /* D_A_OBJ_CARRY_H */ diff --git a/include/rel/d/a/tag/d_a_tag_mmsg/d_a_tag_mmsg.h b/include/rel/d/a/tag/d_a_tag_mmsg/d_a_tag_mmsg.h index 940e95c355..08fe8b32b9 100644 --- a/include/rel/d/a/tag/d_a_tag_mmsg/d_a_tag_mmsg.h +++ b/include/rel/d/a/tag/d_a_tag_mmsg/d_a_tag_mmsg.h @@ -1,6 +1,28 @@ #ifndef D_A_TAG_MMSG_H #define D_A_TAG_MMSG_H +#include "d/a/d_a_player.h" #include "dolphin/types.h" +class daTagMmsg_c : public fopAc_ac_c { +public: + /* 80D5B918 */ void create(); + /* 80D5BAB4 */ ~daTagMmsg_c(); + /* 80D5BB30 */ void execute(); + + void onUseFlg() { mUseFlg = true; } + +private: + /* 0x568 */ u8 field_0x568; + /* 0x569 */ u8 field_0x569; + /* 0x56A */ u8 mAttention; + /* 0x56B */ u8 field_0x56b; + /* 0x56C */ bool mUseFlg; + /* 0x56D */ u8 field_0x56d[3]; + /* 0x570 */ u16 field_0x570; + /* 0x572 */ u16 field_0x572; + /* 0x574 */ f32 field_0x574; + /* 0x578 */ f32 field_0x578; +}; + #endif /* D_A_TAG_MMSG_H */ diff --git a/libs/Z2AudioLib/Z2LinkMgr.cpp b/libs/Z2AudioLib/Z2LinkMgr.cpp index b65cfd2804..08c33a6589 100644 --- a/libs/Z2AudioLib/Z2LinkMgr.cpp +++ b/libs/Z2AudioLib/Z2LinkMgr.cpp @@ -167,7 +167,6 @@ extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */]; extern "C" extern void* __vt__14Z2SoundStarter[5 + 1 /* padding */]; extern "C" extern void* __vt__16Z2SoundObjSimple[8]; extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u32 __float_nan; extern "C" extern u8 data_80450B40[4]; extern "C" extern u8 data_80450B44[4]; extern "C" extern u8 data_80450B48[4]; diff --git a/rel/d/a/d_a_boomerang/d_a_boomerang.cpp b/rel/d/a/d_a_boomerang/d_a_boomerang.cpp index 4819b54c46..0a7ca0e6f1 100644 --- a/rel/d/a/d_a_boomerang/d_a_boomerang.cpp +++ b/rel/d/a/d_a_boomerang/d_a_boomerang.cpp @@ -11,21 +11,6 @@ // Types: // -struct csXyz { - /* 802673F4 */ csXyz(s16, s16, s16); -}; - -struct Vec {}; - -struct cXyz { - /* 80266B34 */ void operator-(Vec const&) const; - /* 80266C18 */ void operator/(f32) const; - /* 80267128 */ void atan2sX_Z() const; - /* 80267150 */ void atan2sY_XZ() const; - /* 8049EE8C */ ~cXyz(); - /* 804A27FC */ cXyz(); -}; - struct mDoMtx_stack_c { /* 8000CD64 */ void transS(cXyz const&); /* 8000CD9C */ void transM(f32, f32, f32); @@ -34,77 +19,10 @@ struct mDoMtx_stack_c { static u8 now[48]; }; -struct J3DModelData {}; - -struct J3DAnmTransform {}; - -struct mDoExt_bckAnm { - /* 8000D7DC */ void init(J3DAnmTransform*, int, int, f32, s16, s16, bool); - /* 8000D9CC */ void entry(J3DModelData*, f32); -}; - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); - /* 80018C8C */ ~fopAc_ac_c(); -}; - -struct fopAcM_wt_c { - /* 8001DD84 */ void waterCheck(cXyz const*); - - static f32 mWaterY[1 + 1 /* padding */]; -}; - -struct fopAcM_rc_c { - /* 8001DD1C */ void roofCheck(cXyz const*); - - static u8 mRoofCheck[80]; - static f32 mRoofY; -}; - -struct J3DModel {}; - struct daMirror_c { /* 8003194C */ void entry(J3DModel*); }; -struct daBoomerang_sight_c { - /* 8049E0B8 */ void createHeap(); - /* 8049E36C */ void initialize(); - /* 8049EB64 */ void playAnime(int, int); - /* 8049EDA8 */ void initFrame(int); - /* 8049EDE8 */ void copyNumData(int); - /* 8049EEC8 */ void setSight(cXyz const*, int); - /* 8049EF60 */ void draw(); - /* 804A278C */ ~daBoomerang_sight_c(); -}; - -struct daBoomerang_c { - /* 8049F280 */ void windModelCallBack(); - /* 8049F39C */ void draw(); - /* 8049F5F4 */ void lockLineCallback(fopAc_ac_c*); - /* 8049F660 */ void moveLineCallback(fopAc_ac_c*); - /* 8049F710 */ void pushLockList(int); - /* 8049F818 */ void cancelLockActorBase(fopAc_ac_c*); - /* 8049F874 */ void setAimActorBase(fopAc_ac_c*); - /* 8049F8B0 */ void setLockActor(fopAc_ac_c*, int); - /* 8049F9A4 */ void resetLockActor(); - /* 8049F9F0 */ void setRoomInfo(); - /* 8049FAA4 */ void setKeepMatrix(); - /* 8049FBAC */ void setMoveMatrix(); - /* 8049FCD0 */ void setRotAngle(); - /* 8049FD6C */ void setAimPos(); - /* 8049FE6C */ void checkBgHit(cXyz*, cXyz*); - /* 804A006C */ void setEffectTraceMatrix(u32*, u16); - /* 804A012C */ void setEffect(); - /* 804A0874 */ void procWait(); - /* 804A0F0C */ void procMove(); - /* 804A1814 */ void execute(); - /* 804A1BF4 */ ~daBoomerang_c(); - /* 804A1EE4 */ void createHeap(); - /* 804A2084 */ void create(); - /* 804A230C */ daBoomerang_c(); -}; - struct daBoomerang_HIO_c0 { static u16 const m_lockWaitTime; static f32 const m_minCircleR; @@ -114,8 +32,6 @@ struct daBoomerang_HIO_c0 { static f32 const m_lockWindScale; }; -struct J3DAnmBase {}; - struct daAlink_c { /* 8009D884 */ void getAlinkArcName(); /* 800A9248 */ void simpleAnmPlay(J3DAnmBase*); @@ -129,24 +45,8 @@ struct daAlink_c { /* 800E08C4 */ void returnBoomerang(int); }; -struct dKy_tevstr_c {}; - -struct dScnKy_env_light_c { - /* 801A37C4 */ void settingTevStruct(int, cXyz*, dKy_tevstr_c*); - /* 801A4DA0 */ void setLightTevColorType_MAJI(J3DModelData*, dKy_tevstr_c*); -}; - -struct dRes_info_c {}; - -struct dRes_control_c { - /* 8003C1E4 */ void getResInfo(char const*, dRes_info_c*, int); - /* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int); -}; - struct dPa_levelEcallBack {}; -struct _GXColor {}; - struct dPa_control_c { struct level_c { /* 8004B918 */ void getEmitter(u32); @@ -157,8 +57,6 @@ struct dPa_control_c { _GXColor const*, cXyz const*, f32); }; -struct cBgS_PolyInfo {}; - struct dBgS { /* 80074BE8 */ void GetPolyColor(cBgS_PolyInfo const&); /* 80074DAC */ void GetUnderwaterRoofCode(cBgS_PolyInfo const&); @@ -166,29 +64,6 @@ struct dBgS { /* 80075100 */ void GetRoomId(cBgS_PolyInfo const&); }; -struct dBgS_AcchCir {}; - -struct dBgS_Acch { - /* 80075F94 */ ~dBgS_Acch(); - /* 800760A0 */ dBgS_Acch(); - /* 80076288 */ void Set(fopAc_ac_c*, int, dBgS_AcchCir*); - /* 80076AAC */ void CrrPos(dBgS&); -}; - -struct dPaPo_c { - /* 80050C9C */ void init(dBgS_Acch*, f32, f32); - /* 80051008 */ void setEffectCenter(dKy_tevstr_c const*, cXyz const*, u32, u32, cXyz const*, - csXyz const*, cXyz const*, s8, f32, f32); -}; - -struct dDlst_base_c { - /* 804A2718 */ void draw(); -}; - -struct dDlst_list_c { - /* 80056794 */ void set(dDlst_base_c**&, dDlst_base_c**&, dDlst_base_c*); -}; - struct cCcD_Obj {}; struct dCcMassS_Mng { @@ -223,47 +98,6 @@ struct dCcD_Cps { /* 80084824 */ void CalcAtVec(); }; -struct dBgS_PolyPassChk { - /* 80078E68 */ void SetObj(); -}; - -struct dBgS_ObjLinChk { - /* 80077F5C */ dBgS_ObjLinChk(); - /* 80077FB8 */ ~dBgS_ObjLinChk(); -}; - -struct dBgS_ObjGndChk { - /* 804A2524 */ ~dBgS_ObjGndChk(); -}; - -struct dBgS_ObjAcch { - /* 804A2688 */ ~dBgS_ObjAcch(); -}; - -struct dBgS_LinChk { - /* 80077D64 */ void Set(cXyz const*, cXyz const*, fopAc_ac_c const*); -}; - -struct dBgS_GndChk { - /* 8007757C */ dBgS_GndChk(); - /* 800775F0 */ ~dBgS_GndChk(); -}; - -struct dBgS_BoomerangLinChk { - /* 800782B8 */ dBgS_BoomerangLinChk(); - /* 80078314 */ ~dBgS_BoomerangLinChk(); -}; - -struct cM3dGPla { - /* 804A082C */ ~cM3dGPla(); -}; - -struct cM3dGCyl { - /* 8026F1DC */ void SetC(cXyz const&); - /* 8026F1F8 */ void SetH(f32); - /* 804A259C */ ~cM3dGCyl(); -}; - struct cM3dGCps { /* 8026EF88 */ cM3dGCps(); /* 8026EFA4 */ ~cM3dGCps(); @@ -282,29 +116,12 @@ struct cCcD_GStts { /* 804A271C */ ~cCcD_GStts(); }; -struct cBgS_LinChk {}; - -struct cBgS_GndChk { - /* 80267D28 */ void SetPos(cXyz const*); -}; - struct cBgS { /* 800743B4 */ void LineCross(cBgS_LinChk*); /* 800744A0 */ void GroundCross(cBgS_GndChk*); /* 80074744 */ void GetTriPla(cBgS_PolyInfo const&, cM3dGPla*) const; }; -struct Z2SoundObjSimple { - /* 802BE844 */ Z2SoundObjSimple(); -}; - -struct Z2SoundObjBase { - /* 802BDF48 */ ~Z2SoundObjBase(); - /* 802BDFF8 */ void deleteObject(); -}; - -struct JAISoundID {}; - struct Z2SeMgr { /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8); }; @@ -317,51 +134,11 @@ struct JMath { static u8 sincosTable_[65536]; }; -struct JKRFileLoader { - /* 802D4270 */ void getGlbResource(char const*, JKRFileLoader*); -}; - -struct JKRArchive {}; - -struct JGeometry { - template - struct TVec3 {}; - /* TVec3 */ - struct TVec3__template0 {}; -}; - -struct J3DSys { - static u8 mCurrentMtx[48]; -}; - -struct J3DAnmTextureSRTKey { - /* 8032B1D4 */ void searchUpdateMaterialID(J3DModelData*); -}; - -struct J3DMaterialTable { - /* 8032FCC4 */ void entryTexMtxAnimator(J3DAnmTextureSRTKey*); -}; - -struct J3DJoint {}; - -struct J3DFrameCtrl { - /* 803283FC */ void init(s16); - /* 804A2800 */ ~J3DFrameCtrl(); -}; - -struct J2DGrafContext {}; - -struct J2DScreen { - /* 802F8498 */ J2DScreen(); - /* 802F8648 */ void setPriority(char const*, u32, JKRArchive*); - /* 802F8ED4 */ void draw(f32, f32, J2DGrafContext const*); - /* 802F9690 */ void animation(); -}; - struct J2DAnmLoaderDataBase { /* 80308A6C */ void load(void const*); }; + // // Forward References: // @@ -547,11 +324,6 @@ extern "C" void load__20J2DAnmLoaderDataBaseFPCv(); extern "C" void init__12J3DFrameCtrlFs(); extern "C" void searchUpdateMaterialID__19J3DAnmTextureSRTKeyFP12J3DModelData(); extern "C" void entryTexMtxAnimator__16J3DMaterialTableFP19J3DAnmTextureSRTKey(); -extern "C" void PSMTXCopy(); -extern "C" void PSMTXConcat(); -extern "C" void PSVECSquareMag(); -extern "C" void PSVECDotProduct(); -extern "C" void PSVECSquareDistance(); extern "C" void __destroy_arr(); extern "C" void __construct_array(); extern "C" void __ptmf_scall(); @@ -585,13 +357,10 @@ extern "C" u8 now__14mDoMtx_stack_c[48]; extern "C" u8 mRoofCheck__11fopAcM_rc_c[80]; extern "C" extern u8 g_dComIfG_gameInfo[122384]; extern "C" extern u8 g_env_light[4880]; -extern "C" extern u8 j3dSys[284]; extern "C" u8 mCurrentMtx__6J3DSys[48]; extern "C" u8 sincosTable___5JMath[65536]; -extern "C" extern u32 __float_nan; extern "C" f32 mRoofY__11fopAcM_rc_c; extern "C" f32 mWaterY__11fopAcM_wt_c[1 + 1 /* padding */]; -extern "C" extern u8 struct_80450D64[4]; extern "C" extern u8 struct_8045101C[4]; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; @@ -831,7 +600,8 @@ asm void daBoomerang_sight_c::copyNumData(int param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cXyz::~cXyz() { +// asm cXyz::~cXyz() { +extern "C" asm void __dt__4cXyzFv() { nofralloc #include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/__dt__4cXyzFv.s" } @@ -1600,7 +1370,8 @@ asm void daBoomerang_c::setEffect() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGPla::~cM3dGPla() { +// asm cM3dGPla::~cM3dGPla() { +extern "C" asm void __dt__8cM3dGPlaFv() { nofralloc #include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/__dt__8cM3dGPlaFv.s" } @@ -1813,7 +1584,8 @@ asm daBoomerang_c::daBoomerang_c() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dBgS_ObjGndChk::~dBgS_ObjGndChk() { +// asm dBgS_ObjGndChk::~dBgS_ObjGndChk() { +extern "C" asm void __dt__14dBgS_ObjGndChkFv() { nofralloc #include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/__dt__14dBgS_ObjGndChkFv.s" } @@ -1823,7 +1595,8 @@ asm dBgS_ObjGndChk::~dBgS_ObjGndChk() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGCyl::~cM3dGCyl() { +// asm cM3dGCyl::~cM3dGCyl() { +extern "C" asm void __dt__8cM3dGCylFv() { nofralloc #include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/__dt__8cM3dGCylFv.s" } @@ -1853,7 +1626,8 @@ asm dCcD_GStts::~dCcD_GStts() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dBgS_ObjAcch::~dBgS_ObjAcch() { +// asm dBgS_ObjAcch::~dBgS_ObjAcch() { +extern "C" asm void __dt__12dBgS_ObjAcchFv() { nofralloc #include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/__dt__12dBgS_ObjAcchFv.s" } @@ -1871,7 +1645,7 @@ static asm void daBoomerang_Create(fopAc_ac_c* param_0) { #pragma pop /* 804A2718-804A271C 0046D8 0004+00 1/0 0/0 0/0 .text draw__12dDlst_base_cFv */ -void dDlst_base_c::draw() { +void draw__12dDlst_base_cFv() { /* empty function */ } @@ -1939,14 +1713,15 @@ static asm void func_804A2784() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm daBoomerang_sight_c::~daBoomerang_sight_c() { +// asm daBoomerang_sight_c::~daBoomerang_sight_c() { +extern "C" asm void __dt__19daBoomerang_sight_cFv() { nofralloc #include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/__dt__19daBoomerang_sight_cFv.s" } #pragma pop /* 804A27FC-804A2800 0047BC 0004+00 1/1 0/0 0/0 .text __ct__4cXyzFv */ -cXyz::cXyz() { +extern "C" void __ct__4cXyzFv() { /* empty function */ } @@ -1954,7 +1729,8 @@ cXyz::cXyz() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DFrameCtrl::~J3DFrameCtrl() { +// asm J3DFrameCtrl::~J3DFrameCtrl() { +extern "C" asm void __dt__12J3DFrameCtrlFv() { nofralloc #include "asm/rel/d/a/d_a_boomerang/d_a_boomerang/__dt__12J3DFrameCtrlFv.s" } diff --git a/rel/d/a/d_a_crod/d_a_crod.cpp b/rel/d/a/d_a_crod/d_a_crod.cpp index 1297281f70..149ae46ce8 100644 --- a/rel/d/a/d_a_crod/d_a_crod.cpp +++ b/rel/d/a/d_a_crod/d_a_crod.cpp @@ -11,15 +11,6 @@ // Types: // -struct csXyz {}; - -struct Vec {}; - -struct cXyz { - /* 80266B34 */ void operator-(Vec const&) const; - /* 80267128 */ void atan2sX_Z() const; -}; - struct mDoMtx_stack_c { /* 8000CD64 */ void transS(cXyz const&); /* 8000CF44 */ void ZXYrotM(csXyz const&); @@ -27,45 +18,11 @@ struct mDoMtx_stack_c { static u8 now[48]; }; -struct J3DModelData {}; - -struct J3DAnmTransform {}; - -struct mDoExt_bckAnm { - /* 8000D7DC */ void init(J3DAnmTransform*, int, int, f32, s16, s16, bool); - /* 8000D9CC */ void entry(J3DModelData*, f32); -}; - -struct mDoExt_baseAnm { - /* 8000D428 */ void play(); -}; - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); - /* 80018C8C */ ~fopAc_ac_c(); -}; - struct daPy_actorKeep_c { /* 8015ECB8 */ void setData(fopAc_ac_c*); /* 8015ECFC */ void clearData(); }; -struct daCrod_c { - /* 804A2E38 */ void createHeap(); - /* 804A2F18 */ void create(); - /* 804A3304 */ ~daCrod_c(); - /* 804A34B0 */ void setRoomInfo(); - /* 804A34B4 */ void setMatrix(); - /* 804A3500 */ void posMove(); - /* 804A3580 */ void setBckAnm(u16); - /* 804A35FC */ void setReturn(); - /* 804A365C */ void setLightPower(); - /* 804A36D8 */ void execute(); - /* 804A3FD4 */ void draw(); -}; - -struct J3DAnmBase {}; - struct daAlink_c { /* 8009D884 */ void getAlinkArcName(); /* 800A9248 */ void simpleAnmPlay(J3DAnmBase*); @@ -74,13 +31,6 @@ struct daAlink_c { /* 800E1A30 */ void returnCopyRod(); }; -struct dKy_tevstr_c {}; - -struct dScnKy_env_light_c { - /* 801A37C4 */ void settingTevStruct(int, cXyz*, dKy_tevstr_c*); - /* 801A4DA0 */ void setLightTevColorType_MAJI(J3DModelData*, dKy_tevstr_c*); -}; - struct dRes_info_c {}; struct dRes_control_c { @@ -147,32 +97,10 @@ struct Z2AudioMgr { static u8 mAudioMgrPtr[4 + 4 /* padding */]; }; -struct LIGHT_INFLUENCE {}; - struct JMath { static u8 sincosTable_[65536]; }; -struct J3DModel {}; - -struct J3DAnmTextureSRTKey { - /* 8032B1D4 */ void searchUpdateMaterialID(J3DModelData*); -}; - -struct J3DAnmTevRegKey { - /* 8032B87C */ void searchUpdateMaterialID(J3DModelData*); -}; - -struct J3DMaterialTable { - /* 8032FCC4 */ void entryTexMtxAnimator(J3DAnmTextureSRTKey*); - /* 8032FE70 */ void entryTevRegAnimator(J3DAnmTevRegKey*); -}; - -struct J3DFrameCtrl { - /* 803283FC */ void init(s16); - /* 804A329C */ ~J3DFrameCtrl(); -}; - // // Forward References: // @@ -251,11 +179,6 @@ extern "C" void searchUpdateMaterialID__19J3DAnmTextureSRTKeyFP12J3DModelData(); extern "C" void searchUpdateMaterialID__15J3DAnmTevRegKeyFP12J3DModelData(); extern "C" void entryTexMtxAnimator__16J3DMaterialTableFP19J3DAnmTextureSRTKey(); extern "C" void entryTevRegAnimator__16J3DMaterialTableFP15J3DAnmTevRegKey(); -extern "C" void PSMTXCopy(); -extern "C" void PSMTXMultVec(); -extern "C" void PSVECAdd(); -extern "C" void PSVECSquareMag(); -extern "C" void PSVECSquareDistance(); extern "C" void _savegpr_27(); extern "C" void _savegpr_29(); extern "C" void _restgpr_27(); @@ -271,7 +194,6 @@ extern "C" u8 now__14mDoMtx_stack_c[48]; extern "C" extern u8 g_dComIfG_gameInfo[122384]; extern "C" extern u8 g_env_light[4880]; extern "C" u8 sincosTable___5JMath[65536]; -extern "C" extern u32 __float_nan; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; extern "C" extern u8 data_804A4218[4]; @@ -416,7 +338,8 @@ asm dCcD_GStts::~dCcD_GStts() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DFrameCtrl::~J3DFrameCtrl() { +// asm J3DFrameCtrl::~J3DFrameCtrl() { +extern "C" asm void __dt__12J3DFrameCtrlFv() { nofralloc #include "asm/rel/d/a/d_a_crod/d_a_crod/__dt__12J3DFrameCtrlFv.s" } diff --git a/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.cpp b/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.cpp index 86c07b80e7..7e416ddff6 100644 --- a/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.cpp +++ b/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.cpp @@ -11,14 +11,6 @@ // Types: // -struct request_of_phase_process_class {}; - -struct csXyz { - /* 802673F4 */ csXyz(s16, s16, s16); -}; - -struct Quaternion {}; - struct mDoMtx_stack_c { /* 8000CD9C */ void transM(f32, f32, f32); /* 8000CF44 */ void ZXYrotM(csXyz const&); @@ -27,211 +19,6 @@ struct mDoMtx_stack_c { static u8 now[48]; }; -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); -}; - -struct Vec {}; - -struct cXyz { - /* 80266B34 */ void operator-(Vec const&) const; - /* 80266B84 */ void operator*(f32) const; - /* 80266F48 */ void normalizeZP(); - /* 80266FDC */ void normalizeRS(); - /* 8026706C */ bool operator!=(Vec const&) const; - /* 802670AC */ void isZero() const; - - static f32 Zero[3]; - static u8 BaseX[12]; -}; - -struct fopAcM_lc_c { - /* 8001DC68 */ void lineCheck(cXyz const*, cXyz const*, fopAc_ac_c const*); -}; - -struct fopAcM_gc_c { - /* 8001DCBC */ void gndCheck(cXyz const*); - - static u8 mGndCheck[84]; - static f32 mGroundY; -}; - -struct daPy_py_c { - /* 8015F60C */ void wolfGrabSubjectNoDraw(fopAc_ac_c*); - /* 8015F698 */ void checkCarryStartLightBallA(); - /* 8015F730 */ void checkCarryStartLightBallB(); -}; - -struct daPy_boomerangMove_c { - /* 8015E5B0 */ void initOffset(cXyz const*); - /* 8015E654 */ void posMove(cXyz*, s16*, fopAc_ac_c*, s16); - /* 8015E87C */ void bgCheckAfterOffset(cXyz const*); -}; - -struct cBgS_PolyInfo { - /* 802680B0 */ ~cBgS_PolyInfo(); -}; - -struct daObjCarry_c { - /* 80031D10 */ void chkSaveFlag(); - /* 80031D24 */ void getPos(int); - /* 80031D38 */ void savePos(int, cXyz); - /* 80031D64 */ void onSttsFlag(int, u8); - /* 80031D78 */ void offSttsFlag(int, u8); - /* 80031D8C */ void chkSttsFlag(int, u8); - /* 80031DAC */ void setRoomNo(int, s8); - /* 80031DB8 */ void getRoomNo(int); - /* 8046F6A4 */ void data(); - /* 8046F6BC */ void getArcName(); - /* 8046F6D4 */ void getBmdName(); - /* 8046F6EC */ void checkFlag(u8); - /* 8046F724 */ void initBaseMtx(); - /* 8046F7AC */ void setBaseMtx(); - /* 8046FACC */ void preInit(); - /* 8046FB78 */ daObjCarry_c(); - /* 8046FFA4 */ void checkBreakWolfAttack(); - /* 8046FFF8 */ void checkCarryBoomerang(); - /* 80470054 */ void checkCarryHookshot(); - /* 80470080 */ void checkCarryWolf(); - /* 804700B4 */ void checkCarryOneHand(); - /* 804700F0 */ void Create(); - /* 804705DC */ void CreateInit_tsubo(); - /* 80470650 */ void CreateInit_ootubo(); - /* 80470674 */ void CreateInit_kibako(); - /* 804706D4 */ void CreateInit_ironball(); - /* 804707E0 */ void CreateInit_taru(); - /* 80470840 */ void CreateInit_dokuro(); - /* 80470890 */ void CreateInit_bokkuri(); - /* 804709DC */ void CreateInit_LightBall(); - /* 80470AB4 */ void CreateInit_Lv8Ball(); - /* 80470B5C */ void CreateHeap(); - /* 80470BF4 */ void create(); - /* 80470CF0 */ void checkCreate_LightBallA(); - /* 8047114C */ void checkCreate_LightBallB(); - /* 804715A8 */ void checkCreate_Lv8Ball(); - /* 80471680 */ void resetIconPosForLightBallA(); - /* 804716D4 */ void setIconPosForLightBallAAtR00(); - /* 804717B4 */ void setIconPosForLightBallBAtR00(); - /* 80471894 */ void resetIconPosForLightBallB(); - /* 804718E8 */ void execute(); - /* 8047233C */ void checkCulling(); - /* 80472460 */ void draw(); - /* 80472730 */ void debugDraw(); - /* 80472734 */ void _delete(); - /* 80472B54 */ void crr_pos(); - /* 80472D8C */ void check_sink(f32*); - /* 80472E5C */ void calc_gravity(); - /* 80472EF0 */ void checkRollAngle(); - /* 80473050 */ void mode_proc_call(); - /* 804733E8 */ void mode_init_wait(); - /* 804734B0 */ void mode_proc_wait(); - /* 80473718 */ void mode_init_walk(u8); - /* 804737CC */ void mode_proc_walk(); - /* 80473ED8 */ void mode_init_carry(); - /* 804741A8 */ void mode_proc_carry(); - /* 80474448 */ void mode_init_drop(u8); - /* 80474540 */ void mode_proc_drop(); - /* 80474618 */ void mode_init_float(); - /* 80474734 */ void mode_proc_float(); - /* 80474A08 */ void mode_init_sink(); - /* 80474B8C */ void mode_proc_sink(); - /* 80474D64 */ void mode_init_yogan(); - /* 80474E08 */ void mode_proc_yogan(); - /* 80474E98 */ bool mode_proc_magne(); - /* 80474EA0 */ bool mode_proc_magneCarry(); - /* 80474EA8 */ void mode_init_boomCarry(); - /* 80474FA8 */ void mode_proc_boomCarry(); - /* 80475014 */ void mode_init_growth(); - /* 804750C8 */ void mode_proc_growth(); - /* 8047515C */ bool mode_proc_end(); - /* 80475164 */ void mode_init_dbDrop(u8); - /* 80475210 */ void mode_proc_dbDrop(); - /* 80475238 */ void mode_init_hookCarry(); - /* 80475354 */ void mode_proc_hookCarry(); - /* 80475384 */ void mode_init_fit(); - /* 80475450 */ void mode_proc_fit(); - /* 80475478 */ void mode_proc_controled(); - /* 804754D0 */ void mode_init_resetLightBall(); - /* 80475598 */ void mode_proc_resetLightBall(); - /* 80475618 */ void chkSinkAll(); - /* 8047567C */ void chkWaterLineIn(); - /* 804756D4 */ void chkSinkObj(); - /* 8047573C */ void bg_check(); - /* 80476618 */ void check_bg_damage_proc_base(); - /* 80476764 */ void bg_damage_proc_kotubo(); - /* 804767C4 */ void bg_damage_proc_ootubo(); - /* 804767E4 */ void bg_damage_proc_kibako(); - /* 80476804 */ bool bg_damage_proc_ironball(); - /* 8047680C */ void bg_damage_proc_taru(); - /* 8047682C */ void bg_damage_proc_dokuro(); - /* 8047684C */ void bg_damage_proc_bokkuri(); - /* 80476930 */ bool bg_damage_proc_LightBall(); - /* 80476938 */ bool bg_damage_proc_Lv8Ball(); - /* 80476940 */ void obj_break(bool, bool, bool); - /* 80476A5C */ void check_cc_damage_proc_base(bool); - /* 80476B04 */ void cc_damage_proc_kotubo(); - /* 80476B68 */ void cc_damage_proc_ootubo(); - /* 80476B88 */ void cc_damage_proc_kibako(); - /* 80476CE4 */ void cc_damage_proc_ironball(); - /* 80476E04 */ void cc_damage_proc_taru(); - /* 80476F88 */ void cc_damage_proc_dokuro(); - /* 80476FA8 */ void cc_damage_proc_bokkuri(); - /* 804771B0 */ bool cc_damage_proc_LightBall(); - /* 804771B8 */ bool cc_damage_proc_Lv8Ball(); - /* 804771C0 */ void eff_break_tuboBmd(u16, cXyz); - /* 8047731C */ void eff_break_kibakoBmd(cXyz); - /* 8047747C */ void eff_break_tsubo(); - /* 804774D4 */ void eff_break_ootubo(); - /* 8047752C */ void eff_break_kibako(); - /* 80477574 */ void eff_break_ironball(); - /* 80477578 */ void eff_break_taru(); - /* 804775BC */ void eff_break_dokuro(); - /* 80477614 */ void eff_break_bokkuri(); - /* 80477798 */ void eff_break_kotubo2(); - /* 804777F0 */ void eff_break_LightBall(); - /* 804777F4 */ void eff_break_ootubo2(); - /* 8047784C */ void eff_break_Lv8Ball(); - /* 80477850 */ void eff_break_tsuboL8(); - /* 804778A8 */ void eff_break_ootuboL8(); - /* 80477900 */ void se_break(cBgS_PolyInfo*); - /* 80477990 */ void se_put(cBgS_PolyInfo*); - /* 80477A14 */ void se_put_water(); - /* 80477A98 */ void se_fall_water(); - /* 80477B1C */ void calc_rot_axis_base(u8); - /* 80477FE0 */ void calc_rot_axis_tsubo(); - /* 80478004 */ void calc_rot_axis_ootubo(); - /* 80478028 */ void calc_rot_axis_kibako(); - /* 8047814C */ void calc_rot_axis_ironball(); - /* 80478170 */ void calc_rot_axis_taru(); - /* 80478190 */ void calc_rot_axis_dokuro(); - /* 804781B4 */ void calc_rot_axis_bokkuri(); - /* 804783C0 */ void calc_rot_axis_kotubo2(); - /* 804783E4 */ void calc_rot_axis_LightBall(); - /* 80478408 */ void calc_rot_axis_Lv8Ball(); - /* 8047842C */ void set_wind_power(); - /* 80478808 */ void exec_proc_tsubo(); - /* 80478828 */ void exec_proc_ootubo(); - /* 80478848 */ void exec_proc_kibako(); - /* 8047884C */ void exec_proc_ironball(); - /* 804788C4 */ void exec_proc_taru(); - /* 804788C8 */ void exec_proc_dokuro(); - /* 804788CC */ void exec_proc_bokkuri(); - /* 80478C18 */ void exec_proc_LightBall(); - /* 80478CE4 */ void exec_proc_Lv8Ball(); - /* 80478D78 */ void bg_damage_proc_call(); - /* 80478F50 */ void cc_damage_proc_call(); - /* 80479128 */ void eff_break_call(); - /* 804792D4 */ void calc_rot_call(); - /* 80479480 */ void obj_execute_proc_call(); - /* 8047962C */ void setTgHitCallBack(); - /* 80479648 */ void setCoHitCallBack(); - /* 80479664 */ void CreateInitCall(); - - static u8 const mData[2072]; -}; - -struct J3DModel {}; - struct daMirror_c { /* 8003194C */ void entry(J3DModel*); }; @@ -240,40 +27,6 @@ struct dTres_c { /* 8009C3CC */ void setPosition(int, u8, Vec const*, int); }; -struct dSv_info_c { - /* 80035200 */ void onSwitch(int, int); - /* 80035360 */ void isSwitch(int, int) const; - /* 800356B4 */ void offActor(int, int); -}; - -struct dSv_event_c { - /* 8003498C */ void onEventBit(u16); - /* 800349A4 */ void offEventBit(u16); - /* 800349BC */ void isEventBit(u16) const; -}; - -struct dStage_roomControl_c { - /* 800244E8 */ void checkRoomDisp(int) const; -}; - -struct dKy_tevstr_c {}; - -struct J3DModelData {}; - -struct dScnKy_env_light_c { - /* 801A37C4 */ void settingTevStruct(int, cXyz*, dKy_tevstr_c*); - /* 801A4DA0 */ void setLightTevColorType_MAJI(J3DModelData*, dKy_tevstr_c*); -}; - -struct dRes_info_c {}; - -struct dRes_control_c { - /* 8003C37C */ void getRes(char const*, char const*, dRes_info_c*, int); - /* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int); -}; - -struct JPABaseEmitter {}; - struct dPa_modelEcallBack { /* 8004AC00 */ void setModel(JPABaseEmitter*, J3DModelData*, dKy_tevstr_c const&, u8, void*, u8, u8); @@ -283,8 +36,6 @@ struct dPa_modelEcallBack { struct dPa_levelEcallBack {}; -struct _GXColor {}; - struct dPa_control_c { /* 8004CA90 */ void set(u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, cXyz const*, u8, dPa_levelEcallBack*, s8, _GXColor const*, _GXColor const*, @@ -302,81 +53,10 @@ struct dJntCol_c { /* 80035CA0 */ void init(fopAc_ac_c*, dJntColData_c const*, J3DModel*, int); }; -struct dDlst_shadowControl_c { - static u8 mSimpleTexObj[32]; -}; - -struct cCcD_Obj {}; - struct dCcMassS_Mng { /* 80085D98 */ void Set(cCcD_Obj*, u8); }; -struct dCcD_Stts { - /* 80083860 */ void Init(int, int, fopAc_ac_c*); -}; - -struct dCcD_SrcSph {}; - -struct dCcD_SrcCyl {}; - -struct dCcD_SrcCps {}; - -struct dCcD_Sph { - /* 80084A34 */ void Set(dCcD_SrcSph const&); -}; - -struct dCcD_GStts { - /* 80083760 */ dCcD_GStts(); - /* 80083830 */ void Move(); - /* 8046FE68 */ ~dCcD_GStts(); -}; - -struct dCcD_GObjInf { - /* 80083A28 */ dCcD_GObjInf(); - /* 800842C0 */ void ChkAtHit(); - /* 80084460 */ void ChkTgHit(); - /* 800844F8 */ void GetTgHitObj(); - /* 80084548 */ void GetTgHitGObj(); - /* 8008457C */ void GetTgHitObjSe(); - /* 800845B0 */ void getHitSeID(u8, int); - /* 80084658 */ void ChkCoHit(); -}; - -struct dCcD_GAtTgCoCommonBase { - /* 80083688 */ void GetAc(); -}; - -struct dCcD_Cyl { - /* 800848B4 */ void Set(dCcD_SrcCyl const&); -}; - -struct dCcD_Cps { - /* 800847D0 */ void Set(dCcD_SrcCps const&); -}; - -struct dBgS_SplGrpChk { - /* 80078B90 */ void Set(cXyz&, f32); -}; - -struct dBgS_PolyPassChk { - /* 80078E68 */ void SetObj(); - /* 80078E74 */ void ClrObj(); - /* 80078E98 */ void SetLink(); - /* 80078F94 */ void SetIronBall(); - /* 80078FA0 */ void ClrIronBall(); -}; - -struct dBgS_ObjAcch { - /* 8046FF34 */ ~dBgS_ObjAcch(); -}; - -struct dBgS_AcchCir { - /* 80075EAC */ dBgS_AcchCir(); - /* 80075F58 */ void SetWall(f32, f32); - /* 8046FEC4 */ ~dBgS_AcchCir(); -}; - struct dBgS { /* 80074B40 */ void ChkMoveBG_NoDABg(cBgS_PolyInfo const&); /* 80074E50 */ void GetPolyAtt0(cBgS_PolyInfo const&); @@ -384,64 +64,16 @@ struct dBgS { /* 80075564 */ void SplGrpChk(dBgS_SplGrpChk*); }; -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&); - /* 800773A4 */ void ClrMoveBGOnly(); -}; - -struct cM3dGSph { - /* 8026F648 */ void SetC(cXyz const&); - /* 8046FD90 */ ~cM3dGSph(); -}; - -struct cM3dGPla { - /* 8046F2F4 */ ~cM3dGPla(); -}; - -struct cM3dGCylS {}; - -struct cM3dGCyl { - /* 8026F114 */ void Set(cM3dGCylS const&); - /* 8026F1DC */ void SetC(cXyz const&); - /* 8046FDD8 */ ~cM3dGCyl(); -}; - -struct cM3dGCps { - /* 8026EF88 */ cM3dGCps(); - /* 8026F000 */ void Set(cXyz const&, cXyz const&, f32); -}; - -struct cM3dGCir { - /* 8026EF18 */ ~cM3dGCir(); -}; - -struct cM3dGAab { - /* 8046FE20 */ ~cM3dGAab(); -}; - struct cCcS { /* 80264BA8 */ void Set(cCcD_Obj*); }; -struct cCcD_Stts { - /* 8026395C */ void ClrCcMove(); -}; - -struct cCcD_GStts { - /* 80479890 */ ~cCcD_GStts(); -}; - struct cBgS { /* 80074618 */ void GetActorPointer(int) const; /* 80074660 */ void ChkPolySafe(cBgS_PolyInfo const&); /* 80074744 */ void GetTriPla(cBgS_PolyInfo const&, cM3dGPla*) const; }; -struct _GXTexObj {}; - struct Z2SoundObjSimple { /* 802BE844 */ Z2SoundObjSimple(); }; @@ -462,16 +94,10 @@ struct Z2AudioMgr { static u8 mAudioMgrPtr[4 + 4 /* padding */]; }; -struct JUTNameTab { - /* 802DEAF8 */ void getName(u16) const; -}; - struct JMath { static u8 sincosTable_[65536]; }; -struct DALKMIST_INFLUENCE {}; - // // Forward References: // @@ -657,7 +283,6 @@ extern "C" extern char const* const d_a_obj_carry__stringBase0; // External References: // -extern "C" void OSReport_Error(); extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); extern "C" void mDoMtx_XrotM__FPA4_fs(); extern "C" void mDoMtx_YrotS__FPA4_fs(); @@ -796,20 +421,6 @@ extern "C" void startCollisionSE__14Z2SoundObjBaseFUlUlP14Z2SoundObjBase(); extern "C" void __ct__16Z2SoundObjSimpleFv(); extern "C" void __dl__FPv(); extern "C" void getName__10JUTNameTabCFUs(); -extern "C" void PSMTXIdentity(); -extern "C" void PSMTXCopy(); -extern "C" void PSMTXConcat(); -extern "C" void PSMTXRotAxisRad(); -extern "C" void PSMTXTrans(); -extern "C" void PSMTXMultVec(); -extern "C" void PSVECAdd(); -extern "C" void PSVECScale(); -extern "C" void PSVECSquareMag(); -extern "C" void PSVECDotProduct(); -extern "C" void C_VECReflect(); -extern "C" void PSVECSquareDistance(); -extern "C" void PSQUATMultiply(); -extern "C" void C_QUATSlerp(); extern "C" void __ptmf_scall(); extern "C" void __cvt_fp2unsigned(); extern "C" void _savegpr_23(); @@ -826,7 +437,6 @@ 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" extern void* g_fopAc_Method[8]; extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */]; extern "C" extern u8 ZeroQuat[16]; @@ -848,9 +458,7 @@ extern "C" extern u8 g_env_light[4880]; extern "C" f32 Zero__4cXyz[3]; extern "C" u8 BaseX__4cXyz[12]; extern "C" u8 sincosTable___5JMath[65536]; -extern "C" extern u32 __float_nan; extern "C" f32 mGroundY__11fopAcM_gc_c; -extern "C" extern u8 struct_80450D64[4]; extern "C" u8 mEcallback__18dPa_modelEcallBack[4]; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; @@ -2499,7 +2107,8 @@ static asm void bound(cXyz* param_0, cBgS_PolyInfo const& param_1, f32 param_2) #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGPla::~cM3dGPla() { +extern "C" asm void __dt__8cM3dGPlaFv() { +// asm cM3dGPla::~cM3dGPla() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry/__dt__8cM3dGPlaFv.s" } @@ -2782,7 +2391,8 @@ asm daObjCarry_c::daObjCarry_c() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGSph::~cM3dGSph() { +extern "C" asm void __dt__8cM3dGSphFv() { +// asm cM3dGSph::~cM3dGSph() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry/__dt__8cM3dGSphFv.s" } @@ -2792,7 +2402,8 @@ asm cM3dGSph::~cM3dGSph() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGCyl::~cM3dGCyl() { +extern "C" asm void __dt__8cM3dGCylFv() { +// asm cM3dGCyl::~cM3dGCyl() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry/__dt__8cM3dGCylFv.s" } @@ -2802,7 +2413,8 @@ asm cM3dGCyl::~cM3dGCyl() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cM3dGAab::~cM3dGAab() { +extern "C" asm void __dt__8cM3dGAabFv() { +// asm cM3dGAab::~cM3dGAab() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry/__dt__8cM3dGAabFv.s" } @@ -2812,7 +2424,8 @@ asm cM3dGAab::~cM3dGAab() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dCcD_GStts::~dCcD_GStts() { +extern "C" asm void __dt__10dCcD_GSttsFv() { +// asm dCcD_GStts::~dCcD_GStts() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry/__dt__10dCcD_GSttsFv.s" } @@ -2822,7 +2435,8 @@ asm dCcD_GStts::~dCcD_GStts() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dBgS_AcchCir::~dBgS_AcchCir() { +extern "C" asm void __dt__12dBgS_AcchCirFv() { +// asm dBgS_AcchCir::~dBgS_AcchCir() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry/__dt__12dBgS_AcchCirFv.s" } @@ -2832,7 +2446,8 @@ asm dBgS_AcchCir::~dBgS_AcchCir() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm dBgS_ObjAcch::~dBgS_ObjAcch() { +extern "C" asm void __dt__12dBgS_ObjAcchFv() { +// asm dBgS_ObjAcch::~dBgS_ObjAcch() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry/__dt__12dBgS_ObjAcchFv.s" } @@ -4690,7 +4305,8 @@ static asm void daObjCarry_Create(fopAc_ac_c* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm cCcD_GStts::~cCcD_GStts() { +extern "C" asm void __dt__10cCcD_GSttsFv() { +// asm cCcD_GStts::~cCcD_GStts() { nofralloc #include "asm/rel/d/a/obj/d_a_obj_carry/d_a_obj_carry/__dt__10cCcD_GSttsFv.s" } diff --git a/rel/d/a/tag/d_a_tag_mmsg/d_a_tag_mmsg.cpp b/rel/d/a/tag/d_a_tag_mmsg/d_a_tag_mmsg.cpp index fd40bd4011..1cbe7b23be 100644 --- a/rel/d/a/tag/d_a_tag_mmsg/d_a_tag_mmsg.cpp +++ b/rel/d/a/tag/d_a_tag_mmsg/d_a_tag_mmsg.cpp @@ -7,38 +7,6 @@ #include "dol2asm.h" #include "dolphin/types.h" -// -// Types: -// - -struct fopAc_ac_c { - /* 80018B64 */ fopAc_ac_c(); - /* 80018C8C */ ~fopAc_ac_c(); -}; - -struct daTagMmsg_c { - /* 80D5B918 */ void create(); - /* 80D5BAB4 */ ~daTagMmsg_c(); - /* 80D5BB30 */ void execute(); -}; - -struct daPy_py_c { - static u8 m_midnaActor[4]; -}; - -struct dSv_info_c { - /* 80035200 */ void onSwitch(int, int); - /* 80035360 */ void isSwitch(int, int) const; -}; - -struct dSv_event_flag_c { - static u8 saveBitLabels[1644 + 4 /* padding */]; -}; - -struct dSv_event_c { - /* 800349BC */ void isEventBit(u16) const; -}; - // // Forward References: // diff --git a/src/d/a/d_a_alink.cpp b/src/d/a/d_a_alink.cpp index cb7d394ae0..4827466f51 100644 --- a/src/d/a/d_a_alink.cpp +++ b/src/d/a/d_a_alink.cpp @@ -4,7 +4,10 @@ // #include "d/a/d_a_alink.h" +#include "d/d_bomb.h" #include "JSystem/J3DGraphLoader/J3DAnmLoader.h" +#include "JSystem/JMath/JMath.h" +#include "SSystem/SComponent/c_math.h" #include "Z2AudioLib/Z2AudioMgr.h" #include "d/a/d_a_horse_static.h" #include "d/com/d_com_inf_game.h" @@ -12,7 +15,10 @@ #include "dolphin/types.h" #include "f_op/f_op_actor_mng.h" #include "m_Do/m_Do_ext.h" +#include "m_Do/m_Do_audio.h" #include "m_Do/m_Do_mtx.h" +#include "rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h" +#include "rel/d/a/d_a_crod/d_a_crod.h" // // Types: @@ -70,19 +76,6 @@ struct daMirror_c { /* 8003194C */ void entry(J3DModel*); }; -struct daCrod_c { - /* 80141A94 */ void setControllActorData(); -}; - -struct daAlink_matAnm_c { - /* 8009D8E4 */ void init(); - /* 8009D90C */ void calc(J3DMaterial*) const; - /* 800D0180 */ void offSetFlg(); - /* 800D0B8C */ ~daAlink_matAnm_c(); -}; - -struct dCcG_At_Spl {}; - struct dDemo_actor_c { /* 8003819C */ void getPrm_Morf(); /* 80038338 */ void getDemoIDData(int*, int*, int*, u16*, u8*); @@ -188,10 +181,6 @@ struct daAlinkHIO_wlBackJump_c0 { static u8 const m[56]; }; -struct daAlinkHIO_wlAttack_c0 { - static u8 const m[56]; -}; - struct daAlinkHIO_wlAtnMove_c0 { static u8 const m[56]; }; @@ -236,10 +225,6 @@ struct daAlinkHIO_wlAtBite_c0 { static u8 const m[92]; }; -struct daAlinkHIO_wallMove_c0 { - static u8 const m[20]; -}; - struct daAlinkHIO_wallHang_c0 { static u8 const m[28]; }; @@ -252,10 +237,6 @@ struct daAlinkHIO_wallCatch_c0 { static u8 const m[84]; }; -struct daAlinkHIO_turnMove_c0 { - static u8 const m[44]; -}; - struct daAlinkHIO_swim_c0 { static u8 const m[252]; }; @@ -268,14 +249,6 @@ struct daAlinkHIO_smallJump_c0 { static u8 const m[72]; }; -struct daAlinkHIO_slide_c0 { - static u8 const m[120]; -}; - -struct daAlinkHIO_sideStep_c0 { - static u8 const m[104]; -}; - struct daAlinkHIO_roofHang_c0 { static u8 const m[76]; }; @@ -292,14 +265,6 @@ struct daAlinkHIO_noActAtnMove_c0 { static u8 const m[84]; }; -struct daAlinkHIO_move_c0 { - static u8 const m[88]; -}; - -struct daAlinkHIO_magneBoots_c0 { - static u8 const m[76]; -}; - struct daAlinkHIO_ladder_c0 { static u8 const m[112]; }; @@ -364,10 +329,6 @@ struct daAlinkHIO_gAtKick_c0 { static u8 const m[36]; }; -struct daAlinkHIO_frontRoll_c0 { - static u8 const m[112]; -}; - struct daAlinkHIO_fmChain_c0 { static u8 const m[40]; }; @@ -404,10 +365,6 @@ struct daAlinkHIO_damCaught_c0 { static u8 const m[36]; }; -struct daAlinkHIO_cut_c0 { - static u8 const m[156]; -}; - struct daAlinkHIO_cut_c { /* 80140BD4 */ ~daAlinkHIO_cut_c(); }; @@ -440,10 +397,6 @@ struct daAlinkHIO_cutLargeJump_c0 { static u8 const m[116]; }; -struct daAlinkHIO_cutJump_c0 { - static u8 const m[68]; -}; - struct daAlinkHIO_cutHead_c0 { static u8 const m[96]; }; @@ -521,10 +474,6 @@ struct daAlinkHIO_boom_c0 { static u8 const m[76]; }; -struct daAlinkHIO_bomb_c0 { - static u8 const m[76]; -}; - struct daAlinkHIO_board_c0 { static u8 const m[156]; }; @@ -533,10 +482,6 @@ struct daAlinkHIO_backJump_c0 { static u8 const m[56]; }; -struct daAlinkHIO_atnMove_c0 { - static u8 const m[84]; -}; - struct dPa_control_c { struct level_c { /* 8004B8B4 */ void forceOnEventMove(u32); @@ -621,12 +566,6 @@ struct JAISeq { /* 802A0A8C */ JAISeq(JAISeqMgr*, JAISoundStrategyMgr*); }; -struct J3DMaterialAnm { - /* 800A4820 */ ~J3DMaterialAnm(); - /* 8032C320 */ void initialize(); - /* 8032C3C4 */ void calc(J3DMaterial*) const; -}; - struct J2DAnmLoaderDataBase { /* 80308A6C */ void load(void const*); }; @@ -3638,6 +3577,14 @@ inline Z2CreatureLink* Z2GetLink() { return Z2CreatureLink::mLinkPtr; } +inline u16 i_dComIfGs_getLife() { + return g_dComIfG_gameInfo.info.getPlayer().getPlayerStatusA().getLife(); +} + +inline BOOL i_dComIfGs_isEventBit(u16 id) { + return g_dComIfG_gameInfo.info.getEvent().isEventBit(id); +} + /* 8009D87C-8009D884 0981BC 0008+00 0/0 1/1 0/0 .text getE3Zhint__9daAlink_cFv */ bool daAlink_c::getE3Zhint() { return false; @@ -3713,8 +3660,10 @@ static u8 struct_80450FC4[4]; /* 80450FC8-80450FCC -00001 0004+00 5/5 0/0 0/0 .sbss None */ /* 80450FC8 0001+00 data_80450FC8 None */ +static bool struct_80450FC8; // sEyeMoveFlg + /* 80450FC9 0003+00 data_80450FC9 None */ -static u8 struct_80450FC8[4]; +static u8 sMorfFrame; /* 80452C98-80452C9C 001298 0004+00 102/102 0/0 0/0 .sdata2 @5943 */ SECTION_SDATA2 static f32 lit_5943 = 0.5f; @@ -3752,14 +3701,16 @@ SECTION_SDATA2 static u8 lit_6108[4] = { }; /* 8009D8E4-8009D90C 098224 0028+00 2/2 0/0 0/0 .text init__16daAlink_matAnm_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_matAnm_c::init() { - nofralloc -#include "asm/d/a/d_a_alink/init__16daAlink_matAnm_cFv.s" +void daAlink_matAnm_c::init() { + f32 tmp_0 = FLOAT_LABEL(lit_6108); + field_0xf4 = tmp_0; + field_0xf8 = tmp_0; + mNowOffsetX = tmp_0; + mNowOffsetY = tmp_0; + struct_80450FC8 = false; // sEyeMoveFlg + sMorfFrame = 0; + mSetFlag = 0; } -#pragma pop /* 8009D90C-8009DA60 09824C 0154+00 1/0 0/0 0/0 .text calc__16daAlink_matAnm_cCFP11J3DMaterial */ #pragma push @@ -3771,6 +3722,37 @@ asm void daAlink_matAnm_c::calc(J3DMaterial* param_0) const { } #pragma pop +/* void daAlink_matAnm_c::calc(J3DMaterial* param_0) const { + J3DMaterialAnm::calc(param_0); + + if (!daAlink_getAlinkActorClass()->checkStatusWindowDraw()) { + for (u32 i = 0; i < 8; i++) { + if (getTexMtxAnm(i).getAnmFlag()) { + J3DTexMtxInfo* info = ¶m_0->getTexGenBlock()->getTexMtx(i)->getTexMtxInfo(); + if (sMorfFrame != 0) { + if (mSetFlag == 0) { + f32 tmp = 1.0f / sMorfFrame; + info->field_0x10.field_0xc = field_0xf4 * (1.0f - tmp) + info->field_0x10.field_0xc * tmp; + info->field_0x10.field_0x10 = field_0xf8 * (1.0f - tmp) + info->field_0x10.field_0xc * tmp; + //mSetFlag = 1; + } else { + info->field_0x10.field_0xc = field_0xf4; + info->field_0x10.field_0x10 = field_0xf8; + } + } + + if (struct_80450FC8) { + info->field_0x10.field_0xc = mNowOffsetX; + info->field_0x10.field_0x10 = mNowOffsetY; + } + + + + } + } + } +} */ + bool daAlink_c::checkStageName(const char* stage) { return strcmp(dComIfGp_getStartStageName(), stage) == 0; } @@ -5076,26 +5058,16 @@ daAlinkHIO_basic_c1 const daAlinkHIO_basic_c0::m = { 60.0f, 85.0f, 300.0f, 200.0f, 20.0f, 30.0f, 23.0f, 41.0f, 0.7f, 0.5f, 0.7f, 400.0f, 5000.0f}; /* 8038D6BC-8038D714 019D1C 0058+00 34/47 0/0 0/0 .rodata m__18daAlinkHIO_move_c0 */ -SECTION_RODATA u8 const daAlinkHIO_move_c0::m[88] = { - 0x00, 0x0B, 0x00, 0x00, 0x3F, 0x33, 0x33, 0x33, 0x40, 0x40, 0x00, 0x00, 0x40, 0x80, 0x00, - 0x00, 0x41, 0x40, 0x00, 0x00, 0x11, 0x94, 0x00, 0x64, 0x00, 0x05, 0x00, 0x00, 0x3F, 0x80, - 0x00, 0x00, 0x3F, 0x40, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x3E, 0xCC, 0xCC, 0xCD, 0x3F, - 0x4C, 0xCC, 0xCD, 0x41, 0xB8, 0x00, 0x00, 0x3F, 0xF3, 0x33, 0x33, 0x40, 0x0C, 0xCC, 0xCD, - 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x8C, 0xCC, 0xCD, 0x3F, 0xC0, 0x00, 0x00, 0x3F, 0x7D, 0x70, - 0xA4, 0x40, 0x40, 0x00, 0x00, 0x3F, 0x33, 0x33, 0x33, 0x3E, 0xCC, 0xCC, 0xCD, +daAlinkHIO_move_c1 const daAlinkHIO_move_c0::m = { + { 11, 0.7f, 3.0f, 4.0f, 12.0f }, + 4500, 100, 5, 1.0f, 0.75f, 1.5f, 0.4f, 0.8f, 23.0f, 1.9f, 2.2f, 0.6f, 1.1f, 1.5f, 0.99f, 3.0f, 0.7f, 0.4f }; -COMPILER_STRIP_GATE(0x8038D6BC, &daAlinkHIO_move_c0::m); /* 8038D714-8038D768 019D74 0054+00 10/16 0/0 0/0 .rodata m__21daAlinkHIO_atnMove_c0 */ -SECTION_RODATA u8 const daAlinkHIO_atnMove_c0::m[84] = { - 0x0B, 0xB8, 0x07, 0xD0, 0x00, 0x06, 0x00, 0x00, 0x3F, 0x99, 0x99, 0x9A, 0x3F, 0x8C, - 0xCC, 0xCD, 0x3F, 0xC0, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x19, 0x99, 0x9A, - 0x41, 0x50, 0x00, 0x00, 0x40, 0xC0, 0x00, 0x00, 0x40, 0xF0, 0x00, 0x00, 0x3F, 0x33, - 0x33, 0x33, 0x3F, 0xB3, 0x33, 0x33, 0x3E, 0x80, 0x00, 0x00, 0x3F, 0x33, 0x33, 0x33, - 0x41, 0x70, 0x00, 0x00, 0x40, 0x20, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3F, 0x00, - 0x00, 0x00, 0x3E, 0xCC, 0xCC, 0xCD, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0xA6, 0x66, 0x66, +daAlinkHIO_atnMove_c1 const daAlinkHIO_atnMove_c0::m = { + 3000, 2000, 6, 1.2f, 1.1f, 1.5f, 0.5f, 0.6f, 13.0f, 6.0f, 7.5f, + 0.7f, 1.4f, 0.25f, 0.7f, 15.0f, 2.5f, 8.0f, 0.5f, 0.4f, 1.0f, 1.3f }; -COMPILER_STRIP_GATE(0x8038D714, &daAlinkHIO_atnMove_c0::m); /* 8038D768-8038D7BC 019DC8 0054+00 3/9 0/0 0/0 .rodata m__26daAlinkHIO_noActAtnMove_c0 */ SECTION_RODATA u8 const daAlinkHIO_noActAtnMove_c0::m[84] = { @@ -5109,16 +5081,12 @@ SECTION_RODATA u8 const daAlinkHIO_noActAtnMove_c0::m[84] = { COMPILER_STRIP_GATE(0x8038D768, &daAlinkHIO_noActAtnMove_c0::m); /* 8038D7BC-8038D82C 019E1C 0070+00 5/7 0/0 0/0 .rodata m__23daAlinkHIO_frontRoll_c0 */ -SECTION_RODATA u8 const daAlinkHIO_frontRoll_c0::m[112] = { - 0x00, 0x1D, 0x00, 0x00, 0x3F, 0x8C, 0xCC, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, - 0x41, 0xB0, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x3F, 0x4C, 0xCC, 0xCD, 0x40, 0x40, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x41, 0xC8, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x3F, 0x99, 0x99, 0x9A, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x41, 0xC8, 0x00, 0x00, 0x27, 0x10, 0x00, 0x05, - 0x03, 0xE8, 0x00, 0x64, 0x40, 0x40, 0x00, 0x00, 0x3F, 0xA6, 0x66, 0x66, 0x41, 0xC8, 0x00, 0x00, - 0x41, 0x20, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x41, 0x70, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, - 0x41, 0x40, 0x00, 0x00, 0x41, 0x10, 0x00, 0x00, 0x41, 0x98, 0x00, 0x00, 0x42, 0x70, 0x00, 0x00, +daAlinkHIO_frontRoll_c1 const daAlinkHIO_frontRoll_c0::m = { + { 29, 1.1f, 0.0f, 3.0f, 22.0f }, + { 29, 0.8f, 3.0f, 2.0f, 25.0f }, + { 33, 1.2f, 0.0f, 1.0f, 25.0f }, + 10000, 5, 1000, 100, 3.0f, 1.3f, 25.0f, 10.0f, 3.0f, 15.0f, 10.0f, 12.0f, 9.0f, 19.0f, 60.0f }; -COMPILER_STRIP_GATE(0x8038D7BC, &daAlinkHIO_frontRoll_c0::m); /* 8038D82C-8038D864 019E8C 0038+00 5/5 0/0 0/0 .rodata m__22daAlinkHIO_backJump_c0 */ SECTION_RODATA u8 const daAlinkHIO_backJump_c0::m[56] = { @@ -5130,29 +5098,22 @@ SECTION_RODATA u8 const daAlinkHIO_backJump_c0::m[56] = { COMPILER_STRIP_GATE(0x8038D82C, &daAlinkHIO_backJump_c0::m); /* 8038D864-8038D8CC 019EC4 0068+00 3/3 0/0 0/0 .rodata m__22daAlinkHIO_sideStep_c0 */ -SECTION_RODATA u8 const daAlinkHIO_sideStep_c0::m[104] = { - 0x00, 0x05, 0x00, 0x00, 0x3F, 0x8C, 0xCC, 0xCD, 0x3F, 0x80, 0x00, 0x00, 0x40, 0x40, 0x00, - 0x00, 0x40, 0xC0, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3F, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x40, 0xE0, 0x00, 0x00, - 0x00, 0x09, 0x00, 0x00, 0x3F, 0x8C, 0xCC, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, - 0x00, 0x40, 0x80, 0x00, 0x00, 0x41, 0xE0, 0x00, 0x00, 0x41, 0xB0, 0x00, 0x00, 0x41, 0xC8, - 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, +daAlinkHIO_sideStep_c1 const daAlinkHIO_sideStep_c0::m = { + { 5, 1.1f, 1.0f, 3.0f, 6.0f }, + { 9, 1.0f, 0.0f, 3.0f, 2.0f }, + { 6, 1.0f, 0.0f, 3.0f, 7.0f }, + { 9, 1.1f, 0.0f, 3.0f, 4.0f }, + 28.0f, 22.0f, 25.0f, 20.0f, 100.0f, 10.0f }; -COMPILER_STRIP_GATE(0x8038D864, &daAlinkHIO_sideStep_c0::m); /* 8038D8CC-8038D944 019F2C 0078+00 5/10 0/0 0/0 .rodata m__19daAlinkHIO_slide_c0 */ -SECTION_RODATA u8 const daAlinkHIO_slide_c0::m[120] = { - 0x00, 0x0E, 0x00, 0x00, 0x3F, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xA0, 0x00, - 0x00, 0x41, 0x70, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x3F, 0x66, 0x66, 0x66, 0x00, 0x00, - 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x40, 0xE0, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x3F, - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x41, 0x10, 0x00, 0x00, - 0x00, 0x14, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, - 0x00, 0x41, 0x80, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x42, 0x48, - 0x00, 0x00, 0x41, 0xD8, 0x00, 0x00, 0x3E, 0x4C, 0xCC, 0xCD, 0x41, 0x40, 0x00, 0x00, 0x42, - 0x48, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x42, 0x04, 0x00, 0x00, 0x3F, 0x99, 0x99, 0x9A, +daAlinkHIO_slide_c1 const daAlinkHIO_slide_c0::m = { + { 14, 0.75f, 0.0f, 5.0f, 15.0f }, + { 6, 0.9f, 0.0f, 3.0f, 7.0f }, + { 15, 1.0f, 0.0f, 3.0f, 9.0f }, + { 20, 1.0f, 0.0f, 3.0f, 16.0f }, + 40.0f, 3.0f, 50.0f, 27.0f, 0.2f, 12.0f, 50.0f, 3.0f, 33.0f, 1.2f }; -COMPILER_STRIP_GATE(0x8038D8CC, &daAlinkHIO_slide_c0::m); /* 8038D944-8038D964 019FA4 0020+00 0/1 0/0 0/0 .rodata m__20daAlinkHIO_cutNmV_c0 */ #pragma push @@ -5282,14 +5243,11 @@ SECTION_RODATA u8 const daAlinkHIO_cutFnJU_c0::m[84] = { COMPILER_STRIP_GATE(0x8038DAEC, &daAlinkHIO_cutFnJU_c0::m); /* 8038DB40-8038DB84 01A1A0 0044+00 4/4 0/0 0/0 .rodata m__21daAlinkHIO_cutJump_c0 */ -SECTION_RODATA u8 const daAlinkHIO_cutJump_c0::m[68] = { - 0x00, 0x11, 0x00, 0x00, 0x3F, 0x8C, 0xCC, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x41, 0x90, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x10, 0x00, 0x00, 0x41, 0xC8, - 0x00, 0x00, 0x41, 0xD8, 0x00, 0x00, 0x41, 0x70, 0x00, 0x00, 0x41, 0x50, 0x00, 0x00, - 0x41, 0x50, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, +daAlinkHIO_cutJump_c1 const daAlinkHIO_cutJump_c0::m = { + { 17, 1.1f, 0.0f, 2.0f, 18.0f }, + { 29, 1.0f, 2.0f, 0.0f, 9.0f }, + 25.0f, 27.0f, 15.0f, 13.0f, 13.0f, 1.0f, 3.0f }; -COMPILER_STRIP_GATE(0x8038DB40, &daAlinkHIO_cutJump_c0::m); /* 8038DB84-8038DC1C 01A1E4 0098+00 5/6 0/0 0/0 .rodata m__21daAlinkHIO_cutTurn_c0 */ SECTION_RODATA u8 const daAlinkHIO_cutTurn_c0::m[152] = { @@ -5425,19 +5383,16 @@ SECTION_RODATA u8 const daAlinkHIO_cutLargeJump_c0::m[116] = { COMPILER_STRIP_GATE(0x8038DE18, &daAlinkHIO_cutLargeJump_c0::m); /* 8038DE8C-8038DF28 01A4EC 009C+00 21/30 0/0 0/0 .rodata m__17daAlinkHIO_cut_c0 */ -SECTION_RODATA u8 const daAlinkHIO_cut_c0::m[156] = { - 0x00, 0x12, 0x00, 0x00, 0xBF, 0x8C, 0xCC, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, - 0xBF, 0x80, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x3F, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x40, 0x00, 0x00, 0x41, 0xB8, 0x00, 0x00, 0x00, 0x2D, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x41, 0x70, 0x00, 0x00, 0x00, 0x2F, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, 0x41, 0xD8, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x0F, 0x00, 0x08, 0x00, 0x0A, 0x00, 0x5A, 0x00, 0x4B, 0x0F, 0xA0, - 0xF0, 0x60, 0x00, 0x1E, 0x41, 0x40, 0x00, 0x00, 0x3F, 0xA0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x3F, 0xCC, 0xCC, 0xCD, 0x42, 0x34, 0x00, 0x00, 0x3F, 0xD3, 0x33, 0x33, - 0x42, 0x82, 0x00, 0x00, 0x3F, 0x9A, 0xE1, 0x48, 0x42, 0x0C, 0x00, 0x00, 0x40, 0x13, 0x33, 0x33, - 0x40, 0x0C, 0xCC, 0xCD, 0x42, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +daAlinkHIO_cut_c1 const daAlinkHIO_cut_c0::m = { + { 18, -1.100f, 0.0f, 3.0f, -1.0f }, + { 22, 0.9f, 0.0f, 3.0f, 23.0f }, + { 45, 1.0f, 0.0f, 3.0f, 15.0f }, + { 47, 1.0f, 0.0f, 5.0f, 27.0f }, + 0, 1, 15, 8, 10, 90, 75, 4000, -4000, 30, + 12.0f, 1.250f, 1.0f, 1.0f, 1.6f, 45.0f, + 1.65f, 65.0f, 1.21f, 35.0f, 2.3f, 2.2f, 65.0f, + 0.0f }; -COMPILER_STRIP_GATE(0x8038DE8C, &daAlinkHIO_cut_c0::m); /* 8038DF28-8038DF4C 01A588 0024+00 1/1 0/0 0/0 .rodata m__21daAlinkHIO_gAtPush_c0 */ SECTION_RODATA u8 const daAlinkHIO_gAtPush_c0::m[36] = { @@ -5459,12 +5414,10 @@ COMPILER_STRIP_GATE(0x8038DF4C, &daAlinkHIO_gAtKick_c0::m); #pragma pop /* 8038DF70-8038DF9C 01A5D0 002C+00 4/4 0/0 0/0 .rodata m__22daAlinkHIO_turnMove_c0 */ -SECTION_RODATA u8 const daAlinkHIO_turnMove_c0::m[44] = { - 0x00, 0x1B, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, - 0x00, 0x41, 0xB0, 0x00, 0x00, 0x00, 0x05, 0x09, 0xC4, 0x00, 0xC8, 0x03, 0xE8, 0x3F, 0x8C, - 0xCC, 0xCD, 0x41, 0x98, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x41, 0xC8, 0x00, 0x00, +daAlinkHIO_turnMove_c1 const daAlinkHIO_turnMove_c0::m = { + { 27, 1.0f, 0.0f, 3.0f, 22.0f }, + 5, 2500, 200, 1000, 1.1f, 19.0f, 1.5f, 25.0f, }; -COMPILER_STRIP_GATE(0x8038DF70, &daAlinkHIO_turnMove_c0::m); /* 8038DF9C-8038E01C 01A5FC 0080+00 6/7 0/0 0/0 .rodata m__19daAlinkHIO_guard_c0 */ SECTION_RODATA u8 const daAlinkHIO_guard_c0::m[128] = { @@ -5552,11 +5505,9 @@ SECTION_RODATA u8 const daAlinkHIO_wallFall_c0::m[40] = { COMPILER_STRIP_GATE(0x8038E1B8, &daAlinkHIO_wallFall_c0::m); /* 8038E1E0-8038E1F4 01A840 0014+00 2/2 0/0 0/0 .rodata m__22daAlinkHIO_wallMove_c0 */ -SECTION_RODATA u8 const daAlinkHIO_wallMove_c0::m[20] = { - 0x3F, 0x4C, 0xCC, 0xCD, 0x3F, 0x8C, 0xCC, 0xCD, 0x40, 0x40, - 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, +daAlinkHIO_wallMove_c1 const daAlinkHIO_wallMove_c0::m = { + 0.8f, 1.1f, 3.0f, 2.0f, 3.0f }; -COMPILER_STRIP_GATE(0x8038E1E0, &daAlinkHIO_wallMove_c0::m); /* 8038E1F4-8038E210 01A854 001C+00 2/5 0/0 0/0 .rodata m__22daAlinkHIO_wallHang_c0 */ SECTION_RODATA u8 const daAlinkHIO_wallHang_c0::m[28] = { @@ -5749,14 +5700,10 @@ SECTION_RODATA u8 const daAlinkHIO_boom_c0::m[76] = { COMPILER_STRIP_GATE(0x8038E6C8, &daAlinkHIO_boom_c0::m); /* 8038E714-8038E760 01AD74 004C+00 14/14 0/0 0/0 .rodata m__18daAlinkHIO_bomb_c0 */ -SECTION_RODATA u8 const daAlinkHIO_bomb_c0::m[76] = { - 0x00, 0xA0, 0x00, 0x32, 0x00, 0x32, 0x00, 0x00, 0xC0, 0x86, 0x66, 0x66, 0xC2, 0xC8, 0x00, 0x00, - 0x3E, 0xB3, 0x33, 0x33, 0x40, 0x00, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00, 0x3F, 0xA6, 0x66, 0x66, - 0x43, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x4C, 0xCC, 0xCD, 0xC0, 0xE0, 0x00, 0x00, - 0x41, 0xD0, 0x00, 0x00, 0x42, 0x04, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x41, 0x70, 0x00, 0x00, - 0x42, 0x20, 0x00, 0x00, 0x41, 0x70, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, +daAlinkHIO_bomb_c1 const daAlinkHIO_bomb_c0::m = { + 160, 50, 50, -4.2f, -100.0f, 0.350f, 2.0f, 20.0f, 1.3f, 225.0f, 0.0f, -0.8f, -7.0f, 26.0f, 33.0f, + 10.0f, 15.0f, 40.0f, 15.0f, 300.0f }; -COMPILER_STRIP_GATE(0x8038E714, &daAlinkHIO_bomb_c0::m); /* 8038E760-8038E77C 01ADC0 001C+00 0/1 0/0 0/0 .rodata m__21daAlinkHIO_huLight_c0 */ #pragma push @@ -5787,14 +5734,10 @@ SECTION_RODATA u8 const daAlinkHIO_fmChain_c0::m[40] = { COMPILER_STRIP_GATE(0x8038E7CC, &daAlinkHIO_fmChain_c0::m); /* 8038E7F4-8038E840 01AE54 004C+00 17/21 0/0 0/0 .rodata m__24daAlinkHIO_magneBoots_c0 */ -SECTION_RODATA u8 const daAlinkHIO_magneBoots_c0::m[76] = { - 0x00, 0x1D, 0x00, 0x00, 0x3F, 0x8C, 0xCC, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, - 0x41, 0xB8, 0x00, 0x00, 0x3E, 0xCC, 0xCC, 0xCD, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0xE6, 0x66, 0x66, - 0x3F, 0x33, 0x33, 0x33, 0x3F, 0x40, 0x00, 0x00, 0x3E, 0xE6, 0x66, 0x66, 0x3F, 0x19, 0x99, 0x9A, - 0x42, 0x48, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x3E, 0xB3, 0x33, 0x33, 0x3E, 0x99, 0x99, 0x9A, - 0x3F, 0x33, 0x33, 0x33, 0x3F, 0x4C, 0xCC, 0xCD, 0x3F, 0x33, 0x33, 0x33, +daAlinkHIO_magneBoots_c1 const daAlinkHIO_magneBoots_c0::m = { + {29, 1.1f, 0.0f, 3.0f, 23.0f}, + 0.4f, 1.0f, 1.8f, 0.7f, 0.75f, 0.45, 0.6f, 50.0f, 10.0f, 0.35f, 0.3f, 0.7f, 0.8f, 0.7f }; -COMPILER_STRIP_GATE(0x8038E7F4, &daAlinkHIO_magneBoots_c0::m); /* 8038E840-8038E870 01AEA0 0030+00 6/6 0/0 0/0 .rodata m__20daAlinkHIO_pickUp_c0 */ SECTION_RODATA u8 const daAlinkHIO_pickUp_c0::m[48] = { @@ -6293,13 +6236,10 @@ SECTION_RODATA u8 const daAlinkHIO_wlAtBite_c0::m[92] = { COMPILER_STRIP_GATE(0x8038F748, &daAlinkHIO_wlAtBite_c0::m); /* 8038F7A4-8038F7DC 01BE04 0038+00 7/10 0/0 0/0 .rodata m__22daAlinkHIO_wlAttack_c0 */ -SECTION_RODATA u8 const daAlinkHIO_wlAttack_c0::m[56] = { - 0x00, 0x3B, 0x00, 0x00, 0x3F, 0x99, 0x99, 0x9A, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, - 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x05, 0x42, 0xC8, 0x00, 0x00, - 0x41, 0x20, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, 0x43, 0x66, 0x00, 0x00, 0x41, 0x20, - 0x00, 0x00, 0x41, 0x40, 0x00, 0x00, 0x42, 0x0C, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, +daAlinkHIO_wlAttack_c1 const daAlinkHIO_wlAttack_c0::m = { + { 59, 1.2f, 0.0f, 2.0f, 5.0f }, + 15, 5, 100.0f, 10.0f, 5.0f, 230.0f, 10.0f, 12.0f, 35.0f, 30.0f }; -COMPILER_STRIP_GATE(0x8038F7A4, &daAlinkHIO_wlAttack_c0::m); /* 8038F7DC-8038F858 01BE3C 007C+00 5/5 0/0 0/0 .rodata m__21daAlinkHIO_wlPoint_c0 */ SECTION_RODATA u8 const daAlinkHIO_wlPoint_c0::m[124] = { @@ -6444,7 +6384,7 @@ asm void daAlink_c::commonLineCheck(cXyz* param_0, cXyz* param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::getMoveBGActorName(cBgS_PolyInfo& param_0, int param_1) { +asm s16 daAlink_c::getMoveBGActorName(cBgS_PolyInfo& param_0, int param_1) { nofralloc #include "asm/d/a/d_a_alink/getMoveBGActorName__9daAlink_cFR13cBgS_PolyInfoi.s" } @@ -7405,101 +7345,81 @@ COMPILER_STRIP_GATE(0x80391734, &lit_5908); /* 80391740-80391754 01DDA0 0014+00 0/1 0/0 0/0 .rodata atnNormalType1$6976 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const atnNormalType1[20] = { - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, +static int const atnNormalType1[5] = { + 4, 1, 1, 2, 0 }; -COMPILER_STRIP_GATE(0x80391740, &atnNormalType1); #pragma pop /* 80391754-80391768 01DDB4 0014+00 0/1 0/0 0/0 .rodata atnNormalType2$6977 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const atnNormalType2[20] = { - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, +static int const atnNormalType2[5] = { + 3, 0, 0, 1, 1 }; -COMPILER_STRIP_GATE(0x80391754, &atnNormalType2); #pragma pop /* 80391768-8039177C 01DDC8 0014+00 0/1 0/0 0/0 .rodata atnNormalType3$6978 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const atnNormalType3[20] = { - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static int const atnNormalType3[5] = { + 4, 1, 1, 0, 0 }; -COMPILER_STRIP_GATE(0x80391768, &atnNormalType3); #pragma pop /* 8039177C-80391790 01DDDC 0014+00 0/1 0/0 0/0 .rodata atnFinishType$6979 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const atnFinishType[20] = { - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, +static int const atnFinishType[5] = { + 2, 1, 0, 5, 1 }; -COMPILER_STRIP_GATE(0x8039177C, &atnFinishType); #pragma pop /* 80391790-803917A4 01DDF0 0014+00 0/1 0/0 0/0 .rodata hitType$6980 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const hitType[20] = { - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, +static int const hitType[5] = { + 4, 0, 5, 0, 1 }; -COMPILER_STRIP_GATE(0x80391790, &hitType); #pragma pop /* 803917A4-803917B8 01DE04 0014+00 0/1 0/0 0/0 .rodata hitFinishType$6981 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const hitFinishType[20] = { - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, +static int const hitFinishType[5] = { + 2, 1, 0, 5, 0 }; -COMPILER_STRIP_GATE(0x803917A4, &hitFinishType); #pragma pop /* 803917B8-803917CC 01DE18 0014+00 0/1 0/0 0/0 .rodata normalType1$6982 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const normalType1_6982[20] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, +static int const normalType1_6982[5] = { + 0, 2, 1, 2, 1 }; -COMPILER_STRIP_GATE(0x803917B8, &normalType1_6982); #pragma pop /* 803917CC-803917E0 01DE2C 0014+00 0/1 0/0 0/0 .rodata normalType2$6983 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const normalType2[20] = { - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, +static int const normalType2[5] = { + 1, 1, 2, 1, 2 }; -COMPILER_STRIP_GATE(0x803917CC, &normalType2); #pragma pop /* 803917E0-803917F4 01DE40 0014+00 0/1 0/0 0/0 .rodata normalType3$6984 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const normalType3[20] = { - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, +static int const normalType3[5] = { + 4, 0, 1, 2, 1 }; -COMPILER_STRIP_GATE(0x803917E0, &normalType3); #pragma pop /* 803917F4-80391808 01DE54 0014+00 0/1 0/0 0/0 .rodata finishType$6985 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const finishType[20] = { - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x01, +static int const finishType[5] = { + 2, 0, 0, 5, 1 }; -COMPILER_STRIP_GATE(0x803917F4, &finishType); #pragma pop /* 80391808-80391858 01DE68 0050+00 0/1 0/0 0/0 .rodata cutParamTable$7312 */ @@ -7530,28 +7450,24 @@ COMPILER_STRIP_GATE(0x80391858, &cutParamTable_7455); #pragma pop /* 803918B8-803918C4 01DF18 000C+00 1/1 0/0 0/0 .rodata localCenter$11047 */ -SECTION_RODATA static u8 const localCenter[12] = { - 0xC1, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x90, 0x00, 0x00, +static Vec const localCenter = { + -15.0f, 0.0f, 18.0f }; -COMPILER_STRIP_GATE(0x803918B8, &localCenter); /* 803918C4-803918D0 01DF24 000C+00 1/1 0/0 0/0 .rodata localPos$11819 */ -SECTION_RODATA static u8 const localPos[12] = { - 0x40, 0x5C, 0xCC, 0xCD, 0x42, 0x35, 0x47, 0xAE, 0xC0, 0xE0, 0x00, 0x00, +static Vec const localPos = { + 3.45f, 45.32f, -7.0f }; -COMPILER_STRIP_GATE(0x803918C4, &localPos); /* 803918D0-803918DC 01DF30 000C+00 1/1 0/0 0/0 .rodata slingLocalPos$12042 */ -SECTION_RODATA static u8 const slingLocalPos[12] = { - 0x41, 0x20, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static Vec const slingLocalPos = { + 10.0f, 10.0f, 0.0f }; -COMPILER_STRIP_GATE(0x803918D0, &slingLocalPos); /* 803918DC-803918E8 01DF3C 000C+00 1/1 0/0 0/0 .rodata localSidePos$14270 */ -SECTION_RODATA static u8 const localSidePos[12] = { - 0x40, 0x13, 0x33, 0x33, 0xC1, 0x78, 0x00, 0x00, 0x41, 0x79, 0x99, 0x9A, +static Vec const localSidePos = { + 2.3f, -15.5f, 15.6f }; -COMPILER_STRIP_GATE(0x803918DC, &localSidePos); /* 803918E8-803918F4 01DF48 000C+00 0/1 0/0 0/0 .rodata m_handLeftOutSidePos__9daAlink_c */ #pragma push @@ -14334,7 +14250,8 @@ asm void daAlink_c::createHeap() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm J3DMaterialAnm::~J3DMaterialAnm() { +// asm J3DMaterialAnm::~J3DMaterialAnm() { +extern "C" asm void __dt__14J3DMaterialAnmFv() { nofralloc #include "asm/d/a/d_a_alink/__dt__14J3DMaterialAnmFv.s" } @@ -14342,14 +14259,9 @@ asm J3DMaterialAnm::~J3DMaterialAnm() { /* 800A48F0-800A4910 09F230 0020+00 1/1 0/0 0/0 .text daAlink_createHeap__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daAlink_createHeap(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/a/d_a_alink/daAlink_createHeap__FP10fopAc_ac_c.s" +static void daAlink_createHeap(fopAc_ac_c* param_0) { + daAlink_c::createHeap(); } -#pragma pop /* 800A4910-800A4BC8 09F250 02B8+00 5/5 0/0 0/0 .text setSelectEquipItem__9daAlink_cFi */ #pragma push @@ -14362,24 +14274,16 @@ asm void daAlink_c::setSelectEquipItem(int param_0) { #pragma pop /* 800A4BC8-800A4C40 09F508 0078+00 2/2 0/0 0/0 .text checkBoarStart__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkBoarStart() { - nofralloc -#include "asm/d/a/d_a_alink/checkBoarStart__9daAlink_cFv.s" +BOOL daAlink_c::checkBoarStart() { + // Stage: Bulblin Camp Room: Outside Arbiter's + return (checkStageName("F_SP118") && getStartRoomNo() == 3) && dComIfGs_getStartPoint() == 0; } -#pragma pop /* 800A4C40-800A4CB4 09F580 0074+00 2/2 0/0 0/0 .text checkCanoeStart__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkCanoeStart() { - nofralloc -#include "asm/d/a/d_a_alink/checkCanoeStart__9daAlink_cFv.s" +BOOL daAlink_c::checkCanoeStart() { + // Stage: Lake Hylia Room: Lake + return (checkStageName("F_SP115") && getStartRoomNo() == 0) && dComIfGs_getStartPoint() == 2; } -#pragma pop /* 800A4CB4-800A54F4 09F5F4 0840+00 1/1 0/0 0/0 .text playerInit__9daAlink_cFv */ #pragma push @@ -14393,13 +14297,7 @@ asm void daAlink_c::playerInit() { /* 800A54F4-800A551C 09FE34 0028+00 3/3 0/0 0/0 .text checkHorseStart__9daAlink_cFUli */ BOOL daAlink_c::checkHorseStart(u32 pLastMode, int pStartMode) { - bool horseStart = false; - - if (pLastMode == 1 || pStartMode == 2 || pLastMode == 8) { - horseStart = true; - } - - return horseStart; + return pLastMode == 1 || pStartMode == 2 || pLastMode == 8; } /* 800A551C-800A5CC8 09FE5C 07AC+00 1/1 0/0 0/0 .text setStartProcInit__9daAlink_cFv */ @@ -14414,7 +14312,7 @@ asm void daAlink_c::setStartProcInit() { /* ############################################################################################## */ /* 80450FCC-80450FD0 0004CC 0004+00 1/1 0/0 0/0 .sbss bgWaitFlg$58404 */ -static u8 bgWaitFlg[4]; +static s32 bgWaitFlg; /* 80450FD0-80450FD8 -00001 0008+00 2/2 0/0 0/0 .sbss None */ /* 80450FD0 0001+00 data_80450FD0 None */ @@ -15063,24 +14961,21 @@ asm void daAlink_c::setWolfCollisionPos() { #pragma pop /* 800ABAE0-800ABB28 0A6420 0048+00 2/2 0/0 0/0 .text initLockAt__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::initLockAt() { - nofralloc -#include "asm/d/a/d_a_alink/initLockAt__9daAlink_cFv.s" +void daAlink_c::initLockAt() { + field_0x122C[0].OnAtSPrmBit(0x20); + field_0x122C[0].OnAtNoHitMark(); + field_0x122C[0].OffAtNoConHit(); + field_0x122C[0].ResetAtHit(); } -#pragma pop /* 800ABB28-800ABB84 0A6468 005C+00 3/3 0/0 0/0 .text cancelLockAt__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::cancelLockAt() { - nofralloc -#include "asm/d/a/d_a_alink/cancelLockAt__9daAlink_cFv.s" +void daAlink_c::cancelLockAt() { + field_0x122C[0].OffAtSPrmBit(0x20); + field_0x122C[0].OffAtNoHitMark(); + field_0x122C[0].OnAtNoConHit(); + field_0x122C[0].ResetAtHit(); + field_0x814.SetAtApid(0xFFFFFFFF); } -#pragma pop /* 800ABB84-800ABDB8 0A64C4 0234+00 1/1 0/0 0/0 .text setCollisionPos__9daAlink_cFv */ #pragma push @@ -15113,26 +15008,28 @@ asm float daAlink_c::getBaseAnimeFrame() const { #pragma pop /* 800AC378-800AC394 0A6CB8 001C+00 1/0 0/0 0/0 .text setAnimeFrame__9daAlink_cFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setAnimeFrame(f32 param_0) { - nofralloc -#include "asm/d/a/d_a_alink/setAnimeFrame__9daAlink_cFf.s" +void daAlink_c::setAnimeFrame(f32 frame) { + mFrameCtrl1[0].setFrame(frame); + mFrameCtrl1[1].setFrame(frame); + mFrameCtrl1[2].setFrame(frame); + mFrameCtrl2[0].setFrame(frame); + mFrameCtrl2[1].setFrame(frame); + mFrameCtrl2[2].setFrame(frame); } -#pragma pop /* 800AC394-800AC450 0A6CD4 00BC+00 6/6 0/0 0/0 .text * setFrameCtrl__9daAlink_cFP16daPy_frameCtrl_cUcssff */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setFrameCtrl(daPy_frameCtrl_c* param_0, u8 param_1, s16 param_2, s16 param_3, - f32 param_4, f32 param_5) { - nofralloc -#include "asm/d/a/d_a_alink/setFrameCtrl__9daAlink_cFP16daPy_frameCtrl_cUcssff.s" +void daAlink_c::setFrameCtrl(daPy_frameCtrl_c* p_ctrl, u8 attr, s16 start, s16 end, + f32 rate, f32 frame) { + if (i_checkNoResetFlg0(UNDER_WATER_MOVEMENT)) { + if (checkZoraWearAbility()) { + rate *= daAlinkHIO_magneBoots_c0::m.mZoraWaterAnmSpeed; + } else { + rate *= daAlinkHIO_magneBoots_c0::m.mWaterWalkAnmRate; + } + } + p_ctrl->setFrameCtrl(attr, start, end, rate, frame); } -#pragma pop /* ############################################################################################## */ /* 80453278-80453280 001878 0008+00 1/1 0/0 0/0 .sdata2 kandelaarAnm$62207 */ @@ -15187,14 +15084,13 @@ asm void daAlink_c::getUnderUpperAnime(daAlink_c::daAlink_ANM param_0, J3DAnmTra #pragma pop /* 800AC738-800AC754 0A7078 001C+00 7/7 0/0 0/0 .text setDoubleAnimeBlendRatio__9daAlink_cFf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setDoubleAnimeBlendRatio(f32 param_0) { - nofralloc -#include "asm/d/a/d_a_alink/setDoubleAnimeBlendRatio__9daAlink_cFf.s" +void daAlink_c::setDoubleAnimeBlendRatio(f32 param_0) { + f32 tmp = lit_6040; // remove later + field_0x1f28[0].setRatio(tmp - param_0); + field_0x1f28[1].setRatio(param_0); + field_0x1f40[0].setRatio(tmp - param_0); + field_0x1f40[1].setRatio(param_0); } -#pragma pop /* 800AC754-800ACA14 0A7094 02C0+00 2/2 0/0 0/0 .text * commonDoubleAnime__9daAlink_cFP15J3DAnmTransformP15J3DAnmTransformP15J3DAnmTransformP15J3DAnmTransformfffi @@ -15237,37 +15133,22 @@ asm void daAlink_c::commonSingleAnime(J3DAnmTransform* param_0, J3DAnmTransform* /* 800ACF80-800ACFB0 0A78C0 0030+00 88/88 0/0 0/0 .text * setSingleAnimeBase__9daAlink_cFQ29daAlink_c11daAlink_ANM */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setSingleAnimeBase(daAlink_c::daAlink_ANM param_0) { - nofralloc -#include "asm/d/a/d_a_alink/setSingleAnimeBase__9daAlink_cFQ29daAlink_c11daAlink_ANM.s" +void daAlink_c::setSingleAnimeBase(daAlink_c::daAlink_ANM anm) { + setSingleAnime(anm, lit_6040, FLOAT_LABEL(lit_6108), -1, lit_6109); } -#pragma pop /* 800ACFB0-800ACFE0 0A78F0 0030+00 27/27 0/0 0/0 .text * setSingleAnimeBaseMorf__9daAlink_cFQ29daAlink_c11daAlink_ANMf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setSingleAnimeBaseMorf(daAlink_c::daAlink_ANM param_0, f32 param_1) { - nofralloc -#include "asm/d/a/d_a_alink/setSingleAnimeBaseMorf__9daAlink_cFQ29daAlink_c11daAlink_ANMf.s" +void daAlink_c::setSingleAnimeBaseMorf(daAlink_c::daAlink_ANM anm, f32 param_1) { + setSingleAnime(anm, lit_6040, FLOAT_LABEL(lit_6108), -1, param_1); } -#pragma pop /* 800ACFE0-800AD00C 0A7920 002C+00 77/77 0/0 0/0 .text * setSingleAnimeBaseSpeed__9daAlink_cFQ29daAlink_c11daAlink_ANMff */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setSingleAnimeBaseSpeed(daAlink_c::daAlink_ANM param_0, f32 param_1, +void daAlink_c::setSingleAnimeBaseSpeed(daAlink_c::daAlink_ANM anm, f32 param_1, f32 param_2) { - nofralloc -#include "asm/d/a/d_a_alink/setSingleAnimeBaseSpeed__9daAlink_cFQ29daAlink_c11daAlink_ANMff.s" + setSingleAnime(anm, param_1, FLOAT_LABEL(lit_6108), -1, param_2); } -#pragma pop /* 800AD00C-800AD0F4 0A794C 00E8+00 58/58 0/0 0/0 .text * setSingleAnime__9daAlink_cFQ29daAlink_c11daAlink_ANMffsf */ @@ -15295,14 +15176,12 @@ asm void daAlink_c::setSingleAnimeParam(daAlink_c::daAlink_ANM param_0, /* 800AD128-800AD170 0A7A68 0048+00 1/1 0/0 0/0 .text * animePlay__9daAlink_cFP15J3DAnmTransformP16daPy_frameCtrl_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::animePlay(J3DAnmTransform* param_0, daPy_frameCtrl_c* param_1) { - nofralloc -#include "asm/d/a/d_a_alink/animePlay__9daAlink_cFP15J3DAnmTransformP16daPy_frameCtrl_c.s" +void daAlink_c::animePlay(J3DAnmTransform* param_0, daPy_frameCtrl_c* param_1) { + if (param_0 != NULL) { + param_1->updateFrame(); + param_0->setFrame(param_1->getFrame()); + } } -#pragma pop /* 800AD170-800AD2D8 0A7AB0 0168+00 2/2 0/0 0/0 .text allAnimePlay__9daAlink_cFv */ #pragma push @@ -15891,13 +15770,13 @@ asm void daAlink_c::setPlayerPosAndAngle(f32 (*param_0)[4]) { /* 800B25CC-800B25E8 0ACF0C 001C+00 16/16 0/0 0/0 .text itemTriggerCheck__9daAlink_cFUc */ -u32 daAlink_c::itemTriggerCheck(u8 pTrigger) { +BOOL daAlink_c::itemTriggerCheck(u8 pTrigger) { field_0x2fae |= pTrigger; return mItemTrigger & pTrigger; } /* 800B25E8-800B2604 0ACF28 001C+00 11/11 0/0 0/0 .text itemButtonCheck__9daAlink_cFUc */ -u32 daAlink_c::itemButtonCheck(u8 pButton) { +BOOL daAlink_c::itemButtonCheck(u8 pButton) { field_0x2fae |= pButton; return mItemButton & pButton; } @@ -15918,12 +15797,12 @@ void daAlink_c::spActionTrigger() { itemTriggerCheck(64); } -u32 daAlink_c::midnaTalkTrigger() const { +BOOL daAlink_c::midnaTalkTrigger() const { return mItemTrigger & 4; } -void daAlink_c::swordSwingTrigger() { - itemTriggerCheck(8); +BOOL daAlink_c::swordSwingTrigger() { + return itemTriggerCheck(8); } /* 800B26DC-800B26FC 0AD01C 0020+00 2/2 0/0 0/0 .text setItemActionButtonStatus__9daAlink_cFUc */ @@ -15991,7 +15870,7 @@ void daAlink_c::setBStatus(u8 status) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkAtnWaitAnime() { +asm BOOL daAlink_c::checkAtnWaitAnime() { nofralloc #include "asm/d/a/d_a_alink/checkAtnWaitAnime__9daAlink_cFv.s" } @@ -15999,14 +15878,15 @@ asm void daAlink_c::checkAtnWaitAnime() { /* 800B3358-800B33E4 0ADC98 008C+00 2/2 0/0 0/0 .text * setTiredVoice__9daAlink_cFP16daPy_frameCtrl_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setTiredVoice(daPy_frameCtrl_c* param_0) { - nofralloc -#include "asm/d/a/d_a_alink/setTiredVoice__9daAlink_cFP16daPy_frameCtrl_c.s" +void daAlink_c::setTiredVoice(daPy_frameCtrl_c* param_0) { + if (param_0->checkPass(lit_7448)) { + if (i_dComIfGs_getLife() <= 2) { + voiceStart(Z2SE_AL_V_TIRED_L); + } else { + voiceStart(Z2SE_AL_V_TIRED_S); + } + } } -#pragma pop /* 800B33E4-800B3494 0ADD24 00B0+00 4/4 0/0 0/0 .text checkRestHPAnime__9daAlink_cFv */ #pragma push @@ -16144,22 +16024,20 @@ asm void daAlink_c::checkServiceWaitMode() { #pragma pop /* 800B48D0-800B4908 0AF210 0038+00 18/18 0/0 0/0 .text setJumpMode__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setJumpMode() { - nofralloc -#include "asm/d/a/d_a_alink/setJumpMode__9daAlink_cFv.s" +void daAlink_c::setJumpMode() { + onModeFlg(MODE_JUMP); + field_0x34f8 = mCurrent.mPosition; + field_0x33c4 = field_0x34f8.y; + field_0x33c8 = field_0x34f8.y; } -#pragma pop /* 800B4908-800B4918 0AF248 0010+00 0/0 0/0 1/1 .text getMetamorphoseNearDis__9daAlink_cCFv */ -float daAlink_c::getMetamorphoseNearDis() const { +f32 daAlink_c::getMetamorphoseNearDis() const { return daAlinkHIO_basic_c0::m.mTransformBlockNearDis; } /* 800B4918-800B4928 0AF258 0010+00 0/0 0/0 1/1 .text getMetamorphoseFarDis__9daAlink_cCFv */ -float daAlink_c::getMetamorphoseFarDis() const { +f32 daAlink_c::getMetamorphoseFarDis() const { return daAlinkHIO_basic_c0::m.mTransformBlockFarDis; } @@ -16169,24 +16047,27 @@ s16 daAlink_c::getMetamorphoseFarAngle() const { } /* 800B4938-800B4950 0AF278 0018+00 0/0 1/1 0/0 .text setMidnaMsg__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setMidnaMsg() { - nofralloc -#include "asm/d/a/d_a_alink/setMidnaMsg__9daAlink_cFv.s" +void daAlink_c::setMidnaMsg() { + if (mMidnaMsg != NULL) { + mMidnaMsg->onUseFlg(); + } } -#pragma pop /* 800B4950-800B4A08 0AF290 00B8+00 3/3 0/0 0/0 .text notTalk__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::notTalk() { - nofralloc -#include "asm/d/a/d_a_alink/notTalk__9daAlink_cFv.s" +bool daAlink_c::notTalk() { + BOOL chk; + if (dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd) && dBgS_CheckBGroundPoly(mLinkAcch.m_gnd)) { + chk = true; + } else { + chk = false; + } + + if ((mMidnaTalkDelayTimer != 0 || (i_checkMagneBootsOn() && !cBgW_CheckBGround(mMagneBootsTopVec.y))) || + !i_checkModeFlg(MODE_SWIMMING | MODE_ROPE_WALK | MODE_VINE_CLIMB | MODE_UNK_800 | MODE_RIDING | MODE_NO_COLLISION | MODE_CLIMB | MODE_JUMP) && !chk) { + return true; + } + return false; } -#pragma pop /* 800B4A08-800B4B2C 0AF348 0124+00 11/11 0/0 0/0 .text setTalkStatus__9daAlink_cFv */ #pragma push @@ -16199,14 +16080,13 @@ asm void daAlink_c::setTalkStatus() { #pragma pop /* 800B4B2C-800B4B7C 0AF46C 0050+00 1/1 0/0 0/0 .text getFrontRollRate__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::getFrontRollRate() { - nofralloc -#include "asm/d/a/d_a_alink/getFrontRollRate__9daAlink_cFv.s" +f32 daAlink_c::getFrontRollRate() { + if (checkHeavyStateOn(1, 1)) { + return lit_16641 * mHeavySpeedMultiplier; + } else { + return lit_16641; + } } -#pragma pop /* 800B4B7C-800B5284 0AF4BC 0708+00 2/2 0/0 0/0 .text decideCommonDoStatus__9daAlink_cFv */ @@ -16233,34 +16113,47 @@ asm void daAlink_c::decideDoStatus() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkWaitAction() { +asm BOOL daAlink_c::checkWaitAction() { nofralloc #include "asm/d/a/d_a_alink/checkWaitAction__9daAlink_cFv.s" } #pragma pop /* 800B5BC0-800B5C34 0B0500 0074+00 3/3 0/0 0/0 .text setFallVoice__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setFallVoice() { - nofralloc -#include "asm/d/a/d_a_alink/setFallVoice__9daAlink_cFv.s" +void daAlink_c::setFallVoice() { + if (field_0x3014 == 0 && lit_8782 * (field_0x33c4 - mCurrent.mPosition.y) > lit_8676) { + voiceStart(Z2SE_AL_V_FALL); + field_0x3014 = 1; + } } -#pragma pop /* 800B5C34-800B5C64 0B0574 0030+00 2/2 0/0 0/0 .text setLandPassiveData__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setLandPassiveData() { - nofralloc -#include "asm/d/a/d_a_alink/setLandPassiveData__9daAlink_cFv.s" +void daAlink_c::setLandPassiveData() { + if (field_0x30f0 == 0) { + if (doTrigger()) { + field_0x30f0 = 0x41; + } + } else { + field_0x30f0--; + } } -#pragma pop /* 800B5C64-800B5CCC 0B05A4 0068+00 5/5 0/0 0/0 .text setStepLandVibration__9daAlink_cFv */ +// cXyz issues +#ifdef NONMATCHING +void daAlink_c::setStepLandVibration() { + int shock; + if (checkBootsOrArmorHeavy()) { + shock = 3; + } else { + shock = 1; + } + cXyz xyz(0.0f, 1.0f, 0.0f); + + dComIfGp_getVibration().StartShock(shock, 15, xyz); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -16269,6 +16162,7 @@ asm void daAlink_c::setStepLandVibration() { #include "asm/d/a/d_a_alink/setStepLandVibration__9daAlink_cFv.s" } #pragma pop +#endif /* 800B5CCC-800B5F6C 0B060C 02A0+00 5/5 0/0 0/0 .text checkLandAction__9daAlink_cFi */ #pragma push @@ -16302,14 +16196,12 @@ asm void daAlink_c::checkAutoJumpAction() { #pragma pop /* 800B69CC-800B6A30 0B130C 0064+00 2/2 0/0 0/0 .text checkCutJumpInFly__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkCutJumpInFly() { - nofralloc -#include "asm/d/a/d_a_alink/checkCutJumpInFly__9daAlink_cFv.s" +bool daAlink_c::checkCutJumpInFly() { + if ((mEquipItem == EQUIP_SWORD && i_checkResetFlg0(RFLG0_UNK_80)) || checkForceSwordSwing()) { + return procCutJumpInit(1); + } + return false; } -#pragma pop /* ############################################################################################## */ /* 80450698-8045069C 000118 0004+00 4/4 0/0 0/0 .sdata l_ladderAnmBaseTransY */ @@ -16391,7 +16283,7 @@ asm void daAlink_c::checkItemActorPointer() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkSwordTwirlAction() { +asm bool daAlink_c::checkSwordTwirlAction() { nofralloc #include "asm/d/a/d_a_alink/checkSwordTwirlAction__9daAlink_cFv.s" } @@ -16401,7 +16293,7 @@ asm void daAlink_c::checkSwordTwirlAction() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkUpperItemActionFly() { +asm BOOL daAlink_c::checkUpperItemActionFly() { nofralloc #include "asm/d/a/d_a_alink/checkUpperItemActionFly__9daAlink_cFv.s" } @@ -16506,7 +16398,7 @@ asm void daAlink_c::checkNormalAction() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkReadyItem() { +asm bool daAlink_c::checkReadyItem() { nofralloc #include "asm/d/a/d_a_alink/checkReadyItem__9daAlink_cFv.s" } @@ -16542,7 +16434,7 @@ asm void daAlink_c::checkMoveDoAction() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkSideRollAction(int param_0) { +asm BOOL daAlink_c::checkSideRollAction(int param_0) { nofralloc #include "asm/d/a/d_a_alink/checkSideRollAction__9daAlink_cFi.s" } @@ -16553,7 +16445,7 @@ asm void daAlink_c::checkSideRollAction(int param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkNoUpperAnime() const { +asm BOOL daAlink_c::checkNoUpperAnime() const { nofralloc #include "asm/d/a/d_a_alink/checkNoUpperAnime__9daAlink_cCFv.s" } @@ -16584,7 +16476,7 @@ asm void daAlink_c::checkItemEquipAnime() const { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkEquipAnime() const { +asm BOOL daAlink_c::checkEquipAnime() const { nofralloc #include "asm/d/a/d_a_alink/checkEquipAnime__9daAlink_cCFv.s" } @@ -16680,7 +16572,7 @@ asm void daAlink_c::allUnequip(int param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkItemChangeFromButton() { +asm BOOL daAlink_c::checkItemChangeFromButton() { nofralloc #include "asm/d/a/d_a_alink/checkItemChangeFromButton__9daAlink_cFv.s" } @@ -16690,7 +16582,7 @@ asm void daAlink_c::checkItemChangeFromButton() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkNextActionFromButton() { +asm BOOL daAlink_c::checkNextActionFromButton() { nofralloc #include "asm/d/a/d_a_alink/checkNextActionFromButton__9daAlink_cFv.s" } @@ -16700,7 +16592,7 @@ asm void daAlink_c::checkNextActionFromButton() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkGroundSpecialMode() { +asm BOOL daAlink_c::checkGroundSpecialMode() { nofralloc #include "asm/d/a/d_a_alink/checkGroundSpecialMode__9daAlink_cFv.s" } @@ -16845,7 +16737,7 @@ BOOL daAlink_c::checkBootsOrArmorHeavy() const { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkHeavyStateOn(int param_0, int param_1) { +asm BOOL daAlink_c::checkHeavyStateOn(int param_0, int param_1) { nofralloc #include "asm/d/a/d_a_alink/checkHeavyStateOn__9daAlink_cFii.s" } @@ -17059,6 +16951,12 @@ asm void daAlink_c::checkSceneChange(int param_0) { #pragma pop /* 800BF084-800BF0B8 0B99C4 0034+00 1/0 0/0 0/0 .text voiceStart__9daAlink_cFUl */ +// matches, but JAISoundID(u32) constructor needs to be inlined? +#ifdef NONMATCHING +void daAlink_c::voiceStart(u32 sfx_id) { + mZ2Link.startLinkVoice(sfx_id, mVoiceReverbIntensity); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -17067,6 +16965,7 @@ asm void daAlink_c::voiceStart(u32 param_0) { #include "asm/d/a/d_a_alink/voiceStart__9daAlink_cFUl.s" } #pragma pop +#endif /* 800BF0B8-800BF0EC 0B99F8 0034+00 14/14 0/0 0/0 .text voiceStartLevel__9daAlink_cFUl */ #pragma push @@ -17202,45 +17101,146 @@ asm void daAlink_c::returnKeepItemData() { } #pragma pop +inline daHorse_c* i_dComIfGp_getHorseActor() { + return (daHorse_c*)g_dComIfG_gameInfo.play.getPlayerPtr(1); +} + /* 800BF8D0-800BF9F0 0BA210 0120+00 2/2 0/0 0/0 .text setItemModel__9daAlink_cFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::setItemModel() { +asm BOOL daAlink_c::setItemModel() { nofralloc #include "asm/d/a/d_a_alink/setItemModel__9daAlink_cFv.s" } #pragma pop /* 800BF9F0-800BFD74 0BA330 0384+00 4/4 0/0 0/0 .text setItemActor__9daAlink_cFv */ +// register issues +#ifdef NONMATCHING +BOOL daAlink_c::setItemActor() { + if (mEquipItem == BOOMERANG) { + fopAc_ac_c* actor = (fopAc_ac_c*)fopAcM_fastCreate(0xFE, 0, &mCurrent.mPosition, -1, NULL, NULL, -1, NULL, NULL); + if (actor == NULL) { + deleteEquipItem(0, 0); + return false; + } else { + mItemActor.setData(actor); + field_0x2f94 = 2; + return true; + } + } + else if (mEquipItem == COPY_ROD) { + fopAc_ac_c* actor = (fopAc_ac_c*)fopAcM_fastCreate(0x2F4, 0, &mCurrent.mPosition, -1, NULL, NULL, -1, NULL, NULL); + if (actor == NULL) { + deleteEquipItem(0, 0); + return false; + } else { + mItemActor.setData(actor); + field_0x2f94 = 2; + return true; + } + } + else if (mEquipItem == IRONBALL) { + fopAc_ac_c* actor = daCrod_c::makeIronBallDummy(this); + if (actor == NULL) { + if (checkIronBallWaitAnime()) { + resetUpperAnime(UPPER_NOW, -1.0f); + } + deleteEquipItem(0, 0); + return false; + } else { + mItemActor.setData(actor); + field_0x173c.SetActor(actor); + return true; + } + } + else if (checkFisingRodLure()) { + u32 id = fopAcM_create(0x2E4, 0x10D, &mLeftHandPos, -1, NULL, NULL, 0xFF); + mItemActor.setID(id); + initFishingRodHand(); + return 1; + } + else if (checkFishingRodItem(mEquipItem)) { + setGroundFishingRodActor(); + return 1; + } + else if (checkBombItem(mEquipItem)) { + if (checkHorseRide()) { + if (!i_dComIfGp_getHorseActor()->checkNoBombProc() && (mActionID != HORSE_TURN || !i_checkModeFlg(MODE_DISABLE_ITEMS))) { + mEquipItem = NO_ITEM; + return 1; + } + } + cXyz create_pos = (mLeftHandPos + mRightHandPos) * 0.5f; + if (checkReadyItem()) { + fopAc_ac_c* actor; + if (mEquipItem == NORMAL_BOMB) { + actor = dBomb_c::createNormalBombPlayer(&create_pos); + } else { + actor = dBomb_c::createWaterBombPlayer(&create_pos); + } + if (actor != NULL) { + mActiveBombNum++; + setGrabItemActor(actor); + dComIfGp_addSelectItemNum(mSelectItemId, -1); + field_0x33e4 = 38.0f; + setGrabUpperAnime(daAlinkHIO_basic_c0::m.mAnmBlendFactor); + } + } + mEquipItem = NO_ITEM; + return true; + } + return false; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::setItemActor() { +asm BOOL daAlink_c::setItemActor() { nofralloc #include "asm/d/a/d_a_alink/setItemActor__9daAlink_cFv.s" } #pragma pop +#endif /* 800BFD74-800BFDB0 0BA6B4 003C+00 2/2 0/0 0/0 .text makeItemType__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::makeItemType() { - nofralloc -#include "asm/d/a/d_a_alink/makeItemType__9daAlink_cFv.s" +void daAlink_c::makeItemType() { + if (!setItemModel()) { + setItemActor(); + } +} + +bool daPy_py_c::checkZoraWearFlg() const { + return dComIfGs_getSelectEquipClothes() == WEAR_ZORA; } -#pragma pop /* 800BFDB0-800BFDFC 0BA6F0 004C+00 28/28 0/0 0/0 .text checkZoraWearAbility__9daAlink_cCFv */ +// li 0 needs to be mr +#ifdef NONMATCHING +BOOL daAlink_c::checkZoraWearAbility() const { + bool ret = false; + bool wear_zora = false; + if (!i_checkWolf()) { + if (checkZoraWearFlg()) { + wear_zora = true; + } + } + if (wear_zora && !i_checkNoResetFlg2(UNK_ARMOR)) { + ret = true; + } + return ret; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkZoraWearAbility() const { +asm BOOL daAlink_c::checkZoraWearAbility() const { nofralloc #include "asm/d/a/d_a_alink/checkZoraWearAbility__9daAlink_cCFv.s" } #pragma pop +#endif /* 800BFDFC-800BFE48 0BA73C 004C+00 5/5 0/0 0/0 .text checkMagicArmorWearAbility__9daAlink_cCFv */ #pragma push @@ -17387,7 +17387,7 @@ asm bool daAlink_c::checkCastleTown() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkCloudSea() { +asm bool daAlink_c::checkCloudSea() { nofralloc #include "asm/d/a/d_a_alink/checkCloudSea__9daAlink_cFv.s" } @@ -17397,109 +17397,72 @@ asm void daAlink_c::checkCloudSea() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkRoomOnly() { +asm bool daAlink_c::checkRoomOnly() { nofralloc #include "asm/d/a/d_a_alink/checkRoomOnly__9daAlink_cFv.s" } #pragma pop -/* ############################################################################################## */ -/* 80392094-80392094 01E6F4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_803925C2 = "D_MN04"; -#pragma pop - /* 800C044C-800C04B4 0BAD8C 0068+00 3/3 0/0 0/0 .text checkLv2DungeonRoomSpecial__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkLv2DungeonRoomSpecial() { - nofralloc -#include "asm/d/a/d_a_alink/checkLv2DungeonRoomSpecial__9daAlink_cFv.s" +bool daAlink_c::checkLv2DungeonRoomSpecial() { + return checkStageName("D_MN04") && (dComIfGp_roomControl_getStayNo() == 14 || dComIfGp_roomControl_getStayNo() == 16 || dComIfGp_roomControl_getStayNo() == 17); } -#pragma pop /* 800C04B4-800C0520 0BADF4 006C+00 2/2 0/0 0/0 .text checkRoomSpecial__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkRoomSpecial() { - nofralloc -#include "asm/d/a/d_a_alink/checkRoomSpecial__9daAlink_cFv.s" -} -#pragma pop - -/* 800C0520-800C0594 0BAE60 0074+00 1/1 0/0 0/0 .text checkRoom__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkRoom() { - nofralloc -#include "asm/d/a/d_a_alink/checkRoom__9daAlink_cFv.s" -} -#pragma pop - -/* 800C0594-800C05DC 0BAED4 0048+00 8/8 0/0 0/0 .text checkNotBattleStage__9daAlink_cFv - */ +// 1 wrong branch #ifdef NONMATCHING -bool daAlink_c::checkNotBattleStage(void) { - bool isNotBattleStage = false; - - if (checkRoom() || checkCastleTown()) { - isNotBattleStage = true; - } - - return isNotBattleStage; +bool daAlink_c::checkRoomSpecial() { + return !checkStageName("D_MN11") || dComIfGp_roomControl_getStayNo() == 1 || dComIfGp_roomControl_getStayNo() == 2 || checkLv2DungeonRoomSpecial(); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm bool daAlink_c::checkNotBattleStage() { +asm bool daAlink_c::checkRoomSpecial() { nofralloc -#include "asm/d/a/d_a_alink/checkNotBattleStage__9daAlink_cFv.s" +#include "asm/d/a/d_a_alink/checkRoomSpecial__9daAlink_cFv.s" } #pragma pop #endif -/* 800C05DC-800C0630 0BAF1C 0054+00 2/2 0/0 0/0 .text checkNotHeavyBootsStage__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkNotHeavyBootsStage() { - nofralloc -#include "asm/d/a/d_a_alink/checkNotHeavyBootsStage__9daAlink_cFv.s" +/* 800C0520-800C0594 0BAE60 0074+00 1/1 0/0 0/0 .text checkRoom__9daAlink_cFv */ +bool daAlink_c::checkRoom() { + return checkRoomOnly() || checkRoomSpecial() || checkStageName("R_SP161") && !dComIfGs_isOneZoneSwitch(14, -1); +} + +/* 800C0594-800C05DC 0BAED4 0048+00 8/8 0/0 0/0 .text checkNotBattleStage__9daAlink_cFv + */ +bool daAlink_c::checkNotBattleStage() { + return checkRoom() || checkCastleTown(); +} + +/* 800C05DC-800C0630 0BAF1C 0054+00 2/2 0/0 0/0 .text checkNotHeavyBootsStage__9daAlink_cFv */ +bool daAlink_c::checkNotHeavyBootsStage() { + return (checkNotBattleStage() || checkCloudSea()) && !checkLv2DungeonRoomSpecial(); } -#pragma pop /* 800C0630-800C0678 0BAF70 0048+00 1/1 0/0 0/0 .text checkNotAutoJumpStage__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkNotAutoJumpStage() { - nofralloc -#include "asm/d/a/d_a_alink/checkNotAutoJumpStage__9daAlink_cFv.s" +bool daAlink_c::checkNotAutoJumpStage() { + return checkRoomOnly() || checkCastleTown(); } -#pragma pop - -/* ############################################################################################## */ -/* 80392094-80392094 01E6F4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_803925C9 = "R_SP128"; -#pragma pop /* 800C0678-800C077C 0BAFB8 0104+00 3/3 0/0 0/0 .text checkCastleTownUseItem__9daAlink_cFUs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkCastleTownUseItem(u16 param_0) { - nofralloc -#include "asm/d/a/d_a_alink/checkCastleTownUseItem__9daAlink_cFUs.s" +bool daAlink_c::checkCastleTownUseItem(u16 item_id) { + 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)) { + return true; + } else { + return false; + } + } + return true; } -#pragma pop /* 800C077C-800C0A9C 0BB0BC 0320+00 1/1 0/0 0/0 .text changeItemTriggerKeepProc__9daAlink_cFUci */ #pragma push @@ -17594,11 +17557,11 @@ MtxP daAlink_c::getModelJointMtx(u16 param_0) { /* 800C1DE0-800C1E0C 0BC720 002C+00 1/0 0/0 0/0 .text onFrollCrashFlg__9daAlink_cFUci */ void daAlink_c::onFrollCrashFlg(u8 param_0, int param_1) { if (param_1 != 0) { - i_onNoResetFlg0(UnkFrollCrashFlg2); + i_onNoResetFlg0(UNK_F_ROLL_CRASH_2); } else { - i_onNoResetFlg0(UnkFrollCrashFlg1); + i_onNoResetFlg0(UNK_F_ROLL_CRASH_1); } - field_0x2fa4 = param_0; + mRollCrashFlg = param_0; } /* ############################################################################################## */ @@ -17657,7 +17620,7 @@ void daAlink_c::procPreActionUnequipInit(int param_0, fopAc_ac_c* param_1) { field_0x280c.setData(param_1); field_0x300e = 1; if (fopAcM_GetName(param_1) == 0x2cb) { - if (field_0x2fdc == 0x48) { + if (mEquipItem == KANTERA) { field_0x3010 = 1; } else { if (i_checkNoResetFlg2(1) != 0) { @@ -17694,35 +17657,34 @@ asm void daAlink_c::procPreActionUnequip() { /* 800C3098-800C30F0 0BD9D8 0058+00 1/1 0/0 0/0 .text procServiceWaitInit__9daAlink_cFv */ -#ifdef NONMATCHING bool daAlink_c::procServiceWaitInit() { commonProcInit(SERVICE_WAIT); - setSingleAnimeBase(0x90); - mNormalSpeed = 0.0f; - mNext.mAngle.y = mCollisionRot.y; + setSingleAnimeBase(ANM_SERVICE_WAIT); + mNormalSpeed = FLOAT_LABEL(lit_6108); + mCurrent.mAngle.y = mCollisionRot.y; field_0x2f98 = 4; return true; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::procServiceWaitInit() { - nofralloc -#include "asm/d/a/d_a_alink/procServiceWaitInit__9daAlink_cFv.s" -} -#pragma pop -#endif /* 800C30F0-800C3224 0BDA30 0134+00 1/0 0/0 0/0 .text procServiceWait__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procServiceWait() { - nofralloc -#include "asm/d/a/d_a_alink/procServiceWait__9daAlink_cFv.s" +bool daAlink_c::procServiceWait() { + J3DFrameCtrl* ctrl = &mFrameCtrl1[0]; + if ((!checkNextAction(0) && !checkFrontWallTypeAction()) && (checkEventRun() || checkGuardActionChange() || mCollisionRot.y != field_0x2fe6)) { + ctrl->setRate(FLOAT_LABEL(lit_6108)); + procWaitInit(); + } else { + if (ctrl->checkPass(lit_10040)) { + voiceStart(Z2SE_AL_V_RELAX_A); + } + else if (ctrl->checkPass(lit_11673)) { + voiceStart(Z2SE_AL_V_RELAX_B); + } + else if (ctrl->checkPass(lit_25684)) { + voiceStart(Z2SE_AL_V_RELAX_C); + } + } + return true; } -#pragma pop /* 800C3224-800C3338 0BDB64 0114+00 2/2 0/0 0/0 .text procTiredWaitInit__9daAlink_cFv */ #pragma push @@ -17735,20 +17697,24 @@ asm void daAlink_c::procTiredWaitInit() { #pragma pop /* 800C3338-800C33B8 0BDC78 0080+00 1/0 0/0 0/0 .text procTiredWait__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procTiredWait() { - nofralloc -#include "asm/d/a/d_a_alink/procTiredWait__9daAlink_cFv.s" +bool daAlink_c::procTiredWait() { + daPy_frameCtrl_c* ctrl = &mFrameCtrl1[0]; + if (!checkNextAction(0)) { + if (ctrl->checkAnmEnd()) { + setSingleAnimeBase(ANM_TIRED_WAIT); + } + else if (ctrl->getAttribute() == 2) { + setTiredVoice(ctrl); + } + } + return true; } -#pragma pop /* 800C33B8-800C3504 0BDCF8 014C+00 26/26 0/0 0/0 .text procWaitInit__9daAlink_cFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::procWaitInit() { +asm bool daAlink_c::procWaitInit() { nofralloc #include "asm/d/a/d_a_alink/procWaitInit__9daAlink_cFv.s" } @@ -17765,34 +17731,50 @@ asm void daAlink_c::procWait() { #pragma pop /* 800C36CC-800C3730 0BE00C 0064+00 3/3 0/0 0/0 .text procMoveInit__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procMoveInit() { - nofralloc -#include "asm/d/a/d_a_alink/procMoveInit__9daAlink_cFv.s" +bool daAlink_c::procMoveInit() { + if (!commonProcInitNotSameProc(HUMAN_MOVE)) { + return false; + } + setBlendMoveAnime(daAlinkHIO_basic_c0::m.mAnmBlendFactor); + setFootEffectProcType(3); + return true; } -#pragma pop /* 800C3730-800C3810 0BE070 00E0+00 1/0 0/0 0/0 .text procMove__9daAlink_cFv */ +// results of cLib_minMaxLimit are put in r4 instead of r3 +#ifdef NONMATCHING +bool daAlink_c::procMove() { + setFootEffectProcType(3); + if (!checkNextAction(0) && !checkFrontWallTypeAction()) { + if (mDemo.getDemoMode() == 2 && mNormalSpeed > field_0x594 * daAlinkHIO_move_c0::m.mWalkChangeRate) { + mNormalSpeed = field_0x594 * daAlinkHIO_move_c0::m.mWalkChangeRate; + } + setBlendMoveAnime(-1.0f); + if (field_0x3174 != 8) { + field_0x30a0 = cLib_minMaxLimit((s16)(field_0x2ff0 >> 1), daAlinkHIO_basic_c0::m.mNeckMaxUp, daAlinkHIO_basic_c0::m.mNeckMaxDown); + } + } + return true; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::procMove() { +asm bool daAlink_c::procMove() { nofralloc #include "asm/d/a/d_a_alink/procMove__9daAlink_cFv.s" } #pragma pop +#endif /* 800C3810-800C3868 0BE150 0058+00 1/1 0/0 0/0 .text procAtnMoveInit__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procAtnMoveInit() { - nofralloc -#include "asm/d/a/d_a_alink/procAtnMoveInit__9daAlink_cFv.s" +bool daAlink_c::procAtnMoveInit() { + if (!commonProcInitNotSameProc(HUMAN_ATN_MOVE)) { + return false; + } + setBlendAtnMoveAnime(daAlinkHIO_basic_c0::m.mAnmBlendFactor); + return true; } -#pragma pop /* 800C3868-800C38CC 0BE1A8 0064+00 1/0 0/0 0/0 .text procAtnMove__9daAlink_cFv */ bool daAlink_c::procAtnMove() { @@ -17806,136 +17788,329 @@ bool daAlink_c::procAtnMove() { /* 800C38CC-800C397C 0BE20C 00B0+00 4/4 0/0 0/0 .text procAtnActorWaitInit__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procAtnActorWaitInit() { - nofralloc -#include "asm/d/a/d_a_alink/procAtnActorWaitInit__9daAlink_cFv.s" +bool daAlink_c::procAtnActorWaitInit() { + if (!commonProcInitNotSameProc(HUMAN_ATN_ACTOR_WAIT)) { + return false; + } + + if (mTargetedActor != NULL) { + fopAcM_searchActorAngleY(this, mTargetedActor); + } + mNormalSpeed = FLOAT_LABEL(lit_6108); + if (field_0x2f98 != 2) { + field_0x2f98 = 3; + } + + if (checkAtnWaitAnime()) { + setBlendAtnMoveAnime(daAlinkHIO_basic_c0::m.mAnmBlendFactor); + } else { + setBlendMoveAnime(daAlinkHIO_basic_c0::m.mAnmBlendFactor); + } + + return true; } -#pragma pop /* 800C397C-800C39EC 0BE2BC 0070+00 1/0 0/0 0/0 .text procAtnActorWait__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procAtnActorWait() { - nofralloc -#include "asm/d/a/d_a_alink/procAtnActorWait__9daAlink_cFv.s" +bool daAlink_c::procAtnActorWait() { + if (!checkNextAction(0)) { + if (checkAtnWaitAnime()) { + setBlendAtnMoveAnime(lit_6041); + } else { + setBlendMoveAnime(lit_6041); + } + checkSwordTwirlAction(); + } + return true; } -#pragma pop /* 800C39EC-800C3A44 0BE32C 0058+00 3/3 0/0 0/0 .text procAtnActorMoveInit__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procAtnActorMoveInit() { - nofralloc -#include "asm/d/a/d_a_alink/procAtnActorMoveInit__9daAlink_cFv.s" +bool daAlink_c::procAtnActorMoveInit() { + if (!commonProcInitNotSameProc(HUMAN_ATN_ACTOR_MOVE)) { + return false; + } + setBlendAtnMoveAnime(daAlinkHIO_basic_c0::m.mAnmBlendFactor); + return true; } -#pragma pop /* 800C3A44-800C3A94 0BE384 0050+00 1/0 0/0 0/0 .text procAtnActorMove__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procAtnActorMove() { - nofralloc -#include "asm/d/a/d_a_alink/procAtnActorMove__9daAlink_cFv.s" +bool daAlink_c::procAtnActorMove() { + if (!checkNextAction(0)) { + setBlendAtnMoveAnime(lit_6041); + checkSwordTwirlAction(); + } + return 1; } -#pragma pop /* 800C3A94-800C3B1C 0BE3D4 0088+00 2/2 0/0 0/0 .text procWaitTurnInit__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procWaitTurnInit() { - nofralloc -#include "asm/d/a/d_a_alink/procWaitTurnInit__9daAlink_cFv.s" +bool daAlink_c::procWaitTurnInit() { + if (!commonProcInitNotSameProc(HUMAN_WAIT_TURN)) { + return false; + } + + setSingleAnimeBaseSpeed(ANM_WAIT_TURN, daAlinkHIO_basic_c0::m.mWaitTurnSpeed, daAlinkHIO_basic_c0::m.mAnmBlendFactor); + if (checkEventRun()) { + mNormalSpeed = FLOAT_LABEL(lit_6108); + } + field_0x300e = field_0x2fe2; + mCurrent.mAngle.y = mCollisionRot.y; + return true; } -#pragma pop /* 800C3B1C-800C3C3C 0BE45C 0120+00 1/0 0/0 0/0 .text procWaitTurn__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procWaitTurn() { - nofralloc -#include "asm/d/a/d_a_alink/procWaitTurn__9daAlink_cFv.s" +BOOL daAlink_c::procWaitTurn() { + cLib_chaseF(&mNormalSpeed, FLOAT_LABEL(lit_6108), daAlinkHIO_move_c0::m.mDeceleration); + if (checkGroundSpecialMode()) { + return true; + } else { + if (i_checkEndResetFlg0(ERFLG0_UNK_100000)) { + return procFloorDownReboundInit(); + } else { + s16 angle = cLib_addCalcAngleS(&mCollisionRot.y, field_0x300e, 30, 0x3CDF, 8000); + mCurrent.mAngle.y = mCollisionRot.y; + if (checkNextActionFromButton()) { + return true; + } else { + if (angle == 0) { + if (checkEventRun()) { + if (mDemo.getDemoMode() == 5) { + dComIfGp_evmng_cutEnd(field_0x3184); + } + else if (!checkNextAction(0)) { + checkWaitAction(); + } + } else { + checkNextAction(0); + } + } + } + } + } + return true; } -#pragma pop /* 800C3C3C-800C3D38 0BE57C 00FC+00 2/2 0/0 0/0 .text procMoveTurnInit__9daAlink_cFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procMoveTurnInit(int param_0) { - nofralloc -#include "asm/d/a/d_a_alink/procMoveTurnInit__9daAlink_cFi.s" +bool daAlink_c::procMoveTurnInit(int param_0) { + if (!commonProcInitNotSameProc(HUMAN_MOVE_TURN)) { + return false; + } + + setBlendMoveAnime(daAlinkHIO_basic_c0::m.mAnmBlendFactor); + dComIfGp_setPlayerStatus0(0, 0x800); + + if (param_0 != 0) { + field_0x300e = (daAlinkHIO_move_c0::m.mMaxTurnAngle << 2) + 19030; + field_0x3010 = daAlinkHIO_move_c0::m.mMaxTurnAngle << 1; + field_0x300a = 2; + mCurrent.mAngle.y = field_0x2fe2; + mNormalSpeed *= lit_5943; + } else { + field_0x300e = daAlinkHIO_move_c0::m.mMaxTurnAngle << 1; + field_0x3010 = daAlinkHIO_move_c0::m.mMaxTurnAngle; + field_0x300a = 3; + } + field_0x300e = daAlinkHIO_move_c0::m.mMaxTurnAngle << 1; + field_0x3010 = daAlinkHIO_move_c0::m.mMaxTurnAngle; + return true; } -#pragma pop /* 800C3D38-800C3DA0 0BE678 0068+00 1/0 0/0 0/0 .text procMoveTurn__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procMoveTurn() { - nofralloc -#include "asm/d/a/d_a_alink/procMoveTurn__9daAlink_cFv.s" +bool daAlink_c::procMoveTurn() { + setSpeedAndAngleNormal(); + cLib_addCalcAngleS(&mCollisionRot.y, mCurrent.mAngle.y, field_0x300a, field_0x300e, field_0x3010); + + if (!checkNextAction(0)) { + setBlendMoveAnime(lit_6041); + } + return true; } -#pragma pop /* 800C3DA0-800C3F60 0BE6E0 01C0+00 2/2 0/0 0/0 .text procSideStepInit__9daAlink_cFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procSideStepInit(int param_0) { - nofralloc -#include "asm/d/a/d_a_alink/procSideStepInit__9daAlink_cFi.s" +bool daAlink_c::procSideStepInit(int jump_type) { + if (jump_type == 1 && !checkHeavyStateOn(1, 1) && (checkNoUpperAnime() || checkEquipAnime() || field_0x2fcc != 0 && checkUpperGuardAnime())) { + return procBackJumpInit(0); + } else { + commonProcInit(HUMAN_SIDESTEP); + field_0x2f98 = jump_type; + + if (field_0x2f98 == 1) { + mCurrent.mAngle.y = mCollisionRot.y + 0x8000; + setSingleAnimeParam(ANM_BACK_JUMP, &daAlinkHIO_sideStep_c0::m.mBackJumpAnm); + mNormalSpeed = daAlinkHIO_sideStep_c0::m.mBackJumpSpeedH; + mSpeed.y = daAlinkHIO_sideStep_c0::m.mBackJumpSpeedV; + field_0x300a = 0; + } else { + daAlink_ANM anm_id; + if (field_0x2f98 == 2) { + anm_id = ANM_SIDE_STEP_LEFT; + mCurrent.mAngle.y = mCollisionRot.y + 0x4000; + } else { + anm_id = ANM_SIDE_STEP_RIGHT; + mCurrent.mAngle.y = mCollisionRot.y - 0x4000; + } + setSingleAnimeParam(anm_id, &daAlinkHIO_sideStep_c0::m.mSideJumpAnm); + mNormalSpeed = daAlinkHIO_sideStep_c0::m.mSideJumpSpeedH; + mSpeed.y = daAlinkHIO_sideStep_c0::m.mSideJumpSpeedV; + field_0x300a = 1; + } + if (i_checkNoResetFlg0(UNDER_WATER_MOVEMENT)) { + mNormalSpeed *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityX; + mSpeed.y *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityY; + } + voiceStart(Z2SE_AL_V_JUMP_S); + mCommonCounter = 0; + field_0x300e = 0; + return 1; + } } -#pragma pop /* 800C3F60-800C40F0 0BE8A0 0190+00 1/0 0/0 0/0 .text procSideStep__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procSideStep() { - nofralloc -#include "asm/d/a/d_a_alink/procSideStep__9daAlink_cFv.s" +bool daAlink_c::procSideStep() { + if (mTargetedActor != NULL && field_0x300a != 0) { + s16 actor_angle = fopAcM_searchActorAngleY(this, mTargetedActor); + cLib_addCalcAngleS(&mCollisionRot.y, actor_angle, 5, 0x5E8, 0x13C); + if (field_0x2f98 == 2) { + mCurrent.mAngle.y = mCollisionRot.y + 0x4000; + } else { + mCurrent.mAngle.y = mCollisionRot.y - 0x4000; + } + } + if (doTrigger() && field_0x300a != 0) { + mCommonCounter = 1; + } + + if (checkUpperItemActionFly()) { + return true; + } + else if (mLinkAcch.ChkGroundHit() && field_0x300e != 0) { + if (mCommonCounter != 0 && checkSideRollAction(field_0x2f98)) { + return true; + } else { + return procSideStepLandInit(); + } + } + else if (checkNoUpperAnime() && checkForceSwordSwing()) { + setCutDash(1, 0); + } + else if (mDemo.getDemoMode() != 16 && mCurrent.mPosition.y < field_0x34f8.y - daAlinkHIO_sideStep_c0::m.mFallHeight) { + return procFallInit(2, daAlinkHIO_sideStep_c0::m.mFallInterpolation); + } + + field_0x300e = 1; + checkItemChangeFromButton(); + return true; } -#pragma pop /* 800C40F0-800C4278 0BEA30 0188+00 1/1 0/0 0/0 .text procSideStepLandInit__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procSideStepLandInit() { - nofralloc -#include "asm/d/a/d_a_alink/procSideStepLandInit__9daAlink_cFv.s" +bool daAlink_c::procSideStepLandInit() { + commonProcInit(HUMAN_SIDESTEP_LAND); + if (field_0x2f98 == 1) { + field_0x2f9d = 4; + setSingleAnimeParam(ANM_BACK_JUMP_LAND, &daAlinkHIO_sideStep_c0::m.mBackLandAnm); + field_0x3478 = daAlinkHIO_sideStep_c0::m.mBackLandAnm.field_0x10; + field_0x2f98 = 2; + field_0x300a = 0; + field_0x2fb0 = 0; + field_0x2fcc = 10; + } else { + daAlink_ANM anm_id; + u16 uvar3; + if (field_0x2f98 == 2) { + anm_id = ANM_SIDE_STEP_LEFT_LAND; + uvar3 = 0x3F; + } else { + anm_id = ANM_SIDE_STEP_RIGHT_LAND; + uvar3 = 0x40; + } + setSingleAnimeParam(anm_id, &daAlinkHIO_sideStep_c0::m.mSideLandAnm); + field_0x3478 = daAlinkHIO_sideStep_c0::m.mSideLandAnm.field_0x10; + field_0x300a = 1; + field_0x2fb0 = 8; + field_0x2fcc = 0; + if (checkEnemyGroup(mTargetedActor) && mEquipItem == EQUIP_SWORD && checkNoUpperAnime()) { + setUpperAnimeBaseSpeed(uvar3, daAlinkHIO_atnMove_c0::m.mWaitAnmSpeed, lit_6041); + seStartSwordCut(Z2SE_AL_WAIT_SWORD_SWING); + } + } + field_0x2f9d = 4; + setFootEffectProcType(2); + i_onResetFlg1(0x30); + mNormalSpeed = FLOAT_LABEL(lit_6108); + mCommonCounter = 0; + mCurrent.mAngle.y = mCollisionRot.y; + setStepLandVibration(); + return true; } -#pragma pop /* 800C4278-800C4378 0BEBB8 0100+00 1/0 0/0 0/0 .text procSideStepLand__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procSideStepLand() { - nofralloc -#include "asm/d/a/d_a_alink/procSideStepLand__9daAlink_cFv.s" +bool daAlink_c::procSideStepLand() { + daPy_frameCtrl_c* ctrl = &mFrameCtrl1[0]; + i_onEndResetFlg0(ERFLG0_UNK_8000000); + if (field_0x2fcc != 0) { + field_0x2fcc = 10; + } + + if (doTrigger() && field_0x300a != 0) { + mCommonCounter = 1; + } + + if (ctrl->checkAnmEnd()) { + if (mDemo.getDemoMode() == 16) { + dComIfGp_evmng_cutEnd(field_0x3184); + } else { + checkNextAction(0); + } + } + else if (ctrl->getFrame() > field_0x3478) { + if (mCommonCounter != 0 && checkSideRollAction(field_0x2f98)) { + return true; + } + checkNextAction(1); + } + + return true; } -#pragma pop /* 800C4378-800C4514 0BECB8 019C+00 1/1 0/0 0/0 .text procSlideInit__9daAlink_cFs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procSlideInit(s16 param_0) { - nofralloc -#include "asm/d/a/d_a_alink/procSlideInit__9daAlink_cFs.s" +bool daAlink_c::procSlideInit(s16 param_0) { + commonProcInit(HUMAN_SLIDE); + + field_0x814.SetWeight(255); + field_0x3090 = 8; + mCurrent.mAngle.y = param_0; + + if (getMoveBGActorName(mLinkAcch.m_gnd, 0) == 0xD4) { + field_0x300e = 1; + } else { + field_0x300e = 0; + } + + if (cLib_distanceAngleS(param_0, mCollisionRot.y) < 0x3800 || field_0x300e != 0) { + field_0x3198 = 1; + setSingleAnimeParam(ANM_FORWARD_SLIDE, &daAlinkHIO_slide_c0::m.mForwardSlideAnm); + dComIfGp_setPlayerStatus1(0, 0x100); + onModeFlg(MODE_UNK_8000); + onModeFlg(MODE_UNK_2000000); + onModeFlg(MODE_UNK_20000000); + mNormalSpeed = FLOAT_LABEL(lit_6108); + field_0x2f9d = 4; + setUpperAnimeBaseMorf(0xCE, lit_6041); + i_onNoResetFlg1(0x10000000); + setFootEffectProcType(0); + } else { + field_0x3198 = 0; + setSingleAnimeParam(ANM_BACKWARD_SLIDE, &daAlinkHIO_slide_c0::m.mBackwardSlideAnm); + dComIfGp_setPlayerStatus1(0, 0x200); + field_0x2f9d = 0x60; + setFootEffectProcType(1); + } + field_0x594 = daAlinkHIO_slide_c0::m.mMaxSpeed; + field_0x33cc = FLOAT_LABEL(lit_6108); + mCommonCounter = 0; + field_0x3010 = 0; + return true; } -#pragma pop /* ############################################################################################## */ /* 804532E0-804532E4 0018E0 0004+00 1/1 0/0 0/0 .sdata2 @73057 */ @@ -17952,34 +18127,113 @@ asm void daAlink_c::procSlide() { #pragma pop /* 800C47AC-800C4894 0BF0EC 00E8+00 1/1 0/0 0/0 .text procSlideLandInit__9daAlink_cFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procSlideLandInit(int param_0) { - nofralloc -#include "asm/d/a/d_a_alink/procSlideLandInit__9daAlink_cFi.s" +bool daAlink_c::procSlideLandInit(int param_0) { + commonProcInit(HUMAN_SLIDE_LAND); + + if (param_0 != 0) { + setSingleAnimeParam(ANM_BACKWARD_SLIDE_LAND, &daAlinkHIO_slide_c0::m.mForwardLandAnm); + field_0x3478 = daAlinkHIO_slide_c0::m.mForwardLandAnm.field_0x10; + field_0x3198 = 1; + field_0x2f99 = 4; + field_0x3588.x = l_waitBaseAnime[0]; + field_0x3588.y = l_waitBaseAnime[1]; + field_0x3588.z = l_waitBaseAnime[2]; + } else { + setSingleAnimeParam(ANM_FORWARD_SLIDE_LAND, &daAlinkHIO_slide_c0::m.mBackwardLandAnm); + field_0x3478 = daAlinkHIO_slide_c0::m.mBackwardLandAnm.field_0x10; + field_0x3198 = 0; + } + field_0x814.SetWeight(255); + mNormalSpeed *= lit_5943; + return true; } -#pragma pop /* 800C4894-800C494C 0BF1D4 00B8+00 1/0 0/0 0/0 .text procSlideLand__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procSlideLand() { - nofralloc -#include "asm/d/a/d_a_alink/procSlideLand__9daAlink_cFv.s" +bool daAlink_c::procSlideLand() { + daPy_frameCtrl_c* ctrl = &mFrameCtrl1[0]; + + cLib_chaseF(&mNormalSpeed, FLOAT_LABEL(lit_6108), lit_7450); + if (field_0x3198 != 0) { + field_0x2f99 = 4; + } + + if (ctrl->checkAnmEnd()) { + mCurrent.mAngle.y = mCollisionRot.y; + checkNextAction(0); + } else { + if (ctrl->getFrame() > field_0x3478) { + s16 tmp_angle = mCurrent.mAngle.y; + mCurrent.mAngle.y = mCollisionRot.y; + if (!checkNextAction(1)) { + mCurrent.mAngle.y = tmp_angle; + } + } + } + return true; } -#pragma pop /* 800C494C-800C4B40 0BF28C 01F4+00 4/3 0/0 0/0 .text procFrontRollInit__9daAlink_cFv */ +#ifdef NONMATCHING +bool daAlink_c::procFrontRollInit() { + BOOL check = checkUpperGuardAnime(); + if (mActionID == FRONT_ROLL && mDemo.getDemoMode() == 0x28) { + return 0; + } else { + BOOL check = mActionID == 0x16; + commonProcInit(FRONT_ROLL); + + f32 fvar1; + if (!check) { + fvar1 = daAlinkHIO_frontRoll_c0::m.mRollAnm.field_0x04; + } else { + fvar1 = lit_7977; + } + setSingleAnime(ANM_FRONT_ROLL, daAlinkHIO_frontRoll_c0::m.mRollAnm.field_0x04, fvar1, daAlinkHIO_frontRoll_c0::m.mRollAnm.field_0x00, daAlinkHIO_frontRoll_c0::m.mRollAnm.field_0x0c); + mNormalSpeed = mSpeedF * daAlinkHIO_frontRoll_c0::m.mInitSpeed + daAlinkHIO_frontRoll_c0::m.mSpeedRate; + if (mNormalSpeed > daAlinkHIO_frontRoll_c0::m.mCrashHitAnm.field_0x08) { + mNormalSpeed = daAlinkHIO_frontRoll_c0::m.mCrashHitAnm.field_0x08; + } + if (mNormalSpeed < daAlinkHIO_frontRoll_c0::m.mMinSpeed) { + mNormalSpeed = daAlinkHIO_frontRoll_c0::m.mMinSpeed; + } + + if (!i_checkNoResetFlg0(UNDER_WATER_MOVEMENT)) { + if (checkHeavyStateOn(1, 1)) { + mNormalSpeed *= mHeavySpeedMultiplier; + } + } else { + mNormalSpeed *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityX; + } + mCurrent.mAngle.y = mCollisionRot.y; + voiceStart(Z2SE_AL_V_BACKTEN); + mCommonCounter = 0; + setFootEffectProcType(0); + if (check) { + i_onNoResetFlg0(2); + } + if (i_checkEquipHeavyBoots()) { + field_0xFB8.SetAtType(0x200000); + field_0xFB8.SetAtHitMark(1); + field_0xFB8.SetAtSe(9); + field_0xFB8.SetAtAtp(2); + field_0xFB8.SetAtMtrl(0); + field_0xFB8.ResetAtHit(); + field_0xFB8.SetR(daAlinkHIO_frontRoll_c0::m.mBootsAttackRadius); + field_0xFB8.OnAtSetBit(); + } + return true; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::procFrontRollInit() { +asm bool daAlink_c::procFrontRollInit() { nofralloc #include "asm/d/a/d_a_alink/procFrontRollInit__9daAlink_cFv.s" } #pragma pop +#endif /* 800C4B40-800C4F14 0BF480 03D4+00 1/0 0/0 0/0 .text procFrontRoll__9daAlink_cFv */ #pragma push @@ -18053,20 +18307,31 @@ asm void daAlink_c::procSideRoll() { #pragma pop /* 800C5700-800C57A4 0C0040 00A4+00 2/2 0/0 0/0 .text backJumpSpeedDec__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::backJumpSpeedDec() { - nofralloc -#include "asm/d/a/d_a_alink/backJumpSpeedDec__9daAlink_cFv.s" +void daAlink_c::backJumpSpeedDec() { + if (mLinkAcch.ChkGroundHit()) { + if (dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd)) { + f32 jump_speed; + if (dBgS_CheckBWallPoly(mLinkAcch.m_gnd)) { + jump_speed = FLOAT_LABEL(lit_6108); + } else { + jump_speed = field_0x3478 * cM_scos(field_0x2ff0); + if (field_0x2ff0 > 0) { + jump_speed *= cM_scos(field_0x2ff0); + } + } + + if (mNormalSpeed > jump_speed) { + mNormalSpeed = jump_speed; + } + } + } } -#pragma pop /* 800C57A4-800C5964 0C00E4 01C0+00 6/6 0/0 0/0 .text procBackJumpInit__9daAlink_cFi */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::procBackJumpInit(int param_0) { +asm bool daAlink_c::procBackJumpInit(int param_0) { nofralloc #include "asm/d/a/d_a_alink/procBackJumpInit__9daAlink_cFi.s" } @@ -18195,7 +18460,7 @@ asm void daAlink_c::procRollJump() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::procFallInit(int param_0, f32 param_1) { +asm bool daAlink_c::procFallInit(int param_0, f32 param_1) { nofralloc #include "asm/d/a/d_a_alink/procFallInit__9daAlink_cFif.s" } @@ -18404,7 +18669,7 @@ asm void daAlink_c::procCoMetamorphoseOnly() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::procFloorDownReboundInit() { +asm BOOL daAlink_c::procFloorDownReboundInit() { nofralloc #include "asm/d/a/d_a_alink/procFloorDownReboundInit__9daAlink_cFv.s" } @@ -18502,35 +18767,33 @@ asm void daAlink_c::setDrawHand() { } #pragma pop -/* 800CB480-800CB53C 0C5DC0 00BC+00 3/3 0/0 0/0 .text checkSwordDraw__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkSwordDraw() { - nofralloc -#include "asm/d/a/d_a_alink/checkSwordDraw__9daAlink_cFv.s" +BOOL daPy_py_c::i_checkSwordGet() { + return dComIfGs_getSelectEquipSword() != 0xFF; +} + +/* 800CB480-800CB53C 0C5DC0 00BC+00 3/3 0/0 0/0 .text checkSwordDraw__9daAlink_cFv */ +bool daAlink_c::checkSwordDraw() { + return ((i_checkSwordGet() && mSwordChangeWaitTimer == 0) && !i_checkNoResetFlg2(FLG2_UNK_2080000)) && (!i_checkWolf() || !i_dComIfGs_isEventBit(0x0C08)); +} + +bool daPy_py_c::i_checkShieldGet() const { + return dComIfGs_getSelectEquipShield() != NO_ITEM; } -#pragma pop /* 800CB53C-800CB5F8 0C5E7C 00BC+00 3/3 0/0 0/0 .text checkShieldDraw__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkShieldDraw() { - nofralloc -#include "asm/d/a/d_a_alink/checkShieldDraw__9daAlink_cFv.s" +bool daAlink_c::checkShieldDraw() { + return ((i_checkShieldGet() && mShieldChangeWaitTimer == 0) && !i_checkNoResetFlg2(FLG2_UNK_4080000)) && (!i_checkWolf() || !i_dComIfGs_isEventBit(0x0C08)); } -#pragma pop /* 800CB5F8-800CB694 0C5F38 009C+00 2/2 0/0 0/0 .text checkItemDraw__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkItemDraw() { - nofralloc -#include "asm/d/a/d_a_alink/checkItemDraw__9daAlink_cFv.s" +bool daAlink_c::checkItemDraw() { + if (mHeldItemModel != NULL && (mEquipItem != IRONBALL || !checkSwordEquipAnime())) { + if (!checkBowAndSlingItem(mEquipItem) || checkBowGrabLeftHand() || !i_checkShieldGet() || field_0x2e44.checkPassNum(15)) { + return true; + } + } + return false; } -#pragma pop /* 800CB694-800CBA38 0C5FD4 03A4+00 0/0 0/0 1/1 .text initShadowScaleLight__9daAlink_cFv */ @@ -18569,14 +18832,11 @@ asm void daAlink_c::shadowDraw() { #pragma pop /* 800CC25C-800CC298 0C6B9C 003C+00 3/3 0/0 0/0 .text modelCalc__9daAlink_cFP8J3DModel */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::modelCalc(J3DModel* param_0) { - nofralloc -#include "asm/d/a/d_a_alink/modelCalc__9daAlink_cFP8J3DModel.s" +void daAlink_c::modelCalc(J3DModel* p_model) { + if (mClothesChangeWaitTimer == 0) { + p_model->calc(); + } } -#pragma pop /* 800CC298-800CC2E0 0C6BD8 0048+00 2/2 0/0 0/0 .text basicModelDraw__9daAlink_cFP8J3DModel */ #pragma push @@ -18617,14 +18877,14 @@ asm void daAlink_c::setWaterDropColor(J3DGXColorS10 const* param_0) { #pragma pop /* 800CC7DC-800CC7FC 0C711C 0020+00 2/2 0/0 0/0 .text initTevCustomColor__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::initTevCustomColor() { - nofralloc -#include "asm/d/a/d_a_alink/initTevCustomColor__9daAlink_cFv.s" +void daAlink_c::initTevCustomColor() { + mTevStr.field_0x367 = 0; + mTevStr.field_0x358 = 0; + mTevStr.field_0x35a = 0; + mTevStr.field_0x35c = 0; + mTevStr.field_0x360 = 0; + mTevStr.field_0x362 = 0; } -#pragma pop /* 800CC7FC-800CD78C 0C713C 0F90+00 1/1 0/0 0/0 .text draw__9daAlink_cFv */ #pragma push @@ -18692,14 +18952,31 @@ asm daAlink_c::~daAlink_c() { #pragma pop /* 800CE208-800CE294 0C8B48 008C+00 1/0 0/0 0/0 .text daAlink_Delete__FP9daAlink_c */ +// destructor issue +#ifdef NONMATCHING +static bool daAlink_Delete(daAlink_c* p_link) { + if (p_link->getClothesChangeWaitTimer() != 0) { + p_link->loadModelDVD(); + return false; + } + else if (p_link->getShieldChangeWaitTimer() != 0) { + p_link->loadShieldModelDVD(); + return false; + } else { + delete p_link; + return true; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -static asm void daAlink_Delete(daAlink_c* param_0) { +static asm bool daAlink_Delete(daAlink_c* param_0) { nofralloc #include "asm/d/a/d_a_alink/daAlink_Delete__FP9daAlink_c.s" } #pragma pop +#endif /* 800CE294-800CE468 0C8BD4 01D4+00 1/1 0/0 0/0 .text checkNoSubjectModeCamera__9daAlink_cFv */ #pragma push @@ -18878,14 +19155,9 @@ u32 daAlink_c::checkHorseRide() const { } /* 800CF298-800CF2B4 0C9BD8 001C+00 1/0 0/0 0/0 .text getLeftItemMatrix__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm Mtx* daAlink_c::getLeftItemMatrix() { - nofralloc -#include "asm/d/a/d_a_alink/getLeftItemMatrix__9daAlink_cFv.s" +MtxP daAlink_c::getLeftItemMatrix() { + return field_0x0650->i_getAnmMtx(field_0x30c0); } -#pragma pop /* 800CF2B4-800CF2C8 0C9BF4 0014+00 1/0 0/0 0/0 .text checkBoarRide__9daAlink_cCFv */ u32 daAlink_c::checkBoarRide() const { @@ -18898,55 +19170,32 @@ u32 daAlink_c::checkSpinnerRide() const { } /* 800CF2DC-800CF2F8 0C9C1C 001C+00 1/0 0/0 0/0 .text getLeftHandMatrix__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm Mtx* daAlink_c::getLeftHandMatrix() { - nofralloc -#include "asm/d/a/d_a_alink/getLeftHandMatrix__9daAlink_cFv.s" +MtxP daAlink_c::getLeftHandMatrix() { + return field_0x0650->i_getAnmMtx(field_0x30b8); } -#pragma pop /* 800CF2F8-800CF314 0C9C38 001C+00 1/0 0/0 0/0 .text getRightHandMatrix__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm Mtx* daAlink_c::getRightHandMatrix() { - nofralloc -#include "asm/d/a/d_a_alink/getRightHandMatrix__9daAlink_cFv.s" +MtxP daAlink_c::getRightHandMatrix() { + return field_0x0650->i_getAnmMtx(field_0x30ba); } -#pragma pop /* 800CF314-800CF328 0C9C54 0014+00 1/0 0/0 0/0 .text * onSceneChangeArea__9daAlink_cFUcUcP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::onSceneChangeArea(u8 param_0, u8 param_1, fopAc_ac_c* param_2) { - nofralloc -#include "asm/d/a/d_a_alink/onSceneChangeArea__9daAlink_cFUcUcP10fopAc_ac_c.s" +void daAlink_c::onSceneChangeArea(u8 param_0, u8 param_1, fopAc_ac_c* param_2) { + field_0x3112 = param_0; + field_0x2fac = param_1; + field_0x2808 = param_2; } -#pragma pop /* 800CF328-800CF344 0C9C68 001C+00 1/0 0/0 0/0 .text getRightItemMatrix__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm Mtx* daAlink_c::getRightItemMatrix() { - nofralloc -#include "asm/d/a/d_a_alink/getRightItemMatrix__9daAlink_cFv.s" +MtxP daAlink_c::getRightItemMatrix() { + return field_0x0650->i_getAnmMtx(field_0x30c2); } -#pragma pop /* 800CF344-800CF380 0C9C84 003C+00 1/0 0/0 0/0 .text checkPlayerNoDraw__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkPlayerNoDraw() { - nofralloc -#include "asm/d/a/d_a_alink/checkPlayerNoDraw__9daAlink_cFv.s" +BOOL daAlink_c::checkPlayerNoDraw() { + return dComIfGp_checkCameraAttentionStatus(field_0x317c, 2) || i_checkNoResetFlg0(FLG0_UNK_8000000); } -#pragma pop /* 800CF380-800CFC3C 0C9CC0 08BC+00 1/1 0/0 0/0 .text __ct__9daAlink_cFv */ #pragma push @@ -19067,33 +19316,18 @@ static asm void cMtx_multVec(f32 const (*param_0)[4], Vec const* param_1, Vec* p #pragma pop /* 800CFFE0-800CFFF4 0CA920 0014+00 1/1 0/0 0/0 .text getAnmMtx__8J3DModelFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm Mtx* J3DModel::getAnmMtx(int param_0) { - nofralloc -#include "asm/d/a/d_a_alink/getAnmMtx__8J3DModelFi.s" +MtxP J3DModel::getAnmMtx(int i) { + return mMtxBuffer->getAnmMtx(i); } -#pragma pop /* 800CFFF4-800D0020 0CA934 002C+00 1/1 0/0 0/0 .text setBaseTRMtx__8J3DModelFPA4_f */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J3DModel::setBaseTRMtx(f32 (*param_0)[4]) { - nofralloc -#include "asm/d/a/d_a_alink/setBaseTRMtx__8J3DModelFPA4_f.s" +void J3DModel::setBaseTRMtx(MtxP matrix) { + PSMTXCopy(matrix, mBaseTransformMtx); } -#pragma pop /* 800D0020-800D0048 0CA960 0028+00 1/1 0/0 0/0 .text checkFmChainGrabAnime__9daAlink_cCFv */ BOOL daAlink_c::checkFmChainGrabAnime() const { - bool fmChainGrab = false; - - if (checkUpperAnime(ANM_HUMAN_CHAIN_GRAB) || checkUpperAnime(ANM_WOLF_CHAIN_GRAB)) { - fmChainGrab = true; - } - return fmChainGrab; + return checkUpperAnime(ANM_HUMAN_CHAIN_GRAB) || checkUpperAnime(ANM_WOLF_CHAIN_GRAB); } /* 800D0048-800D005C 0CA988 0014+00 1/1 0/0 0/0 .text checkSmallUpperGuardAnime__9daAlink_cCFv */ @@ -19139,35 +19373,13 @@ void dBgS_Acch::ClrGroundHit() { } /* 800D00EC-800D0110 0CAA2C 0024+00 1/1 0/0 0/0 .text checkReinRide__9daAlink_cCFv */ -// regalloc -#ifdef NONMATCHING BOOL daAlink_c::checkReinRide() const { - bool reinRide = false; - - if (mRideStatus == 1 || mRideStatus == 2) { - reinRide = true; - } - return reinRide; + return mRideStatus == 1 || mRideStatus == 2; } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm BOOL daAlink_c::checkReinRide() const { - nofralloc -#include "asm/d/a/d_a_alink/checkReinRide__9daAlink_cCFv.s" -} -#pragma pop -#endif /* 800D0110-800D0138 0CAA50 0028+00 1/1 0/0 0/0 .text checkWolfEnemyThrowAnime__9daAlink_cCFv */ BOOL daAlink_c::checkWolfEnemyThrowAnime() const { - bool wolfEnemyThrowAnime = false; - - if (checkUpperAnime(ANM_WOLF_ENEMY_THROW_LEFT) || checkUpperAnime(ANM_WOLF_ENEMY_THROW_RIGHT)) { - wolfEnemyThrowAnime = true; - } - return wolfEnemyThrowAnime; + return checkUpperAnime(ANM_WOLF_ENEMY_THROW_LEFT) || checkUpperAnime(ANM_WOLF_ENEMY_THROW_RIGHT); } /* 800D0138-800D014C 0CAA78 0014+00 1/1 0/0 0/0 .text checkSpecialDemoMode__9daAlink_cCFv @@ -19183,24 +19395,14 @@ void daAlink_c::setMidnaTalkStatus(u8 status) { } /* 800D0164-800D0180 0CAAA4 001C+00 1/1 0/0 0/0 .text set3DStatus__9daAlink_cFUcUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::set3DStatus(u8 param_0, u8 param_1) { - nofralloc -#include "asm/d/a/d_a_alink/set3DStatus__9daAlink_cFUcUc.s" +void daAlink_c::set3DStatus(u8 status, u8 direction) { + dComIfGp_set3DStatus(status, direction, 0); } -#pragma pop /* 800D0180-800D018C 0CAAC0 000C+00 1/1 0/0 0/0 .text offSetFlg__16daAlink_matAnm_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_matAnm_c::offSetFlg() { - nofralloc -#include "asm/d/a/d_a_alink/offSetFlg__16daAlink_matAnm_cFv.s" +void daAlink_matAnm_c::offSetFlg() { + mSetFlag = 0; } -#pragma pop /* 800D018C-800D0198 0CAACC 000C+00 1/1 0/0 0/0 .text checkModeFlg__9daAlink_cCFUl */ u32 daAlink_c::checkModeFlg(u32 pFlag) const { @@ -19218,24 +19420,18 @@ u8 daAlink_c::getClothesChangeWaitTimer() const { } /* 800D01A8-800D01E0 0CAAE8 0038+00 1/0 0/0 0/0 .text checkHorseStart__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkHorseStart() { - nofralloc -#include "asm/d/a/d_a_alink/checkHorseStart__9daAlink_cFv.s" +u32 daPy_py_c::getLastSceneMode() { + return dComIfGs_getLastSceneMode(); +} + +BOOL daAlink_c::checkHorseStart() { + return checkHorseStart(getLastSceneMode() & 0xF, getStartMode()); } -#pragma pop /* 800D01E0-800D0208 0CAB20 0028+00 1/0 0/0 0/0 .text checkCutTurnCharge__9daAlink_cCFv */ BOOL daAlink_c::checkCutTurnCharge() const { - bool cutTurnCharge = false; - - if (mActionID == CUT_TURN_MOVE && mCommonCounter == 0) { - cutTurnCharge = true; - } - return cutTurnCharge; + return mActionID == CUT_TURN_MOVE && mCommonCounter == 0; } /* 800D0208-800D0228 0CAB48 0020+00 1/0 0/0 0/0 .text checkAcceptDungeonWarpAlink__9daAlink_cFi */ @@ -19270,86 +19466,55 @@ s16 daAlink_c::checkSumouWithstand() const { */ void daAlink_c::setMidnaMsgNum(fopAc_ac_c* param_0, u16 pMsgNum) { mMidnaMsgNum = pMsgNum; - field_0x2800 = param_0; + static_cast(mMidnaMsg) = param_0; } /* 800D0290-800D029C 0CABD0 000C+00 1/0 0/0 0/0 .text getModelMtx__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm Mtx* daAlink_c::getModelMtx() { - nofralloc -#include "asm/d/a/d_a_alink/getModelMtx__9daAlink_cFv.s" +MtxP daAlink_c::getModelMtx() { + return field_0x0650->getBaseTRMtx(); } -#pragma pop /* 800D029C-800D02A4 0CABDC 0008+00 1/0 0/0 0/0 .text getInvMtx__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm Mtx* daAlink_c::getInvMtx() { - nofralloc -#include "asm/d/a/d_a_alink/getInvMtx__9daAlink_cFv.s" +MtxP daAlink_c::getInvMtx() { + return mInvMtx; } -#pragma pop /* 800D02A4-800D02B8 0CABE4 0014+00 1/0 0/0 0/0 .text getLinkBackBone1Matrix__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm Mtx* daAlink_c::getLinkBackBone1Matrix() { - nofralloc -#include "asm/d/a/d_a_alink/getLinkBackBone1Matrix__9daAlink_cFv.s" +MtxP daAlink_c::getLinkBackBone1Matrix() { + return field_0x0650->i_getAnmMtx(1); } -#pragma pop /* 800D02B8-800D02CC 0CABF8 0014+00 1/0 0/0 0/0 .text getWolfMouthMatrix__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm Mtx* daAlink_c::getWolfMouthMatrix() { - nofralloc -#include "asm/d/a/d_a_alink/getWolfMouthMatrix__9daAlink_cFv.s" +MtxP daAlink_c::getWolfMouthMatrix() { + return field_0x0650->i_getAnmMtx(13); } -#pragma pop /* 800D02CC-800D02E0 0CAC0C 0014+00 1/0 0/0 0/0 .text getWolfBackbone2Matrix__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm Mtx* daAlink_c::getWolfBackbone2Matrix() { - nofralloc -#include "asm/d/a/d_a_alink/getWolfBackbone2Matrix__9daAlink_cFv.s" +MtxP daAlink_c::getWolfBackbone2Matrix() { + return field_0x0650->i_getAnmMtx(2); } -#pragma pop /* 800D02E0-800D0334 0CAC20 0054+00 1/0 0/0 0/0 .text getBottleMtx__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::getBottleMtx() { - nofralloc -#include "asm/d/a/d_a_alink/getBottleMtx__9daAlink_cFv.s" +MtxP daAlink_c::getBottleMtx() { + if (mHeldItemModel != NULL && checkBottleItem(mEquipItem)) { + return mHeldItemModel->getBaseTRMtx(); + } + + return NULL; } -#pragma pop /* 800D0334-800D0350 0CAC74 001C+00 1/0 0/0 0/0 .text getHeadMtx__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::getHeadMtx() { - nofralloc -#include "asm/d/a/d_a_alink/getHeadMtx__9daAlink_cFv.s" +MtxP daAlink_c::getHeadMtx() { + return field_0x0650->i_getAnmMtx(field_0x30b4); } -#pragma pop /* 800D0350-800D0358 0CAC90 0008+00 1/0 0/0 0/0 .text getGroundY__9daAlink_cFv */ -float daAlink_c::getGroundY() { +f32 daAlink_c::getGroundY() { return mLinkAcch.GetGroundH(); } /* 800D0358-800D0360 0CAC98 0008+00 1/0 0/0 0/0 .text getBaseAnimeFrameRate__9daAlink_cCFv */ -float daAlink_c::getBaseAnimeFrameRate() const { +f32 daAlink_c::getBaseAnimeFrameRate() const { return mFrameCtrl1[0].getRate(); } @@ -19365,10 +19530,10 @@ s32 daAlink_c::getItemID() const { /* 800D0370-800D038C 0CACB0 001C+00 1/0 0/0 0/0 .text getGrabActorID__9daAlink_cCFv */ s32 daAlink_c::getGrabActorID() const { - if (field_0x2fdc == 0x102) { + if (mEquipItem == 0x102) { return mItemActor.getID(); } else { - return field_0x282c.getID(); + return mGrabItemActor.getID(); } } @@ -19376,12 +19541,12 @@ s32 daAlink_c::getGrabActorID() const { */ void daAlink_c::setForcePutPos(cXyz const& pPutPos) { mForcePutPos = pPutPos; - i_onEndResetFlg1(UnkForcePutPos); + i_onEndResetFlg1(UNK_FORCE_PUT_POS); } /* 800D03B4-800D03C8 0CACF4 0014+00 1/0 0/0 0/0 .text checkPlayerFly__9daAlink_cCFv */ u32 daAlink_c::checkPlayerFly() const { - return i_checkModeFlg(PLAYER_FLY); + return i_checkModeFlg(MODE_SWIMMING | MODE_ROPE_WALK | MODE_VINE_CLIMB | MODE_UNK_800 | MODE_NO_COLLISION | MODE_CLIMB | MODE_JUMP); } /* 800D03C8-800D03DC 0CAD08 0014+00 1/0 0/0 0/0 .text checkFrontRoll__9daAlink_cCFv */ @@ -19390,605 +19555,349 @@ BOOL daAlink_c::checkFrontRoll() const { } /* 800D03DC-800D03F0 0CAD1C 0014+00 1/0 0/0 0/0 .text checkWolfDash__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkWolfDash() const { - nofralloc -#include "asm/d/a/d_a_alink/checkWolfDash__9daAlink_cCFv.s" +BOOL daAlink_c::checkWolfDash() const { + return mActionID == WOLF_DASH; } -#pragma pop /* 800D03F0-800D0414 0CAD30 0024+00 1/0 0/0 0/0 .text checkAutoJump__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkAutoJump() const { - nofralloc -#include "asm/d/a/d_a_alink/checkAutoJump__9daAlink_cCFv.s" +BOOL daAlink_c::checkAutoJump() const { + return mActionID == HUMAN_AUTOJUMP || mActionID == WOLF_AUTOJUMP; } -#pragma pop /* 800D0414-800D0444 0CAD54 0030+00 1/0 0/0 0/0 .text checkSideStep__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkSideStep() const { - nofralloc -#include "asm/d/a/d_a_alink/checkSideStep__9daAlink_cCFv.s" +bool daAlink_c::checkSideStep() const { + return (mActionID == HUMAN_SIDESTEP || mActionID == WOLF_SIDESTEP) && field_0x300a != 0; } -#pragma pop /* 800D0444-800D0468 0CAD84 0024+00 1/0 0/0 0/0 .text checkWolfTriggerJump__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkWolfTriggerJump() const { - nofralloc -#include "asm/d/a/d_a_alink/checkWolfTriggerJump__9daAlink_cCFv.s" +bool daAlink_c::checkWolfTriggerJump() const { + return mActionID == WOLF_SIDESTEP || mActionID == WOLF_JUMPATTACK; } -#pragma pop /* 800D0468-800D047C 0CADA8 0014+00 1/0 0/0 0/0 .text checkGuardBreakMode__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkGuardBreakMode() const { - nofralloc -#include "asm/d/a/d_a_alink/checkGuardBreakMode__9daAlink_cCFv.s" +BOOL daAlink_c::checkGuardBreakMode() const { + return mActionID == GUARD_BREAK; } -#pragma pop /* 800D047C-800D04A4 0CADBC 0028+00 1/0 0/0 0/0 .text checkLv3Slide__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkLv3Slide() const { - nofralloc -#include "asm/d/a/d_a_alink/checkLv3Slide__9daAlink_cCFv.s" +bool daAlink_c::checkLv3Slide() const { + return mActionID == HUMAN_SLIDE && field_0x300e != 0; } -#pragma pop /* 800D04A4-800D04B8 0CADE4 0014+00 1/0 0/0 0/0 .text checkWolfHowlDemoMode__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkWolfHowlDemoMode() const { - nofralloc -#include "asm/d/a/d_a_alink/checkWolfHowlDemoMode__9daAlink_cCFv.s" +bool daAlink_c::checkWolfHowlDemoMode() const { + return mActionID == WOLF_HOWL; } -#pragma pop /* 800D04B8-800D04CC 0CADF8 0014+00 1/0 0/0 0/0 .text checkElecDamage__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkElecDamage() const { - nofralloc -#include "asm/d/a/d_a_alink/checkElecDamage__9daAlink_cCFv.s" +BOOL daAlink_c::checkElecDamage() const { + return mActionID == ELEC_DAMAGE; } -#pragma pop /* 800D04CC-800D04F4 0CAE0C 0028+00 1/0 0/0 0/0 .text checkEmptyBottleSwing__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkEmptyBottleSwing() const { - nofralloc -#include "asm/d/a/d_a_alink/checkEmptyBottleSwing__9daAlink_cCFv.s" +BOOL daAlink_c::checkEmptyBottleSwing() const { + return mEquipItem == EMPTY_BOTTLE && mActionID == BOTTLE_SWING; } -#pragma pop /* 800D04F4-800D0508 0CAE34 0014+00 1/0 0/0 0/0 .text checkBottleSwingMode__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkBottleSwingMode() const { - nofralloc -#include "asm/d/a/d_a_alink/checkBottleSwingMode__9daAlink_cCFv.s" +BOOL daAlink_c::checkBottleSwingMode() const { + return mActionID == BOTTLE_SWING; } -#pragma pop /* 800D0508-800D051C 0CAE48 0014+00 1/0 0/0 0/0 .text checkHawkWait__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkHawkWait() const { - nofralloc -#include "asm/d/a/d_a_alink/checkHawkWait__9daAlink_cCFv.s" +BOOL daAlink_c::checkHawkWait() const { + return mActionID == HAWK_WAIT; } -#pragma pop /* 800D051C-800D0544 0CAE5C 0028+00 1/0 0/0 0/0 .text checkGoatThrow__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkGoatThrow() const { - nofralloc -#include "asm/d/a/d_a_alink/checkGoatThrow__9daAlink_cCFv.s" +BOOL daAlink_c::checkGoatThrow() const { + return mActionID == GOAT_THROW && mCommonCounter != 0; } -#pragma pop /* 800D0544-800D0570 0CAE84 002C+00 1/0 0/0 0/0 .text checkGoatThrowAfter__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkGoatThrowAfter() const { - nofralloc -#include "asm/d/a/d_a_alink/checkGoatThrowAfter__9daAlink_cCFv.s" +BOOL daAlink_c::checkGoatThrowAfter() const { + return mActionID == GOAT_THROW && field_0x3478 > FLOAT_LABEL(lit_6108); } -#pragma pop /* 800D0570-800D0598 0CAEB0 0028+00 1/0 0/0 0/0 .text checkWolfTagLockJump__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkWolfTagLockJump() const { - nofralloc -#include "asm/d/a/d_a_alink/checkWolfTagLockJump__9daAlink_cCFv.s" +BOOL daAlink_c::checkWolfTagLockJump() const { + return mActionID == WOLF_TAGLOCK_JUMP && field_0x3198 == 0; } -#pragma pop /* 800D0598-800D05AC 0CAED8 0014+00 1/0 0/0 0/0 .text checkWolfTagLockJumpLand__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkWolfTagLockJumpLand() const { - nofralloc -#include "asm/d/a/d_a_alink/checkWolfTagLockJumpLand__9daAlink_cCFv.s" +BOOL daAlink_c::checkWolfTagLockJumpLand() const { + return mActionID == WOLF_TAGLOCK_LAND; } -#pragma pop /* 800D05AC-800D05C0 0CAEEC 0014+00 1/0 0/0 0/0 .text checkWolfRopeHang__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkWolfRopeHang() const { - nofralloc -#include "asm/d/a/d_a_alink/checkWolfRopeHang__9daAlink_cCFv.s" +BOOL daAlink_c::checkWolfRopeHang() const { + return mActionID == WOLF_ROPE_HANG; } -#pragma pop /* 800D05C0-800D05D4 0CAF00 0014+00 1/0 0/0 0/0 .text checkRollJump__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkRollJump() const { - nofralloc -#include "asm/d/a/d_a_alink/checkRollJump__9daAlink_cCFv.s" +BOOL daAlink_c::checkRollJump() const { + return mActionID == ROLL_JUMP; } -#pragma pop /* 800D05D4-800D05E8 0CAF14 0014+00 1/0 0/0 0/0 .text checkGoronRideWait__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkGoronRideWait() const { - nofralloc -#include "asm/d/a/d_a_alink/checkGoronRideWait__9daAlink_cCFv.s" +BOOL daAlink_c::checkGoronRideWait() const { + return mActionID == GORON_RIDE_WAIT; } -#pragma pop /* 800D05E8-800D05FC 0CAF28 0014+00 1/0 0/0 0/0 .text checkWolfChain__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkWolfChain() const { - nofralloc -#include "asm/d/a/d_a_alink/checkWolfChain__9daAlink_cCFv.s" +BOOL daAlink_c::checkWolfChain() const { + return mActionID == WOLF_CHAIN; } -#pragma pop /* 800D05FC-800D0610 0CAF3C 0014+00 1/0 0/0 0/0 .text checkWolfWait__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkWolfWait() const { - nofralloc -#include "asm/d/a/d_a_alink/checkWolfWait__9daAlink_cCFv.s" +BOOL daAlink_c::checkWolfWait() const { + return mActionID == WOLF_WAIT; } -#pragma pop /* 800D0610-800D0624 0CAF50 0014+00 1/0 0/0 0/0 .text checkWolfJumpAttack__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkWolfJumpAttack() const { - nofralloc -#include "asm/d/a/d_a_alink/checkWolfJumpAttack__9daAlink_cCFv.s" +BOOL daAlink_c::checkWolfJumpAttack() const { + return mActionID == WOLF_JUMPATTACK; } -#pragma pop /* 800D0624-800D0638 0CAF64 0014+00 1/0 0/0 0/0 .text checkWolfRSit__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkWolfRSit() const { - nofralloc -#include "asm/d/a/d_a_alink/checkWolfRSit__9daAlink_cCFv.s" +BOOL daAlink_c::checkWolfRSit() const { + return mActionID == WOLF_RSIT; } -#pragma pop /* 800D0638-800D0660 0CAF78 0028+00 1/0 0/0 0/0 .text checkBottleDrinkEnd__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkBottleDrinkEnd() const { - nofralloc -#include "asm/d/a/d_a_alink/checkBottleDrinkEnd__9daAlink_cCFv.s" +BOOL daAlink_c::checkBottleDrinkEnd() const { + return mActionID == BOTTLE_DRINK && field_0x300e != 0; } -#pragma pop /* 800D0660-800D0674 0CAFA0 0014+00 1/0 0/0 0/0 .text checkWolfDig__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkWolfDig() const { - nofralloc -#include "asm/d/a/d_a_alink/checkWolfDig__9daAlink_cCFv.s" +BOOL daAlink_c::checkWolfDig() const { + return mActionID == WOLF_DIG; } -#pragma pop /* 800D0674-800D0688 0CAFB4 0014+00 1/0 0/0 0/0 .text checkCutCharge__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkCutCharge() const { - nofralloc -#include "asm/d/a/d_a_alink/checkCutCharge__9daAlink_cCFv.s" +BOOL daAlink_c::checkCutCharge() const { + return mActionID == CUT_TURN_MOVE; } -#pragma pop /* 800D0688-800D06B0 0CAFC8 0028+00 1/0 0/0 0/0 .text checkCutLargeJumpCharge__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkCutLargeJumpCharge() const { - nofralloc -#include "asm/d/a/d_a_alink/checkCutLargeJumpCharge__9daAlink_cCFv.s" +BOOL daAlink_c::checkCutLargeJumpCharge() const { + return mActionID == CUT_TURN_MOVE && mCommonCounter != 0; } -#pragma pop /* 800D06B0-800D06D8 0CAFF0 0028+00 1/0 0/0 0/0 .text checkComboCutTurn__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkComboCutTurn() const { - nofralloc -#include "asm/d/a/d_a_alink/checkComboCutTurn__9daAlink_cCFv.s" +BOOL daAlink_c::checkComboCutTurn() const { + return mActionID == COMBO_CUT_TURN && mComboCutCount != 0; } -#pragma pop /* 800D06D8-800D0704 0CB018 002C+00 1/0 0/0 0/0 .text checkClimbMove__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkClimbMove() const { - nofralloc -#include "asm/d/a/d_a_alink/checkClimbMove__9daAlink_cCFv.s" +BOOL daAlink_c::checkClimbMove() const { + return mActionID == CLIMB_MOVE_VERTICAL || mActionID == CLIMB_MOVE_LADDER || mActionID == CLIMB_MOVE_HORIZONTAL; } -#pragma pop /* 800D0704-800D0718 0CB044 0014+00 1/0 0/0 0/0 .text checkGrassWhistle__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkGrassWhistle() const { - nofralloc -#include "asm/d/a/d_a_alink/checkGrassWhistle__9daAlink_cCFv.s" +BOOL daAlink_c::checkGrassWhistle() const { + return mActionID == GRASS_WHISTLE; } -#pragma pop /* 800D0718-800D072C 0CB058 0014+00 1/0 0/0 0/0 .text checkBoarRun__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkBoarRun() const { - nofralloc -#include "asm/d/a/d_a_alink/checkBoarRun__9daAlink_cCFv.s" +BOOL daAlink_c::checkBoarRun() const { + return mActionID == BOAR_RUN; } -#pragma pop /* 800D072C-800D0794 0CB06C 0068+00 1/0 0/0 0/0 .text checkHorseRideNotReady__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkHorseRideNotReady() const { - nofralloc -#include "asm/d/a/d_a_alink/checkHorseRideNotReady__9daAlink_cCFv.s" +BOOL daAlink_c::checkHorseRideNotReady() const { + return checkHorseRide() && mActionID != HORSE_RIDE && mActionID != HORSE_GETOFF; } -#pragma pop /* 800D0794-800D079C 0CB0D4 0008+00 1/0 0/0 0/0 .text getSearchBallScale__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::getSearchBallScale() const { - nofralloc -#include "asm/d/a/d_a_alink/getSearchBallScale__9daAlink_cCFv.s" +f32 daAlink_c::getSearchBallScale() const { + return mSearchBallScale; } -#pragma pop /* 800D079C-800D07A4 0CB0DC 0008+00 1/0 0/0 0/0 .text checkFastShotTime__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkFastShotTime() { - nofralloc -#include "asm/d/a/d_a_alink/checkFastShotTime__9daAlink_cFv.s" +s16 daAlink_c::checkFastShotTime() { + return mFastShotTime; } -#pragma pop /* 800D07A4-800D07D4 0CB0E4 0030+00 1/0 0/0 0/0 .text checkCutJumpCancelTurn__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkCutJumpCancelTurn() const { - nofralloc -#include "asm/d/a/d_a_alink/checkCutJumpCancelTurn__9daAlink_cCFv.s" +BOOL daAlink_c::checkCutJumpCancelTurn() const { + return (mActionID == CUT_JUMP || mActionID == CUT_JUMP_LAND) && field_0x3198 != 2; } -#pragma pop /* 800D07D4-800D07FC 0CB114 0028+00 1/0 0/0 0/0 .text * checkSingleBoarBattleSecondBowReady__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkSingleBoarBattleSecondBowReady() const { - nofralloc -#include "asm/d/a/d_a_alink/checkSingleBoarBattleSecondBowReady__9daAlink_cCFv.s" +BOOL daAlink_c::checkSingleBoarBattleSecondBowReady() const { + return mActionID == RIDE_BOW_READY && mCommonCounter != 0; } -#pragma pop /* 800D07FC-800D0818 0CB13C 001C+00 1/0 0/0 0/0 .text cancelDungeonWarpReadyNeck__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::cancelDungeonWarpReadyNeck() { - nofralloc -#include "asm/d/a/d_a_alink/cancelDungeonWarpReadyNeck__9daAlink_cFv.s" +void daAlink_c::cancelDungeonWarpReadyNeck() { + if (mActionID != DUNGEON_WARP_READY) { + return; + } + offModeFlg(MODE_UNK_100); } -#pragma pop /* 800D0818-800D0830 0CB158 0018+00 1/0 0/0 0/0 .text * onSceneChangeAreaJump__9daAlink_cFUcUcP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::onSceneChangeAreaJump(u8 param_0, u8 param_1, fopAc_ac_c* param_2) { - nofralloc -#include "asm/d/a/d_a_alink/onSceneChangeAreaJump__9daAlink_cFUcUcP10fopAc_ac_c.s" +void daAlink_c::onSceneChangeAreaJump(u8 param_0, u8 param_1, fopAc_ac_c* param_2) { + field_0x3112 = param_0 | 0x8000; + field_0x2fac = param_1; + field_0x2808 = param_2; } -#pragma pop /* 800D0830-800D084C 0CB170 001C+00 1/0 0/0 0/0 .text onSceneChangeDead__9daAlink_cFUci */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::onSceneChangeDead(u8 param_0, int param_1) { - nofralloc -#include "asm/d/a/d_a_alink/onSceneChangeDead__9daAlink_cFUci.s" +void daAlink_c::onSceneChangeDead(u8 param_0, int param_1) { + if (mActionID != DEAD) { + return; + } + field_0x3012 = param_0; + field_0x3198 = param_1; } -#pragma pop /* 800D084C-800D0860 0CB18C 0014+00 1/0 0/0 0/0 .text checkNoEquipItem__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkNoEquipItem() const { - nofralloc -#include "asm/d/a/d_a_alink/checkNoEquipItem__9daAlink_cCFv.s" +bool daAlink_c::checkNoEquipItem() const { + return mEquipItem == NO_ITEM; } -#pragma pop /* 800D0860-800D087C 0CB1A0 001C+00 1/0 0/0 0/0 .text getBoardCutTurnOffsetAngleY__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::getBoardCutTurnOffsetAngleY() const { - nofralloc -#include "asm/d/a/d_a_alink/getBoardCutTurnOffsetAngleY__9daAlink_cCFv.s" +s16 daAlink_c::getBoardCutTurnOffsetAngleY() const { + if (mActionID == BOARD_CUT_TURN) { + return field_0x3012; + } + return 0; } -#pragma pop /* 800D087C-800D0884 0CB1BC 0008+00 1/0 0/0 0/0 .text getMagneBootsTopVec__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm cXyz* daAlink_c::getMagneBootsTopVec() { - nofralloc -#include "asm/d/a/d_a_alink/getMagneBootsTopVec__9daAlink_cFv.s" +cXyz* daAlink_c::getMagneBootsTopVec() { + return &mMagneBootsTopVec; } -#pragma pop /* 800D0884-800D08B0 0CB1C4 002C+00 1/0 0/0 0/0 .text setCargoCarry__9daAlink_cFP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setCargoCarry(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/a/d_a_alink/setCargoCarry__9daAlink_cFP10fopAc_ac_c.s" +void daAlink_c::setCargoCarry(fopAc_ac_c* p_actor) { + mSpecialMode = SMODE_CARGO_CARRY; + mCargoCarryActor.setData(p_actor); } -#pragma pop /* 800D08B0-800D08DC 0CB1F0 002C+00 1/0 0/0 0/0 .text setGoronSideMove__9daAlink_cFP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setGoronSideMove(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/a/d_a_alink/setGoronSideMove__9daAlink_cFP10fopAc_ac_c.s" +void daAlink_c::setGoronSideMove(fopAc_ac_c* p_actor) { + mSpecialMode = SMODE_GORON_THROW; + mCargoCarryActor.setData(p_actor); } -#pragma pop /* 800D08DC-800D091C 0CB21C 0040+00 1/0 0/0 0/0 .text setSumouReady__9daAlink_cFP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setSumouReady(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/a/d_a_alink/setSumouReady__9daAlink_cFP10fopAc_ac_c.s" +void daAlink_c::setSumouReady(fopAc_ac_c* p_actor) { + mSpecialMode = SMODE_SUMO_READY; + mCargoCarryActor.setData(p_actor); + mDemo.setDemoMode(1); } -#pragma pop /* 800D091C-800D0930 0CB25C 0014+00 1/0 0/0 0/0 .text setSumouPushBackDirection__9daAlink_cFs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setSumouPushBackDirection(s16 param_0) { - nofralloc -#include "asm/d/a/d_a_alink/setSumouPushBackDirection__9daAlink_cFs.s" +void daAlink_c::setSumouPushBackDirection(s16 param_0) { + if (mActionID != SUMOU_PUSH) { + return; + } + field_0x3010 = param_0; } -#pragma pop /* 800D0930-800D0948 0CB270 0018+00 1/0 0/0 0/0 .text setSumouLoseHeadUp__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setSumouLoseHeadUp() { - nofralloc -#include "asm/d/a/d_a_alink/setSumouLoseHeadUp__9daAlink_cFv.s" +void daAlink_c::setSumouLoseHeadUp() { + if (mActionID != SUMOU_WIN_LOSE) { + return; + } + mSpecialMode = SMODE_SUMO_LOSE; } -#pragma pop /* 800D0948-800D095C 0CB288 0014+00 1/0 0/0 0/0 .text checkPriActorOwn__9daAlink_cCFPC10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkPriActorOwn(fopAc_ac_c const* param_0) const { - nofralloc -#include "asm/d/a/d_a_alink/checkPriActorOwn__9daAlink_cCFPC10fopAc_ac_c.s" +bool daAlink_c::checkPriActorOwn(fopAc_ac_c const* p_actor) const { + return field_0x27f4 == p_actor; } -#pragma pop /* 800D095C-800D0970 0CB29C 0014+00 1/0 0/0 0/0 .text * checkWolfEnemyBiteAllOwn__9daAlink_cCFPC10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkWolfEnemyBiteAllOwn(fopAc_ac_c const* param_0) const { - nofralloc -#include "asm/d/a/d_a_alink/checkWolfEnemyBiteAllOwn__9daAlink_cCFPC10fopAc_ac_c.s" +bool daAlink_c::checkWolfEnemyBiteAllOwn(fopAc_ac_c const* p_actor) const { + return field_0x281c.getActorConst() == p_actor; } -#pragma pop /* 800D0970-800D0984 0CB2B0 0014+00 1/0 0/0 0/0 .text setWolfEnemyHangBiteAngle__9daAlink_cFs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setWolfEnemyHangBiteAngle(s16 param_0) { - nofralloc -#include "asm/d/a/d_a_alink/setWolfEnemyHangBiteAngle__9daAlink_cFs.s" +void daAlink_c::setWolfEnemyHangBiteAngle(s16 angle) { + if (mActionID != WOLF_ENEMY_HANG_BITE) { + return; + } + field_0x3010 = angle; } -#pragma pop /* 800D0984-800D0998 0CB2C4 0014+00 1/0 0/0 0/0 .text setSumouGraspCancelCount__9daAlink_cFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setSumouGraspCancelCount(int param_0) { - nofralloc -#include "asm/d/a/d_a_alink/setSumouGraspCancelCount__9daAlink_cFi.s" +void daAlink_c::setSumouGraspCancelCount(int param_0) { + if (mActionID != SUMOU_PUSH) { + return; + } + mCommonCounter = param_0; } -#pragma pop /* 800D0998-800D09AC 0CB2D8 0014+00 1/0 0/0 0/0 .text checkItemSwordEquip__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkItemSwordEquip() const { - nofralloc -#include "asm/d/a/d_a_alink/checkItemSwordEquip__9daAlink_cCFv.s" +bool daAlink_c::checkItemSwordEquip() const { + return mEquipItem == EQUIP_SWORD; } -#pragma pop /* 800D09AC-800D09B4 0CB2EC 0008+00 1/0 0/0 0/0 .text getSinkShapeOffset__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm float daAlink_c::getSinkShapeOffset() const { - nofralloc -#include "asm/d/a/d_a_alink/getSinkShapeOffset__9daAlink_cCFv.s" +f32 daAlink_c::getSinkShapeOffset() const { + return mSinkShapeOffset; } -#pragma pop /* 800D09B4-800D09C8 0CB2F4 0014+00 1/0 0/0 0/0 .text checkSinkDead__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkSinkDead() const { - nofralloc -#include "asm/d/a/d_a_alink/checkSinkDead__9daAlink_cCFv.s" +BOOL daAlink_c::checkSinkDead() const { + return field_0x2fbd == 0xFF; } -#pragma pop /* 800D09C8-800D09DC 0CB308 0014+00 1/0 0/0 0/0 .text checkCutJumpMode__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkCutJumpMode() const { - nofralloc -#include "asm/d/a/d_a_alink/checkCutJumpMode__9daAlink_cCFv.s" +BOOL daAlink_c::checkCutJumpMode() const { + return mActionID == CUT_JUMP; } -#pragma pop /* 800D09DC-800D09E4 0CB31C 0008+00 1/0 0/0 0/0 .text getGiantPuzzleAimAngle__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm s16 daAlink_c::getGiantPuzzleAimAngle() const { - nofralloc -#include "asm/d/a/d_a_alink/getGiantPuzzleAimAngle__9daAlink_cCFv.s" +s16 daAlink_c::getGiantPuzzleAimAngle() const { + return mCommonCounter; } -#pragma pop /* 800D09E4-800D09EC 0CB324 0008+00 1/0 0/0 0/0 .text getSwordChangeWaitTimer__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::getSwordChangeWaitTimer() const { - nofralloc -#include "asm/d/a/d_a_alink/getSwordChangeWaitTimer__9daAlink_cCFv.s" +u8 daAlink_c::getSwordChangeWaitTimer() const { + return mSwordChangeWaitTimer; } -#pragma pop /* 800D09EC-800D0A14 0CB32C 0028+00 1/0 0/0 0/0 .text checkMetamorphose__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkMetamorphose() const { - nofralloc -#include "asm/d/a/d_a_alink/checkMetamorphose__9daAlink_cCFv.s" +BOOL daAlink_c::checkMetamorphose() const { + return mActionID == METAMORPHOSE && field_0x300a == 0; } -#pragma pop /* 800D0A14-800D0A28 0CB354 0014+00 1/0 0/0 0/0 .text checkWolfDownAttackPullOut__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkWolfDownAttackPullOut() const { - nofralloc -#include "asm/d/a/d_a_alink/checkWolfDownAttackPullOut__9daAlink_cCFv.s" +BOOL daAlink_c::checkWolfDownAttackPullOut() const { + return mActionID == WOLF_DOWNATTACK_PULLOUT; } -#pragma pop /* 800D0A28-800D0A30 0CB368 0008+00 1/0 0/0 0/0 .text getMidnaAtnPos__9daAlink_cCFv */ +// vtable issue +#ifdef NONMATCHING +cXyz* daAlink_c::getMidnaAtnPos() const { + return &mMidnaAtnPos; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -19998,135 +19907,86 @@ extern "C" asm void getMidnaAtnPos__9daAlink_cCFv() { #include "asm/d/a/d_a_alink/getMidnaAtnPos__9daAlink_cCFv.s" } #pragma pop +#endif /* 800D0A30-800D0A44 0CB370 0014+00 1/0 0/0 0/0 .text checkCopyRodEquip__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkCopyRodEquip() const { - nofralloc -#include "asm/d/a/d_a_alink/checkCopyRodEquip__9daAlink_cCFv.s" +bool daAlink_c::checkCopyRodEquip() const { + return mEquipItem == COPY_ROD; } -#pragma pop /* 800D0A44-800D0A6C 0CB384 0028+00 1/0 0/0 0/0 .text checkCanoeFishingGetLeft__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkCanoeFishingGetLeft() const { - nofralloc -#include "asm/d/a/d_a_alink/checkCanoeFishingGetLeft__9daAlink_cCFv.s" +bool daAlink_c::checkCanoeFishingGetLeft() const { + return mActionID == CANOE_FISHING_GET && field_0x300e == 0; } -#pragma pop /* 800D0A6C-800D0A94 0CB3AC 0028+00 1/0 0/0 0/0 .text checkCanoeFishingGetRight__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkCanoeFishingGetRight() const { - nofralloc -#include "asm/d/a/d_a_alink/checkCanoeFishingGetRight__9daAlink_cCFv.s" +bool daAlink_c::checkCanoeFishingGetRight() const { + return mActionID == CANOE_FISHING_GET && field_0x300e == 1; } -#pragma pop /* 800D0A94-800D0A9C 0CB3D4 0008+00 1/0 0/0 0/0 .text checkBeeChildDrink__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkBeeChildDrink() const { - nofralloc -#include "asm/d/a/d_a_alink/checkBeeChildDrink__9daAlink_cCFv.s" +u8 daAlink_c::checkBeeChildDrink() const { + return field_0x2fd3; } -#pragma pop /* 800D0A9C-800D0AA4 0CB3DC 0008+00 1/0 0/0 0/0 .text getWolfHowlMgrP__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::getWolfHowlMgrP() { - nofralloc -#include "asm/d/a/d_a_alink/getWolfHowlMgrP__9daAlink_cFv.s" +Z2WolfHowlMgr* daAlink_c::getWolfHowlMgrP() { + return &mZ2WolfHowlMgr; } -#pragma pop /* 800D0AA4-800D0AC8 0CB3E4 0024+00 1/0 0/0 0/0 .text checkWolfHowlSuccessAnime__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkWolfHowlSuccessAnime() const { - nofralloc -#include "asm/d/a/d_a_alink/checkWolfHowlSuccessAnime__9daAlink_cCFv.s" +BOOL daAlink_c::checkWolfHowlSuccessAnime() const { + return checkUnderMove0BckNoArcWolf(ANM_WOLF_HOWL_SUCCESS); } -#pragma pop /* 800D0AC8-800D0AF0 0CB408 0028+00 1/0 0/0 0/0 .text checkOctaIealHang__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkOctaIealHang() const { - nofralloc -#include "asm/d/a/d_a_alink/checkOctaIealHang__9daAlink_cCFv.s" +bool daAlink_c::checkOctaIealHang() const { + return mActionID == BOSS_ENEMY_HANG && field_0x32cc == 0; } -#pragma pop /* 800D0AF0-800D0B08 0CB430 0018+00 1/0 0/0 0/0 .text cancelOctaIealHang__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::cancelOctaIealHang() { - nofralloc -#include "asm/d/a/d_a_alink/cancelOctaIealHang__9daAlink_cFv.s" +void daAlink_c::cancelOctaIealHang() { + if (mActionID != BOSS_ENEMY_HANG) { + return; + } + field_0x300e = 1; } -#pragma pop /* 800D0B08-800D0B20 0CB448 0018+00 1/0 0/0 0/0 .text cancelDragonHangBackJump__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::cancelDragonHangBackJump() { - nofralloc -#include "asm/d/a/d_a_alink/cancelDragonHangBackJump__9daAlink_cFv.s" +void daAlink_c::cancelDragonHangBackJump() { + if (mActionID != BOSS_ENEMY_HANG) { + return; + } + field_0x300e = -1; } -#pragma pop /* 800D0B20-800D0B38 0CB460 0018+00 1/0 0/0 0/0 .text setOctaIealWildHang__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setOctaIealWildHang() { - nofralloc -#include "asm/d/a/d_a_alink/setOctaIealWildHang__9daAlink_cFv.s" +void daAlink_c::setOctaIealWildHang() { + if (mActionID != BOSS_ENEMY_HANG) { + return; + } + field_0x3008 = 1; } -#pragma pop /* 800D0B38-800D0B60 0CB478 0028+00 1/0 0/0 0/0 .text checkDragonHangRide__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkDragonHangRide() const { - nofralloc -#include "asm/d/a/d_a_alink/checkDragonHangRide__9daAlink_cCFv.s" +bool daAlink_c::checkDragonHangRide() const { + return mActionID == BOSS_ENEMY_HANG && field_0x32cc != 0; } -#pragma pop /* 800D0B60-800D0B8C 0CB4A0 002C+00 1/0 0/0 0/0 .text playerStartCollisionSE__9daAlink_cFUlUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::playerStartCollisionSE(u32 param_0, u32 param_1) { - nofralloc -#include "asm/d/a/d_a_alink/playerStartCollisionSE__9daAlink_cFUlUl.s" +void daAlink_c::playerStartCollisionSE(u32 param_0, u32 param_1) { + mZ2Link.startCollisionSE(param_0, param_1); } -#pragma pop /* 800D0B8C-800D0C6C 0CB4CC 00E0+00 1/0 0/0 0/0 .text __dt__16daAlink_matAnm_cFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm daAlink_matAnm_c::~daAlink_matAnm_c() { +// asm daAlink_matAnm_c::~daAlink_matAnm_c() { +extern "C" asm void __dt__16daAlink_matAnm_cFv() { nofralloc #include "asm/d/a/d_a_alink/__dt__16daAlink_matAnm_cFv.s" } @@ -20207,76 +20067,70 @@ asm void daAlink_c::checkLightSwordMtrl() { /* 800D0E98-800D0ECC 0CB7D8 0034+00 5/5 0/0 0/0 .text checkSwordEquipAnime__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkSwordEquipAnime() const { - nofralloc -#include "asm/d/a/d_a_alink/checkSwordEquipAnime__9daAlink_cCFv.s" +BOOL daAlink_c::checkSwordEquipAnime() const { + return !i_checkNoResetFlg0(FLG0_UNK_1000000) && (checkUpperAnime(0x255) || checkUpperAnime(0x261)); } -#pragma pop /* 800D0ECC-800D0EFC 0CB80C 0030+00 8/8 0/0 0/0 .text checkCutDashAnime__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkCutDashAnime() const { - nofralloc -#include "asm/d/a/d_a_alink/checkCutDashAnime__9daAlink_cCFv.s" +BOOL daAlink_c::checkCutDashAnime() const { + return checkUpperAnime(0x80) || checkUpperAnime(0x82) || checkUpperAnime(0x81); } -#pragma pop /* 800D0EFC-800D0F5C 0CB83C 0060+00 1/1 0/0 0/0 .text * checkCutDashEnemyHit__9daAlink_cFR12dCcD_GObjInf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkCutDashEnemyHit(dCcD_GObjInf& param_0) { - nofralloc -#include "asm/d/a/d_a_alink/checkCutDashEnemyHit__9daAlink_cFR12dCcD_GObjInf.s" +BOOL daAlink_c::checkCutDashEnemyHit(dCcD_GObjInf& obj) { + return obj.ChkAtHit() && checkEnemyGroup(obj.GetAtHitAc()); } -#pragma pop /* 800D0F5C-800D0F90 0CB89C 0034+00 6/6 0/0 0/0 .text getSwordAtType__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::getSwordAtType() { - nofralloc -#include "asm/d/a/d_a_alink/getSwordAtType__9daAlink_cFv.s" +u32 daAlink_c::getSwordAtType() { + return checkMasterSwordEquip() ? 0x4000002 : 2; } -#pragma pop /* 800D0F90-800D102C 0CB8D0 009C+00 3/3 0/0 0/0 .text initCutTurnAt__9daAlink_cFfi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::initCutTurnAt(f32 param_0, int param_1) { - nofralloc -#include "asm/d/a/d_a_alink/initCutTurnAt__9daAlink_cFfi.s" +void daAlink_c::initCutTurnAt(f32 param_0, int param_1) { + field_0xFB8.ResetAtHit(); + field_0xFB8.OnAtSetBit(); + field_0xFB8.SetAtType(getSwordAtType()); + field_0xFB8.SetAtHitMark(3); + field_0xFB8.SetAtSe(1); + field_0xFB8.SetAtAtp(param_1); + u8 mtrl; + if (!i_checkNoResetFlg3(FLG3_UNK_100000)) { + mtrl = 0; + } else { + mtrl = 4; + } + field_0xFB8.SetAtMtrl(mtrl); + field_0xFB8.SetR(param_0); + field_0x2fd0 = 1; } -#pragma pop /* 800D102C-800D1088 0CB96C 005C+00 2/2 0/0 0/0 .text checkCutFinishJumpUp__9daAlink_cFv */ +#ifdef NONMATCHING +bool daAlink_c::checkCutFinishJumpUp() { + return checkCutBackState() && (!checkNotBattleStage() && swordSwingTrigger()); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkCutFinishJumpUp() { +asm bool daAlink_c::checkCutFinishJumpUp() { nofralloc #include "asm/d/a/d_a_alink/checkCutFinishJumpUp__9daAlink_cFv.s" } #pragma pop +#endif /* 800D1088-800D10E0 0CB9C8 0058+00 2/2 0/0 0/0 .text changeCutFast__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::changeCutFast() { - nofralloc -#include "asm/d/a/d_a_alink/changeCutFast__9daAlink_cFv.s" +void daAlink_c::changeCutFast() { + deleteEquipItem(0, 0); + setSwordModel(); + mComboCutCount = 3; + checkCutAction(); + i_onNoResetFlg0(FLG0_UNK_80000); } -#pragma pop /* 800D10E0-800D1268 0CBA20 0188+00 1/1 0/0 0/0 .text checkCutFastReady__9daAlink_cFv */ #pragma push @@ -20288,42 +20142,48 @@ asm void daAlink_c::checkCutFastReady() { } #pragma pop -/* 800D1268-800D1310 0CBBA8 00A8+00 9/9 0/0 0/0 .text setSwordModel__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setSwordModel() { - nofralloc -#include "asm/d/a/d_a_alink/setSwordModel__9daAlink_cFv.s" +bool daPy_py_c::checkWoodSwordEquip() { + return dComIfGs_getSelectEquipSword() == WOOD_STICK; +} + +/* 800D1268-800D1310 0CBBA8 00A8+00 9/9 0/0 0/0 .text setSwordModel__9daAlink_cFv */ +void daAlink_c::setSwordModel() { + field_0x2fde = 0xFF; + mEquipItem = EQUIP_SWORD; + + mDoAud_bgmSetSwordUsing(1); + field_0x2f94 = 0; + + if (checkWoodSwordEquip()) { + mSwordModel->getModelData()->getMaterialNodePointer(1)->getShape()->hide(); + } else { + mSwordModel->getModelData()->getMaterialNodePointer(0)->getShape()->show(); + } } -#pragma pop /* 800D1310-800D13AC 0CBC50 009C+00 2/2 0/0 0/0 .text offSwordModel__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::offSwordModel() { - nofralloc -#include "asm/d/a/d_a_alink/offSwordModel__9daAlink_cFv.s" +void daAlink_c::offSwordModel() { + mDoAud_bgmSetSwordUsing(0); + + if (mSwordModel == field_0x0668 || mSwordModel == field_0x0660) { + mSwordModel->getModelData()->getMaterialNodePointer(0)->getShape()->hide(); + } + else if (mSwordModel == field_0x0670) { + field_0x0670->getModelData()->getMaterialNodePointer(1)->getShape()->show(); + } } -#pragma pop /* 800D13AC-800D13E4 0CBCEC 0038+00 1/1 0/0 0/0 .text checkCutTypeNoBlur__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkCutTypeNoBlur() const { - nofralloc -#include "asm/d/a/d_a_alink/checkCutTypeNoBlur__9daAlink_cCFv.s" +BOOL daAlink_c::checkCutTypeNoBlur() const { + return mCutType == TYPE_CUT_STAB || mCutType == TYPE_CUT_STAB_COMBO || mCutType == TYPE_CUT_STAB_FINISH || i_checkNoResetFlg0(UNDER_WATER_MOVEMENT); } -#pragma pop /* 800D13E4-800D1424 0CBD24 0040+00 7/7 0/0 0/0 .text checkCutTurnInput__9daAlink_cCFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkCutTurnInput() const { +asm bool daAlink_c::checkCutTurnInput() const { nofralloc #include "asm/d/a/d_a_alink/checkCutTurnInput__9daAlink_cCFv.s" } @@ -20331,26 +20191,33 @@ asm void daAlink_c::checkCutTurnInput() const { /* 800D1424-800D1430 0CBD64 000C+00 7/7 0/0 0/0 .text getCutTurnDirection__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::getCutTurnDirection() const { - nofralloc -#include "asm/d/a/d_a_alink/getCutTurnDirection__9daAlink_cCFv.s" +int daAlink_c::getCutTurnDirection() const { + return field_0x3180 < 0; } -#pragma pop /* 800D1430-800D1454 0CBD70 0024+00 17/17 0/0 0/0 .text resetCombo__9daAlink_cFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::resetCombo(int param_0) { - nofralloc -#include "asm/d/a/d_a_alink/resetCombo__9daAlink_cFi.s" +void daAlink_c::resetCombo(int param_0) { + mComboCutCount = 0; + i_offNoResetFlg0(FLG0_UNK_8000); + if (param_0 != 0) { + mRunCutComboCount = 0; + } } -#pragma pop /* 800D1454-800D152C 0CBD94 00D8+00 1/1 0/0 0/0 .text checkComboCnt__9daAlink_cFv */ +// something with i_checkAttentionLock +#ifdef NONMATCHING +void daAlink_c::checkComboCnt() { + if ((mEquipItem == EQUIP_SWORD && mComboCutCount == 2) && (i_checkAttentionLock() && (field_0x122C[0].ChkAtHit() || field_0x122C[1].ChkAtHit() || field_0x122C[2].ChkAtHit()))) { + i_onNoResetFlg0(FLG0_UNK_8000); + } + if (field_0x307e > 0) { + field_0x307e--; + } else { + resetCombo(1); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -20359,16 +20226,13 @@ asm void daAlink_c::checkComboCnt() { #include "asm/d/a/d_a_alink/checkComboCnt__9daAlink_cFv.s" } #pragma pop +#endif /* 800D152C-800D1540 0CBE6C 0014+00 22/22 0/0 0/0 .text setCutType__9daAlink_cFUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setCutType(u8 param_0) { - nofralloc -#include "asm/d/a/d_a_alink/setCutType__9daAlink_cFUc.s" +void daAlink_c::setCutType(u8 type) { + mCutType = type; + i_offResetFlg0(RFLG0_UNK_8000000); } -#pragma pop /* 800D1540-800D1688 0CBE80 0148+00 8/8 0/0 0/0 .text * setCylAtParam__9daAlink_cFUl11dCcG_At_SplUcUciff */ @@ -20396,14 +20260,15 @@ asm void daAlink_c::setSwordAtParam(dCcG_At_Spl param_0, u8 param_1, u8 param_2, /* 800D1788-800D17EC 0CC0C8 0064+00 1/1 0/0 1/1 .text * notSwordHitVibActor__9daAlink_cFP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::notSwordHitVibActor(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/a/d_a_alink/notSwordHitVibActor__9daAlink_cFP10fopAc_ac_c.s" +bool daAlink_c::notSwordHitVibActor(fopAc_ac_c* p_actor) { + if (p_actor != NULL && fopAcM_GetGroup(p_actor) == 4) { + s16 name = fopAcM_GetName(p_actor); + if (!checkSpecialNpc(p_actor) && name != 0x108 && name != 0x240) { + return true; + } + } + return false; } -#pragma pop /* 800D17EC-800D1920 0CC12C 0134+00 4/4 0/0 0/0 .text * setSwordHitVibration__9daAlink_cFP12dCcD_GObjInf */ @@ -20418,32 +20283,23 @@ asm void daAlink_c::setSwordHitVibration(dCcD_GObjInf* param_0) { /* 800D1920-800D1978 0CC260 0058+00 3/3 0/0 0/0 .text checkAtShieldHit__9daAlink_cFR12dCcD_GObjInf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkAtShieldHit(dCcD_GObjInf& param_0) { - nofralloc -#include "asm/d/a/d_a_alink/checkAtShieldHit__9daAlink_cFR12dCcD_GObjInf.s" +BOOL daAlink_c::checkAtShieldHit(dCcD_GObjInf& param_0) { + return param_0.ChkAtHit() && param_0.ChkAtShieldHit(); } -#pragma pop /* 800D1978-800D19C8 0CC2B8 0050+00 1/1 0/0 0/0 .text * checkCutReverseAt__9daAlink_cFP12dCcD_GObjInf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkCutReverseAt(dCcD_GObjInf* param_0) { - nofralloc -#include "asm/d/a/d_a_alink/checkCutReverseAt__9daAlink_cFP12dCcD_GObjInf.s" +bool daAlink_c::checkCutReverseAt(dCcD_GObjInf* param_0) { + param_0->GetAtHitAc(); + return checkAtShieldHit(*param_0) ? true : false; } -#pragma pop /* 800D19C8-800D1E1C 0CC308 0454+00 5/5 0/0 0/0 .text * changeCutReverseProc__9daAlink_cFQ29daAlink_c11daAlink_ANM */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::changeCutReverseProc(daAlink_c::daAlink_ANM param_0) { +asm BOOL daAlink_c::changeCutReverseProc(daAlink_c::daAlink_ANM param_0) { nofralloc #include "asm/d/a/d_a_alink/changeCutReverseProc__9daAlink_cFQ29daAlink_c11daAlink_ANM.s" } @@ -20461,85 +20317,87 @@ asm void daAlink_c::setCutDash(int param_0, int param_1) { /* 800D20B4-800D20FC 0CC9F4 0048+00 4/4 0/0 0/0 .text checkForceSwordSwing__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkForceSwordSwing() { - nofralloc -#include "asm/d/a/d_a_alink/checkForceSwordSwing__9daAlink_cFv.s" +BOOL daAlink_c::checkForceSwordSwing() { + return mEquipItem == EQUIP_SWORD && swordSwingTrigger(); } -#pragma pop /* 800D20FC-800D2188 0CCA3C 008C+00 7/7 0/0 0/0 .text setComboReserb__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setComboReserb() { - nofralloc -#include "asm/d/a/d_a_alink/setComboReserb__9daAlink_cFv.s" +void daAlink_c::setComboReserb() { + if (i_checkWolf()) { + field_0x307e = daAlinkHIO_wlAttack_c0::m.mComboDuration; + } else { + field_0x307e = daAlinkHIO_cut_c0::m.mComboDuration; + } + if (mComboCutCount != 4 && field_0x2fce == 0 && swordSwingTrigger()) { + i_onNoResetFlg2(UNK_FLG2_2); + } } -#pragma pop /* 800D2188-800D21D0 0CCAC8 0048+00 1/1 0/0 0/0 .text checkComboReserb__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkComboReserb() { - nofralloc -#include "asm/d/a/d_a_alink/checkComboReserb__9daAlink_cFv.s" +BOOL daAlink_c::checkComboReserb() { + return i_checkNoResetFlg2(UNK_FLG2_2) && !checkEventRun(); +} + +inline u8 i_dComIfGp_getDoStatus() { + return g_dComIfG_gameInfo.play.getDoStatus(); } -#pragma pop /* 800D21D0-800D2284 0CCB10 00B4+00 1/1 0/0 0/0 .text commonCutAction__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::commonCutAction() { - nofralloc -#include "asm/d/a/d_a_alink/commonCutAction__9daAlink_cFv.s" +bool daAlink_c::commonCutAction() { + if (mComboCutCount == 4) { + resetCombo(1); + } + + if (i_dComIfGp_getDoStatus() == 4) { + setDoStatus(0); + } + mComboCutCount++; + + if (i_checkReinRide()) { + procHorseCutInit(); + if (mComboCutCount > 1) { + mComboCutCount = 1; + } + return true; + } else { + return false; + } } -#pragma pop /* 800D2284-800D22BC 0CCBC4 0038+00 13/13 0/0 0/0 .text setSwordVoiceSe__9daAlink_cFUl */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setSwordVoiceSe(u32 param_0) { - nofralloc -#include "asm/d/a/d_a_alink/setSwordVoiceSe__9daAlink_cFUl.s" +void daAlink_c::setSwordVoiceSe(u32 sfx_id) { + if (!i_checkNoResetFlg0(UNDER_WATER_MOVEMENT)) { + voiceStart(sfx_id); + } } -#pragma pop /* 800D22BC-800D2304 0CCBFC 0048+00 3/3 0/0 0/0 .text setSwordChargeVoiceSe__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setSwordChargeVoiceSe() { - nofralloc -#include "asm/d/a/d_a_alink/setSwordChargeVoiceSe__9daAlink_cFv.s" +void daAlink_c::setSwordChargeVoiceSe() { + if (mCommonCounter != 0) { + mCommonCounter--; + if (mCommonCounter == 0) { + setSwordVoiceSe(Z2SE_AL_V_TAME); + } + } } -#pragma pop /* 800D2304-800D2368 0CCC44 0064+00 3/3 0/0 0/0 .text setSwordComboVoice__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::setSwordComboVoice() { - nofralloc -#include "asm/d/a/d_a_alink/setSwordComboVoice__9daAlink_cFv.s" +void daAlink_c::setSwordComboVoice() { + if (mActionID == CUT_JUMP || mComboCutCount == 4) { + setSwordVoiceSe(Z2SE_AL_V_ATTACK_L); + } + else if (mComboCutCount == 1) { + setSwordVoiceSe(Z2SE_AL_V_ATTACK_S); + } else { + setSwordVoiceSe(Z2SE_AL_V_ATTACK_M); + } } -#pragma pop /* 800D2368-800D23C0 0CCCA8 0058+00 3/3 0/0 0/0 .text checkCutTurnInputTrigger__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkCutTurnInputTrigger() { - nofralloc -#include "asm/d/a/d_a_alink/checkCutTurnInputTrigger__9daAlink_cFv.s" +bool daAlink_c::checkCutTurnInputTrigger() { + return swordSwingTrigger() && checkCutTurnInput(); } -#pragma pop /* 800D23C0-800D2684 0CCD00 02C4+00 7/7 0/0 0/0 .text checkCutAction__9daAlink_cFv */ #pragma push @@ -20552,14 +20410,17 @@ asm void daAlink_c::checkCutAction() { #pragma pop /* 800D2684-800D26EC 0CCFC4 0068+00 9/9 0/0 0/0 .text checkCutTurnCharge__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::checkCutTurnCharge() { - nofralloc -#include "asm/d/a/d_a_alink/checkCutTurnCharge__9daAlink_cFv.s" +void daAlink_c::checkCutTurnCharge() { + if (swordButton()) { + if (field_0x3012 < 3) { + field_0x3012++; + } else { + i_onResetFlg0(RFLG0_UNK_40); + } + } else { + field_0x3012 = 0; + } } -#pragma pop /* 800D26EC-800D2760 0CD02C 0074+00 4/4 0/0 0/0 .text getCutDirection__9daAlink_cFv */ #pragma push @@ -20595,7 +20456,7 @@ asm void daAlink_c::checkDoCutAction() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkCutBackState() { +asm BOOL daAlink_c::checkCutBackState() { nofralloc #include "asm/d/a/d_a_alink/checkCutBackState__9daAlink_cFv.s" } @@ -20664,6 +20525,47 @@ asm void daAlink_c::checkCutAtnActorChange() { #pragma pop /* 800D2C78-800D2F58 0CD5B8 02E0+00 2/2 0/0 0/0 .text setCutJumpSpeed__9daAlink_cFi */ +// literals, and small issue with JMAFastSqrt instructions +#ifdef NONMATCHING +void daAlink_c::setCutJumpSpeed(int cut_type) { + if (i_checkNoResetFlg0(UNDER_WATER_MOVEMENT)) { + mNormalSpeed *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityX; + mSpeed.y *= daAlinkHIO_magneBoots_c0::m.mWaterVelocityY; + } else if (checkHeavyStateOn(1, 1)) { + mSpeed.y *= 1.35f; + } + + // cut_type 0 = standing jump attack + if (mTargetedActor != NULL && cut_type == 0) { + mCollisionRot.y = cLib_targetAngleY(&mCurrent.mPosition, &mTargetedActor->mEyePos); + cXyz targetPos(mTargetedActor->mEyePos.x - (cM_ssin(mCollisionRot.y) * 70.0f), + mTargetedActor->mEyePos.y + 50.0f, + mTargetedActor->mEyePos.z - (cM_scos(mCollisionRot.y) * 70.0f)); + + if (fopAcM_gc_c::gndCheck(&targetPos)) { + targetPos.y = fopAcM_gc_c::getGroundY(); + } else { + targetPos.y = mTargetedActor->mEyePos.y; + } + + f32 dvar12 = mSpeed.y + mGravity; + f32 dvar10 = 1.0f / mGravity; + f32 fvar1 = targetPos.y - (mCurrent.mPosition.y - (dvar10 * (dvar12 * dvar12) * 0.5f)); + + if (fvar1 > 0.0f) { + fvar1 = 0.0f; + } + f32 sqrt = JMAFastSqrt(fvar1 * 2.0f * dvar10); + f32 speedDiv = sqrt - (dvar12 * dvar10); + f32 squareDist = mCurrent.mPosition.absXZ(targetPos); + + if (squareDist > 500.0f) { + squareDist = 500.0f; + } + mNormalSpeed = squareDist / speedDiv; + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -20672,6 +20574,7 @@ asm void daAlink_c::setCutJumpSpeed(int param_0) { #include "asm/d/a/d_a_alink/setCutJumpSpeed__9daAlink_cFi.s" } #pragma pop +#endif /* 800D2F58-800D31B8 0CD898 0260+00 3/3 0/0 0/0 .text procCutNormalInit__9daAlink_cFi */ #pragma push @@ -20776,24 +20679,63 @@ asm void daAlink_c::procCutReverse() { #pragma pop /* 800D42FC-800D43F8 0CEC3C 00FC+00 2/2 0/0 0/0 .text procCutJumpInit__9daAlink_cFi */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::procCutJumpInit(int param_0) { - nofralloc -#include "asm/d/a/d_a_alink/procCutJumpInit__9daAlink_cFi.s" +bool daAlink_c::procCutJumpInit(int jump_type) { + commonProcInit(CUT_JUMP); + setSingleAnimeParam(ANM_CUT_JUMP, &daAlinkHIO_cutJump_c0::m.mCutAnm); + if (jump_type != 0) { + mNormalSpeed = daAlinkHIO_cutJump_c0::m.mAirJumpSpeedH; + mSpeed.y = daAlinkHIO_cutJump_c0::m.mAirJumpSpeedV; + } else { + mNormalSpeed = daAlinkHIO_cutJump_c0::m.mBaseJumpSpeedH; + mSpeed.y = daAlinkHIO_cutJump_c0::m.mBaseJumpSpeedV; + } + setCutJumpSpeed(jump_type); + mCurrent.mAngle.y = mCollisionRot.y; + setSwordAtParam(dCcG_At_Spl_UNK_01, 3, 1, 3, daAlinkHIO_cut_c0::m.mSwordLength, daAlinkHIO_cut_c0::m.mSwordRadius); + setCutType(TYPE_CUT_JUMP); + setSwordComboVoice(); + dComIfGp_setPlayerStatus0(0, 0x8000); + field_0x3198 = 2; + return true; } -#pragma pop /* 800D43F8-800D452C 0CED38 0134+00 1/0 0/0 0/0 .text procCutJump__9daAlink_cFv */ +#ifdef NONMATCHING +bool daAlink_c::procCutJump() { + if (mCurrent.mAngle.y == mCollisionRot.y && changeCutReverseProc(ANM_CUT_JUMP)) { + mCurrent.mAngle.y += 0x8000; + mNormalSpeed = 27.0f; + cXyz xyz(0.0f, 1.0f, 0.0f); + dComIfGp_getVibration().StartShock(5, 31, xyz); + } + else if (mCurrent.mAngle.y != mCollisionRot.y) { + cLib_chaseF(&mNormalSpeed, 5.0f, 1.0f); + } + + if (checkCutTurnInput()) { + field_0x3198 = getCutTurnDirection(); + } + if (mLinkAcch.ChkGroundHit()) { + procCutJumpLandInit(field_0x3198); + } + else if (mFrameCtrl1[0].getFrame() >= daAlinkHIO_cutJump_c0::m.mStartAttackFrame) { + if (!i_checkNoResetFlg0(FLG0_UNK_40)) { + seStartSwordCut(Z2SE_AL_SWORD_SWING_L); + } + i_onResetFlg0(RFLG0_UNK_2); + } + return true; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::procCutJump() { +asm bool daAlink_c::procCutJump() { nofralloc #include "asm/d/a/d_a_alink/procCutJump__9daAlink_cFv.s" } #pragma pop +#endif /* 800D452C-800D4684 0CEE6C 0158+00 1/1 0/0 0/0 .text procCutJumpLandInit__9daAlink_cFi */ @@ -21584,7 +21526,7 @@ asm void daAlink_c::procCoSwimFreezeReturn() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkEnemyGroup(fopAc_ac_c* param_0) { +asm BOOL daAlink_c::checkEnemyGroup(fopAc_ac_c* param_0) { nofralloc #include "asm/d/a/d_a_alink/checkEnemyGroup__9daAlink_cFP10fopAc_ac_c.s" } @@ -21594,7 +21536,7 @@ asm void daAlink_c::checkEnemyGroup(fopAc_ac_c* param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkSpecialNpc(fopAc_ac_c* param_0) { +asm BOOL daAlink_c::checkSpecialNpc(fopAc_ac_c* param_0) { nofralloc #include "asm/d/a/d_a_alink/checkSpecialNpc__9daAlink_cFP10fopAc_ac_c.s" } @@ -21614,7 +21556,7 @@ asm void daAlink_c::checkShieldAttackEmphasys() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkGuardActionChange() { +asm BOOL daAlink_c::checkGuardActionChange() { nofralloc #include "asm/d/a/d_a_alink/checkGuardActionChange__9daAlink_cFv.s" } @@ -21681,21 +21623,43 @@ asm void daAlink_c::setArrowShieldPos(cXyz* param_0, csXyz* param_1, cXyz const* #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkUpperGuardAnime() const { +asm BOOL daAlink_c::checkUpperGuardAnime() const { nofralloc #include "asm/d/a/d_a_alink/checkUpperGuardAnime__9daAlink_cCFv.s" } #pragma pop /* 800DCE6C-800DCF04 0D77AC 0098+00 1/0 0/0 0/0 .text checkPlayerGuard__9daAlink_cCFv */ +#ifdef NONMATCHING +BOOL daAlink_c::checkPlayerGuard() const { + bool ret = true; + bool bvar2 = true; + if (!i_checkSmallUpperGuardAnime()) { + bool bvar1 = false; + if (i_checkShieldGet() && checkHorseLieAnime()) { + bvar1 = true; + } + if (!bvar1) { + bvar2 = false; + } + } + + if (!bvar2 && !checkUpperGuardAnime()) { + ret = false; + } + + return ret; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm bool daAlink_c::checkPlayerGuard() const { +asm BOOL daAlink_c::checkPlayerGuard() const { nofralloc #include "asm/d/a/d_a_alink/checkPlayerGuard__9daAlink_cCFv.s" } #pragma pop +#endif /* 800DCF04-800DCF64 0D7844 0060+00 5/5 0/0 0/0 .text checkPlayerGuardAndAttack__9daAlink_cCFv */ #pragma push @@ -21895,7 +21859,7 @@ asm void daAlink_c::getArrowIncAtMax() const { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkBowAndSlingItem(int param_0) { +asm BOOL daAlink_c::checkBowAndSlingItem(int param_0) { nofralloc #include "asm/d/a/d_a_alink/checkBowAndSlingItem__9daAlink_cFi.s" } @@ -22079,7 +22043,7 @@ asm void daAlink_c::setBowModel() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkBowGrabLeftHand() const { +asm bool daAlink_c::checkBowGrabLeftHand() const { nofralloc #include "asm/d/a/d_a_alink/checkBowGrabLeftHand__9daAlink_cCFv.s" } @@ -22911,168 +22875,97 @@ asm void daAlink_c::procMagneBootsFly() { /* 800E3760-800E3770 0DE0A0 0010+00 0/0 0/0 7/7 .text getBombExplodeTime__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::getBombExplodeTime() const { - nofralloc -#include "asm/d/a/d_a_alink/getBombExplodeTime__9daAlink_cCFv.s" +s16 daAlink_c::getBombExplodeTime() const { + return daAlinkHIO_bomb_c0::m.mExplodeTime; } -#pragma pop /* 800E3770-800E3780 0DE0B0 0010+00 0/0 0/0 2/2 .text getBombGravity__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::getBombGravity() const { - nofralloc -#include "asm/d/a/d_a_alink/getBombGravity__9daAlink_cCFv.s" +f32 daAlink_c::getBombGravity() const { + return daAlinkHIO_bomb_c0::m.mGravity; } -#pragma pop /* 800E3780-800E3790 0DE0C0 0010+00 0/0 0/0 2/2 .text getBombMaxFallSpeed__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::getBombMaxFallSpeed() const { - nofralloc -#include "asm/d/a/d_a_alink/getBombMaxFallSpeed__9daAlink_cCFv.s" +f32 daAlink_c::getBombMaxFallSpeed() const { + return daAlinkHIO_bomb_c0::m.mMaxFallSpeed; } -#pragma pop /* 800E3790-800E37A0 0DE0D0 0010+00 0/0 0/0 1/1 .text getBombBoundRate__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::getBombBoundRate() const { - nofralloc -#include "asm/d/a/d_a_alink/getBombBoundRate__9daAlink_cCFv.s" +f32 daAlink_c::getBombBoundRate() const { + return daAlinkHIO_bomb_c0::m.mBoundRate; } -#pragma pop /* 800E37A0-800E37B0 0DE0E0 0010+00 0/0 0/0 1/1 .text getBombStopSpeedY__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::getBombStopSpeedY() const { - nofralloc -#include "asm/d/a/d_a_alink/getBombStopSpeedY__9daAlink_cCFv.s" +f32 daAlink_c::getBombStopSpeedY() const { + return daAlinkHIO_bomb_c0::m.mStopSpeedY; } -#pragma pop /* 800E37B0-800E37C0 0DE0F0 0010+00 0/0 0/0 1/1 .text getBombMaxSpeedY__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::getBombMaxSpeedY() const { - nofralloc -#include "asm/d/a/d_a_alink/getBombMaxSpeedY__9daAlink_cCFv.s" +f32 daAlink_c::getBombMaxSpeedY() const { + return daAlinkHIO_bomb_c0::m.mMaxSpeedY; } -#pragma pop /* 800E37C0-800E37D0 0DE100 0010+00 0/0 0/0 1/1 .text getBombEffScale__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::getBombEffScale() const { - nofralloc -#include "asm/d/a/d_a_alink/getBombEffScale__9daAlink_cCFv.s" +f32 daAlink_c::getBombEffScale() const { + return daAlinkHIO_bomb_c0::m.mEffScale; } -#pragma pop /* 800E37D0-800E37E0 0DE110 0010+00 0/0 0/0 1/1 .text getBombAtR__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::getBombAtR() const { - nofralloc -#include "asm/d/a/d_a_alink/getBombAtR__9daAlink_cCFv.s" +f32 daAlink_c::getBombAtR() const { + return daAlinkHIO_bomb_c0::m.mAtRadius; } -#pragma pop /* 800E37E0-800E37F0 0DE120 0010+00 0/0 0/0 1/1 .text getEnemyBombColorR__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::getEnemyBombColorR() const { - nofralloc -#include "asm/d/a/d_a_alink/getEnemyBombColorR__9daAlink_cCFv.s" +s16 daAlink_c::getEnemyBombColorR() const { + return daAlinkHIO_bomb_c0::m.mEnemyBombColorR; } -#pragma pop /* 800E37F0-800E3800 0DE130 0010+00 0/0 0/0 2/2 .text getBombWaterGravity__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::getBombWaterGravity() const { - nofralloc -#include "asm/d/a/d_a_alink/getBombWaterGravity__9daAlink_cCFv.s" +f32 daAlink_c::getBombWaterGravity() const { + return daAlinkHIO_bomb_c0::m.mWaterGravity; } -#pragma pop /* 800E3800-800E3810 0DE140 0010+00 0/0 0/0 2/2 .text getBombWaterMaxFallSpeed__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::getBombWaterMaxFallSpeed() const { - nofralloc -#include "asm/d/a/d_a_alink/getBombWaterMaxFallSpeed__9daAlink_cCFv.s" +f32 daAlink_c::getBombWaterMaxFallSpeed() const { + return daAlinkHIO_bomb_c0::m.mWaterMaxFallSpeed; } -#pragma pop /* 800E3810-800E3820 0DE150 0010+00 0/0 0/0 1/1 .text * getBombExplodeWaterEffectLimit__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::getBombExplodeWaterEffectLimit() const { - nofralloc -#include "asm/d/a/d_a_alink/getBombExplodeWaterEffectLimit__9daAlink_cCFv.s" +f32 daAlink_c::getBombExplodeWaterEffectLimit() const { + return daAlinkHIO_bomb_c0::m.mExplodeWaterEffectLimit; } -#pragma pop /* 800E3820-800E3830 0DE160 0010+00 0/0 0/0 1/1 .text getBombInsectLimitAngle__9daAlink_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::getBombInsectLimitAngle() const { - nofralloc -#include "asm/d/a/d_a_alink/getBombInsectLimitAngle__9daAlink_cCFv.s" +s16 daAlink_c::getBombInsectLimitAngle() const { + return daAlinkHIO_bomb_c0::m.mBombInsectLimitAngle; } -#pragma pop /* 800E3830-800E3858 0DE170 0028+00 2/2 0/0 0/0 .text daAlink_checkLightBallA__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daAlink_checkLightBallA(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/a/d_a_alink/daAlink_checkLightBallA__FP10fopAc_ac_c.s" +static bool daAlink_checkLightBallA(fopAc_ac_c* p_actor) { + if (fopAcM_GetName(p_actor) == 0x2FC && static_cast(p_actor)->getType() == daObjCarry_c::TYPE_BALL_S) { + return true; + } + return false; } -#pragma pop /* 800E3858-800E3880 0DE198 0028+00 2/2 0/0 0/0 .text daAlink_checkLightBallB__FP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daAlink_checkLightBallB(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/a/d_a_alink/daAlink_checkLightBallB__FP10fopAc_ac_c.s" +static bool daAlink_checkLightBallB(fopAc_ac_c* p_actor) { + if (fopAcM_GetName(p_actor) == 0x2FC && static_cast(p_actor)->getType() == daObjCarry_c::TYPE_BALL_S_2) { + return true; + } + return false; } -#pragma pop /* 800E3880-800E38EC 0DE1C0 006C+00 1/1 0/0 0/0 .text daAlink_searchLightBall__FP10fopAc_ac_cPv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void daAlink_searchLightBall(fopAc_ac_c* param_0, void* param_1) { - nofralloc -#include "asm/d/a/d_a_alink/daAlink_searchLightBall__FP10fopAc_ac_cPv.s" +static fopAc_ac_c* daAlink_searchLightBall(fopAc_ac_c* p_actor, void* param_1) { + if ((daPy_py_c::checkCarryStartLightBallA() && daAlink_checkLightBallA(p_actor)) || (daPy_py_c::checkCarryStartLightBallB() && daAlink_checkLightBallB(p_actor))) { + return p_actor; + } + return NULL; } -#pragma pop /* 800E38EC-800E3994 0DE22C 00A8+00 1/1 0/0 0/0 .text checkGrabLineCheck__9daAlink_cFv */ #pragma push @@ -23097,24 +22990,38 @@ asm void daAlink_c::setGrabCollisionOffset(f32 param_0, f32 param_1, cBgS_PolyIn /* 800E3A14-800E3A9C 0DE354 0088+00 1/0 0/0 0/0 .text exchangeGrabActor__9daAlink_cFP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::exchangeGrabActor(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/a/d_a_alink/exchangeGrabActor__9daAlink_cFP10fopAc_ac_c.s" +bool daAlink_c::exchangeGrabActor(fopAc_ac_c* p_actor) { + fopAc_ac_c* actor = mGrabItemActor.getActor(); + + if (actor == NULL) { + return false; + } + + fopAcM_cancelCarryNow(actor); + actor->mCollisionRot.z = 0; + actor->mCollisionRot.x = 0; + if (checkGrabCarryActor()) { + actor->mCurrent.mAngle.z = 0; + actor->mCurrent.mAngle.x = 0; + } + setGrabItemActor(p_actor); + return true; } -#pragma pop /* 800E3A9C-800E3BCC 0DE3DC 0130+00 1/0 0/0 0/0 .text setForceGrab__9daAlink_cFP10fopAc_ac_cii */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::setForceGrab(fopAc_ac_c* param_0, int param_1, int param_2) { - nofralloc -#include "asm/d/a/d_a_alink/setForceGrab__9daAlink_cFP10fopAc_ac_cii.s" +bool daAlink_c::setForceGrab(fopAc_ac_c* p_actor, int param_1, int param_2) { + if (((param_1 != 0 || !checkEventRun()) && !i_checkWolf()) && + (((mEquipItem == NO_ITEM || (param_2 != 0 && checkHookshotItem(mEquipItem)))) && + ((i_checkModeFlg(MODE_UNK_10000000) && (checkHorseNoUpperAnime() || checkHorseTurnAnime())) || + param_2 != 0 && checkHookshotAnime()))) { + deleteEquipItem(1, 0); + setGrabItemActor(p_actor); + field_0x33e4 = lit_8785; + setGrabUpperAnime(daAlinkHIO_basic_c0::m.mAnmBlendFactor); + return true; + } + return false; } -#pragma pop /* 800E3BCC-800E3C1C 0DE50C 0050+00 2/2 0/0 0/0 .text getGrabThrowRate__9daAlink_cFv */ #pragma push @@ -23162,7 +23069,7 @@ asm void daAlink_c::checkGrabAnimeAndThrow() const { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkGrabCarryActor() { +asm BOOL daAlink_c::checkGrabCarryActor() { nofralloc #include "asm/d/a/d_a_alink/checkGrabCarryActor__9daAlink_cFv.s" } @@ -23700,14 +23607,19 @@ asm void daAlink_c::setFmChainPosFromOut(fopAc_ac_c* param_0, cXyz* param_1, int #pragma pop /* 800E7BD0-800E7C30 0E2510 0060+00 1/0 0/0 0/0 .text checkChainBlockPushPull__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkChainBlockPushPull() { - nofralloc -#include "asm/d/a/d_a_alink/checkChainBlockPushPull__9daAlink_cFv.s" +bool daAlink_c::checkChainBlockPushPull() { + if (i_checkFmChainGrabAnime()) { + fopAc_ac_c* actor = field_0x2844.getActor(); + if (actor != NULL) { + s16 name = fopAcM_GetName(actor); + // actor is Cblock || chainSw || Cwall + if (name == 0x7E || name == 0x16F || name == 0x7F) { + return true; + } + } + } + return false; } -#pragma pop /* 800E7C30-800E7CC0 0E2570 0090+00 2/2 0/0 0/0 .text procFmChainUpInit__9daAlink_cFv */ #pragma push @@ -23815,10 +23727,10 @@ asm void daAlink_c::checkPullBehindWall() { /* 800E8298-800E82B0 0E2BD8 0018+00 3/3 0/0 0/0 .text offGoatStopGame__9daAlink_cFv */ void daAlink_c::offGoatStopGame() { - if (field_0x560[0xA] != 0x2a) { + if (mSpecialMode != SMODE_GOAT_STOP) { return; } else { - field_0x560[0xA] = 0; + mSpecialMode = 0; } } @@ -24057,8 +23969,8 @@ asm void daAlink_c::checkSumouVsActor() { /* 800EA8D0-800EA908 0E5210 0038+00 5/5 0/0 0/0 .text cancelSumouMode__9daAlink_cFv */ void daAlink_c::cancelSumouMode() { - field_0x2854.clearData(); - field_0x560[0xA] = 0; + mCargoCarryActor.clearData(); + mSpecialMode = 0; } /* 800EA908-800EA92C 0E5248 0024+00 2/2 0/0 0/0 .text sumouPunchTrigger__9daAlink_cFv */ @@ -24386,7 +24298,7 @@ asm void daAlink_c::getReinHandType() const { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkHorseLieAnime() const { +asm BOOL daAlink_c::checkHorseLieAnime() const { nofralloc #include "asm/d/a/d_a_alink/checkHorseLieAnime__9daAlink_cCFv.s" } @@ -24427,7 +24339,7 @@ asm void daAlink_c::setHorseTurnUpperAnime(int param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkHorseNoUpperAnime() const { +asm BOOL daAlink_c::checkHorseNoUpperAnime() const { nofralloc #include "asm/d/a/d_a_alink/checkHorseNoUpperAnime__9daAlink_cCFv.s" } @@ -27970,7 +27882,8 @@ asm void daAlink_c::procBoardCutTurn() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::hsChainShape_c::draw() { +extern "C" asm void draw__Q29daAlink_c14hsChainShape_cFv() { +// asm void daAlink_c::hsChainShape_c::draw() { nofralloc #include "asm/d/a/d_a_alink/draw__Q29daAlink_c14hsChainShape_cFv.s" } @@ -29652,7 +29565,7 @@ asm void daAlink_c::procIronBallReturn() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkEventRun() const { +asm BOOL daAlink_c::checkEventRun() const { nofralloc #include "asm/d/a/d_a_alink/checkEventRun__9daAlink_cCFv.s" } @@ -30739,10 +30652,10 @@ asm void daAlink_c::procGanonFinishInit() { /* 8011EA78-8011EAE8 1193B8 0070+00 1/0 0/0 0/0 .text procGanonFinish__9daAlink_cFv */ bool daAlink_c::procGanonFinish() { - i_onEndResetFlg1(GanonFinish); + i_onEndResetFlg1(GANON_FINISH); mCurrent.mPosition = field_0x37c8; if (mFrameCtrl1[0].checkAnmEnd()) { - setSingleAnimeBaseMorf(GANON_FINISH, lit_6041); + setSingleAnimeBaseMorf(ANM_GANON_FINISH, lit_6041); } return true; } @@ -30815,7 +30728,7 @@ asm void daAlink_c::procMasterSwordPull() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkLv7DungeonShop() { +asm BOOL daAlink_c::checkLv7DungeonShop() { nofralloc #include "asm/d/a/d_a_alink/checkLv7DungeonShop__9daAlink_cFv.s" } @@ -31831,7 +31744,7 @@ asm void daAlink_c::checkWolfAtnWait() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daAlink_c::checkUnderMove0BckNoArcWolf(daAlink_c::daAlink_WANM param_0) const { +asm BOOL daAlink_c::checkUnderMove0BckNoArcWolf(daAlink_c::daAlink_WANM param_0) const { nofralloc #include "asm/d/a/d_a_alink/checkUnderMove0BckNoArcWolf__9daAlink_cCFQ29daAlink_c12daAlink_WANM.s" } @@ -32763,6 +32676,22 @@ asm void daObj_Sekizoa_c::setWolfHowling() { #pragma pop /* 80131408-80131450 12BD48 0048+00 1/0 0/0 0/0 .text checkWolfRope__9daAlink_cFv */ +#ifdef NONMATCHING +bool daAlink_c::checkWolfRope() { + bool ret = false; + bool bvar1 = false; + + if (i_checkModeFlg(MODE_UNK_20000) && field_0x280c.getActor() != NULL) { + bvar1 = true; + } + + // actor is Crope + if (bvar1 && fopAcM_GetName(field_0x280c.getActor()) == 0x2BE) { + ret = true; + } + return ret; +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -32771,6 +32700,7 @@ asm bool daAlink_c::checkWolfRope() { #include "asm/d/a/d_a_alink/checkWolfRope__9daAlink_cFv.s" } #pragma pop +#endif /* 80131450-80131628 12BD90 01D8+00 2/2 0/0 0/0 .text * checkWolfRopeHit__9daAlink_cCFP12dCcD_GObjInfPC4cXyzi */ @@ -33579,35 +33509,35 @@ asm void daAlink_c::checkWolfLockData() { #pragma pop /* 8013911C-8013916C 133A5C 0050+00 1/0 0/0 0/0 .text checkWolfLock__9daAlink_cCFP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::checkWolfLock(fopAc_ac_c* param_0) const { - nofralloc -#include "asm/d/a/d_a_alink/checkWolfLock__9daAlink_cCFP10fopAc_ac_c.s" +bool daAlink_c::checkWolfLock(fopAc_ac_c* p_actor) const { + u32 id = fopAcM_GetID(p_actor); + + for (int i = 0; i < mWolfLockNum; i++) { + if (id == mWolfLockAcKeep[i].getID()) { + return true; + } + } + return false; } -#pragma pop /* 8013916C-801391DC 133AAC 0070+00 1/0 0/0 0/0 .text cancelWolfLock__9daAlink_cFP10fopAc_ac_c */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool daAlink_c::cancelWolfLock(fopAc_ac_c* param_0) { - nofralloc -#include "asm/d/a/d_a_alink/cancelWolfLock__9daAlink_cFP10fopAc_ac_c.s" +bool daAlink_c::cancelWolfLock(fopAc_ac_c* p_actor) { + u32 id = fopAcM_GetID(p_actor); + + for (int i = 0; i < mWolfLockNum; i++) { + if (id == mWolfLockAcKeep[i].getID()) { + mWolfLockAcKeep[i].clearData(); + return true; + } + } + return false; } -#pragma pop /* 801391DC-801391E4 133B1C 0008+00 0/0 0/0 1/1 .text getWolfLockActorEnd__9daAlink_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daAlink_c::getWolfLockActorEnd() { - nofralloc -#include "asm/d/a/d_a_alink/getWolfLockActorEnd__9daAlink_cFv.s" +fopAc_ac_c* daAlink_c::getWolfLockActorEnd() { + return mWolfLockAcKeep[0].getActor(); } -#pragma pop /* 801391E4-801392A8 133B24 00C4+00 1/1 0/0 0/0 .text * searchWolfLockEnemy__9daAlink_cFP10fopAc_ac_cPv */ @@ -34718,14 +34648,9 @@ asm void dEvt_info_c::offCondition(u16 param_0) { #pragma pop /* 80141210-80141230 13BB50 0020+00 1/1 0/0 0/0 .text checkShieldGet__9daPy_py_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daPy_py_c::checkShieldGet() { - nofralloc -#include "asm/d/a/d_a_alink/checkShieldGet__9daPy_py_cFv.s" +BOOL daPy_py_c::checkShieldGet() { + return dComIfGs_getSelectEquipShield() != NO_ITEM; } -#pragma pop /* 80141230-80141264 13BB70 0034+00 1/1 0/0 0/0 .text fopAcM_onSwitch__FPC10fopAc_ac_ci */ @@ -34767,7 +34692,7 @@ static asm void dComIfGp_getStage() { /* 801412B0-801412BC 13BBF0 000C+00 1/1 0/0 0/0 .text checkEquipHeavyBoots__9daPy_py_cCFv */ BOOL daPy_py_c::checkEquipHeavyBoots() const { - return i_checkNoResetFlg0(EquipHeavyBoots); + return i_checkNoResetFlg0(EQUIP_HEAVY_BOOTS); } /* 801412BC-801412C4 13BBFC 0008+00 1/1 4/4 0/0 .text fopAcM_GetName__FPv */ @@ -34886,29 +34811,19 @@ asm bool dEvt_info_c::checkCommandCatch() { #pragma pop /* 8014139C-801413CC 13BCDC 0030+00 1/1 1/1 0/0 .text dComIfGs_isEventBit__FUs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm BOOL dComIfGs_isEventBit(u16 param_0) { - nofralloc -#include "asm/d/a/d_a_alink/dComIfGs_isEventBit__FUs.s" +BOOL dComIfGs_isEventBit(u16 id) { + return g_dComIfG_gameInfo.info.getEvent().isEventBit(id); } -#pragma pop /* 801413CC-801413D8 13BD0C 000C+00 1/1 0/0 0/0 .text checkWolf__9daPy_py_cCFv */ int daPy_py_c::checkWolf() const { - return i_checkNoResetFlg1(Wolf); + return i_checkNoResetFlg1(IS_WOLF); } /* 801413D8-801413F8 13BD18 0020+00 1/1 0/0 0/0 .text checkSwordGet__9daPy_py_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daPy_py_c::checkSwordGet() { - nofralloc -#include "asm/d/a/d_a_alink/checkSwordGet__9daPy_py_cFv.s" +BOOL daPy_py_c::checkSwordGet() { + return dComIfGs_getSelectEquipSword() != 0xFF; } -#pragma pop /* 801413F8-80141404 13BD38 000C+00 1/1 0/0 0/0 .text * checkResetFlg0__9daPy_py_cCFQ29daPy_py_c10daPy_RFLG0 */ @@ -34928,6 +34843,11 @@ int daPy_py_c::checkNoResetFlg0(daPy_FLG0 pFlag) const { } /* 8014141C-80141438 13BD5C 001C+00 1/1 0/0 0/0 .text dComIfGp_getPlayerCameraID__Fi */ +#ifdef NONMATCHING +static s32 dComIfGp_getPlayerCameraID(int i) { + return g_dComIfG_gameInfo.play.getPlayerCameraID(i); +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -34936,48 +34856,29 @@ static asm void dComIfGp_getPlayerCameraID(int param_0) { #include "asm/d/a/d_a_alink/dComIfGp_getPlayerCameraID__Fi.s" } #pragma pop +#endif /* 80141438-80141450 13BD78 0018+00 1/1 0/0 0/0 .text dComIfGp_event_chkEventFlag__FUs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void dComIfGp_event_chkEventFlag(u16 param_0) { - nofralloc -#include "asm/d/a/d_a_alink/dComIfGp_event_chkEventFlag__FUs.s" +static u16 dComIfGp_event_chkEventFlag(u16 flag) { + return g_dComIfG_gameInfo.play.getEvent().chkEventFlag(flag); } -#pragma pop /* 80141450-80141464 13BD90 0014+00 1/1 0/0 0/0 .text checkCommandDoor__11dEvt_info_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm bool dEvt_info_c::checkCommandDoor() { - nofralloc -#include "asm/d/a/d_a_alink/checkCommandDoor__11dEvt_info_cFv.s" +BOOL dEvt_info_c::checkCommandDoor() { + return mCommand == 3; } -#pragma pop /* 80141464-801414A4 13BDA4 0040+00 1/1 0/0 0/0 .text * dComIfGp_evmng_getMyStaffId__FPCcP10fopAc_ac_ci */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void dComIfGp_evmng_getMyStaffId(char const* param_0, fopAc_ac_c* param_1, int param_2) { - nofralloc -#include "asm/d/a/d_a_alink/dComIfGp_evmng_getMyStaffId__FPCcP10fopAc_ac_ci.s" +static s32 dComIfGp_evmng_getMyStaffId(char const* param_0, fopAc_ac_c* param_1, int param_2) { + return dComIfGp_getPEvtManager()->getMyStaffId(param_0, param_1, param_2); } -#pragma pop /* 801414A4-801414C0 13BDE4 001C+00 1/1 0/0 0/0 .text dComIfGp_event_runCheck__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -static asm void dComIfGp_event_runCheck() { - nofralloc -#include "asm/d/a/d_a_alink/dComIfGp_event_runCheck__Fv.s" +static BOOL dComIfGp_event_runCheck() { + return g_dComIfG_gameInfo.play.getEvent().runCheck(); } -#pragma pop /* 801414C0-801414CC 13BE00 000C+00 1/1 0/0 0/0 .text * checkNoResetFlg2__9daPy_py_cCFQ29daPy_py_c9daPy_FLG2 */ @@ -34987,22 +34888,17 @@ int daPy_py_c::checkNoResetFlg2(daPy_FLG2 pFlag) const { /* 801414CC-801414D8 13BE0C 000C+00 1/1 2/2 0/0 .text checkMagneBootsOn__9daPy_py_cCFv */ int daPy_py_c::checkMagneBootsOn() const { - return i_checkNoResetFlg0(MagneBootsOn); + return i_checkNoResetFlg0(MAGNE_BOOTS_ON); } /* 801414D8-801414E8 13BE18 0010+00 1/1 2/2 0/0 .text dComIfGp_getHorseActor__Fv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void dComIfGp_getHorseActor() { - nofralloc -#include "asm/d/a/d_a_alink/dComIfGp_getHorseActor__Fv.s" +daHorse_c* dComIfGp_getHorseActor() { + return (daHorse_c*)g_dComIfG_gameInfo.play.getPlayerPtr(1); } -#pragma pop /* 801414E8-801414F4 13BE28 000C+00 1/1 0/0 0/0 .text checkBoarSingleBattle__9daPy_py_cCFv */ int daPy_py_c::checkBoarSingleBattle() const { - return i_checkNoResetFlg2(BoarSingleBattle); + return i_checkNoResetFlg2(BOAR_SINGLE_BATTLE); } /* 801414F4-80141500 13BE34 000C+00 1/1 0/0 0/0 .text @@ -35024,12 +34920,12 @@ void daPy_py_c::setMidnaMsgNum(fopAc_ac_c* param_0, u16 param_1) { } /* 8014150C-80141514 13BE4C 0008+00 1/0 0/0 0/0 .text getModelMtx__9daPy_py_cFv */ -Mtx* daPy_py_c::getModelMtx() { +MtxP daPy_py_c::getModelMtx() { return mCullMtx; } /* 80141514-8014151C 13BE54 0008+00 1/0 0/0 0/0 .text getInvMtx__9daPy_py_cFv */ -Mtx* daPy_py_c::getInvMtx() { +MtxP daPy_py_c::getInvMtx() { return mCullMtx; } @@ -35040,52 +34936,52 @@ cXyz* daPy_py_c::getShadowTalkAtnPos() { } /* 80141524-8014152C 13BE64 0008+00 1/0 0/0 0/0 .text getLeftItemMatrix__9daPy_py_cFv */ -Mtx* daPy_py_c::getLeftItemMatrix() { +MtxP daPy_py_c::getLeftItemMatrix() { return mCullMtx; } /* 8014152C-80141534 13BE6C 0008+00 1/0 0/0 0/0 .text getRightItemMatrix__9daPy_py_cFv */ -Mtx* daPy_py_c::getRightItemMatrix() { +MtxP daPy_py_c::getRightItemMatrix() { return mCullMtx; } /* 80141534-8014153C 13BE74 0008+00 1/0 0/0 0/0 .text getLeftHandMatrix__9daPy_py_cFv */ -Mtx* daPy_py_c::getLeftHandMatrix() { +MtxP daPy_py_c::getLeftHandMatrix() { return mCullMtx; } /* 8014153C-80141544 13BE7C 0008+00 1/0 0/0 0/0 .text getRightHandMatrix__9daPy_py_cFv */ -Mtx* daPy_py_c::getRightHandMatrix() { +MtxP daPy_py_c::getRightHandMatrix() { return mCullMtx; } /* 80141544-8014154C 13BE84 0008+00 1/0 0/0 0/0 .text getLinkBackBone1Matrix__9daPy_py_cFv */ -Mtx* daPy_py_c::getLinkBackBone1Matrix() { +MtxP daPy_py_c::getLinkBackBone1Matrix() { return mCullMtx; } /* 8014154C-80141554 13BE8C 0008+00 1/0 0/0 0/0 .text getWolfMouthMatrix__9daPy_py_cFv */ -Mtx* daPy_py_c::getWolfMouthMatrix() { +MtxP daPy_py_c::getWolfMouthMatrix() { return mCullMtx; } /* 80141554-8014155C 13BE94 0008+00 1/0 0/0 0/0 .text getWolfBackbone2Matrix__9daPy_py_cFv */ -Mtx* daPy_py_c::getWolfBackbone2Matrix() { +MtxP daPy_py_c::getWolfBackbone2Matrix() { return mCullMtx; } /* 8014155C-80141564 13BE9C 0008+00 1/0 0/0 0/0 .text getBottleMtx__9daPy_py_cFv */ -bool daPy_py_c::getBottleMtx() { - return false; +MtxP daPy_py_c::getBottleMtx() { + return NULL; } /* 80141564-8014156C 13BEA4 0008+00 1/0 0/0 0/0 .text checkPlayerGuard__9daPy_py_cCFv */ -bool daPy_py_c::checkPlayerGuard() const { +BOOL daPy_py_c::checkPlayerGuard() const { return false; } /* 8014156C-80141574 13BEAC 0008+00 1/0 0/0 0/0 .text checkAutoJump__9daPy_py_cCFv */ -bool daPy_py_c::checkAutoJump() const { +BOOL daPy_py_c::checkAutoJump() const { return false; } @@ -35102,7 +34998,7 @@ bool daPy_py_c::checkWolfTriggerJump() const { /* 80141584-8014158C 13BEC4 0008+00 1/0 0/0 0/0 .text checkGuardBreakMode__9daPy_py_cCFv */ -bool daPy_py_c::checkGuardBreakMode() const { +BOOL daPy_py_c::checkGuardBreakMode() const { return false; } @@ -35122,45 +35018,45 @@ bool daPy_py_c::checkChainBlockPushPull() { } /* 801415A4-801415AC 13BEE4 0008+00 1/0 0/0 0/0 .text checkElecDamage__9daPy_py_cCFv */ -bool daPy_py_c::checkElecDamage() const { +BOOL daPy_py_c::checkElecDamage() const { return false; } /* 801415AC-801415B4 13BEEC 0008+00 1/0 0/0 0/0 .text checkEmptyBottleSwing__9daPy_py_cCFv */ -bool daPy_py_c::checkEmptyBottleSwing() const { +BOOL daPy_py_c::checkEmptyBottleSwing() const { return false; } /* 801415B4-801415BC 13BEF4 0008+00 1/0 0/0 0/0 .text checkBottleSwingMode__9daPy_py_cCFv */ -bool daPy_py_c::checkBottleSwingMode() const { +BOOL daPy_py_c::checkBottleSwingMode() const { return false; } /* 801415BC-801415C4 13BEFC 0008+00 1/0 0/0 0/0 .text checkHawkWait__9daPy_py_cCFv */ -bool daPy_py_c::checkHawkWait() const { +BOOL daPy_py_c::checkHawkWait() const { return false; } /* 801415C4-801415CC 13BF04 0008+00 1/0 0/0 0/0 .text checkGoatThrow__9daPy_py_cCFv */ -bool daPy_py_c::checkGoatThrow() const { +BOOL daPy_py_c::checkGoatThrow() const { return false; } /* 801415CC-801415D4 13BF0C 0008+00 1/0 0/0 0/0 .text checkGoatThrowAfter__9daPy_py_cCFv */ -bool daPy_py_c::checkGoatThrowAfter() const { +BOOL daPy_py_c::checkGoatThrowAfter() const { return false; } /* 801415D4-801415DC 13BF14 0008+00 1/0 0/0 0/0 .text checkWolfTagLockJump__9daPy_py_cCFv */ -bool daPy_py_c::checkWolfTagLockJump() const { +BOOL daPy_py_c::checkWolfTagLockJump() const { return false; } /* 801415DC-801415E4 13BF1C 0008+00 1/0 0/0 0/0 .text checkWolfTagLockJumpLand__9daPy_py_cCFv */ -bool daPy_py_c::checkWolfTagLockJumpLand() const { +BOOL daPy_py_c::checkWolfTagLockJumpLand() const { return false; } @@ -35170,39 +35066,39 @@ bool daPy_py_c::checkWolfRope() { } /* 801415EC-801415F4 13BF2C 0008+00 1/0 0/0 0/0 .text checkWolfRopeHang__9daPy_py_cCFv */ -bool daPy_py_c::checkWolfRopeHang() const { +BOOL daPy_py_c::checkWolfRopeHang() const { return false; } /* 801415F4-801415FC 13BF34 0008+00 1/0 0/0 0/0 .text checkRollJump__9daPy_py_cCFv */ -bool daPy_py_c::checkRollJump() const { +BOOL daPy_py_c::checkRollJump() const { return false; } /* 801415FC-80141604 13BF3C 0008+00 1/0 0/0 0/0 .text checkGoronRideWait__9daPy_py_cCFv */ -bool daPy_py_c::checkGoronRideWait() const { +BOOL daPy_py_c::checkGoronRideWait() const { return false; } /* 80141604-8014160C 13BF44 0008+00 1/0 0/0 0/0 .text checkWolfChain__9daPy_py_cCFv */ -bool daPy_py_c::checkWolfChain() const { +BOOL daPy_py_c::checkWolfChain() const { return false; } /* 8014160C-80141614 13BF4C 0008+00 1/0 0/0 0/0 .text checkWolfWait__9daPy_py_cCFv */ -bool daPy_py_c::checkWolfWait() const { +BOOL daPy_py_c::checkWolfWait() const { return false; } /* 80141614-8014161C 13BF54 0008+00 1/0 0/0 0/0 .text checkWolfJumpAttack__9daPy_py_cCFv */ -bool daPy_py_c::checkWolfJumpAttack() const { +BOOL daPy_py_c::checkWolfJumpAttack() const { return false; } /* 8014161C-80141624 13BF5C 0008+00 1/0 0/0 0/0 .text checkWolfRSit__9daPy_py_cCFv */ -bool daPy_py_c::checkWolfRSit() const { +BOOL daPy_py_c::checkWolfRSit() const { return false; } @@ -35213,28 +35109,28 @@ bool daPy_py_c::checkBubbleFly() const { /* 8014162C-80141634 13BF6C 0008+00 1/0 0/0 0/0 .text checkBottleDrinkEnd__9daPy_py_cCFv */ -bool daPy_py_c::checkBottleDrinkEnd() const { +BOOL daPy_py_c::checkBottleDrinkEnd() const { return false; } /* 80141634-8014163C 13BF74 0008+00 1/0 0/0 0/0 .text checkWolfDig__9daPy_py_cCFv */ -bool daPy_py_c::checkWolfDig() const { +BOOL daPy_py_c::checkWolfDig() const { return false; } /* 8014163C-80141644 13BF7C 0008+00 1/0 0/0 0/0 .text checkCutCharge__9daPy_py_cCFv */ -bool daPy_py_c::checkCutCharge() const { +BOOL daPy_py_c::checkCutCharge() const { return false; } /* 80141644-8014164C 13BF84 0008+00 1/0 0/0 0/0 .text checkCutTurnCharge__9daPy_py_cCFv */ -bool daPy_py_c::checkCutTurnCharge() const { +BOOL daPy_py_c::checkCutTurnCharge() const { return false; } /* 8014164C-80141654 13BF8C 0008+00 1/0 0/0 0/0 .text checkCutLargeJumpCharge__9daPy_py_cCFv */ -bool daPy_py_c::checkCutLargeJumpCharge() const { +BOOL daPy_py_c::checkCutLargeJumpCharge() const { return false; } @@ -35245,22 +35141,22 @@ bool daPy_py_c::getBokoFlamePos(cXyz* param_0) { } /* 8014165C-80141664 13BF9C 0008+00 1/0 0/0 0/0 .text checkComboCutTurn__9daPy_py_cCFv */ -bool daPy_py_c::checkComboCutTurn() const { +BOOL daPy_py_c::checkComboCutTurn() const { return false; } /* 80141664-8014166C 13BFA4 0008+00 1/0 0/0 0/0 .text checkClimbMove__9daPy_py_cCFv */ -bool daPy_py_c::checkClimbMove() const { +BOOL daPy_py_c::checkClimbMove() const { return false; } /* 8014166C-80141674 13BFAC 0008+00 1/0 0/0 0/0 .text checkGrassWhistle__9daPy_py_cCFv */ -bool daPy_py_c::checkGrassWhistle() const { +BOOL daPy_py_c::checkGrassWhistle() const { return false; } /* 80141674-8014167C 13BFB4 0008+00 1/0 0/0 0/0 .text checkBoarRun__9daPy_py_cCFv */ -bool daPy_py_c::checkBoarRun() const { +BOOL daPy_py_c::checkBoarRun() const { return false; } @@ -35281,14 +35177,9 @@ float daPy_py_c::getBaseAnimeFrameRate() const { } /* 80141694-8014169C 13BFD4 0008+00 1/0 0/0 0/0 .text getBaseAnimeFrame__9daPy_py_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm float daPy_py_c::getBaseAnimeFrame() const { - nofralloc -#include "asm/d/a/d_a_alink/getBaseAnimeFrame__9daPy_py_cCFv.s" +f32 daPy_py_c::getBaseAnimeFrame() const { + return FLOAT_LABEL(lit_6108); } -#pragma pop /* 8014169C-801416A0 13BFDC 0004+00 1/0 0/0 0/0 .text setAnimeFrame__9daPy_py_cFf */ void daPy_py_c::setAnimeFrame(f32 param_0) { @@ -35369,13 +35260,13 @@ void daPy_py_c::onMagneGrab(f32 param_0, f32 param_1) { } /* 801416F4-801416FC 13C034 0008+00 1/0 0/0 0/0 .text getModelJointMtx__9daPy_py_cFUs */ -bool daPy_py_c::getModelJointMtx(u16 param_0) { - return false; +MtxP daPy_py_c::getModelJointMtx(u16 param_0) { + return NULL; } /* 801416FC-80141704 13C03C 0008+00 1/0 0/0 0/0 .text getHeadMtx__9daPy_py_cFv */ -bool daPy_py_c::getHeadMtx() { - return false; +MtxP daPy_py_c::getHeadMtx() { + return NULL; } /* 80141704-8014170C 13C044 0008+00 1/0 0/0 0/0 .text setHookshotCarryOffset__9daPy_py_cFUiPC4cXyz @@ -35397,7 +35288,7 @@ bool daPy_py_c::checkIronBallGroundStop() const { /* 8014171C-80141724 13C05C 0008+00 1/0 0/0 0/0 .text * checkSingleBoarBattleSecondBowReady__9daPy_py_cCFv */ -bool daPy_py_c::checkSingleBoarBattleSecondBowReady() const { +BOOL daPy_py_c::checkSingleBoarBattleSecondBowReady() const { return false; } @@ -35485,12 +35376,12 @@ void daPy_py_c::onSceneChangeDead(u8 param_0, int param_1) { } /* 80141770-80141778 13C0B0 0008+00 1/0 0/0 0/0 .text getSpinnerActor__9daPy_py_cFv */ -bool daPy_py_c::getSpinnerActor() { - return false; +fopAc_ac_c* daPy_py_c::getSpinnerActor() { + return NULL; } /* 80141778-80141780 13C0B8 0008+00 1/0 0/0 0/0 .text checkHorseRideNotReady__9daPy_py_cCFv */ -bool daPy_py_c::checkHorseRideNotReady() const { +BOOL daPy_py_c::checkHorseRideNotReady() const { return false; } @@ -35502,18 +35393,13 @@ bool daPy_py_c::checkArrowChargeEnd() const { /* 80141788-80141790 13C0C8 0008+00 1/0 0/0 0/0 .text getSearchBallScale__9daPy_py_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daPy_py_c::getSearchBallScale() const { - nofralloc -#include "asm/d/a/d_a_alink/getSearchBallScale__9daPy_py_cCFv.s" +f32 daPy_py_c::getSearchBallScale() const { + return FLOAT_LABEL(lit_6108); } -#pragma pop /* 80141790-80141798 13C0D0 0008+00 1/0 0/0 0/0 .text checkFastShotTime__9daPy_py_cFv */ -bool daPy_py_c::checkFastShotTime() { - return false; +s16 daPy_py_c::checkFastShotTime() { + return 0; } /* 80141798-801417A0 13C0D8 0008+00 1/0 0/0 0/0 .text checkNoEquipItem__9daPy_py_cCFv */ @@ -35534,8 +35420,8 @@ bool daPy_py_c::checkKandelaarSwing(int param_0) const { /* 801417B0-801417B8 13C0F0 0008+00 1/0 0/0 0/0 .text getBoardCutTurnOffsetAngleY__9daPy_py_cCFv */ -bool daPy_py_c::getBoardCutTurnOffsetAngleY() const { - return false; +s16 daPy_py_c::getBoardCutTurnOffsetAngleY() const { + return 0; } /* 801417B8-801417C0 13C0F8 0008+00 2/0 0/0 0/0 .text getMagneHitPos__9daPy_py_cFv */ @@ -35638,7 +35524,7 @@ bool daPy_py_c::checkCanoeFishingGetRight() const { /* 80141834-8014183C 13C174 0008+00 1/0 0/0 0/0 .text checkBeeChildDrink__9daPy_py_cCFv */ -bool daPy_py_c::checkBeeChildDrink() const { +u8 daPy_py_c::checkBeeChildDrink() const { return false; } @@ -35663,14 +35549,14 @@ bool daPy_py_c::checkAcceptDungeonWarpAlink(int param_0) { } /* 80141854-8014185C 13C194 0008+00 1/0 0/0 0/0 .text getSumouCounter__9daPy_py_cCFv */ -bool daPy_py_c::getSumouCounter() const { - return false; +s16 daPy_py_c::getSumouCounter() const { + return 0; } /* 8014185C-80141864 13C19C 0008+00 1/0 0/0 0/0 .text checkSumouWithstand__9daPy_py_cCFv */ -bool daPy_py_c::checkSumouWithstand() const { - return false; +s16 daPy_py_c::checkSumouWithstand() const { + return 0; } /* 80141864-80141868 13C1A4 0004+00 1/0 0/0 0/0 .text cancelGoronThrowEvent__9daPy_py_cFv @@ -35765,32 +35651,32 @@ void daPy_py_c::changeDragonActor(fopAc_ac_c* param_0) { } /* 801418C4-801418CC 13C204 0008+00 1/0 0/0 0/0 .text getClothesChangeWaitTimer__9daPy_py_cCFv */ -bool daPy_py_c::getClothesChangeWaitTimer() const { - return false; +u8 daPy_py_c::getClothesChangeWaitTimer() const { + return 0; } /* 801418CC-801418D4 13C20C 0008+00 1/0 0/0 0/0 .text getShieldChangeWaitTimer__9daPy_py_cCFv */ -bool daPy_py_c::getShieldChangeWaitTimer() const { - return false; +u8 daPy_py_c::getShieldChangeWaitTimer() const { + return 0; } /* 801418D4-801418DC 13C214 0008+00 1/0 0/0 0/0 .text getSwordChangeWaitTimer__9daPy_py_cCFv */ -bool daPy_py_c::getSwordChangeWaitTimer() const { - return false; +u8 daPy_py_c::getSwordChangeWaitTimer() const { + return 0; } /* 801418DC-801418E4 13C21C 0008+00 1/0 0/0 0/0 .text checkMetamorphose__9daPy_py_cCFv */ -bool daPy_py_c::checkMetamorphose() const { +BOOL daPy_py_c::checkMetamorphose() const { return false; } /* 801418E4-801418EC 13C224 0008+00 1/0 0/0 0/0 .text checkWolfDownAttackPullOut__9daPy_py_cCFv */ -bool daPy_py_c::checkWolfDownAttackPullOut() const { +BOOL daPy_py_c::checkWolfDownAttackPullOut() const { return false; } /* 801418EC-801418F4 13C22C 0008+00 1/0 0/0 0/0 .text checkBootsOrArmorHeavy__9daPy_py_cCFv */ -bool daPy_py_c::checkBootsOrArmorHeavy() const { +BOOL daPy_py_c::checkBootsOrArmorHeavy() const { return false; } @@ -35807,32 +35693,27 @@ bool daPy_py_c::checkItemSwordEquip() const { /* 80141904-8014190C 13C244 0008+00 1/0 0/0 0/0 .text getSinkShapeOffset__9daPy_py_cCFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm float daPy_py_c::getSinkShapeOffset() const { - nofralloc -#include "asm/d/a/d_a_alink/getSinkShapeOffset__9daPy_py_cCFv.s" +f32 daPy_py_c::getSinkShapeOffset() const { + return FLOAT_LABEL(lit_6108); } -#pragma pop /* 8014190C-80141914 13C24C 0008+00 1/0 0/0 0/0 .text checkSinkDead__9daPy_py_cCFv */ -bool daPy_py_c::checkSinkDead() const { +BOOL daPy_py_c::checkSinkDead() const { return false; } /* 80141914-8014191C 13C254 0008+00 1/0 0/0 0/0 .text checkHorseStart__9daPy_py_cFv */ -bool daPy_py_c::checkHorseStart() { +BOOL daPy_py_c::checkHorseStart() { return false; } /* 8014191C-80141924 13C25C 0008+00 1/0 0/0 0/0 .text getWolfHowlMgrP__9daPy_py_cFv */ -bool daPy_py_c::getWolfHowlMgrP() { - return false; +Z2WolfHowlMgr* daPy_py_c::getWolfHowlMgrP() { + return NULL; } /* 80141924-8014192C 13C264 0008+00 1/0 0/0 0/0 .text checkWolfHowlSuccessAnime__9daPy_py_cCFv */ -bool daPy_py_c::checkWolfHowlSuccessAnime() const { +BOOL daPy_py_c::checkWolfHowlSuccessAnime() const { return false; } @@ -35847,7 +35728,7 @@ bool daPy_py_c::checkCopyRodEquip() const { } /* 8014193C-80141944 13C27C 0008+00 1/0 0/0 0/0 .text checkCutJumpMode__9daPy_py_cCFv */ -bool daPy_py_c::checkCutJumpMode() const { +BOOL daPy_py_c::checkCutJumpMode() const { return false; } @@ -35914,18 +35795,18 @@ static void dMeter2Info_setFloatingMessage(u16 pMessageID, s16 pMessageTimer, bo /* 801419F4-80141A04 13C334 0010+00 1/1 0/0 0/0 .text onForcePanic__9daMidna_cFv */ void daMidna_c::onForcePanic() { - onEndResetStateFlg0(ForcePanic); + onEndResetStateFlg0(FORCE_PANIC); } /* 80141A04-80141A10 13C344 000C+00 1/1 0/0 0/0 .text checkForceNormalColor__9daMidna_cCFv */ u32 daMidna_c::checkForceNormalColor() const { - return checkStateFlg1(ForceNormalColor); + return checkStateFlg1(FORCE_NORMAL_COLOR); } /* 80141A10-80141A1C 13C350 000C+00 1/1 0/0 0/0 .text checkForceTiredColor__9daMidna_cCFv */ u32 daMidna_c::checkForceTiredColor() const { - return checkStateFlg1(ForceTiredColor); + return checkStateFlg1(FORCE_TIRED_COLOR); } /* 80141A1C-80141A84 13C35C 0068+00 1/1 0/0 0/0 .text checkMidnaTired__9daMidna_cFv */ @@ -35940,7 +35821,7 @@ asm bool daMidna_c::checkMidnaTired() { /* 80141A84-80141A94 13C3C4 0010+00 1/1 0/0 0/0 .text onNoServiceWait__9daMidna_cFv */ void daMidna_c::onNoServiceWait() { - onEndResetStateFlg0(NoServiceWait); + onEndResetStateFlg0(NO_SERVICE_WAIT); } /* 80141A94-80141ACC 13C3D4 0038+00 1/1 0/0 0/0 .text setControllActorData__8daCrod_cFv diff --git a/src/d/a/d_a_player.cpp b/src/d/a/d_a_player.cpp index 9249f54536..c625449590 100644 --- a/src/d/a/d_a_player.cpp +++ b/src/d/a/d_a_player.cpp @@ -10,6 +10,8 @@ #include "dolphin/types.h" #include "f_op/f_op_actor_iter.h" #include "f_op/f_op_actor_mng.h" +#include "SSystem/SComponent/c_math.h" +#include "rel/d/a/d_a_boomerang/d_a_boomerang.h" // // Types: @@ -21,10 +23,6 @@ struct mDoMtx_stack_c { static u8 now[48]; }; -struct JMath { - static u8 sincosTable_[65536]; -}; - struct J3DAnmLoaderDataBaseFlag {}; struct J3DAnmLoaderDataBase { @@ -219,14 +217,18 @@ SECTION_SDATA2 static f32 lit_4250 = 65536.0f; /* 8015E5B0-8015E654 158EF0 00A4+00 0/0 1/1 18/18 .text initOffset__20daPy_boomerangMove_cFPC4cXyz */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daPy_boomerangMove_c::initOffset(cXyz const* param_0) { - nofralloc -#include "asm/d/a/d_a_player/initOffset__20daPy_boomerangMove_cFPC4cXyz.s" +void daPy_boomerangMove_c::initOffset(cXyz const* param_0) { + daBoomerang_c* boomerang = daPy_py_c::getThrowBoomerangActor(); + if (boomerang != NULL) { + bgCheckAfterOffset(param_0); + boomerang->onWindCatch(); + } else { + field_0x4 = cM_rndF(lit_4248) + lit_4247; + field_0x8 = cM_rndF(lit_4249) + lit_4249; + field_0x2 = cM_rndF(lit_4250); + } + field_0x0 = 0; } -#pragma pop /* ############################################################################################## */ /* 80451018-8045101C 000518 0004+00 2/2 33/32 103/103 .sbss m_midnaActor__9daPy_py_c */ @@ -277,6 +279,17 @@ SECTION_SDATA2 static u8 lit_4381[8] = { /* 8015E87C-8015EA0C 1591BC 0190+00 1/1 1/1 17/17 .text * bgCheckAfterOffset__20daPy_boomerangMove_cFPC4cXyz */ +// matches with literals (used in inlines) +#ifdef NONMATCHING +void daPy_boomerangMove_c::bgCheckAfterOffset(cXyz const* param_0) { + daBoomerang_c* boomerang = daPy_py_c::getThrowBoomerangActor(); + if (boomerang != NULL) { + field_0x4 = param_0->y - boomerang->mCurrent.mPosition.y; + field_0x8 = boomerang->mCurrent.mPosition.absXZ(*param_0); + field_0x2 = cM_atan2s(param_0->x - boomerang->mCurrent.mPosition.x, param_0->z - boomerang->mCurrent.mPosition.z); + } +} +#else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off @@ -285,6 +298,7 @@ asm void daPy_boomerangMove_c::bgCheckAfterOffset(cXyz const* param_0) { #include "asm/d/a/d_a_player/bgCheckAfterOffset__20daPy_boomerangMove_cFPC4cXyz.s" } #pragma pop +#endif /* 8015EA0C-8015EA20 15934C 0014+00 0/0 3/3 0/0 .text setParamData__9daPy_py_cFiiii */ #pragma push @@ -323,7 +337,7 @@ asm BOOL daPy_py_c::checkFishingRodItem(int param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daPy_py_c::checkBombItem(int param_0) { +asm BOOL daPy_py_c::checkBombItem(int param_0) { nofralloc #include "asm/d/a/d_a_player/checkBombItem__9daPy_py_cFi.s" } @@ -333,7 +347,7 @@ asm void daPy_py_c::checkBombItem(int param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daPy_py_c::checkBottleItem(int param_0) { +asm BOOL daPy_py_c::checkBottleItem(int param_0) { nofralloc #include "asm/d/a/d_a_player/checkBottleItem__9daPy_py_cFi.s" } @@ -352,40 +366,24 @@ asm void daPy_py_c::checkDrinkBottleItem(int param_0) { /* 8015EB40-8015EB68 159480 0028+00 0/0 4/4 0/0 .text checkOilBottleItem__9daPy_py_cFi */ BOOL daPy_py_c::checkOilBottleItem(int i_itemNo) { - bool isOilBottleItem = false; - if (i_itemNo == CHUCHU_YELLOW || i_itemNo == OIL_BOTTLE_2 || i_itemNo == OIL_BOTTLE) { - isOilBottleItem = true; - } - return isOilBottleItem; + return i_itemNo == CHUCHU_YELLOW || i_itemNo == OIL_BOTTLE_2 || i_itemNo == OIL_BOTTLE; } /* 8015EB68-8015EB90 1594A8 0028+00 0/0 2/2 0/0 .text checkOpenBottleItem__9daPy_py_cFi */ BOOL daPy_py_c::checkOpenBottleItem(int i_itemNo) { - bool isOpenBottleItem = false; - if (i_itemNo == WATER_BOTTLE || i_itemNo == WORM || i_itemNo == FAIRY) { - isOpenBottleItem = true; - } - return isOpenBottleItem; + return i_itemNo == WATER_BOTTLE || i_itemNo == WORM || i_itemNo == FAIRY; } /* 8015EB90-8015EBB8 1594D0 0028+00 0/0 11/11 0/0 .text checkBowItem__9daPy_py_cFi */ BOOL daPy_py_c::checkBowItem(int i_itemNo) { - bool isBowItem = false; - if (i_itemNo == BOW || i_itemNo == BOMB_ARROW || i_itemNo == HAWK_ARROW) { - isBowItem = true; - } - return isBowItem; + return i_itemNo == BOW || i_itemNo == BOMB_ARROW || i_itemNo == HAWK_ARROW; } /* 8015EBB8-8015EBD8 1594F8 0020+00 0/0 23/23 0/0 .text checkHookshotItem__9daPy_py_cFi */ BOOL daPy_py_c::checkHookshotItem(int i_itemNo) { - bool isHookshotItem = false; - if (i_itemNo == HOOKSHOT || i_itemNo == W_HOOKSHOT) { - isHookshotItem = true; - } - return isHookshotItem; + return i_itemNo == HOOKSHOT || i_itemNo == W_HOOKSHOT; } /* 8015EBD8-8015EC28 159518 0050+00 0/0 3/3 0/0 .text checkTradeItem__9daPy_py_cFi */ @@ -401,11 +399,7 @@ asm BOOL daPy_py_c::checkTradeItem(int param_0) { /* 8015EC28-8015EC48 159568 0020+00 0/0 2/2 0/0 .text checkDungeonWarpItem__9daPy_py_cFi */ BOOL daPy_py_c::checkDungeonWarpItem(int i_itemNo) { - bool isDungeonWarpItem = false; - if (i_itemNo == DUNGEON_EXIT || i_itemNo == DUNGEON_BACK) { - isDungeonWarpItem = true; - } - return isDungeonWarpItem; + return i_itemNo == DUNGEON_EXIT || i_itemNo == DUNGEON_BACK; } /* 8015EC48-8015ECB8 159588 0070+00 0/0 10/10 3/3 .text setActor__16daPy_actorKeep_cFv */ @@ -909,7 +903,7 @@ asm void daPy_py_c::checkRoomRestartStart() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daPy_py_c::checkCarryStartLightBallA() { +asm u32 daPy_py_c::checkCarryStartLightBallA() { nofralloc #include "asm/d/a/d_a_player/checkCarryStartLightBallA__9daPy_py_cFv.s" } @@ -919,7 +913,7 @@ asm void daPy_py_c::checkCarryStartLightBallA() { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void daPy_py_c::checkCarryStartLightBallB() { +asm u32 daPy_py_c::checkCarryStartLightBallB() { nofralloc #include "asm/d/a/d_a_player/checkCarryStartLightBallB__9daPy_py_cFv.s" } @@ -962,14 +956,9 @@ bool daPy_py_c::checkBoomerangChargeTime() { } /* 8015F8D0-8015F8E4 15A210 0014+00 3/3 1/1 5/5 .text getThrowBoomerangActor__9daPy_py_cFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void daPy_py_c::getThrowBoomerangActor() { - nofralloc -#include "asm/d/a/d_a_player/getThrowBoomerangActor__9daPy_py_cFv.s" +daBoomerang_c* daPy_py_c::getThrowBoomerangActor() { + return static_cast(daAlink_getAlinkActorClass()->getThrowBoomerangAcKeep()->getActor()); } -#pragma pop /* 8015F8E4-8015F914 15A224 0030+00 0/0 0/0 2/2 .text * cancelBoomerangLockActor__9daPy_py_cFP10fopAc_ac_c */ diff --git a/src/d/bg/d_bg_s_acch.cpp b/src/d/bg/d_bg_s_acch.cpp index 5c1fedf3e1..8dd0d7bb34 100644 --- a/src/d/bg/d_bg_s_acch.cpp +++ b/src/d/bg/d_bg_s_acch.cpp @@ -813,6 +813,6 @@ static asm void func_8007748C() { #pragma pop /* 80077494-8007749C 071DD4 0008+00 0/0 1/0 0/0 .text checkPlayerFly__9daPy_py_cCFv */ -bool daPy_py_c::checkPlayerFly() const { - return false; +u32 daPy_py_c::checkPlayerFly() const { + return 0; } diff --git a/src/d/com/d_com_inf_game.cpp b/src/d/com/d_com_inf_game.cpp index 9f39275a30..557b44267a 100644 --- a/src/d/com/d_com_inf_game.cpp +++ b/src/d/com/d_com_inf_game.cpp @@ -401,7 +401,7 @@ inline u8 dStage_stagInfo_GetSaveTbl(stage_stag_info_class* param_0) { } inline BOOL dComIfGs_isEventBit(u16 id) { - return g_dComIfG_gameInfo.info.getSavedata().getEvent().isEventBit(id); + return g_dComIfG_gameInfo.info.getEvent().isEventBit(id); } inline int dComIfGs_isItemFirstBit(u8 i_no) { @@ -978,9 +978,9 @@ int dComIfG_play_c::getLayerNo_common_common(const char* stageName, int roomId, else if (dComIfGs_isTmpBit(0x0601)) { if (dComIfGs_isTmpBit(0x0602)) { layer = 2; + } else { + layer = 3; } - } else { - layer = 3; } } @@ -1150,22 +1150,22 @@ int dComIfG_play_c::getLayerNo_common_common(const char* stageName, int roomId, layer = 13; } } + } - // Stage is Hyrule Castle Sewers and room is Prison Cell - if (!strcmp(stageName, "R_SP107") && roomId == 0) { - // Haven't been to Hyrule Castle Sewers - if (!dComIfGs_isEventBit(0x4D08)) { - layer = 11; - } + // Stage is Hyrule Castle Sewers and room is Prison Cell + if (!strcmp(stageName, "R_SP107") && roomId == 0) { + // Haven't been to Hyrule Castle Sewers + if (!dComIfGs_isEventBit(0x4D08)) { + layer = 11; } - // Stage and room is Zant Throne Room - else if (!strcmp(stageName, "D_MN08A") && roomId == 10) { - // Defeated Zant - if (dComIfGs_isEventBit(0x5410)) { - layer = 1; - } else { - layer = 0; - } + } + // Stage and room is Zant Throne Room + else if (!strcmp(stageName, "D_MN08A") && roomId == 10) { + // Defeated Zant + if (dComIfGs_isEventBit(0x5410)) { + layer = 1; + } else { + layer = 0; } } } @@ -1728,7 +1728,7 @@ asm void dComIfGs_offOneZoneSwitch(int param_0, int param_1) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dComIfGs_isOneZoneSwitch(int param_0, int param_1) { +asm BOOL dComIfGs_isOneZoneSwitch(int param_0, int param_1) { nofralloc #include "asm/d/com/d_com_inf_game/dComIfGs_isOneZoneSwitch__Fii.s" } diff --git a/src/d/d_att_dist.cpp b/src/d/d_att_dist.cpp index 80dd6e347d..f1669d0140 100644 --- a/src/d/d_att_dist.cpp +++ b/src/d/d_att_dist.cpp @@ -1,445 +1,243 @@ -// -// Generated By: dol2asm -// Translation Unit: d/d_att_dist -// - #include "d/d_att_dist.h" +#include "d/d_attention.h" #include "dol2asm.h" #include "dolphin/types.h" -// -// Types: -// - -struct dAttention_c { - static u8 dist_table[6552]; -}; - -// -// Forward References: -// - -extern "C" u8 dist_table__12dAttention_c[6552]; - -// -// External References: -// - -// -// Declarations: -// - /* ############################################################################################## */ /* 803A9C70-803AB608 006D90 1998+00 0/0 5/5 13/13 .data dist_table__12dAttention_c */ -SECTION_DATA u8 dAttention_c::dist_table[6552] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3C, 0x23, 0xD7, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x43, 0x7A, 0x00, 0x00, - 0x43, 0xBB, 0x80, 0x00, 0x43, 0xFA, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, 0xC3, 0xC8, 0x00, 0x00, - 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x3B, 0x80, 0x00, 0x43, 0x7A, 0x00, 0x00, - 0x43, 0x9C, 0x40, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0xBB, 0x80, 0x00, 0x44, 0x1C, 0x40, 0x00, 0x43, 0xFA, 0x00, 0x00, - 0x43, 0xFA, 0x00, 0x00, 0xC3, 0xFA, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0xFA, 0x00, 0x00, 0x44, 0x16, 0x00, 0x00, 0x44, 0xBB, 0x80, 0x00, 0x44, 0xFA, 0x00, 0x00, - 0xC4, 0xFA, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x3B, 0x80, 0x00, - 0x43, 0x7A, 0x00, 0x00, 0x43, 0x9C, 0x40, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0xC3, 0x02, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x42, 0xC8, 0x00, 0x00, 0x42, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x48, 0x00, 0x00, 0xC2, 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x42, 0xC8, 0x00, 0x00, 0x42, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x34, 0x00, 0x00, - 0xC2, 0xFA, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x42, 0xC8, 0x00, 0x00, - 0x42, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0xC3, 0x02, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x42, 0xA0, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0xC2, 0xDC, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x42, 0xA0, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x20, 0x00, 0x00, 0xC3, 0x02, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x43, 0x48, 0x00, 0x00, 0x43, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, - 0xC2, 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x42, 0xC8, 0x00, 0x00, - 0x42, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0xC3, 0x70, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x43, 0x48, 0x00, 0x00, 0x43, 0x5C, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, 0xC3, 0x48, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x42, 0xC8, 0x00, 0x00, 0x42, 0xF0, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x48, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x42, 0xC8, 0x00, 0x00, 0x42, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00, - 0xC2, 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, - 0x43, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, 0xC2, 0xF0, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x43, 0xFA, 0x00, 0x00, 0x44, 0x2F, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x44, 0x48, 0x00, 0x00, 0xC4, 0x48, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, 0x44, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x44, 0x48, 0x00, 0x00, 0xC4, 0x48, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x44, 0x7A, 0x00, 0x00, 0x44, 0x89, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x16, 0x00, 0x00, - 0x43, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, 0x44, 0x16, 0x00, 0x00, - 0x45, 0x8C, 0xA0, 0x00, 0x44, 0xFA, 0x00, 0x00, 0xC4, 0xFA, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, 0x43, 0xE1, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, - 0x43, 0xFA, 0x00, 0x00, 0xC3, 0xFA, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x45, 0x1C, 0x40, 0x00, 0x45, 0x22, 0x80, 0x00, 0x45, 0x1C, 0x40, 0x00, 0x45, 0x1C, 0x40, 0x00, - 0xC4, 0xFA, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x9C, 0x40, 0x00, - 0x45, 0xAB, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFA, 0x00, 0x00, 0xC4, 0xFA, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x9C, 0x40, 0x00, 0x45, 0xAB, 0xE0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x44, 0xFA, 0x00, 0x00, 0xC4, 0xFA, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x34, 0x00, 0x00, 0x43, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0xF0, 0x00, 0x00, 0xC3, 0x02, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0xFA, 0x00, 0x00, 0x44, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x16, 0x00, 0x00, - 0xC2, 0xF0, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x7A, 0x00, 0x00, - 0x44, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, 0xC3, 0xFA, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0xF0, 0x00, 0x00, 0x42, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0xF0, 0x00, 0x00, 0xC3, 0x02, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x16, 0x00, 0x00, 0x43, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, - 0xC3, 0x48, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x43, 0x16, 0x00, 0x00, - 0x43, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x16, 0x00, 0x00, 0xC3, 0x16, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x44, 0x7A, 0x00, 0x00, 0x44, 0x96, 0x00, 0x00, - 0x44, 0xE1, 0x00, 0x00, 0x44, 0xFA, 0x00, 0x00, 0xC4, 0xFA, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0xBB, 0x80, 0x00, 0x44, 0x1C, 0x40, 0x00, 0x43, 0xFA, 0x00, 0x00, - 0x44, 0x3B, 0x80, 0x00, 0xC3, 0xFA, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x44, 0x96, 0x00, 0x00, 0x44, 0xE1, 0x00, 0x00, 0x44, 0x96, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, - 0xC4, 0x89, 0x80, 0x00, 0x3F, 0x80, 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, - 0x3C, 0x23, 0xD7, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, 0x43, 0x5C, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x44, 0x44, 0xED, 0x80, 0x00, 0x44, 0xED, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x44, 0xFA, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x44, 0xED, 0x80, 0x00, 0x44, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0xFA, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x42, 0xA0, 0x00, 0x00, - 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0xC3, 0x02, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x42, 0xC8, 0x00, 0x00, 0x42, 0xDC, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0xC2, 0xF0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x43, 0x02, 0x00, 0x00, 0x43, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x34, 0x00, 0x00, 0xC2, 0xFA, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x43, 0x20, 0x00, 0x00, 0x43, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, - 0xC3, 0x02, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x43, 0x3E, 0x00, 0x00, - 0x43, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0xC2, 0xDC, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x43, 0xBB, 0x80, 0x00, 0x44, 0x1C, 0x40, 0x00, - 0x43, 0xFA, 0x00, 0x00, 0x44, 0x48, 0x00, 0x00, 0xC3, 0xFA, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, - 0x43, 0xFA, 0x00, 0x00, 0xC3, 0xFA, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x16, 0x00, 0x00, 0x43, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, - 0xC3, 0x48, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x7A, 0x00, 0x00, - 0x44, 0x89, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, 0xC3, 0x48, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1C, 0x40, 0x00, 0x46, 0x1F, 0x60, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x46, 0x1C, 0x40, 0x00, 0xC6, 0x1C, 0x40, 0x00, 0x42, 0xC8, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x46, 0x1C, 0x40, 0x00, 0x46, 0x1F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x46, 0x1C, 0x40, 0x00, 0xC6, 0x1C, 0x40, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x44, 0xBB, 0x80, 0x00, 0x44, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x7A, 0x00, 0x00, - 0x44, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, 0xC3, 0xC8, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x46, 0x1C, 0x40, 0x00, 0x46, 0x1F, 0x60, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x46, 0x1C, 0x40, 0x00, 0xC6, 0x1C, 0x40, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0x43, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x48, 0x00, 0x00, 0x43, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x00, 0x00, - 0x42, 0xC8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x16, 0x00, 0x00, - 0x44, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x00, 0x00, 0x44, 0x7A, 0x00, 0x00, - 0x43, 0xFA, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, 0xC3, 0xFA, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x02, 0x00, 0x00, 0x43, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x34, 0x00, 0x00, 0xC2, 0xFA, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x47, 0xC3, 0x50, 0x00, 0x47, 0xC3, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0xC3, 0x50, 0x00, - 0xC7, 0xC3, 0x50, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1C, 0x40, 0x00, - 0x46, 0x1D, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x3B, 0x80, 0x00, 0xC4, 0xFA, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x00, 0x00, 0x44, 0x7A, 0x00, 0x00, - 0x43, 0xFA, 0x00, 0x00, 0x44, 0x7A, 0x00, 0x00, 0xC3, 0xFA, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, 0x44, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0xFA, 0x00, 0x00, 0xC3, 0xFA, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x44, 0x2F, 0x00, 0x00, 0x44, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x2F, 0x00, 0x00, - 0xC4, 0x2F, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1C, 0x40, 0x00, - 0x46, 0x1F, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0x1C, 0x40, 0x00, 0xC6, 0x1C, 0x40, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, 0x43, 0xE1, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x44, 0x16, 0x00, 0x00, 0xC4, 0x16, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x43, 0xFA, 0x00, 0x00, 0x44, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x44, 0x16, 0x00, 0x00, 0xC4, 0x16, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x44, 0xFA, 0x00, 0x00, 0x45, 0x09, 0x80, 0x00, 0x43, 0xFA, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, - 0xC3, 0xFA, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, - 0x44, 0x16, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, 0xC3, 0xFA, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0x43, 0xAF, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x44, 0x16, 0x00, 0x00, 0xC4, 0x16, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x43, 0xFA, 0x00, 0x00, 0x44, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x44, 0x16, 0x00, 0x00, 0xC4, 0x16, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x44, 0x96, 0x00, 0x00, 0x44, 0xFA, 0x00, 0x00, 0x44, 0x96, 0x00, 0x00, 0x44, 0x48, 0x00, 0x00, - 0xC3, 0xFA, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x20, 0x00, 0x00, - 0x43, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0xC3, 0x02, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x0C, 0x00, 0x00, 0x43, 0x16, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x7A, 0x00, 0x00, 0xC2, 0x48, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x01, 0x43, 0xFA, 0x00, 0x00, 0x44, 0x16, 0x00, 0x00, 0x44, 0x3B, 0x80, 0x00, - 0x44, 0xFA, 0x00, 0x00, 0xC4, 0xFA, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0xFA, 0x00, 0x00, 0x44, 0x16, 0x00, 0x00, 0x44, 0x3B, 0x80, 0x00, 0x43, 0x48, 0x00, 0x00, - 0xC3, 0x48, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, - 0x43, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC4, 0x7A, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x43, 0x96, 0x00, 0x00, 0x43, 0xAF, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC4, 0x7A, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x44, 0x7A, 0x00, 0x00, 0x44, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x44, 0x7A, 0x00, 0x00, 0xC4, 0x7A, 0x00, 0x00, 0x3D, 0xCC, 0xCC, 0xCD, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x48, 0x00, 0x00, 0x43, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x43, 0x96, 0x00, 0x00, - 0x43, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x40, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x45, 0x3B, 0x80, 0x00, 0x45, 0x41, 0xC0, 0x00, - 0x43, 0x96, 0x00, 0x00, 0x45, 0x3B, 0x80, 0x00, 0xC5, 0x3B, 0x80, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x44, 0xFA, 0x00, 0x00, 0x45, 0x03, 0x40, 0x00, 0x43, 0x96, 0x00, 0x00, - 0x44, 0xFA, 0x00, 0x00, 0xC4, 0xFA, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x16, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, - 0xC2, 0xC8, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x45, 0x5A, 0xC0, 0x00, - 0x45, 0x5A, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x3B, 0x80, 0x00, 0xC5, 0x3B, 0x80, 0x00, - 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0xBB, 0x80, 0x00, 0x44, 0x1C, 0x40, 0x00, - 0x43, 0xFA, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, 0xC3, 0xFA, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x48, 0x00, 0x00, 0x43, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC4, 0x7A, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, - 0x43, 0x96, 0x00, 0x00, 0x43, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC4, 0x7A, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x43, 0x16, 0x00, 0x00, - 0x43, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0xC3, 0x02, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x42, 0xC8, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0xC3, 0x02, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0xBB, 0x80, 0x00, 0x44, 0x7A, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, - 0x43, 0xFA, 0x00, 0x00, 0xC3, 0xFA, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x44, 0xFA, 0x00, 0x00, 0x44, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x7A, 0x00, 0x00, - 0xC4, 0x7A, 0x00, 0x00, 0x3D, 0xCC, 0xCC, 0xCD, 0x00, 0x00, 0x00, 0x04, 0x42, 0xC8, 0x00, 0x00, - 0x43, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x20, 0x00, 0x00, 0xC3, 0x16, 0x00, 0x00, - 0x41, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x42, 0x48, 0x00, 0x00, 0x42, 0x8C, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0C, 0x42, 0xC8, 0x00, 0x00, 0x42, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, - 0x43, 0x16, 0x00, 0x00, 0x43, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x43, 0x48, 0x00, 0x00, - 0x43, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x43, 0x7A, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0C, 0x43, 0x96, 0x00, 0x00, 0x43, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, - 0x43, 0xAF, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x43, 0xC8, 0x00, 0x00, - 0x43, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x43, 0xE1, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0C, 0x43, 0xFA, 0x00, 0x00, 0x44, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, - 0x44, 0x09, 0x80, 0x00, 0x44, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x44, 0x16, 0x00, 0x00, - 0x44, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x44, 0x22, 0x80, 0x00, 0x44, 0x2F, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0C, 0x44, 0x2F, 0x00, 0x00, 0x44, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, - 0x44, 0x3B, 0x80, 0x00, 0x44, 0x54, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x44, 0x48, 0x00, 0x00, - 0x44, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x44, 0x54, 0x80, 0x00, 0x44, 0x7A, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x0C, 0x44, 0x61, 0x00, 0x00, 0x44, 0x89, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, - 0x44, 0x6D, 0x80, 0x00, 0x44, 0x8F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x44, 0x7A, 0x00, 0x00, - 0x44, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x42, 0x48, 0x00, 0x00, 0x42, 0x8C, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x14, 0x42, 0xC8, 0x00, 0x00, 0x42, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, - 0x43, 0x16, 0x00, 0x00, 0x43, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x43, 0x48, 0x00, 0x00, - 0x43, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x43, 0x7A, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x14, 0x43, 0x96, 0x00, 0x00, 0x43, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, - 0x43, 0xAF, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x43, 0xC8, 0x00, 0x00, - 0x43, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x43, 0xE1, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x14, 0x43, 0xFA, 0x00, 0x00, 0x44, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, - 0x44, 0x09, 0x80, 0x00, 0x44, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x44, 0x16, 0x00, 0x00, - 0x44, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x44, 0x22, 0x80, 0x00, 0x44, 0x2F, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x14, 0x44, 0x2F, 0x00, 0x00, 0x44, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, - 0x44, 0x3B, 0x80, 0x00, 0x44, 0x54, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x44, 0x48, 0x00, 0x00, - 0x44, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x44, 0x54, 0x80, 0x00, 0x44, 0x7A, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x14, 0x44, 0x61, 0x00, 0x00, 0x44, 0x89, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, - 0x44, 0x6D, 0x80, 0x00, 0x44, 0x8F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x44, 0x7A, 0x00, 0x00, - 0x44, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x42, 0x48, 0x00, 0x00, 0x42, 0x8C, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x42, 0xC8, 0x00, 0x00, 0x42, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, - 0x43, 0x16, 0x00, 0x00, 0x43, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x43, 0x48, 0x00, 0x00, - 0x43, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x43, 0x7A, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x43, 0x96, 0x00, 0x00, 0x43, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, - 0x43, 0xAF, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x43, 0xC8, 0x00, 0x00, - 0x43, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x43, 0xE1, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x43, 0xFA, 0x00, 0x00, 0x44, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, - 0x44, 0x09, 0x80, 0x00, 0x44, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x44, 0x16, 0x00, 0x00, - 0x44, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x44, 0x22, 0x80, 0x00, 0x44, 0x2F, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x44, 0x2F, 0x00, 0x00, 0x44, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, - 0x44, 0x3B, 0x80, 0x00, 0x44, 0x54, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x44, 0x48, 0x00, 0x00, - 0x44, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x44, 0x54, 0x80, 0x00, 0x44, 0x7A, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x24, 0x44, 0x61, 0x00, 0x00, 0x44, 0x89, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, - 0x44, 0x6D, 0x80, 0x00, 0x44, 0x8F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x44, 0x7A, 0x00, 0x00, - 0x44, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x42, 0x48, 0x00, 0x00, 0x42, 0x8C, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x44, 0x42, 0xC8, 0x00, 0x00, 0x42, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, - 0x43, 0x16, 0x00, 0x00, 0x43, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x43, 0x48, 0x00, 0x00, - 0x43, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x43, 0x7A, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x44, 0x43, 0x96, 0x00, 0x00, 0x43, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, - 0x43, 0xAF, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x43, 0xC8, 0x00, 0x00, - 0x43, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x43, 0xE1, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x44, 0x43, 0xFA, 0x00, 0x00, 0x44, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, - 0x44, 0x09, 0x80, 0x00, 0x44, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x44, 0x16, 0x00, 0x00, - 0x44, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x44, 0x22, 0x80, 0x00, 0x44, 0x3B, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x44, 0x44, 0x2F, 0x00, 0x00, 0x44, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, - 0x44, 0x3B, 0x80, 0x00, 0x44, 0x54, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x44, 0x48, 0x00, 0x00, - 0x44, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x44, 0x54, 0x80, 0x00, 0x44, 0x7A, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x44, 0x44, 0x61, 0x00, 0x00, 0x44, 0x89, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, - 0x44, 0x6D, 0x80, 0x00, 0x44, 0x8F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x44, 0x7A, 0x00, 0x00, - 0x44, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x42, 0x48, 0x00, 0x00, 0x42, 0x8C, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x84, 0x42, 0xC8, 0x00, 0x00, 0x42, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, - 0x43, 0x16, 0x00, 0x00, 0x43, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x43, 0x48, 0x00, 0x00, - 0x43, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x43, 0x7A, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x84, 0x43, 0x96, 0x00, 0x00, 0x43, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, - 0x43, 0xAF, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x43, 0xC8, 0x00, 0x00, - 0x43, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x43, 0xE1, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x84, 0x43, 0xFA, 0x00, 0x00, 0x44, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, - 0x44, 0x09, 0x80, 0x00, 0x44, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x44, 0x16, 0x00, 0x00, - 0x44, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x44, 0x22, 0x80, 0x00, 0x44, 0x3B, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x84, 0x44, 0x2F, 0x00, 0x00, 0x44, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, - 0x44, 0x3B, 0x80, 0x00, 0x44, 0x54, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x44, 0x48, 0x00, 0x00, - 0x44, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x44, 0x54, 0x80, 0x00, 0x44, 0x7A, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x84, 0x44, 0x61, 0x00, 0x00, 0x44, 0x89, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, - 0x44, 0x6D, 0x80, 0x00, 0x44, 0x8F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x44, 0x7A, 0x00, 0x00, - 0x44, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x42, 0x48, 0x00, 0x00, 0x42, 0x8C, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x04, 0x42, 0xC8, 0x00, 0x00, 0x42, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, - 0x43, 0x16, 0x00, 0x00, 0x43, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x43, 0x48, 0x00, 0x00, - 0x43, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x43, 0x7A, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x04, 0x43, 0x96, 0x00, 0x00, 0x43, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, - 0x43, 0xAF, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x43, 0xC8, 0x00, 0x00, - 0x43, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x43, 0xE1, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x04, 0x43, 0xFA, 0x00, 0x00, 0x44, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, - 0x44, 0x09, 0x80, 0x00, 0x44, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x44, 0x16, 0x00, 0x00, - 0x44, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x44, 0x22, 0x80, 0x00, 0x44, 0x3B, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x04, 0x44, 0x2F, 0x00, 0x00, 0x44, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, - 0x44, 0x3B, 0x80, 0x00, 0x44, 0x54, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x44, 0x48, 0x00, 0x00, - 0x44, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x44, 0x54, 0x80, 0x00, 0x44, 0x7A, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x01, 0x04, 0x44, 0x61, 0x00, 0x00, 0x44, 0x89, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, - 0x44, 0x6D, 0x80, 0x00, 0x44, 0x8F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x44, 0x7A, 0x00, 0x00, - 0x44, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x01, 0x04, 0x42, 0x48, 0x00, 0x00, 0x42, 0x8C, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x42, 0xC8, 0x00, 0x00, 0x42, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x43, 0x16, 0x00, 0x00, 0x43, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x43, 0x48, 0x00, 0x00, - 0x43, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x43, 0x7A, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x43, 0x96, 0x00, 0x00, 0x43, 0xAF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x43, 0xAF, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x43, 0xC8, 0x00, 0x00, - 0x43, 0xE1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x43, 0xE1, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x43, 0xFA, 0x00, 0x00, 0x44, 0x09, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x44, 0x09, 0x80, 0x00, 0x44, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x16, 0x00, 0x00, - 0x44, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x22, 0x80, 0x00, 0x44, 0x3B, 0x80, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x44, 0x2F, 0x00, 0x00, 0x44, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x44, 0x3B, 0x80, 0x00, 0x44, 0x61, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x48, 0x00, 0x00, - 0x44, 0x6D, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x54, 0x80, 0x00, 0x44, 0x7A, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x44, 0x61, 0x00, 0x00, 0x44, 0x89, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x44, 0x6D, 0x80, 0x00, 0x44, 0x8F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, - 0xC3, 0x96, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x44, 0x7A, 0x00, 0x00, - 0x44, 0x96, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, +dist_entry dAttention_c::dist_table[234] = { + { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.01f, 0 }, + { 250.0f, 375.0f, 500.0f, 400.0f, -400.0f, 0.5f, 0 }, + { 187.5f, 250.0f, 312.5f, 300.0f, -300.0f, 1.0f, 0 }, + { 375.0f, 625.0f, 500.0f, 500.0f, -500.0f, 10.0f, 0 }, + { 500.0f, 600.0f, 1500.0f, 2000.0f, -2000.0f, 10.0f, 0 }, + { 187.5f, 250.0f, 312.5f, 300.0f, -300.0f, 1.0f, 0 }, + { 80.0f, 100.0f, 0.0f, 30.0f, -130.0f, 1.0f, 1 }, + { 100.0f, 120.0f, 0.0f, 50.0f, -120.0f, 1.0f, 1 }, + { 100.0f, 120.0f, 0.0f, 45.0f, -125.0f, 1.0f, 1 }, + { 100.0f, 120.0f, 0.0f, 40.0f, -130.0f, 1.0f, 1 }, + { 80.0f, 100.0f, 0.0f, 40.0f, -110.0f, 1.0f, 1 }, + { 80.0f, 100.0f, 0.0f, 10.0f, -130.0f, 1.0f, 1 }, + { 200.0f, 240.0f, 0.0f, 100.0f, -120.0f, 1.0f, 1 }, + { 100.0f, 120.0f, 0.0f, 30.0f, -240.0f, 1.0f, 1 }, + { 200.0f, 220.0f, 0.0f, 200.0f, -200.0f, 10.0f, 4 }, + { 100.0f, 120.0f, 300.0f, 300.0f, -200.0f, 1.0f, 4 }, + { 100.0f, 120.0f, 0.0f, 20.0f, -120.0f, 1.0f, 0 }, + { 200.0f, 200.0f, 0.0f, 400.0f, -120.0f, 1.0f, 1 }, + { 500.0f, 700.0f, 0.0f, 800.0f, -800.0f, 1.0f, 0 }, + { 500.0f, 700.0f, 0.0f, 800.0f, -800.0f, 1.0f, 0 }, + { 1000.0f, 1100.0f, 0.0f, 700.0f, -300.0f, 1.0f, 0 }, + { 150.0f, 200.0f, 0.0f, 300.0f, -300.0f, 1.0f, 0 }, + { 500.0f, 600.0f, 4500.0f, 2000.0f, -2000.0f, 1.0f, 0 }, + { 400.0f, 450.0f, 200.0f, 500.0f, -500.0f, 1.0f, 0 }, + { 2500.0f, 2600.0f, 2500.0f, 2500.0f, -2000.0f, 1.0f, 0 }, + { 5000.0f, 5500.0f, 0.0f, 2000.0f, -2000.0f, 1.0f, 0 }, + { 5000.0f, 5500.0f, 0.0f, 2000.0f, -2000.0f, 1.0f, 0 }, + { 180.0f, 180.0f, 0.0f, 30.0f, -130.0f, 1.0f, 0 }, + { 500.0f, 600.0f, 0.0f, 600.0f, -120.0f, 100.0f, 0 }, + { 1000.0f, 1000.0f, 0.0f, 500.0f, -500.0f, 1.0f, 0 }, + { -1.0f, -1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0 }, + { 120.0f, 120.0f, 0.0f, 30.0f, -130.0f, 1.0f, 0 }, + { 150.0f, 160.0f, 0.0f, 200.0f, -200.0f, 1.0f, 4 }, + { 150.0f, 160.0f, 0.0f, 150.0f, -150.0f, 1.0f, 132 }, + { 1000.0f, 1200.0f, 1800.0f, 2000.0f, -2000.0f, 1.0f, 0 }, + { 375.0f, 625.0f, 500.0f, 750.0f, -500.0f, 1.0f, 0 }, + { 1200.0f, 1800.0f, 1200.0f, 500.0f, -1100.0f, 1.0f, 0 }, + { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.01f, 0 }, + { 200.0f, 220.0f, 0.0f, 300.0f, -300.0f, 1.0f, 68 }, + { 1900.0f, 1900.0f, 0.0f, 2000.0f, -300.0f, 1.0f, 0 }, + { 1900.0f, 2000.0f, 0.0f, 2000.0f, -300.0f, 1.0f, 1 }, + { 80.0f, 100.0f, 0.0f, 30.0f, -130.0f, 1.0f, 1 }, + { 100.0f, 110.0f, 0.0f, 50.0f, -120.0f, 1.0f, 4 }, + { 130.0f, 140.0f, 0.0f, 45.0f, -125.0f, 1.0f, 1 }, + { 160.0f, 180.0f, 0.0f, 40.0f, -130.0f, 1.0f, 1 }, + { 190.0f, 210.0f, 0.0f, 40.0f, -110.0f, 1.0f, 1 }, + { 375.0f, 625.0f, 500.0f, 800.0f, -500.0f, 10.0f, 0 }, + { 100.0f, 400.0f, 500.0f, 500.0f, -500.0f, 10.0f, 0 }, + { 150.0f, 160.0f, 0.0f, 200.0f, -200.0f, 1.0f, 4 }, + { 1000.0f, 1100.0f, 0.0f, 200.0f, -200.0f, 1.0f, 0 }, + { 10000.0f, 10200.0f, 0.0f, 10000.0f, -10000.0f, 100.0f, 0 }, + { 10000.0f, 10200.0f, 0.0f, 10000.0f, -10000.0f, 1.0f, 0 }, + { 1500.0f, 1800.0f, 0.0f, 300.0f, -300.0f, 1.0f, 4 }, + { 1000.0f, 1200.0f, 0.0f, 400.0f, -400.0f, 1.0f, 4 }, + { 10000.0f, 10200.0f, 0.0f, 10000.0f, -10000.0f, 1.0f, 0 }, + { 300.0f, 350.0f, 0.0f, 300.0f, -300.0f, 1.0f, 0 }, + { 200.0f, 240.0f, 0.0f, 700.0f, 100.0f, 1.0f, 0 }, + { 600.0f, 700.0f, 0.0f, 700.0f, 100.0f, 1.0f, 0 }, + { 700.0f, 1000.0f, 500.0f, 500.0f, -500.0f, 10.0f, 0 }, + { 130.0f, 140.0f, 0.0f, 45.0f, -125.0f, 1.0f, 0 }, + { 100000.0f, 100100.0f, 0.0f, 100000.0f, -100000.0f, 1.0f, 0 }, + { 10000.0f, 10100.0f, 0.0f, 3000.0f, -2000.0f, 300.0f, 0 }, + { 700.0f, 1000.0f, 500.0f, 1000.0f, -500.0f, 10.0f, 0 }, + { 500.0f, 600.0f, 0.0f, 500.0f, -500.0f, 1.0f, 0 }, + { 700.0f, 800.0f, 0.0f, 700.0f, -700.0f, 1.0f, 0 }, + { 10000.0f, 10200.0f, 0.0f, 10000.0f, -10000.0f, 1.0f, 0 }, + { 400.0f, 450.0f, 0.0f, 600.0f, -600.0f, 1.0f, 4 }, + { 500.0f, 550.0f, 0.0f, 600.0f, -600.0f, 1.0f, 4 }, + { 2000.0f, 2200.0f, 500.0f, 500.0f, -500.0f, 10.0f, 0 }, + { 500.0f, 600.0f, 200.0f, 500.0f, -500.0f, 1.0f, 0 }, + { 300.0f, 350.0f, 0.0f, 600.0f, -600.0f, 1.0f, 4 }, + { 500.0f, 550.0f, 0.0f, 600.0f, -600.0f, 1.0f, 4 }, + { 1200.0f, 2000.0f, 1200.0f, 800.0f, -500.0f, 2.0f, 0 }, + { 160.0f, 180.0f, 0.0f, 40.0f, -130.0f, 1.0f, 0 }, + { 140.0f, 150.0f, 0.0f, 250.0f, -50.0f, 1.0f, 1 }, + { 500.0f, 600.0f, 750.0f, 2000.0f, -2000.0f, 1.0f, 0 }, + { 500.0f, 600.0f, 750.0f, 200.0f, -200.0f, 1.0f, 0 }, + { 200.0f, 250.0f, 0.0f, 300.0f, -1000.0f, 1.0f, 4 }, + { 300.0f, 350.0f, 0.0f, 300.0f, -1000.0f, 1.0f, 4 }, + { 1000.0f, 2000.0f, 0.0f, 1000.0f, -1000.0f, 0.1f, 0 }, + { 200.0f, 250.0f, 0.0f, 300.0f, -300.0f, 2.5f, 4 }, + { 300.0f, 350.0f, 0.0f, 300.0f, -300.0f, 2.5f, 4 }, + { 3000.0f, 3100.0f, 300.0f, 3000.0f, -3000.0f, 1.0f, 0 }, + { 2000.0f, 2100.0f, 300.0f, 2000.0f, -2000.0f, 1.0f, 0 }, + { 150.0f, 200.0f, 0.0f, 100.0f, -100.0f, 1.0f, 17 }, + { 3500.0f, 3500.0f, 0.0f, 3000.0f, -3000.0f, 100.0f, 0 }, + { 375.0f, 625.0f, 500.0f, 500.0f, -500.0f, 40.0f, 0 }, + { 200.0f, 250.0f, 0.0f, 300.0f, -1000.0f, 1.0f, 68 }, + { 300.0f, 350.0f, 0.0f, 300.0f, -1000.0f, 1.0f, 68 }, + { 150.0f, 150.0f, 0.0f, 40.0f, -130.0f, 1.0f, 1 }, + { 100.0f, 100.0f, 0.0f, 40.0f, -130.0f, 1.0f, 0 }, + { 375.0f, 1000.0f, 500.0f, 500.0f, -500.0f, 10.0f, 0 }, + { 2000.0f, 2000.0f, 0.0f, 1000.0f, -1000.0f, 0.1f, 4 }, + { 100.0f, 200.0f, 0.0f, 160.0f, -150.0f, 10.0f, 4 }, + { 50.0f, 70.0f, 0.0f, 300.0f, -300.0f, 1.0f, 12 }, + { 100.0f, 120.0f, 0.0f, 300.0f, -300.0f, 1.0f, 12 }, + { 150.0f, 180.0f, 0.0f, 300.0f, -300.0f, 1.0f, 12 }, + { 200.0f, 240.0f, 0.0f, 300.0f, -300.0f, 1.0f, 12 }, + { 250.0f, 300.0f, 0.0f, 300.0f, -300.0f, 1.0f, 12 }, + { 300.0f, 350.0f, 0.0f, 300.0f, -300.0f, 1.0f, 12 }, + { 350.0f, 400.0f, 0.0f, 300.0f, -300.0f, 1.0f, 12 }, + { 400.0f, 450.0f, 0.0f, 300.0f, -300.0f, 1.0f, 12 }, + { 450.0f, 500.0f, 0.0f, 300.0f, -300.0f, 1.0f, 12 }, + { 500.0f, 550.0f, 0.0f, 300.0f, -300.0f, 1.0f, 12 }, + { 550.0f, 650.0f, 0.0f, 300.0f, -300.0f, 1.0f, 12 }, + { 600.0f, 700.0f, 0.0f, 300.0f, -300.0f, 1.0f, 12 }, + { 650.0f, 700.0f, 0.0f, 300.0f, -300.0f, 1.0f, 12 }, + { 700.0f, 800.0f, 0.0f, 300.0f, -300.0f, 1.0f, 12 }, + { 750.0f, 850.0f, 0.0f, 300.0f, -300.0f, 1.0f, 12 }, + { 800.0f, 900.0f, 0.0f, 300.0f, -300.0f, 1.0f, 12 }, + { 850.0f, 1000.0f, 0.0f, 300.0f, -300.0f, 1.0f, 12 }, + { 900.0f, 1100.0f, 0.0f, 300.0f, -300.0f, 1.0f, 12 }, + { 950.0f, 1150.0f, 0.0f, 300.0f, -300.0f, 1.0f, 12 }, + { 1000.0f, 1200.0f, 0.0f, 300.0f, -300.0f, 1.0f, 12 }, + { 50.0f, 70.0f, 0.0f, 300.0f, -300.0f, 1.0f, 20 }, + { 100.0f, 120.0f, 0.0f, 300.0f, -300.0f, 1.0f, 20 }, + { 150.0f, 180.0f, 0.0f, 300.0f, -300.0f, 1.0f, 20 }, + { 200.0f, 240.0f, 0.0f, 300.0f, -300.0f, 1.0f, 20 }, + { 250.0f, 300.0f, 0.0f, 300.0f, -300.0f, 1.0f, 20 }, + { 300.0f, 350.0f, 0.0f, 300.0f, -300.0f, 1.0f, 20 }, + { 350.0f, 400.0f, 0.0f, 300.0f, -300.0f, 1.0f, 20 }, + { 400.0f, 450.0f, 0.0f, 300.0f, -300.0f, 1.0f, 20 }, + { 450.0f, 500.0f, 0.0f, 300.0f, -300.0f, 1.0f, 20 }, + { 500.0f, 550.0f, 0.0f, 300.0f, -300.0f, 1.0f, 20 }, + { 550.0f, 650.0f, 0.0f, 300.0f, -300.0f, 1.0f, 20 }, + { 600.0f, 700.0f, 0.0f, 300.0f, -300.0f, 1.0f, 20 }, + { 650.0f, 700.0f, 0.0f, 300.0f, -300.0f, 1.0f, 20 }, + { 700.0f, 800.0f, 0.0f, 300.0f, -300.0f, 1.0f, 20 }, + { 750.0f, 850.0f, 0.0f, 300.0f, -300.0f, 1.0f, 20 }, + { 800.0f, 900.0f, 0.0f, 300.0f, -300.0f, 1.0f, 20 }, + { 850.0f, 1000.0f, 0.0f, 300.0f, -300.0f, 1.0f, 20 }, + { 900.0f, 1100.0f, 0.0f, 300.0f, -300.0f, 1.0f, 20 }, + { 950.0f, 1150.0f, 0.0f, 300.0f, -300.0f, 1.0f, 20 }, + { 1000.0f, 1200.0f, 0.0f, 300.0f, -300.0f, 1.0f, 20 }, + { 50.0f, 70.0f, 0.0f, 300.0f, -300.0f, 1.0f, 36 }, + { 100.0f, 120.0f, 0.0f, 300.0f, -300.0f, 1.0f, 36 }, + { 150.0f, 180.0f, 0.0f, 300.0f, -300.0f, 1.0f, 36 }, + { 200.0f, 250.0f, 0.0f, 300.0f, -300.0f, 1.0f, 36 }, + { 250.0f, 300.0f, 0.0f, 300.0f, -300.0f, 1.0f, 36 }, + { 300.0f, 350.0f, 0.0f, 300.0f, -300.0f, 1.0f, 36 }, + { 350.0f, 400.0f, 0.0f, 300.0f, -300.0f, 1.0f, 36 }, + { 400.0f, 450.0f, 0.0f, 300.0f, -300.0f, 1.0f, 36 }, + { 450.0f, 500.0f, 0.0f, 300.0f, -300.0f, 1.0f, 36 }, + { 500.0f, 550.0f, 0.0f, 300.0f, -300.0f, 1.0f, 36 }, + { 550.0f, 650.0f, 0.0f, 300.0f, -300.0f, 1.0f, 36 }, + { 600.0f, 700.0f, 0.0f, 300.0f, -300.0f, 1.0f, 36 }, + { 650.0f, 700.0f, 0.0f, 300.0f, -300.0f, 1.0f, 36 }, + { 700.0f, 800.0f, 0.0f, 300.0f, -300.0f, 1.0f, 36 }, + { 750.0f, 850.0f, 0.0f, 300.0f, -300.0f, 1.0f, 36 }, + { 800.0f, 900.0f, 0.0f, 300.0f, -300.0f, 1.0f, 36 }, + { 850.0f, 1000.0f, 0.0f, 300.0f, -300.0f, 1.0f, 36 }, + { 900.0f, 1100.0f, 0.0f, 300.0f, -300.0f, 1.0f, 36 }, + { 950.0f, 1150.0f, 0.0f, 300.0f, -300.0f, 1.0f, 36 }, + { 1000.0f, 1200.0f, 0.0f, 300.0f, -300.0f, 1.0f, 36 }, + { 50.0f, 70.0f, 0.0f, 300.0f, -300.0f, 1.0f, 68 }, + { 100.0f, 120.0f, 0.0f, 300.0f, -300.0f, 1.0f, 68 }, + { 150.0f, 180.0f, 0.0f, 300.0f, -300.0f, 1.0f, 68 }, + { 200.0f, 250.0f, 0.0f, 300.0f, -300.0f, 1.0f, 68 }, + { 250.0f, 300.0f, 0.0f, 300.0f, -300.0f, 1.0f, 68 }, + { 300.0f, 350.0f, 0.0f, 300.0f, -300.0f, 1.0f, 68 }, + { 350.0f, 400.0f, 0.0f, 300.0f, -300.0f, 1.0f, 68 }, + { 400.0f, 450.0f, 0.0f, 300.0f, -300.0f, 1.0f, 68 }, + { 450.0f, 500.0f, 0.0f, 300.0f, -300.0f, 1.0f, 68 }, + { 500.0f, 550.0f, 0.0f, 300.0f, -300.0f, 1.0f, 68 }, + { 550.0f, 650.0f, 0.0f, 300.0f, -300.0f, 1.0f, 68 }, + { 600.0f, 700.0f, 0.0f, 300.0f, -300.0f, 1.0f, 68 }, + { 650.0f, 750.0f, 0.0f, 300.0f, -300.0f, 1.0f, 68 }, + { 700.0f, 800.0f, 0.0f, 300.0f, -300.0f, 1.0f, 68 }, + { 750.0f, 850.0f, 0.0f, 300.0f, -300.0f, 1.0f, 68 }, + { 800.0f, 900.0f, 0.0f, 300.0f, -300.0f, 1.0f, 68 }, + { 850.0f, 1000.0f, 0.0f, 300.0f, -300.0f, 1.0f, 68 }, + { 900.0f, 1100.0f, 0.0f, 300.0f, -300.0f, 1.0f, 68 }, + { 950.0f, 1150.0f, 0.0f, 300.0f, -300.0f, 1.0f, 68 }, + { 1000.0f, 1200.0f, 0.0f, 300.0f, -300.0f, 1.0f, 68 }, + { 50.0f, 70.0f, 0.0f, 300.0f, -300.0f, 1.0f, 132 }, + { 100.0f, 120.0f, 0.0f, 300.0f, -300.0f, 1.0f, 132 }, + { 150.0f, 180.0f, 0.0f, 300.0f, -300.0f, 1.0f, 132 }, + { 200.0f, 250.0f, 0.0f, 300.0f, -300.0f, 1.0f, 132 }, + { 250.0f, 300.0f, 0.0f, 300.0f, -300.0f, 1.0f, 132 }, + { 300.0f, 350.0f, 0.0f, 300.0f, -300.0f, 1.0f, 132 }, + { 350.0f, 400.0f, 0.0f, 300.0f, -300.0f, 1.0f, 132 }, + { 400.0f, 450.0f, 0.0f, 300.0f, -300.0f, 1.0f, 132 }, + { 450.0f, 500.0f, 0.0f, 300.0f, -300.0f, 1.0f, 132 }, + { 500.0f, 550.0f, 0.0f, 300.0f, -300.0f, 1.0f, 132 }, + { 550.0f, 650.0f, 0.0f, 300.0f, -300.0f, 1.0f, 132 }, + { 600.0f, 700.0f, 0.0f, 300.0f, -300.0f, 1.0f, 132 }, + { 650.0f, 750.0f, 0.0f, 300.0f, -300.0f, 1.0f, 132 }, + { 700.0f, 800.0f, 0.0f, 300.0f, -300.0f, 1.0f, 132 }, + { 750.0f, 850.0f, 0.0f, 300.0f, -300.0f, 1.0f, 132 }, + { 800.0f, 900.0f, 0.0f, 300.0f, -300.0f, 1.0f, 132 }, + { 850.0f, 1000.0f, 0.0f, 300.0f, -300.0f, 1.0f, 132 }, + { 900.0f, 1100.0f, 0.0f, 300.0f, -300.0f, 1.0f, 132 }, + { 950.0f, 1150.0f, 0.0f, 300.0f, -300.0f, 1.0f, 132 }, + { 1000.0f, 1200.0f, 0.0f, 300.0f, -300.0f, 1.0f, 132 }, + { 50.0f, 70.0f, 0.0f, 300.0f, -300.0f, 1.0f, 260 }, + { 100.0f, 120.0f, 0.0f, 300.0f, -300.0f, 1.0f, 260 }, + { 150.0f, 180.0f, 0.0f, 300.0f, -300.0f, 1.0f, 260 }, + { 200.0f, 250.0f, 0.0f, 300.0f, -300.0f, 1.0f, 260 }, + { 250.0f, 300.0f, 0.0f, 300.0f, -300.0f, 1.0f, 260 }, + { 300.0f, 350.0f, 0.0f, 300.0f, -300.0f, 1.0f, 260 }, + { 350.0f, 400.0f, 0.0f, 300.0f, -300.0f, 1.0f, 260 }, + { 400.0f, 450.0f, 0.0f, 300.0f, -300.0f, 1.0f, 260 }, + { 450.0f, 500.0f, 0.0f, 300.0f, -300.0f, 1.0f, 260 }, + { 500.0f, 550.0f, 0.0f, 300.0f, -300.0f, 1.0f, 260 }, + { 550.0f, 650.0f, 0.0f, 300.0f, -300.0f, 1.0f, 260 }, + { 600.0f, 700.0f, 0.0f, 300.0f, -300.0f, 1.0f, 260 }, + { 650.0f, 750.0f, 0.0f, 300.0f, -300.0f, 1.0f, 260 }, + { 700.0f, 800.0f, 0.0f, 300.0f, -300.0f, 1.0f, 260 }, + { 750.0f, 850.0f, 0.0f, 300.0f, -300.0f, 1.0f, 260 }, + { 800.0f, 900.0f, 0.0f, 300.0f, -300.0f, 1.0f, 260 }, + { 850.0f, 1000.0f, 0.0f, 300.0f, -300.0f, 1.0f, 260 }, + { 900.0f, 1100.0f, 0.0f, 300.0f, -300.0f, 1.0f, 260 }, + { 950.0f, 1150.0f, 0.0f, 300.0f, -300.0f, 1.0f, 260 }, + { 1000.0f, 1200.0f, 0.0f, 300.0f, -300.0f, 1.0f, 260 }, + { 50.0f, 70.0f, 0.0f, 300.0f, -300.0f, 1.0f, 4 }, + { 100.0f, 120.0f, 0.0f, 300.0f, -300.0f, 1.0f, 4 }, + { 150.0f, 180.0f, 0.0f, 300.0f, -300.0f, 1.0f, 4 }, + { 200.0f, 250.0f, 0.0f, 300.0f, -300.0f, 1.0f, 4 }, + { 250.0f, 300.0f, 0.0f, 300.0f, -300.0f, 1.0f, 4 }, + { 300.0f, 350.0f, 0.0f, 300.0f, -300.0f, 1.0f, 4 }, + { 350.0f, 400.0f, 0.0f, 300.0f, -300.0f, 1.0f, 4 }, + { 400.0f, 450.0f, 0.0f, 300.0f, -300.0f, 1.0f, 4 }, + { 450.0f, 500.0f, 0.0f, 300.0f, -300.0f, 1.0f, 4 }, + { 500.0f, 550.0f, 0.0f, 300.0f, -300.0f, 1.0f, 4 }, + { 550.0f, 650.0f, 0.0f, 300.0f, -300.0f, 1.0f, 4 }, + { 600.0f, 700.0f, 0.0f, 300.0f, -300.0f, 1.0f, 4 }, + { 650.0f, 750.0f, 0.0f, 300.0f, -300.0f, 1.0f, 4 }, + { 700.0f, 800.0f, 0.0f, 300.0f, -300.0f, 1.0f, 4 }, + { 750.0f, 900.0f, 0.0f, 300.0f, -300.0f, 1.0f, 4 }, + { 800.0f, 950.0f, 0.0f, 300.0f, -300.0f, 1.0f, 4 }, + { 850.0f, 1000.0f, 0.0f, 300.0f, -300.0f, 1.0f, 4 }, + { 900.0f, 1100.0f, 0.0f, 300.0f, -300.0f, 1.0f, 4 }, + { 950.0f, 1150.0f, 0.0f, 300.0f, -300.0f, 1.0f, 4 }, + { 1000.0f, 1200.0f, 0.0f, 300.0f, -300.0f, 1.0f, 4 }, }; diff --git a/src/d/d_attention.cpp b/src/d/d_attention.cpp index 61117fabb1..951cbc5c5b 100644 --- a/src/d/d_attention.cpp +++ b/src/d/d_attention.cpp @@ -177,13 +177,11 @@ extern "C" void _restgpr_26(); extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); -extern "C" void tan(); extern "C" extern void* __vt__25mDoExt_McaMorfCallBack1_c[3]; extern "C" u8 dist_table__12dAttention_c[6552]; extern "C" u8 m_cpadInfo__8mDoCPd_c[256]; extern "C" u8 now__14mDoMtx_stack_c[48]; extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" extern u32 __float_nan; extern "C" extern u32 __float_max; extern "C" extern u8 data_80450F58[8]; extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; @@ -936,7 +934,7 @@ asm void dAttention_c::CheckObjectTarget(s32 param_0) { #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dAttention_c::LockonTruth() { +asm bool dAttention_c::LockonTruth() { nofralloc #include "asm/d/d_attention/LockonTruth__12dAttention_cFv.s" } diff --git a/src/d/d_drawlist.cpp b/src/d/d_drawlist.cpp index 65b36253a7..596e402697 100644 --- a/src/d/d_drawlist.cpp +++ b/src/d/d_drawlist.cpp @@ -288,7 +288,6 @@ extern "C" void _restgpr_26(); extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); -extern "C" void fmod(); extern "C" extern u8 g_mDoMtx_identity[48 + 24 /* padding */]; extern "C" extern void* __vt__26mDoExt_3DlineMatSortPacket[5]; extern "C" extern void* __vt__12dDlst_base_c[3]; @@ -303,7 +302,6 @@ extern "C" u8 mBackColor__13mDoGph_gInf_c[4]; extern "C" extern u8 g_clearColor[4]; extern "C" extern u32 g_blackColor; extern "C" extern u32 g_whiteColor; -extern "C" extern u32 __float_nan; extern "C" extern u32 __float_max; extern "C" f32 mSystemFar__14mDoLib_clipper; extern "C" f32 mFovyRate__14mDoLib_clipper; diff --git a/src/d/d_jnt_col.cpp b/src/d/d_jnt_col.cpp index 9089295591..564620c3f0 100644 --- a/src/d/d_jnt_col.cpp +++ b/src/d/d_jnt_col.cpp @@ -88,7 +88,6 @@ extern "C" extern void* __vt__8cM3dGPla[3]; extern "C" extern void* __vt__8cM3dGCyl[3]; extern "C" u8 now__14mDoMtx_stack_c[48]; extern "C" u8 BaseZ__4cXyz[12]; -extern "C" extern u32 __float_nan; extern "C" extern u32 __float_max; // diff --git a/src/d/event/d_event_manager.cpp b/src/d/event/d_event_manager.cpp index abcc88e10d..bc3f611c13 100644 --- a/src/d/event/d_event_manager.cpp +++ b/src/d/event/d_event_manager.cpp @@ -616,7 +616,7 @@ SECTION_DEAD static char const* const stringBase_8037A0C5 = "Link"; #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm void dEvent_manager_c::getMyStaffId(char const* param_0, fopAc_ac_c* param_1, int param_2) { +asm s32 dEvent_manager_c::getMyStaffId(char const* param_0, fopAc_ac_c* param_1, int param_2) { nofralloc #include "asm/d/event/d_event_manager/getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci.s" } diff --git a/src/d/kankyo/d_kankyo.cpp b/src/d/kankyo/d_kankyo.cpp index fbdf59e1e1..e0f640af35 100644 --- a/src/d/kankyo/d_kankyo.cpp +++ b/src/d/kankyo/d_kankyo.cpp @@ -3204,7 +3204,7 @@ static asm void dKy_F_SP121Check(char const* param_0, int param_1, u8* param_2, #pragma push #pragma optimization_level 0 #pragma optimizewithasm off -asm BOOL dKy_darkworld_stage_check(char const* param_0, int param_1) { +asm bool dKy_darkworld_stage_check(char const* param_0, int param_1) { nofralloc #include "asm/d/kankyo/d_kankyo/dKy_darkworld_stage_check__FPCci.s" } diff --git a/src/d/particle/d_particle.cpp b/src/d/particle/d_particle.cpp index a963fd0cb8..c677279916 100644 --- a/src/d/particle/d_particle.cpp +++ b/src/d/particle/d_particle.cpp @@ -605,8 +605,6 @@ extern "C" extern u8 g_dComIfG_gameInfo[122384]; extern "C" extern u8 g_env_light[4880]; extern "C" u8 sincosTable___5JMath[65536]; extern "C" extern u32 g_whiteColor; -extern "C" extern u32 __float_nan; -extern "C" extern u32 __float_epsilon; extern "C" u8 mFrameBufferTimg__13mDoGph_gInf_c[4]; extern "C" extern u8 JPTracePCB4[4]; extern "C" f32 mWaterY__11fopAcM_wt_c[1 + 1 /* padding */]; diff --git a/src/d/save/d_save.cpp b/src/d/save/d_save.cpp index 20ed84ed21..43a7a57c25 100644 --- a/src/d/save/d_save.cpp +++ b/src/d/save/d_save.cpp @@ -9,15 +9,7 @@ #include "d/meter/d_meter2_info.h" #include "dol2asm.h" #include "dolphin/types.h" - -// -// Types: -// - -struct daObjCarry_c { - /* 80031CF8 */ void clrSaveFlag(); - /* 80031D04 */ void setSaveFlag(); -}; +#include "rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h" // // Forward References: @@ -1456,11 +1448,11 @@ bool dSv_danBit_c::init(s8 i_stage) { unk28[i] = 0xFFFF; } - clrSaveFlag__12daObjCarry_cFv(); + daObjCarry_c::clrSaveFlag(); return true; } else { - setSaveFlag__12daObjCarry_cFv(); + daObjCarry_c::setSaveFlag(); return false; } } diff --git a/src/m_Do/m_Do_ext.cpp b/src/m_Do/m_Do_ext.cpp index 7e84af6951..0e6f5a4dde 100644 --- a/src/m_Do/m_Do_ext.cpp +++ b/src/m_Do/m_Do_ext.cpp @@ -596,7 +596,6 @@ extern "C" extern u8 g_dComIfG_gameInfo[122384]; extern "C" u8 mCurrentMtx__6J3DSys[48]; extern "C" f32 mParentS__6J3DSys[3]; extern "C" u8 sGDLObj__17J3DDisplayListObj[16]; -extern "C" extern u32 __float_nan; extern "C" extern f32 G_CM3D_F_ABS_MIN[1 + 1 /* padding */]; extern "C" u8 sCurrentHeap__7JKRHeap[4]; extern "C" u8 sOldVcdVatCmd__8J3DShape[4]; diff --git a/src/m_Do/m_Do_mtx.cpp b/src/m_Do/m_Do_mtx.cpp index aa1bb4f6c0..1dca9d11b9 100644 --- a/src/m_Do/m_Do_mtx.cpp +++ b/src/m_Do/m_Do_mtx.cpp @@ -71,7 +71,6 @@ extern "C" void __register_global_object(); extern "C" void _savegpr_29(); extern "C" void _restgpr_29(); extern "C" u8 sincosTable___5JMath[65536]; -extern "C" extern u32 __float_epsilon; extern "C" extern f32 G_CM3D_F_ABS_MIN[1 + 1 /* padding */]; //