mirror of https://github.com/zeldaret/tp.git
Minor d_a_alink fixes (#2534)
This commit is contained in:
parent
70f0ed7ef7
commit
5c86d6d26f
|
@ -21908,11 +21908,17 @@ m_obj__12dEyeHL_mng_c = .sbss:0x80450FA8; // type:object size:0x4 scope:global a
|
||||||
struct_80450FB0 = .sbss:0x80450FB0; // type:object size:0x1 scope:global align:8 data:byte
|
struct_80450FB0 = .sbss:0x80450FB0; // type:object size:0x1 scope:global align:8 data:byte
|
||||||
lbl_80450FB1 = .sbss:0x80450FB1; // type:object size:0x1 data:byte
|
lbl_80450FB1 = .sbss:0x80450FB1; // type:object size:0x1 data:byte
|
||||||
lbl_80450FB2 = .sbss:0x80450FB2; // type:object size:0x1 data:byte
|
lbl_80450FB2 = .sbss:0x80450FB2; // type:object size:0x1 data:byte
|
||||||
struct_80450FB8 = .sbss:0x80450FB8; // type:object size:0x4 scope:global align:4 data:byte
|
init$11203 = .sbss:0x80450FB8; // type:object size:0x1 scope:global align:1 data:byte
|
||||||
|
init$11207 = .sbss:0x80450FB9; // type:object size:0x1 scope:global align:1 data:byte
|
||||||
|
init$11211 = .sbss:0x80450FBA; // type:object size:0x1 scope:global align:1 data:byte
|
||||||
|
init$11215 = .sbss:0x80450FBB; // type:object size:0x1 scope:global align:1 data:byte
|
||||||
init$33110 = .sbss:0x80450FBC; // type:object size:0x1 scope:local align:1 data:byte
|
init$33110 = .sbss:0x80450FBC; // type:object size:0x1 scope:local align:1 data:byte
|
||||||
init$33113 = .sbss:0x80450FBD; // type:object size:0x1 scope:local align:1 data:byte
|
init$33113 = .sbss:0x80450FBD; // type:object size:0x1 scope:local align:1 data:byte
|
||||||
it$36766 = .sbss:0x80450FC0; // type:object size:0x4 scope:local align:4 data:4byte
|
it$36766 = .sbss:0x80450FC0; // type:object size:0x4 scope:local align:4 data:4byte
|
||||||
struct_80450FC4 = .sbss:0x80450FC4; // type:object size:0x4 scope:local align:4 data:byte
|
init$37466 = .sbss:0x80450FC4; // type:object size:0x1 scope:local align:4 data:byte
|
||||||
|
lbl_80450FC5 = .sbss:0x80450FC5; // type:object size:0x1 data:byte
|
||||||
|
lbl_80450FC6 = .sbss:0x80450FC6; // type:object size:0x1 data:byte
|
||||||
|
lbl_80450FC7 = .sbss:0x80450FC7; // type:object size:0x1 data:byte
|
||||||
m_eye_move_flg = .sbss:0x80450FC8; // type:object size:0x1 scope:local align:1 data:byte
|
m_eye_move_flg = .sbss:0x80450FC8; // type:object size:0x1 scope:local align:1 data:byte
|
||||||
m_morf_frame__16daAlink_matAnm_c = .sbss:0x80450FC9; // type:object size:0x1 scope:global align:1 data:byte
|
m_morf_frame__16daAlink_matAnm_c = .sbss:0x80450FC9; // type:object size:0x1 scope:global align:1 data:byte
|
||||||
bgWaitFlg = .sbss:0x80450FCC; // type:object size:0x4 scope:local align:4 data:4byte
|
bgWaitFlg = .sbss:0x80450FCC; // type:object size:0x4 scope:local align:4 data:4byte
|
||||||
|
|
|
@ -151,6 +151,10 @@ public:
|
||||||
genNodeSub(label, obj, param_2, param_3);
|
genNodeSub(label, obj, param_2, param_3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void endUpdateNode() {
|
||||||
|
// empty function
|
||||||
|
}
|
||||||
|
|
||||||
void startUpdateNode(JORReflexible* obj) {
|
void startUpdateNode(JORReflexible* obj) {
|
||||||
putNode(obj);
|
putNode(obj);
|
||||||
}
|
}
|
||||||
|
@ -240,6 +244,7 @@ public:
|
||||||
|
|
||||||
void updateControl(u32 mode, u32 id, u32 param_2);
|
void updateControl(u32 mode, u32 id, u32 param_2);
|
||||||
void updateControl(u32 mode, u32 id, const char* param_2);
|
void updateControl(u32 mode, u32 id, const char* param_2);
|
||||||
|
void updateLabel(u32 mode, u32 id, const char* param_2) { updateControl(mode, id, param_2); }
|
||||||
void updateSliderSub(u32 mode, u32 id, s32 value, s32 rangeMin, s32 rangeMax,
|
void updateSliderSub(u32 mode, u32 id, s32 value, s32 rangeMin, s32 rangeMax,
|
||||||
u32 param_5);
|
u32 param_5);
|
||||||
void updateCheckBoxSub(u32 mode, u32 id, u16 value, u16 mask, u32 param_4);
|
void updateCheckBoxSub(u32 mode, u32 id, u16 value, u16 mask, u32 param_4);
|
||||||
|
|
|
@ -3,8 +3,6 @@
|
||||||
|
|
||||||
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
|
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
|
||||||
#include "JSystem/J3DGraphBase/J3DMatBlock.h"
|
#include "JSystem/J3DGraphBase/J3DMatBlock.h"
|
||||||
#include "JSystem/J3DGraphBase/J3DMaterial.h"
|
|
||||||
#include "Z2AudioLib/Z2Creature.h"
|
|
||||||
#include "Z2AudioLib/Z2WolfHowlMgr.h"
|
#include "Z2AudioLib/Z2WolfHowlMgr.h"
|
||||||
#include "d/actor/d_a_player.h"
|
#include "d/actor/d_a_player.h"
|
||||||
#include "d/actor/d_a_tag_mmsg.h"
|
#include "d/actor/d_a_tag_mmsg.h"
|
||||||
|
@ -228,6 +226,8 @@ public:
|
||||||
/* 80140B88 */ daAlinkHIO_c();
|
/* 80140B88 */ daAlinkHIO_c();
|
||||||
/* 80140C10 */ virtual ~daAlinkHIO_c();
|
/* 80140C10 */ virtual ~daAlinkHIO_c();
|
||||||
|
|
||||||
|
void jumpStateUpdate(const cXyz*, const cXyz*, f32);
|
||||||
|
|
||||||
/* 0x04 */ u8 field_0x4[0xC - 0x4];
|
/* 0x04 */ u8 field_0x4[0xC - 0x4];
|
||||||
/* 0x0C */ daAlinkHIO_cut_c mCut;
|
/* 0x0C */ daAlinkHIO_cut_c mCut;
|
||||||
/* 0x0D */ u8 field_0xD[0x4B - 0xD];
|
/* 0x0D */ u8 field_0xD[0x4B - 0xD];
|
||||||
|
|
|
@ -24,7 +24,7 @@ void mDoMtx_ZrotM(Mtx mtx, s16 z);
|
||||||
bool mDoMtx_inverseTranspose(f32 const (*param_0)[4], f32 (*param_1)[4]);
|
bool mDoMtx_inverseTranspose(f32 const (*param_0)[4], f32 (*param_1)[4]);
|
||||||
void mDoMtx_QuatConcat(Quaternion const* param_0, Quaternion const* param_1, Quaternion* param_2);
|
void mDoMtx_QuatConcat(Quaternion const* param_0, Quaternion const* param_1, Quaternion* param_2);
|
||||||
|
|
||||||
inline void mDoMtx_multVecSR(Mtx m, const Vec* src, Vec* dst) {
|
inline void mDoMtx_multVecSR(const Mtx m, const Vec* src, Vec* dst) {
|
||||||
MTXMultVecSR(m, src, dst);
|
MTXMultVecSR(m, src, dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -84,6 +84,23 @@ static const char l_sWShdArcName[] = "SWShd";
|
||||||
/* 80452C90-80452C98 001290 0006+02 7/7 0/0 0/0 .sdata2 l_arcName */
|
/* 80452C90-80452C98 001290 0006+02 7/7 0/0 0/0 .sdata2 l_arcName */
|
||||||
static const char l_arcName[] = "Alink";
|
static const char l_arcName[] = "Alink";
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
void daAlinkHIO_c::jumpStateUpdate(const cXyz* param_0, const cXyz* param_1, f32 param_2) {
|
||||||
|
char buf[68];
|
||||||
|
|
||||||
|
f32 xDiff = param_0->x - param_1->x;
|
||||||
|
f32 zDiff = param_0->z - param_1->z;
|
||||||
|
JORMContext* ctx = attachJORMContext(8);
|
||||||
|
ctx->startUpdateNode(this);
|
||||||
|
sprintf(buf, "水平距離 %-8.3f", JMAFastSqrt(xDiff * xDiff + zDiff * zDiff));
|
||||||
|
ctx->updateLabel(2, 0x4000006, buf);
|
||||||
|
sprintf(buf, "最頂点 %-8.3f", param_2);
|
||||||
|
ctx->updateLabel(2, 0x4000007, buf);
|
||||||
|
ctx->endUpdateNode();
|
||||||
|
releaseJORMContext(ctx);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* 8009D884-8009D88C 0981C4 0008+00 0/0 0/0 13/13 .text getAlinkArcName__9daAlink_cFv */
|
/* 8009D884-8009D88C 0981C4 0008+00 0/0 0/0 13/13 .text getAlinkArcName__9daAlink_cFv */
|
||||||
const char* daAlink_c::getAlinkArcName() {
|
const char* daAlink_c::getAlinkArcName() {
|
||||||
return l_arcName;
|
return l_arcName;
|
||||||
|
@ -620,8 +637,6 @@ daAlink_procFunc daAlink_c::m_demoInitTable[] = {
|
||||||
NULL,
|
NULL,
|
||||||
};
|
};
|
||||||
|
|
||||||
#include "d/actor/d_a_alink_link.inc"
|
|
||||||
|
|
||||||
/* 8038FA48-8038FA54 01C0A8 000C+00 0/0 0/0 0/0 .rodata l_crawlStartFrontOffset */
|
/* 8038FA48-8038FA54 01C0A8 000C+00 0/0 0/0 0/0 .rodata l_crawlStartFrontOffset */
|
||||||
static f32 const l_crawlStartFrontOffset[3] = {0.0f, 30.0f, 112.0f};
|
static f32 const l_crawlStartFrontOffset[3] = {0.0f, 30.0f, 112.0f};
|
||||||
|
|
||||||
|
@ -707,6 +722,10 @@ static s16 const l_insectNameList[12] = {
|
||||||
PROC_Obj_Kam, PROC_Obj_Ten, PROC_Obj_Kat, PROC_Obj_Tombo, PROC_Obj_Ari, PROC_Obj_Kag,
|
PROC_Obj_Kam, PROC_Obj_Ten, PROC_Obj_Kat, PROC_Obj_Tombo, PROC_Obj_Ari, PROC_Obj_Kag,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
f32 l_jumpTop;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* 8038FBD4-8038FC24 01C234 0050+00 0/1 0/0 0/0 .rodata m_mainBckShield__9daAlink_c */
|
/* 8038FBD4-8038FC24 01C234 0050+00 0/1 0/0 0/0 .rodata m_mainBckShield__9daAlink_c */
|
||||||
daAlink_BckData const daAlink_c::m_mainBckShield[20] = {
|
daAlink_BckData const daAlink_c::m_mainBckShield[20] = {
|
||||||
{0x0025, 0x0025}, {0x0023, 0x0023}, {0x0012, 0x001B}, {0x0010, 0x001B}, {0x0021, 0x0021},
|
{0x0025, 0x0025}, {0x0023, 0x0023}, {0x0012, 0x001B}, {0x0010, 0x001B}, {0x0021, 0x0021},
|
||||||
|
@ -1258,6 +1277,10 @@ daAlink_FaceTexData const daAlink_c::m_faceTexDataTable[] = {
|
||||||
0x040D, 0x03A7,
|
0x040D, 0x03A7,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const Vec lit_5908 = { 0.0f, 0.0f, 0.0f };
|
||||||
|
|
||||||
|
#include "d/actor/d_a_alink_link.inc"
|
||||||
|
|
||||||
#include "d/actor/d_a_alink_cut.inc"
|
#include "d/actor/d_a_alink_cut.inc"
|
||||||
|
|
||||||
#include "d/actor/d_a_alink_damage.inc"
|
#include "d/actor/d_a_alink_damage.inc"
|
||||||
|
@ -1908,7 +1931,7 @@ void daAlink_c::setMatrixWorldAxisRot(MtxP param_0, s16 param_1, s16 param_2, s1
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 8009DD90-8009E7B8 0986D0 0A28+00 2/2 0/0 0/0 .text jointControll__9daAlink_cFi */
|
/* 8009DD90-8009E7B8 0986D0 0A28+00 2/2 0/0 0/0 .text jointControll__9daAlink_cFi */
|
||||||
// NONMATCHING - stack issues
|
// NONMATCHING - 0x20 bytes missing from stack at 0x58 (release)/0x60 (debug)
|
||||||
int daAlink_c::jointControll(int param_0) {
|
int daAlink_c::jointControll(int param_0) {
|
||||||
csXyz sp18(0, 0, 0);
|
csXyz sp18(0, 0, 0);
|
||||||
int var_r27 = 0;
|
int var_r27 = 0;
|
||||||
|
@ -1924,25 +1947,26 @@ int daAlink_c::jointControll(int param_0) {
|
||||||
|
|
||||||
csXyz sp10(0, 1, 2);
|
csXyz sp10(0, 1, 2);
|
||||||
|
|
||||||
|
J3DTransformInfo* oldTransInfo;
|
||||||
if (checkWolf()) {
|
if (checkWolf()) {
|
||||||
if (param_0 == 0) {
|
if (param_0 == 0) {
|
||||||
if (mProcID == PROC_TOOL_DEMO) {
|
if (mProcID == PROC_TOOL_DEMO) {
|
||||||
J3DTransformInfo* temp_r3_3 = field_0x2060->getOldFrameTransInfo(0);
|
oldTransInfo = field_0x2060->getOldFrameTransInfo(0);
|
||||||
temp_r3_3->mTranslate.x = 0.0f;
|
oldTransInfo->mTranslate.x = 0.0f;
|
||||||
temp_r3_3->mTranslate.z = 0.0f;
|
oldTransInfo->mTranslate.z = 0.0f;
|
||||||
} else if (checkRootTransClearMode()) {
|
} else if (checkRootTransClearMode()) {
|
||||||
J3DTransformInfo* temp_r28 = field_0x2060->getOldFrameTransInfo(0);
|
oldTransInfo = field_0x2060->getOldFrameTransInfo(0);
|
||||||
|
|
||||||
if (checkRootTransZClearMode()) {
|
if (checkRootTransZClearMode()) {
|
||||||
temp_r28->mTranslate.z = field_0x3588.z;
|
oldTransInfo->mTranslate.z = field_0x3588.z;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (checkRootTransXClearMode()) {
|
if (checkRootTransXClearMode()) {
|
||||||
temp_r28->mTranslate.x = field_0x3588.x;
|
oldTransInfo->mTranslate.x = field_0x3588.x;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (checkRootTransYClearMode()) {
|
if (checkRootTransYClearMode()) {
|
||||||
temp_r28->mTranslate.y = field_0x33b0;
|
oldTransInfo->mTranslate.y = field_0x33b0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1957,7 +1981,7 @@ int daAlink_c::jointControll(int param_0) {
|
||||||
sp18.set(0, -field_0x2fec, 0);
|
sp18.set(0, -field_0x2fec, 0);
|
||||||
sp10.set(2, 1, 0);
|
sp10.set(2, 1, 0);
|
||||||
} else if (param_0 >= 0x25 && param_0 <= 0x27) {
|
} else if (param_0 >= 0x25 && param_0 <= 0x27) {
|
||||||
sp18.set(0, field_0x3040[param_0 + 5], 0);
|
sp18.set(0, field_0x3094[param_0 - 0x25], 0);
|
||||||
sp10.set(2, 1, 0);
|
sp10.set(2, 1, 0);
|
||||||
} else if (param_0 == 2) {
|
} else if (param_0 == 2) {
|
||||||
sp18.set(0, -field_0x2fec, 0);
|
sp18.set(0, -field_0x2fec, 0);
|
||||||
|
@ -1989,19 +2013,19 @@ int daAlink_c::jointControll(int param_0) {
|
||||||
}
|
}
|
||||||
} else if (param_0 == 0) {
|
} else if (param_0 == 0) {
|
||||||
if (mProcID == PROC_TOOL_DEMO || mProcID == PROC_GANON_FINISH) {
|
if (mProcID == PROC_TOOL_DEMO || mProcID == PROC_GANON_FINISH) {
|
||||||
J3DTransformInfo* temp_r3_4 = field_0x2060->getOldFrameTransInfo(0);
|
oldTransInfo = field_0x2060->getOldFrameTransInfo(0);
|
||||||
temp_r3_4->mTranslate.x = 0.0f;
|
oldTransInfo->mTranslate.x = 0.0f;
|
||||||
temp_r3_4->mTranslate.z = 0.0f;
|
oldTransInfo->mTranslate.z = 0.0f;
|
||||||
} else if (checkRootTransClearMode()) {
|
} else if (checkRootTransClearMode()) {
|
||||||
J3DTransformInfo* temp_r28_2 = field_0x2060->getOldFrameTransInfo(0);
|
oldTransInfo = field_0x2060->getOldFrameTransInfo(0);
|
||||||
if (checkRootTransZClearMode()) {
|
if (checkRootTransZClearMode()) {
|
||||||
temp_r28_2->mTranslate.z = field_0x3588.z;
|
oldTransInfo->mTranslate.z = field_0x3588.z;
|
||||||
}
|
}
|
||||||
if (checkRootTransXClearMode()) {
|
if (checkRootTransXClearMode()) {
|
||||||
temp_r28_2->mTranslate.x = field_0x3588.x;
|
oldTransInfo->mTranslate.x = field_0x3588.x;
|
||||||
}
|
}
|
||||||
if (checkRootTransYClearMode()) {
|
if (checkRootTransYClearMode()) {
|
||||||
temp_r28_2->mTranslate.y = field_0x33b0;
|
oldTransInfo->mTranslate.y = field_0x33b0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2942,9 +2966,11 @@ cXyz* daAlink_c::getNeckAimPos(cXyz* param_0, int* param_1, int param_2) {
|
||||||
// NONMATCHING - regalloc / one clib_minMaxLimit instance with issues
|
// NONMATCHING - regalloc / one clib_minMaxLimit instance with issues
|
||||||
s16 daAlink_c::getNeckAimAngle(cXyz* param_0, s16* param_1, s16* param_2, s16* param_3,
|
s16 daAlink_c::getNeckAimAngle(cXyz* param_0, s16* param_1, s16* param_2, s16* param_3,
|
||||||
s16* param_4) {
|
s16* param_4) {
|
||||||
|
s16 sp1A;
|
||||||
|
s16 sp18;
|
||||||
s16 sp16 = field_0x2fe6 + mBodyAngle.y;
|
s16 sp16 = field_0x2fe6 + mBodyAngle.y;
|
||||||
if ((mProcID == PROC_GOAT_CATCH && mProcVar1.field_0x300a == 0) || (mProcID == PROC_HAND_PAT && mProcVar2.field_0x300c == 0)) {
|
if ((mProcID == PROC_GOAT_CATCH && mProcVar1.field_0x300a == 0) || (mProcID == PROC_HAND_PAT && mProcVar2.field_0x300c == 0)) {
|
||||||
sp16 += 0x8000;
|
sp16 -= (s16)0x8000;
|
||||||
}
|
}
|
||||||
|
|
||||||
cXyz sp28 = eyePos - field_0x34e0;
|
cXyz sp28 = eyePos - field_0x34e0;
|
||||||
|
@ -2952,8 +2978,8 @@ s16 daAlink_c::getNeckAimAngle(cXyz* param_0, s16* param_1, s16* param_2, s16* p
|
||||||
|
|
||||||
s16 sp14 = sp28.atan2sY_XZ();
|
s16 sp14 = sp28.atan2sY_XZ();
|
||||||
s16 sp12 = sp28.atan2sX_Z();
|
s16 sp12 = sp28.atan2sX_Z();
|
||||||
s16 sp1A = sp14 - field_0x3124;
|
sp1A = sp14 - field_0x3124;
|
||||||
s16 sp18 = (sp12 - sp16) - field_0x3126;
|
sp18 = (sp12 - sp16) - field_0x3126;
|
||||||
|
|
||||||
if (checkModeFlg(0x08000100) && param_0 != NULL && !checkWolfHeadDamageAnime() && !checkDashDamageAnime()) {
|
if (checkModeFlg(0x08000100) && param_0 != NULL && !checkWolfHeadDamageAnime() && !checkDashDamageAnime()) {
|
||||||
cXyz sp1C = *param_0 - field_0x34e0;
|
cXyz sp1C = *param_0 - field_0x34e0;
|
||||||
|
@ -3626,7 +3652,6 @@ int daAlink_c::setLegAngle(f32 param_0, daAlink_footData_c* param_1, s16* param_
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 800A3430-800A39B8 09DD70 0588+00 1/1 0/0 0/0 .text footBgCheck__9daAlink_cFv */
|
/* 800A3430-800A39B8 09DD70 0588+00 1/1 0/0 0/0 .text footBgCheck__9daAlink_cFv */
|
||||||
// NONMATCHING - regalloc
|
|
||||||
void daAlink_c::footBgCheck() {
|
void daAlink_c::footBgCheck() {
|
||||||
static Vec const localLeftFootOffset = {-3.0f, 13.0f, 0.0f};
|
static Vec const localLeftFootOffset = {-3.0f, 13.0f, 0.0f};
|
||||||
static Vec const localRightFootOffset = {-3.0f, -13.0f, 0.0f};
|
static Vec const localRightFootOffset = {-3.0f, -13.0f, 0.0f};
|
||||||
|
@ -3638,8 +3663,9 @@ void daAlink_c::footBgCheck() {
|
||||||
cM3dGPla sp98;
|
cM3dGPla sp98;
|
||||||
f32 sp30[2];
|
f32 sp30[2];
|
||||||
|
|
||||||
|
int sp2C;
|
||||||
u32 sp28 = checkModeFlg(1);
|
u32 sp28 = checkModeFlg(1);
|
||||||
int i;
|
int i; // r28
|
||||||
f32* sp24;
|
f32* sp24;
|
||||||
|
|
||||||
daAlink_footData_c* var_r29 = mFootData1;
|
daAlink_footData_c* var_r29 = mFootData1;
|
||||||
|
@ -3653,7 +3679,9 @@ void daAlink_c::footBgCheck() {
|
||||||
mDoMtx_multVec(mpLinkModel->getAnmMtx(0x19), &localRightFootOffset, &sp68[1]);
|
mDoMtx_multVec(mpLinkModel->getAnmMtx(0x19), &localRightFootOffset, &sp68[1]);
|
||||||
mDoMtx_multVec(mpLinkModel->getAnmMtx(0x1A), &localRightToeOffset, &sp80[1]);
|
mDoMtx_multVec(mpLinkModel->getAnmMtx(0x1A), &localRightToeOffset, &sp80[1]);
|
||||||
|
|
||||||
BOOL sp1C = (!mLinkAcch.ChkGroundHit() || checkMagneBootsOn()) || (mLinkAcch.ChkGroundHit() && mSinkShapeOffset < 0.0f) || checkModeFlg(0x78C52);
|
BOOL sp1C = !mLinkAcch.ChkGroundHit() || checkMagneBootsOn() || (mLinkAcch.ChkGroundHit() && mSinkShapeOffset < 0.0f) || checkModeFlg(0x78C52);
|
||||||
|
|
||||||
|
f32 var_f30;
|
||||||
|
|
||||||
for (i = 0; i < 2; i++, var_r29++, sp24++) {
|
for (i = 0; i < 2; i++, var_r29++, sp24++) {
|
||||||
cXyz sp5C = (sp80[i] + sp68[i]) * 0.5f;
|
cXyz sp5C = (sp80[i] + sp68[i]) * 0.5f;
|
||||||
|
@ -3692,7 +3720,6 @@ void daAlink_c::footBgCheck() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int sp2C;
|
|
||||||
if (sp1C != 0) {
|
if (sp1C != 0) {
|
||||||
sp2C = 2;
|
sp2C = 2;
|
||||||
} else {
|
} else {
|
||||||
|
@ -3702,7 +3729,7 @@ void daAlink_c::footBgCheck() {
|
||||||
sp2C = 1;
|
sp2C = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
var_f31 = sp30[sp2C];;
|
var_f31 = sp30[sp2C];
|
||||||
}
|
}
|
||||||
|
|
||||||
setSandShapeOffset();
|
setSandShapeOffset();
|
||||||
|
@ -3727,7 +3754,7 @@ void daAlink_c::footBgCheck() {
|
||||||
sp10 = 0;
|
sp10 = 0;
|
||||||
spE = 0;
|
spE = 0;
|
||||||
} else {
|
} else {
|
||||||
f32 var_f30 = sp30[i] - mpLinkModel->getBaseTRMtx()[1][3];
|
var_f30 = sp30[i] - mpLinkModel->getBaseTRMtx()[1][3];
|
||||||
if (var_f30 > l_autoUpHeight) {
|
if (var_f30 > l_autoUpHeight) {
|
||||||
var_f30 = l_autoUpHeight;
|
var_f30 = l_autoUpHeight;
|
||||||
}
|
}
|
||||||
|
@ -3740,9 +3767,9 @@ void daAlink_c::footBgCheck() {
|
||||||
|
|
||||||
if ((sp10 * var_r29->field_0x6) < 0 && abs(sp10 - var_r29->field_0x6) >= 0x8000) {
|
if ((sp10 * var_r29->field_0x6) < 0 && abs(sp10 - var_r29->field_0x6) >= 0x8000) {
|
||||||
if (sp10 >= 0) {
|
if (sp10 >= 0) {
|
||||||
sp10 -= 0x4000;
|
sp10 -= (s16)0x4000;
|
||||||
} else {
|
} else {
|
||||||
sp10 += 0x4000;
|
sp10 += (s16)0x4000;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3760,7 +3787,6 @@ void daAlink_c::footBgCheck() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 800A39B8-800A3C8C 09E2F8 02D4+00 1/1 0/0 0/0 .text handBgCheck__9daAlink_cFv */
|
/* 800A39B8-800A3C8C 09E2F8 02D4+00 1/1 0/0 0/0 .text handBgCheck__9daAlink_cFv */
|
||||||
// NONMATCHING - stack / regalloc
|
|
||||||
void daAlink_c::handBgCheck() {
|
void daAlink_c::handBgCheck() {
|
||||||
static Vec const localHandPos[] = {
|
static Vec const localHandPos[] = {
|
||||||
{22.096375f, 5.4923248f, 0.0f},
|
{22.096375f, 5.4923248f, 0.0f},
|
||||||
|
@ -3771,6 +3797,12 @@ void daAlink_c::handBgCheck() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
cXyz* var_r28;
|
||||||
|
s16* var_r29;
|
||||||
|
int i; // r27
|
||||||
|
daAlink_footData_c* var_r26 = mFootData2;
|
||||||
|
f32* var_r25;
|
||||||
|
|
||||||
if (mProcID == PROC_HANG_CLIMB) {
|
if (mProcID == PROC_HANG_CLIMB) {
|
||||||
if (mUnderFrameCtrl[0].getFrame() >= 9.0f) {
|
if (mUnderFrameCtrl[0].getFrame() >= 9.0f) {
|
||||||
setMatrixOffset(&field_0x2ba4, 0.0f);
|
setMatrixOffset(&field_0x2ba4, 0.0f);
|
||||||
|
@ -3778,19 +3810,18 @@ void daAlink_c::handBgCheck() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cXyz sp38;
|
cXyz sp38[2];
|
||||||
cXyz sp44;
|
|
||||||
f32 sp20[2];
|
f32 sp20[2];
|
||||||
s16 sp18[2];
|
s16 sp18[2];
|
||||||
|
|
||||||
cXyz* var_r28 = &sp38;
|
var_r28 = sp38;
|
||||||
s16* var_r29 = sp18;
|
var_r29 = sp18;
|
||||||
f32* var_r25 = sp20;
|
var_r25 = sp20;
|
||||||
|
|
||||||
mDoMtx_stack_c::transS(current.pos);
|
mDoMtx_stack_c::transS(current.pos);
|
||||||
mDoMtx_stack_c::YrotM(shape_angle.y);
|
mDoMtx_stack_c::YrotM(shape_angle.y);
|
||||||
|
|
||||||
for (int i = 0; i < 2; i++, var_r28++, var_r25++, var_r29++) {
|
for (i = 0; i < 2; i++, var_r28++, var_r25++, var_r26++, var_r29++) {
|
||||||
mDoMtx_stack_c::multVec(&localHandPos[i], var_r28);
|
mDoMtx_stack_c::multVec(&localHandPos[i], var_r28);
|
||||||
|
|
||||||
cXyz sp28(var_r28->x, var_r28->y + l_autoUpHeight, var_r28->z);
|
cXyz sp28(var_r28->x, var_r28->y + l_autoUpHeight, var_r28->z);
|
||||||
|
@ -3823,12 +3854,13 @@ void daAlink_c::handBgCheck() {
|
||||||
|
|
||||||
setMatrixOffset(&field_0x2ba4, sp20[sp14] - current.pos.y);
|
setMatrixOffset(&field_0x2ba4, sp20[sp14] - current.pos.y);
|
||||||
|
|
||||||
daAlink_footData_c* var_r26 = mFootData2;
|
var_r28 = sp38;
|
||||||
s16* var_r29_2 = sp18;
|
var_r26 = mFootData2;
|
||||||
|
var_r29 = sp18;
|
||||||
s16 spA;
|
s16 spA;
|
||||||
s16 sp8;
|
s16 sp8;
|
||||||
|
|
||||||
for (int i = 0; i < 2; i++, var_r29_2++, var_r26++) {
|
for (i = 0; i < 2; i++, var_r28++, var_r29++, var_r26++) {
|
||||||
f32 temp_f30 = sp20[i] - mpLinkModel->getBaseTRMtx()[1][3];
|
f32 temp_f30 = sp20[i] - mpLinkModel->getBaseTRMtx()[1][3];
|
||||||
if (!(temp_f30 < -1.0f) || !setLegAngle(temp_f30, var_r26, &spA, &sp8, 0)) {
|
if (!(temp_f30 < -1.0f) || !setLegAngle(temp_f30, var_r26, &spA, &sp8, 0)) {
|
||||||
spA = 0;
|
spA = 0;
|
||||||
|
@ -3837,7 +3869,7 @@ void daAlink_c::handBgCheck() {
|
||||||
|
|
||||||
cLib_addCalcAngleS(&var_r26->field_0x6, spA, 2, 0x1800, 0x10);
|
cLib_addCalcAngleS(&var_r26->field_0x6, spA, 2, 0x1800, 0x10);
|
||||||
cLib_addCalcAngleS(&var_r26->field_0x4, sp8, 2, 0x1800, 0x10);
|
cLib_addCalcAngleS(&var_r26->field_0x4, sp8, 2, 0x1800, 0x10);
|
||||||
cLib_addCalcAngleS(&var_r26->field_0x2, *var_r29_2, 2, 0x1800, 0x10);
|
cLib_addCalcAngleS(&var_r26->field_0x2, *var_r29, 2, 0x1800, 0x10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6412,13 +6444,17 @@ void daAlink_c::setCollisionPos() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 800ABDB8-800AC328 0A66F8 0570+00 1/1 0/0 0/0 .text setCollision__9daAlink_cFv */
|
/* 800ABDB8-800AC328 0A66F8 0570+00 1/1 0/0 0/0 .text setCollision__9daAlink_cFv */
|
||||||
// NONMATCHING - regalloc / minor issues
|
|
||||||
void daAlink_c::setCollision() {
|
void daAlink_c::setCollision() {
|
||||||
field_0x814.Move();
|
field_0x814.Move();
|
||||||
field_0x173c.Move();
|
field_0x173c.Move();
|
||||||
|
|
||||||
dCcD_Cyl* var_r26 = field_0x850;
|
dCcD_Cyl* var_r26 = field_0x850;
|
||||||
CcG_Tg_HitMark var_r3 = checkMagicArmorNoDamage() ? CcG_Tg_UNK_MARK_8 : CcG_Tg_UNK_MARK_6;
|
CcG_Tg_HitMark var_r3;
|
||||||
|
if (checkMagicArmorNoDamage()) {
|
||||||
|
var_r3 = CcG_Tg_UNK_MARK_8;
|
||||||
|
} else {
|
||||||
|
var_r3 = CcG_Tg_UNK_MARK_6;
|
||||||
|
}
|
||||||
|
|
||||||
if (checkIronBallWaitAnime()) {
|
if (checkIronBallWaitAnime()) {
|
||||||
field_0x2e44.offPassNum(0x11);
|
field_0x2e44.offPassNum(0x11);
|
||||||
|
@ -6426,12 +6462,12 @@ void daAlink_c::setCollision() {
|
||||||
field_0x2e44.onPassNum(0x11);
|
field_0x2e44.onPassNum(0x11);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 3; i++) {
|
int i;
|
||||||
|
for (i = 0; i < 3; i++, var_r26++) {
|
||||||
var_r26->SetTgHitMark(var_r3);
|
var_r26->SetTgHitMark(var_r3);
|
||||||
var_r26++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dCcD_Cyl* var_r31 = field_0x850;
|
var_r26 = field_0x850;
|
||||||
if (checkIronBallWaitAnime() ||
|
if (checkIronBallWaitAnime() ||
|
||||||
(checkPlayerGuardAndAttack() && !checkEndResetFlg1(ERFLG1_UNK_20)))
|
(checkPlayerGuardAndAttack() && !checkEndResetFlg1(ERFLG1_UNK_20)))
|
||||||
{
|
{
|
||||||
|
@ -6442,35 +6478,31 @@ void daAlink_c::setCollision() {
|
||||||
var_r27 = 0;
|
var_r27 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 0; i < 3; i++) {
|
for (i = 0; i < 3; i++, var_r26++) {
|
||||||
if (var_r27) {
|
if (var_r27) {
|
||||||
var_r31->OnTgSpShield();
|
var_r26->OnTgSpShield();
|
||||||
var_r31->OffTgShield();
|
var_r26->OffTgShield();
|
||||||
} else {
|
} else {
|
||||||
var_r31->OffTgSpShield();
|
var_r26->OffTgSpShield();
|
||||||
var_r31->OnTgShield();
|
var_r26->OnTgShield();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (checkHorseRide()) {
|
if (checkHorseRide()) {
|
||||||
var_r31->OffTgShieldFrontRange();
|
var_r26->OffTgShieldFrontRange();
|
||||||
} else {
|
} else {
|
||||||
var_r31->OnTgShieldFrontRange();
|
var_r26->OnTgShieldFrontRange();
|
||||||
}
|
}
|
||||||
|
|
||||||
var_r31++;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < 3; i++) {
|
for (i = 0; i < 3; i++, var_r26++) {
|
||||||
var_r31->OffTgShield();
|
var_r26->OffTgShield();
|
||||||
var_r31->OffTgSpShield();
|
var_r26->OffTgSpShield();
|
||||||
|
|
||||||
if (checkWolf()) {
|
if (checkWolf()) {
|
||||||
var_r31->OffTgShieldFrontRange();
|
var_r26->OffTgShieldFrontRange();
|
||||||
} else {
|
} else {
|
||||||
var_r31->OnTgShieldFrontRange();
|
var_r26->OnTgShieldFrontRange();
|
||||||
}
|
}
|
||||||
|
|
||||||
var_r31++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6485,7 +6517,7 @@ void daAlink_c::setCollision() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mDamageTimer != 0 || checkModeFlg(8)) {
|
if (mDamageTimer != 0 || checkModeFlg(8)) {
|
||||||
for (int i = 0; i < 3; i++) {
|
for (i = 0; i < 3; i++) {
|
||||||
field_0x850[i].OffTgSetBit();
|
field_0x850[i].OffTgSetBit();
|
||||||
field_0x850[i].ResetTgHit();
|
field_0x850[i].ResetTgHit();
|
||||||
}
|
}
|
||||||
|
@ -6495,7 +6527,7 @@ void daAlink_c::setCollision() {
|
||||||
field_0xFB8.ResetTgHit();
|
field_0xFB8.ResetTgHit();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < 3; i++) {
|
for (i = 0; i < 3; i++) {
|
||||||
field_0x850[i].OnTgSetBit();
|
field_0x850[i].OnTgSetBit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6506,19 +6538,20 @@ void daAlink_c::setCollision() {
|
||||||
|
|
||||||
mDoMtx_multVecSR(getShieldMtx(), &cXyz::BaseZ, &field_0x351c);
|
mDoMtx_multVecSR(getShieldMtx(), &cXyz::BaseZ, &field_0x351c);
|
||||||
|
|
||||||
if (checkIronBallWaitAnime() || field_0x351c.absXZ() > 0.0099999998f) {
|
if (!checkIronBallWaitAnime() && field_0x351c.absXZ() > 0.0099999998f) {
|
||||||
field_0x306c = field_0x351c.atan2sX_Z();
|
field_0x306c = field_0x351c.atan2sX_Z();
|
||||||
} else {
|
} else {
|
||||||
field_0x306c = shape_angle.y + mBodyAngle.y;
|
field_0x306c = shape_angle.y + mBodyAngle.y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// fakematch, should be dComIfG_Ccsp() (same for rest of function)
|
||||||
g_dComIfG_gameInfo.play.mCcs.Set(&field_0x850[0]);
|
g_dComIfG_gameInfo.play.mCcs.Set(&field_0x850[0]);
|
||||||
g_dComIfG_gameInfo.play.mCcs.SetMass(&field_0x850[0], 1);
|
g_dComIfG_gameInfo.play.mCcs.SetMass(&field_0x850[0], 1);
|
||||||
|
|
||||||
if (checkWolf()) {
|
if (checkWolf()) {
|
||||||
setWolfAtCollision();
|
setWolfAtCollision();
|
||||||
|
|
||||||
for (int i = 0; i < 3; i++) {
|
for (i = 1; i < 3; i++) {
|
||||||
g_dComIfG_gameInfo.play.mCcs.Set(&field_0x850[i]);
|
g_dComIfG_gameInfo.play.mCcs.Set(&field_0x850[i]);
|
||||||
g_dComIfG_gameInfo.play.mCcs.SetMass(&field_0x850[i], 1);
|
g_dComIfG_gameInfo.play.mCcs.SetMass(&field_0x850[i], 1);
|
||||||
}
|
}
|
||||||
|
@ -6533,7 +6566,7 @@ void daAlink_c::setCollision() {
|
||||||
g_dComIfG_gameInfo.play.mCcs.Set(&field_0xFB8);
|
g_dComIfG_gameInfo.play.mCcs.Set(&field_0xFB8);
|
||||||
g_dComIfG_gameInfo.play.mCcs.SetMass(&field_0xFB8, 1);
|
g_dComIfG_gameInfo.play.mCcs.SetMass(&field_0xFB8, 1);
|
||||||
} else {
|
} else {
|
||||||
for (int i = 0; i < 3; i++) {
|
for (i = 1; i < 3; i++) {
|
||||||
g_dComIfG_gameInfo.play.mCcs.Set(&field_0x850[i]);
|
g_dComIfG_gameInfo.play.mCcs.Set(&field_0x850[i]);
|
||||||
g_dComIfG_gameInfo.play.mCcs.SetMass(&field_0x850[i], 1);
|
g_dComIfG_gameInfo.play.mCcs.SetMass(&field_0x850[i], 1);
|
||||||
}
|
}
|
||||||
|
@ -6541,16 +6574,13 @@ void daAlink_c::setCollision() {
|
||||||
setAtCollision();
|
setAtCollision();
|
||||||
}
|
}
|
||||||
|
|
||||||
dCcD_Cyl* var_r27_2 = field_0x850;
|
var_r26 = field_0x850;
|
||||||
dCcD_Cyl* var_r26_6 = field_0xC04;
|
dCcD_Cyl* var_r26_6 = field_0xC04;
|
||||||
for (int i = 0; i < 3; i++) {
|
for (i = 0; i < 3; i++, var_r26++, var_r26_6++) {
|
||||||
var_r26_6->SetC(var_r27_2->GetC());
|
var_r26_6->SetC(var_r26->GetC());
|
||||||
var_r26_6->SetR(var_r27_2->GetR());
|
var_r26_6->SetR(var_r26->GetR());
|
||||||
var_r26_6->SetH(var_r27_2->GetH());
|
var_r26_6->SetH(var_r26->GetH());
|
||||||
g_dComIfG_gameInfo.play.mCcs.Set(var_r26_6);
|
dComIfG_Ccsp()->Set(var_r26_6);
|
||||||
|
|
||||||
var_r27_2++;
|
|
||||||
var_r26_6++;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10051,7 +10081,6 @@ f32 daAlink_c::getFrontRollRate() {
|
||||||
|
|
||||||
/* 800B4B7C-800B5284 0AF4BC 0708+00 2/2 0/0 0/0 .text decideCommonDoStatus__9daAlink_cFv
|
/* 800B4B7C-800B5284 0AF4BC 0708+00 2/2 0/0 0/0 .text decideCommonDoStatus__9daAlink_cFv
|
||||||
*/
|
*/
|
||||||
// NONMATCHING - almost, small branch issues
|
|
||||||
void daAlink_c::decideCommonDoStatus() {
|
void daAlink_c::decideCommonDoStatus() {
|
||||||
if (!checkFmChainGrabAnime() && dComIfGp_getDoStatus() == 0) {
|
if (!checkFmChainGrabAnime() && dComIfGp_getDoStatus() == 0) {
|
||||||
bool temp_r3 = checkStageName("R_SP127");
|
bool temp_r3 = checkStageName("R_SP127");
|
||||||
|
@ -10160,7 +10189,7 @@ void daAlink_c::decideCommonDoStatus() {
|
||||||
setDoStatus(0x12);
|
setDoStatus(0x12);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((((checkMagneBootsOn() || checkIronBallWaitAnime() || checkNotJumpSinkLimit()) ||
|
if ((((checkMagneBootsOn() || checkIronBallWaitAnime() || checkNotJumpSinkLimit()) &&
|
||||||
(dComIfGp_getDoStatus() == 0x79 || dComIfGp_getDoStatus() == 0x86 ||
|
(dComIfGp_getDoStatus() == 0x79 || dComIfGp_getDoStatus() == 0x86 ||
|
||||||
dComIfGp_getDoStatus() == 0x30 || dComIfGp_getDoStatus() == 0x77 ||
|
dComIfGp_getDoStatus() == 0x30 || dComIfGp_getDoStatus() == 0x77 ||
|
||||||
dComIfGp_getDoStatus() == 0x19)) ||
|
dComIfGp_getDoStatus() == 0x19)) ||
|
||||||
|
@ -13342,12 +13371,6 @@ void daAlink_c::checkRoofRestart() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 80392094-80392094 01E6F4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
|
||||||
#pragma push
|
|
||||||
#pragma force_active on
|
|
||||||
SECTION_DEAD static char const* const stringBase_803925BA = "F_SP114";
|
|
||||||
#pragma pop
|
|
||||||
|
|
||||||
/* 800BE3E4-800BE9D4 0B8D24 05F0+00 1/1 0/0 0/0 .text checkRestartRoom__9daAlink_cFv */
|
/* 800BE3E4-800BE9D4 0B8D24 05F0+00 1/1 0/0 0/0 .text checkRestartRoom__9daAlink_cFv */
|
||||||
BOOL daAlink_c::checkRestartRoom() {
|
BOOL daAlink_c::checkRestartRoom() {
|
||||||
if (checkMagneBootsOn()) {
|
if (checkMagneBootsOn()) {
|
||||||
|
@ -14736,7 +14759,6 @@ void daAlink_c::changeWarpMaterial(daAlink_c::daAlink_WARP_MAT_MODE i_matMode) {
|
||||||
|
|
||||||
/* 800C1F6C-800C2DA4 0BC8AC 0E38+00 229/229 0/0 0/0 .text
|
/* 800C1F6C-800C2DA4 0BC8AC 0E38+00 229/229 0/0 0/0 .text
|
||||||
* commonProcInit__9daAlink_cFQ29daAlink_c12daAlink_PROC */
|
* commonProcInit__9daAlink_cFQ29daAlink_c12daAlink_PROC */
|
||||||
// almost, some regalloc
|
|
||||||
void daAlink_c::commonProcInit(daAlink_c::daAlink_PROC i_procID) {
|
void daAlink_c::commonProcInit(daAlink_c::daAlink_PROC i_procID) {
|
||||||
if (mProcID == PROC_TOOL_DEMO) {
|
if (mProcID == PROC_TOOL_DEMO) {
|
||||||
speed.y = 0.0f;
|
speed.y = 0.0f;
|
||||||
|
@ -14806,7 +14828,7 @@ void daAlink_c::commonProcInit(daAlink_c::daAlink_PROC i_procID) {
|
||||||
} else if (mProcID == PROC_WOLF_BACKJUMP) {
|
} else if (mProcID == PROC_WOLF_BACKJUMP) {
|
||||||
resetWolfBallGrab();
|
resetWolfBallGrab();
|
||||||
} else if (mProcID == PROC_CHAIN_STRONG_PULL) {
|
} else if (mProcID == PROC_CHAIN_STRONG_PULL) {
|
||||||
mNowAnmPackUpper[2].setRatio(0.0f);
|
mNowAnmPackUpper[2].setRatio(1.0f);
|
||||||
} else if (mProcID == PROC_SCREAM_WAIT || mProcID == PROC_WOLF_SCREAM_WAIT ||
|
} else if (mProcID == PROC_SCREAM_WAIT || mProcID == PROC_WOLF_SCREAM_WAIT ||
|
||||||
mProcID == PROC_ELEC_DAMAGE)
|
mProcID == PROC_ELEC_DAMAGE)
|
||||||
{
|
{
|
||||||
|
@ -14819,16 +14841,29 @@ void daAlink_c::commonProcInit(daAlink_c::daAlink_PROC i_procID) {
|
||||||
cancelFmChainGrabFromOut();
|
cancelFmChainGrabFromOut();
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL prev_proc_fishcast = mProcID == PROC_FISHING_CAST ? TRUE : FALSE;
|
BOOL prev_proc_fishcast;
|
||||||
|
if (mProcID == PROC_FISHING_CAST) {
|
||||||
|
prev_proc_fishcast = TRUE;
|
||||||
|
} else {
|
||||||
|
prev_proc_fishcast = FALSE;
|
||||||
|
}
|
||||||
offNoResetFlg0(FLG0_UNK_2);
|
offNoResetFlg0(FLG0_UNK_2);
|
||||||
|
|
||||||
u32 prev_flg_40000;
|
|
||||||
u32 prev_flg_400;
|
|
||||||
BOOL prev_flg_2;
|
BOOL prev_flg_2;
|
||||||
BOOL prev_flg_20000;
|
BOOL prev_flg_20000;
|
||||||
|
u32 prev_flg_40000;
|
||||||
|
u32 prev_flg_400;
|
||||||
|
|
||||||
prev_flg_20000 = checkModeFlg(0x20000) != 0 ? TRUE : FALSE;
|
if (checkModeFlg(0x20000) != 0) {
|
||||||
prev_flg_2 = !checkModeFlg(0x2) ? TRUE : FALSE;
|
prev_flg_20000 = TRUE;
|
||||||
|
} else {
|
||||||
|
prev_flg_20000 = FALSE;
|
||||||
|
}
|
||||||
|
if (!checkModeFlg(0x2)) {
|
||||||
|
prev_flg_2 = TRUE;
|
||||||
|
} else {
|
||||||
|
prev_flg_2 = FALSE;
|
||||||
|
}
|
||||||
prev_flg_40000 = checkModeFlg(0x40000);
|
prev_flg_40000 = checkModeFlg(0x40000);
|
||||||
prev_flg_400 = checkModeFlg(0x400);
|
prev_flg_400 = checkModeFlg(0x400);
|
||||||
|
|
||||||
|
@ -14953,6 +14988,8 @@ void daAlink_c::commonProcInit(daAlink_c::daAlink_PROC i_procID) {
|
||||||
field_0x2f99 = 0x50;
|
field_0x2f99 = 0x50;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int i;
|
||||||
|
|
||||||
if (checkModeFlg(MODE_NO_COLLISION) || mProcID == PROC_STEP_MOVE || mProcID == PROC_WOLF_TAG_JUMP) {
|
if (checkModeFlg(MODE_NO_COLLISION) || mProcID == PROC_STEP_MOVE || mProcID == PROC_WOLF_TAG_JUMP) {
|
||||||
mLinkAcch.OffLineCheck();
|
mLinkAcch.OffLineCheck();
|
||||||
mLinkAcch.OnLineCheckNone();
|
mLinkAcch.OnLineCheckNone();
|
||||||
|
@ -14962,7 +14999,7 @@ void daAlink_c::commonProcInit(daAlink_c::daAlink_PROC i_procID) {
|
||||||
|
|
||||||
if (!checkWolf()) {
|
if (!checkWolf()) {
|
||||||
daAlink_footData_c* foot_data = mFootData2;
|
daAlink_footData_c* foot_data = mFootData2;
|
||||||
for (int i = 0; i < 2; i++, foot_data++) {
|
for (i = 0; i < 2; i++, foot_data++) {
|
||||||
foot_data->field_0x6 = 0;
|
foot_data->field_0x6 = 0;
|
||||||
foot_data->field_0x4 = 0;
|
foot_data->field_0x4 = 0;
|
||||||
foot_data->field_0x2 = 0;
|
foot_data->field_0x2 = 0;
|
||||||
|
@ -14988,7 +15025,7 @@ void daAlink_c::commonProcInit(daAlink_c::daAlink_PROC i_procID) {
|
||||||
mSight.offLockFlg();
|
mSight.offLockFlg();
|
||||||
|
|
||||||
if (mWolfLockNum != 0 && mProcID != PROC_WOLF_LOCK_ATTACK_TURN && mProcID != PROC_WOLF_LOCK_ATTACK) {
|
if (mWolfLockNum != 0 && mProcID != PROC_WOLF_LOCK_ATTACK_TURN && mProcID != PROC_WOLF_LOCK_ATTACK) {
|
||||||
for (int i = 0; i < mWolfLockNum; i++) {
|
for (i = 0; i < mWolfLockNum; i++) {
|
||||||
mWolfLockAcKeep[i].clearData();
|
mWolfLockAcKeep[i].clearData();
|
||||||
}
|
}
|
||||||
mWolfLockNum = 0;
|
mWolfLockNum = 0;
|
||||||
|
@ -15048,6 +15085,12 @@ void daAlink_c::commonProcInit(daAlink_c::daAlink_PROC i_procID) {
|
||||||
mFallHeight = mLastJumpPos.y;
|
mFallHeight = mLastJumpPos.y;
|
||||||
field_0x33c8 = mLastJumpPos.y;
|
field_0x33c8 = mLastJumpPos.y;
|
||||||
}
|
}
|
||||||
|
#if DEBUG
|
||||||
|
else if (!prev_flg_2 && !checkModeFlg(MODE_JUMP)) {
|
||||||
|
mpHIO->jumpStateUpdate(&mLastJumpPos, ¤t.pos, l_jumpTop);
|
||||||
|
l_jumpTop = 0.0f;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!checkModeFlg(MODE_RIDING) && prev_flg_400) {
|
if (!checkModeFlg(MODE_RIDING) && prev_flg_400) {
|
||||||
rideGetOff();
|
rideGetOff();
|
||||||
|
@ -16993,7 +17036,6 @@ int daAlink_c::procSmallJumpInit(int param_0) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 800C72D4-800C74D4 0C1C14 0200+00 1/0 0/0 0/0 .text procSmallJump__9daAlink_cFv */
|
/* 800C72D4-800C74D4 0C1C14 0200+00 1/0 0/0 0/0 .text procSmallJump__9daAlink_cFv */
|
||||||
// NONMATCHING - one out of order block with sqrt
|
|
||||||
int daAlink_c::procSmallJump() {
|
int daAlink_c::procSmallJump() {
|
||||||
if (checkModeFlg(2)) {
|
if (checkModeFlg(2)) {
|
||||||
if (checkCanoeJumpRide()) {
|
if (checkCanoeJumpRide()) {
|
||||||
|
@ -17012,9 +17054,9 @@ int daAlink_c::procSmallJump() {
|
||||||
mNormalSpeed = daAlinkHIO_smallJump_c0::m.mSpeedH;
|
mNormalSpeed = daAlinkHIO_smallJump_c0::m.mSpeedH;
|
||||||
|
|
||||||
if (checkHeavyStateOn(1, 1) && !checkNoResetFlg0(FLG0_UNDERWATER)) {
|
if (checkHeavyStateOn(1, 1) && !checkNoResetFlg0(FLG0_UNDERWATER)) {
|
||||||
speed.y = JMAFastSqrt(2.0f * ((daAlinkHIO_smallJump_c0::m.mTargetHeightOffset +
|
f32 temp = daAlinkHIO_smallJump_c0::m.mTargetHeightOffset +
|
||||||
(field_0x3478 - current.pos.y)) *
|
(field_0x3478 - current.pos.y);
|
||||||
-(gravity * 2.25f)));
|
speed.y = JMAFastSqrt(2.0f * (temp * -(gravity * 2.25f)));
|
||||||
} else {
|
} else {
|
||||||
speed.y =
|
speed.y =
|
||||||
JMAFastSqrt(2.0f * (-gravity * (daAlinkHIO_smallJump_c0::m.mTargetHeightOffset +
|
JMAFastSqrt(2.0f * (-gravity * (daAlinkHIO_smallJump_c0::m.mTargetHeightOffset +
|
||||||
|
@ -18713,8 +18755,8 @@ int daAlink_c::initShadowScaleLight() {
|
||||||
field_0x375c.x = current.pos.x - (var_f31 * temp_f29);
|
field_0x375c.x = current.pos.x - (var_f31 * temp_f29);
|
||||||
field_0x375c.z = current.pos.z - (var_f31 * temp_f28);
|
field_0x375c.z = current.pos.z - (var_f31 * temp_f28);
|
||||||
} else {
|
} else {
|
||||||
field_0x375c.x = (current.pos.x - (temp_f29 * -30.0f)) - (temp_f28 * 65.0f);
|
field_0x375c.x = current.pos.x - (-30.0f * temp_f29) - (65.0f * temp_f28);
|
||||||
field_0x375c.z = (current.pos.z - (temp_f28 * -30.0f)) + (temp_f29 * 65.0f);
|
field_0x375c.z = current.pos.z - (-30.0f * temp_f28) + (65.0f * temp_f29);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (checkReinRide()) {
|
if (checkReinRide()) {
|
||||||
|
|
|
@ -812,9 +812,3 @@ int daAlink_c::procBottleGet() {
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 80110648-80110654 10AF88 000C+00 0/0 1/0 0/0 .text Insect_Release__9dInsect_cFv */
|
|
||||||
// asm void dInsect_c::Insect_Release() {
|
|
||||||
extern "C" void Insect_Release__9dInsect_cFv() {
|
|
||||||
// NONMATCHING
|
|
||||||
}
|
|
||||||
|
|
|
@ -669,9 +669,8 @@ int daAlink_c::procCrawlMove() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 800F99FC-800F9ABC 0F433C 00C0+00 1/1 0/0 0/0 .text procCrawlAutoMoveInit__9daAlink_cFiP4cXyz */
|
/* 800F99FC-800F9ABC 0F433C 00C0+00 1/1 0/0 0/0 .text procCrawlAutoMoveInit__9daAlink_cFiP4cXyz */
|
||||||
// NONMATCHING - extrwi vs rlwinm
|
|
||||||
int daAlink_c::procCrawlAutoMoveInit(int param_0, cXyz* param_1) {
|
int daAlink_c::procCrawlAutoMoveInit(int param_0, cXyz* param_1) {
|
||||||
BOOL var_r30 = dComIfGp_checkPlayerStatus0(0, 0x2000);
|
BOOL var_r30 = dComIfGp_checkPlayerStatus0(0, 0x2000) != 0 ? TRUE : FALSE;
|
||||||
commonProcInit(PROC_CRAWL_AUTO_MOVE);
|
commonProcInit(PROC_CRAWL_AUTO_MOVE);
|
||||||
field_0x37c8 = *param_1;
|
field_0x37c8 = *param_1;
|
||||||
field_0x33cc = 1.0f;
|
field_0x33cc = 1.0f;
|
||||||
|
|
|
@ -1338,10 +1338,9 @@ void daAlink_c::setHighModelBck(mDoExt_bckAnm* i_bck, u16 i_anmID) {
|
||||||
|
|
||||||
/* 801190A4-80119134 1139E4 0090+00 1/1 0/0 0/0 .text setHighModelFaceBtk__9daAlink_cFUs
|
/* 801190A4-80119134 1139E4 0090+00 1/1 0/0 0/0 .text setHighModelFaceBtk__9daAlink_cFUs
|
||||||
*/
|
*/
|
||||||
// NONMATCHING - extra mr
|
|
||||||
void daAlink_c::setHighModelFaceBtk(u16 i_anmID) {
|
void daAlink_c::setHighModelFaceBtk(u16 i_anmID) {
|
||||||
J3DAnmTextureSRTKey* btk = (J3DAnmTextureSRTKey*)dComIfG_getObjectIDRes(
|
J3DAnmTextureSRTKey* btk = static_cast<J3DAnmTextureSRTKey*>(dComIfG_getObjectIDRes(
|
||||||
dStage_roomControl_c::getDemoArcName(), i_anmID);
|
dStage_roomControl_c::getDemoArcName(), i_anmID));
|
||||||
|
|
||||||
if (btk && field_0x068c != btk) {
|
if (btk && field_0x068c != btk) {
|
||||||
btk->searchUpdateMaterialID(mpDemoFCTongueModel->getModelData());
|
btk->searchUpdateMaterialID(mpDemoFCTongueModel->getModelData());
|
||||||
|
@ -1356,8 +1355,8 @@ void daAlink_c::setHighModelFaceBtk(u16 i_anmID) {
|
||||||
* setDemoBrk__9daAlink_cFPP15J3DAnmTevRegKeyP8J3DModelUs */
|
* setDemoBrk__9daAlink_cFPP15J3DAnmTevRegKeyP8J3DModelUs */
|
||||||
// NONMATCHING - extra mr
|
// NONMATCHING - extra mr
|
||||||
void daAlink_c::setDemoBrk(J3DAnmTevRegKey** param_0, J3DModel* param_1, u16 i_anmID) {
|
void daAlink_c::setDemoBrk(J3DAnmTevRegKey** param_0, J3DModel* param_1, u16 i_anmID) {
|
||||||
J3DAnmTevRegKey* brk =
|
J3DAnmTevRegKey* brk = static_cast<J3DAnmTevRegKey*>(dComIfG_getObjectIDRes(
|
||||||
(J3DAnmTevRegKey*)dComIfG_getObjectIDRes(dStage_roomControl_c::getDemoArcName(), i_anmID);
|
dStage_roomControl_c::getDemoArcName(), i_anmID));
|
||||||
|
|
||||||
if (brk != NULL && *param_0 != brk) {
|
if (brk != NULL && *param_0 != brk) {
|
||||||
brk->searchUpdateMaterialID(param_1->getModelData());
|
brk->searchUpdateMaterialID(param_1->getModelData());
|
||||||
|
|
|
@ -958,7 +958,6 @@ static const u16 effNameWater[] = {
|
||||||
};
|
};
|
||||||
|
|
||||||
/* 80122F78-801233A4 11D8B8 042C+00 1/1 0/0 0/0 .text setCutTurnEffect__9daAlink_cFv */
|
/* 80122F78-801233A4 11D8B8 042C+00 1/1 0/0 0/0 .text setCutTurnEffect__9daAlink_cFv */
|
||||||
// NONMATCHING - should match when data order is fixed
|
|
||||||
void daAlink_c::setCutTurnEffect() {
|
void daAlink_c::setCutTurnEffect() {
|
||||||
static Vec const waterEffScale = {1.5f, 1.5f, 1.5f};
|
static Vec const waterEffScale = {1.5f, 1.5f, 1.5f};
|
||||||
|
|
||||||
|
@ -1956,14 +1955,15 @@ static void setBezierPos(cXyz const* start, cXyz const* control_1, cXyz const* c
|
||||||
|
|
||||||
/* 8012589C-80125B0C 1201DC 0270+00 1/1 0/0 0/0 .text
|
/* 8012589C-80125B0C 1201DC 0270+00 1/1 0/0 0/0 .text
|
||||||
* copyBlur__14daAlink_blur_cFPC4cXyzPC4cXyzPC4cXyz */
|
* copyBlur__14daAlink_blur_cFPC4cXyzPC4cXyzPC4cXyz */
|
||||||
// NONMATCHING
|
|
||||||
void daAlink_blur_c::copyBlur(cXyz const* param_0, cXyz const* param_1, cXyz const* param_2) {
|
void daAlink_blur_c::copyBlur(cXyz const* param_0, cXyz const* param_1, cXyz const* param_2) {
|
||||||
for (int i = 59 - 10; i >= 0; i--) {
|
s32 temp = 10;
|
||||||
field_0x38[i + 10] = field_0x38[i];
|
|
||||||
field_0x308[i + 10] = field_0x308[i];
|
for (int i = 59 - temp; i >= 0; i--) {
|
||||||
|
field_0x38[i + temp] = field_0x38[i];
|
||||||
|
field_0x308[i + temp] = field_0x308[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
f32 temp_f30 = 1.0f / 10;
|
f32 temp_f30 = 1.0f / temp;
|
||||||
f32 var_f31 = 0.0f;
|
f32 var_f31 = 0.0f;
|
||||||
|
|
||||||
cXyz sp4C;
|
cXyz sp4C;
|
||||||
|
@ -1971,14 +1971,14 @@ void daAlink_blur_c::copyBlur(cXyz const* param_0, cXyz const* param_1, cXyz con
|
||||||
cXyz sp64;
|
cXyz sp64;
|
||||||
cXyz sp70;
|
cXyz sp70;
|
||||||
|
|
||||||
sp58 = field_0x308[10] + (field_0x2c * 30.0f);
|
sp58 = field_0x308[temp] + (field_0x2c * 30.0f);
|
||||||
sp4C = *param_1 + (*param_2 * -30.0f);
|
sp4C = *param_1 + (*param_2 * -30.0f);
|
||||||
sp70 = field_0x38[10] + (field_0x2c * 60.0f);
|
sp70 = field_0x38[temp] + (field_0x2c * 60.0f);
|
||||||
sp64 = *param_0 + (*param_2 * -60.0f);
|
sp64 = *param_0 + (*param_2 * -60.0f);
|
||||||
|
|
||||||
for (int i = 0; i < 10; i++) {
|
for (int i = 0; i < temp; i++) {
|
||||||
setBezierPos(param_1, &field_0x308[10], &sp4C, &sp58, var_f31, &field_0x308[i]);
|
setBezierPos(param_1, &field_0x308[temp], &sp4C, &sp58, var_f31, &field_0x308[i]);
|
||||||
setBezierPos(param_0, &field_0x38[10], &sp64, &sp70, var_f31, &field_0x38[i]);
|
setBezierPos(param_0, &field_0x38[temp], &sp64, &sp70, var_f31, &field_0x38[i]);
|
||||||
|
|
||||||
field_0x38[i] += (field_0x38[i] - field_0x308[i]) * field_0x24;
|
field_0x38[i] += (field_0x38[i] - field_0x308[i]) * field_0x24;
|
||||||
var_f31 += temp_f30;
|
var_f31 += temp_f30;
|
||||||
|
|
|
@ -685,9 +685,12 @@ BOOL daAlink_c::checkHorseServiceWaitAnime() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 800EDEEC-800EE64C 0E882C 0760+00 1/1 0/0 0/0 .text setSyncHorse__9daAlink_cFi */
|
/* 800EDEEC-800EE64C 0E882C 0760+00 1/1 0/0 0/0 .text setSyncHorse__9daAlink_cFi */
|
||||||
|
// NONMATCHING - missing stack space at 0x10
|
||||||
int daAlink_c::setSyncHorse(int param_0) {
|
int daAlink_c::setSyncHorse(int param_0) {
|
||||||
daHorse_c* horse_p = dComIfGp_getHorseActor();
|
daHorse_c* horse_p = dComIfGp_getHorseActor();
|
||||||
BOOL mode_1 = checkModeFlg(1);
|
daPy_frameCtrl_c* sp24 = &mUnderFrameCtrl[0];
|
||||||
|
daPy_frameCtrl_c* sp20 = &mUnderFrameCtrl[2];
|
||||||
|
BOOL mode_1 = checkModeFlg(1) ? TRUE : FALSE;
|
||||||
|
|
||||||
setSyncHorsePos();
|
setSyncHorsePos();
|
||||||
if (checkHorseSpecialProc()) {
|
if (checkHorseSpecialProc()) {
|
||||||
|
@ -702,12 +705,14 @@ int daAlink_c::setSyncHorse(int param_0) {
|
||||||
field_0x3004 = 0;
|
field_0x3004 = 0;
|
||||||
} else if (checkInputOnR() && horse_p->checkWait() && mProcID != PROC_HORSE_SUBJECTIVITY &&
|
} else if (checkInputOnR() && horse_p->checkWait() && mProcID != PROC_HORSE_SUBJECTIVITY &&
|
||||||
mProcID != PROC_HORSE_CUT_TURN && sp8[0] != ANM_HORSE_TURN_LEFT &&
|
mProcID != PROC_HORSE_CUT_TURN && sp8[0] != ANM_HORSE_TURN_LEFT &&
|
||||||
sp8[0] != ANM_HORSE_TURN_RIGHT && field_0x3004 == 0 &&
|
sp8[0] != ANM_HORSE_TURN_RIGHT && field_0x3004 == 0) {
|
||||||
getDirectionFromShapeAngle() == DIR_FORWARD)
|
s32 dir = getDirectionFromShapeAngle();
|
||||||
{
|
if (dir == DIR_FORWARD)
|
||||||
field_0x3004 = daAlinkHIO_horse_c0::m.mNoWalkTime;
|
{
|
||||||
setSingleAnimeParam(ANM_WSTARTH, &daAlinkHIO_horse_c0::m.mWalkAnm);
|
field_0x3004 = daAlinkHIO_horse_c0::m.mNoWalkTime;
|
||||||
offNoResetFlg1(FLG1_UNK_1000);
|
setSingleAnimeParam(ANM_WSTARTH, &daAlinkHIO_horse_c0::m.mWalkAnm);
|
||||||
|
offNoResetFlg1(FLG1_UNK_1000);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -750,15 +755,17 @@ int daAlink_c::setSyncHorse(int param_0) {
|
||||||
|
|
||||||
if (doTrigger()) {
|
if (doTrigger()) {
|
||||||
field_0x3004 = daAlinkHIO_horse_c0::m.mNoWalkTime;
|
field_0x3004 = daAlinkHIO_horse_c0::m.mNoWalkTime;
|
||||||
|
daAlink_ANM anm;
|
||||||
const daAlinkHIO_anm_c* anmparam_p = &daAlinkHIO_horse_c0::m.mWhipAnm;
|
const daAlinkHIO_anm_c* anmparam_p = &daAlinkHIO_horse_c0::m.mWhipAnm;
|
||||||
|
anm = ANM_HORSE_LASH;
|
||||||
|
|
||||||
if (mProcID != PROC_HORSE_CUT && mProcID != PROC_HORSE_CUT_TURN &&
|
if (mProcID != PROC_HORSE_CUT && mProcID != PROC_HORSE_CUT_TURN &&
|
||||||
mProcID != PROC_HORSE_CUT_CHARGE_READY)
|
mProcID != PROC_HORSE_CUT_CHARGE_READY)
|
||||||
{
|
{
|
||||||
setSingleAnimeParam(ANM_HORSE_LASH, anmparam_p);
|
setSingleAnimeParam(anm, anmparam_p);
|
||||||
}
|
}
|
||||||
|
|
||||||
setUnderAnimeParam(getMainBckData(ANM_HORSE_LASH)->m_underID, UNDER_2,
|
setUnderAnimeParam(getMainBckData(anm)->m_underID, UNDER_2,
|
||||||
&daAlinkHIO_horse_c0::m.mWhipAnm);
|
&daAlinkHIO_horse_c0::m.mWhipAnm);
|
||||||
onNoResetFlg1(FLG1_UNK_1000);
|
onNoResetFlg1(FLG1_UNK_1000);
|
||||||
horse_p->offPlayerBackRideLash();
|
horse_p->offPlayerBackRideLash();
|
||||||
|
@ -774,15 +781,15 @@ int daAlink_c::setSyncHorse(int param_0) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((checkHorseWalkStartAnm() &&
|
if ((checkHorseWalkStartAnm() &&
|
||||||
mUnderFrameCtrl[0].getFrame() > daAlinkHIO_horse_c0::m.mHorseWalkStartFrame) ||
|
sp24->getFrame() > daAlinkHIO_horse_c0::m.mHorseWalkStartFrame) ||
|
||||||
(checkHorseWaitLashAnime() && mUnderFrameCtrl[2].getFrame() > 13.0f))
|
(checkHorseWaitLashAnime() && sp20->getFrame() > 13.0f))
|
||||||
{
|
{
|
||||||
horse_p->onMoveAccept();
|
horse_p->onMoveAccept();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (checkNoResetFlg1(FLG1_UNK_1000) &&
|
if (checkNoResetFlg1(FLG1_UNK_1000) &&
|
||||||
((checkHorseUnderDashStartAnime() && mUnderFrameCtrl[2].getFrame() > 13.0f) ||
|
((checkHorseUnderDashStartAnime() && sp20->getFrame() > 13.0f) ||
|
||||||
(checkHorseUnderLashAnime() && mUnderFrameCtrl[2].getFrame() > 13.0f)))
|
(checkHorseUnderLashAnime() && sp20->getFrame() > 13.0f)))
|
||||||
{
|
{
|
||||||
offNoResetFlg1(FLG1_UNK_1000);
|
offNoResetFlg1(FLG1_UNK_1000);
|
||||||
horse_p->onPlayerLash();
|
horse_p->onPlayerLash();
|
||||||
|
@ -1649,7 +1656,7 @@ int daAlink_c::procHorseGetOff() {
|
||||||
if (field_0x2fc0 == 0) {
|
if (field_0x2fc0 == 0) {
|
||||||
field_0x2fab &= ~0x2;
|
field_0x2fab &= ~0x2;
|
||||||
} else {
|
} else {
|
||||||
field_0x2fab &= ~0x1;
|
field_0x2fab &= (u8)~0x1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (!(temp_r29->getFrame() >= 24.0f)) {
|
} else if (!(temp_r29->getFrame() >= 24.0f)) {
|
||||||
|
@ -1659,7 +1666,7 @@ int daAlink_c::procHorseGetOff() {
|
||||||
if (field_0x2fc0 == 0) {
|
if (field_0x2fc0 == 0) {
|
||||||
field_0x2fab &= ~0x2;
|
field_0x2fab &= ~0x2;
|
||||||
} else {
|
} else {
|
||||||
field_0x2fab &= ~0x1;
|
field_0x2fab &= (u8)~0x1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -214,7 +214,6 @@ int daAlink_c::setIronBallGroundVec(cXyz const* param_0, cXyz* param_1) {
|
||||||
|
|
||||||
/* 80112E7C-80113CA0 10D7BC 0E24+00 1/1 0/0 0/0 .text setIronBallChainPos__9daAlink_cFv
|
/* 80112E7C-80113CA0 10D7BC 0E24+00 1/1 0/0 0/0 .text setIronBallChainPos__9daAlink_cFv
|
||||||
*/
|
*/
|
||||||
// NONMATCHING - alot of regalloc
|
|
||||||
void daAlink_c::setIronBallChainPos() {
|
void daAlink_c::setIronBallChainPos() {
|
||||||
cXyz sp2A4;
|
cXyz sp2A4;
|
||||||
cXyz sp298;
|
cXyz sp298;
|
||||||
|
@ -225,9 +224,13 @@ void daAlink_c::setIronBallChainPos() {
|
||||||
*(&mIronBallChainPos[mItemMode] + 1) = mHeldItemRootPos;
|
*(&mIronBallChainPos[mItemMode] + 1) = mHeldItemRootPos;
|
||||||
*(&mIronBallChainAngle[mItemMode] + 1) = field_0x316c;
|
*(&mIronBallChainAngle[mItemMode] + 1) = field_0x316c;
|
||||||
|
|
||||||
cXyz* var_r29;
|
|
||||||
cXyz* var_r27;
|
cXyz* var_r27;
|
||||||
|
cXyz* var_r29;
|
||||||
cXyz* var_r26;
|
cXyz* var_r26;
|
||||||
|
int i;
|
||||||
|
csXyz* sp3C;
|
||||||
|
int sp38;
|
||||||
|
int sp34;
|
||||||
|
|
||||||
if (mItemVar0.field_0x3018 == 2) {
|
if (mItemVar0.field_0x3018 == 2) {
|
||||||
var_r29 = mIronBallChainPos + 1;
|
var_r29 = mIronBallChainPos + 1;
|
||||||
|
@ -237,7 +240,7 @@ void daAlink_c::setIronBallChainPos() {
|
||||||
sp2A4 = mHookshotTopPos - *mIronBallChainPos;
|
sp2A4 = mHookshotTopPos - *mIronBallChainPos;
|
||||||
sp2A4.normalizeZP();
|
sp2A4.normalizeZP();
|
||||||
|
|
||||||
for (int i = 0; i < mItemMode; i++, var_r29++, var_r26++) {
|
for (i = 0; i < mItemMode; i++, var_r29++, var_r26++) {
|
||||||
sp28C = *var_r29;
|
sp28C = *var_r29;
|
||||||
*var_r29 = *var_r27 + (sp2A4 * 10.0f);
|
*var_r29 = *var_r27 + (sp2A4 * 10.0f);
|
||||||
|
|
||||||
|
@ -249,10 +252,10 @@ void daAlink_c::setIronBallChainPos() {
|
||||||
var_r26 = &field_0x3848[mItemMode];
|
var_r26 = &field_0x3848[mItemMode];
|
||||||
var_r27 = var_r29 + 1;
|
var_r27 = var_r29 + 1;
|
||||||
|
|
||||||
int sp38 = mItemMode * daAlinkHIO_ironBall_c0::m.mReturnChainRate;
|
sp38 = mItemMode * daAlinkHIO_ironBall_c0::m.mReturnChainRate;
|
||||||
int sp34 = sp38;
|
sp34 = sp38;
|
||||||
|
|
||||||
for (int i = mItemMode; i >= 0; i--, var_r29--, var_r26--) {
|
for (i = mItemMode; i >= 0; i--, var_r29--, var_r26--) {
|
||||||
sp2A4 = (*var_r29 - *var_r27) + *var_r26;
|
sp2A4 = (*var_r29 - *var_r27) + *var_r26;
|
||||||
|
|
||||||
if (i == 0) {
|
if (i == 0) {
|
||||||
|
@ -285,7 +288,7 @@ void daAlink_c::setIronBallChainPos() {
|
||||||
var_r27 = var_r29 - 1;
|
var_r27 = var_r29 - 1;
|
||||||
var_r26 = field_0x3848 + 1;
|
var_r26 = field_0x3848 + 1;
|
||||||
|
|
||||||
for (int i = 0; i < mItemMode; i++, var_r29++, var_r26++) {
|
for (i = 0; i < mItemMode; i++, var_r29++, var_r26++) {
|
||||||
sp28C = *var_r29;
|
sp28C = *var_r29;
|
||||||
sp2A4 = (*var_r29 - *var_r27) + *var_r26;
|
sp2A4 = (*var_r29 - *var_r27) + *var_r26;
|
||||||
sp2A4.y += daAlinkHIO_ironBall_c0::m.mChainGravity;
|
sp2A4.y += daAlinkHIO_ironBall_c0::m.mChainGravity;
|
||||||
|
@ -308,7 +311,6 @@ void daAlink_c::setIronBallChainPos() {
|
||||||
} else if (mItemVar0.field_0x3018 == 1 || mItemVar0.field_0x3018 == 3 || mItemVar0.field_0x3018 == 4) {
|
} else if (mItemVar0.field_0x3018 == 1 || mItemVar0.field_0x3018 == 3 || mItemVar0.field_0x3018 == 4) {
|
||||||
daPy_frameCtrl_c* sp30 = &mUnderFrameCtrl[0];
|
daPy_frameCtrl_c* sp30 = &mUnderFrameCtrl[0];
|
||||||
|
|
||||||
int sp38;
|
|
||||||
if (mItemVar0.field_0x3018 == 1) {
|
if (mItemVar0.field_0x3018 == 1) {
|
||||||
f32 temp_f25 = sp30->getEnd() - 13.0f;
|
f32 temp_f25 = sp30->getEnd() - 13.0f;
|
||||||
f32 temp_f29 = (sp30->getFrame() - 13.0f) / temp_f25;
|
f32 temp_f29 = (sp30->getFrame() - 13.0f) / temp_f25;
|
||||||
|
@ -337,7 +339,7 @@ void daAlink_c::setIronBallChainPos() {
|
||||||
var_r26 = &field_0x3848[mItemMode];
|
var_r26 = &field_0x3848[mItemMode];
|
||||||
var_r27 = var_r29 + 1;
|
var_r27 = var_r29 + 1;
|
||||||
|
|
||||||
for (int i = mItemMode; i >= 0; i--, var_r29--, var_r26--) {
|
for (i = mItemMode; i >= 0; i--, var_r29--, var_r26--) {
|
||||||
sp28C = *var_r29;
|
sp28C = *var_r29;
|
||||||
sp2A4 = (*var_r29 - *var_r27) + *var_r26;
|
sp2A4 = (*var_r29 - *var_r27) + *var_r26;
|
||||||
|
|
||||||
|
@ -386,7 +388,7 @@ void daAlink_c::setIronBallChainPos() {
|
||||||
var_r27 = var_r29 - 1;
|
var_r27 = var_r29 - 1;
|
||||||
var_r26 = field_0x3848 + 1;
|
var_r26 = field_0x3848 + 1;
|
||||||
|
|
||||||
for (int i = 0; i < mItemMode; i++, var_r29++, var_r26++) {
|
for (i = 0; i < mItemMode; i++, var_r29++, var_r26++) {
|
||||||
sp2A4 = (*var_r29 - *var_r27) + *var_r26;
|
sp2A4 = (*var_r29 - *var_r27) + *var_r26;
|
||||||
sp2A4.y += var_f30;
|
sp2A4.y += var_f30;
|
||||||
sp2A4.normalizeZP();
|
sp2A4.normalizeZP();
|
||||||
|
@ -405,7 +407,7 @@ void daAlink_c::setIronBallChainPos() {
|
||||||
f32 temp_f28 = temp_f31 * cM_scos(shape_angle.y);
|
f32 temp_f28 = temp_f31 * cM_scos(shape_angle.y);
|
||||||
temp_f31 *= cM_ssin(shape_angle.y);
|
temp_f31 *= cM_ssin(shape_angle.y);
|
||||||
|
|
||||||
for (int i = mItemMode; i > 0; i--, var_r29--, var_r26--) {
|
for (i = mItemMode; i > 0; i--, var_r29--, var_r26--) {
|
||||||
sp28C = *var_r29;
|
sp28C = *var_r29;
|
||||||
|
|
||||||
if (i == mItemMode) {
|
if (i == mItemMode) {
|
||||||
|
@ -432,16 +434,17 @@ void daAlink_c::setIronBallChainPos() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
csXyz* sp3C = mIronBallChainAngle + 1;
|
sp3C = mIronBallChainAngle + 1;
|
||||||
var_r29 = mIronBallChainPos + 1;
|
var_r29 = mIronBallChainPos + 1;
|
||||||
var_r27 = var_r29 - 1;
|
var_r27 = var_r29 - 1;
|
||||||
|
s16 sp10;
|
||||||
s16 spE = mIronBallChainAngle->z + 0x3000;
|
s16 spE = mIronBallChainAngle->z + 0x3000;
|
||||||
|
|
||||||
for (int i = 0; i < mItemMode; i++, sp3C++, var_r29++, spE += 0x3000) {
|
for (i = 0; i < mItemMode; i++, sp3C++, var_r29++, spE += 0x3000) {
|
||||||
sp2A4 = (*var_r27 - *var_r29);
|
sp2A4 = (*var_r27 - *var_r29);
|
||||||
|
|
||||||
s16 sp10;
|
f32 var_f27 = sp2A4.absXZ();
|
||||||
if (sp2A4.absXZ() < 1.0f) {
|
if (var_f27 < 1.0f) {
|
||||||
sp10 = sp3C[-1].y;
|
sp10 = sp3C[-1].y;
|
||||||
} else {
|
} else {
|
||||||
sp10 = sp2A4.atan2sX_Z();
|
sp10 = sp2A4.atan2sX_Z();
|
||||||
|
@ -451,12 +454,12 @@ void daAlink_c::setIronBallChainPos() {
|
||||||
var_r27 = var_r29;
|
var_r27 = var_r29;
|
||||||
}
|
}
|
||||||
|
|
||||||
cXyz* temp_r29 = &mIronBallChainPos[mItemMode] + 1;
|
var_r29 = &mIronBallChainPos[mItemMode] + 1;
|
||||||
csXyz* sp3C_2 = &mIronBallChainAngle[mItemMode] + 1;
|
sp3C = &mIronBallChainAngle[mItemMode] + 1;
|
||||||
|
|
||||||
for (int i = mItemMode + 2; i < 102; i++) {
|
for (i = mItemMode + 2; i < 102; i++) {
|
||||||
mIronBallChainPos[i] = *temp_r29;
|
mIronBallChainPos[i] = *var_r29;
|
||||||
mIronBallChainAngle[i] = *sp3C_2;
|
mIronBallChainAngle[i] = *sp3C;
|
||||||
field_0x3848[i] = cXyz::Zero;
|
field_0x3848[i] = cXyz::Zero;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,7 +71,7 @@ s16 daAlink_c::checkBodyAngleX(s16 param_0) {
|
||||||
return param_0;
|
return param_0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Vec sp2C = {0.0f, 0.0f, 0.0f};
|
Vec sp2C = lit_5908;
|
||||||
sp2C.y = 0.5f * field_0x598;
|
sp2C.y = 0.5f * field_0x598;
|
||||||
|
|
||||||
cXyz sp20;
|
cXyz sp20;
|
||||||
|
|
|
@ -112,20 +112,20 @@ void daAlink_c::changeCommon() {
|
||||||
void daAlink_c::changeWolf() {
|
void daAlink_c::changeWolf() {
|
||||||
JKRHeap* current_heap = mAnmHeap3.setAnimeHeap();
|
JKRHeap* current_heap = mAnmHeap3.setAnimeHeap();
|
||||||
|
|
||||||
mpLinkModel = initModel((J3DModelData*)dComIfG_getObjectRes(l_wArcName, 14), 0x80000, 0x20200);
|
mpLinkModel = initModel((J3DModelData*)dComIfG_getObjectRes(l_wArcName, 14), 0x20200);
|
||||||
|
|
||||||
J3DModelData* chainModelData = (J3DModelData*)dComIfG_getObjectRes(l_wArcName, 15);
|
J3DModelData* chainModelData = (J3DModelData*)dComIfG_getObjectRes(l_wArcName, 15);
|
||||||
for (u16 i = 0; i < 4; i++) {
|
for (u16 i = 0; i < 4; i++) {
|
||||||
mpWlChainModels[i] = initModel(chainModelData, 0x80000, 0);
|
mpWlChainModels[i] = initModel(chainModelData, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
mpWlMidnaModel = initModel((J3DModelData*)dComIfG_getObjectRes(l_wArcName, 10), 0, 0x1020200);
|
mpWlMidnaModel = initModelEnv((J3DModelData*)dComIfG_getObjectRes(l_wArcName, 10), 0x1020200);
|
||||||
mpWlMidnaMaskModel =
|
mpWlMidnaMaskModel =
|
||||||
initModel((J3DModelData*)dComIfG_getObjectRes(l_wArcName, 7), 0x80000, 0x1000000);
|
initModel((J3DModelData*)dComIfG_getObjectRes(l_wArcName, 7), 0x1000000);
|
||||||
mpWlMidnaHandModel =
|
mpWlMidnaHandModel =
|
||||||
initModel((J3DModelData*)dComIfG_getObjectRes(l_wArcName, 6), 0x80000, 0x1000000);
|
initModel((J3DModelData*)dComIfG_getObjectRes(l_wArcName, 6), 0x1000000);
|
||||||
mpWlMidnaHairModel =
|
mpWlMidnaHairModel =
|
||||||
initModel((J3DModelData*)dComIfG_getObjectRes(l_wArcName, 11), 0, 0x1000000);
|
initModelEnv((J3DModelData*)dComIfG_getObjectRes(l_wArcName, 11), 0x1000000);
|
||||||
|
|
||||||
mpDMidnaBrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_wArcName, 18);
|
mpDMidnaBrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes(l_wArcName, 18);
|
||||||
mpDMidnaBrk->searchUpdateMaterialID(mpWlMidnaModel->getModelData());
|
mpDMidnaBrk->searchUpdateMaterialID(mpWlMidnaModel->getModelData());
|
||||||
|
@ -217,12 +217,11 @@ void daAlink_c::changeWolf() {
|
||||||
attention_info.field_0xa = 50;
|
attention_info.field_0xa = 50;
|
||||||
|
|
||||||
dCcD_Cyl* cyl_p = field_0x850;
|
dCcD_Cyl* cyl_p = field_0x850;
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 0; i < 3; i++, cyl_p++) {
|
||||||
cyl_p->OffTgShieldFrontRange();
|
cyl_p->OffTgShieldFrontRange();
|
||||||
cyl_p->OffTgSmallShield();
|
cyl_p->OffTgSmallShield();
|
||||||
cyl_p->OffTgSpShield();
|
cyl_p->OffTgSpShield();
|
||||||
cyl_p->OffTgShield();
|
cyl_p->OffTgShield();
|
||||||
cyl_p++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
field_0xFB8.StartCAt(current.pos);
|
field_0xFB8.StartCAt(current.pos);
|
||||||
|
@ -238,7 +237,7 @@ void daAlink_c::changeWolf() {
|
||||||
mMagicArmorBodyBrk = NULL;
|
mMagicArmorBodyBrk = NULL;
|
||||||
mMagicArmorHeadBrk = NULL;
|
mMagicArmorHeadBrk = NULL;
|
||||||
|
|
||||||
field_0x2fc7 = dStage_stagInfo_GetWolfDashType(dComIfGp_getStage()->getStagInfo());
|
field_0x2fc7 = (u8)dStage_stagInfo_GetWolfDashType(dComIfGp_getStage()->getStagInfo());
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 80126F3C-80127C54 12187C 0D18+00 2/2 0/0 0/0 .text changeLink__9daAlink_cFi */
|
/* 80126F3C-80127C54 12187C 0D18+00 2/2 0/0 0/0 .text changeLink__9daAlink_cFi */
|
||||||
|
@ -7188,12 +7187,11 @@ void daAlink_c::setWolfEnemyThrowUpperAnime(daAlink_c::daAlink_WANM i_anmID, f32
|
||||||
* setWolfEnemyHangBitePos__9daAlink_cFP13fopEn_enemy_c */
|
* setWolfEnemyHangBitePos__9daAlink_cFP13fopEn_enemy_c */
|
||||||
BOOL daAlink_c::setWolfEnemyHangBitePos(fopEn_enemy_c* i_enemy) {
|
BOOL daAlink_c::setWolfEnemyHangBitePos(fopEn_enemy_c* i_enemy) {
|
||||||
if (i_enemy != NULL) {
|
if (i_enemy != NULL) {
|
||||||
current.pos = i_enemy->getDownPos();
|
cXyz old_pos = current.pos = i_enemy->getDownPos();
|
||||||
cXyz old_pos = current.pos;
|
|
||||||
|
|
||||||
current.pos.x -= 60.0f * cM_ssin(shape_angle.y);
|
current.pos.x -= 60.0f * cM_ssin(shape_angle.y);
|
||||||
current.pos.x -= 135.0f;
|
current.pos.y -= 135.0f;
|
||||||
current.pos.x -= 60.0f * cM_scos(shape_angle.y);
|
current.pos.z -= 60.0f * cM_scos(shape_angle.y);
|
||||||
|
|
||||||
if (commonLineCheck(&field_0x3540, ¤t.pos)) {
|
if (commonLineCheck(&field_0x3540, ¤t.pos)) {
|
||||||
current.pos = old_pos;
|
current.pos = old_pos;
|
||||||
|
|
Loading…
Reference in New Issue