Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions include/d/actor/d_a_alink.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include "d/d_save.h"
#include "f_op/f_op_actor_mng.h"
#include "f_op/f_op_camera_mng.h"
#include "res/Object/AlAnm.h"

class J2DAnmColorKey;
class J2DAnmTransformKey;
Expand All @@ -35,7 +36,7 @@ class daAlink_lockCursor_c : public dDlst_base_c {

void initFrame() {
field_0x4 = 0;
field_0x2c = 4.0f;
mLockCursorAngle = 4.0f;
field_0x30 = 0.0f;
}

Expand All @@ -56,7 +57,7 @@ class daAlink_lockCursor_c : public dDlst_base_c {
/* 0x20 */ J2DAnmTevRegKey* field_0x20;
/* 0x24 */ J2DAnmColorKey* field_0x24;
/* 0x28 */ J2DAnmTransformKey* field_0x28;
/* 0x2C */ f32 field_0x2c;
/* 0x2C */ f32 mLockCursorAngle;
/* 0x30 */ f32 field_0x30;
/* 0x34 */ f32 mPosX;
/* 0x38 */ f32 mPosY;
Expand Down Expand Up @@ -1972,7 +1973,9 @@ class daAlinkHIO_hookshot_c1 {
/* 0x64 */ f32 mBossShootSpeed;
/* 0x68 */ f32 mBossReturnSpeed;
/* 0x6C */ f32 mBossStickReturnSpeed;
}; // Size: 0x70
/* 0x70 */ f32 mHookTipAnimationSteps;
/* 0x74 */ f32 mLockCursorSpinnerSpeed;
}; // Size: 0x78
Comment on lines +1976 to +1978
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this data shouldnt be added here, it needs to stay identical to the original to keep matching the original binary. im assuming this is what's breaking all those matches


class daAlinkHIO_hookshot_c0 {
public:
Expand Down Expand Up @@ -6708,8 +6711,8 @@ class daAlink_c : public daPy_py_c {
bool checkHorseTurnLAnime() const { return checkUpperAnime(0x24C); }
bool checkHorseTurnRAnime() const { return checkUpperAnime(0x24D); }
bool checkHorseTurnAnime() const { return checkHorseTurnLAnime() || checkHorseTurnRAnime(); }
bool checkHookshotShootAnime() const { return checkUpperAnime(0x18C); }
bool checkHookshotReadyAnime() const { return checkUpperAnime(0x18D); }
bool checkHookshotShootAnime() const { return checkUpperAnime(dRes_ID_ALANM_BCK_HSSHOOT_e); }
bool checkHookshotReadyAnime() const { return checkUpperAnime(dRes_ID_ALANM_BCK_HSWAIT_e); }
BOOL checkHookshotAnime() const {
return checkHookshotReadyAnime() || checkHookshotShootAnime();
}
Expand Down
2 changes: 2 additions & 0 deletions src/d/actor/d_a_alink_HIO_data.inc
Original file line number Diff line number Diff line change
Expand Up @@ -1883,6 +1883,8 @@ const daAlinkHIO_hookshot_c1 daAlinkHIO_hookshot_c0::m = {
150.0f,
225.0f,
90.0f,
1.0f,
0.9f
};

const daAlinkHIO_spinner_c1 daAlinkHIO_spinner_c0::m = {
Expand Down
24 changes: 12 additions & 12 deletions src/d/actor/d_a_alink_effect.inc
Original file line number Diff line number Diff line change
Expand Up @@ -1977,7 +1977,7 @@ void daAlink_blur_c::draw() {
BOOL daAlink_lockCursor_c::create() {
JKRArchive* arc = dComIfG_getObjectResInfo(l_arcName)->getArchive();

field_0x2c = 0.0f;
mLockCursorAngle = 0.0f;
field_0x4 = false;
field_0x30 = 0.0f;

Expand Down Expand Up @@ -2060,14 +2060,14 @@ extern "C" void setAnimation__7J2DPaneFP11J2DAnmColor() {
}

void daAlink_lockCursor_c::update() {
if (field_0x2c < 21.0f) {
field_0x2c = 21.0f;
if (mLockCursorAngle < 21.0f) {
mLockCursorAngle = 21.0f;
}

field_0x2c += 0.9f;
mLockCursorAngle += daAlinkHIO_hookshot_c0::m.mLockCursorSpinnerSpeed;

if (field_0x2c >= 50.0f) {
field_0x2c += -29.0f;
if (mLockCursorAngle >= 50.0f) {
mLockCursorAngle += -29.0f;
}

field_0x30 += 0.9f;
Expand All @@ -2081,13 +2081,13 @@ void daAlink_lockCursor_c::update() {

void daAlink_lockCursor_c::draw() {
if (field_0x4 != 0) {
field_0x28->setFrame(field_0x2c);
field_0x28->setFrame(mLockCursorAngle);

f32 var_f30;
if (field_0x2c > 21.0f) {
if (mLockCursorAngle > 21.0f) {
var_f30 = 21.0f;
} else {
var_f30 = field_0x2c;
var_f30 = mLockCursorAngle;
}

field_0x24->setFrame(var_f30);
Expand All @@ -2097,10 +2097,10 @@ void daAlink_lockCursor_c::draw() {
field_0xc->scale(0.6f, 0.6f);
field_0xc->translate(mPosX, mPosY);

if (!(field_0x2c < 15.0f)) {
if (!(mLockCursorAngle < 15.0f)) {
f32 var_f31;
if (field_0x2c < 21.0f) {
var_f31 = ((field_0x2c - 15.0f) * 40.0f) * 0.16666667f;
if (mLockCursorAngle < 21.0f) {
var_f31 = ((mLockCursorAngle - 15.0f) * 40.0f) * 0.16666667f;
} else {
var_f31 = ((field_0x4 * 0.00390625f) + 0.5f) * 40.0f;
}
Expand Down
38 changes: 19 additions & 19 deletions src/d/actor/d_a_alink_hook.inc
Original file line number Diff line number Diff line change
Expand Up @@ -123,26 +123,26 @@ void daAlink_c::hsChainShape_c::draw() {
}
}
} else {
const cXyz& sp3C = temp_r3->getHsChainRootPos();
const cXyz& sp38 = temp_r3->getHsChainTopPos();
cXyz spA4 = sp3C - sp38;
const cXyz& chainRootPos = temp_r3->getHsChainRootPos();
const cXyz& chainTopPos = temp_r3->getHsChainTopPos();
cXyz maxDistance = chainRootPos - chainTopPos;

f32 temp_f31 = spA4.abs();
f32 maxDistanceF = maxDistance.abs();
f32 var_f30;
cXyz sp98;
csXyz sp6C;

if (temp_f31 > 1.0f) {
spA4 *= (1.0f / temp_f31);
if (maxDistanceF > 1.0f) {
maxDistance *= (1.0f / maxDistanceF);
var_f30 = 0.0f;

sp98 = sp38;
sp6C.set(spA4.atan2sY_XZ(), spA4.atan2sX_Z(), 0);
sp98 = sp38;
sp98 = chainTopPos;
sp6C.set(maxDistance.atan2sY_XZ(), maxDistance.atan2sX_Z(), 0);
sp98 = chainTopPos;

csXyz sp64(sp6C);

f32 sp34 = M_PI / temp_f31;
f32 sp34 = M_PI / maxDistanceF;

f32 temp_f27;
f32 var_f26 = 0.0f;
Expand All @@ -153,7 +153,7 @@ void daAlink_c::hsChainShape_c::draw() {
var_f28 *= -1.0f;
}

while (temp_f31 > var_f30) {
while (maxDistanceF > var_f30) {
temp_f27 = var_f28 * cM_fsin(sp34 * var_f30);
s16 spC = cM_atan2s(temp_f27 - var_f26, 5.0f);
sp64.x = sp6C.x + spC;
Expand All @@ -180,15 +180,15 @@ void daAlink_c::hsChainShape_c::draw() {

const cXyz& sp30 = temp_r3->getHsSubChainRootPos();
const cXyz& sp2C = temp_r3->getHsSubChainTopPos();
spA4 = sp30 - sp2C;
maxDistance = sp30 - sp2C;

f32 temp_f1 = spA4.abs();
f32 temp_f1 = maxDistance.abs();
if (temp_f1 > 1.0f) {
spA4 *= (1.0f / temp_f1);
maxDistance *= (1.0f / temp_f1);
var_f30 = 0.0f;

sp98 = sp2C;
sp6C.set(spA4.atan2sY_XZ(), spA4.atan2sX_Z(), 0);
sp6C.set(maxDistance.atan2sY_XZ(), maxDistance.atan2sX_Z(), 0);

while (temp_f1 > var_f30) {
mDoMtx_stack_c::copy(j3dSys.getViewMtx());
Expand All @@ -200,7 +200,7 @@ void daAlink_c::hsChainShape_c::draw() {

sp5C->getShape()->simpleDrawCache();

sp98 += spA4 * 5.0f;
sp98 += maxDistance * 5.0f;
sp6C.z += 0x3000;
var_f30 += 5.0f;
}
Expand Down Expand Up @@ -395,7 +395,7 @@ void daAlink_c::setHookshotModel() {
mpHookshotLinChk->OffFullGrp();
mpHookshotLinChk->OnWaterGrp();

J3DAnmTransform* bck2 = (J3DAnmTransform*)loadAram(0x17F, 0x800);
J3DAnmTransform* bck2 = (J3DAnmTransform*)loadAram(dRes_ID_ALANM_BCK_HS_TIP_OPEN_e, 0x800);
mHookTipBck.init(bck2, 0, 2, 1.0f, 0, -1, false);
mDoExt_setCurrentHeap(heap);

Expand Down Expand Up @@ -548,7 +548,7 @@ void daAlink_c::setHookshotReadyAnime() {
speed = daAlinkHIO_hookshot_c0::m.mWaitAnmSpeed;
}

setUpperAnimeBaseSpeed(0x18D, speed, 3.0f);
setUpperAnimeBaseSpeed(dRes_INDEX_ALANM_BCK_HSWAIT_e, speed, 3.0f);
field_0x3020 = 0;
initHookshotReady();
}
Expand Down Expand Up @@ -840,7 +840,7 @@ void daAlink_c::setHookshotPos() {
seStartOnlyReverb(Z2SE_AL_HS_OPEN);
}

field_0x33e0 += 1.0f;
field_0x33e0 += daAlinkHIO_hookshot_c0::m.mHookTipAnimationSteps;
if (field_0x33e0 > mHookTipBck.getBckAnm()->getFrameMax()) {
field_0x33e0 = mHookTipBck.getBckAnm()->getFrameMax();
}
Expand Down