summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2023-03-07 10:44:25 -0800
committerGitHub <noreply@github.com>2023-03-07 11:44:25 -0700
commit6c2e18af70dcc392b49cacf77fdb6ff8a164c0a5 (patch)
treef78d32c52dd468209db450f87e0a4eb2abde756f /src
parentd7ab9423ad4420e9c23b733e12ddc9bc581b69f2 (diff)
another d_a_alink pass (#305)
* big pass on many d_a_alink files * remove asm * fix d_a_tag_spring * fix --------- Co-authored-by: root <root@DESKTOP-BTVP2BC>
Diffstat (limited to 'src')
-rw-r--r--src/d/a/d_a_alink.cpp1405
-rw-r--r--src/d/a/d_a_alink_bottle.inc5
-rw-r--r--src/d/a/d_a_alink_bow.inc22
-rw-r--r--src/d/a/d_a_alink_crawl.inc323
-rw-r--r--src/d/a/d_a_alink_damage.inc94
-rw-r--r--src/d/a/d_a_alink_demo.inc1263
-rw-r--r--src/d/a/d_a_alink_hvyboots.inc21
-rw-r--r--src/d/a/d_a_alink_link.inc20
-rw-r--r--src/d/d_camera.cpp2
9 files changed, 2010 insertions, 1145 deletions
diff --git a/src/d/a/d_a_alink.cpp b/src/d/a/d_a_alink.cpp
index 57231ab88c..88a6e69d0e 100644
--- a/src/d/a/d_a_alink.cpp
+++ b/src/d/a/d_a_alink.cpp
@@ -1,7 +1,7 @@
-//
-// Generated By: dol2asm
-// Translation Unit: d/a/d_a_alink
-//
+/**
+ * d_a_alink.cpp
+ * Player (Link) Actor
+ */
#include "d/a/d_a_alink.h"
#include "JSystem/J2DGraph/J2DAnmLoader.h"
@@ -9,25 +9,19 @@
#include "JSystem/JMath/JMath.h"
#include "JSystem/JStudio/JStudio/stb.h"
#include "SSystem/SComponent/c_math.h"
-#include "Z2AudioLib/Z2AudioMgr.h"
#include "d/a/d_a_horse_static.h"
#include "d/com/d_com_inf_game.h"
#include "d/d_bomb.h"
+#include "d/d_demo.h"
#include "d/d_item.h"
#include "d/d_path.h"
#include "d/d_procname.h"
-#include "d/d_demo.h"
#include "d/msg/d_msg_object.h"
#include "dol2asm.h"
-#include "dolphin/types.h"
-#include "f_op/f_op_actor_mng.h"
-#include "m_Do/m_Do_audio.h"
-#include "m_Do/m_Do_ext.h"
-#include "m_Do/m_Do_mtx.h"
#include "rel/d/a/d_a_crod/d_a_crod.h"
#include "rel/d/a/d_a_horse/d_a_horse.h"
-#include "rel/d/a/d_a_scene_exit/d_a_scene_exit.h"
#include "rel/d/a/d_a_mg_rod/d_a_mg_rod.h"
+#include "rel/d/a/d_a_scene_exit/d_a_scene_exit.h"
#include "rel/d/a/d_a_spinner/d_a_spinner.h"
#include "rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h"
#include "rel/d/a/tag/d_a_tag_magne/d_a_tag_magne.h"
@@ -76,10 +70,6 @@ struct dPaPoF_c {
static u8 m_emitterFourData[60 + 28 /* padding */];
};
-struct dInsect_c {
- /* 80110648 */ void Insect_Release();
-};
-
struct JASKernel {
/* 80290B08 */ void getAramHeap();
};
@@ -3124,27 +3114,17 @@ char* daAlink_c::getAlinkArcName() {
/* 8009D88C-8009D8B8 0981CC 002C+00 1/1 0/0 0/0 .text
* daAlink_tgHitCallback__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daAlink_tgHitCallback(fopAc_ac_c* param_0, dCcD_GObjInf* param_1,
- fopAc_ac_c* param_2, dCcD_GObjInf* param_3) {
- nofralloc
-#include "asm/d/a/d_a_alink/daAlink_tgHitCallback__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf.s"
+static void daAlink_tgHitCallback(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, fopAc_ac_c* param_2,
+ dCcD_GObjInf* param_3) {
+ static_cast<daAlink_c*>(param_0)->tgHitCallback(param_2, param_1, param_3);
}
-#pragma pop
/* 8009D8B8-8009D8E4 0981F8 002C+00 1/1 0/0 0/0 .text
* daAlink_coHitCallback__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daAlink_coHitCallback(fopAc_ac_c* param_0, dCcD_GObjInf* param_1,
- fopAc_ac_c* param_2, dCcD_GObjInf* param_3) {
- nofralloc
-#include "asm/d/a/d_a_alink/daAlink_coHitCallback__FP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf.s"
+static void daAlink_coHitCallback(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, fopAc_ac_c* param_2,
+ dCcD_GObjInf* param_3) {
+ static_cast<daAlink_c*>(param_0)->coHitCallback(param_2, param_1);
}
-#pragma pop
/* ############################################################################################## */
/* 80450FC0-80450FC4 0004C0 0004+00 1/1 0/0 0/0 .sbss it$36766 */
@@ -3162,7 +3142,10 @@ static u8 struct_80450FC4[4];
static bool m_eye_move_flg;
/* 80450FC9 0003+00 data_80450FC9 None */
-static u8 m_morf_frame;
+#pragma push
+#pragma force_active on
+u8 daAlink_matAnm_c::m_morf_frame;
+#pragma pop
/* 80452C98-80452C9C 001298 0004+00 102/102 0/0 0/0 .sdata2 @5943 */
SECTION_SDATA2 static f32 lit_5943 = 0.5f;
@@ -3200,8 +3183,12 @@ SECTION_SDATA2 static u8 lit_6108[4] = {
};
// temporary for literal matching
-bool daAlink_c::checkInputOnR() const { return field_0x33ac > /* 0.05f */ lit_6021; }
-bool daAlink_c::checkWindSpeedOnXZ() const { return field_0x35b8.abs2XZ() > lit_6040 /* 1.0f */; }
+bool daAlink_c::checkInputOnR() const {
+ return field_0x33ac > /* 0.05f */ lit_6021;
+}
+bool daAlink_c::checkWindSpeedOnXZ() const {
+ return field_0x35b8.abs2XZ() > lit_6040 /* 1.0f */;
+}
/* 8009D8E4-8009D90C 098224 0028+00 2/2 0/0 0/0 .text init__16daAlink_matAnm_cFv */
void daAlink_matAnm_c::init() {
@@ -3356,44 +3343,32 @@ void daAlink_c::resetRootMtx() {
}
/* 8009EB58-8009EC28 099498 00D0+00 1/1 0/0 0/0 .text modelCallBack__9daAlink_cFi */
-#ifdef NONMATCHING
-bool daAlink_c::modelCallBack(int param_0) {
- jointControll(param_0);
- if (param_0 == 0) {
+bool daAlink_c::modelCallBack(int i_jointNo) {
+ jointControll(i_jointNo);
+
+ if (i_jointNo == 0) {
setUpperFront();
- } else if (param_0 == 0x1A) {
- bool check = false;
- if (mSpecialMode == 0 || mSpecialMode < 0x26) {
- check = true;
- }
- if (!check) {
+ } else if (i_jointNo == 26) {
+ if (!i_getSumouMode()) {
setFootMatrix();
}
setArmMatrix();
}
- if (field_0x2fb6 != 0 &&
- (param_0 == 0 || param_0 == 10 || param_0 - 4 < 1 || param_0 == 13 || param_0 == 15)) {
- changeBlendRate(param_0);
+
+ if (field_0x2fb6 != 0 && (i_jointNo == 0 || i_jointNo == 5 || i_jointNo == 10 ||
+ i_jointNo == 4 || i_jointNo == 13 || i_jointNo == 15))
+ {
+ changeBlendRate(i_jointNo);
}
return true;
}
-#else
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm bool daAlink_c::modelCallBack(int param_0) {
- nofralloc
-#include "asm/d/a/d_a_alink/modelCallBack__9daAlink_cFi.s"
-}
-#pragma pop
-#endif
/* 8009EC28-8009ECA0 099568 0078+00 1/1 0/0 0/0 .text daAlink_modelCallBack__FP8J3DJointi
*/
static int daAlink_modelCallBack(J3DJoint* p_joint, int param_1) {
int jntNo = p_joint->getJntNo();
daAlink_c* alink = (daAlink_c*)j3dSys.getModel()->getUserArea();
-
+
if (param_1 == 0) {
alink->modelCallBack(jntNo);
} else if (param_1 == 1 && alink->checkResetRootMtx(jntNo)) {
@@ -3426,11 +3401,7 @@ SECTION_SDATA2 static f32 lit_6399 = 202500.0f;
SECTION_SDATA2 static f32 lit_6400 = 350.0f;
/* 80452CE0-80452CE8 0012E0 0004+04 59/59 0/0 0/0 .sdata2 @6845 */
-SECTION_SDATA2 static f32 lit_6845[1 + 1 /* padding */] = {
- 30.0f,
- /* padding */
- 0.0f,
-};
+SECTION_SDATA2 static f32 lit_6845 = 30.0f;
/* 80452CE8-80452CF0 0012E8 0008+00 84/84 0/0 0/0 .sdata2 @6846 */
SECTION_SDATA2 static f64 lit_6846 = 0.5;
@@ -3814,34 +3785,41 @@ asm void daAlink_c::headModelCallBack(int param_0) {
#pragma pop
/* 8009EF38-8009EF7C 099878 0044+00 1/1 0/0 0/0 .text daAlink_headModelCallBack__FP8J3DJointi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daAlink_headModelCallBack(J3DJoint* param_0, int param_1) {
- nofralloc
-#include "asm/d/a/d_a_alink/daAlink_headModelCallBack__FP8J3DJointi.s"
+static int daAlink_headModelCallBack(J3DJoint* i_joint, int param_1) {
+ int joint_no = i_joint->getJntNo();
+ daAlink_c* this_ = (daAlink_c*)j3dSys.getModel()->getUserArea();
+
+ if (param_1 == 0) {
+ this_->headModelCallBack(joint_no);
+ }
+
+ return 1;
}
-#pragma pop
/* 8009EF7C-8009EFF0 0998BC 0074+00 1/1 0/0 0/0 .text wolfModelCallBack__9daAlink_cFi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::wolfModelCallBack(int param_0) {
- nofralloc
-#include "asm/d/a/d_a_alink/wolfModelCallBack__9daAlink_cFi.s"
+int daAlink_c::wolfModelCallBack(int i_jointNo) {
+ jointControll(i_jointNo);
+
+ if (i_jointNo == 36) {
+ setWolfFootMatrix();
+ } else if (i_jointNo == 7 || i_jointNo == 2 || i_jointNo == 3) {
+ changeWolfBlendRate(i_jointNo);
+ }
+
+ return 1;
}
-#pragma pop
/* 8009EFF0-8009F034 099930 0044+00 1/1 0/0 0/0 .text daAlink_wolfModelCallBack__FP8J3DJointi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-static asm void daAlink_wolfModelCallBack(J3DJoint* param_0, int param_1) {
- nofralloc
-#include "asm/d/a/d_a_alink/daAlink_wolfModelCallBack__FP8J3DJointi.s"
+static int daAlink_wolfModelCallBack(J3DJoint* i_joint, int param_1) {
+ int joint_no = i_joint->getJntNo();
+ daAlink_c* this_ = (daAlink_c*)j3dSys.getModel()->getUserArea();
+
+ if (param_1 == 0) {
+ this_->wolfModelCallBack(joint_no);
+ }
+
+ return 1;
}
-#pragma pop
/* ############################################################################################## */
/* 80452EE0-80452EE4 0014E0 0004+00 6/6 0/0 0/0 .sdata2 @19379 */
@@ -3911,14 +3889,9 @@ SECTION_SDATA2 static f32 lit_21736 = 45.0f;
SECTION_SDATA2 static f32 lit_22146 = 0.18479956686496735f;
/* 80452F38-80452F3C -00001 0004+00 1/1 0/0 0/0 .sdata2 None */
-SECTION_SDATA2 static u8 struct_80452F38[4] = {
- /* 80452F38 0001+00 data_80452F38 None */
- 0x01,
- /* 80452F39 0003+00 data_80452F39 None */
- 0x04,
- 0x00,
- 0x00,
-};
+SECTION_SDATA2 static u8 data_80452F38 = 1;
+
+SECTION_SDATA2 static u8 data_80452F39 = 4;
/* 80452F3C-80452F40 00153C 0004+00 1/1 0/0 0/0 .sdata2 @22608 */
SECTION_SDATA2 static f32 lit_22608 = 9025.0f;
@@ -4601,9 +4574,9 @@ bool daAlink_c::checkAttentionPosAngle(cXyz* param_0) {
int tmp;
if (i_checkModeFlg(MODE_RIDING) || i_checkEndResetFlg0(ERFLG0_UNK_400)) {
- tmp = daAlinkHIO_horse_c0::m.mSearchRangeAngle;
+ tmp = daAlinkHIO_horse_c0::m.mSearchRangeAngle;
} else {
- tmp = 0x6000;
+ tmp = 0x6000;
}
s16 targetY = cLib_targetAngleY(&field_0x34e0, param_0);
@@ -4700,7 +4673,8 @@ bool daAlink_c::commonLineCheck(cXyz* i_startPos, cXyz* i_endPos) {
* getMoveBGActorName__9daAlink_cFR13cBgS_PolyInfoi */
s16 daAlink_c::getMoveBGActorName(cBgS_PolyInfo& param_0, int param_1) {
if ((param_1 != 0 || dComIfG_Bgsp().ChkPolySafe(param_0)) &&
- dComIfG_Bgsp().ChkMoveBG_NoDABg(param_0) && dComIfG_Bgsp().GetActorPointer(param_0)) {
+ dComIfG_Bgsp().ChkMoveBG_NoDABg(param_0) && dComIfG_Bgsp().GetActorPointer(param_0))
+ {
return fopAcM_GetName(dComIfG_Bgsp().GetActorPointer(param_0));
}
@@ -4760,9 +4734,7 @@ COMPILER_STRIP_GATE(0x8038FA48, &l_crawlStartFrontOffset);
#pragma pop
/* 8038FA54-8038FA60 01C0B4 000C+00 1/2 0/0 0/0 .rodata l_crawlFrontOffset */
-SECTION_RODATA static u8 const l_crawlFrontOffset[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00,
-};
+SECTION_RODATA static Vec const l_crawlFrontOffset = {0.0f, 30.0f, 80.0f};
COMPILER_STRIP_GATE(0x8038FA54, &l_crawlFrontOffset);
/* 8038FA60-8038FA6C 01C0C0 000C+00 0/1 0/0 0/0 .rodata l_crawlBackOffset */
@@ -4775,9 +4747,7 @@ COMPILER_STRIP_GATE(0x8038FA60, &l_crawlBackOffset);
#pragma pop
/* 8038FA6C-8038FA78 01C0CC 000C+00 1/1 0/0 0/0 .rodata l_crawlTopOffset */
-SECTION_RODATA static u8 const l_crawlTopOffset[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x41, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
+SECTION_RODATA static Vec const l_crawlTopOffset = {0.0f, 30.0f, 0.0f};
COMPILER_STRIP_GATE(0x8038FA6C, &l_crawlTopOffset);
/* 8038FA78-8038FA84 01C0D8 000C+00 1/2 0/0 0/0 .rodata l_crawlFrontUpOffset */
@@ -4829,9 +4799,7 @@ COMPILER_STRIP_GATE(0x8038FAB4, &l_wolfLieStandUpOffset);
#pragma pop
/* 8038FAC0-8038FACC 01C120 000C+00 1/2 0/0 0/0 .rodata l_crawlTopUpOffset */
-SECTION_RODATA static u8 const l_crawlTopUpOffset[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
+SECTION_RODATA static Vec const l_crawlTopUpOffset = {0.0f, 80.0f, 0.0f};
COMPILER_STRIP_GATE(0x8038FAC0, &l_crawlTopUpOffset);
/* 8038FACC-8038FAD8 01C12C 000C+00 0/1 0/0 0/0 .rodata l_wolfLieTopUpOffset */
@@ -4864,36 +4832,28 @@ COMPILER_STRIP_GATE(0x8038FAE4, &l_wolfLieSideOffset);
/* 8038FAF0-8038FAFC 01C150 000C+00 0/1 0/0 0/0 .rodata l_crawlLSideOffset */
#pragma push
#pragma force_active on
-SECTION_RODATA static u8 const l_crawlLSideOffset[12] = {
- 0x42, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
+SECTION_RODATA static Vec const l_crawlLSideOffset = {55.0f, 0.0f, 0.0f};
COMPILER_STRIP_GATE(0x8038FAF0, &l_crawlLSideOffset);
#pragma pop
/* 8038FAFC-8038FB08 01C15C 000C+00 0/1 0/0 0/0 .rodata l_crawlRSideOffset */
#pragma push
#pragma force_active on
-SECTION_RODATA static u8 const l_crawlRSideOffset[12] = {
- 0xC2, 0x5C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
+SECTION_RODATA static Vec const l_crawlRSideOffset = {-55.0f, 0.0f, 0.0f};
COMPILER_STRIP_GATE(0x8038FAFC, &l_crawlRSideOffset);
#pragma pop
/* 8038FB08-8038FB14 01C168 000C+00 0/1 0/0 0/0 .rodata l_crawlLSideFrontOffset */
#pragma push
#pragma force_active on
-SECTION_RODATA static u8 const l_crawlLSideFrontOffset[12] = {
- 0x42, 0x5C, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00,
-};
+SECTION_RODATA static Vec const l_crawlLSideFrontOffset = {55.0f, 5.0f, 80.0f};
COMPILER_STRIP_GATE(0x8038FB08, &l_crawlLSideFrontOffset);
#pragma pop
/* 8038FB14-8038FB20 01C174 000C+00 0/1 0/0 0/0 .rodata l_crawlRSideFrontOffset */
#pragma push
#pragma force_active on
-SECTION_RODATA static u8 const l_crawlRSideFrontOffset[12] = {
- 0xC2, 0x5C, 0x00, 0x00, 0x40, 0xA0, 0x00, 0x00, 0x42, 0xA0, 0x00, 0x00,
-};
+SECTION_RODATA static Vec const l_crawlRSideFrontOffset = {-55.0f, 5.0f, 80.0f};
COMPILER_STRIP_GATE(0x8038FB14, &l_crawlRSideFrontOffset);
#pragma pop
@@ -4932,7 +4892,9 @@ COMPILER_STRIP_GATE(0x8038FB44, &l_ironBallChainVec);
/* 8038FB50-8038FB5C 01C1B0 000C+00 1/2 0/0 0/0 .rodata l_ironBallCenterVec */
SECTION_RODATA static Vec const l_ironBallCenterVec = {
- 0.0f, 0.0f, 42.0f,
+ 0.0f,
+ 0.0f,
+ 42.0f,
};
COMPILER_STRIP_GATE(0x8038FB50, &l_ironBallCenterVec);
@@ -4949,10 +4911,8 @@ COMPILER_STRIP_GATE(0x8038FB5C, &l_wolfFootOnFrame);
/* 8038FBBC-8038FBD4 01C21C 0018+00 1/1 0/0 0/0 .rodata l_insectNameList */
SECTION_RODATA static s16 const l_insectNameList[12] = {
- PROC_Obj_Kabuto, PROC_Obj_Cho, PROC_Obj_Kuw,
- PROC_Obj_Batta, PROC_Obj_Nan, PROC_Obj_Dan,
- PROC_Obj_Kam, PROC_Obj_Ten, PROC_Obj_Kat,
- PROC_Obj_Tombo, PROC_Obj_Ari, PROC_Obj_Kag,
+ PROC_Obj_Kabuto, PROC_Obj_Cho, PROC_Obj_Kuw, PROC_Obj_Batta, PROC_Obj_Nan, PROC_Obj_Dan,
+ PROC_Obj_Kam, PROC_Obj_Ten, PROC_Obj_Kat, PROC_Obj_Tombo, PROC_Obj_Ari, PROC_Obj_Kag,
};
COMPILER_STRIP_GATE(0x8038FBBC, &l_insectNameList);
@@ -4960,11 +4920,10 @@ COMPILER_STRIP_GATE(0x8038FBBC, &l_insectNameList);
#pragma push
#pragma force_active on
SECTION_RODATA daAlink_BckData const daAlink_c::m_mainBckShield[20] = {
- {0x0025, 0x0025}, {0x0023, 0x0023}, {0x0012, 0x001B}, {0x0010, 0x001B},
- {0x0021, 0x0021}, {0x001E, 0x001E}, {0x003C, 0x003C}, {0x002C, 0x002C},
- {0x003E, 0x003E}, {0x002E, 0x002E}, {0x0030, 0x0030}, {0x0028, 0x0028},
- {0x0032, 0x0032}, {0x002A, 0x002A}, {0x0274, 0x001B}, {0x0020, 0x001B},
- {0x001B, 0x001B}, {0x0026, 0x0026}, {0x0277, 0x001B}, {0x00CD, 0x001B},
+ {0x0025, 0x0025}, {0x0023, 0x0023}, {0x0012, 0x001B}, {0x0010, 0x001B}, {0x0021, 0x0021},
+ {0x001E, 0x001E}, {0x003C, 0x003C}, {0x002C, 0x002C}, {0x003E, 0x003E}, {0x002E, 0x002E},
+ {0x0030, 0x0030}, {0x0028, 0x0028}, {0x0032, 0x0032}, {0x002A, 0x002A}, {0x0274, 0x001B},
+ {0x0020, 0x001B}, {0x001B, 0x001B}, {0x0026, 0x0026}, {0x0277, 0x001B}, {0x00CD, 0x001B},
};
COMPILER_STRIP_GATE(0x8038FBD4, &daAlink_c::m_mainBckShield);
#pragma pop
@@ -4973,8 +4932,7 @@ COMPILER_STRIP_GATE(0x8038FBD4, &daAlink_c::m_mainBckShield);
#pragma push
#pragma force_active on
SECTION_RODATA daAlink_BckData const daAlink_c::m_mainBckSword[5] = {
- {0x001A, 0x001A}, {0x001C, 0x001C},
- {0x0277, 0x0277}, {0x00CD, 0x00CD}, {0x0243, 0x0244},
+ {0x001A, 0x001A}, {0x001C, 0x001C}, {0x0277, 0x0277}, {0x00CD, 0x00CD}, {0x0243, 0x0244},
};
COMPILER_STRIP_GATE(0x8038FC24, &daAlink_c::m_mainBckSword);
#pragma pop
@@ -4983,13 +4941,12 @@ COMPILER_STRIP_GATE(0x8038FC24, &daAlink_c::m_mainBckSword);
#pragma push
#pragma force_active on
SECTION_RODATA daAlink_BckData const daAlink_c::m_mainBckFishing[28] = {
- {0x0025, 0x0273}, {0x0023, 0x00C8}, {0x0012, 0x0273}, {0x0010, 0x00C8},
- {0x0021, 0x0273}, {0x001E, 0x00C8}, {0x003C, 0x0273}, {0x002C, 0x0273},
- {0x003E, 0x0273}, {0x002E, 0x0273}, {0x0030, 0x00C8}, {0x0028, 0x00C8},
- {0x0032, 0x00C8}, {0x002A, 0x00C8}, {0x0274, 0x0273}, {0x0020, 0x0273},
- {0x001A, 0x0273}, {0x001C, 0x0273}, {0x0277, 0x0273}, {0x00CD, 0x00C8},
- {0x0243, 0x0244}, {0x0233, 0x0273}, {0x0234, 0x0273}, {0x0233, 0x0273},
- {0x0234, 0x0273}, {0x026A, 0x0273}, {0x0256, 0x0273}, {0x0257, 0x0273},
+ {0x0025, 0x0273}, {0x0023, 0x00C8}, {0x0012, 0x0273}, {0x0010, 0x00C8}, {0x0021, 0x0273},
+ {0x001E, 0x00C8}, {0x003C, 0x0273}, {0x002C, 0x0273}, {0x003E, 0x0273}, {0x002E, 0x0273},
+ {0x0030, 0x00C8}, {0x0028, 0x00C8}, {0x0032, 0x00C8}, {0x002A, 0x00C8}, {0x0274, 0x0273},
+ {0x0020, 0x0273}, {0x001A, 0x0273}, {0x001C, 0x0273}, {0x0277, 0x0273}, {0x00CD, 0x00C8},
+ {0x0243, 0x0244}, {0x0233, 0x0273}, {0x0234, 0x0273}, {0x0233, 0x0273}, {0x0234, 0x0273},
+ {0x026A, 0x0273}, {0x0256, 0x0273}, {0x0257, 0x0273},
};
COMPILER_STRIP_GATE(0x8038FC38, &daAlink_c::m_mainBckFishing);
#pragma pop
@@ -5491,48 +5448,35 @@ daAlink_WlAnmData const daAlink_c::m_wlAnmDataTable[147] = {
};
/* 803914A8-80391734 01DB08 028C+00 2/2 0/0 0/0 .rodata m_faceTexDataTable__9daAlink_c */
-SECTION_RODATA u8 const daAlink_c::m_faceTexDataTable[652] = {
- 0x03, 0xDF, 0x03, 0x79, 0x03, 0xE0, 0x03, 0x7A, 0x03, 0xE1, 0x03, 0x7B, 0x03, 0xDF, 0x03, 0x78,
- 0x03, 0xDF, 0x03, 0x83, 0x03, 0xE2, 0x03, 0x2C, 0x03, 0xC6, 0x03, 0x6A, 0x03, 0xD5, 0x03, 0x6B,
- 0x03, 0xB0, 0x03, 0x2D, 0x03, 0xB1, 0x03, 0x2E, 0x03, 0xE6, 0x03, 0x82, 0x03, 0xE5, 0x03, 0x81,
- 0x03, 0xF2, 0x03, 0x98, 0x03, 0xC3, 0x03, 0x53, 0x03, 0xAF, 0x03, 0x98, 0x03, 0xF0, 0x03, 0x96,
- 0x03, 0xF4, 0x03, 0x2C, 0x03, 0xF3, 0x03, 0x2C, 0x03, 0xC5, 0x03, 0x5C, 0x03, 0xAF, 0x03, 0x42,
- 0x03, 0xAF, 0x03, 0x43, 0x03, 0xEE, 0x03, 0x8E, 0x03, 0xEF, 0x03, 0x8F, 0x03, 0xED, 0x03, 0x8D,
- 0x03, 0xD8, 0x03, 0x6E, 0x03, 0xD9, 0x03, 0x6F, 0x03, 0xDB, 0x03, 0x73, 0x03, 0xD7, 0x03, 0x6D,
- 0x03, 0xE9, 0x03, 0x88, 0x03, 0xE4, 0x03, 0x7D, 0x03, 0xD1, 0x03, 0x67, 0x03, 0xD2, 0x03, 0x68,
- 0x03, 0xAF, 0x03, 0x4A, 0x03, 0xAF, 0x03, 0x4B, 0x03, 0xAF, 0x03, 0x4C, 0x03, 0xAF, 0x03, 0x4D,
- 0x03, 0xAF, 0x03, 0x4E, 0x03, 0xAF, 0x03, 0x91, 0x03, 0xE7, 0x03, 0x86, 0x03, 0xB4, 0x03, 0x2C,
- 0x03, 0xBC, 0x03, 0x2C, 0x03, 0xAF, 0x03, 0x90, 0x03, 0xC9, 0x03, 0x5E, 0x03, 0xC7, 0x03, 0x5D,
- 0x03, 0xCA, 0x03, 0x5F, 0x03, 0xAF, 0x03, 0x95, 0x03, 0xAF, 0x03, 0x41, 0x03, 0xAF, 0x03, 0x51,
- 0x03, 0xAF, 0x03, 0x52, 0x03, 0xAF, 0x03, 0x49, 0x03, 0xAF, 0x03, 0x44, 0x03, 0xAF, 0x03, 0x45,
- 0x03, 0xAF, 0x03, 0x46, 0x03, 0xBD, 0x03, 0x2C, 0x03, 0xBE, 0x03, 0x2C, 0x03, 0xEA, 0x03, 0x89,
- 0x03, 0xAF, 0x03, 0x8A, 0x03, 0xCB, 0x03, 0x2C, 0x03, 0xAF, 0x03, 0x55, 0x03, 0xAF, 0x03, 0x54,
- 0x03, 0xAF, 0x03, 0x50, 0x03, 0xAF, 0x03, 0x4F, 0x03, 0xB8, 0x03, 0x34, 0x03, 0xB6, 0x03, 0x32,
- 0x03, 0xB7, 0x03, 0x33, 0x03, 0xB5, 0x03, 0x31, 0x03, 0xAF, 0x03, 0x36, 0x03, 0xAF, 0x03, 0x37,
- 0x03, 0xB9, 0x03, 0x2C, 0x03, 0xAF, 0x03, 0x38, 0x03, 0xAF, 0x03, 0x39, 0x03, 0xAF, 0x03, 0x35,
- 0x03, 0xDC, 0x03, 0x35, 0x03, 0xDE, 0x03, 0x35, 0x03, 0xDA, 0x03, 0x70, 0x03, 0xAF, 0x03, 0x3E,
- 0x03, 0xD3, 0x03, 0x2C, 0x03, 0xBB, 0x03, 0x3C, 0x03, 0xAF, 0x03, 0x3B, 0x03, 0xBA, 0x03, 0x3A,
- 0x03, 0xCE, 0x03, 0x64, 0x03, 0xCF, 0x03, 0x65, 0x03, 0xEB, 0x03, 0x8B, 0x03, 0xEC, 0x03, 0x8C,
- 0x03, 0xD4, 0x03, 0x69, 0x03, 0xC0, 0x03, 0x2C, 0x03, 0xC1, 0x03, 0x3F, 0x03, 0xC1, 0x03, 0x40,
- 0x03, 0xD0, 0x03, 0x66, 0x03, 0xC2, 0x03, 0x2C, 0x03, 0xAF, 0x03, 0x5A, 0x03, 0xC4, 0x03, 0x5B,
- 0x03, 0xBF, 0x03, 0x2C, 0x03, 0xC8, 0x03, 0x2C, 0x10, 0x45, 0x10, 0x3B, 0x10, 0x46, 0x03, 0x2C,
- 0x10, 0x41, 0x10, 0x37, 0x10, 0x42, 0x10, 0x38, 0x10, 0x43, 0x10, 0x39, 0x10, 0x47, 0x10, 0x3C,
- 0x10, 0x40, 0x10, 0x36, 0x10, 0x44, 0x10, 0x3A, 0x10, 0x3F, 0x03, 0x2C, 0x03, 0xAF, 0x20, 0x32,
- 0x03, 0xAF, 0x20, 0x33, 0x20, 0x39, 0x20, 0x34, 0x03, 0xAF, 0x50, 0x54, 0x03, 0xAF, 0x50, 0x55,
- 0x50, 0x59, 0x50, 0x56, 0x03, 0xE8, 0x03, 0x87, 0x03, 0xAF, 0x03, 0x72, 0x03, 0xAF, 0x03, 0x84,
- 0x03, 0xAF, 0x03, 0x85, 0x03, 0xD6, 0x03, 0x6C, 0x03, 0xAF, 0x03, 0x92, 0x03, 0xAF, 0x03, 0x93,
- 0x03, 0xAF, 0x03, 0x77, 0x03, 0xAF, 0x03, 0x61, 0x03, 0xAF, 0x03, 0x62, 0x03, 0xCD, 0x03, 0x63,
- 0x03, 0xAF, 0x03, 0x3D, 0x03, 0xF1, 0x03, 0x97, 0x03, 0xDC, 0x03, 0x2C, 0x03, 0xDD, 0x03, 0x2C,
- 0x03, 0xDE, 0x03, 0x2C, 0x03, 0xB3, 0x03, 0x30, 0x03, 0xCC, 0x03, 0x60, 0x03, 0xAF, 0x03, 0x48,
- 0x03, 0xAF, 0x03, 0x47, 0x03, 0xAF, 0x03, 0x58, 0x03, 0xAF, 0x03, 0x59, 0x03, 0xAF, 0x03, 0x56,
- 0x03, 0xAF, 0x03, 0x57, 0x60, 0x18, 0x60, 0x15, 0x03, 0xAF, 0x70, 0x70, 0x03, 0xAF, 0x70, 0x71,
- 0x03, 0xE3, 0x03, 0x7C, 0x03, 0xB2, 0x03, 0x2F, 0x03, 0xAF, 0x03, 0x94, 0x04, 0x17, 0x03, 0xA9,
- 0x04, 0x18, 0x03, 0xAA, 0x04, 0x1A, 0x03, 0xA7, 0x04, 0x1E, 0x03, 0xA7, 0x04, 0x1B, 0x03, 0xA7,
- 0x04, 0x0E, 0x03, 0xA7, 0x04, 0x0C, 0x03, 0xA7, 0x04, 0x0F, 0x03, 0xA7, 0x04, 0x10, 0x03, 0xA7,
- 0x04, 0x20, 0x03, 0xA7, 0x04, 0x15, 0x03, 0xA7, 0x04, 0x16, 0x03, 0xA7, 0x04, 0x0B, 0x03, 0xA7,
- 0x04, 0x11, 0x03, 0xA7, 0x04, 0x1F, 0x03, 0xA7, 0x04, 0x0A, 0x03, 0xA7, 0x04, 0x09, 0x03, 0xA7,
- 0x04, 0x12, 0x03, 0xA7, 0x04, 0x1C, 0x03, 0xA7, 0x04, 0x1D, 0x03, 0xA7, 0x04, 0x19, 0x03, 0xAB,
- 0x04, 0x13, 0x03, 0xA8, 0x04, 0x14, 0x03, 0xA7, 0x04, 0x0D, 0x03, 0xA7,
+SECTION_RODATA daAlink_FaceTexData const daAlink_c::m_faceTexDataTable[] = {
+ 0x03DF, 0x0379, 0x03E0, 0x037A, 0x03E1, 0x037B, 0x03DF, 0x0378, 0x03DF, 0x0383, 0x03E2, 0x032C,
+ 0x03C6, 0x036A, 0x03D5, 0x036B, 0x03B0, 0x032D, 0x03B1, 0x032E, 0x03E6, 0x0382, 0x03E5, 0x0381,
+ 0x03F2, 0x0398, 0x03C3, 0x0353, 0x03AF, 0x0398, 0x03F0, 0x0396, 0x03F4, 0x032C, 0x03F3, 0x032C,
+ 0x03C5, 0x035C, 0x03AF, 0x0342, 0x03AF, 0x0343, 0x03EE, 0x038E, 0x03EF, 0x038F, 0x03ED, 0x038D,
+ 0x03D8, 0x036E, 0x03D9, 0x036F, 0x03DB, 0x0373, 0x03D7, 0x036D, 0x03E9, 0x0388, 0x03E4, 0x037D,
+ 0x03D1, 0x0367, 0x03D2, 0x0368, 0x03AF, 0x034A, 0x03AF, 0x034B, 0x03AF, 0x034C, 0x03AF, 0x034D,
+ 0x03AF, 0x034E, 0x03AF, 0x0391, 0x03E7, 0x0386, 0x03B4, 0x032C, 0x03BC, 0x032C, 0x03AF, 0x0390,
+ 0x03C9, 0x035E, 0x03C7, 0x035D, 0x03CA, 0x035F, 0x03AF, 0x0395, 0x03AF, 0x0341, 0x03AF, 0x0351,
+ 0x03AF, 0x0352, 0x03AF, 0x0349, 0x03AF, 0x0344, 0x03AF, 0x0345, 0x03AF, 0x0346, 0x03BD, 0x032C,
+ 0x03BE, 0x032C, 0x03EA, 0x0389, 0x03AF, 0x038A, 0x03CB, 0x032C, 0x03AF, 0x0355, 0x03AF, 0x0354,
+ 0x03AF, 0x0350, 0x03AF, 0x034F, 0x03B8, 0x0334, 0x03B6, 0x0332, 0x03B7, 0x0333, 0x03B5, 0x0331,
+ 0x03AF, 0x0336, 0x03AF, 0x0337, 0x03B9, 0x032C, 0x03AF, 0x0338, 0x03AF, 0x0339, 0x03AF, 0x0335,
+ 0x03DC, 0x0335, 0x03DE, 0x0335, 0x03DA, 0x0370, 0x03AF, 0x033E, 0x03D3, 0x032C, 0x03BB, 0x033C,
+ 0x03AF, 0x033B, 0x03BA, 0x033A, 0x03CE, 0x0364, 0x03CF, 0x0365, 0x03EB, 0x038B, 0x03EC, 0x038C,
+ 0x03D4, 0x0369, 0x03C0, 0x032C, 0x03C1, 0x033F, 0x03C1, 0x0340, 0x03D0, 0x0366, 0x03C2, 0x032C,
+ 0x03AF, 0x035A, 0x03C4, 0x035B, 0x03BF, 0x032C, 0x03C8, 0x032C, 0x1045, 0x103B, 0x1046, 0x032C,
+ 0x1041, 0x1037, 0x1042, 0x1038, 0x1043, 0x1039, 0x1047, 0x103C, 0x1040, 0x1036, 0x1044, 0x103A,
+ 0x103F, 0x032C, 0x03AF, 0x2032, 0x03AF, 0x2033, 0x2039, 0x2034, 0x03AF, 0x5054, 0x03AF, 0x5055,
+ 0x5059, 0x5056, 0x03E8, 0x0387, 0x03AF, 0x0372, 0x03AF, 0x0384, 0x03AF, 0x0385, 0x03D6, 0x036C,
+ 0x03AF, 0x0392, 0x03AF, 0x0393, 0x03AF, 0x0377, 0x03AF, 0x0361, 0x03AF, 0x0362, 0x03CD, 0x0363,
+ 0x03AF, 0x033D, 0x03F1, 0x0397, 0x03DC, 0x032C, 0x03DD, 0x032C, 0x03DE, 0x032C, 0x03B3, 0x0330,
+ 0x03CC, 0x0360, 0x03AF, 0x0348, 0x03AF, 0x0347, 0x03AF, 0x0358, 0x03AF, 0x0359, 0x03AF, 0x0356,
+ 0x03AF, 0x0357, 0x6018, 0x6015, 0x03AF, 0x7070, 0x03AF, 0x7071, 0x03E3, 0x037C, 0x03B2, 0x032F,
+ 0x03AF, 0x0394, 0x0417, 0x03A9, 0x0418, 0x03AA, 0x041A, 0x03A7, 0x041E, 0x03A7, 0x041B, 0x03A7,
+ 0x040E, 0x03A7, 0x040C, 0x03A7, 0x040F, 0x03A7, 0x0410, 0x03A7, 0x0420, 0x03A7, 0x0415, 0x03A7,
+ 0x0416, 0x03A7, 0x040B, 0x03A7, 0x0411, 0x03A7, 0x041F, 0x03A7, 0x040A, 0x03A7, 0x0409, 0x03A7,
+ 0x0412, 0x03A7, 0x041C, 0x03A7, 0x041D, 0x03A7, 0x0419, 0x03AB, 0x0413, 0x03A8, 0x0414, 0x03A7,
+ 0x040D, 0x03A7,
};
COMPILER_STRIP_GATE(0x803914A8, &daAlink_c::m_faceTexDataTable);
@@ -5888,7 +5832,9 @@ COMPILER_STRIP_GATE(0x803919D8, &anmIdx);
/* 803919E4-803919F0 01E044 000C+00 1/1 0/0 0/0 .rodata localPaddleTop$20605 */
SECTION_RODATA static Vec const localPaddleTop = {
- 0.0f, 0.0f, -158.0f,
+ 0.0f,
+ 0.0f,
+ -158.0f,
};
COMPILER_STRIP_GATE(0x803919E4, &localPaddleTop);
@@ -6317,18 +6263,9 @@ COMPILER_STRIP_GATE(0x80391E3C, &wolfChainVec);
/* 80391E48-80391E78 01E4A8 0030+00 1/1 0/0 0/0 .rodata label$45760 */
SECTION_RODATA static u32 const label[12] = {
- Z2SE_WL_V_BREATH_SIT,
- Z2SE_WL_V_BREATH_WAIT,
- Z2SE_WL_V_BREATH_WALK,
- Z2SE_WL_V_BREATH_TIRED,
- Z2SE_WL_V_DASH,
- Z2SE_WL_V_BREATH_JUMP,
- Z2SE_WL_V_SLIP_CLIMB,
- Z2SE_WL_V_PUSH_ROCK,
- Z2SE_WL_V_TURN_BACK,
- Z2SE_WL_V_HOLD_THROW,
- Z2SE_WL_V_FAILED,
- Z2SE_WL_V_NOSE,
+ Z2SE_WL_V_BREATH_SIT, Z2SE_WL_V_BREATH_WAIT, Z2SE_WL_V_BREATH_WALK, Z2SE_WL_V_BREATH_TIRED,
+ Z2SE_WL_V_DASH, Z2SE_WL_V_BREATH_JUMP, Z2SE_WL_V_SLIP_CLIMB, Z2SE_WL_V_PUSH_ROCK,
+ Z2SE_WL_V_TURN_BACK, Z2SE_WL_V_HOLD_THROW, Z2SE_WL_V_FAILED, Z2SE_WL_V_NOSE,
};
COMPILER_STRIP_GATE(0x80391E48, &label);
@@ -6433,14 +6370,20 @@ asm void daAlink_c::setFootMatrix() {
#pragma pop
/* 800A2C24-800A2CE0 09D564 00BC+00 3/3 0/0 0/0 .text setMatrixOffset__9daAlink_cFPff */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setMatrixOffset(f32* param_0, f32 param_1) {
- nofralloc
-#include "asm/d/a/d_a_alink/setMatrixOffset__9daAlink_cFPff.s"
+void daAlink_c::setMatrixOffset(f32* param_0, f32 param_1) {
+ if (param_0 != &mSinkShapeOffset) {
+ cLib_addCalc(param_0, param_1, lit_5943, lit_52234, lit_11470);
+ } else if (mProcID == PROC_TOOL_DEMO) {
+ return;
+ }
+
+ mpLinkModel->getBaseTRMtx()[1][3] += *param_0;
+ mInvMtx[1][3] -= *param_0;
+
+ mDoMtx_stack_c::XrotS(shape_angle.x);
+ mDoMtx_stack_c::concat(mInvMtx);
+ mDoMtx_copy(mDoMtx_stack_c::get(), field_0x2be8);
}
-#pragma pop
/* 800A2CE0-800A3430 09D620 0750+00 3/3 0/0 0/0 .text
* setLegAngle__9daAlink_cFfP18daAlink_footData_cPsPsi */
@@ -6566,7 +6509,7 @@ void* daAlink_c::getAnimeResource(daPy_anmHeap_c* p_anmHeap, u16 i_anmID, u32 bu
if (arcNo == 0xFFFF) {
return p_anmHeap->loadDataIdx(resID);
}
-
+
return p_anmHeap->loadDataDemoRID(resID, arcNo);
}
@@ -6614,15 +6557,16 @@ J3DModel* daAlink_c::initModelEnv(u16 param_0, u32 param_1) {
int daAlink_c::initDemoModel(J3DModel** p_model, char const* resName, u32 param_2) {
*p_model = NULL;
- J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(dStage_roomControl_c::getDemoArcName(), resName);
+ J3DModelData* modelData =
+ (J3DModelData*)dComIfG_getObjectRes(dStage_roomControl_c::getDemoArcName(), resName);
if (modelData != NULL) {
*p_model = initModel(modelData, param_2);
-
+
if (*p_model == NULL) {
return 0;
}
}
-
+
return 1;
}
@@ -6631,11 +6575,12 @@ int daAlink_c::initDemoModel(J3DModel** p_model, char const* resName, u32 param_
// matches with literals
#ifdef NONMATCHING
int daAlink_c::initDemoBck(mDoExt_bckAnm** p_bck, char const* resName) {
- J3DAnmTransform* res = (J3DAnmTransform*)dComIfG_getObjectRes(dStage_roomControl_c::getDemoArcName(), resName);
+ J3DAnmTransform* res =
+ (J3DAnmTransform*)dComIfG_getObjectRes(dStage_roomControl_c::getDemoArcName(), resName);
if (res != NULL) {
*p_bck = new mDoExt_bckAnm();
-
+
if (*p_bck == NULL) {
return 0;
}
@@ -6644,7 +6589,7 @@ int daAlink_c::initDemoBck(mDoExt_bckAnm** p_bck, char const* resName) {
return 0;
}
}
-
+
return 1;
}
#else
@@ -11312,48 +11257,63 @@ SECTION_DATA u8 daAlink_c::m_demoInitTable[1140] = {
};
/* 803B2754-803B2798 00F874 0044+00 0/1 0/0 0/0 .data l_cylSrc */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_cylSrc[68] = {
- 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x1A, 0xD8, 0xFF, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x73,
- 0x04, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x42, 0x0C, 0x00, 0x00, 0x43, 0x34, 0x00, 0x00,
+static dCcD_SrcCyl l_cylSrc = {
+ {
+ {0, {{AT_TYPE_WOLF_ATTACK, 3, 0x1A}, {0xD8FFFDFF, 5}, 0x73}},
+ {dCcD_SE_WOLF_BITE, 3, 1, 0, {1}},
+ {dCcD_SE_NONE, 6, 0, 0, {0}},
+ {0},
+ },
+ {
+ {0.0f, 0.0f, 0.0f},
+ 35.0f,
+ 180.0f,
+ },
};
-#pragma pop
/* 803B2798-803B27D8 00F8B8 0040+00 1/2 0/0 0/0 .data l_sphSrc */
-SECTION_DATA static u8 l_sphSrc[64] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1A,
- 0xD8, 0xFB, 0xFD, 0xFF, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x73, 0x01, 0x03, 0x01, 0x00,
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x20, 0x00, 0x00,
+static dCcD_SrcSph l_sphSrc = {
+ {
+ {0, {{AT_TYPE_NORMAL_SWORD, 3, 0x1A}, {0xD8FBFDFF, 5}, 0x73}},
+ {dCcD_SE_SWORD, 3, 1, 0, {1}},
+ {dCcD_SE_NONE, 6, 0, 0, {0}},
+ {0},
+ },
+ {
+ {0.0f, 0.0f, 0.0f},
+ 40.0f,
+ },
};
/* 803B27D8-803B281C 00F8F8 0044+00 0/1 0/0 0/0 .data l_atCylSrc */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_atCylSrc[68] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x1B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x01, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x43, 0x34, 0x00, 0x00, 0x43, 0x02, 0x00, 0x00,
+static dCcD_SrcCyl l_atCylSrc = {
+ {
+ {0, {{AT_TYPE_NORMAL_SWORD, 2, 0x1B}, {0, 0}, 0}},
+ {dCcD_SE_SWORD, 3, 1, 0, {1}},
+ {dCcD_SE_NONE, 0, 0, 0, {0}},
+ {0},
+ },
+ {
+ {0.0f, 0.0f, 0.0f},
+ 180.0f,
+ 130.0f,
+ },
};
-#pragma pop
/* 803B281C-803B2868 00F93C 004C+00 0/1 0/0 0/0 .data l_atCpsSrc */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_atCpsSrc[76] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1B,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0xA0, 0x00, 0x00,
+static dCcD_SrcCps l_atCpsSrc = {
+ {
+ {0, {{AT_TYPE_NORMAL_SWORD, 1, 0x1B}, {0, 0}, 0}},
+ {dCcD_SE_SWORD, 1, 0, 0, {1}},
+ {dCcD_SE_NONE, 0, 0, 0, {0}},
+ {0},
+ },
+ {
+ {0.0f, 0.0f, 0.0f},
+ {0.0f, 0.0f, 0.0f},
+ 20.0f,
+ },
};
-#pragma pop
/* 803B2868-803B2880 00F988 0018+00 1/0 0/0 0/0 .data l_jntColPos0 */
SECTION_DATA static u8 l_jntColPos0[24] = {
@@ -11694,43 +11654,47 @@ SECTION_DATA static char* headBrkName[3] = {
"ml_head_power_up_b.brk",
};
+// move these later
+static int daAlink_Create(fopAc_ac_c* i_this);
+static int daAlink_Delete(daAlink_c* i_this);
+static int daAlink_Execute(daAlink_c* i_this);
+static int daAlink_Draw(daAlink_c* i_this);
+
/* 803B2DAC-803B2DCC -00001 0020+00 1/0 0/0 0/0 .data l_daAlink_Method */
-SECTION_DATA static void* l_daAlink_Method[8] = {
- (void*)daAlink_Create__FP10fopAc_ac_c,
- (void*)daAlink_Delete__FP9daAlink_c,
- (void*)daAlink_Execute__FP9daAlink_c,
- (void*)NULL,
- (void*)daAlink_Draw__FP9daAlink_c,
- (void*)NULL,
- (void*)NULL,
- (void*)NULL,
+static actor_method_class l_daAlink_Method = {
+ (process_method_func)daAlink_Create, (process_method_func)daAlink_Delete,
+ (process_method_func)daAlink_Execute, (process_method_func)NULL,
+ (process_method_func)daAlink_Draw,
};
/* 803B2DCC-803B2E20 -00001 0030+24 0/0 0/0 1/0 .data g_profile_ALINK */
-SECTION_DATA extern void* g_profile_ALINK[12 + 9 /* padding */] = {
- (void*)0xFFFFFFFD,
- (void*)0x0005FFFD,
- (void*)0x00FD0000,
- (void*)&g_fpcLf_Method,
- (void*)0x0000385C,
- (void*)NULL,
- (void*)NULL,
- (void*)&g_fopAc_Method,
- (void*)0x005B0000,
- (void*)&l_daAlink_Method,
- (void*)0x00060400,
- (void*)0x01000000,
- /* padding */
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
- NULL,
-};
+extern actor_process_profile_definition g_profile_ALINK = {
+ -3,
+ 5,
+ -3,
+ PROC_ALINK,
+ 0,
+ &g_fpcLf_Method.mBase,
+ sizeof(daAlink_c),
+ 0,
+ 0,
+ &g_fopAc_Method.base,
+ 0x5B,
+ 0,
+ 0,
+ &l_daAlink_Method,
+ 0x00060400,
+ 1,
+ 0,
+ 0,
+ 0,
+};
+
+// tons of extra padding? not sure what this is
+#pragma push
+#pragma force_active on
+SECTION_DATA static u8 data_803B2DFC[0x24] = {0};
+#pragma pop
/* 803B2E20-803B2E80 00FF40 000C+54 2/2 0/0 0/0 .data __vt__16daPy_frameCtrl_c */
SECTION_DATA extern void* __vt__16daPy_frameCtrl_c[3 + 21 /* padding */] = {
@@ -12314,7 +12278,8 @@ void daAlink_c::setSelectEquipItem(int param_0) {
}
if (mClothesChangeWaitTimer == 0 &&
- (temp != mSwordModel || i_checkNoResetFlg2(FLG2_STATUS_WINDOW_DRAW))) {
+ (temp != mSwordModel || i_checkNoResetFlg2(FLG2_STATUS_WINDOW_DRAW)))
+ {
if (temp != mSwordModel) {
mSwordChangeWaitTimer = 5;
}
@@ -12385,14 +12350,14 @@ void daAlink_c::playerInit() {
dCcD_Cyl* cyl1 = field_0x850;
dCcD_Cyl* cyl2 = field_0xC04;
for (i = 0; i < 3; i++, cyl1++, cyl2++) {
- cyl1->Set(*(dCcD_SrcCyl*)l_cylSrc);
+ cyl1->Set(l_cylSrc);
cyl1->SetStts(&field_0x814);
cyl1->OnTgNoConHit();
cyl1->SetTgShieldFrontRangeYAngle(&field_0x306c);
cyl1->SetTgHitCallback(daAlink_tgHitCallback);
cyl1->SetCoHitCallback(daAlink_coHitCallback);
- cyl2->Set(*(dCcD_SrcCyl*)l_cylSrc);
+ cyl2->Set(l_cylSrc);
cyl2->SetStts(&field_0x814);
cyl2->OffCoSetBit();
cyl2->SetTgMtrl(3);
@@ -12402,7 +12367,7 @@ void daAlink_c::playerInit() {
}
field_0x850[2].SetH(lit_14955);
field_0x850[1].SetH(lit_14955);
- field_0xFB8.Set(*(dCcD_SrcSph*)l_sphSrc);
+ field_0xFB8.Set(l_sphSrc);
field_0xFB8.SetStts(&field_0x814);
field_0xFB8.StartCAt(current.pos);
@@ -12426,16 +12391,16 @@ void daAlink_c::playerInit() {
field_0x306c = shape_angle.y + mBodyAngle.y;
for (u16 i = 0; i < 3; i++) {
- mAtCps[i].Set(*(dCcD_SrcCps*)l_atCpsSrc);
+ mAtCps[i].Set(l_atCpsSrc);
mAtCps[i].SetStts(&field_0x814);
}
- mGuardAtCps.Set(*(dCcD_SrcCps*)l_atCpsSrc);
+ mGuardAtCps.Set(l_atCpsSrc);
mGuardAtCps.SetStts(&field_0x814);
mGuardAtCps.SetAtType(AT_TYPE_SHIELD_ATTACK);
mGuardAtCps.OnAtNoHitMark();
mGuardAtCps.SetAtHitMark(0);
mGuardAtCps.SetAtAtp(0);
- mAtCyl.Set(*(dCcD_SrcCyl*)l_atCylSrc);
+ mAtCyl.Set(l_atCylSrc);
mAtCyl.SetStts(&field_0x814);
mLinkAcch.Set(this, 3, field_0x18B0);
@@ -12465,9 +12430,9 @@ void daAlink_c::playerInit() {
mUpperAnmHeap[i].createHeap(daPy_anmHeap_c::HEAP_TYPE_3);
}
- mAnmHeap5.createHeap(daPy_anmHeap_c::HEAP_TYPE_1);
- mAnmHeap6.createHeap(daPy_anmHeap_c::HEAP_TYPE_2);
- mAnmHeap7.createHeap(daPy_anmHeap_c::HEAP_TYPE_3);
+ mFaceBtpHeap.createHeap(daPy_anmHeap_c::HEAP_TYPE_1);
+ mFaceBtkHeap.createHeap(daPy_anmHeap_c::HEAP_TYPE_2);
+ mFaceBckHeap.createHeap(daPy_anmHeap_c::HEAP_TYPE_3);
for (u16 i = 0; i < 2; i++) {
mItemHeap[i].setBufferSize(0x13200);
@@ -12612,7 +12577,7 @@ static s32 bgWaitFlg;
/* 80450FD0-80450FD8 -00001 0008+00 2/2 0/0 0/0 .sbss None */
/* 80450FD0 0001+00 data_80450FD0 None */
/* 80450FD1 0007+00 data_80450FD1 None */
-static s8 struct_80450FD0; // init$
+static s8 struct_80450FD0; // init$
#pragma push
#pragma force_active on
@@ -12658,7 +12623,8 @@ int daAlink_c::create() {
BOOL enteringCity = false;
// Stage: City Room: Entrance Layer: 0
if (checkStageName("D_MN07") && dComIfGp_roomControl_getStayNo() == 0 &&
- dComIfG_play_c::getLayerNo(0) == 0 && current.pos.y > 7500.0f) {
+ dComIfG_play_c::getLayerNo(0) == 0 && current.pos.y > 7500.0f)
+ {
enteringCity = true;
}
@@ -12683,7 +12649,8 @@ int daAlink_c::create() {
}
if ((!checkBossOctaIealRoom() && dComIfGs_Wolf_Change_Check() == 1) || startPoint == -4 ||
- sceneMode == 9) {
+ sceneMode == 9)
+ {
mAttentionInfo.mPosition.set(current.pos.x + cM_ssin(shape_angle.y) * 70.0f,
current.pos.y + 80.0f,
current.pos.z + cM_scos(shape_angle.y) * 70.0f);
@@ -12746,7 +12713,8 @@ int daAlink_c::create() {
(!mLinkAcch.ChkWaterHit() || mLinkAcch.m_wtr.GetHeight() < current.pos.y)) ||
((checkCarryStartLightBallA() || checkCarryStartLightBallB()) &&
!fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchLightBall, NULL)) ||
- (horseStart && i_dComIfGp_getHorseActor() == NULL)) {
+ (horseStart && i_dComIfGp_getHorseActor() == NULL))
+ {
return cPhs_ZERO_e;
}
@@ -12764,10 +12732,12 @@ int daAlink_c::create() {
setWaterY();
if (checkStageName("F_SP102") && fopAcM_GetRoomNo(this) == 0 &&
- dComIfG_play_c::getLayerNo(0) == 4) {
+ dComIfG_play_c::getLayerNo(0) == 4)
+ {
i_onNoResetFlg2(FLG2_UNK_800000);
} else if (checkStageName("F_SP123") && fopAcM_GetRoomNo(this) == 13 &&
- dComIfG_play_c::getLayerNo(0) == 0) {
+ dComIfG_play_c::getLayerNo(0) == 0)
+ {
i_onNoResetFlg2(FLG2_UNK_1000000);
}
@@ -12804,7 +12774,8 @@ int daAlink_c::create() {
setItemActor();
if (dComIfGs_getLastSceneMode() & 0x400000 && !i_checkWolf() && !checkNotHeavyBootsStage() &&
- !horseStart && !enteringCity) {
+ !horseStart && !enteringCity)
+ {
setHeavyBoots(1);
}
@@ -12818,8 +12789,7 @@ int daAlink_c::create() {
1, 1);
}
- fopAcM_create(PROC_MIDNA, prm, &current.pos, fopAcM_GetRoomNo(this), &shape_angle,
- NULL, -1);
+ fopAcM_create(PROC_MIDNA, prm, &current.pos, fopAcM_GetRoomNo(this), &shape_angle, NULL, -1);
checkSetNpcTks(&current.pos, fopAcM_GetRoomNo(this), 1);
if (startPoint == -4 && dComIfGp_TargetWarpPt_get() != -1 && !dComIfGp_TransportWarp_check()) {
@@ -12828,7 +12798,8 @@ int daAlink_c::create() {
if (i_dStage_stagInfo_GetSaveTbl(i_dComIfGp_getStage()->getStagInfo()) == 0x11) {
if (!i_dComIfGs_isItemFirstBit(HYLIA_SHIELD) && !i_dComIfGs_isItemFirstBit(SHIELD) &&
- !i_dComIfGs_isItemFirstBit(WOOD_SHIELD)) {
+ !i_dComIfGs_isItemFirstBit(WOOD_SHIELD))
+ {
i_fopAcM_onSwitch(this, 0x6F);
} else {
i_fopAcM_offSwitch(this, 0x6F);
@@ -12889,7 +12860,9 @@ s32 daAlink_c::setRoomInfo() {
field_0x2fbd = 0;
}
- if (!checkEventRun() && (field_0x2fbd == 1 || field_0x2fbd == 3) && (checkBootsOrArmorHeavy() || mSinkShapeOffset < lit_6040 + field_0x3458)) {
+ if (!checkEventRun() && (field_0x2fbd == 1 || field_0x2fbd == 3) &&
+ (checkBootsOrArmorHeavy() || mSinkShapeOffset < lit_6040 + field_0x3458))
+ {
field_0x2fbd = 2;
}
} else {
@@ -12962,24 +12935,32 @@ asm void daAlink_c::setPolygonSpeed() {
#pragma pop
/* 800A7950-800A79EC 0A2290 009C+00 4/4 0/0 0/0 .text checkWindSpeedOnAngle__9daAlink_cCFv */
+// matches with literals
+#ifdef NONMATCHING
+bool daAlink_c::checkWindSpeedOnAngle() const {
+ if (!checkWindSpeedOnXZ()) {
+ return false;
+ }
+
+ int tmp = cLib_distanceAngleS(field_0x30cc, shape_angle.y);
+ return tmp >= 0x6000 || (tmp >= 0x4000 && checkWindDashAnime());
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daAlink_c::checkWindSpeedOnAngle() const {
+asm bool daAlink_c::checkWindSpeedOnAngle() const {
nofralloc
#include "asm/d/a/d_a_alink/checkWindSpeedOnAngle__9daAlink_cCFv.s"
}
#pragma pop
+#endif
/* 800A79EC-800A7A5C 0A232C 0070+00 2/2 0/0 0/0 .text checkWindSpeedOnAngleAnime__9daAlink_cCFi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::checkWindSpeedOnAngleAnime(int param_0) const {
- nofralloc
-#include "asm/d/a/d_a_alink/checkWindSpeedOnAngleAnime__9daAlink_cCFi.s"
+bool daAlink_c::checkWindSpeedOnAngleAnime(int param_0) const {
+ return checkWindSpeedOnAngle() &&
+ ((field_0x2f8c == 1 || field_0x2f8c == 3) || (param_0 != 0 && field_0x2f8c == 2));
}
-#pragma pop
/* 800A7A5C-800A7ABC 0A239C 0060+00 7/7 0/0 0/0 .text checkDashAnime__9daAlink_cCFv */
bool daAlink_c::checkDashAnime() const {
@@ -13223,7 +13204,7 @@ static u8 lit_4415[12];
#pragma pop
/* 804255A4-804255B0 0522C4 000C+00 3/5 0/0 0/0 .bss l_boarBaseAnime */
-static u8 l_boarBaseAnime[12];
+static Vec l_boarBaseAnime;
/* 804255B0-804255BC 0522D0 000C+00 0/1 0/0 0/0 .bss @4416 */
#pragma push
@@ -13425,7 +13406,9 @@ void daAlink_c::setHandIndex(daAlink_c::daAlink_ANM i_anmID) {
void daAlink_c::setSwordAtCollision(int param_0) {
cXyz sp74;
- if (checkCutDashAnime() && (checkCutDashEnemyHit(mAtCps[0]) || checkCutDashEnemyHit(mAtCps[1]) || checkCutDashEnemyHit(mAtCps[2]))) {
+ if (checkCutDashAnime() && (checkCutDashEnemyHit(mAtCps[0]) ||
+ checkCutDashEnemyHit(mAtCps[1]) || checkCutDashEnemyHit(mAtCps[2])))
+ {
i_onNoResetFlg1(FLG1_UNK_4000000);
}
@@ -13482,9 +13465,12 @@ void daAlink_c::setSwordAtCollision(int param_0) {
/* 800AA5E8-800AA6B4 0A4F28 00CC+00 4/4 0/0 0/0 .text checkNoCollisionCorret__9daAlink_cFv */
BOOL daAlink_c::checkNoCollisionCorret() {
if (i_checkModeFlg(0x12800) || mDemo.getDemoType() == 1 || mProcID == PROC_DOOR_OPEN ||
- (checkEventRun() && (!strcmp(i_dComIfGp_getEventManager().getRunEventName(), "SCENE_EXIT") ||
- (fopAcM_getTalkEventPartner(this) && fopAcM_getTalkEventPartner(this) == getMidnaActor()))) ||
- mEvtInfo.i_checkCommandDoor()) {
+ (checkEventRun() &&
+ (!strcmp(i_dComIfGp_getEventManager().getRunEventName(), "SCENE_EXIT") ||
+ (fopAcM_getTalkEventPartner(this) &&
+ fopAcM_getTalkEventPartner(this) == getMidnaActor()))) ||
+ mEvtInfo.i_checkCommandDoor())
+ {
return true;
}
@@ -13505,7 +13491,9 @@ void daAlink_c::decSwordBlur() {
*/
void daAlink_c::resetWolfAtCollision() {
if (i_checkNoResetFlg0(FLG0_UNK_40)) {
- if (!setSwordHitVibration(&mAtCyl) && !setSwordHitVibration(&field_0x850[0]) && !setSwordHitVibration(&field_0x850[1])) {
+ if (!setSwordHitVibration(&mAtCyl) && !setSwordHitVibration(&field_0x850[0]) &&
+ !setSwordHitVibration(&field_0x850[1]))
+ {
setSwordHitVibration(&field_0x850[2]);
}
@@ -13528,7 +13516,9 @@ void daAlink_c::setWolfAtCollision() {
cXyz sp8;
if (i_checkResetFlg0(RFLG0_UNK_2)) {
- if (!setSwordHitVibration(&mAtCyl) && !setSwordHitVibration(&field_0x850[0]) && !setSwordHitVibration(&field_0x850[1])) {
+ if (!setSwordHitVibration(&mAtCyl) && !setSwordHitVibration(&field_0x850[0]) &&
+ !setSwordHitVibration(&field_0x850[1]))
+ {
setSwordHitVibration(&field_0x850[2]);
}
@@ -13538,10 +13528,9 @@ void daAlink_c::setWolfAtCollision() {
g_dComIfG_gameInfo.play.mCcs.Set(&mAtCyl);
g_dComIfG_gameInfo.play.mCcs.SetMass(&mAtCyl, 1);
} else {
- sp8.set(current.pos.x + field_0x3438 * cM_ssin(shape_angle.y),
- current.pos.y,
- current.pos.z + field_0x3438 * cM_scos(shape_angle.y));
-
+ sp8.set(current.pos.x + field_0x3438 * cM_ssin(shape_angle.y), current.pos.y,
+ current.pos.z + field_0x3438 * cM_scos(shape_angle.y));
+
if (!i_checkNoResetFlg0(FLG0_UNK_40)) {
mAtCyl.StartCAt(sp8);
@@ -13576,7 +13565,8 @@ void daAlink_c::setWolfAtCollision() {
void daAlink_c::resetAtCollision(int param_0) {
if (i_checkNoResetFlg0(FLG0_UNK_40)) {
if (param_0 && !setSwordHitVibration(&mAtCps[0]) && !setSwordHitVibration(&mAtCps[1]) &&
- !setSwordHitVibration(&mAtCps[2]) && !setSwordHitVibration(&mAtCyl)) {
+ !setSwordHitVibration(&mAtCps[2]) && !setSwordHitVibration(&mAtCyl))
+ {
setSwordHitVibration(&field_0xFB8);
}
@@ -13659,7 +13649,7 @@ void daAlink_c::setCollisionPos() {
} else {
sp68.y = sp74.y;
var_f31 = mHeadTopPos.y - sp74.y;
- }
+ }
if (var_f31 < lit_10040) {
sp68.y -= lit_5943 * (lit_10040 - var_f31);
@@ -13718,7 +13708,9 @@ void daAlink_c::setCollision() {
}
dCcD_Cyl* var_r31 = field_0x850;
- if (checkIronBallWaitAnime() || (checkPlayerGuardAndAttack() && !i_checkEndResetFlg1(ERFLG1_UNK_20))) {
+ if (checkIronBallWaitAnime() ||
+ (checkPlayerGuardAndAttack() && !i_checkEndResetFlg1(ERFLG1_UNK_20)))
+ {
BOOL var_r27;
if (field_0x3114 >= 0x3000 && field_0x3114 <= 0x5000) {
var_r27 = 1;
@@ -13734,7 +13726,7 @@ void daAlink_c::setCollision() {
var_r31->OffTgSpShield();
var_r31->OnTgShield();
}
-
+
if (checkHorseRide()) {
var_r31->OffTgShieldFrontRange();
} else {
@@ -13747,7 +13739,7 @@ void daAlink_c::setCollision() {
for (int i = 0; i < 3; i++) {
var_r31->OffTgShield();
var_r31->OffTgSpShield();
-
+
if (i_checkWolf()) {
var_r31->OffTgShieldFrontRange();
} else {
@@ -13825,7 +13817,6 @@ void daAlink_c::setCollision() {
setAtCollision();
}
-
dCcD_Cyl* var_r27_2 = field_0x850;
dCcD_Cyl* var_r26_6 = field_0xC04;
for (int i = 0; i < 3; i++) {
@@ -13883,8 +13874,8 @@ void daAlink_c::setAnimeFrame(f32 frame) {
/* 800AC394-800AC450 0A6CD4 00BC+00 6/6 0/0 0/0 .text
* setFrameCtrl__9daAlink_cFP16daPy_frameCtrl_cUcssff */
-void daAlink_c::setFrameCtrl(daPy_frameCtrl_c* i_ctrl, u8 i_attr, s16 i_start, s16 i_end, f32 i_rate,
- f32 i_frame) {
+void daAlink_c::setFrameCtrl(daPy_frameCtrl_c* i_ctrl, u8 i_attr, s16 i_start, s16 i_end,
+ f32 i_rate, f32 i_frame) {
if (i_checkNoResetFlg0(FLG0_UNDERWATER)) {
if (checkZoraWearAbility()) {
i_rate *= daAlinkHIO_magneBoots_c0::m.mZoraWaterAnmSpeed;
@@ -13920,7 +13911,9 @@ const daAlink_BckData* daAlink_c::getMainBckData(daAlink_c::daAlink_ANM i_anmID)
return &m_mainBckShield[i_anmID];
}
- if ((mEquipItem == 0x103 && i_anmID < 0x15 && i_anmID >= 0x10) || (i_anmID == ANM_SWIM_WAIT && mEquipItem != NO_ITEM)) {
+ if ((mEquipItem == 0x103 && i_anmID < 0x15 && i_anmID >= 0x10) ||
+ (i_anmID == ANM_SWIM_WAIT && mEquipItem != NO_ITEM))
+ {
return &m_mainBckSword[i_anmID - 0x10];
}
@@ -13931,17 +13924,18 @@ const daAlink_BckData* daAlink_c::getMainBckData(daAlink_c::daAlink_ANM i_anmID)
return &m_anmDataTable[i_anmID].field_0x0;
}
-
/* 800AC558-800AC5B4 0A6E98 005C+00 51/51 0/0 2/2 .text
* checkUnderMove0BckNoArc__9daAlink_cCFQ29daAlink_c11daAlink_ANM */
BOOL daAlink_c::checkUnderMove0BckNoArc(daAlink_c::daAlink_ANM i_anmID) const {
- return mUnderAnmHeap[0].checkNoSetArcNo() && mUnderAnmHeap[0].getIdx() == getMainBckData(i_anmID)->m_underID;
+ return mUnderAnmHeap[0].checkNoSetArcNo() &&
+ mUnderAnmHeap[0].getIdx() == getMainBckData(i_anmID)->m_underID;
}
/* 800AC5B4-800AC610 0A6EF4 005C+00 4/4 0/0 0/0 .text
* checkUnderMove1BckNoArc__9daAlink_cCFQ29daAlink_c11daAlink_ANM */
BOOL daAlink_c::checkUnderMove1BckNoArc(daAlink_c::daAlink_ANM i_anmID) const {
- return mUnderAnmHeap[1].checkNoSetArcNo() && mUnderAnmHeap[1].getIdx() == getMainBckData(i_anmID)->m_underID;
+ return mUnderAnmHeap[1].checkNoSetArcNo() &&
+ mUnderAnmHeap[1].getIdx() == getMainBckData(i_anmID)->m_underID;
}
/* 800AC610-800AC738 0A6F50 0128+00 3/3 0/0 0/0 .text
@@ -13954,7 +13948,8 @@ int daAlink_c::getUnderUpperAnime(daAlink_c::daAlink_ANM i_anmID, J3DAnmTransfor
const daAlink_BckData* bck_data = getMainBckData(i_anmID);
i_offNoResetFlg0(FLG0_UNK_2);
- *i_underBck = (J3DAnmTransform*)getAnimeResource(&mUnderAnmHeap[i_anmPackID], bck_data->m_underID, i_bufSize);
+ *i_underBck = (J3DAnmTransform*)getAnimeResource(&mUnderAnmHeap[i_anmPackID],
+ bck_data->m_underID, i_bufSize);
if (*i_underBck != NULL) {
var_r31 = 1;
@@ -13968,7 +13963,8 @@ int daAlink_c::getUnderUpperAnime(daAlink_c::daAlink_ANM i_anmID, J3DAnmTransfor
i_bufSize = (3 - i_anmPackID) * 0x2C00;
}
- *i_upperBck = (J3DAnmTransform*)getAnimeResource(&mUpperAnmHeap[i_anmPackID], bck_data->m_upperID, i_bufSize);
+ *i_upperBck = (J3DAnmTransform*)getAnimeResource(&mUpperAnmHeap[i_anmPackID],
+ bck_data->m_upperID, i_bufSize);
if (*i_upperBck != NULL) {
var_r31 |= 1;
} else {
@@ -14054,8 +14050,8 @@ void daAlink_c::setSingleAnimeBaseSpeed(daAlink_c::daAlink_ANM i_anmID, f32 para
/* 800AD00C-800AD0F4 0A794C 00E8+00 58/58 0/0 0/0 .text
* setSingleAnime__9daAlink_cFQ29daAlink_c11daAlink_ANMffsf */
-int daAlink_c::setSingleAnime(daAlink_c::daAlink_ANM i_anmID, f32 i_rate, f32 i_start,
- s16 i_end, f32 i_morf) {
+int daAlink_c::setSingleAnime(daAlink_c::daAlink_ANM i_anmID, f32 i_rate, f32 i_start, s16 i_end,
+ f32 i_morf) {
J3DAnmTransform* under_bck;
J3DAnmTransform* upper_bck;
@@ -14076,7 +14072,8 @@ int daAlink_c::setSingleAnime(daAlink_c::daAlink_ANM i_anmID, f32 i_rate, f32 i_
* setSingleAnimeParam__9daAlink_cFQ29daAlink_c11daAlink_ANMPC16daAlinkHIO_anm_c */
int daAlink_c::setSingleAnimeParam(daAlink_c::daAlink_ANM i_anmID,
daAlinkHIO_anm_c const* i_anmData) {
- return setSingleAnime(i_anmID, i_anmData->mSpeed, i_anmData->mStartFrame, i_anmData->mEndFrame, i_anmData->mInterpolation);
+ return setSingleAnime(i_anmID, i_anmData->mSpeed, i_anmData->mStartFrame, i_anmData->mEndFrame,
+ i_anmData->mInterpolation);
}
/* 800AD128-800AD170 0A7A68 0048+00 1/1 0/0 0/0 .text
@@ -14144,53 +14141,48 @@ void daAlink_c::allAnimePlay() {
}
/* 800AD2D8-800AD340 0A7C18 0068+00 2/2 0/0 0/0 .text setUpperAnimeMorf__9daAlink_cFf */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setUpperAnimeMorf(f32 param_0) {
- nofralloc
-#include "asm/d/a/d_a_alink/setUpperAnimeMorf__9daAlink_cFf.s"
+void daAlink_c::setUpperAnimeMorf(f32 param_0) {
+ if (param_0 >= FLOAT_LABEL(lit_6108)) {
+ u16 temp_r29;
+ u16 temp_r28;
+
+ if (field_0x2060->getOldFrameRate() > lit_9054 &&
+ field_0x2060->getOldFrameStartJoint() == 0)
+ {
+ temp_r29 = 0;
+ temp_r28 = field_0x30c6;
+ } else {
+ temp_r29 = field_0x30a8;
+ temp_r28 = field_0x30aa;
+ }
+
+ field_0x2060->initOldFrameMorf(param_0, temp_r29, temp_r28);
+ }
}
-#pragma pop
/* 800AD340-800AD374 0A7C80 0034+00 15/15 0/0 0/0 .text setUpperAnimeBase__9daAlink_cFUs
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setUpperAnimeBase(u16 param_0) {
- nofralloc
-#include "asm/d/a/d_a_alink/setUpperAnimeBase__9daAlink_cFUs.s"
+void daAlink_c::setUpperAnimeBase(u16 i_anmResID) {
+ setUpperAnime(i_anmResID, UPPER_2, lit_6040, FLOAT_LABEL(lit_6108), -1, lit_6109);
}
-#pragma pop
/* 800AD374-800AD3A8 0A7CB4 0034+00 7/7 0/0 0/0 .text setUpperAnimeBaseMorf__9daAlink_cFUsf */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setUpperAnimeBaseMorf(u16 param_0, f32 param_1) {
- nofralloc
-#include "asm/d/a/d_a_alink/setUpperAnimeBaseMorf__9daAlink_cFUsf.s"
+void daAlink_c::setUpperAnimeBaseMorf(u16 i_anmResID, f32 i_morf) {
+ setUpperAnime(i_anmResID, UPPER_2, lit_6040, FLOAT_LABEL(lit_6108), -1, i_morf);
}
-#pragma pop
/* 800AD3A8-800AD3D8 0A7CE8 0030+00 18/18 0/0 0/0 .text setUpperAnimeBaseSpeed__9daAlink_cFUsff */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setUpperAnimeBaseSpeed(u16 param_0, f32 param_1, f32 param_2) {
- nofralloc
-#include "asm/d/a/d_a_alink/setUpperAnimeBaseSpeed__9daAlink_cFUsff.s"
+void daAlink_c::setUpperAnimeBaseSpeed(u16 i_anmResID, f32 i_speed, f32 i_morf) {
+ setUpperAnime(i_anmResID, UPPER_2, i_speed, FLOAT_LABEL(lit_6108), -1, i_morf);
}
-#pragma pop
/* 800AD3D8-800AD6F0 0A7D18 0318+00 13/13 0/0 0/0 .text
* setUpperAnime__9daAlink_cFUsQ29daAlink_c13daAlink_UPPERffsf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daAlink_c::setUpperAnime(u16 param_0, daAlink_c::daAlink_UPPER param_1, f32 param_2,
- f32 param_3, s16 param_4, f32 param_5) {
+asm void daAlink_c::setUpperAnime(u16 i_anmResID, daAlink_c::daAlink_UPPER param_1, f32 i_speed,
+ f32 i_startFrame, s16 i_endFrame, f32 i_morf) {
nofralloc
#include "asm/d/a/d_a_alink/setUpperAnime__9daAlink_cFUsQ29daAlink_c13daAlink_UPPERffsf.s"
}
@@ -14198,15 +14190,11 @@ asm void daAlink_c::setUpperAnime(u16 param_0, daAlink_c::daAlink_UPPER param_1,
/* 800AD6F0-800AD724 0A8030 0034+00 21/21 0/0 0/0 .text
* setUpperAnimeParam__9daAlink_cFUsQ29daAlink_c13daAlink_UPPERPC16daAlinkHIO_anm_c */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setUpperAnimeParam(u16 param_0, daAlink_c::daAlink_UPPER param_1,
- daAlinkHIO_anm_c const* param_2) {
- nofralloc
-#include "asm/d/a/d_a_alink/setUpperAnimeParam__9daAlink_cFUsQ29daAlink_c13daAlink_UPPERPC16daAlinkHIO_anm_c.s"
+void daAlink_c::setUpperAnimeParam(u16 i_anmResID, daAlink_c::daAlink_UPPER param_1,
+ daAlinkHIO_anm_c const* i_anmParam) {
+ setUpperAnime(i_anmResID, param_1, i_anmParam->mSpeed, i_anmParam->mStartFrame,
+ i_anmParam->mEndFrame, i_anmParam->mInterpolation);
}
-#pragma pop
/* 800AD724-800AD8F4 0A8064 01D0+00 65/65 0/0 0/0 .text
* resetUpperAnime__9daAlink_cFQ29daAlink_c13daAlink_UPPERf */
@@ -14220,14 +14208,18 @@ asm void daAlink_c::resetUpperAnime(daAlink_c::daAlink_UPPER param_0, f32 param_
#pragma pop
/* 800AD8F4-800AD964 0A8234 0070+00 2/2 0/0 0/0 .text setUnderAnimeMorf__9daAlink_cFf */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setUnderAnimeMorf(f32 param_0) {
- nofralloc
-#include "asm/d/a/d_a_alink/setUnderAnimeMorf__9daAlink_cFf.s"
+void daAlink_c::setUnderAnimeMorf(f32 param_0) {
+ if (param_0 >= FLOAT_LABEL(lit_6108)) {
+ if (field_0x2060->getOldFrameRate() > lit_9054 &&
+ (field_0x2060->getOldFrameStartJoint() == 0 ||
+ field_0x2060->getOldFrameStartJoint() == 1))
+ {
+ field_0x2060->initOldFrameMorf(param_0, 0, 35);
+ } else {
+ field_0x2060->initOldFrameMorf(param_0, 16, 35);
+ }
+ }
}
-#pragma pop
/* 800AD964-800ADAB8 0A82A4 0154+00 5/5 0/0 0/0 .text
* setUnderAnime__9daAlink_cFUsQ29daAlink_c13daAlink_UNDERffsf */
@@ -14235,7 +14227,7 @@ asm void daAlink_c::setUnderAnimeMorf(f32 param_0) {
#pragma optimization_level 0
#pragma optimizewithasm off
asm int daAlink_c::setUnderAnime(u16 param_0, daAlink_c::daAlink_UNDER param_1, f32 param_2,
- f32 param_3, s16 param_4, f32 param_5) {
+ f32 param_3, s16 param_4, f32 param_5) {
nofralloc
#include "asm/d/a/d_a_alink/setUnderAnime__9daAlink_cFUsQ29daAlink_c13daAlink_UNDERffsf.s"
}
@@ -14245,29 +14237,39 @@ asm int daAlink_c::setUnderAnime(u16 param_0, daAlink_c::daAlink_UNDER param_1,
* setUnderAnimeParam__9daAlink_cFUsQ29daAlink_c13daAlink_UNDERPC16daAlinkHIO_anm_c */
int daAlink_c::setUnderAnimeParam(u16 i_resID, daAlink_c::daAlink_UNDER i_packIdx,
daAlinkHIO_anm_c const* i_anmData) {
- return setUnderAnime(i_resID, i_packIdx, i_anmData->mSpeed, i_anmData->mStartFrame, i_anmData->mEndFrame, i_anmData->mInterpolation);
+ return setUnderAnime(i_resID, i_packIdx, i_anmData->mSpeed, i_anmData->mStartFrame,
+ i_anmData->mEndFrame, i_anmData->mInterpolation);
}
/* 800ADAEC-800ADB78 0A842C 008C+00 17/17 0/0 0/0 .text
* resetUnderAnime__9daAlink_cFQ29daAlink_c13daAlink_UNDERf */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::resetUnderAnime(daAlink_c::daAlink_UNDER param_0, f32 param_1) {
- nofralloc
-#include "asm/d/a/d_a_alink/resetUnderAnime__9daAlink_cFQ29daAlink_c13daAlink_UNDERf.s"
+int daAlink_c::resetUnderAnime(daAlink_c::daAlink_UNDER param_0, f32 i_morf) {
+ mNowAnmPackUnder[param_0].setAnmTransform(NULL);
+ mNowAnmPackUnder[param_0].setRatio(FLOAT_LABEL(lit_6108));
+ mUnderAnmHeap[param_0].resetIdx();
+ mUnderFrameCtrl[param_0].init(0);
+ setUnderAnimeMorf(i_morf);
+ return 1;
}
-#pragma pop
/* 800ADB78-800ADC50 0A84B8 00D8+00 34/34 0/0 0/0 .text setOldRootQuaternion__9daAlink_cFsss */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setOldRootQuaternion(s16 param_0, s16 param_1, s16 param_2) {
- nofralloc
-#include "asm/d/a/d_a_alink/setOldRootQuaternion__9daAlink_cFsss.s"
+void daAlink_c::setOldRootQuaternion(s16 param_0, s16 param_1, s16 param_2) {
+ Quaternion quat;
+ Quaternion quat2;
+ Quaternion* old_frame_quat = field_0x2060->getOldFrameQuaternion(0);
+
+ if (param_0 != 0 || param_1 != 0) {
+ JMAEulerToQuat(param_0, param_1, 0, &quat);
+ quat2 = *old_frame_quat;
+ mDoMtx_QuatConcat(&quat, &quat2, old_frame_quat);
+ }
+
+ if (param_2 != 0) {
+ JMAEulerToQuat(0, 0, param_2, &quat);
+ quat2 = *old_frame_quat;
+ mDoMtx_QuatConcat(&quat, &quat2, old_frame_quat);
+ }
}
-#pragma pop
/* 800ADC50-800ADCEC 0A8590 009C+00 2/2 0/0 0/0 .text checkAtnLeftAnime__9daAlink_cFv */
BOOL daAlink_c::checkAtnLeftAnime() {
@@ -14366,6 +14368,38 @@ asm void daAlink_c::setFaceBtp(u16 param_0, int param_1, u16 param_2) {
#pragma pop
/* 800AF7D0-800AF8A0 0AA110 00D0+00 6/6 0/0 0/0 .text setFaceBtk__9daAlink_cFUsiUs */
+// swapped instructions
+#ifdef NONMATCHING
+void daAlink_c::setFaceBtk(u16 i_resID, int param_1, u16 i_arcNo) {
+ int var_r4;
+ u16 arc_no;
+ u16 res_id;
+
+ res_id = i_resID;
+ var_r4 = param_1;
+ arc_no = i_arcNo;
+
+ setIdxMask(&arc_no, &res_id);
+
+ J3DAnmTextureSRTKey* btk;
+ if (arc_no != 0xFFFF) {
+ btk = (J3DAnmTextureSRTKey*)mFaceBtkHeap.loadDataDemoRID(res_id, arc_no);
+ i_offNoResetFlg1(FLG1_UNK_2000);
+ } else if (var_r4 != 0) {
+ btk = (J3DAnmTextureSRTKey*)mFaceBtkHeap.loadDataPriIdx(res_id);
+ } else {
+ btk = (J3DAnmTextureSRTKey*)mFaceBtkHeap.loadDataIdx(res_id);
+ }
+
+ if (btk != NULL) {
+ mpFaceBtk = btk;
+ mpFaceBtk->searchUpdateMaterialID(field_0x06c0);
+ field_0x06c0->entryTexMtxAnimator(mpFaceBtk);
+ daAlink_matAnm_c::setMorfFrame(3);
+ mpFaceBtk->setFrame(FLOAT_LABEL(lit_6108));
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -14374,6 +14408,7 @@ asm void daAlink_c::setFaceBtk(u16 param_0, int param_1, u16 param_2) {
#include "asm/d/a/d_a_alink/setFaceBtk__9daAlink_cFUsiUs.s"
}
#pragma pop
+#endif
/* 800AF8A0-800AF9A8 0AA1E0 0108+00 31/31 0/0 0/0 .text
* setFaceBasicTexture__9daAlink_cFQ29daAlink_c13daAlink_FTANM */
@@ -14399,76 +14434,77 @@ asm void daAlink_c::setFaceBasicAnime(daAlink_c::daAlink_ANM param_0) {
/* 800AFAA8-800AFB14 0AA3E8 006C+00 16/16 0/0 0/0 .text
* setFacePriTexture__9daAlink_cFQ29daAlink_c13daAlink_FTANM */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setFacePriTexture(daAlink_c::daAlink_FTANM param_0) {
- nofralloc
-#include "asm/d/a/d_a_alink/setFacePriTexture__9daAlink_cFQ29daAlink_c13daAlink_FTANM.s"
+void daAlink_c::setFacePriTexture(daAlink_c::daAlink_FTANM i_anmID) {
+ setFacePriBtp(getFaceTexData(i_anmID)->m_btpID);
+ setFacePriBtk(getFaceTexData(i_anmID)->m_btkID);
}
-#pragma pop
/* 800AFB14-800AFB74 0AA454 0060+00 6/6 0/0 0/0 .text
* setFacePriAnime__9daAlink_cFQ29daAlink_c11daAlink_ANM */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setFacePriAnime(daAlink_c::daAlink_ANM param_0) {
- nofralloc
-#include "asm/d/a/d_a_alink/setFacePriAnime__9daAlink_cFQ29daAlink_c11daAlink_ANM.s"
+void daAlink_c::setFacePriAnime(daAlink_c::daAlink_ANM i_anmID) {
+ const daAlink_AnmData* anm_data = getAnmData(i_anmID);
+
+ setFacePriTexture((daAlink_FTANM)anm_data->m_faceTexID);
+ setFacePriBck(anm_data->m_faceBckID);
}
-#pragma pop
/* 800AFB74-800AFBD0 0AA4B4 005C+00 1/1 0/0 0/0 .text resetFacePriBck__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::resetFacePriBck() {
- nofralloc
-#include "asm/d/a/d_a_alink/resetFacePriBck__9daAlink_cFv.s"
+void daAlink_c::resetFacePriBck() {
+ if (!mFaceBckHeap.checkNoSetPriIdx()) {
+ mFaceBckHeap.resetPriIdx();
+ u16 bck_idx = mFaceBckHeap.getIdx();
+
+ if (bck_idx == 0xFFFF) {
+ bck_idx = 0xDF;
+ }
+
+ mFaceBckHeap.resetIdx();
+ setFaceBasicBck(bck_idx);
+ }
}
-#pragma pop
/* 800AFBD0-800AFC2C 0AA510 005C+00 1/1 0/0 0/0 .text resetFacePriBtp__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::resetFacePriBtp() {
- nofralloc
-#include "asm/d/a/d_a_alink/resetFacePriBtp__9daAlink_cFv.s"
+void daAlink_c::resetFacePriBtp() {
+ if (!mFaceBtpHeap.checkNoSetPriIdx()) {
+ mFaceBtpHeap.resetPriIdx();
+ u16 btp_idx = mFaceBtpHeap.getIdx();
+
+ if (btp_idx == 0xFFFF) {
+ btp_idx = 0x3DF;
+ }
+
+ mFaceBtpHeap.resetIdx();
+ setFaceBasicBtp(btp_idx);
+ }
}
-#pragma pop
/* 800AFC2C-800AFC88 0AA56C 005C+00 1/1 0/0 0/0 .text resetFacePriBtk__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::resetFacePriBtk() {
- nofralloc
-#include "asm/d/a/d_a_alink/resetFacePriBtk__9daAlink_cFv.s"
+void daAlink_c::resetFacePriBtk() {
+ if (!mFaceBtkHeap.checkNoSetPriIdx()) {
+ mFaceBtkHeap.resetPriIdx();
+ u16 btk_idx = mFaceBtkHeap.getIdx();
+
+ if (btk_idx == 0xFFFF) {
+ btk_idx = 0x379;
+ }
+
+ mFaceBtkHeap.resetIdx();
+ setFaceBasicBtk(btk_idx);
+ }
}
-#pragma pop
/* 800AFC88-800AFCBC 0AA5C8 0034+00 1/1 0/0 0/0 .text resetFacePriTexture__9daAlink_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::resetFacePriTexture() {
- nofralloc
-#include "asm/d/a/d_a_alink/resetFacePriTexture__9daAlink_cFv.s"
+void daAlink_c::resetFacePriTexture() {
+ resetFacePriBtp();
+ resetFacePriBtk();
}
-#pragma pop
/* 800AFCBC-800AFCF0 0AA5FC 0034+00 7/7 0/0 0/0 .text resetFacePriAnime__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::resetFacePriAnime() {
- nofralloc
-#include "asm/d/a/d_a_alink/resetFacePriAnime__9daAlink_cFv.s"
+void daAlink_c::resetFacePriAnime() {
+ resetFacePriTexture();
+ resetFacePriBck();
}
-#pragma pop
/* 800AFCF0-800B0098 0AA630 03A8+00 2/2 0/0 0/0 .text playFaceTextureAnime__9daAlink_cFv
*/
@@ -14510,14 +14546,27 @@ asm s16 daAlink_c::getGroundAngle(cBgS_PolyInfo* param_0, s16 param_1) {
/* 800B0150-800B01FC 0AAA90 00AC+00 1/1 0/0 0/0 .text getRoofAngle__9daAlink_cFP13cBgS_PolyInfos
*/
+// matches with cM3dGPla vtable data
+#ifdef NONMATCHING
+s16 daAlink_c::getRoofAngle(cBgS_PolyInfo* param_0, s16 param_1) {
+ cM3dGPla plane;
+
+ if (!dComIfG_Bgsp().GetTriPla(*param_0, &plane) || !dComIfG_Bgsp().ChkPolySafe(*param_0)) {
+ return 0;
+ }
+
+ return fopAcM_getPolygonAngle(&plane, param_1) + 0x8000;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daAlink_c::getRoofAngle(cBgS_PolyInfo* param_0, s16 param_1) {
+asm s16 daAlink_c::getRoofAngle(cBgS_PolyInfo* param_0, s16 param_1) {
nofralloc
#include "asm/d/a/d_a_alink/getRoofAngle__9daAlink_cFP13cBgS_PolyInfos.s"
}
#pragma pop
+#endif
/* 800B01FC-800B02BC 0AAB3C 00C0+00 2/2 0/0 0/0 .text
* getWallEdgePos__9daAlink_cFRC4cXyzP8cM3dGPlaP8cM3dGPlaP4cXyzi */
@@ -14810,7 +14859,8 @@ void daAlink_c::setStickData() {
if (checkEventRun() && mProcID != PROC_GRASS_WHISTLE_WAIT && mProcID != PROC_WOLF_DIG_THROUGH &&
mProcID != PROC_GOAT_CATCH && mProcID != PROC_WOLF_GANON_CATCH &&
- mProcID != PROC_TOOL_DEMO && (mProcID != PROC_METAMORPHOSE || mFallVoiceInit == 0)) {
+ mProcID != PROC_TOOL_DEMO && (mProcID != PROC_METAMORPHOSE || mFallVoiceInit == 0))
+ {
u32 demoMode = mDemo.getDemoMode();
if (checkDemoMoveMode(demoMode)) {
@@ -14857,7 +14907,8 @@ void daAlink_c::setStickData() {
bool usingFishRod = false;
if (checkFishingRodAndLureItem() && mItemAcKeep.getActor() != NULL &&
- (checkCanoeRide() || mProcID == PROC_FISHING_CAST)) {
+ (checkCanoeRide() || mProcID == PROC_FISHING_CAST))
+ {
usingFishRod = true;
}
@@ -14877,16 +14928,16 @@ void daAlink_c::setStickData() {
if (i_checkMagneBootsOn()) {
if (field_0x2fb9 == 1 ||
- (field_0x2fb9 == 0 && field_0x3114 != -0x8000 && field_0x3114 <= 0x6000)) {
+ (field_0x2fb9 == 0 && field_0x3114 != -0x8000 && field_0x3114 <= 0x6000))
+ {
field_0x2fb9 = 1;
} else {
field_0x2fb9 = 2;
}
- if ((field_0x2fb9 == 1 &&
- (field_0x3114 > 0x6000 || field_0x3114 == -0x8000)) ||
- (field_0x2fb9 == 2 && field_0x3114 != -0x8000 &&
- field_0x3114 < 0x4000)) {
+ if ((field_0x2fb9 == 1 && (field_0x3114 > 0x6000 || field_0x3114 == -0x8000)) ||
+ (field_0x2fb9 == 2 && field_0x3114 != -0x8000 && field_0x3114 < 0x4000))
+ {
field_0x2fe2 = getMagneBootsLocalAngleY(field_0x2fe2, 0) + 0x8000;
} else {
field_0x2fe2 = getMagneBootsLocalAngleY(field_0x2fe2, field_0x2fb9);
@@ -14939,7 +14990,9 @@ void daAlink_c::setStickData() {
mItemButton |= BTN_R;
}
- if (checkHeavyStateOn(1, 1) && (!checkBootsOrArmorHeavy() || !i_checkNoResetFlg0(FLG0_UNDERWATER))) {
+ if (checkHeavyStateOn(1, 1) &&
+ (!checkBootsOrArmorHeavy() || !i_checkNoResetFlg0(FLG0_UNDERWATER)))
+ {
if (i_checkWolf() && checkHeavyStateOn(1, 0) && mSinkShapeOffset < -30.0f) {
mHeavySpeedMultiplier = daAlinkHIO_magneBoots_c0::m.mInputFactor * 0.4f;
} else {
@@ -14953,8 +15006,9 @@ void daAlink_c::setStickData() {
mHeavySpeedMultiplier = daAlinkHIO_magneBoots_c0::m.mWaterInputFactor;
}
field_0x33a8 *= mHeavySpeedMultiplier;
- } else if ((i_checkWolf() &&
- field_0x2fbc == 11 && checkWaterPolygonUnder()) || field_0x2fbb == 11) {
+ } else if ((i_checkWolf() && field_0x2fbc == 11 && checkWaterPolygonUnder()) ||
+ field_0x2fbb == 11)
+ {
i_onNoResetFlg0(FLG0_UNK_40000000);
field_0x33a8 *= daAlinkHIO_wolf_c0::m.mUnderwaterInputRate;
mHeavySpeedMultiplier = daAlinkHIO_wolf_c0::m.mUnderwaterInputRate;
@@ -15038,14 +15092,19 @@ void daAlink_c::setBStatus(u8 status) {
}
/* 800B32B0-800B3358 0ADBF0 00A8+00 2/2 0/0 0/0 .text checkAtnWaitAnime__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm BOOL daAlink_c::checkAtnWaitAnime() {
- nofralloc
-#include "asm/d/a/d_a_alink/checkAtnWaitAnime__9daAlink_cFv.s"
+BOOL daAlink_c::checkAtnWaitAnime() {
+ if ((mTargetedActor != NULL &&
+ (checkEnemyGroup(mTargetedActor) || checkGoatCatchActor(mTargetedActor) ||
+ fopAcM_GetName(mTargetedActor) == PROC_CROD ||
+ fopAcM_GetName(mTargetedActor) == PROC_BOOMERANG)) ||
+ (checkGrabAnimeUp() || checkGrabAnimeSide() || mDemo.getDemoMode() == 0x17 ||
+ checkGoatStopGame()))
+ {
+ return true;
+ }
+
+ return false;
}
-#pragma pop
/* 800B3358-800B33E4 0ADC98 008C+00 2/2 0/0 0/0 .text
* setTiredVoice__9daAlink_cFP16daPy_frameCtrl_c */
@@ -15060,14 +15119,16 @@ void daAlink_c::setTiredVoice(daPy_frameCtrl_c* i_frameCtrl) {
}
/* 800B33E4-800B3494 0ADD24 00B0+00 4/4 0/0 0/0 .text checkRestHPAnime__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::checkRestHPAnime() {
- nofralloc
-#include "asm/d/a/d_a_alink/checkRestHPAnime__9daAlink_cFv.s"
+BOOL daAlink_c::checkRestHPAnime() {
+ if (!checkPlayerGuard() && (checkNoUpperAnime() || checkHorseTiredAnime()) &&
+ mTargetedActor == NULL && !checkWindSpeedOnAngle() &&
+ ((!checkPlayerDemoMode() && i_dComIfGs_getLife() <= 4) || mDemo.getDemoMode() == 0x12))
+ {
+ return true;
+ }
+
+ return false;
}
-#pragma pop
/* 800B3494-800B3500 0ADDD4 006C+00 44/44 0/0 0/0 .text getDirectionFromAngle__9daAlink_cFs */
int daAlink_c::getDirectionFromAngle(s16 angle) {
@@ -15119,6 +15180,18 @@ asm bool daAlink_c::setShapeAngleToAtnActor(int param_0) {
/* 800B3844-800B3904 0AE184 00C0+00 9/9 0/0 0/0 .text initServiceWaitTime__9daAlink_cFv
*/
+// matches with literals
+#ifdef NONMATCHING
+void daAlink_c::initServiceWaitTime() {
+ field_0x30ca = cM_rndF(150.0f) + 300.0f;
+
+ if (i_checkWolf()) {
+ field_0x30ca >>= 2; // divide by 4
+ } else if (i_checkReinRide()) {
+ field_0x30ca *= 0.75f;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -15127,6 +15200,7 @@ asm void daAlink_c::initServiceWaitTime() {
#include "asm/d/a/d_a_alink/initServiceWaitTime__9daAlink_cFv.s"
}
#pragma pop
+#endif
/* 800B3904-800B3924 0AE244 0020+00 50/50 0/0 0/0 .text checkZeroSpeedF__9daAlink_cCFv */
bool daAlink_c::checkZeroSpeedF() const {
@@ -15144,14 +15218,25 @@ asm void daAlink_c::setNormalSpeedF(f32 param_0, f32 param_1) {
#pragma pop
/* 800B3F2C-800B3FD4 0AE86C 00A8+00 2/2 0/0 0/0 .text getStickAngleDistanceRate__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::getStickAngleDistanceRate() {
- nofralloc
-#include "asm/d/a/d_a_alink/getStickAngleDistanceRate__9daAlink_cFv.s"
+f32 daAlink_c::getStickAngleDistanceRate() {
+ f32 rate;
+
+ if (abs((s16)(mPrevStickAngle - mStickAngle)) > 0x1000) {
+ rate = cM_scos(field_0x2fe2 - current.angle.y);
+
+ if (mNormalSpeed > lit_5943 * field_0x594) {
+ if (rate < lit_9652) {
+ rate = lit_9652;
+ }
+ } else if (rate < FLOAT_LABEL(lit_6108)) {
+ rate = FLOAT_LABEL(lit_6108);
+ }
+ } else {
+ rate = lit_6040;
+ }
+
+ return rate;
}
-#pragma pop
/* 800B3FD4-800B444C 0AE914 0478+00 3/3 0/0 0/0 .text setSpeedAndAngleNormal__9daAlink_cFv */
#pragma push
@@ -15177,7 +15262,9 @@ asm void daAlink_c::setSpeedAndAngleAtn() {
/* 800B477C-800B47B4 0AF0BC 0038+00 2/2 0/0 0/0 .text
* checkRequestTalkActor__9daAlink_cFP10dAttList_cP10fopAc_ac_c */
int daAlink_c::checkRequestTalkActor(dAttList_c* param_0, fopAc_ac_c* param_1) {
- if (param_0 != NULL && (param_0->mType == 3 || (param_0->mType == 1 && mTargetedActor == param_1))) {
+ if (param_0 != NULL &&
+ (param_0->mType == 3 || (param_0->mType == 1 && mTargetedActor == param_1)))
+ {
return true;
}
@@ -15238,7 +15325,8 @@ BOOL daAlink_c::notTalk() {
(i_checkMagneBootsOn() && !cBgW_CheckBGround(mMagneBootsTopVec.y))) ||
!i_checkModeFlg(MODE_SWIMMING | MODE_ROPE_WALK | MODE_VINE_CLIMB | MODE_UNK_800 |
MODE_RIDING | MODE_NO_COLLISION | MODE_CLIMB | MODE_JUMP) &&
- !safe_poly) {
+ !safe_poly)
+ {
return true;
}
return false;
@@ -15257,7 +15345,7 @@ BOOL daAlink_c::setTalkStatus() {
if (field_0x27f4->mAttentionInfo.mFlags & 0x2000000) {
return 0;
}
-
+
if (field_0x27f4->mAttentionInfo.mFlags & 0x800000) {
setDoStatus(0x3B);
} else if (field_0x27f4->mAttentionInfo.mFlags & 0x20000000) {
@@ -15370,15 +15458,20 @@ BOOL daAlink_c::checkLandAction(int param_0) {
f32 temp_f31 = lit_8782 * (mFallHeight - current.pos.y);
int temp_r3 = getDirectionFromCurrentAngle();
int temp_r27 = getDirectionFromAngle(current.angle.y - shape_angle.y);
- BOOL var_r29 = field_0x33a8 > lit_14064 && temp_r27 != 1 && !checkGrabAnime() && mProcID != PROC_CUT_HEAD && temp_r3 == DIR_FORWARD;
+ BOOL var_r29 = field_0x33a8 > lit_14064 && temp_r27 != 1 && !checkGrabAnime() &&
+ mProcID != PROC_CUT_HEAD && temp_r3 == DIR_FORWARD;
- if ((param_0 || temp_f31 >= daAlinkHIO_damFall_c0::m.mMinRollHeight) && temp_f31 < daAlinkHIO_damFall_c0::m.mMaxRollHeight && var_r29) {
+ if ((param_0 || temp_f31 >= daAlinkHIO_damFall_c0::m.mMinRollHeight) &&
+ temp_f31 < daAlinkHIO_damFall_c0::m.mMaxRollHeight && var_r29)
+ {
if (temp_r27 == DIR_FORWARD) {
procFrontRollInit();
} else {
procSideRollInit(temp_r27);
}
- } else if (checkNoLandDamageSlidePolygon() || temp_f31 < daAlinkHIO_damFall_c0::m.mSmallDmgHeight) {
+ } else if (checkNoLandDamageSlidePolygon() ||
+ temp_f31 < daAlinkHIO_damFall_c0::m.mSmallDmgHeight)
+ {
if (param_0) {
procLandDamageInit(0);
} else if (var_r29 && field_0x30f0 > 0x32) {
@@ -15387,7 +15480,9 @@ BOOL daAlink_c::checkLandAction(int param_0) {
} else {
procSideRollInit(temp_r27);
}
- } else if (checkInputOnR() && temp_r27 == DIR_FORWARD && temp_r3 == DIR_FORWARD && mNormalSpeed > lit_7808) {
+ } else if (checkInputOnR() && temp_r27 == DIR_FORWARD && temp_r3 == DIR_FORWARD &&
+ mNormalSpeed > lit_7808)
+ {
if (mNormalSpeed > daAlinkHIO_move_c0::m.mMaxSpeed) {
mNormalSpeed = daAlinkHIO_move_c0::m.mMaxSpeed;
}
@@ -15398,7 +15493,7 @@ BOOL daAlink_c::checkLandAction(int param_0) {
field_0x2f9d = 4;
resetBasAnime();
seStartMapInfo(0x30001);
-
+
f32 tmp_0 = FLOAT_LABEL(lit_6108);
dComIfGp_getVibration().StartShock(1, 15, cXyz(tmp_0, lit_6040, tmp_0));
} else {
@@ -15507,16 +15602,38 @@ void daAlink_c::setFastShotTimer() {
}
/* 800B7190-800B71EC 0B1AD0 005C+00 9/9 0/0 0/0 .text cancelItemUseQuake__9daAlink_cFi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::cancelItemUseQuake(int param_0) {
- nofralloc
-#include "asm/d/a/d_a_alink/cancelItemUseQuake__9daAlink_cFi.s"
+void daAlink_c::cancelItemUseQuake(int param_0) {
+ if (i_checkNoResetFlg3(FLG3_UNK_4) && (param_0 != 0 || mProcID != PROC_HOOKSHOT_FLY)) {
+ i_offNoResetFlg3(FLG3_UNK_4);
+ dComIfGp_getVibration().StopQuake(31);
+ }
}
-#pragma pop
/* 800B71EC-800B72E4 0B1B2C 00F8+00 6/6 0/0 0/0 .text cancelUpperItemReadyAnime__9daAlink_cFi */
+// matches with literals
+#ifdef NONMATCHING
+int daAlink_c::cancelUpperItemReadyAnime(int param_0) {
+ if ((i_dComIfGp_getDoStatus() == 0x12 || param_0 != 0) &&
+ ((param_0 == 0 && doTrigger()) ||
+ (checkCanoeSlider() &&
+ (subjectCancelTrigger() || i_checkEndResetFlg1(ERFLG1_UNK_20000000)))))
+ {
+ seStartSystem(0x6F);
+
+ if (mEquipItem == IRONBALL) {
+ field_0x3018 = 8;
+ procIronBallReturnInit();
+ } else {
+ resetUpperAnime(UPPER_2, 3.0f);
+ checkWaitAction();
+ }
+
+ return 1;
+ }
+
+ return 0;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -15525,6 +15642,7 @@ asm int daAlink_c::cancelUpperItemReadyAnime(int param_0) {
#include "asm/d/a/d_a_alink/cancelUpperItemReadyAnime__9daAlink_cFi.s"
}
#pragma pop
+#endif
/* 800B72E4-800B7390 0B1C24 00AC+00 8/8 0/0 0/0 .text checkItemActorPointer__9daAlink_cFv
*/
@@ -15581,7 +15699,9 @@ void daAlink_c::checkItemButtonChange() {
u8 temp_r0;
for (u8 i = 0; i < 2; i++) {
temp_r0 = (i + 1) % 2;
- if (mEquipItem == dComIfGp_getSelectItem(i) && (mEquipItem != dComIfGp_getSelectItem(temp_r0) || mSelectItemId != temp_r0)) {
+ if (mEquipItem == dComIfGp_getSelectItem(i) &&
+ (mEquipItem != dComIfGp_getSelectItem(temp_r0) || mSelectItemId != temp_r0))
+ {
mSelectItemId = i;
}
}
@@ -15621,9 +15741,11 @@ int daAlink_c::orderTalk(int i_checkZTalk) {
return 0;
}
- if ((i_dComIfGp_getDoStatus() == 0x1C || i_dComIfGp_getDoStatus() == 0x1B || i_dComIfGp_getDoStatus() == 0x80 ||
- i_dComIfGp_getDoStatus() == 0x3B || i_dComIfGp_getDoStatus() == 0x3C || i_dComIfGp_getDoStatus() == 0x8) &&
- talkTrigger()) {
+ if ((i_dComIfGp_getDoStatus() == 0x1C || i_dComIfGp_getDoStatus() == 0x1B ||
+ i_dComIfGp_getDoStatus() == 0x80 || i_dComIfGp_getDoStatus() == 0x3B ||
+ i_dComIfGp_getDoStatus() == 0x3C || i_dComIfGp_getDoStatus() == 0x8) &&
+ talkTrigger())
+ {
fopAcM_orderTalkEvent(this, field_0x27f4, 0, 0);
return 1;
}
@@ -15685,8 +15807,7 @@ asm int daAlink_c::orderZTalk() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm int daAlink_c::checkNormalAction(){
- nofralloc
+asm int daAlink_c::checkNormalAction(){nofralloc
#include "asm/d/a/d_a_alink/checkNormalAction__9daAlink_cFv.s"
}
#pragma pop
@@ -15734,12 +15855,14 @@ asm BOOL daAlink_c::checkMoveDoAction() {
#ifdef NONMATCHING
BOOL daAlink_c::checkSideRollAction(int param_0) {
if (checkNotJumpSinkLimit() || checkHeavyStateOn(1, 1) || checkInputOnR() ||
- checkCutBackState()) {
+ checkCutBackState())
+ {
return false;
} else {
if (mTargetedActor != NULL) {
if (checkEnemyGroup(mTargetedActor) &&
- mTargetedActor->current.pos.abs2XZ(current.pos) <= lit_6237) {
+ mTargetedActor->current.pos.abs2XZ(current.pos) <= lit_6237)
+ {
return procSideRollInit(param_0);
} else {
return procTurnMoveInit(param_0);
@@ -15764,7 +15887,8 @@ asm BOOL daAlink_c::checkSideRollAction(int param_0) {
/* 800B9254-800B92D0 0B3B94 007C+00 35/35 0/0 0/0 .text checkNoUpperAnime__9daAlink_cCFv
*/
BOOL daAlink_c::checkNoUpperAnime() const {
- return checkNoSetUpperAnime() || checkSwimMoveHandAnime() || checkWindDashAnime() || checkSwordTwirlAnime() || checkKandelaarEquipAnime();
+ return checkNoSetUpperAnime() || checkSwimMoveHandAnime() || checkWindDashAnime() ||
+ checkSwordTwirlAnime() || checkKandelaarEquipAnime();
}
/* 800B92D0-800B92F8 0B3C10 0028+00 1/1 0/0 0/0 .text checkOneHandItemEquipAnime__9daAlink_cCFv */
@@ -15820,8 +15944,8 @@ void daAlink_c::swordUnequip() {
u16 anm_id = i_checkReinRide() ? (u16)0x261 : (u16)0x255;
- setUpperAnime(anm_id, UPPER_2, anm_speed,
- daAlinkHIO_cut_c0::m.mUnequipAnm.mStartFrame, daAlinkHIO_cut_c0::m.mUnequipAnm.mEndFrame,
+ setUpperAnime(anm_id, UPPER_2, anm_speed, daAlinkHIO_cut_c0::m.mUnequipAnm.mStartFrame,
+ daAlinkHIO_cut_c0::m.mUnequipAnm.mEndFrame,
daAlinkHIO_cut_c0::m.mUnequipAnm.mInterpolation);
setFacePriTexture(FTANM_UNK_2D);
setFaceBck(0x15E, 1, 0xFFFF);
@@ -15842,7 +15966,7 @@ void daAlink_c::itemEquip(u16 i_itemID) {
* This handles setting the animation for both equipping and unequipping items
* When `param_1` is positive, it will play the unequip animation
* When `param_1` is negative, it will play the equip animation
- *
+ *
*/
// matches with literals
#ifdef NONMATCHING
@@ -15851,7 +15975,8 @@ void daAlink_c::itemUnequip(u16 i_itemID, f32 i_playSpeed) {
const daAlinkHIO_anm_c* anm_data;
if (i_itemID == BOOMERANG || i_itemID == COPY_ROD || i_itemID == KANTERA ||
- i_itemID == HOOKSHOT || checkBottleItem(i_itemID)) {
+ i_itemID == HOOKSHOT || checkBottleItem(i_itemID))
+ {
anm_id = 0x247;
anm_data = &daAlinkHIO_item_c0::m.mOneHandEquipAnm;
} else if (checkBowAndSlingItem(i_itemID)) {
@@ -15873,7 +15998,8 @@ void daAlink_c::itemUnequip(u16 i_itemID, f32 i_playSpeed) {
anm_speed = anm_data->mSpeed * i_playSpeed;
}
- setUpperAnime(anm_id, UPPER_2, anm_speed, anm_data->mStartFrame, anm_data->mEndFrame, anm_data->mInterpolation);
+ setUpperAnime(anm_id, UPPER_2, anm_speed, anm_data->mStartFrame, anm_data->mEndFrame,
+ anm_data->mInterpolation);
}
#else
#pragma push
@@ -15893,7 +16019,9 @@ bool daAlink_c::checkFastUnequip() {
/* 800B983C-800B994C 0B417C 0110+00 10/10 0/0 0/0 .text allUnequip__9daAlink_cFi */
void daAlink_c::allUnequip(int param_0) {
- if (i_checkNoResetFlg2(FLG2_UNK_1) && param_0 != 0 && !checkCanoeRide() && mEquipItem != KANTERA) {
+ if (i_checkNoResetFlg2(FLG2_UNK_1) && param_0 != 0 && !checkCanoeRide() &&
+ mEquipItem != KANTERA)
+ {
for (u8 i = 0; i < 2; i++) {
if (dComIfGp_getSelectItem(i) == KANTERA) {
mSelectItemId = i;
@@ -15917,17 +16045,20 @@ void daAlink_c::allUnequip(int param_0) {
/* 800B994C-800B9D2C 0B428C 03E0+00 8/8 0/0 0/0 .text checkItemChangeFromButton__9daAlink_cFv */
BOOL daAlink_c::checkItemChangeFromButton() {
if (i_checkModeFlg(4) && !checkEquipAnime() && !checkBoomerangThrowAnime() &&
- !checkCopyRodThrowAnime() && !checkKandelaarSwingAnime() && !checkKandelaarSwingAnime()) {
-
- if (dComIfGs_getSelectEquipSword() != NO_ITEM && !checkNotBattleStage() && !checkCanoeRide() &&
- (!i_checkModeFlg(0x40000) || i_checkEquipHeavyBoots()) && mEquipItem != 0x103 && swordTrigger()) {
+ !checkCopyRodThrowAnime() && !checkKandelaarSwingAnime() && !checkKandelaarSwingAnime())
+ {
+ if (dComIfGs_getSelectEquipSword() != NO_ITEM && !checkNotBattleStage() &&
+ !checkCanoeRide() && (!i_checkModeFlg(0x40000) || i_checkEquipHeavyBoots()) &&
+ mEquipItem != 0x103 && swordTrigger())
+ {
if (i_checkEndResetFlg1(ERFLG1_UNK_40000000)) {
return 0;
}
swordEquip(1);
} else if (checkCanoeRide() && !checkStageName("F_SP103") && !checkCanoeSlider() &&
- !checkFisingRodLure() && swordTrigger()) {
+ !checkFisingRodLure() && swordTrigger())
+ {
itemEquip(0x105);
} else {
u8 i;
@@ -15941,13 +16072,16 @@ BOOL daAlink_c::checkItemChangeFromButton() {
if (doTrigger() && i_dComIfGp_getDoStatus() == 4) {
if (mEquipItem != KANTERA && i_checkNoResetFlg2(FLG2_UNK_1)) {
offKandelaarModel();
- } else if (mSwordFlourishTimer != 0 && mEquipItem == 0x103 && !checkWoodSwordEquip() && !i_checkModeFlg(0x402)) {
+ } else if (mSwordFlourishTimer != 0 && mEquipItem == 0x103 &&
+ !checkWoodSwordEquip() && !i_checkModeFlg(0x402))
+ {
return procSwordUnequipSpInit();
} else {
allUnequip(1);
}
} else if (mEquipItem == NO_ITEM && mThrowBoomerangAcKeep.getActor() == NULL &&
- !checkCanoeRide() && checkNoUpperAnime() && i_checkNoResetFlg2(FLG2_UNK_1)) {
+ !checkCanoeRide() && checkNoUpperAnime() && i_checkNoResetFlg2(FLG2_UNK_1))
+ {
for (i = 0; i < 2; i++) {
if (dComIfGp_getSelectItem(i) == KANTERA) {
mSelectItemId = i;
@@ -15957,9 +16091,14 @@ BOOL daAlink_c::checkItemChangeFromButton() {
itemEquip(KANTERA);
i_onNoResetFlg1(FLG1_UNK_40);
} else if (mEquipItem != 0x103 && mEquipItem != NO_ITEM && mEquipItem != 0x10B &&
- mEquipItem != 0x102 && (!checkCanoeRide() || !checkFisingRodLure())) {
- if (!checkEventRun() || strcmp(i_dComIfGp_getEventManager().getRunEventName(), "ANGER")) {
- if (strcmp(i_dComIfGp_getEventManager().getRunEventName(), "ANGER2") && checkItemSetButton(mEquipItem) == 2) {
+ mEquipItem != 0x102 && (!checkCanoeRide() || !checkFisingRodLure()))
+ {
+ if (!checkEventRun() ||
+ strcmp(i_dComIfGp_getEventManager().getRunEventName(), "ANGER"))
+ {
+ if (strcmp(i_dComIfGp_getEventManager().getRunEventName(), "ANGER2") &&
+ checkItemSetButton(mEquipItem) == 2)
+ {
allUnequip(1);
}
}
@@ -15990,9 +16129,10 @@ BOOL daAlink_c::checkNextActionFromButton() {
}
} else if (!i_checkModeFlg(0x40000)) {
if ((i_checkWolf() && !checkWolfGrabAnime()) ||
- (!i_checkWolf() && getCopyRodControllActor() == NULL && (checkEquipAnime() ||
- i_checkNoResetFlg0(FLG0_UNK_1000000) || checkUpperGuardAnime() ||
- checkIronBallWaitAnime() || checkNoUpperAnime()))) {
+ (!i_checkWolf() && getCopyRodControllActor() == NULL &&
+ (checkEquipAnime() || i_checkNoResetFlg0(FLG0_UNK_1000000) || checkUpperGuardAnime() ||
+ checkIronBallWaitAnime() || checkNoUpperAnime())))
+ {
decideDoStatus();
if (checkNormalAction()) {
@@ -16030,7 +16170,9 @@ BOOL daAlink_c::checkNextActionFromButton() {
/* 800B9F50-800BA09C 0B4890 014C+00 14/14 0/0 0/0 .text checkGroundSpecialMode__9daAlink_cFv */
BOOL daAlink_c::checkGroundSpecialMode() {
- if (mLinkAcch.ChkGroundHit() && !i_checkModeFlg(MODE_PLAYER_FLY) && !i_checkMagneBootsOn() && i_checkEndResetFlg0(ERFLG0_UNK_2)) {
+ if (mLinkAcch.ChkGroundHit() && !i_checkModeFlg(MODE_PLAYER_FLY) && !i_checkMagneBootsOn() &&
+ i_checkEndResetFlg0(ERFLG0_UNK_2))
+ {
return procCoMetamorphoseInit();
}
@@ -16097,12 +16239,18 @@ int daAlink_c::checkNextAction(int param_0) {
}
u32 procID = mProcID;
- if (procID != PROC_MOVE_TURN && (param_0 == 0 || checkInputOnR()) && (procID != PROC_HOOKSHOT_MOVE || checkHookshotWait())) {
+ if (procID != PROC_MOVE_TURN && (param_0 == 0 || checkInputOnR()) &&
+ (procID != PROC_HOOKSHOT_MOVE || checkHookshotWait()))
+ {
if (mTargetedActor != NULL || i_checkAttentionLock()) {
setSpeedAndAngleAtn();
} else if (((!checkUpperReadyThrowAnime() || mFastShotTime != 0) ||
- (checkBoomerangThrowAnime() && (mThrowBoomerangAcKeep.getActor() != NULL || mEquipItem == 0x102 || i_checkNoResetFlg1(FLG1_UNK_2)))) ||
- (checkCopyRodThrowAnime() && (mCopyRodAcKeep.getActor() != NULL || i_checkNoResetFlg1(FLG1_UNK_10000)))) {
+ (checkBoomerangThrowAnime() &&
+ (mThrowBoomerangAcKeep.getActor() != NULL || mEquipItem == 0x102 ||
+ i_checkNoResetFlg1(FLG1_UNK_2)))) ||
+ (checkCopyRodThrowAnime() &&
+ (mCopyRodAcKeep.getActor() != NULL || i_checkNoResetFlg1(FLG1_UNK_10000))))
+ {
setSpeedAndAngleNormal();
}
}
@@ -16124,7 +16272,9 @@ int daAlink_c::checkNextAction(int param_0) {
field_0x594 = daAlinkHIO_move_c0::m.mMaxSpeed;
}
- if (i_checkEndResetFlg0(ERFLG0_UNK_100000) && mLinkAcch.ChkGroundHit() && !i_checkModeFlg(MODE_PLAYER_FLY)) {
+ if (i_checkEndResetFlg0(ERFLG0_UNK_100000) && mLinkAcch.ChkGroundHit() &&
+ !i_checkModeFlg(MODE_PLAYER_FLY))
+ {
return procFloorDownReboundInit();
}
@@ -16166,7 +16316,7 @@ int daAlink_c::checkNextAction(int param_0) {
}
} else {
field_0x2f98 = 4;
-
+
if (checkZeroSpeedF()) {
if (cLib_distanceAngleS(field_0x2fe2, current.angle.y) > 0x7800 && checkInputOnR()) {
ret = procWaitTurnInit();
@@ -16179,13 +16329,17 @@ int daAlink_c::checkNextAction(int param_0) {
} else if (mProcID == PROC_MOVE_TURN && current.angle.y != shape_angle.y) {
ret = procMoveTurnInit(0);
} else if (checkInputOnR() && cLib_distanceAngleS(field_0x2fe2, current.angle.y) > 0x7800) {
- if (speedF / field_0x594 > daAlinkHIO_move_c0::m.mSlideThresholdSpeed && field_0x2fa8 != 8 &&
- !checkGrabAnime() && getDirectionFromAngle(mPrevStickAngle - mStickAngle) == DIR_BACKWARD) {
+ if (speedF / field_0x594 > daAlinkHIO_move_c0::m.mSlideThresholdSpeed &&
+ field_0x2fa8 != 8 && !checkGrabAnime() &&
+ getDirectionFromAngle(mPrevStickAngle - mStickAngle) == DIR_BACKWARD)
+ {
ret = procSlipInit();
} else {
ret = procMoveTurnInit(1);
}
- } else if (checkInputOnR() && getDirectionFromAngle(field_0x2fe2 - current.angle.y) == DIR_BACKWARD) {
+ } else if (checkInputOnR() &&
+ getDirectionFromAngle(field_0x2fe2 - current.angle.y) == DIR_BACKWARD)
+ {
ret = procMoveTurnInit(1);
} else {
ret = procMoveInit();
@@ -16231,7 +16385,7 @@ asm void daAlink_c::setItemAction() {
#pragma pop
/* 800BAF08-800BAF80 0B5848 0078+00 2/2 0/0 0/0 .text checkNextActionFromCrouch__9daAlink_cFi */
-bool daAlink_c::checkNextActionFromCrouch(int param_0) {
+BOOL daAlink_c::checkNextActionFromCrouch(int param_0) {
if (checkNextAction(param_0)) {
if (field_0x2f8c == 1 || field_0x2f8c == 2 || field_0x2f8c == 3) {
field_0x2060->initOldFrameMorf(daAlinkHIO_crouch_c0::m.mStandInterpolation, 0, 0x23);
@@ -16246,7 +16400,8 @@ bool daAlink_c::checkNextActionFromCrouch(int param_0) {
/* 800BAF80-800BB020 0B58C0 00A0+00 18/18 0/0 0/0 .text checkUpperReadyThrowAnime__9daAlink_cCFv
*/
int daAlink_c::checkUpperReadyThrowAnime() const {
- return checkBoomerangAnime() || checkCopyRodAnime() || checkHookshotAnime() || checkIronBallAnime() || checkBowAnime();
+ return checkBoomerangAnime() || checkCopyRodAnime() || checkHookshotAnime() ||
+ checkIronBallAnime() || checkBowAnime();
}
/* 800BB020-800BB084 0B5960 0064+00 2/2 0/0 0/0 .text getBodyAngleXBasePos__9daAlink_cFP4cXyz */
@@ -16302,7 +16457,7 @@ void daAlink_c::setMagicArmorBrk(int param_0) {
mMagicArmorHeadBrk->searchUpdateMaterialID(head_model_data);
head_model_data->entryTevRegAnimator(mMagicArmorHeadBrk);
mMagicArmorHeadBrk->setFrame(FLOAT_LABEL(lit_6108));
-
+
field_0x2fd7 = param_0;
}
@@ -16324,7 +16479,8 @@ BOOL daAlink_c::checkHeavyStateOn(int param_0, int param_1) {
if (!checkEventRun()) {
if ((param_1 != 0 && mSinkShapeOffset < lit_14614) ||
(param_0 != 0 && checkIronBallWaitAnime()) || checkIronBallAnime() ||
- checkMagicArmorHeavy() || getHeavyStateAndBoots()) {
+ checkMagicArmorHeavy() || getHeavyStateAndBoots())
+ {
return true;
}
}
@@ -16333,7 +16489,9 @@ BOOL daAlink_c::checkHeavyStateOn(int param_0, int param_1) {
/* 800BB560-800BB644 0B5EA0 00E4+00 1/0 0/0 0/0 .text setOutPower__9daAlink_cFfsi */
void daAlink_c::setOutPower(f32 param_0, s16 param_1, int param_2) {
- if (!i_checkFmChainGrabAnime() || !checkBossRoom() || fopAcM_GetRoomNo(this) != 50 || !i_checkEquipHeavyBoots()) {
+ if (!i_checkFmChainGrabAnime() || !checkBossRoom() || fopAcM_GetRoomNo(this) != 50 ||
+ !i_checkEquipHeavyBoots())
+ {
field_0x3400 += param_0 * cM_ssin(param_1);
field_0x3404 += param_0 * cM_scos(param_1);
@@ -16443,7 +16601,7 @@ SECTION_SDATA2 static f32 lit_70084 = 2.25f;
#ifdef NONMATCHING
void daAlink_c::posMove() {
cXyz sp108;
-
+
f32 temp_f30 = cM_ssin(shape_angle.y);
f32 temp_f29 = cM_scos(shape_angle.y);
@@ -16456,8 +16614,9 @@ void daAlink_c::posMove() {
s16 var_r26;
if (i_checkModeFlg(MODE_SWIMMING)) {
var_r26 = field_0x3080;
- } else if (!mLinkAcch.ChkGroundHit() || i_checkMagneBootsOn() || (i_checkModeFlg(MODE_PLAYER_FLY) &&
- !checkBoardRide()) || field_0x3174 == 8) {
+ } else if (!mLinkAcch.ChkGroundHit() || i_checkMagneBootsOn() ||
+ (i_checkModeFlg(MODE_PLAYER_FLY) && !checkBoardRide()) || field_0x3174 == 8)
+ {
var_r26 = 0;
} else {
var_r26 = getGroundAngle(&mLinkAcch.m_gnd, current.angle.y);
@@ -16490,7 +16649,8 @@ void daAlink_c::posMove() {
}
if (mProcID == PROC_AUTO_JUMP && checkGrabGlide() &&
- (field_0xC04[0].ChkTgHit() || field_0xC04[1].ChkTgHit() || field_0xC04[2].ChkTgHit())) {
+ (field_0xC04[0].ChkTgHit() || field_0xC04[1].ChkTgHit() || field_0xC04[2].ChkTgHit()))
+ {
speedF *= 0.5f;
}
@@ -16503,16 +16663,22 @@ void daAlink_c::posMove() {
}
BOOL eventRunning = checkEventRun();
- if (!i_checkEquipHeavyBoots() && mLinkAcch.ChkGroundHit() && !i_checkModeFlg(0x40) && !eventRunning) {
+ if (!i_checkEquipHeavyBoots() && mLinkAcch.ChkGroundHit() && !i_checkModeFlg(0x40) &&
+ !eventRunning)
+ {
if (checkLv2MiddleBossBgRide(getMoveBGActorName(mLinkAcch.m_gnd, 0))) {
cM3dGPla plane;
dComIfG_Bgsp().GetTriPla(mLinkAcch.m_gnd, &plane);
f32 temp_f0 = cM_sht2d(cM_atan2s(plane.mNormal.absXZ(), plane.mNormal.y));
- if (temp_f0 >= daAlinkHIO_slide_c0::m.mLV2MinibossFloorWeakSlideAngle && temp_f0 <= daAlinkHIO_slide_c0::m.mLV2MinibossFloorSlideAngle) {
- temp_f0 = ((temp_f0 - daAlinkHIO_slide_c0::m.mLV2MinibossFloorWeakSlideAngle) * daAlinkHIO_slide_c0::m.mLV2MinibossFloorWeakSlideSpeed) /
- (daAlinkHIO_slide_c0::m.mLV2MinibossFloorSlideAngle - daAlinkHIO_slide_c0::m.mLV2MinibossFloorWeakSlideAngle);
+ if (temp_f0 >= daAlinkHIO_slide_c0::m.mLV2MinibossFloorWeakSlideAngle &&
+ temp_f0 <= daAlinkHIO_slide_c0::m.mLV2MinibossFloorSlideAngle)
+ {
+ temp_f0 = ((temp_f0 - daAlinkHIO_slide_c0::m.mLV2MinibossFloorWeakSlideAngle) *
+ daAlinkHIO_slide_c0::m.mLV2MinibossFloorWeakSlideSpeed) /
+ (daAlinkHIO_slide_c0::m.mLV2MinibossFloorSlideAngle -
+ daAlinkHIO_slide_c0::m.mLV2MinibossFloorWeakSlideAngle);
plane.mNormal.y = 0.0f;
plane.mNormal.normalizeZP();
@@ -16528,7 +16694,9 @@ void daAlink_c::posMove() {
if (i_checkNoResetFlg0(FLG0_UNK_100) && mProcID != PROC_SWIM_DIVE) {
current.pos.y = mWaterY;
- } else if (mDemo.getDemoType() == 4 || mProcID == PROC_ELEC_DAMAGE || i_dComIfGp_checkPlayerStatus0(0, 0x10)) {
+ } else if (mDemo.getDemoType() == 4 || mProcID == PROC_ELEC_DAMAGE ||
+ i_dComIfGp_checkPlayerStatus0(0, 0x10))
+ {
speed.y = 0.0f;
} else if (i_checkWolf()) {
if (checkHeavyStateOn(1, 1)) {
@@ -16546,7 +16714,8 @@ void daAlink_c::posMove() {
}
} else if (!i_checkEquipHeavyBoots() && getZoraSwim()) {
speed.y = -var_f31 * cM_ssin(var_r26);
- } else if ((checkBootsOrArmorHeavy() && mProcID != PROC_DEAD) || mProcID == PROC_SWIM_DIVE) {
+ } else if ((checkBootsOrArmorHeavy() && mProcID != PROC_DEAD) || mProcID == PROC_SWIM_DIVE)
+ {
speed.y += mGravity;
if (speed.y < mMaxFallSpeed) {
@@ -16557,7 +16726,9 @@ void daAlink_c::posMove() {
} else if (speed.y < mMaxFallSpeed) {
speed.y += 1.0f;
} else {
- if (checkZoraWearAbility() && mWaterY > current.pos.y + daAlinkHIO_swim_c0::m.mNormalFloatDepth) {
+ if (checkZoraWearAbility() &&
+ mWaterY > current.pos.y + daAlinkHIO_swim_c0::m.mNormalFloatDepth)
+ {
speed.y += daAlinkHIO_swim_c0::m.mZoraFloatDepth;
if (speed.y < 0.0f) {
@@ -16572,7 +16743,9 @@ void daAlink_c::posMove() {
}
}
} else if (!i_checkModeFlg(0x400)) {
- if (checkHeavyStateOn(1, 1) && mProcID != PROC_SPINNER_READY && !i_checkNoResetFlg0(FLG0_UNDERWATER)) {
+ if (checkHeavyStateOn(1, 1) && mProcID != PROC_SPINNER_READY &&
+ !i_checkNoResetFlg0(FLG0_UNDERWATER))
+ {
speed.y += mGravity * 2.25f;
if (speed.y < mMaxFallSpeed * 1.5f) {
@@ -16679,7 +16852,9 @@ void daAlink_c::posMove() {
current.pos.y += temp_f31 - temp_f1;
}
} else if (!eventRunning && (mProcID == PROC_HANG_MOVE || mProcID == PROC_CLIMB_MOVE_SIDE ||
- mProcID == PROC_CLIMB_MOVE_UPDOWN || mProcID == PROC_CLIMB_WAIT || mProcID == PROC_HANG_WAIT)) {
+ mProcID == PROC_CLIMB_MOVE_UPDOWN || mProcID == PROC_CLIMB_WAIT ||
+ mProcID == PROC_HANG_WAIT))
+ {
f32 temp_f31 = field_0x814.GetCCMoveP()->absXZ();
var_r27 = TRUE;
@@ -16696,7 +16871,7 @@ void daAlink_c::posMove() {
if (i_checkModeFlg(MODE_SWIMMING) && i_checkNoResetFlg0(FLG0_UNK_100)) {
cXyz sp84 = current.pos - field_0x3798;
-
+
f32 temp_f3 = sp84.absXZ();
s16 gnd_angle = getGroundAngle(&mLinkAcch.m_wtr, sp84.atan2sX_Z());
temp_f3 *= cM_ssin(gnd_angle);
@@ -16800,7 +16975,9 @@ void daAlink_c::posMove() {
} else if (var_r27) {
cXyz sp9C = cXyz::Zero;
- if (hangMoveBgCheck(shape_angle.y + 0x4000, &sp9C) || hangMoveBgCheck(shape_angle.y - 0x4000, &sp9C)) {
+ if (hangMoveBgCheck(shape_angle.y + 0x4000, &sp9C) ||
+ hangMoveBgCheck(shape_angle.y - 0x4000, &sp9C))
+ {
current.pos.x += sp9C.x;
current.pos.z += sp9C.z;
}
@@ -16846,7 +17023,8 @@ bool daAlink_c::startPeepChange() {
dComIfGs_setTurnRestart(current.pos, shape_angle.y, roomNo, param);
}
- dStage_changeScene(mPeepExitID, FLOAT_LABEL(lit_6108), mode, fopAcM_GetRoomNo(this), shape_angle.y, -1);
+ dStage_changeScene(mPeepExitID, FLOAT_LABEL(lit_6108), mode, fopAcM_GetRoomNo(this),
+ shape_angle.y, -1);
return 1;
}
@@ -16907,7 +17085,9 @@ void daAlink_c::setLastSceneMode(u32* o_mode) {
// matches with literals
#ifdef NONMATCHING
int daAlink_c::startRestartRoom(u32 i_mode, int param_1, int i_dmgAmount, int i_eventRun) {
- if (!i_checkNoResetFlg0(FLG0_UNK_4000) && (i_eventRun != 0 || dComIfGp_event_compulsory(this, NULL, 0xFFFF))) {
+ if (!i_checkNoResetFlg0(FLG0_UNK_4000) &&
+ (i_eventRun != 0 || dComIfGp_event_compulsory(this, NULL, 0xFFFF)))
+ {
if (!checkRestartDead(i_dmgAmount, i_mode == 4)) {
i_onNoResetFlg0(FLG0_UNK_4000);
@@ -16918,21 +17098,25 @@ int daAlink_c::startRestartRoom(u32 i_mode, int param_1, int i_dmgAmount, int i_
u32 tmp = getStartMode();
int start_mode = tmp;
- if ((start_mode != 13 && start_mode != 2 && start_mode != 14) || checkFinalBattle() || field_0x3780.abs(dComIfGs_getRestartRoomPos()) > 0.1f) {
+ if ((start_mode != 13 && start_mode != 2 && start_mode != 14) || checkFinalBattle() ||
+ field_0x3780.abs(dComIfGs_getRestartRoomPos()) > 0.1f)
+ {
start_mode = 0;
}
// event flag 0x2008 = cleared snowpeak ruins
if (!i_dComIfGs_isEventBit(0x2008) && (checkBoardRide() || checkBoardRestart())) {
i_mode = 11;
- } else if (i_checkBoarSingleBattle() || (start_mode == 2 && !checkFinalBattle() && i_mode == 5)) {
+ } else if (i_checkBoarSingleBattle() ||
+ (start_mode == 2 && !checkFinalBattle() && i_mode == 5))
+ {
i_mode = 8;
}
setLastSceneDamage(i_dmgAmount, &i_mode);
u32 params = setParamData(dComIfGs_getRestartRoomNo(), start_mode, param_1, 0);
dStage_restartRoom(params, i_mode, 0);
-
+
if (mProcID != PROC_DEAD) {
seStartSystem(Z2SE_FORCE_BACK);
}
@@ -16957,7 +17141,8 @@ asm int daAlink_c::startRestartRoom(u32 param_0, int param_1, int param_2, int p
/* 800BE26C-800BE2C0 0B8BAC 0054+00 2/2 0/0 0/0 .text checkCoachGuardGame__9daAlink_cFv
*/
BOOL daAlink_c::checkCoachGuardGame() {
- return !i_checkBoarSingleBattle() && fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchCoach, NULL);
+ return !i_checkBoarSingleBattle() &&
+ fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchCoach, NULL);
}
/* 800BE2C0-800BE3E4 0B8C00 0124+00 1/1 0/0 0/0 .text checkRoofRestart__9daAlink_cFv */
@@ -16972,9 +17157,12 @@ void daAlink_c::checkRoofRestart() {
spinner = NULL;
}
- if (mLinkAcch.ChkRoofHit() && (mLinkAcch.ChkGroundHit() ||
- (spinner != NULL && spinner->checkGroundHit() && spinner->getJumpFlg() == 0)) &&
- !i_checkMagneBootsOn() && (mProcID != PROC_CRAWL_START && mProcID != PROC_CRAWL_END && !checkCoachGuardGame())) {
+ if (mLinkAcch.ChkRoofHit() &&
+ (mLinkAcch.ChkGroundHit() ||
+ (spinner != NULL && spinner->checkGroundHit() && spinner->getJumpFlg() == 0)) &&
+ !i_checkMagneBootsOn() &&
+ (mProcID != PROC_CRAWL_START && mProcID != PROC_CRAWL_END && !checkCoachGuardGame()))
+ {
s16 ac_name = getMoveBGActorName(mLinkAcch.m_roof, 1);
if (ac_name == PROC_OBJ_SO || ac_name == PROC_Obj_SCannon) {
return;
@@ -17053,7 +17241,8 @@ int daAlink_c::checkSceneChange(int exitID) {
(i_checkModeFlg(0x40000) || i_checkModeFlg(0x400) || mLinkAcch.ChkGroundHit() ||
mProcID == PROC_DOOR_OPEN || mProcID == PROC_WARP || mProcID == PROC_WOLF_DIG_THROUGH ||
(field_0x3174 == 5 && field_0x33c8 - current.pos.y > 500.0f))) ||
- (mExitID & 0x8000 && i_checkModeFlg(2))) {
+ (mExitID & 0x8000 && i_checkModeFlg(2)))
+ {
if (field_0x3174 == 5 || (mExitID & 0x8000 && mExitDirection == 0xFF)) {
mLinkAcch.i_ClrGroundHit();
}
@@ -17073,7 +17262,8 @@ int daAlink_c::checkSceneChange(int exitID) {
fpoAcM_relativePos(hStop, &current.pos, &sp8);
if (sp8.y >= -200.0f && sp8.y <= hStop->mScale.y + 600.0f &&
- fabsf(sp8.x) <= hStop->mScale.x && fabsf(sp8.z) <= hStop->mScale.z) {
+ fabsf(sp8.x) <= hStop->mScale.x && fabsf(sp8.z) <= hStop->mScale.z)
+ {
return 0;
}
}
@@ -17130,7 +17320,8 @@ int daAlink_c::checkSceneChange(int exitID) {
if (mEvtInfo.i_checkCommandDoor() || mProcID == PROC_WARP || mProcID == WOLF_DIG ||
mProcID == PROC_WOLF_DIG_THROUGH || field_0x3106 != 0 ||
- dComIfGp_event_compulsory(this, NULL, -1)) {
+ dComIfGp_event_compulsory(this, NULL, -1))
+ {
s32 sceneChanged = 0;
if (var_r3) {
@@ -17151,9 +17342,8 @@ int daAlink_c::checkSceneChange(int exitID) {
field_0x2f58 = dPath_GetRoomPath(mExitDirection, fopAcM_GetRoomNo(this));
}
} else {
- sceneChanged =
- dStage_changeSceneExitId(mLinkAcch.m_gnd, exitSpeed, exitMode,
- fopAcM_GetRoomNo(this), shape_angle.y);
+ sceneChanged = dStage_changeSceneExitId(mLinkAcch.m_gnd, exitSpeed, exitMode,
+ fopAcM_GetRoomNo(this), shape_angle.y);
field_0x2f58 = dPath_GetRoomPath(dComIfG_Bgsp().GetRoomPathId(mLinkAcch.m_gnd),
fopAcM_GetRoomNo(this));
}
@@ -17282,13 +17472,14 @@ asm BOOL daAlink_c::checkSightLine(f32 param_0, cXyz* param_1) {
/* 800BF79C-800BF854 0BA0DC 00B8+00 2/2 0/0 0/0 .text setMetamorphoseModel__9daAlink_cFi
*/
void daAlink_c::setMetamorphoseModel(int param_0) {
- J3DAnmTransform* bck = (J3DAnmTransform*)mAnmHeap9.loadDataIdx(param_0 != 0 ? (u16)0x27C : (u16)0x27D);
+ J3DAnmTransform* bck =
+ (J3DAnmTransform*)mAnmHeap9.loadDataIdx(param_0 != 0 ? (u16)0x27C : (u16)0x27D);
JKRHeap* heap = setItemHeap();
J3DModelData* model_data = loadAramBmd(0x31B, 0x6000);
mHeldItemModel = initModel(model_data, 0);
field_0x730.init(bck, 0, 2, lit_6040, 0, -1, false);
-
+
mDoExt_setCurrentHeap(heap);
mEquipItem = 0x106;
field_0x33dc = mUnderFrameCtrl[0].getFrame();
@@ -17359,8 +17550,8 @@ BOOL daAlink_c::setItemModel() {
#ifdef NONMATCHING
BOOL daAlink_c::setItemActor() {
if (mEquipItem == BOOMERANG) {
- fopAc_ac_c* actor = (fopAc_ac_c*)fopAcM_fastCreate(PROC_BOOMERANG, 0, &current.pos,
- -1, NULL, NULL, -1, NULL, NULL);
+ fopAc_ac_c* actor = (fopAc_ac_c*)fopAcM_fastCreate(PROC_BOOMERANG, 0, &current.pos, -1,
+ NULL, NULL, -1, NULL, NULL);
if (actor == NULL) {
deleteEquipItem(FALSE, FALSE);
return 0;
@@ -17372,8 +17563,8 @@ BOOL daAlink_c::setItemActor() {
}
if (mEquipItem == COPY_ROD) {
- fopAc_ac_c* actor = (fopAc_ac_c*)fopAcM_fastCreate(PROC_CROD, 0, &current.pos, -1,
- NULL, NULL, -1, NULL, NULL);
+ fopAc_ac_c* actor = (fopAc_ac_c*)fopAcM_fastCreate(PROC_CROD, 0, &current.pos, -1, NULL,
+ NULL, -1, NULL, NULL);
if (actor == NULL) {
deleteEquipItem(FALSE, FALSE);
return 0;
@@ -17415,7 +17606,8 @@ BOOL daAlink_c::setItemActor() {
if (checkBombItem(mEquipItem)) {
if (checkHorseRide()) {
if (!i_dComIfGp_getHorseActor()->checkNoBombProc() &&
- (mProcID != PROC_HORSE_TURN || !i_checkModeFlg(MODE_DISABLE_ITEMS))) {
+ (mProcID != PROC_HORSE_TURN || !i_checkModeFlg(MODE_DISABLE_ITEMS)))
+ {
mEquipItem = NO_ITEM;
return 1;
}
@@ -17484,13 +17676,14 @@ BOOL daAlink_c::checkMagicArmorWearAbility() const {
J3DModelData* daAlink_c::loadAramBmd(u16 i_resID, u32 i_bufSize) {
JKRArchive* anm_arc = dComIfGp_getAnmArchive();
u8* tmpBuffer = new (0x20) u8[i_bufSize];
-
+
anm_arc->readIdxResource(tmpBuffer, i_bufSize, i_resID);
u32 type = 'BMWR';
JKRArchive::SDIDirEntry* dir = anm_arc->mNodes;
for (int i = 0; i < anm_arc->countDirectory(); i++) {
- if (i_resID >= dir->first_file_index && i_resID < dir->first_file_index + dir->num_entries) {
+ if (i_resID >= dir->first_file_index && i_resID < dir->first_file_index + dir->num_entries)
+ {
type = dir->type;
break;
}
@@ -17511,7 +17704,7 @@ void* daAlink_c::loadAram(u16 i_resID, u32 i_bufSize) {
J3DAnmTevRegKey* daAlink_c::loadAramItemBrk(u16 i_resID, J3DModel* i_model) {
J3DModelData* model_data = i_model->getModelData();
J3DAnmTevRegKey* brk = (J3DAnmTevRegKey*)loadAram(i_resID, 0x400);
-
+
brk->setFrame(FLOAT_LABEL(lit_6108));
brk->searchUpdateMaterialID(model_data);
model_data->entryTevRegAnimator(brk);
@@ -17523,7 +17716,7 @@ J3DAnmTevRegKey* daAlink_c::loadAramItemBrk(u16 i_resID, J3DModel* i_model) {
J3DAnmTextureSRTKey* daAlink_c::loadAramItemBtk(u16 i_resID, J3DModel* i_model) {
J3DModelData* model_data = i_model->getModelData();
J3DAnmTextureSRTKey* btk = (J3DAnmTextureSRTKey*)loadAram(i_resID, 0x400);
-
+
btk->setFrame(FLOAT_LABEL(lit_6108));
btk->searchUpdateMaterialID(model_data);
model_data->entryTexMtxAnimator(btk);
@@ -17535,7 +17728,7 @@ J3DAnmTextureSRTKey* daAlink_c::loadAramItemBtk(u16 i_resID, J3DModel* i_model)
J3DAnmTexPattern* daAlink_c::loadAramItemBtp(u16 i_resID, J3DModel* i_model) {
J3DModelData* model_data = i_model->getModelData();
J3DAnmTexPattern* btp = (J3DAnmTexPattern*)loadAram(i_resID, 0x400);
-
+
btp->setFrame(FLOAT_LABEL(lit_6108));
btp->searchUpdateMaterialID(model_data);
model_data->entryTexNoAnimator(btp);
@@ -17682,7 +17875,8 @@ bool daAlink_c::checkCastleTownUseItem(u16 item_id) {
(checkRoomSpecial() && (item_id == EMPTY_BOTTLE || checkDungeonWarpItem(item_id))) ||
(checkStageName("R_SP128") && item_id == COPY_ROD) ||
(checkLv2DungeonRoomSpecial() && item_id == HVY_BOOTS) ||
- (checkBottleItem(item_id) && item_id != EMPTY_BOTTLE)) {
+ (checkBottleItem(item_id) && item_id != EMPTY_BOTTLE))
+ {
return true;
} else {
return false;
@@ -17764,14 +17958,13 @@ asm void daAlink_c::setLight() {
#pragma pop
/* 800C1CEC-800C1DAC 0BC62C 00C0+00 3/3 0/0 0/0 .text setFrontRollCrashShock__9daAlink_cFUc */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setFrontRollCrashShock(u8 param_0) {
- nofralloc
-#include "asm/d/a/d_a_alink/setFrontRollCrashShock__9daAlink_cFUc.s"
+void daAlink_c::setFrontRollCrashShock(u8 param_0) {
+ f32 tmp_0 = FLOAT_LABEL(lit_6108);
+ dComIfGp_getVibration().StartShock(5, 15, cXyz(tmp_0, lit_6040, tmp_0));
+
+ mZ2Link.startLinkSound(Z2SE_AL_BODYATTACK, param_0, mVoiceReverbIntensity);
+ dKy_Sound_set(current.pos, 100, fopAcM_GetID(this), 5);
}
-#pragma pop
/* 800C1DAC-800C1DE0 0BC6EC 0034+00 1/0 0/0 0/0 .text getModelJointMtx__9daAlink_cFUs */
MtxP daAlink_c::getModelJointMtx(u16 param_0) {
@@ -17881,7 +18074,9 @@ void daAlink_c::commonProcInit(daAlink_c::daAlink_PROC i_procID) {
resetWolfBallGrab();
} else if (mProcID == PROC_CHAIN_STRONG_PULL) {
mNowAnmPackUpper[2].setRatio(0.0f);
- } else if (mProcID == PROC_SCREAM_WAIT || mProcID == PROC_WOLF_SCREAM_WAIT || mProcID == PROC_ELEC_DAMAGE) {
+ } else if (mProcID == PROC_SCREAM_WAIT || mProcID == PROC_WOLF_SCREAM_WAIT ||
+ mProcID == PROC_ELEC_DAMAGE)
+ {
dComIfGp_getVibration().StopQuake(0x1F);
} else if (mProcID == PROC_GUARD_BREAK) {
field_0x814.SetTgApid(-1);
@@ -17898,7 +18093,9 @@ void daAlink_c::commonProcInit(daAlink_c::daAlink_PROC i_procID) {
bool flg_400_set = checkModeFlag(0x400);
if (flg_400_set && !checkBoardRide() && !checkSpinnerRide()) {
field_0x2f99 = 0xA0;
- } else if (checkModeFlg(0x40840) || mProcID == PROC_BOSS_BODY_HANG || mProcID == PROC_WOLF_CHAIN_WAIT) {
+ } else if (checkModeFlg(0x40840) || mProcID == PROC_BOSS_BODY_HANG ||
+ mProcID == PROC_WOLF_CHAIN_WAIT)
+ {
field_0x2f99 = 0x70;
}
@@ -17940,7 +18137,11 @@ void daAlink_c::commonProcInit(daAlink_c::daAlink_PROC i_procID) {
}
}
- if (temp_r31 && (mItemAcKeep.getActor() == NULL || mItemAcKeep.getActor()->mEvtInfo.i_checkCommandDemoAccrpt()) && !i_checkEndResetFlg0(ERFLG0_UNK_1000)) {
+ if (temp_r31 &&
+ (mItemAcKeep.getActor() == NULL ||
+ mItemAcKeep.getActor()->mEvtInfo.i_checkCommandDemoAccrpt()) &&
+ !i_checkEndResetFlg0(ERFLG0_UNK_1000))
+ {
deleteEquipItem(0, 0);
resetUpperAnime(UPPER_2, -1.0f);
}
@@ -18134,7 +18335,9 @@ void daAlink_c::commonProcInit(daAlink_c::daAlink_PROC i_procID) {
}
if (flg_20000_set && !i_checkModeFlg(MODE_SWIMMING)) {
- if (mProcID != PROC_CAUGHT && mProcID != PROC_HOOKSHOT_FLY && !i_checkNoResetFlg0(FLG0_UNDERWATER)) {
+ if (mProcID != PROC_CAUGHT && mProcID != PROC_HOOKSHOT_FLY &&
+ !i_checkNoResetFlg0(FLG0_UNDERWATER))
+ {
swimOutAfter(0);
}
}
@@ -18229,14 +18432,33 @@ asm void daAlink_c::setGoatStopGameFail(fopAc_ac_c* param_0) {
#pragma pop
/* 800E9344-800E9434 0E3C84 00F0+00 1/1 0/0 0/0 .text procGoatMoveInit__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procGoatMoveInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procGoatMoveInit__9daAlink_cFv.s"
+int daAlink_c::procGoatMoveInit() {
+ if (!commonProcInitNotSameProc(PROC_GOAT_MOVE)) {
+ return 0;
+ }
+
+ if (checkZeroSpeedF()) {
+ onModeFlg(1);
+ }
+
+ mNormalSpeed = FLOAT_LABEL(lit_6108);
+ field_0x37c8 = current.pos;
+ field_0x2f98 = 3;
+ current.angle.y = shape_angle.y + -0x4000;
+ field_0x594 = daAlinkHIO_atnMove_c0::m.mMaxSpeed;
+
+ setSingleAnimeBase(ANM_ATN_COW);
+ field_0x300c = 0;
+
+ fopAc_ac_c* goat_p = (fopAc_ac_c*)fopAcIt_Judge((fopAcIt_JudgeFunc)daAlink_searchGoat, NULL);
+ if (goat_p != NULL) {
+ field_0x280c.setData(goat_p);
+ }
+
+ field_0x300e = 0;
+ deleteEquipItem(FALSE, FALSE);
+ return 1;
}
-#pragma pop
/* 800E9434-800E9894 0E3D74 0460+00 1/0 0/0 0/0 .text procGoatMove__9daAlink_cFv */
#pragma push
@@ -18284,7 +18506,7 @@ int daAlink_c::procGoatStroke() {
if (mUnderFrameCtrl[0].checkAnmEnd()) {
checkNextAction(0);
}
-
+
return 1;
}
@@ -18365,7 +18587,9 @@ void daAlink_c::commonWaitTurnInit() {
/* 80120474-80120500 11ADB4 008C+00 2/1 0/0 0/0 .text commonGrabPutInit__9daAlink_cFv */
int daAlink_c::commonGrabPutInit() {
if (mGrabItemAcKeep.getActor() == NULL) {
- if (mProcID != PROC_GRAB_STAND && (mProcID != PROC_WOLF_GRAB_PUT || !(mUnderFrameCtrl[0].getFrame() < field_0x3478))) {
+ if (mProcID != PROC_GRAB_STAND &&
+ (mProcID != PROC_WOLF_GRAB_PUT || !(mUnderFrameCtrl[0].getFrame() < field_0x3478)))
+ {
dComIfGp_evmng_cutEnd(field_0x3184);
return 1;
}
@@ -18550,7 +18774,8 @@ int daAlink_c::loadShieldModelDVD() {
field_0x0648->freeAll();
setShieldArcName();
} else if (mShieldChangeWaitTimer == 1) {
- if (dComIfG_resLoad(&mShieldPhaseReq, mShieldArcName, field_0x0648) == cPhs_COMPLEATE_e) {
+ if (dComIfG_resLoad(&mShieldPhaseReq, mShieldArcName, field_0x0648) == cPhs_COMPLEATE_e)
+ {
mShieldChangeWaitTimer = 0;
setShieldModel();
} else {
diff --git a/src/d/a/d_a_alink_bottle.inc b/src/d/a/d_a_alink_bottle.inc
index bc0d22c6f7..05393eb67f 100644
--- a/src/d/a/d_a_alink_bottle.inc
+++ b/src/d/a/d_a_alink_bottle.inc
@@ -1,3 +1,5 @@
+#include "d/d_insect.h"
+
/* 8010E48C-8010E52C 108DCC 00A0+00 1/1 0/0 0/0 .text bottleModelCallBack__9daAlink_cFv
*/
int daAlink_c::bottleModelCallBack() {
@@ -322,7 +324,8 @@ int daAlink_c::procBottleGet() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dInsect_c::Insect_Release() {
+// asm void dInsect_c::Insect_Release() {
+extern "C" asm void Insect_Release__9dInsect_cFv() {
nofralloc
#include "asm/d/a/d_a_alink/Insect_Release__9dInsect_cFv.s"
}
diff --git a/src/d/a/d_a_alink_bow.inc b/src/d/a/d_a_alink_bow.inc
index aa5c3b0b36..6d57df109c 100644
--- a/src/d/a/d_a_alink_bow.inc
+++ b/src/d/a/d_a_alink_bow.inc
@@ -129,7 +129,8 @@ void daAlink_c::deleteArrow() {
if (arrow != NULL && fopAcM_GetName(arrow) == PROC_ARROW) {
if (arrow->checkBombArrow() &&
- (mDamageTimer == daAlinkHIO_damage_c0::m.mInvincibleTime || i_checkModeFlg(8))) {
+ (mDamageTimer == daAlinkHIO_damage_c0::m.mInvincibleTime || i_checkModeFlg(8)))
+ {
arrow->setBombArrowExplode();
dComIfGp_addSelectItemNum(mSelectItemId, -1);
dComIfGp_setItemArrowNumCount(-1);
@@ -173,7 +174,8 @@ BOOL daAlink_c::cancelBowMoveRideNotAtn() {
#pragma optimization_level 2
BOOL daAlink_c::cancelBowMove() {
if (mTargetedActor == NULL && !i_checkAttentionLock() && mFastShotTime == 0 &&
- !checkBowReadyAnime() && (!checkBowShootAnime() || mUpperFrameCtrl[2].checkAnmEnd())) {
+ !checkBowReadyAnime() && (!checkBowShootAnime() || mUpperFrameCtrl[2].checkAnmEnd()))
+ {
resetUpperAnime(UPPER_2, lit_6041);
return true;
}
@@ -266,6 +268,21 @@ asm int daAlink_c::checkNextActionBow() {
#pragma pop
/* 800DFAE8-800DFBC8 0DA428 00E0+00 1/1 0/0 0/0 .text setBowModel__9daAlink_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daAlink_c::setBowModel() {
+ J3DAnmTransform* bck = (J3DAnmTransform*)mAnmHeap9.loadDataIdx(0x59);
+ JKRHeap* old_heap = setItemHeap();
+
+ mHeldItemModel = initModel(loadAramBmd(0x314, 0x4C00), 0);
+ field_0x730.init(bck, FALSE, 2, 1.0f, 0, -1, false);
+
+ mDoExt_setCurrentHeap(old_heap);
+ field_0x33dc = field_0x730.getBckAnm()->getFrameMax() - 0.001f;
+ field_0x2f95 = 5;
+ field_0x2f94 = 0x67;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -274,6 +291,7 @@ asm void daAlink_c::setBowModel() {
#include "asm/d/a/d_a_alink/setBowModel__9daAlink_cFv.s"
}
#pragma pop
+#endif
/* 800DFBC8-800DFC28 0DA508 0060+00 4/4 0/0 0/0 .text checkBowGrabLeftHand__9daAlink_cCFv
*/
diff --git a/src/d/a/d_a_alink_crawl.inc b/src/d/a/d_a_alink_crawl.inc
index fa8986da38..4b5d3b5841 100644
--- a/src/d/a/d_a_alink_crawl.inc
+++ b/src/d/a/d_a_alink_crawl.inc
@@ -1,33 +1,75 @@
/* 800F7C50-800F7C74 0F2590 0024+00 2/2 0/0 0/0 .text getCrawlMoveAnmSpeed__9daAlink_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::getCrawlMoveAnmSpeed() {
- nofralloc
-#include "asm/d/a/d_a_alink/getCrawlMoveAnmSpeed__9daAlink_cFv.s"
+f32 daAlink_c::getCrawlMoveAnmSpeed() {
+ return getAnmSpeedStickRate(daAlinkHIO_crouch_c0::m.mCrawlAnmSpeedMin,
+ daAlinkHIO_crouch_c0::m.mCrawlAnmSpeedMax);
}
-#pragma pop
/* 800F7C74-800F7CE8 0F25B4 0074+00 2/2 0/0 0/0 .text getCrawlMoveSpeed__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::getCrawlMoveSpeed() {
- nofralloc
-#include "asm/d/a/d_a_alink/getCrawlMoveSpeed__9daAlink_cFv.s"
+f32 daAlink_c::getCrawlMoveSpeed() {
+ daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
+
+ f32 frame = frame_ctrl->getFrame();
+ if (frame >= lit_16210) {
+ frame = frame_ctrl->getFrame() - lit_16210;
+ } else {
+ frame = frame_ctrl->getFrame();
+ }
+
+ return frame_ctrl->getRate() * daAlinkHIO_crouch_c0::m.mCrawlMoveRate *
+ cM_fsin(lit_22146 * frame);
}
-#pragma pop
/* 800F7CE8-800F7E48 0F2628 0160+00 4/4 0/0 0/0 .text setCrawlMoveDirectionArrow__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setCrawlMoveDirectionArrow() {
- nofralloc
-#include "asm/d/a/d_a_alink/setCrawlMoveDirectionArrow__9daAlink_cFv.s"
+void daAlink_c::setCrawlMoveDirectionArrow() {
+ u8 direction = 0;
+ camera_class* camera = dComIfGp_getCamera(field_0x317c);
+ BOOL bvar = cLib_distanceAngleS(fopCamM_GetAngleY(camera), shape_angle.y) > 0x4000;
+
+ if (field_0x3198 & 4) {
+ if (!bvar) {
+ direction = data_80452F38;
+ } else {
+ direction = data_80452F39;
+ }
+ }
+
+ if (field_0x3198 & 8) {
+ if (!bvar) {
+ direction |= data_80452F39;
+ } else {
+ direction |= data_80452F38;
+ }
+ }
+
+ if (field_0x3198 & 1) {
+ if (shape_angle.y == current.angle.y) {
+ if (!bvar) {
+ direction |= 8;
+ } else {
+ direction |= 2;
+ }
+ } else if (!bvar) {
+ direction |= 2;
+ } else {
+ direction |= 8;
+ }
+ }
+
+ if (shape_angle.y == current.angle.y) {
+ if (!bvar) {
+ direction |= 2;
+ } else {
+ direction |= 8;
+ }
+ } else if (!bvar) {
+ direction |= 8;
+ } else {
+ direction |= 2;
+ }
+
+ dComIfGp_setAdvanceDirection(direction);
}
-#pragma pop
/* 800F7E48-800F81C0 0F2788 0378+00 2/2 0/0 0/0 .text changeCrawlAutoMoveProc__9daAlink_cFP4cXyz
*/
@@ -45,22 +87,37 @@ asm void daAlink_c::changeCrawlAutoMoveProc(cXyz* param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daAlink_c::getCrawlMoveVec(cXyz* param_0, cXyz* param_1, cXyz* param_2, int param_3,
- int param_4, u8* param_5) {
+asm int daAlink_c::getCrawlMoveVec(cXyz* param_0, cXyz* param_1, cXyz* param_2, int param_3,
+ int param_4, u8* param_5) {
nofralloc
#include "asm/d/a/d_a_alink/getCrawlMoveVec__9daAlink_cFP4cXyzP4cXyzP4cXyziiPUc.s"
}
#pragma pop
/* 800F85C0-800F8700 0F2F00 0140+00 2/2 0/0 0/0 .text crawlBgCheck__9daAlink_cFP4cXyzP4cXyzi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::crawlBgCheck(cXyz* param_0, cXyz* param_1, int param_2) {
- nofralloc
-#include "asm/d/a/d_a_alink/crawlBgCheck__9daAlink_cFP4cXyzP4cXyzi.s"
+void daAlink_c::crawlBgCheck(cXyz* param_0, cXyz* param_1, int param_2) {
+ cXyz sp28;
+ cXyz sp34;
+ cXyz sp40;
+
+ cMtx_multVec(mpLinkModel->getBaseTRMtx(), &l_crawlTopOffset, &sp28);
+ int temp_r30 = getCrawlMoveVec(&sp28, param_0, &sp34, 1, param_2, NULL);
+
+ cMtx_multVec(mpLinkModel->getBaseTRMtx(), &l_crawlTopUpOffset, &sp28);
+ int temp_r29 = getCrawlMoveVec(&sp28, param_1, &sp40, 1, param_2, NULL);
+
+ if (temp_r30 != 0 && temp_r29 != 0) {
+ if (sp34.abs2() > sp40.abs2()) {
+ current.pos -= sp34;
+ } else {
+ current.pos -= sp40;
+ }
+ } else if (temp_r30 != 0) {
+ current.pos -= sp34;
+ } else if (temp_r29 != 0) {
+ current.pos -= sp40;
+ }
}
-#pragma pop
/* 800F8700-800F88F8 0F3040 01F8+00 2/2 0/0 0/0 .text
* checkCrawlSideWall__9daAlink_cFP4cXyzP4cXyzP4cXyzP4cXyzPsPs */
@@ -76,35 +133,47 @@ asm void daAlink_c::checkCrawlSideWall(cXyz* param_0, cXyz* param_1, cXyz* param
/* 800F88F8-800F89E0 0F3238 00E8+00 6/6 0/0 0/0 .text decideCrawlDoStatus__9daAlink_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::decideCrawlDoStatus() {
- nofralloc
-#include "asm/d/a/d_a_alink/decideCrawlDoStatus__9daAlink_cFv.s"
+void daAlink_c::decideCrawlDoStatus() {
+ if (dComIfGp_checkCameraAttentionStatus(field_0x317c, 0x80)) {
+ if (checkSubjectEnd(1) || mWaterY > current.pos.y) {
+ dComIfGp_clearPlayerStatus0(0, 0x2000);
+ }
+ } else {
+ dCamera_c* camera = dCam_getBody();
+
+ if (camera->ChangeModeOK(4) && mWaterY <= current.pos.y) {
+ i_onResetFlg0(RFLG0_UNK_4000000);
+
+ if (dComIfGp_checkCameraAttentionStatus(field_0x317c, 0x1000) && !checkEventRun()) {
+ setSubjectMode();
+ }
+ }
+ }
}
-#pragma pop
/* 800F89E0-800F8A50 0F3320 0070+00 3/3 0/0 0/0 .text checkNotCrawlStand__9daAlink_cFP4cXyz */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::checkNotCrawlStand(cXyz* param_0) {
- nofralloc
-#include "asm/d/a/d_a_alink/checkNotCrawlStand__9daAlink_cFP4cXyz.s"
+BOOL daAlink_c::checkNotCrawlStand(cXyz* param_0) {
+ mLinkRoofChk.i_SetPos(*param_0);
+ return dComIfG_Bgsp().RoofChk(&mLinkRoofChk) - current.pos.y <= field_0x598;
}
-#pragma pop
/* 800F8A50-800F8B00 0F3390 00B0+00 2/2 0/0 0/0 .text checkNotCrawlStand__9daAlink_cFP4cXyzP4cXyz
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::checkNotCrawlStand(cXyz* param_0, cXyz* param_1) {
- nofralloc
-#include "asm/d/a/d_a_alink/checkNotCrawlStand__9daAlink_cFP4cXyzP4cXyz.s"
+BOOL daAlink_c::checkNotCrawlStand(cXyz* param_0, cXyz* param_1) {
+ cXyz sp20;
+
+ sp20 = *param_0 + *param_1;
+ if (checkNotCrawlStand(&sp20)) {
+ return true;
+ }
+
+ sp20 = *param_0 - *param_1;
+ if (checkNotCrawlStand(&sp20)) {
+ return true;
+ }
+
+ return false;
}
-#pragma pop
/* 800F8B00-800F8D04 0F3440 0204+00 2/2 0/0 0/0 .text
* checkCrawlInHoll__9daAlink_cFP4cXyzP4cXyzP4cXyzi */
@@ -118,34 +187,69 @@ asm void daAlink_c::checkCrawlInHoll(cXyz* param_0, cXyz* param_1, cXyz* param_2
#pragma pop
/* 800F8D04-800F8DBC 0F3644 00B8+00 2/2 0/0 0/0 .text setCrawlMoveHoll__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setCrawlMoveHoll() {
- nofralloc
-#include "asm/d/a/d_a_alink/setCrawlMoveHoll__9daAlink_cFv.s"
+void daAlink_c::setCrawlMoveHoll() {
+ f32 frame_ctrl_rate = mUnderFrameCtrl[0].getRate();
+
+ if (frame_ctrl_rate != FLOAT_LABEL(lit_6108)) {
+ cLib_addCalcAngleS(&shape_angle.y, field_0x300c, 5, 0x1000, 0x800);
+ current.angle.y = shape_angle.y;
+ }
+
+ if (fabsf(current.pos.x - field_0x37c8.x) > lit_6040) {
+ cLib_addCalc(&current.pos.x, field_0x37c8.x, lit_5943, lit_7625, lit_6040);
+ }
+
+ if (fabsf(current.pos.z - field_0x37c8.z) > lit_6040) {
+ cLib_addCalc(&current.pos.z, field_0x37c8.z, lit_5943, lit_7625, lit_6040);
+ }
}
-#pragma pop
/* 800F8DBC-800F8F08 0F36FC 014C+00 1/1 0/0 0/0 .text setCrawlMoveAngle__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setCrawlMoveAngle() {
- nofralloc
-#include "asm/d/a/d_a_alink/setCrawlMoveAngle__9daAlink_cFv.s"
+void daAlink_c::setCrawlMoveAngle() {
+ cXyz sp20;
+ cXyz sp2C;
+ cXyz sp38;
+
+ cLib_addCalcAngleS(&shape_angle.y, field_0x2fe2, daAlinkHIO_crouch_c0::m.mCrawlTurnRate,
+ daAlinkHIO_crouch_c0::m.mCrawlTurnMax,
+ daAlinkHIO_crouch_c0::m.mCrawlTurnMin);
+
+ if (shape_angle.y != current.angle.y) {
+ if ((s16)(shape_angle.y - current.angle.y) > 0) {
+ cMtx_multVec(mpLinkModel->getBaseTRMtx(), &l_crawlLSideFrontOffset, &sp20);
+ cMtx_multVec(mpLinkModel->getBaseTRMtx(), &l_crawlLSideOffset, &sp38);
+ } else {
+ cMtx_multVec(mpLinkModel->getBaseTRMtx(), &l_crawlRSideFrontOffset, &sp20);
+ cMtx_multVec(mpLinkModel->getBaseTRMtx(), &l_crawlRSideOffset, &sp38);
+ }
+
+ mLinkGndChk.SetPos(&sp20);
+ sp2C.set(sp20.x - sp38.x, dComIfG_Bgsp().GroundCross(&mLinkGndChk) - sp38.y,
+ sp20.z - sp38.z);
+
+ if (cLib_distanceAngleS(sp2C.atan2sY_XZ(), shape_angle.x) > 0x800) {
+ shape_angle.y = current.angle.y;
+ } else {
+ current.angle.y = shape_angle.y;
+ }
+ }
}
-#pragma pop
/* 800F8F08-800F8F84 0F3848 007C+00 6/6 0/0 0/0 .text stopHalfMoveAnime__9daAlink_cFf */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::stopHalfMoveAnime(f32 param_0) {
- nofralloc
-#include "asm/d/a/d_a_alink/stopHalfMoveAnime__9daAlink_cFf.s"
+void daAlink_c::stopHalfMoveAnime(f32 param_0) {
+ daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
+
+ f32 frame;
+ if (frame_ctrl->checkPass(FLOAT_LABEL(lit_6108))) {
+ frame = FLOAT_LABEL(lit_6108);
+ } else {
+ frame = param_0;
+ }
+
+ frame_ctrl->setRate(FLOAT_LABEL(lit_6108));
+ frame_ctrl->setFrame(frame);
+ getNowAnmPackUnder(UNDER_0)->setFrame(frame);
}
-#pragma pop
/* 800F8F84-800F9210 0F38C4 028C+00 2/2 0/0 0/0 .text setCrawlAutoMoveAimPos__9daAlink_cFv */
#pragma push
@@ -168,14 +272,29 @@ asm int daAlink_c::procCrawlStartInit() {
#pragma pop
/* 800F9384-800F9474 0F3CC4 00F0+00 1/0 0/0 0/0 .text procCrawlStart__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procCrawlStart() {
- nofralloc
-#include "asm/d/a/d_a_alink/procCrawlStart__9daAlink_cFv.s"
+int daAlink_c::procCrawlStart() {
+ daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
+
+ decideCrawlDoStatus();
+ field_0x33cc = lit_6040 - field_0x3478 * (field_0x347c - frame_ctrl->getFrame());
+
+ cXyz sp20(l_crawlFrontOffset.x, l_crawlFrontOffset.y, l_crawlFrontOffset.z * field_0x33cc);
+ cXyz sp2C;
+ cXyz sp38;
+
+ cMtx_multVec(mpLinkModel->getBaseTRMtx(), &sp20, &sp2C);
+ sp20.y = lit_10039;
+
+ cMtx_multVec(mpLinkModel->getBaseTRMtx(), &sp20, &sp38);
+ crawlBgCheck(&sp2C, &sp38, 0);
+
+ field_0x2f99 = 4;
+ if (checkAnmEnd(frame_ctrl)) {
+ procCrawlMoveInit(shape_angle.x, shape_angle.z);
+ }
+
+ return 1;
}
-#pragma pop
/* 800F9474-800F95B8 0F3DB4 0144+00 3/3 0/0 0/0 .text procCrawlMoveInit__9daAlink_cFss */
#pragma push
@@ -198,6 +317,29 @@ asm int daAlink_c::procCrawlMove() {
#pragma pop
/* 800F99FC-800F9ABC 0F433C 00C0+00 1/1 0/0 0/0 .text procCrawlAutoMoveInit__9daAlink_cFiP4cXyz */
+// r30 / r31 swap
+#ifdef NONMATCHING
+int daAlink_c::procCrawlAutoMoveInit(int param_0, cXyz* param_1) {
+ BOOL var_r30 = i_dComIfGp_checkPlayerStatus0(0, 0x2000);
+ commonProcInit(PROC_CRAWL_AUTO_MOVE);
+ field_0x37c8 = *param_1;
+ field_0x33cc = lit_6040;
+ field_0x3198 = param_0;
+ field_0x3008 = 20;
+ field_0x300a = 300;
+
+ dComIfGp_setPlayerStatus0(0, 0x8000000);
+ setCrawlMoveDirectionArrow();
+ mNormalSpeed = FLOAT_LABEL(lit_6108);
+ field_0x2f99 = 12;
+
+ if (var_r30) {
+ dComIfGp_setPlayerStatus0(0, 0x2000);
+ }
+
+ return 1;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -206,6 +348,7 @@ asm int daAlink_c::procCrawlAutoMoveInit(int param_0, cXyz* param_1) {
#include "asm/d/a/d_a_alink/procCrawlAutoMoveInit__9daAlink_cFiP4cXyz.s"
}
#pragma pop
+#endif
/* 800F9ABC-800F9D7C 0F43FC 02C0+00 1/0 0/0 0/0 .text procCrawlAutoMove__9daAlink_cFv */
#pragma push
@@ -228,11 +371,19 @@ asm int daAlink_c::procCrawlEndInit(int param_0, s16 param_1, s16 param_2) {
#pragma pop
/* 800F9F30-800F9FDC 0F4870 00AC+00 1/0 0/0 0/0 .text procCrawlEnd__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procCrawlEnd() {
- nofralloc
-#include "asm/d/a/d_a_alink/procCrawlEnd__9daAlink_cFv.s"
+int daAlink_c::procCrawlEnd() {
+ daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
+
+ field_0x33cc = field_0x3478 * (frame_ctrl->getFrame() - field_0x347c);
+ field_0x2f99 = 4;
+
+ if (checkAnmEnd(frame_ctrl)) {
+ if (!checkNextActionFromCrouch(0)) {
+ procWaitInit();
+ }
+ } else if (frame_ctrl->getFrame() < daAlinkHIO_crouch_c0::m.mCrawlEndAnm.mCheckFrame) {
+ checkNextActionFromCrouch(1);
+ }
+
+ return 1;
}
-#pragma pop \ No newline at end of file
diff --git a/src/d/a/d_a_alink_damage.inc b/src/d/a/d_a_alink_damage.inc
index d621033fe6..f76027058c 100644
--- a/src/d/a/d_a_alink_damage.inc
+++ b/src/d/a/d_a_alink_damage.inc
@@ -57,6 +57,25 @@ void daAlink_c::onPressedDamage(cXyz const& param_0, s16 param_1) {
/* 800D6F2C-800D6FE0 0D186C 00B4+00 3/3 0/0 0/0 .text checkNoLandDamageSlidePolygon__9daAlink_cFv
*/
+// matches with cM3dGPla vtable
+#ifdef NONMATCHING
+BOOL daAlink_c::checkNoLandDamageSlidePolygon() {
+ if (field_0x2fbb == 3) {
+ return true;
+ }
+
+ if (dComIfG_Bgsp().ChkPolySafe(mLinkAcch.m_gnd)) {
+ cM3dGPla poly;
+ dComIfG_Bgsp().GetTriPla(mLinkAcch.m_gnd, &poly);
+
+ if (poly.mNormal.y < field_0x3470) {
+ return true;
+ }
+ }
+
+ return false;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -65,13 +84,15 @@ asm BOOL daAlink_c::checkNoLandDamageSlidePolygon() {
#include "asm/d/a/d_a_alink/checkNoLandDamageSlidePolygon__9daAlink_cFv.s"
}
#pragma pop
+#endif
/* 800D6FE0-800D70A0 0D1920 00C0+00 6/6 0/0 0/0 .text checkCutLandDamage__9daAlink_cFv */
void daAlink_c::checkCutLandDamage() {
if (!checkEventRun()) {
f32 var_f31 = (mFallHeight - current.pos.y) * lit_8782;
- if (var_f31 >= daAlinkHIO_damFall_c0::m.mSmallDmgHeight && !checkNoLandDamageSlidePolygon()) {
+ if (var_f31 >= daAlinkHIO_damFall_c0::m.mSmallDmgHeight && !checkNoLandDamageSlidePolygon())
+ {
if (var_f31 >= daAlinkHIO_damFall_c0::m.mBigDmgHeight) {
setLandDamagePoint(8);
} else {
@@ -85,7 +106,9 @@ void daAlink_c::checkCutLandDamage() {
/* 800D70A0-800D7160 0D19E0 00C0+00 2/2 0/0 0/0 .text checkCaughtEscapeCutTurn__9daAlink_cFv */
BOOL daAlink_c::checkCaughtEscapeCutTurn() {
- if (mLinkAcch.ChkGroundHit() && (i_checkSwordGet() || i_checkWolf()) && checkCutTurnInputTrigger()) {
+ if (mLinkAcch.ChkGroundHit() && (i_checkSwordGet() || i_checkWolf()) &&
+ checkCutTurnInputTrigger())
+ {
if (i_checkWolf()) {
return procWolfRollAttackInit(2, 0);
}
@@ -104,7 +127,7 @@ BOOL daAlink_c::checkCaughtEscapeCutTurn() {
/* 800D7160-800D7208 0D1AA0 00A8+00 1/0 0/0 0/0 .text setThrowDamage__9daAlink_cFsffiii
*/
bool daAlink_c::setThrowDamage(s16 param_0, f32 param_1, f32 param_2, int param_3, int param_4,
- int param_5) {
+ int param_5) {
field_0x3408 = param_1;
field_0x340c = param_2;
field_0x318c = param_3;
@@ -134,10 +157,12 @@ bool daAlink_c::setThrowDamage(s16 param_0, f32 param_1, f32 param_2, int param_
f32 daAlink_c::damageMagnification(int i_checkZoraMag, int param_1) {
f32 base_mag;
- if (param_1 == 0 && i_checkNoResetFlg3(FLG3_UNK_40000000) && !i_checkEndResetFlg2(ERFLG2_UNK_40)) {
- base_mag = lit_7624; /* 1.5 */
+ if (param_1 == 0 && i_checkNoResetFlg3(FLG3_UNK_40000000) &&
+ !i_checkEndResetFlg2(ERFLG2_UNK_40))
+ {
+ base_mag = lit_7624; /* 1.5 */
} else {
- base_mag = lit_6040; /* 1.0 */
+ base_mag = lit_6040; /* 1.0 */
}
if (i_checkWolf() && !checkCargoCarry() && param_1 == 0) {
@@ -260,14 +285,18 @@ asm void daAlink_c::checkPolyDamage() {
/* 800D7A98-800D7B18 0D23D8 0080+00 1/1 0/0 0/0 .text
* checkElecReturnDamage__9daAlink_cFR12dCcD_GObjInfPP10fopAc_ac_c */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::checkElecReturnDamage(dCcD_GObjInf& param_0, fopAc_ac_c** param_1) {
- nofralloc
-#include "asm/d/a/d_a_alink/checkElecReturnDamage__9daAlink_cFR12dCcD_GObjInfPP10fopAc_ac_c.s"
+bool daAlink_c::checkElecReturnDamage(dCcD_GObjInf& param_0, fopAc_ac_c** param_1) {
+ if (param_0.ChkAtHit() && param_0.GetAtHitGObj() != NULL) {
+ dCcD_GObjInf* gobj_p = (dCcD_GObjInf*)param_0.GetAtHitGObj();
+
+ if (gobj_p->GetTgSpl() == dCcG_Tg_Spl_UNK_1) {
+ *param_1 = param_0.GetAtHitAc();
+ return true;
+ }
+ }
+
+ return false;
}
-#pragma pop
/* 800D7B18-800D7BE8 0D2458 00D0+00 1/1 0/0 0/0 .text damageTimerCount__9daAlink_cFv */
void daAlink_c::damageTimerCount() {
@@ -340,7 +369,7 @@ asm int daAlink_c::procDamage() {
#pragma optimization_level 0
#pragma optimizewithasm off
asm int daAlink_c::procCoLargeDamageInit(int param_0, int param_1, s16 param_2, s16 param_3,
- dCcD_GObjInf* param_4, int param_5) {
+ dCcD_GObjInf* param_4, int param_5) {
nofralloc
#include "asm/d/a/d_a_alink/procCoLargeDamageInit__9daAlink_cFiissP12dCcD_GObjInfi.s"
}
@@ -453,15 +482,15 @@ asm int daAlink_c::procLandDamageInit(int param_0) {
/* 800DB060-800DB140 0D59A0 00E0+00 1/0 0/0 0/0 .text procLandDamage__9daAlink_cFv */
int daAlink_c::procLandDamage() {
daPy_frameCtrl_c* frameCtrl = mUnderFrameCtrl;
-
+
if (field_0x3198 != 0) {
if (frameCtrl->checkAnmEnd()) {
checkNextAction(0);
} else if (frameCtrl->getFrame() > daAlinkHIO_damFall_c0::m.mStandAnm.mCheckFrame) {
onModeFlg(4);
checkNextAction(1);
- }
- } else {
+ }
+ } else {
if (frameCtrl->checkAnmEnd()) {
if (field_0x3008 > 0) {
field_0x3008--;
@@ -561,7 +590,8 @@ int daAlink_c::procScreamWaitInit() {
if (i_checkEndResetFlg1(ERFLG1_UNK_2)) {
setScreamWaitAnime();
} else {
- setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, daAlinkHIO_basic_c0::m.mAnmBlendFactor);
+ setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed,
+ daAlinkHIO_basic_c0::m.mAnmBlendFactor);
field_0x300c = 0;
}
@@ -655,14 +685,16 @@ int daAlink_c::procCoSwimFreezeReturnInit() {
f32 var_f31;
if (i_checkWolf()) {
- setSingleAnimeWolfBaseSpeed(WANM_SWIM_WAIT, daAlinkHIO_wlDamNormal_c0::m.field_0x5C, lit_7625);
+ setSingleAnimeWolfBaseSpeed(WANM_SWIM_WAIT, daAlinkHIO_wlDamNormal_c0::m.field_0x5C,
+ lit_7625);
mUnderFrameCtrl[0].setEnd(3);
mUnderFrameCtrl[0].setAttribute(0);
setFaceBasicTexture(FTANM_UNK_90);
field_0x2f9b = 1;
var_f31 = daAlinkHIO_wlSwim_c0::m.field_0x48;
} else {
- setSingleAnime(ANM_SWIM_DMG_FREEZE, daAlinkHIO_damNormal_c0::m.field_0x60, FLOAT_LABEL(lit_6108), 5, lit_7625);
+ setSingleAnime(ANM_SWIM_DMG_FREEZE, daAlinkHIO_damNormal_c0::m.field_0x60,
+ FLOAT_LABEL(lit_6108), 5, lit_7625);
voiceStart(Z2SE_AL_V_DAMAGE_FREEZE);
var_f31 = daAlinkHIO_swim_c0::m.mInitHeight;
}
@@ -687,6 +719,25 @@ int daAlink_c::procCoSwimFreezeReturnInit() {
}
/* 800DC474-800DC548 0D6DB4 00D4+00 1/0 0/0 0/0 .text procCoSwimFreezeReturn__9daAlink_cFv */
+// matches with literals
+#ifdef NONMATCHING
+int daAlink_c::procCoSwimFreezeReturn() {
+ if (field_0x300c == 0) {
+ if (checkRestartDead(4, 1)) {
+ i_onNoResetFlg1(FLG1_UNK_40000000);
+ } else {
+ u32 mode = 4;
+ setLastSceneDamage(4, &mode);
+ seStartSystem(Z2SE_FORCE_BACK);
+ dStage_changeScene(3, 0.0f, mode, fopAcM_GetRoomNo(this), shape_angle.y, -1);
+ }
+ } else {
+ field_0x300c--;
+ }
+
+ return 1;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -694,4 +745,5 @@ asm int daAlink_c::procCoSwimFreezeReturn() {
nofralloc
#include "asm/d/a/d_a_alink/procCoSwimFreezeReturn__9daAlink_cFv.s"
}
-#pragma pop \ No newline at end of file
+#pragma pop
+#endif
diff --git a/src/d/a/d_a_alink_demo.inc b/src/d/a/d_a_alink_demo.inc
index 18c62666bb..6be8821b59 100644
--- a/src/d/a/d_a_alink_demo.inc
+++ b/src/d/a/d_a_alink_demo.inc
@@ -75,20 +75,22 @@ asm void daAlink_c::setDemoData() {
/* 80117B90-80117C34 1124D0 00A4+00 1/1 0/0 0/0 .text resetDemoBck__9daAlink_cFv */
void daAlink_c::resetDemoBck() {
- mAnmHeap7.resetArcNo();
- mAnmHeap5.resetArcNo();
- mAnmHeap6.resetArcNo();
+ mFaceBckHeap.resetArcNo();
+ mFaceBtpHeap.resetArcNo();
+ mFaceBtkHeap.resetArcNo();
mUnderAnmHeap[0].resetArcNo();
mUnderAnmHeap[0].resetIdx();
- mAnmHeap7.resetIdx();
- mAnmHeap5.resetIdx();
- mAnmHeap6.resetIdx();
+ mFaceBckHeap.resetIdx();
+ mFaceBtpHeap.resetIdx();
+ mFaceBtkHeap.resetIdx();
if (i_checkWolf()) {
- setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMoveNoP_c0::m.field_0x14, daAlinkHIO_wlMove_c0::m.field_0x94);
+ setSingleAnimeWolfBaseSpeed(WANM_WAIT, daAlinkHIO_wlMoveNoP_c0::m.field_0x14,
+ daAlinkHIO_wlMove_c0::m.field_0x94);
setFaceBasicAnime(ANM_WAIT);
} else {
- setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, daAlinkHIO_basic_c0::m.mAnmBlendFactor);
+ setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed,
+ daAlinkHIO_basic_c0::m.mAnmBlendFactor);
}
}
@@ -167,7 +169,8 @@ asm void daAlink_c::setGetItemFace(u16 param_0) {
*/
BOOL daAlink_c::checkGrabTalkActor(fopAc_ac_c* i_actor) {
s16 name = fopAcM_GetName(i_actor);
- return name == PROC_NPC_KYURY || name == PROC_MYNA || name == PROC_OBJ_SSITEM || name == PROC_TAG_MSG;
+ return name == PROC_NPC_KYURY || name == PROC_MYNA || name == PROC_OBJ_SSITEM ||
+ name == PROC_TAG_MSG;
}
/* 80118308-8011856C 112C48 0264+00 2/2 0/0 0/0 .text setTalkStartBack__9daAlink_cFP4cXyz
@@ -175,7 +178,7 @@ BOOL daAlink_c::checkGrabTalkActor(fopAc_ac_c* i_actor) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daAlink_c::setTalkStartBack(cXyz* param_0) {
+asm int daAlink_c::setTalkStartBack(cXyz* param_0) {
nofralloc
#include "asm/d/a/d_a_alink/setTalkStartBack__9daAlink_cFP4cXyz.s"
}
@@ -192,35 +195,50 @@ asm void daAlink_c::setShapeAngleToTalkActor() {
#pragma pop
/* 80118654-801186D4 112F94 0080+00 2/2 0/0 0/0 .text setTalkAnime__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setTalkAnime() {
- nofralloc
-#include "asm/d/a/d_a_alink/setTalkAnime__9daAlink_cFv.s"
+void daAlink_c::setTalkAnime() {
+ if (mDemo.getDemoMode() == 8 || mEquipItem == KANTERA ||
+ (i_checkNoResetFlg2(FLG2_UNK_1) && field_0x2fde == 0x48))
+ {
+ setDoubleAnime(FLOAT_LABEL(lit_6108), daAlinkHIO_move_c0::m.mWaitAnmSpeed,
+ daAlinkHIO_move_c0::m.mWaitAnmSpeed, ANM_WAIT, ANM_WAIT, 2, lit_6109);
+ } else {
+ setSingleAnimeBase(ANM_TALK);
+ }
}
-#pragma pop
/* 801186D4-80118778 113014 00A4+00 2/2 0/0 0/0 .text setTradeItemAnime__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setTradeItemAnime() {
- nofralloc
-#include "asm/d/a/d_a_alink/setTradeItemAnime__9daAlink_cFv.s"
+u8 daAlink_c::setTradeItemAnime() {
+ setSingleAnimeBase(ANM_TRADE_ITEM_PULL_OUT);
+ offModeFlg(0x100);
+
+ if (mDemo.getParam0() != 1) {
+ int item_no;
+ if (mDemo.getParam0() == 2) {
+ item_no = mDemo.getParam1();
+ } else {
+ item_no = dComIfGp_event_getPreItemNo();
+ }
+
+ u32 partner_id = fopAcM_createItemForPresentDemo(
+ &current.pos, item_no, 3, -1, fopAcM_GetRoomNo(this), &shape_angle, &mScale);
+ dComIfGp_event_setItemPartnerId(partner_id);
+ }
+
+ keepItemData();
+ return 1;
}
-#pragma pop
/* 80118778-801187B4 1130B8 003C+00 3/3 0/0 0/0 .text setTradeItemOutHand__9daAlink_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setTradeItemOutHand() {
- nofralloc
-#include "asm/d/a/d_a_alink/setTradeItemOutHand__9daAlink_cFv.s"
+void daAlink_c::setTradeItemOutHand() {
+ daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
+
+ if (frame_ctrl->getFrame() >= lit_24590) {
+ field_0x2f92 = 4;
+ } else if (frame_ctrl->getFrame() >= lit_8676) {
+ field_0x2f92 = 0;
+ }
}
-#pragma pop
/* 801187B4-80118840 1130F4 008C+00 5/5 0/0 0/0 .text checkEndMessage__9daAlink_cFUl */
BOOL daAlink_c::checkEndMessage(u32 param_0) {
@@ -243,38 +261,92 @@ BOOL daAlink_c::checkEndMessage(u32 param_0) {
}
/* 80118840-801188B0 113180 0070+00 1/1 0/0 0/0 .text setDemoRightHandIndex__9daAlink_cFUs */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setDemoRightHandIndex(u16 param_0) {
- nofralloc
-#include "asm/d/a/d_a_alink/setDemoRightHandIndex__9daAlink_cFUs.s"
+u8 daAlink_c::setDemoRightHandIndex(u16 param_0) {
+ if (param_0 == 0xFD) {
+ field_0x3010 = 1;
+ return 6;
+ } else if (param_0 == 0xFC) {
+ field_0x2fab |= 0x10;
+ return 5;
+ } else if (param_0 == 0xFB) {
+ if (mpDemoHRTmpModel != NULL) {
+ return 0xFB;
+ } else {
+ return 0xFE;
+ }
+ } else if (param_0 != 0xFE) {
+ return param_0 + 5;
+ } else {
+ return param_0 & 0xFF;
+ }
}
-#pragma pop
/* 801188B0-8011894C 1131F0 009C+00 1/1 0/0 0/0 .text setDemoLeftHandIndex__9daAlink_cFUs
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setDemoLeftHandIndex(u16 param_0) {
- nofralloc
-#include "asm/d/a/d_a_alink/setDemoLeftHandIndex__9daAlink_cFUs.s"
+u8 daAlink_c::setDemoLeftHandIndex(u16 param_0) {
+ if (param_0 == 0xFD) {
+ if (mEquipItem != 0x103) {
+ deleteEquipItem(FALSE, TRUE);
+ setSwordModel();
+ }
+ return 0;
+ } else if (param_0 == 0xFC) {
+ field_0x2fab |= 0x8;
+ return 0;
+ } else if (param_0 == 0xFB) {
+ if (mpDemoHLTmpModel != NULL) {
+ return 0xFB;
+ } else {
+ return 0xFE;
+ }
+ } else {
+ return param_0 & 0xFF;
+ }
}
-#pragma pop
/* 8011894C-801189F8 11328C 00AC+00 1/1 0/0 0/0 .text setDemoRide__9daAlink_cFUs */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setDemoRide(u16 param_0) {
- nofralloc
-#include "asm/d/a/d_a_alink/setDemoRide__9daAlink_cFUs.s"
+void daAlink_c::setDemoRide(u16 param_0) {
+ daHorse_c* horse_p = i_dComIfGp_getHorseActor();
+
+ if (param_0 == 1) {
+ if (horse_p != NULL && !i_checkModeFlg(0x400)) {
+ onModeFlg(0x400);
+ horse_p->onRideFlg();
+ field_0x384c = (cXyz*)&l_horseBaseAnime;
+ mRideStatus = 1;
+ }
+ } else {
+ if (horse_p != NULL) {
+ horse_p->offRideFlg();
+ }
+
+ mRideStatus = 0;
+ offModeFlg(0x400);
+ }
}
-#pragma pop
/* 801189F8-80118AD0 113338 00D8+00 1/1 0/0 0/0 .text
* setDemoBodyBck__9daAlink_cFP13dDemo_actor_cUs */
+// matches with literals
+#ifdef NONMATCHING
+void daAlink_c::setDemoBodyBck(dDemo_actor_c* param_0, u16 param_1) {
+ J3DAnmTransform* bck = (J3DAnmTransform*)mUnderAnmHeap[0].loadDataDemoRID(param_1, 0);
+ if (bck != NULL) {
+ setFrameCtrl(mUnderFrameCtrl, bck->getAttribute(), 0, bck->getFrameMax(), 1.0f, 0.0f);
+ mNowAnmPackUnder[0].setAnmTransform(bck);
+ mNowAnmPackUpper[0].setAnmTransform(bck);
+
+ dDemo_actor_c* demo_actor_p = dDemo_c::getActor(mDemoActorId);
+ if (demo_actor_p->checkEnable(0x80)) {
+ field_0x2060->initOldFrameMorf(demo_actor_p->getPrm_Morf(), 0, field_0x30c6);
+ }
+
+ field_0x2f8c = 0;
+ param_0->setAnmFrameMax(bck->getFrameMax());
+ setBasAnime(UNDER_0);
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -283,6 +355,7 @@ asm void daAlink_c::setDemoBodyBck(dDemo_actor_c* param_0, u16 param_1) {
#include "asm/d/a/d_a_alink/setDemoBodyBck__9daAlink_cFP13dDemo_actor_cUs.s"
}
#pragma pop
+#endif
/* 80118AD0-80118B34 113410 0064+00 1/1 0/0 0/0 .text checkFinalBattle__9daAlink_cFv */
BOOL daAlink_c::checkFinalBattle() {
@@ -294,7 +367,8 @@ BOOL daAlink_c::checkRestartDead(int i_dmgAmount, int i_checkZoraMag) {
i_dmgAmount *= (int)damageMagnification(i_checkZoraMag, 1);
if (mProcID != PROC_DEAD && i_dmgAmount >= i_dComIfGs_getLife() && !checkMagicArmorNoDamage() &&
- !dComIfGs_checkBottle(FAIRY)) {
+ !dComIfGs_checkBottle(FAIRY))
+ {
i_onNoResetFlg2(FLG2_UNK_40000);
procCoDeadInit(0);
return 1;
@@ -336,17 +410,38 @@ asm BOOL daAlink_c::checkDeadAction(int param_0) {
/* 80118FF8-801190A4 113938 00AC+00 1/1 0/0 0/0 .text
* setHighModelBck__9daAlink_cFP13mDoExt_bckAnmUs */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setHighModelBck(mDoExt_bckAnm* param_0, u16 param_1) {
- nofralloc
-#include "asm/d/a/d_a_alink/setHighModelBck__9daAlink_cFP13mDoExt_bckAnmUs.s"
+void daAlink_c::setHighModelBck(mDoExt_bckAnm* i_bck, u16 param_1) {
+ if (i_bck != NULL) {
+ J3DAnmTransform* bck = (J3DAnmTransform*)dComIfG_getObjectIDRes(
+ dStage_roomControl_c::getDemoArcName(), param_1);
+
+ if (bck != NULL && i_bck->getBckAnm() != bck) {
+ if (field_0x06b4 == bck) {
+ mpDemoHDTmpBck->changeBckOnly(NULL);
+ } else {
+ i_bck->init(bck, TRUE, -1, lit_6040, 0, -1, true);
+ }
+ }
+ }
}
-#pragma pop
/* 801190A4-80119134 1139E4 0090+00 1/1 0/0 0/0 .text setHighModelFaceBtk__9daAlink_cFUs
*/
+// extra mr
+#ifdef NONMATCHING
+void daAlink_c::setHighModelFaceBtk(u16 param_0) {
+ J3DAnmTextureSRTKey* btk = (J3DAnmTextureSRTKey*)dComIfG_getObjectIDRes(
+ dStage_roomControl_c::getDemoArcName(), param_0);
+
+ if (btk != NULL && field_0x068c != btk) {
+ btk->searchUpdateMaterialID(mpDemoFCTongueModel->getModelData());
+ mpDemoFCTongueModel->getModelData()->entryTexMtxAnimator(btk);
+
+ btk->setFrame(FLOAT_LABEL(lit_6108));
+ field_0x068c = btk;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -355,9 +450,25 @@ asm void daAlink_c::setHighModelFaceBtk(u16 param_0) {
#include "asm/d/a/d_a_alink/setHighModelFaceBtk__9daAlink_cFUs.s"
}
#pragma pop
+#endif
/* 80119134-801191C4 113A74 0090+00 1/1 0/0 0/0 .text
* setDemoBrk__9daAlink_cFPP15J3DAnmTevRegKeyP8J3DModelUs */
+// extra mr
+#ifdef NONMATCHING
+void daAlink_c::setDemoBrk(J3DAnmTevRegKey** param_0, J3DModel* param_1, u16 param_2) {
+ J3DAnmTevRegKey* brk =
+ (J3DAnmTevRegKey*)dComIfG_getObjectIDRes(dStage_roomControl_c::getDemoArcName(), param_2);
+
+ if (brk != NULL && *param_0 != brk) {
+ brk->searchUpdateMaterialID(param_1->getModelData());
+ param_1->getModelData()->entryTevRegAnimator(brk);
+
+ brk->setFrame(FLOAT_LABEL(lit_6108));
+ *param_0 = brk;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -366,6 +477,7 @@ asm void daAlink_c::setDemoBrk(J3DAnmTevRegKey** param_0, J3DModel* param_1, u16
#include "asm/d/a/d_a_alink/setDemoBrk__9daAlink_cFPP15J3DAnmTevRegKeyP8J3DModelUs.s"
}
#pragma pop
+#endif
/* 801191C4-80119464 113B04 02A0+00 1/1 0/0 0/0 .text
* setStickAnmData__9daAlink_cFP10J3DAnmBaseiiUsi */
@@ -402,14 +514,38 @@ int daAlink_c::procDemoCommon() {
}
/* 801195F8-801196D8 113F38 00E0+00 1/1 0/0 0/0 .text procCoToolDemoInit__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procCoToolDemoInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procCoToolDemoInit__9daAlink_cFv.s"
+int daAlink_c::procCoToolDemoInit() {
+ if (!commonProcInitNotSameProc(PROC_TOOL_DEMO)) {
+ return 1;
+ }
+
+ f32 tmp_0 = FLOAT_LABEL(lit_6108);
+ mNormalSpeed = tmp_0;
+ speedF = tmp_0;
+ speed.y = tmp_0;
+
+ mUnderAnmHeap[0].resetArcNo();
+ mUnderAnmHeap[0].resetIdx();
+ mUpperAnmHeap[0].resetIdx();
+ mUnderAnmHeap[1].resetIdx();
+ mUpperAnmHeap[1].resetIdx();
+
+ setDoubleAnimeBlendRatio(tmp_0);
+ mNowAnmPackUnder[1].setAnmTransform(NULL);
+ mNowAnmPackUpper[1].setAnmTransform(NULL);
+
+ field_0x3198 = 0;
+ field_0x3010 = 0;
+ field_0x2fab = 0;
+ deleteEquipItem(FALSE, TRUE);
+ mUnderAnmHeap[0].setBufferSize(0x10800);
+ field_0x300c = 0;
+ field_0x3478 = FLOAT_LABEL(lit_6108);
+ field_0x37c8 = current.pos;
+
+ i_onEndResetFlg1(ERFLG1_GANON_FINISH);
+ return 1;
}
-#pragma pop
/* 801196D8-80119D98 114018 06C0+00 1/0 0/0 0/0 .text procCoToolDemo__9daAlink_cFv */
#pragma push
@@ -452,14 +588,23 @@ asm int daAlink_c::procCoOpenTreasureInit() {
#pragma pop
/* 8011A42C-8011A4C0 114D6C 0094+00 1/0 0/0 0/0 .text procCoOpenTreasure__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procCoOpenTreasure() {
- nofralloc
-#include "asm/d/a/d_a_alink/procCoOpenTreasure__9daAlink_cFv.s"
+int daAlink_c::procCoOpenTreasure() {
+ i_onEndResetFlg1(ERFLG1_UNK_8);
+
+ if (field_0x300c == 0) {
+ field_0x300c = 1;
+ } else {
+ field_0x2f99 = 4;
+ }
+
+ if (checkAnmEnd(mUnderFrameCtrl)) {
+ dComIfGp_evmng_cutEnd(field_0x3184);
+ mLinkAcch.ClrWallNone();
+ mLinkAcch.OnLineCheck();
+ }
+
+ return 1;
}
-#pragma pop
/* 8011A4C0-8011A5CC 114E00 010C+00 1/0 0/0 0/0 .text procCoUnequipInit__9daAlink_cFv */
#pragma push
@@ -472,14 +617,30 @@ asm int daAlink_c::procCoUnequipInit() {
#pragma pop
/* 8011A5CC-8011A688 114F0C 00BC+00 1/0 0/0 0/0 .text procCoUnequip__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procCoUnequip() {
- nofralloc
-#include "asm/d/a/d_a_alink/procCoUnequip__9daAlink_cFv.s"
+int daAlink_c::procCoUnequip() {
+ if (field_0x300c != 0) {
+ if (checkAnmEnd(mUnderFrameCtrl)) {
+ setBlendMoveAnime(lit_6109);
+ itemEquip(COPY_ROD);
+
+ f32 tmp_6 = lit_7977;
+ mUpperFrameCtrl[2].setFrame(tmp_6);
+ getNowAnmPackUpper(UPPER_2)->setFrame(tmp_6);
+ commonChangeItem();
+ field_0x300c = 0;
+ }
+ } else {
+ if (!i_checkWolf()) {
+ setBlendMoveAnime(lit_6041);
+ }
+
+ if (checkNoUpperAnime()) {
+ dComIfGp_evmng_cutEnd(field_0x3184);
+ }
+ }
+
+ return 1;
}
-#pragma pop
/* 8011A688-8011A6FC 114FC8 0074+00 4/4 0/0 0/0 .text setGetSubBgm__9daAlink_cFi */
void daAlink_c::setGetSubBgm(int param_0) {
@@ -496,32 +657,18 @@ void daAlink_c::setGetSubBgm(int param_0) {
}
/* 8011A6FC-8011A798 11503C 009C+00 1/0 0/0 0/0 .text checkTreasureRupeeReturn__9daAlink_cCFi */
-// register issues. probably wrong order of operations
-#ifdef NONMATCHING
bool daAlink_c::checkTreasureRupeeReturn(int i_itemNo) const {
- int itemNo = i_itemNo;
- if (itemNo == LINKS_SAVINGS) {
- itemNo = PURPLE_RUPEE;
+ if (i_itemNo == LINKS_SAVINGS) {
+ i_itemNo = PURPLE_RUPEE;
}
- if (itemNo - 4 < 0 || itemNo - 4 >= 4) {
+ i_itemNo -= 4;
+ if (i_itemNo < 0 || i_itemNo >= 4) {
return false;
}
- u16 curRupees = i_dComIfGs_getRupee();
- int tmp = itemNo - 4;
- return dComIfGs_getRupeeMax() > (u16)rupeeCount[tmp] + curRupees;
-}
-#else
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm bool daAlink_c::checkTreasureRupeeReturn(int param_0) const {
- nofralloc
-#include "asm/d/a/d_a_alink/checkTreasureRupeeReturn__9daAlink_cCFi.s"
+ return dComIfGs_getRupeeMax() < rupeeCount[i_itemNo] + i_dComIfGs_getRupee();
}
-#pragma pop
-#endif
/* 8011A798-8011AC28 1150D8 0490+00 2/1 0/0 0/0 .text procCoGetItemInit__9daAlink_cFv */
#pragma push
@@ -544,14 +691,21 @@ asm int daAlink_c::procCoGetItem() {
#pragma pop
/* 8011B3F0-8011B46C 115D30 007C+00 1/0 0/0 0/0 .text procCoTurnBackInit__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procCoTurnBackInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procCoTurnBackInit__9daAlink_cFv.s"
+int daAlink_c::procCoTurnBackInit() {
+ if (!commonProcInitNotSameProc(PROC_TURN_BACK)) {
+ return 0;
+ }
+
+ mNormalSpeed = FLOAT_LABEL(lit_6108);
+ if (i_checkWolf()) {
+ setSingleAnimeWolfBase(WANM_TURN_BACK);
+ } else {
+ setSingleAnimeBase(ANM_TURN_BACK);
+ }
+
+ field_0x300c = 0;
+ return 1;
}
-#pragma pop
/* 8011B46C-8011B57C 115DAC 0110+00 1/0 0/0 0/0 .text procCoTurnBack__9daAlink_cFv */
#pragma push
@@ -594,84 +748,145 @@ asm int daAlink_c::procCoLookWaitInit() {
#pragma pop
/* 8011BA20-8011BABC 116360 009C+00 1/0 0/0 0/0 .text procCoLookWait__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procCoLookWait() {
- nofralloc
-#include "asm/d/a/d_a_alink/procCoLookWait__9daAlink_cFv.s"
+int daAlink_c::procCoLookWait() {
+ fopAc_ac_c* look_actor_p = getDemoLookActor();
+
+ if (look_actor_p != NULL) {
+ s16 target_angle;
+ s16 svar1 = cLib_targetAngleY(&field_0x34e0, &look_actor_p->mEyePos) - shape_angle.y;
+
+ if (svar1 > 0x6000) {
+ target_angle = shape_angle.y + 0x6000;
+ } else if (svar1 < -0x6000) {
+ target_angle = shape_angle.y + -0x6000;
+ } else {
+ target_angle = shape_angle.y;
+ }
+
+ cLib_addCalcAngleS(&shape_angle.y, target_angle, 2, 0x800, 0x100);
+ }
+
+ dComIfGp_evmng_cutEnd(field_0x3184);
+ return 1;
}
-#pragma pop
/* 8011BABC-8011BB40 1163FC 0084+00 1/0 0/0 0/0 .text procCoDemoPushPullWaitInit__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procCoDemoPushPullWaitInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procCoDemoPushPullWaitInit__9daAlink_cFv.s"
+int daAlink_c::procCoDemoPushPullWaitInit() {
+ if (!commonProcInitNotSameProc(PROC_DEMO_PUSH_PULL_WAIT)) {
+ return 0;
+ }
+
+ if (i_checkWolf()) {
+ setSingleAnimeWolfBase(WANM_WAIT_PP);
+ } else {
+ setSingleAnimeBaseSpeed(ANM_WAIT_PUSH_PULL, daAlinkHIO_pushpull_c0::m.field_0x10,
+ daAlinkHIO_pushpull_c0::m.field_0x14);
+ }
+
+ mNormalSpeed = FLOAT_LABEL(lit_6108);
+ return 1;
}
-#pragma pop
/* 8011BB40-8011BC14 116480 00D4+00 1/0 0/0 0/0 .text procCoDemoPushMoveInit__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procCoDemoPushMoveInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procCoDemoPushMoveInit__9daAlink_cFv.s"
+int daAlink_c::procCoDemoPushMoveInit() {
+ if (!commonProcInitNotSameProc(PROC_DEMO_PUSH_MOVE)) {
+ return 0;
+ }
+
+ if (i_checkWolf()) {
+ if (mDemo.getParam0() != 0) {
+ setSingleAnimeWolfBase(WANM_PUSH);
+ } else {
+ setSingleAnimeWolf(WANM_PUSH_LIGHT, daAlinkHIO_wlPush_c0::m.field_0x8,
+ FLOAT_LABEL(lit_6108), 24, daAlinkHIO_wlPush_c0::m.field_0xC);
+ }
+ } else {
+ if (mDemo.getParam0() != 0) {
+ setSingleAnimeBase(ANM_PUSH);
+ } else {
+ setSingleAnimeBaseSpeed(ANM_PUSH_LIGHT, daAlinkHIO_pushpull_c0::m.field_0x18,
+ daAlinkHIO_pushpull_c0::m.field_0x1C);
+ }
+ }
+
+ mNormalSpeed = FLOAT_LABEL(lit_6108);
+ return 1;
}
-#pragma pop
/* 8011BC14-8011BC74 116554 0060+00 2/2 0/0 0/0 .text setMonkeyMoveAnime__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setMonkeyMoveAnime() {
- nofralloc
-#include "asm/d/a/d_a_alink/setMonkeyMoveAnime__9daAlink_cFv.s"
+void daAlink_c::setMonkeyMoveAnime() {
+ daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
+
+ if (mDemo.getParam0() == 0) {
+ field_0x2f92 = 0xFE;
+ field_0x2f93 = 0xFE;
+ frame_ctrl->setFrame(FLOAT_LABEL(lit_6108));
+ } else {
+ field_0x2f92 = 2;
+ field_0x2f93 = 5;
+ frame_ctrl->setFrame(lit_6040);
+ }
+
+ getNowAnmPackUnder(UNDER_0)->setFrame(frame_ctrl->getFrame());
+ field_0x3088 = mDemo.getParam1();
+ shape_angle.x = field_0x3088 >> 1; // divide by 2
}
-#pragma pop
/* 8011BC74-8011BD18 1165B4 00A4+00 1/0 0/0 0/0 .text procMonkeyMoveInit__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procMonkeyMoveInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procMonkeyMoveInit__9daAlink_cFv.s"
+int daAlink_c::procMonkeyMoveInit() {
+ if (!commonProcInitNotSameProc(PROC_MONKEY_MOVE)) {
+ return 0;
+ }
+
+ current.angle.y = shape_angle.y;
+ setSpecialGravity(FLOAT_LABEL(lit_6108), mMaxFallSpeed, 0);
+
+ f32 tmp_0 = FLOAT_LABEL(lit_6108);
+ speed.y = tmp_0;
+ mNormalSpeed = tmp_0;
+ deleteEquipItem(FALSE, FALSE);
+
+ if (!i_checkWolf()) {
+ setSingleAnimeBaseSpeed(ANM_ROPE_SWING, FLOAT_LABEL(lit_6108), lit_6109);
+ setMonkeyMoveAnime();
+ }
+
+ return 1;
}
-#pragma pop
/* 8011BD18-8011BD6C 116658 0054+00 1/0 0/0 0/0 .text procMonkeyMove__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procMonkeyMove() {
- nofralloc
-#include "asm/d/a/d_a_alink/procMonkeyMove__9daAlink_cFv.s"
+int daAlink_c::procMonkeyMove() {
+ dComIfGp_evmng_cutEnd(field_0x3184);
+
+ if (!i_checkWolf()) {
+ setMonkeyMoveAnime();
+ }
+ return 1;
}
-#pragma pop
/* 8011BD6C-8011BDF0 1166AC 0084+00 1/0 0/0 0/0 .text procDemoBoomerangCatchInit__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procDemoBoomerangCatchInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procDemoBoomerangCatchInit__9daAlink_cFv.s"
+int daAlink_c::procDemoBoomerangCatchInit() {
+ if (!commonProcInitNotSameProc(PROC_DEMO_BOOMERANG_CATCH)) {
+ return 0;
+ }
+
+ mNormalSpeed = FLOAT_LABEL(lit_6108);
+ deleteEquipItem(FALSE, FALSE);
+ mEquipItem = BOOMERANG;
+ setItemActor();
+ setSingleAnimeParam(ANM_BOOMERANG_CATCH, &daAlinkHIO_boom_c0::m.mCatchAnm);
+ return 1;
}
-#pragma pop
/* 8011BDF0-8011BE54 116730 0064+00 1/0 0/0 0/0 .text procDemoBoomerangCatch__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procDemoBoomerangCatch() {
- nofralloc
-#include "asm/d/a/d_a_alink/procDemoBoomerangCatch__9daAlink_cFv.s"
+int daAlink_c::procDemoBoomerangCatch() {
+ dComIfGp_evmng_cutEnd(field_0x3184);
+
+ if (checkAnmEnd(mUnderFrameCtrl)) {
+ setBlendMoveAnime(daAlinkHIO_basic_c0::m.mAnmBlendFactor);
+ }
+ return 1;
}
-#pragma pop
/* 8011BE54-8011C1B4 116794 0360+00 2/2 0/0 0/0 .text procCoDeadInit__9daAlink_cFi */
#pragma push
@@ -705,97 +920,155 @@ asm int daAlink_c::procCoLookAroundInit() {
#pragma pop
/* 8011C760-8011C81C 1170A0 00BC+00 1/0 0/0 0/0 .text procCoLookAround__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procCoLookAround() {
- nofralloc
-#include "asm/d/a/d_a_alink/procCoLookAround__9daAlink_cFv.s"
+int daAlink_c::procCoLookAround() {
+ daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
+
+ if (field_0x300c == 0) {
+ field_0x300c = 1;
+ } else {
+ field_0x2f99 = 4;
+ }
+
+ if (checkAnmEnd(frame_ctrl)) {
+ dComIfGp_evmng_cutEnd(field_0x3184);
+ } else if (field_0x300e != 0 && frame_ctrl->checkPass(lit_7808)) {
+ voiceStart(Z2SE_AL_V_ENTRANCE);
+ }
+
+ return 1;
}
-#pragma pop
/* 8011C81C-8011C890 11715C 0074+00 1/0 0/0 0/0 .text procBossAtnWaitInit__9daAlink_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procBossAtnWaitInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procBossAtnWaitInit__9daAlink_cFv.s"
+int daAlink_c::procBossAtnWaitInit() {
+ if (!commonProcInitNotSameProc(PROC_BOSS_ATN_WAIT)) {
+ return 0;
+ }
+
+ setSingleAnimeBase(ANM_APPEARANCE);
+ voiceStart(Z2SE_AL_V_APPEARANCE);
+ mNormalSpeed = FLOAT_LABEL(lit_6108);
+ return 1;
}
-#pragma pop
/* 8011C890-8011C904 1171D0 0074+00 1/0 0/0 0/0 .text procCoQuakeWaitInit__9daAlink_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procCoQuakeWaitInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procCoQuakeWaitInit__9daAlink_cFv.s"
+int daAlink_c::procCoQuakeWaitInit() {
+ if (!commonProcInitNotSameProc(PROC_QUAKE_WAIT)) {
+ return 0;
+ }
+
+ if (i_checkWolf()) {
+ setSingleAnimeWolfBase(WANM_WAIT_WIND);
+ } else {
+ setSingleAnimeBase(ANM_WAIT_WIND);
+ }
+
+ mNormalSpeed = FLOAT_LABEL(lit_6108);
+ return 1;
}
-#pragma pop
/* 8011C904-8011C9D0 117244 00CC+00 1/0 0/0 0/0 .text procCoCaughtInit__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procCoCaughtInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procCoCaughtInit__9daAlink_cFv.s"
+int daAlink_c::procCoCaughtInit() {
+ u32 chk_40000 = i_checkModeFlg(0x40000);
+ if (!commonProcInitNotSameProc(PROC_CAUGHT)) {
+ return 0;
+ }
+
+ if (i_checkWolf()) {
+ setSingleAnimeWolfBaseMorf(WANM_WAIT_START, daAlinkHIO_wlDamCaught_c0::m.field_0x8);
+ } else {
+ setSingleAnimeBaseMorf(ANM_WAIT_START, daAlinkHIO_damCaught_c0::m.field_0x1C);
+ }
+
+ if (chk_40000) {
+ onModeFlg(0x40000);
+ }
+
+ f32 tmp_0 = FLOAT_LABEL(lit_6108);
+ mNormalSpeed = tmp_0;
+ speed.y = tmp_0;
+ setSpecialGravity(tmp_0, mMaxFallSpeed, 0);
+ mBodyAngle.z = 0;
+ return 1;
}
-#pragma pop
/* 8011C9D0-8011CA4C 117310 007C+00 1/0 0/0 0/0 .text procLookUpInit__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procLookUpInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procLookUpInit__9daAlink_cFv.s"
+int daAlink_c::procLookUpInit() {
+ if (!commonProcInitNotSameProc(PROC_LOOK_UP)) {
+ return 0;
+ }
+
+ setSingleAnimeBase(ANM_GET_A_WAIT2);
+ mNormalSpeed = FLOAT_LABEL(lit_6108);
+ field_0x3588 = l_waitBaseAnime;
+ field_0x2f99 = 12;
+ return 1;
}
-#pragma pop
/* 8011CA4C-8011CA98 11738C 004C+00 1/0 0/0 0/0 .text procLookUp__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procLookUp() {
- nofralloc
-#include "asm/d/a/d_a_alink/procLookUp__9daAlink_cFv.s"
+int daAlink_c::procLookUp() {
+ if (field_0x2f99 != 12) {
+ field_0x2f99 = 4;
+ }
+
+ dComIfGp_evmng_cutEnd(field_0x3184);
+ return 1;
}
-#pragma pop
/* 8011CA98-8011CB20 1173D8 0088+00 1/0 0/0 0/0 .text procLookUpToGetItemInit__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procLookUpToGetItemInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procLookUpToGetItemInit__9daAlink_cFv.s"
+int daAlink_c::procLookUpToGetItemInit() {
+ if (!commonProcInitNotSameProc(PROC_LOOK_UP_TO_GET_ITEM)) {
+ return 0;
+ }
+
+ setSingleAnimeBaseMorf(ANM_GET_HOLDOUT, lit_7307);
+ field_0x300c = 0;
+ mNormalSpeed = FLOAT_LABEL(lit_6108);
+ field_0x3588 = l_waitBaseAnime;
+ field_0x2f99 = 12;
+ return 1;
}
-#pragma pop
/* 8011CB20-8011CBD4 117460 00B4+00 1/0 0/0 0/0 .text procLookUpToGetItem__9daAlink_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procLookUpToGetItem() {
- nofralloc
-#include "asm/d/a/d_a_alink/procLookUpToGetItem__9daAlink_cFv.s"
+int daAlink_c::procLookUpToGetItem() {
+ if (field_0x2f99 != 12) {
+ field_0x2f99 = 4;
+ }
+
+ if (field_0x300c == 0 && checkAnmEnd(mUpperFrameCtrl)) {
+ field_0x300c = 1;
+ setSingleAnimeBase(ANM_GET_A_WAIT);
+ setFaceBasicBck(0x133);
+ field_0x2f99 = 12;
+ } else if (field_0x300c != 0) {
+ dComIfGp_evmng_cutEnd(field_0x3184);
+ }
+
+ return 1;
}
-#pragma pop
/* 8011CBD4-8011CCA8 117514 00D4+00 1/0 0/0 0/0 .text procHandPatInit__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procHandPatInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procHandPatInit__9daAlink_cFv.s"
+int daAlink_c::procHandPatInit() {
+ if (!commonProcInitNotSameProc(PROC_HAND_PAT)) {
+ return 0;
+ }
+
+ setSingleAnime(ANM_COW_THROW_LEFT, lit_6040, lit_6895, -1, lit_6109);
+ field_0x2f92 = 0xFE;
+ field_0x2f93 = 0xFE;
+ field_0x2f99 = 13;
+ field_0x3588.set(-l_halfAtnWaitBaseAnime.x, l_halfAtnWaitBaseAnime.y,
+ -l_halfAtnWaitBaseAnime.z);
+ mNormalSpeed = FLOAT_LABEL(lit_6108);
+
+ setOldRootQuaternion(0, -0x8000, 0);
+ shape_angle.y += 0x8000;
+ field_0x300c = 0;
+ field_0x300e = 0;
+ return 1;
}
-#pragma pop
/* 8011CCA8-8011CDE0 1175E8 0138+00 1/0 0/0 0/0 .text procHandPat__9daAlink_cFv */
#pragma push
@@ -829,85 +1102,152 @@ asm int daAlink_c::procCoFogDead() {
/* 8011D0A0-8011D110 1179E0 0070+00 1/0 0/0 0/0 .text procWolfSmellWaitInit__9daAlink_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procWolfSmellWaitInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procWolfSmellWaitInit__9daAlink_cFv.s"
+int daAlink_c::procWolfSmellWaitInit() {
+ if (!commonProcInitNotSameProc(PROC_WOLF_SMELL_WAIT)) {
+ return 1;
+ }
+
+ setSingleAnimeWolfBaseSpeed(WANM_SMELL, daAlinkHIO_wlChain_c0::m.field_0x54,
+ daAlinkHIO_wlChain_c0::m.field_0x58);
+ current.angle.y = shape_angle.y;
+ mNormalSpeed = FLOAT_LABEL(lit_6108);
+ return 1;
}
-#pragma pop
/* 8011D110-8011D1F4 117A50 00E4+00 1/0 0/0 0/0 .text procCoNodInit__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procCoNodInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procCoNodInit__9daAlink_cFv.s"
+int daAlink_c::procCoNodInit() {
+ if (!commonProcInitNotSameProc(PROC_NOD)) {
+ return 1;
+ }
+
+ if (i_checkWolf()) {
+ field_0x300c = 1;
+ } else {
+ if (mDemo.getParam0() == 1) {
+ setUpperAnimeBase(0x24E);
+ setFacePriBck(0x15B);
+ setFacePriTexture(FTANM_UNK_8A);
+ } else {
+ setUpperAnimeBase(0xD1);
+ setUpperAnimeBase(0xD1);
+ setFacePriTexture(FTANM_UNK_75);
+ }
+
+ field_0x2f96 = 4;
+ field_0x2f97 = 10;
+ i_onNoResetFlg1(0x10100000);
+ field_0x300c = 0;
+ }
+
+ return 1;
}
-#pragma pop
/* 8011D1F4-8011D268 117B34 0074+00 1/0 0/0 0/0 .text procCoNod__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procCoNod() {
- nofralloc
-#include "asm/d/a/d_a_alink/procCoNod__9daAlink_cFv.s"
+int daAlink_c::procCoNod() {
+ if (checkAnmEnd(&mUpperFrameCtrl[2])) {
+ field_0x300c = 1;
+ resetUpperAnime(UPPER_2, lit_6109);
+ }
+
+ if (field_0x300c != 0) {
+ dComIfGp_evmng_cutEnd(field_0x3184);
+ }
+
+ return 1;
}
-#pragma pop
/* 8011D268-8011D304 117BA8 009C+00 1/0 0/0 0/0 .text procCoEyeAwayInit__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procCoEyeAwayInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procCoEyeAwayInit__9daAlink_cFv.s"
+int daAlink_c::procCoEyeAwayInit() {
+ if (!commonProcInitNotSameProc(PROC_EYE_AWAY)) {
+ return 1;
+ }
+
+ if (!i_checkWolf()) {
+ setUpperAnimeBase(0xD3);
+ setFacePriTexture(FTANM_UNK_77);
+ setFacePriBck(0x129);
+ field_0x2f96 = 4;
+ field_0x2f97 = 10;
+ i_onNoResetFlg1(0x10100000);
+ }
+
+ return 1;
}
-#pragma pop
/* 8011D304-8011D3CC 117C44 00C8+00 1/0 0/0 0/0 .text procCoGlareInit__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procCoGlareInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procCoGlareInit__9daAlink_cFv.s"
+int daAlink_c::procCoGlareInit() {
+ if (!commonProcInitNotSameProc(PROC_GLARE)) {
+ return 1;
+ }
+
+ if (i_checkWolf()) {
+ field_0x300c = 1;
+ } else {
+ setUpperAnimeBase(0xD2);
+ mUpperFrameCtrl[2].setAttribute(2);
+ mUpperFrameCtrl[2].setLoop(45);
+ setFacePriTexture(FTANM_UNK_76);
+ setFacePriBck(0x128);
+ field_0x300c = 0;
+ field_0x3478 = lit_6041;
+ field_0x2f96 = 4;
+ field_0x2f97 = 10;
+ i_onNoResetFlg1(0x10100000);
+ }
+
+ return 1;
}
-#pragma pop
/* 8011D3CC-8011D474 117D0C 00A8+00 1/0 0/0 0/0 .text procCoGlare__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procCoGlare() {
- nofralloc
-#include "asm/d/a/d_a_alink/procCoGlare__9daAlink_cFv.s"
+int daAlink_c::procCoGlare() {
+ daPy_frameCtrl_c* frame_ctrl = &mUpperFrameCtrl[2];
+
+ if (!i_checkWolf()) {
+ if (field_0x3478 > frame_ctrl->getFrame()) {
+ field_0x300c = 1;
+ } else {
+ field_0x3478 = frame_ctrl->getFrame();
+ }
+ }
+
+ if (field_0x300c != 0) {
+ dComIfGp_evmng_cutEnd(field_0x3184);
+ }
+
+ if (!i_checkWolf() && frame_ctrl->getFrame() >= lit_7449) {
+ field_0x2f96 = 0;
+ field_0x2f97 = 5;
+ }
+
+ return 1;
}
-#pragma pop
/* 8011D474-8011D4D4 117DB4 0060+00 1/0 0/0 0/0 .text procGoatStopReadyInit__9daAlink_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procGoatStopReadyInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procGoatStopReadyInit__9daAlink_cFv.s"
+int daAlink_c::procGoatStopReadyInit() {
+ if (!commonProcInitNotSameProc(PROC_GOAT_STOP_READY)) {
+ return 1;
+ }
+
+ setSingleAnimeBase(ANM_ATN_COW);
+ mNormalSpeed = FLOAT_LABEL(lit_6108);
+ field_0x300c = 0;
+ return 1;
}
-#pragma pop
/* 8011D4D4-8011D544 117E14 0070+00 1/0 0/0 0/0 .text procGoatStopReady__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procGoatStopReady() {
- nofralloc
-#include "asm/d/a/d_a_alink/procGoatStopReady__9daAlink_cFv.s"
+int daAlink_c::procGoatStopReady() {
+ if (checkAnmEnd(mUnderFrameCtrl)) {
+ setSingleAnimeBase(ANM_COW_MOVE_LEFT_RIGHT);
+ field_0x300c = 1;
+ }
+
+ if (field_0x300c != 0) {
+ dComIfGp_evmng_cutEnd(field_0x3184);
+ }
+
+ return 1;
}
-#pragma pop
/* 8011D544-8011D64C 117E84 0108+00 2/1 0/0 0/0 .text procCoGetReadySitInit__9daAlink_cFv
*/
@@ -921,14 +1261,21 @@ asm int daAlink_c::procCoGetReadySitInit() {
#pragma pop
/* 8011D64C-8011D6D0 117F8C 0084+00 1/0 0/0 0/0 .text procCoGetReadySit__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procCoGetReadySit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procCoGetReadySit__9daAlink_cFv.s"
+int daAlink_c::procCoGetReadySit() {
+ if (checkAnmEnd(mUnderFrameCtrl)) {
+ field_0x300c = 1;
+ }
+
+ if (!i_checkWolf() && field_0x2f99 != 12) {
+ field_0x2f99 = 4;
+ }
+
+ if (field_0x300c != 0) {
+ dComIfGp_evmng_cutEnd(field_0x3184);
+ }
+
+ return 1;
}
-#pragma pop
/* 8011D6D0-8011D7D4 118010 0104+00 1/0 0/0 0/0 .text procCoTwGateInit__9daAlink_cFv */
#pragma push
@@ -951,14 +1298,22 @@ int daAlink_c::procCoTwGate() {
}
/* 8011D82C-8011D8F8 11816C 00CC+00 1/0 0/0 0/0 .text procWolfSnowEscapeInit__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procWolfSnowEscapeInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procWolfSnowEscapeInit__9daAlink_cFv.s"
+int daAlink_c::procWolfSnowEscapeInit() {
+ if (!commonProcInitNotSameProc(PROC_WOLF_SNOW_ESCAPE)) {
+ return 1;
+ }
+
+ current.angle.y = shape_angle.y + 0x8000;
+ setSingleAnimeWolf(WANM_TURN, lit_6040, lit_7808, 11, lit_6109);
+ voiceStart(Z2SE_WL_V_BREATH_JUMP);
+ field_0x2f99 = 13;
+ field_0x3588 = l_wolfBaseAnime;
+ field_0x3478 = lit_37528;
+ field_0x300c = 0;
+ field_0x300e = 0;
+ mNormalSpeed = lit_6845;
+ return 1;
}
-#pragma pop
/* 8011D8F8-8011DB04 118238 020C+00 1/0 0/0 0/0 .text procWolfSnowEscape__9daAlink_cFv */
#pragma push
@@ -971,14 +1326,23 @@ asm int daAlink_c::procWolfSnowEscape() {
#pragma pop
/* 8011DB04-8011DB9C 118444 0098+00 1/0 0/0 0/0 .text procZoraMoveInit__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procZoraMoveInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procZoraMoveInit__9daAlink_cFv.s"
+int daAlink_c::procZoraMoveInit() {
+ if (!commonProcInitNotSameProc(PROC_ZORA_MOVE)) {
+ return 1;
+ }
+
+ setSingleAnimeBase(ANM_HORSE_TAME_WAIT_B);
+ f32 tmp_0 = FLOAT_LABEL(lit_6108);
+ speed.y = tmp_0;
+ mNormalSpeed = tmp_0;
+ setSpecialGravity(tmp_0, mMaxFallSpeed, 0);
+
+ deleteEquipItem(FALSE, TRUE);
+ field_0x3010 = 5000;
+ field_0x3012 = 0;
+ field_0x384c = (cXyz*)&l_boarBaseAnime;
+ return 1;
}
-#pragma pop
/* 8011DB9C-8011DDD4 1184DC 0238+00 1/0 0/0 0/0 .text procZoraMove__9daAlink_cFv */
#pragma push
@@ -1001,25 +1365,53 @@ asm int daAlink_c::procLookAroundTurnInit() {
#pragma pop
/* 8011DED8-8011DF68 118818 0090+00 1/0 0/0 0/0 .text procLookAroundTurn__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procLookAroundTurn() {
- nofralloc
-#include "asm/d/a/d_a_alink/procLookAroundTurn__9daAlink_cFv.s"
+int daAlink_c::procLookAroundTurn() {
+ daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
+
+ if (checkAnmEnd(frame_ctrl)) {
+ dComIfGp_evmng_cutEnd(field_0x3184);
+ } else if (frame_ctrl->checkPass(lit_8248)) {
+ voiceStart(Z2SE_AL_V_D_MHOP);
+ }
+
+ return 1;
}
-#pragma pop
/* 8011DF68-8011E060 1188A8 00F8+00 1/0 0/0 0/0 .text procTradeItemOutInit__9daAlink_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procTradeItemOutInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procTradeItemOutInit__9daAlink_cFv.s"
+int daAlink_c::procTradeItemOutInit() {
+ if (!commonProcInitNotSameProc(PROC_TRADE_ITEM_OUT)) {
+ return 0;
+ }
+
+ field_0x3198 = setTalkStartBack(&field_0x37c8);
+
+ if (field_0x3198 == 0) {
+ field_0x300c = setTradeItemAnime();
+ mNormalSpeed = FLOAT_LABEL(lit_6108);
+ } else {
+ field_0x300c = 0;
+ }
+
+ field_0x300e = 0;
+ dComIfGp_setPlayerStatus0(0, 0x10);
+ field_0x3010 = 1;
+
+ if (mDemo.getParam0() != 1) {
+ if (mDemo.getParam0() == 2) {
+ if (checkLetterItem(mDemo.getParam1())) {
+ field_0x3010 = 0;
+ }
+ } else {
+ if (checkLetterItem(dComIfGp_event_getPreItemNo())) {
+ field_0x3010 = 0;
+ }
+ }
+ }
+
+ field_0x3008 = 30;
+ return 1;
}
-#pragma pop
/* 8011E060-8011E3D8 1189A0 0378+00 1/0 0/0 0/0 .text procTradeItemOut__9daAlink_cFv */
#pragma push
@@ -1032,14 +1424,10 @@ asm int daAlink_c::procTradeItemOut() {
#pragma pop
/* 8011E3D8-8011E448 118D18 0070+00 2/2 0/0 0/0 .text checkLetterItem__9daAlink_cFi */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::checkLetterItem(int param_0) {
- nofralloc
-#include "asm/d/a/d_a_alink/checkLetterItem__9daAlink_cFi.s"
+BOOL daAlink_c::checkLetterItem(int i_itemNo) {
+ return i_itemNo == LETTER || i_itemNo == BILL || i_itemNo == RAFRELS_MEMO ||
+ i_itemNo == TKS_LETTER || i_itemNo == ASHS_SCRIBBLING;
}
-#pragma pop
/* 8011E448-8011E57C 118D88 0134+00 1/1 0/0 0/0 .text procNotUseItemInit__9daAlink_cFi */
#pragma push
@@ -1062,90 +1450,137 @@ asm int daAlink_c::procNotUseItem() {
#pragma pop
/* 8011E6E0-8011E748 119020 0068+00 1/0 0/0 0/0 .text procSwordReadyInit__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procSwordReadyInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procSwordReadyInit__9daAlink_cFv.s"
+int daAlink_c::procSwordReadyInit() {
+ if (!commonProcInitNotSameProc(PROC_SWORD_READY)) {
+ return 0;
+ }
+
+ mNormalSpeed = FLOAT_LABEL(lit_6108);
+ current.angle.y = shape_angle.y;
+ setSingleAnimeBase(ANM_DEMO_KAMAE);
+ field_0x300c = 0;
+ return 1;
}
-#pragma pop
/* 8011E748-8011E83C 119088 00F4+00 1/0 0/0 0/0 .text procSwordReady__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procSwordReady() {
- nofralloc
-#include "asm/d/a/d_a_alink/procSwordReady__9daAlink_cFv.s"
+int daAlink_c::procSwordReady() {
+ daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
+
+ if (checkAnmEnd(frame_ctrl)) {
+ if (field_0x300c == 0) {
+ setDoubleAnime(FLOAT_LABEL(lit_6108), daAlinkHIO_noActAtnMove_c0::m.mWaitAnmSpeed,
+ daAlinkHIO_noActAtnMove_c0::m.mWaitAnmSpeed, ANM_WAIT_B, ANM_WAIT_B, 2,
+ lit_6109);
+ }
+
+ field_0x300c = 1;
+ dComIfGp_evmng_cutEnd(field_0x3184);
+ } else if (field_0x300c != 0) {
+ dComIfGp_evmng_cutEnd(field_0x3184);
+ } else if (frame_ctrl->checkPass(lit_7625)) {
+ voiceStart(Z2SE_AL_V_OUGI_KAMAE);
+ }
+
+ return 1;
}
-#pragma pop
/* 8011E83C-8011E8E0 11917C 00A4+00 2/2 0/0 0/0 .text setSwordPushAnime__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setSwordPushAnime() {
- nofralloc
-#include "asm/d/a/d_a_alink/setSwordPushAnime__9daAlink_cFv.s"
+void daAlink_c::setSwordPushAnime() {
+ daAlink_ANM anm_id = (daAlink_ANM)(mDemo.getParam0() + ANM_GANON_CHANCE);
+ if (field_0x3198 != anm_id) {
+ setSingleAnimeBase(anm_id);
+ field_0x2f99 = 13;
+ field_0x3198 = anm_id;
+
+ if (anm_id == ANM_GANON_CHANCE_WIN) {
+ voiceStart(Z2SE_AL_V_VS_GND_TUBA_WIN);
+ } else if (anm_id == ANM_GANON_CHANCE_LOSE) {
+ voiceStart(Z2SE_AL_V_VS_GND_TUBA_LOSE);
+ }
+ }
}
-#pragma pop
/* 8011E8E0-8011E960 119220 0080+00 1/0 0/0 0/0 .text procSwordPushInit__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procSwordPushInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procSwordPushInit__9daAlink_cFv.s"
+int daAlink_c::procSwordPushInit() {
+ if (!commonProcInitNotSameProc(PROC_SWORD_PUSH)) {
+ return 1;
+ }
+
+ mNormalSpeed = FLOAT_LABEL(lit_6108);
+ current.angle.y = shape_angle.y;
+ field_0x3198 = 0;
+ setSwordPushAnime();
+ field_0x3588 = l_halfAtnWaitBaseAnime;
+ return 1;
}
-#pragma pop
/* 8011E960-8011E9F8 1192A0 0098+00 1/0 0/0 0/0 .text procSwordPush__9daAlink_cFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procSwordPush() {
- nofralloc
-#include "asm/d/a/d_a_alink/procSwordPush__9daAlink_cFv.s"
+int daAlink_c::procSwordPush() {
+ field_0x2f99 = 4;
+ i_onEndResetFlg0(ERFLG0_UNK_8000000);
+ setSwordPushAnime();
+
+ if (field_0x3198 == 0x193) {
+ voiceStartLevel(Z2SE_AL_V_VS_GND_TUBA_A);
+ } else if (field_0x3198 == 0x194) {
+ voiceStartLevel(Z2SE_AL_V_VS_GND_TUBA_C);
+ } else if (field_0x3198 == 0x192) {
+ voiceStartLevel(Z2SE_AL_V_VS_GND_TUBA_B);
+ }
+
+ return 1;
}
-#pragma pop
/* 8011E9F8-8011EA78 119338 0080+00 1/0 0/0 0/0 .text procGanonFinishInit__9daAlink_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procGanonFinishInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procGanonFinishInit__9daAlink_cFv.s"
+int daAlink_c::procGanonFinishInit() {
+ if (!commonProcInitNotSameProc(PROC_GANON_FINISH)) {
+ return 1;
+ }
+
+ setSingleAnimeBase(ANM_GANON_FINISH);
+
+ f32 tmp_0 = FLOAT_LABEL(lit_6108);
+ mNormalSpeed = tmp_0;
+ speed.y = tmp_0;
+
+ field_0x37c8 = current.pos;
+ i_onEndResetFlg1(ERFLG1_GANON_FINISH);
+ return 1;
}
-#pragma pop
/* 8011EA78-8011EAE8 1193B8 0070+00 1/0 0/0 0/0 .text procGanonFinish__9daAlink_cFv */
-bool daAlink_c::procGanonFinish() {
+int daAlink_c::procGanonFinish() {
i_onEndResetFlg1(ERFLG1_GANON_FINISH);
current.pos = field_0x37c8;
- if (mUnderFrameCtrl[0].checkAnmEnd()) {
+
+ if (checkAnmEnd(mUnderFrameCtrl)) {
setSingleAnimeBaseMorf(ANM_GANON_FINISH_WAIT, lit_6041);
}
- return true;
+
+ return 1;
}
/* 8011EAE8-8011EB8C 119428 00A4+00 1/0 0/0 0/0 .text procCutFastReadyInit__9daAlink_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procCutFastReadyInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procCutFastReadyInit__9daAlink_cFv.s"
+int daAlink_c::procCutFastReadyInit() {
+ if (!commonProcInitNotSameProc(PROC_CUT_FAST_READY)) {
+ return 0;
+ }
+
+ mNormalSpeed = FLOAT_LABEL(lit_6108);
+ current.angle.y = shape_angle.y;
+ setSingleAnimeBaseSpeed(ANM_WAIT, daAlinkHIO_move_c0::m.mWaitAnmSpeed, lit_6109);
+ setUpperAnime(0x255, UPPER_2, daAlinkHIO_cut_c0::m.mEquipAnm.mSpeed, lit_7448,
+ daAlinkHIO_cut_c0::m.mEquipAnm.mEndFrame,
+ daAlinkHIO_cut_c0::m.mEquipAnm.mInterpolation);
+ i_onNoResetFlg0(FLG0_UNK_1000000);
+ return 1;
}
-#pragma pop
/* 8011EB8C-8011EBDC 1194CC 0050+00 1/0 0/0 0/0 .text procCutFastReady__9daAlink_cFv */
int daAlink_c::procCutFastReady() {
- if (mUpperFrameCtrl[2].checkAnmEnd()) {
+ if (checkAnmEnd(&mUpperFrameCtrl[2])) {
dComIfGp_evmng_cutEnd(field_0x3184);
}
@@ -1170,15 +1605,15 @@ int daAlink_c::procMasterSwordStickInit() {
/* 8011EC60-8011ED18 1195A0 00B8+00 1/0 0/0 0/0 .text procMasterSwordStick__9daAlink_cFv
*/
int daAlink_c::procMasterSwordStick() {
- daPy_frameCtrl_c* fCtrl = &mUnderFrameCtrl[0];
+ daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
if (field_0x300c != 0) {
dComIfGp_evmng_cutEnd(field_0x3184);
- } else if (fCtrl->checkAnmEnd()) {
+ } else if (checkAnmEnd(frame_ctrl)) {
field_0x300c = 1;
setSingleAnimeBaseMorf(ANM_DEMO_MASTER_SWORD_WAIT, lit_6041);
dComIfGp_evmng_cutEnd(field_0x3184);
- } else if (fCtrl->getFrame() >= lit_14621) {
+ } else if (frame_ctrl->getFrame() >= lit_14621) {
field_0x2f93 = 5;
}
@@ -1200,14 +1635,21 @@ int daAlink_c::procMasterSwordPullInit() {
/* 8011ED8C-8011EE40 1196CC 00B4+00 1/0 0/0 0/0 .text procMasterSwordPull__9daAlink_cFv
*/
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procMasterSwordPull() {
- nofralloc
-#include "asm/d/a/d_a_alink/procMasterSwordPull__9daAlink_cFv.s"
+int daAlink_c::procMasterSwordPull() {
+ daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
+
+ if (checkAnmEnd(frame_ctrl)) {
+ dComIfGp_evmng_cutEnd(field_0x3184);
+ } else if (frame_ctrl->getFrame() >= lit_8780) {
+ field_0x2f93 = 10;
+ } else if (frame_ctrl->getFrame() >= lit_7710) {
+ field_0x3010 = 0;
+ } else if (frame_ctrl->getFrame() >= lit_6040) {
+ field_0x3010 = 4;
+ }
+
+ return 1;
}
-#pragma pop
/* 8011EE40-8011EE94 119780 0054+00 5/5 0/0 0/0 .text checkLv7DungeonShop__9daAlink_cFv
*/
@@ -1259,28 +1701,19 @@ asm int daAlink_c::procDungeonWarpReady() {
/* 8011F084-8011F0F4 1199C4 0070+00 1/0 0/0 0/0 .text procDungeonWarpInit__9daAlink_cFv
*/
-#ifdef NONMATCHING
-bool daAlink_c::procDungeonWarpInit() {
- if (!commonProcInitNotSameProc(DUNEGON_WARP_START) {
- field_0x300c = 0;
- field_0x3012 = 0;
- setSpecialGravity(0.0f, mMaxFallSpeed, 0);
- field_0x300e = 0;
- field_0x3010 = 0;
+int daAlink_c::procDungeonWarpInit() {
+ if (!commonProcInitNotSameProc(PROC_DUNGEON_WARP)) {
+ return 0;
}
+ field_0x300c = 0;
+ field_0x3012 = 0;
+ setSpecialGravity(FLOAT_LABEL(lit_6108), mMaxFallSpeed, 0);
+ field_0x300e = 0;
+ field_0x3010 = 0;
+
return 1;
}
-#else
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm int daAlink_c::procDungeonWarpInit() {
- nofralloc
-#include "asm/d/a/d_a_alink/procDungeonWarpInit__9daAlink_cFv.s"
-}
-#pragma pop
-#endif
/* 8011F0F4-8011F360 119A34 026C+00 1/0 0/0 0/0 .text procDungeonWarp__9daAlink_cFv */
// matches with literals
@@ -1399,15 +1832,17 @@ bool daAlink_c::checkAcceptWarp() {
cM3dGPla plane;
if (mLinkAcch.ChkGroundHit() && !i_checkModeFlg(MODE_PLAYER_FLY) &&
- !i_checkNoResetFlg0(FLG0_UNDERWATER)) {
+ !i_checkNoResetFlg0(FLG0_UNDERWATER))
+ {
if (!getSlidePolygon(&plane) && !checkForestOldCentury()) {
if (i_checkMidnaRide() || getMidnaActor()->checkPortalObjRide()) {
if ((checkField() || checkCastleTown()) && !checkStageName("R_SP161")) {
- if ((i_checkWolf() &&
- (i_checkModeFlg(MODE_UNK_1000) || i_dComIfGp_checkPlayerStatus0(0, 0x10))) ||
+ if ((i_checkWolf() && (i_checkModeFlg(MODE_UNK_1000) ||
+ i_dComIfGp_checkPlayerStatus0(0, 0x10))) ||
(!i_checkWolf() &&
(checkEventRun() || getMidnaActor()->checkMetamorphoseEnable()) &&
- (i_checkModeFlg(4) || i_dComIfGp_checkPlayerStatus0(0, 0x10)))) {
+ (i_checkModeFlg(4) || i_dComIfGp_checkPlayerStatus0(0, 0x10))))
+ {
return true;
}
}
@@ -1450,9 +1885,9 @@ void daAlink_c::skipPortalObjWarp() {
}
if (i_checkNoResetFlg3(FLG3_UNK_2000000) &&
- (dComIfGp_TargetWarpPt_get() == 9 && dComIfGp_TransportWarp_check())) {
- dStage_changeScene(2, FLOAT_LABEL(lit_6108), 0, fopAcM_GetRoomNo(this), shape_angle.y,
- -1);
+ (dComIfGp_TargetWarpPt_get() == 9 && dComIfGp_TransportWarp_check()))
+ {
+ dStage_changeScene(2, FLOAT_LABEL(lit_6108), 0, fopAcM_GetRoomNo(this), shape_angle.y, -1);
} else {
u32 data = setParamData(dMeter2Info_getWarpRoomNo(), 0, 0xCA, 0);
dComIfGs_setTurnRestart(dMeter2Info_getWarpPos(), dMeter2Info_getWarpPlayerNo(),
@@ -1469,7 +1904,9 @@ void daAlink_c::skipPortalObjWarp() {
/* 8011F9EC-8011FBC0 11A32C 01D4+00 1/1 0/0 0/0 .text checkWarpStart__9daAlink_cFv */
void daAlink_c::checkWarpStart() {
if (dMeter2Info_getWarpStatus() != 0) {
- if (dMeter2Info_getWarpStatus() == WARP_DECIDED || dComIfGp_event_compulsory(this, 0, 0xFFFF)) {
+ if (dMeter2Info_getWarpStatus() == WARP_DECIDED ||
+ dComIfGp_event_compulsory(this, 0, 0xFFFF))
+ {
i_onNoResetFlg0(FLG0_UNK_4000);
if (dMeter2Info_getWarpStatus() == WARP_DECIDED) {
const char* portal;
diff --git a/src/d/a/d_a_alink_hvyboots.inc b/src/d/a/d_a_alink_hvyboots.inc
index 61afe884e9..ab287610eb 100644
--- a/src/d/a/d_a_alink_hvyboots.inc
+++ b/src/d/a/d_a_alink_hvyboots.inc
@@ -1,24 +1,3 @@
-#include "dolphin/types.h"
-#include "d/a/d_a_alink.h"
-#include "JSystem/J2DGraph/J2DAnmLoader.h"
-#include "JSystem/J3DGraphLoader/J3DAnmLoader.h"
-#include "JSystem/JMath/JMath.h"
-#include "SSystem/SComponent/c_math.h"
-#include "Z2AudioLib/Z2AudioMgr.h"
-#include "d/com/d_com_inf_game.h"
-#include "d/msg/d_msg_object.h"
-#include "f_op/f_op_actor_mng.h"
-#include "m_Do/m_Do_audio.h"
-#include "m_Do/m_Do_ext.h"
-#include "m_Do/m_Do_mtx.h"
-#include "rel/d/a/d_a_crod/d_a_crod.h"
-#include "rel/d/a/d_a_horse/d_a_horse.h"
-#include "rel/d/a/d_a_scene_exit/d_a_scene_exit.h"
-#include "rel/d/a/d_a_mg_rod/d_a_mg_rod.h"
-#include "rel/d/a/d_a_spinner/d_a_spinner.h"
-#include "rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h"
-#include "rel/d/a/tag/d_a_tag_magne/d_a_tag_magne.h"
-
/* 800E23FC-800E243C 0DCD3C 0040+00 6/6 0/0 0/0 .text concatMagneBootMtx__9daAlink_cFv */
void daAlink_c::concatMagneBootMtx() {
if (i_checkMagneBootsOn()) {
diff --git a/src/d/a/d_a_alink_link.inc b/src/d/a/d_a_alink_link.inc
index 36bfbc8cb4..ea2fb7b208 100644
--- a/src/d/a/d_a_alink_link.inc
+++ b/src/d/a/d_a_alink_link.inc
@@ -3003,23 +3003,23 @@ asm daAlink_c::~daAlink_c() {
/* 800CE208-800CE294 0C8B48 008C+00 1/0 0/0 0/0 .text daAlink_Delete__FP9daAlink_c */
// destructor issue
#ifdef NONMATCHING
-static bool daAlink_Delete(daAlink_c* p_link) {
- if (p_link->getClothesChangeWaitTimer() != 0) {
- p_link->loadModelDVD();
- return false;
- } else if (p_link->getShieldChangeWaitTimer() != 0) {
- p_link->loadShieldModelDVD();
- return false;
+static int daAlink_Delete(daAlink_c* i_this) {
+ if (i_this->getClothesChangeWaitTimer() != 0) {
+ i_this->loadModelDVD();
+ return 0;
+ } else if (i_this->getShieldChangeWaitTimer() != 0) {
+ i_this->loadShieldModelDVD();
+ return 0;
} else {
- delete p_link;
- return true;
+ delete i_this;
+ return 1;
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-static asm bool daAlink_Delete(daAlink_c* param_0) {
+static asm int daAlink_Delete(daAlink_c* i_this) {
nofralloc
#include "asm/d/a/d_a_alink/daAlink_Delete__FP9daAlink_c.s"
}
diff --git a/src/d/d_camera.cpp b/src/d/d_camera.cpp
index ff1c6fe29d..b6b987f295 100644
--- a/src/d/d_camera.cpp
+++ b/src/d/d_camera.cpp
@@ -1711,7 +1711,7 @@ asm void dCamera_c::Stay() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dCamera_c::ChangeModeOK(s32 param_0) {
+asm u8 dCamera_c::ChangeModeOK(s32 param_0) {
nofralloc
#include "asm/d/d_camera/ChangeModeOK__9dCamera_cFl.s"
}