summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPheenoh <pheenoh@gmail.com>2024-05-18 19:23:02 -0600
committerGitHub <noreply@github.com>2024-05-18 18:23:02 -0700
commit522c051b1a3ad1ab9f97d1ee89681aa92954b735 (patch)
tree61f4e13a22189be46d0dc67ae75be9d3384da284
parentfa325034fd856c5413911d51b945554d78d0144b (diff)
Misc changes (#2156)
* daB_YO_Draw & onIceBreak * misc changes * remove asm / progress
-rw-r--r--Progress.md8
-rw-r--r--asm/rel/d/a/b/d_a_b_yo/d_a_b_yo/daB_YO_Draw__FP8daB_YO_c.s9
-rw-r--r--asm/rel/d/a/b/d_a_b_yo/d_a_b_yo/onIceBreak__8daB_YO_cFUs.s8
-rw-r--r--include/d/a/d_a_alink.h3
-rw-r--r--include/d/meter/d_meter2_info.h2
-rw-r--r--include/rel/d/a/b/d_a_b_yo/d_a_b_yo.h8
-rw-r--r--include/rel/d/a/e/d_a_e_ymb/d_a_e_ymb.h74
-rw-r--r--rel/d/a/b/d_a_b_yo/d_a_b_yo.cpp98
-rw-r--r--rel/d/a/e/d_a_e_ymb/d_a_e_ymb.cpp418
-rw-r--r--src/d/a/d_a_alink.cpp2
-rw-r--r--src/d/a/d_a_alink_cut.inc10
-rw-r--r--src/d/a/d_a_alink_wolf.inc69
12 files changed, 252 insertions, 457 deletions
diff --git a/Progress.md b/Progress.md
index 729b4246cc..e1ab55edc6 100644
--- a/Progress.md
+++ b/Progress.md
@@ -21,8 +21,8 @@ Total | 54.954197% | 2209528 | 4020672
Section | Percentage | Decompiled (bytes) | Total (bytes)
---|---|---|---
main.dol | 54.954197% | 2209528 | 4020672
-RELs | 38.671154% | 4447308 | 11500324
-Total | 42.889232% | 6656836 | 15520996
+RELs | 38.671676% | 4447368 | 11500324
+Total | 42.889619% | 6656896 | 15520996
## RELs
@@ -50,7 +50,7 @@ d_a_b_ob | 31.572858% | 18556 | 58772
d_a_b_oh | 35.387431% | 4640 | 13112
d_a_b_oh2 | 100.000000% | 5532 | 5532
d_a_b_tn | 24.850960% | 21176 | 85212
-d_a_b_yo | 25.613486% | 14404 | 56236
+d_a_b_yo | 25.720179% | 14464 | 56236
d_a_b_yo_ice | 28.297953% | 5972 | 21104
d_a_b_zant | 22.203940% | 19432 | 87516
d_a_b_zant_magic | 42.453480% | 2464 | 5804
@@ -785,4 +785,4 @@ d_a_vrbox2 | 44.907111% | 2804 | 6244
d_a_warp_bug | 100.000000% | 2024 | 2024
d_a_ykgr | 44.400631% | 2252 | 5072
f_pc_profile_lst | 100.000000% | 28156 | 28156
-Total | 38.671154% | 4447308 | 11500324
+Total | 38.671676% | 4447368 | 11500324
diff --git a/asm/rel/d/a/b/d_a_b_yo/d_a_b_yo/daB_YO_Draw__FP8daB_YO_c.s b/asm/rel/d/a/b/d_a_b_yo/d_a_b_yo/daB_YO_Draw__FP8daB_YO_c.s
deleted file mode 100644
index f3d78a10fc..0000000000
--- a/asm/rel/d/a/b/d_a_b_yo/d_a_b_yo/daB_YO_Draw__FP8daB_YO_c.s
+++ /dev/null
@@ -1,9 +0,0 @@
-lbl_8062FBCC:
-/* 8062FBCC 94 21 FF F0 */ stwu r1, -0x10(r1)
-/* 8062FBD0 7C 08 02 A6 */ mflr r0
-/* 8062FBD4 90 01 00 14 */ stw r0, 0x14(r1)
-/* 8062FBD8 4B FF F9 45 */ bl draw__8daB_YO_cFv
-/* 8062FBDC 80 01 00 14 */ lwz r0, 0x14(r1)
-/* 8062FBE0 7C 08 03 A6 */ mtlr r0
-/* 8062FBE4 38 21 00 10 */ addi r1, r1, 0x10
-/* 8062FBE8 4E 80 00 20 */ blr
diff --git a/asm/rel/d/a/b/d_a_b_yo/d_a_b_yo/onIceBreak__8daB_YO_cFUs.s b/asm/rel/d/a/b/d_a_b_yo/d_a_b_yo/onIceBreak__8daB_YO_cFUs.s
deleted file mode 100644
index 3141a44171..0000000000
--- a/asm/rel/d/a/b/d_a_b_yo/d_a_b_yo/onIceBreak__8daB_YO_cFUs.s
+++ /dev/null
@@ -1,8 +0,0 @@
-lbl_8062FBEC:
-/* 8062FBEC A0 C3 0F 6E */ lhz r6, 0xf6e(r3)
-/* 8062FBF0 38 A0 00 01 */ li r5, 1
-/* 8062FBF4 54 80 04 3E */ clrlwi r0, r4, 0x10
-/* 8062FBF8 7C A0 00 30 */ slw r0, r5, r0
-/* 8062FBFC 7C C0 03 78 */ or r0, r6, r0
-/* 8062FC00 B0 03 0F 6E */ sth r0, 0xf6e(r3)
-/* 8062FC04 4E 80 00 20 */ blr
diff --git a/include/d/a/d_a_alink.h b/include/d/a/d_a_alink.h
index 7c06fa2c6f..ab9efe8bb9 100644
--- a/include/d/a/d_a_alink.h
+++ b/include/d/a/d_a_alink.h
@@ -3720,7 +3720,8 @@ public:
/* 0x03062 */ s16 field_0x3062;
/* 0x03064 */ s16 field_0x3064;
/* 0x03066 */ s16 field_0x3066;
- /* 0x03068 */ u8 field_0x3068[4];
+ /* 0x03068 */ u8 field_0x3068[2];
+ /* 0x0306A */ s16 field_0x306a;
/* 0x0306C */ s16 field_0x306c;
/* 0x0306E */ s16 field_0x306e;
/* 0x03070 */ s16 field_0x3070;
diff --git a/include/d/meter/d_meter2_info.h b/include/d/meter/d_meter2_info.h
index 3556917b9a..266c4ffb64 100644
--- a/include/d/meter/d_meter2_info.h
+++ b/include/d/meter/d_meter2_info.h
@@ -224,7 +224,7 @@ public:
/* 0xB4 */ u16 mWindowAccept;
/* 0xB6 */ u16 mOilGaugeBackUp;
/* 0xB8 */ u8 mDirectUseItem;
- /* 0xB9 */ u8 mWindowStatus;
+ /* 0xB9 */ u8 mWindowStatus; // 0: normal play, 2: item wheel, 3: pause menu, 4: map, 10: pause menu submenus, 11: map in dungeon
/* 0xBA */ u8 unk186;
/* 0xBB */ u8 mMaxCount;
/* 0xBC */ u8 mNowCount;
diff --git a/include/rel/d/a/b/d_a_b_yo/d_a_b_yo.h b/include/rel/d/a/b/d_a_b_yo/d_a_b_yo.h
index 7dbc8b5283..98ef985bfa 100644
--- a/include/rel/d/a/b/d_a_b_yo/d_a_b_yo.h
+++ b/include/rel/d/a/b/d_a_b_yo/d_a_b_yo.h
@@ -14,7 +14,7 @@
*/
class daB_YO_c : public fopEn_enemy_c {
public:
- /* 8062F51C */ void draw();
+ /* 8062F51C */ s32 draw();
/* 8062FBEC */ void onIceBreak(u16);
/* 8062FC08 */ void setBck(int, u8, f32, f32);
/* 8062FE0C */ void setActionMode(int, int);
@@ -71,11 +71,15 @@ private:
/* 0xF54 */ f32 mModeRarius;
/* 0xF58 */ u8 field_0xf58[0xF5C - 0xF58];
/* 0xF5C */ s16 mRollAngle;
- /* 0xF5E */ u8 field_0xf5e[0xFA8 - 0xF5E];
+ /* 0xF5E */ u8 field_0xf5e[0xF6E - 0xF5E];
+ /* 0xF6E */ u16 field_0xf6e;
+ /* 0xF70 */ u8 field_0xf70[0xFA8 - 0xF70];
/* 0xFA8 */ u8 mModelNo;
/* 0xFA9 */ u8 field_0xfa9[0xFAD - 0xFA9];
/* 0xFAD */ u8 mFrizadAttack;
+ /* 0xFAE */ u8 field_0xfae[0x1B88 - 0xFAE];
};
+STATIC_ASSERT(sizeof(daB_YO_c) == 0x1B88);
struct daB_YO_HIO_c {
/* 8062F46C */ daB_YO_HIO_c();
diff --git a/include/rel/d/a/e/d_a_e_ymb/d_a_e_ymb.h b/include/rel/d/a/e/d_a_e_ymb/d_a_e_ymb.h
index 1a177fefcd..3929896210 100644
--- a/include/rel/d/a/e/d_a_e_ymb/d_a_e_ymb.h
+++ b/include/rel/d/a/e/d_a_e_ymb/d_a_e_ymb.h
@@ -2,5 +2,79 @@
#define D_A_E_YMB_H
#include "dolphin/types.h"
+#include "f_op/f_op_actor_mng.h"
+
+class daE_YMB_c : public fopEn_enemy_c {
+public:
+ /* 8081615C */ void ctrlJoint(J3DJoint*, J3DModel*);
+ /* 808164F0 */ void JointCallBack(J3DJoint*, int);
+ /* 80816554 */ void draw();
+ /* 8081697C */ void setBck(int, u8, f32, f32);
+ /* 80816A20 */ void checkBck(int);
+ /* 80816A7C */ void setActionMode(int, int);
+ /* 80816A88 */ void setLastDamage();
+ /* 80816B7C */ void damage_check();
+ /* 80816E78 */ void setCameraSwitch();
+ /* 80817064 */ void checkWaterPos();
+ /* 80817164 */ void checkGroundPos();
+ /* 80817200 */ void setFlyWaitVoice();
+ /* 8081727C */ void setDownWaitVoice();
+ /* 808172F8 */ void setHitBoardSe();
+ /* 808173B0 */ void setElecEffect1();
+ /* 8081756C */ void setElecEffect2();
+ /* 80817744 */ void setWaterEffect1();
+ /* 8081785C */ void setWaterEffect2();
+ /* 80817974 */ void setBoilEffect(int);
+ /* 80817AEC */ void setDamageEffect(int);
+ /* 80817BD8 */ void setDownHamonEffect();
+ /* 80817CF0 */ void setFlyBlurEffect();
+ /* 80817E7C */ void setRockDamageEffect();
+ /* 80817FDC */ void setDeathEffect();
+ /* 808181F4 */ void executeWait();
+ /* 80818328 */ void setBitePos(int);
+ /* 80818370 */ void setInclination();
+ /* 80818518 */ void setBodyAngle();
+ /* 80818930 */ void checkWolfLockIn();
+ /* 80818AE8 */ void executeFly();
+ /* 80819610 */ void executeFlyAttack();
+ /* 80819FD0 */ void executeRunAway();
+ /* 8081A718 */ void executeGuard();
+ /* 8081A88C */ void executeSwim();
+ /* 8081B78C */ void executeWaterJump();
+ /* 8081BC10 */ void getNearDownPos();
+ /* 8081BEE8 */ void executeDamage();
+ /* 8081C4EC */ void setMidnaBindInit(cXyz*);
+ /* 8081C7D0 */ void setMidnaBindLevel(int);
+ /* 8081C908 */ void setWolfLockEffect();
+ /* 8081CC14 */ void initDownToWater();
+ /* 8081CD00 */ void calcDownToWater();
+ /* 8081CE6C */ void executeDown();
+ /* 8081D4D8 */ void setCreateDrop();
+ /* 8081D594 */ void executeDeath();
+ /* 8081DBD0 */ void demo_skip(int);
+ /* 8081DDE0 */ void DemoSkipCallBack(void*, int);
+ /* 8081DE14 */ void calcLakeDemoPlayerPos();
+ /* 8081DE84 */ void executeLakeDemo();
+ /* 8081E5B4 */ void executeStartDemo();
+ /* 8081F140 */ void checkStartBattleDemo();
+ /* 8081F2E0 */ void executeBattleDemo();
+ /* 8081FAC8 */ void action();
+ /* 8081FF88 */ void mtx_set();
+ /* 808200A0 */ void getBellyBitePos(cXyz*);
+ /* 80820128 */ void getDownLockPoint();
+ /* 808203D8 */ void setAttentionPos();
+ /* 80820668 */ void cc_set();
+ /* 808207AC */ void execute();
+ /* 80820A40 */ void _delete();
+ /* 80820AF0 */ void CreateHeap();
+ /* 80820DD0 */ void create();
+
+ int getMaxLockAttack() { return 6; }
+};
+
+struct daE_YMB_HIO_c {
+ /* 8081610C */ daE_YMB_HIO_c();
+ /* 80821460 */ ~daE_YMB_HIO_c();
+};
#endif /* D_A_E_YMB_H */
diff --git a/rel/d/a/b/d_a_b_yo/d_a_b_yo.cpp b/rel/d/a/b/d_a_b_yo/d_a_b_yo.cpp
index 7e043df71b..73c01c4b40 100644
--- a/rel/d/a/b/d_a_b_yo/d_a_b_yo.cpp
+++ b/rel/d/a/b/d_a_b_yo/d_a_b_yo.cpp
@@ -1,10 +1,12 @@
-//
-// Generated By: dol2asm
-// Translation Unit: d_a_b_yo
-//
+/**
+ * @file d_a_b_yo.cpp
+ * @brief Actor - Blizzeta (Boss)
+ *
+ */
#include "rel/d/a/b/d_a_b_yo/d_a_b_yo.h"
#include "rel/d/a/obj/d_a_obj_ystone/d_a_obj_ystone.h"
+#include "d/com/d_com_inf_game.h"
#include "dol2asm.h"
//
@@ -274,7 +276,6 @@ extern "C" extern void* __vt__12cCcD_CylAttr[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" extern u8 g_dComIfG_gameInfo[122384];
extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32];
// extern "C" extern u8 g_env_light[4880];
// extern "C" extern u8 j3dSys[284];
@@ -477,12 +478,26 @@ SECTION_DATA static u8 yo_material_draw[27 + 1 /* padding */] = {
/* 80639B60-80639BAC 000100 004C+00 0/1 0/0 0/0 .data yo_demo_bck_idx */
#pragma push
#pragma force_active on
-SECTION_DATA static u8 yo_demo_bck_idx[76] = {
- 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x11,
- 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x15,
- 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x17,
- 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0A,
- 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x09,
+static u32 yo_demo_bck_idx[19] = {
+ 0x00000007,
+ 0x00000008,
+ 0x0000000D,
+ 0x00000011,
+ 0x00000012,
+ 0x00000013,
+ 0x00000014,
+ 0x00000015,
+ 0x00000019,
+ 0x0000000F,
+ 0x00000010,
+ 0x00000017,
+ 0x00000016,
+ 0x0000000E,
+ 0x00000018,
+ 0x0000000A,
+ 0x0000000B,
+ 0x0000000C,
+ 0x00000009,
};
#pragma pop
@@ -820,7 +835,7 @@ COMPILER_STRIP_GATE(0x80639834, &lit_4080);
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daB_YO_c::draw() {
+asm s32 daB_YO_c::draw() {
nofralloc
#include "asm/rel/d/a/b/d_a_b_yo/d_a_b_yo/draw__8daB_YO_cFv.s"
}
@@ -838,24 +853,14 @@ asm void __dt__4cXyzFv() {
#pragma pop
/* 8062FBCC-8062FBEC 00084C 0020+00 1/0 0/0 0/0 .text daB_YO_Draw__FP8daB_YO_c */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daB_YO_Draw(daB_YO_c* param_0) {
- nofralloc
-#include "asm/rel/d/a/b/d_a_b_yo/d_a_b_yo/daB_YO_Draw__FP8daB_YO_c.s"
+static s32 daB_YO_Draw(daB_YO_c* i_this) {
+ return i_this->draw();
}
-#pragma pop
/* 8062FBEC-8062FC08 00086C 001C+00 0/0 0/0 4/4 .text onIceBreak__8daB_YO_cFUs */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daB_YO_c::onIceBreak(u16 param_0) {
- nofralloc
-#include "asm/rel/d/a/b/d_a_b_yo/d_a_b_yo/onIceBreak__8daB_YO_cFUs.s"
+void daB_YO_c::onIceBreak(u16 param_0) {
+ field_0xf6e |= (1 << param_0);
}
-#pragma pop
/* ############################################################################################## */
/* 80639838-8063983C 000044 0004+00 0/4 0/0 0/0 .rodata @4149 */
@@ -872,6 +877,46 @@ SECTION_DEAD static char const* const stringBase_80639A34 = "B_YO";
#pragma pop
/* 8062FC08-8062FE0C 000888 0204+00 4/4 0/0 0/0 .text setBck__8daB_YO_cFiUcff */
+#ifdef NONMATCHING
+void daB_YO_c::setBck(int i_bckIdx, u8 param_1, f32 param_2, f32 param_3) {
+ J3DModel* l_model = (J3DModel*)dComIfG_getObjectRes("B_YO",yo_demo_bck_idx[i_bckIdx]);
+ setAnm();
+ (*(mDoExt_McaMorfSO **)(this + 0x5fc),pJVar3,(uint)param_2,param_3,(float)dVar8,0.0,-1.0
+ );
+ this_00 = (J3DModel *)mDoExt_McaMorfSO::getModel(*(mDoExt_McaMorfSO **)(this + 0x5fc));
+ ctx = (J3DModelData *)J3DModel::getModelData(this_00);
+ mDoExt_btkAnm::remove(*(mDoExt_btkAnm **)(this + 0x5e0),(char *)ctx);
+ iVar5 = *(int *)(&d_a_b_yo::yo_demo_btk_idx + param_1 * 4);
+ if (iVar5 == 0xff) {
+ this[0x1005] = (daB_YO_c)0x0;
+ }
+ else {
+ this[0x1005] = (daB_YO_c)0x1;
+ pJVar4 = (J3DAnmTextureSRTKey *)f_op_actor::dComIfG_getObjectRes(&d_a_b_yo::@118744,iVar5);
+ mDoExt_btkAnm::init(*(mDoExt_btkAnm **)(this + 0x5e0),ctx,pJVar4,1,(float)dVar8,(ushort)param_2,
+ 0);
+ }
+ mDoExt_btpAnm::remove(*(mDoExt_btpAnm **)(this + 0x5e4),(char *)ctx);
+ f_op_actor::dComIfG_getObjectRes
+ (&d_a_b_yo::@118744,*(undefined4 *)(&d_a_b_yo::yo_demo_btp_idx + param_1 * 4));
+ mDoExt_btpAnm::init(*(mDoExt_btpAnm **)(this + 0x5e4),(EVP_PKEY_CTX *)ctx);
+ if (param_1 == 0) {
+ this[0x1004] = (daB_YO_c)0x1;
+ uVar6 = 0x25;
+ }
+ else if (param_1 == 1) {
+ uVar6 = 0x26;
+ }
+ else if (this[0x1004] == (daB_YO_c)0x0) {
+ uVar6 = 0x25;
+ }
+ else {
+ uVar6 = 0x24;
+ }
+ f_op_actor::dComIfG_getObjectRes(&d_a_b_yo::@118744,uVar6);
+ ::mDoExt_brkAnm::init(*(mDoExt_brkAnm **)(this + 0x5e8),(EVP_PKEY_CTX *)ctx);
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -880,6 +925,7 @@ asm void daB_YO_c::setBck(int param_0, u8 param_1, f32 param_2, f32 param_3) {
#include "asm/rel/d/a/b/d_a_b_yo/d_a_b_yo/setBck__8daB_YO_cFiUcff.s"
}
#pragma pop
+#endif
/* 8062FE0C-8062FE18 000A8C 000C+00 11/11 0/0 0/0 .text setActionMode__8daB_YO_cFii */
#pragma push
diff --git a/rel/d/a/e/d_a_e_ymb/d_a_e_ymb.cpp b/rel/d/a/e/d_a_e_ymb/d_a_e_ymb.cpp
index fccf102f7a..f3423f5d13 100644
--- a/rel/d/a/e/d_a_e_ymb/d_a_e_ymb.cpp
+++ b/rel/d/a/e/d_a_e_ymb/d_a_e_ymb.cpp
@@ -7,386 +7,6 @@
#include "dol2asm.h"
//
-// Types:
-//
-
-struct request_of_phase_process_class {};
-
-struct csXyz {};
-
-struct Vec {};
-
-struct cXyz {
- /* 80266AE4 */ void operator+(Vec const&) const;
- /* 80266B34 */ void operator-(Vec const&) const;
- /* 80266B84 */ void operator*(f32) const;
- /* 808164B4 */ ~cXyz();
-};
-
-struct mDoMtx_stack_c {
- /* 8000CD64 */ void transS(cXyz const&);
- /* 8000CD9C */ void transM(f32, f32, f32);
- /* 8000CE38 */ void scaleM(f32, f32, f32);
- /* 8000CF44 */ void ZXYrotM(csXyz const&);
-
- static u8 now[48];
-};
-
-struct J3DModel {};
-
-struct mDoExt_invisibleModel {
- /* 8000E53C */ void create(J3DModel*, u8);
- /* 8000E7C0 */ void entryDL(cXyz*);
-};
-
-struct J3DMaterialTable {};
-
-struct J3DAnmTevRegKey {};
-
-struct mDoExt_brkAnm {
- /* 8000D70C */ void init(J3DMaterialTable*, J3DAnmTevRegKey*, int, int, f32, s16, s16);
- /* 8000D7A8 */ void entry(J3DMaterialTable*, f32);
-};
-
-struct mDoExt_baseAnm {
- /* 8000D428 */ void play();
-};
-
-struct mDoExt_McaMorfCallBack2_c {};
-
-struct mDoExt_McaMorfCallBack1_c {};
-
-struct J3DAnmTransform {};
-
-struct J3DModelData {};
-
-struct Z2Creature {};
-
-struct mDoExt_McaMorfSO {
- /* 800107D0 */ mDoExt_McaMorfSO(J3DModelData*, mDoExt_McaMorfCallBack1_c*,
- mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, f32, int,
- int, Z2Creature*, u32, u32);
- /* 80010E70 */ void setAnm(J3DAnmTransform*, int, f32, f32, f32, f32);
- /* 800110B0 */ void play(u32, s8);
- /* 800111C0 */ void entryDL();
- /* 800111EC */ void modelCalc();
-};
-
-struct fopAc_ac_c {
- /* 80018B64 */ fopAc_ac_c();
-};
-
-struct daPy_py_c {
- /* 8015F424 */ void checkNowWolfEyeUp();
-
- static u8 m_midnaActor[4];
-};
-
-struct daObjDrop_c {
- /* 8082187C */ void setPos(cXyz);
-};
-
-struct J3DJoint {};
-
-struct daE_YMB_c {
- /* 8081615C */ void ctrlJoint(J3DJoint*, J3DModel*);
- /* 808164F0 */ void JointCallBack(J3DJoint*, int);
- /* 80816554 */ void draw();
- /* 8081697C */ void setBck(int, u8, f32, f32);
- /* 80816A20 */ void checkBck(int);
- /* 80816A7C */ void setActionMode(int, int);
- /* 80816A88 */ void setLastDamage();
- /* 80816B7C */ void damage_check();
- /* 80816E78 */ void setCameraSwitch();
- /* 80817064 */ void checkWaterPos();
- /* 80817164 */ void checkGroundPos();
- /* 80817200 */ void setFlyWaitVoice();
- /* 8081727C */ void setDownWaitVoice();
- /* 808172F8 */ void setHitBoardSe();
- /* 808173B0 */ void setElecEffect1();
- /* 8081756C */ void setElecEffect2();
- /* 80817744 */ void setWaterEffect1();
- /* 8081785C */ void setWaterEffect2();
- /* 80817974 */ void setBoilEffect(int);
- /* 80817AEC */ void setDamageEffect(int);
- /* 80817BD8 */ void setDownHamonEffect();
- /* 80817CF0 */ void setFlyBlurEffect();
- /* 80817E7C */ void setRockDamageEffect();
- /* 80817FDC */ void setDeathEffect();
- /* 808181F4 */ void executeWait();
- /* 80818328 */ void setBitePos(int);
- /* 80818370 */ void setInclination();
- /* 80818518 */ void setBodyAngle();
- /* 80818930 */ void checkWolfLockIn();
- /* 80818AE8 */ void executeFly();
- /* 80819610 */ void executeFlyAttack();
- /* 80819FD0 */ void executeRunAway();
- /* 8081A718 */ void executeGuard();
- /* 8081A88C */ void executeSwim();
- /* 8081B78C */ void executeWaterJump();
- /* 8081BC10 */ void getNearDownPos();
- /* 8081BEE8 */ void executeDamage();
- /* 8081C4EC */ void setMidnaBindInit(cXyz*);
- /* 8081C7D0 */ void setMidnaBindLevel(int);
- /* 8081C908 */ void setWolfLockEffect();
- /* 8081CC14 */ void initDownToWater();
- /* 8081CD00 */ void calcDownToWater();
- /* 8081CE6C */ void executeDown();
- /* 8081D4D8 */ void setCreateDrop();
- /* 8081D594 */ void executeDeath();
- /* 8081DBD0 */ void demo_skip(int);
- /* 8081DDE0 */ void DemoSkipCallBack(void*, int);
- /* 8081DE14 */ void calcLakeDemoPlayerPos();
- /* 8081DE84 */ void executeLakeDemo();
- /* 8081E5B4 */ void executeStartDemo();
- /* 8081F140 */ void checkStartBattleDemo();
- /* 8081F2E0 */ void executeBattleDemo();
- /* 8081FAC8 */ void action();
- /* 8081FF88 */ void mtx_set();
- /* 808200A0 */ void getBellyBitePos(cXyz*);
- /* 80820128 */ void getDownLockPoint();
- /* 808203D8 */ void setAttentionPos();
- /* 80820668 */ void cc_set();
- /* 808207AC */ void execute();
- /* 80820A40 */ void _delete();
- /* 80820AF0 */ void CreateHeap();
- /* 80820DD0 */ void create();
-};
-
-struct daE_YMB_HIO_c {
- /* 8081610C */ daE_YMB_HIO_c();
- /* 80821460 */ ~daE_YMB_HIO_c();
-};
-
-struct dVibration_c {
- /* 8006FA24 */ void StartShock(int, int, cXyz);
- /* 8006FB10 */ void StartQuake(int, int, cXyz);
- /* 8006FC0C */ void StartQuake(u8 const*, int, int, cXyz);
- /* 8006FD94 */ void StopQuake(int);
-};
-
-struct dSv_memBit_c {
- /* 80034810 */ void onSwitch(int);
- /* 80034860 */ void isSwitch(int) const;
-};
-
-struct dSv_info_c {
- /* 80035200 */ void onSwitch(int, int);
- /* 800352B0 */ void offSwitch(int, int);
- /* 80035360 */ void isSwitch(int, int) const;
-};
-
-struct dSv_event_flag_c {
- static u8 saveBitLabels[1644 + 4 /* padding */];
-};
-
-struct dSv_event_c {
- /* 8003498C */ void onEventBit(u16);
- /* 800349BC */ void isEventBit(u16) const;
-};
-
-struct dKy_tevstr_c {};
-
-struct dScnKy_env_light_c {
- /* 801A37C4 */ void settingTevStruct(int, cXyz*, dKy_tevstr_c*);
- /* 801A4DA0 */ void setLightTevColorType_MAJI(J3DModelData*, dKy_tevstr_c*);
-};
-
-struct dRes_info_c {};
-
-struct dRes_control_c {
- /* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int);
-};
-
-struct dPa_levelEcallBack {};
-
-struct _GXColor {};
-
-struct dPa_control_c {
- struct level_c {
- /* 8004B918 */ void getEmitter(u32);
- };
-
- /* 8004C218 */ void setHitMark(u16, fopAc_ac_c*, cXyz const*, csXyz const*, cXyz const*, u32);
- /* 8004D4CC */ void set(u32, u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*,
- cXyz const*, u8, dPa_levelEcallBack*, s8, _GXColor const*,
- _GXColor const*, cXyz const*, f32);
- /* 8004CA90 */ void set(u8, u16, cXyz const*, dKy_tevstr_c const*, csXyz const*, cXyz const*,
- u8, dPa_levelEcallBack*, s8, _GXColor const*, _GXColor const*,
- cXyz const*, f32);
-};
-
-struct dEvt_control_c {
- /* 80042468 */ void reset();
- /* 80042914 */ void setSkipProc(void*, int (*)(void*, int), int);
- /* 8004368C */ void setPtT(void*);
-};
-
-struct dDlst_shadowControl_c {
- static u8 mSimpleTexObj[32];
-};
-
-struct dCcU_AtInfo {};
-
-struct dCcD_Stts {
- /* 80083860 */ void Init(int, int, fopAc_ac_c*);
-};
-
-struct dCcD_SrcSph {};
-
-struct dCcD_Sph {
- /* 80084A34 */ void Set(dCcD_SrcSph const&);
- /* 8082124C */ ~dCcD_Sph();
- /* 80821318 */ dCcD_Sph();
-};
-
-struct dCcD_GStts {
- /* 80083760 */ dCcD_GStts();
- /* 8082139C */ ~dCcD_GStts();
-};
-
-struct dCcD_GObjInf {
- /* 80083A28 */ dCcD_GObjInf();
- /* 800840E4 */ ~dCcD_GObjInf();
- /* 800842C0 */ void ChkAtHit();
- /* 80084358 */ void GetAtHitObj();
- /* 80084460 */ void ChkTgHit();
- /* 800844B8 */ void ResetTgHit();
- /* 800844F8 */ void GetTgHitObj();
-};
-
-struct dCamera_c {
- /* 801614AC */ void Start();
- /* 801614D0 */ void Stop();
- /* 8016300C */ void SetTrimSize(s32);
- /* 80180AE0 */ void Set(cXyz, cXyz, f32, s16);
- /* 80180C18 */ void Reset(cXyz, cXyz);
- /* 80181E64 */ void Eye();
- /* 80181E98 */ void Center();
-};
-
-struct dBgW_Base {};
-
-struct dBgW {
- /* 8007B970 */ dBgW();
- /* 8007B9C0 */ void Move();
-};
-
-struct dBgS_ObjGndChk_Spl {
- /* 800777B0 */ dBgS_ObjGndChk_Spl();
- /* 80077848 */ ~dBgS_ObjGndChk_Spl();
-};
-
-struct dBgS_GndChk {
- /* 8007757C */ dBgS_GndChk();
-};
-
-struct dBgS {
- /* 80074A08 */ void Regist(dBgW_Base*, fopAc_ac_c*);
-};
-
-struct dAttention_c {
- /* 8007353C */ void LockonTarget(s32);
- /* 800737E4 */ void LockonTruth();
-};
-
-struct cM3dGSph {
- /* 8026F648 */ void SetC(cXyz const&);
- /* 8026F708 */ void SetR(f32);
- /* 808211BC */ ~cM3dGSph();
-};
-
-struct cM3dGAab {
- /* 80821204 */ ~cM3dGAab();
-};
-
-struct cCcD_Obj {
- /* 80263A48 */ void GetAc();
-};
-
-struct cCcS {
- /* 80264BA8 */ void Set(cCcD_Obj*);
-};
-
-struct cCcD_GStts {
- /* 80821418 */ ~cCcD_GStts();
-};
-
-struct cBgW_BgId {
- /* 802681D4 */ void ChkUsed() const;
-};
-
-struct cBgD_t {};
-
-struct cBgW {
- /* 80079F38 */ void Set(cBgD_t*, u32, f32 (*)[3][4]);
-};
-
-struct cBgS_PolyInfo {};
-
-struct cBgS_GndChk {
- /* 80267D28 */ void SetPos(cXyz const*);
- /* 80267D0C */ void SetPos(Vec const*);
-};
-
-struct cBgS {
- /* 80074250 */ void Release(dBgW_Base*);
- /* 800744A0 */ void GroundCross(cBgS_GndChk*);
-};
-
-struct _GXTexObj {};
-
-struct Z2SoundObjMgr {
- /* 802BF980 */ void setForceBattleArea(bool, u16, u16, u16);
-};
-
-struct Z2SeqMgr {
- /* 802AF49C */ void subBgmStart(u32);
- /* 802AF884 */ void subBgmStop();
- /* 802B1DF4 */ void changeSubBgmStatus(s32);
- /* 802B4164 */ void setBattleBgmOff(bool);
-};
-
-struct JAISoundID {};
-
-struct Z2SeMgr {
- /* 802AB984 */ void seStart(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
- /* 802AC50C */ void seStartLevel(JAISoundID, Vec const*, u32, s8, f32, f32, f32, f32, u8);
-};
-
-struct Z2CreatureEnemy {
- /* 802C0F64 */ Z2CreatureEnemy();
- /* 802C1094 */ void init(Vec*, Vec*, u8, u8);
- /* 802C1B7C */ void setLinkSearch(bool);
- /* 802C1B90 */ void setEnemyName(char const*);
-};
-
-struct Z2AudioMgr {
- static u8 mAudioMgrPtr[4 + 4 /* padding */];
-};
-
-struct JMath {
- static u8 sincosTable_[65536];
-};
-
-struct JGeometry {
- template <typename A1>
- struct TVec3 {};
- /* TVec3<f32> */
- struct TVec3__template0 {};
-};
-
-struct J3DSys {
- static u8 mCurrentMtx[48];
-};
-
-struct J3DFrameCtrl {
- /* 803283FC */ void init(s16);
- /* 8032842C */ void checkPass(f32);
- /* 80820D68 */ ~J3DFrameCtrl();
-};
-
-//
// Forward References:
//
@@ -607,11 +227,6 @@ extern "C" void* __nw__FUl();
extern "C" void __dl__FPv();
extern "C" void init__12J3DFrameCtrlFs();
extern "C" void checkPass__12J3DFrameCtrlFf();
-extern "C" void PSMTXCopy();
-extern "C" void PSMTXTrans();
-extern "C" void PSVECAdd();
-extern "C" void PSVECSquareMag();
-extern "C" void PSVECSquareDistance();
extern "C" void __construct_array();
extern "C" void _savegpr_22();
extern "C" void _savegpr_23();
@@ -629,9 +244,6 @@ extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
-extern "C" void abs();
-extern "C" extern void* g_fopAc_Method[8];
-extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */];
extern "C" extern void* __vt__8dCcD_Sph[36];
extern "C" extern void* __vt__9dCcD_Stts[11];
@@ -641,12 +253,9 @@ extern "C" extern void* __vt__9cCcD_Stts[8];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" extern u8 g_dComIfG_gameInfo[122384];
extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32];
-extern "C" extern u8 g_env_light[4880];
-extern "C" extern u8 j3dSys[284];
extern "C" u8 mCurrentMtx__6J3DSys[48];
extern "C" extern u8 j3dZModeTable[96];
extern "C" u8 sincosTable___5JMath[65536];
-extern "C" extern u32 __float_nan;
extern "C" u8 m_midnaActor__9daPy_py_c[4];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
extern "C" void __register_global_object();
@@ -1096,7 +705,8 @@ asm void daE_YMB_c::ctrlJoint(J3DJoint* param_0, J3DModel* param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm cXyz::~cXyz() {
+// asm cXyz::~cXyz() {
+extern "C" asm void __dt__4cXyzFv(void) {
nofralloc
#include "asm/rel/d/a/e/d_a_e_ymb/d_a_e_ymb/__dt__4cXyzFv.s"
}
@@ -2803,7 +2413,8 @@ asm void daE_YMB_c::CreateHeap() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm J3DFrameCtrl::~J3DFrameCtrl() {
+// asm J3DFrameCtrl::~J3DFrameCtrl() {
+extern "C" asm void __dt__12J3DFrameCtrlFv() {
nofralloc
#include "asm/rel/d/a/e/d_a_e_ymb/d_a_e_ymb/__dt__12J3DFrameCtrlFv.s"
}
@@ -2847,7 +2458,8 @@ asm void daE_YMB_c::create() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm cM3dGSph::~cM3dGSph() {
+// asm cM3dGSph::~cM3dGSph() {
+extern "C" asm void __dt__8cM3dGSphFv() {
nofralloc
#include "asm/rel/d/a/e/d_a_e_ymb/d_a_e_ymb/__dt__8cM3dGSphFv.s"
}
@@ -2857,7 +2469,8 @@ asm cM3dGSph::~cM3dGSph() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm cM3dGAab::~cM3dGAab() {
+// asm cM3dGAab::~cM3dGAab() {
+extern "C" asm void __dt__8cM3dGAabFv() {
nofralloc
#include "asm/rel/d/a/e/d_a_e_ymb/d_a_e_ymb/__dt__8cM3dGAabFv.s"
}
@@ -2867,7 +2480,8 @@ asm cM3dGAab::~cM3dGAab() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm dCcD_Sph::~dCcD_Sph() {
+// asm dCcD_Sph::~dCcD_Sph() {
+extern "C" asm void __dt__8dCcD_SphFv() {
nofralloc
#include "asm/rel/d/a/e/d_a_e_ymb/d_a_e_ymb/__dt__8dCcD_SphFv.s"
}
@@ -2877,7 +2491,8 @@ asm dCcD_Sph::~dCcD_Sph() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm dCcD_Sph::dCcD_Sph() {
+// asm dCcD_Sph::dCcD_Sph() {
+extern "C" asm void __ct__8dCcD_SphFv() {
nofralloc
#include "asm/rel/d/a/e/d_a_e_ymb/d_a_e_ymb/__ct__8dCcD_SphFv.s"
}
@@ -2887,7 +2502,8 @@ asm dCcD_Sph::dCcD_Sph() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm dCcD_GStts::~dCcD_GStts() {
+// asm dCcD_GStts::~dCcD_GStts() {
+extern "C" asm void __dt__10dCcD_GSttsFv() {
nofralloc
#include "asm/rel/d/a/e/d_a_e_ymb/d_a_e_ymb/__dt__10dCcD_GSttsFv.s"
}
@@ -2907,7 +2523,8 @@ static asm void daE_YMB_Create(daE_YMB_c* param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm cCcD_GStts::~cCcD_GStts() {
+// asm cCcD_GStts::~cCcD_GStts() {
+extern "C" asm void __dt__10cCcD_GSttsFv() {
nofralloc
#include "asm/rel/d/a/e/d_a_e_ymb/d_a_e_ymb/__dt__10cCcD_GSttsFv.s"
}
@@ -3167,7 +2784,8 @@ REGISTER_CTORS(0x808214A8, __sinit_d_a_e_ymb_cpp);
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daObjDrop_c::setPos(cXyz param_0) {
+// asm void daObjDrop_c::setPos(cXyz param_0) {
+extern "C" asm void setPos__11daObjDrop_cF4cXyz() {
nofralloc
#include "asm/rel/d/a/e/d_a_e_ymb/d_a_e_ymb/setPos__11daObjDrop_cF4cXyz.s"
}
diff --git a/src/d/a/d_a_alink.cpp b/src/d/a/d_a_alink.cpp
index 3f004b4466..7579a3c9f7 100644
--- a/src/d/a/d_a_alink.cpp
+++ b/src/d/a/d_a_alink.cpp
@@ -17522,7 +17522,7 @@ void daAlink_c::posMove() {
speed.y = daAlinkHIO_swim_c0::m.mMaxFloatUpSpeed;
}
}
- } else if (!checkModeFlg(0x400)) {
+ } else if (!checkModeFlg(MODE_RIDE)) {
if (checkHeavyStateOn(1, 1) && mProcID != PROC_SPINNER_READY &&
!checkNoResetFlg0(FLG0_UNDERWATER))
{
diff --git a/src/d/a/d_a_alink_cut.inc b/src/d/a/d_a_alink_cut.inc
index 8d0ec5e45a..48e7e31967 100644
--- a/src/d/a/d_a_alink_cut.inc
+++ b/src/d/a/d_a_alink_cut.inc
@@ -762,15 +762,15 @@ void daAlink_c::setCutJumpSpeed(int i_airAt) {
targetPos.y = mTargetedActor->eyePos.y;
}
- f32 dvar12 = speed.y + gravity;
- f32 dvar10 = 1.0f / gravity;
- f32 fvar1 = targetPos.y - (current.pos.y - (dvar10 * (dvar12 * dvar12) * 0.5f));
+ f32 speed_y_delta = speed.y + gravity; // 23.6
+ f32 inverse_gravity = 1.0f / gravity; // -0.29
+ f32 fvar1 = targetPos.y - (current.pos.y - (inverse_gravity * (speed_y_delta * speed_y_delta) * 0.5f));
if (fvar1 > 0.0f) {
fvar1 = 0.0f;
}
- f32 sqrt = JMAFastSqrt(fvar1 * 2.0f * dvar10);
- f32 speedDiv = sqrt - (dvar12 * dvar10);
+ f32 sqrt = JMAFastSqrt(fvar1 * 2.0f * inverse_gravity);
+ f32 speedDiv = sqrt - (speed_y_delta * inverse_gravity);
f32 squareDist = current.pos.absXZ(targetPos);
if (squareDist > 500.0f) {
diff --git a/src/d/a/d_a_alink_wolf.inc b/src/d/a/d_a_alink_wolf.inc
index 776af7a91a..07ed3df93a 100644
--- a/src/d/a/d_a_alink_wolf.inc
+++ b/src/d/a/d_a_alink_wolf.inc
@@ -24,6 +24,7 @@
#include "rel/d/a/tag/d_a_tag_howl/d_a_tag_howl.h"
#include "rel/d/a/tag/d_a_tag_wara_howl/d_a_tag_wara_howl.h"
#include "rel/d/a/tag/d_a_tag_wljump/d_a_tag_wljump.h"
+#include "rel/d/a/e/d_a_e_ymb/d_a_e_ymb.h"
/* 80126740-80126928 121080 01E8+00 2/2 0/0 0/0 .text changeCommon__9daAlink_cFv */
// matches with literals
@@ -6715,6 +6716,69 @@ int daAlink_c::procWolfDownAtMissLand() {
}
/* 8013BE24-8013C3E4 136764 05C0+00 2/2 0/0 0/0 .text procWolfLockAttackInit__9daAlink_cFi */
+#ifdef NONMATCHING
+// wrong float regist + float literals
+int daAlink_c::procWolfLockAttackInit(int param_0) {
+ commonProcInit(PROC_WOLF_LOCK_ATTACK);
+ setSingleAnimeWolfParam(WANM_ATTACK_A_START, &daAlinkHIO_wlAtLock_c0::m.field_0x0);
+
+ if (fopAcM_GetName(mWolfLockAcKeep[0].getActor()) == PROC_E_YMB) {
+ mProcVar3.field_0x300e.z = 1;
+
+ if (param_0 == 0) {
+ mProcVar1.field_0x300a = static_cast<daE_YMB_c*>(mWolfLockAcKeep[0].getActor())->getMaxLockAttack();
+ }
+
+ mProcVar1.field_0x300a--;
+ field_0x37c8 = mWolfLockAcKeep[0].getActor()->eyePos;
+
+ if (mProcVar1.field_0x300a == 0) {
+ mWolfLockAcKeep[0].clearData();
+ }
+ } else {
+ field_0x37c8 = mWolfLockAcKeep[0].getActor()->eyePos;
+ mWolfLockAcKeep[0].clearData();
+ mProcVar3.field_0x300e.z = 0;
+ }
+
+ shape_angle.y = cLib_targetAngleY(&current.pos,&field_0x37c8);
+ current.angle.y = shape_angle.y;
+ cXyz l_eyePosDelta = field_0x37c8 - eyePos;
+
+ if (l_eyePosDelta.y < 10.0f) {
+ l_eyePosDelta.y = 10.0f;
+ } else {
+ if (l_eyePosDelta.y > daAlinkHIO_wlAtLock_c0::m.field_0x4C)
+ l_eyePosDelta.y = daAlinkHIO_wlAtLock_c0::m.field_0x4C;
+ }
+
+ f32 tmp_f = l_eyePosDelta.absXZ();
+
+ if (tmp_f > daAlinkHIO_wlAtLock_c0::m.field_0x50) {
+ f32 tmp = daAlinkHIO_wlAtLock_c0::m.field_0x50 / tmp_f;
+ l_eyePosDelta.x *= tmp;
+ l_eyePosDelta.z *= tmp;
+ }
+
+ f32 abs = l_eyePosDelta.abs() / daAlinkHIO_wlAtLock_c0::m.field_0x28.mCheckFrame;
+
+ if (abs < 1.0f)
+ abs = 1.0f;
+
+ f32 check_frame = daAlinkHIO_wlAtLock_c0::m.field_0x28.mCheckFrame / abs;
+ mNormalSpeed = check_frame * l_eyePosDelta.absXZ();
+ setSpecialGravity((l_eyePosDelta.y * -2.0f) / (abs * abs), maxFallSpeed, 0);
+ speed.y = -gravity * abs;
+ mProcVar0.field_0x3008 = abs;
+ setCylAtParam(0x8000000,dCcG_At_Spl_UNK_0,1,4,6,daAlinkHIO_wlAtLock_c0::m.field_0x40,daAlinkHIO_wlAtLock_c0::m.field_0x44);
+ field_0x3438 = daAlinkHIO_wlAtLock_c0::m.field_0x3C;
+ setCutType(CUT_TYPE_WOLF_LOCK);
+ voiceStart(Z2SE_WL_V_ATTACK_THRUST);
+ dComIfGp_setPlayerStatus1(0,0x1000000);
+ dComIfGp_particle_set(0x247,&current.pos,&current.angle,0);
+ return 1;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -6723,12 +6787,15 @@ asm int daAlink_c::procWolfLockAttackInit(int param_0) {
#include "asm/d/a/d_a_alink/procWolfLockAttackInit__9daAlink_cFi.s"
}
#pragma pop
+#endif
/* 8013C3E4-8013C630 136D24 024C+00 1/0 0/0 0/0 .text procWolfLockAttack__9daAlink_cFv */
// matches with literals
#ifdef NONMATCHING
int daAlink_c::procWolfLockAttack() {
BOOL var_r29 = false;
+
+ // check if any field_0x850 clylinders collided with at shields
for (int i = 0; i < 3; i++) {
if (checkAtShieldHit(field_0x850[i])) {
var_r29 = true;
@@ -6736,6 +6803,8 @@ int daAlink_c::procWolfLockAttack() {
}
}
+
+ // early return checks for colliding with at shields or if the actor hit is not freezard
if (var_r29 || (checkAtShieldHit(mAtCyl) && (mAtCyl.GetAtHitAc() == NULL ||
fopAcM_GetName(mAtCyl.GetAtHitAc()) != PROC_E_FB)))
{