From b1d7bc9cc42699a20dd84e8db0d1d768346ebae3 Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Mon, 28 Oct 2024 04:00:15 -0700 Subject: [PATCH] d_a_alink_effect mostly done (#2227) * d_a_alink_effect work * more d_a_alink_effect work * some d_a_alink data cleanup * d_a_alink_effect mostly done --- include/JSystem/JParticle/JPAEmitter.h | 7 + include/JSystem/JStudio/JStudio/stb.h | 5 + include/d/actor/d_a_alink.h | 87 +- include/d/actor/d_a_npc_tkc.h | 6 +- include/d/actor/d_a_npc_zra.h | 2 + include/d/actor/d_a_obj_tks.h | 6 +- include/d/actor/d_a_player.h | 14 +- include/d/d_jnt_col.h | 1 + include/d/d_particle.h | 14 +- src/d/actor/d_a_alink.cpp | 1081 +++++++-------- src/d/actor/d_a_alink_demo.inc | 169 ++- src/d/actor/d_a_alink_effect.inc | 1687 ++++++++++++++++++++++-- src/d/actor/d_a_alink_grab.inc | 62 +- src/d/actor/d_a_alink_hook.inc | 9 +- src/d/actor/d_a_alink_link.inc | 6 - src/d/actor/d_a_alink_weakfn.inc | 9 +- src/d/actor/d_a_alink_wolf.inc | 22 +- src/d/actor/d_a_boomerang.cpp | 4 +- src/d/d_particle.cpp | 2 +- 19 files changed, 2359 insertions(+), 834 deletions(-) diff --git a/include/JSystem/JParticle/JPAEmitter.h b/include/JSystem/JParticle/JPAEmitter.h index 807f22d075a..c7dc0590865 100644 --- a/include/JSystem/JParticle/JPAEmitter.h +++ b/include/JSystem/JParticle/JPAEmitter.h @@ -132,6 +132,7 @@ class JPABaseEmitter { void setGlobalRotation(const JGeometry::TVec3& rot) { JPAGetXYZRotateMtx(rot.x, rot.y, rot.z, mGlobalRot); } + void getGlobalTranslation(JGeometry::TVec3* out) const { out->set(mGlobalTrs); } void setGlobalDynamicsScale(const JGeometry::TVec3& i_scale) { mGlobalScl.set(i_scale); } void setGlobalAlpha(u8 alpha) { mGlobalPrmClr.a = alpha; } u8 getGlobalAlpha() { return mGlobalPrmClr.a; } @@ -140,6 +141,12 @@ class JPABaseEmitter { void setGlobalEnvColor(u8 r, u8 g, u8 b) { mGlobalEnvClr.r = r; mGlobalEnvClr.g = g; mGlobalEnvClr.b = b; } void setVolumeSize(u16 size) { mVolumeSize = size; } void setLifeTime(s16 lifetime) { mLifeTime = lifetime; } + void setAwayFromCenterSpeed(f32 i_speed) { mAwayFromCenterSpeed = i_speed; } + void setAwayFromAxisSpeed(f32 i_speed) { mAwayFromAxisSpeed = i_speed; } + void setSpread(f32 i_spread) { mSpread = i_spread; } + void setLocalTranslation(const JGeometry::TVec3& i_trans) { mLocalTrs.set(i_trans); } + void setLocalRotation(const JGeometry::TVec3& i_rot) { mLocalRot.set(i_rot.x * 0.005493248f, i_rot.y * 0.005493248f, i_rot.z * 0.005493248f); } + void setRateStep(u8 i_step) { mRateStep = i_step; } void setGlobalParticleHeightScale(f32 height) { mGlobalPScl.y = height; diff --git a/include/JSystem/JStudio/JStudio/stb.h b/include/JSystem/JStudio/JStudio/stb.h index ea299a709c2..a4ee1a7e762 100644 --- a/include/JSystem/JStudio/JStudio/stb.h +++ b/include/JSystem/JStudio/JStudio/stb.h @@ -163,6 +163,10 @@ struct TParseData : public data::TParse_TParagraph_data::TData { set(data); } + TParseData() { + set(NULL); + } + void set(const data::TParse_TParagraph_data& data) { data.getData(this); } @@ -183,6 +187,7 @@ struct TParseData : public data::TParse_TParagraph_data::TData { template > struct TParseData_fixed : public TParseData { TParseData_fixed(const void* pContent) : TParseData(pContent) {} + TParseData_fixed() : TParseData() {} const void* getNext() const { return fileCount; diff --git a/include/d/actor/d_a_alink.h b/include/d/actor/d_a_alink.h index 3419656f726..b5d58ad8f98 100644 --- a/include/d/actor/d_a_alink.h +++ b/include/d/actor/d_a_alink.h @@ -35,13 +35,18 @@ class daAlink_lockCursor_c : public dDlst_base_c { /* 800CFE68 */ virtual ~daAlink_lockCursor_c() {} void initFrame() { - field_0x4 = false; + field_0x4 = 0; field_0x2c = 4.0f; field_0x30 = 0.0f; } + void setPos(f32 i_posX, f32 i_posY) { + mPosX = i_posX; + mPosY = i_posY; + } + private: - /* 0x04 */ bool field_0x4; + /* 0x04 */ u8 field_0x4; /* 0x05 */ u8 field_0x5[3]; /* 0x08 */ J2DScreen* mScrn; /* 0x0C */ J2DPane* field_0xc; @@ -54,8 +59,8 @@ class daAlink_lockCursor_c : public dDlst_base_c { /* 0x28 */ J2DAnmTransformKey* field_0x28; /* 0x2C */ f32 field_0x2c; /* 0x30 */ f32 field_0x30; - /* 0x34 */ f32 field_0x34; - /* 0x38 */ f32 field_0x38; + /* 0x34 */ f32 mPosX; + /* 0x38 */ f32 mPosY; }; class daAlink_sight_c : public daPy_sightPacket_c { @@ -86,16 +91,16 @@ class daAlink_blur_c : public J3DPacket { /* 800CFD58 */ virtual ~daAlink_blur_c() {} // private: - /* 0x010 */ void* m_blurTex; + /* 0x010 */ ResTIMG* m_blurTex; /* 0x014 */ int field_0x14; /* 0x018 */ u8 field_0x18[4]; /* 0x01C */ int field_0x1c; - /* 0x020 */ u8 field_0x20[4]; + /* 0x020 */ int field_0x20; /* 0x024 */ f32 field_0x24; /* 0x028 */ u8 field_0x28[4]; /* 0x02C */ cXyz field_0x2c; - /* 0x038 */ cXyz field_0x38[0x3C]; - /* 0x308 */ cXyz field_0x308[0x3C]; + /* 0x038 */ cXyz field_0x38[60]; + /* 0x308 */ cXyz field_0x308[60]; }; // Size = 0x5D8 class dAlink_bottleWaterPcallBack_c : public JPAParticleCallBack { @@ -110,6 +115,12 @@ class dAlink_bottleWaterPcallBack_c : public JPAParticleCallBack { mKeepMinY = minY; } + s16 getAppearFlg() const { return mAppearFlg; } + s16 getHitFlg() const { return mHitFlg; } + cXyz& getHitPos() { return mHitPos; } + + void onAppearFlg() { mAppearFlg = true; } + private: /* 0x04 */ s16 mHitFlg; /* 0x06 */ s16 mAppearFlg; @@ -218,6 +229,7 @@ class daAlinkHIO_c { class daAlink_c; typedef int (daAlink_c::*daAlink_procFunc)(); +typedef void (daAlink_c::*EffParamProc)(); struct daAlink_procInitTable { /* 0x0 */ daAlink_procFunc m_procFunc; @@ -1257,11 +1269,22 @@ class daAlink_c : public daPy_py_c { /* 0x4 */ DIR_NONE, }; + enum daAlink_EFFPROC { + EFFPROC_FRONT_ROLL, + EFFPROC_SLIP, + EFFPROC_SMALL_LAND, + EFFPROC_RUN, + EFFPROC_LAND, + EFFPROC_SUMOU, + EFFPROC_NONE, + }; + class firePointEff_c { public: /* 800CFC3C */ ~firePointEff_c(); /* 800CFC78 */ firePointEff_c(); /* 0x00 */ u8 field_0x0; + /* 0x02 */ u16 field_0x2; /* 0x04 */ u32 field_0x4; /* 0x08 */ u32 field_0x8; /* 0x0C */ cXyz field_0xc; @@ -1277,7 +1300,7 @@ class daAlink_c : public daPy_py_c { }; // Size: 0x10 /* 8009D87C */ bool getE3Zhint(); - /* 8009D884 */ static char* getAlinkArcName(); + /* 8009D884 */ static const char* getAlinkArcName(); /* 8009DA60 */ static bool checkStageName(char const*); /* 8009DA98 */ void tgHitCallback(fopAc_ac_c*, dCcD_GObjInf*, dCcD_GObjInf*); /* 8009DB64 */ void coHitCallback(fopAc_ac_c*, dCcD_GObjInf*); @@ -3442,22 +3465,21 @@ class daAlink_c : public daPy_py_c { static daAlink_AnmData const m_anmDataTable[414]; static daAlink_WlAnmData const m_wlAnmDataTable[147]; static daAlink_FaceTexData const m_faceTexDataTable[]; - static u8 const m_handLeftOutSidePos[12]; - static u8 const m_handRightOutSidePos[12]; - static u8 const m_handLeftInSidePos[12]; - static u8 const m_handRightInSidePos[12]; + static Vec const m_handLeftOutSidePos; + static Vec const m_handRightOutSidePos; + static Vec const m_handLeftInSidePos; + static Vec const m_handRightInSidePos; static daAlink_procInitTable m_procInitTable[]; static daAlink_procFunc m_demoInitTable[]; - - static u8 m_fEffParamProc[72]; + static EffParamProc m_fEffParamProc[]; /* 0x0062C */ request_of_phase_process_class mPhaseReq; - /* 0x00634 */ char* mArcName; + /* 0x00634 */ const char* mArcName; /* 0x00638 */ JKRExpHeap* mpArcHeap; /* 0x0063C */ request_of_phase_process_class mShieldPhaseReq; - /* 0x00644 */ char* mShieldArcName; + /* 0x00644 */ const char* mShieldArcName; /* 0x00648 */ JKRExpHeap* mpShieldArcHeap; /* 0x0064C */ J3DModelData* field_0x064C; /* 0x00650 */ J3DModel* mpLinkModel; @@ -3666,7 +3688,7 @@ class daAlink_c : public daPy_py_c { /* 0x02F9B */ u8 field_0x2f9b; /* 0x02F9C */ u8 mSelectItemId; /* 0x02F9D */ u8 field_0x2f9d; - /* 0x02F9E */ u8 field_0x2f9e; + /* 0x02F9E */ u8 mEffProc; /* 0x02F9F */ u8 field_0x2f9f; /* 0x02FA0 */ u8 field_0x2fa0; /* 0x02FA1 */ u8 mRunCutComboCount; @@ -3905,8 +3927,7 @@ class daAlink_c : public daPy_py_c { /* 0x031A0 */ u32 mModeFlg; /* 0x031A4 */ int field_0x31a4; /* 0x031A8 */ u8 field_0x31a8[8]; - /* 0x031B0 */ int field_0x31b0; - /* 0x031B4 */ u8 field_0x31b4[8]; + /* 0x031B0 */ u32 field_0x31b0[3]; /* 0x031BC */ u32 field_0x31bc; /* 0x031C0 */ u32 field_0x31c0; /* 0x031C4 */ u32 field_0x31c4; @@ -3914,15 +3935,13 @@ class daAlink_c : public daPy_py_c { /* 0x031CC */ u32 field_0x31cc; /* 0x031D0 */ u32 field_0x31d0; /* 0x031D4 */ u32 field_0x31d4; - /* 0x031D8 */ u8 field_0x31d8[12]; + /* 0x031D8 */ u32 field_0x31d8[3]; /* 0x031E4 */ u32 field_0x31e4; - /* 0x031E8 */ u8 field_0x31e8[16]; + /* 0x031E8 */ u32 field_0x31e8[4]; /* 0x031F8 */ u32 field_0x31f8; /* 0x031FC */ u32 field_0x31fc; /* 0x03200 */ u32 field_0x3200; - /* 0x03204 */ u32 field_0x3204; - /* 0x03208 */ u32 field_0x3208; - /* 0x0320C */ u8 field_0x320c[16]; + /* 0x03204 */ u32 field_0x3204[6]; /* 0x0321C */ u32 field_0x321c; /* 0x03220 */ u32 field_0x3220; /* 0x03224 */ u32 field_0x3224; @@ -3931,17 +3950,18 @@ class daAlink_c : public daPy_py_c { /* 0x03258 */ u32 field_0x3258; /* 0x0325C */ u32 field_0x325c; /* 0x03260 */ u32 field_0x3260[2]; - /* 0x03268 */ u8 field_0x3268[0x3288 - 0x3268]; + /* 0x03268 */ u32 field_0x3268; + /* 0x0326C */ u32 field_0x326c[4]; + /* 0x0327C */ u32 field_0x327c[3]; /* 0x03288 */ u32 field_0x3288; /* 0x0328C */ u32 field_0x328c; /* 0x03290 */ u32 field_0x3290; /* 0x03294 */ u32 field_0x3294; - /* 0x03298 */ u8 field_0x3298[8]; + /* 0x03298 */ u32 field_0x3298[2]; /* 0x032A0 */ J3DGXColorS10 field_0x32a0[2]; /* 0x032B0 */ J3DGXColorS10 field_0x32b0[2]; /* 0x032C0 */ s16 field_0x32c0[2]; - /* 0x032C4 */ u16 field_0x32c4; - /* 0x032C6 */ u16 field_0x32c6; + /* 0x032C4 */ u16 field_0x32c4[2]; /* 0x032C8 */ u32 field_0x32c8; /* 0x032CC */ u32 field_0x32cc; /* 0x032D0 */ u32 field_0x32d0; @@ -4094,6 +4114,15 @@ struct daAlink_cutParamTbl { /* 0xC */ f32 m_morf; }; // Size: 0x10 +struct daAlink_cutHorseParamTbl { + /* 0x0 */ int field_0x0; + /* 0x4 */ u16 field_0x4; + /* 0x6 */ u16 field_0x6; + /* 0x8 */ u8 field_0x8; + /* 0x9 */ u8 field_0x9; + /* 0xA */ u8 field_0xa; +}; // Size: 0xC + struct daAlinkHIO_anm_c { /* 0x00 */ s16 mEndFrame; /* 0x04 */ f32 mSpeed; diff --git a/include/d/actor/d_a_npc_tkc.h b/include/d/actor/d_a_npc_tkc.h index 9f28c8b4742..d2520b4adaf 100644 --- a/include/d/actor/d_a_npc_tkc.h +++ b/include/d/actor/d_a_npc_tkc.h @@ -50,10 +50,14 @@ class daNpcTkc_c : public fopAc_ac_c { /* 80B0FDE4 */ void setAttnPos(); /* 80B0FFD4 */ bool drawDbgInfo(); + void setStart() { field_0xd7a = 1; } + static u8 mEvtSeqList[48]; private: - /* 0x568 */ u8 field_0x568[0xd7c - 0x568]; + /* 0x568 */ u8 field_0x568[0xd7a - 0x568]; + /* 0xD7A */ u8 field_0xd7a; + /* 0xD7B */ u8 field_0xd7b[0xd7c - 0xd7b]; }; STATIC_ASSERT(sizeof(daNpcTkc_c) == 0xd7c); diff --git a/include/d/actor/d_a_npc_zra.h b/include/d/actor/d_a_npc_zra.h index f261b6fc43f..8e734ec0e58 100644 --- a/include/d/actor/d_a_npc_zra.h +++ b/include/d/actor/d_a_npc_zra.h @@ -317,9 +317,11 @@ class daNpc_zrA_c : public daNpcF_c { /* 80B8B530 */ BOOL ECut_searchPrince1(int); /* 80B8BCE8 */ BOOL ECut_searchPrince2(int); /* 80B8C3E8 */ void adjustShapeAngle() {} + int getType() { return mType; } u32 getAngleNoFromParam() { return (u8)(fopAcM_GetParam(this) >> 8); } void setBlastFlag(u8 i_flag) { mBlastFlag = i_flag; } + MtxP getHeadMtx() { return mpMorf->getModel()->getAnmMtx(4); } /* 0x0B48 */ Z2Creature mCreatureSound; /* 0x0BD8 */ J3DModel* mpObjectModel[3]; diff --git a/include/d/actor/d_a_obj_tks.h b/include/d/actor/d_a_obj_tks.h index e20f9cba357..d18338afedb 100644 --- a/include/d/actor/d_a_obj_tks.h +++ b/include/d/actor/d_a_obj_tks.h @@ -43,8 +43,12 @@ class daObjTks_c : public fopAc_ac_c { /* 80D11E94 */ bool drawDbgInfo(); /* 80D11E9C */ void drawOtherMdls(); + void setStart() { field_0xde0 = 1; } + private: - /* 0x568 */ u8 field_0x568[0xDE4 - 0x568]; + /* 0x568 */ u8 field_0x568[0xDE0 - 0x568]; + /* 0xDE0 */ u8 field_0xde0; + /* 0xDE1 */ u8 field_0xde1[0xDE4 - 0xDE1]; }; STATIC_ASSERT(sizeof(daObjTks_c) == 0xDE4); diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index a47eecb73bf..577af4bc9a5 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -20,7 +20,6 @@ class daPy_sightPacket_c : public dDlst_base_c { void offDrawFlg() { mDrawFlag = false; } void setPos(const cXyz* i_pos) { mPos = *i_pos; } -private: /* 0x04 */ bool mDrawFlag; /* 0x05 */ u8 field_0x5[3]; /* 0x08 */ cXyz mPos; @@ -289,7 +288,9 @@ class daPy_py_c : public fopAc_ac_c { FLG2_UNK_20000000 = 0x20000000, FLG2_UNK_10000000 = 0x10000000, FLG2_UNK_4080000 = 0x4080000, + FLG2_UNK_4000000 = 0x4000000, FLG2_UNK_2080000 = 0x2080000, + FLG2_UNK_2000000 = 0x2000000, FLG2_BOAR_SINGLE_BATTLE = 0x1800000, FLG2_UNK_8000000 = 0x8000000, FLG2_UNK_1000000 = 0x1000000, @@ -341,6 +342,7 @@ class daPy_py_c : public fopAc_ac_c { FLG3_UNK_4000 = 0x4000, FLG3_UNK_2000 = 0x2000, FLG3_UNK_1000 = 0x1000, + FLG3_UNK_800 = 0x800, FLG3_UNK_400 = 0x400, FLG3_UNK_200 = 0x200, FLG3_UNK_100 = 0x100, @@ -350,6 +352,7 @@ class daPy_py_c : public fopAc_ac_c { FLG3_UNK_10 = 0x10, FLG3_UNK_8 = 8, FLG3_UNK_4 = 4, + FLG3_UNK_1 = 1, }; enum daPy_ERFLG0 { @@ -391,9 +394,12 @@ class daPy_py_c : public fopAc_ac_c { ERFLG1_UNK_4000000 = 0x4000000, ERFLG1_UNK_2000000 = 0x2000000, ERFLG1_UNK_1000000 = 0x1000000, + ERFLG1_UNK_400000 = 0x400000, ERFLG1_UNK_200000 = 0x200000, ERFLG1_UNK_100000 = 0x100000, + ERFLG1_UNK_80000 = 0x80000, ERFLG1_UNK_40000 = 0x40000, + ERFLG1_UNK_20000 = 0x20000, ERFLG1_UNK_10000 = 0x10000, ERFLG1_UNK_8000 = 0x8000, ERFLG1_UNK_4000 = 0x4000, @@ -459,6 +465,10 @@ class daPy_py_c : public fopAc_ac_c { RFLG1_UNK_80 = 0x80, RFLG1_UNK_40 = 0x40, RFLG1_UNK_30 = 0x30, + RFLG1_UNK_20 = 0x20, + RFLG1_UNK_10 = 0x10, + RFLG1_UNK_8 = 0x8, + RFLG1_UNK_4 = 0x4, RFLG1_UNK_2 = 0x2, RFLG1_WOLF_ATTACK_REVERSE = 0x1, @@ -802,6 +812,7 @@ class daPy_py_c : public fopAc_ac_c { void onWolfEyeKeep() { onEndResetFlg1(ERFLG1_WOLF_EYE_KEEP); } void onFogFade() { onNoResetFlg2(FLG2_UNK_4000); } BOOL checkStickArrowReset() const { return checkResetFlg0(RFLG0_UNK_1); } + u32 getCutAtFlg() const { return checkNoResetFlg0(FLG0_UNK_40); } void offWolfEnemyHangBite() { offNoResetFlg2(FLG2_WOLF_ENEMY_HANG_BITE); } bool onWolfEnemyHangBite(fopAc_ac_c* param_0) { return onWolfEnemyBiteAll(param_0, FLG2_WOLF_ENEMY_HANG_BITE); } @@ -870,6 +881,7 @@ class daPy_py_c : public fopAc_ac_c { cXyz* getLeftHandPosP() { return &mLeftHandPos; } cXyz* getRightHandPosP() { return &mRightHandPos; } + cXyz* getHeadTopPosP() { return &mHeadTopPos; } u32 checkWolf() const { return checkNoResetFlg1(FLG1_IS_WOLF); } u32 checkEquipHeavyBoots() const { return checkNoResetFlg0(FLG0_EQUIP_HVY_BOOTS); } diff --git a/include/d/d_jnt_col.h b/include/d/d_jnt_col.h index 41bc9b7dc31..bdc3a71fac5 100644 --- a/include/d/d_jnt_col.h +++ b/include/d/d_jnt_col.h @@ -32,6 +32,7 @@ class dJntCol_c { bool checkShieldType(int i) { return getType(i) == 3; } s8 getType(int i) { return mData[i].mType; } + int getJntNum(int i) { return mData[i].mJntNum; } /* 0x00 */ const dJntColData_c* mData; /* 0x04 */ J3DModel* mModel; diff --git a/include/d/d_particle.h b/include/d/d_particle.h index 82b49c07c21..61711939618 100644 --- a/include/d/d_particle.h +++ b/include/d/d_particle.h @@ -414,36 +414,48 @@ class dPa_control_c { } static JPAEmitterManager* getEmitterManager() { return mEmitterMng; } + static JPAParticleCallBack* getLight8PcallBack() { return &mLight8PcallBack; } + static JPAParticleCallBack* getGen_b_Light8PcallBack() { return &m_b_Light8PcallBack; } + static JPAParticleCallBack* getGen_d_Light8PcallBack() { return &m_d_Light8PcallBack; } + static dPa_gen_b_light8EcallBack* getGen_b_Light8EcallBack() { return &m_b_Light8EcallBack; } + static dPa_gen_d_light8EcallBack* getGen_d_Light8EcallBack() { return &m_d_Light8EcallBack; } + static dPa_light8EcallBack* getLight8EcallBack() { return &mLight8EcallBack; } + static JPAParticleCallBack* getParticleTracePCB() { return &mParticleTracePCB; } + static JPAParticleCallBack* getFsenthPcallBack() { return &mFsenthPcallBack; } + static JPAParticleCallBack* getWaterBubblePcallBack() { + return &mWaterBubblePcallBack; + } + static dPa_selectTexEcallBack mTsubo[8]; static u8 mLifeBall[24]; static Mtx mWindViewMatrix; static JPAEmitterManager* mEmitterMng; - static u8 mWaterBubblePcallBack[4]; + static JPAParticleCallBack mWaterBubblePcallBack; static JPAParticleCallBack mFsenthPcallBack; static dPa_light8EcallBack mLight8EcallBack; static JPAParticleCallBack mLight8PcallBack; diff --git a/src/d/actor/d_a_alink.cpp b/src/d/actor/d_a_alink.cpp index dd7005164f1..89364b149e3 100644 --- a/src/d/actor/d_a_alink.cpp +++ b/src/d/actor/d_a_alink.cpp @@ -51,34 +51,34 @@ bool daAlink_c::getE3Zhint() { } /* 80452C50-80452C58 001250 0005+03 2/2 0/0 0/0 .sdata2 l_wArcName */ -SECTION_SDATA2 static char l_wArcName[8] = "Wmdl"; +static const char l_wArcName[8] = "Wmdl"; /* 80452C58-80452C60 001258 0005+03 2/2 0/0 0/0 .sdata2 l_bArcName */ -SECTION_SDATA2 static char l_bArcName[8] = "Bmdl"; +static const char l_bArcName[8] = "Bmdl"; /* 80452C60-80452C68 001260 0005+03 2/2 0/0 0/0 .sdata2 l_kArcName */ -SECTION_SDATA2 static char l_kArcName[8] = "Kmdl"; +static const char l_kArcName[8] = "Kmdl"; /* 80452C68-80452C70 001268 0005+03 2/2 0/0 0/0 .sdata2 l_zArcName */ -SECTION_SDATA2 static char l_zArcName[8] = "Zmdl"; +static const char l_zArcName[8] = "Zmdl"; /* 80452C70-80452C78 001270 0005+03 3/3 0/0 0/0 .sdata2 l_mArcName */ -SECTION_SDATA2 static char l_mArcName[8] = "Mmdl"; +static const char l_mArcName[8] = "Mmdl"; /* 80452C78-80452C80 001278 0006+02 1/1 0/0 0/0 .sdata2 l_hyShdArcName */ -SECTION_SDATA2 static char l_hyShdArcName[8] = "HyShd"; +static const char l_hyShdArcName[8] = "HyShd"; /* 80452C80-80452C88 001280 0006+02 1/1 0/0 0/0 .sdata2 l_cWShdArcName */ -SECTION_SDATA2 static char l_cWShdArcName[8] = "CWShd"; +static const char l_cWShdArcName[8] = "CWShd"; /* 80452C88-80452C90 001288 0006+02 1/1 0/0 0/0 .sdata2 l_sWShdArcName */ -SECTION_SDATA2 static char l_sWShdArcName[8] = "SWShd"; +static const char l_sWShdArcName[8] = "SWShd"; /* 80452C90-80452C98 001290 0006+02 7/7 0/0 0/0 .sdata2 l_arcName */ -SECTION_SDATA2 static char l_arcName[8] = "Alink"; +static const char l_arcName[8] = "Alink"; /* 8009D884-8009D88C 0981C4 0008+00 0/0 0/0 13/13 .text getAlinkArcName__9daAlink_cFv */ -char* daAlink_c::getAlinkArcName() { +const char* daAlink_c::getAlinkArcName() { return l_arcName; } @@ -301,7 +301,7 @@ static int daAlink_modelCallBack(J3DJoint* p_joint, int param_1) { } /* 80452CF8-80452D00 0012F8 0008+00 84/84 0/0 0/0 .sdata2 @6848 */ -SECTION_SDATA2 static u8 lit_6848[8] = { +static const u8 lit_6848[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; @@ -348,12 +348,12 @@ static int daAlink_wolfModelCallBack(J3DJoint* i_joint, int param_1) { } /* 80452F38-80452F3C -00001 0004+00 1/1 0/0 0/0 .sdata2 None */ -SECTION_SDATA2 static u8 data_80452F38 = 1; +static const u8 data_80452F38 = 1; -SECTION_SDATA2 static u8 data_80452F39 = 4; +static const u8 data_80452F39 = 4; /* 80452FA8-80452FB0 0015A8 0008+00 1/1 0/0 0/0 .sdata2 offsetAngle$25945 */ -SECTION_SDATA2 static s16 offsetAngle[] = { +static const s16 offsetAngle[] = { 0x0000, 0x8000, 0x4000, @@ -361,181 +361,129 @@ SECTION_SDATA2 static s16 offsetAngle[] = { }; /* 80453020-80453024 001620 0004+00 1/1 0/0 0/0 .sdata2 grassWhistleIdx$33097 */ -SECTION_SDATA2 static u16 grassWhistleIdx[2] = { +static const u16 grassWhistleIdx[2] = { 3, 3, }; /* 80453094-8045309C 001694 0006+02 1/1 0/0 0/0 .sdata2 effName$40765 */ -SECTION_SDATA2 static u8 effName_40765[6 + 2 /* padding */] = { - 0x04, - 0x07, - 0x04, - 0x08, - 0x04, - 0x09, - /* padding */ - 0x00, - 0x00, +static const u16 effName_40765[] = { + 0x0407, + 0x0408, + 0x0409, }; /* 8045309C-804530A4 00169C 0006+02 1/1 0/0 0/0 .sdata2 effName0$40950 */ -SECTION_SDATA2 static u8 effName0[6 + 2 /* padding */] = { - 0x86, - 0x7D, - 0x86, - 0x7E, - 0x86, - 0x7F, - /* padding */ - 0x00, - 0x00, +static const u16 effName0[] = { + 0x867D, + 0x867E, + 0x867F, }; /* 804530A4-804530AC 0016A4 0006+02 1/1 0/0 0/0 .sdata2 effName1$40951 */ -SECTION_SDATA2 static u8 effName1[6 + 2 /* padding */] = { - 0x89, - 0x81, - 0x89, - 0x82, - 0x89, - 0x83, - /* padding */ - 0x00, - 0x00, +static const u16 effName1[] = { + 0x8981, + 0x8982, + 0x8983, }; /* 804530AC-804530B0 0016AC 0004+00 1/1 0/0 0/0 .sdata2 effNameNormal$41086 */ -SECTION_SDATA2 static u8 effNameNormal[4] = { - 0x01, - 0x59, - 0x01, - 0x5A, +static const u16 effNameNormal[] = { + 0x0159, + 0x015A, }; /* 804530B0-804530B8 0016B0 0008+00 1/1 0/0 0/0 .sdata2 effNameLight$41091 */ -SECTION_SDATA2 static u8 effNameLight[8] = { - 0x0A, 0x28, 0x0A, 0x29, 0x0A, 0x2A, 0x0A, 0x2B, +static const u16 effNameLight[] = { + 0x0A28, 0x0A29, 0x0A2A, 0x0A2B, }; /* 804530B8-804530BC 0016B8 0004+00 1/1 0/0 0/0 .sdata2 effNameWater$41101 */ -SECTION_SDATA2 static u8 effNameWater[4] = { - 0x0C, - 0x52, - 0x0C, - 0x53, +static const u16 effNameWater[] = { + 0x0C52, + 0x0C53, }; /* 804530C0-804530C8 0016C0 0008+00 1/1 0/0 0/0 .sdata2 jointID$41285 */ -SECTION_SDATA2 static u8 jointID[8] = { - 0x00, 0x14, 0x00, 0x13, 0x00, 0x18, 0x00, 0x19, +static const u16 jointID[] = { + 0x0014, 0x0013, 0x0018, 0x0019, }; /* 804530C8-804530D0 0016C8 0008+00 1/1 0/0 0/0 .sdata2 effName$41286 */ -SECTION_SDATA2 static u8 effName_41286[8] = { - 0x88, 0xE1, 0x88, 0xE2, 0x88, 0xE3, 0x88, 0xE4, +static const u16 effName_41286[] = { + 0x88E1, 0x88E2, 0x88E3, 0x88E4, }; /* 804530D0-804530D8 0016D0 0006+02 1/1 0/0 0/0 .sdata2 effName$41312 */ -SECTION_SDATA2 static u8 effName_41312[6 + 2 /* padding */] = { - 0x0A, - 0x58, - 0x0A, - 0x59, - 0x0B, - 0x9D, - /* padding */ - 0x00, - 0x00, +static const u16 effName_41312[] = { + 0x0A58, + 0x0A59, + 0x0B9D, }; /* 804530D8-804530E0 0016D8 0006+02 1/1 0/0 0/0 .sdata2 name0$41422 */ -SECTION_SDATA2 static u8 name0[6 + 2 /* padding */] = { - 0x02, - 0xA3, - 0x83, - 0xA2, - 0x88, - 0x4F, - /* padding */ - 0x00, - 0x00, +static const u16 name0[] = { + 0x02A3, + 0x83A2, + 0x884F, }; /* 804530E0-804530E8 0016E0 0006+02 1/1 0/0 0/0 .sdata2 name1$41423 */ -SECTION_SDATA2 static u8 name1[6 + 2 /* padding */] = { - 0x02, - 0xA3, - 0x83, - 0xA3, - 0x88, - 0x50, - /* padding */ - 0x00, - 0x00, +static const u16 name1[] = { + 0x02A3, + 0x83A3, + 0x8850, }; /* 804530E8-804530F0 0016E8 0006+02 1/1 0/0 0/0 .sdata2 effID$41443 */ -SECTION_SDATA2 static u8 effID[6 + 2 /* padding */] = { - 0x02, - 0x44, - 0x02, - 0x45, - 0x02, - 0x46, - /* padding */ - 0x00, - 0x00, +static const u16 effID[] = { + 0x0244, + 0x0245, + 0x0246, }; /* 804530F0-804530F4 0016F0 0004+00 1/1 0/0 0/0 .sdata2 normalNameID$41521 */ -SECTION_SDATA2 static u8 normalNameID[4] = { - 0x83, - 0x90, - 0x83, - 0x91, +static const u16 normalNameID[] = { + 0x8390, + 0x8391, }; /* 804530F4-804530F8 0016F4 0004+00 1/1 0/0 0/0 .sdata2 ganonNameID$41522 */ -SECTION_SDATA2 static u8 ganonNameID[4] = { - 0x8C, - 0x2A, - 0x8C, - 0x2B, +static const u16 ganonNameID[] = { + 0x8C2A, + 0x8C2B, }; /* 804530F8-80453100 0016F8 0008+00 1/1 0/0 0/0 .sdata2 effDataTable$41650 */ -SECTION_SDATA2 static u8 effDataTable[8] = { - 0x02, 0xA5, 0x02, 0xA6, 0x02, 0xA7, 0x02, 0xA8, +static const u16 effDataTable[] = { + 0x02A5, 0x02A6, 0x02A7, 0x02A8, }; /* 80453104-8045310C 001704 0008+00 1/1 0/0 0/0 .sdata2 cutSplashName$41756 */ -SECTION_SDATA2 static u8 cutSplashName[8] = { - 0x01, 0xB8, 0x01, 0xB9, 0x01, 0xBA, 0x01, 0xBB, +static const u16 cutSplashName[] = { + 0x01B8, 0x01B9, 0x01BA, 0x01BB, }; /* 8045310C-80453110 00170C 0004+00 1/1 0/0 0/0 .sdata2 effName$42224 */ -SECTION_SDATA2 static u8 effName_42224[4] = { - 0x88, - 0x18, - 0x88, - 0x19, +static const u16 effName_42224[] = { + 0x8818, + 0x8819, }; /* 80453110-80453114 001710 0004+00 1/1 0/0 0/0 .sdata2 effName$42309 */ -SECTION_SDATA2 static u16 effName_42309[2] = { +static const u16 effName_42309[] = { 0x0814, 0x0815, }; /* 80453114-80453118 001714 0004+00 1/1 0/0 0/0 .sdata2 effName$42340 */ -SECTION_SDATA2 static u16 effName_42340[2] = { +static const u16 effName_42340[] = { 0x0816, 0x0817, }; /* 8045314C-80453150 00174C 0004+00 1/1 0/0 0/0 .sdata2 fFootJoint$44785 */ -SECTION_SDATA2 static u8 fFootJoint[4] = { +static const u8 fFootJoint[4] = { 0x00, 0x10, 0x00, @@ -543,25 +491,23 @@ SECTION_SDATA2 static u8 fFootJoint[4] = { }; /* 80453150-80453154 001750 0004+00 1/1 0/0 0/0 .sdata2 bFootJoint$44786 */ -SECTION_SDATA2 static u8 bFootJoint[4] = { - 0x00, - 0x1C, - 0x00, - 0x21, +static const u16 bFootJoint[] = { + 0x001C, + 0x0021, }; /* 804531D8-804531E0 0017D8 0008+00 1/1 0/0 0/0 .sdata2 snowID$53110 */ -SECTION_SDATA2 static u16 snowID[] = { +static const u16 snowID[] = { 0x884D, 0x884E, 0x8851, 0x8852, }; /* 804531E0-804531E8 0017E0 0008+00 1/1 0/0 0/0 .sdata2 smokeID$53111 */ -SECTION_SDATA2 static u16 smokeID[] = { +static const u16 smokeID[] = { 0x83A0, 0x83A1, 0x83A4, 0x83A5, }; /* 804531E8-804531F0 0017E8 0008+00 1/1 0/0 0/0 .sdata2 waterColor$53845 */ -SECTION_SDATA2 static GXColorS10 waterColor = {0, 0, 0, 0}; +static const GXColorS10 waterColor = {0, 0, 0, 0}; /* 8009F034-8009FFF8 099974 0FC4+00 1/1 0/0 0/0 .text setHatAngle__9daAlink_cFv */ void daAlink_c::setHatAngle() { @@ -732,8 +678,8 @@ COMPILER_STRIP_GATE(0x8038FA54, &l_crawlFrontOffset); /* 8038FA60-8038FA6C 01C0C0 000C+00 0/1 0/0 0/0 .rodata l_crawlBackOffset */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const l_crawlBackOffset[12] = { - 0x00, 0x00, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0xC1, 0xF0, 0x00, 0x00, +SECTION_RODATA static Vec const l_crawlBackOffset = { + 0.0f, 30.0f, -30.0f }; COMPILER_STRIP_GATE(0x8038FA60, &l_crawlBackOffset); #pragma pop @@ -743,31 +689,31 @@ SECTION_RODATA static Vec const l_crawlTopOffset = {0.0f, 30.0f, 0.0f}; COMPILER_STRIP_GATE(0x8038FA6C, &l_crawlTopOffset); /* 8038FA78-8038FA84 01C0D8 000C+00 1/2 0/0 0/0 .rodata l_crawlFrontUpOffset */ -SECTION_RODATA static u8 const l_crawlFrontUpOffset[12] = { - 0x00, 0x00, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00, +SECTION_RODATA static Vec const l_crawlFrontUpOffset = { + 0.0f, 80.0f, 80.0f }; COMPILER_STRIP_GATE(0x8038FA78, &l_crawlFrontUpOffset); /* 8038FA84-8038FA90 01C0E4 000C+00 0/1 0/0 0/0 .rodata l_wolfLieFrontUpOffset */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const l_wolfLieFrontUpOffset[12] = { - 0x00, 0x00, 0x00, 0x00, 0x42, 0x96, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, +SECTION_RODATA static Vec const l_wolfLieFrontUpOffset = { + 0.0f, 75.0f, 100.0f }; COMPILER_STRIP_GATE(0x8038FA84, &l_wolfLieFrontUpOffset); #pragma pop /* 8038FA90-8038FA9C 01C0F0 000C+00 1/2 0/0 0/0 .rodata l_crawlBackUpOffset */ -SECTION_RODATA static u8 const l_crawlBackUpOffset[12] = { - 0x00, 0x00, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00, 0xC1, 0xF0, 0x00, 0x00, +SECTION_RODATA static Vec const l_crawlBackUpOffset = { + 0.0f, 80.0f, -30.0f }; COMPILER_STRIP_GATE(0x8038FA90, &l_crawlBackUpOffset); /* 8038FA9C-8038FAA8 01C0FC 000C+00 0/1 0/0 0/0 .rodata l_wolfLieBackUpOffset */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const l_wolfLieBackUpOffset[12] = { - 0x00, 0x00, 0x00, 0x00, 0x42, 0x96, 0x00, 0x00, 0xC2, 0x8C, 0x00, 0x00, +SECTION_RODATA static Vec const l_wolfLieBackUpOffset = { + 0.0f, 70.0f, -70.0f }; COMPILER_STRIP_GATE(0x8038FA9C, &l_wolfLieBackUpOffset); #pragma pop @@ -775,8 +721,8 @@ COMPILER_STRIP_GATE(0x8038FA9C, &l_wolfLieBackUpOffset); /* 8038FAA8-8038FAB4 01C108 000C+00 0/1 0/0 0/0 .rodata l_crawlStandUpOffset */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const l_crawlStandUpOffset[12] = { - 0x00, 0x00, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00, 0xC1, 0xF0, 0x00, 0x00, +SECTION_RODATA static Vec const l_crawlStandUpOffset = { + 0.0f, 80.0f, -30.0f }; COMPILER_STRIP_GATE(0x8038FAA8, &l_crawlStandUpOffset); #pragma pop @@ -784,8 +730,8 @@ COMPILER_STRIP_GATE(0x8038FAA8, &l_crawlStandUpOffset); /* 8038FAB4-8038FAC0 01C114 000C+00 0/1 0/0 0/0 .rodata l_wolfLieStandUpOffset */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const l_wolfLieStandUpOffset[12] = { - 0x00, 0x00, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00, 0xC2, 0x8C, 0x00, 0x00, +SECTION_RODATA static Vec const l_wolfLieStandUpOffset = { + 0.0f, 80.0f, -70.0f }; COMPILER_STRIP_GATE(0x8038FAB4, &l_wolfLieStandUpOffset); #pragma pop @@ -846,8 +792,8 @@ COMPILER_STRIP_GATE(0x8038FB14, &l_crawlRSideFrontOffset); /* 8038FB20-8038FB2C 01C180 000C+00 0/2 0/0 0/0 .rodata l_crawlMinSideOffset */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const l_crawlMinSideOffset[12] = { - 0x42, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const l_crawlMinSideOffset = { + 35.0f, 0.0f, 0.0f }; COMPILER_STRIP_GATE(0x8038FB20, &l_crawlMinSideOffset); #pragma pop @@ -855,8 +801,8 @@ COMPILER_STRIP_GATE(0x8038FB20, &l_crawlMinSideOffset); /* 8038FB2C-8038FB38 01C18C 000C+00 0/2 0/0 0/0 .rodata l_swordTopLocalN */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const l_swordTopLocalN[12] = { - 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const l_swordTopLocalN = { + 100.0f, 0.0f, 0.0f }; COMPILER_STRIP_GATE(0x8038FB2C, &l_swordTopLocalN); #pragma pop @@ -864,8 +810,8 @@ COMPILER_STRIP_GATE(0x8038FB2C, &l_swordTopLocalN); /* 8038FB38-8038FB44 01C198 000C+00 0/2 0/0 0/0 .rodata l_swordTopLocalM */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const l_swordTopLocalM[12] = { - 0x42, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const l_swordTopLocalM = { + 120.0f, 0.0f, 0.0f }; COMPILER_STRIP_GATE(0x8038FB38, &l_swordTopLocalM); #pragma pop @@ -1661,8 +1607,8 @@ static Vec const localSidePos = {2.3f, -15.5f, 15.6f}; /* 803918E8-803918F4 01DF48 000C+00 0/1 0/0 0/0 .rodata m_handLeftOutSidePos__9daAlink_c */ #pragma push #pragma force_active on -SECTION_RODATA u8 const daAlink_c::m_handLeftOutSidePos[12] = { - 0x41, 0x10, 0x00, 0x00, 0xC0, 0xA0, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, +SECTION_RODATA Vec const daAlink_c::m_handLeftOutSidePos = { + 9.0f, -5.0f, 3.0f }; COMPILER_STRIP_GATE(0x803918E8, &daAlink_c::m_handLeftOutSidePos); #pragma pop @@ -1671,21 +1617,21 @@ COMPILER_STRIP_GATE(0x803918E8, &daAlink_c::m_handLeftOutSidePos); */ #pragma push #pragma force_active on -SECTION_RODATA u8 const daAlink_c::m_handRightOutSidePos[12] = { - 0x41, 0x10, 0x00, 0x00, 0xC0, 0xA0, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x00, +SECTION_RODATA Vec const daAlink_c::m_handRightOutSidePos = { + 9.0f, -5.0f, -3.0f }; COMPILER_STRIP_GATE(0x803918F4, &daAlink_c::m_handRightOutSidePos); #pragma pop /* 80391900-8039190C 01DF60 000C+00 0/1 0/0 1/1 .rodata m_handLeftInSidePos__9daAlink_c */ -SECTION_RODATA u8 const daAlink_c::m_handLeftInSidePos[12] = { - 0x41, 0x10, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, +SECTION_RODATA Vec const daAlink_c::m_handLeftInSidePos = { + 9.0f, 5.0f, 3.0f }; COMPILER_STRIP_GATE(0x80391900, &daAlink_c::m_handLeftInSidePos); /* 8039190C-80391918 01DF6C 000C+00 0/1 0/0 1/1 .rodata m_handRightInSidePos__9daAlink_c */ -SECTION_RODATA u8 const daAlink_c::m_handRightInSidePos[12] = { - 0x41, 0x10, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x00, +SECTION_RODATA Vec const daAlink_c::m_handRightInSidePos = { + 9.0f, 5.0f, -3.0f }; COMPILER_STRIP_GATE(0x8039190C, &daAlink_c::m_handRightInSidePos); @@ -1735,49 +1681,70 @@ SECTION_RODATA static u8 const lit_18938[12] = { COMPILER_STRIP_GATE(0x80391978, &lit_18938); /* 80391984-80391990 01DFE4 000C+00 1/1 0/0 0/0 .rodata boarRideOffset$19147 */ -SECTION_RODATA static u8 const boarRideOffset[12] = { - 0xBF, 0x5E, 0xB8, 0x52, 0x40, 0x55, 0x1E, 0xB8, 0xC1, 0xBE, 0x28, 0xF6, +SECTION_RODATA static Vec const boarRideOffset = { + -0.87f, 3.3299999f, -23.77f }; COMPILER_STRIP_GATE(0x80391984, &boarRideOffset); /* 80391990-8039199C 01DFF0 000C+00 1/1 0/0 0/0 .rodata leftOffset$19386 */ -SECTION_RODATA static u8 const leftOffset[12] = { - 0x42, 0x96, 0x00, 0x00, 0x42, 0xCC, 0x00, 0x00, 0x40, 0xC7, 0x2B, 0x02, +SECTION_RODATA static Vec const leftOffset = { + 75.0f, 102.0f, 6.224f }; COMPILER_STRIP_GATE(0x80391990, &leftOffset); /* 8039199C-803919A8 01DFFC 000C+00 1/1 0/0 0/0 .rodata rightOffset$19387 */ -SECTION_RODATA static u8 const rightOffset[12] = { - 0xC2, 0x96, 0x00, 0x00, 0x42, 0xCC, 0x00, 0x00, 0x40, 0xC7, 0x12, 0x6F, +SECTION_RODATA static Vec const rightOffset = { + -75.0f, 102.0f, 6.221f }; COMPILER_STRIP_GATE(0x8039199C, &rightOffset); /* 803919A8-803919D8 01E008 0030+00 0/1 0/0 0/0 .rodata cutParamTable$19765 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const cutParamTable_19765[48] = { - 0x00, 0x00, 0x00, 0x20, 0x00, 0x91, 0x01, 0x0C, 0x00, 0x0E, 0x22, 0x00, 0x00, 0x00, 0x00, 0x21, - 0x00, 0x92, 0x01, 0x0D, 0x00, 0x13, 0x23, 0x00, 0x00, 0x00, 0x00, 0x22, 0x00, 0x93, 0x01, 0x0E, - 0x00, 0x13, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x94, 0x01, 0x0F, 0x00, 0x00, 0x2A, 0x00, +static daAlink_cutHorseParamTbl const cutParamTable_19765[] = { + { + 0x20, + 0x91, + 0x10C, + 0x00, + 0x0E, + 0x22, + }, + { + 0x21, + 0x92, + 0x10D, + 0x00, + 0x13, + 0x23, + }, + { + 0x22, + 0x93, + 0x10E, + 0x00, + 0x13, + 0x2A, + }, + { + 0x23, + 0x94, + 0x10F, + 0x00, + 0x00, + 0x2A, + }, }; COMPILER_STRIP_GATE(0x803919A8, &cutParamTable_19765); #pragma pop /* 803919D8-803919E4 01E038 000A+02 1/1 0/0 0/0 .rodata anmIdx$19945 */ -SECTION_RODATA static u8 const anmIdx[10 + 2 /* padding */] = { - 0x00, - 0xBA, - 0x00, - 0xB8, - 0x00, - 0xBB, - 0x00, - 0xBC, - 0x00, - 0xB9, - /* padding */ - 0x00, - 0x00, +SECTION_RODATA static u16 const anmIdx[] = { + 0x00BA, + 0x00B8, + 0x00BB, + 0x00BC, + 0x00B9, }; COMPILER_STRIP_GATE(0x803919D8, &anmIdx); @@ -1796,8 +1763,8 @@ SECTION_RODATA static f32 const underOffsetY[3] = { COMPILER_STRIP_GATE(0x803919F0, &underOffsetY); /* 803919FC-80391A08 01E05C 000C+00 1/1 0/0 0/0 .rodata hsVec$28749 */ -SECTION_RODATA static u8 const hsVec[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, +SECTION_RODATA static Vec const hsVec = { + 0.0f, 0.0f, 5.0f }; COMPILER_STRIP_GATE(0x803919FC, &hsVec); @@ -1891,22 +1858,22 @@ COMPILER_STRIP_GATE(0x80391BA0, &effName_39419); #pragma pop /* 80391BAC-80391BB8 01E20C 000C+00 1/1 0/0 0/0 .rodata smokeParticleScale$39643 */ -SECTION_RODATA static u8 const smokeParticleScale_39643[12] = { - 0x3F, 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, +SECTION_RODATA static Vec const smokeParticleScale_39643 = { + 0.69999999f, 0.69999999f, 0.69999999f }; COMPILER_STRIP_GATE(0x80391BAC, &smokeParticleScale_39643); /* 80391BB8-80391BC4 01E218 000C+00 1/1 0/0 0/0 .rodata wolfWaterCenterScale$39644 */ -SECTION_RODATA static u8 const wolfWaterCenterScale[12] = { - 0x3F, 0x99, 0x99, 0x9A, 0x3F, 0x99, 0x99, 0x9A, 0x3F, 0x99, 0x99, 0x9A, +SECTION_RODATA static Vec const wolfWaterCenterScale = { + 1.2f, 1.2f, 1.2f }; COMPILER_STRIP_GATE(0x80391BB8, &wolfWaterCenterScale); /* 80391BC4-80391BD0 01E224 000C+00 0/1 0/0 0/0 .rodata waterScale$39762 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const waterScale_39762[12] = { - 0x3F, 0x14, 0x7A, 0xE1, 0x3F, 0x14, 0x7A, 0xE1, 0x3F, 0x14, 0x7A, 0xE1, +SECTION_RODATA static Vec const waterScale_39762 = { + 0.57999998f, 0.57999998f, 0.57999998f }; COMPILER_STRIP_GATE(0x80391BC4, &waterScale_39762); #pragma pop @@ -1914,8 +1881,8 @@ COMPILER_STRIP_GATE(0x80391BC4, &waterScale_39762); /* 80391BD0-80391BDC 01E230 000C+00 0/1 0/0 0/0 .rodata waterCenterScale$39763 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const waterCenterScale[12] = { - 0x3F, 0x99, 0x99, 0x9A, 0x3F, 0x99, 0x99, 0x9A, 0x3F, 0x99, 0x99, 0x9A, +SECTION_RODATA static Vec const waterCenterScale = { + 1.2f, 1.2f, 1.2f }; COMPILER_STRIP_GATE(0x80391BD0, &waterCenterScale); #pragma pop @@ -1923,8 +1890,8 @@ COMPILER_STRIP_GATE(0x80391BD0, &waterCenterScale); /* 80391BDC-80391BE8 01E23C 000C+00 0/1 0/0 0/0 .rodata waterSmokeScale$39764 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const waterSmokeScale[12] = { - 0x3F, 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, +SECTION_RODATA static Vec const waterSmokeScale = { + 0.69999999f, 0.69999999f, 0.69999999f }; COMPILER_STRIP_GATE(0x80391BDC, &waterSmokeScale); #pragma pop @@ -1932,8 +1899,8 @@ COMPILER_STRIP_GATE(0x80391BDC, &waterSmokeScale); /* 80391BE8-80391BF4 01E248 000C+00 0/1 0/0 0/0 .rodata smokeParticleScale$39891 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const smokeParticleScale_39891[12] = { - 0x3F, 0x4C, 0xCC, 0xCD, 0x3F, 0x4C, 0xCC, 0xCD, 0x3F, 0x4C, 0xCC, 0xCD, +SECTION_RODATA static Vec const smokeParticleScale_39891 = { + 0.8f, 0.8f, 0.8f }; COMPILER_STRIP_GATE(0x80391BE8, &smokeParticleScale_39891); #pragma pop @@ -1941,8 +1908,8 @@ COMPILER_STRIP_GATE(0x80391BE8, &smokeParticleScale_39891); /* 80391BF4-80391C00 01E254 000C+00 0/1 0/0 0/0 .rodata waterScale$39892 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const waterScale_39892[12] = { - 0x3F, 0xA0, 0x00, 0x00, 0x3F, 0xA0, 0x00, 0x00, 0x3F, 0xA0, 0x00, 0x00, +SECTION_RODATA static Vec const waterScale_39892 = { + 1.25f, 1.25f, 1.25f }; COMPILER_STRIP_GATE(0x80391BF4, &waterScale_39892); #pragma pop @@ -1950,8 +1917,8 @@ COMPILER_STRIP_GATE(0x80391BF4, &waterScale_39892); /* 80391C00-80391C0C 01E260 000C+00 0/1 0/0 0/0 .rodata wolfSmokeScale$39893 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const wolfSmokeScale[12] = { - 0x3F, 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, +SECTION_RODATA static Vec const wolfSmokeScale = { + 0.69999999f, 0.69999999f, 0.69999999f }; COMPILER_STRIP_GATE(0x80391C00, &wolfSmokeScale); #pragma pop @@ -1959,8 +1926,8 @@ COMPILER_STRIP_GATE(0x80391C00, &wolfSmokeScale); /* 80391C0C-80391C18 01E26C 000C+00 0/1 0/0 0/0 .rodata shikoScale$40012 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const shikoScale[12] = { - 0x3F, 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, +SECTION_RODATA static Vec const shikoScale = { + 0.69999999f, 0.69999999f, 0.69999999f }; COMPILER_STRIP_GATE(0x80391C0C, &shikoScale); #pragma pop @@ -1968,8 +1935,8 @@ COMPILER_STRIP_GATE(0x80391C0C, &shikoScale); /* 80391C18-80391C24 01E278 000C+00 0/1 0/0 0/0 .rodata pushedSlip$40013 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const pushedSlip[12] = { - 0x3F, 0x4C, 0xCC, 0xCD, 0x3F, 0x4C, 0xCC, 0xCD, 0x3F, 0x4C, 0xCC, 0xCD, +SECTION_RODATA static Vec const pushedSlip = { + 0.8f, 0.8f, 0.8f }; COMPILER_STRIP_GATE(0x80391C18, &pushedSlip); #pragma pop @@ -1977,23 +1944,23 @@ COMPILER_STRIP_GATE(0x80391C18, &pushedSlip); /* 80391C24-80391C30 01E284 000C+00 0/1 0/0 0/0 .rodata loseScale$40014 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const loseScale[12] = { - 0x3F, 0x8C, 0xCC, 0xCD, 0x3F, 0x8C, 0xCC, 0xCD, 0x3F, 0x8C, 0xCC, 0xCD, +SECTION_RODATA static Vec const loseScale = { + 1.1f, 1.1f, 1.1f }; COMPILER_STRIP_GATE(0x80391C24, &loseScale); #pragma pop /* 80391C30-80391C3C 01E290 000C+00 1/1 0/0 0/0 .rodata releaeScale$40567 */ -SECTION_RODATA static u8 const releaeScale[12] = { - 0x3F, 0x4C, 0xCC, 0xCD, 0x3F, 0x4C, 0xCC, 0xCD, 0x3F, 0x4C, 0xCC, 0xCD, +SECTION_RODATA static Vec const releaeScale = { + 0.8f, 0.8f, 0.8f, }; COMPILER_STRIP_GATE(0x80391C30, &releaeScale); /* 80391C3C-80391C48 01E29C 000C+00 0/1 0/0 0/0 .rodata lightAParticleScale$40829 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lightAParticleScale[12] = { - 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x95, 0xE3, 0x54, 0x3F, 0x80, 0x00, 0x00, +SECTION_RODATA static Vec const lightAParticleScale = { + 1.0f, 1.171f, 1.0f }; COMPILER_STRIP_GATE(0x80391C3C, &lightAParticleScale); #pragma pop @@ -2001,8 +1968,8 @@ COMPILER_STRIP_GATE(0x80391C3C, &lightAParticleScale); /* 80391C48-80391C54 01E2A8 000C+00 0/1 0/0 0/0 .rodata lightALocalTrans$40830 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const lightALocalTrans[12] = { - 0x42, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const lightALocalTrans = { + 68.0f, 0.0f, 0.0f }; COMPILER_STRIP_GATE(0x80391C48, &lightALocalTrans); #pragma pop @@ -2010,8 +1977,8 @@ COMPILER_STRIP_GATE(0x80391C48, &lightALocalTrans); /* 80391C54-80391C60 01E2B4 000C+00 0/1 0/0 0/0 .rodata localOffset$40952 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const localOffset_40952[12] = { - 0x00, 0x00, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, +SECTION_RODATA static Vec const localOffset_40952 = { + 0.0f, -10.0f, -10.0f }; COMPILER_STRIP_GATE(0x80391C54, &localOffset_40952); #pragma pop @@ -2019,8 +1986,8 @@ COMPILER_STRIP_GATE(0x80391C54, &localOffset_40952); /* 80391C60-80391C6C 01E2C0 000C+00 0/1 0/0 0/0 .rodata localScale0$40953 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const localScale0[12] = { - 0x3F, 0x33, 0x33, 0x33, 0x3F, 0x59, 0x99, 0x9A, 0x3F, 0xC0, 0x00, 0x00, +SECTION_RODATA static Vec const localScale0 = { + 0.69999999f, 0.85f, 1.5f }; COMPILER_STRIP_GATE(0x80391C60, &localScale0); #pragma pop @@ -2028,8 +1995,8 @@ COMPILER_STRIP_GATE(0x80391C60, &localScale0); /* 80391C6C-80391C78 01E2CC 000C+00 0/1 0/0 0/0 .rodata localScale1$40954 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const localScale1[12] = { - 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x59, 0x99, 0x9A, 0x3F, 0xC0, 0x00, 0x00, +SECTION_RODATA static Vec const localScale1 = { + 1.0f, 0.85f, 1.5f }; COMPILER_STRIP_GATE(0x80391C6C, &localScale1); #pragma pop @@ -2037,8 +2004,8 @@ COMPILER_STRIP_GATE(0x80391C6C, &localScale1); /* 80391C78-80391C84 01E2D8 000C+00 0/1 0/0 0/0 .rodata waterEffScale$41082 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const waterEffScale[12] = { - 0x3F, 0xC0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, +SECTION_RODATA static Vec const waterEffScale = { + 1.5f, 1.5f, 1.5f }; COMPILER_STRIP_GATE(0x80391C78, &waterEffScale); #pragma pop @@ -2046,9 +2013,9 @@ COMPILER_STRIP_GATE(0x80391C78, &waterEffScale); /* 80391C84-80391C9C 01E2E4 0018+00 0/1 0/0 0/0 .rodata leftTransNormal$41090 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const leftTransNormal[24] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const leftTransNormal[] = { + {0.0f, 0.0f, 0.0f}, + {0.0f, 30.0f, 0.0f}, }; COMPILER_STRIP_GATE(0x80391C84, &leftTransNormal); #pragma pop @@ -2056,10 +2023,11 @@ COMPILER_STRIP_GATE(0x80391C84, &leftTransNormal); /* 80391C9C-80391CCC 01E2FC 0030+00 0/1 0/0 0/0 .rodata leftTransLight$41095 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const leftTransLight[48] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x0C, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const leftTransLight[] = { + {0.0f, 0.0f, 0.0f}, + {0.0f, 0.0f, 0.0f}, + {0.0f, 35.0f, 0.0f}, + {0.0f, 0.0f, 0.0f}, }; COMPILER_STRIP_GATE(0x80391C9C, &leftTransLight); #pragma pop @@ -2067,8 +2035,8 @@ COMPILER_STRIP_GATE(0x80391C9C, &leftTransLight); /* 80391CCC-80391CD8 01E32C 000C+00 0/1 0/0 0/0 .rodata effNameLarge$41096 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const effNameLarge[12] = { - 0x0B, 0xA5, 0x0B, 0xA6, 0x0B, 0xA7, 0x0B, 0xA8, 0x0B, 0xA9, 0x0B, 0xAA, +SECTION_RODATA static u16 const effNameLarge[] = { + 0x0BA5, 0x0BA6, 0x0BA7, 0x0BA8, 0x0BA9, 0x0BAA, }; COMPILER_STRIP_GATE(0x80391CCC, &effNameLarge); #pragma pop @@ -2076,12 +2044,13 @@ COMPILER_STRIP_GATE(0x80391CCC, &effNameLarge); /* 80391CD8-80391D20 01E338 0048+00 0/1 0/0 0/0 .rodata leftTransLarge$41100 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const leftTransLarge[72] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x42, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x34, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const leftTransLarge[] = { + {0.0f, 0.0f, 0.0f}, + {0.0f, 35.0f, 0.0f}, + {0.0f, 0.0f, 0.0f}, + {0.0f, 45.0f, 0.0f}, + {0.0f, 30.0f, 0.0f}, + {0.0f, 50.0f, 0.0f}, }; COMPILER_STRIP_GATE(0x80391CD8, &leftTransLarge); #pragma pop @@ -2089,16 +2058,16 @@ COMPILER_STRIP_GATE(0x80391CD8, &leftTransLarge); /* 80391D20-80391D38 01E380 0018+00 0/1 0/0 0/0 .rodata leftTransWater$41105 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const leftTransWater[24] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const leftTransWater[] = { + {0.0f, 0.0f, 0.0f}, + {0.0f, 0.0f, 0.0f}, }; COMPILER_STRIP_GATE(0x80391D20, &leftTransWater); #pragma pop /* 80391D38-80391D44 01E398 000C+00 1/1 0/0 0/0 .rodata effName$41208 */ -SECTION_RODATA static u8 const effName_41208[12] = { - 0x09, 0xD0, 0x09, 0xD1, 0x09, 0xD2, 0x09, 0xD3, 0x09, 0xD4, 0x09, 0xD5, +SECTION_RODATA static u16 const effName_41208[] = { + 0x09D0, 0x09D1, 0x09D2, 0x09D3, 0x09D4, 0x09D5, }; COMPILER_STRIP_GATE(0x80391D38, &effName_41208); @@ -2106,16 +2075,16 @@ COMPILER_STRIP_GATE(0x80391D38, &effName_41208); static GXColorS10 const swordUpColor[2] = {{13, 10, 2, 255}, {28, 16, 4, 255}}; /* 80391D54-80391D60 01E3B4 000C+00 1/1 0/0 0/0 .rodata swordCutSplashScale$41755 */ -SECTION_RODATA static u8 const swordCutSplashScale[12] = { - 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x19, 0x99, 0x9A, +SECTION_RODATA static Vec const swordCutSplashScale = { + 0.6f, 0.6f, 0.6f }; COMPILER_STRIP_GATE(0x80391D54, &swordCutSplashScale); /* 80391D60-80391D6C 01E3C0 000C+00 0/1 0/0 0/0 .rodata fairyScale$41951 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const fairyScale[12] = { - 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const fairyScale = { + 0.5f, 0.5f, 0.5f }; COMPILER_STRIP_GATE(0x80391D60, &fairyScale); #pragma pop @@ -2123,8 +2092,8 @@ COMPILER_STRIP_GATE(0x80391D60, &fairyScale); /* 80391D6C-80391D78 01E3CC 000C+00 0/1 0/0 0/0 .rodata chuchuLocalOffset$41952 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const chuchuLocalOffset[12] = { - 0x00, 0x00, 0x00, 0x00, 0x41, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const chuchuLocalOffset = { + 0.0f, 15.0f, 0.0f }; COMPILER_STRIP_GATE(0x80391D6C, &chuchuLocalOffset); #pragma pop @@ -2132,34 +2101,41 @@ COMPILER_STRIP_GATE(0x80391D6C, &chuchuLocalOffset); /* 80391D78-80391D84 01E3D8 000C+00 0/1 0/0 0/0 .rodata chuchuScale$41953 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const chuchuScale[12] = { - 0x3F, 0x4C, 0xCC, 0xCD, 0x3F, 0x4C, 0xCC, 0xCD, 0x3F, 0x4C, 0xCC, 0xCD, +SECTION_RODATA static Vec const chuchuScale = { + 0.8f, 0.8f, 0.8f }; COMPILER_STRIP_GATE(0x80391D78, &chuchuScale); #pragma pop /* 80391D84-80391D94 01E3E4 0010+00 1/1 0/0 0/0 .rodata effJoint$42070 */ -SECTION_RODATA static u8 const effJoint[16] = { - 0x00, 0x07, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x22, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, 0x00, 0x03, +SECTION_RODATA static u16 const effJoint[2][4] = { + {0x0007, 0x000C, 0x0010, 0x0022}, + {0x0003, 0x0003, 0x0003, 0x0003}, }; COMPILER_STRIP_GATE(0x80391D84, &effJoint); /* 80391D94-80391DF4 01E3F4 0060+00 1/1 0/0 0/0 .rodata effOffset$42071 */ -SECTION_RODATA static u8 const effOffset[96] = { - 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x70, 0x00, 0x00, - 0x40, 0x40, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, - 0x41, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xA0, 0x00, 0x00, 0xC0, 0xE0, 0x00, 0x00, - 0x41, 0x70, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, 0xC1, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xC1, 0xC8, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, 0x41, 0x70, 0x00, 0x00, 0xC0, 0xA0, 0x00, 0x00, - 0x41, 0xA0, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0xC1, 0xC8, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, +SECTION_RODATA static Vec const effOffset[2][4] = { + { + {-5.0f, 0.0f, 0.0f}, + {15.0f, 3.0f, 5.0f}, + {4.0f, -10.0f, 15.0f}, + {0.0f, -5.0f, -7.0f}, + }, + { + {15.0f, 5.0f, -20.0f}, + {0.0f, -25.0f, 5.0f}, + {15.0f, -5.0f, 20.0f}, + {10.0f, -25.0f, -10.0f}, + } }; COMPILER_STRIP_GATE(0x80391D94, &effOffset); /* 80391DF4-80391E00 01E454 000C+00 0/1 0/0 0/0 .rodata effScale$42225 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const effScale[12] = { - 0x3F, 0x80, 0x00, 0x00, 0x3F, 0xE6, 0x66, 0x66, 0x3F, 0x80, 0x00, 0x00, +SECTION_RODATA static Vec const effScale = { + 1.0f, 1.8f, 1.0f }; COMPILER_STRIP_GATE(0x80391DF4, &effScale); #pragma pop @@ -2167,8 +2143,8 @@ COMPILER_STRIP_GATE(0x80391DF4, &effScale); /* 80391E00-80391E0C 01E460 000C+00 0/1 0/0 0/0 .rodata wolfEffScale$42226 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const wolfEffScale[12] = { - 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, +SECTION_RODATA static Vec const wolfEffScale = { + 1.0f, 1.0f, 1.5f }; COMPILER_STRIP_GATE(0x80391E00, &wolfEffScale); #pragma pop @@ -2176,33 +2152,33 @@ COMPILER_STRIP_GATE(0x80391E00, &wolfEffScale); /* 80391E0C-80391E18 01E46C 000C+00 0/1 0/0 0/0 .rodata offsetPos$42227 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const offsetPos[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, +SECTION_RODATA static Vec const offsetPos = { + 0.0f, 0.0f, -10.0f }; COMPILER_STRIP_GATE(0x80391E0C, &offsetPos); #pragma pop /* 80391E18-80391E24 01E478 000C+00 1/1 0/0 0/0 .rodata localFootOffset$45107 */ -SECTION_RODATA static u8 const localFootOffset[12] = { - 0x40, 0xC0, 0x00, 0x00, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const localFootOffset = { + 6.0f, -5.0f, 0.0f }; COMPILER_STRIP_GATE(0x80391E18, &localFootOffset); /* 80391E24-80391E30 01E484 000C+00 1/1 0/0 0/0 .rodata frontOffset$45186 */ -SECTION_RODATA static u8 const frontOffset[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, +SECTION_RODATA static Vec const frontOffset = { + 0.0f, 0.0f, 50.0f }; COMPILER_STRIP_GATE(0x80391E24, &frontOffset); /* 80391E30-80391E3C 01E490 000C+00 1/1 0/0 0/0 .rodata wolfChainBaseOffset$45513 */ -SECTION_RODATA static u8 const wolfChainBaseOffset[12] = { - 0x41, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x40, 0x00, 0x00, +SECTION_RODATA static Vec const wolfChainBaseOffset = { + 22.0f, 0.0f, -12.0f }; COMPILER_STRIP_GATE(0x80391E30, &wolfChainBaseOffset); /* 80391E3C-80391E48 01E49C 000C+00 1/1 0/0 0/0 .rodata wolfChainVec$45514 */ -SECTION_RODATA static u8 const wolfChainVec[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC1, 0x10, 0x00, 0x00, +SECTION_RODATA static Vec const wolfChainVec = { + 0.0f, 0.0f, -9.0f }; COMPILER_STRIP_GATE(0x80391E3C, &wolfChainVec); @@ -2252,23 +2228,21 @@ static const daAlink_WCutParamTbl dataTabl[] = { }; /* 80391EC0-80391ECC 01E520 000C+00 1/1 0/0 0/0 .rodata arm1Vec$56040 */ -SECTION_RODATA static u8 const arm1Vec[12] = { - 0x41, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const arm1Vec = { + 29.0f, 0.0f, 0.0f }; COMPILER_STRIP_GATE(0x80391EC0, &arm1Vec); /* 80391ECC-80391ED8 01E52C 000C+00 1/1 0/0 0/0 .rodata arm2Vec$56041 */ -SECTION_RODATA static u8 const arm2Vec[12] = { - 0x41, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const arm2Vec = { + 26.5f, 0.0f, 0.0f }; COMPILER_STRIP_GATE(0x80391ECC, &arm2Vec); /* 80453228-8045322C 001828 0004+00 1/1 0/0 0/0 .sdata2 armJointTable$56027 */ -SECTION_SDATA2 static u8 armJointTable[4] = { - 0x00, - 0x07, - 0x00, - 0x0C, +static const u16 armJointTable[] = { + 0x0007, + 0x000C, }; /* 800A2710-800A29DC 09D050 02CC+00 1/1 0/0 0/0 .text setArmMatrix__9daAlink_cFv */ @@ -2279,8 +2253,8 @@ void daAlink_c::setArmMatrix() { /* 80391ED8-80391EE4 01E538 000C+00 0/1 0/0 0/0 .rodata leg1Vec$56150 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const leg1Vec[12] = { - 0x41, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const leg1Vec = { + 30.0f, 0.0f, 0.0f }; COMPILER_STRIP_GATE(0x80391ED8, &leg1Vec); #pragma pop @@ -2288,8 +2262,8 @@ COMPILER_STRIP_GATE(0x80391ED8, &leg1Vec); /* 80391EE4-80391EF0 01E544 000C+00 0/1 0/0 0/0 .rodata leg2Vec$56151 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const leg2Vec[12] = { - 0x42, 0x1D, 0x74, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const leg2Vec = { + 39.363499f, 0.0f, 0.0f }; COMPILER_STRIP_GATE(0x80391EE4, &leg2Vec); #pragma pop @@ -2297,18 +2271,16 @@ COMPILER_STRIP_GATE(0x80391EE4, &leg2Vec); /* 80391EF0-80391EFC 01E550 000C+00 0/1 0/0 0/0 .rodata footVec$56152 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const footVec[12] = { - 0x41, 0x62, 0xE1, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const footVec = { + 14.18f, 0.0f, 0.0f }; COMPILER_STRIP_GATE(0x80391EF0, &footVec); #pragma pop /* 8045322C-80453230 00182C 0004+00 1/1 0/0 0/0 .sdata2 footJointTable$56137 */ -SECTION_SDATA2 static u8 footJointTable[4] = { - 0x00, - 0x12, - 0x00, - 0x17, +static const u16 footJointTable[] = { + 0x0012, + 0x0017, }; /* 800A29DC-800A2C24 09D31C 0248+00 1/1 0/0 0/0 .text setFootMatrix__9daAlink_cFv */ @@ -2342,8 +2314,8 @@ void daAlink_c::setLegAngle(f32 param_0, daAlink_footData_c* param_1, s16* param /* 80391EFC-80391F08 01E55C 000C+00 0/1 0/0 0/0 .rodata localLeftFootOffset$56542 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const localLeftFootOffset[12] = { - 0xC0, 0x40, 0x00, 0x00, 0x41, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const localLeftFootOffset = { + -3.0f, 13.0f, 0.0f }; COMPILER_STRIP_GATE(0x80391EFC, &localLeftFootOffset); #pragma pop @@ -2351,8 +2323,8 @@ COMPILER_STRIP_GATE(0x80391EFC, &localLeftFootOffset); /* 80391F08-80391F14 01E568 000C+00 0/1 0/0 0/0 .rodata localRightFootOffset$56543 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const localRightFootOffset[12] = { - 0xC0, 0x40, 0x00, 0x00, 0xC1, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const localRightFootOffset = { + -3.0f, -13.0f, 0.0f }; COMPILER_STRIP_GATE(0x80391F08, &localRightFootOffset); #pragma pop @@ -2360,8 +2332,8 @@ COMPILER_STRIP_GATE(0x80391F08, &localRightFootOffset); /* 80391F14-80391F20 01E574 000C+00 0/1 0/0 0/0 .rodata localLeftToeOffset$56544 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const localLeftToeOffset[12] = { - 0x41, 0x20, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const localLeftToeOffset = { + 10.0f, 5.0f, 0.0f }; COMPILER_STRIP_GATE(0x80391F14, &localLeftToeOffset); #pragma pop @@ -2369,8 +2341,8 @@ COMPILER_STRIP_GATE(0x80391F14, &localLeftToeOffset); /* 80391F20-80391F2C 01E580 000C+00 0/1 0/0 0/0 .rodata localRightToeOffset$56545 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const localRightToeOffset[12] = { - 0x41, 0x20, 0x00, 0x00, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const localRightToeOffset = { + 10.0f, -5.0f, 0.0f }; COMPILER_STRIP_GATE(0x80391F20, &localRightToeOffset); #pragma pop @@ -2387,9 +2359,9 @@ void daAlink_c::footBgCheck() { } /* 80391F2C-80391F44 01E58C 0018+00 1/1 0/0 0/0 .rodata localHandPos$56752 */ -SECTION_RODATA static u8 const localHandPos[24] = { - 0x41, 0xB0, 0xC5, 0x60, 0x40, 0xAF, 0xC1, 0x20, 0x00, 0x00, 0x00, 0x00, - 0xC1, 0xAF, 0x33, 0x80, 0x40, 0xB0, 0xCF, 0xDF, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const localHandPos[] = { + {22.096375f, 5.4923248f, 0.0f}, + {-21.900146f, 5.5253749f, 0.0f}, }; COMPILER_STRIP_GATE(0x80391F2C, &localHandPos); @@ -2642,6 +2614,45 @@ SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { /* 803AF99C-803AF9A8 00CABC 000A+02 2/2 0/0 0/0 .data l_peepEventName */ SECTION_DATA static const char l_peepEventName[10] = "PEEP_HOLE"; +/* 80425514-80425520 052234 000C+00 32/35 0/0 0/0 .bss l_waitBaseAnime */ +static cXyz l_waitBaseAnime(1.24279f, 102.0005f, 5.0f); + +/* 8042552C-80425538 05224C 000C+00 2/3 0/0 0/0 .bss l_ironBallBaseAnime */ +static cXyz l_ironBallBaseAnime(-4.248938f, 89.0f, -5.267045f); + +/* 80425544-80425550 052264 000C+00 15/17 0/0 0/0 .bss l_halfAtnWaitBaseAnime */ +static cXyz l_halfAtnWaitBaseAnime(3.5f, 97.0f, -7.0f); + +/* 8042555C-80425568 05227C 000C+00 1/2 0/0 0/0 .bss l_rWaitBaseAnime */ +static cXyz l_rWaitBaseAnime(4.313951f, 93.94436f, -5.207283f); + +/* 80425574-80425580 052294 000C+00 0/1 0/0 0/0 .bss l_lWaitBaseAnime */ +static cXyz l_lWaitBaseAnime(-4.300988f, 93.95595f, -5.218504f); + +/* 8042558C-80425598 0522AC 000C+00 3/5 0/0 0/0 .bss l_horseBaseAnime */ +static cXyz l_horseBaseAnime(-l_waitBaseAnime.x, 225.7f, 1.81f - l_waitBaseAnime.z); + +/* 804255A4-804255B0 0522C4 000C+00 3/5 0/0 0/0 .bss l_boarBaseAnime */ +static cXyz l_boarBaseAnime(-l_waitBaseAnime.x, 186.17f, -20.29f - l_waitBaseAnime.z); + +/* 804255BC-804255C8 0522DC 000C+00 1/3 0/0 0/0 .bss l_localHorseRidePos */ +static cXyz l_localHorseRidePos(-68.20898f, 41.60992f, 0.883789f); + +/* 804255D4-804255E0 0522F4 000C+00 1/3 0/0 0/0 .bss l_localBoarRidePos */ +static cXyz l_localBoarRidePos(0.0f, 15.0f, 0.0f); + +/* 804255EC-804255F8 05230C 000C+00 2/3 0/0 0/0 .bss l_canoeBaseAnime */ +static cXyz l_canoeBaseAnime(1.24279f - l_waitBaseAnime.x, 56.0f, -72.0f - l_waitBaseAnime.z); + +/* 80425604-80425610 052324 000C+00 0/1 0/0 0/0 .bss l_sumouBaseAnimeSp */ +static cXyz l_sumouBaseAnimeSp(0.0f, 0.0f, 32.0f - l_waitBaseAnime.z); + +/* 8042561C-80425628 05233C 000C+00 37/39 0/0 0/0 .bss l_wolfBaseAnime */ +static cXyz l_wolfBaseAnime(1.0f, 88.63934f, -28.49793f); + +/* 80425634-80425640 052354 000C+00 2/3 0/0 0/0 .bss l_wolfRopeBaseAnime */ +static cXyz l_wolfRopeBaseAnime(0.115164f, 68.3363f, -7.667817f); + daAlink_procInitTable daAlink_c::m_procInitTable[] = { { &daAlink_c::procPreActionUnequip, 0x21 }, { &daAlink_c::procServiceWait, 0x10000085 }, @@ -3156,90 +3167,88 @@ static dCcD_SrcCps l_atCpsSrc = { }; /* 803B2868-803B2880 00F988 0018+00 1/0 0/0 0/0 .data l_jntColPos0 */ -SECTION_DATA static u8 l_jntColPos0[24] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec l_jntColPos0[] = { + {0.0f, 0.0f, 0.0f}, + {44.0f, 0.0f, 0.0f} }; /* 803B2880-803B288C 00F9A0 000C+00 1/0 0/0 0/0 .data l_jntColPos1 */ -SECTION_DATA static u8 l_jntColPos1[12] = { - 0x00, 0x00, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec l_jntColPos1 = { + 0.0f, -10.0f, 0.0f }; /* 803B288C-803B28A4 00F9AC 0018+00 1/0 0/0 0/0 .data l_jntColPos2 */ -SECTION_DATA static u8 l_jntColPos2[24] = { - 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec l_jntColPos2[] = { + {-5.0f, 0.0f, 0.0f}, + {28.0f, 0.0f, 0.0f} }; /* 803B28A4-803B28BC 00F9C4 0018+00 1/0 0/0 0/0 .data l_jntColPos4 */ -SECTION_DATA static u8 l_jntColPos4[24] = { - 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec l_jntColPos4[] = { + {-4.0f, 0.0f, 0.0f}, + {28.0f, 0.0f, 0.0f} }; /* 803B28BC-803B28C8 00F9DC 000C+00 1/0 0/0 0/0 .data l_jntColPos6 */ -SECTION_DATA static u8 l_jntColPos6[12] = { - 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; +SECTION_DATA static Vec l_jntColPos6 = { 8.0f, 0.0f, 0.0f }; /* 803B28C8-803B28E0 00F9E8 0018+00 1/0 0/0 0/0 .data l_jntColPos8 */ -SECTION_DATA static u8 l_jntColPos8[24] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec l_jntColPos8[] = { + {0.0f, 0.0f, 0.0f}, + {38.0f, 0.0f, 0.0f} }; /* 803B28E0-803B28F8 00FA00 0018+00 1/0 0/0 0/0 .data l_jntColPos9 */ -SECTION_DATA static u8 l_jntColPos9[24] = { - 0x00, 0x00, 0x00, 0x00, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec l_jntColPos9[] = { + {0.0f, -5.0f, 0.0f}, + {35.0f, 0.0f, 0.0f} }; /* 803B28F8-803B2910 00FA18 0018+00 1/0 0/0 0/0 .data l_jntColPos10 */ -SECTION_DATA static u8 l_jntColPos10[24] = { - 0x00, 0x00, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec l_jntColPos10[] = { + {0.0f, 5.0f, 0.0f}, + {35.0f, 0.0f, 0.0f} }; /* 803B2910-803B2928 00FA30 0018+00 1/0 0/0 0/0 .data l_jntColPos11 */ -SECTION_DATA static u8 l_jntColPos11[24] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x40, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec l_jntColPos11[] = { + {0.0f, 0.0f, 0.0f}, + {48.0f, 2.0f, 0.0f} }; /* 803B2928-803B2940 00FA48 0018+00 1/0 0/0 0/0 .data l_jntColPos12 */ -SECTION_DATA static u8 l_jntColPos12[24] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec l_jntColPos12[] = { + {0.0f, 0.0f, 0.0f}, + {48.0f, -2.0f, 0.0f} }; /* 803B2940-803B2958 00FA60 0018+00 1/0 0/0 0/0 .data l_jntColPos13 */ -SECTION_DATA static u8 l_jntColPos13[24] = { - 0x00, 0x00, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec l_jntColPos13[] = { + {0.0f, 5.0f, 0.0f}, + {22.0f, 0.0f, 0.0f} }; /* 803B2958-803B2970 00FA78 0018+00 1/0 0/0 0/0 .data l_jntColPos14 */ -SECTION_DATA static u8 l_jntColPos14[24] = { - 0x00, 0x00, 0x00, 0x00, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec l_jntColPos14[] = { + {0.0f, -5.0f, 0.0f}, + {22.0f, 0.0f, 0.0f} }; /* 803B2970-803B2988 00FA90 0018+00 1/0 0/0 0/0 .data l_jntColPos15 */ -SECTION_DATA static u8 l_jntColPos15[24] = { - 0xC1, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x88, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, +SECTION_DATA static Vec l_jntColPos15[] = { + {-15.0f, 0.0f, 17.0f}, + {0.0f, 0.0f, 1.0f} }; /* 803B2988-803B29A0 00FAA8 0018+00 1/0 0/0 0/0 .data l_jntColPos16 */ -SECTION_DATA static u8 l_jntColPos16[24] = { - 0x41, 0x50, 0x00, 0x00, 0x41, 0x50, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec l_jntColPos16[] = { + {13.0f, 13.0f, -8.0f}, + {0.0f, 1.0f, 0.0f} }; /* 803B29A0-803B29AC 00FAC0 000C+00 1/0 0/0 0/0 .data l_jntColPos17 */ -SECTION_DATA static u8 l_jntColPos17[12] = { - 0xC1, 0x70, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00, 0xC1, 0xF0, 0x00, 0x00, +SECTION_DATA static Vec l_jntColPos17 = { + -15.0f, -10.0f, -30.0f }; /* 803B29AC-803B2A84 -00001 00D8+00 1/1 0/0 0/0 .data l_jntColData */ @@ -3249,186 +3258,186 @@ static dJntColData_c l_jntColData[] = { 0, 1, 18.0f, - (Vec*)l_jntColPos0, + l_jntColPos0, }, { 0, 0, 4, 16.0f, - (Vec*)l_jntColPos1, + &l_jntColPos1, }, { 1, 0, 7, 7.0f, - (Vec*)l_jntColPos2, + l_jntColPos2, }, { 1, 0, 12, 7.0f, - (Vec*)l_jntColPos2, + l_jntColPos2, }, { 1, 0, 8, 6.0f, - (Vec*)l_jntColPos4, + l_jntColPos4, }, { 1, 0, 13, 6.0f, - (Vec*)l_jntColPos4, + l_jntColPos4, }, { 0, 0, 9, 6.0f, - (Vec*)l_jntColPos6, + &l_jntColPos6, }, { 0, 0, 14, 6.0f, - (Vec*)l_jntColPos6, + &l_jntColPos6, }, { 1, 0, 16, 18.0f, - (Vec*)l_jntColPos8, + l_jntColPos8, }, { 1, 0, 18, 8.0f, - (Vec*)l_jntColPos9, + l_jntColPos9, }, { 1, 0, 23, 8.0f, - (Vec*)l_jntColPos10, + l_jntColPos10, }, { 1, 0, 19, 7.0f, - (Vec*)l_jntColPos11, + l_jntColPos11, }, { 1, 0, 24, 7.0f, - (Vec*)l_jntColPos12, + l_jntColPos12, }, { 1, 0, 20, 6.0f, - (Vec*)l_jntColPos13, + l_jntColPos13, }, { 1, 0, 25, 6.0f, - (Vec*)l_jntColPos14, + l_jntColPos14, }, { 2, 3, 15, 40.0f, - (Vec*)l_jntColPos15, + l_jntColPos15, }, { 2, 3, 5, 40.0f, - (Vec*)l_jntColPos16, + l_jntColPos16, }, { 0, 3, 15, 45.0f, - (Vec*)l_jntColPos17, + &l_jntColPos17, }, }; /* 803B2A84-803B2A9C 00FBA4 0018+00 1/0 0/0 0/0 .data l_wolfJntColPos0 */ -SECTION_DATA static u8 l_wolfJntColPos0[24] = { - 0xC1, 0xC8, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec l_wolfJntColPos0[] = { + {-25.0f, 20.0f, 0.0f}, + {80.0f, 0.0f, 0.0f} }; /* 803B2A9C-803B2AA8 00FBBC 000C+00 1/0 0/0 0/0 .data l_wolfJntColPos1 */ -SECTION_DATA static u8 l_wolfJntColPos1[12] = { - 0x40, 0xA0, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec l_wolfJntColPos1 = { + 5.0f, 3.0f, 0.0f }; /* 803B2AA8-803B2AC0 00FBC8 0018+00 1/0 0/0 0/0 .data l_wolfJntColPos2 */ -SECTION_DATA static u8 l_wolfJntColPos2[24] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x0C, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec l_wolfJntColPos2[] = { + {0.0f, 0.0f, 0.0f}, + {35.0f, 3.0f, 0.0f} }; /* 803B2AC0-803B2AD8 00FBE0 0018+00 1/0 0/0 0/0 .data l_wolfJntColPos4 */ -SECTION_DATA static u8 l_wolfJntColPos4[24] = { - 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec l_wolfJntColPos4[] = { + {0.0f, 2.0f, 0.0f}, + {30.0f, 0.0f, 0.0f} }; /* 803B2AD8-803B2AF0 00FBF8 0018+00 1/0 0/0 0/0 .data l_wolfJntColPos6 */ -SECTION_DATA static u8 l_wolfJntColPos6[24] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec l_wolfJntColPos6[] = { + {0.0f, 0.0f, 0.0f}, + {20.0f, 0.0f, 0.0f} }; /* 803B2AF0-803B2B08 00FC10 0018+00 1/0 0/0 0/0 .data l_wolfJntColPos8 */ -SECTION_DATA static u8 l_wolfJntColPos8[24] = { - 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x40, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec l_wolfJntColPos8[] = { + {0.0f, -2.0f, 0.0f}, + {12.0f, -2.0f, 0.0f} }; /* 803B2B08-803B2B20 00FC28 0018+00 1/0 0/0 0/0 .data l_wolfJntColPos10 */ -SECTION_DATA static u8 l_wolfJntColPos10[24] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x04, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec l_wolfJntColPos10[] = { + {0.0f, 0.0f, 0.0f}, + {33.0f, -2.0f, 0.0f} }; /* 803B2B20-803B2B38 00FC40 0018+00 1/0 0/0 0/0 .data l_wolfJntColPos12 */ -SECTION_DATA static u8 l_wolfJntColPos12[24] = { - 0xC0, 0xA0, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec l_wolfJntColPos12[] = { + {-5.0f, -2.0f, 0.0f}, + {15.0f, 0.0f, 0.0f} }; /* 803B2B38-803B2B50 00FC58 0018+00 1/0 0/0 0/0 .data l_wolfJntColPos14 */ -SECTION_DATA static u8 l_wolfJntColPos14[24] = { - 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec l_wolfJntColPos14[] = { + {-4.0f, 0.0f, 0.0f}, + {33.0f, 0.0f, 0.0f} }; /* 803B2B50-803B2B68 00FC70 0018+00 1/0 0/0 0/0 .data l_wolfJntColPos16 */ -SECTION_DATA static u8 l_wolfJntColPos16[24] = { - 0x00, 0x00, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x50, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec l_wolfJntColPos16[] = { + {0.0f, -3.0f, 0.0f}, + {13.0f, -3.0f, 0.0f} }; /* 803B2B68-803B2C40 -00001 00D8+00 1/1 0/0 0/0 .data l_wolfJntColData */ @@ -3438,206 +3447,207 @@ static dJntColData_c l_wolfJntColData[] = { 0, 1, 28.0f, - (Vec*)l_wolfJntColPos0, + l_wolfJntColPos0, }, { 0, 0, 4, 25.0f, - (Vec*)l_wolfJntColPos1, + &l_wolfJntColPos1, }, { 1, 0, 16, 10.0f, - (Vec*)l_wolfJntColPos2, + l_wolfJntColPos2, }, { 1, 0, 21, 10.0f, - (Vec*)l_wolfJntColPos2, + l_wolfJntColPos2, }, { 1, 0, 17, 6.0f, - (Vec*)l_wolfJntColPos4, + l_wolfJntColPos4, }, { 1, 0, 22, 6.0f, - (Vec*)l_wolfJntColPos4, + l_wolfJntColPos4, }, { 1, 0, 18, 4.0f, - (Vec*)l_wolfJntColPos6, + l_wolfJntColPos6, }, { 1, 0, 23, 4.0f, - (Vec*)l_wolfJntColPos6, + l_wolfJntColPos6, }, { 1, 0, 19, 4.0f, - (Vec*)l_wolfJntColPos8, + l_wolfJntColPos8, }, { 1, 0, 24, 4.0f, - (Vec*)l_wolfJntColPos8, + l_wolfJntColPos8, }, { 1, 0, 28, 11.0f, - (Vec*)l_wolfJntColPos10, + l_wolfJntColPos10, }, { 1, 0, 33, 11.0f, - (Vec*)l_wolfJntColPos10, + l_wolfJntColPos10, }, { 1, 0, 29, 7.0f, - (Vec*)l_wolfJntColPos12, + l_wolfJntColPos12, }, { 1, 0, 34, 7.0f, - (Vec*)l_wolfJntColPos12, + l_wolfJntColPos12, }, { 1, 0, 30, 5.0f, - (Vec*)l_wolfJntColPos14, + l_wolfJntColPos14, }, { 1, 0, 35, 5.0f, - (Vec*)l_wolfJntColPos14, + l_wolfJntColPos14, }, { 1, 0, 31, 6.0f, - (Vec*)l_wolfJntColPos16, + l_wolfJntColPos16, }, { 1, 0, 36, 5.0f, - (Vec*)l_wolfJntColPos16, + l_wolfJntColPos16, }, }; /* 803B2C40-803B2C50 00FD60 000D+03 0/1 0/0 0/0 .data defaultPortal$39238 */ #pragma push #pragma force_active on -SECTION_DATA static const char defaultPortal[13] = "POTAL_WARPIN"; +SECTION_DATA static char defaultPortal[13] = "POTAL_WARPIN"; #pragma pop /* 803B2C50-803B2C64 00FD70 0014+00 0/1 0/0 0/0 .data kBridgePortal$39239 */ #pragma push #pragma force_active on -SECTION_DATA static const char kBridgePortal[20] = "PORTAL_WARP_KBRIDGE"; +SECTION_DATA static char kBridgePortal[20] = "PORTAL_WARP_KBRIDGE"; #pragma pop /* 803B2C64-803B2C78 00FD84 0014+00 0/1 0/0 0/0 .data oBridgePortal$39240 */ #pragma push #pragma force_active on -SECTION_DATA static const char oBridgePortal[20] = "PORTAL_WARP_OBRIDGE"; +SECTION_DATA static char oBridgePortal[20] = "PORTAL_WARP_OBRIDGE"; #pragma pop /* 803B2C78-803B2C8C 00FD98 0014+00 0/1 0/0 0/0 .data volcBomPortal$39241 */ #pragma push #pragma force_active on -SECTION_DATA static const char volcBomPortal[20] = "PORTAL_WARP_BIGVOLC"; +SECTION_DATA static char volcBomPortal[20] = "PORTAL_WARP_BIGVOLC"; #pragma pop /* 803B2C8C-803B2CA4 00FDAC 0016+02 0/1 0/0 0/0 .data cannonPortal$39242 */ #pragma push #pragma force_active on -SECTION_DATA static const char cannonPortal[22] = "SKY_CANNON_WARP_START"; +SECTION_DATA static char cannonPortal[22] = "SKY_CANNON_WARP_START"; #pragma pop /* 803B2CEC-803B2D34 00FE0C 0048+00 1/2 0/0 0/0 .data m_fEffParamProc__9daAlink_c */ -SECTION_DATA u8 daAlink_c::m_fEffParamProc[72] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +EffParamProc daAlink_c::m_fEffParamProc[] = { + &daAlink_c::setEffectFrontRollParam, + &daAlink_c::setEffectSlipParam, + &daAlink_c::setEffectSmallLandParam, + &daAlink_c::setEffectRunParam, + &daAlink_c::setEffectLandParam, + &daAlink_c::setEffectSumouParam, }; /* 803B2D34-803B2D40 00FE54 000C+00 0/1 0/0 0/0 .data leftRotNormal$41087 */ #pragma push #pragma force_active on -SECTION_DATA static u8 leftRotNormal[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static s16 leftRotNormal[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, }; #pragma pop /* 803B2D40-803B2D58 00FE60 0018+00 0/1 0/0 0/0 .data leftRotLight$41092 */ #pragma push #pragma force_active on -SECTION_DATA static u8 leftRotLight[24] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static s16 leftRotLight[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, }; #pragma pop /* 803B2D58-803B2D7C 00FE78 0024+00 0/1 0/0 0/0 .data leftRotLarge$41097 */ #pragma push #pragma force_active on -SECTION_DATA static u8 leftRotLarge[36] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static s16 leftRotLarge[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, }; #pragma pop /* 803B2D7C-803B2D88 00FE9C 000C+00 0/1 0/0 0/0 .data leftRotWater$41102 */ #pragma push #pragma force_active on -SECTION_DATA static u8 leftRotWater[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static s16 leftRotWater[] = { + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, }; #pragma pop /* 803B2D88-803B2D94 00FEA8 000C+00 1/1 0/0 0/0 .data rodTopOffset$61388 */ -SECTION_DATA static u8 rodTopOffset[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_DATA static Vec rodTopOffset = { + 0.0f, 0.0f, 0.0f }; /* 803B2D94-803B2DA0 -00001 000C+00 1/1 0/0 0/0 .data bodyBrkName$69118 */ @@ -4060,7 +4070,7 @@ void daAlink_c::playerInit() { mZ2Link.setKanteraState(0); mProcID = 0x160; - m_swordBlur.m_blurTex = (void*)dComIfG_getObjectRes(l_arcName, 0x59); // blur.bti + m_swordBlur.m_blurTex = (ResTIMG*)dComIfG_getObjectRes(l_arcName, 0x59); // blur.bti J3DModelData* modelData = mpSwAModel->getModelData(); m_nSwordBtk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(l_arcName, 0x44); // al_swa.btk @@ -4363,14 +4373,6 @@ int daAlink_c::setStartProcInit() { return sp10; } -/* 80450FCC-80450FD0 0004CC 0004+00 1/1 0/0 0/0 .sbss bgWaitFlg$58404 */ -static s32 bgWaitFlg; - -/* 80450FD0-80450FD8 -00001 0008+00 2/2 0/0 0/0 .sbss None */ -/* 80450FD0 0001+00 data_80450FD0 None */ -/* 80450FD1 0007+00 data_80450FD1 None */ -static s8 struct_80450FD0; // init$ - #pragma push #pragma force_active on static u8 data_80450FD1; @@ -4849,8 +4851,8 @@ void daAlink_c::setWindSpeed() { /* 80391F44-80391F50 01E5A4 000C+00 0/1 0/0 0/0 .rodata localHeadCenter$59872 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const localHeadCenter[12] = { - 0x00, 0x00, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const localHeadCenter = { + 0.0f, -8.0f, 0.0f }; COMPILER_STRIP_GATE(0x80391F44, &localHeadCenter); #pragma pop @@ -4858,8 +4860,8 @@ COMPILER_STRIP_GATE(0x80391F44, &localHeadCenter); /* 80391F50-80391F5C 01E5B0 000C+00 0/1 0/0 0/0 .rodata localEye$59873 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const localEye[12] = { - 0x41, 0x40, 0x00, 0x00, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const localEye = { + 12.0f, -8.0f, 0.0f }; COMPILER_STRIP_GATE(0x80391F50, &localEye); #pragma pop @@ -4867,8 +4869,8 @@ COMPILER_STRIP_GATE(0x80391F50, &localEye); /* 80391F5C-80391F68 01E5BC 000C+00 0/1 0/0 0/0 .rodata localHeadTop$59874 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const localHeadTop[12] = { - 0x00, 0x00, 0x00, 0x00, 0xC1, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const localHeadTop = { + 0.0f, -28.0f, 0.0f }; COMPILER_STRIP_GATE(0x80391F5C, &localHeadTop); #pragma pop @@ -4876,8 +4878,8 @@ COMPILER_STRIP_GATE(0x80391F5C, &localHeadTop); /* 80391F68-80391F74 01E5C8 000C+00 0/1 0/0 0/0 .rodata wlLocalHeadCenter$59875 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const wlLocalHeadCenter[12] = { - 0x00, 0x00, 0x00, 0x00, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const wlLocalHeadCenter = { + 0.0f, -5.0f, 0.0f }; COMPILER_STRIP_GATE(0x80391F68, &wlLocalHeadCenter); #pragma pop @@ -4885,8 +4887,8 @@ COMPILER_STRIP_GATE(0x80391F68, &wlLocalHeadCenter); /* 80391F74-80391F80 01E5D4 000C+00 0/1 0/0 0/0 .rodata wlLocalEye$59876 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const wlLocalEye[12] = { - 0x41, 0xF0, 0x00, 0x00, 0xC0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const wlLocalEye = { + 30.0f, -5.0f, 0.0f }; COMPILER_STRIP_GATE(0x80391F74, &wlLocalEye); #pragma pop @@ -4894,8 +4896,8 @@ COMPILER_STRIP_GATE(0x80391F74, &wlLocalEye); /* 80391F80-80391F8C 01E5E0 000C+00 0/1 0/0 0/0 .rodata wlLocalHeadTop$59877 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const wlLocalHeadTop[12] = { - 0x00, 0x00, 0x00, 0x00, 0xC1, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const wlLocalHeadTop = { + 0.0f, -20.0f, 0.0f }; COMPILER_STRIP_GATE(0x80391F80, &wlLocalHeadTop); #pragma pop @@ -4903,8 +4905,8 @@ COMPILER_STRIP_GATE(0x80391F80, &wlLocalHeadTop); /* 80391F8C-80391F98 01E5EC 000C+00 0/1 0/0 0/0 .rodata localEyeFromRoot$59878 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const localEyeFromRoot[12] = { - 0x00, 0x00, 0x00, 0x00, 0x42, 0x5F, 0x00, 0x00, 0x41, 0x70, 0x00, 0x00, +SECTION_RODATA static Vec const localEyeFromRoot = { + 0.0f, 55.75f, 15.0f }; COMPILER_STRIP_GATE(0x80391F8C, &localEyeFromRoot); #pragma pop @@ -4912,8 +4914,8 @@ COMPILER_STRIP_GATE(0x80391F8C, &localEyeFromRoot); /* 80391F98-80391FA4 01E5F8 000C+00 0/1 0/0 0/0 .rodata boardLocalEyeFromRoot$59879 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const boardLocalEyeFromRoot[12] = { - 0x41, 0x18, 0x00, 0x00, 0x42, 0x3C, 0x00, 0x00, 0x41, 0xC4, 0x00, 0x00, +SECTION_RODATA static Vec const boardLocalEyeFromRoot = { + 9.5f, 47.0f, 24.5f }; COMPILER_STRIP_GATE(0x80391F98, &boardLocalEyeFromRoot); #pragma pop @@ -4921,8 +4923,8 @@ COMPILER_STRIP_GATE(0x80391F98, &boardLocalEyeFromRoot); /* 80391FA4-80391FB0 01E604 000C+00 0/1 0/0 0/0 .rodata horseLocalEyeFromRoot$59880 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const horseLocalEyeFromRoot[12] = { - 0x3F, 0xE0, 0x00, 0x00, 0x42, 0x5C, 0x00, 0x00, 0x41, 0xCC, 0x00, 0x00, +SECTION_RODATA static Vec const horseLocalEyeFromRoot = { + 1.75f, 55.0f, 25.5f }; COMPILER_STRIP_GATE(0x80391FA4, &horseLocalEyeFromRoot); #pragma pop @@ -4930,8 +4932,8 @@ COMPILER_STRIP_GATE(0x80391FA4, &horseLocalEyeFromRoot); /* 80391FB0-80391FBC 01E610 000C+00 0/1 0/0 0/0 .rodata canoeLocalEyeFromRoot$59881 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const canoeLocalEyeFromRoot[12] = { - 0x00, 0x00, 0x00, 0x00, 0x42, 0x5C, 0x00, 0x00, 0x41, 0xC8, 0x00, 0x00, +SECTION_RODATA static Vec const canoeLocalEyeFromRoot = { + 0.0f, 55.0f, 25.0f }; COMPILER_STRIP_GATE(0x80391FB0, &canoeLocalEyeFromRoot); #pragma pop @@ -4953,8 +4955,8 @@ int daAlink_c::setRollJump(f32 param_0, f32 param_1, s16 param_2) { /* 80391FBC-80391FC8 01E61C 000C+00 0/0 0/0 0/0 .rodata wlLocalEyeFromRoot$59882 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const wlLocalEyeFromRoot[12] = { - 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x42, 0xAB, 0x00, 0x00, +SECTION_RODATA static Vec const wlLocalEyeFromRoot = { + 0.0f, -6.0f, 85.5f }; COMPILER_STRIP_GATE(0x80391FBC, &wlLocalEyeFromRoot); #pragma pop @@ -4962,8 +4964,8 @@ COMPILER_STRIP_GATE(0x80391FBC, &wlLocalEyeFromRoot); /* 80391FC8-80391FD4 01E628 000C+00 0/1 0/0 0/0 .rodata normalOffset$60101 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const normalOffset[12] = { - 0x00, 0x00, 0x00, 0x00, 0x43, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const normalOffset = { + 0.0f, 150.0f, 0.0f }; COMPILER_STRIP_GATE(0x80391FC8, &normalOffset); #pragma pop @@ -4971,8 +4973,8 @@ COMPILER_STRIP_GATE(0x80391FC8, &normalOffset); /* 80391FD4-80391FE0 01E634 000C+00 0/1 0/0 0/0 .rodata crawlOffset$60141 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const crawlOffset[12] = { - 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, +SECTION_RODATA static Vec const crawlOffset = { + 0.0f, 40.0f, 30.0f }; COMPILER_STRIP_GATE(0x80391FD4, &crawlOffset); #pragma pop @@ -4980,8 +4982,8 @@ COMPILER_STRIP_GATE(0x80391FD4, &crawlOffset); /* 80391FE0-80391FEC 01E640 000C+00 0/1 0/0 0/0 .rodata crouchOffset$60142 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const crouchOffset[12] = { - 0x00, 0x00, 0x00, 0x00, 0x42, 0xBE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const crouchOffset = { + 0.0f, 95.0f, 0.0f }; COMPILER_STRIP_GATE(0x80391FE0, &crouchOffset); #pragma pop @@ -4989,102 +4991,12 @@ COMPILER_STRIP_GATE(0x80391FE0, &crouchOffset); /* 80391FEC-80391FF8 01E64C 000C+00 0/1 0/0 0/0 .rodata swimOffset$60143 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const swimOffset[12] = { - 0x00, 0x00, 0x00, 0x00, 0x41, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const swimOffset = { + 0.0f, 14.0f, 0.0f }; COMPILER_STRIP_GATE(0x80391FEC, &swimOffset); #pragma pop -/* 80425508-80425514 052228 000C+00 4/4 0/0 0/0 .bss @4409 */ -static u8 lit_4409[12]; - -/* 80425514-80425520 052234 000C+00 32/35 0/0 0/0 .bss l_waitBaseAnime */ -static Vec l_waitBaseAnime; - -/* 80425520-8042552C 052240 000C+00 0/1 0/0 0/0 .bss @4410 */ -#pragma push -#pragma force_active on -static u8 lit_4410[12]; -#pragma pop - -/* 8042552C-80425538 05224C 000C+00 2/3 0/0 0/0 .bss l_ironBallBaseAnime */ -static Vec l_ironBallBaseAnime; - -/* 80425538-80425544 052258 000C+00 0/1 0/0 0/0 .bss @4411 */ -#pragma push -#pragma force_active on -static u8 lit_4411[12]; -#pragma pop - -/* 80425544-80425550 052264 000C+00 15/17 0/0 0/0 .bss l_halfAtnWaitBaseAnime */ -static Vec l_halfAtnWaitBaseAnime; - -/* 80425550-8042555C 052270 000C+00 0/1 0/0 0/0 .bss @4412 */ -#pragma push -#pragma force_active on -static u8 lit_4412[12]; -#pragma pop - -/* 8042555C-80425568 05227C 000C+00 1/2 0/0 0/0 .bss l_rWaitBaseAnime */ -static f32 l_rWaitBaseAnime[3]; - -/* 80425568-80425574 052288 000C+00 0/1 0/0 0/0 .bss @4413 */ -#pragma push -#pragma force_active on -static u8 lit_4413[12]; -#pragma pop - -/* 80425574-80425580 052294 000C+00 0/1 0/0 0/0 .bss l_lWaitBaseAnime */ -#pragma push -#pragma force_active on -static u8 l_lWaitBaseAnime[12]; -#pragma pop - -/* 80425580-8042558C 0522A0 000C+00 0/1 0/0 0/0 .bss @4414 */ -#pragma push -#pragma force_active on -static u8 lit_4414[12]; -#pragma pop - -/* 8042558C-80425598 0522AC 000C+00 3/5 0/0 0/0 .bss l_horseBaseAnime */ -static Vec l_horseBaseAnime; - -/* 80425598-804255A4 0522B8 000C+00 0/1 0/0 0/0 .bss @4415 */ -#pragma push -#pragma force_active on -static u8 lit_4415[12]; -#pragma pop - -/* 804255A4-804255B0 0522C4 000C+00 3/5 0/0 0/0 .bss l_boarBaseAnime */ -static Vec l_boarBaseAnime; - -/* 804255B0-804255BC 0522D0 000C+00 0/1 0/0 0/0 .bss @4416 */ -#pragma push -#pragma force_active on -static u8 lit_4416[12]; -#pragma pop - -/* 804255BC-804255C8 0522DC 000C+00 1/3 0/0 0/0 .bss l_localHorseRidePos */ -static Vec l_localHorseRidePos; - -/* 804255C8-804255D4 0522E8 000C+00 0/1 0/0 0/0 .bss @4417 */ -#pragma push -#pragma force_active on -static u8 lit_4417[12]; -#pragma pop - -/* 804255D4-804255E0 0522F4 000C+00 1/3 0/0 0/0 .bss l_localBoarRidePos */ -static Vec l_localBoarRidePos; - -/* 804255E0-804255EC 052300 000C+00 0/1 0/0 0/0 .bss @4418 */ -#pragma push -#pragma force_active on -static u8 lit_4418[12]; -#pragma pop - -/* 804255EC-804255F8 05230C 000C+00 2/3 0/0 0/0 .bss l_canoeBaseAnime */ -static Vec l_canoeBaseAnime; - /* 800A87F8-800A8CE4 0A3138 04EC+00 2/2 0/0 0/0 .text setAttentionPos__9daAlink_cFv */ void daAlink_c::setAttentionPos() { // NONMATCHING @@ -5122,8 +5034,8 @@ int daAlink_c::simpleAnmPlay(J3DAnmBase* i_anm) { /* 80391FF8-80392004 01E658 000C+00 0/1 0/0 0/0 .rodata swordMoveLocal0$60438 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const swordMoveLocal0[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBF, 0x80, 0x00, 0x00, +SECTION_RODATA static Vec const swordMoveLocal0 = { + 0.0f, 0.0f, -1.0f }; COMPILER_STRIP_GATE(0x80391FF8, &swordMoveLocal0); #pragma pop @@ -5131,8 +5043,8 @@ COMPILER_STRIP_GATE(0x80391FF8, &swordMoveLocal0); /* 80392004-80392010 01E664 000C+00 0/1 0/0 0/0 .rodata swordMoveLocal1$60439 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const swordMoveLocal1[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, +SECTION_RODATA static Vec const swordMoveLocal1 = { + 0.0f, 0.0f, 1.0f }; COMPILER_STRIP_GATE(0x80392004, &swordMoveLocal1); #pragma pop @@ -5140,8 +5052,8 @@ COMPILER_STRIP_GATE(0x80392004, &swordMoveLocal1); /* 80392010-8039201C 01E670 000C+00 0/1 0/0 0/0 .rodata copyRodTop$60447 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const copyRodTop[12] = { - 0x41, 0xDC, 0x00, 0x00, 0xC0, 0xA0, 0x00, 0x00, 0xC1, 0x48, 0x00, 0x00, +SECTION_RODATA static Vec const copyRodTop = { + 27.5f, -5.0f, -12.5f }; COMPILER_STRIP_GATE(0x80392010, ©RodTop); #pragma pop @@ -5357,8 +5269,8 @@ void daAlink_c::resetAtCollision(int param_0) { /* 80392028-80392034 01E688 000C+00 0/1 0/0 0/0 .rodata bottleTopPos$61387 */ #pragma push #pragma force_active on -SECTION_RODATA static u8 const bottleTopPos[12] = { - 0x00, 0x00, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const bottleTopPos = { + 0.0f, 20.0f, 0.0f }; COMPILER_STRIP_GATE(0x80392028, &bottleTopPos); #pragma pop @@ -5369,8 +5281,8 @@ void daAlink_c::setAtCollision() { } /* 80392034-80392040 01E694 000C+00 1/1 0/0 0/0 .rodata localHead$61779 */ -SECTION_RODATA static u8 const localHead[12] = { - 0x41, 0x70, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +SECTION_RODATA static Vec const localHead = { + 15.0f, 5.0f, 0.0f }; COMPILER_STRIP_GATE(0x80392034, &localHead); @@ -5628,7 +5540,7 @@ void daAlink_c::setFrameCtrl(daPy_frameCtrl_c* i_ctrl, u8 i_attr, s16 i_start, s } /* 80453278-80453280 001878 0008+00 1/1 0/0 0/0 .sdata2 kandelaarAnm$62207 */ -SECTION_SDATA2 static daAlink_BckData kandelaarAnm[2] = { +static const daAlink_BckData kandelaarAnm[2] = { {0x026A, 0x0268}, // waits, waitk {0x0266, 0x0264}, // waiths, waithk }; @@ -7148,7 +7060,6 @@ void daAlink_c::setNormalSpeedF(f32 i_incSpeed, f32 param_1) { } } - /* 800B3F2C-800B3FD4 0AE86C 00A8+00 2/2 0/0 0/0 .text getStickAngleDistanceRate__9daAlink_cFv */ f32 daAlink_c::getStickAngleDistanceRate() { f32 rate; @@ -7805,7 +7716,6 @@ BOOL daAlink_c::checkSlideAction() { } } - /* 800B607C-800B69CC 0B09BC 0950+00 2/2 0/0 0/0 .text checkAutoJumpAction__9daAlink_cFv */ BOOL daAlink_c::checkAutoJumpAction() { @@ -8437,7 +8347,6 @@ BOOL daAlink_c::checkUpperItemAction() { return false; } - /* 800B7B7C-800B7BF8 0B24BC 007C+00 1/1 0/0 0/0 .text orderPeep__9daAlink_cFv */ void daAlink_c::orderPeep() { mPeepExitID = ((kytag05_class*)field_0x27f4)->getSceneListID(); @@ -8451,7 +8360,7 @@ void daAlink_c::orderPeep() { } /* 804532B0-804532B4 0018B0 0004+00 1/1 0/0 0/0 .sdata2 itemTalkType$67468 */ -SECTION_SDATA2 static u16 itemTalkType[2] = {6, 7}; +static const u16 itemTalkType[2] = {6, 7}; /* 800B7BF8-800B7D4C 0B2538 0154+00 13/13 0/0 0/0 .text orderTalk__9daAlink_cFi */ int daAlink_c::orderTalk(int i_checkZTalk) { @@ -8539,7 +8448,6 @@ int daAlink_c::orderZTalk() { return 0; } - /* 800B8374-800B8930 0B2CB4 05BC+00 1/1 0/0 0/0 .text checkNormalAction__9daAlink_cFv */ int daAlink_c::checkNormalAction() { int wall_grab_status = getWallGrabStatus(); @@ -8721,7 +8629,6 @@ int daAlink_c::checkNormalAction() { return 0; } - u16 daAlink_c::getReadyItem() { return dComIfGp_getSelectItem(mSelectItemId); } @@ -8887,7 +8794,6 @@ BOOL daAlink_c::checkItemAction() { return false; } - /* 800B9010-800B9018 0B3950 0008+00 1/1 0/0 0/0 .text checkRAction__9daAlink_cFv */ BOOL daAlink_c::checkRAction() { return false; @@ -9425,7 +9331,6 @@ int daAlink_c::checkNextAction(int param_0) { return ret; } - /* 800BA6A0-800BA914 0B4FE0 0274+00 3/3 0/0 0/0 .text commonChangeItem__9daAlink_cFv */ void daAlink_c::commonChangeItem() { if (mEquipItem == KANTERA && field_0x2fde == 0xFF && (mProcID != PROC_PREACTION_UNEQUIP || mProcVar4.field_0x3010 != 0)) { @@ -10299,7 +10204,6 @@ int daAlink_c::startRestartRoom(u32 i_mode, int param_1, int i_dmgAmount, int i_ return 0; } - /* 800BE26C-800BE2C0 0B8BAC 0054+00 2/2 0/0 0/0 .text checkCoachGuardGame__9daAlink_cFv */ BOOL daAlink_c::checkCoachGuardGame() { @@ -10442,7 +10346,6 @@ BOOL daAlink_c::checkRestartRoom() { return false; } - /* 800BE9D4-800BEAF8 0B9314 0124+00 2/2 0/0 0/0 .text getSceneExitMoveAngle__9daAlink_cFv */ s16 daAlink_c::getSceneExitMoveAngle() { @@ -10477,7 +10380,6 @@ s16 daAlink_c::getSceneExitMoveAngle() { return cM_atan2s(dx, dz); } - /* 800BEAF8-800BF084 0B9438 058C+00 1/1 0/0 0/0 .text checkSceneChange__9daAlink_cFi */ int daAlink_c::checkSceneChange(int exitID) { BOOL var_r3 = mProcID != PROC_FOG_DEAD && (field_0x3174 == 9 || checkNoResetFlg2(FLG2_UNK_4000)); @@ -10632,7 +10534,6 @@ int daAlink_c::checkSceneChange(int exitID) { return 0; } - /* 800BF084-800BF0B8 0B99C4 0034+00 1/0 0/0 0/0 .text voiceStart__9daAlink_cFUl */ void daAlink_c::voiceStart(u32 i_seID) { mZ2Link.startLinkVoice(i_seID, mVoiceReverbIntensity); @@ -10861,7 +10762,6 @@ BOOL daAlink_c::setItemActor() { return 0; } - /* 800BFD74-800BFDB0 0BA6B4 003C+00 2/2 0/0 0/0 .text makeItemType__9daAlink_cFv */ void daAlink_c::makeItemType() { if (!setItemModel()) { @@ -11173,7 +11073,6 @@ int daAlink_c::changeItemTriggerKeepProc(u8 i_selItemIdx, int i_procType) { return 1; } - /* 800C0A9C-800C12DC 0BB3DC 0840+00 1/1 0/0 0/0 .text checkNewItemChange__9daAlink_cFUc */ /** @@ -11321,7 +11220,6 @@ int daAlink_c::checkNewItemChange(u8 param_0) { return ITEM_PROC_NONE; } - /* 800C12DC-800C1704 0BBC1C 0428+00 67/67 0/0 0/0 .text deleteEquipItem__9daAlink_cFii */ void daAlink_c::deleteEquipItem(BOOL i_playSound, BOOL i_deleteKantera) { if (i_deleteKantera || mProcID == PROC_UNEQUIP) { @@ -11575,7 +11473,6 @@ void daAlink_c::setLight() { } } - /* 800C1CEC-800C1DAC 0BC62C 00C0+00 3/3 0/0 0/0 .text setFrontRollCrashShock__9daAlink_cFUc */ void daAlink_c::setFrontRollCrashShock(u8 param_0) { dComIfGp_getVibration().StartShock(5, 15, cXyz(0.0f, 1.0f, 0.0f)); @@ -11796,7 +11693,7 @@ void daAlink_c::commonProcInit(daAlink_c::daAlink_PROC i_procID) { field_0x2b98 = 0.0f; mSpeedModifier = 0.0f; field_0x2fb3 = 0; - field_0x2f9e = 6; + mEffProc = EFFPROC_NONE; clearCutTurnEffectID(); if (!checkModeFlg(MODE_SWIMMING)) { diff --git a/src/d/actor/d_a_alink_demo.inc b/src/d/actor/d_a_alink_demo.inc index e3b170e2194..b004567496c 100644 --- a/src/d/actor/d_a_alink_demo.inc +++ b/src/d/actor/d_a_alink_demo.inc @@ -18,6 +18,9 @@ #include "d/actor/d_a_horse.h" #include "d/actor/d_a_midna.h" #include "d/actor/d_a_e_wb.h" +#include "d/actor/d_a_npc_zra.h" +#include "d/actor/d_a_obj_tks.h" +#include "d/actor/d_a_npc_tkc.h" /* 80115C20-80115C50 110560 0030+00 72/72 0/0 0/0 .text checkEventRun__9daAlink_cCFv */ BOOL daAlink_c::checkEventRun() const { @@ -506,10 +509,55 @@ void daAlink_c::setDemoMoveData(u32* param_0, cXyz const* param_1) { mDemo.setMoveAngle(sp20.atan2sX_Z()); } - /* 80117064-801171F4 1119A4 0190+00 1/1 0/0 0/0 .text setNoDrawSwordShield__9daAlink_cFiUs */ void daAlink_c::setNoDrawSwordShield(int param_0, u16 param_1) { - // NONMATCHING + if (param_0 == 5) { + if (param_1 == 2) { + offNoResetFlg2(FLG2_UNK_2000000); + onNoResetFlg3(FLG3_UNK_80000000); + } else if (param_1 == 1) { + onNoResetFlg2(FLG2_UNK_2000000); + offNoResetFlg3(FLG3_UNK_80000000); + } else { + offNoResetFlg2(FLG2_UNK_2000000); + offNoResetFlg3(FLG3_UNK_80000000); + } + } else if (param_0 == 6) { + if (param_1 != 0) { + onNoResetFlg2(FLG2_UNK_4000000); + } else { + offNoResetFlg2(FLG2_UNK_4000000); + } + } else if (param_0 == 3) { + if (param_1 == 1) { + onEndResetFlg0(ERFLG0_UNK_800000); + } else if (param_1 == 2) { + onEndResetFlg1(ERFLG1_UNK_80000); + } else if (param_1 == 3) { + onEndResetFlg1(ERFLG1_UNK_400000); + } + } else { + if (param_0 == 7) { + if (param_1 == 1) { + onNoResetFlg0(FLG0_PLAYER_NO_DRAW); + } else { + offNoResetFlg0(FLG0_PLAYER_NO_DRAW); + } + } else if (param_0 == 8) { + if (param_1 == 1) { + onNoResetFlg3(FLG3_UNK_1000000); + } else { + offNoResetFlg3(FLG3_UNK_1000000); + + } + } else if (param_0 == 9) { + if (param_1 == 1) { + onNoResetFlg2(FLG2_PLAYER_SHADOW); + } else { + offNoResetFlg2(FLG2_PLAYER_SHADOW); + } + } + } } /* 801171F4-80117B90 111B34 099C+00 1/1 0/0 0/0 .text setDemoData__9daAlink_cFv */ @@ -828,7 +876,6 @@ void daAlink_c::resetSpecialEvent() { } /* 80117CF8-801180EC 112638 03F4+00 4/4 0/0 0/0 .text endDemoMode__9daAlink_cFv */ -// NONMATCHING - one wrong branch void daAlink_c::endDemoMode() { BOOL temp_r30 = checkFlyAtnWait(); endHighModel(); @@ -896,16 +943,12 @@ void daAlink_c::endDemoMode() { commonCheckNextAction(0); } else if (mProcID == PROC_HAWK_CATCH || mProcID == PROC_HAWK_SUBJECT) { procHawkSubjectInit(); - } else if (mProcID != PROC_GRASS_WHISTLE_WAIT) { - if (mDemo.getDemoMode() == 0x2D && mProcID == PROC_WARP) { - return; - } - - if (mProcID == PROC_TALK && dComIfGp_checkPlayerStatus0(0, 0x8000000)) { - procWolfLieMoveInit(0); - } else { - checkWaitAction(); - } + } else if (mProcID == PROC_GRASS_WHISTLE_WAIT || (mDemo.getDemoMode() != 0x2D && mProcID == PROC_WARP)) { + return; + } else if (mProcID == PROC_TALK && dComIfGp_checkPlayerStatus0(0, 0x8000000)) { + procWolfLieMoveInit(0); + } else { + checkWaitAction(); } } else if (mProcID == PROC_CAUGHT) { if (checkModeFlg(0x40000)) { @@ -1219,15 +1262,46 @@ void daAlink_c::setDeadRideSyncPos() { /* 80118C98-80118D7C 1135D8 00E4+00 5/5 0/0 0/0 .text checkDeadHP__9daAlink_cFv */ BOOL daAlink_c::checkDeadHP() { - return ((dComIfGs_getLife() == 0 && !checkResetFlg0(RFLG0_UNK_400)) && - !dComIfGs_checkBottle(FAIRY)) || + return ((dComIfGs_getLife() == 0 && !checkResetFlg0(RFLG0_UNK_400)) && !dComIfGs_checkBottle(FAIRY)) || checkNoResetFlg2(FLG2_FORCE_GAMEOVER) || (dComIfGp_getOxygenShowFlag() && dComIfGp_getNowOxygen() == 0); } /* 80118D7C-80118FF8 1136BC 027C+00 3/3 0/0 0/0 .text checkDeadAction__9daAlink_cFi */ BOOL daAlink_c::checkDeadAction(int param_0) { - // NONMATCHING + if (!checkEventRun()) { + if (checkDeadHP() && mProcID != PROC_HORSE_RIDE && mProcID != PROC_HORSE_GETOFF && mProcID != PROC_LARGE_DAMAGE && mProcID != PROC_LARGE_DAMAGE_WALL && (param_0 || (mProcID != PROC_LARGE_DAMAGE_UP && mProcID != PROC_WOLF_LARGE_DAMAGE_UP))) { + if (mLinkAcch.i_ChkGroundHit() || checkModeFlg(0x40000) || checkBoarRide() || (checkHorseRide() && !dComIfGp_getHorseActor()->checkJump())) { + return procCoDeadInit(1); + } + + if (!checkHorseRide()) { + if (checkMagneBootsOn() && !cancelMagneBootsOn()) { + return procCoDeadInit(1); + } + + offCargoCarry(); + + int var_r29; + if (dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd) && -1000000000.0f != mLinkAcch.GetGroundH()) { + var_r29 = dComIfG_Bgsp().GetExitId(mLinkAcch.m_gnd); + } else { + var_r29 = 0x3F; + } + + if (((var_r29 != 0x3F || mExitID != 0x3F) && field_0x3174 == 5 && field_0x33c8 - current.pos.y > 500.0f) || ((mExitID & 0x8000) && checkModeFlg(2))) { + onNoResetFlg2(FLG2_FORCE_GAMEOVER); + return procCoDeadInit(0); + } + + return commonFallInit(1); + } + } else if (dComIfGs_getLife() == 0 && !checkResetFlg0(RFLG0_UNK_400) && dComIfGs_checkBottle(FAIRY)) { + makeFairy(¤t.pos, 0); + dComIfGs_setBottleItemIn(FAIRY, EMPTY_BOTTLE); + } + } + return 0; } @@ -1255,7 +1329,7 @@ void daAlink_c::setHighModelFaceBtk(u16 i_anmID) { J3DAnmTextureSRTKey* btk = (J3DAnmTextureSRTKey*)dComIfG_getObjectIDRes( dStage_roomControl_c::getDemoArcName(), i_anmID); - if (btk != NULL && field_0x068c != btk) { + if (btk && field_0x068c != btk) { btk->searchUpdateMaterialID(mpDemoFCTongueModel->getModelData()); mpDemoFCTongueModel->getModelData()->entryTexMtxAnimator(btk); @@ -1351,16 +1425,18 @@ f32 daAlink_c::setStickAnmData(J3DAnmBase* i_anm, int param_1, int param_2, u16 return var_f31; } - -/* ############################################################################################## */ -/* 804256B8-804256CC 0523D8 0014+00 1/1 0/0 0/0 .bss dummy$36763 */ -static u8 dummy[20]; - /* 80119464-801195C0 113DA4 015C+00 1/1 0/0 0/0 .text * daAlink_c_getDemoIDData__FP13dDemo_actor_cPiPiPiPUsPiPi */ static int daAlink_c_getDemoIDData(dDemo_actor_c* param_0, int* param_1, int* param_2, int* param_3, u16* param_4, int* param_5, int* param_6) { // NONMATCHING + static u8 dummy[20]; + + /* JStudio::stb::TParseData_fixed<51> sp50((void*)param_0->getPrm()->getData()); + + static JStudio::stb::TParseData_fixed<51> dummy; + static JGadget::binary::TValueIterator_raw it(sp50); */ + return 0; } @@ -3375,8 +3451,30 @@ int daAlink_c::procZoraMoveInit() { /* 8011DB9C-8011DDD4 1184DC 0238+00 1/0 0/0 0/0 .text procZoraMove__9daAlink_cFv */ int daAlink_c::procZoraMove() { - // NONMATCHING - return 0; + dComIfGp_evmng_cutEnd(field_0x3184); + fopAc_ac_c* temp_r29 = dComIfGp_event_getPt1(); + field_0x2f99 = 0x60; + + if (temp_r29 != NULL) { + cXyz sp14; + cXyz sp8; + + mDoMtx_stack_c::copy(((daNpc_zrA_c*)temp_r29)->getHeadMtx()); + mDoMtx_stack_c::YrotM(-0x4000); + mDoMtx_stack_c::transM(0.0f, 30.0f, -90.0f); + mDoMtx_stack_c::multVecZero(¤t.pos); + mDoMtx_stack_c::multVecSR(&cXyz::BaseZ, &sp14); + mDoMtx_stack_c::multVecSR(&cXyz::BaseZ, &sp8); + shape_angle.y = temp_r29->shape_angle.y; + + if (sp8.y < 0.0f) { + shape_angle.x = cM_atan2s(-sp14.y, -sp14.absXZ()); + } else { + shape_angle.x = sp14.atan2sY_XZ(); + } + } + + return 1; } /* 8011DDD4-8011DED8 118714 0104+00 1/0 0/0 0/0 .text procLookAroundTurnInit__9daAlink_cFv */ @@ -3403,7 +3501,6 @@ int daAlink_c::procLookAroundTurnInit() { return 1; } - /* 8011DED8-8011DF68 118818 0090+00 1/0 0/0 0/0 .text procLookAroundTurn__9daAlink_cFv */ int daAlink_c::procLookAroundTurn() { daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl; @@ -3859,8 +3956,26 @@ int daAlink_c::procDungeonWarpReadyInit() { /* 8011EFB8-8011F084 1198F8 00CC+00 1/0 0/0 0/0 .text procDungeonWarpReady__9daAlink_cFv */ int daAlink_c::procDungeonWarpReady() { - // NONMATCHING - return 0; + if (mProcVar2.field_0x300c != 0) { + fopAc_ac_c* temp_r3 = fopAcM_SearchByID(field_0x32cc); + if (temp_r3 != NULL) { + field_0x280c.setData(temp_r3); + + if (fopAcM_GetName(temp_r3) == PROC_OBJ_TKS) { + ((daObjTks_c*)temp_r3)->setStart(); + } else { + ((daNpcTkc_c*)temp_r3)->setStart(); + } + } + } else if (checkAnmEnd(&mUnderFrameCtrl[0])) { + setSingleAnimeBase(ANM_TRADE_ITEM_WAIT); + onModeFlg(0x100); + mProcVar2.field_0x300c = 1; + } else { + setTradeItemOutHand(); + } + + return 1; } /* 8011F084-8011F0F4 1199C4 0070+00 1/0 0/0 0/0 .text procDungeonWarpInit__9daAlink_cFv diff --git a/src/d/actor/d_a_alink_effect.inc b/src/d/actor/d_a_alink_effect.inc index 5c000c55b89..0b4b4b5337d 100644 --- a/src/d/actor/d_a_alink_effect.inc +++ b/src/d/actor/d_a_alink_effect.inc @@ -3,28 +3,29 @@ * Player Particle Effect handling */ +#include "JSystem/J2DGraph/J2DAnimation.h" +#include "JSystem/J2DGraph/J2DScreen.h" #include "d/actor/d_a_alink.h" #include "d/d_com_inf_game.h" #include "d/d_k_wmark.h" -#include "JSystem/J2DGraph/J2DAnimation.h" -#include "JSystem/J2DGraph/J2DScreen.h" + /* 80120580-80120634 11AEC0 00B4+00 21/21 0/0 0/0 .text * setEmitter__9daAlink_cFPUlUsPC4cXyzPC5csXyz */ -JPABaseEmitter* daAlink_c::setEmitter(u32* param_0, u16 param_1, cXyz const* param_2, csXyz const* param_3) { - *param_0 = dComIfGp_particle_set(*param_0, param_1, param_2, &tevStr, param_3, NULL, 0xFF, - NULL, 0xFF, NULL, NULL, NULL); +JPABaseEmitter* daAlink_c::setEmitter(u32* param_0, u16 param_1, cXyz const* param_2, + csXyz const* param_3) { + *param_0 = dComIfGp_particle_set(*param_0, param_1, param_2, &tevStr, param_3, NULL, 0xFF, NULL, + 0xFF, NULL, NULL, NULL); dComIfGp_particle_levelEmitterOnEventMove(*param_0); return dComIfGp_particle_getEmitter(*param_0); } - /* 80120634-801206C4 11AF74 0090+00 4/4 0/0 0/0 .text * setEmitterPolyColor__9daAlink_cFPUlUsR13cBgS_PolyInfoPC4cXyzPC5csXyz */ JPABaseEmitter* daAlink_c::setEmitterPolyColor(u32* param_0, u16 param_1, cBgS_PolyInfo& param_2, cXyz const* param_3, csXyz const* param_4) { - *param_0 = dComIfGp_particle_setPolyColor(*param_0, param_1, param_2, param_3, &tevStr, - param_4, NULL, 0, NULL, -1, NULL); + *param_0 = dComIfGp_particle_setPolyColor(*param_0, param_1, param_2, param_3, &tevStr, param_4, + NULL, 0, NULL, -1, NULL); dComIfGp_particle_levelEmitterOnEventMove(*param_0); return dComIfGp_particle_getEmitter(*param_0); @@ -34,8 +35,8 @@ JPABaseEmitter* daAlink_c::setEmitterPolyColor(u32* param_0, u16 param_1, cBgS_P * setEmitterColor__9daAlink_cFPUlUsPC4cXyzPC5csXyz */ JPABaseEmitter* daAlink_c::setEmitterColor(u32* param_0, u16 param_1, cXyz const* param_2, csXyz const* param_3) { - *param_0 = dComIfGp_particle_setColor(*param_0, param_1, param_2, &tevStr, NULL, NULL, - 0.0f, -1, param_3, NULL, NULL, -1, NULL); + *param_0 = dComIfGp_particle_setColor(*param_0, param_1, param_2, &tevStr, NULL, NULL, 0.0f, -1, + param_3, NULL, NULL, -1, NULL); dComIfGp_particle_levelEmitterOnEventMove(*param_0); return dComIfGp_particle_getEmitter(*param_0); @@ -67,20 +68,170 @@ void daAlink_c::setEffectFrontRollParam() { } } - /* 80120880-80120B00 11B1C0 0280+00 1/0 0/0 0/0 .text setEffectSlipParam__9daAlink_cFv */ void daAlink_c::setEffectSlipParam() { - // NONMATCHING + JGeometry::TVec3 sp30; + + int k, j, i; + for (i = 0; i < 5; i++) { + for (j = 0; j < 2; j++) { + u8 type = field_0x2e54.getTypeFour(i, j); + + if (type == 0) { + JPABaseEmitter* emitter = field_0x2e54.getEmitterFour(i, j, 0); + if (emitter != NULL) { + if (checkWolf()) { + emitter->setRate(0.5f); + } + + emitter->setAwayFromCenterSpeed(0.0f); + emitter->setRandomDirectionSpeed(0.0f); + emitter->setSpread(0.1f); + emitter->setGlobalParticleScale(smokeParticleScale_39643); + } + } else if (type == 1) { + JPABaseEmitter* emitter = field_0x2e54.getEmitterFour(i, j, 0); + if (emitter != NULL) { + emitter->setRate(0.5f); + emitter->setDirectionalSpeed(12.0f); + } + } else if (type == 16) { + for (k = 0; k < 4; k++) { + JPABaseEmitter* emitter = field_0x2e54.getEmitterFour(i, j, k); + if (emitter == NULL) { + break; + } + + if (checkWolf()) { + emitter->setGlobalScale(wolfWaterCenterScale); + } else { + emitter->getGlobalTranslation(&sp30); + sp30.x += cM_ssin(current.angle.y) * 35.0f; + sp30.z += cM_scos(current.angle.y) * 35.0f; + + emitter->setGlobalTranslation(sp30); + } + } + } else if (type == 3) { + JPABaseEmitter* emitter = field_0x2e54.getEmitterFour(i, j, 0); + if (emitter != NULL) { + emitter->setRate(1.0f); + } + } else if (type == 4) { + for (k = 0; k < 4; k++) { + JPABaseEmitter* emitter = field_0x2e54.getEmitterFour(i, j, k); + if (emitter != NULL) { + emitter->setRate(2.0f); + } + } + } + } + } } /* 80120B00-80120DB0 11B440 02B0+00 1/0 0/0 0/0 .text setEffectRunParam__9daAlink_cFv */ void daAlink_c::setEffectRunParam() { - // NONMATCHING + int k, j, i; + for (i = 0; i < 5; i++) { + for (j = 0; j < 2; j++) { + u8 type = field_0x2e54.getTypeFour(i, j); + + if (type == 0) { + JPABaseEmitter* emitter = field_0x2e54.getEmitterFour(i, j, 0); + if (emitter != NULL) { + emitter->setRate(3.0f); + } + } else if (type == 1) { + JPABaseEmitter* emitter = field_0x2e54.getEmitterFour(i, j, 0); + if (emitter != NULL) { + emitter->setRate(4.0f); + } + } else if (type == 2) { + for (k = 0; k < 4; k++) { + JPABaseEmitter* emitter = field_0x2e54.getEmitterFour(i, j, k); + if (emitter == NULL) { + break; + } + + emitter->setGlobalScale(waterScale_39762); + } + } else if (type == 5) { + JPABaseEmitter* emitter = field_0x2e54.getEmitterFour(i, j, 0); + if (emitter != NULL) { + emitter->setRate(10.0f); + emitter->setAwayFromAxisSpeed(1.0f); + emitter->setGlobalScale(waterSmokeScale); + } + } else if (type == 16) { + for (k = 0; k < 4; k++) { + JPABaseEmitter* emitter = field_0x2e54.getEmitterFour(i, j, k); + if (emitter == NULL) { + break; + } + + emitter->setGlobalScale(waterCenterScale); + } + } else if (type == 3) { + JPABaseEmitter* emitter = field_0x2e54.getEmitterFour(i, j, 0); + if (emitter != NULL) { + if (checkWolf()) { + emitter->setRate(2.0f); + emitter->setDirectionalSpeed(8.0f); + emitter->setSpread(0.1f); + } else { + emitter->setRate(5.0f); + } + } + } + } + } } /* 80120DB0-80121000 11B6F0 0250+00 1/0 0/0 0/0 .text setEffectSmallLandParam__9daAlink_cFv */ void daAlink_c::setEffectSmallLandParam() { - // NONMATCHING + int k, j, i; + for (i = 0; i < 5; i++) { + for (j = 0; j < 2; j++) { + u8 type = field_0x2e54.getTypeFour(i, j); + + if (type == 0) { + JPABaseEmitter* emitter = field_0x2e54.getEmitterFour(i, j, 0); + if (emitter != NULL) { + if (checkWolf()) { + emitter->setGlobalScale(wolfSmokeScale); + } else { + emitter->setRate(15.0f); + emitter->setVolumeSize(25); + emitter->setDirectionalSpeed(0.0f); + emitter->setGlobalParticleScale(smokeParticleScale_39891); + } + } + } else if (type == 1) { + JPABaseEmitter* emitter = field_0x2e54.getEmitterFour(i, j, 0); + if (emitter != NULL) { + if (checkWolf()) { + emitter->setGlobalScale(wolfSmokeScale); + } else { + emitter->setRate(8.0f); + emitter->setVolumeSize(25); + emitter->setDirectionalSpeed(0.0f); + emitter->setAwayFromAxisSpeed(8.0f); + } + } + } else if (type == 2) { + if (checkWolf()) { + for (k = 0; k < 4; k++) { + JPABaseEmitter* emitter = field_0x2e54.getEmitterFour(i, j, k); + if (emitter == NULL) { + break; + } + + emitter->setGlobalScale(waterScale_39892); + } + } + } + } + } } /* 80121000-80121004 11B940 0004+00 1/0 0/0 0/0 .text setEffectLandParam__9daAlink_cFv */ @@ -89,7 +240,37 @@ void daAlink_c::setEffectLandParam() {} /* 80121004-801211C0 11B944 01BC+00 1/0 0/0 0/0 .text setEffectSumouParam__9daAlink_cFv */ void daAlink_c::setEffectSumouParam() { - // NONMATCHING + int j, i; + for (i = 0; i < 5; i++) { + for (j = 0; j < 2; j++) { + u8 type = field_0x2e54.getTypeFour(i, j); + + if (type == 0) { + JPABaseEmitter* emitter = field_0x2e54.getEmitterFour(i, j, 0); + if (emitter != NULL) { + if (mProcID == PROC_SUMOU_SHIKO) { + emitter->setGlobalScale(shikoScale); + } else if (mProcID == PROC_SUMOU_WIN_LOSE) { + emitter->setGlobalScale(loseScale); + } else if ((mProcID == PROC_SUMOU_SIDE_MOVE || mProcID == PROC_SUMOU_ACTION) && + (field_0x3198 == 0x143 || field_0x3198 == 0x142)) + { + GXColor sp3C; + GXColor sp40; + u8 sp48; + f32 sp44; + dPa_control_c::getPolyColor(mLinkAcch.m_gnd, j, &sp3C, &sp40, &sp48, &sp44); + + if (sp48 == emitter->getGlobalAlpha()) { + emitter->setGlobalAlpha(sp48 >> 1); + } + } else { + emitter->setGlobalScale(pushedSlip); + } + } + } + } + } } /* 801211C0-80121214 11BB00 0054+00 46/46 0/0 0/0 .text setFootEffectProcType__9daAlink_cFi */ @@ -98,13 +279,23 @@ void daAlink_c::setFootEffectProcType(int param_0) { field_0x2e54.clearFourAllID(); } - field_0x2f9e = param_0; - field_0x2f9f = field_0x2f9e; + mEffProc = param_0; + field_0x2f9f = mEffProc; } /* 80121214-80121304 11BB54 00F0+00 1/1 0/0 0/0 .text setWolfFootOn__9daAlink_cFi */ void daAlink_c::setWolfFootOn(int param_0) { - // NONMATCHING + daPy_frameCtrl_c* temp_r31 = &mUnderFrameCtrl[1]; + + if (temp_r31->checkPass(l_wolfFootOnFrame[param_0][0])) { + onResetFlg1(RFLG1_UNK_4); + } else if (temp_r31->checkPass(l_wolfFootOnFrame[param_0][1])) { + onResetFlg1(RFLG1_UNK_8); + } else if (temp_r31->checkPass(l_wolfFootOnFrame[param_0][2])) { + onResetFlg1(RFLG1_UNK_10); + } else if (temp_r31->checkPass(l_wolfFootOnFrame[param_0][3])) { + onResetFlg1(RFLG1_UNK_20); + } } /* 80121304-80121388 11BC44 0084+00 1/1 0/0 0/0 .text setFootMark__9daAlink_cFP4cXyzUsi @@ -117,12 +308,412 @@ void daAlink_c::setFootMark(cXyz* i_pos, u16 i_mtxNo, int param_2) { /* 80121388-801221F0 11BCC8 0E68+00 1/1 0/0 0/0 .text setEffect__9daAlink_cFv */ void daAlink_c::setEffect() { - // NONMATCHING + if (mProcID == PROC_CUT_TURN || mProcID == PROC_BOARD_CUT_TURN) { + setCutTurnEffect(); + } else if (mProcID == PROC_HORSE_CUT_TURN) { + setHorseCutTurnEffect(); + } else if (mProcID == PROC_WOLF_ROLL_ATTACK) { + setWolfRollAttackEffect(); + } else if (mProcID == PROC_ELEC_DAMAGE) { + setElecDamageEffect(); + } + + if (checkMagneBootsOn() || (checkEquipHeavyBoots() && mLinkAcch.i_ChkGroundHit() && + dComIfG_Bgsp().GetMagnetCode(mLinkAcch.m_gnd) == 2)) + { + if (!checkMagneBootsOn() && !checkNoResetFlg3(FLG3_UNK_1)) { + mZ2Link.setMagnetized(true); + onNoResetFlg3(FLG3_UNK_1); + } + setMagneBootsEffect(); + } else if (checkNoResetFlg3(FLG3_UNK_1)) { + offNoResetFlg3(FLG3_UNK_1); + mZ2Link.setMagnetized(false); + } + + if (getSumouMode() != 0) { + setSumouEffect(); + } else { + setWaterfallEffect(); + } + + setSwordChargeEffect(); + + if (checkWolf()) { + setWolfLockAttackEffect(); + setWolfJumpAttackEffect(); + } else { + setBootsLightEffect(); + } + + setLightningSwordEffect(); + + if (mLinkAcch.ChkWallHit()) { + cXyz spD0; + cXyz spC4; + + dBgS_AcchCir* acchcir = mAcchCir; + for (int i = 0; i < 3; i++) { + if (acchcir->ChkWallHit() && checkWolfBarrierWallHit(*acchcir)) { + spD0.set(current.pos.x, current.pos.y + acchcir->GetWallH(), current.pos.z); + spC4.set(spD0.x - (acchcir->GetWallR() + 5.0f) * cM_ssin(acchcir->GetWallAngleY()), + spD0.y, + spD0.z - (acchcir->GetWallR() + 5.0f) * cM_scos(acchcir->GetWallAngleY())); + + if (commonLineCheck(&spD0, &spC4) && checkWolfBarrierWallHit(mLinkLinChk)) { + setWolfBarrierHitEffect(mLinkLinChk); + break; + } + } + + acchcir++; + } + } + + setWaterDropEffect(); + setSwordUpColorEffect(); + setSwordCutSplash(); + setWoodShieldBurnEffect(); + setFreezeEffect(); + + if (mProcID == PROC_METAMORPHOSE) { + setMetamorphoseEffect(); + } else { + setRunSplash(); + } + + setBottleEffect(); + + if (checkEndResetFlg0(ERFLG0_UNK_20000000) || 0.0f != field_0x346c) { + if (checkEndResetFlg0(ERFLG0_UNK_20000000) && field_0x346c < 0.0f) { + field_0x346c *= -1.0f; + } + + field_0x346c += 0.0625f; + + if (field_0x346c > 1.0f) { + if (checkNoResetFlg3(FLG3_UNK_200000) && + dComIfGp_getNeedLightDropNum() == + dComIfGs_getLightDropNum(dComIfGp_getStartStageDarkArea())) + { + field_0x346c = 1.0f; + + if (checkEventRun()) { + changeOriginalDemo(); + changeDemoMode(0x5E, 0, 0, 0); + } + } else { + field_0x346c = -1.0f; + } + } + } + + cXyz spB8(current.pos); + cXyz spAC(current.pos); + cXyz spA0; + + if (checkModeFlg(0x40000)) { + if (checkWolf()) { + spB8.x += 40.0f * cM_ssin(current.angle.y); + spB8.z += 40.0f * cM_scos(current.angle.y); + spAC.y -= daAlinkHIO_wlSwim_c0::m.field_0x48; + } else { + spAC.y -= daAlinkHIO_swim_c0::m.mInitHeight; + } + + spB8.y = mWaterY; + if (checkNoResetFlg0(FLG0_SWIM_UP) && mNormalSpeed > 8.0f) { + setEmitterPolyColor(&field_0x31c0, 0x1BC, mLinkAcch.m_wtr, &spB8, ¤t.angle); + } + spB8.y = spAC.y; + } else if (checkModeFlg(0x10000) && mProcVar4.field_0x3010 != 0 && + 0.0f != mUnderFrameCtrl[0].getRate() && dComIfG_Bgsp().ChkPolySafe(mPolyInfo1) && + (dKy_pol_efftype_get(&mPolyInfo1) == 1 || dKy_pol_efftype_get(&mPolyInfo1) == 1)) + { + int sp44; + if (dKy_pol_efftype_get(&mPolyInfo1) == 1) { + sp44 = 0; + } else { + sp44 = 1; + } + + field_0x31c0 = + dComIfGp_particle_setPolyColor(field_0x31c0, 0x333, mPolyInfo1, ¤t.pos, &tevStr, + &shape_angle, NULL, sp44, NULL, -1, NULL); + dComIfGp_particle_levelEmitterOnEventMove(field_0x31c0); + } + + if (mProcID == PROC_DEAD && (field_0x2f9d & 4)) { + mDoMtx_multVecZero(mpLinkModel->getAnmMtx(mProcVar4.field_0x3010), &spAC); + mLinkGndChk.SetPos(&spAC); + + f32 temp_f1 = dComIfG_Bgsp().GroundCross(&mLinkGndChk); + if (fabsf(current.pos.y - temp_f1) < 50.0f) { + spAC.y = temp_f1; + } + } + + if (!checkWolf()) { + mDoMtx_multVecZero(mpLinkModel->getAnmMtx(field_0x30b4), &spA0); + + if (spA0.y < (mWaterY - 50.0f)) { + JPABaseEmitter* sp40 = + setEmitterPolyColor(&field_0x31bc, 0x1E8, mLinkAcch.m_wtr, &spA0, &shape_angle); + if (sp40 != NULL) { + sp40->setParticleCallBackPtr(dPa_control_c::getWaterBubblePcallBack()); + } + } + + if (dComIfGp_checkPlayerStatus0(0, 8)) { + spB8.x -= 30.0f * cM_ssin(shape_angle.y); + spB8.z -= 30.0f * cM_scos(shape_angle.y); + spAC.y = mLeftFootPos.y; + spB8.y = spAC.y; + } else if (dComIfGp_checkPlayerStatus1(0, 0x02000000)) { + spB8.x += 60.0f * cM_ssin(shape_angle.y); + spB8.z += 60.0f * cM_scos(shape_angle.y); + + if (mRightFootPos.y < mLeftFootPos.y) { + spAC.y = mRightFootPos.y; + } else { + spAC.y = mLeftFootPos.y; + } + + spB8.y = spAC.y; + } else if (dComIfGp_checkPlayerStatus1(0, 0x10000)) { + spAC.y = mLeftFootPos.y; + spB8.y = spAC.y; + } + } + + u32 var_r28 = 0; + u32 var_r29 = 0; + + cXyz sp94(mRightFootPos); + cXyz sp88(mLeftFootPos); + cXyz sp7C(mRightHandPos); + cXyz sp70(mLeftHandPos); + cXyz sp64(spAC); + + if (mEffProc == EFFPROC_SUMOU) { + if (mProcID == PROC_SUMOU_SHIKO || mProcID == PROC_SUMOU_WIN_LOSE) { + var_r28 = 1; + sp88.y = current.pos.y; + } + } else if (mEffProc == EFFPROC_LAND) { + var_r28 |= 0x3B; + } else if (mEffProc == EFFPROC_FRONT_ROLL) { + if (mProcID == PROC_SLIDE) { + var_r29 |= 4; + } + + var_r28 |= 4; + var_r29 |= 0x10000; + } else if (mEffProc == EFFPROC_SLIP) { + if (checkWolf()) { + sp94.y -= 10.0f; + sp88.y -= 10.0f; + sp7C.y -= 10.0f; + sp70.y -= 10.0f; + sp64.y -= 10.0f; + } + var_r29 |= 0x10000; + } else if (mEffProc == EFFPROC_RUN) { + if (checkWolf() && field_0x2f9d != 0) { + var_r29 |= 0x10000; + } + } else if (mEffProc == EFFPROC_SMALL_LAND) { + var_r28 |= 0x38; + if (checkWolf()) { + var_r28 |= 3; + } + } + + if (checkCanoeRide() || checkModeFlg(0x10000)) { + var_r29 |= 0x40000; + } + + BOOL sp3C = 0; + + if (mProcID == PROC_SUMOU_MOVE && + (field_0x3198 == 0x14C || field_0x3198 == 0x14D || field_0x3198 == 0x155)) + { + sp3C = 1; + current.angle.y += 0x8000; + } + + f32 temp_f30 = field_0x3798.absXZ(current.pos); + if ((!checkModeFlg(0x70C52) && (mLinkAcch.i_ChkGroundHit() || checkMagneBootsOn())) || + mProcID == PROC_SUMOU_WIN_LOSE || (checkBoardRide() && !checkModeFlg(2)) || + mProcID == PROC_WOLF_TAG_JUMP) + { + field_0x2e54.setEffectFour( + &tevStr, &spB8, var_r28, var_r29, (field_0x2f9d & 0x04) ? &sp64 : NULL, + (field_0x2f9d & 0x08) ? &sp70 : NULL, (field_0x2f9d & 0x10) ? &sp7C : NULL, + (field_0x2f9d & 0x20) ? &sp88 : NULL, (field_0x2f9d & 0x40) ? &sp94 : NULL, + ¤t.angle, NULL, fopAcM_GetRoomNo(this), field_0x3420, temp_f30); + + if (checkBoardRide() && temp_f30 > 3.0f && field_0x2fbb == 0xD) { + JPABaseEmitter* sp38 = setEmitterPolyColor(&field_0x31c0, 0x8B8F, mLinkAcch.m_gnd, + ¤t.pos, &shape_angle); + if (sp38 != NULL) { + cXyz sp58; + f32 var_f31 = temp_f30 / daAlinkHIO_board_c0::m.mEffectMaxSpeed; + if (var_f31 > 1.0f) { + var_f31 = 1.0f; + } + sp38->setRate(1.0f + (2.0f * var_f31)); + sp38->setAwayFromCenterSpeed(1.0f + (4.0f * var_f31)); + + sp58.x = 0.7f + (0.3f * var_f31); + sp58.y = sp58.x; + sp58.z = sp58.x; + sp38->setGlobalParticleScale(sp58); + sp38->setGlobalAlpha(50.0f + (205.0f * var_f31)); + } + } + } else { + field_0x2e54.setEffectFour(&tevStr, &spB8, var_r28, var_r29, NULL, NULL, NULL, NULL, NULL, + ¤t.angle, NULL, fopAcM_GetRoomNo(this), field_0x3420, + temp_f30); + } + + if (mEffProc != EFFPROC_NONE) { + (this->*m_fEffParamProc[mEffProc])(); + } + + if (mWaterY > current.pos.y) { + field_0x2fc4 = 0x96; + } + + int var_r26; + if ((checkResetFlg1(daPy_RFLG1(RFLG1_UNK_20 | RFLG1_UNK_10 | RFLG1_UNK_8 | RFLG1_UNK_4)) || + (field_0x2fc1 != 6 && field_0x2f8c != 2)) && + current.pos.y > mWaterY && + (field_0x2fc4 != 0 || (mSinkShapeOffset < 0.0f && mSinkShapeOffset >= -15.0f))) + { + if (mSinkShapeOffset < 0.0f && mSinkShapeOffset >= -15.0f) { + if (field_0x2fbb == 3) { + var_r26 = 1; + } else { + var_r26 = 2; + } + } else { + var_r26 = 0; + } + + if (checkWolf() && field_0x2fc1 != 6) { + setWolfFootOn(field_0x2fc1); + + if (field_0x2fc1 == 4) { + setWolfFootOn(5); + } + } + + if (checkResetFlg1(RFLG1_UNK_10)) { + setFootMark(&mLeftFootPos, field_0x30bc, var_r26); + } + + if (checkResetFlg1(RFLG1_UNK_20)) { + setFootMark(&mRightFootPos, field_0x30be, var_r26); + } + + if (checkResetFlg1(RFLG1_UNK_4)) { + setFootMark(&mLeftHandPos, field_0x30b8, var_r26); + } + + if (checkResetFlg1(RFLG1_UNK_8)) { + setFootMark(&mRightHandPos, field_0x30ba, var_r26); + } + } + + if (sp3C) { + current.angle.y += 0x8000; + } + + setFirePointDamageEffect(); } /* 801221F0-801225E8 11CB30 03F8+00 1/1 0/0 0/0 .text setSumouEffect__9daAlink_cFv */ void daAlink_c::setSumouEffect() { - // NONMATCHING + daPy_frameCtrl_c* temp_r28 = &mUnderFrameCtrl[0]; + cXyz sp14; + + if (mProcID == PROC_SUMOU_ACTION) { + if ((field_0x3198 == 0x14F) || (field_0x3198 == 0x151) || (field_0x3198 == 0x150)) { + JPABaseEmitter* temp_r3 = setEmitter(&field_0x31c8, 0x8538, ¤t.pos, NULL); + if (temp_r3 != NULL) { + temp_r3->setGlobalRTMatrix(mpLinkModel->getAnmMtx(9)); + if (field_0x3198 == 0x151) { + temp_r3->setLifeTime(5); + } + } + + if (field_0x3198 != 0x150) { + if (temp_r28->getFrame() >= 12.0f) { + mDoMtx_multVecZero(mpLinkModel->getAnmMtx(9), &sp14); + setEmitter(&field_0x31cc, 0x8539, &sp14, NULL); + setEmitter(&field_0x31d0, 0x853A, &sp14, &shape_angle); + } + } + } else if (field_0x3198 == 0x145 || field_0x3198 == 0x146 || field_0x3198 == 0x14E || + field_0x3198 == 0x147) + { + if (field_0x3198 != 0x14E && + (field_0x3198 == 0x145 || field_0x3198 == 0x146 || temp_r28->getFrame() >= 29.0f)) + { + JPABaseEmitter* temp_r3_2 = + setEmitter(&field_0x31c8, 0x8542, &field_0x3834, &shape_angle); + if (temp_r3_2 != NULL) { + temp_r3_2->setGlobalRTMatrix(mpLinkModel->getAnmMtx(0)); + } + + JPABaseEmitter* temp_r3_3 = + setEmitter(&field_0x31cc, 0x8541, &field_0x3834, &shape_angle); + if (temp_r3_3 != NULL) { + temp_r3_3->setGlobalRTMatrix(mpLinkModel->getAnmMtx(0)); + } + } + + if (temp_r28->getFrame() >= 35.0f || + (field_0x3198 == 0x14E && temp_r28->getFrame() >= 3.0f) || + ((field_0x3198 == 0x145 || field_0x3198 == 0x146) && temp_r28->getFrame() >= 7.0f)) + { + f32 var_f31; + if (field_0x3198 == 0x147) { + var_f31 = 40.0f; + } else { + var_f31 = 30.0f; + } + + sp14.set(field_0x3834.x + (var_f31 * cM_ssin(shape_angle.y)), field_0x3834.y, + field_0x3834.z + (var_f31 * cM_scos(shape_angle.y))); + setEmitter(&field_0x31d0, 0x8539, &sp14, NULL); + setEmitter(&field_0x31d4, 0x853A, &sp14, &shape_angle); + } + } + } else if (mProcID == PROC_SUMOU_MOVE) { + if (field_0x3198 == 0x154) { + JPABaseEmitter* temp_r3_4 = + setEmitter(&field_0x31c8, 0x8545, &field_0x3834, &shape_angle); + if (temp_r3_4 != NULL) { + mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(0)); + mDoMtx_stack_c::transM(36.0f, 84.0f, 0.0f); + temp_r3_4->setGlobalRTMatrix(mDoMtx_stack_c::get()); + } + } else if (field_0x3198 == 0x155) { + if (temp_r28->getFrame() >= 17.0f) { + JPABaseEmitter* temp_r3_5 = + setEmitter(&field_0x31c8, 0x853A, &field_0x3834, &shape_angle); + if (temp_r3_5 != NULL) { + mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(0)); + mDoMtx_stack_c::XrotM(0x7FFF); + temp_r3_5->setGlobalRTMatrix(mDoMtx_stack_c::get()); + temp_r3_5->setGlobalScale(releaeScale); + } + } + } + } } /* 801225E8-80122654 11CF28 006C+00 1/1 0/0 0/0 .text setWaterfallEffect__9daAlink_cFPC4cXyzPUl */ @@ -133,90 +724,541 @@ void daAlink_c::setWaterfallEffect(cXyz const* param_0, u32* param_1) { /* 80122654-8012277C 11CF94 0128+00 1/1 0/0 0/0 .text setWaterfallEffect__9daAlink_cFv */ void daAlink_c::setWaterfallEffect() { - // NONMATCHING + Vec sp8; + if (checkEndResetFlg1(ERFLG1_UNK_800)) { + if (checkWolf()) { + mDoMtx_multVecZero(mpLinkModel->getAnmMtx(3), &sp8); + sp8.y += 5.0f; + } else { + mDoMtx_multVecZero(mpLinkModel->getAnmMtx(3), &sp8); + } + + setWaterfallEffect((cXyz*)&sp8, &field_0x31c8); + } + + if (checkWolf() && checkEndResetFlg1(ERFLG1_UNK_1000)) { + mDoMtx_multVecZero(mpLinkModel->getAnmMtx(0x1A), &sp8); + sp8.y -= 15.0f; + setWaterfallEffect((cXyz*)&sp8, &field_0x31d0); + } + + if (checkEndResetFlg1(daPy_ERFLG1(ERFLG1_UNK_1000 | ERFLG1_UNK_800))) { + seStartOnlyReverbLevel(Z2SE_AL_IN_WATER_FALL); + } } /* 8012277C-801228F4 11D0BC 0178+00 1/1 0/0 0/0 .text setMagneBootsEffect__9daAlink_cFv */ void daAlink_c::setMagneBootsEffect() { - // NONMATCHING + cXyz sp20; + + int i, j; + for (i = 0; i < 2; i++) { + if (i == 0) { + sp20 = mLeftFootPos - current.pos; + } else { + sp20 = mRightFootPos - current.pos; + } + + if (checkMagneBootsOn()) { + mDoMtx_multVecSR(mMagneBootInvMtx, &sp20, &sp20); + } + + if (sp20.y < 6.0f) { + u32* var_r28 = field_0x3228[i]; + + for (j = 0; j < 3; j++, var_r28++) { + JPABaseEmitter* temp_r3 = setEmitter(var_r28, effName_40765[j], ¤t.pos, NULL); + if (temp_r3 != NULL) { + if (j == 1) { + temp_r3->setGlobalRTMatrix(mpLinkBootModels[i]->getAnmMtx(1)); + } else { + temp_r3->setGlobalRTMatrix(mpLinkBootModels[i]->getAnmMtx(2)); + } + } + } + } + } } /* 801228F4-80122BBC 11D234 02C8+00 1/1 0/0 0/0 .text setSwordChargeEffect__9daAlink_cFv */ void daAlink_c::setSwordChargeEffect() { - // NONMATCHING + f32 var_f30; + BOOL temp_r3 = checkMasterSwordEquip(); + if (temp_r3) { + var_f30 = l_swordTopLocalM.x; + } else { + var_f30 = l_swordTopLocalN.x; + } + + f32 var_f31 = m_nSwordBtk->getFrame(); + if (var_f31 > 0.0f) { + cXyz sp50; + if (!checkWoodSwordEquip()) { + JPABaseEmitter* temp_r3_2 = setEmitter(&field_0x321c, 0x368, ¤t.pos, NULL); + if (temp_r3_2 != NULL) { + temp_r3_2->setGlobalRTMatrix(mSwordModel->getBaseTRMtx()); + + if (temp_r3) { + temp_r3_2->setGlobalParticleScale(lightAParticleScale); + temp_r3_2->setLocalTranslation(lightALocalTrans); + } + } + } + + cXyz sp44; + mDoMtx_multVecSR(mSwordModel->getBaseTRMtx(), &cXyz::BaseX, &sp50); + mDoMtx_multVecZero(mSwordModel->getBaseTRMtx(), &sp44); + + if (var_f31 >= 14.0f) { + var_f31 = 14.0f; + } + + sp50 = sp44 + ((sp50 * (var_f31 + 1.0f)) * (var_f30 / 15.0f)); + setEmitter(&field_0x3220, 0x36A, &sp50, NULL); + + if (var_f31 >= 14.0f) { + setEmitter(&field_0x3224, 0x36B, &sp50, NULL); + } else { + if (checkWolf() || checkWoodSwordEquip()) { + seStartSwordCut(Z2SE_WOLF_POWER_COME); + } else { + seStartSwordCut(Z2SE_SWORD_POWER_COME); + } + } + } else { + JPABaseEmitter* temp_r3_4 = dComIfGp_particle_getEmitter(field_0x321c); + if (temp_r3_4 != NULL) { + u8 temp_r3_5 = temp_r3_4->getGlobalAlpha(); + if (temp_r3_5 > 17) { + JPABaseEmitter* temp_r3_6 = setEmitter(&field_0x321c, 0x368, ¤t.pos, NULL); + if (temp_r3_6 != NULL) { + temp_r3_6->setGlobalRTMatrix(mSwordModel->getBaseTRMtx()); + temp_r3_6->setGlobalAlpha(temp_r3_5 - 17); + } + } else { + temp_r3_4->setGlobalAlpha(0); + } + } + + stopDrawParticle(field_0x3220); + stopDrawParticle(field_0x3224); + } } /* 80122BBC-80122F18 11D4FC 035C+00 1/1 0/0 0/0 .text setElecDamageEffect__9daAlink_cFv */ void daAlink_c::setElecDamageEffect() { - // NONMATCHING + cXyz sp54; + const u16* var_r28 = checkStageName("D_MN09A") ? effName1 : effName0; + int i; + + if (checkWolf()) { + mDoMtx_multVec(mpLinkModel->getAnmMtx(2), &localOffset_40952, &sp54); + + for (i = 0; i < 3; i++, var_r28++) { + JPABaseEmitter* emitter = setEmitter(&field_0x31d8[i], *var_r28, &sp54, &shape_angle); + if (emitter != NULL) { + if (i == 2) { + emitter->setLocalScale(localScale1); + } else { + emitter->setLocalScale(localScale0); + } + } + } + } else { + mDoMtx_multVecZero(mpLinkModel->getAnmMtx(1), &sp54); + + for (i = 0; i < 3; i++, var_r28++) { + setEmitter(&field_0x31d8[i], *var_r28, &sp54, &shape_angle); + } + + if (checkHookshotItem(mEquipItem) && mItemMode == 6 && checkStageName("D_MN01")) { + sp54 = (mHeldItemRootPos + mHookshotTopPos) * 0.5f; + + cXyz sp48 = mHookshotTopPos - mHeldItemRootPos; + csXyz sp10(sp48.atan2sY_XZ(), sp48.atan2sX_Z(), 0); + + JPABaseEmitter* temp_r3_2 = setEmitter(&field_0x31e4, 0x8682, &sp54, &sp10); + if (temp_r3_2 != NULL) { + temp_r3_2->setVolumeSize(sp48.abs()); + } + } + } } /* 80122F18-80122F78 11D858 0060+00 1/1 0/0 0/0 .text clearCutTurnEffectID__9daAlink_cFv */ void daAlink_c::clearCutTurnEffectID() { - // NONMATCHING + for (int i = 0; i < 6; i++) { + stopDrawParticle(field_0x3204[i]); + field_0x3204[i] = 0; + } } /* 80122F78-801233A4 11D8B8 042C+00 1/1 0/0 0/0 .text setCutTurnEffect__9daAlink_cFv */ +// NONMATCHING - should match when data order is fixed void daAlink_c::setCutTurnEffect() { - // NONMATCHING + f32 temp_f1 = mUnderFrameCtrl[0].getFrame(); + + if (!(temp_f1 < mProcVar1.field_0x300a)) { + /* static s16 leftRotNormal[] = { + cM_deg2s(180), cM_deg2s(45), cM_deg2s(13), cM_deg2s(180), cM_deg2s(45), cM_deg2s(13), + }; + + static s16 leftRotLight[] = { + cM_deg2s(180), cM_deg2s(100), cM_deg2s(13), cM_deg2s(180), cM_deg2s(80), cM_deg2s(13), + cM_deg2s(180), cM_deg2s(80), cM_deg2s(13), cM_deg2s(180), cM_deg2s(80), cM_deg2s(13), + }; + + static s16 leftRotLarge[] = { + cM_deg2s(180), cM_deg2s(45), cM_deg2s(13), cM_deg2s(180), cM_deg2s(45), cM_deg2s(13), + cM_deg2s(180), cM_deg2s(60), cM_deg2s(13), cM_deg2s(180), cM_deg2s(60), cM_deg2s(13), + cM_deg2s(180), cM_deg2s(60), cM_deg2s(13), cM_deg2s(180), cM_deg2s(60), cM_deg2s(13), + }; + + static s16 leftRotWater[] = { + cM_deg2s(-90), cM_deg2s(0), cM_deg2s(180), cM_deg2s(0), cM_deg2s(0), cM_deg2s(180), + }; */ + + u32* sp2C = field_0x3204; + const u16* sp28; + JGeometry::TVec3* sp24; + JGeometry::TVec3* sp20; + int sp1C; + BOOL sp18 = 0; + + if (checkNoResetFlg0(FLG0_UNDERWATER)) { + if (checkZoraWearAbility()) { + sp28 = effNameWater; + sp24 = (JGeometry::TVec3*)leftRotWater; + sp20 = (JGeometry::TVec3*)leftTransWater; + sp1C = 2; + if (mCutType == 0x18 || mCutType == 0x17) { + sp18 = 1; + } + } else { + return; + } + } else if (mCutType == 0x18 || mCutType == 0x17) { + sp28 = effNameLarge; + sp24 = (JGeometry::TVec3*)leftRotLarge; + sp20 = (JGeometry::TVec3*)leftTransLarge; + sp1C = 6; + } else if (checkNoResetFlg3(FLG3_UNK_100000)) { + sp28 = effNameLight; + sp24 = (JGeometry::TVec3*)leftRotLight; + sp20 = (JGeometry::TVec3*)leftTransLight; + sp1C = 4; + } else { + sp28 = effNameNormal; + sp24 = (JGeometry::TVec3*)leftRotNormal; + sp20 = (JGeometry::TVec3*)leftTransNormal; + sp1C = 2; + } + + cXyz sp40; + mDoMtx_multVecZero(mpLinkModel->getAnmMtx(1), &sp40); + + if (checkMagneBootsOn()) { + mDoMtx_stack_c::transS(sp40); + mDoMtx_stack_c::concat(mMagneBootMtx); + mDoMtx_stack_c::ZXYrotM(shape_angle); + } + + for (int i = 0; i < sp1C; i++, sp2C++, sp28++, sp24++, sp20++) { + JPABaseEmitter* sp30 = setEmitter(sp2C, *sp28, &sp40, &shape_angle); + if (sp30 != NULL) { + if (checkMagneBootsOn()) { + sp30->setGlobalRTMatrix(mDoMtx_stack_c::get()); + } + + if (mProcVar4.field_0x3010 == 0) { + sp30->setLocalRotation(*sp24); + if (sp20->y > 1.0f) { + sp30->setLocalTranslation(*sp20); + } + } + + if (sp18) { + if (i == 0) { + sp30->setGlobalParticleScale(waterEffScale); + } else { + sp30->setVolumeSize(225); + sp30->setAwayFromAxisSpeed(15.0f); + } + } + } + } + } } /* 801233A4-80123434 11DCE4 0090+00 1/1 0/0 0/0 .text setHorseCutTurnEffect__9daAlink_cFv */ void daAlink_c::setHorseCutTurnEffect() { - // NONMATCHING + cXyz sp20; + csXyz sp28(0, shape_angle.y, shape_angle.z); + + mDoMtx_multVecZero(mpLinkModel->getAnmMtx(1), &sp20); + setEmitter(&field_0x3204[0], 0x1F0, &sp20, &sp28); + setEmitter(&field_0x3204[1], 0x1F1, &sp20, &sp28); } /* 80123434-801236BC 11DD74 0288+00 1/1 0/0 0/0 .text setCutLargeJumpLandEffect__9daAlink_cFv */ void daAlink_c::setCutLargeJumpLandEffect() { - // NONMATCHING + cXyz sp50(current.pos.x + cM_ssin(shape_angle.y) * 20.0f, current.pos.y + 50.0f, current.pos.z + cM_scos(shape_angle.y) * 20.0f); + csXyz sp58; + cM3dGPla sp44; + + mLinkGndChk.SetPos(&sp50); + f32 var_f31 = dComIfG_Bgsp().GroundCross(&mLinkGndChk); + if (var_f31 < current.pos.y - 50.0f) { + sp50.y = current.pos.y; + dComIfG_Bgsp().GetTriPla(mLinkAcch.m_gnd, &sp44); + } else { + sp50.y = var_f31; + dComIfG_Bgsp().GetTriPla(mLinkGndChk, &sp44); + } + + sp58.x = cM_atan2s(sp44.mNormal.absXZ(), sp44.mNormal.y); + sp58.y = sp44.mNormal.atan2sX_Z(); + sp58.z = 0; + + for (int i = 0; i < 6; i++) { + dComIfGp_particle_set(effName_41208[i], &sp50, &tevStr, &sp58, NULL); + } } /* 801236BC-801237A8 11DFFC 00EC+00 1/1 0/0 0/0 .text setBootsLightEffect__9daAlink_cFv */ void daAlink_c::setBootsLightEffect() { - // NONMATCHING + if (checkStageName("F_SP116")) { + if (dComIfGs_isOneZoneSwitch(0, fopAcM_GetRoomNo(this))) { + for (int i = 0; i < 4; i++) { + JPABaseEmitter* emitter = setEmitter(&field_0x326c[i], effName_41286[i], ¤t.pos, &shape_angle); + if (emitter != NULL) { + emitter->setGlobalRTMatrix(mpLinkModel->getAnmMtx(jointID[i])); + } + } + + seStartOnlyReverbLevel(Z2SE_AL_SHOE_PKPK); + } + } } /* 801237A8-801238FC 11E0E8 0154+00 1/1 0/0 0/0 .text setLightningSwordEffect__9daAlink_cFv */ void daAlink_c::setLightningSwordEffect() { - // NONMATCHING + if (checkEndResetFlg2(ERFLG2_UNK_10)) { + JPABaseEmitter* emitter = setEmitter(&field_0x3294, 0x8B9E, ¤t.pos, &shape_angle); + if (emitter != NULL) { + emitter->setGlobalRTMatrix(mSwordModel->getBaseTRMtx()); + } + + seStartOnlyReverbLevel(Z2SE_AL_LIGHTNING_SW_GET); + } else { + stopDrawParticle(field_0x3294); + } + + int i; + if (mEquipItem == 0x103 && checkNoResetFlg3(FLG3_UNK_100000)) { + seStartOnlyReverbLevel(Z2SE_AL_LIGHTNING_SW_GLOW); + + for (i = 0; i < 3; i++) { + JPABaseEmitter* emitter = setEmitter(&field_0x327c[i], effName_41312[i], ¤t.pos, &shape_angle); + if (emitter != NULL) { + emitter->setGlobalRTMatrix(mSwordModel->getBaseTRMtx()); + } + } + } else { + for (i = 0; i < 3; i++) { + stopDrawParticle(field_0x327c[i]); + } + } } /* 801238FC-801239B0 11E23C 00B4+00 1/1 0/0 0/0 .text setWolfRollAttackEffect__9daAlink_cFv */ void daAlink_c::setWolfRollAttackEffect() { - // NONMATCHING + cXyz sp20(current.pos.x, current.pos.y + 80.0f, current.pos.z); + csXyz sp28(shape_angle.x, shape_angle.y, 0); + + if (mProcVar2.field_0x300c == 0) { + sp28.x += 0x8000; + } + + setEmitter(&field_0x3204[0], 0x1E4, &sp20, &sp28); + if (mProcVar3.field_0x300e == 0) { + setEmitter(&field_0x3204[1], 0x1E5, &sp20, &sp28); + } } /* 801239B0-80123BF0 11E2F0 0240+00 1/1 0/0 0/0 .text setWolfDigEffect__9daAlink_cFv */ void daAlink_c::setWolfDigEffect() { - // NONMATCHING + if (dComIfG_Bgsp().ChkPolySafe(mPolyInfo2)) { + f32 var_f31 = 3.0f; + f32 var_f30; + csXyz sp18(getGroundAngle(&mPolyInfo2, shape_angle.y), shape_angle.y, 0); + + u16 var_r29, var_r28; + u16 var_r26; + if (field_0x3198 == 3) { + var_r29 = 0x884B; + var_r28 = 0x881B; + } else if (field_0x3198 == 0xD) { + var_r29 = 0x884C; + var_r28 = 0x881D; + } else if (field_0x3198 == 1) { + var_r29 = 0x200; + var_r28 = 0xE6; + } else if (field_0x3198 == 4) { + var_r29 = 0x200; + + if (dKy_pol_efftype_get(&mPolyInfo2) == 1) { + var_r28 = 0x143; + var_r26 = 0xE6; + var_f30 = 3.0f; + } else { + var_r28 = 0xE6; + var_r26 = 0x143; + var_f30 = 15.0f; + var_f31 = 3.0f; + } + + field_0x32cc = dComIfGp_particle_setPolyColor(field_0x32cc, var_r26, mPolyInfo2, &field_0x37d4, &tevStr, &sp18, NULL, 1, NULL, -1, NULL); + JPABaseEmitter* temp_r3 = dComIfGp_particle_getEmitter(field_0x32cc); + if (temp_r3 != NULL) { + temp_r3->setAwayFromAxisSpeed(var_f30); + dComIfGp_particle_levelEmitterOnEventMove(field_0x32cc); + } + } else if (field_0x3198 == 7) { + var_r29 = 0; + var_r28 = 0x1B1; + setEmitterPolyColor(&field_0x32cc, 0x1AF, mPolyInfo2, &field_0x37d4, &sp18); + setEmitterPolyColor(&field_0x31bc, 0x1B0, mPolyInfo2, &field_0x37d4, &sp18); + } else { + var_r29 = 0; + var_r28 = 0xE6; + } + + if (var_r29 != 0) { + setEmitter(&field_0x31bc, var_r29, &field_0x37d4, &sp18); + } + + JPABaseEmitter* temp_r3_2 = setEmitterPolyColor(&field_0x31c0, var_r28, mPolyInfo2, &field_0x37d4, &sp18); + if (temp_r3_2 != NULL && field_0x3198 != 7) { + temp_r3_2->setAwayFromAxisSpeed(var_f31); + } + } } /* 80123BF0-80123C8C 11E530 009C+00 2/2 0/0 0/0 .text * setWolfSwimEndEffect__9daAlink_cFPP14JPABaseEmitterPP14JPABaseEmitter */ void daAlink_c::setWolfSwimEndEffect(JPABaseEmitter** param_0, JPABaseEmitter** param_1) { - // NONMATCHING + int var_r30 = mProcVar3.field_0x300e; + if (var_r30 >= 3 || var_r30 < 0) { + var_r30 = 1; + } + + *param_0 = setEmitterColor(&field_0x32cc, name0[var_r30], &field_0x37c8, &shape_angle); + + if (var_r30 != 0) { + *param_1 = setEmitterColor(&field_0x31bc, name1[var_r30], &field_0x37c8, &shape_angle); + } } /* 80123C8C-80123D88 11E5CC 00FC+00 1/1 0/0 0/0 .text setWolfLockAttackEffect__9daAlink_cFv */ void daAlink_c::setWolfLockAttackEffect() { - // NONMATCHING + u8 var_r30; + if (dComIfGp_checkPlayerStatus1(0, 0x01000000)) { + var_r30 = 0xFF; + } else { + JPABaseEmitter* temp_r3 = dComIfGp_particle_getEmitter(field_0x31b0[0]); + if (temp_r3 != NULL) { + var_r30 = temp_r3->getGlobalAlpha(); + if (var_r30 >= 51) { + var_r30 -= 51; + } else { + var_r30 = 0; + } + } else { + var_r30 = 0; + } + } + + if (var_r30 != 0) { + cXyz sp8; + mDoMtx_multVecZero(mpLinkModel->getAnmMtx(37), &sp8); + + for (int i = 0; i < 3; i++) { + JPABaseEmitter* temp_r3_3 = setEmitter(&field_0x31b0[i], effID[i], &sp8, &shape_angle); + if (temp_r3_3 != NULL) { + temp_r3_3->setGlobalAlpha(var_r30); + } + } + } } /* 80123D88-80123ED0 11E6C8 0148+00 1/1 0/0 0/0 .text setWolfJumpAttackEffect__9daAlink_cFv */ void daAlink_c::setWolfJumpAttackEffect() { - // NONMATCHING + cXyz sp8; + + u8 var_r30; + if (mProcID == PROC_WOLF_JUMP_ATTACK && mProcVar4.field_0x3010 != 0) { + mDoMtx_multVecZero(mpLinkModel->getAnmMtx(3), &sp8); + setEmitter(&field_0x3288, 0xA9F, &sp8, &shape_angle); + setEmitter(&field_0x328c, 0xAA0, &sp8, &shape_angle); + var_r30 = 0xFF; + } else { + stopDrawParticle(field_0x3288); + stopDrawParticle(field_0x328c); + + JPABaseEmitter* temp_r3 = dComIfGp_particle_getEmitter(field_0x3290); + if (temp_r3 != NULL) { + var_r30 = temp_r3->getGlobalAlpha(); + if (var_r30 >= 51) { + var_r30 -= 51; + } else { + var_r30 = 0; + } + } else { + var_r30 = 0; + } + } + + if (var_r30 != 0) { + mDoMtx_multVecZero(mpLinkModel->getAnmMtx(0x25), &sp8); + + JPABaseEmitter* temp_r3_3 = setEmitter(&field_0x3290, 0xB6F, &sp8, &shape_angle); + if (temp_r3_3 != NULL) { + temp_r3_3->setGlobalAlpha(var_r30); + } + } } /* 80123ED0-80124144 11E810 0274+00 2/2 0/0 0/0 .text * setWolfBarrierHitEffect__9daAlink_cFR11dBgS_LinChk */ void daAlink_c::setWolfBarrierHitEffect(dBgS_LinChk& param_0) { - // NONMATCHING + cM3dGPla sp10; + dComIfG_Bgsp().GetTriPla(param_0, &sp10); + + field_0x3102 = cM_atan2s(-sp10.mNormal.x, -sp10.mNormal.z); + + csXyz sp8(cM_atan2s(sp10.mNormal.y, sp10.mNormal.absXZ()), field_0x3102, 0); + + const u16* var_r30; + s16 temp_r3 = getMoveBGActorName(param_0, 1); + if (temp_r3 == PROC_Obj_GanonWall2 || temp_r3 == PROC_OBJ_GB) { + var_r30 = ganonNameID; + } else { + var_r30 = normalNameID; + } + + for (int i = 0; i < 2; i++, var_r30++) { + dComIfGp_particle_set(*var_r30, param_0.GetCrossP(), &sp8, NULL); + } + + mDoAud_seStart(Z2SE_OBJ_BARRIER_COLLISION, param_0.GetCrossP(), 0, 0); + field_0x3100 = 3; } /* 80124144-801241E0 11EA84 009C+00 9/9 0/0 0/0 .text setCutWaterDropEffect__9daAlink_cFv @@ -225,14 +1267,86 @@ void daAlink_c::setCutWaterDropEffect() { if (field_0x32c0[0] > 0) { cXyz sp18; mDoMtx_multVecZero(mpLinkModel->getAnmMtx(1), &sp18); - dComIfGp_particle_setColor(0x2A4, &sp18, &tevStr, NULL, NULL, 0.0f, -1, - &shape_angle, NULL, NULL, -1, NULL); + dComIfGp_particle_setColor(0x2A4, &sp18, &tevStr, NULL, NULL, 0.0f, -1, &shape_angle, NULL, + NULL, -1, NULL); } } /* 801241E0-801244E4 11EB20 0304+00 1/1 0/0 0/0 .text setWaterDropEffect__9daAlink_cFv */ void daAlink_c::setWaterDropEffect() { - // NONMATCHING + Vec spC; + int i; + + if (checkEndResetFlg1(daPy_ERFLG1(ERFLG1_UNK_20000 | ERFLG1_UNK_1000 | ERFLG1_UNK_800))) { + for (i = 0; i < 2; i++) { + field_0x32c0[i] = -1; + } + } else if (!checkNoResetFlg0(FLG0_UNK_80) || field_0x2fbc == 6) { + for (i = 0; i < 2; i++) { + if (field_0x32c0[i] > 0) { + field_0x32c0[i]--; + } else if (field_0x32c0[i] == -1) { + field_0x32c0[i] = 150; + } + } + } else { + for (i = 0; i < 2; i++) { + mDoMtx_multVecZero(mpLinkModel->getAnmMtx(field_0x32c4[i]), &spC); + + if (spC.y < mWaterY - 5.0f) { + field_0x32c0[i] = -1; + } else if (spC.y > mWaterY && field_0x32c0[i] == -1) { + field_0x32c0[i] = 150; + } else if (field_0x32c0[i] > 0) { + field_0x32c0[i]--; + } + } + } + + const u16* var_r29; + if (checkWolf()) { + var_r29 = &effDataTable[2]; + } else { + var_r29 = &effDataTable[0]; + } + + for (i = 0; i < 2; i++, var_r29++) { + if (field_0x32c0[i] > 0) { + JPABaseEmitter* temp_r3 = setEmitterColor(&field_0x3298[i], *var_r29, ¤t.pos, NULL); + if (temp_r3 != NULL) { + temp_r3->setGlobalRTMatrix(mpLinkModel->getAnmMtx(field_0x32c4[i])); + + if (checkPlayerNoDraw()) { + temp_r3->stopDrawParticle(); + } else { + temp_r3->playDrawParticle(); + } + } + } + + if (field_0x32c0[i] != 0) { + if (field_0x32a0[i].a > -20) { + field_0x32a0[i].a -= 2; + + if (field_0x32a0[i].a < -20) { + field_0x32a0[i].a = -20; + } + } + } else if (field_0x32a0[i].a < 0) { + field_0x32a0[i].a++; + } + + s16 var_r27; + if (!checkNoResetFlg2(daPy_FLG2(FLG2_UNK_100000 | FLG2_UNK_80000))) { + var_r27 = field_0x32a0[i].a * 0.65f; + } else { + var_r27 = field_0x32a0[i].a * 0.4f; + } + + field_0x32a0[i].r = var_r27; + field_0x32a0[i].g = var_r27; + field_0x32a0[i].b = var_r27; + } } /* 801244E4-801245EC 11EE24 0108+00 1/1 0/0 0/0 .text setSwordUpColorEffect__9daAlink_cFv @@ -253,10 +1367,27 @@ void daAlink_c::setSwordUpColorEffect() { } } - /* 801245EC-80124738 11EF2C 014C+00 1/1 0/0 0/0 .text setSwordCutSplash__9daAlink_cFv */ void daAlink_c::setSwordCutSplash() { - // NONMATCHING + if (mCutType != 0 && mProcID != PROC_CUT_TURN && getCutAtFlg() != 0 && checkNoResetFlg0(FLG0_UNK_80) && mEquipItem == 0x103) { + if (mSwordTopPos.y <= mWaterY && field_0x34b0.y > mWaterY) { + cXyz sp14(mSwordTopPos.x, mWaterY, mSwordTopPos.z); + + for (int i = 0; i < 4; i++) { + JPABaseEmitter* temp_r3 = setEmitterPolyColor(&field_0x31e8[i], cutSplashName[i], mLinkAcch.m_wtr, &sp14, NULL); + if (temp_r3 != NULL) { + temp_r3->setRateStep(5); + temp_r3->setGlobalScale(swordCutSplashScale); + + if (cutSplashName[i] == 0x1B9) { + temp_r3->setRate(5.0f); + } else if (cutSplashName[i] == 0x1BB) { + temp_r3->setDirectionalSpeed(5.0f); + } + } + } + } + } } /* 80124738-801247A8 11F078 0070+00 1/1 0/0 0/0 .text setMetamorphoseEffectStartLink__9daAlink_cFv @@ -270,20 +1401,90 @@ void daAlink_c::setMetamorphoseEffectStartLink() { /* 801247A8-801248A8 11F0E8 0100+00 1/1 0/0 0/0 .text setMetamorphoseEffect__9daAlink_cFv */ void daAlink_c::setMetamorphoseEffect() { - // NONMATCHING + if (mProcVar1.field_0x300a == 0) { + if (mProcVar5.field_0x3012 != 0) { + if (checkWolf()) { + setMetamorphoseEffectStartLink(); + } else { + setEmitter(&field_0x31fc, 0x251, &field_0x37c8, NULL); + } + } else if (checkWolf()) { + JPABaseEmitter* temp_r30 = setEmitter(&field_0x31f8, 0x252, ¤t.pos, NULL); + mDoMtx_multVecZero(mpLinkModel->getAnmMtx(2), &field_0x37c8); + + if (temp_r30 != NULL) { + temp_r30->setGlobalRTMatrix(mpLinkModel->getAnmMtx(2)); + } + } else { + mDoMtx_multVecZero(mpLinkModel->getAnmMtx(2), &field_0x37c8); + setMetamorphoseEffectStartLink(); + } + } } /* 801248A8-80124A2C 11F1E8 0184+00 1/1 0/0 0/0 .text setRunSplash__9daAlink_cFv */ void daAlink_c::setRunSplash() { - // NONMATCHING + if (mProcID == PROC_MOVE && checkNoResetFlg0(FLG0_UNK_80) && checkDashAnime()) { + f32 temp_f31 = mWaterY - current.pos.y; + if (temp_f31 >= daAlinkHIO_basic_c0::m.mWaterSurfaceEffectHeight && temp_f31 < field_0x598 && dKy_pol_efftype_get(&mLinkAcch.m_wtr) == 2) { + cXyz sp8(current.pos.x, mWaterY, current.pos.z); + + JPABaseEmitter* temp_r3 = setEmitterPolyColor(&field_0x31f8, 0x1AF, mLinkAcch.m_wtr, &sp8, ¤t.angle); + if (temp_r3 != NULL) { + temp_r3->setLifeTime(10); + temp_r3->setDirectionalSpeed(5.0f); + } + + sp8.set(current.pos.x + (70.0f * cM_ssin(shape_angle.y)), 20.0f + mWaterY, current.pos.z + (70.0f * cM_scos(shape_angle.y))); + setEmitterPolyColor(&field_0x31fc, 0x1B0, mLinkAcch.m_wtr, &sp8, ¤t.angle); + sp8.y = mWaterY; + + JPABaseEmitter* temp_r3_2 = setEmitterPolyColor(&field_0x3200, 0x1B1, mLinkAcch.m_wtr, &sp8, ¤t.angle); + if (temp_r3_2 != NULL) { + temp_r3_2->setLifeTime(20); + temp_r3_2->setDirectionalSpeed(4.5f); + } + } + } } /* 80124A2C-80124B68 11F36C 013C+00 1/0 0/0 0/0 .text * execute__29dAlink_bottleWaterPcallBack_cFP14JPABaseEmitterP15JPABaseParticle */ -extern "C" void execute__29dAlink_bottleWaterPcallBack_cFP14JPABaseEmitterP15JPABaseParticle() { - // asm void dAlink_bottleWaterPcallBack_c::execute(JPABaseEmitter* param_0, JPABaseParticle* - // param_1) { - // NONMATCHING +void dAlink_bottleWaterPcallBack_c::execute(JPABaseEmitter* param_0, JPABaseParticle* param_1) { + JGeometry::TVec3 sp18; + param_1->getGlobalPosition(sp18); + + if (sp18.y < mKeepMinY) { + mKeepMinY = sp18.y; + } + + cXyz spC(sp18.x, daAlink_getAlinkActorClass()->getHeadTopPosP()->y, sp18.z); + + BOOL var_r29 = 0; + BOOL var_r30 = 0; + + if (fopAcM_gc_c::gndCheck(&spC)) { + if (sp18.y < fopAcM_gc_c::getGroundY()) { + mHitFlg = 1; + mHitPos.set(spC.x, fopAcM_gc_c::getGroundY(), spC.z); + + var_r29 = 1; + var_r30 = 1; + } + } + + if (fopAcM_wt_c::waterCheck(&spC)) { + if (sp18.y < fopAcM_wt_c::getWaterY() && (!var_r29 || mHitPos.y < fopAcM_wt_c::getWaterY())) { + mHitFlg = 1; + mHitPos.set(spC.x, fopAcM_wt_c::getWaterY(), spC.z); + var_r30 = 1; + } + } + + if (var_r30) { + param_1->setInvisibleParticleFlag(); + param_1->setDeleteParticleFlag(); + } } /* 80124B68-80124BA4 11F4A8 003C+00 2/2 0/0 0/0 .text resetFairyEffect__9daAlink_cFv */ @@ -294,7 +1495,41 @@ void daAlink_c::resetFairyEffect() { /* 80124BA4-80124E28 11F4E4 0284+00 1/1 0/0 0/0 .text setBottleEffect__9daAlink_cFv */ void daAlink_c::setBottleEffect() { - // NONMATCHING + if (mEquipItem == FAIRY) { + if (mpHookTipModel != NULL) { + cXyz sp2C; + mDoMtx_multVecZero(mpHookTipModel->getAnmMtx(2), &sp2C); + + JPABaseEmitter* temp_r3 = setEmitter(&field_0x3258, 0x72F, &sp2C, NULL); + if (temp_r3 != NULL) { + temp_r3->setGlobalScale(fairyScale); + } + + setEmitter(&field_0x325c, 0x734, &sp2C, NULL); + } + } else if (mEquipItem == CHUCHU_RARE && mProcID == PROC_BOTTLE_GET) { + if (field_0x072c != NULL && field_0x072c->getFrame() < 2.0f) { + cXyz sp20; + mDoMtx_multVec(mHeldItemModel->getAnmMtx(0), &chuchuLocalOffset, &sp20); + + JPABaseEmitter* temp_r3_2 = setEmitter(&field_0x3258, 0xC14, &sp20, NULL); + if (temp_r3_2 != NULL) { + temp_r3_2->setGlobalScale(chuchuScale); + } + } + } else if (mProcID == PROC_BOTTLE_OPEN && mProcVar3.field_0x300e != 0 && mEquipItem == WATER_BOTTLE) { + JPABaseEmitter* temp_r3_3 = setEmitter(&field_0x325c, 0x344, ¤t.pos, NULL); + if (temp_r3_3 != NULL) { + temp_r3_3->setGlobalRTMatrix(mHeldItemModel->getBaseTRMtx()); + temp_r3_3->setParticleCallBackPtr(&field_0x27c8); + } + + if (!field_0x27c8.getAppearFlg() && field_0x27c8.getHitFlg()) { + dComIfGp_particle_set(0x345, &field_0x27c8.getHitPos(), NULL, NULL); + dComIfGp_particle_set(0x346, &field_0x27c8.getHitPos(), NULL, NULL); + field_0x27c8.onAppearFlg(); + } + } } /* 80124E28-80124EA8 11F768 0080+00 2/2 0/0 0/0 .text clearFirePointDamageEffect__9daAlink_cFi */ @@ -312,23 +1547,149 @@ void daAlink_c::clearFirePointDamageEffect(int i_effNo) { /* 80124EA8-80124FA4 11F7E8 00FC+00 1/1 0/0 0/0 .text initFirePointDamageEffectAll__9daAlink_cFv */ void daAlink_c::initFirePointDamageEffectAll() { - // NONMATCHING + firePointEff_c* eff = field_0x32d8; + + int var_r29; + if (checkWolf()) { + var_r29 = 1; + } else { + var_r29 = 0; + } + + for (int i = 0; i < 4; i++, eff++) { + eff->field_0x0 = 1; + eff->field_0x2 = effJoint[var_r29][i]; + eff->field_0x4 = 0; + eff->field_0x8 = 0; + eff->field_0x24 = cXyz::Zero; + eff->field_0x18 = effOffset[var_r29][i]; + + mDoMtx_multVec(mpLinkModel->getAnmMtx(eff->field_0x2), &eff->field_0x18, &eff->field_0xc); + } } /* 80124FA4-80125128 11F8E4 0184+00 1/1 0/0 0/0 .text * initFirePointDamageEffect__9daAlink_cFPC4cXyzP12dCcD_GObjInf */ void daAlink_c::initFirePointDamageEffect(cXyz const* param_0, dCcD_GObjInf* param_1) { - // NONMATCHING + firePointEff_c* eff = field_0x32d8; + + int i; + for (i = 0; i < 4; i++, eff++) { + if (eff->field_0x0 == 0) { + break; + } + } + + if (i != 4) { + cXyz* var_r27 = getDamageVec(param_1); + + csXyz sp38(var_r27->atan2sY_XZ(), var_r27->atan2sX_Z(), 0); + csXyz sp40; + cXyz sp30; + + int var_r30 = field_0x2e44.getHitmarkPosAndAngle(param_0, &sp38, &sp30, &sp40, 0); + if (var_r30 == -1 || (!checkWolf() && (var_r30 == 1 || var_r30 == 15 || var_r30 == 16))) { + return; + } + + eff->field_0x2 = field_0x2e44.getJntNum(var_r30); + eff->field_0xc = *param_0; + eff->field_0x24 = cXyz::Zero; + eff->field_0x0 = 1; + eff->field_0x4 = 0; + + mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(eff->field_0x2)); + mDoMtx_stack_c::inverse(); + mDoMtx_stack_c::multVec(&sp30, &eff->field_0x18); + } } /* 80125128-80125338 11FA68 0210+00 1/1 0/0 0/0 .text setFirePointDamageEffect__9daAlink_cFv */ void daAlink_c::setFirePointDamageEffect() { - // NONMATCHING + firePointEff_c* var_r30 = field_0x32d8; + cXyz sp24; + + BOOL var_r25 = 0; + + for (int i = 0; i < 4; i++, var_r30++) { + if (var_r30->field_0x0 != 0) { + mDoMtx_multVec(mpLinkModel->getAnmMtx(var_r30->field_0x2), &var_r30->field_0x18, &sp24); + + if (mWaterY > sp24.y) { + clearFirePointDamageEffect(i); + } else { + BOOL var_r26; + if (var_r30->field_0x4 == 0) { + var_r30->field_0x24 = cXyz::Zero; + var_r26 = 1; + } else { + var_r30->field_0x24 = (sp24 - var_r30->field_0xc) * 0.9f; + var_r26 = 0; + } + + JPABaseEmitter* temp_r28 = setEmitter(&var_r30->field_0x4, 0x742, &sp24, NULL); + if (temp_r28 != NULL && temp_r28->isEnableDeleteEmitter()) { + clearFirePointDamageEffect(i); + } else { + if (var_r26 && temp_r28 != NULL) { + temp_r28->setParticleCallBackPtr(dPa_control_c::getParticleTracePCB()); + temp_r28->setUserWork((u32)&var_r30->field_0x24); + } + + JPABaseEmitter* temp_r28_2 = setEmitter(&var_r30->field_0x8, 0x743, &sp24, NULL); + if (var_r26 && temp_r28_2 != NULL) { + temp_r28_2->setParticleCallBackPtr(dPa_control_c::getParticleTracePCB()); + temp_r28_2->setUserWork((u32)&var_r30->field_0x24); + } + + var_r30->field_0xc = sp24; + var_r25 = 1; + } + } + } + } + + if (var_r25 || field_0x2fcb != 0) { + seStartOnlyReverbLevel(Z2SE_AL_BURNING); + } } /* 80125338-80125524 11FC78 01EC+00 1/1 0/0 0/0 .text setFreezeEffect__9daAlink_cFv */ void daAlink_c::setFreezeEffect() { - // NONMATCHING + cXyz sp14; + + if (checkFreezeDamage()) { + if (mProcID == PROC_DAMAGE || mProcID == PROC_SWIM_FREEZE_RETURN || mProcID == PROC_WOLF_DAMAGE) { + const Vec* var_r28; + if (checkWolf()) { + mDoMtx_multVec(mpLinkModel->getAnmMtx(2), &offsetPos, &sp14); + var_r28 = &wolfEffScale; + } else { + mDoMtx_multVecZero(mpLinkModel->getAnmMtx(1), &sp14); + var_r28 = &effScale; + } + + JPABaseEmitter* temp_r3 = setEmitter(&field_0x3268, 0x881A, &sp14, &shape_angle); + if (temp_r3 != NULL) { + temp_r3->setLocalScale(*var_r28); + } + } + + onNoResetFlg3(FLG3_UNK_800); + } else if (checkNoResetFlg3(FLG3_UNK_800)) { + if (checkWolf()) { + mDoMtx_multVecZero(mpLinkModel->getAnmMtx(2), &sp14); + } else { + mDoMtx_multVecZero(mpLinkModel->getAnmMtx(1), &sp14); + } + + for (int i = 0; i < 2; i++) { + dComIfGp_particle_setColor(effName_42224[i], &sp14, &tevStr, NULL, NULL, 0.0f, 0xFF); + } + + stopDrawParticle(field_0x3268); + offNoResetFlg3(FLG3_UNK_800); + } } /* 80125524-801255BC 11FE64 0098+00 1/1 0/0 0/0 .text setWoodShieldBurnEffect__9daAlink_cFv */ @@ -359,8 +1720,8 @@ void daAlink_c::clearWoodShieldBurnEffect() { /* 80125628-801256EC 11FF68 00C4+00 1/1 0/0 0/0 .text setWoodShieldBurnOutEffect__9daAlink_cFv */ void daAlink_c::setWoodShieldBurnOutEffect() { for (int i = 0; i < 2; i++) { - JPABaseEmitter* emitter = dComIfGp_particle_setColor( - effName_42340[i], ¤t.pos, &tevStr, NULL, NULL, 0.0f, -1); + JPABaseEmitter* emitter = dComIfGp_particle_setColor(effName_42340[i], ¤t.pos, + &tevStr, NULL, NULL, 0.0f, -1); if (emitter != NULL) { emitter->setGlobalRTMatrix(mShieldModel->getBaseTRMtx()); @@ -387,49 +1748,154 @@ void daAlink_blur_c::initBlur(f32 param_0, int param_1, cXyz const* param_2, cXy /* 80125778-8012589C 1200B8 0124+00 1/1 0/0 0/0 .text * setBezierPos__FPC4cXyzPC4cXyzPC4cXyzPC4cXyzfP4cXyz */ -static void setBezierPos(cXyz const* param_0, cXyz const* param_1, cXyz const* param_2, - cXyz const* param_3, f32 param_4, cXyz* param_5) { - // NONMATCHING +static void setBezierPos(cXyz const* start, cXyz const* control_1, cXyz const* control_2, + cXyz const* end, f32 t, cXyz* out_pos) { + f32 one_minus_t; + f32 one_minus_t_squared; + f32 weight_1; + f32 weight_2; + f32 t_squared; + + one_minus_t = 1.0f - t; + one_minus_t_squared = one_minus_t * one_minus_t; + t_squared = t * t; + + weight_1 = (one_minus_t_squared * 3.0f) * t; + weight_2 = (t_squared * 3.0f) * one_minus_t; + + one_minus_t_squared *= one_minus_t; + t_squared *= t; + + *out_pos = (((*start * one_minus_t_squared) + (*control_2 * weight_1)) + (*end * weight_2)) + + (*control_1 * t_squared); } /* 8012589C-80125B0C 1201DC 0270+00 1/1 0/0 0/0 .text * copyBlur__14daAlink_blur_cFPC4cXyzPC4cXyzPC4cXyz */ +// NONMATCHING void daAlink_blur_c::copyBlur(cXyz const* param_0, cXyz const* param_1, cXyz const* param_2) { - // NONMATCHING + for (int i = 59 - 10; i >= 0; i--) { + field_0x38[i + 10] = field_0x38[i]; + field_0x308[i + 10] = field_0x308[i]; + } + + f32 temp_f30 = 1.0f / 10; + f32 var_f31 = 0.0f; + + cXyz sp4C; + cXyz sp58; + cXyz sp64; + cXyz sp70; + + sp58 = field_0x308[10] + (field_0x2c * 30.0f); + sp4C = *param_1 + (*param_2 * -30.0f); + sp70 = field_0x38[10] + (field_0x2c * 60.0f); + sp64 = *param_0 + (*param_2 * -60.0f); + + for (int i = 0; i < 10; i++) { + setBezierPos(param_1, &field_0x308[10], &sp4C, &sp58, var_f31, &field_0x308[i]); + setBezierPos(param_0, &field_0x38[10], &sp64, &sp70, var_f31, &field_0x38[i]); + + field_0x38[i] += (field_0x38[i] - field_0x308[i]) * field_0x24; + var_f31 += temp_f30; + } + + field_0x2c = *param_2; + + field_0x14 += 10; + if (field_0x14 >= 59) { + field_0x14 = 58; + } } /* 80125B0C-80125BF4 12044C 00E8+00 1/1 0/0 0/0 .text traceBlur__14daAlink_blur_cFPC4cXyzPC4cXyzs */ void daAlink_blur_c::traceBlur(cXyz const* param_0, cXyz const* param_1, s16 param_2) { - // NONMATCHING -} + mDoMtx_stack_c::transS(*param_0); + mDoMtx_stack_c::YrotM(param_2); + mDoMtx_stack_c::transM(-param_1->x, -param_1->y, -param_1->z); -/* ############################################################################################## */ -/* 804256CC-804256EC 0523EC 0020+00 1/1 0/0 0/0 .bss texObj$42524 */ -static u8 texObj[32]; + cXyz sp20; + for (int i = 0; i < field_0x14; i++) { + sp20 = field_0x38[i]; + mDoMtx_stack_c::multVec(&sp20, &field_0x38[i]); -/* 804506A4-804506A8 000124 0004+00 1/1 0/0 0/0 .sdata nColor0$42525 */ -static u8 nColor0[4] = { - 0xFF, - 0xFF, - 0xFF, - 0x14, -}; + sp20 = field_0x308[i]; + mDoMtx_stack_c::multVec(&sp20, &field_0x308[i]); + } +} /* 80125BF4-80125F14 120534 0320+00 1/0 0/0 0/0 .text draw__14daAlink_blur_cFv */ -extern "C" void draw__14daAlink_blur_cFv() { - // asm void daAlink_blur_c::draw() { - // NONMATCHING +void daAlink_blur_c::draw() { + j3dSys.reinitGX(); + + static GXTexObj ALIGN_DECL(32) texObj; + static GXColor nColor0 = {0xFF, 0xFF, 0xFF, 0x14}; + + GXSetNumIndStages(0); + nColor0.a = field_0x20; + + GXInitTexObj(&texObj, (void*)((u32)m_blurTex + m_blurTex->imageOffset), 0x10, 4, GX_TF_I4, + GX_CLAMP, GX_CLAMP, GX_FALSE); + GXInitTexObjLOD(&texObj, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, + GX_ANISO_1); + GXLoadTexObj(&texObj, GX_TEXMAP0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_F32, 0); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBA4, 8); + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetNumChans(0); + GXSetTevColor(GX_TEVREG0, nColor0); + GXSetNumTexGens(1); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3C); + GXSetNumTevStages(1); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_A0, GX_CA_TEXA, GX_CA_ZERO); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); + GXLoadPosMtxImm(j3dSys.getViewMtx(), GX_PNMTX0); + GXSetCurrentMtx(0); + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_SET); + GXSetCullMode(GX_CULL_NONE); + GXSetZMode(GX_ENABLE, GX_LEQUAL, GX_DISABLE); + GXSetAlphaCompare(GX_GREATER, 0, GX_AOP_OR, GX_GREATER, 0); + + int temp_r26 = 0xFF / ((field_0x14 >> 1) + 1); + s16 var_r28 = temp_r26; + s16 var_r27 = 0; + + GXBegin(GX_QUADS, GX_VTXFMT0, (field_0x14 * 4) + 4); + + for (int i = field_0x14; i >= 0; i--) { + GXPosition3f32(field_0x38[i].x, field_0x38[i].y, field_0x38[i].z); + GXTexCoord2s16(var_r28, 0); + + GXPosition3f32(field_0x308[i].x, field_0x308[i].y, field_0x308[i].z); + GXTexCoord2s16(var_r28, 0xFF); + + GXPosition3f32(field_0x308[i + 1].x, field_0x308[i + 1].y, field_0x308[i + 1].z); + GXTexCoord2s16(var_r27, 0xFF); + + GXPosition3f32(field_0x38[i + 1].x, field_0x38[i + 1].y, field_0x38[i + 1].z); + GXTexCoord2s16(var_r27, 0); + + var_r27 = var_r28; + var_r28 += temp_r26; + } + + GXEnd(); + J3DShape::resetVcdVatCache(); } /* 80125F14-80126350 120854 043C+00 1/1 0/0 0/0 .text create__20daAlink_lockCursor_cFv */ BOOL daAlink_lockCursor_c::create() { JKRArchive* arc = dComIfG_getObjectResInfo(l_arcName)->getArchive(); - f32 tmp = 0.0f; - field_0x2c = tmp; + field_0x2c = 0.0f; field_0x4 = false; - field_0x30 = tmp; + field_0x30 = 0.0f; mScrn = new J2DScreen(); if (mScrn == NULL) { @@ -490,9 +1956,8 @@ BOOL daAlink_lockCursor_c::create() { mCursor0->setAnimation(field_0x20); mCursor1->setAnimation(field_0x20); mCursor2->setAnimation(field_0x20); - f32 tmp2 = 0.0f; - field_0x1c->setFrame(tmp2); - field_0x20->setFrame(tmp2); + field_0x1c->setFrame(0.0f); + field_0x20->setFrame(0.0f); mScrn->animation(); mScrn->setUserInfo('n_43'); @@ -514,13 +1979,59 @@ extern "C" void setAnimation__7J2DPaneFP11J2DAnmColor() { /* 80126358-80126424 120C98 00CC+00 1/1 0/0 0/0 .text update__20daAlink_lockCursor_cFv */ void daAlink_lockCursor_c::update() { - // NONMATCHING + if (field_0x2c < 21.0f) { + field_0x2c = 21.0f; + } + + field_0x2c += 0.9f; + + if (field_0x2c >= 50.0f) { + field_0x2c += -29.0f; + } + + field_0x30 += 0.9f; + + if (field_0x30 >= field_0x1c->getFrameMax()) { + field_0x30 -= field_0x1c->getFrameMax(); + } + + cLib_chaseUC(&field_0x4, 0x80, 30); } /* 80126424-80126650 120D64 022C+00 1/0 0/0 0/0 .text draw__20daAlink_lockCursor_cFv */ -extern "C" void draw__20daAlink_lockCursor_cFv() { - // asm void daAlink_lockCursor_c::draw() { - // NONMATCHING +void daAlink_lockCursor_c::draw() { + if (field_0x4 != 0) { + field_0x28->setFrame(field_0x2c); + + f32 var_f30; + if (field_0x2c > 21.0f) { + var_f30 = 21.0f; + } else { + var_f30 = field_0x2c; + } + + field_0x24->setFrame(var_f30); + field_0x1c->setFrame(field_0x30); + + mScrn->animation(); + field_0xc->scale(0.6f, 0.6f); + field_0xc->translate(mPosX, mPosY); + + if (!(field_0x2c < 15.0f)) { + f32 var_f31; + if (field_0x2c < 21.0f) { + var_f31 = ((field_0x2c - 15.0f) * 40.0f) * 0.16666667f; + } else { + var_f31 = ((field_0x4 * 0.00390625f) + 0.5f) * 40.0f; + } + + mCursor0->translate(0.0f, -var_f31); + mCursor1->translate(var_f31 * cM_fcos(2.617994f), var_f31 * cM_fsin(2.617994f)); + mCursor2->translate(var_f31 * cM_fcos(0.5235988f), var_f31 * cM_fsin(0.5235988f)); + } + + mScrn->draw(0.0f, 0.0f, dComIfGp_getCurrentGrafPort()); + } } /* 80126650-801266C0 120F90 0070+00 1/1 0/0 0/0 .text create__15daAlink_sight_cFv */ @@ -535,9 +2046,13 @@ BOOL daAlink_sight_c::create() { } /* 801266C0-80126710 121000 0050+00 1/0 0/0 0/0 .text draw__15daAlink_sight_cFv */ -extern "C" void draw__15daAlink_sight_cFv() { - // asm void daAlink_sight_c::draw() { - // NONMATCHING +void daAlink_sight_c::draw() { + if (mLockFlag) { + mLockCursor.setPos(field_0x14[0][3], field_0x14[1][3]); + mLockCursor.draw(); + } else { + daPy_sightPacket_c::draw(); + } } /* 80126710-80126740 121050 0030+00 2/2 0/0 0/0 .text onLockFlg__15daAlink_sight_cFv */ diff --git a/src/d/actor/d_a_alink_grab.inc b/src/d/actor/d_a_alink_grab.inc index a28be3bf71a..8b6388b8cbb 100644 --- a/src/d/actor/d_a_alink_grab.inc +++ b/src/d/actor/d_a_alink_grab.inc @@ -160,67 +160,13 @@ BOOL daAlink_c::checkGrabRooster() { return false; } -/* ############################################################################################## */ -/* 80425628-80425634 052348 000C+00 0/1 0/0 0/0 .bss @4421 */ -#pragma push -#pragma force_active on -static u8 lit_4421[12]; -#pragma pop - -/* 80425634-80425640 052354 000C+00 2/3 0/0 0/0 .bss l_wolfRopeBaseAnime */ -static Vec l_wolfRopeBaseAnime; - -/* 80425640-8042564C 052360 000C+00 0/1 0/0 0/0 .bss @14255 */ -#pragma push -#pragma force_active on -static u8 lit_14255[12]; -#pragma pop - -/* 8042564C-80425658 05236C 000C+00 0/1 0/0 0/0 .bss grabCarryOffset0$14254 */ -#pragma push -#pragma force_active on -static u8 grabCarryOffset0[12]; -#pragma pop - -/* 80425658-80425664 052378 000C+00 0/1 0/0 0/0 .bss @14259 */ -#pragma push -#pragma force_active on -static u8 lit_14259[12]; -#pragma pop - -/* 80425664-80425670 052384 000C+00 0/1 0/0 0/0 .bss grabCarryOffset1$14258 */ -#pragma push -#pragma force_active on -static u8 grabCarryOffset1[12]; -#pragma pop - -/* 80425670-8042567C 052390 000C+00 0/1 0/0 0/0 .bss @14263 */ -#pragma push -#pragma force_active on -static u8 lit_14263[12]; -#pragma pop - -/* 8042567C-80425688 05239C 000C+00 0/1 0/0 0/0 .bss grabCarryOffset2$14262 */ -#pragma push -#pragma force_active on -static u8 grabCarryOffset2[12]; -#pragma pop - -/* 80425688-80425694 0523A8 000C+00 0/1 0/0 0/0 .bss @14267 */ -#pragma push -#pragma force_active on -static u8 lit_14267[12]; -#pragma pop - -/* 80425694-804256A0 0523B4 000C+00 0/1 0/0 0/0 .bss grabCarryOffset3$14266 */ -#pragma push -#pragma force_active on -static u8 grabCarryOffset3[12]; -#pragma pop - /* 800E3F50-800E4BD4 0DE890 0C84+00 1/1 0/0 0/0 .text setGrabItemPos__9daAlink_cFv */ void daAlink_c::setGrabItemPos() { // NONMATCHING + static cXyz grabCarryOffset0(0.0f, -30.0f, 25.0f); + static cXyz grabCarryOffset1(0.0f, 20.0f, -5.0f); + static cXyz grabCarryOffset2(-3.0f, 30.0f, -30.0f); + static cXyz grabCarryOffset3(-4.5f, 26.0f, -33.0f); } /* 800E4BD4-800E4DEC 0DF514 0218+00 16/16 0/0 0/0 .text freeGrabItem__9daAlink_cFv */ diff --git a/src/d/actor/d_a_alink_hook.inc b/src/d/actor/d_a_alink_hook.inc index 719b7c4abcf..65aad5148af 100644 --- a/src/d/actor/d_a_alink_hook.inc +++ b/src/d/actor/d_a_alink_hook.inc @@ -830,15 +830,8 @@ void daAlink_c::setHookshotTopPosFly() { } } -/* ############################################################################################## */ -/* 804256A0-804256AC 0523C0 000C+00 0/1 0/0 0/0 .bss @29722 */ -#pragma push -#pragma force_active on -static u8 lit_29722[12]; -#pragma pop - /* 804256AC-804256B8 0523CC 000C+00 1/2 0/0 0/0 .bss l_hookSnowSandHitScale */ -static Vec l_hookSnowSandHitScale; +static cXyz l_hookSnowSandHitScale(0.5f, 0.5f, 0.5f); /* 80109BDC-8010B2DC 10451C 1700+00 1/1 0/0 0/0 .text setHookshotPos__9daAlink_cFv */ // NONMATCHING - almost, just cXyz stack order diff --git a/src/d/actor/d_a_alink_link.inc b/src/d/actor/d_a_alink_link.inc index 170a935d526..09ae9d599de 100644 --- a/src/d/actor/d_a_alink_link.inc +++ b/src/d/actor/d_a_alink_link.inc @@ -2017,12 +2017,6 @@ int daAlink_c::procCrouch() { return 1; } -/* 80425604-80425610 052324 000C+00 0/1 0/0 0/0 .bss l_sumouBaseAnimeSp */ -static cXyz l_sumouBaseAnimeSp; - -/* 8042561C-80425628 05233C 000C+00 37/39 0/0 0/0 .bss l_wolfBaseAnime */ -static cXyz l_wolfBaseAnime; - BOOL daMidna_c::checkMidnaRealBody() { return dKy_darkworld_check() == 1 || dComIfGs_isTransformLV(3); } diff --git a/src/d/actor/d_a_alink_weakfn.inc b/src/d/actor/d_a_alink_weakfn.inc index 2aaa7473800..0b1f40599d7 100644 --- a/src/d/actor/d_a_alink_weakfn.inc +++ b/src/d/actor/d_a_alink_weakfn.inc @@ -1236,13 +1236,8 @@ extern "C" u8 func_80141AE8(u8*) { } /* 80141B04-801446D4 13C444 2BD0+00 0/0 1/0 0/0 .text __sinit_d_a_alink_cpp */ -void __sinit_d_a_alink_cpp(){// NONMATCHING -} - -#pragma push -#pragma force_active on -REGISTER_CTORS(0x80141B04, __sinit_d_a_alink_cpp); -#pragma pop +/* void __sinit_d_a_alink_cpp(){// NONMATCHING +} */ /* 801446D4-801446DC 13F014 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ static void func_801446D4() { diff --git a/src/d/actor/d_a_alink_wolf.inc b/src/d/actor/d_a_alink_wolf.inc index 1ac02273a9d..fe168f1d52a 100644 --- a/src/d/actor/d_a_alink_wolf.inc +++ b/src/d/actor/d_a_alink_wolf.inc @@ -211,8 +211,8 @@ void daAlink_c::changeWolf() { field_0x30b4 = 4; field_0x30bc = 31; field_0x30be = 36; - field_0x32c4 = 1; - field_0x32c6 = 2; + field_0x32c4[0] = 1; + field_0x32c4[1] = 2; field_0x30b6 = 2; attention_info.field_0xa = 50; @@ -474,8 +474,8 @@ void daAlink_c::changeLink(int param_0) { field_0x30bc = 21; field_0x30be = 26; field_0x30b6 = 5; - field_0x32c4 = 2; - field_0x32c6 = 16; + field_0x32c4[0] = 2; + field_0x32c4[1] = 16; attention_info.field_0xa = 10; dCcD_Cyl* cyl_p = field_0x850; @@ -5747,13 +5747,13 @@ BOOL daAlink_c::setWolfEnemyHangBitePos(fopEn_enemy_c* i_enemy) { /* ############################################################################################## */ /* 804256EC-804256F8 05240C 000C+00 0/1 0/0 0/0 .bss @50952 */ -#pragma push +/* #pragma push #pragma force_active on static u8 lit_50952[12]; -#pragma pop +#pragma pop */ /* 804256F8-80425708 052418 000C+04 1/2 0/0 0/0 .bss l_wolfBiteHitMarkScale */ -static Vec l_wolfBiteHitMarkScale; +static cXyz l_wolfBiteHitMarkScale(0.5f, 0.5f, 0.5f); /* 801396F8-801397A4 134038 00AC+00 1/1 0/0 0/0 .text * setWolfBiteDamage__9daAlink_cFP13fopEn_enemy_c */ @@ -7834,13 +7834,7 @@ int daAlink_c::procWolfDigThroughInit(int param_0) { mProcVar5.field_0x3012 = param_0; - u16* var_r29; - if (var_r27 == 13) { - var_r29 = snowID; - } else { - var_r29 = smokeID; - } - + const u16* var_r29 = var_r27 == 13 ? snowID : smokeID; for (int i = 0; i < 4; i++) { dComIfGp_particle_set(*var_r29, ¤t.pos, &shape_angle, NULL); var_r29++; diff --git a/src/d/actor/d_a_boomerang.cpp b/src/d/actor/d_a_boomerang.cpp index eae338e24ed..41dbb175f48 100644 --- a/src/d/actor/d_a_boomerang.cpp +++ b/src/d/actor/d_a_boomerang.cpp @@ -242,7 +242,7 @@ extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; */ int daBoomerang_sight_c::createHeap() { void* resource; - char* arcName = daAlink_c::getAlinkArcName(); + const char* arcName = daAlink_c::getAlinkArcName(); JKRArchive* loader = dComIfG_getObjectResInfo(arcName)->getArchive(); field_0x4 = new J2DScreen(); @@ -2033,4 +2033,4 @@ static u8 data_804A2DB0[4]; static u8 data_804A2DB4[4]; #pragma pop -/* 804A2990-804A2990 000140 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ \ No newline at end of file +/* 804A2990-804A2990 000140 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ diff --git a/src/d/d_particle.cpp b/src/d/d_particle.cpp index 927f61ef303..a84bee23ebf 100644 --- a/src/d/d_particle.cpp +++ b/src/d/d_particle.cpp @@ -1194,7 +1194,7 @@ u8 dPa_control_c::mLifeBall[24]; JPAEmitterManager* dPa_control_c::mEmitterMng; /* 80450EA4-80450EA8 0003A4 0004+00 1/1 1/1 0/0 .sbss mWaterBubblePcallBack__13dPa_control_c */ -u8 dPa_control_c::mWaterBubblePcallBack[4]; +JPAParticleCallBack dPa_control_c::mWaterBubblePcallBack; /* 80450EA8-80450EAC 0003A8 0004+00 3/3 0/0 0/0 .sbss mFsenthPcallBack__13dPa_control_c */