From 76b28bee52ec40fc68c21cb899500affff47c7e6 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Fri, 12 Jan 2024 22:46:07 -0500 Subject: [PATCH] d_a_player_main work --- include/JSystem/JUtility/JUTDataHeader.h | 3 +- include/d/actor/d_a_obj_toripost.h | 6 +- include/d/actor/d_a_player.h | 41 +- include/d/actor/d_a_player_main.h | 564 ++++++++++---------- include/d/d_com_inf_game.h | 15 + include/f_op/f_op_actor_mng.h | 2 +- include/m_Do/m_Do_ext.h | 2 +- src/d/actor/d_a_obj_toripost.cpp | 2 +- src/d/actor/d_a_player_dproc.inc | 9 +- src/d/actor/d_a_player_food.inc | 16 +- src/d/actor/d_a_player_main.cpp | 624 +++++++++++++++++------ src/d/actor/d_a_player_particle.inc | 5 +- src/d/actor/d_a_player_swim.inc | 2 +- src/d/actor/d_a_player_sword.inc | 4 +- src/d/actor/d_a_player_tact.inc | 38 +- src/f_op/f_op_actor_mng.cpp | 2 +- 16 files changed, 840 insertions(+), 495 deletions(-) diff --git a/include/JSystem/JUtility/JUTDataHeader.h b/include/JSystem/JUtility/JUTDataHeader.h index 4b4fe0ef6..857ee0f38 100644 --- a/include/JSystem/JUtility/JUTDataHeader.h +++ b/include/JSystem/JUtility/JUTDataHeader.h @@ -19,7 +19,8 @@ struct JUTDataFileHeader { // actual struct name unknown /* 0x04 */ u32 mType; /* 0x08 */ u32 mFileSize; /* 0x0C */ u32 mBlockNum; - /* 0x10 */ u8 _10[0x20 - 0x10]; + /* 0x10 */ u8 _10[0x1C - 0x10]; + /* 0x1C */ u32 mSeAnmOffset; // Only exists for some BCKs /* 0x20 */ JUTDataBlockHeader mFirstBlock; }; diff --git a/include/d/actor/d_a_obj_toripost.h b/include/d/actor/d_a_obj_toripost.h index d44d6fe26..378b5c74f 100644 --- a/include/d/actor/d_a_obj_toripost.h +++ b/include/d/actor/d_a_obj_toripost.h @@ -18,9 +18,9 @@ public: PROC_EXEC = 1 }; - void eventSet(signed char) {} - inline s32 getSendPrice() { return m_send_price[mPayType]; } - void isAnm(signed char) {} + void eventSet(s8) {} + s32 getSendPrice() { return m_send_price[mPayType]; } + void isAnm(s8) {} void modeProcInit(int) {} BOOL _createHeap(); diff --git a/include/d/actor/d_a_player.h b/include/d/actor/d_a_player.h index fe1caba62..238fdfa47 100644 --- a/include/d/actor/d_a_player.h +++ b/include/d/actor/d_a_player.h @@ -5,39 +5,6 @@ #include "d/d_particle.h" #include "d/d_cc_d.h" -class daPy_matAnm_c : public J3DMaterialAnm { -public: - daPy_matAnm_c(); - - virtual ~daPy_matAnm_c() {} - virtual void calc(J3DMaterial*) const; - - static u8 m_maba_flg; - static u8 m_eye_move_flg; - static u8 m_maba_timer; - static u8 m_morf_frame; - - static void onMabaFlg() { m_maba_flg = 1; } - static void offMabaFlg() { m_maba_flg = 0; } - static void decMabaTimer() {} - static void decMorfFrame() {} - static void getEyeMoveFlg() {} - static void getMabaFlg() {} - static void getMabaTimer() {} - static void getNowOffsetXP() {} - static void getNowOffsetYP() {} - static void offEyeMoveFlg() {} - static void onEyeMoveFlg() {} - static void setMabaTimer(u8 timer) { m_maba_timer = timer; } - static void setMorfFrame(u8) {} - static void setNowOffsetX(f32) {} - static void setNowOffsetY(f32) {} - -public: - /* 0x6C */ cXy mEyePosOld; - /* 0x74 */ cXy mEyePos; -}; // Size: 0x7C - class daPy_mtxFollowEcallBack_c : public dPa_levelEcallBack { public: void execute(JPABaseEmitter*); @@ -67,6 +34,12 @@ public: class daPy_demo_c { public: + enum { + // TODO + DEMO_LAST_e = 0x4B, + DEMO_NEW_ANM0_e = 0x200, + }; + void setDemoType(u16 pType) { mDemoType = pType; } int getDemoType() const { return mDemoType; } void setDemoMode(u32 mode) { mDemoMode = mode; } @@ -117,6 +90,7 @@ public: daPyFlg0_UNK1000000 = 0x01000000, daPyFlg0_EQUIP_HEAVY_BOOTS = 0x02000000, daPyFlg0_NO_DRAW = 0x08000000, + daPyFlg0_UNK10000000 = 0x10000000, daPyFlg0_HEAVY_STATE = 0x40000000, }; @@ -151,6 +125,7 @@ public: daPyRFlg0_ROPE_GRAB_RIGHT_HAND = 0x00000004, daPyRFlg0_GRAB_UP_END = 0x00000020, daPyRFlg0_AUTO_JUMP_LAND = 0x00000040, + daPyRFlg0_UNK80 = 0x00000080, daPyRFlg0_RIGHT_FOOT_ON_GROUND = 0x00000400, daPyRFlg0_LEFT_FOOT_ON_GROUND = 0x00000800, daPyRFlg0_FRONT_ROLL_CRASH = 0x00002000, diff --git a/include/d/actor/d_a_player_main.h b/include/d/actor/d_a_player_main.h index 7929db4bf..d526aec44 100644 --- a/include/d/actor/d_a_player_main.h +++ b/include/d/actor/d_a_player_main.h @@ -189,9 +189,42 @@ public: daPy_mtxPosFollowEcallBack_c() {} ~daPy_mtxPosFollowEcallBack_c() {} - /* 0xC */ u8 field_0xC[0x4]; + /* 0xC */ const csXyz* mpAngle; }; // Size: 0x10 +class daPy_matAnm_c : public J3DMaterialAnm { +public: + daPy_matAnm_c(); + + virtual ~daPy_matAnm_c() {} + virtual void calc(J3DMaterial*) const; + + static u8 m_maba_flg; + static u8 m_eye_move_flg; + static u8 m_maba_timer; + static u8 m_morf_frame; + + static void onMabaFlg() { m_maba_flg = 1; } + static void offMabaFlg() { m_maba_flg = 0; } + static void decMabaTimer() {} + static void decMorfFrame() {} + static void getEyeMoveFlg() {} + static void getMabaFlg() {} + static void getMabaTimer() {} + static void getNowOffsetXP() {} + static void getNowOffsetYP() {} + static void offEyeMoveFlg() {} + static void onEyeMoveFlg() {} + static void setMabaTimer(u8 timer) { m_maba_timer = timer; } + static void setMorfFrame(u8 frame) { m_morf_frame = frame; } + static void setNowOffsetX(f32) {} + static void setNowOffsetY(f32) {} + +public: + /* 0x6C */ cXy mEyePosOld; + /* 0x74 */ cXy mEyePos; +}; // Size: 0x7C + class daPy_swBlur_c : public J3DPacket { public: void initSwBlur(MtxP, int, f32, int); @@ -204,7 +237,7 @@ public: /* 0x018 */ int field_0x018; /* 0x01C */ int mBlurColorType; /* 0x020 */ f32 field_0x020; - /* 0x024 */ void* mpBlurPos; + /* 0x024 */ void* mpPosBuffer; /* 0x028 */ cXyz field_0x028; /* 0x034 */ cXyz field_0x034[60]; /* 0x304 */ cXyz field_0x304[60]; @@ -1000,225 +1033,225 @@ enum LKANM_RES_FILE_ID { // IDs and indexes are synced class daPy_lk_c : public daPy_py_c { public: enum daPy_PROC { - PROC_SCOPE_e = 0x00, - PROC_SUBJECTIVITY_e = 0x01, - PROC_CALL_e = 0x02, - PROC_CONTROLL_WAIT_e = 0x03, - PROC_WAIT_e = 0x04, - PROC_FREE_WAIT_e = 0x05, - PROC_MOVE_e = 0x06, - PROC_ATN_MOVE_e = 0x07, - PROC_ATN_ACTOR_WAIT_e = 0x08, - PROC_ATN_ACTOR_MOVE_e = 0x09, - PROC_SIDE_STEP_e = 0x0A, - PROC_SIDE_STEP_LAND_e = 0x0B, - PROC_CROUCH_DEFENSE_e = 0x0C, - PROC_CROUCH_DEFENSE_SLIP_e = 0x0D, - PROC_CROUCH_e = 0x0E, - PROC_CRAWL_START_e = 0x0F, - PROC_CRAWL_MOVE_e = 0x10, - PROC_CRAWL_AUTO_MOVE_e = 0x11, - PROC_CRAWL_END_e = 0x12, - PROC_WHIDE_READY_e = 0x13, - PROC_WHIDE_WAIT_e = 0x14, - PROC_WHIDE_MOVE_e = 0x15, - PROC_WHIDE_PEEP_e = 0x16, - PROC_WAIT_TURN_e = 0x17, - PROC_MOVE_TURN_e = 0x18, - PROC_SLIP_e = 0x19, - PROC_SLIDE_FRONT_e = 0x1A, - PROC_SLIDE_BACK_e = 0x1B, - PROC_SLIDE_FRONT_LAND_e = 0x1C, - PROC_SLIDE_BACK_LAND_e = 0x1D, - PROC_FRONT_ROLL_e = 0x1E, - PROC_FRONT_ROLL_CRASH_e = 0x1F, - PROC_NOCK_BACK_END_e = 0x20, - PROC_SIDE_ROLL_e = 0x21, - PROC_BACK_JUMP_e = 0x22, - PROC_BACK_JUMP_LAND_e = 0x23, - PROC_AUTO_JUMP_e = 0x24, - PROC_LAND_e = 0x25, - PROC_LAND_DAMAGE_e = 0x26, - PROC_FALL_e = 0x27, - PROC_SLOW_FALL_e = 0x28, - PROC_SMALL_JUMP_e = 0x29, - PROC_VERTICAL_JUMP_e = 0x2A, - PROC_HANG_START_e = 0x2B, - PROC_HANG_FALL_START_e = 0x2C, - PROC_HANG_UP_e = 0x2D, - PROC_HANG_WAIT_e = 0x2E, - PROC_HANG_MOVE_e = 0x2F, - PROC_HANG_CLIMB_e = 0x30, - PROC_HANG_WALL_CATCH_e = 0x31, - PROC_PUSH_PULL_WAIT_e = 0x32, - PROC_PUSH_MOVE_e = 0x33, - PROC_PULL_MOVE_e = 0x34, - PROC_SWIM_UP_e = 0x35, - PROC_SWIM_WAIT_e = 0x36, - PROC_SWIM_MOVE_e = 0x37, - PROC_LADDER_UP_START_e = 0x38, - PROC_LADDER_UP_END_e = 0x39, - PROC_LADDER_DOWN_START_e = 0x3A, - PROC_LADDER_DOWN_END_e = 0x3B, - PROC_LADDER_MOVE_e = 0x3C, - PROC_CLIMB_UP_START_e = 0x3D, - PROC_CLIMB_DOWN_START_e = 0x3E, - PROC_CLIMB_MOVE_UP_DOWN_e = 0x3F, - PROC_CLIMB_MOVE_SIDE_e = 0x40, - PROC_CUT_A_e = 0x41, - PROC_CUT_F_e = 0x42, - PROC_CUT_R_e = 0x43, - PROC_CUT_L_e = 0x44, - PROC_CUT_EA_e = 0x45, - PROC_CUT_EB_e = 0x46, - PROC_CUT_EX_A_e = 0x47, - PROC_CUT_EX_B_e = 0x48, - PROC_CUT_EX_MJ_e = 0x49, - PROC_CUT_KESA_e = 0x4A, - PROC_WEAPON_NORMAL_SWING_e = 0x4B, - PROC_WEAPON_SIDE_SWING_e = 0x4C, - PROC_WEAPON_FRONT_SWING_READY_e = 0x4D, - PROC_WEAPON_FRONT_SWING_e = 0x4E, - PROC_WEAPON_FRONT_SWING_END_e = 0x4F, - PROC_WEAPON_THROW_e = 0x50, - PROC_HAMMER_SIDE_SWING_e = 0x51, - PROC_HAMMER_FRONT_SWING_READY_e = 0x52, - PROC_HAMMER_FRONT_SWING_e = 0x53, - PROC_HAMMER_FRONT_SWING_END_e = 0x54, - PROC_CUT_TURN_e = 0x55, - PROC_CUT_ROLL_e = 0x56, - PROC_CUT_ROLL_END_e = 0x57, - PROC_CUT_TURN_CHARGE_e = 0x58, - PROC_CUT_TURN_MOVE_e = 0x59, - PROC_CUT_REVERSE_e = 0x5A, - PROC_JUMP_CUT_e = 0x5B, - PROC_JUMP_CUT_LAND_e = 0x5C, - PROC_BT_JUMP_e = 0x5D, - PROC_BT_JUMP_CUT_e = 0x5E, - PROC_BT_SLIDE_e = 0x5F, - PROC_BT_ROLL_e = 0x60, - PROC_BT_ROLL_CUT_e = 0x61, - PROC_BT_VERTICAL_JUMP_e = 0x62, - PROC_BT_VERTICAL_JUMP_CUT_e = 0x63, - PROC_BT_VERTICAL_JUMP_LAND_e = 0x64, - PROC_GUARD_CRASH_e = 0x65, - PROC_DAMAGE_e = 0x66, - PROC_POLY_DAMAGE_e = 0x67, - PROC_LARGE_DAMAGE_e = 0x68, - PROC_LARGE_DAMAGE_UP_e = 0x69, - PROC_LARGE_DAMAGE_WALL_e = 0x6A, - PROC_LAVA_DAMAGE_e = 0x6B, - PROC_ELEC_DAMAGE_e = 0x6C, - PROC_GUARD_SLIP_e = 0x6D, - PROC_GRAB_READY_e = 0x6E, - PROC_GRAB_UP_e = 0x6F, - PROC_GRAB_MISS_e = 0x70, - PROC_GRAB_THROW_e = 0x71, - PROC_GRAB_PUT_e = 0x72, - PROC_GRAB_WAIT_e = 0x73, - PROC_GRAB_HEAVY_WAIT_e = 0x74, - PROC_GRAB_REBOUND_e = 0x75, - PROC_ROPE_SUBJECT_e = 0x76, - PROC_ROPE_READY_e = 0x77, - PROC_ROPE_SWING_e = 0x78, - PROC_ROPE_HANG_WAIT_e = 0x79, - PROC_ROPE_UP_e = 0x7A, - PROC_ROPE_DOWN_e = 0x7B, - PROC_ROPE_SWING_START_e = 0x7C, - PROC_ROPE_MOVE_e = 0x7D, - PROC_ROPE_THROW_CATCH_e = 0x7E, - PROC_ROPE_UP_HANG_e = 0x7F, - PROC_BOOMERANG_SUBJECT_e = 0x80, - PROC_BOOMERANG_MOVE_e = 0x81, - PROC_BOOMERANG_CATCH_e = 0x82, - PROC_HOOKSHOT_SUBJECT_e = 0x83, - PROC_HOOKSHOT_MOVE_e = 0x84, - PROC_HOOKSHOT_FLY_e = 0x85, - PROC_SHIP_READY_e = 0x86, - PROC_SHIP_JUMP_RIDE_e = 0x87, - PROC_SHIP_STEER_e = 0x88, - PROC_SHIP_PADDLE_e = 0x89, - PROC_SHIP_SCOPE_e = 0x8A, - PROC_SHIP_BOOMERANG_e = 0x8B, - PROC_SHIP_HOOKSHOT_e = 0x8C, - PROC_SHIP_BOW_e = 0x8D, - PROC_SHIP_CANNON_e = 0x8E, - PROC_SHIP_CRANE_e = 0x8F, - PROC_SHIP_GET_OFF_e = 0x90, - PROC_SHIP_RESTART_e = 0x91, - PROC_FAN_SWING_e = 0x92, - PROC_FAN_GLIDE_e = 0x93, - PROC_BOW_SUBJECT_e = 0x94, - PROC_BOW_MOVE_e = 0x95, - PROC_VOMIT_READY_e = 0x96, - PROC_VOMIT_WAIT_e = 0x97, - PROC_VOMIT_JUMP_e = 0x98, - PROC_VOMIT_LAND_e = 0x99, - PROC_TACT_WAIT_e = 0x9A, - PROC_TACT_PLAY_e = 0x9B, - PROC_TACT_PLAY_END_e = 0x9C, - PROC_TACT_PLAY_ORIGINAL_e = 0x9D, - PROC_ICE_SLIP_FALL_e = 0x9E, - PROC_ICE_SLIP_FALL_UP_e = 0x9F, - PROC_ICE_SLIP_ALMOST_FALL_e = 0xA0, - PROC_BOOTS_EQUIP_e = 0xA1, - PROC_NOT_USE_e = 0xA2, - PROC_BOTTLE_DRINK_e = 0xA3, - PROC_BOTTLE_OPEN_e = 0xA4, - PROC_BOTTLE_SWING_e = 0xA5, - PROC_BOTTLE_GET_e = 0xA6, - PROC_FOOD_THROW_e = 0xA7, - PROC_FOOD_SET_e = 0xA8, - DPROC_TOOL_e = 0xA9, - DPROC_TALK_e = 0xAA, - DPROC_DAMAGE_e = 0xAB, - DPROC_HOLDUP_e = 0xAC, - DPROC_OPEN_TREASURE_e = 0xAD, - DPROC_GET_ITEM_e = 0xAE, - DPROC_UNEQUIP_e = 0xAF, - DPROC_LAVA_DAMAGE_e = 0xB0, - DPROC_FREEZE_DAMAGE_e = 0xB1, - DPROC_DEAD_e = 0xB2, - DPROC_LOOK_AROUND_e = 0xB3, - DPROC_SALUTE_e = 0xB4, - DPROC_LOOK_AROUND2_e = 0xB5, - DPROC_TALISMAN_PICKUP_e = 0xB6, - DPROC_TALISMAN_WAIT_e = 0xB7, - DPROC_SURPRISED_e = 0xB8, - DPROC_TURN_BACK_e = 0xB9, - DPROC_LOOK_UP_e = 0xBA, - DPROC_QUAKE_WAIT_e = 0xBB, - DPROC_DANCE_e = 0xBC, - DPROC_CAUGHT_e = 0xBD, - DPROC_LOOK_WAIT_e = 0xBE, - DPROC_PUSH_PULL_WAIT_e = 0xBF, - DPROC_PUSH_MOVE_e = 0xC0, - DPROC_DOOR_OPEN_e = 0xC1, - DPROC_NOD_e = 0xC2, - DPROC_PRESENT_e = 0xC3, - DPROC_WIND_CHANGE_e = 0xC4, - DPROC_STAND_ITEM_PUT_e = 0xC5, - DPROC_VORCANO_FAIL_e = 0xC6, - DPROC_SLIGHT_SURPRISED_e = 0xC7, - DPROC_SMILE_e = 0xC8, - DPROC_BOSS_WARP_e = 0xC9, - DPROC_AGB_USE_e = 0xCA, - DPROC_LOOK_TURN_e = 0xCB, - DPROC_LETTER_OPEN_e = 0xCC, - DPROC_LETTER_READ_e = 0xCD, - DPROC_REDEAD_STOP_e = 0xCE, - DPROC_REDEAD_CATCH_e = 0xCF, - DPROC_GET_DANCE_e = 0xD0, - DPROC_BOTTLE_OPEN_FAIRY_e = 0xD1, - DPROC_WARP_SHORT_e = 0xD2, - DPROC_OPEN_SALVAGE_TREASURE_e = 0xD3, - DPROC_SURPRISED_WAIT_e = 0xD4, - DPROC_POWER_UP_WAIT_e = 0xD5, - DPROC_POWER_UP_e = 0xD6, - DPROC_SHIP_SIT_e = 0xD7, - DPROC_LAST_COMBO_e = 0xD8, - DPROC_HAND_UP_e = 0xD9, - DPROC_ICE_SLIP_e = 0xDA, + daPyProc_SCOPE_e = 0x00, + daPyProc_SUBJECTIVITY_e = 0x01, + daPyProc_CALL_e = 0x02, + daPyProc_CONTROLL_WAIT_e = 0x03, + daPyProc_WAIT_e = 0x04, + daPyProc_FREE_WAIT_e = 0x05, + daPyProc_MOVE_e = 0x06, + daPyProc_ATN_MOVE_e = 0x07, + daPyProc_ATN_ACTOR_WAIT_e = 0x08, + daPyProc_ATN_ACTOR_MOVE_e = 0x09, + daPyProc_SIDE_STEP_e = 0x0A, + daPyProc_SIDE_STEP_LAND_e = 0x0B, + daPyProc_CROUCH_DEFENSE_e = 0x0C, + daPyProc_CROUCH_DEFENSE_SLIP_e = 0x0D, + daPyProc_CROUCH_e = 0x0E, + daPyProc_CRAWL_START_e = 0x0F, + daPyProc_CRAWL_MOVE_e = 0x10, + daPyProc_CRAWL_AUTO_MOVE_e = 0x11, + daPyProc_CRAWL_END_e = 0x12, + daPyProc_WHIDE_READY_e = 0x13, + daPyProc_WHIDE_WAIT_e = 0x14, + daPyProc_WHIDE_MOVE_e = 0x15, + daPyProc_WHIDE_PEEP_e = 0x16, + daPyProc_WAIT_TURN_e = 0x17, + daPyProc_MOVE_TURN_e = 0x18, + daPyProc_SLIP_e = 0x19, + daPyProc_SLIDE_FRONT_e = 0x1A, + daPyProc_SLIDE_BACK_e = 0x1B, + daPyProc_SLIDE_FRONT_LAND_e = 0x1C, + daPyProc_SLIDE_BACK_LAND_e = 0x1D, + daPyProc_FRONT_ROLL_e = 0x1E, + daPyProc_FRONT_ROLL_CRASH_e = 0x1F, + daPyProc_NOCK_BACK_END_e = 0x20, + daPyProc_SIDE_ROLL_e = 0x21, + daPyProc_BACK_JUMP_e = 0x22, + daPyProc_BACK_JUMP_LAND_e = 0x23, + daPyProc_AUTO_JUMP_e = 0x24, + daPyProc_LAND_e = 0x25, + daPyProc_LAND_DAMAGE_e = 0x26, + daPyProc_FALL_e = 0x27, + daPyProc_SLOW_FALL_e = 0x28, + daPyProc_SMALL_JUMP_e = 0x29, + daPyProc_VERTICAL_JUMP_e = 0x2A, + daPyProc_HANG_START_e = 0x2B, + daPyProc_HANG_FALL_START_e = 0x2C, + daPyProc_HANG_UP_e = 0x2D, + daPyProc_HANG_WAIT_e = 0x2E, + daPyProc_HANG_MOVE_e = 0x2F, + daPyProc_HANG_CLIMB_e = 0x30, + daPyProc_HANG_WALL_CATCH_e = 0x31, + daPyProc_PUSH_PULL_WAIT_e = 0x32, + daPyProc_PUSH_MOVE_e = 0x33, + daPyProc_PULL_MOVE_e = 0x34, + daPyProc_SWIM_UP_e = 0x35, + daPyProc_SWIM_WAIT_e = 0x36, + daPyProc_SWIM_MOVE_e = 0x37, + daPyProc_LADDER_UP_START_e = 0x38, + daPyProc_LADDER_UP_END_e = 0x39, + daPyProc_LADDER_DOWN_START_e = 0x3A, + daPyProc_LADDER_DOWN_END_e = 0x3B, + daPyProc_LADDER_MOVE_e = 0x3C, + daPyProc_CLIMB_UP_START_e = 0x3D, + daPyProc_CLIMB_DOWN_START_e = 0x3E, + daPyProc_CLIMB_MOVE_UP_DOWN_e = 0x3F, + daPyProc_CLIMB_MOVE_SIDE_e = 0x40, + daPyProc_CUT_A_e = 0x41, + daPyProc_CUT_F_e = 0x42, + daPyProc_CUT_R_e = 0x43, + daPyProc_CUT_L_e = 0x44, + daPyProc_CUT_EA_e = 0x45, + daPyProc_CUT_EB_e = 0x46, + daPyProc_CUT_EX_A_e = 0x47, + daPyProc_CUT_EX_B_e = 0x48, + daPyProc_CUT_EX_MJ_e = 0x49, + daPyProc_CUT_KESA_e = 0x4A, + daPyProc_WEAPON_NORMAL_SWING_e = 0x4B, + daPyProc_WEAPON_SIDE_SWING_e = 0x4C, + daPyProc_WEAPON_FRONT_SWING_READY_e = 0x4D, + daPyProc_WEAPON_FRONT_SWING_e = 0x4E, + daPyProc_WEAPON_FRONT_SWING_END_e = 0x4F, + daPyProc_WEAPON_THROW_e = 0x50, + daPyProc_HAMMER_SIDE_SWING_e = 0x51, + daPyProc_HAMMER_FRONT_SWING_READY_e = 0x52, + daPyProc_HAMMER_FRONT_SWING_e = 0x53, + daPyProc_HAMMER_FRONT_SWING_END_e = 0x54, + daPyProc_CUT_TURN_e = 0x55, + daPyProc_CUT_ROLL_e = 0x56, + daPyProc_CUT_ROLL_END_e = 0x57, + daPyProc_CUT_TURN_CHARGE_e = 0x58, + daPyProc_CUT_TURN_MOVE_e = 0x59, + daPyProc_CUT_REVERSE_e = 0x5A, + daPyProc_JUMP_CUT_e = 0x5B, + daPyProc_JUMP_CUT_LAND_e = 0x5C, + daPyProc_BT_JUMP_e = 0x5D, + daPyProc_BT_JUMP_CUT_e = 0x5E, + daPyProc_BT_SLIDE_e = 0x5F, + daPyProc_BT_ROLL_e = 0x60, + daPyProc_BT_ROLL_CUT_e = 0x61, + daPyProc_BT_VERTICAL_JUMP_e = 0x62, + daPyProc_BT_VERTICAL_JUMP_CUT_e = 0x63, + daPyProc_BT_VERTICAL_JUMP_LAND_e = 0x64, + daPyProc_GUARD_CRASH_e = 0x65, + daPyProc_DAMAGE_e = 0x66, + daPyProc_POLY_DAMAGE_e = 0x67, + daPyProc_LARGE_DAMAGE_e = 0x68, + daPyProc_LARGE_DAMAGE_UP_e = 0x69, + daPyProc_LARGE_DAMAGE_WALL_e = 0x6A, + daPyProc_LAVA_DAMAGE_e = 0x6B, + daPyProc_ELEC_DAMAGE_e = 0x6C, + daPyProc_GUARD_SLIP_e = 0x6D, + daPyProc_GRAB_READY_e = 0x6E, + daPyProc_GRAB_UP_e = 0x6F, + daPyProc_GRAB_MISS_e = 0x70, + daPyProc_GRAB_THROW_e = 0x71, + daPyProc_GRAB_PUT_e = 0x72, + daPyProc_GRAB_WAIT_e = 0x73, + daPyProc_GRAB_HEAVY_WAIT_e = 0x74, + daPyProc_GRAB_REBOUND_e = 0x75, + daPyProc_ROPE_SUBJECT_e = 0x76, + daPyProc_ROPE_READY_e = 0x77, + daPyProc_ROPE_SWING_e = 0x78, + daPyProc_ROPE_HANG_WAIT_e = 0x79, + daPyProc_ROPE_UP_e = 0x7A, + daPyProc_ROPE_DOWN_e = 0x7B, + daPyProc_ROPE_SWING_START_e = 0x7C, + daPyProc_ROPE_MOVE_e = 0x7D, + daPyProc_ROPE_THROW_CATCH_e = 0x7E, + daPyProc_ROPE_UP_HANG_e = 0x7F, + daPyProc_BOOMERANG_SUBJECT_e = 0x80, + daPyProc_BOOMERANG_MOVE_e = 0x81, + daPyProc_BOOMERANG_CATCH_e = 0x82, + daPyProc_HOOKSHOT_SUBJECT_e = 0x83, + daPyProc_HOOKSHOT_MOVE_e = 0x84, + daPyProc_HOOKSHOT_FLY_e = 0x85, + daPyProc_SHIP_READY_e = 0x86, + daPyProc_SHIP_JUMP_RIDE_e = 0x87, + daPyProc_SHIP_STEER_e = 0x88, + daPyProc_SHIP_PADDLE_e = 0x89, + daPyProc_SHIP_SCOPE_e = 0x8A, + daPyProc_SHIP_BOOMERANG_e = 0x8B, + daPyProc_SHIP_HOOKSHOT_e = 0x8C, + daPyProc_SHIP_BOW_e = 0x8D, + daPyProc_SHIP_CANNON_e = 0x8E, + daPyProc_SHIP_CRANE_e = 0x8F, + daPyProc_SHIP_GET_OFF_e = 0x90, + daPyProc_SHIP_RESTART_e = 0x91, + daPyProc_FAN_SWING_e = 0x92, + daPyProc_FAN_GLIDE_e = 0x93, + daPyProc_BOW_SUBJECT_e = 0x94, + daPyProc_BOW_MOVE_e = 0x95, + daPyProc_VOMIT_READY_e = 0x96, + daPyProc_VOMIT_WAIT_e = 0x97, + daPyProc_VOMIT_JUMP_e = 0x98, + daPyProc_VOMIT_LAND_e = 0x99, + daPyProc_TACT_WAIT_e = 0x9A, + daPyProc_TACT_PLAY_e = 0x9B, + daPyProc_TACT_PLAY_END_e = 0x9C, + daPyProc_TACT_PLAY_ORIGINAL_e = 0x9D, + daPyProc_ICE_SLIP_FALL_e = 0x9E, + daPyProc_ICE_SLIP_FALL_UP_e = 0x9F, + daPyProc_ICE_SLIP_ALMOST_FALL_e = 0xA0, + daPyProc_BOOTS_EQUIP_e = 0xA1, + daPyProc_NOT_USE_e = 0xA2, + daPyProc_BOTTLE_DRINK_e = 0xA3, + daPyProc_BOTTLE_OPEN_e = 0xA4, + daPyProc_BOTTLE_SWING_e = 0xA5, + daPyProc_BOTTLE_GET_e = 0xA6, + daPyProc_FOOD_THROW_e = 0xA7, + daPyProc_FOOD_SET_e = 0xA8, + daPyProc_DEMO_TOOL_e = 0xA9, + daPyProc_DEMO_TALK_e = 0xAA, + daPyProc_DEMO_DAMAGE_e = 0xAB, + daPyProc_DEMO_HOLDUP_e = 0xAC, + daPyProc_DEMO_OPEN_TREASURE_e = 0xAD, + daPyProc_DEMO_GET_ITEM_e = 0xAE, + daPyProc_DEMO_UNEQUIP_e = 0xAF, + daPyProc_DEMO_LAVA_DAMAGE_e = 0xB0, + daPyProc_DEMO_FREEZE_DAMAGE_e = 0xB1, + daPyProc_DEMO_DEAD_e = 0xB2, + daPyProc_DEMO_LOOK_AROUND_e = 0xB3, + daPyProc_DEMO_SALUTE_e = 0xB4, + daPyProc_DEMO_LOOK_AROUND2_e = 0xB5, + daPyProc_DEMO_TALISMAN_PICKUP_e = 0xB6, + daPyProc_DEMO_TALISMAN_WAIT_e = 0xB7, + daPyProc_DEMO_SURPRISED_e = 0xB8, + daPyProc_DEMO_TURN_BACK_e = 0xB9, + daPyProc_DEMO_LOOK_UP_e = 0xBA, + daPyProc_DEMO_QUAKE_WAIT_e = 0xBB, + daPyProc_DEMO_DANCE_e = 0xBC, + daPyProc_DEMO_CAUGHT_e = 0xBD, + daPyProc_DEMO_LOOK_WAIT_e = 0xBE, + daPyProc_DEMO_PUSH_PULL_WAIT_e = 0xBF, + daPyProc_DEMO_PUSH_MOVE_e = 0xC0, + daPyProc_DEMO_DOOR_OPEN_e = 0xC1, + daPyProc_DEMO_NOD_e = 0xC2, + daPyProc_DEMO_PRESENT_e = 0xC3, + daPyProc_DEMO_WIND_CHANGE_e = 0xC4, + daPyProc_DEMO_STAND_ITEM_PUT_e = 0xC5, + daPyProc_DEMO_VORCANO_FAIL_e = 0xC6, + daPyProc_DEMO_SLIGHT_SURPRISED_e = 0xC7, + daPyProc_DEMO_SMILE_e = 0xC8, + daPyProc_DEMO_BOSS_WARP_e = 0xC9, + daPyProc_DEMO_AGB_USE_e = 0xCA, + daPyProc_DEMO_LOOK_TURN_e = 0xCB, + daPyProc_DEMO_LETTER_OPEN_e = 0xCC, + daPyProc_DEMO_LETTER_READ_e = 0xCD, + daPyProc_DEMO_REDEAD_STOP_e = 0xCE, + daPyProc_DEMO_REDEAD_CATCH_e = 0xCF, + daPyProc_DEMO_GET_DANCE_e = 0xD0, + daPyProc_DEMO_BOTTLE_OPEN_FAIRY_e = 0xD1, + daPyProc_DEMO_WARP_SHORT_e = 0xD2, + daPyProc_DEMO_OPEN_SALVAGE_TREASURE_e = 0xD3, + daPyProc_DEMO_SURPRISED_WAIT_e = 0xD4, + daPyProc_DEMO_POWER_UP_WAIT_e = 0xD5, + daPyProc_DEMO_POWER_UP_e = 0xD6, + daPyProc_DEMO_SHIP_SIT_e = 0xD7, + daPyProc_DEMO_LAST_COMBO_e = 0xD8, + daPyProc_DEMO_HAND_UP_e = 0xD9, + daPyProc_DEMO_ICE_SLIP_e = 0xDA, }; enum daPy_HEAP_TYPE { @@ -1466,24 +1499,20 @@ public: }; enum daPy_UNDER { - UNDER_UNK0 = 0, - UNDER_UNK1 = 1, + UNDER_MOVE0_e = 0, + UNDER_MOVE1_e = 1, }; enum daPy_UPPER { - UPPER_UNK0 = 0, - UPPER_UNK1 = 1, - UPPER_UNK2 = 2, + UPPER_MOVE0_e = 0, + UPPER_MOVE1_e = 1, + UPPER_MOVE2_e = 2, }; enum { PART_UNDER_e = 0, PART_UPPER_e = 1, }; - - enum { - UNDER_MOVE0_e = 0, - }; enum { ModeFlg_00000001 = 0x00000001, @@ -1552,7 +1581,7 @@ public: void setDemoTextureAnime(u16, u16, int, u16); void resetDemoTextureAnime(); void setTextureScrollResource(J3DAnmTextureSRTKey*, int); - void loadTextureScrollResource(u32, int); + J3DAnmTextureSRTKey* loadTextureScrollResource(u32, BOOL); void playTextureAnime(); BOOL checkSightLine(f32, cXyz*); void setBootsModel(J3DModel**); @@ -1655,7 +1684,7 @@ public: BOOL checkSubjectEnd(int); BOOL checkGuardAccept(); void cancelNoDamageMode(); - BOOL commonProcInit(daPy_lk_c::daPy_PROC proc); + BOOL commonProcInit(daPy_PROC proc); BOOL procScope_init(int); BOOL procScope(); BOOL procSubjectivity_init(int); @@ -1802,14 +1831,14 @@ public: void setSeAnime(daPy_anmHeap_c const*, J3DFrameCtrl*); void initSeAnime(); void resetSeAnime(); - void setMoveAnime(f32, f32, f32, daPy_lk_c::daPy_ANM, daPy_lk_c::daPy_ANM, int, f32); - BOOL setSingleMoveAnime(daPy_lk_c::daPy_ANM, f32, f32, s16, f32); - void setActAnimeUpper(u16, daPy_lk_c::daPy_UPPER, f32, f32, s16, f32); - void resetActAnimeUpper(daPy_lk_c::daPy_UPPER, f32); + void setMoveAnime(f32, f32, f32, daPy_ANM, daPy_ANM, int, f32); + BOOL setSingleMoveAnime(daPy_ANM, f32, f32, s16, f32); + BOOL setActAnimeUpper(u16, daPy_UPPER, f32, f32, s16, f32); + BOOL resetActAnimeUpper(daPy_UPPER, f32); void animeUpdate(); void simpleAnmPlay(J3DAnmBase*); - void setHandModel(daPy_lk_c::daPy_ANM); - const daPy_anmIndex_c* getAnmData(daPy_lk_c::daPy_ANM) const; + void setHandModel(daPy_ANM); + const daPy_anmIndex_c* getAnmData(daPy_ANM) const; BOOL checkGrabWeapon(int); void endDemoMode(); void setAuraEffect(); @@ -2059,7 +2088,7 @@ public: void swimOutAfter(int); BOOL checkSwimFallCheck(); void changeSwimOutProc(); - void setSwimMoveAnime(daPy_lk_c::daPy_ANM); + void setSwimMoveAnime(daPy_ANM); void getSwimTimerRate(); void setSwimTimerStartStop(); BOOL procSwimUp_init(int); @@ -2300,7 +2329,7 @@ public: void setJumpCutAtParam(); void getCutDirection(); void changeCutProc(); - void changeCutReverseProc(daPy_lk_c::daPy_ANM); + void changeCutReverseProc(daPy_ANM); BOOL procCutA_init(s16); BOOL procCutA(); BOOL procCutF_init(s16); @@ -2327,7 +2356,7 @@ public: BOOL procCutTurnCharge(); BOOL procCutTurnMove_init(); BOOL procCutTurnMove(); - BOOL procCutReverse_init(daPy_lk_c::daPy_ANM); + BOOL procCutReverse_init(daPy_ANM); BOOL procCutReverse(); BOOL procJumpCut_init(int); BOOL procJumpCut(); @@ -2341,12 +2370,24 @@ public: J3DAnmTevRegKey* getBombBrk() { return mpBombBrk; } J3DAnmTextureSRTKey* getIceArrowBtk() { return mpIceArrowBtk; } J3DAnmTextureSRTKey* getLightArrowBtk() { return mpLightArrowBtk; } + bool checkGrabAnime() const { return checkGrabAnimeLight() || checkGrabAnimeHeavy(); }; - bool checkGrabAnimeLight() const { return m_anm_heap_upper[2].mIdx == LKANM_BCK_GRABWAIT; }; - bool checkGrabAnimeHeavy() const { return m_anm_heap_upper[2].mIdx == LKANM_BCK_GRABWAITB; }; - bool checkBoomerangCatchAnime() const { return m_anm_heap_upper[2].mIdx == LKANM_BCK_BOOMCATCH; }; - bool checkBoomerangThrowAnime() const { return m_anm_heap_upper[2].mIdx == LKANM_BCK_BOOMTHROW; }; - bool checkBoomerangReadyAnime() const { return m_anm_heap_upper[2].mIdx == LKANM_BCK_BOOMWAIT; }; + bool checkGrabAnimeLight() const { return m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_GRABWAIT; }; + bool checkGrabAnimeHeavy() const { return m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_GRABWAITB; }; + bool checkBoomerangCatchAnime() const { return m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_BOOMCATCH; }; + bool checkBoomerangThrowAnime() const { return m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_BOOMTHROW; }; + bool checkBoomerangReadyAnime() const { return m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_BOOMWAIT; }; + bool checkHookshotReadyAnime() const { return m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_HOOKSHOTWAIT; } + bool checkDashDamageAnime() const { return m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_DAMDASH; } + bool checkGuardSlip() const { + return mCurProc == daPyProc_GUARD_SLIP_e || + mCurProc == daPyProc_CROUCH_DEFENSE_SLIP_e; + } + bool checkUpperGuardAnime() const { + return m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_ATNG || + m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_ATNGHAM; + } + s16 checkTinkleShield() const { return mTinkleShieldTimer; } void setTinkleShield(s16 time) { mTinkleShieldTimer = time; } bool checkNoDamageMode() const { return checkEquipDragonShield() || checkTinkleShield() != 0; } @@ -2381,7 +2422,6 @@ public: mActivePlayerBombs--; } } - bool checkGuardSlip() const { return mCurProc == PROC_GUARD_SLIP_e || mCurProc == PROC_CROUCH_DEFENSE_SLIP_e; } int getStartRoomNo() { return fopAcM_GetParam(this) & 0x3F; } int getStartMode() { return (fopAcM_GetParam(this) >> 0x0C) & 0xF; } @@ -2405,10 +2445,8 @@ public: void checkBowShootAnime() const {} void checkBowWaitAnime() const {} void checkCrawlWaterIn() {} - void checkDashDamageAnime() const {} void checkDoubleItemEquipAnime() const {} void checkFaceTypeNot() const {} - void checkHookshotReadyAnime() const {} void checkIsland() const {} void checkMirrorShieldEquip() const {} void checkNoUpperAnime() const {} @@ -2420,7 +2458,6 @@ public: void checkSwordEquip() const {} void checkSwordEquipAnime() const {} void checkUpperAnime(u16) const {} - void checkUpperGuardAnime() const {} void doButton() const {} void doTrigger() const {} void getAnmSpeedStickRate(f32, f32) {} @@ -2457,6 +2494,7 @@ public: virtual BOOL checkPlayerGuard() const; virtual fopAc_ac_c* getGrabMissActor(); virtual u32 checkPlayerFly() const { + // Note: These flags combine into 0x10452822. return checkModeFlg( ModeFlg_MIDAIR | ModeFlg_HANG | @@ -2468,23 +2506,23 @@ public: ModeFlg_CAUGHT ); } - virtual BOOL checkFrontRoll() const { return mCurProc == PROC_FRONT_ROLL_e; } - virtual BOOL checkBottleSwing() const { return mCurProc == PROC_BOTTLE_SWING_e; } - virtual BOOL checkCutCharge() const { return mCurProc == PROC_CUT_TURN_MOVE_e; } + virtual BOOL checkFrontRoll() const { return mCurProc == daPyProc_FRONT_ROLL_e; } + virtual BOOL checkBottleSwing() const { return mCurProc == daPyProc_BOTTLE_SWING_e; } + virtual BOOL checkCutCharge() const { return mCurProc == daPyProc_CUT_TURN_MOVE_e; } virtual BOOL getBokoFlamePos(cXyz*); - virtual BOOL checkTactWait() const { return mCurProc == PROC_TACT_WAIT_e; } + virtual BOOL checkTactWait() const { return mCurProc == daPyProc_TACT_WAIT_e; } virtual void setTactZev(unsigned int, int, char*); virtual void onDekuSpReturnFlg(u8 i_point); - virtual BOOL checkComboCutTurn() const { return mCurProc == 0x55 && m3570 != 0; } - virtual f32 getBaseAnimeFrameRate() { return mFrameCtrlUnder[0].getRate(); } - virtual f32 getBaseAnimeFrame() { return mFrameCtrlUnder[0].getFrame(); } + virtual BOOL checkComboCutTurn() const { return mCurProc == daPyProc_CUT_TURN_e && m3570 != 0; } + virtual f32 getBaseAnimeFrameRate() { return mFrameCtrlUnder[UNDER_MOVE0_e].getRate(); } + virtual f32 getBaseAnimeFrame() { return mFrameCtrlUnder[UNDER_MOVE0_e].getFrame(); } virtual u32 getItemID() const { return mActorKeepEquip.getID(); } virtual u32 getThrowBoomerangID() const { return mActorKeepThrow.getID(); } virtual u32 getGrabActorID() const { return mActorKeepGrab.getID(); } virtual BOOL checkGrabBarrel() { return checkGrabBarrelSearch(1); } virtual u32 checkPlayerNoDraw() { return dComIfGp_checkCameraAttentionStatus(mCameraInfoIdx, 2) || checkNoResetFlg0(daPyFlg0_NO_DRAW); } virtual BOOL checkRopeTag() { return mActorKeepEquip.getActor() == NULL; } - virtual BOOL checkRopeReadyAnime() const { return m_anm_heap_upper[2].mIdx == LKANM_BCK_ROPETHROWWAIT; } + virtual BOOL checkRopeReadyAnime() const { return m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_ROPETHROWWAIT; } virtual void voiceStart(u32); virtual void setOutPower(f32, s16, int); virtual void onFrollCrashFlg(u32 param_1) { m3620 = param_1; onNoResetFlg0(daPyFlg0_UNK8); } @@ -2506,7 +2544,7 @@ public: /* 0x0334 */ J3DModel* mpYamuModel; /* 0x0338 */ ResTIMG* mpCurrLinktex; /* 0x033C */ ResTIMG mOtherLinktex; - /* 0x035C */ J3DAnmTexPattern* m035C; + /* 0x035C */ J3DAnmTexPattern* mpAnmTexPatternData; /* 0x0360 */ J3DTexNoAnm* m_texNoAnms; /* 0x0364 */ J3DAnmTextureSRTKey* mpTexScrollResData; /* 0x0368 */ J3DTexMtxAnm* m_texMtxAnm; @@ -2514,8 +2552,8 @@ public: /* 0x0374 */ J3DShape* mpZOffBlendShape[4]; /* 0x0384 */ J3DShape* mpZOffNoneShape[4]; /* 0x0394 */ J3DShape* mpZOnShape[4]; - /* 0x03A4 */ J3DShape* m03A4; - /* 0x03A8 */ J3DShape* m03A8; + /* 0x03A4 */ J3DShape* mpLhandShape; + /* 0x03A8 */ J3DShape* mpRhandShape; /* 0x03AC */ dBgS_AcchCir mAcchCir[3]; /* 0x046C */ dBgS_LinkAcch mAcch; /* 0x0630 */ dBgS_LinkLinChk mLinkLinChk; @@ -2654,7 +2692,7 @@ public: /* 0x34C5 */ u8 m34C5; /* 0x34C6 */ u8 m34C6; /* 0x34C7 */ u8 mActivePlayerBombs; - /* 0x34C8 */ u8 mPressedButtonsBitfield; + /* 0x34C8 */ u8 mPressedButtons; /* 0x34C9 */ u8 m34C9; /* 0x34CA */ u8 m34CA; /* 0x34CB */ u8 mDekuSpRestartPoint; @@ -2735,7 +2773,7 @@ public: /* 0x355C */ s16 m355C; /* 0x355E */ s16 m355E; /* 0x3560 */ u16 mHeldItemType; - /* 0x3562 */ u8 m3562[0x3564 - 0x3562]; + /* 0x3562 */ u16 m3562; /* 0x3564 */ s16 m3564; /* 0x3566 */ s16 m3566; /* 0x3568 */ s16 m3568; diff --git a/include/d/d_com_inf_game.h b/include/d/d_com_inf_game.h index 73a84f72a..41655da03 100644 --- a/include/d/d_com_inf_game.h +++ b/include/d/d_com_inf_game.h @@ -475,8 +475,11 @@ public: mItemNo = i_itemNo; } + u8 getAStatus() { return mCurrButtonBAction; } void setAStatus(u8 status) { mCurrButtonBAction = status; } + u8 getDoStatus() { return mCurrButtonAAction; } void setDoStatus(u8 status) { mCurrButtonAAction = status; } + u8 getRStatusForce() { return field_0x4930; } void setRStatusForce(u8 status) { field_0x4930 = status; } inline u8 getPictureStatus() { return mPictureStatus; } @@ -2255,14 +2258,26 @@ inline u8 dComIfGp_getMiniGameType() { return g_dComIfG_gameInfo.play.getMiniGameType(); } +inline u8 dComIfGp_getAStatus() { + return g_dComIfG_gameInfo.play.getAStatus(); +} + inline void dComIfGp_setAStatus(u8 status) { g_dComIfG_gameInfo.play.setAStatus(status); } +inline u8 dComIfGp_getDoStatus() { + return g_dComIfG_gameInfo.play.getDoStatus(); +} + inline void dComIfGp_setDoStatus(u8 status) { g_dComIfG_gameInfo.play.setDoStatus(status); } +inline u8 dComIfGp_getRStatusForce() { + return g_dComIfG_gameInfo.play.getRStatusForce(); +} + inline void dComIfGp_setRStatusForce(u8 status) { g_dComIfG_gameInfo.play.setRStatusForce(status); } diff --git a/include/f_op/f_op_actor_mng.h b/include/f_op/f_op_actor_mng.h index b897e72fb..fa2335f8f 100644 --- a/include/f_op/f_op_actor_mng.h +++ b/include/f_op/f_op_actor_mng.h @@ -519,7 +519,7 @@ BOOL stealItem_CB(void* actor); fopAc_ac_c* fopAcM_myRoomSearchEnemy(s8 roomNo); s32 fopAcM_createDisappear(fopAc_ac_c* i_actor, cXyz* p_pos, u8 i_scale, u8 i_health = 0, u8 i_switchNo = -1); -void fopAcM_setCarryNow(fopAc_ac_c* i_this, int stageLayer); +void fopAcM_setCarryNow(fopAc_ac_c* i_this, BOOL stageLayer); void fopAcM_cancelCarryNow(fopAc_ac_c* i_this); s32 fopAcM_otoCheck(fopAc_ac_c*, f32); BOOL fopAcM_viewCutoffCheck(fopAc_ac_c* actor, f32 param_2); diff --git a/include/m_Do/m_Do_ext.h b/include/m_Do/m_Do_ext.h index 4c3042db5..a2cf0fa1a 100644 --- a/include/m_Do/m_Do_ext.h +++ b/include/m_Do/m_Do_ext.h @@ -190,8 +190,8 @@ public: mAnmTransform = NULL; } - void setRatio(f32 ratio) { mRatio = ratio; } f32 getRatio() { return mRatio; } + void setRatio(f32 ratio) { mRatio = ratio; } J3DAnmTransform* getAnmTransform() { return mAnmTransform; } void setAnmTransform(J3DAnmTransform* anm) { mAnmTransform = anm; } diff --git a/src/d/actor/d_a_obj_toripost.cpp b/src/d/actor/d_a_obj_toripost.cpp index 5d9839eea..9a1c2dd42 100644 --- a/src/d/actor/d_a_obj_toripost.cpp +++ b/src/d/actor/d_a_obj_toripost.cpp @@ -195,7 +195,7 @@ void daObjTpost_c::cutPresentProc(int staffIdx) { void daObjTpost_c::cutSetAnmStart(int staffIdx) { const char* name = dComIfGp_evmng_getMyStringP(staffIdx, "Name"); - if(name != 0 && dEvmng_strcmp(name, "HAKIDASU") == 0) { + if(name != 0 && strcmp(name, "HAKIDASU") == 0) { setAnm(3, false); } else { diff --git a/src/d/actor/d_a_player_dproc.inc b/src/d/actor/d_a_player_dproc.inc index 5656e14d6..aed0ba0c2 100644 --- a/src/d/actor/d_a_player_dproc.inc +++ b/src/d/actor/d_a_player_dproc.inc @@ -19,7 +19,9 @@ void daPy_lk_c::getDemoLookActor() { /* 8012CDD4-8012CE2C .text setTinkleCeiverModel__9daPy_lk_cFv */ void daPy_lk_c::setTinkleCeiverModel() { - /* Nonmatching */ + JKRHeap* oldHeap = setItemHeap(); + initModel(&mpHeldItemModel, LINK_BDL_TCEIVER, 0x13000022); + mDoExt_setCurrentHeap(oldHeap); } /* 8012CE2C-8012CEFC .text setTalismanModel__9daPy_lk_cFv */ @@ -34,7 +36,10 @@ void daPy_lk_c::setLetterModel() { /* 8012CFE8-8012D010 .text checkCaughtShapeHide__9daPy_lk_cFv */ BOOL daPy_lk_c::checkCaughtShapeHide() { - /* Nonmatching */ + if (mCurProc == daPyProc_DEMO_CAUGHT_e && m3570 != 0) { + return TRUE; + } + return FALSE; } /* 8012D010-8012D08C .text setShapeAngleToTalkActor__9daPy_lk_cFv */ diff --git a/src/d/actor/d_a_player_food.inc b/src/d/actor/d_a_player_food.inc index 0e531abcf..9205407db 100644 --- a/src/d/actor/d_a_player_food.inc +++ b/src/d/actor/d_a_player_food.inc @@ -30,10 +30,10 @@ void daPy_lk_c::setHyoiModel() { /* 801543A0-801546F4 .text procFoodThrow_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procFoodThrow_init() { - if (mCurProc == PROC_FOOD_THROW_e) { + if (mCurProc == daPyProc_FOOD_THROW_e) { return TRUE; } - if (m3630 != -1) { + if (m3630 != fpcM_ERROR_PROCESS_ID_e) { mDoAud_seStart(JA_SE_ITEM_TARGET_OUT); return FALSE; } @@ -52,7 +52,7 @@ BOOL daPy_lk_c::procFoodThrow_init() { int temp = checkShipRideUseItem(1); - commonProcInit(PROC_FOOD_THROW_e); + commonProcInit(daPyProc_FOOD_THROW_e); if (temp == 0) { f32 offset1 = cM_ssin(shape_angle.y) * 150.0f; @@ -107,14 +107,14 @@ BOOL daPy_lk_c::procFoodThrow_init() { } initShipRideUseItem(temp, 2); - m3630 = -1; + m3630 = fpcM_ERROR_PROCESS_ID_e; return TRUE; } /* 801546F4-80154880 .text procFoodThrow__9daPy_lk_cFv */ BOOL daPy_lk_c::procFoodThrow() { - J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[0]; + J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e]; setShipRidePosUseItem(); if (frameCtrl.getRate() < 0.01f) { if (mDemo.getDemoType() != 5) { @@ -149,7 +149,7 @@ BOOL daPy_lk_c::procFoodThrow() { /* 80154880-80154A48 .text procFoodSet_init__9daPy_lk_cFv */ BOOL daPy_lk_c::procFoodSet_init() { - if (mCurProc == PROC_FOOD_SET_e) { + if (mCurProc == daPyProc_FOOD_SET_e) { if (mDemo.getParam0() == 1) { if (mHeldItemType == ANIMAL_ESA) { u8 btnIdx = dComIfGp_event_getTalkXYBtn(); @@ -177,7 +177,7 @@ BOOL daPy_lk_c::procFoodSet_init() { } int temp = checkShipRideUseItem(1); - commonProcInit(PROC_FOOD_SET_e); + commonProcInit(daPyProc_FOOD_SET_e); current.angle.y = shape_angle.y; mVelocity = 0.0f; @@ -198,7 +198,7 @@ BOOL daPy_lk_c::procFoodSet_init() { /* 80154A48-80154B80 .text procFoodSet__9daPy_lk_cFv */ BOOL daPy_lk_c::procFoodSet() { - J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[0]; + J3DFrameCtrl& frameCtrl = mFrameCtrlUnder[UNDER_MOVE0_e]; setShipRidePosUseItem(); diff --git a/src/d/actor/d_a_player_main.cpp b/src/d/actor/d_a_player_main.cpp index 4035a3de8..1b7b669dd 100644 --- a/src/d/actor/d_a_player_main.cpp +++ b/src/d/actor/d_a_player_main.cpp @@ -24,7 +24,9 @@ #include "d/d_material.h" #include "JSystem/J3DGraphLoader/J3DAnmLoader.h" #include "d/actor/d_a_hookshot.h" +#include "d/actor/d_a_bomb.h" #include "d/actor/d_a_ship.h" +#include "d/actor/d_a_boko.h" #include "SSystem/SComponent/c_counter.h" const Vec l_ship_offset = {0.0f, 15.0f, -35.0f}; @@ -2967,11 +2969,11 @@ BOOL daPy_lk_c::itemButton() const { /* 801031DC-80103214 .text itemTrigger__9daPy_lk_cCFv */ BOOL daPy_lk_c::itemTrigger() const { if (mLastUsedItemButtonIdx == 0) { - return mPressedButtonsBitfield & 0x04; + return mPressedButtons & 0x04; } else if (mLastUsedItemButtonIdx == 1) { - return mPressedButtonsBitfield & 0x08; + return mPressedButtons & 0x08; } else { - return mPressedButtonsBitfield & 0x10; + return mPressedButtons & 0x10; } } @@ -3006,15 +3008,15 @@ BOOL daPy_lk_c::checkGroupItem(int param_1, int itemNo) { /* 801032E4-801033E4 .text checkSetItemTrigger__9daPy_lk_cFii */ BOOL daPy_lk_c::checkSetItemTrigger(int param_1, int param_2) { if (param_2 == 0 || !daPy_dmEcallBack_c::checkCurse()) { - if (mPressedButtonsBitfield & 0x04 && checkGroupItem(param_1, dComIfGp_getSelectItem(0))) { + if (mPressedButtons & 0x04 && checkGroupItem(param_1, dComIfGp_getSelectItem(0))) { mLastUsedItemButtonIdx = 0; return TRUE; } - if (mPressedButtonsBitfield & 0x08 && checkGroupItem(param_1, dComIfGp_getSelectItem(1))) { + if (mPressedButtons & 0x08 && checkGroupItem(param_1, dComIfGp_getSelectItem(1))) { mLastUsedItemButtonIdx = 1; return TRUE; } - if (mPressedButtonsBitfield & 0x10 && checkGroupItem(param_1, dComIfGp_getSelectItem(2))) { + if (mPressedButtons & 0x10 && checkGroupItem(param_1, dComIfGp_getSelectItem(2))) { mLastUsedItemButtonIdx = 2; return TRUE; } @@ -3110,7 +3112,7 @@ JKRHeap* daPy_lk_c::setItemHeap() { /* 80104240-80104280 .text setBlurPosResource__9daPy_lk_cFUs */ void daPy_lk_c::setBlurPosResource(u16 index) { - dComIfGp_getAnmArchive()->readIdxResource(mSwBlur.mpBlurPos, 0x4800, index); + dComIfGp_getAnmArchive()->readIdxResource(mSwBlur.mpPosBuffer, 0x4800, index); } /* 80104280-80104364 .text getItemAnimeResource__9daPy_lk_cFUs */ @@ -3140,7 +3142,7 @@ void daPy_lk_c::getUnderUpperAnime(const daPy_anmIndex_c* anmIndex, J3DAnmTransf if (m_anm_heap_under[r7].mIdx != anmIndex->mUnderBckIdx) { *pUnderBck = getAnimeResource(&m_anm_heap_under[r7], anmIndex->mUnderBckIdx, bufferSize); } else { - *pUnderBck = mAnmRatioUnder[r7].getAnmTransform(); + *pUnderBck = getNowAnmPackUnder((daPy_UNDER)r7); } if (anmIndex->mUnderBckIdx != anmIndex->mUpperBckIdx) { if (bufferSize == 0xB400) { @@ -3149,7 +3151,7 @@ void daPy_lk_c::getUnderUpperAnime(const daPy_anmIndex_c* anmIndex, J3DAnmTransf if (m_anm_heap_upper[r7].mIdx != anmIndex->mUpperBckIdx) { *pUpperBck = getAnimeResource(&m_anm_heap_upper[r7], anmIndex->mUpperBckIdx, bufferSize); } else { - *pUpperBck = mAnmRatioUpper[r7].getAnmTransform(); + *pUpperBck = getNowAnmPackUpper((daPy_UPPER)r7); } } else { *pUpperBck = NULL; @@ -3160,7 +3162,7 @@ void daPy_lk_c::getUnderUpperAnime(const daPy_anmIndex_c* anmIndex, J3DAnmTransf /* 801044E8-80104564 .text setTextureAnimeResource__9daPy_lk_cFP16J3DAnmTexPatterni */ void daPy_lk_c::setTextureAnimeResource(J3DAnmTexPattern* btp, int r31) { btp->searchUpdateMaterialID(mpCLModelData); - m035C = btp; + mpAnmTexPatternData = btp; m3530 = r31; u16 material_num = btp->getUpdateMaterialNum(); for (u16 i = 0; i < material_num; i++) { @@ -3169,12 +3171,12 @@ void daPy_lk_c::setTextureAnimeResource(J3DAnmTexPattern* btp, int r31) { } /* 80104564-80104600 .text loadTextureAnimeResource__9daPy_lk_cFUli */ -J3DAnmTexPattern* daPy_lk_c::loadTextureAnimeResource(u32 index, BOOL isDemo) { +J3DAnmTexPattern* daPy_lk_c::loadTextureAnimeResource(u32 btpIdx, BOOL isDemo) { J3DAnmTexPattern* btp; if (isDemo) { - dComIfGp_getLkDemoAnmArchive()->readResource(m_tex_anm_heap.m_buffer, 0x1000, index); + dComIfGp_getLkDemoAnmArchive()->readResource(m_tex_anm_heap.m_buffer, 0x1000, btpIdx); } else { - dComIfGp_getAnmArchive()->readIdxResource(m_tex_anm_heap.m_buffer, 0x1000, index); + dComIfGp_getAnmArchive()->readIdxResource(m_tex_anm_heap.m_buffer, 0x1000, btpIdx); } JKRHeap* oldHeap = setAnimeHeap(m_tex_anm_heap.mpAnimeHeap); btp = static_cast(J3DAnmLoaderDataBase::load(m_tex_anm_heap.m_buffer)); @@ -3220,18 +3222,57 @@ void daPy_lk_c::setTextureAnime(u16, int) { } /* 80104E08-80104EC8 .text setPriTextureAnime__9daPy_lk_cFUsi */ -void daPy_lk_c::setPriTextureAnime(u16, int) { - /* Nonmatching */ +void daPy_lk_c::setPriTextureAnime(u16 r4, int r30) { + u16 btpIdx = mTexAnmIndexTable[r4].mBtpIdx; + u16 btkIdx = mTexAnmIndexTable[r4].mBtkIdx; + if (m_tex_anm_heap.field_0x2 != btpIdx) { + m_tex_anm_heap.field_0x2 = btpIdx; + if (m_tex_anm_heap.field_0x4 == 0xFFFF) { + J3DAnmTexPattern* btp = loadTextureAnimeResource(btpIdx, FALSE); + setTextureAnimeResource(btp, r30); + } + } + if (m_tex_scroll_heap.field_0x2 != btkIdx) { + m_tex_scroll_heap.field_0x2 = btkIdx; + if (m_tex_scroll_heap.field_0x4 == 0xFFFF) { + J3DAnmTextureSRTKey* btk = loadTextureScrollResource(btkIdx, FALSE); + setTextureScrollResource(btk, r30); + } + } } /* 80104EC8-80104F74 .text resetPriTextureAnime__9daPy_lk_cFv */ void daPy_lk_c::resetPriTextureAnime() { - /* Nonmatching */ + if (m_tex_anm_heap.field_0x2 != 0xFFFF) { + m_tex_anm_heap.field_0x2 = 0xFFFF; + if (m_tex_anm_heap.field_0x4 == 0xFFFF) { + J3DAnmTexPattern* btp = loadTextureAnimeResource(m_tex_anm_heap.mIdx, FALSE); + setTextureAnimeResource(btp, 0); + } + } + if (m_tex_scroll_heap.field_0x2 != 0xFFFF) { + m_tex_scroll_heap.field_0x2 = 0xFFFF; + if (m_tex_scroll_heap.field_0x4 == 0xFFFF) { + J3DAnmTextureSRTKey* btk = loadTextureScrollResource(m_tex_scroll_heap.mIdx, FALSE); + setTextureScrollResource(btk, 0); + } + } } /* 80104F74-80105040 .text setDemoTextureAnime__9daPy_lk_cFUsUsiUs */ -void daPy_lk_c::setDemoTextureAnime(u16, u16, int, u16) { - /* Nonmatching */ +void daPy_lk_c::setDemoTextureAnime(u16 btpIdx, u16 btkIdx, int r30, u16 r31) { + if (m_tex_anm_heap.field_0x4 != btpIdx || m_tex_anm_heap.field_0x6 != r31) { + m_tex_anm_heap.field_0x4 = btpIdx; + m_tex_anm_heap.field_0x6 = r31; + J3DAnmTexPattern* btp = loadTextureAnimeResource(btpIdx, TRUE); + setTextureAnimeResource(btp, r30); + } + if (m_tex_scroll_heap.field_0x4 != btkIdx || m_tex_scroll_heap.field_0x6 != r31) { + m_tex_scroll_heap.field_0x4 = btkIdx; + m_tex_scroll_heap.field_0x6 = r31; + J3DAnmTextureSRTKey* btk = loadTextureScrollResource(btkIdx, TRUE); + setTextureScrollResource(btk, r30); + } } /* 80105040-80105164 .text resetDemoTextureAnime__9daPy_lk_cFv */ @@ -3240,13 +3281,32 @@ void daPy_lk_c::resetDemoTextureAnime() { } /* 80105164-80105220 .text setTextureScrollResource__9daPy_lk_cFP19J3DAnmTextureSRTKeyi */ -void daPy_lk_c::setTextureScrollResource(J3DAnmTextureSRTKey*, int) { - /* Nonmatching */ +void daPy_lk_c::setTextureScrollResource(J3DAnmTextureSRTKey* btk, int r31) { + btk->searchUpdateMaterialID(mpCLModelData); + mpTexScrollResData = btk; + m3532 = r31; + u16 material_num = btk->getUpdateMaterialNum(); + for (u16 i = 0; i < material_num; i++) { + m_texMtxAnm[i].setAnmTransform(btk); + } + daPy_matAnm_c::setMorfFrame(3); + daPy_matAnm_c::offMabaFlg(); + daPy_matAnm_c::setMabaTimer(1); + daPy_matAnm_c::setMabaTimer(75.0f + cM_rndF(30.0f)); } /* 80105220-801052BC .text loadTextureScrollResource__9daPy_lk_cFUli */ -void daPy_lk_c::loadTextureScrollResource(u32, int) { - /* Nonmatching */ +J3DAnmTextureSRTKey* daPy_lk_c::loadTextureScrollResource(u32 btkIdx, BOOL isDemo) { + J3DAnmTextureSRTKey* btk; + if (isDemo) { + dComIfGp_getLkDemoAnmArchive()->readResource(m_tex_scroll_heap.m_buffer, 0x800, btkIdx); + } else { + dComIfGp_getAnmArchive()->readIdxResource(m_tex_scroll_heap.m_buffer, 0x800, btkIdx); + } + JKRHeap* oldHeap = setAnimeHeap(m_tex_scroll_heap.mpAnimeHeap); + btk = static_cast(J3DAnmLoaderDataBase::load(m_tex_scroll_heap.m_buffer)); + mDoExt_setCurrentHeap(oldHeap); + return btk; } /* 801052BC-8010552C .text playTextureAnime__9daPy_lk_cFv */ @@ -3257,6 +3317,11 @@ void daPy_lk_c::playTextureAnime() { /* 8010552C-8010558C .text checkPlayerGuard__9daPy_lk_cCFv */ BOOL daPy_lk_c::checkPlayerGuard() const { /* Nonmatching */ + bool guard = false; + if (mCurProc == daPyProc_CROUCH_DEFENSE_e || checkUpperGuardAnime() || checkGuardSlip()) { + guard = true; + } + return guard; } /* 8010558C-801056E4 .text setOutPower__9daPy_lk_cFfsi */ @@ -3271,23 +3336,23 @@ BOOL daPy_lk_c::checkSightLine(f32, cXyz*) { /* 80105814-80105910 .text setBootsModel__9daPy_lk_cFPP8J3DModel */ void daPy_lk_c::setBootsModel(J3DModel** pBootModels) { - u16 temp; + u16 bootsJointIdx; if (checkEquipHeavyBoots()) { // TODO: add enum for link's joint numbers pBootModels[0]->setAnmMtx(0x01, mpCLModel->getAnmMtx(0x26)); pBootModels[1]->setAnmMtx(0x01, mpCLModel->getAnmMtx(0x21)); - temp = 2; + bootsJointIdx = 2; } else { - temp = 1; + bootsJointIdx = 1; } J3DModel* bootModel = pBootModels[0]; - bootModel->setAnmMtx(temp, mpCLModel->getAnmMtx(0x28)); - bootModel->setAnmMtx(temp+1, mpCLModel->getAnmMtx(0x27)); + bootModel->setAnmMtx(bootsJointIdx, mpCLModel->getAnmMtx(0x28)); + bootModel->setAnmMtx(bootsJointIdx+1, mpCLModel->getAnmMtx(0x27)); bootModel = pBootModels[1]; - bootModel->setAnmMtx(temp, mpCLModel->getAnmMtx(0x23)); - bootModel->setAnmMtx(temp+1, mpCLModel->getAnmMtx(0x22)); + bootModel->setAnmMtx(bootsJointIdx, mpCLModel->getAnmMtx(0x23)); + bootModel->setAnmMtx(bootsJointIdx+1, mpCLModel->getAnmMtx(0x22)); } /* 80105910-80106660 .text setItemModel__9daPy_lk_cFv */ @@ -3386,7 +3451,9 @@ BOOL daPy_lk_c::draw() { origFogB = mTevStr.mFogColor.b; origFogStartZ = mTevStr.mFogStartZ; origFogEndZ = mTevStr.mFogEndZ; - if (!checkFreezeState() && mCurProc != PROC_ELEC_DAMAGE_e && (daPy_dmEcallBack_c::checkCurse() || checkConfuse() || mDamageWaitTimer > 0)) { + if (!checkFreezeState() && mCurProc != daPyProc_ELEC_DAMAGE_e && + (daPy_dmEcallBack_c::checkCurse() || checkConfuse() || mDamageWaitTimer > 0) + ) { cXyz sp18; mDoLib_pos2camera(¤t.pos, &sp18); f32 f2 = fabsf(cM_ssin(g_Counter.mTimer * 0x800)); @@ -3403,13 +3470,13 @@ BOOL daPy_lk_c::draw() { mTevStr.mFogEndZ = mTevStr.mFogStartZ + 300.0f; } - u16 material_num = m035C->getUpdateMaterialNum(); + u16 material_num = mpAnmTexPatternData->getUpdateMaterialNum(); for (u16 i = 0; i < material_num; i++) { - u16 matID = m035C->getUpdateMaterialID(i); + u16 matID = mpAnmTexPatternData->getUpdateMaterialID(i); if (matID != 0xFFFF) { J3DMaterial* mtl = mpCLModelData->getMaterialNodePointer(matID); J3DMaterialAnm* mtlAnm = mtl->getMaterialAnm(); - u8 texNo = m035C->getAnmTable()[i].mTexNo; + u8 texNo = mpAnmTexPatternData->getAnmTable()[i].mTexNo; mtlAnm->setTexNoAnm(texNo, &m_texNoAnms[i]); if (matID != 0xE) { // Not mouth (i.e. it's eyeL, eyeR, mayuL, or mayuR) @@ -3421,7 +3488,7 @@ BOOL daPy_lk_c::draw() { } mpCLModelData->setTexMtxAnimator(mpTexScrollResData, m_texMtxAnm, NULL); - m035C->setFrame(m3530); + mpAnmTexPatternData->setFrame(m3530); mpTexScrollResData->setFrame(m3532); g_env_light.setLightTevColorType(mpCLModel, &mTevStr); J3DJoint* link_root_joint = mpCLModelData->getJointNodePointer(0x00); // link_root joint @@ -3572,9 +3639,9 @@ BOOL daPy_lk_c::draw() { mTevStr.mFogEndZ = origFogEndZ; if (!r24) { - if (mCurProc == PROC_CUT_F_e || mCurProc == PROC_BT_VERTICAL_JUMP_CUT_e) { + if (mCurProc == daPyProc_CUT_F_e || mCurProc == daPyProc_BT_VERTICAL_JUMP_CUT_e) { updateDLSetLight(mpSwordTipStabModel, 0); - } else if (checkModeFlg(ModeFlg_SWIM) && checkNoResetFlg0(daPyFlg0_UNK100) && !(mCurProc == DPROC_DEAD_e && m34D6 == 0)) { + } else if (checkModeFlg(ModeFlg_SWIM) && checkNoResetFlg0(daPyFlg0_UNK100) && !(mCurProc == daPyProc_DEMO_DEAD_e && m34D6 == 0)) { GXColor spc; GXColor sp8; dKy_get_seacolor(&spc, &sp8); @@ -3648,7 +3715,7 @@ BOOL daPy_lk_c::draw() { updateDLSetLight(mpYbafo00Model, 0); } dComIfGd_setList(); - if (mCurProc != DPROC_CAUGHT_e && !dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) { + if (mCurProc != daPyProc_DEMO_CAUGHT_e && !dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e)) { drawShadow(); } if (mSwBlur.field_0x014 > 0) { @@ -3694,7 +3761,25 @@ void daPy_actorKeep_c::clearData() { /* 801084C0-80108564 .text setActorPointer__9daPy_lk_cFv */ void daPy_lk_c::setActorPointer() { - /* Nonmatching */ + mActorKeepRope.setActor(); + mActorKeepGrab.setActor(); + mActorKeepThrow.setActor(); + mActorKeepEquip.setActor(); + + if (mHeldItemType == 0x101) { + fopAc_ac_c* actor = mActorKeepEquip.getActor(); + if (actor == NULL || !fopAcM_checkCarryNow(actor)) { + mActorKeepEquip.clearData(); + mHeldItemType = 0x100; + } + } + + if (m3630 != fpcM_ERROR_PROCESS_ID_e) { + fopAc_ac_c* sp8; + if (!fopAcM_SearchByID(m3630, &sp8)) { + m3630 = -1; + } + } } /* 80108564-80108634 .text setTalkStatus__9daPy_lk_cFv */ @@ -3757,7 +3842,10 @@ void daPy_lk_c::posMove() { /* 80109E80-80109ED8 .text setShapeAngleToAtnActor__9daPy_lk_cFv */ void daPy_lk_c::setShapeAngleToAtnActor() { - /* Nonmatching */ + if (mpAttnActorLockOn != NULL) { + s16 targetAngle = cLib_targetAngleY(¤t.pos, &mpAttnActorLockOn->mEyePos); + cLib_addCalcAngleS(&shape_angle.y, targetAngle, 2, 0x2000, 0x800); + } } /* 80109ED8-80109F4C .text cancelItemUpperReadyAnime__9daPy_lk_cFv */ @@ -3792,7 +3880,30 @@ void daPy_lk_c::setSpeedAndAngleAtn() { /* 8010AA90-8010AB84 .text setSpeedAndAngleAtnBack__9daPy_lk_cFv */ void daPy_lk_c::setSpeedAndAngleAtnBack() { - /* Nonmatching */ + f32 f1; + if (m35B0 > 0.05f) { + if (getDirectionFromCurrentAngle() == 1) { + current.angle.y += 0x8000; + mVelocity *= -1.0f; + } + s16 origAngleY = current.angle.y; + cLib_addCalcAngleS( + ¤t.angle.y, m34E8, + daPy_HIO_atnMoveB_c0::m.field_0x4, + daPy_HIO_atnMoveB_c0::m.field_0x0, + daPy_HIO_atnMoveB_c0::m.field_0x2 + ); + f1 = (daPy_HIO_atnMoveB_c0::m.field_0x8 * m35B0) * cM_scos(current.angle.y - origAngleY); + } else { + f1 = 0.0f; + } + shape_angle.y = m34E6; + setNormalSpeedF( + f1, + daPy_HIO_atnMoveB_c0::m.field_0x18, + daPy_HIO_atnMoveB_c0::m.field_0x10, + daPy_HIO_atnMoveB_c0::m.field_0x14 + ); } /* 8010AB84-8010AC8C .text setSpeedAndAngleAtnActor__9daPy_lk_cFv */ @@ -3876,22 +3987,27 @@ BOOL daPy_lk_c::checkBossGomaStage() { /* 8010C4A4-8010C4C8 .text checkSingleItemEquipAnime__9daPy_lk_cCFv */ BOOL daPy_lk_c::checkSingleItemEquipAnime() const { - return m_anm_heap_upper[2].mIdx == LKANM_BCK_TAKEL || m_anm_heap_upper[2].mIdx == LKANM_BCK_TAKER; + return m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_TAKEL || + m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_TAKER; } /* 8010C4C8-8010C528 .text checkItemEquipAnime__9daPy_lk_cCFv */ BOOL daPy_lk_c::checkItemEquipAnime() const { - return m_anm_heap_upper[2].mIdx == LKANM_BCK_TAKE || checkSingleItemEquipAnime() || m_anm_heap_upper[2].mIdx == LKANM_BCK_TAKEBOTH; + return m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_TAKE || + checkSingleItemEquipAnime() || + m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_TAKEBOTH; } /* 8010C528-8010C570 .text checkEquipAnime__9daPy_lk_cCFv */ BOOL daPy_lk_c::checkEquipAnime() const { - return m_anm_heap_upper[2].mIdx == LKANM_BCK_REST || checkItemEquipAnime(); + return m_anm_heap_upper[UPPER_MOVE2_e].mIdx == LKANM_BCK_REST || + checkItemEquipAnime(); } /* 8010C570-8010C71C .text deleteEquipItem__9daPy_lk_cFi */ void daPy_lk_c::deleteEquipItem(BOOL param_1) { fopAc_ac_c* equipActor = mActorKeepEquip.getActor(); + if (param_1 && (mHeldItemType != 0x100 && mHeldItemType != 0x101)) { if (mHeldItemType == 0x103) { seStartOnlyReverb(JA_SE_LK_SW_PUTIN_S); @@ -3912,10 +4028,10 @@ void daPy_lk_c::deleteEquipItem(BOOL param_1) { if ((mHeldItemType == ROPE && checkRopeAnime()) || (mHeldItemType == BOOMERANG && checkBoomerangAnime()) || - (mHeldItemType == HOOKSHOT && m_anm_heap_upper[2].mIdx == LKANM_BCK_HOOKSHOTWAIT) || - (checkBowItem(mHeldItemType) && checkBowAnime())) - { - resetActAnimeUpper(UPPER_UNK2, -1.0f); + (mHeldItemType == HOOKSHOT && checkHookshotReadyAnime()) || + (checkBowItem(mHeldItemType) && checkBowAnime()) + ) { + resetActAnimeUpper(UPPER_MOVE2_e, -1.0f); } mActorKeepEquip.clearData(); @@ -3980,7 +4096,62 @@ void daPy_lk_c::returnKeepItemData() { /* 8010C8D4-8010CB70 .text makeItemType__9daPy_lk_cFv */ void daPy_lk_c::makeItemType() { - /* Nonmatching */ + if (mHeldItemType == ROPE) { + fopAc_ac_c* rope = (fopAc_ac_c*)fopAcM_fastCreate(PROC_HIMO2, 0, ¤t.pos); + mActorKeepEquip.setData(rope); + } else if (mHeldItemType == HOOKSHOT) { + fopAc_ac_c* hookshot = (fopAc_ac_c*)fopAcM_fastCreate(PROC_HOOKSHOT, 0, ¤t.pos); + mActorKeepEquip.setData(hookshot); + setHookshotModel(); + } else if (mHeldItemType == BOOMERANG) { + fopAc_ac_c* boomerang = (fopAc_ac_c*)fopAcM_fastCreate(PROC_BOOMERANG, 0, ¤t.pos); + mActorKeepEquip.setData(boomerang); + return; + } else if (mHeldItemType == BOMB_BAG) { + fopAc_ac_c* bomb = (fopAc_ac_c*)fopAcM_fastCreate(PROC_BOMB, daBomb_c::prm_make(daBomb_c::STATE_3, false, false), ¤t.pos); + mActorKeepGrab.setData(bomb); + mHeldItemType = 0x100; + if (mActorKeepGrab.getActor() != NULL) { + setActAnimeUpper(LKANM_BCK_GRABWAIT, UPPER_MOVE2_e, 0.0f, 0.0f, -1, 5.0f); + mActivePlayerBombs++; + fopAcM_setCarryNow(mActorKeepGrab.getActor(), FALSE); + dComIfGp_setItemBombNumCount(-1); + m35C8 = 17.0f; + } + return; + } else if (checkBowItem(mHeldItemType)) { + setBowModel(); + return; + } else if (mHeldItemType == TELESCOPE) { + setScopeModel(); + return; + } else if (checkPhotoBoxItem(mHeldItemType)) { + setPhotoBoxModel(); + return; + } else if (mHeldItemType == TNCL_WHITSL) { + setTinkleCeiverModel(); + return; + } else if (mHeldItemType == DEKU_LEAF) { + setSmallFanModel(); + return; + } else if (mHeldItemType == WIND_TACT) { + mHeldItemType = NO_ITEM; + setTactModel(); + return; + } else if (mHeldItemType == HUMMER) { + setHammerModel(); + return; + } else if (mHeldItemType == EMPTY_BOTTLE) { + setBottleModel(mHeldItemType); + return; + } else { + return; + } + + if (mActorKeepEquip.getActor() == NULL) { + mHeldItemType = 0x100; + offResetFlg0(daPyRFlg0_UNK80); + } } /* 8010CB70-8010CBC8 .text setScopeModel__9daPy_lk_cFv */ @@ -4014,7 +4185,62 @@ BOOL daPy_lk_c::checkNewItemChange(u8) { /* 8010CFB4-8010D26C .text checkItemChangeFromButton__9daPy_lk_cFv */ BOOL daPy_lk_c::checkItemChangeFromButton() { - /* Nonmatching */ + if (checkModeFlg(ModeFlg_00000004) && + !checkEquipAnime() && + mActorKeepGrab.getActor() == NULL && + !checkPlayerGuard() + ) { + if (!daPy_dmEcallBack_c::checkCurse()) { + bool r4; + if (mPressedButtons & 0x02 && + // TODO inline (e.g. checkSwordMiniGame?) + (r4 = dComIfGs_getSelectEquip(0) != NO_ITEM || dComIfGp_getMiniGameType() == 2, r4) && + mHeldItemType != 0x103 + ) { + setAnimeEquipSword(1); + } else if (mPressedButtons & 0x04) { + if (checkNewItemChange(0)) { + mLastUsedItemButtonIdx = 0; + return TRUE; + } + } else if (mPressedButtons & 0x08) { + if (checkNewItemChange(1)) { + mLastUsedItemButtonIdx = 1; + return TRUE; + } + } else if (mPressedButtons & 0x10) { + if (checkNewItemChange(2)) { + mLastUsedItemButtonIdx = 2; + return TRUE; + } + } else if (mPressedButtons & 0x01) { + if (dComIfGp_getDoStatus() == 0x08) { // A button shows "Put Away" + setAnimeUnequip(); + } + } + } else { + if (checkEquipDragonShield() && checkSetItemTrigger(DRGN_SHIELD, 0)) { + offNoResetFlg1(daPyFlg1_EQUIP_DRAGON_SHIELD); + } else if (mAcch.ChkGroundHit() && !daPy_lk_c::checkPlayerFly()) { + if (checkEquipHeavyBoots() && checkSetItemTrigger(HVY_BOOTS, 0)) { + return procBootsEquip_init(HVY_BOOTS); + } else if (checkSetItemTrigger(0x105, 0)) { + return procBottleDrink_init(dComIfGp_getSelectItem(mLastUsedItemButtonIdx)); + } else if (checkSetItemTrigger(FAIRY_BOTTLE, 0)) { + return procBottleOpen_init(FAIRY_BOTTLE); + } else if (mPressedButtons & 0x01) { + if (dComIfGp_getDoStatus() == 0x08) { // A button shows "Put Away" + setAnimeUnequip(); + } + } + } else if (mPressedButtons & 0x01) { + if (dComIfGp_getDoStatus() == 0x08) { // A button shows "Put Away" + setAnimeUnequip(); + } + } + } + } + return FALSE; } /* 8010D26C-8010D754 .text checkItemAction__9daPy_lk_cFv */ @@ -4139,8 +4365,8 @@ BOOL daPy_lk_c::changeDamageProc() { if (!checkModeFlg(ModeFlg_DAMAGE) && mDamageWaitTimer > 0) { mDamageWaitTimer--; if (mDamageWaitTimer == 0) { - if (m_anm_heap_upper[2].mIdx == LKANM_BCK_DAMDASH) { - resetActAnimeUpper(UPPER_UNK2, daPy_HIO_basic_c0::m.field_0xC); + if (checkDashDamageAnime()) { + resetActAnimeUpper(UPPER_MOVE2_e, daPy_HIO_basic_c0::m.field_0xC); } else if (checkModeFlg(ModeFlg_SWIM)) { resetPriTextureAnime(); } @@ -4157,7 +4383,7 @@ BOOL daPy_lk_c::changeDamageProc() { if (dComIfGp_event_runCheck() || mDemo.getDemoType() != 0 || checkNoControll() || - mCurProc == PROC_SHIP_READY_e || + mCurProc == daPyProc_SHIP_READY_e || ( dComIfGp_checkPlayerStatus0(0, daPyStts0_SHIP_RIDE_e) && ship && ship->unknown_inline_TODO() @@ -4326,7 +4552,7 @@ BOOL daPy_lk_c::changeDamageProc() { seStartOnlyReverb(JA_SE_OBJ_COL_SWM_NSWL); } - if (mCurProc == PROC_CROUCH_DEFENSE_e) { + if (mCurProc == daPyProc_CROUCH_DEFENSE_e) { return procCrouchDefenseSlip_init(); } else { return procGuardSlip_init(); @@ -4393,8 +4619,8 @@ BOOL daPy_lk_c::checkRestHPAnime() { /* 80111EFC-80111F5C .text checkHeavyStateOn__9daPy_lk_cFv */ BOOL daPy_lk_c::checkHeavyStateOn() { if (!dComIfGp_event_runCheck() && mDemo.getDemoType() == 0 && - (getHeavyStateAndBoots() || checkGrabSpecialHeavyState())) - { + (getHeavyStateAndBoots() || checkGrabSpecialHeavyState()) + ) { return TRUE; } return FALSE; @@ -4465,23 +4691,23 @@ void daPy_lk_c::cancelNoDamageMode() { } /* 80112348-80112954 .text commonProcInit__9daPy_lk_cFQ29daPy_lk_c9daPy_PROC */ -BOOL daPy_lk_c::commonProcInit(daPy_lk_c::daPy_PROC proc) { +BOOL daPy_lk_c::commonProcInit(daPy_PROC proc) { ProcInitTableEntry& procInit = mProcInitTable[proc]; s32 temp_r29; BOOL resetDemoAnime = FALSE; s32 temp_r28; - if (mCurProc == PROC_SLIP_e) { + if (mCurProc == daPyProc_SLIP_e) { mDoAud_seStop(JA_SE_LK_RUN_SLIP, 0); - } else if (mCurProc == PROC_GRAB_MISS_e || (mCurProc == PROC_GRAB_READY_e && proc != PROC_GRAB_MISS_e)) { + } else if (mCurProc == daPyProc_GRAB_MISS_e || (mCurProc == daPyProc_GRAB_READY_e && proc != daPyProc_GRAB_MISS_e)) { mActorKeepRope.clearData(); - } else if (mCurProc == DPROC_TALISMAN_WAIT_e) { + } else if (mCurProc == daPyProc_DEMO_TALISMAN_WAIT_e) { seStartOnlyReverb(JA_SE_LK_ITEM_TAKEOUT); mpHeldItemModel = NULL; - } else if (mCurProc == PROC_FAN_SWING_e) { + } else if (mCurProc == daPyProc_FAN_SWING_e) { setSmallFanModel(); - } else if (mCurProc == PROC_FAN_GLIDE_e) { + } else if (mCurProc == daPyProc_FAN_GLIDE_e) { deleteEquipItem(FALSE); mMaxFallSpeed = daPy_HIO_autoJump_c0::m.field_0x10; setSmallFanModel(); @@ -4490,28 +4716,28 @@ BOOL daPy_lk_c::commonProcInit(daPy_lk_c::daPy_PROC proc) { m3730 = cXyz::Zero; m34E0 = 0; m34E4 = 0; - } else if (mCurProc == PROC_SLOW_FALL_e) { + } else if (mCurProc == daPyProc_SLOW_FALL_e) { mMaxFallSpeed = daPy_HIO_autoJump_c0::m.field_0x10; - } else if (mCurProc == DPROC_TOOL_e) { + } else if (mCurProc == daPyProc_DEMO_TOOL_e) { resetDemoAnime = TRUE; speed.y = 0.0f; - } else if (mCurProc == DPROC_GET_ITEM_e || mCurProc == DPROC_GET_DANCE_e) { + } else if (mCurProc == daPyProc_DEMO_GET_ITEM_e || mCurProc == daPyProc_DEMO_GET_DANCE_e) { dKy_Itemgetcol_chg_off(); - if (mCurProc == DPROC_GET_ITEM_e && m34D8 != 0) { + if (mCurProc == daPyProc_DEMO_GET_ITEM_e && m34D8 != 0) { m34C2 = 0xB; } - } else if (mCurProc == DPROC_PRESENT_e || mCurProc == PROC_NOT_USE_e) { + } else if (mCurProc == daPyProc_DEMO_PRESENT_e || mCurProc == daPyProc_NOT_USE_e) { daItemBase_c* item = (daItemBase_c*)fopAcM_getItemEventPartner(this); if (item && (fopAcM_GetName(item) == PROC_ITEM || fopAcM_GetName(item) == PROC_Demo_Item)) { item->dead(); } - } else if (mCurProc == DPROC_LETTER_READ_e) { + } else if (mCurProc == daPyProc_DEMO_LETTER_READ_e) { deleteEquipItem(FALSE); - } else if (mCurProc == PROC_CUT_ROLL_END_e) { + } else if (mCurProc == daPyProc_CUT_ROLL_END_e) { if (m33A8.getEmitter()) { m33A8.getEmitter()->setGlobalAlpha(0); } - } else if (mCurProc == PROC_SHIP_BOW_e) { + } else if (mCurProc == daPyProc_SHIP_BOW_e) { deleteArrow(); } @@ -4569,7 +4795,7 @@ BOOL daPy_lk_c::commonProcInit(daPy_lk_c::daPy_PROC proc) { if (!(checkEquipAnime() && checkModeFlg(ModeFlg_00000004)) && !checkModeFlg(ModeFlg_00001000)) { if (!(checkGrabAnime() || checkBoomerangThrowAnime()) || !checkModeFlg(ModeFlg_00004000)) { - resetActAnimeUpper(UPPER_UNK2, -1.0f); + resetActAnimeUpper(UPPER_MOVE2_e, -1.0f); if (!checkModeFlg(ModeFlg_GRAB)) { freeGrabItem(); } @@ -4586,7 +4812,7 @@ BOOL daPy_lk_c::commonProcInit(daPy_lk_c::daPy_PROC proc) { m35F4 = m3688.y; } - if (mCurProc != PROC_SWIM_MOVE_e) { + if (mCurProc != daPyProc_SWIM_MOVE_e) { mSwimTailEcallBack[0].onEnd(); mSwimTailEcallBack[1].onEnd(); } @@ -4623,7 +4849,7 @@ BOOL daPy_lk_c::commonProcInit(daPy_lk_c::daPy_PROC proc) { m35E8 = 0.0f; - if (!checkModeFlg(ModeFlg_ROPE) && mCurProc != PROC_ROPE_SUBJECT_e && mCurProc != PROC_ROPE_MOVE_e) { + if (!checkModeFlg(ModeFlg_ROPE) && mCurProc != daPyProc_ROPE_SUBJECT_e && mCurProc != daPyProc_ROPE_MOVE_e) { freeRopeItem(); } if (!checkModeFlg(ModeFlg_HOOKSHOT)) { @@ -4922,7 +5148,7 @@ BOOL daPy_lk_c::procBackJumpLand() { /* 80115E88-80115EA4 .text checkAutoJumpFlying__9daPy_lk_cCFv */ int daPy_lk_c::checkAutoJumpFlying() const { - return mCurProc != PROC_AUTO_JUMP_e ? -1 : m34D0; + return mCurProc != daPyProc_AUTO_JUMP_e ? -1 : m34D0; } /* 80115EA4-8011602C .text procAutoJump_init__9daPy_lk_cFv */ @@ -5202,13 +5428,32 @@ void daPy_lk_c::setWorldMatrix() { } /* 8011D070-8011D0E4 .text setAtParam__9daPy_lk_cFUli11dCcG_At_SplUcUcUcf */ -void daPy_lk_c::setAtParam(u32, int, dCcG_At_Spl, u8, u8, u8, f32) { - /* Nonmatching */ +void daPy_lk_c::setAtParam(u32 type, int atp, dCcG_At_Spl spl, u8 se, u8 hitMark, u8 cutType, f32 radius) { + dCcD_Cps* cps = mAtCps; + if (type == AT_TYPE_SWORD && checkNoResetFlg1(daPyFlg1_UNK8000)) { + atp *= 2; + } + if (type != AT_TYPE_SWORD) { + field_0x291 = 0; + } + for (int i = 0; i < ARRAY_SIZE(mAtCps); i++, cps++) { + cps->SetAtType(type); + cps->SetAtAtp(atp); + cps->SetAtSpl(spl); + cps->SetAtSe(se); + cps->SetAtHitMark(hitMark); + cps->SetR(radius); + } + mCutType = cutType; + offResetFlg0(daPyRFlg0_UNK8000000); + offNoResetFlg0(daPyFlg0_UNK10000000); } /* 8011D0E4-8011D110 .text resetCurse__9daPy_lk_cFv */ void daPy_lk_c::resetCurse() { - /* Nonmatching */ + if (daPy_dmEcallBack_c::checkCurse()) { + endDamageEmitter(); + } } u8 normal_scale_38064[0xC]; @@ -5260,11 +5505,11 @@ void daPy_lk_c::setBgCheckParam() { mAcchCir[1].SetWallH(89.9f); mAcchCir[2].SetWallH(125.0f); - if (mCurProc == PROC_ROPE_SWING_START_e) { + if (mCurProc == daPyProc_ROPE_SWING_START_e) { mAcchCir[0].SetWallH(-125.0f); mAcchCir[1].SetWallH(-89.9f); mAcchCir[2].SetWallH(0.0f); - } else if (mCurProc == PROC_LARGE_DAMAGE_WALL_e || checkModeFlg(ModeFlg_CLIMB | ModeFlg_LADDER)) { + } else if (mCurProc == daPyProc_LARGE_DAMAGE_WALL_e || checkModeFlg(ModeFlg_CLIMB | ModeFlg_LADDER)) { mAcchCir[0].SetWallR(5.0f); } else if (checkModeFlg(ModeFlg_PUSHPULL)) { mAcchCir[0].SetWallR(40.0f); @@ -5278,7 +5523,7 @@ void daPy_lk_c::setBgCheckParam() { mAcchCir[0].SetWallH(-5.0f); mAcchCir[1].SetWallH(0.0f); mAcchCir[2].SetWallH(20.0f); - } else if (checkModeFlg(ModeFlg_CRAWL) && mCurProc != PROC_CRAWL_END_e) { + } else if (checkModeFlg(ModeFlg_CRAWL) && mCurProc != daPyProc_CRAWL_END_e) { mAcchCir[0].SetWallR(30.0f); mAcchCir[0].SetWallH(10.0f); mAcchCir[1].SetWallH(50.0f); @@ -5376,7 +5621,7 @@ BOOL daPy_lk_c::startRestartRoom(u32 param_1, int eventInfoIdx, f32 param_3, int return TRUE; } - if (checkNoResetFlg0(daPyFlg0_DEKU_SP_RETURN_FLG) && mCurProc != DPROC_DEAD_e) { + if (checkNoResetFlg0(daPyFlg0_DEKU_SP_RETURN_FLG) && mCurProc != daPyProc_DEMO_DEAD_e) { i_point = mDekuSpRestartPoint; } else { i_point = mRestartPoint; @@ -5416,7 +5661,7 @@ BOOL daPy_lk_c::startRestartRoom(u32 param_1, int eventInfoIdx, f32 param_3, int dStage_changeScene(scls_idx, 0.0f, param_1, -1); } else { - if (mCurProc == DPROC_DEAD_e) { + if (mCurProc == daPyProc_DEMO_DEAD_e) { dStage_changeScene(0, 0.0f, param_1, -1); } else { int roomNo = dComIfGs_getRestartRoomNo(); @@ -5432,7 +5677,7 @@ BOOL daPy_lk_c::startRestartRoom(u32 param_1, int eventInfoIdx, f32 param_3, int dComIfGp_setNextStage(dComIfGp_getStartStageName(), i_point, current.roomNo, -1, 0.0f, param_1); } - if (mCurProc != DPROC_DEAD_e) { + if (mCurProc != daPyProc_DEMO_DEAD_e) { u32 roomParam = setParamData(-1, 0, eventInfoIdx, 0); dComIfGs_setRestartRoomParam(roomParam); mDoAud_seStart(JA_SE_FORCE_BACK); @@ -5802,7 +6047,7 @@ BOOL daPy_lk_c::createHeap() { } /* 8012469C-801249F8 .text createAnimeHeap__9daPy_lk_cFPP12JKRSolidHeapQ29daPy_lk_c14daPy_HEAP_TYPE */ -void daPy_lk_c::createAnimeHeap(JKRSolidHeap**, daPy_lk_c::daPy_HEAP_TYPE) { +void daPy_lk_c::createAnimeHeap(JKRSolidHeap**, daPy_HEAP_TYPE) { /* Nonmatching */ } @@ -5850,12 +6095,12 @@ void daPy_lk_c::playerInit() { mpCLModelData->getJointNodePointer(0x00)->setCallBack(daPy_jointCallback0); mpCLModelData->getJointNodePointer(0x28)->setCallBack(daPy_jointCallback1); - m_pbCalc[0]->setUserArea(reinterpret_cast(this)); - m_pbCalc[0]->setBeforeCalc(daPy_jointBeforeCallback); - m_pbCalc[0]->setAfterCalc(daPy_jointAfterCallback); - m_pbCalc[1]->setUserArea(reinterpret_cast(this)); - m_pbCalc[1]->setBeforeCalc(daPy_jointBeforeCallback); - m_pbCalc[1]->setAfterCalc(daPy_jointAfterCallback); + m_pbCalc[PART_UNDER_e]->setUserArea(reinterpret_cast(this)); + m_pbCalc[PART_UNDER_e]->setBeforeCalc(daPy_jointBeforeCallback); + m_pbCalc[PART_UNDER_e]->setAfterCalc(daPy_jointAfterCallback); + m_pbCalc[PART_UPPER_e]->setUserArea(reinterpret_cast(this)); + m_pbCalc[PART_UPPER_e]->setBeforeCalc(daPy_jointBeforeCallback); + m_pbCalc[PART_UPPER_e]->setAfterCalc(daPy_jointAfterCallback); int i; J3DMaterial* mat = mpCLModelData->getJointNodePointer(0x13)->getMesh(); @@ -5888,19 +6133,19 @@ void daPy_lk_c::playerInit() { JUT_ASSERT(0x53FE, zoff_none_cnt == 4); JUT_ASSERT(0x53FF, zoff_blend_cnt == 4); - m03A4 = mpCLModelData->getJointNodePointer(0x08)->getMesh()->getShape(); - m03A8 = mpCLModelData->getJointNodePointer(0x0C)->getMesh()->getShape(); + mpLhandShape = mpCLModelData->getJointNodePointer(0x08)->getMesh()->getShape(); // cl_LhandA joint + mpRhandShape = mpCLModelData->getJointNodePointer(0x0C)->getMesh()->getShape(); // cl_RhandA joint J3DModelData* handsModelData = mpHandsModel->getModelData(); for (u16 i = 0x01; i < 0x0B; i++) { handsModelData->getJointNodePointer(i)->getMesh()->getShape()->hide(); } - u32 buffer_start = reinterpret_cast(m_anm_heap_under[0].m_buffer) + 0x2400; - m_anm_heap_under[1].m_buffer = reinterpret_cast(buffer_start); - buffer_start = reinterpret_cast(m_anm_heap_under[0].m_buffer) + 0x4800; - m_anm_heap_upper[0].m_buffer = reinterpret_cast(buffer_start); - for (int i = 1; i <= 2; i++) { - buffer_start = reinterpret_cast(m_anm_heap_upper[0].m_buffer) + i*0x2400; + u32 buffer_start = reinterpret_cast(m_anm_heap_under[UNDER_MOVE0_e].m_buffer) + 0x2400; + m_anm_heap_under[UNDER_MOVE1_e].m_buffer = reinterpret_cast(buffer_start); + buffer_start = reinterpret_cast(m_anm_heap_under[UNDER_MOVE0_e].m_buffer) + 0x4800; + m_anm_heap_upper[UPPER_MOVE0_e].m_buffer = reinterpret_cast(buffer_start); + for (int i = UPPER_MOVE1_e; i <= UPPER_MOVE2_e; i++) { + buffer_start = reinterpret_cast(m_anm_heap_upper[UPPER_MOVE0_e].m_buffer) + i*0x2400; m_anm_heap_upper[i].m_buffer = reinterpret_cast(buffer_start); } @@ -5995,10 +6240,10 @@ void daPy_lk_c::playerInit() { mActorKeepThrow.clearData(); mActorKeepGrab.clearData(); mActorKeepRope.clearData(); - m3628 = -1; - m3634 = -1; + m3628 = fpcM_ERROR_PROCESS_ID_e; + m3634 = fpcM_ERROR_PROCESS_ID_e; mTactZevPartnerPID = fpcM_ERROR_PROCESS_ID_e; - m3630 = -1; + m3630 = fpcM_ERROR_PROCESS_ID_e; ResTIMG* blur_img = (ResTIMG*)dComIfG_getObjectRes(l_arcName, LINK_BTI_BLUR); mSwBlur.mpBlurTex = blur_img; @@ -6128,12 +6373,10 @@ int phase_2(daPy_lk_c* i_this) { } /* 80125DB4-80126F00 .text __ct__9daPy_lk_cFv */ -daPy_lk_c::daPy_lk_c() { -} +daPy_lk_c::daPy_lk_c() {} /* 80126F00-8012704C .text __dt__15daPy_footData_cFv */ -daPy_footData_c::~daPy_footData_c() { -} +daPy_footData_c::~daPy_footData_c() {} /* 8012704C-80127160 .text __ct__15daPy_footData_cFv */ daPy_footData_c::daPy_footData_c() { @@ -6163,19 +6406,19 @@ static s32 daPy_Create(fopAc_ac_c* i_this) { /* 80127BA0-80127CC0 .text setSeAnime__9daPy_lk_cFPC14daPy_anmHeap_cP12J3DFrameCtrl */ void daPy_lk_c::setSeAnime(const daPy_anmHeap_c* anmHeap, J3DFrameCtrl* frameCtrl) { - /* Nonmatching */ - u32 seAnmOffsetInBck = *reinterpret_cast(reinterpret_cast(anmHeap->m_buffer) + 0x1C); - if (seAnmOffsetInBck == -1) { + if (reinterpret_cast(anmHeap->m_buffer)->mSeAnmOffset == -1) { resetSeAnime(); } else if (mSeAnmIdx == anmHeap->mIdx && m34F0 == anmHeap->field_0x6 && mSeAnmRate * frameCtrl->getRate() >= 0.0f) { mpSeAnmFrameCtrl = frameCtrl; } else { - u32 data_size = *reinterpret_cast(anmHeap->m_buffer); // TODO + JUTDataFileHeader* fileHeader = reinterpret_cast(anmHeap->m_buffer); + + u32 data_size = fileHeader->mFileSize - fileHeader->mSeAnmOffset; const u32 l_sanm_buffer_size = 0x200; JUT_ASSERT(22318, data_size < l_sanm_buffer_size); - u32 seAnmPtr = *reinterpret_cast(anmHeap->m_buffer); // TODO - cLib_memCpy(m_sanm_buffer, anmHeap->m_buffer, seAnmPtr); + u8* seAnmPtr = reinterpret_cast(anmHeap->m_buffer) + fileHeader->mSeAnmOffset; + cLib_memCpy(m_sanm_buffer, seAnmPtr, data_size); mpSeAnmFrameCtrl = frameCtrl; mSeAnmIdx = anmHeap->mIdx; m34F0 = anmHeap->field_0x6; @@ -6211,41 +6454,41 @@ void daPy_lk_c::resetSeAnime() { } /* 80127E08-8012821C .text setMoveAnime__9daPy_lk_cFfffQ29daPy_lk_c8daPy_ANMQ29daPy_lk_c8daPy_ANMif */ -void daPy_lk_c::setMoveAnime(f32, f32, f32, daPy_lk_c::daPy_ANM, daPy_lk_c::daPy_ANM, int, f32) { +void daPy_lk_c::setMoveAnime(f32, f32, f32, daPy_ANM, daPy_ANM, int, f32) { /* Nonmatching */ } /* 8012821C-80128494 .text setSingleMoveAnime__9daPy_lk_cFQ29daPy_lk_c8daPy_ANMffsf */ -BOOL daPy_lk_c::setSingleMoveAnime(daPy_lk_c::daPy_ANM anm, f32 rate, f32 start, s16 end, f32 param_5) { +BOOL daPy_lk_c::setSingleMoveAnime(daPy_ANM anm, f32 rate, f32 start, s16 end, f32 param_5) { const daPy_anmIndex_c* anmData = getAnmData(anm); J3DAnmTransform* under_bck; J3DAnmTransform* upper_bck; getUnderUpperAnime(anmData, &under_bck, &upper_bck, 0, 0xB400); - m_anm_heap_under[1].mIdx = -1; - m_anm_heap_upper[1].mIdx = -1; - mAnmRatioUpper[0].setRatio(1.0f); - mAnmRatioUpper[1].setRatio(0.0f); - mAnmRatioUnder[0].setRatio(1.0f); - mAnmRatioUnder[1].setRatio(0.0f); - mAnmRatioUnder[0].setAnmTransform(under_bck); - mAnmRatioUnder[1].setAnmTransform(NULL); + m_anm_heap_under[UNDER_MOVE1_e].mIdx = -1; + m_anm_heap_upper[UPPER_MOVE1_e].mIdx = -1; + mAnmRatioUpper[UPPER_MOVE0_e].setRatio(1.0f); + mAnmRatioUpper[UPPER_MOVE1_e].setRatio(0.0f); + mAnmRatioUnder[UNDER_MOVE0_e].setRatio(1.0f); + mAnmRatioUnder[UNDER_MOVE1_e].setRatio(0.0f); + mAnmRatioUnder[UNDER_MOVE0_e].setAnmTransform(under_bck); + mAnmRatioUnder[UNDER_MOVE1_e].setAnmTransform(NULL); s16 endUnder = end < 0 ? under_bck->getFrameMax() : end; f32 frame = rate < 0.0f ? endUnder-0.001f : start; - setFrameCtrl(&mFrameCtrlUnder[0], under_bck->getAttribute(), start, endUnder, rate, frame); + setFrameCtrl(&mFrameCtrlUnder[UNDER_MOVE0_e], under_bck->getAttribute(), start, endUnder, rate, frame); under_bck->setFrame(frame); if (upper_bck) { - mAnmRatioUpper[0].setAnmTransform(upper_bck); + mAnmRatioUpper[UPPER_MOVE0_e].setAnmTransform(upper_bck); s16 endUpper = end < 0 ? upper_bck->getFrameMax() : end; frame = rate < 0.0f ? endUpper-0.001f : start; // Note: It uses under_bck->getAttribute() again here instead of using upper_bck->getAttribute(). - setFrameCtrl(&mFrameCtrlUpper[0], under_bck->getAttribute(), start, endUpper, rate, frame); + setFrameCtrl(&mFrameCtrlUpper[UPPER_MOVE0_e], under_bck->getAttribute(), start, endUpper, rate, frame); upper_bck->setFrame(frame); } else { - mAnmRatioUpper[0].setAnmTransform(under_bck); + mAnmRatioUpper[UPPER_MOVE0_e].setAnmTransform(under_bck); } - mAnmRatioUpper[1].setAnmTransform(NULL); + mAnmRatioUpper[UPPER_MOVE1_e].setAnmTransform(NULL); if (param_5 >= 0.0f) { m_old_fdata->initOldFrameMorf(param_5, 0, 0x2A); @@ -6253,45 +6496,75 @@ BOOL daPy_lk_c::setSingleMoveAnime(daPy_lk_c::daPy_ANM anm, f32 rate, f32 start, setTextureAnime(mAnmDataTable[anm].mTexAnmIdx, 0); setHandModel(anm); - setSeAnime(&m_anm_heap_under[0], &mFrameCtrlUnder[0]); + setSeAnime(&m_anm_heap_under[UNDER_MOVE0_e], &mFrameCtrlUnder[UNDER_MOVE0_e]); m34C3 = 0; return TRUE; } /* 80128494-801285F8 .text setActAnimeUpper__9daPy_lk_cFUsQ29daPy_lk_c10daPy_UPPERffsf */ -void daPy_lk_c::setActAnimeUpper(u16, daPy_lk_c::daPy_UPPER, f32, f32, s16, f32) { - /* Nonmatching */ +BOOL daPy_lk_c::setActAnimeUpper(u16 r4, daPy_UPPER r29, f32 f28, f32 f29, s16 r30, f32 f30) { + J3DAnmTransform* r31 = getAnimeResource(&m_anm_heap_upper[r29], r4, 0x2400); + resetPriTextureAnime(); + mAnmRatioUpper[r29].setAnmTransform(r31); + mAnmRatioUpper[r29].setRatio(1.0f); + if (r30 < 0) { + r30 = r31->getFrameMax(); + } + + f32 f31 = f28 < 0.0f ? r30 - 0.001f : f29; + setFrameCtrl(&mFrameCtrlUpper[r29], r31->getAttribute(), f29, r30, f28, f31); + r31->setFrame(f31); + + if (f30 >= 0.0f) { + m_old_fdata->initOldFrameMorf(f30, 2, 0x1D); + } + + return TRUE; } /* 801285F8-801286C0 .text resetActAnimeUpper__9daPy_lk_cFQ29daPy_lk_c10daPy_UPPERf */ -void daPy_lk_c::resetActAnimeUpper(daPy_lk_c::daPy_UPPER, f32) { - /* Nonmatching */ +BOOL daPy_lk_c::resetActAnimeUpper(daPy_UPPER r4, f32 f31) { + if (checkDashDamageAnime()) { + mDamageWaitTimer = daPy_HIO_dam_c0::m.field_0x0; + } + + mAnmRatioUpper[r4].setAnmTransform(NULL); + mAnmRatioUpper[r4].setRatio(0.0f); + m_anm_heap_upper[r4].mIdx = -1; + mFrameCtrlUpper[r4].init(0); + if (f31 >= 0.0f) { + m_old_fdata->initOldFrameMorf(f31, 2, 0x1D); + } + resetPriTextureAnime(); + deleteArrow(); + + return TRUE; } /* 801286C0-801287E8 .text animeUpdate__9daPy_lk_cFv */ void daPy_lk_c::animeUpdate() { - J3DAnmTransform* underPack0 = getNowAnmPackUnder(UNDER_UNK0); - J3DAnmTransform* underPack1 = getNowAnmPackUnder(UNDER_UNK1); - J3DAnmTransform* upperPack0 = getNowAnmPackUpper(UPPER_UNK0); - J3DAnmTransform* upperPack1 = getNowAnmPackUpper(UPPER_UNK1); - mFrameCtrlUnder[UNDER_UNK0].update(); - underPack0->setFrame(mFrameCtrlUnder[UNDER_UNK0].getFrame()); + J3DAnmTransform* underPack0 = getNowAnmPackUnder(UNDER_MOVE0_e); + J3DAnmTransform* underPack1 = getNowAnmPackUnder(UNDER_MOVE1_e); + J3DAnmTransform* upperPack0 = getNowAnmPackUpper(UPPER_MOVE0_e); + J3DAnmTransform* upperPack1 = getNowAnmPackUpper(UPPER_MOVE1_e); + mFrameCtrlUnder[UNDER_MOVE0_e].update(); + underPack0->setFrame(mFrameCtrlUnder[UNDER_MOVE0_e].getFrame()); if (underPack1) { - mFrameCtrlUnder[UNDER_UNK1].update(); - underPack1->setFrame(mFrameCtrlUnder[UNDER_UNK1].getFrame()); + mFrameCtrlUnder[UNDER_MOVE1_e].update(); + underPack1->setFrame(mFrameCtrlUnder[UNDER_MOVE1_e].getFrame()); } if (upperPack0 && upperPack0 != underPack0) { - mFrameCtrlUpper[UPPER_UNK0].update(); - upperPack0->setFrame(mFrameCtrlUpper[UPPER_UNK0].getFrame()); + mFrameCtrlUpper[UPPER_MOVE0_e].update(); + upperPack0->setFrame(mFrameCtrlUpper[UPPER_MOVE0_e].getFrame()); } if (upperPack1 && upperPack1 != underPack1) { - mFrameCtrlUpper[UPPER_UNK1].update(); - upperPack1->setFrame(mFrameCtrlUpper[UPPER_UNK1].getFrame()); + mFrameCtrlUpper[UPPER_MOVE1_e].update(); + upperPack1->setFrame(mFrameCtrlUpper[UPPER_MOVE1_e].getFrame()); } - // TODO: not sure if this is a fakematch or a bug, but the under array is length 2 and this accesses at index 2. - // so it's actually accessing index 0 of the next array (upper). + // Bug? This loop starts past the end of the array and immediately stops, without running a single iteration. + // Maybe the array used to be more than 2 elements long but was shrank later. for (int i = 2; i < 2; i++) { J3DAnmTransform* underPack2 = getNowAnmPackUnder((daPy_UNDER)i); if (underPack2) { @@ -6300,10 +6573,10 @@ void daPy_lk_c::animeUpdate() { } } - J3DAnmTransform* upperPack2 = getNowAnmPackUpper(UPPER_UNK2); + J3DAnmTransform* upperPack2 = getNowAnmPackUpper(UPPER_MOVE2_e); if (upperPack2) { - mFrameCtrlUpper[UPPER_UNK2].update(); - upperPack2->setFrame(mFrameCtrlUpper[UPPER_UNK2].getFrame()); + mFrameCtrlUpper[UPPER_MOVE2_e].update(); + upperPack2->setFrame(mFrameCtrlUpper[UPPER_MOVE2_e].getFrame()); } if (m2EAC) { @@ -6317,13 +6590,13 @@ void daPy_lk_c::simpleAnmPlay(J3DAnmBase*) { } /* 8012887C-801288A0 .text setHandModel__9daPy_lk_cFQ29daPy_lk_c8daPy_ANM */ -void daPy_lk_c::setHandModel(daPy_lk_c::daPy_ANM anmIdx) { +void daPy_lk_c::setHandModel(daPy_ANM anmIdx) { mLeftHandIdx = mAnmDataTable[anmIdx].mLeftHandIdx; mRightHandIdx = mAnmDataTable[anmIdx].mRightHandIdx; } /* 801288A0-8012894C .text getAnmData__9daPy_lk_cCFQ29daPy_lk_c8daPy_ANM */ -const daPy_anmIndex_c* daPy_lk_c::getAnmData(daPy_lk_c::daPy_ANM anm) const { +const daPy_anmIndex_c* daPy_lk_c::getAnmData(daPy_ANM anm) const { if (mHeldItemType == 0x103) { if (anm < (s32)ARRAY_SIZE(mSwordAnmIndexTable)) { return &mSwordAnmIndexTable[anm]; @@ -6345,8 +6618,14 @@ const daPy_anmIndex_c* daPy_lk_c::getAnmData(daPy_lk_c::daPy_ANM anm) const { } /* 8012894C-80128988 .text checkGrabWeapon__9daPy_lk_cFi */ -BOOL daPy_lk_c::checkGrabWeapon(int) { - /* Nonmatching */ +BOOL daPy_lk_c::checkGrabWeapon(int r4) { + if (mHeldItemType == 0x101 && mActorKeepEquip.getActor() != NULL) { + daBoko_c* boko = (daBoko_c*)mActorKeepEquip.getActor(); + if (r4 == 6 || fopAcM_GetParam(boko) == r4) { + return TRUE; + } + } + return FALSE; } /* 80128988-801289A8 .text onDekuSpReturnFlg__9daPy_lk_cFUc */ @@ -6358,13 +6637,37 @@ void daPy_lk_c::onDekuSpReturnFlg(u8 i_point) { } /* 801289A8-80128AA4 .text changeTextureAnime__9daPy_lk_cFUsUsi */ -void daPy_lk_c::changeTextureAnime(u16, u16, int) { - /* Nonmatching */ +void daPy_lk_c::changeTextureAnime(u16 btpIdx, u16 btkIdx, int r7) { + /* Nonmatching - regalloc */ + if (!dComIfGp_event_runCheck()) { + return; + } + if (r7 == -1) { + if (m_tex_anm_heap.field_0x4 != btpIdx || m_tex_anm_heap.field_0x6 != 0xFFFE) { + m_tex_anm_heap.field_0x4 = btpIdx; + m_tex_anm_heap.field_0x6 = 0xFFFE; + J3DAnmTexPattern* btp = loadTextureAnimeResource(btpIdx, FALSE); + setTextureAnimeResource(btp, 0); + } + if (m_tex_scroll_heap.field_0x4 != btkIdx || m_tex_scroll_heap.field_0x6 != 0xFFFE) { + m_tex_scroll_heap.field_0x4 = btkIdx; + m_tex_scroll_heap.field_0x6 = 0xFFFE; + J3DAnmTextureSRTKey* btk = loadTextureScrollResource(btkIdx, FALSE); + setTextureScrollResource(btk, 0); + } + } else { + setDemoTextureAnime(btpIdx, btkIdx, 0, r7); + } } /* 80128AA4-80128B50 .text setThrowDamage__9daPy_lk_cFP4cXyzsffi */ -BOOL daPy_lk_c::setThrowDamage(cXyz*, s16, f32, f32, int) { - /* Nonmatching */ +BOOL daPy_lk_c::setThrowDamage(cXyz* r4, s16 r5, f32 f30, f32 f31, int r6) { + setPlayerPosAndAngle(r4, r5); + mVelocity = f30; + speed.y = f31; + setDamagePoint(-r6); + onNoResetFlg0(daPyFlg0_UNK1000000); + return TRUE; } /* 80128B50-80128C10 .text setPlayerPosAndAngle__9daPy_lk_cFP4cXyzs */ @@ -6388,8 +6691,15 @@ void daPy_lk_c::endDemoMode() { } /* 80128F8C-8012901C .text getBokoFlamePos__9daPy_lk_cFP4cXyz */ -BOOL daPy_lk_c::getBokoFlamePos(cXyz*) { - /* Nonmatching */ +BOOL daPy_lk_c::getBokoFlamePos(cXyz* outPos) { + if (mHeldItemType == 0x101) { + daBoko_c* boko = (daBoko_c*)fopAcM_SearchByID(mActorKeepEquip.getID()); + if (boko && boko->m2C4 != 0) { // maybe daBoko_c::getFlameTimer inline + *outPos = mSwordTopPos; + return TRUE; + } + } + return FALSE; } #include "d/actor/d_a_player_particle.inc" diff --git a/src/d/actor/d_a_player_particle.inc b/src/d/actor/d_a_player_particle.inc index d44963366..6d72ccc9b 100644 --- a/src/d/actor/d_a_player_particle.inc +++ b/src/d/actor/d_a_player_particle.inc @@ -134,8 +134,9 @@ void daPy_waterDropEcallBack_c::end() { } /* 8012A0B4-8012A0E0 .text makeEmitterColor__28daPy_mtxPosFollowEcallBack_cFUsPA4_fPC4cXyzPC5csXyzPC8_GXColorPC8_GXColor */ -void daPy_mtxPosFollowEcallBack_c::makeEmitterColor(u16, MtxP, const cXyz*, const csXyz*, const GXColor*, const GXColor*) { - /* Nonmatching */ +void daPy_mtxPosFollowEcallBack_c::makeEmitterColor(u16 particleID, MtxP mtx, const cXyz* pos, const csXyz* angle, const GXColor* prmColor, const GXColor* envColor) { + mpAngle = angle; + daPy_mtxFollowEcallBack_c::makeEmitterColor(particleID, mtx, pos, prmColor, envColor); } /* 8012A0E0-8012A160 .text execute__28daPy_mtxPosFollowEcallBack_cFP14JPABaseEmitter */ diff --git a/src/d/actor/d_a_player_swim.inc b/src/d/actor/d_a_player_swim.inc index 663ea0599..203018ef7 100644 --- a/src/d/actor/d_a_player_swim.inc +++ b/src/d/actor/d_a_player_swim.inc @@ -48,7 +48,7 @@ void daPy_lk_c::changeSwimOutProc() { } /* 8013D530-8013D638 .text setSwimMoveAnime__9daPy_lk_cFQ29daPy_lk_c8daPy_ANM */ -void daPy_lk_c::setSwimMoveAnime(daPy_lk_c::daPy_ANM) { +void daPy_lk_c::setSwimMoveAnime(daPy_ANM) { /* Nonmatching */ } diff --git a/src/d/actor/d_a_player_sword.inc b/src/d/actor/d_a_player_sword.inc index 808885dfb..38ae73538 100644 --- a/src/d/actor/d_a_player_sword.inc +++ b/src/d/actor/d_a_player_sword.inc @@ -83,7 +83,7 @@ void daPy_lk_c::changeCutProc() { } /* 80155C3C-80156034 .text changeCutReverseProc__9daPy_lk_cFQ29daPy_lk_c8daPy_ANM */ -void daPy_lk_c::changeCutReverseProc(daPy_lk_c::daPy_ANM) { +void daPy_lk_c::changeCutReverseProc(daPy_ANM) { /* Nonmatching */ } @@ -218,7 +218,7 @@ BOOL daPy_lk_c::procCutTurnMove() { } /* 80159130-801592A4 .text procCutReverse_init__9daPy_lk_cFQ29daPy_lk_c8daPy_ANM */ -BOOL daPy_lk_c::procCutReverse_init(daPy_lk_c::daPy_ANM) { +BOOL daPy_lk_c::procCutReverse_init(daPy_ANM) { /* Nonmatching */ } diff --git a/src/d/actor/d_a_player_tact.inc b/src/d/actor/d_a_player_tact.inc index 581fe6d3b..62f8edb21 100644 --- a/src/d/actor/d_a_player_tact.inc +++ b/src/d/actor/d_a_player_tact.inc @@ -89,7 +89,7 @@ int daPy_lk_c::getTactPlayLeftArmAnm(s32 r4) { /* 8014D97C-8014D9A4 .text checkEndTactMusic__9daPy_lk_cCFv */ BOOL daPy_lk_c::checkEndTactMusic() const { - if (mCurProc == PROC_TACT_PLAY_e && m34D0 != 0) { + if (mCurProc == daPyProc_TACT_PLAY_e && m34D0 != 0) { return TRUE; } return FALSE; @@ -97,7 +97,7 @@ BOOL daPy_lk_c::checkEndTactMusic() const { /* 8014D9A4-8014D9D0 .text getTactMetronomeRate__9daPy_lk_cFv */ f32 daPy_lk_c::getTactMetronomeRate() { - if (mCurProc == PROC_TACT_WAIT_e) { + if (mCurProc == daPyProc_TACT_WAIT_e) { return m35A0 / mDoAud_zelAudio_c::getTact().field_0x30; } else { return -1.0f; @@ -106,7 +106,7 @@ f32 daPy_lk_c::getTactMetronomeRate() { /* 8014D9D0-8014D9F8 .text checkTactLastInput__9daPy_lk_cFv */ BOOL daPy_lk_c::checkTactLastInput() { - if (mCurProc == PROC_TACT_WAIT_e && m34D2 != -1) { + if (mCurProc == daPyProc_TACT_WAIT_e && m34D2 != -1) { return TRUE; } return FALSE; @@ -134,7 +134,7 @@ BOOL daPy_lk_c::getTactTopPos(cXyz* out) { /* 8014DACC-8014DB00 .text getTactNormalWait__9daPy_lk_cCFv */ BOOL daPy_lk_c::getTactNormalWait() const { - if (mCurProc == PROC_TACT_WAIT_e && m3570 == -1 && m34D2 == -1) { + if (mCurProc == daPyProc_TACT_WAIT_e && m3570 == -1 && m34D2 == -1) { return TRUE; } return FALSE; @@ -142,16 +142,16 @@ BOOL daPy_lk_c::getTactNormalWait() const { /* 8014DB00-8014DB2C .text getTactMusic__9daPy_lk_cCFv */ s32 daPy_lk_c::getTactMusic() const { - if (mCurProc == PROC_TACT_PLAY_e) + if (mCurProc == daPyProc_TACT_PLAY_e) return m3570; - if (mCurProc == PROC_TACT_WAIT_e) + if (mCurProc == daPyProc_TACT_WAIT_e) return m3574; return -1; } /* 8014DB2C-8014DB74 .text getTactTimerCancel__9daPy_lk_cCFv */ int daPy_lk_c::getTactTimerCancel() const { - if (mCurProc == PROC_TACT_WAIT_e && m35AC <= 0.0f) { + if (mCurProc == daPyProc_TACT_WAIT_e && m35AC <= 0.0f) { if (m35AC <= -100.0f) { return 2; } else { @@ -163,7 +163,7 @@ int daPy_lk_c::getTactTimerCancel() const { /* 8014DB74-8014DB9C .text checkTactPlayMelody__9daPy_lk_cFv */ BOOL daPy_lk_c::checkTactPlayMelody() { - if (mCurProc == PROC_TACT_PLAY_e && m34DA == 0) { + if (mCurProc == daPyProc_TACT_PLAY_e && m34DA == 0) { return TRUE; } return FALSE; @@ -171,7 +171,7 @@ BOOL daPy_lk_c::checkTactPlayMelody() { /* 8014DB9C-8014DBEC .text resetTactCount__9daPy_lk_cFv */ void daPy_lk_c::resetTactCount() { - if (mCurProc == PROC_TACT_WAIT_e) { + if (mCurProc == daPyProc_TACT_WAIT_e) { m34D8 = 0; m35A0 = 0.0f; m34DA = 0; @@ -182,7 +182,7 @@ void daPy_lk_c::resetTactCount() { /* 8014DBEC-8014E100 .text procTactWait_init__9daPy_lk_cFi */ BOOL daPy_lk_c::procTactWait_init(int r30) { - if (mCurProc == PROC_TACT_WAIT_e) { + if (mCurProc == daPyProc_TACT_WAIT_e) { if (m3570 != r30) { m34D8 = 0; m34DA = 0; @@ -248,14 +248,14 @@ BOOL daPy_lk_c::procTactWait_init(int r30) { } } - commonProcInit(PROC_TACT_WAIT_e); + commonProcInit(daPyProc_TACT_WAIT_e); daPy_matAnm_c::offMabaFlg(); daPy_matAnm_c::setMabaTimer(1); setSingleMoveAnime(ANM_WAITTAKT, daPy_HIO_tact_c0::m.field_0x0, 0.0f, -1, daPy_HIO_tact_c0::m.field_0x4); - setActAnimeUpper(0x127, UPPER_UNK1, daPy_HIO_tact_c0::m.field_0x0, 0.0f, -1, -1.0f); - mAnmRatioUpper[1].setRatio(0.0f); - setActAnimeUpper(0x127, UPPER_UNK2, daPy_HIO_tact_c0::m.field_0x0, 0.0f, -1, -1.0f); - mAnmRatioUpper[2].setRatio(0.0f); + setActAnimeUpper(LKANM_BCK_WAITTAKT, UPPER_MOVE1_e, daPy_HIO_tact_c0::m.field_0x0, 0.0f, -1, -1.0f); + mAnmRatioUpper[UPPER_MOVE1_e].setRatio(0.0f); + setActAnimeUpper(LKANM_BCK_WAITTAKT, UPPER_MOVE2_e, daPy_HIO_tact_c0::m.field_0x0, 0.0f, -1, -1.0f); + mAnmRatioUpper[UPPER_MOVE2_e].setRatio(0.0f); mVelocity = 0.0f; m34D4 = 0; m34D6 = 0; @@ -308,17 +308,17 @@ BOOL daPy_lk_c::procTactWait() { /* 8014E9A4-8014EBA0 .text procTactPlay_init__9daPy_lk_cFlii */ BOOL daPy_lk_c::procTactPlay_init(s32 r27, int r30, int r31) { int r28 = checkShipRideUseItem(0); - commonProcInit(PROC_TACT_PLAY_e); + commonProcInit(daPyProc_TACT_PLAY_e); dComIfGp_setPlayerStatus1(0, daPyStts1_WIND_WAKER_CONDUCT_e); m3570 = r27; if (r31 == 0) { m3628 = fopMsgM_messageSet(0x5AD + r27); } else { - m3628 = -1; + m3628 = fpcM_ERROR_PROCESS_ID_e; } mDoAud_tact_setVolume(0.0f); - resetActAnimeUpper(UPPER_UNK2, -1.0f); - resetActAnimeUpper(UPPER_UNK1, -1.0f); + resetActAnimeUpper(UPPER_MOVE2_e, -1.0f); + resetActAnimeUpper(UPPER_MOVE1_e, -1.0f); m34DA = 0xA; daPy_ANM anm; diff --git a/src/f_op/f_op_actor_mng.cpp b/src/f_op/f_op_actor_mng.cpp index 6f3f1abc4..0284cd54b 100644 --- a/src/f_op/f_op_actor_mng.cpp +++ b/src/f_op/f_op_actor_mng.cpp @@ -1330,7 +1330,7 @@ BOOL fopAcM_getGroundAngle(fopAc_ac_c* actor, csXyz* p_angle) { } /* 80027E28-80027E5C .text fopAcM_setCarryNow__FP10fopAc_ac_ci */ -void fopAcM_setCarryNow(fopAc_ac_c* i_this, int stageLayer) { +void fopAcM_setCarryNow(fopAc_ac_c* i_this, BOOL stageLayer) { fopAcM_OnStatus(i_this, fopAcStts_CARRY_e); if (stageLayer) { fopAcM_setStageLayer(i_this);