From 6e94efaefba6ea31023fbf52462a4b5c29eb36b4 Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Thu, 13 Feb 2025 09:37:46 -0800 Subject: [PATCH] d_a_obj_carry mostly done (#2301) * d_a_obj_carry mostly done * cleanup some acch inlines --- configure.py | 1 + include/JSystem/J3DGraphAnimator/J3DJoint.h | 1 + include/JSystem/J3DGraphAnimator/J3DModel.h | 1 + include/JSystem/JUtility/JUTDbPrint.h | 2 + include/SSystem/SComponent/c_cc_d.h | 2 + include/d/actor/d_a_obj_burnbox.h | 2 +- include/d/actor/d_a_obj_carry.h | 361 +- include/d/d_bg_s_acch.h | 38 +- include/d/d_bg_s_roof_chk.h | 3 +- include/d/d_com_inf_game.h | 6 +- include/d/d_debug_viewer.h | 124 + include/d/d_particle.h | 2 +- include/d/d_tresure.h | 8 + include/f_op/f_op_actor_mng.h | 8 + include/m_Do/m_Do_ext.h | 186 +- src/d/actor/d_a_alink.cpp | 53 +- src/d/actor/d_a_alink_canoe.inc | 2 +- src/d/actor/d_a_alink_crawl.inc | 2 +- src/d/actor/d_a_alink_damage.inc | 10 +- src/d/actor/d_a_alink_demo.inc | 2 +- src/d/actor/d_a_alink_effect.inc | 4 +- src/d/actor/d_a_alink_grab.inc | 4 +- src/d/actor/d_a_alink_hang.inc | 18 +- src/d/actor/d_a_alink_horse.inc | 2 +- src/d/actor/d_a_alink_iceleaf.inc | 12 +- src/d/actor/d_a_alink_ironball.inc | 10 +- src/d/actor/d_a_alink_kandelaar.inc | 2 +- src/d/actor/d_a_alink_link.inc | 6 +- src/d/actor/d_a_alink_wolf.inc | 12 +- src/d/actor/d_a_b_ds.cpp | 4 +- src/d/actor/d_a_b_ob.cpp | 2 +- src/d/actor/d_a_b_yo.cpp | 4 +- src/d/actor/d_a_b_zant.cpp | 22 +- src/d/actor/d_a_b_zant_magic.cpp | 2 +- src/d/actor/d_a_do.cpp | 4 +- src/d/actor/d_a_e_pm.cpp | 12 +- src/d/actor/d_a_e_s1.cpp | 4 +- src/d/actor/d_a_e_vt.cpp | 8 +- src/d/actor/d_a_horse.cpp | 18 +- src/d/actor/d_a_nbomb.cpp | 16 +- src/d/actor/d_a_ni.cpp | 12 +- src/d/actor/d_a_npc_ne.cpp | 6 +- src/d/actor/d_a_obj_Lv5Key.cpp | 4 +- src/d/actor/d_a_obj_bk_leaf.cpp | 1 + src/d/actor/d_a_obj_carry.cpp | 6704 ++++++++++--------- src/d/actor/d_a_obj_dan.cpp | 2 +- src/d/actor/d_a_obj_item.cpp | 8 +- src/d/actor/d_a_obj_life_container.cpp | 6 +- src/d/actor/d_a_obj_movebox.cpp | 2 +- src/d/actor/d_a_obj_ss_item.cpp | 2 +- src/d/actor/d_a_obj_swBallA.cpp | 1 + src/d/actor/d_a_obj_swBallB.cpp | 1 + src/d/actor/d_a_obj_swBallC.cpp | 1 + src/d/actor/d_a_obj_yel_bag.cpp | 4 +- src/d/actor/d_a_sq.cpp | 2 +- src/d/actor/d_a_swLBall.cpp | 1 + src/d/actor/d_a_tbox.cpp | 2 +- src/d/d_bg_s_acch.cpp | 59 +- src/d/d_camera.cpp | 2 +- src/d/d_debug_viewer.cpp | 156 + src/d/d_kankyo_rain.cpp | 4 +- src/d/d_save.cpp | 1 + src/f_op/f_op_actor_mng.cpp | 2 +- 63 files changed, 4556 insertions(+), 3407 deletions(-) create mode 100644 include/d/d_debug_viewer.h create mode 100644 src/d/d_debug_viewer.cpp diff --git a/configure.py b/configure.py index cfff19ee805..6769c581ad8 100755 --- a/configure.py +++ b/configure.py @@ -558,6 +558,7 @@ config.libs = [ Object(MatchingFor("GZ2E01"), "d/d_model.cpp"), Object(MatchingFor("GZ2E01"), "d/d_eye_hl.cpp"), Object(NonMatching, "d/d_error_msg.cpp"), + Object(NonMatching, "d/d_debug_viewer.cpp"), Object(NonMatching, "d/actor/d_a_alink.cpp"), Object(MatchingFor("GZ2E01"), "d/actor/d_a_itembase.cpp"), Object(MatchingFor("GZ2E01"), "d/actor/d_a_no_chg_room.cpp"), diff --git a/include/JSystem/J3DGraphAnimator/J3DJoint.h b/include/JSystem/J3DGraphAnimator/J3DJoint.h index ff9d1897793..cd759add7f0 100644 --- a/include/JSystem/J3DGraphAnimator/J3DJoint.h +++ b/include/JSystem/J3DGraphAnimator/J3DJoint.h @@ -66,6 +66,7 @@ public: J3DJoint* getChild() { return mChild; } u8 getMtxType() { return (mKind & 0xf0) >> 4; } void setMtxType(u8 type) { mKind = (mKind & ~0xf0) | (type << 4); } + f32 getRadius() const { return mBoundingSphereRadius; } static J3DMtxCalc* mCurrentMtxCalc; diff --git a/include/JSystem/J3DGraphAnimator/J3DModel.h b/include/JSystem/J3DGraphAnimator/J3DModel.h index 82b2a13da64..5bbd7dc352f 100644 --- a/include/JSystem/J3DGraphAnimator/J3DModel.h +++ b/include/JSystem/J3DGraphAnimator/J3DModel.h @@ -6,6 +6,7 @@ #include "dolphin/types.h" enum J3DMdlFlag { + J3DMdlFlag_None = 0x0, /* 0x00001 */ J3DMdlFlag_Unk00001 = 0x1, /* 0x00002 */ J3DMdlFlag_Unk00002 = 0x2, /* 0x00004 */ J3DMdlFlag_SkinPosCpu = 0x4, diff --git a/include/JSystem/JUtility/JUTDbPrint.h b/include/JSystem/JUtility/JUTDbPrint.h index 06202008150..af8e4e17697 100644 --- a/include/JSystem/JUtility/JUTDbPrint.h +++ b/include/JSystem/JUtility/JUTDbPrint.h @@ -38,6 +38,8 @@ public: void setVisible(bool visible) { mVisible = visible; } JUTFont* getFont() const { return mFont; } + void setCharColor(JUtility::TColor color) { mColor = color; }; + static JUTDbPrint* sDebugPrint; private: diff --git a/include/SSystem/SComponent/c_cc_d.h b/include/SSystem/SComponent/c_cc_d.h index cca6baea430..7a233a59659 100644 --- a/include/SSystem/SComponent/c_cc_d.h +++ b/include/SSystem/SComponent/c_cc_d.h @@ -539,6 +539,8 @@ public: cCcD_Obj* GetTgHitObj() { return mObjTg.GetHitObj(); } cCcD_Obj* GetCoHitObj() { return mObjCo.GetHitObj(); } u32 ChkAtSPrm(u32 prm) { return mObjAt.ChkSPrm(prm); } + u32 ChkCoSPrm(u32 prm) const { return mObjCo.ChkSPrm(prm); } + void OnTgNoSlingHitInfSet() { mObjTg.OnSPrmBit(0x40); } }; // Size = 0x40 diff --git a/include/d/actor/d_a_obj_burnbox.h b/include/d/actor/d_a_obj_burnbox.h index 381a834497f..a73de48b3c3 100644 --- a/include/d/actor/d_a_obj_burnbox.h +++ b/include/d/actor/d_a_obj_burnbox.h @@ -22,7 +22,7 @@ public: /* 8046EABC */ void Draw(); /* 8046EC10 */ void Delete(); - static void make_prm_burnbox(u32* param_0, u8 param_1) { + static void make_prm_burnBox(u32* param_0, u8 param_1) { *param_0 = param_1; } diff --git a/include/d/actor/d_a_obj_carry.h b/include/d/actor/d_a_obj_carry.h index 40a7f828be8..473daee0f95 100644 --- a/include/d/actor/d_a_obj_carry.h +++ b/include/d/actor/d_a_obj_carry.h @@ -1,36 +1,103 @@ #ifndef D_A_OBJ_CARRY_H #define D_A_OBJ_CARRY_H -#include "d/d_jnt_col.h" #include "f_op/f_op_actor_mng.h" -#include "d/d_com_inf_game.h" +#include "d/actor/d_a_player.h" +#include "d/d_bg_s_acch.h" +#include "d/d_cc_d.h" +#include "d/d_jnt_col.h" + +struct daObjCarry_dt_t { + /* 0x00 */ f32 m_throwInitSpeedY; + /* 0x04 */ f32 m_throwInitSpeedXZ; + /* 0x08 */ f32 m_wolfThrowInitSpeedY; + /* 0x0C */ f32 m_wolfThrowInitSpeedXZ; + /* 0x10 */ f32 field_0x10; + /* 0x14 */ f32 field_0x14; + /* 0x18 */ f32 m_gravity; + /* 0x1C */ f32 m_Buoyancy; + /* 0x20 */ f32 m_urnWindEffRatio; + /* 0x24 */ f32 field_0x24; + /* 0x28 */ f32 field_0x28; + /* 0x2C */ f32 field_0x2c; + /* 0x30 */ f32 scale; + /* 0x34 */ u8 m_carry_attn_dist; + /* 0x35 */ u8 m_flags; + /* 0x36 */ u8 m_colliderWeight; + /* 0x37 */ u8 m_cyl_atp; + /* 0x38 */ f32 m_cullsph_min_x; + /* 0x3C */ f32 m_cullsph_min_y; + /* 0x40 */ f32 m_cullsph_min_z; + /* 0x44 */ f32 field_0x44; + /* 0x48 */ f32 field_0x48; + /* 0x4C */ f32 m_height; + /* 0x50 */ f32 m_radius; + /* 0x54 */ f32 field_0x54; + /* 0x58 */ f32 field_0x58; + /* 0x5C */ u32 m_breakSound; + /* 0x60 */ u32 m_putSound; + /* 0x64 */ u32 m_putWaterSound; + /* 0x68 */ u32 m_fallSound; + /* 0x6C */ u32 m_fallWaterSound; + /* 0x70 */ u32 field_0x70; + /* 0x74 */ f32 field_0x74; + /* 0x78 */ s16 m_rollAngle; + /* 0x7A */ s16 m_urnRotateFactor; + /* 0x7C */ s16 field_0x7c; + /* 0x80 */ f32 m_slopeInfluence; + /* 0x84 */ f32 m_friction; + /* 0x88 */ f32 field_0x88; + /* 0x8C */ f32 field_0x8c; + /* 0x90 */ u32 m_heapSize; +}; /** * @ingroup actors-objects * @class daObjCarry_c * @brief Carryable Object - * - * @details This is a multi-use class for carryable objects. - * It's used by: small and large blue pot, small and large red pot, box, cannon ball, barrel, skull, deku nut, Sols, small and large Twilight pots. - * + * + * @details This is a multi-use class for carryable objects. + * It's used by: small and large blue pot, small and large red pot, box, cannon ball, barrel, skull, + * deku nut, Sols, small and large Twilight pots. + * */ class daObjCarry_c : public fopAc_ac_c { public: enum { - /* 0x0 */ TYPE_TSUBO, /**< Small Blue Pot */ - /* 0x1 */ TYPE_OOTSUBO, /**< Big Red Pot */ - /* 0x2 */ TYPE_KIBAKO, /**< Box */ - /* 0x3 */ TYPE_IRON_BALL, /**< Cannon Ball */ - /* 0x4 */ TYPE_TARU, /**< Barrel */ - /* 0x5 */ TYPE_DOKURO, /**< Skull */ - /* 0x6 */ TYPE_BOKKURI, /**< Deku Nut */ - /* 0x7 */ TYPE_TSUBO_2, /**< Small Red Pot */ - /* 0x8 */ TYPE_BALL_S, /**< Light Ball A */ - /* 0x9 */ TYPE_BALL_S_2, /**< Light Ball B */ - /* 0xA */ TYPE_AOTSUBO, /**< Big Blue Pot */ - /* 0xB */ TYPE_LV8_BALL, /**< Light Ball? Probably unused */ - /* 0xC */ TYPE_TSUBO_S, /**< Small pot - Twilight */ - /* 0xD */ TYPE_TSUBO_B, /**< Big pot - Twilight */ + /* 0x0 */ TYPE_TSUBO, /**< Small Blue Pot */ + /* 0x1 */ TYPE_OOTSUBO, /**< Big Red Pot */ + /* 0x2 */ TYPE_KIBAKO, /**< Box */ + /* 0x3 */ TYPE_IRON_BALL, /**< Cannon Ball */ + /* 0x4 */ TYPE_TARU, /**< Barrel */ + /* 0x5 */ TYPE_DOKURO, /**< Skull */ + /* 0x6 */ TYPE_BOKKURI, /**< Deku Nut */ + /* 0x7 */ TYPE_TSUBO_2, /**< Small Red Pot */ + /* 0x8 */ TYPE_BALL_S, /**< Light Ball A */ + /* 0x9 */ TYPE_BALL_S_2, /**< Light Ball B */ + /* 0xA */ TYPE_AOTSUBO, /**< Big Blue Pot */ + /* 0xB */ TYPE_LV8_BALL, /**< Light Ball? Probably unused */ + /* 0xC */ TYPE_TSUBO_S, /**< Small pot - Twilight */ + /* 0xD */ TYPE_TSUBO_B, /**< Big pot - Twilight */ + }; + + enum { + MODE_WAIT, + MODE_WALK, + MODE_CARRY, + MODE_DROP, + MODE_FLOAT, + MODE_SINK, + MODE_YOGAN, + MODE_MAGNE, + MODE_MAGNE_CARRY, + MODE_BOOM_CARRY, + MODE_GROWTH, + MODE_DB_DROP, + MODE_HOOK_CARRY, + MODE_END, + MODE_FIT, + MODE_CONTROLED, + MODE_RESET_LIGHTBALL, }; /* 80031CF8 */ static void clrSaveFlag(); @@ -43,101 +110,101 @@ public: /* 80031D8C */ static u8 chkSttsFlag(int, u8); /* 80031DAC */ static void setRoomNo(int, s8); /* 80031DB8 */ static s8 getRoomNo(int); - /* 8046F6A4 */ u8 data(); + /* 8046F6A4 */ const daObjCarry_dt_t& data(); /* 8046F6BC */ char* getArcName(); - /* 8046F6D4 */ int getBmdName(); - /* 8046F6EC */ void checkFlag(u8); + /* 8046F6D4 */ char* getBmdName(); + /* 8046F6EC */ BOOL checkFlag(u8); /* 8046F724 */ void initBaseMtx(); /* 8046F7AC */ void setBaseMtx(); - /* 8046FACC */ s32 preInit(); + /* 8046FACC */ int preInit(); /* 8046FB78 */ daObjCarry_c(); - /* 8046FFA4 */ s32 checkBreakWolfAttack(); - /* 8046FFF8 */ s32 checkCarryBoomerang(); - /* 80470054 */ s32 checkCarryHookshot(); - /* 80470080 */ s32 checkCarryWolf(); - /* 804700B4 */ s32 checkCarryOneHand(); - /* 804700F0 */ void Create(); - /* 804705DC */ s32 CreateInit_tsubo(); - /* 80470650 */ s32 CreateInit_ootubo(); - /* 80470674 */ s32 CreateInit_kibako(); - /* 804706D4 */ s32 CreateInit_ironball(); - /* 804707E0 */ s32 CreateInit_taru(); - /* 80470840 */ bool CreateInit_dokuro(); - /* 80470890 */ s32 CreateInit_bokkuri(); - /* 804709DC */ s32 CreateInit_LightBall(); - /* 80470AB4 */ s32 CreateInit_Lv8Ball(); - /* 80470B5C */ s32 CreateHeap(); - /* 80470BF4 */ cPhs__Step create(); - /* 80470CF0 */ s32 checkCreate_LightBallA(); - /* 8047114C */ s32 checkCreate_LightBallB(); - /* 804715A8 */ s32 checkCreate_Lv8Ball(); + /* 8046FFA4 */ BOOL checkBreakWolfAttack(); + /* 8046FFF8 */ BOOL checkCarryBoomerang(); + /* 80470054 */ BOOL checkCarryHookshot(); + /* 80470080 */ BOOL checkCarryWolf(); + /* 804700B4 */ BOOL checkCarryOneHand(); + /* 804700F0 */ int Create(); + /* 804705DC */ int CreateInit_tsubo(); + /* 80470650 */ int CreateInit_ootubo(); + /* 80470674 */ int CreateInit_kibako(); + /* 804706D4 */ int CreateInit_ironball(); + /* 804707E0 */ int CreateInit_taru(); + /* 80470840 */ int CreateInit_dokuro(); + /* 80470890 */ int CreateInit_bokkuri(); + /* 804709DC */ int CreateInit_LightBall(); + /* 80470AB4 */ int CreateInit_Lv8Ball(); + /* 80470B5C */ int CreateHeap(); + /* 80470BF4 */ int create(); + /* 80470CF0 */ int checkCreate_LightBallA(); + /* 8047114C */ int checkCreate_LightBallB(); + /* 804715A8 */ int checkCreate_Lv8Ball(); /* 80471680 */ void resetIconPosForLightBallA(); /* 804716D4 */ void setIconPosForLightBallAAtR00(); /* 804717B4 */ void setIconPosForLightBallBAtR00(); /* 80471894 */ void resetIconPosForLightBallB(); - /* 804718E8 */ void execute(); - /* 8047233C */ void checkCulling(); - /* 80472460 */ void draw(); + /* 804718E8 */ int execute(); + /* 8047233C */ BOOL checkCulling(); + /* 80472460 */ int draw(); /* 80472730 */ void debugDraw(); - /* 80472734 */ void _delete(); + /* 80472734 */ int _delete(); /* 80472B54 */ void crr_pos(); - /* 80472D8C */ void check_sink(f32*); - /* 80472E5C */ void calc_gravity(); - /* 80472EF0 */ void checkRollAngle(); + /* 80472D8C */ int check_sink(f32*); + /* 80472E5C */ f32 calc_gravity(); + /* 80472EF0 */ BOOL checkRollAngle(); /* 80473050 */ void mode_proc_call(); /* 804733E8 */ void mode_init_wait(); - /* 804734B0 */ void mode_proc_wait(); + /* 804734B0 */ int mode_proc_wait(); /* 80473718 */ void mode_init_walk(u8); - /* 804737CC */ void mode_proc_walk(); + /* 804737CC */ int mode_proc_walk(); /* 80473ED8 */ void mode_init_carry(); - /* 804741A8 */ void mode_proc_carry(); + /* 804741A8 */ int mode_proc_carry(); /* 80474448 */ void mode_init_drop(u8); - /* 80474540 */ void mode_proc_drop(); + /* 80474540 */ int mode_proc_drop(); /* 80474618 */ void mode_init_float(); - /* 80474734 */ void mode_proc_float(); + /* 80474734 */ int mode_proc_float(); /* 80474A08 */ void mode_init_sink(); - /* 80474B8C */ void mode_proc_sink(); + /* 80474B8C */ int mode_proc_sink(); /* 80474D64 */ void mode_init_yogan(); - /* 80474E08 */ void mode_proc_yogan(); - /* 80474E98 */ bool mode_proc_magne(); - /* 80474EA0 */ bool mode_proc_magneCarry(); + /* 80474E08 */ int mode_proc_yogan(); + /* 80474E98 */ int mode_proc_magne(); + /* 80474EA0 */ int mode_proc_magneCarry(); /* 80474EA8 */ void mode_init_boomCarry(); - /* 80474FA8 */ void mode_proc_boomCarry(); + /* 80474FA8 */ int mode_proc_boomCarry(); /* 80475014 */ void mode_init_growth(); - /* 804750C8 */ void mode_proc_growth(); - /* 8047515C */ bool mode_proc_end(); + /* 804750C8 */ int mode_proc_growth(); + /* 8047515C */ int mode_proc_end(); /* 80475164 */ void mode_init_dbDrop(u8); - /* 80475210 */ void mode_proc_dbDrop(); + /* 80475210 */ int mode_proc_dbDrop(); /* 80475238 */ void mode_init_hookCarry(); - /* 80475354 */ void mode_proc_hookCarry(); + /* 80475354 */ int mode_proc_hookCarry(); /* 80475384 */ void mode_init_fit(); - /* 80475450 */ void mode_proc_fit(); - /* 80475478 */ void mode_proc_controled(); + /* 80475450 */ int mode_proc_fit(); + /* 80475478 */ int mode_proc_controled(); /* 804754D0 */ void mode_init_resetLightBall(); - /* 80475598 */ void mode_proc_resetLightBall(); - /* 80475618 */ void chkSinkAll(); - /* 8047567C */ void chkWaterLineIn(); - /* 804756D4 */ void chkSinkObj(); + /* 80475598 */ int mode_proc_resetLightBall(); + /* 80475618 */ BOOL chkSinkAll(); + /* 8047567C */ BOOL chkWaterLineIn(); + /* 804756D4 */ BOOL chkSinkObj(); /* 8047573C */ void bg_check(); - /* 80476618 */ void check_bg_damage_proc_base(); - /* 80476764 */ void bg_damage_proc_kotubo(); - /* 804767C4 */ void bg_damage_proc_ootubo(); - /* 804767E4 */ void bg_damage_proc_kibako(); + /* 80476618 */ bool check_bg_damage_proc_base(); + /* 80476764 */ bool bg_damage_proc_kotubo(); + /* 804767C4 */ bool bg_damage_proc_ootubo(); + /* 804767E4 */ bool bg_damage_proc_kibako(); /* 80476804 */ bool bg_damage_proc_ironball(); - /* 8047680C */ void bg_damage_proc_taru(); - /* 8047682C */ void bg_damage_proc_dokuro(); - /* 8047684C */ void bg_damage_proc_bokkuri(); + /* 8047680C */ bool bg_damage_proc_taru(); + /* 8047682C */ bool bg_damage_proc_dokuro(); + /* 8047684C */ bool bg_damage_proc_bokkuri(); /* 80476930 */ bool bg_damage_proc_LightBall(); /* 80476938 */ bool bg_damage_proc_Lv8Ball(); /* 80476940 */ void obj_break(bool, bool, bool); - /* 80476A5C */ void check_cc_damage_proc_base(bool); - /* 80476B04 */ void cc_damage_proc_kotubo(); - /* 80476B68 */ void cc_damage_proc_ootubo(); - /* 80476B88 */ void cc_damage_proc_kibako(); - /* 80476CE4 */ void cc_damage_proc_ironball(); - /* 80476E04 */ void cc_damage_proc_taru(); - /* 80476F88 */ void cc_damage_proc_dokuro(); - /* 80476FA8 */ void cc_damage_proc_bokkuri(); + /* 80476A5C */ bool check_cc_damage_proc_base(bool); + /* 80476B04 */ bool cc_damage_proc_kotubo(); + /* 80476B68 */ bool cc_damage_proc_ootubo(); + /* 80476B88 */ bool cc_damage_proc_kibako(); + /* 80476CE4 */ bool cc_damage_proc_ironball(); + /* 80476E04 */ bool cc_damage_proc_taru(); + /* 80476F88 */ bool cc_damage_proc_dokuro(); + /* 80476FA8 */ bool cc_damage_proc_bokkuri(); /* 804771B0 */ bool cc_damage_proc_LightBall(); /* 804771B8 */ bool cc_damage_proc_Lv8Ball(); /* 804771C0 */ void eff_break_tuboBmd(u16, cXyz); @@ -187,28 +254,36 @@ public: /* 80479480 */ void obj_execute_proc_call(); /* 8047962C */ void setTgHitCallBack(); /* 80479648 */ void setCoHitCallBack(); - /* 80479664 */ void CreateInitCall(); + /* 80479664 */ int CreateInitCall(); s32 getType() { return mType; } - u32 getSwbit() { return fopAcM_GetParamBit(this,6,8);} - u32 getSwbit2() { return fopAcM_GetParamBit(this,0xe,8); } - u32 checkOnMoveBg() { return ~((field_0xd18 >> 0xc) & 1);} - u32 checkCrashRoll() { return field_0xd18 >> 6 & 1;} + u32 getSwbit() { return fopAcM_GetParamBit(this, 6, 8); } + u32 getSwbit2() { return fopAcM_GetParamBit(this, 14, 8); } + s8 getRoomNo() { return fopAcM_GetParamBit(this, 0, 6); } + + u32 checkOnMoveBg() { return ~((field_0xd18 >> 0xc) & 1); } + u32 checkCrashRoll() { return field_0xd18 >> 6 & 1; } u8 getItemNo() { return mItemNo; } + u8 getItemBit() { return mItemNo >> 8; } + u8 getItemType() { return field_0xd18 & 1; } u8 getSaveID() { return getItemNo(); } - u32 getSetType() { return (u32)(field_0xd18 << 16) >> 29;} // fake match? - s8 prm_chk_type_ironball() { return (s8)(getType() == TYPE_IRON_BALL); } - s8 prm_chk_type_lightball() { return (getType() == TYPE_BALL_S || getType() == TYPE_BALL_S_2); } + u8 getTrboxBit() { return (mItemNo >> 8) & 0x3F; } + u32 getSetType() { return (field_0xd18 >> 13) & 0x7; } + bool prm_chk_type_ironball() { return getType() == TYPE_IRON_BALL; } + bool prm_chk_type_lightball() { return getType() == TYPE_BALL_S || getType() == TYPE_BALL_S_2; } void startCtrl() { mCtrl = 1; } void endCtrl() { mCtrl = 0; } void setDrop() { field_0xcf2 = 3; } - static void make_prm(csXyz* param_1, u8 param_2, u8 param_3, u8 param_4, u8 param_5, u8 param_6=0) { + bool isDraw() { return mDraw == false; } + + static void make_prm(csXyz* param_1, u8 param_2, u8 param_3, u8 param_4, u8 param_5, + u8 param_6 = 0) { param_1->x = (param_4 << 8) | param_3; param_1->z = param_5 | (param_6 << 13) | ((u32(param_2) & 0xFF) << 1); } - static u8 const mData[2072]; + static const daObjCarry_dt_t mData[]; static cXyz mPos[5]; static u8 mSttsFlag[5]; static s8 mRoomNo[5]; @@ -220,37 +295,39 @@ public: /* 0x574 */ dBgS_ObjAcch mAcch; /* 0x74C */ dBgS_AcchCir mAcchCir; /* 0x78C */ dCcD_Stts mStts; - /* 0x7C8 */ dCcD_Cyl field_0x7c8; - /* 0x904 */ dCcD_Sph field_0x904; - /* 0xA3C */ dCcD_Cps field_0xa3c; - /* 0xB80 */ dCcD_Cyl field_0xb80; + /* 0x7C8 */ dCcD_Cyl mCyl; + /* 0x904 */ dCcD_Sph mLightAtSph; + /* 0xA3C */ dCcD_Cps mAtCps; + /* 0xB80 */ dCcD_Cyl mTgCyl; /* 0xCBC */ u8 field_0xCBC[0xCEC - 0xCBC]; - /* 0xCEC */ float field_0xcec; + /* 0xCEC */ f32 field_0xcec; /* 0xCF0 */ u8 mType; - /* 0xCF1 */ u8 field_0xcf1; + /* 0xCF1 */ u8 mMode; /* 0xCF2 */ u8 field_0xcf2; - /* 0xCF3 */ u8 field_0xCF3[0xCF4 - 0xCF3]; - /* 0xCF4 */ cXyz field_0xcf4; - /* 0xD00 */ s16 field_0xd00; + /* 0xCF3 */ u8 field_0xcf3; + /* 0xCF4 */ cXyz mRotAxis; + /* 0xD00 */ s16 mRotation; /* 0xD02 */ u8 field_0xD02[0xD04 - 0xD02]; /* 0xD04 */ s16 field_0xd04; - /* 0xD06 */ u8 field_0xD06[0xD15 - 0xD06]; - /* 0xD15 */ u8 field_0xd15; + /* 0xD08 */ cXyz field_0xd08; + /* 0xD14 */ u8 field_0xd14; + /* 0xD15 */ bool mInitParams; /* 0xD16 */ u16 mItemNo; /* 0xD18 */ u16 field_0xd18; /* 0xD1A */ u8 field_0xD1A[0xD1C - 0xD1A]; /* 0xD1C */ cXyz field_0xd1c; - /* 0xD28 */ u8 field_0xD28[0xD3C - 0xD28]; + /* 0xD28 */ daPy_boomerangMove_c mBoomerangMove; + /* 0xD34 */ u8 field_0xD34[0xD3C - 0xD34]; /* 0xD3C */ Quaternion field_0xd3c; /* 0xD4C */ Quaternion field_0xd4c; - /* 0xD5C */ float field_0xd5c; - /* 0xD60 */ float field_0xd60; + /* 0xD5C */ f32 field_0xd5c; + /* 0xD60 */ f32 field_0xd60; /* 0xD64 */ s16 field_0xd64; /* 0xD66 */ s16 field_0xd66; /* 0xD68 */ s16 field_0xd68; /* 0xD6A */ s16 field_0xd6a; - /* 0xD6C */ u8 field_0xD6C[0xD70 - 0xD6C]; - /* 0xD70 */ float field_0xd70; + /* 0xD6C */ f32 field_0xd6c; + /* 0xD70 */ f32 field_0xd70; /* 0xD74 */ u8 field_0xd74; /* 0xD75 */ u8 field_0xd75; /* 0xD76 */ u8 field_0xd76; @@ -258,48 +335,53 @@ public: /* 0xD78 */ u8 field_0xD78[0xD79 - 0xD78]; /* 0xD79 */ u8 field_0xd79; /* 0xD7A */ u8 field_0xd7a; - /* 0xD7B */ u8 field_0xd7b; + /* 0xD7B */ s8 field_0xd7b; /* 0xD7C */ csXyz field_0xd7c; /* 0xD82 */ u8 field_0xD82[0xD84 - 0xD82]; - /* 0xD84 */ float field_0xd84; - /* 0xD88 */ Z2SoundObjSimple field_0xd88; - /* 0xDA8 */ u8 field_0xDA8[0xDAA - 0xDA8]; + /* 0xD84 */ f32 field_0xd84; + /* 0xD88 */ Z2SoundObjSimple mSound; + /* 0xDA8 */ u8 field_0xda8; + /* 0xDA9 */ bool field_0xda9; /* 0xDAA */ u8 field_0xdaa; - /* 0xDAB */ u8 field_0xDAB[0xDAC - 0xDAB]; + /* 0xDAB */ u8 field_0xdab; /* 0xDAC */ bool field_0xdac; /* 0xDAD */ u8 field_0xdad; - /* 0xDAE */ u8 field_0xDAE[0xDAF - 0xDAE]; + /* 0xDAE */ u8 field_0xdae; /* 0xDAF */ u8 field_0xdaf; /* 0xDB0 */ u8 field_0xdb0; - /* 0xDB1 */ u8 field_0xDB1[0xDB2 - 0xDB1]; + /* 0xDB1 */ u8 field_0xdb1; /* 0xDB2 */ u8 mOnMoveBG; /* 0xDB3 */ u8 field_0xdb3; /* 0xDB4 */ u8 field_0xdb4; - /* 0xDB5 */ u8 mCrashRoll; - /* 0xDB6 */ u8 field_0xdb6; - /* 0xDB7 */ u8 mDraw; + /* 0xDB5 */ bool mCanCrashRoll; + /* 0xDB6 */ u8 mDeleteTimer; + /* 0xDB7 */ bool mDraw; /* 0xDB8 */ u8 mCtrl; /* 0xDB9 */ u8 field_0xdb9; - /* 0xDBA */ u8 mReset; + /* 0xDBA */ bool mReset; /* 0xDBB */ u8 mCarryHookOK; /* 0xDBC */ u8 mRecover; - /* 0xDBD */ u8 field_0xDBD[0xDD0 - 0xDBD]; - /* 0xDD0 */ fopAc_ac_c* field_0xdd0; - /* 0xDD4 */ u8 field_0xDD4[0xDDC - 0xDD4]; - /* 0xDDC */ float field_0xddc; - /* 0xDE0 */ float field_0xde0; - /* 0xDE4 */ float field_0xde4; + /* 0xDBD */ u8 field_0xDBD[0xDC4 - 0xDBD]; + /* 0xDC4 */ int field_0xdc4; + /* 0xDC8 */ f32 field_0xdc8; + /* 0xDCC */ f32 field_0xdcc; + /* 0xDD0 */ fopAc_ac_c* mpCannonActor; + /* 0xDD4 */ u32 field_0xdd4; + /* 0xDD8 */ u8 field_0xDD8[0xDDC - 0xDD8]; + /* 0xDDC */ f32 field_0xddc; + /* 0xDE0 */ f32 field_0xde0; + /* 0xDE4 */ f32 field_0xde4; /* 0xDE8 */ s16 field_0xde8; /* 0xDEA */ u8 field_0xdea; - /* 0xDEB */ u8 mCannon; + /* 0xDEB */ bool mCannon; /* 0xDEC */ cXyz field_0xdec; - /* 0xDF8 */ DALKMIST_INFLUENCE field_0xdf8; + /* 0xDF8 */ DALKMIST_INFLUENCE mDalkmistInf; /* 0xE0C */ u8 field_0xe0c; /* 0xE0D */ u8 field_0xe0d; /* 0xE0E */ u8 field_0xE0E[0xE10 - 0xE0E]; - /* 0xE10 */ dJntCol_c field_0xe10; - /* 0xE20 */ float field_0xe20; - /* 0xE24 */ u8 field_0xe24; + /* 0xE10 */ dJntCol_c mJntCol; + /* 0xE20 */ f32 field_0xe20; + /* 0xE24 */ s8 field_0xe24; /* 0xE25 */ u8 field_0xe25; /* 0xE26 */ u8 field_0xe26; /* 0xE27 */ u8 field_0xe27; @@ -310,15 +392,4 @@ private: STATIC_ASSERT(sizeof(daObjCarry_c) == 0xE28); -struct daObjCarry_Data { - /* 0x0000 */ u8 field_0x0000[0x0030 - 0x0000]; - /* 0x0030 */ float field_0x0030; - /* 0x0034 */ u8 field_0x0034; - /* 0x0035 */ u8 field_0x0035[0x0038 - 0x0035]; - /* 0x0038 */ float field_0x0038; - /* 0x003C */ float field_0x003c; - /* 0x0040 */ float field_0x0040; - /* 0x0044 */ u8 field_0x0044[0x94-0x44]; -}; - #endif /* D_A_OBJ_CARRY_H */ diff --git a/include/d/d_bg_s_acch.h b/include/d/d_bg_s_acch.h index fa6838d185b..bea35dbd265 100644 --- a/include/d/d_bg_s_acch.h +++ b/include/d/d_bg_s_acch.h @@ -113,9 +113,6 @@ public: /* 800773EC */ void OnWallSort(); /* 800773FC */ bool ChkWallSort(); /* 80077408 */ bool ChkLineDown(); - /* 800D00D0 */ bool ChkRoofHit() const; - /* 800D00DC */ void ClrGroundHit(); - /* 80141404 */ bool ChkGroundHit() const; /* 80075F94 */ virtual ~dBgS_Acch(); @@ -126,37 +123,37 @@ public: int GetTblSize() { return m_tbl_size; } void SetLin() { m_lin.SetStartEnd(*pm_old_pos, *pm_pos); } bool ChkGroundFind() { return m_flags & GROUND_FIND; } - bool ChkGroundHit() { return m_flags & GROUND_HIT; } - bool ChkGroundLanding() { return m_flags & GROUND_LANDING; } + bool ChkGroundHit() const { return m_flags & GROUND_HIT; } + bool ChkGroundLanding() const { return m_flags & GROUND_LANDING; } void ClrGroundLanding() { m_flags &= ~GROUND_LANDING; } void ClrGroundAway() { m_flags &= ~GROUND_AWAY; } void ClrWallHit() { m_flags &= ~WALL_HIT; } void SetRoofNone() { m_flags |= ROOF_NONE; } void SetRoofHit() { m_flags |= ROOF_HIT; } void SetWaterNone() { m_flags |= WATER_NONE; } - bool ChkWallHit() { return m_flags & WALL_HIT; } + u32 ChkWallHit() const { return m_flags & WALL_HIT; } void OffLineCheckHit() { m_flags &= ~LINE_CHECK_HIT; } void OffLineCheck() { m_flags &= ~LINE_CHECK; } - bool ChkLineCheckNone() { return m_flags & LINE_CHECK_NONE; } - bool ChkLineCheck() { return m_flags & LINE_CHECK; } + u32 ChkLineCheckNone() const { return m_flags & LINE_CHECK_NONE; } + u32 ChkLineCheck() const { return m_flags & LINE_CHECK; } void ClrRoofHit() { m_flags &= ~ROOF_HIT; } void ClrWaterHit() { m_flags &= ~WATER_HIT; } void SetWaterHit() { m_flags |= WATER_HIT; } void ClrWaterIn() { m_flags &= ~WATER_IN; } void SetWaterIn() { m_flags |= WATER_IN; } - const u32 MaskWaterIn() { return m_flags & WATER_IN; } - const bool ChkWaterIn() { return MaskWaterIn();} + const u32 MaskWaterIn() const { return m_flags & WATER_IN; } + const bool ChkWaterIn() const { return MaskWaterIn();} void ClrGroundFind() { m_flags &= ~GROUND_FIND; } - u32 MaskRoofHit() { return m_flags & ROOF_HIT; } - bool ChkRoofHit() { return MaskRoofHit(); } + u32 MaskRoofHit() const { return m_flags & ROOF_HIT; } + bool ChkRoofHit() const { return MaskRoofHit(); } void OffClrSpeedY() { m_flags |= CLR_SPEED_Y; } - bool ChkClrSpeedY() { return !(m_flags & CLR_SPEED_Y); } + bool ChkClrSpeedY() const { return !(m_flags & CLR_SPEED_Y); } void SetGroundFind() { m_flags |= GROUND_FIND; } void SetGroundHit() { m_flags |= GROUND_HIT; } void SetGroundLanding() { m_flags |= GROUND_LANDING; } void SetGroundAway() { m_flags |= GROUND_AWAY; } - const u32 MaskWaterHit() { return m_flags & WATER_HIT; } - const bool ChkWaterHit() { return MaskWaterHit(); } + const u32 MaskWaterHit() const { return m_flags & WATER_HIT; } + const bool ChkWaterHit() const { return MaskWaterHit(); } void ClrWaterNone() { m_flags &= ~WATER_NONE; } void SetWaterCheckOffset(f32 offset) { m_wtr_chk_offset = offset; } void OnLineCheck() { m_flags |= LINE_CHECK; } @@ -172,11 +169,14 @@ public: void OffLineCheckNone() { m_flags &= ~LINE_CHECK_NONE; } void SetWallNone() { m_flags |= WALL_NONE; } void OnLineCheckHit() { m_flags |= LINE_CHECK_HIT; } + bool ChkGroundAway() const { return m_flags & GROUND_AWAY; } + void ClrGroundHit() { m_flags &= ~GROUND_HIT; } + cM3dGCyl* GetWallBmdCylP() { return &m_wall_cyl; } fopAc_ac_c* getMyAc() { return m_my_ac; } cM3dGCir* GetWallCirP(int index) { - JUT_ASSERT(0, index <= m_tbl_size); + JUT_ASSERT(730, index <= m_tbl_size); return pm_acch_cir[index].GetCirP(); } @@ -190,10 +190,6 @@ public: f32 GetCx() const { return pm_pos->x; } f32 GetCz() const { return pm_pos->z; } - - // inline dupe - void i_ClrGroundHit() { m_flags &= ~GROUND_HIT; } - u32 i_ChkGroundHit() const { return m_flags & GROUND_HIT; } public: /* 0x02C */ u32 m_flags; @@ -218,7 +214,7 @@ public: /* 0x098 */ f32 m_ground_h; /* 0x09C */ f32 field_0x9c; /* 0x0A0 */ cM3dGPla field_0xa0; - /* 0x0B4 */ u8 field_0xb4; + /* 0x0B4 */ bool field_0xb4; /* 0x0B8 */ f32 field_0xb8; /* 0x0BC */ f32 field_0xbc; /* 0x0C0 */ u8 field_0xc0; diff --git a/include/d/d_bg_s_roof_chk.h b/include/d/d_bg_s_roof_chk.h index ea3b534424b..960fccd10b1 100644 --- a/include/d/d_bg_s_roof_chk.h +++ b/include/d/d_bg_s_roof_chk.h @@ -9,12 +9,11 @@ class dBgS_RoofChk : public cBgS_PolyInfo, public cBgS_Chk, public dBgS_Chk { public: /* 80078FF4 */ dBgS_RoofChk(); /* 80079124 */ void Init(); - /* 800B146C */ void SetPos(cXyz const&); /* 80079090 */ virtual ~dBgS_RoofChk(); void SetNowY(f32 y) { mNowY = y; } - void i_SetPos(cXyz const& pos) { m_pos = pos; } + void SetPos(cXyz const& pos) { m_pos = pos; } f32 GetNowY() { return mNowY; } cXyz* GetPosP() { return &m_pos; } diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index 399a8bbc95f..d6517f018b8 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -822,7 +822,7 @@ public: /* 0x1DE08 */ u8 field_0x1de08; /* 0x1DE09 */ u8 field_0x1de09; /* 0x1DE0A */ u8 field_0x1de0a; - /* 0x1DE0B */ u8 field_0x1de0b; + /* 0x1DE0B */ u8 mIsDebugMode; /* 0x1DE0C */ u8 field_0x1de0c; static __d_timer_info_c dComIfG_mTimerInfo; @@ -888,6 +888,10 @@ inline void dComIfG_setTimerLimitTimeMs(int i_time) { g_dComIfG_gameInfo.play.setTimerLimitTimeMs(i_time); } +inline BOOL dComIfG_isDebugMode() { + return g_dComIfG_gameInfo.mIsDebugMode; +} + /** * Attempts to add a new Object Resource Archive (*.arc) into the Resource Control. * @param i_arcName Name of archive to be added diff --git a/include/d/d_debug_viewer.h b/include/d/d_debug_viewer.h new file mode 100644 index 00000000000..cd2fe2d93c0 --- /dev/null +++ b/include/d/d_debug_viewer.h @@ -0,0 +1,124 @@ +#ifndef D_DEBUG_VIEWER_H +#define D_DEBUG_VIEWER_H + +#include +#include "SSystem/SComponent/c_xyz.h" +#include "SSystem/SComponent/c_sxyz.h" + +class J3DPacket; + +J3DPacket* dDbVw_setDrawPacketList(J3DPacket* i_packet, int i_bufferType); +void dDbVw_deleteDrawPacketList(); + +void dDbVw_drawCube8p(int i_bufferType, cXyz* i_points, const GXColor& i_color); +void dDbVw_drawCube(int i_bufferType, cXyz& i_pos, cXyz& i_size, csXyz& i_angle, const GXColor& i_color); +void dDbVw_drawTriangle(int i_bufferType, cXyz* i_points, const GXColor& i_color, u8 i_clipZ); +void dDbVw_drawQuad(int i_bufferType, cXyz* i_points, const GXColor& i_color, u8 i_clipZ); +void dDbVw_drawQuad(int i_bufferType, cXyz* param_1, cXyz* param_2, cXyz* i_pos, s16 i_rotY, const GXColor& i_color, u8 i_clipZ); +void dDbVw_drawLine(int i_bufferType, cXyz& i_start, cXyz& i_end, const GXColor& i_color, u8 i_clipZ, u8 i_width); +void dDbVw_drawArrow(int i_bufferType, cXyz& i_pos, cXyz& param_2, const GXColor& i_color, u8 i_clipZ, u8 i_width); +void dDbVw_drawPoint(int i_bufferType, cXyz& i_pos, const GXColor& i_color, u8 i_clipZ, u8 i_width); +void dDbVw_drawCircle(int i_bufferType, cXyz& i_pos, f32 i_radius, const GXColor& i_color, u8 i_clipZ, u8 i_width); +void dDbVw_drawSphere(int i_bufferType, cXyz& i_pos, f32 i_size, const GXColor& i_color, u8 i_clipZ); +void dDbVw_drawCylinder(int i_bufferType, cXyz& i_pos, f32 i_radius, f32 i_height, const GXColor& i_color, u8 i_clipZ); +void dDbVw_drawCylinderM(int i_bufferType, Mtx i_mtx, const GXColor& i_color, u8 i_clipZ); + +inline void dDbVw_drawCube8pOpa(cXyz* i_points, const GXColor& i_color) { + dDbVw_drawCube8p(0, i_points, i_color); +} + +inline void dDbVw_drawCube8pXlu(cXyz* i_points, const GXColor& i_color) { + dDbVw_drawCube8p(1, i_points, i_color); +} + +inline void dDbVw_drawCubeOpa(cXyz& i_pos, cXyz& i_size, csXyz& i_angle, const GXColor& i_color) { + dDbVw_drawCube(0, i_pos, i_size, i_angle, i_color); +} + +inline void dDbVw_drawCubeXlu(cXyz& i_pos, cXyz& i_size, csXyz& i_angle, const GXColor& i_color) { + dDbVw_drawCube(1, i_pos, i_size, i_angle, i_color); +} + +inline void dDbVw_drawTriangleOpa(cXyz* i_points, const GXColor& i_color, u8 i_clipZ) { + dDbVw_drawTriangle(0, i_points, i_color, i_clipZ); +} + +inline void dDbVw_drawTriangleXlu(cXyz* i_points, const GXColor& i_color, u8 i_clipZ) { + dDbVw_drawTriangle(1, i_points, i_color, i_clipZ); +} + +inline void dDbVw_drawQuadOpa(cXyz* i_points, const GXColor& i_color, u8 i_clipZ) { + dDbVw_drawQuad(0, i_points, i_color, i_clipZ); +} + +inline void dDbVw_drawQuadXlu(cXyz* i_points, const GXColor& i_color, u8 i_clipZ) { + dDbVw_drawQuad(1, i_points, i_color, i_clipZ); +} + +inline void dDbVw_drawQuadOpa(cXyz* param_1, cXyz* param_2, cXyz* i_pos, s16 i_rotY, const GXColor& i_color, u8 i_clipZ) { + dDbVw_drawQuad(0, param_1, param_2, i_pos, i_rotY, i_color, i_clipZ); +} + +inline void dDbVw_drawQuadXlu(cXyz* param_1, cXyz* param_2, cXyz* i_pos, s16 i_rotY, const GXColor& i_color, u8 i_clipZ) { + dDbVw_drawQuad(1, param_1, param_2, i_pos, i_rotY, i_color, i_clipZ); +} + +inline void dDbVw_drawLineOpa(cXyz& i_start, cXyz& i_end, const GXColor& i_color, u8 i_clipZ, u8 i_width) { + dDbVw_drawLine(0, i_start, i_end, i_color, i_clipZ, i_width); +} + +inline void dDbVw_drawLineXlu(cXyz& i_start, cXyz& i_end, const GXColor& i_color, u8 i_clipZ, u8 i_width) { + dDbVw_drawLine(1, i_start, i_end, i_color, i_clipZ, i_width); +} + +inline void dDbVw_drawArrowOpa(cXyz& i_pos, cXyz& param_2, const GXColor& i_color, u8 i_clipZ, u8 i_width) { + dDbVw_drawArrow(0, i_pos, param_2, i_color, i_clipZ, i_width); +} + +inline void dDbVw_drawArrowXlu(cXyz& i_pos, cXyz& param_2, const GXColor& i_color, u8 i_clipZ, u8 i_width) { + dDbVw_drawArrow(1, i_pos, param_2, i_color, i_clipZ, i_width); +} + +inline void dDbVw_drawPointOpa(cXyz& i_pos, const GXColor& i_color, u8 i_clipZ, u8 i_width) { + dDbVw_drawPoint(0, i_pos, i_color, i_clipZ, i_width); +} + +inline void dDbVw_drawPointXlu(cXyz& i_pos, const GXColor& i_color, u8 i_clipZ, u8 i_width) { + dDbVw_drawPoint(1, i_pos, i_color, i_clipZ, i_width); +} + +inline void dDbVw_drawCircleOpa(cXyz& i_pos, f32 i_radius, const GXColor& i_color, u8 i_clipZ, u8 i_width) { + dDbVw_drawCircle(0, i_pos, i_radius, i_color, i_clipZ, i_width); +} + +inline void dDbVw_drawCircleXlu(cXyz& i_pos, f32 i_radius, const GXColor& i_color, u8 i_clipZ, u8 i_width) { + dDbVw_drawCircle(1, i_pos, i_radius, i_color, i_clipZ, i_width); +} + +inline void dDbVw_drawSphereOpa(cXyz& i_pos, f32 i_size, const GXColor& i_color, u8 i_clipZ) { + dDbVw_drawSphere(0, i_pos, i_size, i_color, i_clipZ); +} + +inline void dDbVw_drawSphereXlu(cXyz& i_pos, f32 i_size, const GXColor& i_color, u8 i_clipZ) { + dDbVw_drawSphere(1, i_pos, i_size, i_color, i_clipZ); +} + +inline void dDbVw_drawCylinderOpa(cXyz& i_pos, f32 i_radius, f32 i_height, const GXColor& i_color, u8 i_clipZ) { + dDbVw_drawCylinder(0, i_pos, i_radius, i_height, i_color, i_clipZ); +} + +inline void dDbVw_drawCylinderXlu(cXyz& i_pos, f32 i_radius, f32 i_height, const GXColor& i_color, u8 i_clipZ) { + dDbVw_drawCylinder(1, i_pos, i_radius, i_height, i_color, i_clipZ); +} + +inline void dDbVw_drawCylinderMOpa(Mtx i_mtx, const GXColor& i_color, u8 i_clipZ) { + dDbVw_drawCylinderM(0, i_mtx, i_color, i_clipZ); +} + +inline void dDbVw_drawCylinderMXlu(Mtx i_mtx, const GXColor& i_color, u8 i_clipZ) { + dDbVw_drawCylinderM(1, i_mtx, i_color, i_clipZ); +} + +int dDbVw_Report(int x, int y, char const* string, ...); + +#endif /* D_DEBUG_VIEWER_H */ diff --git a/include/d/d_particle.h b/include/d/d_particle.h index 45a95833cae..958c1a145fe 100644 --- a/include/d/d_particle.h +++ b/include/d/d_particle.h @@ -190,7 +190,7 @@ public: static void setModel(JPABaseEmitter* param_0, J3DModelData* param_1, const dKy_tevstr_c& param_2, u8 param_3, J3DAnmTexPattern* param_4, u8 param_5) { - setModel(param_0, param_1, param_2, param_3, param_4, param_5); + setModel(param_0, param_1, param_2, param_3, param_4, 0, param_5); } static dPa_modelEcallBack& getEcallback() { return mEcallback; } diff --git a/include/d/d_tresure.h b/include/d/d_tresure.h index 4a8859909b1..3e92b3c74aa 100644 --- a/include/d/d_tresure.h +++ b/include/d/d_tresure.h @@ -78,6 +78,14 @@ public: setPosition(i_tboxNo, 4, i_pos, -1); } + static void setIconPositionOfCarryLight(int i_tboxNo, const Vec* i_pos, int param_2) { + setPosition(i_tboxNo, 12, i_pos, param_2); + } + + static void setCarryIron(int i_tboxNo, const Vec* i_pos) { + setPosition(i_tboxNo, 11, i_pos, -1); + } + static u8 const typeToTypeGroup[17][2]; static type_group_list mTypeGroupListAll[17]; static typeGroupData_c* mTypeGroupData; diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index 549db98020b..9f7dc431b42 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -311,6 +311,10 @@ inline void fopAcM_SetModel(fopAc_ac_c* actor, J3DModel* model) { actor->model = model; } +inline J3DModel* fopAcM_GetModel(fopAc_ac_c* actor) { + return actor->model; +} + inline fopAcM_prm_class* fopAcM_GetAppend(void* actor) { return (fopAcM_prm_class*)fpcM_GetAppend(actor); } @@ -713,6 +717,10 @@ inline void fopAcM_OnCarryType(fopAc_ac_c* i_actor, fopAcM_CARRY param_2) { i_actor->carryType |= param_2; } +inline void fopAcM_OffCarryType(fopAc_ac_c* i_actor, fopAcM_CARRY param_2) { + i_actor->carryType &= ~param_2; +} + enum fopAcM_FOOD { fopAcM_FOOD_0, fopAcM_FOOD_1, diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index 53924d1267a..85037910346 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -588,13 +588,12 @@ public: class mDoExt_cylinderPacket : public J3DPacket { public: - mDoExt_cylinderPacket(cXyz& i_position, f32 i_radius, f32 i_height, const GXColor& i_color, - u8 param_4) { + mDoExt_cylinderPacket(cXyz& i_position, f32 i_radius, f32 i_height, const GXColor& i_color, u8 i_clipZ) { mPosition = i_position; mRadius = i_radius; mHeight = i_height; mColor = i_color; - field_0x28 = param_4; + mClipZ = i_clipZ; } virtual void draw(); @@ -604,7 +603,186 @@ public: /* 0x1C */ f32 mRadius; /* 0x20 */ f32 mHeight; /* 0x24 */ GXColor mColor; - /* 0x28 */ u8 field_0x28; + /* 0x28 */ u8 mClipZ; +}; + +class mDoExt_spherePacket : public J3DPacket { +public: + mDoExt_spherePacket(cXyz& i_position, f32 i_size, const GXColor& i_color, u8 i_clipZ) { + mPosition = i_position; + mSize = i_size; + mColor = i_color; + mClipZ = i_clipZ; + } + + virtual void draw(); + virtual ~mDoExt_spherePacket() {} + + /* 0x10 */ cXyz mPosition; + /* 0x1C */ f32 mSize; + /* 0x20 */ GXColor mColor; + /* 0x24 */ u8 mClipZ; +}; + +class mDoExt_cube8pPacket : public J3DPacket { +public: + mDoExt_cube8pPacket(cXyz* i_points, const GXColor& i_color) { + cXyz* pnt_array = i_points; + + for (int i = 0; i < 8; i++) { + mPoints[i] = *pnt_array; + pnt_array++; + } + + DCStoreRangeNoSync(mPoints, sizeof(cXyz) * 8); + mColor = i_color; + } + + virtual void draw(); + virtual ~mDoExt_cube8pPacket() {} + + /* 0x10 */ cXyz mPoints[8]; + /* 0x70 */ GXColor mColor; +}; + +class mDoExt_trianglePacket : public J3DPacket { +public: + mDoExt_trianglePacket(cXyz* i_points, const GXColor& i_color, u8 i_clipZ) { + cXyz* pnt_array = i_points; + + for (int i = 0; i < 3; i++) { + mPoints[i] = *pnt_array; + pnt_array++; + } + + DCStoreRangeNoSync(mPoints, sizeof(cXyz) * 3); + mColor = i_color; + mClipZ = i_clipZ; + } + + virtual void draw(); + virtual ~mDoExt_trianglePacket() {} + + /* 0x10 */ cXyz mPoints[3]; + /* 0x34 */ GXColor mColor; + /* 0x38 */ u8 mClipZ; +}; + +class mDoExt_quadPacket : public J3DPacket { +public: + mDoExt_quadPacket(cXyz* i_points, const GXColor& i_color, u8 i_clipZ) { + cXyz* pnt_array = i_points; + + for (int i = 0; i < 4; i++) { + mPoints[i] = *pnt_array; + pnt_array++; + } + + DCStoreRangeNoSync(mPoints, sizeof(cXyz) * 4); + mColor = i_color; + mClipZ = i_clipZ; + } + + virtual void draw(); + virtual ~mDoExt_quadPacket() {} + + /* 0x10 */ cXyz mPoints[4]; + /* 0x40 */ GXColor mColor; + /* 0x44 */ u8 mClipZ; +}; + +class mDoExt_linePacket : public J3DPacket { +public: + mDoExt_linePacket(cXyz& i_start, cXyz& i_end, const GXColor& i_color, u8 i_clipZ, u8 i_width) { + mStart = i_start; + mEnd = i_end; + mColor = i_color; + mClipZ = i_clipZ; + mWidth = i_width; + } + + virtual void draw(); + virtual ~mDoExt_linePacket() {} + + /* 0x10 */ cXyz mStart; + /* 0x1C */ cXyz mEnd; + /* 0x28 */ GXColor mColor; + /* 0x2C */ u8 mClipZ; + /* 0x2D */ u8 mWidth; +}; + +class mDoExt_cylinderMPacket : public J3DPacket { +public: + mDoExt_cylinderMPacket(Mtx i_mtx, const GXColor& i_color, u8 i_clipZ) { + PSMTXCopy(i_mtx, mMatrix); + mColor = i_color; + mClipZ = i_clipZ; + } + + virtual void draw(); + virtual ~mDoExt_cylinderMPacket() {} + + /* 0x10 */ Mtx mMatrix; + /* 0x40 */ GXColor mColor; + /* 0x44 */ u8 mClipZ; +}; + +class mDoExt_circlePacket : public J3DPacket { +public: + mDoExt_circlePacket(cXyz& i_position, f32 i_radius, const GXColor& i_color, u8 i_clipZ, u8 i_lineWidth) { + mPosition = i_position; + mRadius = i_radius; + mColor = i_color; + mClipZ = i_clipZ; + mLineWidth = i_lineWidth; + } + + virtual void draw(); + virtual ~mDoExt_circlePacket() {} + + /* 0x10 */ cXyz mPosition; + /* 0x1C */ f32 mRadius; + /* 0x20 */ GXColor mColor; + /* 0x24 */ u8 mClipZ; + /* 0x25 */ u8 mLineWidth; +}; + +class mDoExt_ArrowPacket : public J3DPacket { +public: + mDoExt_ArrowPacket(cXyz& i_position, cXyz& param_1, const GXColor& i_color, u8 i_clipZ, u8 i_lineWidth) { + mPosition = i_position; + field_0x1c = param_1; + mColor = i_color; + mClipZ = i_clipZ; + m_lineWidth = i_lineWidth; + } + + virtual void draw(); + virtual ~mDoExt_ArrowPacket() {} + + /* 0x10 */ cXyz mPosition; + /* 0x1C */ cXyz field_0x1c; + /* 0x28 */ GXColor mColor; + /* 0x2C */ u8 mClipZ; + /* 0x2D */ u8 m_lineWidth; +}; + +class mDoExt_pointPacket : public J3DPacket { +public: + mDoExt_pointPacket(cXyz& i_position, const GXColor& i_color, u8 i_clipZ, u8 i_lineWidth) { + mPosition = i_position; + mColor = i_color; + mClipZ = i_clipZ; + mLineWidth = i_lineWidth; + } + + virtual void draw(); + virtual ~mDoExt_pointPacket() {} + + /* 0x10 */ cXyz mPosition; + /* 0x1C */ GXColor mColor; + /* 0x20 */ u8 mClipZ; + /* 0x21 */ u8 mLineWidth; }; inline void mDoExt_bckAnmRemove(J3DModelData* i_modelData) { diff --git a/src/d/actor/d_a_alink.cpp b/src/d/actor/d_a_alink.cpp index 6137d8635fd..9b86a430545 100644 --- a/src/d/actor/d_a_alink.cpp +++ b/src/d/actor/d_a_alink.cpp @@ -3837,7 +3837,7 @@ void daAlink_c::footBgCheck() { mDoMtx_multVec(mpLinkModel->getAnmMtx(0x19), &localRightFootOffset, &sp68[1]); mDoMtx_multVec(mpLinkModel->getAnmMtx(0x1A), &localRightToeOffset, &sp80[1]); - BOOL sp1C = (!mLinkAcch.i_ChkGroundHit() || checkMagneBootsOn()) || (mLinkAcch.i_ChkGroundHit() && mSinkShapeOffset < 0.0f) || checkModeFlg(0x78C52); + BOOL sp1C = (!mLinkAcch.ChkGroundHit() || checkMagneBootsOn()) || (mLinkAcch.ChkGroundHit() && mSinkShapeOffset < 0.0f) || checkModeFlg(0x78C52); for (i = 0; i < 2; i++, var_r29++, sp24++) { cXyz sp5C = (sp80[i] + sp68[i]) * 0.5f; @@ -6385,7 +6385,7 @@ void daAlink_c::setStepsOffset() { /* 800A6DCC-800A7050 0A170C 0284+00 1/1 0/0 0/0 .text iceSlipBgCheck__9daAlink_cFv */ void daAlink_c::iceSlipBgCheck() { - if (mLinkAcch.i_ChkGroundHit() && checkModeFlg(1)) { + if (mLinkAcch.ChkGroundHit() && checkModeFlg(1)) { f32 var_f30 = field_0x35c4.absXZ(); if (var_f30 > 0.1f) { cXyz sp3C(field_0x3798.x, field_0x3798.y + 10.0f, field_0x3798.z); @@ -6415,7 +6415,7 @@ void daAlink_c::iceSlipBgCheck() { void daAlink_c::setIceSlipSpeed() { field_0x35d0 = field_0x35c4; - if (!checkModeFlg(0x1210C52) && !checkEventRun() && !checkHeavyStateOn(1, 1) && mGndPolySpecialCode == dBgW_SPCODE_ICE && !mLinkAcch.ChkWallHit() && mLinkAcch.i_ChkGroundHit()) { + if (!checkModeFlg(0x1210C52) && !checkEventRun() && !checkHeavyStateOn(1, 1) && mGndPolySpecialCode == dBgW_SPCODE_ICE && !mLinkAcch.ChkWallHit() && mLinkAcch.ChkGroundHit()) { f32 var_f31, var_f30, var_f29; if (checkWolf()) { var_f31 = 0.1f; @@ -6462,7 +6462,7 @@ void daAlink_c::setPolygonSpeed() { field_0x35a0 = cXyz::Zero; } - if ((mLinkAcch.i_ChkGroundHit() && !checkHeavyStateOn(1, 1) && mWaterY > 30.0f + current.pos.y) || checkModeFlg(0x40000)) { + if ((mLinkAcch.ChkGroundHit() && !checkHeavyStateOn(1, 1) && mWaterY > 30.0f + current.pos.y) || checkModeFlg(0x40000)) { cXyz sp18; int sp8; if (fopAcM_getWaterStream(¤t.pos, mLinkAcch.m_gnd, &sp18, &sp8, 0)) { @@ -6510,7 +6510,7 @@ void daAlink_c::setPolygonSpeed() { } cLib_addCalcPos(&field_0x3594, sp18, 0.5f, var_f30, 0.5f); - } else if (field_0x2fbd == 4 && mLinkAcch.i_ChkGroundHit() && dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd) && dComIfG_Bgsp().GetTriPla(mLinkAcch.m_gnd, &sp24) && sp24.mNormal.y <= cM_scos(cM_deg2s(29.9f))) { + } else if (field_0x2fbd == 4 && mLinkAcch.ChkGroundHit() && dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd) && dComIfG_Bgsp().GetTriPla(mLinkAcch.m_gnd, &sp24) && sp24.mNormal.y <= cM_scos(cM_deg2s(29.9f))) { f32 temp_f26 = sp24.mNormal.y; f32 temp_f27 = cM_sht2d(cM_atan2s(sp24.mNormal.absXZ(), sp24.mNormal.y)) - 29.9f; sp24.mNormal.y = 0.0f; @@ -6975,7 +6975,7 @@ void daAlink_c::setAttentionPos() { /* 800A8CE4-800A9248 0A3624 0564+00 3/3 0/0 0/0 .text setMatrix__9daAlink_cFv */ void daAlink_c::setMatrix() { f32 var_f31; - if (field_0x3174 == 8 && mLinkAcch.i_ChkGroundHit() && !checkModeFlg(0x70C52)) { + if (field_0x3174 == 8 && mLinkAcch.ChkGroundHit() && !checkModeFlg(0x70C52)) { var_f31 = 20.0f; } else { var_f31 = 0.0f; @@ -9860,7 +9860,7 @@ void daAlink_c::setFrontWallType() { if (i == 0 && var_r27 == 3 && checkStageName("D_MN10") != 0 && fopAcM_GetRoomNo(this) == 6) { sp4C = 1; - } else if (!checkWolf() && sp5C == 0 && ((i == 0 && mLinkAcch.i_ChkGroundHit() && !checkModeFlg(0x70C52)) || mProcID == PROC_HOOKSHOT_FLY) && var_r27 == 0) { + } else if (!checkWolf() && sp5C == 0 && ((i == 0 && mLinkAcch.ChkGroundHit() && !checkModeFlg(0x70C52)) || mProcID == PROC_HOOKSHOT_FLY) && var_r27 == 0) { sp5C = 1; sp98.y = sp54; sp8C.y = sp98.y; @@ -10207,11 +10207,6 @@ void daAlink_c::setFrontWallType() { } } -/* 800B146C-800B1488 0ABDAC 001C+00 1/1 0/0 0/0 .text SetPos__12dBgS_RoofChkFRC4cXyz */ -void dBgS_RoofChk::SetPos(cXyz const& pos) { - m_pos = pos; -} - /* 800B1488-800B14B4 0ABDC8 002C+00 4/4 0/0 0/0 .text checkWaterPolygonUnder__9daAlink_cFv */ BOOL daAlink_c::checkWaterPolygonUnder() { return checkModeFlg(MODE_SWIMMING) || current.pos.y < mWaterY; @@ -10414,7 +10409,7 @@ void daAlink_c::setSandShapeOffset() { f32 temp_f29 = mSinkShapeOffset; BOOL temp_r29 = checkEventRun(); - if (mLinkAcch.i_ChkGroundHit() && (field_0x2fbb == 3 || checkSnowCode()) && !checkModeFlg(0x440)) { + if (mLinkAcch.ChkGroundHit() && (field_0x2fbb == 3 || checkSnowCode()) && !checkModeFlg(0x440)) { if (!temp_r29 && !checkModeFlg(0x02000000)) { if (checkSnowCode()) { if (!checkZeroSpeedF() || mProcID == PROC_TURN_MOVE) { @@ -10523,7 +10518,7 @@ bool daAlink_c::checkLv2MiddleBossBgRide(s16 i_procName) { /* 800B1FD8-800B21EC 0AC918 0214+00 11/11 0/0 0/0 .text getSlidePolygon__9daAlink_cFP8cM3dGPla */ bool daAlink_c::getSlidePolygon(cM3dGPla* param_0) { - if (!checkMagneBootsOn() && mLinkAcch.i_ChkGroundHit() && !checkModeFlg(0x40000) && (mGndPolySpecialCode != 6) && dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd)) { + if (!checkMagneBootsOn() && mLinkAcch.ChkGroundHit() && !checkModeFlg(0x40000) && (mGndPolySpecialCode != 6) && dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd)) { if ((checkEquipHeavyBoots() && daTagMagne_c::checkMagnetCode(mLinkAcch.m_gnd)) || mProcID == PROC_GORON_MOVE) { return 0; } @@ -11144,7 +11139,7 @@ void daAlink_c::setNormalSpeedF(f32 i_incSpeed, f32 param_1) { var_f31 = field_0x594; } - if ((checkUpperReadyThrowAnime() && mLinkAcch.i_ChkGroundHit() && field_0x2f8c == 1) || ((checkRoomOnly() || checkCopyRodControllAnime() || checkGrabSlowMoveActor() || (checkUpperGuardAnime() && field_0x2f8c == 1) || (field_0x2fbd == 4 && mSinkShapeOffset < -15.0f)) && (mProcID == PROC_MOVE || mProcID == PROC_ATN_MOVE || mProcID == PROC_ATN_ACTOR_MOVE || mProcID == PROC_WOLF_MOVE || mProcID == PROC_WOLF_ATN_AC_MOVE || mProcID == PROC_MOVE_TURN))) { + if ((checkUpperReadyThrowAnime() && mLinkAcch.ChkGroundHit() && field_0x2f8c == 1) || ((checkRoomOnly() || checkCopyRodControllAnime() || checkGrabSlowMoveActor() || (checkUpperGuardAnime() && field_0x2f8c == 1) || (field_0x2fbd == 4 && mSinkShapeOffset < -15.0f)) && (mProcID == PROC_MOVE || mProcID == PROC_ATN_MOVE || mProcID == PROC_ATN_ACTOR_MOVE || mProcID == PROC_WOLF_MOVE || mProcID == PROC_WOLF_ATN_AC_MOVE || mProcID == PROC_MOVE_TURN))) { f32 temp_f30 = field_0x594 * daAlinkHIO_basic_c0::m.mIndoorSpeedFactor; if (var_f31 > temp_f30) { var_f31 = temp_f30; @@ -12093,7 +12088,7 @@ BOOL daAlink_c::checkAutoJumpAction() { return 0; } - if (!checkModeFlg(0x70C12) && mProcID != PROC_DOOR_OPEN && mProcID != PROC_WARP && !getSumouMode() && mDemo.getDemoType() != 5 && !checkMagneBootsOn() && !mLinkAcch.i_ChkGroundHit()) { + if (!checkModeFlg(0x70C12) && mProcID != PROC_DOOR_OPEN && mProcID != PROC_WARP && !getSumouMode() && mDemo.getDemoType() != 5 && !checkMagneBootsOn() && !mLinkAcch.ChkGroundHit()) { if (checkNoResetFlg0(FLG0_UNDERWATER)) { speed.y = 0.0f; return procSwimWaitInit(0); @@ -12253,9 +12248,9 @@ BOOL daAlink_c::checkAutoJumpAction() { } } } else if (checkGrabGlide() && mWindSpeed.y > 10.0f) { - mLinkAcch.i_ClrGroundHit(); + mLinkAcch.ClrGroundHit(); return procAutoJumpInit(1); - } else if (checkEndResetFlg0(ERFLG0_UNK_100) && mLinkAcch.i_ChkGroundHit() && !checkWolf()) { + } else if (checkEndResetFlg0(ERFLG0_UNK_100) && mLinkAcch.ChkGroundHit() && !checkWolf()) { return procRollJumpInit(); } else if (checkMagneBootsOn() && !checkNoResetFlg0(FLG0_UNK_2000) && cancelMagneBootsOn()) { return procFallInit(1, 5.0f); @@ -12665,7 +12660,7 @@ BOOL daAlink_c::checkUpperItemAction() { if (field_0x30f6 < 0 || !checkNoResetFlg0(FLG0_UNK_20000)) { voiceStart(Z2SE_AL_V_ZENTEN_FAIL_2); - if (mLinkAcch.i_ChkGroundHit()) { + if (mLinkAcch.ChkGroundHit()) { return procStEscapeInit(); } resetUpperAnime(UPPER_2, 3.0f); @@ -12774,7 +12769,7 @@ static void* daAlink_searchKolin(fopAc_ac_c* i_actor, void* i_data) { /* 800B80C4-800B8374 0B2A04 02B0+00 2/2 0/0 0/0 .text orderZTalk__9daAlink_cFv */ int daAlink_c::orderZTalk() { - if ((!checkReinRide() && !checkModeFlg(0x40000) && !checkMagneBootsOn() && (!mLinkAcch.i_ChkGroundHit() || checkModeFlg(0x70C52))) || mThrowBoomerangAcKeep.getActor() != NULL || dComIfGp_checkPlayerStatus0(0, 0x8000000) || mProcID == PROC_CRAWL_END || checkHorseZelda() || checkCloudSea() || checkStageName("D_MN08A") || (checkStageName("D_MN09A") && ((fopAcM_GetRoomNo(this) == 50 && dComIfG_play_c::getLayerNo(0) == 0) || fopAcM_GetRoomNo(this) == 51)) || (checkMagneBootsOn() && (!checkStageName("D_MN04B") || !cBgW_CheckBGround(mMagneBootsTopVec.y))) || dComIfGs_isEventBit(0x6140)) { + if ((!checkReinRide() && !checkModeFlg(0x40000) && !checkMagneBootsOn() && (!mLinkAcch.ChkGroundHit() || checkModeFlg(0x70C52))) || mThrowBoomerangAcKeep.getActor() != NULL || dComIfGp_checkPlayerStatus0(0, 0x8000000) || mProcID == PROC_CRAWL_END || checkHorseZelda() || checkCloudSea() || checkStageName("D_MN08A") || (checkStageName("D_MN09A") && ((fopAcM_GetRoomNo(this) == 50 && dComIfG_play_c::getLayerNo(0) == 0) || fopAcM_GetRoomNo(this) == 51)) || (checkMagneBootsOn() && (!checkStageName("D_MN04B") || !cBgW_CheckBGround(mMagneBootsTopVec.y))) || dComIfGs_isEventBit(0x6140)) { return 0; } @@ -13116,7 +13111,7 @@ BOOL daAlink_c::checkItemAction() { return checkCutAction(); } - } else if (checkFishingRodItem(mEquipItem) && mLinkAcch.i_ChkGroundHit()) { + } else if (checkFishingRodItem(mEquipItem) && mLinkAcch.ChkGroundHit()) { if (checkNoResetFlg2(FLG2_UNK_20000000)) { return procFishingCastInit(); } @@ -13148,7 +13143,7 @@ BOOL daAlink_c::checkItemAction() { } } - if (((dComIfGs_isEventBit(0x2908) || checkNoResetFlg3(FLG3_UNK_8)) && checkGuardActionChange() && !checkUpperReadyThrowAnime() && !checkModeFlg(0x70C52) && i_checkShieldGet() && !checkNotBattleStage()) && ((mLinkAcch.i_ChkGroundHit() || checkMagneBootsOn()) && dComIfGp_getRStatus() == 0)) { + if (((dComIfGs_isEventBit(0x2908) || checkNoResetFlg3(FLG3_UNK_8)) && checkGuardActionChange() && !checkUpperReadyThrowAnime() && !checkModeFlg(0x70C52) && i_checkShieldGet() && !checkNotBattleStage()) && ((mLinkAcch.ChkGroundHit() || checkMagneBootsOn()) && dComIfGp_getRStatus() == 0)) { setRStatus(0x3A); if (spActionTrigger()) { @@ -13759,7 +13754,7 @@ void daAlink_c::setItemAction() { daPy_frameCtrl_c* frame_ctrl = &mUpperFrameCtrl[2]; - if (!checkMagneBootsOn() && checkEquipHeavyBoots() && mLinkAcch.i_ChkGroundHit() && !checkModeFlg(0x70C52)) { + if (!checkMagneBootsOn() && checkEquipHeavyBoots() && mLinkAcch.ChkGroundHit() && !checkModeFlg(0x70C52)) { if (dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd) && daTagMagne_c::checkMagnetCode(mLinkAcch.m_gnd)) { onNoResetFlg0(FLG0_MAGNE_BOOTS_ON); setMagneBootsMtx(&mLinkAcch.m_gnd, 1); @@ -14681,7 +14676,7 @@ void daAlink_c::autoGroundHit() { cM3dGPla sp74; f32 temp_f30 = mLinkAcch.GetGroundH() - current.pos.y; - if (!mLinkAcch.i_ChkGroundHit()) { + if (!mLinkAcch.ChkGroundHit()) { if (checkBoardRide() && shape_angle.x < 0) { return; } @@ -14912,7 +14907,7 @@ BOOL daAlink_c::checkRestartRoom() { startRestartRoom(5, 0xC9, 4, 0); return true; } - } else if (mLinkAcch.i_ChkGroundHit() && field_0x2fbd == 2) { + } else if (mLinkAcch.ChkGroundHit() && field_0x2fbd == 2) { return procCoLavaReturnInit(1); } else if ((checkModeFlg(0x40000) || (checkNoResetFlg0(FLG0_UNK_80) && mWaterY - current.pos.y > daAlinkHIO_swim_c0::m.mInitHeight)) && fopAcM_GetRoomNo(this) == 0 && checkStageName("F_SP114")) { return procCoSwimFreezeReturnInit(); @@ -14935,7 +14930,7 @@ BOOL daAlink_c::checkRestartRoom() { var_f30 = 2000.0f; } - if ((field_0x3174 != 10 && ((temp_r28 && checkModeFlg(0x40000)) || (!temp_r28 && (checkModeFlg(2) || checkNoResetFlg3(FLG3_UNK_80000)) && mProcID != PROC_HOOKSHOT_FLY && !checkModeFlg(0x800) && var_f31 > var_f30))) || (field_0x3174 == 10 && var_f31 <= 3000.0f) || (checkSpinnerRide() && mRideAcKeep.getActor() != NULL && ((daSpinner_c*)mRideAcKeep.getActor())->checkGroundHit()) || (mLinkAcch.i_ChkGroundHit() && mProcID != PROC_HOOKSHOT_FLY)) { + if ((field_0x3174 != 10 && ((temp_r28 && checkModeFlg(0x40000)) || (!temp_r28 && (checkModeFlg(2) || checkNoResetFlg3(FLG3_UNK_80000)) && mProcID != PROC_HOOKSHOT_FLY && !checkModeFlg(0x800) && var_f31 > var_f30))) || (field_0x3174 == 10 && var_f31 <= 3000.0f) || (checkSpinnerRide() && mRideAcKeep.getActor() != NULL && ((daSpinner_c*)mRideAcKeep.getActor())->checkGroundHit()) || (mLinkAcch.ChkGroundHit() && mProcID != PROC_HOOKSHOT_FLY)) { int var_r29; s8 var_r27; @@ -14949,7 +14944,7 @@ BOOL daAlink_c::checkRestartRoom() { } if (checkModeFlg(2)) { - mLinkAcch.i_ClrGroundHit(); + mLinkAcch.ClrGroundHit(); } } else { var_r29 = 0x3F; @@ -14984,7 +14979,7 @@ BOOL daAlink_c::checkRestartRoom() { return true; } - } else if ((mLinkAcch.i_ChkGroundHit() && (dKy_pol_argument_get(&mLinkAcch.m_gnd) & 0x80)) || (checkWaterPolygonUnder() && checkNoResetFlg0(FLG0_UNK_80) && (dKy_pol_argument_get(&mLinkAcch.m_wtr) & 0x80)) || (checkModeFlg(0x40) && field_0x33bc < field_0x33b8 && -1000000000.0f != field_0x33b8 && (field_0x2fc6 & 0x80)) || (field_0x2fbc == 6 && checkNoResetFlg0(FLG0_UNK_80) && checkWaterPolygonUnder() && mWaterY > (daAlinkHIO_basic_c0::m.mLavaDeathDepth + mLinkAcch.GetGroundH())) || (field_0x2fc5 == 6 && -1000000000.0f != field_0x33b8 && field_0x33bc < field_0x33b8 && checkModeFlg(0x40) && field_0x33b8 > (field_0x33d8 + daAlinkHIO_basic_c0::m.mLavaDeathDepth))) { + } else if ((mLinkAcch.ChkGroundHit() && (dKy_pol_argument_get(&mLinkAcch.m_gnd) & 0x80)) || (checkWaterPolygonUnder() && checkNoResetFlg0(FLG0_UNK_80) && (dKy_pol_argument_get(&mLinkAcch.m_wtr) & 0x80)) || (checkModeFlg(0x40) && field_0x33bc < field_0x33b8 && -1000000000.0f != field_0x33b8 && (field_0x2fc6 & 0x80)) || (field_0x2fbc == 6 && checkNoResetFlg0(FLG0_UNK_80) && checkWaterPolygonUnder() && mWaterY > (daAlinkHIO_basic_c0::m.mLavaDeathDepth + mLinkAcch.GetGroundH())) || (field_0x2fc5 == 6 && -1000000000.0f != field_0x33b8 && field_0x33bc < field_0x33b8 && checkModeFlg(0x40) && field_0x33b8 > (field_0x33d8 + daAlinkHIO_basic_c0::m.mLavaDeathDepth))) { if (field_0x2fbc == 6 || (checkModeFlg(0x40) && field_0x2fc5 == 6)) { return procCoLavaReturnInit(0); } @@ -15046,7 +15041,7 @@ int daAlink_c::checkSceneChange(int exitID) { (mExitID & 0x8000 && checkModeFlg(2))) { if (field_0x3174 == 5 || (mExitID & 0x8000 && mExitDirection == 0xFF)) { - mLinkAcch.i_ClrGroundHit(); + mLinkAcch.ClrGroundHit(); } if (checkNoResetFlg0(FLG0_UNK_4000)) { diff --git a/src/d/actor/d_a_alink_canoe.inc b/src/d/actor/d_a_alink_canoe.inc index c48b574be92..d52466c2f89 100644 --- a/src/d/actor/d_a_alink_canoe.inc +++ b/src/d/actor/d_a_alink_canoe.inc @@ -545,7 +545,7 @@ int daAlink_c::procCanoeGetOff() { } if (checkModeFlg(2)) { - if (mLinkAcch.i_ChkGroundHit()) { + if (mLinkAcch.ChkGroundHit()) { checkLandAction(0); } else if (speed.y < -gravity) { procFallInit(2, daAlinkHIO_smallJump_c0::m.mFallInterpolation); diff --git a/src/d/actor/d_a_alink_crawl.inc b/src/d/actor/d_a_alink_crawl.inc index 11fc7fe4586..00e4b5c6878 100644 --- a/src/d/actor/d_a_alink_crawl.inc +++ b/src/d/actor/d_a_alink_crawl.inc @@ -293,7 +293,7 @@ void daAlink_c::decideCrawlDoStatus() { /* 800F89E0-800F8A50 0F3320 0070+00 3/3 0/0 0/0 .text checkNotCrawlStand__9daAlink_cFP4cXyz */ BOOL daAlink_c::checkNotCrawlStand(cXyz* param_0) { - mLinkRoofChk.i_SetPos(*param_0); + mLinkRoofChk.SetPos(*param_0); return dComIfG_Bgsp().RoofChk(&mLinkRoofChk) - current.pos.y <= field_0x598; } diff --git a/src/d/actor/d_a_alink_damage.inc b/src/d/actor/d_a_alink_damage.inc index fa0d6280b09..45cf5ed59a2 100644 --- a/src/d/actor/d_a_alink_damage.inc +++ b/src/d/actor/d_a_alink_damage.inc @@ -295,7 +295,7 @@ int daAlink_c::checkPolyDamage() { } int var_r29; - if (!checkBoardRide() && mLinkAcch.i_ChkGroundHit()) { + if (!checkBoardRide() && mLinkAcch.ChkGroundHit()) { if (dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd) && (dKy_pol_argument_get(&mLinkAcch.m_gnd) & 0x60)) { var_r29 = 1; if (checkIcePolygonDamage(&mLinkAcch.m_gnd)) { @@ -545,7 +545,7 @@ BOOL daAlink_c::checkDamageAction() { seStartOnlyReverb(Z2SE_AL_DAMAGE_NORMAL); } } else { - if (!checkModeFlg(0x40000) && ((sp2C & 0x40) || (!mLinkAcch.i_ChkGroundHit() && (sp28 == 3 || sp28 == 4)))) { + if (!checkModeFlg(0x40000) && ((sp2C & 0x40) || (!mLinkAcch.ChkGroundHit() && (sp28 == 3 || sp28 == 4)))) { dComIfGp_getVibration().StartShock(2, 0x1F, cXyz(0.0f, 1.0f, 0.0f)); int sp24; @@ -730,7 +730,7 @@ BOOL daAlink_c::checkDamageAction() { } else if (!armor_no_dmg) { return procSwimDamageInit(var_r29); } - } else if (dmg == 0 && !checkWolf() && (at_spl == 10 || at_spl == 11 || at_spl == 9) && mLinkAcch.i_ChkGroundHit() && !checkModeFlg(0x70C52)) { + } else if (dmg == 0 && !checkWolf() && (at_spl == 10 || at_spl == 11 || at_spl == 9) && mLinkAcch.ChkGroundHit() && !checkModeFlg(0x70C52)) { return procGuardBreakInit(); } else if (checkHugeAttack(at_spl)) { return procCoLargeDamageInit(-1, 0, 0, 0, var_r29, 0); @@ -1197,7 +1197,7 @@ int daAlink_c::procCoLargeDamage() { setFallVoice(); } - if ((mLinkAcch.i_ChkGroundHit() || checkEndResetFlg2(ERFLG2_UNK_100)) && !checkBoarSingleBattle()) { + if ((mLinkAcch.ChkGroundHit() || checkEndResetFlg2(ERFLG2_UNK_100)) && !checkBoarSingleBattle()) { if (checkWolf()) { procWolfLargeDamageUpInit(field_0x3198, mProcVar1.field_0x300a, field_0x3080, field_0x3082); } else { @@ -1669,7 +1669,7 @@ int daAlink_c::procCoElecDamageInit(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, daAlink_ANM var_r29; daAlink_WANM var_r28; - if ((mLinkAcch.i_ChkGroundHit() && !temp_r27) || checkMagneBootsOn()) { + if ((mLinkAcch.ChkGroundHit() && !temp_r27) || checkMagneBootsOn()) { if (mEquipItem == fpcNm_ITEM_IRONBALL) { setIronBallWaitUpperAnime(1); } diff --git a/src/d/actor/d_a_alink_demo.inc b/src/d/actor/d_a_alink_demo.inc index 59db73f6328..d0e7eefc38a 100644 --- a/src/d/actor/d_a_alink_demo.inc +++ b/src/d/actor/d_a_alink_demo.inc @@ -1286,7 +1286,7 @@ BOOL daAlink_c::checkDeadHP() { BOOL daAlink_c::checkDeadAction(int param_0) { 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())) { + if (mLinkAcch.ChkGroundHit() || checkModeFlg(0x40000) || checkBoarRide() || (checkHorseRide() && !dComIfGp_getHorseActor()->checkJump())) { return procCoDeadInit(1); } diff --git a/src/d/actor/d_a_alink_effect.inc b/src/d/actor/d_a_alink_effect.inc index 15397660e9a..ded32da43b9 100644 --- a/src/d/actor/d_a_alink_effect.inc +++ b/src/d/actor/d_a_alink_effect.inc @@ -318,7 +318,7 @@ void daAlink_c::setEffect() { setElecDamageEffect(); } - if (checkMagneBootsOn() || (checkEquipHeavyBoots() && mLinkAcch.i_ChkGroundHit() && + if (checkMagneBootsOn() || (checkEquipHeavyBoots() && mLinkAcch.ChkGroundHit() && dComIfG_Bgsp().GetMagnetCode(mLinkAcch.m_gnd) == 2)) { if (!checkMagneBootsOn() && !checkNoResetFlg3(FLG3_UNK_1)) { @@ -543,7 +543,7 @@ void daAlink_c::setEffect() { } f32 temp_f30 = field_0x3798.absXZ(current.pos); - if ((!checkModeFlg(0x70C52) && (mLinkAcch.i_ChkGroundHit() || checkMagneBootsOn())) || + if ((!checkModeFlg(0x70C52) && (mLinkAcch.ChkGroundHit() || checkMagneBootsOn())) || mProcID == PROC_SUMOU_WIN_LOSE || (checkBoardRide() && !checkModeFlg(2)) || mProcID == PROC_WOLF_TAG_JUMP) { diff --git a/src/d/actor/d_a_alink_grab.inc b/src/d/actor/d_a_alink_grab.inc index 1d0db5abd5f..3a00d3408fd 100644 --- a/src/d/actor/d_a_alink_grab.inc +++ b/src/d/actor/d_a_alink_grab.inc @@ -2351,7 +2351,7 @@ int daAlink_c::procGoatCatch() { return procWaitInit(); } - if (!mLinkAcch.i_ChkGroundHit() && mProcVar5.field_0x3012 == 0 && (!checkMagneBootsOn() || !checkNoResetFlg0(FLG0_UNK_2000))) { + if (!mLinkAcch.ChkGroundHit() && mProcVar5.field_0x3012 == 0 && (!checkMagneBootsOn() || !checkNoResetFlg0(FLG0_UNK_2000))) { setGoatStopGameFail(temp_r3); return 1; } @@ -2415,7 +2415,7 @@ int daAlink_c::procGoatCatch() { return 1; } - if (!doButton() || (!mLinkAcch.i_ChkGroundHit() && (!checkMagneBootsOn() || !checkNoResetFlg0(FLG0_UNK_2000))) || field_0x3198 > 0 && mNormalSpeed >= 30.0f) { + if (!doButton() || (!mLinkAcch.ChkGroundHit() && (!checkMagneBootsOn() || !checkNoResetFlg0(FLG0_UNK_2000))) || field_0x3198 > 0 && mNormalSpeed >= 30.0f) { if (checkMagneBootsOn()) { cancelMagneBootsOn(); diff --git a/src/d/actor/d_a_alink_hang.inc b/src/d/actor/d_a_alink_hang.inc index baccdc83316..60708ea2377 100644 --- a/src/d/actor/d_a_alink_hang.inc +++ b/src/d/actor/d_a_alink_hang.inc @@ -99,7 +99,7 @@ BOOL daAlink_c::hangMoveBgCheck(s16 param_0, cXyz* param_1) { /* 800FA338-800FA5C8 0F4C78 0290+00 3/3 0/0 0/0 .text changeHangMoveProc__9daAlink_cFi */ BOOL daAlink_c::changeHangMoveProc(int i_direction) { - if (!mLinkAcch.i_ChkGroundHit() || !dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd)) { + if (!mLinkAcch.ChkGroundHit() || !dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd)) { return false; } @@ -1792,7 +1792,7 @@ void daAlink_c::changeClimbMoveProc(int param_0) { if (field_0x2f98 == DIR_FORWARD || field_0x2f98 == DIR_BACKWARD) { cXyz sp44(current.pos.x - cM_ssin(shape_angle.y) * 15.0f, current.pos.y + field_0x598, current.pos.z - cM_scos(shape_angle.y) * 15.0f); - mLinkRoofChk.i_SetPos(sp44); + mLinkRoofChk.SetPos(sp44); f32 roof_y = dComIfG_Bgsp().RoofChk(&mLinkRoofChk); if (field_0x2f98 == DIR_FORWARD && roof_y < sp44.y + 110.0f && @@ -1886,7 +1886,7 @@ int daAlink_c::setMoveBGClimbCorrect() { return 0; } - if (mLinkAcch.i_ChkGroundHit()) { + if (mLinkAcch.ChkGroundHit()) { return procFallInit(1, daAlinkHIO_autoJump_c0::m.mFallInterpolation); } @@ -1961,7 +1961,7 @@ int daAlink_c::checkBgCorrectClimbMove(cXyz* i_startPos, cXyz* i_endPos) { BOOL daAlink_c::checkClimbRoof(f32 param_0) { cXyz sp44(current.pos.x - cM_ssin(shape_angle.y) * 30.0f, param_0 - 30.0f, current.pos.z - cM_scos(shape_angle.y) * 30.0f); - mLinkRoofChk.i_SetPos(sp44); + mLinkRoofChk.SetPos(sp44); if (dComIfG_Bgsp().RoofChk(&mLinkRoofChk) < param_0 + 30.0f && dComIfG_Bgsp().GetMonkeyBarsCode(mLinkRoofChk)) @@ -2049,7 +2049,7 @@ BOOL daAlink_c::checkBgClimbMove(int i_direction) { sp8C.set(var_f26 + (current.pos.x + var_f31), current.pos.y, var_f25 + (current.pos.z + var_f30)); - mLinkRoofChk.i_SetPos(sp8C); + mLinkRoofChk.SetPos(sp8C); f32 var_f29 = dComIfG_Bgsp().RoofChk(&mLinkRoofChk) - field_0x598; if (var_f29 < current.pos.y) { @@ -2058,7 +2058,7 @@ BOOL daAlink_c::checkBgClimbMove(int i_direction) { sp8C.set(var_f26 + (current.pos.x - var_f31), current.pos.y, var_f25 + (current.pos.z - var_f30)); - mLinkRoofChk.i_SetPos(sp8C); + mLinkRoofChk.SetPos(sp8C); var_f29 = dComIfG_Bgsp().RoofChk(&mLinkRoofChk) - field_0x598; if (var_f29 < current.pos.y) { @@ -2597,7 +2597,7 @@ int daAlink_c::procClimbToRoof() { cXyz sp38(current.pos.x + cM_ssin(shape_angle.y) * 95.0f, current.pos.y, current.pos.z + cM_scos(shape_angle.y) * 95.0f); - mLinkRoofChk.i_SetPos(sp38); + mLinkRoofChk.SetPos(sp38); sp38.y = dComIfG_Bgsp().RoofChk(&mLinkRoofChk); if (sp38.y < current.pos.y + 214.0f + 110.0f) { @@ -2644,7 +2644,7 @@ int daAlink_c::checkRoofHangMovePos() { cXyz sp38(current.pos.x + cM_ssin(angle) * 60.0f, (current.pos.y + 214.0f) - 10.0f, current.pos.z + cM_scos(angle) * 60.0f); - mLinkRoofChk.i_SetPos(sp38); + mLinkRoofChk.SetPos(sp38); if (dComIfG_Bgsp().RoofChk(&mLinkRoofChk) < sp38.y + 50.0f) { if (dComIfG_Bgsp().GetMonkeyBarsCode(mLinkRoofChk)) { @@ -2669,7 +2669,7 @@ int daAlink_c::commonRoofHangProc() { } cXyz sp28(current.pos.x, (current.pos.y + 214.0f) - 10.0f, current.pos.z); - mLinkRoofChk.i_SetPos(sp28); + mLinkRoofChk.SetPos(sp28); f32 roof_y = dComIfG_Bgsp().RoofChk(&mLinkRoofChk); if (roof_y < sp28.y + 50.0f && dComIfG_Bgsp().GetMonkeyBarsCode(mLinkRoofChk) && diff --git a/src/d/actor/d_a_alink_horse.inc b/src/d/actor/d_a_alink_horse.inc index 48687f7394d..dc52d6a8891 100644 --- a/src/d/actor/d_a_alink_horse.inc +++ b/src/d/actor/d_a_alink_horse.inc @@ -1648,7 +1648,7 @@ int daAlink_c::procHorseGetOff() { } else { field_0x2f99 = 7; - if (mLinkAcch.i_ChkGroundHit()) { + if (mLinkAcch.ChkGroundHit()) { horseGetOffEnd(); return procLandInit(0.0f); } diff --git a/src/d/actor/d_a_alink_iceleaf.inc b/src/d/actor/d_a_alink_iceleaf.inc index bd1071a2965..5d0e641ae52 100644 --- a/src/d/actor/d_a_alink_iceleaf.inc +++ b/src/d/actor/d_a_alink_iceleaf.inc @@ -58,7 +58,7 @@ int daAlink_c::boardCommon(BOOL i_canMove) { } } - if (!checkSnowCode() && mLinkAcch.i_ChkGroundHit() && !checkModeFlg(2)) { + if (!checkSnowCode() && mLinkAcch.ChkGroundHit() && !checkModeFlg(2)) { setJumpMode(); procBackJumpInit(0); @@ -71,7 +71,7 @@ int daAlink_c::boardCommon(BOOL i_canMove) { } s16 var_r27; - if (mLinkAcch.i_ChkGroundHit() && dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd)) { + if (mLinkAcch.ChkGroundHit() && dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd)) { cM3dGPla poly; dComIfG_Bgsp().GetTriPla(mLinkAcch.m_gnd, &poly); @@ -115,11 +115,11 @@ int daAlink_c::boardCommon(BOOL i_canMove) { } if (checkZeroSpeedF() && temp_r26 > 0x7000 && mProcID == PROC_BOARD_WAIT && !checkModeFlg(2)) { - if (mProcVar3.field_0x300e <= 910.0f && checkUnderMove0BckNoArc(ANM_RIDE_WAIT) && mLinkAcch.i_ChkGroundHit()) { + if (mProcVar3.field_0x300e <= 910.0f && checkUnderMove0BckNoArc(ANM_RIDE_WAIT) && mLinkAcch.ChkGroundHit()) { return procBoardTurnInit(); } } - } else if (temp_r26 < 0x2000 && field_0x2f8c == 0xB && mProcID == PROC_BOARD_WAIT && !checkModeFlg(2) && mLinkAcch.i_ChkGroundHit() && (mProcVar3.field_0x300e < field_0x3122) && (checkUnderMove0BckNoArc(ANM_RIDE_WAIT) || checkUnderMove0BckNoArc(ANM_RIDE_FRONT))) { + } else if (temp_r26 < 0x2000 && field_0x2f8c == 0xB && mProcID == PROC_BOARD_WAIT && !checkModeFlg(2) && mLinkAcch.ChkGroundHit() && (mProcVar3.field_0x300e < field_0x3122) && (checkUnderMove0BckNoArc(ANM_RIDE_WAIT) || checkUnderMove0BckNoArc(ANM_RIDE_FRONT))) { if (mNormalSpeed <= daAlinkHIO_board_c0::m.mMaxPushSpeed) { return procBoardRowInit(); } @@ -159,7 +159,7 @@ int daAlink_c::boardCommon(BOOL i_canMove) { shape_angle.z = field_0x2fee >> 1; mBodyAngle.z = shape_angle.z; - if (mLinkAcch.i_ChkGroundHit() && dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd)) { + if (mLinkAcch.ChkGroundHit() && dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd)) { if (checkModeFlg(2)) { offModeFlg(2); speed.y = 0.0f; @@ -499,7 +499,7 @@ int daAlink_c::procBoardRow() { daPy_frameCtrl_c* frame_ctrl = &mUnderFrameCtrl[0]; if (frame_ctrl->checkPass(0.0f)) { - if (checkInputOnR() && abs(mStickAngle) < 0x2000 && !checkModeFlg(2) && mLinkAcch.i_ChkGroundHit() && mProcVar3.field_0x300e < field_0x3122 && mNormalSpeed <= daAlinkHIO_board_c0::m.mMaxPushSpeed) { + if (checkInputOnR() && abs(mStickAngle) < 0x2000 && !checkModeFlg(2) && mLinkAcch.ChkGroundHit() && mProcVar3.field_0x300e < field_0x3122 && mNormalSpeed <= daAlinkHIO_board_c0::m.mMaxPushSpeed) { mProcVar5.field_0x3012 = 0; } else { setCommonBoardAnime(FALSE); diff --git a/src/d/actor/d_a_alink_ironball.inc b/src/d/actor/d_a_alink_ironball.inc index b27678de210..9e99bea609a 100644 --- a/src/d/actor/d_a_alink_ironball.inc +++ b/src/d/actor/d_a_alink_ironball.inc @@ -275,7 +275,7 @@ void daAlink_c::setIronBallChainPos() { sp274 = mIronBallBgChkPos; field_0x0778->CrrPos(dComIfG_Bgsp()); - if (field_0x0778->i_ChkGroundHit()) { + if (field_0x0778->ChkGroundHit()) { *mIronBallChainPos += mIronBallBgChkPos - sp274; } @@ -679,8 +679,8 @@ void daAlink_c::setIronBallPos() { mZ2Link.startHitItemSE(Z2SE_HIT_HAMMER, var_r29, mpHookSound, var_f31); } - if (field_0x0778->ChkWallHit() || field_0x0778->i_ChkGroundHit() || field_0x0778->ChkRoofHit() || (mItemVar0.field_0x3018 == 5 && (var_r26 != 0 || mItemMode > var_r23))) { - if (field_0x0778->ChkWallHit() || field_0x0778->i_ChkGroundHit() || field_0x0778->ChkRoofHit()) { + if (field_0x0778->ChkWallHit() || field_0x0778->ChkGroundHit() || field_0x0778->ChkRoofHit() || (mItemVar0.field_0x3018 == 5 && (var_r26 != 0 || mItemMode > var_r23))) { + if (field_0x0778->ChkWallHit() || field_0x0778->ChkGroundHit() || field_0x0778->ChkRoofHit()) { *mIronBallChainPos += mIronBallBgChkPos - sp10C; if (field_0x0778->ChkWallHit()) { @@ -692,7 +692,7 @@ void daAlink_c::setIronBallPos() { } } - if (field_0x0778->i_ChkGroundHit()) { + if (field_0x0778->ChkGroundHit()) { field_0x3848->x *= 0.5f; field_0x3848->z *= 0.5f; @@ -787,7 +787,7 @@ void daAlink_c::setIronBallPos() { if (mItemVar0.field_0x3018 == 4) { field_0x0778->CrrPos(dComIfG_Bgsp()); - if (field_0x0778->i_ChkGroundHit() || field_0x0778->ChkRoofHit() || field_0x0778->ChkWallHit()) { + if (field_0x0778->ChkGroundHit() || field_0x0778->ChkRoofHit() || field_0x0778->ChkWallHit()) { mItemVar0.field_0x3018 = 8; dComIfGp_getVibration().StartShock(4, 1, cXyz(0.0f, 1.0f, 0.0f)); } diff --git a/src/d/actor/d_a_alink_kandelaar.inc b/src/d/actor/d_a_alink_kandelaar.inc index c326735e1f2..d0fb402bd2c 100644 --- a/src/d/actor/d_a_alink_kandelaar.inc +++ b/src/d/actor/d_a_alink_kandelaar.inc @@ -393,7 +393,7 @@ int daAlink_c::procKandelaarSwingInit() { mNormalSpeed = 0.0f; current.angle.y = shape_angle.y; - if ((mLinkAcch.i_ChkGroundHit() && getMoveBGActorName(mLinkAcch.m_gnd, FALSE) == PROC_OBJ_WEB1) || + if ((mLinkAcch.ChkGroundHit() && getMoveBGActorName(mLinkAcch.m_gnd, FALSE) == PROC_OBJ_WEB1) || (checkStageName("F_SP108") && fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchTagKtOnFire, NULL) != NULL)) { diff --git a/src/d/actor/d_a_alink_link.inc b/src/d/actor/d_a_alink_link.inc index ec69ecda459..8d1babd5a88 100644 --- a/src/d/actor/d_a_alink_link.inc +++ b/src/d/actor/d_a_alink_link.inc @@ -1615,7 +1615,7 @@ int daAlink_c::procRollJumpInit() { shape_angle.y = field_0x30ee; current.angle.y = shape_angle.y; - mLinkAcch.i_ClrGroundHit(); + mLinkAcch.ClrGroundHit(); field_0x347c = 0.0f; shape_angle.x = 1; @@ -2139,7 +2139,7 @@ int daAlink_c::procCoMetamorphose() { } daPy_frameCtrl_c* temp_r29 = mUnderFrameCtrl; - if (!mLinkAcch.i_ChkGroundHit()) { + if (!mLinkAcch.ChkGroundHit()) { current.pos.y = field_0x3484; speed.y = 0.0f; } else { @@ -4338,7 +4338,7 @@ bool daAlink_c::acceptSubjectModeChange() { !checkEventRun() && !checkModeFlg(0x310040) && (checkNoUpperAnime() || checkHorseTiredAnime() || checkGrabAnime() || checkWolfGrabAnime()) && - !(checkWolf() && checkWolfWaitSlipPolygon() && mLinkAcch.i_ChkGroundHit()); + !(checkWolf() && checkWolfWaitSlipPolygon() && mLinkAcch.ChkGroundHit()); } /* 800CE628-800CE728 0C8F68 0100+00 5/5 0/0 0/0 .text checkSubjectAction__9daAlink_cFv */ diff --git a/src/d/actor/d_a_alink_wolf.inc b/src/d/actor/d_a_alink_wolf.inc index 96af3f657cd..89924e54c71 100644 --- a/src/d/actor/d_a_alink_wolf.inc +++ b/src/d/actor/d_a_alink_wolf.inc @@ -1092,7 +1092,7 @@ void daAlink_c::setBlendWolfAtnMoveAnime(f32 param_0) { field_0x2fc1 = 0; s16 var_r28; - if (field_0x3174 == 8 || !mLinkAcch.i_ChkGroundHit()) { + if (field_0x3174 == 8 || !mLinkAcch.ChkGroundHit()) { var_r28 = 0; } else { var_r28 = getGroundAngle(&mLinkAcch.m_gnd, current.angle.y); @@ -1754,7 +1754,7 @@ void daAlink_c::wolfBgCheck() { int i = 0; for (; i < 2; i++) { sp38.set(current.pos.x, current.pos.y + mAcchCir[2].GetWallH(), current.pos.z); - if (mLinkAcch.i_ChkGroundHit()) { + if (mLinkAcch.ChkGroundHit()) { sp38.y -= speed.y; } @@ -1938,8 +1938,8 @@ void daAlink_c::wolfFootBgCheck() { mDoMtx_multVec(mpLinkModel->getAnmMtx(0x1F), &localFootOffset, &spE0); mDoMtx_multVec(mpLinkModel->getAnmMtx(0x24), &localFootOffset, &spEC); - BOOL sp28 = !mLinkAcch.i_ChkGroundHit() || checkModeFlg(0x78C52); - BOOL sp24 = sp28 || (mLinkAcch.i_ChkGroundHit() && mSinkShapeOffset < 0.0f); + BOOL sp28 = !mLinkAcch.ChkGroundHit() || checkModeFlg(0x78C52); + BOOL sp24 = sp28 || (mLinkAcch.ChkGroundHit() && mSinkShapeOffset < 0.0f); f32* sp20 = &spA0[0][0]; cXyz* var_r26 = &spC8; @@ -5061,7 +5061,7 @@ int daAlink_c::getWolfTagJumpTime() const { /* 80133EF0-80134000 12E830 0110+00 3/3 1/1 1/1 .text checkMidnaLockJumpPoint__9daAlink_cCFv */ const cXyz* daAlink_c::checkMidnaLockJumpPoint() const { - if ((!mLinkAcch.i_ChkGroundHit() && mProcID != PROC_WOLF_TAG_JUMP) || checkMidnaUseAbility() || + if ((!mLinkAcch.ChkGroundHit() && mProcID != PROC_WOLF_TAG_JUMP) || checkMidnaUseAbility() || getMidnaActor()->eventInfo.checkCommandTalk()) { return NULL; @@ -9285,7 +9285,7 @@ int daAlink_c::procWolfDig() { onEndResetFlg1(ERFLG1_WOLF_EYE_KEEP); cXyz sp14(field_0x37c8); - dComIfG_Bgsp().MoveBgCrrPos(mLinkAcch.m_gnd, mLinkAcch.i_ChkGroundHit(), &field_0x37c8, NULL, NULL, false, false); + dComIfG_Bgsp().MoveBgCrrPos(mLinkAcch.m_gnd, mLinkAcch.ChkGroundHit(), &field_0x37c8, NULL, NULL, false, false); field_0x37d4 += field_0x37c8 - sp14; if (mProcVar3.mDigChangeArea) { diff --git a/src/d/actor/d_a_b_ds.cpp b/src/d/actor/d_a_b_ds.cpp index fc036756e9b..93fb06d042b 100644 --- a/src/d/actor/d_a_b_ds.cpp +++ b/src/d/actor/d_a_b_ds.cpp @@ -605,7 +605,7 @@ void daB_DS_c::mSmokeSet() { return; } - if (mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundHit()) { if (field_0x84d == 0 && mAcch.GetGroundH() != -1000000000.0f) { cXyz particle_scale(1.0f, 1.0f, 1.0f); cXyz particle_pos(current.pos); @@ -3617,7 +3617,7 @@ void daB_DS_c::executeBattle2Damage() { // fallthrough case 2: mCameraCenter = current.pos; - if (!mAcch.i_ChkGroundHit() && current.pos.y - 100.0f > chk_pos.y) { + if (!mAcch.ChkGroundHit() && current.pos.y - 100.0f > chk_pos.y) { break; } diff --git a/src/d/actor/d_a_b_ob.cpp b/src/d/actor/d_a_b_ob.cpp index 4a4e7dea8a6..b875c9f9233 100644 --- a/src/d/actor/d_a_b_ob.cpp +++ b/src/d/actor/d_a_b_ob.cpp @@ -1066,7 +1066,7 @@ static int core_chance(b_ob_class* i_this) { } break; case 1: - if (i_this->mAcch.i_ChkGroundHit()) { + if (i_this->mAcch.ChkGroundHit()) { if (i_this->mTimers[0] == 0) { i_this->mMode = 2; } else { diff --git a/src/d/actor/d_a_b_yo.cpp b/src/d/actor/d_a_b_yo.cpp index 1b6b5c611cd..a0aac31a35b 100644 --- a/src/d/actor/d_a_b_yo.cpp +++ b/src/d/actor/d_a_b_yo.cpp @@ -1214,7 +1214,7 @@ void daB_YO_c::executeOpening() { mActionTimer2 = 31; player->changeDemoMode(40, 0, 0, 0); } - if (mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundHit()) { mRoomType = 1; mColorMode = 4; mColBlend = 0.0f; @@ -2550,7 +2550,7 @@ void daB_YO_c::executeDeath() { case 6: mCamCenter.y = current.pos.y + 540.0f; cLib_chaseF(&speed.y, -100.0f, 10.0f); - if (mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundHit()) { dComIfGp_getVibration().StartQuake(8, 0x1f, cXyz(0.0f, 1.0f, 0.0f)); mQuakeTimer = 30; speed.y = 0.0f; diff --git a/src/d/actor/d_a_b_zant.cpp b/src/d/actor/d_a_b_zant.cpp index 6fdbae0cf74..8c96c8d3cb4 100644 --- a/src/d/actor/d_a_b_zant.cpp +++ b/src/d/actor/d_a_b_zant.cpp @@ -2547,7 +2547,7 @@ void daB_ZANT_c::executeSimaJump() { cLib_addCalcAngleS(&shape_angle.y, fopAcM_searchPlayerAngleY(this), 8, 0x800, 0x80); if (fopAcM_searchPlayerDistance(this) < 550.0f) { - if (mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundHit()) { mMode = 11; return; } @@ -2559,7 +2559,7 @@ void daB_ZANT_c::executeSimaJump() { } if (mMode == 1) { - if (mAcch.i_ChkGroundHit() && field_0x6ec == 0) { + if (mAcch.ChkGroundHit() && field_0x6ec == 0) { setBck(ANM_JUMP_A, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f); mMode = 2; } @@ -2582,7 +2582,7 @@ void daB_ZANT_c::executeSimaJump() { mpModelMorf->setPlaySpeed(0.0f); } - if (mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundHit()) { mSound.startCreatureSound(Z2SE_EN_ZAN_MG_LAND, 0, -1); mpModelMorf->setPlaySpeed(1.0f); mpModelMorf->setFrame(8.0f); @@ -2594,7 +2594,7 @@ void daB_ZANT_c::executeSimaJump() { field_0x6ec = 5; } - if (mAcch.i_ChkGroundHit() && mModeTimer == 0) { + if (mAcch.ChkGroundHit() && mModeTimer == 0) { mMode = 11; } break; @@ -2765,7 +2765,7 @@ void daB_ZANT_c::executeIceJump() { mFoot2Cc[4].SetAtAtp(4); } } else { - if (mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundHit()) { field_0x70e = 1; mSound.startCreatureSound(Z2SE_EN_ZAN_YO_LAND_HUGE, 0, -1); dComIfGp_getVibration().StartShock(8, 31, cXyz(0.0f, 1.0f, 0.0f)); @@ -3140,7 +3140,7 @@ void daB_ZANT_c::executeIceDamage() { } break; case 4: - if (mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundHit()) { s16 sp8 = fopAcM_searchPlayerAngleY(this) + (4096.0f * cM_rndFX(4.9f)) + 32768.0f; if (current.pos.absXZ() > 1200.0f) { @@ -3457,7 +3457,7 @@ void daB_ZANT_c::executeMonkey() { case 6: cLib_addCalcAngleS2(&shape_angle.y, cLib_targetAngleY(¤t.pos, &field_0x6ac), 8, 0x800); - if (mModeTimer == 0 && mAcch.i_ChkGroundHit()) { + if (mModeTimer == 0 && mAcch.ChkGroundHit()) { setBck(ANM_LV1_JUMP_A, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f); mMode = 8; } @@ -3488,7 +3488,7 @@ void daB_ZANT_c::executeMonkey() { setBck(ANM_LB1_JUMP_B, J3DFrameCtrl::LOOP_ONCE_e, 3.0f, 1.0f); } - if (mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundHit()) { current.pos = field_0x6ac; field_0x707 = 1; field_0x70a = field_0x709; @@ -3571,7 +3571,7 @@ void daB_ZANT_c::executeMonkeyFall() { } break; case 12: - if (mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundHit()) { mSound.startCreatureSound(Z2SE_EN_ZAN_MK_UMARU, 0, -1); setMonkeyFallEffect(); dComIfGp_getVibration().StartShock(3, 31, cXyz(0.0f, 1.0f, 0.0f)); @@ -3858,7 +3858,7 @@ void daB_ZANT_c::executeLastStartDemo() { sp1C.set(0.0f, 90.0f, -900.0f); cLib_addCalcPos(&mDemoCamCenter, sp1C, 0.2f, 5.0f, 1.0f); - if (mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundHit()) { speed.y = 0.0f; speedF = 0.0f; dComIfGp_getVibration().StartShock(4, 31, cXyz(0.0f, 1.0f, 0.0f)); @@ -4148,7 +4148,7 @@ void daB_ZANT_c::executeLastAttack() { } if (field_0x70b != 0) { - if (mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundHit()) { field_0x70b--; if (field_0x70b != 0) { diff --git a/src/d/actor/d_a_b_zant_magic.cpp b/src/d/actor/d_a_b_zant_magic.cpp index 1908571872b..b103183329c 100644 --- a/src/d/actor/d_a_b_zant_magic.cpp +++ b/src/d/actor/d_a_b_zant_magic.cpp @@ -159,7 +159,7 @@ void daB_ZANTM_c::executeSmall() { Z2GetAudioMgr()->seStartLevel(Z2SE_EN_ZAN_FIRE, ¤t.pos, 0, 0, 1.0f, 1.0f, -1.0f, -1.0f, false); cLib_chaseF(&field_0x5e8, 1.0f, 0.1f); - if (mAliveTimer == 0 || mAcch.ChkWallHit() || mAcch.i_ChkGroundHit()) { + if (mAliveTimer == 0 || mAcch.ChkWallHit() || mAcch.ChkGroundHit()) { speed.z = 0.0f; speed.y = 0.0f; speed.x = 0.0f; diff --git a/src/d/actor/d_a_do.cpp b/src/d/actor/d_a_do.cpp index 297e218aa10..93434583926 100644 --- a/src/d/actor/d_a_do.cpp +++ b/src/d/actor/d_a_do.cpp @@ -1195,7 +1195,7 @@ static void do_hang(do_class* i_this) { if (i_this->mTimer[0] == 0) { i_this->mBgS_Acch.CrrPos(dComIfG_Bgsp()); - if (i_this->mBgS_Acch.i_ChkGroundHit()) { + if (i_this->mBgS_Acch.ChkGroundHit()) { i_this->current.angle.x = 0; anm_init(i_this, ANM_DOWN, 2.0f, 0, 2.0f); i_this->mMode = 6; @@ -1723,7 +1723,7 @@ static s8 do_boat(do_class* i_this) { break; case 7: - if (i_this->mBgS_Acch.i_ChkGroundHit()) { + if (i_this->mBgS_Acch.ChkGroundHit()) { i_this->mAction = ACT_HELP; i_this->mMode = 0; _this->speedF = 0.0f; diff --git a/src/d/actor/d_a_e_pm.cpp b/src/d/actor/d_a_e_pm.cpp index 1fe5e673687..37c5ebaa323 100644 --- a/src/d/actor/d_a_e_pm.cpp +++ b/src/d/actor/d_a_e_pm.cpp @@ -914,7 +914,7 @@ void daE_PM_c::DemoAfterEscape() { ¤t.angle, &scale, 0xff, NULL, -1, NULL, NULL, NULL); mCamCenterTarget.y = current.pos.y + 50.0f; - if (mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundHit()) { mCreatureSound.startCreatureSound(Z2SE_EN_PM_FN_L, 0, -1); mCreatureSound.startCreatureSound(Z2SE_EN_PM_FN_R, 0, -1); SetAnm(ANM_APPEAR02, J3DFrameCtrl::LOOP_ONCE_e, 5.0f, 1.0f); @@ -1286,7 +1286,7 @@ void daE_PM_c::DemoBossStart2() { } mCamCenterTarget.y = current.pos.y + 100.0f; - if (mAcch.i_ChkGroundHit() && mAnm == ANM_APPEAR01) { + if (mAcch.ChkGroundHit() && mAnm == ANM_APPEAR01) { SetAnm(ANM_APPEAR02, J3DFrameCtrl::LOOP_ONCE_e, 5.0f, 1.0f); mCreatureSound.startCreatureSound(Z2SE_EN_PM_FN_L, 0, -1); mCreatureSound.startCreatureSound(Z2SE_EN_PM_FN_R, 0, -1); @@ -1503,7 +1503,7 @@ void daE_PM_c::DemoBossStart() { mDemoMode++; } - if (mAcch.i_ChkGroundHit() && mAnm == ANM_APPEAR01) { + if (mAcch.ChkGroundHit() && mAnm == ANM_APPEAR01) { SetAnm(ANM_APPEAR02, J3DFrameCtrl::LOOP_ONCE_e, 5.0f, 1.0f); mCreatureSound.startCreatureSound(Z2SE_EN_PM_FN_L, 0, -1); mCreatureSound.startCreatureSound(Z2SE_EN_PM_FN_R, 0, -1); @@ -1613,7 +1613,7 @@ void daE_PM_c::BossEscapeAction() { cLib_addCalcAngleS2(¤t.angle.y, mTargetAngleY, 0x10, 0x1000); shape_angle.y = current.angle.y; - if (mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundHit()) { SetAnm(ANM_APPEAR02, J3DFrameCtrl::LOOP_ONCE_e, 5.0f, 1.0f); mMode++; mCreatureSound.startCreatureSound(Z2SE_EN_PM_FN_L, 0, -1); @@ -1754,7 +1754,7 @@ void daE_PM_c::BossDamageAction() { cLib_addCalcAngleS2(¤t.angle.y, mTargetAngleY, 0x10, 0x1000); shape_angle.y = current.angle.y; - if (mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundHit()) { SetAnm(ANM_APPEAR02, J3DFrameCtrl::LOOP_ONCE_e, 5.0f, 1.0f); mMode++; mCreatureSound.startCreatureSound(Z2SE_EN_PM_FN_L, 0, -1); @@ -2103,7 +2103,7 @@ void daE_PM_c::StartAction() { break; case 1: - if (mTimer[0] == 0 && mAcch.i_ChkGroundHit()) { + if (mTimer[0] == 0 && mAcch.ChkGroundHit()) { SetAnm(ANM_APPEAR02, J3DFrameCtrl::LOOP_ONCE_e, 5.0f, 1.0f); mCreatureSound.startCreatureSound(Z2SE_EN_PM_FN_L, 0, -1); mCreatureSound.startCreatureSound(Z2SE_EN_PM_FN_R, 0, -1); diff --git a/src/d/actor/d_a_e_s1.cpp b/src/d/actor/d_a_e_s1.cpp index 9a852557880..5d4f58bc90a 100644 --- a/src/d/actor/d_a_e_s1.cpp +++ b/src/d/actor/d_a_e_s1.cpp @@ -553,7 +553,7 @@ static void e_s1_roof(e_s1_class* i_this) { if (i_this->mTimers[0] == 0) { i_this->mDrawShadow = true; - if (i_this->mAcch.i_ChkGroundHit()) { + if (i_this->mAcch.ChkGroundHit()) { anm_init(i_this, ANM_DOWN, 1.0f, J3DFrameCtrl::LOOP_ONCE_e, 1.0f); i_this->mMode = 4; i_this->mSound.startCreatureSound(Z2SE_EN_NS_DOSA, 0, -1); @@ -1211,7 +1211,7 @@ static void e_s1_warpappear(e_s1_class* i_this) { break; } - if (!i_this->mAcch.i_ChkGroundHit()) { + if (!i_this->mAcch.ChkGroundHit()) { break; } diff --git a/src/d/actor/d_a_e_vt.cpp b/src/d/actor/d_a_e_vt.cpp index fba56f41675..563c5aca89a 100644 --- a/src/d/actor/d_a_e_vt.cpp +++ b/src/d/actor/d_a_e_vt.cpp @@ -2626,7 +2626,7 @@ void daE_VA_c::executeOpaciDamage() { } break; case 2: - if (mAcch.i_ChkGroundHit() || speed.y <= nREG_F(4) + -30.0f) { + if (mAcch.ChkGroundHit() || speed.y <= nREG_F(4) + -30.0f) { setActionMode(ACTION_OPACI_CHASE_e, 0); } break; @@ -2697,7 +2697,7 @@ void daE_VA_c::executeOpaciChase() { field_0x1324 = 0; } - if (mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundHit()) { field_0x1324 = 2; gravity = -5.0f; } @@ -3237,7 +3237,7 @@ void daE_VA_c::calcMagicMove() { mDoMtx_stack_c::multVecZero(&mMagicPos[i]); mMagicOldPos[i] = mMagicPos[i]; - mMagicAcch[i].i_ClrGroundHit(); + mMagicAcch[i].ClrGroundHit(); mMagicAcch[i].ClrWallHit(); mMagicSphs[i].ClrAtHit(); @@ -3258,7 +3258,7 @@ void daE_VA_c::calcMagicMove() { mMagicSphs[i].SetR(50.0f); dComIfG_Ccsp()->Set(&mMagicSphs[i]); - if (mMagicAcch[i].i_ChkGroundHit() || mMagicAcch[i].ChkWallHit() || + if (mMagicAcch[i].ChkGroundHit() || mMagicAcch[i].ChkWallHit() || mMagicSphs[i].ChkAtHit()) { Z2GetAudioMgr()->seStart(Z2SE_EN_VA_FIRE_BURST, &mMagicPos[i], 0, 0, 1.0f, 1.0f, diff --git a/src/d/actor/d_a_horse.cpp b/src/d/actor/d_a_horse.cpp index b61bd9a8bd3..2f29e857273 100644 --- a/src/d/actor/d_a_horse.cpp +++ b/src/d/actor/d_a_horse.cpp @@ -2105,13 +2105,13 @@ void daHorse_c::setRoomInfo(int param_0) { if (m_acch.ChkWaterHit() && m_acch.m_wtr.GetHeight() > current.pos.y) { m_poly_sound = dKy_pol_sound_get(&m_acch.m_wtr); - } else if (m_acch.i_ChkGroundHit()) { + } else if (m_acch.ChkGroundHit()) { m_poly_sound = dKy_pol_sound_get(&m_acch.m_gnd); } else { m_poly_sound = 0; } - if (m_acch.i_ChkGroundHit() && m_procID != PROC_LARGE_DAMAGE_e && m_procID != PROC_JUMP_e) { + if (m_acch.ChkGroundHit() && m_procID != PROC_LARGE_DAMAGE_e && m_procID != PROC_JUMP_e) { savePos(); } @@ -2278,7 +2278,7 @@ void daHorse_c::setEffect() { sp40 |= 0x20000; } - if (m_acch.i_ChkGroundHit()) { + if (m_acch.ChkGroundHit()) { field_0x17dc.setEffectFour(&tevStr, ¤t.pos, sp44, @@ -2417,7 +2417,7 @@ void daHorse_c::setCollision() { void daHorse_c::autoGroundHit() { if (checkStateFlg0(FLG0_UNK_10) && m_procID != PROC_LARGE_DAMAGE_e && m_procID != PROC_JUMP_e) { f32 dist_to_ground = m_acch.GetGroundH() - current.pos.y; - if (!m_acch.i_ChkGroundHit() && dist_to_ground < 0.0f && dist_to_ground >= -l_autoUpHeight) { + if (!m_acch.ChkGroundHit() && dist_to_ground < 0.0f && dist_to_ground >= -l_autoUpHeight) { current.pos.y = m_acch.GetGroundH(); m_acch.SetGroundHit(); speed.y = 0.0f; @@ -2741,7 +2741,7 @@ void daHorse_c::footBgCheck() { } } - if (!m_acch.i_ChkGroundHit() || m_procID == PROC_TOOL_DEMO_e) { + if (!m_acch.ChkGroundHit() || m_procID == PROC_TOOL_DEMO_e) { sp24 = 4; } else { f32 var_f30 = 1000.0f + current.pos.y; @@ -3632,7 +3632,7 @@ int daHorse_c::procMove() { speedF = daHorse_hio_c0::m.fastwalk_to_run_rate * m_normalMaxSpeedF; } - if (checkStateFlg0(daHorse_FLG0(FLG0_UNK_200000 | FLG0_UNK_100000)) && !m_acch.i_ChkGroundHit()) { + if (checkStateFlg0(daHorse_FLG0(FLG0_UNK_200000 | FLG0_UNK_100000)) && !m_acch.ChkGroundHit()) { field_0x1768 = 350.0f; field_0x176c = 0.0f; field_0x1770 = field_0x1768; @@ -4068,7 +4068,7 @@ int daHorse_c::procJump() { field_0x1722--; } - if ((field_0x171c != 0) && ((speed.y < 0.0f && field_0x17d0.abs2XZ(current.pos) > field_0x1778) || field_0x1722 == 0) && m_acch.i_ChkGroundHit()) { + if ((field_0x171c != 0) && ((speed.y < 0.0f && field_0x17d0.abs2XZ(current.pos) > field_0x1778) || field_0x1722 == 0) && m_acch.ChkGroundHit()) { return procLandInit(field_0x1774, field_0x1720); } @@ -4289,7 +4289,7 @@ int daHorse_c::execute() { onStateFlg0(FLG0_UNK_200000); } - if (m_acch.i_ChkGroundHit()) { + if (m_acch.ChkGroundHit()) { onStateFlg0(FLG0_UNK_10); } else { offStateFlg0(FLG0_UNK_10); @@ -4390,7 +4390,7 @@ int daHorse_c::execute() { speed.y = old_speed_y; } - if (checkStateFlg0(FLG0_UNK_1) && m_acch.i_ChkGroundHit() && checkStateFlg0(FLG0_UNK_2)) { + if (checkStateFlg0(FLG0_UNK_1) && m_acch.ChkGroundHit() && checkStateFlg0(FLG0_UNK_2)) { if (!checkStateFlg0(FLG0_UNK_1000)) { dComIfGp_getVibration().StartQuake(VIBMODE_S_DOKUTT, 1, cXyz(0.0f, 1.0f, 0.0f)); onStateFlg0(FLG0_UNK_1000); diff --git a/src/d/actor/d_a_nbomb.cpp b/src/d/actor/d_a_nbomb.cpp index 9b4e42697dc..20b751ec7c8 100644 --- a/src/d/actor/d_a_nbomb.cpp +++ b/src/d/actor/d_a_nbomb.cpp @@ -937,7 +937,7 @@ BOOL daNbomb_c::procWait() { f32 prev_speedf = speedF; - if (mAcch.i_ChkGroundHit() && !mAcch.ChkGroundLanding()) { + if (mAcch.ChkGroundHit() && !mAcch.ChkGroundLanding()) { s16 var_r28 = fopAcM_getPolygonAngle(mAcch.m_gnd, current.angle.y); speed.y -= speedF * fabsf(cM_ssin(var_r28)); @@ -1009,12 +1009,12 @@ BOOL daNbomb_c::procWait() { setRoomInfo(); if (checkStateFlg0(FLG0_INSECT_BOMB) && - (mAcch.i_ChkGroundHit() || mAcch.ChkWallHit() || mAcch.ChkRoofHit())) + (mAcch.ChkGroundHit() || mAcch.ChkWallHit() || mAcch.ChkRoofHit())) { return procExplodeInit(); } - if (mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundHit()) { cM3dGPla plane; dComIfG_Bgsp().GetTriPla(mAcch.m_gnd, &plane); @@ -1047,7 +1047,7 @@ BOOL daNbomb_c::procWait() { speedF *= player->getBombBoundRate(); current.angle.y = (var_r27 * 2) - (current.angle.y + 0x8000); mAcch.ClrGroundLanding(); - mAcch.i_ClrGroundHit(); + mAcch.ClrGroundHit(); speed.y = prev_speedY; } } @@ -1083,7 +1083,7 @@ BOOL daNbomb_c::procWait() { } fopAcM_seStartCurrent(this, Z2SE_OBJ_BOMB_BOUND, 0); - } else if (mAcch.i_ChkGroundHit()) { + } else if (mAcch.ChkGroundHit()) { cM3dGPla plane; dComIfG_Bgsp().GetTriPla(mAcch.m_gnd, &plane); @@ -1275,7 +1275,7 @@ BOOL daNbomb_c::procInsectMove() { speed.y = field_0xbfc.y; speedF = field_0xbfc.absXZ(); current.angle.y = field_0xbfc.atan2sX_Z(); - mAcch.i_ClrGroundHit(); + mAcch.ClrGroundHit(); mAcch.ClrWallHit(); mAcch.ClrRoofHit(); mAcch.ClrRoofNone(); @@ -1450,7 +1450,7 @@ int daNbomb_c::execute() { } if ((mAcch.ChkWallHit() && daAlink_c::checkIcePolygonDamage(&mAcchCir)) || - (mAcch.i_ChkGroundHit() && daAlink_c::checkIcePolygonDamage(&mAcch.m_gnd)) || + (mAcch.ChkGroundHit() && daAlink_c::checkIcePolygonDamage(&mAcch.m_gnd)) || (mAcch.ChkRoofHit() && daAlink_c::checkIcePolygonDamage(&mAcch.m_roof))) { setFreeze(); @@ -1547,7 +1547,7 @@ int daNbomb_c::execute() { var_f27 = speedF; temp_r3 = current.angle.y; - if (mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundHit()) { var_r27 = 0; } } diff --git a/src/d/actor/d_a_ni.cpp b/src/d/actor/d_a_ni.cpp index 1d26b291905..74aa109da75 100644 --- a/src/d/actor/d_a_ni.cpp +++ b/src/d/actor/d_a_ni.cpp @@ -752,7 +752,7 @@ static void ni_away(ni_class* i_this) { if (a_this->mDistToPlayer > l_HIO.mRecognizeRange + 50.0f) { a_this->mAction = ACTION_NORMAL_e; a_this->mMode = 0; - } else if (a_this->mAcch.i_ChkGroundHit() && + } else if (a_this->mAcch.ChkGroundHit() && (target != NULL || a_this->mDistToPlayer < l_HIO.mRecognizeRange - 100.0f)) { anm_init(a_this, BCK_FLY, 1.0f, J3DFrameCtrl::LOOP_REPEAT_e, 1.0f); @@ -780,7 +780,7 @@ static void ni_away(ni_class* i_this) { if (i_this->speed.y <= 0.0f) { i_this->gravity = l_HIO.mFleeJumpGravity; - if (a_this->mAcch.i_ChkGroundHit() || a_this->field_0x848 != 0) { + if (a_this->mAcch.ChkGroundHit() || a_this->field_0x848 != 0) { a_this->mMode = 0; } } @@ -951,7 +951,7 @@ static void ni_fly(ni_class* i_this) { if (i_this->checkGold() && i_this->mTimers[0] == 0) { i_this->mAction = ACTION_RETURN_e; i_this->mMode = 0; - } else if (i_this->mAcch.i_ChkGroundHit() || i_this->mAcch.ChkWallHit() || + } else if (i_this->mAcch.ChkGroundHit() || i_this->mAcch.ChkWallHit() || i_this->field_0x848 != 0) { i_this->mAction = ACTION_DAMAGE_e; @@ -974,7 +974,7 @@ static void ni_drop(ni_class* i_this) { } i_this->gravity = l_HIO.mFleeJumpGravity; - if (i_this->mAcch.i_ChkGroundHit() || i_this->field_0x848 != 0) { + if (i_this->mAcch.ChkGroundHit() || i_this->field_0x848 != 0) { i_this->mAction = ACTION_NORMAL_e; i_this->mMode = 0; } @@ -1337,7 +1337,7 @@ static int ni_play(ni_class* i_this) { i_this->gravity = -2.0f; } - if (i_this->mAcch.i_ChkGroundHit() || i_this->field_0x848) { + if (i_this->mAcch.ChkGroundHit() || i_this->field_0x848) { i_this->mMode = 0; i_this->field_0xaf0 = 0.0f; } @@ -1916,7 +1916,7 @@ static void action(ni_class* i_this) { } i_this->mAcch.CrrPos(dComIfG_Bgsp()); - if (i_this->mAcch.i_ChkGroundHit()) { + if (i_this->mAcch.ChkGroundHit()) { a_this->home.pos.y = a_this->current.pos.y; } } diff --git a/src/d/actor/d_a_npc_ne.cpp b/src/d/actor/d_a_npc_ne.cpp index 33081d5741e..4bc81659a1f 100644 --- a/src/d/actor/d_a_npc_ne.cpp +++ b/src/d/actor/d_a_npc_ne.cpp @@ -1631,7 +1631,7 @@ static BOOL npc_ne_home(npc_ne_class* i_this) { case 4: i_this->current.angle.x = 0x3000; target_speed = l_HIO.mRunSpeed; - if (i_this->mTimers[1] == 0 && i_this->mAcch.i_ChkGroundHit()) { + if (i_this->mTimers[1] == 0 && i_this->mAcch.ChkGroundHit()) { i_this->mMode = 1; anm_init(i_this, npc_ne_class::ANM_RUN, 2.0f, 2, 1.5f); } @@ -2114,7 +2114,7 @@ static void npc_ne_drop(npc_ne_class* i_this) { case 1: i_this->current.angle.x = 0x3000; - if (i_this->mAcch.i_ChkGroundHit()) { + if (i_this->mAcch.ChkGroundHit()) { i_this->shape_angle.x = 0; i_this->current.angle.x = 0; i_this->mpMorf->setPlaySpeed(2.0f); @@ -2167,7 +2167,7 @@ static void npc_ne_s_drop(npc_ne_class* i_this) { } else { max_speed_step = target_speed = 2.0f; } - if (i_this->mTimers[0] == 0 && i_this->mAcch.i_ChkGroundHit()) { + if (i_this->mTimers[0] == 0 && i_this->mAcch.ChkGroundHit()) { anm_init(i_this, npc_ne_class::ANM_JUMP_END, 3.0f, 0, 1.0f); i_this->mpMorf->setFrame(4.0f); i_this->mMode++; diff --git a/src/d/actor/d_a_obj_Lv5Key.cpp b/src/d/actor/d_a_obj_Lv5Key.cpp index a88eeb29784..a22a50b9e66 100644 --- a/src/d/actor/d_a_obj_Lv5Key.cpp +++ b/src/d/actor/d_a_obj_Lv5Key.cpp @@ -183,7 +183,7 @@ void daObjLv5Key_c::Fall(int param_0) { OS_REPORT("FALL SPD = %f\n", speed.y); - if (mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundHit()) { fopAcM_GetSpeed(this); fopAcM_SetSpeedF(this, 4.0f); fopAcM_SetSpeed(this, 0.0f, 22.0f, 0.0f); @@ -204,7 +204,7 @@ void daObjLv5Key_c::Fall(int param_0) { mAcch.CrrPos(dComIfG_Bgsp()); current.pos.y = prev_y; - if (mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundHit()) { setAction(&Land, 1); } } diff --git a/src/d/actor/d_a_obj_bk_leaf.cpp b/src/d/actor/d_a_obj_bk_leaf.cpp index c98080d600f..98fa7bf4b11 100644 --- a/src/d/actor/d_a_obj_bk_leaf.cpp +++ b/src/d/actor/d_a_obj_bk_leaf.cpp @@ -5,6 +5,7 @@ #include "d/actor/d_a_obj_bk_leaf.h" #include "d/actor/d_a_obj_carry.h" +#include "d/d_com_inf_game.h" /* 80BB60D8-80BB60F8 000078 0020+00 1/1 0/0 0/0 .text CheckCreateHeap__FP10fopAc_ac_c */ static int CheckCreateHeap(fopAc_ac_c* i_this) { diff --git a/src/d/actor/d_a_obj_carry.cpp b/src/d/actor/d_a_obj_carry.cpp index 0cbbfd90ec2..5aa7a952957 100644 --- a/src/d/actor/d_a_obj_carry.cpp +++ b/src/d/actor/d_a_obj_carry.cpp @@ -4,2151 +4,810 @@ */ #include "d/actor/d_a_obj_carry.h" +#include "d/actor/d_a_player.h" +#include +#include "d/d_com_inf_game.h" +#include "SSystem/SComponent/c_math.h" #include "d/actor/d_a_obj_swBallA.h" #include "d/actor/d_a_obj_swBallB.h" #include "d/actor/d_a_tag_setBall.h" +#include "d/actor/d_a_mirror.h" +#include "d/actor/d_a_obj_burnbox.h" +#include "d/d_tresure.h" +#include "d/d_s_play.h" #include "d/d_lib.h" -#include "dol2asm.h" -#include "SSystem/SComponent/c_math.h" -#include "JSystem/JKernel/JKRHeap.h" +#include "d/d_debug_viewer.h" +#include "f_op/f_op_kankyo_mng.h" -// -// Forward References: -// - -extern "C" static void bound__FP4cXyzRC13cBgS_PolyInfof(); -extern "C" void __dt__8cM3dGPlaFv(); -extern "C" static void -TgHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf(); -extern "C" static void -TgHitCallBackBokkuri__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf(); -extern "C" static void -CoHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf(); -extern "C" static void -CoHitCallBackBokkuri__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf(); -extern "C" static void s_swA_sub__FPvPv(); -extern "C" static void s_sw_sub__FPvPv(); -extern "C" static void s_setA_sub__FPvPv(); -extern "C" static void s_setB_sub__FPvPv(); -extern "C" static void CheckCreateHeap__FP10fopAc_ac_c(); -extern "C" void data__12daObjCarry_cFv(); -extern "C" void getArcName__12daObjCarry_cFv(); -extern "C" void getBmdName__12daObjCarry_cFv(); -extern "C" void checkFlag__12daObjCarry_cFUc(); -extern "C" void initBaseMtx__12daObjCarry_cFv(); -extern "C" void setBaseMtx__12daObjCarry_cFv(); -extern "C" void preInit__12daObjCarry_cFv(); -extern "C" void __ct__12daObjCarry_cFv(); -extern "C" void __dt__8cM3dGSphFv(); -extern "C" void __dt__8cM3dGCylFv(); -extern "C" void __dt__8cM3dGAabFv(); -extern "C" void __dt__10dCcD_GSttsFv(); -extern "C" void __dt__12dBgS_AcchCirFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" void checkBreakWolfAttack__12daObjCarry_cFv(); -extern "C" void checkCarryBoomerang__12daObjCarry_cFv(); -extern "C" void checkCarryHookshot__12daObjCarry_cFv(); -extern "C" void checkCarryWolf__12daObjCarry_cFv(); -extern "C" void checkCarryOneHand__12daObjCarry_cFv(); -extern "C" void Create__12daObjCarry_cFv(); -extern "C" void CreateInit_tsubo__12daObjCarry_cFv(); -extern "C" void CreateInit_ootubo__12daObjCarry_cFv(); -extern "C" void CreateInit_kibako__12daObjCarry_cFv(); -extern "C" void CreateInit_ironball__12daObjCarry_cFv(); -extern "C" void CreateInit_taru__12daObjCarry_cFv(); -extern "C" void CreateInit_dokuro__12daObjCarry_cFv(); -extern "C" void CreateInit_bokkuri__12daObjCarry_cFv(); -extern "C" void CreateInit_LightBall__12daObjCarry_cFv(); -extern "C" void CreateInit_Lv8Ball__12daObjCarry_cFv(); -extern "C" void CreateHeap__12daObjCarry_cFv(); -extern "C" void create__12daObjCarry_cFv(); -extern "C" void checkCreate_LightBallA__12daObjCarry_cFv(); -extern "C" void checkCreate_LightBallB__12daObjCarry_cFv(); -extern "C" void checkCreate_Lv8Ball__12daObjCarry_cFv(); -extern "C" void resetIconPosForLightBallA__12daObjCarry_cFv(); -extern "C" void setIconPosForLightBallAAtR00__12daObjCarry_cFv(); -extern "C" void setIconPosForLightBallBAtR00__12daObjCarry_cFv(); -extern "C" void resetIconPosForLightBallB__12daObjCarry_cFv(); -extern "C" void execute__12daObjCarry_cFv(); -extern "C" void checkCulling__12daObjCarry_cFv(); -extern "C" void draw__12daObjCarry_cFv(); -extern "C" void debugDraw__12daObjCarry_cFv(); -extern "C" void _delete__12daObjCarry_cFv(); -extern "C" void crr_pos__12daObjCarry_cFv(); -extern "C" void check_sink__12daObjCarry_cFPf(); -extern "C" void calc_gravity__12daObjCarry_cFv(); -extern "C" void checkRollAngle__12daObjCarry_cFv(); -extern "C" void mode_proc_call__12daObjCarry_cFv(); -extern "C" void mode_init_wait__12daObjCarry_cFv(); -extern "C" void mode_proc_wait__12daObjCarry_cFv(); -extern "C" void mode_init_walk__12daObjCarry_cFUc(); -extern "C" void mode_proc_walk__12daObjCarry_cFv(); -extern "C" void mode_init_carry__12daObjCarry_cFv(); -extern "C" void mode_proc_carry__12daObjCarry_cFv(); -extern "C" void mode_init_drop__12daObjCarry_cFUc(); -extern "C" void mode_proc_drop__12daObjCarry_cFv(); -extern "C" void mode_init_float__12daObjCarry_cFv(); -extern "C" void mode_proc_float__12daObjCarry_cFv(); -extern "C" void mode_init_sink__12daObjCarry_cFv(); -extern "C" void mode_proc_sink__12daObjCarry_cFv(); -extern "C" void mode_init_yogan__12daObjCarry_cFv(); -extern "C" void mode_proc_yogan__12daObjCarry_cFv(); -extern "C" bool mode_proc_magne__12daObjCarry_cFv(); -extern "C" bool mode_proc_magneCarry__12daObjCarry_cFv(); -extern "C" void mode_init_boomCarry__12daObjCarry_cFv(); -extern "C" void mode_proc_boomCarry__12daObjCarry_cFv(); -extern "C" void mode_init_growth__12daObjCarry_cFv(); -extern "C" void mode_proc_growth__12daObjCarry_cFv(); -extern "C" bool mode_proc_end__12daObjCarry_cFv(); -extern "C" void mode_init_dbDrop__12daObjCarry_cFUc(); -extern "C" void mode_proc_dbDrop__12daObjCarry_cFv(); -extern "C" void mode_init_hookCarry__12daObjCarry_cFv(); -extern "C" void mode_proc_hookCarry__12daObjCarry_cFv(); -extern "C" void mode_init_fit__12daObjCarry_cFv(); -extern "C" void mode_proc_fit__12daObjCarry_cFv(); -extern "C" void mode_proc_controled__12daObjCarry_cFv(); -extern "C" void mode_init_resetLightBall__12daObjCarry_cFv(); -extern "C" void mode_proc_resetLightBall__12daObjCarry_cFv(); -extern "C" void chkSinkAll__12daObjCarry_cFv(); -extern "C" void chkWaterLineIn__12daObjCarry_cFv(); -extern "C" void chkSinkObj__12daObjCarry_cFv(); -extern "C" void bg_check__12daObjCarry_cFv(); -extern "C" void check_bg_damage_proc_base__12daObjCarry_cFv(); -extern "C" void bg_damage_proc_kotubo__12daObjCarry_cFv(); -extern "C" void bg_damage_proc_ootubo__12daObjCarry_cFv(); -extern "C" void bg_damage_proc_kibako__12daObjCarry_cFv(); -extern "C" bool bg_damage_proc_ironball__12daObjCarry_cFv(); -extern "C" void bg_damage_proc_taru__12daObjCarry_cFv(); -extern "C" void bg_damage_proc_dokuro__12daObjCarry_cFv(); -extern "C" void bg_damage_proc_bokkuri__12daObjCarry_cFv(); -extern "C" bool bg_damage_proc_LightBall__12daObjCarry_cFv(); -extern "C" bool bg_damage_proc_Lv8Ball__12daObjCarry_cFv(); -extern "C" void obj_break__12daObjCarry_cFbbb(); -extern "C" void check_cc_damage_proc_base__12daObjCarry_cFb(); -extern "C" void cc_damage_proc_kotubo__12daObjCarry_cFv(); -extern "C" void cc_damage_proc_ootubo__12daObjCarry_cFv(); -extern "C" void cc_damage_proc_kibako__12daObjCarry_cFv(); -extern "C" void cc_damage_proc_ironball__12daObjCarry_cFv(); -extern "C" void cc_damage_proc_taru__12daObjCarry_cFv(); -extern "C" void cc_damage_proc_dokuro__12daObjCarry_cFv(); -extern "C" void cc_damage_proc_bokkuri__12daObjCarry_cFv(); -extern "C" bool cc_damage_proc_LightBall__12daObjCarry_cFv(); -extern "C" bool cc_damage_proc_Lv8Ball__12daObjCarry_cFv(); -extern "C" void eff_break_tuboBmd__12daObjCarry_cFUs4cXyz(); -extern "C" void eff_break_kibakoBmd__12daObjCarry_cF4cXyz(); -extern "C" void eff_break_tsubo__12daObjCarry_cFv(); -extern "C" void eff_break_ootubo__12daObjCarry_cFv(); -extern "C" void eff_break_kibako__12daObjCarry_cFv(); -extern "C" void eff_break_ironball__12daObjCarry_cFv(); -extern "C" void eff_break_taru__12daObjCarry_cFv(); -extern "C" void eff_break_dokuro__12daObjCarry_cFv(); -extern "C" void eff_break_bokkuri__12daObjCarry_cFv(); -extern "C" void eff_break_kotubo2__12daObjCarry_cFv(); -extern "C" void eff_break_LightBall__12daObjCarry_cFv(); -extern "C" void eff_break_ootubo2__12daObjCarry_cFv(); -extern "C" void eff_break_Lv8Ball__12daObjCarry_cFv(); -extern "C" void eff_break_tsuboL8__12daObjCarry_cFv(); -extern "C" void eff_break_ootuboL8__12daObjCarry_cFv(); -extern "C" void se_break__12daObjCarry_cFP13cBgS_PolyInfo(); -extern "C" void se_put__12daObjCarry_cFP13cBgS_PolyInfo(); -extern "C" void se_put_water__12daObjCarry_cFv(); -extern "C" void se_fall_water__12daObjCarry_cFv(); -extern "C" void calc_rot_axis_base__12daObjCarry_cFUc(); -extern "C" void calc_rot_axis_tsubo__12daObjCarry_cFv(); -extern "C" void calc_rot_axis_ootubo__12daObjCarry_cFv(); -extern "C" void calc_rot_axis_kibako__12daObjCarry_cFv(); -extern "C" void calc_rot_axis_ironball__12daObjCarry_cFv(); -extern "C" void calc_rot_axis_taru__12daObjCarry_cFv(); -extern "C" void calc_rot_axis_dokuro__12daObjCarry_cFv(); -extern "C" void calc_rot_axis_bokkuri__12daObjCarry_cFv(); -extern "C" void calc_rot_axis_kotubo2__12daObjCarry_cFv(); -extern "C" void calc_rot_axis_LightBall__12daObjCarry_cFv(); -extern "C" void calc_rot_axis_Lv8Ball__12daObjCarry_cFv(); -extern "C" void set_wind_power__12daObjCarry_cFv(); -extern "C" void exec_proc_tsubo__12daObjCarry_cFv(); -extern "C" void exec_proc_ootubo__12daObjCarry_cFv(); -extern "C" void exec_proc_kibako__12daObjCarry_cFv(); -extern "C" void exec_proc_ironball__12daObjCarry_cFv(); -extern "C" void exec_proc_taru__12daObjCarry_cFv(); -extern "C" void exec_proc_dokuro__12daObjCarry_cFv(); -extern "C" void exec_proc_bokkuri__12daObjCarry_cFv(); -extern "C" void exec_proc_LightBall__12daObjCarry_cFv(); -extern "C" void exec_proc_Lv8Ball__12daObjCarry_cFv(); -extern "C" void bg_damage_proc_call__12daObjCarry_cFv(); -extern "C" void cc_damage_proc_call__12daObjCarry_cFv(); -extern "C" void eff_break_call__12daObjCarry_cFv(); -extern "C" void calc_rot_call__12daObjCarry_cFv(); -extern "C" void obj_execute_proc_call__12daObjCarry_cFv(); -extern "C" void setTgHitCallBack__12daObjCarry_cFv(); -extern "C" void setCoHitCallBack__12daObjCarry_cFv(); -extern "C" void CreateInitCall__12daObjCarry_cFv(); -extern "C" static void daObjCarry_Draw__FP12daObjCarry_c(); -extern "C" static void daObjCarry_Execute__FP12daObjCarry_c(); -extern "C" static void daObjCarry_Delete__FP12daObjCarry_c(); -extern "C" static void daObjCarry_Create__FP10fopAc_ac_c(); -extern "C" void __dt__10cCcD_GSttsFv(); -extern "C" void func_804798D8(void* _this, s8*); -extern "C" static void func_804798F4(); -extern "C" static void func_804798FC(); -extern "C" u8 const mData__12daObjCarry_c[2072]; -extern "C" extern char const* const d_a_obj_carry__stringBase0; - -// -// External References: -// - -extern "C" void mDoMtx_ZXYrotM__FPA4_fsss(); -extern "C" void mDoMtx_XrotM__FPA4_fs(); -extern "C" void mDoMtx_YrotS__FPA4_fs(); -extern "C" void transM__14mDoMtx_stack_cFfff(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void quatM__14mDoMtx_stack_cFPC10Quaternion(); -extern "C" void mDoExt_modelUpdateDL__FP8J3DModel(); -extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAc_IsActor__FPv(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_createChild__FsUiUlPC4cXyziPC5csXyzPC4cXyzScPFPv_i(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_setCullSizeSphere__FP10fopAc_ac_cffff(); -extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz(); -extern "C" void fopAcM_searchActorDistance__FPC10fopAc_ac_cPC10fopAc_ac_c(); -extern "C" void fopAcM_createItemFromTable__FPC4cXyziiiPC5csXyziPC4cXyzPfPfb(); -extern "C" void fopAcM_createItem__FPC4cXyziiiPC5csXyzPC4cXyzi(); -extern "C" void fopAcM_setCarryNow__FP10fopAc_ac_ci(); -extern "C" void fopAcM_cancelCarryNow__FP10fopAc_ac_c(); -extern "C" void fopAcM_effHamonSet__FPUlPC4cXyzff(); -extern "C" void fopAcM_getWaterY__FPC4cXyzPf(); -extern "C" void fopAcM_getWaterStream__FPC4cXyzRC13cBgS_PolyInfoP4cXyzPii(); -extern "C" void lineCheck__11fopAcM_lc_cFPC4cXyzPC4cXyzPC10fopAc_ac_c(); -extern "C" void gndCheck__11fopAcM_gc_cFPC4cXyz(); -extern "C" void fopKyM_createWpillar__FPC4cXyzfi(); -extern "C" void fpcEx_Search__FPFPvPv_PvPv(); -extern "C" void checkRoomDisp__20dStage_roomControl_cCFi(); -extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc(); -extern "C" void dComIfGp_getReverb__Fi(); -extern "C" void dComIfGd_setSimpleShadow__FP4cXyzffR13cBgS_PolyInfosfP9_GXTexObj(); -extern "C" void entry__10daMirror_cFP8J3DModel(); -extern "C" void chkSaveFlag__12daObjCarry_cFv(); -extern "C" void getPos__12daObjCarry_cFi(); -extern "C" void savePos__12daObjCarry_cFi4cXyz(); -extern "C" void onSttsFlag__12daObjCarry_cFiUc(); -extern "C" void offSttsFlag__12daObjCarry_cFiUc(); -extern "C" void chkSttsFlag__12daObjCarry_cFiUc(); -extern "C" void setRoomNo__12daObjCarry_cFiSc(); -extern "C" void getRoomNo__12daObjCarry_cFi(); -extern "C" void onEventBit__11dSv_event_cFUs(); -extern "C" void offEventBit__11dSv_event_cFUs(); -extern "C" void isEventBit__11dSv_event_cCFUs(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void isSwitch__10dSv_info_cCFii(); -extern "C" void offActor__10dSv_info_cFii(); -extern "C" void __ct__9dJntCol_cFv(); -extern "C" void init__9dJntCol_cFP10fopAc_ac_cPC13dJntColData_cP8J3DModeli(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void getRes__14dRes_control_cFPCcPCcP11dRes_info_ci(); -extern "C" void -setModel__18dPa_modelEcallBackFP14JPABaseEmitterP12J3DModelDataRC12dKy_tevstr_cUcPvUcUc(); -extern "C" void -set__13dPa_control_cFUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void -setPoly__13dPa_control_cFUsR13cBgS_PolyInfoPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyziP18dPa_levelEcallBackScPC4cXyz(); -extern "C" void GetActorPointer__4cBgSCFi(); -extern "C" void ChkPolySafe__4cBgSFRC13cBgS_PolyInfo(); -extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla(); -extern "C" void ChkMoveBG_NoDABg__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void GetPolyAtt0__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void GetRoomId__4dBgSFRC13cBgS_PolyInfo(); -extern "C" void SplGrpChk__4dBgSFP14dBgS_SplGrpChk(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void SetWall__12dBgS_AcchCirFff(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void ClrMoveBGOnly__9dBgS_AcchFv(); -extern "C" void Set__14dBgS_SplGrpChkFR4cXyzf(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -extern "C" void ClrObj__16dBgS_PolyPassChkFv(); -extern "C" void SetLink__16dBgS_PolyPassChkFv(); -extern "C" void SetIronBall__16dBgS_PolyPassChkFv(); -extern "C" void ClrIronBall__16dBgS_PolyPassChkFv(); -extern "C" void GetAc__22dCcD_GAtTgCoCommonBaseFv(); -extern "C" void __ct__10dCcD_GSttsFv(); -extern "C" void Move__10dCcD_GSttsFv(); -extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c(); -extern "C" void __ct__12dCcD_GObjInfFv(); -extern "C" void ChkAtHit__12dCcD_GObjInfFv(); -extern "C" void ChkTgHit__12dCcD_GObjInfFv(); -extern "C" void GetTgHitObj__12dCcD_GObjInfFv(); -extern "C" void GetTgHitGObj__12dCcD_GObjInfFv(); -extern "C" void GetTgHitObjSe__12dCcD_GObjInfFv(); -extern "C" void getHitSeID__12dCcD_GObjInfFUci(); -extern "C" void ChkCoHit__12dCcD_GObjInfFv(); -extern "C" void Set__8dCcD_CpsFRC11dCcD_SrcCps(); -extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl(); -extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph(); -extern "C" void Set__12dCcMassS_MngFP8cCcD_ObjUc(); -extern "C" void setPosition__7dTres_cFiUcPC3Veci(); -extern "C" void initOffset__20daPy_boomerangMove_cFPC4cXyz(); -extern "C" void posMove__20daPy_boomerangMove_cFP4cXyzPsP10fopAc_ac_cs(); -extern "C" void bgCheckAfterOffset__20daPy_boomerangMove_cFPC4cXyz(); -extern "C" void wolfGrabSubjectNoDraw__9daPy_py_cFP10fopAc_ac_c(); -extern "C" void checkCarryStartLightBallA__9daPy_py_cFv(); -extern "C" void checkCarryStartLightBallB__9daPy_py_cFv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void dKy_dalkmist_inf_set__FP18DALKMIST_INFLUENCE(); -extern "C" void dKy_dalkmist_inf_cut__FP18DALKMIST_INFLUENCE(); -extern "C" void dKy_BossLight_set__FP4cXyzP8_GXColorfUc(); -extern "C" void ClrCcMove__9cCcD_SttsFv(); -extern "C" void Set__4cCcSFP8cCcD_Obj(); -extern "C" void __mi__4cXyzCFRC3Vec(); -extern "C" void __ml__4cXyzCFf(); -extern "C" void normalizeZP__4cXyzFv(); -extern "C" void normalizeRS__4cXyzFv(); -extern "C" bool __ne__4cXyzCFRC3Vec(); -extern "C" void isZero__4cXyzCFv(); -extern "C" void __ct__5csXyzFsss(); -extern "C" void cM_atan2s__Fff(); -extern "C" void cM_rndF__Ff(); -extern "C" void __dt__13cBgS_PolyInfoFv(); -extern "C" void __dt__8cM3dGCirFv(); -extern "C" void __ct__8cM3dGCpsFv(); -extern "C" void Set__8cM3dGCpsFRC4cXyzRC4cXyzf(); -extern "C" void Set__8cM3dGCylFRC9cM3dGCylS(); -extern "C" void SetC__8cM3dGCylFRC4cXyz(); -extern "C" void SetC__8cM3dGSphFRC4cXyz(); -extern "C" void cLib_addCalc__FPfffff(); -extern "C" void cLib_addCalc2__FPffff(); -extern "C" void cLib_addCalc0__FPfff(); -extern "C" void cLib_addCalcAngleS__FPsssss(); -extern "C" void cLib_addCalcAngleS2__FPssss(); -extern "C" void cLib_chaseUC__FPUcUcUc(); -extern "C" void cLib_chaseS__FPsss(); -extern "C" void cLib_chaseF__FPfff(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void seStartLevel__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void deleteObject__14Z2SoundObjBaseFv(); -extern "C" void startCollisionSE__14Z2SoundObjBaseFUlUlP14Z2SoundObjBase(); -extern "C" void __ct__16Z2SoundObjSimpleFv(); -extern "C" void __dl__FPv(); -extern "C" void getName__10JUTNameTabCFUs(); -extern "C" void __ptmf_scall(); -extern "C" void __cvt_fp2unsigned(); -extern "C" void _savegpr_23(); -extern "C" void _savegpr_24(); -extern "C" void _savegpr_25(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_23(); -extern "C" void _restgpr_24(); -extern "C" void _restgpr_25(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__8dCcD_Sph[36]; -extern "C" extern void* __vt__8dCcD_Cyl[36]; -extern "C" extern void* __vt__8dCcD_Cps[36]; -extern "C" extern void* __vt__9dCcD_Stts[11]; -extern "C" extern void* __vt__12cCcD_SphAttr[25]; -extern "C" extern void* __vt__12cCcD_CylAttr[25]; -extern "C" extern void* __vt__12cCcD_CpsAttr[25]; -extern "C" extern void* __vt__14cCcD_ShapeAttr[22]; -extern "C" extern void* __vt__9cCcD_Stts[8]; -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" u8 mGndCheck__11fopAcM_gc_c[84]; -extern "C" u8 mTsubo__13dPa_control_c[64]; -extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; -extern "C" f32 Zero__4cXyz[3]; -extern "C" u8 BaseX__4cXyz[12]; -extern "C" u8 sincosTable___5JMath[65536]; -extern "C" f32 mGroundY__11fopAcM_gc_c; -extern "C" u8 mEcallback__18dPa_modelEcallBack[4]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; - -// -// Declarations: -// - -/* ############################################################################################## */ /* 8047990C-80479A24 000000 0118+00 29/29 0/0 0/0 .rodata l_cyl_info */ -SECTION_RODATA static u8 const l_cyl_info[280] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, - 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x48, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x14, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, - 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0xF0, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x41, 0xC0, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, - 0x42, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x20, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, - 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x48, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, +static const cM3dGCylS l_cyl_info[] = { + { 0.0f, 0.0f, 0.0f, 30.0f, 100.0f }, + { 0.0f, 0.0f, 0.0f, 50.0f, 100.0f }, + { 0.0f, 0.0f, 0.0f, 37.0f, 100.0f }, + { 0.0f, 0.0f, 0.0f, 40.0f, 100.0f }, + { 0.0f, 0.0f, 0.0f, 50.0f, 100.0f }, + { 0.0f, 0.0f, 0.0f, 30.0f, 100.0f }, + { 0.0f, 0.0f, 0.0f, 24.0f, 100.0f }, + { 0.0f, 0.0f, 0.0f, 30.0f, 100.0f }, + { 0.0f, 0.0f, 0.0f, 40.0f, 80.0f }, + { 0.0f, 0.0f, 0.0f, 40.0f, 80.0f }, + { 0.0f, 0.0f, 0.0f, 50.0f, 100.0f }, + { 0.0f, 0.0f, 0.0f, 40.0f, 80.0f }, + { 0.0f, 0.0f, 0.0f, 30.0f, 100.0f }, + { 0.0f, 0.0f, 0.0f, 50.0f, 100.0f }, }; -COMPILER_STRIP_GATE(0x8047990C, &l_cyl_info); /* 80479A24-8047A23C 000118 0818+00 1/1 0/0 0/0 .rodata mData__12daObjCarry_c */ -SECTION_RODATA u8 const daObjCarry_c::mData[2072] = { - 0x41, 0xD8, 0x00, 0x00, 0x42, 0x10, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00, - 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x19, 0x99, 0x9A, 0xC0, 0xC0, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, - 0x3E, 0xCC, 0xCC, 0xCD, 0x41, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xE0, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x2A, 0x00, 0xC8, 0x02, 0x00, 0x00, 0x00, 0x00, 0x41, 0xE0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x40, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, - 0x42, 0x40, 0x00, 0x00, 0x43, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x21, - 0x00, 0x08, 0x00, 0x35, 0x00, 0x08, 0x00, 0xF8, 0x00, 0x08, 0x00, 0x2C, 0x00, 0x08, 0x00, 0x29, - 0x00, 0x00, 0x00, 0x0D, 0x42, 0x20, 0x00, 0x00, 0x00, 0x50, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x00, - 0x41, 0x20, 0x00, 0x00, 0x3D, 0xCC, 0xCC, 0xCD, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x0A, 0x00, 0x41, 0xB0, 0x00, 0x00, 0x42, 0x2C, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, - 0x42, 0xA0, 0x00, 0x00, 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x19, 0x99, 0x9A, 0xC0, 0xD0, 0x00, 0x00, - 0x40, 0x40, 0x00, 0x00, 0x3E, 0xCC, 0xCC, 0xCD, 0x42, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x48, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x2A, 0x04, 0xC8, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x88, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, - 0x42, 0x48, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x43, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x22, 0x00, 0x08, 0x00, 0x36, 0x00, 0x08, 0x00, 0xF9, 0x00, 0x08, 0x00, 0x2D, - 0x00, 0x08, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x0D, 0x42, 0x48, 0x00, 0x00, 0x00, 0x50, 0x00, 0x14, - 0x00, 0x14, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x3D, 0xCC, 0xCC, 0xCD, 0x3F, 0xC0, 0x00, 0x00, - 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x41, 0xD8, 0x00, 0x00, 0x42, 0x10, 0x00, 0x00, - 0x41, 0xF0, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00, 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x19, 0x99, 0x9A, - 0xC0, 0xC0, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3E, 0xCC, 0xCC, 0xCD, 0x41, 0xF0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x16, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x2A, 0x01, 0xC8, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x41, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, - 0x42, 0x16, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0x4E, 0x00, 0x08, 0x01, 0x52, 0x00, 0x08, 0x00, 0xF8, - 0x00, 0x08, 0x00, 0x2C, 0x00, 0x08, 0x00, 0x29, 0x00, 0x00, 0x00, 0x0B, 0x42, 0xAE, 0x00, 0x00, - 0x00, 0x59, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x3D, 0xCC, 0xCC, 0xCD, - 0x3F, 0xC0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x41, 0xC8, 0x00, 0x00, - 0x41, 0xF0, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00, 0x3D, 0xCC, 0xCC, 0xCD, - 0x3F, 0x0C, 0xCC, 0xCD, 0xC0, 0xC0, 0x00, 0x00, 0x40, 0x20, 0x00, 0x00, 0x3E, 0xCC, 0xCC, 0xCD, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x2A, 0x08, 0xC8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, - 0x49, 0x74, 0x24, 0x00, 0x42, 0x48, 0x00, 0x00, 0x00, 0x08, 0x01, 0x4E, 0x00, 0x08, 0x01, 0xD4, - 0x00, 0x08, 0x00, 0xF9, 0x00, 0x08, 0x00, 0x2C, 0x00, 0x08, 0x00, 0x29, 0x00, 0x00, 0x00, 0x0B, - 0x42, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x8C, 0x00, 0x8C, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, - 0x3D, 0xCC, 0xCC, 0xCD, 0x3F, 0xC0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, - 0x41, 0xB0, 0x00, 0x00, 0x42, 0x2C, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00, - 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x19, 0x99, 0x9A, 0xC0, 0xD0, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, - 0x3E, 0xCC, 0xCC, 0xCD, 0x42, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x2A, 0x04, 0xC8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x42, 0x40, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x88, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, - 0x42, 0x48, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0x2E, - 0x00, 0x08, 0x01, 0x52, 0x00, 0x08, 0x00, 0xF9, 0x00, 0x08, 0x00, 0x2D, 0x00, 0x08, 0x00, 0x2A, - 0x00, 0x00, 0x00, 0x0D, 0x42, 0x48, 0x00, 0x00, 0x00, 0x59, 0x00, 0x28, 0x00, 0x28, 0x00, 0x00, - 0x41, 0x20, 0x00, 0x00, 0x3D, 0xCC, 0xCC, 0xCD, 0x40, 0x00, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, - 0x00, 0x00, 0x0A, 0x00, 0x41, 0xD8, 0x00, 0x00, 0x42, 0x10, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, - 0x42, 0xA0, 0x00, 0x00, 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x19, 0x99, 0x9A, 0xC0, 0xC0, 0x00, 0x00, - 0x40, 0x80, 0x00, 0x00, 0x3E, 0xCC, 0xCC, 0xCD, 0x41, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0xE0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x2A, 0x00, 0xC8, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x41, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x40, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, - 0x41, 0xF0, 0x00, 0x00, 0x42, 0x40, 0x00, 0x00, 0x43, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0xF6, 0x00, 0x08, 0x00, 0xF7, 0x00, 0x08, 0x00, 0xF8, 0x00, 0x08, 0x00, 0x2C, - 0x00, 0x08, 0x00, 0x29, 0x00, 0x00, 0x00, 0x0D, 0x42, 0x20, 0x00, 0x00, 0x00, 0x59, 0x00, 0x32, - 0x00, 0x32, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x3D, 0xCC, 0xCC, 0xCD, 0x3F, 0x80, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, - 0x41, 0xF0, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00, 0x3F, 0x19, 0x99, 0x9A, 0x3E, 0x99, 0x99, 0x9A, - 0xC0, 0xD0, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3E, 0xCC, 0xCC, 0xCD, 0x41, 0xF0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x3F, 0x19, 0x99, 0x9A, 0x2A, 0x00, 0xC8, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x70, 0x00, 0x00, - 0x42, 0x34, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x42, 0x70, 0x00, 0x00, 0x43, 0x7A, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0xB9, 0x00, 0x08, 0x00, 0xB8, 0x00, 0x08, 0x00, 0xF8, - 0x00, 0x08, 0x00, 0x2D, 0x00, 0x08, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x0D, 0x42, 0x34, 0x00, 0x00, - 0x00, 0x50, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x3E, 0x19, 0x99, 0x9A, - 0x3F, 0xC0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x41, 0xD8, 0x00, 0x00, - 0x42, 0x10, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00, 0x3F, 0x19, 0x99, 0x9A, - 0x3F, 0x19, 0x99, 0x9A, 0xC0, 0xC0, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, 0x3E, 0xCC, 0xCC, 0xCD, - 0x41, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xE0, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x2A, 0x00, 0xC8, 0x02, 0x00, 0x00, 0x00, 0x00, 0x41, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x40, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x42, 0x40, 0x00, 0x00, - 0x43, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x21, 0x00, 0x08, 0x00, 0x35, - 0x00, 0x08, 0x00, 0xF8, 0x00, 0x08, 0x00, 0x2C, 0x00, 0x08, 0x00, 0x29, 0x00, 0x00, 0x00, 0x0D, - 0x42, 0x20, 0x00, 0x00, 0x00, 0x50, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, - 0x3D, 0xCC, 0xCC, 0xCD, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, - 0x41, 0xD8, 0x00, 0x00, 0x42, 0x10, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00, - 0x3F, 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0xC0, 0xC0, 0x00, 0x00, 0x40, 0x20, 0x00, 0x00, - 0x3E, 0xCC, 0xCC, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x2D, 0x00, 0xC8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x70, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, - 0x42, 0x70, 0x00, 0x00, 0x49, 0x74, 0x24, 0x00, 0x42, 0x48, 0x00, 0x00, 0x00, 0x08, 0x01, 0x4E, - 0x00, 0x08, 0x02, 0x07, 0x00, 0x08, 0x00, 0xF9, 0x00, 0x08, 0x00, 0x2C, 0x00, 0x08, 0x00, 0x29, - 0x00, 0x00, 0x00, 0x0B, 0x42, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x4B, 0x00, 0x6E, 0x00, 0x00, - 0x41, 0x20, 0x00, 0x00, 0x3C, 0x75, 0xC2, 0x8F, 0x3F, 0xC0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, - 0x00, 0x00, 0x10, 0x00, 0x41, 0xD8, 0x00, 0x00, 0x42, 0x10, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, - 0x42, 0xA0, 0x00, 0x00, 0x3F, 0x33, 0x33, 0x33, 0x3F, 0x33, 0x33, 0x33, 0xC0, 0xC0, 0x00, 0x00, - 0x40, 0x20, 0x00, 0x00, 0x3E, 0xCC, 0xCC, 0xCD, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x2D, 0x00, 0xC8, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, - 0x42, 0x48, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0x49, 0x74, 0x24, 0x00, 0x42, 0x48, 0x00, 0x00, - 0x00, 0x08, 0x01, 0x4E, 0x00, 0x08, 0x02, 0x07, 0x00, 0x08, 0x00, 0xF9, 0x00, 0x08, 0x00, 0x2C, - 0x00, 0x08, 0x00, 0x29, 0x00, 0x00, 0x00, 0x0B, 0x42, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x4B, - 0x00, 0x6E, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x3C, 0x75, 0xC2, 0x8F, 0x40, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x41, 0xB0, 0x00, 0x00, 0x42, 0x2C, 0x00, 0x00, - 0x41, 0xF0, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00, 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x19, 0x99, 0x9A, - 0xC0, 0xD0, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x3E, 0xCC, 0xCC, 0xCD, 0x42, 0x0C, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x2A, 0x04, 0xC8, 0x03, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x88, 0x00, 0x00, - 0x42, 0x48, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x42, 0x88, 0x00, 0x00, 0x43, 0x7A, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x22, 0x00, 0x08, 0x00, 0x36, 0x00, 0x08, 0x00, 0xF9, - 0x00, 0x08, 0x00, 0x2D, 0x00, 0x08, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x0D, 0x42, 0x48, 0x00, 0x00, - 0x00, 0x50, 0x00, 0x14, 0x00, 0x14, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x3D, 0xCC, 0xCC, 0xCD, - 0x3F, 0xC0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x41, 0xD8, 0x00, 0x00, - 0x42, 0x10, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00, 0x3F, 0x33, 0x33, 0x33, - 0x3F, 0x33, 0x33, 0x33, 0xC0, 0xC0, 0x00, 0x00, 0x40, 0x20, 0x00, 0x00, 0x3E, 0xCC, 0xCC, 0xCD, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x2D, 0x00, 0xC8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x70, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x42, 0x70, 0x00, 0x00, - 0x49, 0x74, 0x24, 0x00, 0x42, 0x48, 0x00, 0x00, 0x00, 0x08, 0x01, 0x4E, 0x00, 0x08, 0x02, 0x07, - 0x00, 0x08, 0x00, 0xF9, 0x00, 0x08, 0x00, 0x2C, 0x00, 0x08, 0x00, 0x29, 0x00, 0x00, 0x00, 0x0B, - 0x42, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x4B, 0x00, 0x6E, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, - 0x3C, 0x75, 0xC2, 0x8F, 0x3F, 0xC0, 0x00, 0x00, 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, - 0x41, 0xD8, 0x00, 0x00, 0x42, 0x10, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00, - 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x19, 0x99, 0x9A, 0xC0, 0xC0, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00, - 0x3E, 0xCC, 0xCC, 0xCD, 0x41, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xE0, 0x00, 0x00, - 0x3F, 0x80, 0x00, 0x00, 0x2A, 0x00, 0xC8, 0x02, 0x00, 0x00, 0x00, 0x00, 0x41, 0xE0, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0x40, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, - 0x42, 0x40, 0x00, 0x00, 0x43, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x21, - 0x00, 0x08, 0x00, 0x35, 0x00, 0x08, 0x00, 0xF8, 0x00, 0x08, 0x00, 0x2C, 0x00, 0x08, 0x00, 0x29, - 0x00, 0x00, 0x00, 0x0D, 0x42, 0x20, 0x00, 0x00, 0x00, 0x50, 0x00, 0x2D, 0x00, 0x2D, 0x00, 0x00, - 0x41, 0x20, 0x00, 0x00, 0x3D, 0xCC, 0xCC, 0xCD, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x0A, 0x00, 0x41, 0xB0, 0x00, 0x00, 0x42, 0x2C, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, - 0x42, 0xA0, 0x00, 0x00, 0x3F, 0x19, 0x99, 0x9A, 0x3F, 0x19, 0x99, 0x9A, 0xC0, 0xD0, 0x00, 0x00, - 0x40, 0x40, 0x00, 0x00, 0x3E, 0xCC, 0xCC, 0xCD, 0x42, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x48, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x2A, 0x04, 0xC8, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x42, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x88, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, - 0x42, 0x48, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00, 0x43, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x22, 0x00, 0x08, 0x00, 0x36, 0x00, 0x08, 0x00, 0xF9, 0x00, 0x08, 0x00, 0x2D, - 0x00, 0x08, 0x00, 0x2A, 0x00, 0x00, 0x00, 0x0D, 0x42, 0x48, 0x00, 0x00, 0x00, 0x50, 0x00, 0x14, - 0x00, 0x14, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0x3D, 0xCC, 0xCC, 0xCD, 0x3F, 0xC0, 0x00, 0x00, - 0x3F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, +const daObjCarry_dt_t daObjCarry_c::mData[] = { + // TYPE_TSUBO + { + 27.0f, + 36.0f, + 30.0f, + 80.0f, + 0.6f, + 0.6f, + -6.0f, + 4.0f, + 0.4f, + 25.0f, + 0.0f, + 28.0f, + 1.0f, + 42, + 0, + 200, + 2, + 0.0f, + 28.0f, + 0.0f, + 48.0f, + 30.0f, + 30.0f, + 48.0f, + 250.0f, + 0.0f, + JA_SE_OBJ_BREAK_CHINA_S, + JA_SE_OBJ_PUT_POT_S, + Z2SE_OBJ_PUT_WATER_S, + JA_SE_OBJ_FALL_MAGMA_S, + Z2SE_OBJ_FALL_WATER_S, + 0xD, + 40.0f, + 0x50, + 0x2D, + 0x2D, + 10.0f, + 0.1f, + 1.0f, + 1.0f, + 0xA00, + }, + // TYPE_OOTSUBO + { + 22.0f, + 43.0f, + 30.0f, + 80.0f, + 0.6f, + 0.6f, + -6.5f, + 3.0f, + 0.4f, + 35.0f, + 0.0f, + 50.0f, + 1.0f, + 42, + 4, + 200, + 3, + 0.0f, + 48.0f, + 0.0f, + 68.0f, + 50.0f, + 50.0f, + 50.0f, + 250.0f, + 0.0f, + JA_SE_OBJ_BREAK_CHINA_L, + JA_SE_OBJ_PUT_POT_L, + Z2SE_OBJ_PUT_WATER_M, + JA_SE_OBJ_FALL_MAGMA_M, + Z2SE_OBJ_FALL_WATER_M, + 0xD, + 50.0f, + 0x50, + 0x14, + 0x14, + 10.0f, + 0.1f, + 1.5f, + 1.5f, + 0xA00, + }, + // TYPE_KIBAKO + { + 27.0f, + 36.0f, + 30.0f, + 80.0f, + 0.6f, + 0.6f, + -6.0f, + 8.0f, + 0.4f, + 30.0f, + 0.0f, + 37.5f, + 0.5f, + 42, + 1, + 200, + 2, + 0.0f, + 28.0f, + 0.0f, + 50.0f, + 37.5f, + 30.0f, + 50.0f, + 500.0f, + 0.0f, + Z2SE_OBJ_BREAK_WOOD_S, + Z2SE_OBJ_PUT_WBOX_S, + Z2SE_OBJ_PUT_WATER_S, + JA_SE_OBJ_FALL_MAGMA_S, + Z2SE_OBJ_FALL_WATER_S, + 0xB, + 87.0f, + 0x59, + 0x2D, + 0x2D, + 10.0f, + 0.1f, + 1.5f, + 1.0f, + 0xA00, + }, + // TYPE_IRON_BALL + { + 25.0f, + 30.0f, + 30.0f, + 80.0f, + 0.1f, + 0.55f, + -6.0f, + 2.5f, + 0.4f, + 0.0f, + 35.0f, + 0.0f, + 1.0f, + 42, + 8, + 200, + 3, + 0.0f, + 0.0f, + 0.0f, + 40.0f, + 0.0f, + 30.0f, + 40.0f, + 1000000.0f, + 50.0f, + Z2SE_OBJ_BREAK_WOOD_S, + 0x801D4, + Z2SE_OBJ_PUT_WATER_M, + JA_SE_OBJ_FALL_MAGMA_S, + Z2SE_OBJ_FALL_WATER_S, + 0xB, + 40.0f, + 0x2, + 0x8C, + 0x8C, + 50.0f, + 0.1f, + 1.5f, + 1.5f, + 0x1000, + }, + // TYPE_TARU + { + 22.0f, + 43.0f, + 30.0f, + 80.0f, + 0.6f, + 0.6f, + -6.5f, + 10.0f, + 0.4f, + 40.0f, + 0.0f, + 50.0f, + 1.0f, + 42, + 4, + 200, + 3, + 0.0f, + 48.0f, + 0.0f, + 68.0f, + 50.0f, + 50.0f, + 50.0f, + 500.0f, + 0.0f, + Z2SE_OBJ_BREAK_BARREL, + Z2SE_OBJ_PUT_WBOX_S, + Z2SE_OBJ_PUT_WATER_M, + JA_SE_OBJ_FALL_MAGMA_M, + Z2SE_OBJ_FALL_WATER_M, + 0xD, + 50.0f, + 0x59, + 0x28, + 0x28, + 10.0f, + 0.1f, + 2.0f, + 1.5f, + 0xA00, + }, + // TYPE_DOKURO + { + 27.0f, + 36.0f, + 30.0f, + 80.0f, + 0.6f, + 0.6f, + -6.0f, + 4.0f, + 0.4f, + 10.0f, + 0.0f, + 28.0f, + 1.0f, + 42, + 0, + 200, + 2, + 0.0f, + 28.0f, + 0.0f, + 48.0f, + 30.0f, + 30.0f, + 48.0f, + 250.0f, + 0.0f, + 0x800F6, + 0x800F7, + Z2SE_OBJ_PUT_WATER_S, + JA_SE_OBJ_FALL_MAGMA_S, + Z2SE_OBJ_FALL_WATER_S, + 0xD, + 40.0f, + 0x59, + 0x32, + 0x32, + 10.0f, + 0.1f, + 1.0f, + 1.0f, + 0xA00, + }, + // TYPE_BOKKURI + { + 0.0f, + 100.0f, + 30.0f, + 80.0f, + 0.6f, + 0.3f, + -6.5f, + 8.0f, + 0.4f, + 30.0f, + 0.0f, + 50.0f, + 0.6f, + 42, + 0, + 200, + 2, + 0.0f, + 48.0f, + 0.0f, + 60.0f, + 45.0f, + 30.0f, + 60.0f, + 250.0f, + 0.0f, + 0x800B9, + 0x800B8, + Z2SE_OBJ_PUT_WATER_S, + JA_SE_OBJ_FALL_MAGMA_M, + Z2SE_OBJ_FALL_WATER_M, + 0xD, + 45.0f, + 0x50, + 0x1E, + 0x1E, + 10.0f, + 0.15f, + 1.5f, + 1.5f, + 0xA00, + }, + // TYPE_TSUBO_2 + { + 27.0f, + 36.0f, + 30.0f, + 80.0f, + 0.6f, + 0.6f, + -6.0f, + 4.0f, + 0.4f, + 25.0f, + 0.0f, + 28.0f, + 1.0f, + 42, + 0, + 200, + 2, + 0.0f, + 28.0f, + 0.0f, + 48.0f, + 30.0f, + 30.0f, + 48.0f, + 250.0f, + 0.0f, + JA_SE_OBJ_BREAK_CHINA_S, + JA_SE_OBJ_PUT_POT_S, + Z2SE_OBJ_PUT_WATER_S, + JA_SE_OBJ_FALL_MAGMA_S, + Z2SE_OBJ_FALL_WATER_S, + 0xD, + 40.0f, + 0x50, + 0x2D, + 0x2D, + 10.0f, + 0.1f, + 1.0f, + 1.0f, + 0xA00, + }, + // TYPE_BALL_S + { + 27.0f, + 36.0f, + 30.0f, + 80.0f, + 0.7f, + 0.7f, + -6.0f, + 2.5f, + 0.4f, + 0.0f, + 40.0f, + 0.0f, + 1.0f, + 45, + 0, + 200, + 3, + 0.0f, + 0.0f, + 0.0f, + 60.0f, + 40.0f, + 50.0f, + 60.0f, + 1000000.0f, + 50.0f, + Z2SE_OBJ_BREAK_WOOD_S, + Z2SE_OBJ_L8_L_BALL_BOUND, + Z2SE_OBJ_PUT_WATER_M, + JA_SE_OBJ_FALL_MAGMA_S, + Z2SE_OBJ_FALL_WATER_S, + 0xB, + 40.0f, + 0x2, + 0x4B, + 0x6E, + 10.0f, + 0.015f, + 1.5f, + 1.5f, + 0x1000, + }, + // TYPE_BALL_S_2 + { + 27.0f, + 36.0f, + 30.0f, + 80.0f, + 0.7f, + 0.7f, + -6.0f, + 2.5f, + 0.4f, + 0.0f, + 40.0f, + 0.0f, + 1.0f, + 45, + 0, + 200, + 3, + 0.0f, + 0.0f, + 0.0f, + 100.0f, + 40.0f, + 50.0f, + 40.0f, + 1000000.0f, + 50.0f, + Z2SE_OBJ_BREAK_WOOD_S, + Z2SE_OBJ_L8_L_BALL_BOUND, + Z2SE_OBJ_PUT_WATER_M, + JA_SE_OBJ_FALL_MAGMA_S, + Z2SE_OBJ_FALL_WATER_S, + 0xB, + 40.0f, + 0x2, + 0x4B, + 0x6E, + 10.0f, + 0.015f, + 2.0f, + 2.0f, + 0x1000, + }, + // TYPE_AOTSUBO + { + 22.0f, + 43.0f, + 30.0f, + 80.0f, + 0.6f, + 0.6f, + -6.5f, + 3.0f, + 0.4f, + 35.0f, + 0.0f, + 50.0f, + 1.0f, + 42, + 4, + 200, + 3, + 0.0f, + 48.0f, + 0.0f, + 68.0f, + 50.0f, + 50.0f, + 68.0f, + 250.0f, + 0.0f, + JA_SE_OBJ_BREAK_CHINA_L, + JA_SE_OBJ_PUT_POT_L, + Z2SE_OBJ_PUT_WATER_M, + JA_SE_OBJ_FALL_MAGMA_M, + Z2SE_OBJ_FALL_WATER_M, + 0xD, + 50.0f, + 0x50, + 0x14, + 0x14, + 10.0f, + 0.1f, + 1.5f, + 1.5f, + 0xA00, + }, + // TYPE_LV8_BALL + { + 27.0f, + 36.0f, + 30.0f, + 80.0f, + 0.7f, + 0.7f, + -6.0f, + 2.5f, + 0.4f, + 0.0f, + 40.0f, + 0.0f, + 1.0f, + 45, + 0, + 200, + 3, + 0.0f, + 0.0f, + 0.0f, + 60.0f, + 40.0f, + 50.0f, + 60.0f, + 1000000.0f, + 50.0f, + Z2SE_OBJ_BREAK_WOOD_S, + Z2SE_OBJ_L8_L_BALL_BOUND, + Z2SE_OBJ_PUT_WATER_M, + JA_SE_OBJ_FALL_MAGMA_S, + Z2SE_OBJ_FALL_WATER_S, + 0xB, + 40.0f, + 0x2, + 0x4B, + 0x6E, + 10.0f, + 0.015f, + 1.5f, + 1.5f, + 0x1000, + }, + // TYPE_TSUBO_S + { + 27.0f, + 36.0f, + 30.0f, + 80.0f, + 0.6f, + 0.6f, + -6.0f, + 4.0f, + 0.4f, + 25.0f, + 0.0f, + 28.0f, + 1.0f, + 42, + 0, + 200, + 2, + 0.0f, + 28.0f, + 0.0f, + 48.0f, + 30.0f, + 30.0f, + 48.0f, + 250.0f, + 0.0f, + JA_SE_OBJ_BREAK_CHINA_S, + JA_SE_OBJ_PUT_POT_S, + Z2SE_OBJ_PUT_WATER_S, + JA_SE_OBJ_FALL_MAGMA_S, + Z2SE_OBJ_FALL_WATER_S, + 0xD, + 40.0f, + 0x50, + 0x2D, + 0x2D, + 10.0f, + 0.1f, + 1.0f, + 1.0f, + 0xA00, + }, + // TYPE_TSUBO_B + { + 22.0f, + 43.0f, + 30.0f, + 80.0f, + 0.6f, + 0.6f, + -6.5f, + 3.0f, + 0.4f, + 35.0f, + 0.0f, + 50.0f, + 1.0f, + 42, + 4, + 200, + 3, + 0.0f, + 48.0f, + 0.0f, + 68.0f, + 50.0f, + 50.0f, + 50.0f, + 250.0f, + 0.0f, + JA_SE_OBJ_BREAK_CHINA_L, + JA_SE_OBJ_PUT_POT_L, + Z2SE_OBJ_PUT_WATER_M, + JA_SE_OBJ_FALL_MAGMA_M, + Z2SE_OBJ_FALL_WATER_M, + 0xD, + 50.0f, + 0x50, + 0x14, + 0x14, + 10.0f, + 0.1f, + 1.5f, + 1.5f, + 0xA00, + }, }; -COMPILER_STRIP_GATE(0x80479A24, &daObjCarry_c::mData); /* 8047A23C-8047A280 000930 0044+00 0/1 0/0 0/0 .rodata l_cyl_src */ -#pragma push -#pragma force_active on const static dCcD_SrcCyl l_cyl_src = { { - {0x0, {{AT_TYPE_THROW_OBJ, 0x2, 0x1f}, {0xd8fbfdff, 0x1f}, 0x79}}, // mObj - {dCcD_SE_THROW_OBJ, 0x1, 0x0, 0x0, 0x1}, // mGObjAt - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x6}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf + {0x0, {{AT_TYPE_THROW_OBJ, 0x2, 0x1f}, {0xd8fbfdff, 0x1f}, 0x79}}, // mObj + {dCcD_SE_THROW_OBJ, 0x1, 0x0, 0x0, 0x1}, // mGObjAt + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x6}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf { - {0.0f, 0.0f, 0.0f}, // mCenter - 10.0f, // mRadius - 50.0f // mHeight - } // mCyl + {0.0f, 0.0f, 0.0f}, // mCenter + 10.0f, // mRadius + 50.0f // mHeight + } // mCyl }; -#pragma pop /* 8047A280-8047A2C0 000974 0040+00 0/1 0/0 0/0 .rodata l_light_at_sph_src */ -#pragma push -#pragma force_active on const static dCcD_SrcSph l_light_at_sph_src = { { - {0x0, {{AT_TYPE_LANTERN_SWING, 0x0, 0x11}, {0x0, 0x10}, 0x0}}, // mObj - {dCcD_SE_NONE, 0x0, 0x0, 0x4, 0x0}, // mGObjAt - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf + {0x0, {{AT_TYPE_LANTERN_SWING, 0x0, 0x11}, {0x0, 0x10}, 0x0}}, // mObj + {dCcD_SE_NONE, 0x0, 0x0, dCcD_MTRL_LIGHT, 0x0}, // mGObjAt + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf { - {{0.0f, 0.0f, 0.0f}, 500.0f} // mSph - } // mSphAttr + {{0.0f, 0.0f, 0.0f}, 500.0f} // mSph + } // mSphAttr }; -#pragma pop /* 8047A2C0-8047A30C 0009B4 004C+00 0/1 0/0 0/0 .rodata l_atCpsSrc */ -#pragma push -#pragma force_active on const static dCcD_SrcCps l_atCpsSrc = { { - {0x0, {{AT_TYPE_IRON_BALL, 0x64, 0x1f}, {0x0, 0x10}, 0x0}}, // mObj - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x1}, // mGObjAt - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x6}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf + {0x0, {{AT_TYPE_IRON_BALL, 0x64, 0x1f}, {0x0, 0x10}, 0x0}}, // mObj + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x1}, // mGObjAt + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x6}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf { - {{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, 40.0f}, // mCps - } // mCpsAttr + {{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, 40.0f}, // mCps + } // mCpsAttr }; -#pragma pop /* 8047A30C-8047A350 000A00 0044+00 0/1 0/0 0/0 .rodata l_tg_cyl */ -#pragma push -#pragma force_active on const static dCcD_SrcCyl l_tg_cyl = { { - {0x0, {{0x0, 0x0, 0x1e}, {0x200, 0x11}, 0x0}}, // mObj - {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x1}, // mGObjAt - {dCcD_SE_WOLF_KICK, 0x0, 0x0, 0x0, 0x4}, // mGObjTg - {0x0}, // mGObjCo - }, // mObjInf + {0x0, {{0x0, 0x0, 0x1e}, {0x200, 0x11}, 0x0}}, // mObj + {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x1}, // mGObjAt + {dCcD_SE_WOLF_KICK, 0x0, 0x0, 0x0, 0x4}, // mGObjTg + {0x0}, // mGObjCo + }, // mObjInf { - {0.0f, 0.0f, 0.0f}, // mCenter - 40.0f, // mRadius - 60.0f // mHeight - } // mCyl + {0.0f, 0.0f, 0.0f}, // mCenter + 40.0f, // mRadius + 60.0f // mHeight + } // mCyl }; -#pragma pop /* 8047A350-8047A354 000A44 0004+00 0/0 0/0 0/0 .rodata l_light_color */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const l_light_color = 0xFFFFFFFF; -COMPILER_STRIP_GATE(0x8047A350, &l_light_color); -#pragma pop +static const GXColor l_light_color = {0xFF, 0xFF, 0xFF, 0xFF}; -/* 8047A354-8047A35C 000A48 0004+04 7/28 0/0 0/0 .rodata @3899 */ -SECTION_RODATA static u8 const lit_3899[4 + 4 /* padding */] = { - 0x00, - 0x00, - 0x00, - 0x00, - /* padding */ - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8047A354, &lit_3899); - -/* 8047A35C-8047A364 000A50 0008+00 0/7 0/0 0/0 .rodata @3900 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3900[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8047A35C, &lit_3900); -#pragma pop - -/* 8047A364-8047A36C 000A58 0008+00 0/7 0/0 0/0 .rodata @3901 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3901[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8047A364, &lit_3901); -#pragma pop - -/* 8047A36C-8047A374 000A60 0008+00 0/7 0/0 0/0 .rodata @3902 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_3902[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8047A36C, &lit_3902); -#pragma pop - -/* 8047A4BC-8047A4BC 000BB0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8047A4BC = "J_tubo_00"; -SECTION_DEAD static char const* const stringBase_8047A4C6 = "J_tubo_01"; -SECTION_DEAD static char const* const stringBase_8047A4D0 = "Kkiba_00"; -SECTION_DEAD static char const* const stringBase_8047A4D9 = "Y_ironbal"; -SECTION_DEAD static char const* const stringBase_8047A4E3 = "J_taru00"; -SECTION_DEAD static char const* const stringBase_8047A4EC = "J_doku00"; -SECTION_DEAD static char const* const stringBase_8047A4F5 = "Obj_bkl"; -SECTION_DEAD static char const* const stringBase_8047A4FD = "K_tubo02"; -SECTION_DEAD static char const* const stringBase_8047A506 = "Obj_ballS"; -SECTION_DEAD static char const* const stringBase_8047A510 = "D_aotubo0"; -SECTION_DEAD static char const* const stringBase_8047A51A = "Obj_tama"; -SECTION_DEAD static char const* const stringBase_8047A523 = "O_tuboS"; -SECTION_DEAD static char const* const stringBase_8047A52B = "O_tuboB"; -SECTION_DEAD static char const* const stringBase_8047A533 = "J_tubo_00.bmd"; -SECTION_DEAD static char const* const stringBase_8047A541 = "J_tubo_01.bmd"; -SECTION_DEAD static char const* const stringBase_8047A54F = "J_hako_00.bmd"; -SECTION_DEAD static char const* const stringBase_8047A55D = "Yironball.bmd"; -SECTION_DEAD static char const* const stringBase_8047A56B = "J_taru_00.bmd"; -SECTION_DEAD static char const* const stringBase_8047A579 = "J_doku_00.bmd"; -SECTION_DEAD static char const* const stringBase_8047A587 = "K_hb00.bmd"; -SECTION_DEAD static char const* const stringBase_8047A592 = "K_tubo02.bmd"; -SECTION_DEAD static char const* const stringBase_8047A59F = "LV8_OBJ_HikariS.bmd"; -SECTION_DEAD static char const* const stringBase_8047A5B3 = "D_aotubo00.bmd"; -SECTION_DEAD static char const* const stringBase_8047A5C2 = "LV8_tama.bmd"; -SECTION_DEAD static char const* const stringBase_8047A5CF = "O_tuboS_LV8.bmd"; -SECTION_DEAD static char const* const stringBase_8047A5DF = "O_tuboB_LV8.bmd"; -#pragma pop - -/* 8047A650-8047A65C 000000 000C+00 7/7 0/0 0/0 .data cNullVec__6Z2Calc */ -SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; - -/* 8047A65C-8047A670 00000C 0004+10 0/0 0/0 0/0 .data @1787 */ -#pragma push -#pragma force_active on -SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = { - 0x02000201, - /* padding */ - 0x40080000, - 0x00000000, - 0x3FE00000, - 0x00000000, -}; -#pragma pop +UNK_REL_DATA; /* 8047A670-8047A6A8 -00001 0038+00 1/1 0/0 0/0 .data l_arcName */ -SECTION_DATA static void* l_arcName[14] = { - (void*)&d_a_obj_carry__stringBase0, - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0xA), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0x14), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0x1D), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0x27), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0x30), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0x39), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0x41), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0x4A), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0x4A), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0x54), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0x5E), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0x67), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0x6F), +static char* l_arcName[] = { + "J_tubo_00", "J_tubo_01", "Kkiba_00", "Y_ironbal", "J_taru00", "J_doku00", "Obj_bkl", + "K_tubo02", "Obj_ballS", "Obj_ballS", "D_aotubo0", "Obj_tama", "O_tuboS", "O_tuboB", }; /* 8047A6A8-8047A6E0 -00001 0038+00 1/1 0/0 0/0 .data l_bmdName */ -SECTION_DATA static void* l_bmdName[14] = { - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0x77), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0x85), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0x93), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0xA1), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0xAF), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0xBD), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0xCB), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0xD6), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0xE3), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0xE3), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0xF7), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0x106), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0x113), - (void*)(((char*)&d_a_obj_carry__stringBase0) + 0x123), +static char* l_bmdName[] = { + "J_tubo_00.bmd", "J_tubo_01.bmd", "J_hako_00.bmd", "Yironball.bmd", + "J_taru_00.bmd", "J_doku_00.bmd", "K_hb00.bmd", "K_tubo02.bmd", + "LV8_OBJ_HikariS.bmd", "LV8_OBJ_HikariS.bmd", "D_aotubo00.bmd", "LV8_tama.bmd", + "O_tuboS_LV8.bmd", "O_tuboB_LV8.bmd", }; /* 8047A6E0-8047A6F8 000090 0018+00 1/0 0/0 0/0 .data kibako_jv_offset */ -SECTION_DATA static u8 kibako_jv_offset[24] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x43, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static Vec kibako_jv_offset[] = { + {0.0f, 0.0f, 0.0f}, + {0.0f, 150.0f, 0.0f}, }; /* 8047A6F8-8047A710 0000A8 0018+00 1/0 0/0 0/0 .data taru_jv_offset */ -SECTION_DATA static u8 taru_jv_offset[24] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x42, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +static Vec taru_jv_offset[] = { + {0.0f, 0.0f, 0.0f}, + {0.0f, 100.0f, 0.0f}, }; /* 8047A710-8047A71C -00001 000C+00 1/1 0/0 0/0 .data kibako_jc_data */ // box joint col data -static dJntColData_c kibako_jc_data = { - 1, - 1, - 0, - 45.0f, - (Vec*)kibako_jv_offset -}; +static dJntColData_c kibako_jc_data = {1, 1, 0, 45.0f, kibako_jv_offset}; /* 8047A71C-8047A728 -00001 000C+00 1/1 0/0 0/0 .data taru_jc_data */ -static dJntColData_c taru_jc_data = { - 1, - 1, - 0, - 45.0f, - (Vec*)taru_jv_offset -}; - -/* 8047A728-8047A734 -00001 000C+00 0/1 0/0 0/0 .data @5956 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5956[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_wait__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A734-8047A740 -00001 000C+00 0/1 0/0 0/0 .data @5957 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5957[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_walk__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A740-8047A74C -00001 000C+00 0/1 0/0 0/0 .data @5958 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5958[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_carry__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A74C-8047A758 -00001 000C+00 0/1 0/0 0/0 .data @5959 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5959[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_drop__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A758-8047A764 -00001 000C+00 0/1 0/0 0/0 .data @5960 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5960[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_float__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A764-8047A770 -00001 000C+00 0/1 0/0 0/0 .data @5961 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5961[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_sink__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A770-8047A77C -00001 000C+00 0/1 0/0 0/0 .data @5962 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5962[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_yogan__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A77C-8047A788 -00001 000C+00 0/1 0/0 0/0 .data @5963 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5963[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_magne__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A788-8047A794 -00001 000C+00 0/1 0/0 0/0 .data @5964 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5964[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_magneCarry__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A794-8047A7A0 -00001 000C+00 0/1 0/0 0/0 .data @5965 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5965[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_boomCarry__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A7A0-8047A7AC -00001 000C+00 0/1 0/0 0/0 .data @5966 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5966[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_growth__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A7AC-8047A7B8 -00001 000C+00 0/1 0/0 0/0 .data @5967 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5967[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_dbDrop__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A7B8-8047A7C4 -00001 000C+00 0/1 0/0 0/0 .data @5968 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5968[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_hookCarry__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A7C4-8047A7D0 -00001 000C+00 0/1 0/0 0/0 .data @5969 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5969[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_end__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A7D0-8047A7DC -00001 000C+00 0/1 0/0 0/0 .data @5970 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5970[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_fit__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A7DC-8047A7E8 -00001 000C+00 0/1 0/0 0/0 .data @5971 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5971[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_controled__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A7E8-8047A7F4 -00001 000C+00 0/1 0/0 0/0 .data @5972 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_5972[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)mode_proc_resetLightBall__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A7F4-8047A8C0 0001A4 00CC+00 0/1 0/0 0/0 .data l_mode_func$5955 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_mode_func[204] = { - 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, 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, - 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, -}; -#pragma pop - -/* 8047A8C0-8047A8CC -00001 000C+00 0/1 0/0 0/0 .data @8582 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8582[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)bg_damage_proc_kotubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A8CC-8047A8D8 -00001 000C+00 0/1 0/0 0/0 .data @8583 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8583[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)bg_damage_proc_ootubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A8D8-8047A8E4 -00001 000C+00 0/1 0/0 0/0 .data @8584 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8584[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)bg_damage_proc_kibako__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A8E4-8047A8F0 -00001 000C+00 0/1 0/0 0/0 .data @8585 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8585[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)bg_damage_proc_ironball__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A8F0-8047A8FC -00001 000C+00 0/1 0/0 0/0 .data @8586 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8586[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)bg_damage_proc_taru__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A8FC-8047A908 -00001 000C+00 0/1 0/0 0/0 .data @8587 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8587[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)bg_damage_proc_dokuro__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A908-8047A914 -00001 000C+00 0/1 0/0 0/0 .data @8588 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8588[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)bg_damage_proc_bokkuri__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A914-8047A920 -00001 000C+00 0/1 0/0 0/0 .data @8589 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8589[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)bg_damage_proc_kotubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A920-8047A92C -00001 000C+00 0/1 0/0 0/0 .data @8590 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8590[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)bg_damage_proc_LightBall__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A92C-8047A938 -00001 000C+00 0/1 0/0 0/0 .data @8591 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8591[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)bg_damage_proc_LightBall__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A938-8047A944 -00001 000C+00 0/1 0/0 0/0 .data @8592 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8592[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)bg_damage_proc_ootubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A944-8047A950 -00001 000C+00 0/1 0/0 0/0 .data @8593 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8593[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)bg_damage_proc_Lv8Ball__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A950-8047A95C -00001 000C+00 0/1 0/0 0/0 .data @8594 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8594[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)bg_damage_proc_kotubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A95C-8047A968 -00001 000C+00 0/1 0/0 0/0 .data @8595 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8595[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)bg_damage_proc_ootubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047A968-8047AA10 000318 00A8+00 0/1 0/0 0/0 .data l_type_func$8581 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_type_func_8581[168] = { - 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, 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, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop - -/* 8047AA10-8047AA1C -00001 000C+00 0/1 0/0 0/0 .data @8605 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8605[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cc_damage_proc_kotubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AA1C-8047AA28 -00001 000C+00 0/1 0/0 0/0 .data @8606 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8606[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cc_damage_proc_ootubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AA28-8047AA34 -00001 000C+00 0/1 0/0 0/0 .data @8607 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8607[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cc_damage_proc_kibako__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AA34-8047AA40 -00001 000C+00 0/1 0/0 0/0 .data @8608 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8608[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cc_damage_proc_ironball__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AA40-8047AA4C -00001 000C+00 0/1 0/0 0/0 .data @8609 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8609[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cc_damage_proc_taru__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AA4C-8047AA58 -00001 000C+00 0/1 0/0 0/0 .data @8610 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8610[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cc_damage_proc_dokuro__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AA58-8047AA64 -00001 000C+00 0/1 0/0 0/0 .data @8611 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8611[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cc_damage_proc_bokkuri__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AA64-8047AA70 -00001 000C+00 0/1 0/0 0/0 .data @8612 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8612[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cc_damage_proc_kotubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AA70-8047AA7C -00001 000C+00 0/1 0/0 0/0 .data @8613 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8613[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cc_damage_proc_LightBall__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AA7C-8047AA88 -00001 000C+00 0/1 0/0 0/0 .data @8614 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8614[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cc_damage_proc_LightBall__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AA88-8047AA94 -00001 000C+00 0/1 0/0 0/0 .data @8615 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8615[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cc_damage_proc_ootubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AA94-8047AAA0 -00001 000C+00 0/1 0/0 0/0 .data @8616 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8616[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cc_damage_proc_Lv8Ball__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AAA0-8047AAAC -00001 000C+00 0/1 0/0 0/0 .data @8617 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8617[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cc_damage_proc_kotubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AAAC-8047AAB8 -00001 000C+00 0/1 0/0 0/0 .data @8618 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8618[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)cc_damage_proc_ootubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AAB8-8047AB60 000468 00A8+00 0/1 0/0 0/0 .data l_type_func$8604 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_type_func_8604[168] = { - 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, 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, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop - -/* 8047AB60-8047AB6C -00001 000C+00 0/1 0/0 0/0 .data @8628 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8628[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)eff_break_tsubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AB6C-8047AB78 -00001 000C+00 0/1 0/0 0/0 .data @8629 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8629[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)eff_break_ootubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AB78-8047AB84 -00001 000C+00 0/1 0/0 0/0 .data @8630 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8630[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)eff_break_kibako__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AB84-8047AB90 -00001 000C+00 0/1 0/0 0/0 .data @8631 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8631[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)eff_break_ironball__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AB90-8047AB9C -00001 000C+00 0/1 0/0 0/0 .data @8632 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8632[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)eff_break_taru__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AB9C-8047ABA8 -00001 000C+00 0/1 0/0 0/0 .data @8633 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8633[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)eff_break_dokuro__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047ABA8-8047ABB4 -00001 000C+00 0/1 0/0 0/0 .data @8634 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8634[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)eff_break_bokkuri__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047ABB4-8047ABC0 -00001 000C+00 0/1 0/0 0/0 .data @8635 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8635[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)eff_break_kotubo2__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047ABC0-8047ABCC -00001 000C+00 0/1 0/0 0/0 .data @8636 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8636[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)eff_break_LightBall__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047ABCC-8047ABD8 -00001 000C+00 0/1 0/0 0/0 .data @8637 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8637[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)eff_break_LightBall__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047ABD8-8047ABE4 -00001 000C+00 0/1 0/0 0/0 .data @8638 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8638[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)eff_break_ootubo2__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047ABE4-8047ABF0 -00001 000C+00 0/1 0/0 0/0 .data @8639 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8639[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)eff_break_Lv8Ball__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047ABF0-8047ABFC -00001 000C+00 0/1 0/0 0/0 .data @8640 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8640[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)eff_break_tsuboL8__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047ABFC-8047AC08 -00001 000C+00 0/1 0/0 0/0 .data @8641 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8641[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)eff_break_ootuboL8__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AC08-8047ACB0 0005B8 00A8+00 0/1 0/0 0/0 .data l_type_func$8627 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_type_func_8627[168] = { - 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, 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, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop - -/* 8047ACB0-8047ACBC -00001 000C+00 0/1 0/0 0/0 .data @8649 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8649[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)calc_rot_axis_tsubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047ACBC-8047ACC8 -00001 000C+00 0/1 0/0 0/0 .data @8650 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8650[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)calc_rot_axis_ootubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047ACC8-8047ACD4 -00001 000C+00 0/1 0/0 0/0 .data @8651 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8651[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)calc_rot_axis_kibako__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047ACD4-8047ACE0 -00001 000C+00 0/1 0/0 0/0 .data @8652 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8652[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)calc_rot_axis_ironball__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047ACE0-8047ACEC -00001 000C+00 0/1 0/0 0/0 .data @8653 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8653[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)calc_rot_axis_taru__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047ACEC-8047ACF8 -00001 000C+00 0/1 0/0 0/0 .data @8654 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8654[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)calc_rot_axis_dokuro__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047ACF8-8047AD04 -00001 000C+00 0/1 0/0 0/0 .data @8655 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8655[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)calc_rot_axis_bokkuri__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AD04-8047AD10 -00001 000C+00 0/1 0/0 0/0 .data @8656 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8656[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)calc_rot_axis_kotubo2__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AD10-8047AD1C -00001 000C+00 0/1 0/0 0/0 .data @8657 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8657[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)calc_rot_axis_LightBall__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AD1C-8047AD28 -00001 000C+00 0/1 0/0 0/0 .data @8658 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8658[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)calc_rot_axis_LightBall__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AD28-8047AD34 -00001 000C+00 0/1 0/0 0/0 .data @8659 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8659[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)calc_rot_axis_ootubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AD34-8047AD40 -00001 000C+00 0/1 0/0 0/0 .data @8660 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8660[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)calc_rot_axis_Lv8Ball__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AD40-8047AD4C -00001 000C+00 0/1 0/0 0/0 .data @8661 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8661[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)calc_rot_axis_tsubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AD4C-8047AD58 -00001 000C+00 0/1 0/0 0/0 .data @8662 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8662[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)calc_rot_axis_ootubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AD58-8047AE00 000708 00A8+00 0/1 0/0 0/0 .data l_type_func$8648 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_type_func_8648[168] = { - 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, 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, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop - -/* 8047AE00-8047AE0C -00001 000C+00 0/1 0/0 0/0 .data @8670 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8670[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)exec_proc_tsubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AE0C-8047AE18 -00001 000C+00 0/1 0/0 0/0 .data @8671 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8671[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)exec_proc_ootubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AE18-8047AE24 -00001 000C+00 0/1 0/0 0/0 .data @8672 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8672[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)exec_proc_kibako__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AE24-8047AE30 -00001 000C+00 0/1 0/0 0/0 .data @8673 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8673[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)exec_proc_ironball__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AE30-8047AE3C -00001 000C+00 0/1 0/0 0/0 .data @8674 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8674[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)exec_proc_taru__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AE3C-8047AE48 -00001 000C+00 0/1 0/0 0/0 .data @8675 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8675[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)exec_proc_dokuro__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AE48-8047AE54 -00001 000C+00 0/1 0/0 0/0 .data @8676 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8676[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)exec_proc_bokkuri__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AE54-8047AE60 -00001 000C+00 0/1 0/0 0/0 .data @8677 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8677[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)exec_proc_tsubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AE60-8047AE6C -00001 000C+00 0/1 0/0 0/0 .data @8678 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8678[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)exec_proc_LightBall__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AE6C-8047AE78 -00001 000C+00 0/1 0/0 0/0 .data @8679 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8679[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)exec_proc_LightBall__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AE78-8047AE84 -00001 000C+00 0/1 0/0 0/0 .data @8680 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8680[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)exec_proc_ootubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AE84-8047AE90 -00001 000C+00 0/1 0/0 0/0 .data @8681 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8681[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)exec_proc_Lv8Ball__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AE90-8047AE9C -00001 000C+00 0/1 0/0 0/0 .data @8682 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8682[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)exec_proc_tsubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AE9C-8047AEA8 -00001 000C+00 0/1 0/0 0/0 .data @8683 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8683[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)exec_proc_ootubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AEA8-8047AF50 000858 00A8+00 0/1 0/0 0/0 .data l_type_func$8669 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_type_func_8669[168] = { - 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, 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, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop - -/* 8047AF50-8047AF88 -00001 0038+00 1/1 0/0 0/0 .data l_callback$8690 */ -SECTION_DATA static void* l_callback_8690[14] = { - (void*)TgHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)TgHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)TgHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)TgHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)TgHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)TgHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)TgHitCallBackBokkuri__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)TgHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)TgHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)TgHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)TgHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)TgHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)TgHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)TgHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, -}; - -/* 8047AF88-8047AFC0 -00001 0038+00 1/1 0/0 0/0 .data l_callback$8698 */ -SECTION_DATA static void* l_callback_8698[14] = { - (void*)CoHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)CoHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)CoHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)CoHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)CoHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)CoHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)CoHitCallBackBokkuri__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)CoHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)CoHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)CoHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)CoHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)CoHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)CoHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, - (void*)CoHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf, -}; - -/* 8047AFC0-8047AFCC -00001 000C+00 0/1 0/0 0/0 .data @8707 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8707[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)CreateInit_tsubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AFCC-8047AFD8 -00001 000C+00 0/1 0/0 0/0 .data @8708 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8708[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)CreateInit_ootubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AFD8-8047AFE4 -00001 000C+00 0/1 0/0 0/0 .data @8709 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8709[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)CreateInit_kibako__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AFE4-8047AFF0 -00001 000C+00 0/1 0/0 0/0 .data @8710 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8710[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)CreateInit_ironball__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AFF0-8047AFFC -00001 000C+00 0/1 0/0 0/0 .data @8711 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8711[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)CreateInit_taru__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047AFFC-8047B008 -00001 000C+00 0/1 0/0 0/0 .data @8712 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8712[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)CreateInit_dokuro__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047B008-8047B014 -00001 000C+00 0/1 0/0 0/0 .data @8713 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8713[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)CreateInit_bokkuri__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047B014-8047B020 -00001 000C+00 0/1 0/0 0/0 .data @8714 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8714[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)CreateInit_tsubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047B020-8047B02C -00001 000C+00 0/1 0/0 0/0 .data @8715 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8715[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)CreateInit_LightBall__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047B02C-8047B038 -00001 000C+00 0/1 0/0 0/0 .data @8716 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8716[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)CreateInit_LightBall__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047B038-8047B044 -00001 000C+00 0/1 0/0 0/0 .data @8717 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8717[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)CreateInit_ootubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047B044-8047B050 -00001 000C+00 0/1 0/0 0/0 .data @8718 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8718[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)CreateInit_Lv8Ball__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047B050-8047B05C -00001 000C+00 0/1 0/0 0/0 .data @8719 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8719[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)CreateInit_tsubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047B05C-8047B068 -00001 000C+00 0/1 0/0 0/0 .data @8720 */ -#pragma push -#pragma force_active on -SECTION_DATA static void* lit_8720[3] = { - (void*)NULL, - (void*)0xFFFFFFFF, - (void*)CreateInit_ootubo__12daObjCarry_cFv, -}; -#pragma pop - -/* 8047B068-8047B110 000A18 00A8+00 0/1 0/0 0/0 .data l_func$8706 */ -#pragma push -#pragma force_active on -SECTION_DATA static u8 l_func[168] = { - 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, 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, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -#pragma pop - -/* 8047B110-8047B130 -00001 0020+00 1/0 0/0 0/0 .data l_daObjCarry_Method */ -static actor_method_class l_daObjCarry_Method = { - (process_method_func)daObjCarry_Create__FP10fopAc_ac_c, - (process_method_func)daObjCarry_Delete__FP12daObjCarry_c, - (process_method_func)daObjCarry_Execute__FP12daObjCarry_c, - 0, - (process_method_func)daObjCarry_Draw__FP12daObjCarry_c -}; - -/* 8047B130-8047B160 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Carry */ -extern actor_process_profile_definition g_profile_Obj_Carry = { - fpcLy_CURRENT_e, // mLayerID - 8, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_Obj_Carry, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daObjCarry_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 244, // mPriority - &l_daObjCarry_Method, // sub_method - 0x40500, // mStatus - fopAc_ACTOR_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 8047B160-8047B16C 000B10 000C+00 1/1 0/0 0/0 .data __vt__12dBgS_AcchCir */ -SECTION_DATA extern void* __vt__12dBgS_AcchCir[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_AcchCirFv, -}; - -/* 8047B16C-8047B178 000B1C 000C+00 2/2 0/0 0/0 .data __vt__10cCcD_GStts */ -SECTION_DATA extern void* __vt__10cCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10cCcD_GSttsFv, -}; - -/* 8047B178-8047B184 000B28 000C+00 1/1 0/0 0/0 .data __vt__10dCcD_GStts */ -SECTION_DATA extern void* __vt__10dCcD_GStts[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__10dCcD_GSttsFv, -}; - -/* 8047B184-8047B190 000B34 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGSph */ -SECTION_DATA extern void* __vt__8cM3dGSph[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGSphFv, -}; - -/* 8047B190-8047B19C 000B40 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGCyl */ -SECTION_DATA extern void* __vt__8cM3dGCyl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGCylFv, -}; - -/* 8047B19C-8047B1A8 000B4C 000C+00 2/2 0/0 0/0 .data __vt__8cM3dGAab */ -SECTION_DATA extern void* __vt__8cM3dGAab[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGAabFv, -}; - -/* 8047B1A8-8047B1CC 000B58 0024+00 2/2 0/0 0/0 .data __vt__12dBgS_ObjAcch */ -SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_ObjAcchFv, - (void*)NULL, - (void*)NULL, - (void*)func_804798FC, - (void*)NULL, - (void*)NULL, - (void*)func_804798F4, -}; - -/* 8047B1CC-8047B1D8 000B7C 000C+00 5/5 0/0 0/0 .data __vt__8cM3dGPla */ -SECTION_DATA extern void* __vt__8cM3dGPla[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__8cM3dGPlaFv, -}; +static dJntColData_c taru_jc_data = {1, 1, 0, 45.0f, taru_jv_offset}; /* 8046EFF8-8046F2F4 000078 02FC+00 1/1 0/0 0/0 .text bound__FP4cXyzRC13cBgS_PolyInfof */ -static void bound(cXyz* param_0, cBgS_PolyInfo const& param_1, f32 param_2) { - // NONMATCHING -} +static f32 bound(cXyz* param_0, const cBgS_PolyInfo& param_1, f32 param_2) { + cM3dGPla plane; -/* 8046F2F4-8046F33C 000374 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGPlaFv */ -extern "C" void __dt__8cM3dGPlaFv() { - // asm cM3dGPla::~cM3dGPla() { - // NONMATCHING + bool var_r29 = dComIfG_Bgsp().GetTriPla(param_1, &plane); + if (var_r29) { + cXyz pos; + f32 abs = param_0->absXZ(); + + VECReflect(param_0, &plane.mNormal, &pos); + *param_0 = (pos * abs) * param_2; + return param_0->absXZ(); + } else { + return 0.0f; + } } /* 8046F33C-8046F340 0003BC 0004+00 1/0 0/0 0/0 .text * TgHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ -static void TgHitCallBackBase(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, fopAc_ac_c* param_2, - dCcD_GObjInf* param_3) { - /* empty function */ -} - -/* ############################################################################################## */ -/* 8047A374-8047A378 000A68 0004+00 0/1 0/0 0/0 .rodata @3927 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3927 = 6000.0f; -COMPILER_STRIP_GATE(0x8047A374, &lit_3927); -#pragma pop - -/* 8047A378-8047A37C 000A6C 0004+00 0/1 0/0 0/0 .rodata @3928 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3928 = 2000.0f; -COMPILER_STRIP_GATE(0x8047A378, &lit_3928); -#pragma pop - -/* 8047A37C-8047A380 000A70 0004+00 0/3 0/0 0/0 .rodata @3929 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3929 = 4000.0f; -COMPILER_STRIP_GATE(0x8047A37C, &lit_3929); -#pragma pop - -/* 8047A380-8047A384 000A74 0004+00 0/1 0/0 0/0 .rodata @3930 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3930 = 1500.0f; -COMPILER_STRIP_GATE(0x8047A380, &lit_3930); -#pragma pop +static void TgHitCallBackBase(fopAc_ac_c* i_tgActor, dCcD_GObjInf* i_tgObjInf, + fopAc_ac_c* i_atActor, dCcD_GObjInf* i_atObjInf) {} /* 8046F340-8046F3E0 0003C0 00A0+00 1/0 0/0 0/0 .text * TgHitCallBackBokkuri__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ -static void TgHitCallBackBokkuri(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, - fopAc_ac_c* param_2, dCcD_GObjInf* param_3) { - - daObjCarry_c* obj_carry = static_cast(param_0); - if (obj_carry && param_2 && - param_3->ChkAtType(AT_TYPE_SHIELD_ATTACK) && - fopAcM_IsActor(param_2) && - fopAcM_GetName(param_2) == PROC_ALINK) { - obj_carry->field_0xd5c = FLOAT_LABEL(lit_3927) + cM_rndF(FLOAT_LABEL(lit_3928)); - obj_carry->field_0xd60 = FLOAT_LABEL(lit_3929) + cM_rndF(FLOAT_LABEL(lit_3930)); - obj_carry->field_0xd68 = 4000; - } +static void TgHitCallBackBokkuri(fopAc_ac_c* i_tgActor, dCcD_GObjInf* i_tgObjInf, + fopAc_ac_c* i_atActor, dCcD_GObjInf* i_atObjInf) { + daObjCarry_c* objCarry = (daObjCarry_c*)i_tgActor; + if (objCarry != NULL && i_atActor != NULL && i_atObjInf->ChkAtType(AT_TYPE_SHIELD_ATTACK) && + fopAcM_IsActor(i_atActor) && fopAcM_GetName(i_atActor) == PROC_ALINK) + { + objCarry->field_0xd5c = 6000.0f + cM_rndF(2000.0f); + objCarry->field_0xd60 = 4000.0f + cM_rndF(1500.0f); + objCarry->field_0xd68 = 4000; + } } /* 8046F3E0-8046F3E4 000460 0004+00 1/0 0/0 0/0 .text * CoHitCallBackBase__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ -static void CoHitCallBackBase(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, fopAc_ac_c* param_2, - dCcD_GObjInf* param_3) { - /* empty function */ -} - -/* ############################################################################################## */ -/* 8047A384-8047A388 000A78 0004+00 2/7 0/0 0/0 .rodata @3958 */ -SECTION_RODATA static f32 const lit_3958 = 0.5f; -COMPILER_STRIP_GATE(0x8047A384, &lit_3958); - -/* 8047A388-8047A38C 000A7C 0004+00 0/2 0/0 0/0 .rodata @3959 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3959 = 800.0f; -COMPILER_STRIP_GATE(0x8047A388, &lit_3959); -#pragma pop - -/* 8047A38C-8047A390 000A80 0004+00 0/1 0/0 0/0 .rodata @3960 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3960 = 400.0f; -COMPILER_STRIP_GATE(0x8047A38C, &lit_3960); -#pragma pop - -/* 8047A390-8047A394 000A84 0004+00 0/4 0/0 0/0 .rodata @3961 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3961 = 500.0f; -COMPILER_STRIP_GATE(0x8047A390, &lit_3961); -#pragma pop - -/* 8047A394-8047A398 000A88 0004+00 0/1 0/0 0/0 .rodata @3962 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_3962 = 300.0f; -COMPILER_STRIP_GATE(0x8047A394, &lit_3962); -#pragma pop +static void CoHitCallBackBase(fopAc_ac_c* i_coActorA, dCcD_GObjInf* i_coObjInfA, + fopAc_ac_c* i_coActorB, dCcD_GObjInf* i_coObjInfB) {} /* 8046F3E4-8046F4AC 000464 00C8+00 1/0 0/0 0/0 .text * CoHitCallBackBokkuri__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */ -// NONMATCHING - literals -static void CoHitCallBackBokkuri(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, - fopAc_ac_c* param_2, dCcD_GObjInf* param_3) { - daObjCarry_c* _param_0 = static_cast(param_0); +static void CoHitCallBackBokkuri(fopAc_ac_c* i_coActorA, dCcD_GObjInf* i_coObjInfA, + fopAc_ac_c* i_coActorB, dCcD_GObjInf* i_coObjInfB) { + daObjCarry_c* objCarry = (daObjCarry_c*)i_coActorA; - if (_param_0 && param_2 && _param_0->mStts.GetCCMoveP()) { - if ((f32)fabs(_param_0->mStts.GetCCMoveP()->x) > FLOAT_LABEL(lit_3958)) { - if ((f32)fabs(_param_0->mStts.GetCCMoveP()->z) > FLOAT_LABEL(lit_3958)) { + if (objCarry != NULL && i_coActorB != NULL) { + cXyz* cc_move_p = objCarry->mStts.GetCCMoveP(); + if (cc_move_p != NULL) { + if (std::fabs(cc_move_p->x) > 0.5f && std::fabs(cc_move_p->z) > 0.5f) { + objCarry->field_0xd5c = 800.0f + cM_rndF(400.0f); + objCarry->field_0xd60 = 500.0f + cM_rndF(300.0f); - _param_0->field_0xd5c = FLOAT_LABEL(lit_3959) + cM_rndF(FLOAT_LABEL(lit_3960)); - _param_0->field_0xd60 = FLOAT_LABEL(lit_3961) + cM_rndF(FLOAT_LABEL(lit_3962)); - - if (_param_0->field_0xdb0 != 0) { - _param_0->field_0xd5c *= FLOAT_LABEL(lit_3958); - _param_0->field_0xd60 *= FLOAT_LABEL(lit_3958); + if (objCarry->field_0xdb0 != 0) { + objCarry->field_0xd5c *= 0.5f; + objCarry->field_0xd60 *= 0.5f; } } } @@ -2156,196 +815,140 @@ static void CoHitCallBackBokkuri(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, } /* 8046F4AC-8046F52C 00052C 0080+00 1/1 0/0 0/0 .text s_swA_sub__FPvPv */ -static void* s_swA_sub(void* param_0, void* param_1) { - daObjSwBallA_c* ball = static_cast(param_0); - daObjCarry_c* carry = static_cast(param_1); +static void* s_swA_sub(void* i_actor, void* i_data) { + daObjSwBallA_c* swball = (daObjSwBallA_c*)i_actor; + daObjCarry_c* objCarry = (daObjCarry_c*)i_data; - if (fopAcM_IsActor(ball) && - fopAcM_GetName(ball) == PROC_Obj_SwBallA && - ball && carry) { - if (ball->getSwbit() == carry->getSwbit2()) { - return param_0; - } + if (fopAcM_IsActor(swball) && fopAcM_GetName(swball) == PROC_Obj_SwBallA && swball != NULL && + objCarry != NULL) + { + if (swball->getSwbit() == objCarry->getSwbit2()) { + return i_actor; } - return 0; + } + + return NULL; } -/* ############################################################################################## */ /* 8047B1D8-8047B1DC 000000 0004+00 3/3 0/0 0/0 .bss l_sw_id */ -static s32 l_sw_id; +static int l_sw_id; /* 8046F52C-8046F59C 0005AC 0070+00 2/2 0/0 0/0 .text s_sw_sub__FPvPv */ -static void* s_sw_sub(void* param_0, void* param_1) { - daObjSwBallB_c* ball = static_cast(param_0); +static void* s_sw_sub(void* i_actor, void* i_data) { + daObjSwBallB_c* swball = (daObjSwBallB_c*)i_actor; - if (fopAcM_IsActor(ball) && - fopAcM_GetName(ball) == PROC_Obj_SwBallB && - ball && ball->getID() == l_sw_id) { - return param_0; - } - return 0; + if (fopAcM_IsActor(swball) && fopAcM_GetName(swball) == PROC_Obj_SwBallB && swball != NULL && + swball->getID() == l_sw_id) + { + return i_actor; + } + + return NULL; } /* 8046F59C-8046F610 00061C 0074+00 1/1 0/0 0/0 .text s_setA_sub__FPvPv */ -static void* s_setA_sub(void* param_0, void* param_1) { - daTagSetBall_c* ball = static_cast(param_0); +static void* s_setA_sub(void* i_actor, void* i_data) { + daTagSetBall_c* tagball = (daTagSetBall_c*)i_actor; - if (fopAcM_IsActor(ball) && - fopAcM_GetName(ball) == PROC_Tag_SetBall && - ball && param_1 && ball->getType() == 0xF) { - return param_0; - } - return 0; + if (fopAcM_IsActor(tagball) && fopAcM_GetName(tagball) == PROC_Tag_SetBall && tagball && + i_data != NULL && tagball->getType() == 0xF) + { + return i_actor; + } + + return NULL; } /* 8046F610-8046F684 000690 0074+00 1/1 0/0 0/0 .text s_setB_sub__FPvPv */ -static void* s_setB_sub(void* param_0, void* param_1) { - daTagSetBall_c* ball = static_cast(param_0); +static void* s_setB_sub(void* i_actor, void* i_data) { + daTagSetBall_c* tagball = (daTagSetBall_c*)i_actor; - if (fopAcM_IsActor(ball) && - fopAcM_GetName(ball) == PROC_Tag_SetBall && - ball && param_1 && ball->getType() == 0) { - return param_0; - } - return 0; + if (fopAcM_IsActor(tagball) && fopAcM_GetName(tagball) == PROC_Tag_SetBall && tagball && + i_data != NULL && tagball->getType() == 0) + { + return i_actor; + } + + return NULL; } /* 8046F684-8046F6A4 000704 0020+00 1/1 0/0 0/0 .text CheckCreateHeap__FP10fopAc_ac_c */ -static void CheckCreateHeap(fopAc_ac_c* i_this) { - static_cast(i_this)->CreateHeap(); +static int CheckCreateHeap(fopAc_ac_c* i_this) { + return ((daObjCarry_c*)i_this)->CreateHeap(); } /* 8046F6A4-8046F6BC 000724 0018+00 40/40 0/0 0/0 .text data__12daObjCarry_cFv */ -#ifdef NONMATCHING -u8 daObjCarry_c::data() { - return mData[mType]; // mData needs to be setup properly first +const daObjCarry_dt_t& daObjCarry_c::data() { + return mData[mType]; } -#else -u8 daObjCarry_c::data() { - // NONMATCHING -} -#endif /* 8046F6BC-8046F6D4 00073C 0018+00 3/3 0/0 0/0 .text getArcName__12daObjCarry_cFv */ char* daObjCarry_c::getArcName() { - return (char*)l_arcName[mType]; // l_arcName needs to be setup properly at some point + return l_arcName[mType]; } /* 8046F6D4-8046F6EC 000754 0018+00 1/1 0/0 0/0 .text getBmdName__12daObjCarry_cFv */ -int daObjCarry_c::getBmdName() { - return (int)l_bmdName[mType]; // l_bmdName needs to be setup properly at some point +char* daObjCarry_c::getBmdName() { + return l_bmdName[mType]; } /* 8046F6EC-8046F724 00076C 0038+00 2/2 0/0 0/0 .text checkFlag__12daObjCarry_cFUc */ -#ifdef NONMATCHING -// need to finish data() first -u8 daObjCarry_c::checkFlag(u8 param_0) { - return cLib_checkBit(data(), param_0); +BOOL daObjCarry_c::checkFlag(u8 i_flag) { + return cLib_checkBit(data().m_flags, i_flag); } -#else -void daObjCarry_c::checkFlag(u8 param_0) { - // NONMATCHING -} -#endif /* 8046F724-8046F7AC 0007A4 0088+00 1/1 0/0 0/0 .text initBaseMtx__12daObjCarry_cFv */ void daObjCarry_c::initBaseMtx() { - field_0xcf4 = cXyz::Zero; - field_0xd00 = 0; + mRotAxis = cXyz::Zero; + mRotation = 0; field_0xd3c = ZeroQuat; field_0xd4c = field_0xd3c; setBaseMtx(); } -/* ############################################################################################## */ -/* 8047A398-8047A39C 000A8C 0004+00 0/1 0/0 0/0 .rodata @4166 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_4166 = 0x38C90FDB; -COMPILER_STRIP_GATE(0x8047A398, &lit_4166); -#pragma pop - -/* 8047A39C-8047A3A0 000A90 0004+00 0/1 0/0 0/0 .rodata @4167 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4167 = 35.0f; -COMPILER_STRIP_GATE(0x8047A39C, &lit_4167); -#pragma pop - -/* 8047A3A0-8047A3A4 000A94 0004+00 0/1 0/0 0/0 .rodata @4168 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4168 = -25.0f; -COMPILER_STRIP_GATE(0x8047A3A0, &lit_4168); -#pragma pop - -/* 8047A3A4-8047A3AC 000A98 0004+04 0/1 0/0 0/0 .rodata @4169 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4169[1 + 1 /* padding */] = { - 16384.0f, - /* padding */ - 0.0f, -}; -COMPILER_STRIP_GATE(0x8047A3A4, &lit_4169); -#pragma pop - -/* 8047A3AC-8047A3B4 000AA0 0008+00 2/8 0/0 0/0 .rodata @4171 */ -SECTION_RODATA static u8 const lit_4171[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x8047A3AC, &lit_4171); - /* 8046F7AC-8046FACC 00082C 0320+00 3/4 0/0 0/0 .text setBaseMtx__12daObjCarry_cFv */ -#ifdef NONMATCHING -// literals + data setup void daObjCarry_c::setBaseMtx() { - Mtx mStack_0x58; - - if (field_0xcf4.isZero()) { - mDoMtx_identity(mStack_0x58); + Mtx rot_mtx; + + if (mRotAxis.isZero()) { + mDoMtx_identity(rot_mtx); } else { - C_MTXRotAxisRad(mStack_0x58,&field_0xcf4,cM_s2rad(field_0xd00)); + MTXRotAxisRad(rot_mtx, &mRotAxis, cM_s2rad(mRotation)); } if (mType == TYPE_BOKKURI) { - mDoMtx_stack_c::transS(current.pos.x,current.pos.y + (f32)data(),current.pos.z); - mDoMtx_stack_c::transM(0.0f,scale.x*(f32)data(),0.0f); - mDoMtx_stack_c::concat(mStack_0x58); - mDoMtx_stack_c::transM(0.0f,-scale.x*(f32)data(),0.0f); - mDoMtx_stack_c::ZXYrotM(shape_angle.x+field_0xd64,shape_angle.y+field_0xd6a,shape_angle.z+field_0xd66); - mDoMtx_stack_c::transM(0.0f,scale.x * 35.0f * field_0xd84,field_0xd84 * -25.0f); - mDoMtx_stack_c::XrotM(field_0xd84*16384.0f); - + mDoMtx_stack_c::transS(current.pos.x, current.pos.y + data().field_0x28, current.pos.z); + mDoMtx_stack_c::transM(0.0f, scale.x * data().field_0x2c, 0.0f); + mDoMtx_stack_c::concat(rot_mtx); + mDoMtx_stack_c::transM(0.0f, scale.x * -data().field_0x2c, 0.0f); + mDoMtx_stack_c::ZXYrotM(shape_angle.x + field_0xd64, shape_angle.y + field_0xd6a, shape_angle.z + field_0xd66); + mDoMtx_stack_c::transM(0.0f, scale.x * 35.0f * field_0xd84, field_0xd84 * -25.0f); + mDoMtx_stack_c::XrotM(field_0xd84 * 16384.0f); } else if (mType == TYPE_KIBAKO || mType == TYPE_TARU || mType == TYPE_DOKURO) { - mDoMtx_stack_c::transS(current.pos.x,current.pos.y + (f32)data(),current.pos.z); - mDoMtx_stack_c::transM(0.0f,(f32)data(),0.0f); - mDoMtx_stack_c::concat(mStack_0x58); - mDoMtx_stack_c::transM(0.0f,-(f32)data(),0.0f); + mDoMtx_stack_c::transS(current.pos.x, current.pos.y + data().field_0x28, current.pos.z); + mDoMtx_stack_c::transM(0.0f, data().field_0x2c, 0.0f); + mDoMtx_stack_c::concat(rot_mtx); + mDoMtx_stack_c::transM(0.0f, -data().field_0x2c, 0.0f); mDoMtx_stack_c::ZXYrotM(shape_angle); } else { - mDoMtx_quatMultiply(&field_0xd4c,&field_0xd3c,&field_0xd4c); - mDoMtx_stack_c::transS(current.pos.x,(f32)data() + current.pos.y + field_0xddc,current.pos.z); - mDoMtx_stack_c::transM(0.0f,(f32)data(),0.0f); + mDoMtx_quatMultiply(&field_0xd4c, &field_0xd3c, &field_0xd4c); + mDoMtx_stack_c::transS(current.pos.x, data().field_0x28 + current.pos.y + field_0xddc, current.pos.z); + mDoMtx_stack_c::transM(0.0f, data().field_0x2c, 0.0f); mDoMtx_stack_c::quatM(&field_0xd4c); - mDoMtx_stack_c::transM(0.0,(f32)data(),0.0); + mDoMtx_stack_c::transM(0.0, -data().field_0x2c, 0.0); mDoMtx_stack_c::ZXYrotM(shape_angle); field_0xd3c = field_0xd4c; } - + mpModel->setBaseTRMtx(mDoMtx_stack_c::get()); mpModel->setBaseScale(scale); } -#else -void daObjCarry_c::setBaseMtx() { - // NONMATCHING -} -#endif /* 8046FACC-8046FB78 000B4C 00AC+00 1/1 0/0 0/0 .text preInit__12daObjCarry_cFv */ -s32 daObjCarry_c::preInit() { +int daObjCarry_c::preInit() { fopAcM_SetupActor(this, daObjCarry_c); - if (field_0xd15 == 0) { + + if (!mInitParams) { mItemNo = home.angle.x; field_0xd18 = home.angle.z; home.angle.z = 0; @@ -2355,188 +958,221 @@ s32 daObjCarry_c::preInit() { shape_angle.z = 0; shape_angle.x = 0; mOnMoveBG = checkOnMoveBg(); - field_0xd15 = 1; + mInitParams = true; } + mType = getType_private(); return 1; } /* 8046FB78-8046FD90 000BF8 0218+00 1/1 0/0 0/0 .text __ct__12daObjCarry_cFv */ -#ifdef NONMATCHING -// matches, but can't uncomment until explicitly defined vtables are removed daObjCarry_c::daObjCarry_c() {} -#else -daObjCarry_c::daObjCarry_c() { - // NONMATCHING -} -#endif - -/* 8046FD90-8046FDD8 000E10 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGSphFv */ -extern "C" void __dt__8cM3dGSphFv() { - // asm cM3dGSph::~cM3dGSph() { - // NONMATCHING -} - -/* 8046FDD8-8046FE20 000E58 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */ -extern "C" void __dt__8cM3dGCylFv() { - // asm cM3dGCyl::~cM3dGCyl() { - // NONMATCHING -} - -/* 8046FE20-8046FE68 000EA0 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */ -extern "C" void __dt__8cM3dGAabFv() { - // asm cM3dGAab::~cM3dGAab() { - // NONMATCHING -} - -/* 8046FE68-8046FEC4 000EE8 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */ -// dCcD_GStts::~dCcD_GStts() { -extern "C" void __dt__10dCcD_GSttsFv() { - // NONMATCHING -} - -/* 8046FEC4-8046FF34 000F44 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */ -extern "C" void __dt__12dBgS_AcchCirFv() { - // asm dBgS_AcchCir::~dBgS_AcchCir() { - // NONMATCHING -} - -/* 8046FF34-8046FFA4 000FB4 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -extern "C" void __dt__12dBgS_ObjAcchFv() { - // asm dBgS_ObjAcch::~dBgS_ObjAcch() { - // NONMATCHING -} /* 8046FFA4-8046FFF8 001024 0054+00 1/1 0/0 0/0 .text checkBreakWolfAttack__12daObjCarry_cFv */ -s32 daObjCarry_c::checkBreakWolfAttack() { - if (mType == TYPE_TSUBO || - mType == TYPE_TSUBO_2 || +BOOL daObjCarry_c::checkBreakWolfAttack() { + if (mType == TYPE_TSUBO || + mType == TYPE_TSUBO_2 || mType == TYPE_OOTSUBO || - mType == TYPE_KIBAKO || - mType == TYPE_DOKURO || + mType == TYPE_KIBAKO || + mType == TYPE_DOKURO || mType == TYPE_AOTSUBO || mType == TYPE_TSUBO_S || - mType == TYPE_TSUBO_B) { - return 1; - } + mType == TYPE_TSUBO_B) + { + return TRUE; + } - return 0; + return FALSE; } /* 8046FFF8-80470054 001078 005C+00 1/1 0/0 0/0 .text checkCarryBoomerang__12daObjCarry_cFv */ -s32 daObjCarry_c::checkCarryBoomerang() { - if (mType == TYPE_TSUBO || - mType == TYPE_TSUBO_2 || +BOOL daObjCarry_c::checkCarryBoomerang() { + if (mType == TYPE_TSUBO || + mType == TYPE_TSUBO_2 || mType == TYPE_OOTSUBO || - mType == TYPE_KIBAKO || - mType == TYPE_DOKURO || + mType == TYPE_KIBAKO || + mType == TYPE_DOKURO || mType == TYPE_BOKKURI || mType == TYPE_AOTSUBO || mType == TYPE_TSUBO_S || - mType == TYPE_TSUBO_B) { - return 1; - } + mType == TYPE_TSUBO_B) + { + return TRUE; + } - return 0; + return FALSE; } /* 80470054-80470080 0010D4 002C+00 1/1 0/0 0/0 .text checkCarryHookshot__12daObjCarry_cFv */ -s32 daObjCarry_c::checkCarryHookshot() { - if (mType == TYPE_BALL_S|| - mType == TYPE_BALL_S_2 || - mType == TYPE_LV8_BALL) { - return 1; - } +BOOL daObjCarry_c::checkCarryHookshot() { + if (mType == TYPE_BALL_S || + mType == TYPE_BALL_S_2 || + mType == TYPE_LV8_BALL) + { + return TRUE; + } - return 0; + return FALSE; } /* 80470080-804700B4 001100 0034+00 1/1 0/0 0/0 .text checkCarryWolf__12daObjCarry_cFv */ -s32 daObjCarry_c::checkCarryWolf() { - if (mType == TYPE_TSUBO || - mType == TYPE_DOKURO || - mType == TYPE_TSUBO_2 || - mType == TYPE_TSUBO_S) { - return 1; - } +BOOL daObjCarry_c::checkCarryWolf() { + if (mType == TYPE_TSUBO || + mType == TYPE_DOKURO || + mType == TYPE_TSUBO_2 || + mType == TYPE_TSUBO_S) + { + return TRUE; + } - return 0; + return FALSE; } /* 804700B4-804700F0 001134 003C+00 1/1 0/0 0/0 .text checkCarryOneHand__12daObjCarry_cFv */ -s32 daObjCarry_c::checkCarryOneHand() { - if (mType == TYPE_TSUBO || - mType == TYPE_DOKURO || +BOOL daObjCarry_c::checkCarryOneHand() { + if (mType == TYPE_TSUBO || + mType == TYPE_DOKURO || mType == TYPE_TSUBO_2 || - mType == TYPE_BOKKURI || - mType == TYPE_TSUBO_S) { - return 1; - } + mType == TYPE_BOKKURI || + mType == TYPE_TSUBO_S) + { + return TRUE; + } - return 0; + return FALSE; } -/* ############################################################################################## */ -/* 8047A3B4-8047A3B8 000AA8 0004+00 0/1 0/0 0/0 .rodata @4594 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4594 = 80.0f; -COMPILER_STRIP_GATE(0x8047A3B4, &lit_4594); -#pragma pop - -/* 8047A3B8-8047A3BC 000AAC 0004+00 1/6 0/0 0/0 .rodata @4595 */ -SECTION_RODATA static f32 const lit_4595 = 100.0f; -COMPILER_STRIP_GATE(0x8047A3B8, &lit_4595); - -/* 8047A3BC-8047A3C0 000AB0 0004+00 0/4 0/0 0/0 .rodata @4596 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4596 = 10.0f; -COMPILER_STRIP_GATE(0x8047A3BC, &lit_4596); -#pragma pop - -/* 8047A3C0-8047A3C4 000AB4 0004+00 0/3 0/0 0/0 .rodata @4597 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4597 = 30.0f; -COMPILER_STRIP_GATE(0x8047A3C0, &lit_4597); -#pragma pop - /* 804700F0-804705DC 001170 04EC+00 1/1 0/0 0/0 .text Create__12daObjCarry_cFv */ -#ifdef NONMATCHING -// need to map data() first -void daObjCarry_c::Create() { - scale.set((f32)data(), (f32)data(), (f32)data()); // need to map data - fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); - mAcchCir.SetWall((f32)data(), (f32)data()); // need to map data +int daObjCarry_c::Create() { + scale.set(data().scale, data().scale, data().scale); + fopAcM_SetMtx(this, mpModel->getBaseTRMtx()); + + mAcchCir.SetWall(data().m_height, data().m_radius); mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, fopAcM_GetSpeed_p(this), ¤t.angle, &shape_angle); mAcch.SetWtrChkMode(2); mAcch.ClrRoofNone(); mAcch.SetRoofCrrHeight(80.0f); - mStts.Init(data(),0xFF,this); // need to map data - field_0x7c8.Set(l_cyl_src); + mStts.Init(data().m_colliderWeight, 0xFF, this); + mCyl.Set(l_cyl_src); + mCyl.SetStts(&mStts); + mCyl.cM3dGCyl::Set(l_cyl_info[mType]); + mCyl.SetAtAtp(data().m_cyl_atp); + setTgHitCallBack(); + setCoHitCallBack(); + if (mType != TYPE_BOKKURI) { + if (mType == TYPE_BALL_S) { + mLightAtSph.Set(l_light_at_sph_src); + mLightAtSph.SetStts(&mStts); + } else if (mType == TYPE_BALL_S_2) { + mLightAtSph.Set(l_light_at_sph_src); + mLightAtSph.SetStts(&mStts); + } else if (prm_chk_type_ironball()) { + mAtCps.Set(l_atCpsSrc); + mAtCps.SetStts(&mStts); + } else if (mType == TYPE_TSUBO || mType == TYPE_OOTSUBO || mType == TYPE_TSUBO_2 || mType == TYPE_AOTSUBO) { + mTgCyl.Set(l_tg_cyl); + mTgCyl.SetStts(&mStts); + } + } + + fopAcM_SetCullSize(this, fopAc_CULLSPHERE_8_e); + fopAcM_setCullSizeSphere(this, data().m_cullsph_min_x, data().m_cullsph_min_y, data().m_cullsph_min_z, mpModel->getModelData()->getJointNodePointer(0)->getRadius() * data().scale); + + cLib_onBit(attention_info.flags, 0x10); + attention_info.distances[fopAc_attn_CARRY_e] = data().m_carry_attn_dist; + + if (checkFlag(4)) { + fopAcM_OnCarryType(this, fopAcM_CARRY_TYPE_1); + } else if (checkFlag(8)) { + fopAcM_OnCarryType(this, fopAcM_CARRY_HEAVY); + } + + field_0xcec = current.pos.y; + fopAcM_SetGravity(this, data().m_gravity); + field_0xd70 = cM_rndF(100.0f); + field_0xd04 = field_0xd70; + + if (checkBreakWolfAttack()) { + mCyl.SetTgType(mCyl.GetTgType() | 0x20000000); + } + + u32 tg_type = mCyl.GetTgType(); + if (!checkCarryBoomerang()) { + mCyl.SetTgType(tg_type & ~0x10000); + } + + if (checkCarryHookshot()) { + fopAcM_OnStatus(this, 0x80000); + mCyl.SetTgType(mCyl.GetTgType() | 0x4000); + } + + if (checkCarryWolf()) { + fopAcM_OnCarryType(this, fopAcM_CARRY_LIGHT); + } + + if (checkCarryOneHand()) { + fopAcM_OnCarryType(this, fopAcM_CARRY_SIDE); + } + + if (mType == TYPE_TSUBO || mType == TYPE_OOTSUBO || mType == TYPE_TSUBO_2 || mType == TYPE_AOTSUBO) { + mCyl.SetTgType(mCyl.GetTgType() | 0x2000000); + } + + if (mType != TYPE_TSUBO && mType != TYPE_TSUBO_2 && mType != TYPE_TSUBO_S && mType != TYPE_OOTSUBO && mType != TYPE_AOTSUBO && mType != TYPE_TSUBO_B) { + mCyl.OnTgNoSlingHitInfSet(); + } + + if (!CreateInitCall()) { + return 0; + } + + field_0xdaf = 1; + + if (mMode == MODE_DB_DROP) { + field_0xcf3 = 0; + field_0xdb1 = 0; + } else { + field_0xcf3 = 10; + field_0xdb1 = 1; + } + + cXyz gnd_chk_pos(current.pos); + gnd_chk_pos.y += 10.0f; + + if (fopAcM_gc_c::gndCheck(&gnd_chk_pos)) { + if (std::fabs(fopAcM_gc_c::getGroundY() - current.pos.y) < 30.0f) { + home.pos.y = fopAcM_gc_c::getGroundY(); + current.pos.y = home.pos.y; + old.pos.y = home.pos.y; + } else { + // "Lift OBJ: not grounded on BG. \n" + OS_REPORT("\x1B[43;30m持ち上げOBJ:BGに接地して配置されていません。\n"); + OS_REPORT("type<%d>pos<%.2f,%.2f,%.2f>\n", mType, home.pos.x, home.pos.y, home.pos.z); + // "BG Height: %.2f\n" + OS_REPORT("BG高さ:%.2f\n\x1b[m", fopAcM_gc_c::getGroundY()); + } + } + + mAcch.CrrPos(dComIfG_Bgsp()); + initBaseMtx(); + return 1; } -#else -void daObjCarry_c::Create() { - // NONMATCHING -} -#endif /* 804705DC-80470650 00165C 0074+00 3/0 0/0 0/0 .text CreateInit_tsubo__12daObjCarry_cFv */ -s32 daObjCarry_c::CreateInit_tsubo() { +int daObjCarry_c::CreateInit_tsubo() { if (!checkCrashRoll()) { - mCrashRoll = 1; + mCanCrashRoll = true; } mode_init_wait(); - if (!strcmp(dComIfGp_getStartStageName(), "D_MN05A")) { + if (strcmp(dComIfGp_getStartStageName(), "D_MN05A") == 0) { field_0xe25 = 1; } @@ -2545,15 +1181,15 @@ s32 daObjCarry_c::CreateInit_tsubo() { /* 80470650-80470674 0016D0 0024+00 3/0 0/0 0/0 .text CreateInit_ootubo__12daObjCarry_cFv */ -s32 daObjCarry_c::CreateInit_ootubo() { +int daObjCarry_c::CreateInit_ootubo() { mode_init_wait(); return 1; } /* 80470674-804706D4 0016F4 0060+00 1/0 0/0 0/0 .text CreateInit_kibako__12daObjCarry_cFv */ -s32 daObjCarry_c::CreateInit_kibako() { - if (!field_0xe10.init(this,&kibako_jc_data,mpModel,1)) { +int daObjCarry_c::CreateInit_kibako() { + if (!mJntCol.init(this, &kibako_jc_data, mpModel, 1)) { return 0; } @@ -2562,7 +1198,7 @@ s32 daObjCarry_c::CreateInit_kibako() { } /* 804706D4-804707E0 001754 010C+00 1/0 0/0 0/0 .text CreateInit_ironball__12daObjCarry_cFv */ -s32 daObjCarry_c::CreateInit_ironball() { +int daObjCarry_c::CreateInit_ironball() { if (chkSaveFlag()) { u8 l_saveID = getSaveID(); @@ -2571,27 +1207,28 @@ s32 daObjCarry_c::CreateInit_ironball() { attention_info.position = current.pos; eyePos = current.pos; - fopAcM_SetRoomNo(this,getRoomNo(l_saveID)); + fopAcM_SetRoomNo(this, getRoomNo(l_saveID)); tevStr.room_no = fopAcM_GetRoomNo(this); - if (chkSttsFlag(l_saveID,1)) { - mDraw = 1; + if (chkSttsFlag(l_saveID, 1)) { + mDraw = true; } } mAcch.SetLink(); mAcch.ClrObj(); - mode_init_wait(); - field_0x7c8.SetAtType(field_0x7c8.GetAtType() | AT_TYPE_IRON_BALL); - field_0x7c8.SetAtSe(6); + mode_init_wait(); + + mCyl.SetAtType(mCyl.GetAtType() | AT_TYPE_IRON_BALL); + mCyl.SetAtSe(6); return 1; } /* 804707E0-80470840 001860 0060+00 1/0 0/0 0/0 .text CreateInit_taru__12daObjCarry_cFv */ -s32 daObjCarry_c::CreateInit_taru() { - if (!field_0xe10.init(this,&taru_jc_data,mpModel,1)) { +int daObjCarry_c::CreateInit_taru() { + if (!mJntCol.init(this, &taru_jc_data, mpModel, 1)) { return 0; } @@ -2601,59 +1238,41 @@ s32 daObjCarry_c::CreateInit_taru() { /* 80470840-80470890 0018C0 0050+00 1/0 0/0 0/0 .text CreateInit_dokuro__12daObjCarry_cFv */ -bool daObjCarry_c::CreateInit_dokuro() { +int daObjCarry_c::CreateInit_dokuro() { mode_init_wait(); - return !fopAcM_isSwitch(this,getSwbit()); + return fopAcM_isSwitch(this, getSwbit()) == FALSE ? TRUE : FALSE; } -/* ############################################################################################## */ -/* 8047A3C4-8047A3C8 000AB8 0004+00 0/1 0/0 0/0 .rodata @4683 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4683 = 15.0f; -COMPILER_STRIP_GATE(0x8047A3C4, &lit_4683); -#pragma pop - -/* 8047A3C8-8047A3CC 000ABC 0004+00 0/2 0/0 0/0 .rodata @4684 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4684 = 20.0f; -COMPILER_STRIP_GATE(0x8047A3C8, &lit_4684); -#pragma pop - -/* 8047A3CC-8047A3D0 000AC0 0004+00 13/24 0/0 0/0 .rodata @4685 */ -SECTION_RODATA static f32 const lit_4685 = 1.0f; -COMPILER_STRIP_GATE(0x8047A3CC, &lit_4685); - /* 80470890-804709DC 001910 014C+00 1/0 0/0 0/0 .text CreateInit_bokkuri__12daObjCarry_cFv */ -#ifndef NONMATCHING -s32 daObjCarry_c::CreateInit_bokkuri() { - field_0x7c8.SetTgHitMark((CcG_Tg_HitMark)0); - field_0x7c8.OnTgNoHitMark(); +int daObjCarry_c::CreateInit_bokkuri() { + mCyl.SetTgHitMark(CcG_Tg_UNK_MARK_0); + mCyl.OnTgNoHitMark(); + field_0xd76 = 0; field_0xd79 = 3; field_0xd7a = 100; - field_0xd88.init(¤t.pos,1); - switch(getSetType()) { + mSound.init(¤t.pos, 1); + + switch (getSetType()) { case 0: mode_init_wait(); break; case 1: field_0xd76 = 255; - speedF = FLOAT_LABEL(lit_4683); - speed.y = FLOAT_LABEL(lit_4684); - scale.set(FLOAT_LABEL(lit_4685),FLOAT_LABEL(lit_4685),FLOAT_LABEL(lit_4685)); + speedF = 15.0f; + speed.y = 20.0f; + scale.set(1.0f, 1.0f, 1.0f); mode_init_dbDrop(1); break; case 2: - fopAcM_OnCarryType(this,fopAcM_CARRY_TYPE_1); + fopAcM_OnCarryType(this, fopAcM_CARRY_TYPE_1); field_0xdb0 = 1; field_0xd7a = 0; mode_init_wait(); break; case 3: - fopAcM_OnCarryType(this,fopAcM_CARRY_TYPE_1); + fopAcM_OnCarryType(this, fopAcM_CARRY_TYPE_1); field_0xd76 = 255; field_0xd7a = 0; mode_init_growth(); @@ -2664,54 +1283,42 @@ s32 daObjCarry_c::CreateInit_bokkuri() { return 1; } -#else -s32 daObjCarry_c::CreateInit_bokkuri() { - // NONMATCHING -} -#endif - -/* ############################################################################################## */ -/* 8047A3D0-8047A3D4 000AC4 0004+00 1/1 0/0 0/0 .rodata @4707 */ -SECTION_RODATA static f32 const lit_4707 = 750.0f; -COMPILER_STRIP_GATE(0x8047A3D0, &lit_4707); /* 804709DC-80470AB4 001A5C 00D8+00 2/0 0/0 0/0 .text CreateInit_LightBall__12daObjCarry_cFv */ -#ifndef NONMATCHING -s32 daObjCarry_c::CreateInit_LightBall() { - field_0xd88.init(¤t.pos,1); +int daObjCarry_c::CreateInit_LightBall() { + mSound.init(¤t.pos, 1); if (dComIfGp_roomControl_getStayNo()) { - fopAcM_OnStatus(this,0x2000000); + fopAcM_OnStatus(this, 0x2000000); } - field_0xdf8.mPos = current.pos; - field_0xdf8.field_0xc = FLOAT_LABEL(lit_4707); - dKy_dalkmist_inf_set(&field_0xdf8); + mDalkmistInf.mPos = current.pos; + mDalkmistInf.field_0xc = 750.0f; + + dKy_dalkmist_inf_set(&mDalkmistInf); field_0xe0c = 1; - fopAcM_OnStatus(this,0x20000); - field_0x7c8.SetTgSe(9); - field_0x7c8.SetTgHitMark((CcG_Tg_HitMark)2); - field_0x7c8.OffTgNoHitMark(); - field_0x7c8.OnTgShieldHit(); - field_0x7c8.SetAtSe(1); + fopAcM_OnStatus(this, 0x20000); + + mCyl.SetTgSe(9); + mCyl.SetTgHitMark(CcG_Tg_UNK_MARK_2); + mCyl.OffTgNoHitMark(); + mCyl.OnTgShieldHit(); + mCyl.SetAtSe(1); + mode_init_wait(); return 1; } -#else -s32 daObjCarry_c::CreateInit_LightBall() { - // NONMATCHING -} -#endif /* 80470AB4-80470B5C 001B34 00A8+00 1/0 0/0 0/0 .text CreateInit_Lv8Ball__12daObjCarry_cFv */ -s32 daObjCarry_c::CreateInit_Lv8Ball() { - field_0xd88.init(¤t.pos,1); - field_0x7c8.SetTgSe(9); - field_0x7c8.SetTgHitMark((CcG_Tg_HitMark)2); - field_0x7c8.OffTgNoHitMark(); - field_0x7c8.OnTgShieldHit(); +int daObjCarry_c::CreateInit_Lv8Ball() { + mSound.init(¤t.pos, 1); - if (fopAcM_isSwitch(this,getSwbit())) { + mCyl.SetTgSe(9); + mCyl.SetTgHitMark(CcG_Tg_UNK_MARK_2); + mCyl.OffTgNoHitMark(); + mCyl.OnTgShieldHit(); + + if (fopAcM_isSwitch(this, getSwbit())) { mode_init_fit(); } else { mode_init_wait(); @@ -2721,19 +1328,12 @@ s32 daObjCarry_c::CreateInit_Lv8Ball() { } /* 80470B5C-80470BF4 001BDC 0098+00 1/1 0/0 0/0 .text CreateHeap__12daObjCarry_cFv */ -// NONMATCHING - 1 instruction in wrong place -s32 daObjCarry_c::CreateHeap() { - s32 l_modelFlag; - J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(getArcName(),getBmdName()); - - l_modelFlag = 0x80000; - - if (prm_chk_type_ironball()) { - l_modelFlag = 0; - } - - mpModel = mDoExt_J3DModel__create(modelData,l_modelFlag,0x11000084); +int daObjCarry_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(getArcName(), getBmdName()); + JUT_ASSERT(2813, modelData != 0); + u32 mdl_flags = prm_chk_type_ironball() ? J3DMdlFlag_None : J3DMdlFlag_Unk80000; + mpModel = mDoExt_J3DModel__create(modelData, mdl_flags, 0x11000084); if (mpModel == 0) { return 0; } @@ -2742,656 +1342,2123 @@ s32 daObjCarry_c::CreateHeap() { } /* 80470BF4-80470CF0 001C74 00FC+00 1/1 0/0 0/0 .text create__12daObjCarry_cFv */ -// NONMATCHING -cPhs__Step daObjCarry_c::create() { - cPhs__Step step; +int daObjCarry_c::create() { preInit(); - switch(mType) { - case TYPE_BALL_S: - step = (cPhs__Step)checkCreate_LightBallA(); - case TYPE_BALL_S_2: - step = (cPhs__Step)checkCreate_LightBallB(); - case TYPE_LV8_BALL: - step = (cPhs__Step)checkCreate_Lv8Ball(); +#ifdef DEBUG + if (prm_chk_type_lightball() && strcmp(dComIfGp_getStartStageName(), "T_ENE02") == 0) { + goto next; + } +#endif + + int create_phase = cPhs_NEXT_e; + + switch (mType) { + case TYPE_BALL_S: + create_phase = (cPhs__Step)checkCreate_LightBallA(); + break; + case TYPE_BALL_S_2: + create_phase = (cPhs__Step)checkCreate_LightBallB(); + break; + case TYPE_LV8_BALL: + create_phase = (cPhs__Step)checkCreate_Lv8Ball(); + break; } - if (step == cPhs_NEXT_e) { - return step; + if (create_phase != cPhs_NEXT_e) { + return create_phase; } - return step; +next: + int phase_state = dComIfG_resLoad(&mPhaseReq, getArcName()); + if (phase_state == cPhs_COMPLEATE_e) { + if (!fopAcM_entrySolidHeap(this, CheckCreateHeap, data().m_heapSize)) { + return cPhs_ERROR_e; + } + + if (!Create()) { + return cPhs_ERROR_e; + } + } + + return phase_state; } -/* ############################################################################################## */ -/* 8047A3D4-8047A3E0 000AC8 000C+00 1/1 0/0 0/0 .rodata l_event_bitA$4815 */ -SECTION_RODATA static u8 const l_event_bitA[12] = { - 0x43, 0x04, 0x43, 0x02, 0x43, 0x01, 0x44, 0x80, 0x44, 0x40, 0x44, 0x20, -}; -COMPILER_STRIP_GATE(0x8047A3D4, &l_event_bitA); - /* 80470CF0-8047114C 001D70 045C+00 1/1 0/0 0/0 .text checkCreate_LightBallA__12daObjCarry_cFv */ -s32 daObjCarry_c::checkCreate_LightBallA() { - // NONMATCHING +int daObjCarry_c::checkCreate_LightBallA() { + fopAc_ac_c* var_r29 = NULL; + + if (daPy_py_c::checkCarryStartLightBallA()) { + dComIfGs_offEventBit(dSv_event_flag_c::F_0311); + dComIfGs_offEventBit(dSv_event_flag_c::F_0313); + dComIfGs_offEventBit(dSv_event_flag_c::F_0315); + dComIfGs_offEventBit(dSv_event_flag_c::F_0317); + dComIfGs_offEventBit(dSv_event_flag_c::F_0319); + + if (dComIfGp_roomControl_getStayNo() == 51) { + dComIfGs_onEventBit(dSv_event_flag_c::F_0315); + } else if (dComIfGp_roomControl_getStayNo() == 52) { + dComIfGs_onEventBit(dSv_event_flag_c::F_0319); + } else if (dComIfGp_roomControl_getStayNo() == 0) { + dComIfGs_onEventBit(dSv_event_flag_c::F_0311); + } else if (dComIfGp_roomControl_getStayNo() == 1 || dComIfGp_roomControl_getStayNo() == 2) { + dComIfGs_onEventBit(dSv_event_flag_c::F_0313); + } else { + dComIfGs_onEventBit(dSv_event_flag_c::F_0317); + } + + fopAcM_setCarryNow(this, 1); + + if (dComIfGp_roomControl_getStayNo() == 0) { + var_r29 = (fopAc_ac_c*)fpcM_Search(s_setA_sub, this); + if (var_r29 == NULL) { + return cPhs_INIT_e; + } + } + } else if (!dComIfGs_isEventBit(dSv_event_flag_c::F_0311) && + !dComIfGs_isEventBit(dSv_event_flag_c::F_0313) && + !dComIfGs_isEventBit(dSv_event_flag_c::F_0315) && + !dComIfGs_isEventBit(dSv_event_flag_c::F_0317) && + !dComIfGs_isEventBit(dSv_event_flag_c::F_0319)) + { + if (dComIfGp_roomControl_getStayNo() != 51) { + if (!dComIfGs_isEventBit(dSv_event_flag_c::F_0311)) { + resetIconPosForLightBallA(); + } + + // "Light Ball A: delete since ball and Link aren't in same place<0>\n" + OS_REPORT("\x1B[33m光球A:玉とリンクの位置が違うので消します<0>\n\x1B[m"); + return cPhs_ERROR_e; + } + } else if ((dComIfGs_isEventBit(dSv_event_flag_c::F_0311) && dComIfGp_roomControl_getStayNo()) || + (dComIfGs_isEventBit(dSv_event_flag_c::F_0313) && dComIfGp_roomControl_getStayNo() != 1 && dComIfGp_roomControl_getStayNo() != 2) || + (dComIfGs_isEventBit(dSv_event_flag_c::F_0315) && dComIfGp_roomControl_getStayNo() != 51) || + (dComIfGs_isEventBit(dSv_event_flag_c::F_0319) && dComIfGp_roomControl_getStayNo() != 52) || + (dComIfGs_isEventBit(dSv_event_flag_c::F_0317) && dComIfGp_roomControl_getStayNo() != 4 && dComIfGp_roomControl_getStayNo() != 5)) + { + if (!dComIfGs_isEventBit(dSv_event_flag_c::F_0311)) { + resetIconPosForLightBallA(); + } else { + setIconPosForLightBallAAtR00(); + } + + // "Light Ball A: delete since ball and Link aren't in same place<1>\n" + OS_REPORT("\x1B[33m光球A:玉とリンクの位置が違うので消します<1>\n\x1B[m"); + return cPhs_ERROR_e; + } else { + if (dComIfGp_roomControl_getStayNo() == 0) { + if (fopAcM_isSwitch(this, 63)) { + return cPhs_ERROR_e; + } + + l_sw_id = -1; + + for (int i = 0; i < 6; i++) { + static const u16 l_event_bitA[] = { + dSv_event_flag_c::F_0551, + dSv_event_flag_c::F_0552, + dSv_event_flag_c::F_0553, + dSv_event_flag_c::F_0554, + dSv_event_flag_c::F_0555, + dSv_event_flag_c::F_0556 + }; + + if (dComIfGs_isEventBit(l_event_bitA[i])) { + l_sw_id = i; + break; + } + } + + if (l_sw_id != -1) { + var_r29 = (fopAc_ac_c*)fpcM_Search(s_sw_sub, this); + // "Light Ball A: Set to Switch OBJ<%d> position!\n" + OS_REPORT("光球A:スイッチOBJ<%d>の位置へセットします!\n", l_sw_id); + } else { + var_r29 = (fopAc_ac_c*)fpcM_Search(s_setA_sub, this); + // "Light Ball A: Set to Reset Tag position!\n" + OS_REPORT("光球A:再セットタグの位置へセットします!\n"); + } + + if (var_r29 == NULL) { + return cPhs_INIT_e; + } + } else if (dComIfGp_roomControl_getStayNo() != 51) { + return cPhs_ERROR_e; + } + + fopAcM_SetRoomNo(this, dComIfGp_roomControl_getStayNo()); + tevStr.room_no = fopAcM_GetRoomNo(this); + } + + if (var_r29 != NULL) { + home.pos = var_r29->home.pos; + current.pos = home.pos; + old.pos = home.pos; + eyePos = home.pos; + attention_info.position = home.pos; + } + + return cPhs_NEXT_e; } -/* ############################################################################################## */ -/* 8047A3E0-8047A3EC 000AD4 000C+00 1/1 0/0 0/0 .rodata l_event_bitB$4966 */ -SECTION_RODATA static u8 const l_event_bitB[12] = { - 0x44, 0x10, 0x44, 0x08, 0x44, 0x04, 0x44, 0x02, 0x44, 0x01, 0x45, 0x80, -}; -COMPILER_STRIP_GATE(0x8047A3E0, &l_event_bitB); - /* 8047114C-804715A8 0021CC 045C+00 1/1 0/0 0/0 .text checkCreate_LightBallB__12daObjCarry_cFv */ -s32 daObjCarry_c::checkCreate_LightBallB() { - // NONMATCHING +BOOL daObjCarry_c::checkCreate_LightBallB() { + fopAc_ac_c* var_r29 = NULL; + + if (daPy_py_c::checkCarryStartLightBallB()) { + dComIfGs_offEventBit(dSv_event_flag_c::F_0312); + dComIfGs_offEventBit(dSv_event_flag_c::F_0314); + dComIfGs_offEventBit(dSv_event_flag_c::F_0316); + dComIfGs_offEventBit(dSv_event_flag_c::F_0318); + dComIfGs_offEventBit(dSv_event_flag_c::F_0320); + + if (dComIfGp_roomControl_getStayNo() == 51) { + dComIfGs_onEventBit(dSv_event_flag_c::F_0316); + } else if (dComIfGp_roomControl_getStayNo() == 52) { + dComIfGs_onEventBit(dSv_event_flag_c::F_0320); + } else if (dComIfGp_roomControl_getStayNo() == 0) { + dComIfGs_onEventBit(dSv_event_flag_c::F_0312); + } else if (dComIfGp_roomControl_getStayNo() == 1 || dComIfGp_roomControl_getStayNo() == 2) { + dComIfGs_onEventBit(dSv_event_flag_c::F_0314); + } else { + dComIfGs_onEventBit(dSv_event_flag_c::F_0318); + } + + fopAcM_setCarryNow(this, 1); + + if (dComIfGp_roomControl_getStayNo() == 0) { + var_r29 = (fopAc_ac_c*)fpcM_Search(s_setB_sub, this); + if (var_r29 == NULL) { + return cPhs_INIT_e; + } + } + } else if (!dComIfGs_isEventBit(dSv_event_flag_c::F_0312) && + !dComIfGs_isEventBit(dSv_event_flag_c::F_0314) && + !dComIfGs_isEventBit(dSv_event_flag_c::F_0316) && + !dComIfGs_isEventBit(dSv_event_flag_c::F_0318) && + !dComIfGs_isEventBit(dSv_event_flag_c::F_0320)) + { + if (dComIfGp_roomControl_getStayNo() != 52) { + if (!dComIfGs_isEventBit(dSv_event_flag_c::F_0321)) { + resetIconPosForLightBallB(); + } + + // "Light Ball B: delete since ball and Link aren't in same place<2>\n" + OS_REPORT("\x1B[33m光球B:玉とリンクの位置が違うので消します<2>\n\x1B[m"); + return cPhs_ERROR_e; + } + } else if ((dComIfGs_isEventBit(dSv_event_flag_c::F_0312) && dComIfGp_roomControl_getStayNo()) || + (dComIfGs_isEventBit(dSv_event_flag_c::F_0314) && dComIfGp_roomControl_getStayNo() != 1 && dComIfGp_roomControl_getStayNo() != 2) || + (dComIfGs_isEventBit(dSv_event_flag_c::F_0316) && dComIfGp_roomControl_getStayNo() != 51) || + (dComIfGs_isEventBit(dSv_event_flag_c::F_0320) && dComIfGp_roomControl_getStayNo() != 52) || + (dComIfGs_isEventBit(dSv_event_flag_c::F_0318) && dComIfGp_roomControl_getStayNo() != 4 && dComIfGp_roomControl_getStayNo() != 5)) + { + if (!dComIfGs_isEventBit(dSv_event_flag_c::F_0312)) { + resetIconPosForLightBallB(); + } else { + setIconPosForLightBallBAtR00(); + } + + // "Light Ball B: delete since ball and Link aren't in same place<3>\n" + OS_REPORT("\x1B[33m光球B:玉とリンクの位置が違うので消します<3>\n\x1B[m"); + return cPhs_ERROR_e; + } else { + if (dComIfGp_roomControl_getStayNo() == 0) { + if (fopAcM_isSwitch(this, 63)) { + return cPhs_ERROR_e; + } + + l_sw_id = -1; + + for (int i = 0; i < 6; i++) { + static const u16 l_event_bitB[] = { + dSv_event_flag_c::F_0557, + dSv_event_flag_c::F_0558, + dSv_event_flag_c::F_0559, + dSv_event_flag_c::F_0560, + dSv_event_flag_c::F_0561, + dSv_event_flag_c::F_0562, + }; + + if (dComIfGs_isEventBit(l_event_bitB[i])) { + l_sw_id = i; + break; + } + } + + if (l_sw_id != -1) { + var_r29 = (fopAc_ac_c*)fpcM_Search(s_sw_sub, this); + // "Light Ball B: Set to Switch OBJ<%d> position!\n" + OS_REPORT("光球B:スイッチOBJ<%d>の位置へセットします!\n", l_sw_id); + } else { + var_r29 = (fopAc_ac_c*)fpcM_Search(s_setB_sub, this); + // "Light Ball B: Set to Reset Tag position!\n" + OS_REPORT("光球B:再セットタグの位置へセットします!\n"); + } + + if (var_r29 == NULL) { + return cPhs_INIT_e; + } + } else if (dComIfGp_roomControl_getStayNo() != 52) { + return cPhs_ERROR_e; + } + + fopAcM_SetRoomNo(this, dComIfGp_roomControl_getStayNo()); + tevStr.room_no = fopAcM_GetRoomNo(this); + } + + if (var_r29 != NULL) { + home.pos = var_r29->home.pos; + current.pos = home.pos; + old.pos = home.pos; + eyePos = home.pos; + attention_info.position = home.pos; + } + + return cPhs_NEXT_e; } /* 804715A8-80471680 002628 00D8+00 1/1 0/0 0/0 .text checkCreate_Lv8Ball__12daObjCarry_cFv */ -s32 daObjCarry_c::checkCreate_Lv8Ball() { - // NONMATCHING -} +BOOL daObjCarry_c::checkCreate_Lv8Ball() { + if (!fopAcM_isSwitch(this, getSwbit())) { + return cPhs_NEXT_e; + } -/* ############################################################################################## */ -/* 8047A3EC-8047A3F0 000AE0 0004+00 0/3 0/0 0/0 .rodata @5096 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5096 = -3930.0f; -COMPILER_STRIP_GATE(0x8047A3EC, &lit_5096); -#pragma pop + fopAc_ac_c* var_r29 = (fopAc_ac_c*)fpcM_Search(s_swA_sub, this); + if (var_r29 == NULL) { + return cPhs_INIT_e; + } + + current.pos = var_r29->home.pos; + old.pos = current.pos; + attention_info.position = current.pos; + eyePos = current.pos; + return cPhs_NEXT_e; +} /* 80471680-804716D4 002700 0054+00 1/1 0/0 0/0 .text resetIconPosForLightBallA__12daObjCarry_cFv */ void daObjCarry_c::resetIconPosForLightBallA() { - // NONMATCHING + cXyz pos(0.0f, 100.0f, -3930.0f); + dTres_c::setIconPositionOfCarryLight(getTrboxBit(), &pos, 51); } -/* ############################################################################################## */ -/* 8047A3F0-8047A3F4 000AE4 0004+00 0/2 0/0 0/0 .rodata @5121 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5121 = -210.0f; -COMPILER_STRIP_GATE(0x8047A3F0, &lit_5121); -#pragma pop - -/* 8047A3F4-8047A3F8 000AE8 0004+00 0/2 0/0 0/0 .rodata @5122 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5122 = 11000.0f; -COMPILER_STRIP_GATE(0x8047A3F4, &lit_5122); -#pragma pop - -/* 8047A3F8-8047A3FC 000AEC 0004+00 0/1 0/0 0/0 .rodata @5123 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5123 = -4700.0f; -COMPILER_STRIP_GATE(0x8047A3F8, &lit_5123); -#pragma pop - -/* 8047A3FC-8047A400 000AF0 0004+00 0/2 0/0 0/0 .rodata @5124 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5124 = -590.0f; -COMPILER_STRIP_GATE(0x8047A3FC, &lit_5124); -#pragma pop - -/* 8047A400-8047A404 000AF4 0004+00 0/2 0/0 0/0 .rodata @5125 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5125 = 11600.0f; -COMPILER_STRIP_GATE(0x8047A400, &lit_5125); -#pragma pop - /* 804716D4-804717B4 002754 00E0+00 1/1 0/0 0/0 .text * setIconPosForLightBallAAtR00__12daObjCarry_cFv */ void daObjCarry_c::setIconPosForLightBallAAtR00() { - // NONMATCHING -} + cXyz pos; -/* ############################################################################################## */ -/* 8047A404-8047A408 000AF8 0004+00 0/1 0/0 0/0 .rodata @5150 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5150 = 5100.0f; -COMPILER_STRIP_GATE(0x8047A404, &lit_5150); -#pragma pop + if (fopAcM_isSwitch(this, 61)) { + pos.set(0.0f, -210.0f, 11000.0f); + } else if (fopAcM_isSwitch(this, 62)) { + pos.set(500.0f, -210.0f, 11000.0f); + } else { + pos.set(-4700.0f, -590.0f, 11600.0f); + } + + dTres_c::setIconPositionOfCarryLight(getTrboxBit(), &pos, 0); +} /* 804717B4-80471894 002834 00E0+00 1/1 0/0 0/0 .text * setIconPosForLightBallBAtR00__12daObjCarry_cFv */ void daObjCarry_c::setIconPosForLightBallBAtR00() { - // NONMATCHING + cXyz pos; + + if (fopAcM_isSwitch(this, 61)) { + pos.set(0.0f, -210.0f, 11000.0f); + } else if (fopAcM_isSwitch(this, 62)) { + pos.set(500.0f, -210.0f, 11000.0f); + } else { + pos.set(5100.0f, -590.0f, 11600.0f); + } + + dTres_c::setIconPositionOfCarryLight(getTrboxBit(), &pos, 0); } /* 80471894-804718E8 002914 0054+00 1/1 0/0 0/0 .text resetIconPosForLightBallB__12daObjCarry_cFv */ void daObjCarry_c::resetIconPosForLightBallB() { - // NONMATCHING + cXyz pos(0.0f, 100.0f, -3930.0f); + dTres_c::setIconPositionOfCarryLight(getTrboxBit(), &pos, 52); } -/* ############################################################################################## */ -/* 8047A408-8047A40C 000AFC 0004+00 0/1 0/0 0/0 .rodata @5174 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5174 = 0x5F5F5FFF; -COMPILER_STRIP_GATE(0x8047A408, &lit_5174); -#pragma pop - -/* 8047A40C-8047A410 000B00 0004+00 5/9 0/0 0/0 .rodata @5550 */ -SECTION_RODATA static f32 const lit_5550 = -1.0f; -COMPILER_STRIP_GATE(0x8047A40C, &lit_5550); - -/* 8047A410-8047A414 000B04 0004+00 1/6 0/0 0/0 .rodata @5551 */ -SECTION_RODATA static f32 const lit_5551 = 1.0f / 20.0f; -COMPILER_STRIP_GATE(0x8047A410, &lit_5551); - -/* 8047A414-8047A418 000B08 0004+00 1/6 0/0 0/0 .rodata @5552 */ -SECTION_RODATA static f32 const lit_5552 = 2.0f; -COMPILER_STRIP_GATE(0x8047A414, &lit_5552); - -/* 8047A418-8047A41C 000B0C 0004+00 0/1 0/0 0/0 .rodata @5553 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5553 = 10000.0f; -COMPILER_STRIP_GATE(0x8047A418, &lit_5553); -#pragma pop - /* 804718E8-8047233C 002968 0A54+00 1/1 0/0 0/0 .text execute__12daObjCarry_cFv */ -void daObjCarry_c::execute() { - // NONMATCHING +// NONMATCHING - sp10 supposed to have an extra copy on the stack +int daObjCarry_c::execute() { + mRecover = 0; + + if (prm_chk_type_ironball()) { + dTres_c::setCarryIron(getTrboxBit(), ¤t.pos); + } else if (prm_chk_type_lightball()) { + dTres_c::setIconPositionOfCarryLight(getTrboxBit(), ¤t.pos, fopAcM_GetRoomNo(this)); + fopAcM_seStartLevel(this, Z2SE_OBJ_L8_L_BALL, 0); + + if (mAcch.ChkGroundHit() && !mAcch.ChkGroundLanding()) { + cLib_chaseF(&field_0xe20, 1.0f, 0.05f + KREG_F(1)); + } else { + cLib_chaseF(&field_0xe20, 2.0f, 0.05f + KREG_F(1)); + } + + GXColor color = {0x5F, 0x5F, 0x5F, 0xFF}; + GXColor spC = color; + GXColor sp8 = spC; + int var_r27 = dKy_BossLight_set(¤t.pos, &color, field_0xe20 + KREG_F(0), 0); + if (!var_r27) { + OS_REPORT_ERROR("光球:ライト登録できませんでした\n"); + } + } + + if ((prm_chk_type_ironball() && getRoomNo() != 0x3F) || (prm_chk_type_lightball() && getRoomNo() != 0x3F)) { + if (fopAcM_GetRoomNo(this) == -1) { + cXyz gnd_chk_pos(current.pos); + gnd_chk_pos.y += 30.0f; + + if (fopAcM_gc_c::gndCheck(&gnd_chk_pos)) { + fopAcM_SetRoomNo(this, fopAcM_gc_c::getRoomId()); + tevStr.room_no = fopAcM_GetRoomNo(this); + } + } + + int room_no = fopAcM_GetRoomNo(this); + if (room_no == -1) { + room_no = getRoomNo(); + } + + if (!dComIfGp_roomControl_checkRoomDisp(room_no)) { + if (prm_chk_type_lightball()) { + fopAcM_delete(this); + } + return 1; + } + + f32 reset_dist = 10000.0f; + if (prm_chk_type_ironball()) { + reset_dist = 4000.0f; + } + + if (home.pos.y - current.pos.y > reset_dist) { + mReset = true; + } + } + + if (mType == TYPE_DOKURO && getSwbit() != 0xFF && !fopAcM_isSwitch(this, getSwbit())) { + cLib_offBit(attention_info.flags, 0x10); + return 1; + } + + if (mDeleteTimer != 0) { + if (--mDeleteTimer == 0) { + fopAcM_delete(this); + } + return 1; + } + + if (mCtrl != 0) { + if (field_0xdb9 == 0) { + mode_init_wait(); + } + + cLib_offBit(attention_info.flags, 0x10); + calc_rot_call(); + setBaseMtx(); + field_0xdb9 = mCtrl; + field_0xdec = current.pos; + return 1; + } + + if (field_0xdb9 != 0) { + if (field_0xdea != 0) { + speed.x = (speedF * cM_ssin(current.angle.y)) + (field_0xde4 * cM_ssin(field_0xde8)); + speed.y += field_0xde0; + speed.z = (speedF * cM_scos(current.angle.y)) + (field_0xde4 * cM_scos(field_0xde8)); + speedF = std::sqrt((speed.x * speed.x) + (speed.z * speed.z)); + current.angle.y = cM_atan2s(speed.x, speed.z); + + field_0xde4 = 0.0f; + field_0xde0 = 0.0f; + field_0xde8 = 0; + + if (speedF > data().m_throwInitSpeedXZ && speed.y > data().m_throwInitSpeedY) { + mode_init_drop(0); + } else { + mode_init_walk(0); + } + + if (mpCannonActor != NULL && fopAcM_IsActor(mpCannonActor) && fopAcM_GetProfName(mpCannonActor) == PROC_Obj_Ytaihou) { + mStts.ClrCcMove(); + mCyl.SetAtAtp(100); + mAcch.SetIronBall(); + // "Fired from cannon! speedF<%f> speed.y<%f>\n" + OS_REPORT("大砲から発射されました!speedF<%f>speed.y<%f>\n", speedF, speed.y); + mpCannonActor = NULL; + mCannon = true; + } + + field_0xdea = 0; + } else if (mType == TYPE_LV8_BALL || (prm_chk_type_lightball() && dComIfGp_roomControl_getStayNo() == 0)) { + mode_init_fit(); + } else { + mode_init_wait(); + } + } else if (field_0xdec != current.pos && !fopAcM_checkCarryNow(this) && mMode != MODE_CARRY && !fopAcM_checkHookCarryNow(this) && mMode != MODE_HOOK_CARRY && mMode != MODE_WAIT && mMode != MODE_FIT) { + mode_init_wait(); + } + + if (mReset) { + mReset = false; + current.pos = home.pos; + current.pos.y -= 10.0f; + eyePos = current.pos; + old.pos = current.pos; + field_0xdec = current.pos; + speed.y = 0.0f; + + if (prm_chk_type_lightball()) { + fopAcM_seStart(this, Z2SE_OBJ_L8_L_BALL_REVIVE, 0); + scale.setall(0.0f); + mode_init_resetLightBall(); + } else { + if (prm_chk_type_ironball()) { + if (fopAcM_GetRoomNo(this) != getRoomNo()) { + fopAcM_SetRoomNo(this, getRoomNo()); + tevStr.room_no = fopAcM_GetRoomNo(this); + } + } + mode_init_wait(); + } + } + + field_0xd1c = speed; + field_0xd04++; + + cc_damage_proc_call(); + mode_proc_call(); + bg_check(); + calc_rot_call(); + obj_execute_proc_call(); + + mStts.Move(); + + if (field_0xdae == 0) { + mCyl.SetC(current.pos); + dComIfG_Ccsp()->Set(&mCyl); + + if (mCyl.ChkCoSPrm(1) && mMode == MODE_DROP) { + mAcchCir.SetWall(0.5f * data().m_height, 0.5f * data().m_radius); + } else { + mAcchCir.SetWall(data().m_height, data().m_radius); + } + } else { + mAcchCir.SetWall(data().m_height, data().m_radius); + } + + if (mMode == MODE_WAIT || mMode == MODE_WALK || mMode == MODE_SINK || mMode == MODE_DROP) { + dComIfG_Ccsp()->SetMass(&mCyl, 3); + } + + attention_info.position.x = current.pos.x; + attention_info.position.y = current.pos.y + data().field_0x48; + attention_info.position.z = current.pos.z; + eyePos = attention_info.position; + + field_0xda9 = fopAcM_checkCarryNow(this); + field_0xdac = mCyl.ChkCoHit(); + field_0xdad = mAcch.ChkWaterIn(); + + if (field_0xdaa != 0) { + fopAcM_SetModel(this, mpModel); + } else { + fopAcM_SetModel(this, NULL); + } + + field_0xdb9 = mCtrl; + setBaseMtx(); + + if (mType == TYPE_KIBAKO || mType == TYPE_TARU) { + mpModel->calc(); + } + + field_0xdaf = 0; + if (cLib_calcTimer(&field_0xe24) == 0) { + mAcch.OffLineCheck(); + } + + field_0xdec = current.pos; + + if (fopAcM_checkCarryNow(this)) { + fopAcM_OffStatus(this, 0x400); + } else { + fopAcM_OnStatus(this, 0x400); + } + + return 1; } /* 8047233C-80472460 0033BC 0124+00 1/1 0/0 0/0 .text checkCulling__12daObjCarry_cFv */ -void daObjCarry_c::checkCulling() { - // NONMATCHING +BOOL daObjCarry_c::checkCulling() { + BOOL is_cull = FALSE; + + if ((prm_chk_type_ironball() && getRoomNo() != 0x3F) || (prm_chk_type_lightball() && getRoomNo() != 0x3F)) { + int room_no = fopAcM_GetRoomNo(this); + if (room_no == -1) { + room_no = getRoomNo(); + } + + if (!dComIfGp_roomControl_checkRoomDisp(room_no)) { + return TRUE; + } + } + + if (daPy_py_c::wolfGrabSubjectNoDraw(this)) { + is_cull = TRUE; + } + + if (mDraw) { + is_cull = TRUE; + } + + if (mType == TYPE_DOKURO && getSwbit() != 0xFF && !fopAcM_isSwitch(this, getSwbit())) { + is_cull = TRUE; + } + + if (KREG_S(2) == 10000) { + is_cull = FALSE; + } + + return is_cull; } -/* ############################################################################################## */ -/* 8047A4BC-8047A4BC 000BB0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8047A5F7 = "cc_ball"; -SECTION_DEAD static char const* const stringBase_8047A5FF = "aa_hikari"; -#pragma pop - /* 80472460-80472730 0034E0 02D0+00 1/1 0/0 0/0 .text draw__12daObjCarry_cFv */ -void daObjCarry_c::draw() { - // NONMATCHING +int daObjCarry_c::draw() { + if (checkCulling()) { + return 1; + } + + g_env_light.settingTevStruct(8, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr); + + if (mType == TYPE_BOKKURI) { + J3DModelData* modelData = mpModel->getModelData(); + for (u16 i = 0; i < modelData->getMaterialNum(); i++) { + J3DMaterial* material = modelData->getMaterialNodePointer(i); + J3DGXColor* tev_color = material->getTevKColor(1); + tev_color->a = field_0xd76; + } + } else if (prm_chk_type_lightball() && dComIfGp_roomControl_getStayNo() == 0) { + J3DModelData* modelData = mpModel->getModelData(); + JUTNameTab* nametab = modelData->getMaterialName(); + for (u16 i = 0; i < modelData->getMaterialNum(); i++) { + J3DMaterial* material = modelData->getMaterialNodePointer(i); + J3DGXColor* tev_kcolor = material->getTevKColor(1); + J3DGXColorS10* tev_color = material->getTevColor(1); + + if (strcmp(nametab->getName(i), "cc_ball") == 0) { + tev_color->r = 0x82; + tev_color->g = 0xC8; + tev_color->b = 0xFA; + tev_color->a = 0xFF; + + tev_kcolor->r = 0x00; + tev_kcolor->g = 0x3C; + tev_kcolor->b = 0x8C; + tev_kcolor->a = 0xFF; + } else if (strcmp(nametab->getName(i), "aa_hikari") == 0) { + tev_kcolor->r = 0x8C; + tev_kcolor->g = 0xD2; + tev_kcolor->b = 0xFF; + tev_kcolor->a = 0xFF; + } + } + } + + mDoExt_modelUpdateDL(mpModel); + + if (mType == TYPE_IRON_BALL) { + daMirror_c::entry(mpModel); + } + + if (fopAcM_GetModel(this) == NULL) { + f32 temp_f31 = scale.x * data().field_0x74; + if (checkFlag(1)) { + dComIfGd_setSimpleShadow(¤t.pos, mAcch.GetGroundH(), temp_f31, mAcch.m_gnd, shape_angle.y, 1.0f, NULL); + } else { + dComIfGd_setSimpleShadow(¤t.pos, KREG_F(0) + mAcch.GetGroundH(), temp_f31, mAcch.m_gnd, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); + } + } + + debugDraw(); + return 1; } /* 80472730-80472734 0037B0 0004+00 1/1 0/0 0/0 .text debugDraw__12daObjCarry_cFv */ void daObjCarry_c::debugDraw() { - /* empty function */ +#ifdef DEBUG + if (KREG_S(8) == 10000 && !mRotAxis.isZero()) { + cXyz start(current.pos); + start.y += 35.0f; + + cXyz end = current.pos + (mRotAxis.norm() * 100.0f); + end.y += 35.0f; + + GXColor color = {0xFF, 0xFF, 0xFF, 0xFF}; + dDbVw_drawLineOpa(start, end, color, TRUE, 12); + } + + if (KREG_S(8) == 20000) { + cXyz start(daPy_getPlayerActorClass()->current.pos); + cXyz end(home.pos); + GXColor color = {0xFF, 0xFF, 0xFF, 0xFF}; + dDbVw_drawLineOpa(start, end, color, TRUE, 12); + } + + if (KREG_S(8) == 20001) { + cXyz start(daPy_getPlayerActorClass()->current.pos); + cXyz end(home.pos); + GXColor color = {0xFF, 0x00, 0x00, 0xFF}; + dDbVw_drawLineOpa(start, end, color, TRUE, 12); + } + + if (KREG_S(7) == 4000) { + GXColor color = {0xFF, 0x00, 0x00, 0xFF}; + cXyz sp80(0.0f, 0.0f, 100.0f); + mDoMtx_stack_c::YrotS(current.angle.y); + mDoMtx_stack_c::multVec(&sp80, &sp80); + sp80 += current.pos; + dDbVw_drawArrowOpa(current.pos, sp80, color, TRUE, 12); + + color = (GXColor){0x00, 0x00, 0xFF, 0xFF}; + sp80.set(0.0f, 0.0f, 100.0f); + mDoMtx_stack_c::YrotS(shape_angle.y); + mDoMtx_stack_c::multVec(&sp80, &sp80); + sp80 += current.pos; + dDbVw_drawArrowOpa(current.pos, sp80, color, TRUE, 12); + } + + if (KREG_S(7) == 5000) { + GXColor color = {0x00, 0x00, 0xFF, 0xFF}; + cXyz sp74(current.pos); + cXyz sp68; + + int sp28; + if (fopAcM_getWaterStream(¤t.pos, mAcch.m_gnd, &sp68, &sp28, 0)) { + cXyz sp5C = sp68 * 100.0f; + sp5C += current.pos; + dDbVw_drawArrowOpa(current.pos, sp5C, color, TRUE, 12); + } + } + + if (mType == TYPE_KIBAKO || mType == TYPE_TARU) { + // mJntCol.debugDraw(); + } +#endif } -/* ############################################################################################## */ -/* 8047A41C-8047A420 000B10 0004+00 1/4 0/0 0/0 .rodata @5812 */ -SECTION_RODATA static f32 const lit_5812 = -1000000000.0f; -COMPILER_STRIP_GATE(0x8047A41C, &lit_5812); - -/* 8047A4BC-8047A4BC 000BB0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8047A609 = "ミドナヒント用スイッチ立てました!\n"; -#pragma pop - /* 80472734-80472B54 0037B4 0420+00 1/1 0/0 0/0 .text _delete__12daObjCarry_cFv */ -void daObjCarry_c::_delete() { - // NONMATCHING +int daObjCarry_c::_delete() { + daPy_py_c* player = daPy_getPlayerActorClass(); + fopAcM_offActor(this, fopAcM_GetSetId(this)); + + if (mType == TYPE_BOKKURI || mType == TYPE_LV8_BALL || prm_chk_type_lightball()) { + mSound.deleteObject(); + } + + if ((mType == TYPE_BALL_S || mType == TYPE_BALL_S_2) && field_0xe0c != 0) { + dKy_dalkmist_inf_cut(&mDalkmistInf); + field_0xe0c = 0; + } + + if (mType == TYPE_BALL_S) { + if (!dComIfGs_isEventBit(dSv_event_flag_c::F_0311) || (player != NULL && player->getGrabActorID() != fopAcM_GetID(this))) { + dComIfGs_offEventBit(dSv_event_flag_c::F_0313); + dComIfGs_offEventBit(dSv_event_flag_c::F_0315); + dComIfGs_offEventBit(dSv_event_flag_c::F_0317); + dComIfGs_offEventBit(dSv_event_flag_c::F_0319); + + if (!dComIfGs_isEventBit(dSv_event_flag_c::F_0311)) { + cXyz pos(0.0f, 100.0f, -3930.0f); + dTres_c::setIconPositionOfCarryLight(getTrboxBit(), &pos, 51); + } + } + + if (fopAcM_isSwitch(this, 90) && !dComIfGs_isEventBit(dSv_event_flag_c::F_0311) && player != NULL) { + if (player->getGrabActorID() != fopAcM_GetID(this)) { + fopAcM_onSwitch(this, 170); + // "Midna Hint Switch set!\n" + OSReport_Error("ミドナヒント用スイッチ立てました!\n"); + } + } + } else if (mType == TYPE_BALL_S_2 && (!dComIfGs_isEventBit(dSv_event_flag_c::F_0312) || (player != NULL && player->getGrabActorID() != fopAcM_GetID(this)))) { + dComIfGs_offEventBit(dSv_event_flag_c::F_0314); + dComIfGs_offEventBit(dSv_event_flag_c::F_0316); + dComIfGs_offEventBit(dSv_event_flag_c::F_0318); + dComIfGs_offEventBit(dSv_event_flag_c::F_0320); + + if (!dComIfGs_isEventBit(dSv_event_flag_c::F_0312)) { + cXyz pos(0.0f, 100.0f, -3930.0f); + dTres_c::setIconPositionOfCarryLight(getTrboxBit(), &pos, 52); + } + } + + if (prm_chk_type_ironball()) { + if (-1000000000.0f != mAcch.GetGroundH()) { + savePos(getSaveID(), current.pos); + setRoomNo(getSaveID(), fopAcM_GetRoomNo(this)); + } else { + int room_no = fopAcM_GetRoomNo(this); + if (room_no == -1) { + room_no = getRoomNo(); + } + + if (!dComIfGp_roomControl_checkRoomDisp(room_no)) { + savePos(getSaveID(), current.pos); + setRoomNo(getSaveID(), room_no); + } + } + + if (!isDraw()) { + onSttsFlag(getSaveID(), 1); + } else { + offSttsFlag(getSaveID(), 1); + } + } + + dComIfG_resDelete(&mPhaseReq, getArcName()); + return 1; } -/* ############################################################################################## */ -/* 8047A420-8047A424 000B14 0004+00 0/1 0/0 0/0 .rodata @5875 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5875 = 5000.0f; -COMPILER_STRIP_GATE(0x8047A420, &lit_5875); -#pragma pop - -/* 8047A424-8047A428 000B18 0004+00 0/2 0/0 0/0 .rodata @5876 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5876 = -20.0f; -COMPILER_STRIP_GATE(0x8047A424, &lit_5876); -#pragma pop - /* 80472B54-80472D8C 003BD4 0238+00 1/1 0/0 0/0 .text crr_pos__12daObjCarry_cFv */ void daObjCarry_c::crr_pos() { - // NONMATCHING + if (field_0xd14 != 0) { + mAcch.ClrRoofHit(); + mAcch.ClrWallHit(); + mAcch.ClrGroundLanding(); + mAcch.ClrGroundHit(); + mAcch.ClrWaterHit(); + mAcch.ClrWaterIn(); + return; + } + + bool var_r29 = false; + cXyz sp20(current.pos); + if (mMode == MODE_CARRY || field_0xdb0 == 1) { + var_r29 = true; + } + + mAcch.CrrPos(dComIfG_Bgsp()); + + if (field_0xe25 != 0) { + cXyz sp14(current.pos.x, current.pos.y - 5000.0f, current.pos.z); + mAcch.m_wtr.Set(sp14, 5000.0f + current.pos.y); + + if (dComIfG_Bgsp().WaterChk(&mAcch.m_wtr)) { + mAcch.SetWaterHit(); + if (mAcch.m_wtr.GetHeight() > current.pos.y) { + mAcch.SetWaterIn(); + } + } + } + + field_0xd08 = current.pos - sp20; + + if (dComIfG_Bgsp().ChkMoveBG_NoDABg(mAcch.m_gnd) && mOnMoveBG) { + var_r29 = false; + mOnMoveBG = false; + } + + if (mType == TYPE_IRON_BALL) { + if (mAcch.ChkGroundHit()) { + switch (dComIfG_Bgsp().GetPolyAtt0(mAcch.m_gnd)) { + case 13: + field_0xddc = -20.0f; + break; + } + } else { + cLib_chaseF(&field_0xddc, 0.0f, 1.0f); + } + } + + if (var_r29) { + if (field_0xdb0 != 0) { + current.pos.x = sp20.x; + current.pos.z = sp20.z; + } else { + current.pos = sp20; + } + } } /* 80472D8C-80472E5C 003E0C 00D0+00 1/1 0/0 0/0 .text check_sink__12daObjCarry_cFPf */ -void daObjCarry_c::check_sink(f32* param_0) { - // NONMATCHING +int daObjCarry_c::check_sink(f32* param_0) { + int var_r29 = 0; + f32 temp_f31 = mAcch.m_wtr.GetHeight(); + + *param_0 = 0.0f; + + if (mAcch.ChkWaterHit()) { + if (temp_f31 > current.pos.y + (2.0f * data().field_0x2c)) { + var_r29 = 2; + *param_0 = 1.0f; + } else if (temp_f31 > current.pos.y) { + var_r29 = 1; + *param_0 = std::fabs(temp_f31 - current.pos.y) / (2.0f * data().field_0x2c); + } + } + + return var_r29; } /* 80472E5C-80472EF0 003EDC 0094+00 4/4 0/0 0/0 .text calc_gravity__12daObjCarry_cFv */ -void daObjCarry_c::calc_gravity() { - // NONMATCHING +f32 daObjCarry_c::calc_gravity() { + f32 obj_gravity = fopAcM_GetGravity(this); + + f32 sp8; + int temp_r3 = check_sink(&sp8); + switch (temp_r3) { + case 0: + obj_gravity = data().m_gravity; + break; + case 1: + case 2: + obj_gravity = data().m_gravity + (sp8 * data().m_Buoyancy); + break; + } + + return obj_gravity; } -/* ############################################################################################## */ -/* 8047A428-8047A42C 000B1C 0004+00 0/4 0/0 0/0 .rodata @5949 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5949 = 50.0f; -COMPILER_STRIP_GATE(0x8047A428, &lit_5949); -#pragma pop - -/* 8047A42C-8047A430 000B20 0004+00 0/2 0/0 0/0 .rodata @5950 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_5950 = 0x43360B61; -COMPILER_STRIP_GATE(0x8047A42C, &lit_5950); -#pragma pop - /* 80472EF0-80473050 003F70 0160+00 1/1 0/0 0/0 .text checkRollAngle__12daObjCarry_cFv */ -void daObjCarry_c::checkRollAngle() { - // NONMATCHING +BOOL daObjCarry_c::checkRollAngle() { + f32 roll_angle = data().m_rollAngle; + + cXyz gnd_chk_pos(current.pos); + gnd_chk_pos.y += 50.0f; + + cM3dGPla plane; + bool gnd_chk = fopAcM_gc_c::gndCheck(&gnd_chk_pos); + bool valid_plane = fopAcM_gc_c::getTriPla(&plane); + f32 ground_y = fopAcM_gc_c::getGroundY(); + + if (gnd_chk && ground_y != -1000000000.0f && valid_plane) { + f32 roll_threshold = cM_scos(cM_deg2s(roll_angle - 0.5f)); + cXyz normal(plane.mNormal); + if (normal.y < roll_threshold) { + return TRUE; + } + } + + return FALSE; } -/* ############################################################################################## */ -/* 8047A430-8047A434 000B24 0004+00 1/1 0/0 0/0 .rodata @6023 */ -SECTION_RODATA static f32 const lit_6023 = 250.0f; -COMPILER_STRIP_GATE(0x8047A430, &lit_6023); - -/* 8047B1DC-8047B1E0 -00001 0004+00 4/4 0/0 0/0 .bss None */ -/* 8047B1DC 0001+00 data_8047B1DC None */ -/* 8047B1DD 0001+00 data_8047B1DD None */ -/* 8047B1DE 0001+00 data_8047B1DE None */ -/* 8047B1DF 0001+00 data_8047B1DF None */ -static u8 struct_8047B1DC[4]; - /* 80473050-804733E8 0040D0 0398+00 1/1 0/0 0/0 .text mode_proc_call__12daObjCarry_cFv */ void daObjCarry_c::mode_proc_call() { - // NONMATCHING -} + typedef int (daObjCarry_c::*mode_func)(); + static mode_func l_mode_func[] = { + &daObjCarry_c::mode_proc_wait, + &daObjCarry_c::mode_proc_walk, + &daObjCarry_c::mode_proc_carry, + &daObjCarry_c::mode_proc_drop, + &daObjCarry_c::mode_proc_float, + &daObjCarry_c::mode_proc_sink, + &daObjCarry_c::mode_proc_yogan, + &daObjCarry_c::mode_proc_magne, + &daObjCarry_c::mode_proc_magneCarry, + &daObjCarry_c::mode_proc_boomCarry, + &daObjCarry_c::mode_proc_growth, + &daObjCarry_c::mode_proc_dbDrop, + &daObjCarry_c::mode_proc_hookCarry, + &daObjCarry_c::mode_proc_end, + &daObjCarry_c::mode_proc_fit, + &daObjCarry_c::mode_proc_controled, + &daObjCarry_c::mode_proc_resetLightBall, + }; -/* ############################################################################################## */ -/* 8047A434-8047A438 000B28 0004+00 8/9 0/0 0/0 .rodata @6043 */ -SECTION_RODATA static f32 const lit_6043 = -100.0f; -COMPILER_STRIP_GATE(0x8047A434, &lit_6043); + if (field_0xdae == 0) { + if (field_0xcf2 != 0x11) { + if (field_0xcf2 == 3) { + mode_init_drop(0); + } + field_0xcf2 = 0x11; + } + + if (!fopAcM_checkCarryNow(this) || mCarryHookOK) { + if (mCyl.ChkTgHit()) { + cCcD_Obj* tg_hit_obj = mCyl.GetTgHitObj(); + if (tg_hit_obj != NULL && tg_hit_obj->ChkAtType(AT_TYPE_BOOMERANG)) { + mode_init_boomCarry(); + } + } else if (fopAcM_checkHookCarryNow(this)) { + if (mMode != MODE_HOOK_CARRY) { + mode_init_hookCarry(); + } + + if (fopAcM_checkCarryNow(this)) { + mRecover = 1; + fopAcM_cancelCarryNow(this); + } + + if (prm_chk_type_lightball() && fopAcM_searchPlayerDistance(this) < 250.0f) { + daPy_py_c* player = daPy_getPlayerActorClass(); + if (player->setForceGrab(this, 0, 1)) { + mode_init_carry(); + fopAcM_cancelHookCarryNow(this); + field_0xda9 = 1; + } + } + } + } else if (field_0xda9 == 0) { + mode_init_carry(); + } + + (this->*l_mode_func[mMode])(); + + crr_pos(); + + if (mMode == MODE_BOOM_CARRY) { + mBoomerangMove.bgCheckAfterOffset(¤t.pos); + } + + bg_damage_proc_call(); + } +} /* 804733E8-804734B0 004468 00C8+00 15/15 0/0 0/0 .text mode_init_wait__12daObjCarry_cFv */ void daObjCarry_c::mode_init_wait() { - // NONMATCHING + mAcch.ClrMoveBGOnly(); + mAcch.ClrGrndNone(); + + mCyl.OffAtSPrmBit(1); + mCyl.OnTgSPrmBit(1); + mCyl.OnCoSPrmBit(0x10); + + cLib_onBit(attention_info.flags, 0x10); + field_0xda8 = 0; + + speedF = 0.0f; + gravity = data().m_gravity; + fopAcM_SetMaxFallSpeed(this, -100.0f); + mStts.SetWeight(data().m_colliderWeight); + + if (prm_chk_type_ironball()) { + mAcch.ClrIronBall(); + } + + mMode = MODE_WAIT; } /* 804734B0-80473718 004530 0268+00 1/0 0/0 0/0 .text mode_proc_wait__12daObjCarry_cFv */ -void daObjCarry_c::mode_proc_wait() { - // NONMATCHING +int daObjCarry_c::mode_proc_wait() { + bool do_crash_roll = false; + bool var_r26 = true; + bool is_roll_angle = checkRollAngle(); + + if (field_0xdb0 != 0) { + fopAcM_posMoveF(this, NULL); + } else { + if (mCanCrashRoll) { + daPy_py_c* player = dComIfGp_getLinkPlayer(); + if (player->current.pos.absXZ(current.pos) < (500.0f + KREG_F(9)) && (player->checkFrontRollCrash() || player->checkWolfAttackReverse())) { + do_crash_roll = true; + mCanCrashRoll = false; + } + } + + mAcch.ClrMoveBGOnly(); + mAcch.ClrGrndNone(); + } + + fopAcM_posMoveF(this, mStts.GetCCMoveP()); + + if (mAcch.ChkGroundHit()) { + field_0xcec = current.pos.y; + } + + if (is_roll_angle && var_r26) { + mode_init_walk(0); + return 1; + } + + if (do_crash_roll) { + speedF = 30.0f + KREG_F(8); + mode_init_walk(0); + return 1; + } + + if (0.0f != speedF) { + mode_init_walk(0); + return 1; + } + + return 1; } /* 80473718-804737CC 004798 00B4+00 5/5 0/0 0/0 .text mode_init_walk__12daObjCarry_cFUc */ -void daObjCarry_c::mode_init_walk(u8 param_0) { - // NONMATCHING +void daObjCarry_c::mode_init_walk(u8 unused) { + mAcch.ClrMoveBGOnly(); + mAcch.ClrGrndNone(); + + mCyl.OffAtSPrmBit(1); + mCyl.OnTgSPrmBit(1); + mCyl.OnCoSPrmBit(0x10); + + field_0xda8 = 0; + mCanCrashRoll = false; + + mStts.SetWeight(data().m_colliderWeight); + + fopAcM_SetMaxFallSpeed(this, -100.0f); + gravity = data().m_gravity; + + if (prm_chk_type_ironball()) { + mAcch.ClrIronBall(); + } + + mMode = MODE_WALK; } -/* ############################################################################################## */ -/* 8047A438-8047A43C 000B2C 0004+00 0/2 0/0 0/0 .rodata @6324 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6324 = 25.0f; -COMPILER_STRIP_GATE(0x8047A438, &lit_6324); -#pragma pop - -/* 8047A43C-8047A440 000B30 0004+00 0/3 0/0 0/0 .rodata @6325 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6325 = 4.0f / 5.0f; -COMPILER_STRIP_GATE(0x8047A43C, &lit_6325); -#pragma pop - -/* 8047A440-8047A444 000B34 0004+00 0/5 0/0 0/0 .rodata @6326 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6326 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x8047A440, &lit_6326); -#pragma pop - -/* 8047A444-8047A448 000B38 0004+00 0/3 0/0 0/0 .rodata @6327 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6327 = 9.0f / 10.0f; -COMPILER_STRIP_GATE(0x8047A444, &lit_6327); -#pragma pop - -/* 8047A448-8047A44C 000B3C 0004+00 0/1 0/0 0/0 .rodata @6328 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u32 const lit_6328 = 0x3C23D70B; -COMPILER_STRIP_GATE(0x8047A448, &lit_6328); -#pragma pop - /* 804737CC-80473ED8 00484C 070C+00 1/0 0/0 0/0 .text mode_proc_walk__12daObjCarry_cFv */ -void daObjCarry_c::mode_proc_walk() { - // NONMATCHING +int daObjCarry_c::mode_proc_walk() { + bool gnd_hit = mAcch.ChkGroundHit() != 0; + bool gnd_landing = mAcch.ChkGroundLanding() != 0; + bool gnd_away = mAcch.ChkGroundAway() != 0; + + if (gnd_hit) { + field_0xcec = current.pos.y; + cLib_onBit(attention_info.flags, 0x10); + + if (0.0f == speedF && 0.0f == speed.y) { + mode_init_wait(); + } + + if (mType == TYPE_IRON_BALL) { + if (speedF > 25.0f) { + cLib_offBit(attention_info.flags, 0x10); + } else { + cLib_onBit(attention_info.flags, 0x10); + } + } + } else { + cLib_offBit(attention_info.flags, 0x10); + } + + f32 var_f29 = data().m_rollAngle; + + cXyz sp40(current.pos); + sp40.y += 50.0f; + + f32 speed_scale = 1.0f - data().m_friction; + + cM3dGPla plane; + bool gnd_check = fopAcM_gc_c::gndCheck(&sp40); + bool valid_plane = fopAcM_gc_c::getTriPla(&plane); + bool sp8 = false; + + f32 var_f31 = data().m_slopeInfluence; + f32 temp_f25 = fopAcM_gc_c::getGroundY(); + + if (gnd_check && -1000000000.0f != temp_f25 && gnd_hit && !gnd_landing) { + bool var_r27 = 1; + if (fopAcM_gc_c::getPolyAtt0() == 3) { + var_r27 = 0; + } + + if (mType == TYPE_IRON_BALL && fopAcM_gc_c::getPolyAtt0() == 13) { + var_f29 = 50.0f; + speed_scale = 0.8f; + var_f31 = 20.0f; + } + + if (valid_plane && var_r27) { + f32 temp_f30 = cM_scos(cM_deg2s(var_f29 - 0.5f)); + cXyz sp34(plane.mNormal); + + if (sp34.y < temp_f30) { + cXyz sp28(sp34); + s16 temp_r26 = cM_atan2s(sp28.x, sp28.z); + + var_f31 *= 1.0f - sp34.y; + if (var_f31 < 0.1f) { + var_f31 = 0.1f; + } + + cXyz sp1C(speedF * cM_ssin(current.angle.y), 0.0f, speedF * cM_scos(current.angle.y)); + cXyz sp10(var_f31 * cM_ssin(temp_r26), 0.0f, var_f31 * cM_scos(temp_r26)); + sp1C += sp10; + speedF = std::sqrt((sp1C.x * sp1C.x) + (sp1C.z * sp1C.z)); + + if (!prm_chk_type_lightball()) { + f32 temp_f1 = std::sqrt((sp34.x * sp34.x) + (sp34.z * sp34.z)); + if (0.0f != temp_f1) { + f32 temp_f26 = (0.9f + KREG_F(17)) * std::fabs((sp34.y / temp_f1) * data().m_gravity); + if (temp_f26 < speedF) { + speedF = temp_f26; + } + } + } else { + f32 temp_f24 = std::sqrt((sp34.x * sp34.x) + (sp34.z * sp34.z)); + if (0.0f != temp_f30) { + speed.y = -speedF * (temp_f24 / temp_f30); + } + } + + current.angle.y = cM_atan2s(sp1C.x, sp1C.z); + sp8 = 1; + } + } + } + + speedF *= speed_scale; + if (mType != TYPE_IRON_BALL && mStts.GetCCMoveP()->abs2XZ() > 0.010000001f) { + speedF *= 0.9f; + } + + fopAcM_posMoveF(this, mStts.GetCCMoveP()); + return 1; } /* 80473ED8-804741A8 004F58 02D0+00 2/2 0/0 0/0 .text mode_init_carry__12daObjCarry_cFv */ void daObjCarry_c::mode_init_carry() { - // NONMATCHING + mAcch.ClrMoveBGOnly(); + mAcch.ClrGrndNone(); + + mCyl.OffAtSPrmBit(1); + mCyl.OnTgSPrmBit(1); + mCyl.OffCoSPrmBit(0x10); + + field_0xda8 = 0; + mCanCrashRoll = false; + mStts.SetWeight(data().m_colliderWeight); + + fopAcM_SetMaxFallSpeed(this, -100.0f); + speedF = 0.0f; + + current.angle.setall(0); + + if (mMode == MODE_BOOM_CARRY) { + field_0xdaa = 1; + } else { + field_0xdaa = 0; + } + + if (field_0xdb0 == 1) { + field_0xdb0 = 0; + field_0xd7a = 1; + fopAcM_OffCarryType(this, fopAcM_CARRY_TYPE_1); + mDoAud_seStart(Z2SE_OBJ_BOKKURI_PULLOUT, ¤t.pos, 0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + } + + field_0xd68 = 0; + + if (prm_chk_type_ironball()) { + mAcch.ClrIronBall(); + } + + if (prm_chk_type_lightball()) { + cLib_offBit(attention_info.flags, 0x10); + + daPy_py_c* player = daPy_getPlayerActorClass(); + if (player->getGrabActorID() == fopAcM_GetID(this)) { + if (mType == TYPE_BALL_S) { + if (!dComIfGs_isEventBit(dSv_event_flag_c::F_0311) && !dComIfGs_isEventBit(dSv_event_flag_c::F_0313) && !dComIfGs_isEventBit(dSv_event_flag_c::F_0315) && !dComIfGs_isEventBit(dSv_event_flag_c::F_0317) && !dComIfGs_isEventBit(dSv_event_flag_c::F_0319)) { + dComIfGs_onEventBit(dSv_event_flag_c::F_0315); + } + } else if (!dComIfGs_isEventBit(dSv_event_flag_c::F_0312) && !dComIfGs_isEventBit(dSv_event_flag_c::F_0314) && !dComIfGs_isEventBit(dSv_event_flag_c::F_0316) && !dComIfGs_isEventBit(dSv_event_flag_c::F_0318) && !dComIfGs_isEventBit(dSv_event_flag_c::F_0320)) { + dComIfGs_onEventBit(dSv_event_flag_c::F_0320); + } + } + } + + mMode = MODE_CARRY; } /* 804741A8-80474448 005228 02A0+00 1/0 0/0 0/0 .text mode_proc_carry__12daObjCarry_cFv */ -void daObjCarry_c::mode_proc_carry() { - // NONMATCHING -} +int daObjCarry_c::mode_proc_carry() { + daPy_py_c* player = (daPy_py_c*)daPy_getPlayerActorClass(); -/* ############################################################################################## */ -/* 8047A44C-8047A450 000B40 0004+00 2/2 0/0 0/0 .rodata @6496 */ -SECTION_RODATA static f32 const lit_6496 = -2.0f; -COMPILER_STRIP_GATE(0x8047A44C, &lit_6496); + if (field_0xdaa == 0) { + if (player->getGrabActorID() == fopAcM_GetID(this) && player->getGrabUpStart()) { + field_0xdaa = 1; + } + } + + if (!prm_chk_type_lightball()) { + if (mCyl.ChkCoHit()) { + cXyz* cc_move_p = mStts.GetCCMoveP(); + if (cc_move_p != NULL) { + field_0xd08 += *cc_move_p; + } + } + + mStts.ClrCcMove(); + mCyl.ClrCoHit(); + player->setGrabCollisionOffset(field_0xd08.x, field_0xd08.z, NULL); + } + + if (!fopAcM_checkCarryNow(this)) { + bool temp_r26 = fopAcM_GetSpeedF(this) != 0.0f; + + if (0.0f != fopAcM_GetSpeedF(this)) { + if (current.angle.x == 0) { + if (daPy_py_c::i_checkNowWolf()) { + speedF = data().m_wolfThrowInitSpeedXZ; + speed.y = data().m_wolfThrowInitSpeedY; + } else { + speedF = data().m_throwInitSpeedXZ; + speed.y = data().m_throwInitSpeedY; + } + } else { + if (daPy_py_c::i_checkNowWolf()) { + speedF = data().m_wolfThrowInitSpeedXZ; + } else { + speedF = data().m_throwInitSpeedXZ; + } + + s16 temp_r0 = -current.angle.x; + speed.y = (speedF * cM_ssin(temp_r0)) / cM_scos(temp_r0); + } + + current.angle.x = 0; + } + + field_0xe24 = 30; + + mAcch.OnLineCheck(); + + if (chkWaterLineIn()) { + if (chkSinkObj()) { + mode_init_sink(); + } else { + mode_init_float(); + } + } else if (temp_r26) { + mode_init_drop(0); + } else { + mode_init_walk(0); + } + + field_0xdaa = 0; + } + + field_0xcec = current.pos.y; + return 1; +} /* 80474448-80474540 0054C8 00F8+00 3/3 0/0 1/1 .text mode_init_drop__12daObjCarry_cFUc */ void daObjCarry_c::mode_init_drop(u8 param_0) { - // NONMATCHING -} + mAcch.ClrMoveBGOnly(); + mAcch.ClrGrndNone(); -/* ############################################################################################## */ -/* 8047A450-8047A454 000B44 0004+00 1/1 0/0 0/0 .rodata @6526 */ -SECTION_RODATA static f32 const lit_6526 = 40.0f; -COMPILER_STRIP_GATE(0x8047A450, &lit_6526); + mCyl.OnAtSPrmBit(1); + mCyl.OnTgSPrmBit(1); + mCyl.OnCoSPrmBit(0x10); + mCyl.OffAtSPrmBit(0xC); + + cLib_offBit(attention_info.flags, 0x10); + + mStts.SetWeight(data().m_colliderWeight); + field_0xda8 = 0; + mCanCrashRoll = false; + + fopAcM_SetMaxFallSpeed(this, -100.0f); + + gravity = calc_gravity(); + if (mType == TYPE_BOKKURI && mMode == MODE_CARRY) { + gravity = -2.0f; + } + + if (prm_chk_type_ironball()) { + mCyl.SetAtAtp(1); + } + + mCannon = false; + mMode = MODE_DROP; + field_0xdb4 = 0; +} /* 80474540-80474618 0055C0 00D8+00 1/0 0/0 0/0 .text mode_proc_drop__12daObjCarry_cFv */ -void daObjCarry_c::mode_proc_drop() { - // NONMATCHING +int daObjCarry_c::mode_proc_drop() { + if (field_0xdb4 == 0) { + mAcch.OnLineCheck(); + field_0xdb4 = 1; + } + + fopAcM_posMoveF(this, mStts.GetCCMoveP()); + + if (prm_chk_type_ironball() && mCyl.GetAtAtp() == 100) { + mAtCps.cCcD_CpsAttr::Set(old.pos, current.pos, 40.0f); + + cXyz sp8 = old.pos - current.pos; + mAtCps.SetAtVec(sp8); + mAtCps.SetAtAtp(100); + dComIfG_Ccsp()->Set(&mAtCps); + } + + return 1; } -/* ############################################################################################## */ -/* 8047A454-8047A458 000B48 0004+00 0/2 0/0 0/0 .rodata @6564 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6564 = 3000.0f; -COMPILER_STRIP_GATE(0x8047A454, &lit_6564); -#pragma pop - -/* 8047A458-8047A45C 000B4C 0004+00 0/1 0/0 0/0 .rodata @6565 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6565 = -12.0f; -COMPILER_STRIP_GATE(0x8047A458, &lit_6565); -#pragma pop - -/* 8047A45C-8047A460 000B50 0004+00 0/1 0/0 0/0 .rodata @6566 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6566 = -10.0f; -COMPILER_STRIP_GATE(0x8047A45C, &lit_6566); -#pragma pop - /* 80474618-80474734 005698 011C+00 2/2 0/0 0/0 .text mode_init_float__12daObjCarry_cFv */ void daObjCarry_c::mode_init_float() { - // NONMATCHING + mAcch.ClrMoveBGOnly(); + mAcch.ClrGrndNone(); + + mCyl.OffAtSPrmBit(1); + mCyl.OnTgSPrmBit(1); + mCyl.OnCoSPrmBit(0x10); + + cLib_onBit(attention_info.flags, 0x10); + + field_0xda8 = 0; + field_0xdc4 = 0; + field_0xdc8 = 0.0f; + + if (speedF > 10.0f || speed.y < -20.0f) { + field_0xd5c = 3000.0f; + field_0xd60 = 3000.0f; + } + + speed.y = -12.0f; + speedF = cLib_minMaxLimit(speedF, -10.0f, 10.0f); + + mStts.SetWeight(KREG_S(2) + 100); + + field_0xd6c = fopAcM_GetSpeed_p(this)->y; + + if (prm_chk_type_ironball()) { + mAcch.ClrIronBall(); + } + + mMode = MODE_FLOAT; } -/* ############################################################################################## */ -/* 8047A460-8047A464 000B54 0004+00 0/2 0/0 0/0 .rodata @6619 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6619 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x8047A460, &lit_6619); -#pragma pop - -/* 8047A464-8047A468 000B58 0004+00 0/3 0/0 0/0 .rodata @6620 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6620 = 1.0f / 100.0f; -COMPILER_STRIP_GATE(0x8047A464, &lit_6620); -#pragma pop - -/* 8047A468-8047A46C 000B5C 0004+00 0/1 0/0 0/0 .rodata @6621 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6621 = 1200.0f; -COMPILER_STRIP_GATE(0x8047A468, &lit_6621); -#pragma pop - -/* 8047A46C-8047A470 000B60 0004+00 0/1 0/0 0/0 .rodata @6622 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6622 = 3.0f / 100.0f; -COMPILER_STRIP_GATE(0x8047A46C, &lit_6622); -#pragma pop - /* 80474734-80474A08 0057B4 02D4+00 1/0 0/0 0/0 .text mode_proc_float__12daObjCarry_cFv */ -void daObjCarry_c::mode_proc_float() { - // NONMATCHING +int daObjCarry_c::mode_proc_float() { + field_0xdc4++; + gravity = 0.0f; + + cXyz sp34; + f32 speed_target; + + int spC = 0; + if (fopAcM_getWaterStream(¤t.pos, mAcch.m_gnd, &sp34, &spC, 0)) { + s16 sp8 = cM_atan2s(sp34.x, sp34.z); + + cXyz sp28(speedF * cM_ssin(current.angle.y), 0.0f, speedF * cM_scos(current.angle.y)); + sp34.normalizeZP(); + + sp34 *= 0.2f * spC; + sp28 += sp34; + + current.angle.y = cM_atan2s(sp28.x, sp28.z); + + speed_target = 0.8f * spC; + if (speed_target < 2.0f) { + speed_target = 2.0f; + } + } else { + speed_target = 0.0f; + } + + cLib_addCalc(&speedF, speed_target, 0.05f, 0.1f, 0.01f); + cLib_addCalc0(&speed.y, 1.0f, 0.2f); + + fopAcM_posMoveF(this, mStts.GetCCMoveP()); + + cXyz sp1C(current.pos); + int temp_r27 = fopAcM_getWaterY(¤t.pos, &sp1C.y); + f32 temp_f28 = field_0xdc8 * cM_ssin(field_0xdc4 * 1000); + + if (temp_r27 != 0) { + current.pos.y = sp1C.y - data().field_0x24; + cLib_addCalc2(&field_0xdc8, 0.5f, 0.05f, 1.0f); + current.pos.y += temp_f28; + } + + f32 var_f30 = 800.0f; + f32 var_f29 = 800.0f; + + if (mCyl.ChkCoHit() && field_0xdac == 0) { + var_f30 = 1200.0f; + var_f29 = 1200.0f; + } + + cLib_addCalc2(&field_0xd5c, var_f30, 0.03f, 100.0f); + cLib_addCalc2(&field_0xd60, var_f29, 0.03f, 100.0f); + + field_0xd64 = field_0xd5c * cM_ssin(field_0xdc4 * 1200); + field_0xd66 = field_0xd60 * cM_ssin(field_0xdc4 * 800); + shape_angle.x = field_0xd64; + shape_angle.z = field_0xd66; + return 1; } -/* ############################################################################################## */ -/* 8047A470-8047A474 000B64 0004+00 0/1 0/0 0/0 .rodata @6683 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6683 = -5.0f; -COMPILER_STRIP_GATE(0x8047A470, &lit_6683); -#pragma pop - -/* 8047A474-8047A478 000B68 0004+00 0/2 0/0 0/0 .rodata @6684 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6684 = 5.0f; -COMPILER_STRIP_GATE(0x8047A474, &lit_6684); -#pragma pop - -/* 8047A478-8047A47C 000B6C 0004+00 0/3 0/0 0/0 .rodata @6685 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6685 = -15.0f; -COMPILER_STRIP_GATE(0x8047A478, &lit_6685); -#pragma pop - -/* 8047A47C-8047A480 000B70 0004+00 0/2 0/0 0/0 .rodata @6686 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6686 = 13.0f; -COMPILER_STRIP_GATE(0x8047A47C, &lit_6686); -#pragma pop - -/* 8047A480-8047A484 000B74 0004+00 0/2 0/0 0/0 .rodata @6687 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_6687 = -0.25f; -COMPILER_STRIP_GATE(0x8047A480, &lit_6687); -#pragma pop - /* 80474A08-80474B8C 005A88 0184+00 2/2 0/0 0/0 .text mode_init_sink__12daObjCarry_cFv */ void daObjCarry_c::mode_init_sink() { - // NONMATCHING + mAcch.ClrMoveBGOnly(); + mAcch.ClrGrndNone(); + + mCyl.OffAtSPrmBit(1); + mCyl.OnTgSPrmBit(1); + mCyl.OnCoSPrmBit(0x10); + + cLib_offBit(attention_info.flags, 0x10); + + field_0xda8 = 0; + mStts.SetWeight(data().m_colliderWeight); + + if (mMode == MODE_CARRY && 0.0f != speedF) { + speedF = cLib_minMaxLimit(speedF, -5.0f - KREG_F(2), 5.0f + KREG_F(2)); + speed.y = cLib_minMaxLimit(speed.y, -15.0f - KREG_F(3), 5.0f + KREG_F(4)); + } else { + speedF = cLib_minMaxLimit(speedF, -5.0f - KREG_F(2), 5.0f + KREG_F(2)); + speed.y = cLib_minMaxLimit(speed.y, -5.0f - KREG_F(3), 13.0f + KREG_F(4)); + } + + gravity = -0.25f + KREG_F(5); + if (prm_chk_type_ironball()) { + mAcch.ClrIronBall(); + } + + mMode = MODE_SINK; } /* 80474B8C-80474D64 005C0C 01D8+00 1/0 0/0 0/0 .text mode_proc_sink__12daObjCarry_cFv */ -void daObjCarry_c::mode_proc_sink() { - // NONMATCHING -} +int daObjCarry_c::mode_proc_sink() { + cXyz sp24; + f32 speed_target; + int sp8 = 0; + if (fopAcM_getWaterStream(¤t.pos, mAcch.m_gnd, &sp24, &sp8, 0)) { + s16 var_r27 = cM_atan2s(sp24.x, sp24.z); -/* ############################################################################################## */ -/* 8047A484-8047A488 000B78 0004+00 1/1 0/0 0/0 .rodata @6757 */ -SECTION_RODATA static f32 const lit_6757 = -6.0f; -COMPILER_STRIP_GATE(0x8047A484, &lit_6757); + cXyz sp18(speedF * cM_ssin(current.angle.y), 0.0f, speedF * cM_scos(current.angle.y)); + sp24.normalizeZP(); + sp18 += sp24; + + current.angle.y = cM_atan2s(sp18.x, sp18.z); + speed_target = 0.8f * sp8; + if (speed_target < 2.0f) { + speed_target = 2.0f; + } + } else { + speed_target = 0.0f; + } + + cLib_addCalc(&speedF, speed_target, 0.05f, 0.1f, 0.01f); + speed.y = cLib_minMaxLimit(speed.y, -15.0f - KREG_F(3), 13.0f + KREG_F(4)); + + if (mAcch.ChkGroundHit()) { + speedF *= 0.9f; + } + + if (chkWaterLineIn()) { + gravity = -0.25f + KREG_F(5); + } else { + gravity = data().m_gravity; + } + + fopAcM_posMoveF(this, mStts.GetCCMoveP()); + + if (mAcch.ChkGroundHit()) { + cLib_onBit(attention_info.flags, 0x10); + } else { + cLib_offBit(attention_info.flags, 0x10); + } + + field_0xcec = current.pos.y; + return 1; +} /* 80474D64-80474E08 005DE4 00A4+00 1/1 0/0 0/0 .text mode_init_yogan__12daObjCarry_cFv */ void daObjCarry_c::mode_init_yogan() { - // NONMATCHING + mAcch.ClrMoveBGOnly(); + mAcch.ClrGrndNone(); + + mCyl.OffAtSPrmBit(1); + mCyl.OnCoSPrmBit(0x10); + + cLib_offBit(attention_info.flags, 0x10); + + mStts.SetWeight(data().m_colliderWeight); + + fopAcM_SetGravity(this, -2.0f); + fopAcM_SetMaxFallSpeed(this, -6.0f); + + if (prm_chk_type_ironball()) { + mAcch.ClrIronBall(); + } + + mMode = MODE_YOGAN; } -/* ############################################################################################## */ -/* 8047A488-8047A48C 000B7C 0004+00 1/1 0/0 0/0 .rodata @6767 */ -SECTION_RODATA static f32 const lit_6767 = 200.0f; -COMPILER_STRIP_GATE(0x8047A488, &lit_6767); - -/* 8047A48C-8047A490 000B80 0004+00 1/1 0/0 0/0 .rodata @6768 */ -SECTION_RODATA static f32 const lit_6768 = 13.0f / 20.0f; -COMPILER_STRIP_GATE(0x8047A48C, &lit_6768); - /* 80474E08-80474E98 005E88 0090+00 1/0 0/0 0/0 .text mode_proc_yogan__12daObjCarry_cFv */ -void daObjCarry_c::mode_proc_yogan() { - // NONMATCHING +int daObjCarry_c::mode_proc_yogan() { + bool temp_r30 = mAcch.m_wtr.GetHeight() > 200.0f + current.pos.y; + bool gnd_landing = mAcch.ChkGroundLanding(); + + speedF *= 0.65f; + fopAcM_posMoveF(this, NULL); + + if (temp_r30 || gnd_landing) { + fopAcM_delete(this); + } + + return 1; } /* 80474E98-80474EA0 005F18 0008+00 1/0 0/0 0/0 .text mode_proc_magne__12daObjCarry_cFv */ -bool daObjCarry_c::mode_proc_magne() { - return true; +int daObjCarry_c::mode_proc_magne() { + return 1; } /* 80474EA0-80474EA8 005F20 0008+00 1/0 0/0 0/0 .text mode_proc_magneCarry__12daObjCarry_cFv */ -bool daObjCarry_c::mode_proc_magneCarry() { - return true; +int daObjCarry_c::mode_proc_magneCarry() { + return 1; } /* 80474EA8-80474FA8 005F28 0100+00 1/1 0/0 0/0 .text mode_init_boomCarry__12daObjCarry_cFv */ void daObjCarry_c::mode_init_boomCarry() { - // NONMATCHING + mAcch.ClrMoveBGOnly(); + mAcch.ClrGrndNone(); + + mCyl.OffAtSPrmBit(1); + mCyl.OnTgSPrmBit(1); + mCyl.OnCoSPrmBit(1); + mCyl.OnCoSPrmBit(0x10); + + cLib_offBit(attention_info.flags, 0x10); + mCanCrashRoll = false; + + gravity = calc_gravity(); + fopAcM_SetMaxFallSpeed(this, -100.0f); + + mStts.SetWeight(data().m_colliderWeight); + mCyl.GetTgHitGObj(); + mBoomerangMove.initOffset(¤t.pos); + + if (field_0xdb0 == 1) { + field_0xdb0 = 0; + fopAcM_OffCarryType(this, fopAcM_CARRY_TYPE_1); + field_0xd7a = 1; + } + + if (prm_chk_type_ironball()) { + mAcch.ClrIronBall(); + } + + mMode = MODE_BOOM_CARRY; } /* 80474FA8-80475014 006028 006C+00 1/0 0/0 0/0 .text mode_proc_boomCarry__12daObjCarry_cFv */ -void daObjCarry_c::mode_proc_boomCarry() { - // NONMATCHING +int daObjCarry_c::mode_proc_boomCarry() { + if (!mBoomerangMove.posMove(¤t.pos, &shape_angle.y, this, 0x1C00)) { + if (fopAcM_checkCarryNow(this)) { + mode_init_carry(); + } else { + mode_init_wait(); + } + } + + return 1; } /* 80475014-804750C8 006094 00B4+00 1/1 0/0 0/0 .text mode_init_growth__12daObjCarry_cFv */ void daObjCarry_c::mode_init_growth() { - // NONMATCHING + mAcch.ClrMoveBGOnly(); + mAcch.ClrGrndNone(); + + mCyl.OffAtSPrmBit(1); + mCyl.OnTgSPrmBit(1); + mCyl.OnCoSPrmBit(1); + mCyl.OnCoSPrmBit(0x10); + + cLib_offBit(attention_info.flags, 0x10); + field_0xdb0 = 1; + + scale.setall(0.0f); + field_0xd79 = 2; + mStts.SetWeight(data().m_colliderWeight); + mMode = MODE_GROWTH; } /* 804750C8-8047515C 006148 0094+00 1/0 0/0 0/0 .text mode_proc_growth__12daObjCarry_cFv */ -void daObjCarry_c::mode_proc_growth() { - // NONMATCHING +int daObjCarry_c::mode_proc_growth() { + f32 sp8 = scale.x; + f32 temp_f31 = cLib_addCalc(&sp8, data().scale, 0.05f, 0.1f, 0.01f); + scale.setall(sp8); + + if (0.0f == temp_f31) { + field_0xcf3 = 10; + field_0xdb1 = 1; + mode_init_wait(); + } + + return 1; } /* 8047515C-80475164 0061DC 0008+00 1/0 0/0 0/0 .text mode_proc_end__12daObjCarry_cFv */ -bool daObjCarry_c::mode_proc_end() { - return true; +int daObjCarry_c::mode_proc_end() { + return 1; } /* 80475164-80475210 0061E4 00AC+00 1/1 0/0 0/0 .text mode_init_dbDrop__12daObjCarry_cFUc */ void daObjCarry_c::mode_init_dbDrop(u8 param_0) { - // NONMATCHING + mAcch.ClrMoveBGOnly(); + mAcch.ClrGrndNone(); + + mCyl.OffAtSPrmBit(1); + mCyl.OnCoSPrmBit(0x10); + mCyl.OffTgSPrmBit(1); + + cLib_offBit(attention_info.flags, 0x10); + + fopAcM_SetMaxFallSpeed(this, -100.0f); + mStts.SetWeight(data().m_colliderWeight); + gravity = calc_gravity(); + + field_0xd75 = 1; + field_0xd79 = 0; + mMode = MODE_DB_DROP; } /* 80475210-80475238 006290 0028+00 1/0 0/0 0/0 .text mode_proc_dbDrop__12daObjCarry_cFv */ -void daObjCarry_c::mode_proc_dbDrop() { - // NONMATCHING +int daObjCarry_c::mode_proc_dbDrop() { + fopAcM_posMoveF(this, mStts.GetCCMoveP()); + return 1; } /* 80475238-80475354 0062B8 011C+00 1/1 0/0 0/0 .text mode_init_hookCarry__12daObjCarry_cFv */ void daObjCarry_c::mode_init_hookCarry() { - // NONMATCHING + mAcch.ClrMoveBGOnly(); + mAcch.ClrGrndNone(); + + mCyl.OffAtSPrmBit(1); + mCyl.OnTgSPrmBit(1); + mCyl.OnCoSPrmBit(1); + mCyl.OnCoSPrmBit(0x10); + + cLib_offBit(attention_info.flags, 0x10); + mCanCrashRoll = false; + + gravity = calc_gravity(); + fopAcM_SetMaxFallSpeed(this, -100.0f); + mStts.SetWeight(data().m_colliderWeight); + + mCyl.GetTgHitGObj(); + mBoomerangMove.initOffset(¤t.pos); + + if (prm_chk_type_ironball()) { + mAcch.ClrIronBall(); + } else if (prm_chk_type_lightball() || mType == TYPE_LV8_BALL) { + mSound.startCollisionSE(Z2SE_HIT_HOOKSHOT_STICK, 0, NULL); + } + + mMode = MODE_HOOK_CARRY; } /* 80475354-80475384 0063D4 0030+00 1/0 0/0 0/0 .text mode_proc_hookCarry__12daObjCarry_cFv */ -void daObjCarry_c::mode_proc_hookCarry() { - // NONMATCHING +int daObjCarry_c::mode_proc_hookCarry() { + if (!fopAcM_checkHookCarryNow(this)) { + mode_init_wait(); + } + + return 1; } /* 80475384-80475450 006404 00CC+00 2/2 0/0 0/0 .text mode_init_fit__12daObjCarry_cFv */ void daObjCarry_c::mode_init_fit() { - // NONMATCHING + mAcch.ClrMoveBGOnly(); + mAcch.ClrGrndNone(); + + mCyl.OffAtSPrmBit(1); + mCyl.OnTgSPrmBit(1); + mCyl.OnCoSPrmBit(0x10); + + cLib_offBit(attention_info.flags, 0x10); + fopAcM_OffStatus(this, 0x80000); + field_0xda8 = 0; + + speedF = 0.0f; + gravity = data().m_gravity; + fopAcM_SetMaxFallSpeed(this, -100.0f); + mStts.SetWeight(0xFF); + + if (prm_chk_type_ironball()) { + mAcch.ClrIronBall(); + } + + mMode = MODE_FIT; } /* 80475450-80475478 0064D0 0028+00 1/0 0/0 0/0 .text mode_proc_fit__12daObjCarry_cFv */ -void daObjCarry_c::mode_proc_fit() { - // NONMATCHING +int daObjCarry_c::mode_proc_fit() { + fopAcM_posMoveF(this, NULL); + return 1; } /* 80475478-804754D0 0064F8 0058+00 1/0 0/0 0/0 .text mode_proc_controled__12daObjCarry_cFv */ -void daObjCarry_c::mode_proc_controled() { - // NONMATCHING +int daObjCarry_c::mode_proc_controled() { + calc_rot_call(); + setBaseMtx(); + field_0xdb9 = mCtrl; + field_0xdec = current.pos; + return 1; } /* 804754D0-80475598 006550 00C8+00 1/1 0/0 0/0 .text mode_init_resetLightBall__12daObjCarry_cFv */ void daObjCarry_c::mode_init_resetLightBall() { - // NONMATCHING + mAcch.ClrMoveBGOnly(); + mAcch.ClrGrndNone(); + + mCyl.OffAtSPrmBit(1); + mCyl.OffTgSPrmBit(1); + mCyl.OnCoSPrmBit(0x10); + + cLib_offBit(attention_info.flags, 0x10); + field_0xda8 = 0; + + speedF = 0.0f; + speed.setall(0.0f); + + mStts.ClrCcMove(); + + gravity = data().m_gravity; + fopAcM_SetMaxFallSpeed(this, -100.0f); + mStts.SetWeight(data().m_colliderWeight); + + mMode = MODE_RESET_LIGHTBALL; } /* 80475598-80475618 006618 0080+00 1/0 0/0 0/0 .text mode_proc_resetLightBall__12daObjCarry_cFv */ -void daObjCarry_c::mode_proc_resetLightBall() { - // NONMATCHING +int daObjCarry_c::mode_proc_resetLightBall() { + if (cLib_chaseF(&scale.x, 1.0f, 0.05f)) { + field_0xcf3 = 10; + field_0xdb1 = 1; + mode_init_wait(); + } + + scale.y = scale.x; + scale.z = scale.x; + fopAcM_posMoveF(this, NULL); + return 1; } /* 80475618-8047567C 006698 0064+00 1/1 0/0 0/0 .text chkSinkAll__12daObjCarry_cFv */ -void daObjCarry_c::chkSinkAll() { - // NONMATCHING +BOOL daObjCarry_c::chkSinkAll() { + return mAcch.m_wtr.GetHeight() > current.pos.y + data().field_0x2c * 2.0f; } /* 8047567C-804756D4 0066FC 0058+00 3/3 0/0 0/0 .text chkWaterLineIn__12daObjCarry_cFv */ -void daObjCarry_c::chkWaterLineIn() { - // NONMATCHING +BOOL daObjCarry_c::chkWaterLineIn() { + return mAcch.m_wtr.GetHeight() > current.pos.y + data().field_0x24; } /* 804756D4-8047573C 006754 0068+00 2/2 0/0 0/0 .text chkSinkObj__12daObjCarry_cFv */ -void daObjCarry_c::chkSinkObj() { - // NONMATCHING +BOOL daObjCarry_c::chkSinkObj() { + return data().m_gravity + data().m_Buoyancy <= 0.0f; } -/* ############################################################################################## */ -/* 8047A490-8047A494 000B84 0004+00 0/1 0/0 0/0 .rodata @7451 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7451 = 8.0f; -COMPILER_STRIP_GATE(0x8047A490, &lit_7451); -#pragma pop - -/* 8047A494-8047A498 000B88 0004+00 0/1 0/0 0/0 .rodata @7452 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7452 = 1000.0f; -COMPILER_STRIP_GATE(0x8047A494, &lit_7452); -#pragma pop - -/* 8047A498-8047A49C 000B8C 0004+00 0/1 0/0 0/0 .rodata @7453 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_7453 = 900.0f; -COMPILER_STRIP_GATE(0x8047A498, &lit_7453); -#pragma pop - /* 8047573C-80476618 0067BC 0EDC+00 1/1 0/0 0/0 .text bg_check__12daObjCarry_cFv */ +// NONMATCHING - regalloc, equivalent? void daObjCarry_c::bg_check() { - // NONMATCHING -} + bool roof_hit = mAcch.ChkRoofHit(); + bool wall_hit = mAcch.ChkWallHit(); + bool gnd_landing = mAcch.ChkGroundLanding(); + bool gnd_hit = mAcch.ChkGroundHit(); + bool water_hit = mAcch.ChkWaterHit(); + bool water_in = mAcch.ChkWaterIn(); -/* ############################################################################################## */ -/* 8047A4BC-8047A4BC 000BB0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8047A62D = "R_SP160"; -#pragma pop + if (wall_hit && field_0xe0d == 0) { + cM3dGPla spA0; + bool sp10 = dComIfG_Bgsp().GetTriPla(mAcchCir, &spA0); + + f32 var_f27 = 0.0f; + if (sp10 != 0) { + var_f27 = speed.inprod(spA0.mNormal); + } + + if (var_f27 < 0.0f) { + if (speed.abs() > 8.0f) { + f32 sp30 = field_0xd1c.y; + cXyz sp94(speed); + cXyz sp88(speed); + + f32 var_f31 = data().field_0x14; + if (mCannon) { + var_f31 = 0.05f; + } + + switch (dComIfG_Bgsp().GetPolyAtt0(mAcchCir)) { + case 13: + if (mType == TYPE_IRON_BALL && !mCannon) { + var_f31 = 0.2f; + } + /* fallthrough */ + case 8: + if (mType == TYPE_IRON_BALL) { + if (!mCannon) { + var_f31 = 0.2f; + } + + cXyz size(1.0f + KREG_F(10), 1.0f + KREG_F(10), 1.0f + KREG_F(10)); + dComIfGp_particle_set(0xAE3, ¤t.pos, ¤t.angle, &size); + mDoAud_seStart(Z2SE_OBJ_IRONBALL_HIT_ICE, ¤t.pos, (u32)std::fabs(speedF), 0); + // "Iron Ball: Ice Wall Hit SE<%d>\n" + OS_REPORT("鉄球:氷壁ヒットSE<%d>\n", (u32)std::fabs(speedF)); + } + break; + default: + if (mType == TYPE_IRON_BALL) { + mDoAud_seStart(Z2SE_OBJ_IRONBALL_HIT, ¤t.pos, std::fabs(speedF), 0); + // "Iron Ball: Wall Hit SE<%d>\n" + OS_REPORT("鉄球:壁ヒットSE<%d>\n", (u32)std::fabs(speedF)); + } + break; + } + + bound(&sp94, mAcchCir, var_f31); + speed.set(sp94); + speed.y = sp88.y; + speedF = sp94.absXZ(); + current.angle.y = cM_atan2s(sp94.x, sp94.z); + } else { + speedF = 0.0f; + } + } + } + + if (gnd_landing) { + f32 temp_f30 = field_0xd1c.y; + + if (speed.abs() > 1.0f) { + f32 var_f29 = data().field_0x14; + f32 var_f28 = data().field_0x10; + + switch (dComIfG_Bgsp().GetPolyAtt0(mAcch.m_gnd)) { + case 3: + var_f29 = 0.1f; + var_f28 = 0.1f; + break; + case 13: + if (mType == TYPE_IRON_BALL) { + var_f29 = 0.2f; + var_f28 = 0.2f; + + if (std::fabs(field_0xd1c.y) > 10.0f) { + cXyz sp70(0.9f + KREG_F(10), 0.9f + KREG_F(10), 0.9f + KREG_F(10)); + dComIfGp_particle_setPolyColor(0x881F, mAcch.m_gnd, ¤t.pos, &tevStr, ¤t.angle, &sp70, 0, NULL, -1, NULL); + dComIfGp_particle_setPolyColor(0x8820, mAcch.m_gnd, ¤t.pos, &tevStr, ¤t.angle, &sp70, 0, NULL, -1, NULL); + } + } + break; + default: + if (mType == TYPE_IRON_BALL && std::fabs(field_0xd1c.y) > 10.0f) { + cXyz sp64(0.9f + KREG_F(10), 0.9f + KREG_F(10), 0.9f + KREG_F(10)); + dComIfGp_particle_setPolyColor(0xE7, mAcch.m_gnd, ¤t.pos, &tevStr, ¤t.angle, &sp64, 0, NULL, -1, NULL); + } + break; + } + + bound(&speed, mAcch.m_gnd, var_f29); + speedF = std::sqrt((speed.x * speed.x) + (speed.z * speed.z)); + + if (chkWaterLineIn()) { + speed.y = 0.0f; + } else { + speed.y = -temp_f30 * var_f28; + } + + if (std::fabs(speed.y) < 5.0f) { + speed.y = 0.0f; + } + } + + if (mType == TYPE_IRON_BALL) { + switch (dComIfG_Bgsp().GetPolyAtt0(mAcch.m_gnd)) { + case 13: { + u32 sp2C = std::sqrt((speedF * speedF) + (speed.y * speed.y)); + mDoAud_seStart(Z2SE_OBJ_IRONBALL_HIT_SNOW, ¤t.pos, std::fabs(temp_f30), 0); + break; + } + case 8: { + u32 sp2C = std::sqrt((speedF * speedF) + (speed.y * speed.y)); + mDoAud_seStart(Z2SE_OBJ_IRONBALL_HIT_ICE, ¤t.pos, std::fabs(temp_f30), 0); + break; + } + default: + if (!fopAcM_checkCarryNow(this)) { + mDoAud_seStart(Z2SE_OBJ_IRONBALL_HIT, ¤t.pos, std::fabs(temp_f30), 0); + } + break; + } + } + } + + if (mMode == MODE_WAIT || mMode == MODE_WALK || mMode == MODE_DROP || mMode == MODE_DB_DROP || mMode == MODE_CARRY) { + f32 water_height = mAcch.m_wtr.GetHeight(); + + if (water_hit) { + f32 sp28 = speed.y; + + int poly_att = dComIfG_Bgsp().GetPolyAtt0(mAcch.m_wtr); + switch (poly_att) { + default: + case 7: + case 11: + if (chkWaterLineIn() && mMode != MODE_CARRY) { + if (chkSinkObj()) { + mode_init_sink(); + } else { + mode_init_float(); + } + } + + if (water_in && field_0xdad == 0) { + cXyz pos(current.pos); + pos.y = water_height; + + if (sp28 < -15.0f) { + fopKyM_createWpillar(&pos, data().field_0x88, 0); + se_fall_water(); + } else { + daPy_py_c* player = daPy_getPlayerActorClass(); + if (mMode != MODE_CARRY || (mMode == MODE_CARRY && player->speedF < 10.0f)) { + se_put_water(); + } + } + } + break; + case 6: + if (chkWaterLineIn()) { + mode_init_yogan(); + } + + if (water_in && field_0xdad == 0) { + cXyz pos(current.pos.x, water_height, current.pos.z); + cXyz size(data().field_0x8c, data().field_0x8c, data().field_0x8c); + dComIfGp_particle_set(0x8757, &pos, &tevStr, NULL, &size); + dComIfGp_particle_set(0x8758, &pos, &tevStr, NULL, &size); + } + break; + } + } + + if (gnd_landing && !chkWaterLineIn() && (mMode == MODE_DROP || mMode == MODE_DB_DROP)) { + if (mType == TYPE_BOKKURI) { + field_0xd5c = 4000.0f + cM_rndF(1000.0f); + field_0xd60 = 3000.0f + cM_rndF(900.0f); + field_0xd68 = 3000; + } + mode_init_walk(0); + } + } else if ((mMode == MODE_FLOAT || mMode == MODE_SINK) && ((gnd_hit && !chkWaterLineIn()) || !water_in)) { + f32 sp1C = speedF; + f32 sp18 = speed.y; + mode_init_walk(0); + + if (water_in == 0) { + speedF = sp1C; + speed.y = sp18; + } + } + + if (gnd_hit) { + if (field_0xcf3 != 0) { + field_0xcf3--; + } else if ((mMode == MODE_WALK || mMode == MODE_DROP || mMode == MODE_DB_DROP || mMode == MODE_WAIT || mMode == MODE_SINK) && field_0xdae == 0 && field_0xdb1 == 0 && field_0xcf3 == 0) { + if (mType != TYPE_IRON_BALL) { + se_put(NULL); + } + field_0xdb1 = 1; + } + } else if (field_0xdb0 == 0) { + field_0xdb1 = 0; + } + + cXyz sp34(current.pos); + sp34.y = mAcch.m_wtr.GetHeight(); + + if (water_hit && sp34.y > current.pos.y && (mMode == MODE_FLOAT || (mMode == MODE_SINK && !chkSinkAll()) || (mMode == MODE_WAIT && gnd_hit) || (mMode == MODE_WALK && gnd_hit) || (mMode == MODE_CARRY && water_in && !chkSinkAll()))) { + fopAcM_effHamonSet(&field_0xdd4, &sp34, 1.0f, 0.1f); + } + + if (mType == TYPE_IRON_BALL && roof_hit && gnd_hit) { + // "Lift: pinched!\n" + OS_REPORT("持ち上げ:挟まれました!\n"); + current.pos.y -= 50.0f; + } + + field_0xe0d = wall_hit; +} /* 80476618-80476764 007698 014C+00 2/2 0/0 0/0 .text check_bg_damage_proc_base__12daObjCarry_cFv */ -void daObjCarry_c::check_bg_damage_proc_base() { - // NONMATCHING +bool daObjCarry_c::check_bg_damage_proc_base() { + bool gnd_landing = mAcch.ChkGroundLanding(); + bool wall_hit = mAcch.ChkWallHit(); + bool var_r30 = false; + + if (gnd_landing) { + var_r30 = dComIfG_Bgsp().GetPolyAtt0(mAcch.m_gnd) != 3; + } + + if (mMode == MODE_DROP) { + if (wall_hit || var_r30) { + return 1; + } + + if (mType == TYPE_TARU) { + if (strcmp(dComIfGp_getStartStageName(), "R_SP160") == 0 && fopAcM_GetRoomNo(this) == 4 && fopAcM_lc_c::lineCheck(&old.pos, ¤t.pos, this)) { + return 1; + } + } + } + + if (var_r30 != 0) { + if (std::fabs(current.pos.y - field_0xcec) > data().field_0x54) { + return 1; + } + } + + if (mMode == MODE_BOOM_CARRY && wall_hit) { + return 1; + } + + return 0; } /* 80476764-804767C4 0077E4 0060+00 7/4 0/0 0/0 .text bg_damage_proc_kotubo__12daObjCarry_cFv */ -void daObjCarry_c::bg_damage_proc_kotubo() { - // NONMATCHING +bool daObjCarry_c::bg_damage_proc_kotubo() { + bool rt = check_bg_damage_proc_base(); + if (rt) { + obj_break(true, true, true); + fopAcM_delete(this); + } + + return rt; } /* 804767C4-804767E4 007844 0020+00 3/0 0/0 0/0 .text bg_damage_proc_ootubo__12daObjCarry_cFv */ -void daObjCarry_c::bg_damage_proc_ootubo() { - // NONMATCHING +bool daObjCarry_c::bg_damage_proc_ootubo() { + return bg_damage_proc_kotubo(); } /* 804767E4-80476804 007864 0020+00 1/0 0/0 0/0 .text bg_damage_proc_kibako__12daObjCarry_cFv */ -void daObjCarry_c::bg_damage_proc_kibako() { - // NONMATCHING +bool daObjCarry_c::bg_damage_proc_kibako() { + return bg_damage_proc_kotubo(); } /* 80476804-8047680C 007884 0008+00 1/0 0/0 0/0 .text bg_damage_proc_ironball__12daObjCarry_cFv */ @@ -3400,18 +3467,34 @@ bool daObjCarry_c::bg_damage_proc_ironball() { } /* 8047680C-8047682C 00788C 0020+00 1/0 0/0 0/0 .text bg_damage_proc_taru__12daObjCarry_cFv */ -void daObjCarry_c::bg_damage_proc_taru() { - // NONMATCHING +bool daObjCarry_c::bg_damage_proc_taru() { + return bg_damage_proc_kotubo(); } /* 8047682C-8047684C 0078AC 0020+00 1/0 0/0 0/0 .text bg_damage_proc_dokuro__12daObjCarry_cFv */ -void daObjCarry_c::bg_damage_proc_dokuro() { - // NONMATCHING +bool daObjCarry_c::bg_damage_proc_dokuro() { + return bg_damage_proc_kotubo(); } /* 8047684C-80476930 0078CC 00E4+00 1/0 0/0 0/0 .text bg_damage_proc_bokkuri__12daObjCarry_cFv */ -void daObjCarry_c::bg_damage_proc_bokkuri() { - // NONMATCHING +bool daObjCarry_c::bg_damage_proc_bokkuri() { + bool rt = check_bg_damage_proc_base(); + if (field_0xd74 != 0) { + rt = false; + } + + if (mAcch.ChkWaterHit() && mAcch.ChkWaterIn()) { + fopAcM_seStart(this, Z2SE_OBJ_BOKKURI_FALLWATER, 0); + field_0xdb3 = 1; + rt = true; + } + + if (rt) { + obj_break(true, true, true); + fopAcM_delete(this); + } + + return rt; } /* 80476930-80476938 0079B0 0008+00 2/0 0/0 0/0 .text bg_damage_proc_LightBall__12daObjCarry_cFv @@ -3426,49 +3509,251 @@ bool daObjCarry_c::bg_damage_proc_Lv8Ball() { } /* 80476940-80476A5C 0079C0 011C+00 6/6 0/0 0/0 .text obj_break__12daObjCarry_cFbbb */ -void daObjCarry_c::obj_break(bool param_0, bool param_1, bool param_2) { - // NONMATCHING +void daObjCarry_c::obj_break(bool i_createItem, bool i_cancelCarry, bool i_doBreakEff) { + int item_no = getItemNo(); + int item_bit = getItemBit(); + + if (i_createItem) { + if (getItemType() == 0) { + csXyz angle(0, home.angle.y, 0); + fopAcM_createItem(¤t.pos, item_no, item_bit, fopAcM_GetHomeRoomNo(this), &angle, NULL, 0); + } else { + csXyz angle(0, home.angle.y, 0); + fopAcM_createItemFromTable(¤t.pos, item_no, item_bit, fopAcM_GetHomeRoomNo(this), &angle, 0, NULL, NULL, NULL, false); + } + } + + if (i_cancelCarry) { + fopAcM_cancelCarryNow(this); + fopAcM_cancelHookCarryNow(this); + } + + if (i_doBreakEff) { + eff_break_call(); + se_break(NULL); + } } /* 80476A5C-80476B04 007ADC 00A8+00 1/1 0/0 0/0 .text check_cc_damage_proc_base__12daObjCarry_cFb */ -void daObjCarry_c::check_cc_damage_proc_base(bool param_0) { - // NONMATCHING +bool daObjCarry_c::check_cc_damage_proc_base(bool param_0) { + bool rt = false; + + if (mCyl.ChkAtHit()) { + mCyl.ClrAtHit(); + rt = true; + } else if (mCyl.ChkTgHit()) { + cCcD_Obj* tg_hit_obj = mCyl.GetTgHitObj(); + if (tg_hit_obj != NULL && !tg_hit_obj->ChkAtType(AT_TYPE_BOOMERANG)) { + mCyl.ClrTgHit(); + rt = true; + } + } + + return rt; } /* 80476B04-80476B68 007B84 0064+00 5/2 0/0 0/0 .text cc_damage_proc_kotubo__12daObjCarry_cFv */ -void daObjCarry_c::cc_damage_proc_kotubo() { - // NONMATCHING +bool daObjCarry_c::cc_damage_proc_kotubo() { + bool rt = check_cc_damage_proc_base(false); + if (rt) { + obj_break(true, true, true); + fopAcM_delete(this); + } + + return rt; } /* 80476B68-80476B88 007BE8 0020+00 3/0 0/0 0/0 .text cc_damage_proc_ootubo__12daObjCarry_cFv */ -void daObjCarry_c::cc_damage_proc_ootubo() { - // NONMATCHING +bool daObjCarry_c::cc_damage_proc_ootubo() { + return cc_damage_proc_kotubo(); } /* 80476B88-80476CE4 007C08 015C+00 1/0 0/0 0/0 .text cc_damage_proc_kibako__12daObjCarry_cFv */ -void daObjCarry_c::cc_damage_proc_kibako() { - // NONMATCHING +bool daObjCarry_c::cc_damage_proc_kibako() { + bool break_obj = false; + bool do_break_eff = false; + bool delete_obj = false; + + if (mCyl.ChkAtHit()) { + break_obj = true; + do_break_eff = true; + delete_obj = true; + } else if (mCyl.ChkTgHit()) { + dCcD_GObjInf* tg_hit_gobj = mCyl.GetTgHitGObj(); + if (tg_hit_gobj != NULL) { + if (!tg_hit_gobj->ChkAtType(AT_TYPE_LANTERN_SWING) && tg_hit_gobj->GetAtMtrl() == dCcD_MTRL_FIRE) { + if (mAcch.ChkGroundHit()) { + u32 params; + daObjBurnBox_c::make_prm_burnBox(¶ms, 0); + fopAcM_createChild(PROC_Obj_BurnBox, fopAcM_GetID(this), params, ¤t.pos, fopAcM_GetRoomNo(this), &shape_angle, &scale, -1, NULL); + + break_obj = true; + do_break_eff = false; + delete_obj = false; + mDeleteTimer = 5; + } else { + break_obj = true; + do_break_eff = true; + delete_obj = true; + } + } else if (!tg_hit_gobj->ChkAtType(AT_TYPE_ARROW) && !tg_hit_gobj->ChkAtType(AT_TYPE_SHIELD_ATTACK) && !tg_hit_gobj->ChkAtType(AT_TYPE_BOOMERANG)) { + break_obj = true; + do_break_eff = true; + delete_obj = true; + } + } + } + + if (break_obj) { + obj_break(true, true, do_break_eff); + } + + if (delete_obj) { + fopAcM_delete(this); + } + + return break_obj; } /* 80476CE4-80476E04 007D64 0120+00 1/0 0/0 0/0 .text cc_damage_proc_ironball__12daObjCarry_cFv */ -void daObjCarry_c::cc_damage_proc_ironball() { - // NONMATCHING +// NONMATCHING - regalloc, equivalent +bool daObjCarry_c::cc_damage_proc_ironball() { + bool var_r26 = false; + bool var_r27 = true; + + if (mAcch.ChkGroundHit() && dComIfG_Bgsp().ChkPolySafe(mAcch.m_gnd) && dComIfG_Bgsp().ChkMoveBG_NoDABg(mAcch.m_gnd) && dComIfG_Bgsp().GetActorPointer(mAcch.m_gnd)) { + s16 name = fopAcM_GetName(dComIfG_Bgsp().GetActorPointer(mAcch.m_gnd)); + if (name == PROC_Obj_YIblltray) { + var_r27 = false; + mStts.ClrCcMove(); + } + } + + if (mCyl.ChkTgHit() && var_r27) { + dCcD_GObjInf* tg_hit_gobj = mCyl.GetTgHitGObj(); + if (tg_hit_gobj != NULL && tg_hit_gobj->ChkAtType(AT_TYPE_IRON_BALL) && tg_hit_gobj->GetAtAtp() != 1 && tg_hit_gobj->GetAtAtp() != 100) { + cXyz* at_vec_p = tg_hit_gobj->GetAtVecP(); + if (at_vec_p != NULL) { + speedF = 100.0f + KREG_F(4); + current.angle.y = cM_atan2s(at_vec_p->x, at_vec_p->z); + } + } + } + + return var_r26; } /* 80476E04-80476F88 007E84 0184+00 1/0 0/0 0/0 .text cc_damage_proc_taru__12daObjCarry_cFv */ -void daObjCarry_c::cc_damage_proc_taru() { - // NONMATCHING +bool daObjCarry_c::cc_damage_proc_taru() { + bool break_obj = false; + bool do_break_eff = false; + bool delete_obj = false; + + if (mCyl.ChkAtHit()) { + mCyl.ClrAtHit(); + break_obj = true; + do_break_eff = true; + delete_obj = true; + } else if (mCyl.ChkTgHit()) { + dCcD_GObjInf* tg_hit_gobj = mCyl.GetTgHitGObj(); + if (tg_hit_gobj != NULL) { + if (!tg_hit_gobj->ChkAtType(AT_TYPE_LANTERN_SWING) && tg_hit_gobj->GetAtMtrl() == dCcD_MTRL_FIRE) { + if (mAcch.ChkGroundHit()) { + u32 params; + daObjBurnBox_c::make_prm_burnBox(¶ms, 2); + fopAcM_createChild(PROC_Obj_BurnBox, fopAcM_GetID(this), params, ¤t.pos, fopAcM_GetRoomNo(this), &shape_angle, &scale, -1, NULL); + + break_obj = true; + do_break_eff = false; + delete_obj = false; + mDeleteTimer = 5; + } else { + break_obj = true; + do_break_eff = true; + delete_obj = true; + } + } else if (!tg_hit_gobj->ChkAtType(AT_TYPE_ARROW) && !tg_hit_gobj->ChkAtType(AT_TYPE_SHIELD_ATTACK) && !tg_hit_gobj->ChkAtType(AT_TYPE_BOOMERANG)) { + mCyl.ClrTgHit(); + break_obj = true; + do_break_eff = true; + delete_obj = true; + } + } + } + + if (break_obj) { + obj_break(true, true, do_break_eff); + } + + if (delete_obj) { + fopAcM_delete(this); + } + + return break_obj; } /* 80476F88-80476FA8 008008 0020+00 1/0 0/0 0/0 .text cc_damage_proc_dokuro__12daObjCarry_cFv */ -void daObjCarry_c::cc_damage_proc_dokuro() { - // NONMATCHING +bool daObjCarry_c::cc_damage_proc_dokuro() { + return cc_damage_proc_kotubo(); } /* 80476FA8-804771B0 008028 0208+00 1/0 0/0 0/0 .text cc_damage_proc_bokkuri__12daObjCarry_cFv */ -void daObjCarry_c::cc_damage_proc_bokkuri() { - // NONMATCHING +bool daObjCarry_c::cc_damage_proc_bokkuri() { + daPy_py_c* player = daPy_getPlayerActorClass(); + bool break_obj = false; + bool var_r26 = true; + + if (mCyl.ChkAtHit()) { + break_obj = true; + var_r26 = false; + } else if (mCyl.ChkTgHit()) { + cCcD_Obj* tg_hit_obj = mCyl.GetTgHitObj(); + if (tg_hit_obj != NULL) { + if (!tg_hit_obj->ChkAtType(AT_TYPE_BOOMERANG) && !tg_hit_obj->ChkAtType(AT_TYPE_SHIELD_ATTACK)) { + break_obj = true; + } + + if (tg_hit_obj->ChkAtType(AT_TYPE_NORMAL_SWORD)) { + if (player->speedF > 10.0f) { + var_r26 = false; + } + + if (field_0xd75 != 0) { + fopAcM_seStart(this, Z2SE_OBJ_BOKKURI_HIT_ROLL, 0); + } + } + + if (tg_hit_obj->ChkAtType(AT_TYPE_SHIELD_ATTACK)) { + if (field_0xdb0 != 0) { + field_0xd7a = 0x10; + fopAcM_OffCarryType(this, fopAcM_CARRY_TYPE_1); + } + + field_0xdb0 = 0; + + if (mMode == MODE_WAIT || mMode == MODE_WALK) { + cXyz sp8 = current.pos - player->current.pos; + speedF = 25.0f; + current.angle.y = cM_atan2s(sp8.x, sp8.z); + mode_init_walk(0); + } + + fopAcM_seStart(this, Z2SE_OBJ_BOKKURI_HIT_ROLL, 0); + } + } + } + + if (field_0xd75 != 0) { + break_obj = false; + } + + if (break_obj) { + obj_break(true, true, true); + fopAcM_delete(this); + } + + return break_obj; } /* 804771B0-804771B8 008230 0008+00 2/0 0/0 0/0 .text cc_damage_proc_LightBall__12daObjCarry_cFv @@ -3482,384 +3767,695 @@ bool daObjCarry_c::cc_damage_proc_Lv8Ball() { return false; } -/* ############################################################################################## */ -/* 8047A4BC-8047A4BC 000BB0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8047A635 = "Always"; -#pragma pop - /* 804771C0-8047731C 008240 015C+00 7/7 0/0 0/0 .text eff_break_tuboBmd__12daObjCarry_cFUs4cXyz */ void daObjCarry_c::eff_break_tuboBmd(u16 param_0, cXyz param_1) { - // NONMATCHING + J3DModelData* tubo_bmd = (J3DModelData*)dComIfG_getObjectRes("Always", 0x20); + J3DAnmTexPattern* tubo_btp = (J3DAnmTexPattern*)dComIfG_getObjectRes("Always", 0x42); + + JUT_ASSERT(6963, tubo_bmd != 0); + JUT_ASSERT(6964, tubo_btp != 0); + + JPABaseEmitter* emitter = dComIfGp_particle_set(0x15C, ¤t.pos, NULL, NULL, 0xFF, &dPa_modelEcallBack::getEcallback(), fopAcM_GetRoomNo(this), NULL, NULL, ¶m_1); + + dPa_modelEcallBack::setModel(emitter, tubo_bmd, tevStr, 3, tubo_btp, param_0); + + dComIfGp_particle_set(0x15D, ¤t.pos, NULL, NULL, 0xFF, dPa_control_c::getTsuboSelectTexEcallBack(param_0), fopAcM_GetRoomNo(this), NULL, NULL, ¶m_1); } -/* ############################################################################################## */ -/* 8047A49C-8047A4A4 000B90 0006+02 1/1 0/0 0/0 .rodata particle_id$7795 */ -SECTION_RODATA static u8 const particle_id_7795[6 + 2 /* padding */] = { - 0x82, - 0xAB, - 0x82, - 0xAC, - 0x82, - 0xAD, - /* padding */ - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8047A49C, &particle_id_7795); - -/* 8047A4BC-8047A4BC 000BB0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_8047A63C = "BreakWoodBox.bmd"; -#pragma pop - /* 8047731C-8047747C 00839C 0160+00 2/2 0/0 0/0 .text eff_break_kibakoBmd__12daObjCarry_cF4cXyz */ -void daObjCarry_c::eff_break_kibakoBmd(cXyz param_0) { - // NONMATCHING +void daObjCarry_c::eff_break_kibakoBmd(cXyz i_size) { + cXyz pos(current.pos); + + J3DModelData* kibako_bmd = (J3DModelData*)dComIfG_getObjectRes("Always", "BreakWoodBox.bmd"); + JUT_ASSERT(7005, kibako_bmd != 0); + + JPABaseEmitter* emitter = dComIfGp_particle_set(0x82AF, &pos, NULL, NULL, 0xFF, &dPa_modelEcallBack::getEcallback(), fopAcM_GetRoomNo(this), NULL, NULL, &i_size); + + dPa_modelEcallBack::setModel(emitter, kibako_bmd, tevStr, 3, NULL, 0, 0); + + for (int i = 0; i < 3; i++) { + static u16 const particle_id[] = {0x82AB, 0x82AC, 0x82AD}; + dComIfGp_particle_set(particle_id[i], &pos, NULL, &i_size, 0xFF, NULL, -1, NULL, NULL, NULL); + } } /* 8047747C-804774D4 0084FC 0058+00 1/0 0/0 0/0 .text eff_break_tsubo__12daObjCarry_cFv */ void daObjCarry_c::eff_break_tsubo() { - // NONMATCHING -} + u16 var_r31 = 0; -/* ############################################################################################## */ -/* 8047A4A4-8047A4A8 000B98 0004+00 3/3 0/0 0/0 .rodata @7860 */ -SECTION_RODATA static f32 const lit_7860 = 1.5f; -COMPILER_STRIP_GATE(0x8047A4A4, &lit_7860); + cXyz spC(cXyz(1.0f, 1.0f, 1.0f)); + eff_break_tuboBmd(var_r31, spC); +} /* 804774D4-8047752C 008554 0058+00 1/0 0/0 0/0 .text eff_break_ootubo__12daObjCarry_cFv */ void daObjCarry_c::eff_break_ootubo() { - // NONMATCHING + u16 var_r31 = 1; + + cXyz spC(cXyz(1.5f, 1.5f, 1.5f)); + eff_break_tuboBmd(var_r31, spC); } /* 8047752C-80477574 0085AC 0048+00 1/0 0/0 0/0 .text eff_break_kibako__12daObjCarry_cFv */ void daObjCarry_c::eff_break_kibako() { - // NONMATCHING + cXyz size(scale); + eff_break_kibakoBmd(size); } /* 80477574-80477578 0085F4 0004+00 1/0 0/0 0/0 .text eff_break_ironball__12daObjCarry_cFv */ -void daObjCarry_c::eff_break_ironball() { - /* empty function */ -} - -/* ############################################################################################## */ -/* 8047A4A8-8047A4AC 000B9C 0004+00 1/1 0/0 0/0 .rodata @7891 */ -SECTION_RODATA static f32 const lit_7891 = 0.75f; -COMPILER_STRIP_GATE(0x8047A4A8, &lit_7891); +void daObjCarry_c::eff_break_ironball() {} /* 80477578-804775BC 0085F8 0044+00 1/0 0/0 0/0 .text eff_break_taru__12daObjCarry_cFv */ void daObjCarry_c::eff_break_taru() { - // NONMATCHING + cXyz size(0.75f, 0.75f, 0.75f); + eff_break_kibakoBmd(size); } /* 804775BC-80477614 00863C 0058+00 1/0 0/0 0/0 .text eff_break_dokuro__12daObjCarry_cFv */ void daObjCarry_c::eff_break_dokuro() { - // NONMATCHING -} + u16 var_r31 = 2; -/* ############################################################################################## */ -/* 8047A4AC-8047A4B4 000BA0 0006+02 0/1 0/0 0/0 .rodata particle_id$7914 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const particle_id_7914[6 + 2 /* padding */] = { - 0x82, - 0x68, - 0x82, - 0x69, - 0x82, - 0x6A, - /* padding */ - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x8047A4AC, &particle_id_7914); -#pragma pop + cXyz spC(cXyz(1.0f, 1.0f, 1.0f)); + eff_break_tuboBmd(var_r31, spC); +} /* 80477614-80477798 008694 0184+00 1/0 0/0 0/0 .text eff_break_bokkuri__12daObjCarry_cFv */ void daObjCarry_c::eff_break_bokkuri() { - // NONMATCHING + cXyz pos(current.pos); + pos.y += 50.0f; + + J3DModelData* tubo_bmd = (J3DModelData*)dComIfG_getObjectRes("Always", 0x20); + J3DAnmTexPattern* tubo_btp = (J3DAnmTexPattern*)dComIfG_getObjectRes("Always", 0x42); + + JUT_ASSERT(7108, tubo_bmd != 0); + JUT_ASSERT(7109, tubo_btp != 0); + + JPABaseEmitter* emitter = dComIfGp_particle_set(0x15C, ¤t.pos, NULL, NULL, 0xFF, &dPa_modelEcallBack::getEcallback(), fopAcM_GetRoomNo(this), NULL, NULL, &scale); + + dPa_modelEcallBack::setModel(emitter, tubo_bmd, tevStr, 3, tubo_btp, 5); + + for (int i = 0; i < 3; i++) { + static u16 const particle_id[] = {0x8268, 0x8269, 0x826A}; + dComIfGp_particle_set(particle_id[i], &pos, NULL, &scale, 0xFF, NULL, -1, NULL, NULL, NULL); + } } /* 80477798-804777F0 008818 0058+00 1/0 0/0 0/0 .text eff_break_kotubo2__12daObjCarry_cFv */ void daObjCarry_c::eff_break_kotubo2() { - // NONMATCHING + u16 var_r31 = 1; + + cXyz spC(cXyz(1.0f, 1.0f, 1.0f)); + eff_break_tuboBmd(var_r31, spC); } /* 804777F0-804777F4 008870 0004+00 2/0 0/0 0/0 .text eff_break_LightBall__12daObjCarry_cFv */ -void daObjCarry_c::eff_break_LightBall() { - /* empty function */ -} +void daObjCarry_c::eff_break_LightBall() {} /* 804777F4-8047784C 008874 0058+00 1/0 0/0 0/0 .text eff_break_ootubo2__12daObjCarry_cFv */ void daObjCarry_c::eff_break_ootubo2() { - // NONMATCHING + u16 var_r31 = 0; + + cXyz spC(cXyz(1.5f, 1.5f, 1.5f)); + eff_break_tuboBmd(var_r31, spC); } /* 8047784C-80477850 0088CC 0004+00 1/0 0/0 0/0 .text eff_break_Lv8Ball__12daObjCarry_cFv */ -void daObjCarry_c::eff_break_Lv8Ball() { - /* empty function */ -} +void daObjCarry_c::eff_break_Lv8Ball() {} /* 80477850-804778A8 0088D0 0058+00 1/0 0/0 0/0 .text eff_break_tsuboL8__12daObjCarry_cFv */ void daObjCarry_c::eff_break_tsuboL8() { - // NONMATCHING + u16 var_r31 = 7; + + cXyz spC(cXyz(1.0f, 1.0f, 1.0f)); + eff_break_tuboBmd(var_r31, spC); } /* 804778A8-80477900 008928 0058+00 1/0 0/0 0/0 .text eff_break_ootuboL8__12daObjCarry_cFv */ void daObjCarry_c::eff_break_ootuboL8() { - // NONMATCHING + u16 var_r31 = 7; + + cXyz spC(cXyz(1.5f, 1.5f, 1.5f)); + eff_break_tuboBmd(var_r31, spC); } /* 80477900-80477990 008980 0090+00 1/1 0/0 0/0 .text se_break__12daObjCarry_cFP13cBgS_PolyInfo */ -void daObjCarry_c::se_break(cBgS_PolyInfo* param_0) { - // NONMATCHING +void daObjCarry_c::se_break(cBgS_PolyInfo*) { + if (field_0xdb3 == 0) { + fopAcM_seStart(this, data().m_breakSound, 0); + } } /* 80477990-80477A14 008A10 0084+00 1/1 0/0 0/0 .text se_put__12daObjCarry_cFP13cBgS_PolyInfo */ -void daObjCarry_c::se_put(cBgS_PolyInfo* param_0) { - // NONMATCHING +void daObjCarry_c::se_put(cBgS_PolyInfo*) { + fopAcM_seStart(this, data().m_putSound, 0); } /* 80477A14-80477A98 008A94 0084+00 1/1 0/0 0/0 .text se_put_water__12daObjCarry_cFv */ void daObjCarry_c::se_put_water() { - // NONMATCHING + fopAcM_seStart(this, data().m_putWaterSound, 0); } /* 80477A98-80477B1C 008B18 0084+00 1/1 0/0 0/0 .text se_fall_water__12daObjCarry_cFv */ void daObjCarry_c::se_fall_water() { - // NONMATCHING + fopAcM_seStart(this, data().m_fallWaterSound, 0); } -/* ############################################################################################## */ -/* 8047A4B4-8047A4B8 000BA8 0004+00 0/1 0/0 0/0 .rodata @8198 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8198 = 0.25f; -COMPILER_STRIP_GATE(0x8047A4B4, &lit_8198); -#pragma pop - /* 80477B1C-80477FE0 008B9C 04C4+00 7/7 0/0 0/0 .text calc_rot_axis_base__12daObjCarry_cFUc */ void daObjCarry_c::calc_rot_axis_base(u8 param_0) { - // NONMATCHING + field_0xd4c = ZeroQuat; + + if (fopAcM_checkCarryNow(this)) { + if (field_0xd7b < 0) { + mDoMtx_quatSlerp(&field_0xd3c, &ZeroQuat, &field_0xd3c, 0.25f * daPy_getLinkPlayerActorClass()->getBaseAnimeFrameRate()); + } else { + field_0xd7b--; + } + return; + } + + cXyz sp24 = current.pos - field_0xdec; + cXyz sp18(sp24.x, 0.0f, sp24.z); + + bool temp_r29 = sp24.normalizeRS(); + bool temp_r28 = sp18.normalizeRS(); + + bool var_r26 = 1; + if (temp_r29 == 0 && temp_r28 == 0) { + var_r26 = 0; + } + + if (temp_r28) { + mRotAxis = sp18; + mDoMtx_stack_c::YrotS(0x4000); + mDoMtx_stack_c::multVec(&mRotAxis, &mRotAxis); + } else if (temp_r29) { + mRotAxis = cXyz::BaseX; + } + + if (mCtrl == 0) { + if (mAcch.ChkGroundHit()) { + mRotation = data().field_0x7c * (std::fabs(speedF) + std::fabs(speed.y)); + } else { + mRotation = data().m_urnRotateFactor * (std::fabs(speedF) + std::fabs(speed.y)); + } + + field_0xd4c.x = mRotAxis.x * cM_ssin(mRotation); + field_0xd4c.y = mRotAxis.y * cM_ssin(mRotation); + field_0xd4c.z = mRotAxis.z * cM_ssin(mRotation); + field_0xd4c.w = cM_scos(mRotation); + } else { + sp24 = current.pos - field_0xdec; + current.angle.y = cM_atan2s(sp24.x, sp24.z); + + if (var_r26) { + mRotation = std::fabs(sp24.abs()) * data().m_urnRotateFactor; + + field_0xd4c.x = mRotAxis.x * cM_ssin(mRotation); + field_0xd4c.y = mRotAxis.y * cM_ssin(mRotation); + field_0xd4c.z = mRotAxis.z * cM_ssin(mRotation); + field_0xd4c.w = cM_scos(mRotation); + } + } + + field_0xd7b = param_0; } /* 80477FE0-80478004 009060 0024+00 2/0 0/0 0/0 .text calc_rot_axis_tsubo__12daObjCarry_cFv */ void daObjCarry_c::calc_rot_axis_tsubo() { - // NONMATCHING + cXyz sp20; + int var_r30 = 0; + + // NOTE: only case 0 ever reached since var_r30 is never modified + switch (var_r30) { + case 0: + calc_rot_axis_base(5); + break; + case 1: + if (mMode == MODE_DROP || mMode == MODE_SINK || mMode == MODE_YOGAN) { + calc_rot_axis_base(0); + } else { + mRotAxis = cXyz::Zero; + mRotation = 0; + } + break; + case 2: + sp20 = current.pos - old.pos; + if (!sp20.isZero()) { + mRotAxis = cXyz::BaseX; + mDoMtx_stack_c::YrotS(current.angle.y); + mDoMtx_stack_c::multVec(&mRotAxis, &mRotAxis); + } + + mRotation += (s16)(((0.5f * field_0xd70) + data().m_urnRotateFactor) * (std::fabs(speedF) + std::fabs(speed.y))); + break; + case 3: + sp20 = current.pos - old.pos; + + if (!sp20.isZero()) { + if (!mCyl.ChkCoHit()) { + mRotAxis = sp20; + mDoMtx_stack_c::YrotS(0x4000); + mDoMtx_stack_c::multVec(&mRotAxis, &mRotAxis); + } + } + + mRotation += (s16)(((0.5f * field_0xd70) + data().m_urnRotateFactor) * (std::fabs(speedF) + std::fabs(speed.y))); + break; + } } /* 80478004-80478028 009084 0024+00 3/0 0/0 0/0 .text calc_rot_axis_ootubo__12daObjCarry_cFv */ void daObjCarry_c::calc_rot_axis_ootubo() { - // NONMATCHING + calc_rot_axis_base(10); } /* 80478028-8047814C 0090A8 0124+00 2/1 0/0 0/0 .text calc_rot_axis_kibako__12daObjCarry_cFv */ void daObjCarry_c::calc_rot_axis_kibako() { - // NONMATCHING + if (fopAcM_checkCarryNow(this)) { + mRotAxis = cXyz::Zero; + mRotation = 0; + } else { + mRotAxis = cXyz::BaseX; + mDoMtx_stack_c::YrotS(current.angle.y); + mDoMtx_stack_c::multVec(&mRotAxis, &mRotAxis); + cXyz sp8 = current.pos - old.pos; + + if (mMode == MODE_DROP) { + mRotation += (s16)(speedF * ((field_0xd70 * 0.5f) + data().m_urnRotateFactor)); + } else { + mRotation = 0; + } + } } /* 8047814C-80478170 0091CC 0024+00 1/0 0/0 0/0 .text calc_rot_axis_ironball__12daObjCarry_cFv */ void daObjCarry_c::calc_rot_axis_ironball() { - // NONMATCHING + calc_rot_axis_base(10); } /* 80478170-80478190 0091F0 0020+00 1/0 0/0 0/0 .text calc_rot_axis_taru__12daObjCarry_cFv */ void daObjCarry_c::calc_rot_axis_taru() { - // NONMATCHING + calc_rot_axis_kibako(); } /* 80478190-804781B4 009210 0024+00 1/0 0/0 0/0 .text calc_rot_axis_dokuro__12daObjCarry_cFv */ void daObjCarry_c::calc_rot_axis_dokuro() { - // NONMATCHING + calc_rot_axis_base(5); } /* 804781B4-804783C0 009234 020C+00 1/0 0/0 0/0 .text calc_rot_axis_bokkuri__12daObjCarry_cFv */ void daObjCarry_c::calc_rot_axis_bokkuri() { - // NONMATCHING + if (mMode == MODE_DROP || mMode == MODE_DB_DROP) { + if (fopAcM_checkCarryNow(this)) { + if (cLib_chaseS(&mRotation, 0, 0x2000)) { + mRotAxis = cXyz::Zero; + } + } else { + cXyz sp8 = current.pos - old.pos; + if (!sp8.isZero()) { + mRotAxis = cXyz::BaseX; + mDoMtx_stack_c::YrotS(current.angle.y); + mDoMtx_stack_c::multVec(&mRotAxis, &mRotAxis); + } + + mRotation += (s16)(((0.5f * field_0xd70) + data().m_urnRotateFactor) * (std::fabs(speedF) + std::fabs(speed.y))); + } + } else if (mMode == MODE_WALK || mMode == MODE_WAIT) { + mRotAxis = cXyz::Zero; + mRotation = 0; + } else { + mRotAxis = cXyz::Zero; + mRotation = 0; + field_0xd60 = 0.0f; + field_0xd5c = 0.0f; + field_0xd68 = 0; + field_0xd66 = 0; + field_0xd64 = 0; + } } /* 804783C0-804783E4 009440 0024+00 1/0 0/0 0/0 .text calc_rot_axis_kotubo2__12daObjCarry_cFv */ void daObjCarry_c::calc_rot_axis_kotubo2() { - // NONMATCHING + calc_rot_axis_base(5); } /* 804783E4-80478408 009464 0024+00 2/0 0/0 0/0 .text calc_rot_axis_LightBall__12daObjCarry_cFv */ void daObjCarry_c::calc_rot_axis_LightBall() { - // NONMATCHING + calc_rot_axis_base(10); } /* 80478408-8047842C 009488 0024+00 1/0 0/0 0/0 .text calc_rot_axis_Lv8Ball__12daObjCarry_cFv */ void daObjCarry_c::calc_rot_axis_Lv8Ball() { - // NONMATCHING + calc_rot_axis_base(10); } /* 8047842C-80478808 0094AC 03DC+00 2/2 0/0 0/0 .text set_wind_power__12daObjCarry_cFv */ void daObjCarry_c::set_wind_power() { - // NONMATCHING + if (!fopAcM_checkCarryNow(this)) { + if (mTgCyl.ChkTgHit()) { + dCcD_GObjInf* tg_hit_gobj = mTgCyl.GetTgHitGObj(); + if (tg_hit_gobj != NULL && tg_hit_gobj->ChkAtType(AT_TYPE_LANTERN_SWING) && tg_hit_gobj->GetAtMtrl() == dCcD_MTRL_WIND) { + cXyz* at_vec_p = tg_hit_gobj->GetAtVecP(); + + s16 var_r26 = cM_atan2s(at_vec_p->x, at_vec_p->z); + f32 var_f31 = at_vec_p->absXZ() * data().m_urnWindEffRatio; + f32 temp_f30 = std::fabs(at_vec_p->y) * data().m_urnWindEffRatio; + + fopAc_ac_c* temp_r28 = mTgCyl.GetTgHitAc(); + if (var_f31 < 1.0f && temp_r28 != NULL) { + var_r26 = cM_atan2s(current.pos.x - temp_r28->current.pos.x, current.pos.z - temp_r28->current.pos.z); + var_f31 += 2.0f; + } + + cXyz sp14(speedF * cM_ssin(current.angle.y), speed.y, speedF * cM_scos(current.angle.y)); + cXyz sp8(var_f31 * cM_ssin(var_r26), temp_f30, var_f31 * cM_scos(var_r26)); + sp14 += sp8; + + speedF = std::sqrt((sp14.x * sp14.x) + (sp14.z * sp14.z)); + current.angle.y = cM_atan2s(sp14.x, sp14.z); + speed.y += temp_f30; + + if (current.pos.y > old.pos.y) { + field_0xcec = current.pos.y; + } + } + } + + mTgCyl.SetC(current.pos); + dComIfG_Ccsp()->Set(&mTgCyl); + } } /* 80478808-80478828 009888 0020+00 3/0 0/0 0/0 .text exec_proc_tsubo__12daObjCarry_cFv */ void daObjCarry_c::exec_proc_tsubo() { - // NONMATCHING + set_wind_power(); } /* 80478828-80478848 0098A8 0020+00 3/0 0/0 0/0 .text exec_proc_ootubo__12daObjCarry_cFv */ void daObjCarry_c::exec_proc_ootubo() { - // NONMATCHING + set_wind_power(); } /* 80478848-8047884C 0098C8 0004+00 1/0 0/0 0/0 .text exec_proc_kibako__12daObjCarry_cFv */ -void daObjCarry_c::exec_proc_kibako() { - /* empty function */ -} +void daObjCarry_c::exec_proc_kibako() {} /* 8047884C-804788C4 0098CC 0078+00 1/0 0/0 0/0 .text exec_proc_ironball__12daObjCarry_cFv */ void daObjCarry_c::exec_proc_ironball() { - // NONMATCHING + if (mAcch.GetGroundH() != -1000000000.0f) { + savePos(getSaveID(), current.pos); + setRoomNo(getSaveID(), fopAcM_GetRoomNo(this)); + } } /* 804788C4-804788C8 009944 0004+00 1/0 0/0 0/0 .text exec_proc_taru__12daObjCarry_cFv */ -void daObjCarry_c::exec_proc_taru() { - /* empty function */ -} +void daObjCarry_c::exec_proc_taru() {} /* 804788C8-804788CC 009948 0004+00 1/0 0/0 0/0 .text exec_proc_dokuro__12daObjCarry_cFv */ -void daObjCarry_c::exec_proc_dokuro() { - /* empty function */ -} +void daObjCarry_c::exec_proc_dokuro() {} /* 804788CC-80478C18 00994C 034C+00 1/0 0/0 0/0 .text exec_proc_bokkuri__12daObjCarry_cFv */ void daObjCarry_c::exec_proc_bokkuri() { - // NONMATCHING + switch (field_0xd79) { + case 0: + if (mAcch.ChkGroundLanding()) { + field_0xd79 = 1; + field_0xd77 = 15; + } + break; + case 1: + if (field_0xd77 != 0) { + field_0xd77--; + } + + if (field_0xd77 == 0) { + mSound.startSound(Z2SE_EN_DB_SHRINK, 0, -1); + field_0xd79 = 2; + } + break; + case 2: + cLib_chaseUC(&field_0xd76, 0, 0xFF / 24); + if (field_0xd76 == 0) { + field_0xd75 = 0; + field_0xd79 = 3; + } + break; + case 3: + break; + } + + mSound.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + + if (field_0xd7a != 0) { + if (field_0xd7a < 100) { + field_0xd7a++; + } + + field_0xd84 = (field_0xd7a - 16) / 5.0f; + if (field_0xd84 > 1.0f) { + field_0xd84 = 1.0f; + } else if (field_0xd84 < 0.0f) { + field_0xd84 = 0.0f; + } + } else { + field_0xd84 = 0.0f; + } + + if (mMode == MODE_CARRY) { + if (field_0xd7a > 16) { + cLib_addCalc0(&field_0xd5c, 0.2f, 500.0f); + cLib_addCalc0(&field_0xd60, 0.2f, 500.0f); + cLib_addCalcAngleS2(&field_0xd6a, 0, 5, 4000); + } + field_0xd68 = 0; + } else if (speedF < 10.0f) { + cLib_addCalc0(&field_0xd5c, 0.04f, 200.0f); + cLib_addCalc0(&field_0xd60, 0.04f, 200.0f); + cLib_addCalcAngleS(&field_0xd68, 0, 30, 100, 10); + } else if (mMode == MODE_WALK) { + cLib_chaseS(&field_0xd68, 300.0f * speedF, 100); + } + + field_0xd64 = field_0xd5c * cM_ssin(field_0xd04 * 2000); + field_0xd66 = field_0xd60 * cM_ssin(field_0xd04 * 2000); + field_0xd6a += field_0xd68; + + if (mMode != MODE_GROWTH) { + f32 scale_target = data().scale; + cLib_addCalc(&scale.x, scale_target, 0.1f, 0.2f, 0.1f); + cLib_addCalc(&scale.y, scale_target, 0.1f, 0.2f, 0.1f); + cLib_addCalc(&scale.z, scale_target, 0.1f, 0.2f, 0.1f); + } } /* 80478C18-80478CE4 009C98 00CC+00 2/0 0/0 0/0 .text exec_proc_LightBall__12daObjCarry_cFv */ void daObjCarry_c::exec_proc_LightBall() { - // NONMATCHING + mDalkmistInf.mPos = current.pos; + mLightAtSph.SetC(current.pos); + dComIfG_Ccsp()->Set(&mLightAtSph); + + if (mCyl.ChkTgHit() && mCyl.GetTgHitObj()) { + mSound.startCollisionSE(mCyl.GetTgHitObjHitSeID(1), 2, NULL); + } + + mSound.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); } /* 80478CE4-80478D78 009D64 0094+00 1/0 0/0 0/0 .text exec_proc_Lv8Ball__12daObjCarry_cFv */ void daObjCarry_c::exec_proc_Lv8Ball() { - // NONMATCHING + if (mCyl.ChkTgHit() && mCyl.GetTgHitObj()) { + mSound.startCollisionSE(mCyl.GetTgHitObjHitSeID(1), 2, NULL); + } + + mSound.framework(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); } /* 80478D78-80478F50 009DF8 01D8+00 1/1 0/0 0/0 .text bg_damage_proc_call__12daObjCarry_cFv */ void daObjCarry_c::bg_damage_proc_call() { - // NONMATCHING + typedef bool (daObjCarry_c::*type_func)(); + static type_func l_type_func[] = { + &daObjCarry_c::bg_damage_proc_kotubo, &daObjCarry_c::bg_damage_proc_ootubo, + &daObjCarry_c::bg_damage_proc_kibako, &daObjCarry_c::bg_damage_proc_ironball, + &daObjCarry_c::bg_damage_proc_taru, &daObjCarry_c::bg_damage_proc_dokuro, + &daObjCarry_c::bg_damage_proc_bokkuri, &daObjCarry_c::bg_damage_proc_kotubo, + &daObjCarry_c::bg_damage_proc_LightBall, &daObjCarry_c::bg_damage_proc_LightBall, + &daObjCarry_c::bg_damage_proc_ootubo, &daObjCarry_c::bg_damage_proc_Lv8Ball, + &daObjCarry_c::bg_damage_proc_kotubo, &daObjCarry_c::bg_damage_proc_ootubo, + }; + + if (field_0xdae == 0) { + field_0xdae |= (this->*l_type_func[mType])(); + } } /* 80478F50-80479128 009FD0 01D8+00 1/1 0/0 0/0 .text cc_damage_proc_call__12daObjCarry_cFv */ void daObjCarry_c::cc_damage_proc_call() { - // NONMATCHING + typedef bool (daObjCarry_c::*type_func)(); + static type_func l_type_func[] = { + &daObjCarry_c::cc_damage_proc_kotubo, &daObjCarry_c::cc_damage_proc_ootubo, + &daObjCarry_c::cc_damage_proc_kibako, &daObjCarry_c::cc_damage_proc_ironball, + &daObjCarry_c::cc_damage_proc_taru, &daObjCarry_c::cc_damage_proc_dokuro, + &daObjCarry_c::cc_damage_proc_bokkuri, &daObjCarry_c::cc_damage_proc_kotubo, + &daObjCarry_c::cc_damage_proc_LightBall, &daObjCarry_c::cc_damage_proc_LightBall, + &daObjCarry_c::cc_damage_proc_ootubo, &daObjCarry_c::cc_damage_proc_Lv8Ball, + &daObjCarry_c::cc_damage_proc_kotubo, &daObjCarry_c::cc_damage_proc_ootubo, + }; + + if (field_0xdae == 0) { + field_0xdae |= (this->*l_type_func[mType])(); + } } /* 80479128-804792D4 00A1A8 01AC+00 1/1 0/0 0/0 .text eff_break_call__12daObjCarry_cFv */ void daObjCarry_c::eff_break_call() { - // NONMATCHING -} + typedef void (daObjCarry_c::*type_func)(); + static type_func l_type_func[] = { + &daObjCarry_c::eff_break_tsubo, &daObjCarry_c::eff_break_ootubo, + &daObjCarry_c::eff_break_kibako, &daObjCarry_c::eff_break_ironball, + &daObjCarry_c::eff_break_taru, &daObjCarry_c::eff_break_dokuro, + &daObjCarry_c::eff_break_bokkuri, &daObjCarry_c::eff_break_kotubo2, + &daObjCarry_c::eff_break_LightBall, &daObjCarry_c::eff_break_LightBall, + &daObjCarry_c::eff_break_ootubo2, &daObjCarry_c::eff_break_Lv8Ball, + &daObjCarry_c::eff_break_tsuboL8, &daObjCarry_c::eff_break_ootuboL8, + }; -/* ############################################################################################## */ -/* 8047B1E0-8047B1E4 -00001 0004+00 3/3 0/0 0/0 .bss None */ -/* 8047B1E0 0001+00 data_8047B1E0 None */ -/* 8047B1E1 0001+00 data_8047B1E1 None */ -/* 8047B1E2 0002+00 data_8047B1E2 None */ -static u8 struct_8047B1E0[4]; + (this->*l_type_func[mType])(); +} /* 804792D4-80479480 00A354 01AC+00 2/2 0/0 0/0 .text calc_rot_call__12daObjCarry_cFv */ void daObjCarry_c::calc_rot_call() { - // NONMATCHING + typedef void (daObjCarry_c::*type_func)(); + static type_func l_type_func[] = { + &daObjCarry_c::calc_rot_axis_tsubo, &daObjCarry_c::calc_rot_axis_ootubo, + &daObjCarry_c::calc_rot_axis_kibako, &daObjCarry_c::calc_rot_axis_ironball, + &daObjCarry_c::calc_rot_axis_taru, &daObjCarry_c::calc_rot_axis_dokuro, + &daObjCarry_c::calc_rot_axis_bokkuri, &daObjCarry_c::calc_rot_axis_kotubo2, + &daObjCarry_c::calc_rot_axis_LightBall, &daObjCarry_c::calc_rot_axis_LightBall, + &daObjCarry_c::calc_rot_axis_ootubo, &daObjCarry_c::calc_rot_axis_Lv8Ball, + &daObjCarry_c::calc_rot_axis_tsubo, &daObjCarry_c::calc_rot_axis_ootubo, + }; + + (this->*l_type_func[mType])(); } /* 80479480-8047962C 00A500 01AC+00 1/1 0/0 0/0 .text obj_execute_proc_call__12daObjCarry_cFv */ void daObjCarry_c::obj_execute_proc_call() { - // NONMATCHING + typedef void (daObjCarry_c::*type_func)(); + static type_func l_type_func[] = { + &daObjCarry_c::exec_proc_tsubo, &daObjCarry_c::exec_proc_ootubo, + &daObjCarry_c::exec_proc_kibako, &daObjCarry_c::exec_proc_ironball, + &daObjCarry_c::exec_proc_taru, &daObjCarry_c::exec_proc_dokuro, + &daObjCarry_c::exec_proc_bokkuri, &daObjCarry_c::exec_proc_tsubo, + &daObjCarry_c::exec_proc_LightBall, &daObjCarry_c::exec_proc_LightBall, + &daObjCarry_c::exec_proc_ootubo, &daObjCarry_c::exec_proc_Lv8Ball, + &daObjCarry_c::exec_proc_tsubo, &daObjCarry_c::exec_proc_ootubo, + }; + + (this->*l_type_func[mType])(); } /* 8047962C-80479648 00A6AC 001C+00 1/1 0/0 0/0 .text setTgHitCallBack__12daObjCarry_cFv */ void daObjCarry_c::setTgHitCallBack() { - // NONMATCHING + typedef void (*TgCallBack)(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*); + static TgCallBack l_callback[] = { + TgHitCallBackBase, TgHitCallBackBase, TgHitCallBackBase, + TgHitCallBackBase, TgHitCallBackBase, TgHitCallBackBase, + TgHitCallBackBokkuri, TgHitCallBackBase, TgHitCallBackBase, + TgHitCallBackBase, TgHitCallBackBase, TgHitCallBackBase, + TgHitCallBackBase, TgHitCallBackBase, + }; + + mCyl.SetTgHitCallback(l_callback[mType]); } /* 80479648-80479664 00A6C8 001C+00 1/1 0/0 0/0 .text setCoHitCallBack__12daObjCarry_cFv */ void daObjCarry_c::setCoHitCallBack() { - // NONMATCHING + typedef void (*CoCallBack)(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*); + static CoCallBack l_callback[] = { + CoHitCallBackBase, CoHitCallBackBase, CoHitCallBackBase, + CoHitCallBackBase, CoHitCallBackBase, CoHitCallBackBase, + CoHitCallBackBokkuri, CoHitCallBackBase, CoHitCallBackBase, + CoHitCallBackBase, CoHitCallBackBase, CoHitCallBackBase, + CoHitCallBackBase, CoHitCallBackBase, + }; + + mCyl.SetCoHitCallback(l_callback[mType]); } /* 80479664-80479810 00A6E4 01AC+00 1/1 0/0 0/0 .text CreateInitCall__12daObjCarry_cFv */ -void daObjCarry_c::CreateInitCall() { - // NONMATCHING +int daObjCarry_c::CreateInitCall() { + typedef int (daObjCarry_c::*CreateInitFunc)(); + static CreateInitFunc l_func[] = { + &daObjCarry_c::CreateInit_tsubo, &daObjCarry_c::CreateInit_ootubo, + &daObjCarry_c::CreateInit_kibako, &daObjCarry_c::CreateInit_ironball, + &daObjCarry_c::CreateInit_taru, &daObjCarry_c::CreateInit_dokuro, + &daObjCarry_c::CreateInit_bokkuri, &daObjCarry_c::CreateInit_tsubo, + &daObjCarry_c::CreateInit_LightBall, &daObjCarry_c::CreateInit_LightBall, + &daObjCarry_c::CreateInit_ootubo, &daObjCarry_c::CreateInit_Lv8Ball, + &daObjCarry_c::CreateInit_tsubo, &daObjCarry_c::CreateInit_ootubo, + }; + + return (this->*l_func[mType])(); } /* 80479810-80479830 00A890 0020+00 1/0 0/0 0/0 .text daObjCarry_Draw__FP12daObjCarry_c */ -static void daObjCarry_Draw(daObjCarry_c* param_0) { - // NONMATCHING +static int daObjCarry_Draw(daObjCarry_c* i_this) { + return i_this->draw(); } /* 80479830-80479850 00A8B0 0020+00 1/0 0/0 0/0 .text daObjCarry_Execute__FP12daObjCarry_c */ -static void daObjCarry_Execute(daObjCarry_c* param_0) { - // NONMATCHING +static int daObjCarry_Execute(daObjCarry_c* i_this) { + return i_this->execute(); } /* 80479850-80479870 00A8D0 0020+00 1/0 0/0 0/0 .text daObjCarry_Delete__FP12daObjCarry_c */ -static void daObjCarry_Delete(daObjCarry_c* param_0) { - // NONMATCHING +static int daObjCarry_Delete(daObjCarry_c* i_this) { + return i_this->_delete(); } /* 80479870-80479890 00A8F0 0020+00 1/0 0/0 0/0 .text daObjCarry_Create__FP10fopAc_ac_c */ -static void daObjCarry_Create(fopAc_ac_c* param_0) { - // NONMATCHING +static int daObjCarry_Create(fopAc_ac_c* i_this) { + return ((daObjCarry_c*)i_this)->create(); } -/* 80479890-804798D8 00A910 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */ -// cCcD_GStts::~cCcD_GStts() { -extern "C" void __dt__10cCcD_GSttsFv() { - // NONMATCHING -} +/* 8047B110-8047B130 -00001 0020+00 1/0 0/0 0/0 .data l_daObjCarry_Method */ +static actor_method_class l_daObjCarry_Method = { + (process_method_func)daObjCarry_Create, (process_method_func)daObjCarry_Delete, + (process_method_func)daObjCarry_Execute, (process_method_func)NULL, + (process_method_func)daObjCarry_Draw}; -/* 804798D8-804798F4 00A958 001C+00 1/1 0/0 0/0 .text cLib_calcTimer__FPSc */ -extern "C" void func_804798D8(void* _this, s8* param_0) { - // NONMATCHING -} - -/* 804798F4-804798FC 00A974 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_804798F4() { - // NONMATCHING -} - -/* 804798FC-80479904 00A97C 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_804798FC() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 8047A4B8-8047A4BC 000BAC 0004+00 0/0 0/0 0/0 .rodata @8553 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_8553 = 1.0f / 25.0f; -COMPILER_STRIP_GATE(0x8047A4B8, &lit_8553); -#pragma pop - -/* 8047A4BC-8047A4BC 000BB0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +/* 8047B130-8047B160 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_Carry */ +extern actor_process_profile_definition g_profile_Obj_Carry = { + fpcLy_CURRENT_e, // mLayerID + 8, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_Obj_Carry, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daObjCarry_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 244, // mPriority + &l_daObjCarry_Method, // sub_method + 0x40500, // mStatus + fopAc_ACTOR_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +}; diff --git a/src/d/actor/d_a_obj_dan.cpp b/src/d/actor/d_a_obj_dan.cpp index e1dabda6bb5..85099d40c88 100644 --- a/src/d/actor/d_a_obj_dan.cpp +++ b/src/d/actor/d_a_obj_dan.cpp @@ -179,7 +179,7 @@ void daObjDAN_c::DamageAction() { break; case 1: - if (mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundHit()) { speed.y *= -0.5f; mAcch.ClrGroundLanding(); mBounceCount++; diff --git a/src/d/actor/d_a_obj_item.cpp b/src/d/actor/d_a_obj_item.cpp index ec1f32b0cb4..be533830c7d 100644 --- a/src/d/actor/d_a_obj_item.cpp +++ b/src/d/actor/d_a_obj_item.cpp @@ -244,7 +244,7 @@ void daItem_c::CreateInit() { speed = old_speed; mAcch.ClrGroundLanding(); - mAcch.i_ClrGroundHit(); + mAcch.ClrGroundHit(); mAcch.ClrWaterHit(); mAcch.ClrWaterIn(); mAcch.ClrWallHit(); @@ -726,7 +726,7 @@ void daItem_c::move_proc_call() { } bool update_pos = true; - if (mAcch.i_ChkGroundHit() && !mAcch.ChkGroundLanding() && !mAcch.ChkWallHit() && + if (mAcch.ChkGroundHit() && !mAcch.ChkGroundLanding() && !mAcch.ChkWallHit() && !dComIfG_Bgsp().ChkMoveBG_NoDABg(mAcch.m_gnd) && !mCcCyl.ChkCoHit() && mLastPos == current.pos) { @@ -1040,7 +1040,7 @@ int daItem_c::itemActionForHeart() { mAcch.CrrPos(dComIfG_Bgsp()); - if (mAcch.ChkGroundLanding() || mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundLanding() || mAcch.ChkGroundHit()) { clrFlag(FLAG_UNK_2_e); shape_angle.z = 0; fopAcM_SetSpeed(this, 0.0f, -1.0f, 0.0f); @@ -1059,7 +1059,7 @@ int daItem_c::itemActionForArrow() { mAcch.CrrPos(dComIfG_Bgsp()); bg_check(); - if (mAcch.i_ChkGroundHit() && !mAcch.ChkGroundLanding()) { + if (mAcch.ChkGroundHit() && !mAcch.ChkGroundLanding()) { fopAcM_SetSpeedF(this, 0.0f); RotateYBase(); } diff --git a/src/d/actor/d_a_obj_life_container.cpp b/src/d/actor/d_a_obj_life_container.cpp index 06a4e982736..88df1353bbe 100644 --- a/src/d/actor/d_a_obj_life_container.cpp +++ b/src/d/actor/d_a_obj_life_container.cpp @@ -212,7 +212,7 @@ void daObjLife_c::bg_check() { fopAcM_seStart(this, Z2SE_OBJ_KEY_BOUND, fabsf(mPrevSpeed.y) * 2.0f); } - if (mGndLandCount >= 2 || (!mAcch.ChkGroundLanding() && mAcch.i_ChkGroundHit())) { + if (mGndLandCount >= 2 || (!mAcch.ChkGroundLanding() && mAcch.ChkGroundHit())) { endEffect02(); } } @@ -252,7 +252,7 @@ int daObjLife_c::actionWait() { fopAcM_posMoveF(this, mCcStts.GetCCMoveP()); mAcch.CrrPos(dComIfG_Bgsp()); - if (mAcch.ChkGroundLanding() || mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundLanding() || mAcch.ChkGroundHit()) { fopAcM_SetSpeed(this, 0.0f, -1.0f, 0.0f); fopAcM_SetSpeedF(this, 0.0f); } else if (speed.y < 0.0f) { @@ -270,7 +270,7 @@ int daObjLife_c::actionWait() { mAcch.CrrPos(dComIfG_Bgsp()); bg_check(); - if (mAcch.i_ChkGroundHit()) { + if (mAcch.ChkGroundHit()) { speedF *= 0.9f; if (speedF < 1.0f) { speedF = 0.0f; diff --git a/src/d/actor/d_a_obj_movebox.cpp b/src/d/actor/d_a_obj_movebox.cpp index 93d99fd95e3..26a4b1cb622 100644 --- a/src/d/actor/d_a_obj_movebox.cpp +++ b/src/d/actor/d_a_obj_movebox.cpp @@ -1117,7 +1117,7 @@ int daObjMovebox::Act_c::Execute(Mtx** param_0) { if (mCcCyl.ChkTgHit() && hit_obj != NULL) { if (!hit_obj->ChkAtType(AT_TYPE_LANTERN_SWING) && hit_obj->GetAtMtrl() == dCcD_MTRL_FIRE) { u32 params; - daObjBurnBox_c::make_prm_burnbox(¶ms, 1); + daObjBurnBox_c::make_prm_burnBox(¶ms, 1); fopAcM_createChild(PROC_Obj_BurnBox, fopAcM_GetID(this), params, ¤t.pos, fopAcM_GetRoomNo(this), &shape_angle, &scale, -1, NULL); diff --git a/src/d/actor/d_a_obj_ss_item.cpp b/src/d/actor/d_a_obj_ss_item.cpp index 484004a6e3d..5f52d595f50 100644 --- a/src/d/actor/d_a_obj_ss_item.cpp +++ b/src/d/actor/d_a_obj_ss_item.cpp @@ -98,7 +98,7 @@ int daObj_SSItem_c::Execute() { setParam(); if (field_0xAFC != 0) { mAcch.ClrWallHit(); - mAcch.i_ClrGroundHit(); + mAcch.ClrGroundHit(); speedF = 0.0f; speed.set(0.0f, 0.0f, 0.0f); } else { diff --git a/src/d/actor/d_a_obj_swBallA.cpp b/src/d/actor/d_a_obj_swBallA.cpp index 88a081e3851..8dac5c334d7 100644 --- a/src/d/actor/d_a_obj_swBallA.cpp +++ b/src/d/actor/d_a_obj_swBallA.cpp @@ -6,6 +6,7 @@ #include "d/actor/d_a_obj_swBallA.h" #include "d/actor/d_a_player.h" #include "d/actor/d_a_obj_carry.h" +#include "d/d_com_inf_game.h" #include "JSystem/J3DGraphBase/J3DMaterial.h" #include "dol2asm.h" #include "d/d_lib.h" diff --git a/src/d/actor/d_a_obj_swBallB.cpp b/src/d/actor/d_a_obj_swBallB.cpp index 25d7f215e79..17f16de9742 100644 --- a/src/d/actor/d_a_obj_swBallB.cpp +++ b/src/d/actor/d_a_obj_swBallB.cpp @@ -6,6 +6,7 @@ #include "d/actor/d_a_obj_swBallB.h" #include "d/actor/d_a_player.h" #include "d/actor/d_a_obj_carry.h" +#include "d/d_com_inf_game.h" #include "JSystem/J3DGraphBase/J3DMaterial.h" #include "dol2asm.h" #include "d/d_lib.h" diff --git a/src/d/actor/d_a_obj_swBallC.cpp b/src/d/actor/d_a_obj_swBallC.cpp index 7b8824c5053..bf9b28b6fb4 100644 --- a/src/d/actor/d_a_obj_swBallC.cpp +++ b/src/d/actor/d_a_obj_swBallC.cpp @@ -6,6 +6,7 @@ #include "d/actor/d_a_obj_swBallB.h" #include "d/actor/d_a_obj_carry.h" #include "JSystem/J3DGraphBase/J3DMaterial.h" +#include "d/d_com_inf_game.h" #include "d/d_meter2_info.h" #include "d/d_item.h" #include "d/actor/d_a_player.h" diff --git a/src/d/actor/d_a_obj_yel_bag.cpp b/src/d/actor/d_a_obj_yel_bag.cpp index 6ca1b475a22..16e9641043e 100644 --- a/src/d/actor/d_a_obj_yel_bag.cpp +++ b/src/d/actor/d_a_obj_yel_bag.cpp @@ -141,7 +141,7 @@ int daObj_YBag_c::Execute() { gravity = daObj_YBag_Param_c::m[1]; if (local_8c != 0) { mAcch.ClrWallHit(); - mAcch.i_ClrGroundHit(); + mAcch.ClrGroundHit(); mAcch.SetWallNone(); mAcch.SetGrndNone(); speed.setall(0.0f); @@ -191,7 +191,7 @@ int daObj_YBag_c::Execute() { current.pos.y + daObj_YBag_Param_c::m[10]) { field_0x9dc.y = 0x100; - mAcch.i_ClrGroundHit(); + mAcch.ClrGroundHit(); field_0xa31 = 1; } } diff --git a/src/d/actor/d_a_sq.cpp b/src/d/actor/d_a_sq.cpp index 9a7867acda9..f2396d2db28 100644 --- a/src/d/actor/d_a_sq.cpp +++ b/src/d/actor/d_a_sq.cpp @@ -272,7 +272,7 @@ static void sq_fly(sq_class* i_this) { } cLib_addCalc2(&i_this->speedF, l_HIO.mFallSpeedXZ, 1.0f, 10.0f); - if (i_this->mAcch.i_ChkGroundHit()) { + if (i_this->mAcch.ChkGroundHit()) { i_this->mAction = sq_class::ACT_NORMAL; i_this->mMode = -1; } diff --git a/src/d/actor/d_a_swLBall.cpp b/src/d/actor/d_a_swLBall.cpp index 4e3e6fa6d71..1bcb65c6d5b 100644 --- a/src/d/actor/d_a_swLBall.cpp +++ b/src/d/actor/d_a_swLBall.cpp @@ -7,6 +7,7 @@ #include "SSystem/SComponent/c_phase.h" #include "d/actor/d_a_obj_carry.h" #include "d/actor/d_a_player.h" +#include "d/d_com_inf_game.h" #include "d/d_lib.h" #include "f_op/f_op_actor_mng.h" diff --git a/src/d/actor/d_a_tbox.cpp b/src/d/actor/d_a_tbox.cpp index 8cd0ef51768..5c4438990b3 100644 --- a/src/d/actor/d_a_tbox.cpp +++ b/src/d/actor/d_a_tbox.cpp @@ -1831,7 +1831,7 @@ void daTbox_c::mode_exec() { if (field_0x97c) { mAcch.CrrPos(dComIfG_Bgsp()); } else { - mAcch.i_ClrGroundHit(); + mAcch.ClrGroundHit(); } attention_info.position = current.pos; diff --git a/src/d/d_bg_s_acch.cpp b/src/d/d_bg_s_acch.cpp index 6f88296b7b8..658ec7c98a8 100644 --- a/src/d/d_bg_s_acch.cpp +++ b/src/d/d_bg_s_acch.cpp @@ -103,11 +103,12 @@ void dBgS_Acch::Set(cXyz* i_pos, cXyz* i_old_pos, fopAc_ac_c* i_actor, int i_tbl pm_pos = i_pos; pm_old_pos = i_old_pos; - JUT_ASSERT(pm_pos != 0); - JUT_ASSERT(pm_old_pos != 0); + JUT_ASSERT(246, pm_pos != 0); + JUT_ASSERT(247, pm_old_pos != 0); m_my_ac = i_actor; - SetActorPid(fopAcM_GetID(i_actor)); + fpc_ProcID id = fopAcM_GetID(i_actor); + SetActorPid(id); pm_speed = i_speed; m_tbl_size = i_tbl_size; pm_acch_cir = i_acchcir; @@ -134,10 +135,12 @@ void dBgS_Acch::Set(fopAc_ac_c* i_actor, int i_tbl_size, dBgS_AcchCir* i_acchcir */ void dBgS_Acch::GroundCheckInit(dBgS& i_bgs) { if (!(m_flags & 2)) { + i_bgs; // necessary to match + m_ground_h = -1000000000.0f; m_gnd.SetExtChk(*this); field_0xb4 = ChkGroundHit(); - i_ClrGroundHit(); + ClrGroundHit(); ClrGroundLanding(); ClrGroundAway(); } @@ -153,7 +156,7 @@ void dBgS_Acch::GroundCheck(dBgS& i_bgs) { if (!ChkGndThinCellingOff()) { static dBgS_RoofChk tmpRoofChk; tmpRoofChk.SetActorPid(m_gnd.GetActorPid()); - tmpRoofChk.i_SetPos(*pm_pos); + tmpRoofChk.SetPos(*pm_pos); f32 roof_chk = i_bgs.RoofChk(&tmpRoofChk); if (grnd_pos.y > roof_chk) { @@ -189,7 +192,7 @@ void dBgS_Acch::GroundCheck(dBgS& i_bgs) { } } - if (field_0xb4 && !i_ChkGroundHit()) { + if (field_0xb4 && !ChkGroundHit()) { SetGroundAway(); } } @@ -207,7 +210,7 @@ void dBgS_Acch::GroundRoofProc(dBgS& i_bgs) { m_roof.SetExtChk(*this); ClrRoofHit(); cXyz roof_pos(*pm_pos); - m_roof.i_SetPos(roof_pos); + m_roof.SetPos(roof_pos); m_roof_height = i_bgs.RoofChk(&m_roof); } } @@ -217,7 +220,7 @@ void dBgS_Acch::GroundRoofProc(dBgS& i_bgs) { void dBgS_Acch::LineCheck(dBgS& i_bgs) { dBgS_RoofChk roof_chk; roof_chk.SetActorPid(m_gnd.GetActorPid()); - roof_chk.i_SetPos(*GetOldPos()); + roof_chk.SetPos(*GetOldPos()); f32 temp_f31 = dComIfG_Bgsp().RoofChk(&roof_chk); @@ -230,12 +233,11 @@ void dBgS_Acch::LineCheck(dBgS& i_bgs) { cXyz old_pos; cXyz pos; - old_pos = *pm_old_pos; - pos = *pm_pos; + old_pos = *GetOldPos(); + pos = *GetPos(); - f32 temp_f0 = GetWallH(i); - f32 var_f2 = temp_f0; - if (temp_f31 < old_pos.y + temp_f0) { + f32 var_f2 = GetWallH(i); + if (temp_f31 < old_pos.y + var_f2) { if (var_r29) { continue; } else { @@ -272,14 +274,13 @@ void dBgS_Acch::LineCheck(dBgS& i_bgs) { cM3dGPla plane; i_bgs.GetTriPla(lin_chk, &plane); if (!cBgW_CheckBGround(plane.mNormal.y)) { - VECAdd(GetPos(), &plane.mNormal, GetPos()); - if (!cM3d_IsZero(JMAFastSqrt(plane.mNormal.x * plane.mNormal.x + - plane.mNormal.z * plane.mNormal.z))) - { + PSVECAdd(GetPos(), &plane.mNormal, GetPos()); + f32 var_f28 = JMAFastSqrt(plane.mNormal.x * plane.mNormal.x + plane.mNormal.z * plane.mNormal.z); + if (!cM3d_IsZero(var_f28)) { pm_acch_cir[i].SetWallHDirect(GetPos()->y); } - GetPos()->y -= pm_acch_cir[i].GetWallH(); + GetPos()->y -= GetWallH(i); } else { GetPos()->y -= 1.0f; GroundCheck(i_bgs); @@ -322,17 +323,17 @@ void dBgS_Acch::LineCheck(dBgS& i_bgs) { void dBgS_Acch::CrrPos(dBgS& i_bgs) { bool bvar9; if (!(m_flags & 1)) { - JUT_ASSERT(pm_pos != 0); - JUT_ASSERT(pm_old_pos != 0); + JUT_ASSERT(792, pm_pos != 0); + JUT_ASSERT(793, pm_old_pos != 0); - JUT_ASSERT(fpclassify(pm_pos->x) == 1); - JUT_ASSERT(fpclassify(pm_pos->y) == 1); - JUT_ASSERT(fpclassify(pm_pos->z) == 1); + JUT_ASSERT(833, fpclassify(pm_pos->x) == 1); + JUT_ASSERT(834, fpclassify(pm_pos->y) == 1); + JUT_ASSERT(835, fpclassify(pm_pos->z) == 1); - JUT_ASSERT(-1.0e32f < pm_pos->x && pm_pos->x < 1.0e32f); - JUT_ASSERT(-1.0e32f < pm_pos->y); - JUT_ASSERT(pm_pos->y < 1.0e32f); - JUT_ASSERT(-1.0e32f < pm_pos->z && pm_pos->z < 1.0e32f); + JUT_ASSERT(837, -1.0e32f < pm_pos->x && pm_pos->x < 1.0e32f); + JUT_ASSERT(838, -1.0e32f < pm_pos->y); + JUT_ASSERT(839, pm_pos->y < 1.0e32f); + JUT_ASSERT(840, -1.0e32f < pm_pos->z && pm_pos->z < 1.0e32f); i_bgs.MoveBgCrrPos(m_gnd, ChkGroundHit(), pm_pos, pm_angle, pm_shape_angle, false, false); @@ -398,7 +399,7 @@ void dBgS_Acch::CrrPos(dBgS& i_bgs) { roof_pos.y = pm_pos->y; roof_pos.z = pm_pos->z; - m_roof.i_SetPos(roof_pos); + m_roof.SetPos(roof_pos); m_roof_height = i_bgs.RoofChk(&m_roof); if (m_roof_height != 1000000000.0f) { @@ -441,7 +442,7 @@ void dBgS_Acch::CrrPos(dBgS& i_bgs) { } else { dBgS_RoofChk roof_chk; roof_chk.SetUnderwaterRoof(); - roof_chk.i_SetPos(*pm_pos); + roof_chk.SetPos(*pm_pos); var_f30 = i_bgs.RoofChk(&roof_chk); if (var_f30 == 1000000000.0f) { diff --git a/src/d/d_camera.cpp b/src/d/d_camera.cpp index ed1d2290a52..79964c2ea7d 100644 --- a/src/d/d_camera.cpp +++ b/src/d/d_camera.cpp @@ -3059,7 +3059,7 @@ f32 dCamera_c::getWaterSurfaceHeight(cXyz* param_0) { cXyz spF8(*param_0); dBgS_RoofChk roofchk; roofchk.SetUnderwaterRoof(); - roofchk.i_SetPos(spF8); + roofchk.SetPos(spF8); f32 roof_y = dComIfG_Bgsp().RoofChk(&roofchk); if (spF8.y < roof_y) { diff --git a/src/d/d_debug_viewer.cpp b/src/d/d_debug_viewer.cpp new file mode 100644 index 00000000000..7cbbc18c32d --- /dev/null +++ b/src/d/d_debug_viewer.cpp @@ -0,0 +1,156 @@ +#include "d/d_debug_viewer.h" +#include "d/d_com_inf_game.h" +#include "f_ap/f_ap_game.h" +#include "JSystem/J3DGraphBase/J3DDrawBuffer.h" +#include "JSystem/JUtility/JUTDbPrint.h" +#include "JSystem/JUtility/JUTReport.h" + +class dDebugPad_c { +public: + bool Active(); +}; + +extern dDebugPad_c dDebugPad; + +J3DPacket* l_drawPacketList[1000]; +int l_drawPacketListNum; + +J3DPacket* dDbVw_setDrawPacketList(J3DPacket* i_packet, int i_bufferType) { + if (i_packet == NULL) { + return NULL; + } + + if (l_drawPacketListNum >= 1000) { + delete (void*)i_packet; + return NULL; + } + + l_drawPacketList[l_drawPacketListNum++] = i_packet; + j3dSys.getDrawBuffer(i_bufferType)->entryImm(i_packet, 0); + return i_packet; +} + +void dDbVw_deleteDrawPacketList() { + for (int i = 0; i < l_drawPacketListNum; i++) { + delete (void*)l_drawPacketList[i]; + } + + l_drawPacketListNum = 0; +} + +void dDbVw_drawCube8p(int i_bufferType, cXyz* i_points, const GXColor& i_color) { + mDoExt_cube8pPacket* packet = new mDoExt_cube8pPacket(i_points, i_color); + dDbVw_setDrawPacketList(packet, i_bufferType); +} + +void dDbVw_drawCube(int i_bufferType, cXyz& i_pos, cXyz& i_size, csXyz& i_angle, const GXColor& i_color) { + mDoExt_cubePacket* packet = new mDoExt_cubePacket(i_pos, i_size, i_angle, i_color); + dDbVw_setDrawPacketList(packet, i_bufferType); +} + +void dDbVw_drawTriangle(int i_bufferType, cXyz* i_points, const GXColor& i_color, u8 i_clipZ) { + mDoExt_trianglePacket* packet = new mDoExt_trianglePacket(i_points, i_color, i_clipZ); + dDbVw_setDrawPacketList(packet, i_bufferType); +} + +void dDbVw_drawQuad(int i_bufferType, cXyz* i_points, const GXColor& i_color, u8 i_clipZ) { + mDoExt_quadPacket* packet = new mDoExt_quadPacket(i_points, i_color, i_clipZ); + dDbVw_setDrawPacketList(packet, i_bufferType); +} + +void dDbVw_drawQuad(int i_bufferType, cXyz* param_1, cXyz* param_2, cXyz* i_pos, s16 i_rotY, const GXColor& i_color, u8 i_clipZ) { + cXyz points[4]; + + points[0] = *param_1; + points[2] = *param_2; + + points[1].x = param_2->x; + points[1].y = param_1->y; + points[1].z = param_1->z; + + points[3].x = param_1->x; + points[3].y = param_1->y; + points[3].z = param_2->z; + + mDoMtx_stack_c::transS(*i_pos); + mDoMtx_stack_c::YrotM(i_rotY); + + for (int i = 0; i < 4; i++) { + mDoMtx_stack_c::multVec(&points[i], &points[i]); + } + + mDoExt_quadPacket* packet = new mDoExt_quadPacket(points, i_color, i_clipZ); + dDbVw_setDrawPacketList(packet, i_bufferType); +} + +void dDbVw_drawLine(int i_bufferType, cXyz& i_start, cXyz& i_end, const GXColor& i_color, u8 i_clipZ, u8 i_width) { + mDoExt_linePacket* packet = new mDoExt_linePacket(i_start, i_end, i_color, i_clipZ, i_width); + dDbVw_setDrawPacketList(packet, i_bufferType); +} + +void dDbVw_drawArrow(int i_bufferType, cXyz& i_pos, cXyz& param_2, const GXColor& i_color, u8 i_clipZ, u8 i_width) { + mDoExt_ArrowPacket* packet = new mDoExt_ArrowPacket(i_pos, param_2, i_color, i_clipZ, i_width); + dDbVw_setDrawPacketList(packet, i_bufferType); +} + +void dDbVw_drawPoint(int i_bufferType, cXyz& i_pos, const GXColor& i_color, u8 i_clipZ, u8 i_width) { + mDoExt_pointPacket* packet = new mDoExt_pointPacket(i_pos, i_color, i_clipZ, i_width); + dDbVw_setDrawPacketList(packet, i_bufferType); +} + +void dDbVw_drawCircle(int i_bufferType, cXyz& i_pos, f32 i_radius, const GXColor& i_color, u8 i_clipZ, u8 i_width) { + mDoExt_circlePacket* packet = new mDoExt_circlePacket(i_pos, i_radius, i_color, i_clipZ, i_width); + dDbVw_setDrawPacketList(packet, i_bufferType); +} + +void dDbVw_drawSphere(int i_bufferType, cXyz& i_pos, f32 i_size, const GXColor& i_color, u8 i_clipZ) { + mDoExt_spherePacket* packet = new mDoExt_spherePacket(i_pos, i_size, i_color, i_clipZ); + dDbVw_setDrawPacketList(packet, i_bufferType); +} + +void dDbVw_drawCylinder(int i_bufferType, cXyz& i_pos, f32 i_radius, f32 i_height, const GXColor& i_color, u8 i_clipZ) { + mDoExt_cylinderPacket* packet = new mDoExt_cylinderPacket(i_pos, i_radius, i_height, i_color, i_clipZ); + dDbVw_setDrawPacketList(packet, i_bufferType); +} + +void dDbVw_drawCylinderM(int i_bufferType, Mtx i_mtx, const GXColor& i_color, u8 i_clipZ) { + mDoExt_cylinderMPacket* packet = new mDoExt_cylinderMPacket(i_mtx, i_color, i_clipZ); + dDbVw_setDrawPacketList(packet, i_bufferType); +} + +static bool reportOK() { + return !dComIfG_isDebugMode() && !dDebugPad.Active(); +} + +static JUtility::TColor ShadowDarkColor(0, 0, 0, 0x80); +static JUtility::TColor ShadowLightColor(0xFF, 0xFF, 0xFF, 0x80); + +// NONMATCHING - string being put in stack instead of register +int dDbVw_Report(int x, int y, char const* string, ...) { + char buffer[256]; + + if (reportOK()) { + va_list list; + va_start(list, string); + vsnprintf(buffer, sizeof(buffer), string, list); + va_end(list); + + JUTDbPrint::getManager()->flush(); + + if (g_HIO.mColor & 0xF0F0F000) { + JUTDbPrint::getManager()->setCharColor(ShadowDarkColor); + } else { + JUTDbPrint::getManager()->setCharColor(ShadowLightColor); + } + + JUTReport(x + 2, y + 2, buffer); + JUTDbPrint::getManager()->flush(); + + JUTDbPrint::getManager()->setCharColor(g_HIO.mColor); + JUTReport(x, y, buffer); + JUTDbPrint::getManager()->flush(); + return 1; + } + + return 0; +} diff --git a/src/d/d_kankyo_rain.cpp b/src/d/d_kankyo_rain.cpp index 87a34369e71..d177c9b58fe 100644 --- a/src/d/d_kankyo_rain.cpp +++ b/src/d/d_kankyo_rain.cpp @@ -466,7 +466,7 @@ static BOOL overhead_bg_chk() { cXyz chkPos = camera->lookat.eye; chkPos.y += 50.0f; - roofchk.i_SetPos(chkPos); + roofchk.SetPos(chkPos); if (dComIfG_Bgsp().RoofChk(&roofchk) != 1.0e9f) { chk = true; // Outside East Castle Town @@ -504,7 +504,7 @@ static BOOL forward_overhead_bg_chk(cXyz* ppos, f32 dist) { chk_pos.y = 50.0f + camera->lookat.eye.y; *ppos = chk_pos; - roofchk.i_SetPos(chk_pos); + roofchk.SetPos(chk_pos); if (1000000000.0f != dComIfG_Bgsp().RoofChk(&roofchk)) { chk = TRUE; if (strcmp(dComIfGp_getStartStageName(), "F_SP122") == 0) { diff --git a/src/d/d_save.cpp b/src/d/d_save.cpp index 1884c81de7e..3c14b8696cb 100644 --- a/src/d/d_save.cpp +++ b/src/d/d_save.cpp @@ -7,6 +7,7 @@ #include "d/d_save_init.h" #include "JSystem/JUtility/JUTGamePad.h" #include "stdio.h" +#include "d/d_com_inf_game.h" #include "d/d_meter2_info.h" #include "d/actor/d_a_obj_carry.h" diff --git a/src/f_op/f_op_actor_mng.cpp b/src/f_op/f_op_actor_mng.cpp index 8830ea57e30..8d5dd66e521 100644 --- a/src/f_op/f_op_actor_mng.cpp +++ b/src/f_op/f_op_actor_mng.cpp @@ -2103,7 +2103,7 @@ bool fopAcM_gc_c::gndCheck(cXyz const* i_pos) { /* 8001DD1C-8001DD84 01865C 0068+00 0/0 0/0 3/3 .text roofCheck__11fopAcM_rc_cFPC4cXyz */ bool fopAcM_rc_c::roofCheck(cXyz const* i_pos) { - mRoofCheck.i_SetPos(*i_pos); + mRoofCheck.SetPos(*i_pos); mRoofY = dComIfG_Bgsp().RoofChk(&mRoofCheck); return 1000000000.0f != mRoofY; }