summaryrefslogtreecommitdiff
path: root/src/d
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2024-07-12 23:24:50 -0700
committerGitHub <noreply@github.com>2024-07-13 09:24:50 +0300
commitca1ece683b3eae1a9dcf4fe9ba971d2eb82b64ae (patch)
tree1239ea38a08ba8760bb1c9f5cbf718bef6f03085 /src/d
parent89e14f9f9744cd2b47fe8dd28ee4fffafba0b716 (diff)
Lv5key / Iceblock done (#2177)
* obj_lv5key * obj_iceblock done * remove asm
Diffstat (limited to 'src/d')
-rw-r--r--src/d/a/d_a_alink_grab.inc60
-rw-r--r--src/d/bg/d_bg_s.cpp8
2 files changed, 47 insertions, 21 deletions
diff --git a/src/d/a/d_a_alink_grab.inc b/src/d/a/d_a_alink_grab.inc
index 2d5de4aae0..8a67c37e28 100644
--- a/src/d/a/d_a_alink_grab.inc
+++ b/src/d/a/d_a_alink_grab.inc
@@ -1,3 +1,6 @@
+#include "d/a/d_a_alink.h"
+#include "d/com/d_com_inf_game.h"
+
/* 800E3830-800E3858 0DE170 0028+00 2/2 0/0 0/0 .text daAlink_checkLightBallA__FP10fopAc_ac_c */
static bool daAlink_checkLightBallA(fopAc_ac_c* p_actor) {
if (fopAcM_GetName(p_actor) == PROC_Obj_Carry &&
@@ -127,8 +130,7 @@ BOOL daAlink_c::checkGrabCarryActor() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daAlink_c::checkGrabSlowMoveActor() {
- nofralloc
+asm void daAlink_c::checkGrabSlowMoveActor(){nofralloc
#include "asm/d/a/d_a_alink/checkGrabSlowMoveActor__9daAlink_cFv.s"
}
#pragma pop
@@ -150,8 +152,7 @@ BOOL daAlink_c::checkGrabSideActor() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daAlink_c::setGrabUpperAnime(f32 param_0) {
- nofralloc
+asm void daAlink_c::setGrabUpperAnime(f32 param_0){nofralloc
#include "asm/d/a/d_a_alink/setGrabUpperAnime__9daAlink_cFf.s"
}
#pragma pop
@@ -261,8 +262,7 @@ asm void daAlink_c::setGrabUpperSpeedRate() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daAlink_c::setCarryArmAngle(f32 param_0, f32 param_1) {
- nofralloc
+asm void daAlink_c::setCarryArmAngle(f32 param_0, f32 param_1){nofralloc
#include "asm/d/a/d_a_alink/setCarryArmAngle__9daAlink_cFff.s"
}
#pragma pop
@@ -485,8 +485,7 @@ asm int daAlink_c::procGrabStandInit() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm int daAlink_c::procGrabStand() {
- nofralloc
+asm int daAlink_c::procGrabStand(){nofralloc
#include "asm/d/a/d_a_alink/procGrabStand__9daAlink_cFv.s"
}
#pragma pop
@@ -576,8 +575,7 @@ asm int daAlink_c::procPickPut() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void daAlink_c::checkSetChainPullAnime(s16 param_0) {
- nofralloc
+asm void daAlink_c::checkSetChainPullAnime(s16 param_0){nofralloc
#include "asm/d/a/d_a_alink/checkSetChainPullAnime__9daAlink_cFs.s"
}
#pragma pop
@@ -712,14 +710,42 @@ BOOL daAlink_c::wallGrabButton() {
/* 800E7F3C-800E80A4 0E287C 0168+00 4/4 0/0 0/0 .text
* setPushPullKeepData__9daAlink_cFQ29dBgW_Base13PushPullLabeli */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void daAlink_c::setPushPullKeepData(dBgW_Base::PushPullLabel param_0, int param_1) {
- nofralloc
-#include "asm/d/a/d_a_alink/setPushPullKeepData__9daAlink_cFQ29dBgW_Base13PushPullLabeli.s"
+int daAlink_c::setPushPullKeepData(dBgW_Base::PushPullLabel i_label, int param_1) {
+ if (i_label != dBgW::PPLABEL_NONE) {
+ if (checkPowerGloveGet()) {
+ cLib_onBit<dBgW::PushPullLabel>(i_label, dBgW::PPLABEL_HEAVY);
+ }
+
+ if (field_0x3198) {
+ cLib_onBit<dBgW::PushPullLabel>(i_label, dBgW::PPLABEL_4);
+ }
+ }
+
+ fopAc_ac_c* pp_actor = dComIfG_Bgsp().PushPullCallBack(mPolyInfo1, this, shape_angle.y, i_label);
+ if (pp_actor == NULL) {
+ return 0;
+ }
+
+ cXyz unused;
+ if (i_label != dBgW::PPLABEL_NONE || param_1) {
+ if (pp_actor->shape_angle.y != mProcVar2.field_0x300c) {
+ s16 var_r28 = pp_actor->shape_angle.y - mProcVar2.field_0x300c;
+ mProcVar3.field_0x300e.x += var_r28;
+
+ current.pos.x = field_0x37c8.x + field_0x347c * cM_ssin(mProcVar3.field_0x300e.x);
+ current.pos.z = field_0x37c8.z + field_0x347c * cM_scos(mProcVar3.field_0x300e.x);
+ shape_angle.y += var_r28;
+ current.angle.y += var_r28;
+ }
+
+ current.pos.x += pp_actor->current.pos.x - field_0x37c8.x;
+ current.pos.z += pp_actor->current.pos.z - field_0x37c8.z;
+ }
+
+ field_0x37c8 = pp_actor->current.pos;
+ mProcVar2.field_0x300c = pp_actor->shape_angle.y;
+ return 1;
}
-#pragma pop
/* 800E80A4-800E8148 0E29E4 00A4+00 2/2 0/0 0/0 .text checkPushPullTurnBlock__9daAlink_cFv */
#pragma push
diff --git a/src/d/bg/d_bg_s.cpp b/src/d/bg/d_bg_s.cpp
index e7d089336a..6ce7b939d7 100644
--- a/src/d/bg/d_bg_s.cpp
+++ b/src/d/bg/d_bg_s.cpp
@@ -848,8 +848,8 @@ void dBgS::ArrowStickCallBack(cBgS_PolyInfo const& poly, fopAc_ac_c* param_1, cX
/* 80075C6C-80075D0C 0705AC 00A0+00 0/0 1/1 0/0 .text
* PushPullCallBack__4dBgSFRC13cBgS_PolyInfoP10fopAc_ac_csQ29dBgW_Base13PushPullLabel */
-bool dBgS::PushPullCallBack(cBgS_PolyInfo const& param_0, fopAc_ac_c* param_1, s16 param_2,
- dBgW_Base::PushPullLabel param_3) {
+fopAc_ac_c* dBgS::PushPullCallBack(cBgS_PolyInfo const& param_0, fopAc_ac_c* i_pushActor, s16 i_angle,
+ dBgW_Base::PushPullLabel i_label) {
u16 bg_index = param_0.GetBgIndex();
dBgW_Base* base = m_chk_element[bg_index].m_bgw_base_ptr;
if (!base->ChkUsed()) {
@@ -864,8 +864,8 @@ bool dBgS::PushPullCallBack(cBgS_PolyInfo const& param_0, fopAc_ac_c* param_1, s
return false;
}
- return base->GetPushPullCallback()(m_chk_element[bg_index].m_actor_ptr, param_1, param_2,
- param_3);
+ return base->GetPushPullCallback()(m_chk_element[bg_index].m_actor_ptr, i_pushActor, i_angle,
+ i_label);
}
/* 80075D0C-80075D7C 07064C 0070+00 0/0 8/8 1/1 .text dBgS_CheckBWallPoly__FRC13cBgS_PolyInfo */