d_a_alink debug improvements (#3112)

This commit is contained in:
Max Roncace
2026-02-27 13:20:39 -05:00
committed by GitHub
parent a096caa8de
commit d017a3cd36
28 changed files with 5894 additions and 5723 deletions
+1 -1
View File
@@ -32765,7 +32765,7 @@ j3dDefaultColInfo = .sdata2:0x80526310; // type:object size:0x4 data:byte
j3dDefaultAmbInfo = .sdata2:0x80526314; // type:object size:0x4 data:byte
j3dDefaultNumChans = .sdata2:0x80526318; // type:object size:0x1 data:byte
j3dDefaultTevOrderInfoNull = .sdata2:0x80526319; // type:object size:0x4 data:4byte
j3dDefaultIndTexOrderNull = .sdata2:0x8052631D; // type:object size:0x4
j3dDefaultIndTexOrderNull = .sdata2:0x8052631D; // type:object size:0x4 data:4byte
j3dDefaultTevColor = .sdata2:0x80526322; // type:object size:0x8 scope:global align:2 data:2byte
j3dDefaultTevKColor = .sdata2:0x8052632A; // type:object size:0x4 data:byte
j3dDefaultTevSwapModeTable = .sdata2:0x8052632E; // type:object size:0x4
+11 -11
View File
@@ -64510,21 +64510,21 @@ l_HIO_before = .sbss:0x8074C880; // type:object size:0x4 scope:global data:4byte
l_HIO_top = .sbss:0x8074C884; // type:object size:0x4 scope:global data:4byte hash:0xCA8DD4EC
l_debugMode = .sbss:0x8074C888; // type:object size:0x4 scope:local data:4byte hash:0x5F325704
l_jumpTop = .sbss:0x8074C88C; // type:object size:0x4 scope:global align:4 data:float hash:0xEC66737F
lbl_8074C890 = .sbss:0x8074C890; // type:object size:0x1 data:byte hash:0xB74E392C dhash:0xBD2F6E4C
lbl_8074C891 = .sbss:0x8074C891; // type:object size:0x1 data:byte hash:0xC3C1301D dhash:0xBD2F6E4C
lbl_8074C892 = .sbss:0x8074C892; // type:object size:0x1 data:byte hash:0xC3C1345F dhash:0xBD2F6E4C
lbl_8074C893 = .sbss:0x8074C893; // type:object size:0x1 data:byte hash:0xC3C1491D dhash:0xBD2F6E4C
@GUARD@setGrabItemPos__9daAlink_cFv@grabCarryOffset0 = .sbss:0x8074C890; // type:object size:0x1 data:byte hash:0xB74E392C dhash:0xBD2F6E4C
@GUARD@setGrabItemPos__9daAlink_cFv@grabCarryOffset1@0 = .sbss:0x8074C891; // type:object size:0x1 data:byte hash:0xC3C1301D dhash:0xBD2F6E4C
@GUARD@setGrabItemPos__9daAlink_cFv@grabCarryOffset2@1 = .sbss:0x8074C892; // type:object size:0x1 data:byte hash:0xC3C1345F dhash:0xBD2F6E4C
@GUARD@setGrabItemPos__9daAlink_cFv@grabCarryOffset3@2 = .sbss:0x8074C893; // type:object size:0x1 data:byte hash:0xC3C1491D dhash:0xBD2F6E4C
@GUARD@daAlink_c_getDemoIDData__FP13dDemo_actor_cPiPiPiPUsPiPi@dummy = .sbss:0x8074C894; // type:object size:0x1 data:byte hash:0x2C9C4113 dhash:0xC335850F
@GUARD@daAlink_c_getDemoIDData__FP13dDemo_actor_cPiPiPiPUsPiPi@it@0 = .sbss:0x8074C895; // type:object size:0x1 data:byte hash:0xABFECE16 dhash:0xC335850F
@LOCAL@daAlink_c_getDemoIDData__FP13dDemo_actor_cPiPiPiPUsPiPi@it@0 = .sbss:0x8074C898; // type:object size:0x4 scope:local hash:0x7C41017E dhash:0x7A3314A7
lbl_8074C89C = .sbss:0x8074C89C; // type:object size:0x1 data:byte hash:0x91B5CF4E dhash:0x3C2D8E6B
lbl_8074C89D = .sbss:0x8074C89D; // type:object size:0x1 data:byte hash:0x1F6B40C0 dhash:0x3C2D8E6B
lbl_8074C89E = .sbss:0x8074C89E; // type:object size:0x1 data:byte hash:0xD59F6F35 dhash:0x3C2D8E6B
lbl_8074C89F = .sbss:0x8074C89F; // type:object size:0x1 data:byte hash:0xBFD7E77E dhash:0x3C2D8E6B
lbl_8074C8A0 = .sbss:0x8074C8A0; // type:object size:0x1 data:byte hash:0x884DAA68 dhash:0xBFFC4EEF
lbl_8074C8A1 = .sbss:0x8074C8A1; // type:object size:0x1 data:byte hash:0x928CCDC6 dhash:0xB10E2121
@GUARD@setCutTurnEffect__9daAlink_cFv@leftRotNormal@4 = .sbss:0x8074C89C; // type:object size:0x1 data:byte hash:0x91B5CF4E dhash:0x3C2D8E6B
@GUARD@setCutTurnEffect__9daAlink_cFv@leftRotLight@7 = .sbss:0x8074C89D; // type:object size:0x1 data:byte hash:0x1F6B40C0 dhash:0x3C2D8E6B
@GUARD@setCutTurnEffect__9daAlink_cFv@leftRotLarge@10 = .sbss:0x8074C89E; // type:object size:0x1 data:byte hash:0xD59F6F35 dhash:0x3C2D8E6B
@GUARD@setCutTurnEffect__9daAlink_cFv@leftRotWater@13 = .sbss:0x8074C89F; // type:object size:0x1 data:byte hash:0xBFD7E77E dhash:0x3C2D8E6B
m_eye_move_flg__16daAlink_matAnm_c = .sbss:0x8074C8A0; // type:object size:0x1 data:byte hash:0x884DAA68 dhash:0xBFFC4EEF
m_morf_frame__16daAlink_matAnm_c = .sbss:0x8074C8A1; // type:object size:0x1 data:byte hash:0x928CCDC6 dhash:0xB10E2121
@LOCAL@create__9daAlink_cFv@bgWaitFlg = .sbss:0x8074C8A4; // type:object size:0x4 scope:local data:4byte hash:0xFEC9AC5E dhash:0x74C6C5AD
lbl_8074C8A8 = .sbss:0x8074C8A8; // type:object size:0x1 data:byte hash:0xCB96DED7 dhash:0x895D6088
@GUARD@setAtCollision__9daAlink_cFv@rodTopOffset@0 = .sbss:0x8074C8A8; // type:object size:0x1 data:byte hash:0xCB96DED7 dhash:0x895D6088
sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> = .sbss:0x8074C8AC; // type:object size:0x4 scope:global data:4byte hash:0x5128911C dhash:0xCE3C9FF9
l_HIO = .sbss:0x8074C8B0; // type:object size:0x8 scope:local hash:0x0A6D83D8
lbl_8074C8B8 = .sbss:0x8074C8B8; // type:object size:0x1 data:byte hash:0x98E99A3B
+4465 -4463
View File
File diff suppressed because it is too large Load Diff
+23 -23
View File
@@ -7,6 +7,29 @@
struct ResTIMG;
class daPy_frameCtrl_c : public J3DFrameCtrl {
public:
virtual ~daPy_frameCtrl_c() {}
daPy_frameCtrl_c() {}
bool checkAnmEnd();
void updateFrame();
void setFrameCtrl(u8 i_attribute, s16 i_start, s16 i_end, f32 i_rate, f32 i_frame);
u16 getEndFlg() const { return mEndFlg; }
u16 getNowSetFlg() const { return mNowSetFlg; }
void onEndFlg() { mEndFlg = 1; }
void onNowSetFlg() { mNowSetFlg = 1; }
void offNowSetFlg() { mNowSetFlg = 0; }
void offEndFlg() {
mEndFlg = 0;
mNowSetFlg = 0;
}
private:
/* 0x14 */ u16 mEndFlg;
/* 0x16 */ u16 mNowSetFlg;
};
class daPy_sightPacket_c : public dDlst_base_c {
public:
daPy_sightPacket_c() {}
@@ -111,29 +134,6 @@ private:
/* 0x4 */ fopAc_ac_c* mActor;
}; // Size: 0x8
class daPy_frameCtrl_c : public J3DFrameCtrl {
public:
virtual ~daPy_frameCtrl_c() {}
daPy_frameCtrl_c() {}
bool checkAnmEnd();
void updateFrame();
void setFrameCtrl(u8 i_attribute, s16 i_start, s16 i_end, f32 i_rate, f32 i_frame);
u16 getEndFlg() const { return mEndFlg; }
u16 getNowSetFlg() const { return mNowSetFlg; }
void onEndFlg() { mEndFlg = 1; }
void onNowSetFlg() { mNowSetFlg = 1; }
void offNowSetFlg() { mNowSetFlg = 0; }
void offEndFlg() {
mEndFlg = 0;
mNowSetFlg = 0;
}
private:
/* 0x14 */ u16 mEndFlg;
/* 0x16 */ u16 mNowSetFlg;
};
class Z2WolfHowlMgr;
class daBoomerang_c;
+7 -7
View File
@@ -239,13 +239,6 @@ private:
/* 0x1D4 */ u8 m_wtr_mode;
}; // Size: 0x1D8
class dBgS_LinkAcch : public dBgS_Acch {
public:
dBgS_LinkAcch() { SetLink(); }
virtual ~dBgS_LinkAcch() {}
};
class dBgS_ObjAcch : public dBgS_Acch {
public:
dBgS_ObjAcch() {
@@ -255,6 +248,13 @@ public:
virtual ~dBgS_ObjAcch() {}
}; // Size: 0x1D8
class dBgS_LinkAcch : public dBgS_Acch {
public:
dBgS_LinkAcch() { SetLink(); }
virtual ~dBgS_LinkAcch() {}
};
STATIC_ASSERT(sizeof(dBgS_ObjAcch) == 0x1D8);
class dBgS_StatueAcch : public dBgS_Acch {
+2 -1
View File
@@ -2,6 +2,7 @@
#define D_D_JNT_COL_H
#include "JSystem/J3DGraphAnimator/J3DModel.h"
#include "JSystem/JHostIO/JORReflexible.h"
#include "SSystem/SComponent/c_m3d_g_lin.h"
#include "SSystem/SComponent/c_sxyz.h"
@@ -33,7 +34,7 @@ public:
bool checkShieldType(int i) { return getType(i) == 3; }
s8 getType(int i) { return mData[i].mType; }
int getJntNum(int i) { return mData[i].mJntNum; }
int getJntNum(int i) { return (s16)mData[i].mJntNum; }
/* 0x00 */ const dJntColData_c* mData;
/* 0x04 */ J3DModel* mModel;
+1 -1
View File
@@ -6,7 +6,7 @@
#include "JSystem/JParticle/JPAEmitter.h"
#include "JSystem/JParticle/JPAParticle.h"
#include "d/d_particle_name.h"
#include "d/d_kankyo.h"
#include "d/d_kankyo_tev_str.h"
void dPa_cleanupGX();
+14 -9
View File
@@ -4,26 +4,28 @@
// Fixes weak .bss
#include "weak_bss_1109_to_1009.h" // IWYU pragma: export
// Fixes weak .data
#include <cmath> // IWYU pragma: export
#include <limits> // IWYU pragma: export
#include "JSystem/J3DGraphBase/J3DMatBlock.h" // IWYU pragma: export
#include "Z2AudioLib/Z2Calc.h" // IWYU pragma: export
// Fixes weak function/RTTI ordering
#include <cmath> // IWYU pragma: export
#include <cstring> // IWYU pragma: export
// Provides float constants from sqrt implementation
#include <cmath> // IWYU pragma: export
// Provides signaling NaN constants
#include <limits> // IWYU pragma: export
#include "Z2AudioLib/Z2AudioArcLoader.h" // IWYU pragma: export
#include "JSystem/JAudio2/JAUStreamAramMgr.h" // IWYU pragma: export
#include "JSystem/JKernel/JKRDisposer.h" // IWYU pragma: export
#include "JSystem/JGadget/linklist.h" // IWYU pragma: export
#include "JSystem/JUtility/JUTGamePad.h" // IWYU pragma: export
// Provides AttnArr (u8 array)
#include "JSystem/J3DGraphBase/J3DMatBlock.h" // IWYU pragma: export
// Provides Z2Calc::cNullVec
#include "Z2AudioLib/Z2Calc.h" // IWYU pragma: export
#include "JSystem/J3DGraphBase/J3DTexture.h" // IWYU pragma: export
#include "JSystem/J3DGraphBase/J3DPacket.h" // IWYU pragma: export
#include "JSystem/J3DGraphAnimator/J3DAnimation.h" // IWYU pragma: export
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h" // IWYU pragma: export
#include "JSystem/J3DGraphAnimator/J3DMaterialAttach.h" // IWYU pragma: export
#include "JSystem/J3DGraphAnimator/J3DShapeTable.h" // IWYU pragma: export
#include "JSystem/J3DGraphAnimator/J3DJoint.h" // IWYU pragma: export
#include "JSystem/JUtility/JUTGamePad.h" // IWYU pragma: export
#include "JSystem/J3DGraphAnimator/J3DMaterialAttach.h" // IWYU pragma: export
#include "JSystem/J3DGraphBase/J3DSys.h" // IWYU pragma: export
#include "JSystem/JHostIO/JHICommonMem.h" // IWYU pragma: export
#include "JSystem/JHostIO/JORReflexible.h" // IWYU pragma: export
@@ -36,7 +38,10 @@
#include "SSystem/SComponent/c_m3d_g_cyl.h" // IWYU pragma: export
#include "m_Do/m_Do_hostIO.h" // IWYU pragma: export
#include "f_op/f_op_actor.h" // IWYU pragma: export
#include "JSystem/JParticle/JPAEmitter.h" // IWYU pragma: export
#include "JSystem/JParticle/JPAParticle.h" // IWYU pragma: export
#include "d/d_bg_s_gnd_chk.h" // IWYU pragma: export
#include "d/d_particle.h" // IWYU pragma: export
#include "d/d_bg_s_chk.h" // IWYU pragma: export
#include "d/d_bg_w.h" // IWYU pragma: export
#include "d/d_drawlist.h" // IWYU pragma: export
+824 -746
View File
File diff suppressed because it is too large Load Diff
+93 -100
View File
@@ -685,16 +685,16 @@ void daAlinkHIO_cutNormal_c::genMessage(JORMContext* ctx) {
daAlinkHIO_cutNormal_c::daAlinkHIO_cutNormal_c(int param_0, float param_1) {
field_0x34 = param_1;
static const char plabel0[] = "const daAlinkHIO_cutNormal_c1 daAlinkHIO_cutNmV_c0::m = {\n";
static const char plabel1[] = "const daAlinkHIO_cutNormal_c1 daAlinkHIO_cutNmL_c0::m = {\n";
static const char plabel2[] = "const daAlinkHIO_cutNormal_c1 daAlinkHIO_cutNmR_c0::m = {\n";
static const char plabel3[] = "const daAlinkHIO_cutNormal_c1 daAlinkHIO_cutNmSL_c0::m = {\n";
static const char plabel4[] = "const daAlinkHIO_cutNormal_c1 daAlinkHIO_cutNmSR_c0::m = {\n";
static const char* plabel[] = {plabel0, plabel1, plabel2, plabel3, plabel4};
static void* baseP[5] = {(void*)&daAlinkHIO_cutNmV_c0::m, (void*)&daAlinkHIO_cutNmL_c0::m,
(void*)&daAlinkHIO_cutNmR_c0::m, (void*)&daAlinkHIO_cutNmSL_c0::m,
(void*)&daAlinkHIO_cutNmSR_c0::m};
static const char* plabel[] = {"const daAlinkHIO_cutNormal_c1 daAlinkHIO_cutNmSL_c0::m = {\n",
"const daAlinkHIO_cutNormal_c1 daAlinkHIO_cutNmV_c0::m = {\n",
"const daAlinkHIO_cutNormal_c1 daAlinkHIO_cutNmL_c0::m = {\n",
"const daAlinkHIO_cutNormal_c1 daAlinkHIO_cutNmSR_c0::m = {\n",
"const daAlinkHIO_cutNormal_c1 daAlinkHIO_cutNmR_c0::m = {\n"};
m_len = 32;
mp_src_data = baseP[param_0];
mp_data = (void*)&m;
@@ -734,19 +734,18 @@ void daAlinkHIO_cutFinish_c::genMessage(JORMContext* ctx) {
daAlinkHIO_cutFinish_c::daAlinkHIO_cutFinish_c(int param_0, float param_1) {
field_0x34 = param_1;
static const char plabel0[] = "const daAlinkHIO_cutFinish_c1 daAlinkHIO_cutFnL_c0::m = {\n";
static const char plabel1[] = "const daAlinkHIO_cutFinish_c1 daAlinkHIO_cutFnV_c0::m = {\n";
static const char plabel2[] = "const daAlinkHIO_cutFinish_c1 daAlinkHIO_cutFnS_c0::m = {\n";
static const char plabel3[] = "const daAlinkHIO_cutFinish_c1 daAlinkHIO_cutFnSl_c0::m = {\n";
static const char plabel4[] = "const daAlinkHIO_cutFinish_c1 daAlinkHIO_cutFnSm_c0::m = {\n";
static const char plabel5[] = "const daAlinkHIO_cutFinish_c1 daAlinkHIO_cutFnR_c0::m = {\n";
static const char* plabel[] = {plabel0, plabel1, plabel2, plabel3, plabel4, plabel5};
static void* baseP[6] = {(void*)&daAlinkHIO_cutFnL_c0::m, (void*)&daAlinkHIO_cutFnV_c0::m,
(void*)&daAlinkHIO_cutFnS_c0::m, (void*)&daAlinkHIO_cutFnSl_c0::m,
(void*)&daAlinkHIO_cutFnSm_c0::m, (void*)&daAlinkHIO_cutFnR_c0::m};
static const char* plabel[] = {
"const daAlinkHIO_cutFinish_c1 daAlinkHIO_cutFnL_c0::m = {\n",
"const daAlinkHIO_cutFinish_c1 daAlinkHIO_cutFnV_c0::m = {\n",
"const daAlinkHIO_cutFinish_c1 daAlinkHIO_cutFnS_c0::m = {\n",
"const daAlinkHIO_cutFinish_c1 daAlinkHIO_cutFnSl_c0::m = {\n",
"const daAlinkHIO_cutFinish_c1 daAlinkHIO_cutFnSm_c0::m = {\n",
"const daAlinkHIO_cutFinish_c1 daAlinkHIO_cutFnR_c0::m = {\n",
};
m_len = 44;
mp_src_data = baseP[param_0];
mp_data = (void*)&m;
@@ -826,18 +825,17 @@ void daAlinkHIO_cutDash_c::genMessage(JORMContext* ctx) {
daAlinkHIO_cutDash_c::daAlinkHIO_cutDash_c(int param_0, float param_1) {
field_0x34 = param_1;
static const char plabel0[] = "const daAlinkHIO_cutDash_c1 daAlinkHIO_cutDaL_c0::m = {\n";
static const char plabel1[] = "const daAlinkHIO_cutDash_c1 daAlinkHIO_cutDaR_c0::m = {\n";
static const char plabel2[] = "const daAlinkHIO_cutDash_c1 daAlinkHIO_cutDaCharge_c0::m = {\n";
static const char* plabel[] = {plabel0, plabel1, plabel2};
static void* baseP[3] = {
(void*)&daAlinkHIO_cutDaL_c0::m,
(void*)&daAlinkHIO_cutDaR_c0::m,
(void*)&daAlinkHIO_cutDaCharge_c0::m,
};
static const char* plabel[] = {
"const daAlinkHIO_cutDash_c1 daAlinkHIO_cutDaL_c0::m = {\n",
"const daAlinkHIO_cutDash_c1 daAlinkHIO_cutDaR_c0::m = {\n",
"const daAlinkHIO_cutDash_c1 daAlinkHIO_cutDaCharge_c0::m = {\n",
};
m_len = 28;
mp_src_data = baseP[param_0];
mp_data = (void*)&m;
@@ -983,6 +981,12 @@ void daAlinkHIO_hoCut_c::genMessage(JORMContext* ctx) {
daAlinkHIO_hoCut_c::daAlinkHIO_hoCut_c(int param_0, float param_1) {
field_0x34 = param_1;
static const char plabel0[] = "const daAlinkHIO_hoCut_c1 daAlinkHIO_hoCutLA_c0::m = {\n";
static const char plabel1[] = "const daAlinkHIO_hoCut_c1 daAlinkHIO_hoCutLB_c0::m = {\n";
static const char plabel2[] = "const daAlinkHIO_hoCut_c1 daAlinkHIO_hoCutRA_c0::m = {\n";
static const char plabel3[] = "const daAlinkHIO_hoCut_c1 daAlinkHIO_hoCutRB_c0::m = {\n";
static const char* plabel[] = {plabel0, plabel1, plabel2, plabel3};
static void* baseP[4] = {
(void*)&daAlinkHIO_hoCutLA_c0::m,
(void*)&daAlinkHIO_hoCutLB_c0::m,
@@ -990,13 +994,6 @@ daAlinkHIO_hoCut_c::daAlinkHIO_hoCut_c(int param_0, float param_1) {
(void*)&daAlinkHIO_hoCutRB_c0::m,
};
static const char* plabel[] = {
"const daAlinkHIO_hoCut_c1 daAlinkHIO_hoCutLA_c0::m = {\n",
"const daAlinkHIO_hoCut_c1 daAlinkHIO_hoCutLB_c0::m = {\n",
"const daAlinkHIO_hoCut_c1 daAlinkHIO_hoCutRA_c0::m = {\n",
"const daAlinkHIO_hoCut_c1 daAlinkHIO_hoCutRB_c0::m = {\n",
};
m_len = 32;
mp_src_data = baseP[param_0];
mp_data = (void*)&m;
@@ -1357,16 +1354,15 @@ void daAlinkHIO_guardAttack_c::genMessage(JORMContext* ctx) {
daAlinkHIO_guardAttack_c::daAlinkHIO_guardAttack_c(int param_0, float param_1) {
field_0x34 = param_1;
static const char plabel0[] = "const daAlinkHIO_guardAttack_c1 daAlinkHIO_gAtPush_c0::m = {\n";
static const char plabel1[] = "const daAlinkHIO_guardAttack_c1 daAlinkHIO_gAtKick_c0::m = {\n";
static const char* plabel[] = {plabel0, plabel1};
static void* baseP[2] = {
(void*)&daAlinkHIO_gAtPush_c0::m,
(void*)&daAlinkHIO_gAtKick_c0::m,
};
static const char* plabel[] = {
"const daAlinkHIO_guardAttack_c1 daAlinkHIO_gAtPush_c0::m = {\n",
"const daAlinkHIO_guardAttack_c1 daAlinkHIO_gAtKick_c0::m = {\n",
};
m_len = 36;
mp_src_data = baseP[param_0];
mp_data = (void*)&m;
@@ -1385,24 +1381,24 @@ daAlinkHIO_guardAttack_c::daAlinkHIO_guardAttack_c(int param_0, float param_1) {
void daAlinkHIO_turnMove_c::genMessage(JORMContext* ctx) {
// Reset
ctx->genButton("リセット", 0x4000003);
//
daAlinkHIO_setAnmGenMessage((daAlinkHIO_anm_c*)(this + 0x34), ctx, "回込", 27.0, 1);
//
ctx->genSlider("半回転回込A速度", (float*)(this + 0x50), 0.0, 10.0);
//
ctx->genSlider("斬上げCF", (float*)(this + 0x54), 0.0, 28.0);
//
ctx->genSlider("回転速度率", (short*)(this + 0x48), 0, 100);
//
ctx->genSlider("回転速度最大", (short*)(this + 0x4a), 0, 0x7fff);
//
ctx->genSlider("回転速度最小", (short*)(this + 0x4c), 0, 0x7fff);
//
ctx->genSlider("半回転速度最大", (short*)(this + 0x4e), 0, 0x7fff);
//
ctx->genSlider("通常側転A速度", (float*)(this + 0x58), 0.0, 10.0);
//
ctx->genSlider("通常側転速度", (float*)(this + 0x5c), 0.0, 100.0);
// Return
daAlinkHIO_setAnmGenMessage(&m.mTurnAnm, ctx, "回込", 27.0f, 1);
// Half-turn rotation A speed
ctx->genSlider("半回転回込A速度", &m.mHalfTurnAnmSpeed, 0.0f, 10.0f);
// Slash up CF
ctx->genSlider("斬上げCF", &m.mTwirlCutDelayF, 0.0f, 28.0f);
// Rotation speed
ctx->genSlider("回転速度率", &m.mTurnSpeedRate, 0, 100);
// Maximum rotation speed
ctx->genSlider("回転速度最大", &m.mMaxTurnSpeed, 0, 0x7fff);
// Minimum rotation speed
ctx->genSlider("回転速度最小", &m.mMinTurnSpeed, 0, 0x7fff);
// Half rotation speed maximum
ctx->genSlider("半回転速度最大", &m.mMaxHalfTurnSpeed, 0, 0x7fff);
// Normal side roll A speed
ctx->genSlider("通常側転A速度", &m.mSideRollAnmSpeed, 0.0f, 10.0f);
// Normal side roll speed
ctx->genSlider("通常側転速度", &m.mSideRollSpeed, 0.0f, 100.0f);
}
daAlinkHIO_turnMove_c::daAlinkHIO_turnMove_c() {
@@ -1929,16 +1925,16 @@ void daAlinkHIO_damLaHu_c::genMessage(JORMContext* ctx) {
}
daAlinkHIO_damLaHu_c::daAlinkHIO_damLaHu_c(int param_0) {
static const char plabel0[] = "const daAlinkHIO_damLaHu_c1 daAlinkHIO_damLarge_c0::m = {\n";
static const char plabel1[] = "const daAlinkHIO_damLaHu_c1 daAlinkHIO_damHuge_c0::m = {\n";
static const char* plabel[] = {plabel0, plabel1};
static void* baseP[2] = {
(void*)&daAlinkHIO_damLarge_c0::m,
(void*)&daAlinkHIO_damHuge_c0::m,
};
static const char* plabel[] = {
"const daAlinkHIO_guardAttack_c1 daAlinkHIO_damLarge_c0::m = {\n",
"const daAlinkHIO_guardAttack_c1 daAlinkHIO_damHuge_c0::m = {\n",
};
m_len = 188;
mp_src_data = baseP[param_0];
mp_data = (void*)&m;
@@ -2083,8 +2079,8 @@ void daAlinkHIO_damSwim_c::genMessage(JORMContext* ctx) {
ctx->genSlider("最高速", &m.mMaxSpeed, 0.0f, 30.0f);
// Deceleration
ctx->genSlider("減速", &m.mDeceleration, 0.0f, 10.0f);
// Sink
daAlinkHIO_setAnmGenMessage(&m.mSinkAnm, ctx, "下沈", 10.0f, 0);
// Swimming
daAlinkHIO_setAnmGenMessage(&m.mSinkAnm, ctx, "泳ぎ", 10.0f, 0);
// Water surface
daAlinkHIO_setAnmGenMessage(&m.mSurfaceAnm, ctx, "水面", 11.0f, 1);
}
@@ -2129,8 +2125,8 @@ void daAlinkHIO_damage_c::genMessage(JORMContext* ctx) {
ctx->genSlider("無敵時間", &m.mInvincibleTime, 0, 0x96);
// Wolf floor invincible time
ctx->genSlider("狼ポリゴン時無敵時間", &m.mWolfFloorInvincibleTime, 0, 0x96);
// Floor get up
daAlinkHIO_setAnmGenMessage(&m.mFloorDmgAnm, ctx, "起き", 14.0f, 1);
// Floor
daAlinkHIO_setAnmGenMessage(&m.mFloorDmgAnm, ctx, "", 14.0f, 1);
// Dash
daAlinkHIO_setAnmGenMessage(&m.mDashDmgAnm, ctx, "ダッシュ", 9.0f, 0);
// Recover stand anm speed
@@ -2421,8 +2417,8 @@ void daAlinkHIO_bomb_c::genMessage(JORMContext* ctx) {
ctx->genSlider("投げ水平速度", &m.mThrowSpeedH, 0.0f, 100.0f);
// Throw vertical speed
ctx->genSlider("投げ垂直速度", &m.mThrowSpeedV, 0.0f, 100.0f);
// Bound rate
ctx->genSlider("バウンド", &m.mBoundRate, 0.0f, 1.0f);
// Bounce rate
ctx->genSlider("跳返", &m.mBoundRate, 0.0f, 1.0f);
// Vertical stop speed
ctx->genSlider("垂直停止速度", &m.mStopSpeedY, 0.0f, 20.0f);
// Bounce time max speed
@@ -2520,17 +2516,16 @@ void daAlinkHIO_light_c::genMessage(JORMContext* ctx) {
}
daAlinkHIO_light_c::daAlinkHIO_light_c(int param_0) {
static const char plabel0[] = "const daAlinkHIO_light_c1 daAlinkHIO_huLight_c0::m = {\n";
static const char plabel1[] = "const daAlinkHIO_light_c1 daAlinkHIO_wlLight_c0::m = {\n";
static const char plabel2[] = "const daAlinkHIO_light_c1 daAlinkHIO_zwLight_c0::m = {\n";
static const char* plabel[] = {plabel0, plabel1, plabel2};
static void* baseP[] = {
(void*)&daAlinkHIO_huLight_c0::m,
(void*)&daAlinkHIO_wlLight_c0::m,
(void*)&daAlinkHIO_zwLight_c0::m,
};
static const char* plabel[] = {
"const daAlinkHIO_light_c1 daAlinkHIO_huLight_c0::m = {\n",
"const daAlinkHIO_light_c1 daAlinkHIO_wlLight_c0::m = {\n",
"const daAlinkHIO_light_c1 daAlinkHIO_zwLight_c0::m = {\n",
};
m_len = 28;
@@ -2994,19 +2989,19 @@ void daAlinkHIO_bottle_c::genMessage(JORMContext* ctx) {
// Start drink
daAlinkHIO_setAnmGenMessage(&m.mStartDrinkAnm, ctx, "飲む始め", 56.0f, 0);
// End drink
daAlinkHIO_setAnmGenMessage(&m.mEndDrinkAnm, ctx, "", 39.0f, 0);
daAlinkHIO_setAnmGenMessage(&m.mEndDrinkAnm, ctx, "飲終", 39.0f, 0);
// Milk end drink
daAlinkHIO_setAnmGenMessage(&m.mEndDrinkAnm, ctx, "ミルク飲み", 86.0f, 0);
daAlinkHIO_setAnmGenMessage(&m.mEndDrinkAnm, ctx, "まずい飲", 86.0f, 0);
// Open
daAlinkHIO_setAnmGenMessage(&m.mOpenBottleAnm, ctx, "開ける", 49.0f, 0);
// Scoop
daAlinkHIO_setAnmGenMessage(&m.mScoopAnm, ctx, "くう", 54.0f, 0);
daAlinkHIO_setAnmGenMessage(&m.mPourAnm, ctx, "", 54.0f, 0);
// Swing down
daAlinkHIO_setAnmGenMessage(&m.mSwingDownAnm, ctx, "下振り", 24.0f, 1);
// Swing side
daAlinkHIO_setAnmGenMessage(&m.mSwingSideAnm, ctx, "横振り", 19.0f, 1);
// Medicine
daAlinkHIO_setAnmGenMessage(&m.mDrinkNastyAnm, ctx, "くすり", 29.0f, 0);
daAlinkHIO_setAnmGenMessage(&m.mScoopAnm, ctx, "掬う", 29.0f, 0);
// Get
daAlinkHIO_setAnmGenMessage(&m.mGetAnm, ctx, "ゲット", 47.0f, 0);
}
@@ -3238,26 +3233,26 @@ void daAlinkHIO_grab_c::genMessage(JORMContext* ctx) {
ctx->genSlider("強制重さ指定", &m.mForceWeightSpec, 0, 3);
// Preparation
daAlinkHIO_setAnmGenMessage(&m.mPrepareAnm, ctx, "準備", 4.0f, 0);
// Lift up
daAlinkHIO_setAnmGenMessage(&m.mLiftAnm, ctx, "持上", 9.0f, 1);
// Lift
daAlinkHIO_setAnmGenMessage(&m.mLiftBackAnm, ctx, "持上", 9.0f, 1);
// Throw
daAlinkHIO_setAnmGenMessage(&m.mThrowAnm, ctx, "投げる", 39.0f, 1);
// Carry
daAlinkHIO_setAnmGenMessage(&m.mCarryAnm, ctx, "運び", 12.0f, 1);
// Lift back
daAlinkHIO_setReverseAnmGenMessage(&m.mLiftBackAnm, ctx, "持ち上げ後", 9.0f, 0);
// Stand reverse
daAlinkHIO_setAnmGenMessage(&m.mLiftAnm, ctx, "投げる", 39.0f, 1);
// One-handed throw
daAlinkHIO_setAnmGenMessage(&m.mCarryPlaceReverseAnm, ctx, "片手投げ", 12.0f, 1);
// Place
daAlinkHIO_setReverseAnmGenMessage(&m.mThrowAnm, ctx, "置く", 9.0f, 0);
// Stand
daAlinkHIO_setReverseAnmGenMessage(&m.mStandReverseAnm, ctx, "立つ", 4.0f, 1);
// Recoil
daAlinkHIO_setAnmGenMessage(&m.mRecoilAnm, ctx, "反動", 19.0f, 1);
daAlinkHIO_setAnmGenMessage(&m.mCarryAnm, ctx, "反動", 19.0f, 1);
// Failure
daAlinkHIO_setAnmGenMessage(&m.mFailAnm, ctx, "失敗", 19.0f, 1);
daAlinkHIO_setAnmGenMessage(&m.mRecoilAnm, ctx, "失敗", 19.0f, 1);
// Failure stop time
ctx->genSlider("失敗停止時間", &m.mFailStopTime, 0, 300);
// Carry lift
daAlinkHIO_setAnmGenMessage(&m.mCarryLiftAnm, ctx, "抱え上げ", 39.0f, 0);
// Carry place reverse
daAlinkHIO_setReverseAnmGenMessage(&m.mCarryPlaceReverseAnm, ctx, "抱え置き", 39.0f, 1);
// Lift up
daAlinkHIO_setAnmGenMessage(&m.mFailAnm, ctx, "抱え上げ", 39.0f, 0);
// Hold
daAlinkHIO_setReverseAnmGenMessage(&m.mCarryLiftAnm, ctx, "抱え置き", 39.0f, 1);
// Iron ball throw
daAlinkHIO_setAnmGenMessage(&m.mIronBallThrowAnm, ctx, "鉄玉投げ", 49.0f, 1);
}
@@ -4010,16 +4005,15 @@ void daAlinkHIO_wlDamLaHu_c::genMessage(JORMContext* ctx) {
}
daAlinkHIO_wlDamLaHu_c::daAlinkHIO_wlDamLaHu_c(int param_0) {
static const char plabel0[] = "const daAlinkHIO_wlDamLaHu_c1 daAlinkHIO_wlDamLarge_c0::m = {\n";
static const char plabel1[] = "const daAlinkHIO_wlDamLaHu_c1 daAlinkHIO_wlDamHuge_c0::m = {\n";
static const char* plabel[] = {plabel0, plabel1};
static void* baseP[] = {
(void*)&daAlinkHIO_wlDamLarge_c0::m,
(void*)&daAlinkHIO_wlDamHuge_c0::m,
};
static const char* plabel[] = {
"const daAlinkHIO_wlDamLaHu_c1 daAlinkHIO_wlDamLarge_c0::m = {\n",
"const daAlinkHIO_wlDamLaHu_c1 daAlinkHIO_wlDamHuge_c0::m = {\n",
};
m_len = 108;
mp_src_data = baseP[param_0];
mp_data = (void*)&m;
@@ -4278,16 +4272,15 @@ void daAlinkHIO_wlAtWait_c::genMessage(JORMContext* ctx) {
daAlinkHIO_wlAtWait_c::daAlinkHIO_wlAtWait_c(int param_0, float param_1) {
field_0x34 = param_1;
static const char plabel0[] = "const daAlinkHIO_wlAtWait_c1 daAlinkHIO_wlAtWaLr_c0::m = {\n";
static const char plabel1[] = "const daAlinkHIO_wlAtWait_c1 daAlinkHIO_wlAtWaSc_c0::m = {\n";
static const char plabel2[] = "const daAlinkHIO_wlAtWait_c1 daAlinkHIO_wlAtWaTl_c0::m = {\n";
static const char* plabel[] = {plabel0, plabel1, plabel2};
static void* baseP[] = {
(void*)&daAlinkHIO_wlAtWaLr_c0::m,
(void*)&daAlinkHIO_wlAtWaTl_c0::m,
(void*)&daAlinkHIO_wlAtWaSc_c0::m,
};
static const char* plabel[] = {
"const daAlinkHIO_cutNormal_c1 daAlinkHIO_wlAtWaLr_c0::m = {\n",
"const daAlinkHIO_cutNormal_c1 daAlinkHIO_wlAtWaTl_c0::m = {\n",
"const daAlinkHIO_cutNormal_c1 daAlinkHIO_wlAtWaSc_c0::m = {\n",
(void*)&daAlinkHIO_wlAtWaTl_c0::m,
};
m_len = 60;
@@ -5043,7 +5036,7 @@ daAlinkHIO_wlMoveNoP_c::~daAlinkHIO_wlMoveNoP_c() {}
daAlinkHIO_wlMove_c::~daAlinkHIO_wlMove_c() {}
void daAlinkHIO_c::jumpStateUpdate(const cXyz* param_0, const cXyz* param_1, f32 param_2) {
char buf[68];
char buf[64];
f32 xDiff = param_0->x - param_1->x;
f32 zDiff = param_0->z - param_1->z;
+2 -1
View File
@@ -23,6 +23,7 @@ int daAlink_c::bottleModelCallBack() {
static int daAlink_bottleModelCallBack(J3DJoint* i_joint, int param_1) {
UNUSED(i_joint);
UNUSED(param_1);
daAlink_c* player_p = (daAlink_c*)j3dSys.getModel()->getUserArea();
@@ -568,7 +569,7 @@ int daAlink_c::procBottleSwingInit(fopAc_ac_c* i_catchActor, int param_1) {
catchActorName = PROC_ALINK;
}
if (catchActorName == PROC_OBJ_OILTUBO || catchActorName == PROC_TAG_SSDRINK ||
if (catchActorName == PROC_TAG_SSDRINK || catchActorName == PROC_OBJ_OILTUBO ||
catchActorName == PROC_TAG_BTLITM || mEquipItem == fpcNm_ITEM_KANTERA)
{
setSingleAnimeParam(ANM_BOTTLE_SCOOP, &mpHIO->mItem.mBottle.m.mScoopAnm);
+1
View File
@@ -352,6 +352,7 @@ BOOL daAlink_c::checkUpperItemActionBow() {
if (mEquipItem == fpcNm_ITEM_BOW) {
field_0x301e = 0;
}
(void)0;
} else {
changeArrowType();
}
+13 -6
View File
@@ -389,12 +389,19 @@ void daAlink_c::setCrawlMoveAngle() {
}
mLinkGndChk.SetPos(&sp20);
// Fakematch:
// dBgS::GroundCross is implicitly inlined to cBgS::GroundCross, but for some
// reason here that breaks the match. This is the only place in the code so
// far (September 2025) where it causes issues.
sp2C.set(sp20.x - sp38.x, dComIfG_Bgsp().cBgS::GroundCross(&mLinkGndChk) - sp38.y,
#if PLATFORM_SHIELD
sp2C.set(sp20.x - sp38.x, dComIfG_Bgsp().GroundCross(&mLinkGndChk) - sp38.y,
sp20.z - sp38.z);
#else
// Likely fakematch:
// dBgS::GroundCross is implicitly inlined to cBgS::GroundCross, but for some
// reason here that breaks instruction ordering. This is the only place in the code
// where it causes issues.
// It _is_ possible that this is caused by an actual version difference in Shield, given
// that the Wii versions need the cast but Shield prod does not.
sp2C.set(sp20.x - sp38.x, ((cBgS&)dComIfG_Bgsp()).GroundCross(&mLinkGndChk) - sp38.y,
sp20.z - sp38.z);
#endif
if (cLib_distanceAngleS(sp2C.atan2sY_XZ(), shape_angle.x) > 0x800) {
shape_angle.y = current.angle.y;
@@ -458,7 +465,7 @@ void daAlink_c::setCrawlAutoMoveAimPos() {
mProcVar3.field_0x300e = 0;
mProcVar0.field_0x3008 = -1;
} else if ((shape_angle.y == current.angle.y && direction == DIR_BACKWARD) || (shape_angle.y != current.angle.y && direction == DIR_FORWARD)) {
current.angle.y += 0x8000;
ANGLE_ADD_2(current.angle.y, 0x8000);
field_0x37c8.x -= 1.5f * (95.0f * cM_ssin(current.angle.y));
field_0x37c8.z -= 1.5f * (95.0f * cM_scos(current.angle.y));
+2 -1
View File
@@ -1233,6 +1233,7 @@ int daAlink_c::procCutFinishInit(int i_type) {
field_0x3588 = l_halfAtnWaitBaseAnime;
if (mCutType == CUT_TYPE_MORTAL_DRAW_A || mCutType == CUT_TYPE_FINISH_STAB) {
int dummy; // dummy decl to force stack pointer into r31 for debug
field_0x2f99 = 13;
}
@@ -1586,7 +1587,7 @@ int daAlink_c::procCutJump() {
daPy_frameCtrl_c* framectrl = mUnderFrameCtrl;
if (current.angle.y == shape_angle.y && changeCutReverseProc(ANM_CUT_JUMP)) {
current.angle.y += 0x8000;
ANGLE_ADD_2(current.angle.y, 0x8000);
mNormalSpeed = 27.0f;
dComIfGp_getVibration().StartShock(VIBMODE_S_POWER5, 31, cXyz(0.0f, 1.0f, 0.0f));
} else if (current.angle.y != shape_angle.y) {
+1 -1
View File
@@ -1805,7 +1805,7 @@ int daAlink_c::procDkCaught() {
f32 var_f30;
if (checkInputOnR()) {
if (getDirectionFromCurrentAngle() == DIR_BACKWARD) {
current.angle.y += 0x8000;
ANGLE_ADD_2(current.angle.y, 0x8000);
mNormalSpeed *= -1.0f;
}
+37 -21
View File
@@ -268,10 +268,10 @@ int daAlink_c::checkDemoAction() {
}
// TODO: reconcile
#if VERSION == VERSION_SHIELD_DEBUG
int type = prm0 - 20;
if (type >= 0 && type < 6) {
return procCutFinishInit(type);
#if VERSION == VERSION_SHIELD_DEBUG || 1
prm0 -= 20;
if (prm0 >= 0 && prm0 < 6) {
return procCutFinishInit(prm0);
} else {
return procCutTurnInit(1, 1);
}
@@ -364,7 +364,13 @@ int daAlink_c::checkDemoAction() {
return procCutLargeJumpChargeInit();
} else if (demoMode == daPy_demo_c::DEMO_UNK_73_e) {
onNoResetFlg0(FLG0_UNK_100000);
return procSideRollInit(mDemo.getParam0() ? 3 : 2);
int temp;
if (!mDemo.getParam0()) {
temp = 2;
} else {
temp = 3;
}
return procSideRollInit(temp);
} else if (demoMode == daPy_demo_c::DEMO_UNK_16_e) {
onNoResetFlg0(FLG0_UNK_100000);
if (checkWolf()) {
@@ -584,6 +590,7 @@ void daAlink_c::setDemoData() {
if (mMidnaTalkDelayTimer != 0) {
mMidnaTalkDelayTimer--;
}
(void)0;
} else {
dDemo_actor_c* demo_actor_p = dDemo_c::getActor(demoActorID);
cXyz* pos_p = NULL;
@@ -763,6 +770,7 @@ void daAlink_c::setDemoData() {
dComIfGp_evmng_cutEnd(mAlinkStaffId);
}
}
(void)0;
} else {
if (mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_TOOL_e || (mDemo.getDemoType() == daPy_demo_c::DEMO_TYPE_SYSTEM_e && mAlinkStaffId != -1)) {
if (prm0_p != NULL) {
@@ -1093,7 +1101,7 @@ void daAlink_c::setTalkAnime() {
}
}
u8 daAlink_c::setTradeItemAnime() {
bool daAlink_c::setTradeItemAnime() {
setSingleAnimeBase(ANM_TRADE_ITEM_PULL_OUT);
offModeFlg(0x100);
@@ -1110,7 +1118,7 @@ u8 daAlink_c::setTradeItemAnime() {
}
keepItemData();
return 1;
return true;
}
void daAlink_c::setTradeItemOutHand() {
@@ -1146,7 +1154,7 @@ u8 daAlink_c::setDemoRightHandIndex(u16 param_0) {
mProcVar4.field_0x3010 = 1;
return 6;
} else if (param_0 == 0xFC) {
field_0x2fab |= 0x10;
field_0x2fab |= (u8)0x10;
return 5;
} else if (param_0 == 0xFB) {
if (mpDemoHRTmpModel != NULL) {
@@ -1169,7 +1177,7 @@ u8 daAlink_c::setDemoLeftHandIndex(u16 param_0) {
}
return 0;
} else if (param_0 == 0xFC) {
field_0x2fab |= 0x8;
field_0x2fab |= (u8)0x8;
return 0;
} else if (param_0 == 0xFB) {
if (mpDemoHLTmpModel != NULL) {
@@ -1527,11 +1535,11 @@ int daAlink_c::procCoToolDemo() {
}
} else if (arg1 == 7) {
if (resID == 1) {
field_0x2fab |= 2;
field_0x2fab |= (u8)0x2;
}
} else if (arg1 == 8) {
if (resID == 1) {
field_0x2fab |= 1;
field_0x2fab |= (u8)0x1;
}
} else if (arg1 == 0) {
if (arg2 == 1) {
@@ -2042,7 +2050,11 @@ void daAlink_c::setGetSubBgm(int i_itemNo) {
/* fpcNm_ITEM_RED_BOTTLE */ SETYPE_ITEM_GET_MINI,
/* fpcNm_ITEM_GREEN_BOTTLE */ SETYPE_ITEM_GET_MINI,
/* fpcNm_ITEM_BLUE_BOTTLE */ SETYPE_ITEM_GET_MINI,
#if PLATFORM_SHIELD
/* fpcNm_ITEM_MILK_BOTTLE */ SETYPE_ITEM_GET,
#else
/* fpcNm_ITEM_MILK_BOTTLE */ SETYPE_ITEM_GET_MINI,
#endif
/* fpcNm_ITEM_HALF_MILK_BOTTLE */ SETYPE_ITEM_GET,
/* fpcNm_ITEM_OIL_BOTTLE */ SETYPE_ITEM_GET_MINI,
/* fpcNm_ITEM_WATER_BOTTLE */ SETYPE_NONE,
@@ -2217,6 +2229,8 @@ void daAlink_c::setGetSubBgm(int i_itemNo) {
}
BOOL daAlink_c::checkTreasureRupeeReturn(int i_itemNo) const {
static const int dummy = 0;
if (i_itemNo == fpcNm_ITEM_LINKS_SAVINGS) {
i_itemNo = fpcNm_ITEM_PURPLE_RUPEE;
}
@@ -3244,7 +3258,7 @@ int daAlink_c::procHandPatInit() {
mNormalSpeed = 0.0f;
setOldRootQuaternion(0, -0x8000, 0);
shape_angle.y += 0x8000;
ANGLE_ADD_2(shape_angle.y, 0x8000);
mProcVar2.field_0x300c = 0;
mProcVar3.field_0x300e = 0;
return 1;
@@ -3270,7 +3284,7 @@ int daAlink_c::procHandPat() {
if (checkAnmEnd(frameCtrl_p)) {
setSingleAnimeBase(ANM_WAIT_B_TO_A);
mProcVar2.field_0x300c = 1;
shape_angle.y += 0x8000;
ANGLE_ADD_2(shape_angle.y, 0x8000);
mPrevAngleY = shape_angle.y;
current.angle.y = shape_angle.y;
setOldRootQuaternion(0, -0x8000, 0);
@@ -3335,11 +3349,12 @@ int daAlink_c::procCoFogDead() {
}
}
int roomNo;
if (mProcVar0.field_0x3008 > 0) {
mProcVar0.field_0x3008--;
} else if (mProcVar0.field_0x3008 == 0) {
if (dStage_changeScene(daTagMist_c::getPlayerNo(), 0.0f, 5, fopAcM_GetRoomNo(this),
shape_angle.y, -1))
roomNo = fopAcM_GetRoomNo(this);
if (dStage_changeScene(daTagMist_c::getPlayerNo(), 0.0f, 5, roomNo, shape_angle.y, -1))
{
seStartSystem(Z2SE_FORCE_BACK);
mProcVar0.field_0x3008--;
@@ -3600,7 +3615,7 @@ int daAlink_c::procWolfSnowEscape() {
if (checkAnmEnd(frameCtrl_p)) {
setOldRootQuaternion(0, -0x8000, 0);
shape_angle.y += 0x8000;
ANGLE_ADD_2(shape_angle.y, 0x8000);
mPrevAngleY = shape_angle.y;
current.angle.y = shape_angle.y;
@@ -4216,7 +4231,7 @@ int daAlink_c::procDungeonWarpSceneStartInit() {
#endif
current.pos.y += 120.0f;
shape_angle.y += 0x7F7A;
ANGLE_ADD_2(shape_angle.y, 0x7F7A);
scale.set(0.0f, 1.5f, 0.0f);
mpLinkModel->setBaseScale(scale);
@@ -4247,7 +4262,7 @@ int daAlink_c::procDungeonWarpSceneStart() {
if (!var_r31) {
current.pos.y -= 5.0f;
} else {
mProcVar2.field_0x300c -= 0x200;
ANGLE_SUB_2(mProcVar2.field_0x300c, 0x200);
if (mProcVar2.field_0x300c < 0) {
return checkNextAction(0);
}
@@ -4336,7 +4351,7 @@ void daAlink_c::skipPortalObjWarp() {
if (checkNoResetFlg3(FLG3_WARP_OBJ_DEMO) &&
(dComIfGp_TargetWarpPt_get() == 9 && dComIfGp_TransportWarp_check()))
{
dStage_changeScene(2, 0.0f, 0, fopAcM_GetRoomNo(this), shape_angle.y, -1);
dStage_changeScene(2, 0.0f, 0, (int)fopAcM_GetRoomNo(this), shape_angle.y, -1);
} else {
dComIfGs_setTurnRestart(dMeter2Info_getWarpPos(), dMeter2Info_getWarpPlayerNo(),
dMeter2Info_getWarpRoomNo(), setParamData(dMeter2Info_getWarpRoomNo(), 0, 0xCA, 0));
@@ -4605,8 +4620,9 @@ int daAlink_c::procCoWarp() {
if (mDemo.getDemoMode() == daPy_demo_c::DEMO_UNK_45_e) {
if (mProcVar1.field_0x300a != 0) {
if (mGroundCode == 4) {
dComIfGp_setNextStage(dComIfGp_getStartStageName(), mProcVar4.field_0x3010,
fopAcM_GetRoomNo(this), -1, 0.0f, 5, 1, 0,
dComIfGp_setNextStage(dComIfGp_getStartStageName(),
mProcVar4.field_0x3010,
(int)fopAcM_GetRoomNo(this), -1, 0.0f, 5, 1, 0,
shape_angle.y, 1, 0);
changeOriginalDemo();
changeDemoMode(1, 0, 0, 0);
+145 -128
View File
@@ -9,7 +9,7 @@
#include "d/d_com_inf_game.h"
#include "d/d_k_wmark.h"
EffParamProc daAlink_c::m_fEffParamProc[] = {
const EffParamProc daAlink_c::m_fEffParamProc[] = {
&daAlink_c::setEffectFrontRollParam,
&daAlink_c::setEffectSlipParam,
&daAlink_c::setEffectSmallLandParam,
@@ -554,7 +554,7 @@ void daAlink_c::setEffect() {
(field_0x3198 == 0x14C || field_0x3198 == 0x14D || field_0x3198 == 0x155))
{
sp3C = TRUE;
current.angle.y += 0x8000;
ANGLE_ADD_2(current.angle.y, 0x8000);
}
f32 temp_f30 = field_0x3798.absXZ(current.pos);
@@ -643,7 +643,7 @@ void daAlink_c::setEffect() {
}
if (sp3C) {
current.angle.y += 0x8000;
ANGLE_ADD_2(current.angle.y, 0x8000);
}
setFirePointDamageEffect();
@@ -869,10 +869,6 @@ void daAlink_c::setSwordChargeEffect() {
}
void daAlink_c::setElecDamageEffect() {
static Vec const localOffset = {0.0f, -10.0f, -10.0f};
static Vec const localScale0 = {0.69999999f, 0.85f, 1.5f};
static Vec const localScale1 = {1.0f, 0.85f, 1.5f};
static const u16 effName0[] = {
dPa_RM(ID_ZI_S_LK_BIRIBIRIA_A),
dPa_RM(ID_ZI_S_LK_BIRIBIRIA_B),
@@ -885,6 +881,10 @@ void daAlink_c::setElecDamageEffect() {
dPa_RM(ID_ZI_S_LK_BIRIBIRIC_C),
};
static Vec const localOffset = {0.0f, -10.0f, -10.0f};
static Vec const localScale0 = {0.69999999f, 0.85f, 1.5f};
static Vec const localScale1 = {1.0f, 0.85f, 1.5f};
cXyz pos;
const u16* effNameList;
@@ -938,11 +938,30 @@ void daAlink_c::clearCutTurnEffectID() {
}
void daAlink_c::setCutTurnEffect() {
if (mUnderFrameCtrl[0].getFrame() < mProcVar1.field_0x300a) {
return;
}
static Vec const waterEffScale = {1.5f, 1.5f, 1.5f};
static const int unused0 = 0;
static const int unused1 = 0;
static const int unused2 = 0;
static const u16 effNameNormal[] = {
ID_ZI_J_KAITENGIRI_A,
ID_ZI_J_KAITENGIRI_B,
};
static s16 leftRotNormal[] = {
cM_deg2s(180), cM_deg2s(45), cM_deg2s(13), cM_deg2s(180), cM_deg2s(45), cM_deg2s(13),
};
static Vec const leftTransNormal[] = {
{0.0f, 0.0f, 0.0f},
{0.0f, 30.0f, 0.0f},
};
static const u16 effNameLight[] = {
ID_ZI_J_KAITENGIRIL_A,
ID_ZI_J_KAITENGIRIL_B,
@@ -950,25 +969,18 @@ void daAlink_c::setCutTurnEffect() {
ID_ZI_J_KAITENGIRIL_D,
};
static const u16 effNameWater[] = {
ID_ZI_J_KAITENGIRI_INWTR_A,
ID_ZI_J_KAITENGIRI_INWTR_B,
static s16 leftRotLight[] = {
cM_deg2s(180), cM_deg2s(100), cM_deg2s(13), cM_deg2s(180), cM_deg2s(80), cM_deg2s(13),
cM_deg2s(180), cM_deg2s(80), cM_deg2s(13), cM_deg2s(180), cM_deg2s(80), cM_deg2s(13),
};
static Vec const waterEffScale = {1.5f, 1.5f, 1.5f};
static Vec const leftTransNormal[] = {
{0.0f, 0.0f, 0.0f},
{0.0f, 30.0f, 0.0f},
};
static Vec const leftTransLight[] = {
{0.0f, 0.0f, 0.0f},
{0.0f, 0.0f, 0.0f},
{0.0f, 35.0f, 0.0f},
{0.0f, 0.0f, 0.0f},
};
static u16 const effNameLarge[] = {
ID_ZI_J_KAITENGIRID_A,
ID_ZI_J_KAITENGIRID_B,
@@ -977,7 +989,13 @@ void daAlink_c::setCutTurnEffect() {
ID_ZI_J_KAITENGIRID_E,
ID_ZI_J_KAITENGIRID_F,
};
static s16 leftRotLarge[] = {
cM_deg2s(180), cM_deg2s(45), cM_deg2s(13), cM_deg2s(180), cM_deg2s(45), cM_deg2s(13),
cM_deg2s(180), cM_deg2s(60), cM_deg2s(13), cM_deg2s(180), cM_deg2s(60), cM_deg2s(13),
cM_deg2s(180), cM_deg2s(60), cM_deg2s(13), cM_deg2s(180), cM_deg2s(60), cM_deg2s(13),
};
static Vec const leftTransLarge[] = {
{0.0f, 0.0f, 0.0f},
{0.0f, 35.0f, 0.0f},
@@ -987,97 +1005,86 @@ void daAlink_c::setCutTurnEffect() {
{0.0f, 50.0f, 0.0f},
};
static const u16 effNameWater[] = {
ID_ZI_J_KAITENGIRI_INWTR_A,
ID_ZI_J_KAITENGIRI_INWTR_B,
};
static s16 leftRotWater[] = {
cM_deg2s(-90), cM_deg2s(0), cM_deg2s(180), cM_deg2s(0), cM_deg2s(0), cM_deg2s(180),
};
static Vec const leftTransWater[] = {
{0.0f, 0.0f, 0.0f},
{0.0f, 0.0f, 0.0f},
};
if (!(mUnderFrameCtrl[0].getFrame() < mProcVar1.field_0x300a)) {
static s16 leftRotNormal[] = {
cM_deg2s(180), cM_deg2s(45), cM_deg2s(13), cM_deg2s(180), cM_deg2s(45), cM_deg2s(13),
};
JPABaseEmitter* emitter;
u32* emitterId = field_0x3204;
const u16* effNameList;
JGeometry::TVec3<s16>* rot;
JGeometry::TVec3<f32>* trans;
int effNum;
BOOL sp18 = FALSE;
static s16 leftRotLight[] = {
cM_deg2s(180), cM_deg2s(100), cM_deg2s(13), cM_deg2s(180), cM_deg2s(80), cM_deg2s(13),
cM_deg2s(180), cM_deg2s(80), cM_deg2s(13), cM_deg2s(180), cM_deg2s(80), cM_deg2s(13),
};
static s16 leftRotLarge[] = {
cM_deg2s(180), cM_deg2s(45), cM_deg2s(13), cM_deg2s(180), cM_deg2s(45), cM_deg2s(13),
cM_deg2s(180), cM_deg2s(60), cM_deg2s(13), cM_deg2s(180), cM_deg2s(60), cM_deg2s(13),
cM_deg2s(180), cM_deg2s(60), cM_deg2s(13), cM_deg2s(180), cM_deg2s(60), cM_deg2s(13),
};
static s16 leftRotWater[] = {
cM_deg2s(-90), cM_deg2s(0), cM_deg2s(180), cM_deg2s(0), cM_deg2s(0), cM_deg2s(180),
};
u32* emitterId = field_0x3204;
const u16* effNameList;
JGeometry::TVec3<s16>* rot;
JGeometry::TVec3<f32>* trans;
int effNum;
BOOL sp18 = FALSE;
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE)) {
if (checkZoraWearAbility()) {
effNameList = effNameWater;
rot = (JGeometry::TVec3<s16>*)leftRotWater;
trans = (JGeometry::TVec3<f32>*)leftTransWater;
effNum = 2;
if (mCutType == CUT_TYPE_LARGE_TURN_RIGHT || mCutType == CUT_TYPE_LARGE_TURN_LEFT) {
sp18 = TRUE;
}
} else {
return;
}
} else if (mCutType == CUT_TYPE_LARGE_TURN_RIGHT || mCutType == CUT_TYPE_LARGE_TURN_LEFT) {
effNameList = effNameLarge;
rot = (JGeometry::TVec3<s16>*)leftRotLarge;
trans = (JGeometry::TVec3<f32>*)leftTransLarge;
effNum = 6;
} else if (checkNoResetFlg3(FLG3_UNK_100000)) {
effNameList = effNameLight;
rot = (JGeometry::TVec3<s16>*)leftRotLight;
trans = (JGeometry::TVec3<f32>*)leftTransLight;
effNum = 4;
} else {
effNameList = effNameNormal;
rot = (JGeometry::TVec3<s16>*)leftRotNormal;
trans = (JGeometry::TVec3<f32>*)leftTransNormal;
if (checkNoResetFlg0(FLG0_WATER_IN_MOVE)) {
if (checkZoraWearAbility()) {
effNameList = effNameWater;
rot = (JGeometry::TVec3<s16>*)leftRotWater;
trans = (JGeometry::TVec3<f32>*)leftTransWater;
effNum = 2;
if (mCutType == CUT_TYPE_LARGE_TURN_RIGHT || mCutType == CUT_TYPE_LARGE_TURN_LEFT) {
sp18 = TRUE;
}
} else {
return;
}
} else if (mCutType == CUT_TYPE_LARGE_TURN_RIGHT || mCutType == CUT_TYPE_LARGE_TURN_LEFT) {
effNameList = effNameLarge;
rot = (JGeometry::TVec3<s16>*)leftRotLarge;
trans = (JGeometry::TVec3<f32>*)leftTransLarge;
effNum = 6;
} else if (checkNoResetFlg3(FLG3_UNK_100000)) {
effNameList = effNameLight;
rot = (JGeometry::TVec3<s16>*)leftRotLight;
trans = (JGeometry::TVec3<f32>*)leftTransLight;
effNum = 4;
} else {
effNameList = effNameNormal;
rot = (JGeometry::TVec3<s16>*)leftRotNormal;
trans = (JGeometry::TVec3<f32>*)leftTransNormal;
effNum = 2;
}
cXyz pos;
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(1), &pos);
cXyz pos;
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(1), &pos);
if (checkMagneBootsOn()) {
mDoMtx_stack_c::transS(pos);
mDoMtx_stack_c::concat(mMagneBootMtx);
mDoMtx_stack_c::ZXYrotM(shape_angle);
}
if (checkMagneBootsOn()) {
mDoMtx_stack_c::transS(pos);
mDoMtx_stack_c::concat(mMagneBootMtx);
mDoMtx_stack_c::ZXYrotM(shape_angle);
}
for (int i = 0; i < effNum; i++, emitterId++, effNameList++, rot++, trans++) {
JPABaseEmitter* emitter = setEmitter(emitterId, *effNameList, &pos, &shape_angle);
if (emitter != NULL) {
if (checkMagneBootsOn()) {
emitter->setGlobalRTMatrix(mDoMtx_stack_c::get());
for (int i = 0; i < effNum; i++, emitterId++, effNameList++, rot++, trans++) {
emitter = setEmitter(emitterId, *effNameList, &pos, &shape_angle);
if (emitter != NULL) {
if (checkMagneBootsOn()) {
emitter->setGlobalRTMatrix(mDoMtx_stack_c::get());
}
if (mProcVar4.field_0x3010 == 0) {
emitter->setLocalRotation(*rot);
if (trans->y > 1.0f) {
emitter->setLocalTranslation(*trans);
}
}
if (mProcVar4.field_0x3010 == 0) {
emitter->setLocalRotation(*rot);
if (trans->y > 1.0f) {
emitter->setLocalTranslation(*trans);
}
}
if (sp18) {
if (i == 0) {
emitter->setGlobalParticleScale(waterEffScale);
} else {
emitter->setVolumeSize(225);
emitter->setAwayFromAxisSpeed(15.0f);
}
if (sp18) {
if (i == 0) {
emitter->setGlobalParticleScale(waterEffScale);
} else {
emitter->setVolumeSize(225);
emitter->setAwayFromAxisSpeed(15.0f);
}
}
}
@@ -1094,6 +1101,8 @@ void daAlink_c::setHorseCutTurnEffect() {
}
void daAlink_c::setCutLargeJumpLandEffect() {
static const int dummy = 0;
cXyz pos(current.pos.x + cM_ssin(shape_angle.y) * 20.0f, current.pos.y + 50.0f, current.pos.z + cM_scos(shape_angle.y) * 20.0f);
csXyz rot;
cM3dGPla tripla;
@@ -1195,7 +1204,7 @@ void daAlink_c::setWolfRollAttackEffect() {
csXyz rot(shape_angle.x, shape_angle.y, 0);
if (mProcVar2.field_0x300c == 0) {
rot.x += 0x8000;
ANGLE_ADD_2(rot.x, 0x8000);
}
setEmitter(&field_0x3204[0], ID_ZI_J_WL_KAITENAT_A, &pos, &rot);
@@ -1243,6 +1252,7 @@ void daAlink_c::setWolfDigEffect() {
emitter->setAwayFromAxisSpeed(var_f30);
dComIfGp_particle_levelEmitterOnEventMove(field_0x32cc);
}
(void)0;
} else if (field_0x3198 == 7) {
var_r29 = 0;
var_r28 = ID_ZI_J_DASHWTRA_C;
@@ -1364,6 +1374,7 @@ void daAlink_c::setWolfJumpAttackEffect() {
}
void daAlink_c::setWolfBarrierHitEffect(dBgS_LinChk& i_linchk) {
static const int dummy = 0;
static const u16 normalNameID[] = {
dPa_RM(ID_ZI_S_NSBARRIER_COLL_A),
dPa_RM(ID_ZI_S_NSBARRIER_COLL_B),
@@ -1406,6 +1417,8 @@ void daAlink_c::setCutWaterDropEffect() {
}
void daAlink_c::setWaterDropEffect() {
static const int dummy1 = 0;
static const int dummy2 = 0;
static const u16 effDataTable[] = {
ID_ZI_J_LK_NUREPOTA_BACKBONE2,
ID_ZI_J_LK_NUREPOTA_WAIST,
@@ -1467,7 +1480,7 @@ void daAlink_c::setWaterDropEffect() {
if (field_0x32c0[i] != 0) {
if (field_0x32a0[i].a > -20) {
field_0x32a0[i].a -= 2;
field_0x32a0[i].a -= (s16)2;
if (field_0x32a0[i].a < -20) {
field_0x32a0[i].a = -20;
@@ -1507,6 +1520,8 @@ void daAlink_c::setSwordUpColorEffect() {
}
void daAlink_c::setSwordCutSplash() {
static Vec const swordCutSplashScale = {0.6f, 0.6f, 0.6f};
static const u16 cutSplashName[] = {
ID_ZI_J_DOWNWTRA_A,
ID_ZI_J_DOWNWTRA_B,
@@ -1514,8 +1529,6 @@ void daAlink_c::setSwordCutSplash() {
ID_ZI_J_DOWNWTRA_D,
};
static Vec const swordCutSplashScale = {0.6f, 0.6f, 0.6f};
if (mCutType != 0 && mProcID != PROC_CUT_TURN && getCutAtFlg() && checkNoResetFlg0(FLG0_UNK_80) && mEquipItem == 0x103) {
if (mSwordTopPos.y <= mWaterY && field_0x34b0.y > mWaterY) {
cXyz sp14(mSwordTopPos.x, mWaterY, mSwordTopPos.z);
@@ -1543,7 +1556,7 @@ void daAlink_c::setMetamorphoseEffectStartLink() {
JPABaseEmitter* emitter = setEmitter(&field_0x3200, ID_ZI_J_ATOW_C, &cXyz::Zero, NULL);
#if VERSION == VERSION_SHIELD_DEBUG
static Vec effScale = {1.33f, 1.0f, 1.0f};
static const Vec effScale = {1.33f, 1.0f, 1.0f};
if (emitter != NULL) {
emitter->setGlobalParticleScale(effScale);
}
@@ -1752,28 +1765,30 @@ void daAlink_c::initFirePointDamageEffect(cXyz const* param_0, dCcD_GObjInf* i_h
}
}
if (i != 4) {
cXyz* dmg_vec = getDamageVec(i_hitObj);
csXyz sp38(dmg_vec->atan2sY_XZ(), dmg_vec->atan2sX_Z(), 0);
csXyz sp40;
cXyz sp30;
int var_r30 = field_0x2e44.getHitmarkPosAndAngle(param_0, &sp38, &sp30, &sp40, 0);
if (var_r30 == -1 || (!checkWolf() && (var_r30 == 1 || var_r30 == 15 || var_r30 == 16))) {
return;
}
eff->field_0x2 = field_0x2e44.getJntNum(var_r30);
eff->field_0xc = *param_0;
eff->field_0x24 = cXyz::Zero;
eff->field_0x0 = 1;
eff->field_0x4 = 0;
mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(eff->field_0x2));
mDoMtx_stack_c::inverse();
mDoMtx_stack_c::multVec(&sp30, &eff->field_0x18);
if (i == 4) {
return;
}
cXyz* dmg_vec = getDamageVec(i_hitObj);
csXyz sp38(dmg_vec->atan2sY_XZ(), dmg_vec->atan2sX_Z(), 0);
csXyz sp40;
cXyz sp30;
int var_r30 = field_0x2e44.getHitmarkPosAndAngle(param_0, &sp38, &sp30, &sp40, 0);
if (var_r30 == -1 || (!checkWolf() && (var_r30 == 1 || var_r30 == 15 || var_r30 == 16))) {
return;
}
eff->field_0x2 = field_0x2e44.getJntNum(var_r30);
eff->field_0xc = *param_0;
eff->field_0x24 = cXyz::Zero;
eff->field_0x0 = 1;
eff->field_0x4 = 0;
mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(eff->field_0x2));
mDoMtx_stack_c::inverse();
mDoMtx_stack_c::multVec(&sp30, &eff->field_0x18);
}
void daAlink_c::setFirePointDamageEffect() {
@@ -1827,6 +1842,11 @@ void daAlink_c::setFirePointDamageEffect() {
}
void daAlink_c::setFreezeEffect() {
static const int dummy = 0;
static const u16 effName[] = {
dPa_RM(ID_ZI_S_LK_FREEZEND_A),
dPa_RM(ID_ZI_S_LK_FREEZEND_B),
};
static Vec const effScale = {1.0f, 1.8f, 1.0f};
static Vec const wolfEffScale = {1.0f, 1.0f, 1.5f};
static Vec const offsetPos = {0.0f, 0.0f, -10.0f};
@@ -1859,10 +1879,6 @@ void daAlink_c::setFreezeEffect() {
}
for (int i = 0; i < 2; i++) {
static const u16 effName[] = {
dPa_RM(ID_ZI_S_LK_FREEZEND_A),
dPa_RM(ID_ZI_S_LK_FREEZEND_B),
};
dComIfGp_particle_setColor(effName[i], &pos, &tevStr, NULL, NULL, 0.0f, 0xFF);
}
@@ -1900,6 +1916,7 @@ void daAlink_c::clearWoodShieldBurnEffect() {
}
void daAlink_c::setWoodShieldBurnOutEffect() {
static const int dummy = 0;
static const u16 effName[] = {
ID_ZI_J_LK_SH_BURN_C,
ID_ZI_J_LK_SH_BURN_D,
@@ -2061,7 +2078,7 @@ void daAlink_blur_c::draw() {
GXTexCoord2s16(var_r27, 0);
var_r27 = var_r28;
var_r28 += temp_r26;
ANGLE_ADD_2(var_r28, temp_r26);
}
GXEnd();
+3 -3
View File
@@ -2103,7 +2103,7 @@ int daAlink_c::procGoatMove() {
int temp_r27 = abs(mMoveAngle);
if (checkInputOnR() && temp_r27 > 0x800 && temp_r27 < 0x7800 && (fabsf(sp8.x) < 250.0f || (sp8.x > 0.0f && mMoveAngle < 0) || (sp8.x < 0.0f && mMoveAngle > 0))) {
if (abs((s16)(mMoveAngle - current.angle.y)) > 0x4000) {
current.angle.y += 0x8000;
ANGLE_ADD_2(current.angle.y, 0x8000);
mNormalSpeed *= -1.0f;
if (field_0x2f98 == 3) {
@@ -2294,7 +2294,7 @@ int daAlink_c::procGoatCatch() {
if (checkAnmEnd(framectrl)) {
if (mProcVar5.field_0x3012 == 0) {
setOldRootQuaternion(0, -0x8000, 0);
shape_angle.y += 0x8000;
ANGLE_ADD_2(shape_angle.y, 0x8000);
current.angle.y = shape_angle.y;
field_0x2fe4 = shape_angle.y;
}
@@ -2537,7 +2537,7 @@ int daAlink_c::procGoronMove() {
f32 var_f31;
if (checkInputOnR() && temp_r28 > 0x800 && temp_r28 < 0x7800) {
if (abs((s16)(mMoveAngle - current.angle.y)) > 0x4000) {
current.angle.y += 0x8000;
ANGLE_ADD_2(current.angle.y, 0x8000);
mNormalSpeed *= -1.0f;
if (field_0x2f98 == 3) {
+6 -7
View File
@@ -92,14 +92,13 @@ void daAlink_c::setArrowShieldActor(fopAc_ac_c* i_actor, int param_1) {
fopAcM_delete(first_arrow);
}
int i = 0;
for (; i < 15; i++) {
mShieldArrowIDs[i] = mShieldArrowIDs[i + 1];
field_0x2f7c[i] = field_0x2f7c[i + 1];
for (arrow_num = 0; arrow_num < 15; arrow_num++) {
mShieldArrowIDs[arrow_num] = mShieldArrowIDs[arrow_num + 1];
field_0x2f7c[arrow_num] = field_0x2f7c[arrow_num + 1];
}
mShieldArrowIDs[i] = new_arrow_id;
field_0x2f7c[i] = 10;
mShieldArrowIDs[arrow_num] = new_arrow_id;
field_0x2f7c[arrow_num] = 10;
dComIfGp_setItemArrowNumCount(1);
fopAcM_createItemForSimpleDemo(&current.pos, fpcNm_ITEM_ARROW_10, -1, NULL, NULL, 0.0f, 0.0f);
@@ -201,6 +200,7 @@ void daAlink_c::setShieldGuard() {
void daAlink_c::setGuardSe(dCcD_GObjInf* i_objinf) {
int var_r31;
u32 hit_se;
BOOL isRebound;
if (checkWoodShieldEquipNotIronBall() && !checkMagicArmorNoDamage()) {
@@ -211,7 +211,6 @@ void daAlink_c::setGuardSe(dCcD_GObjInf* i_objinf) {
isRebound = TRUE;
}
u32 hit_se;
if (i_objinf->GetTgHitGObj() != NULL && i_objinf->GetTgHitGObj()->GetAtType() == AT_TYPE_BOMB) {
hit_se = Z2SE_HIT_METAL_WEAPON;
} else {
+8 -6
View File
@@ -35,6 +35,8 @@ int daAlink_c::getHangDirectionFromAngle() {
}
BOOL daAlink_c::hangMoveBgCheck(s16 param_0, cXyz* param_1) {
static const int dummy = 0;
BOOL rt = false;
cM3dGPla sp78;
@@ -902,7 +904,7 @@ int daAlink_c::setDragonHangPos() {
cXyz sp18;
mDoMtx_stack_c::multVecSR(&cXyz::BaseY, &sp18);
if (sp18.y < 0.0f) {
shape_angle.y += 0x8000;
ANGLE_ADD_2(shape_angle.y, 0x8000);
shape_angle.x = 0x8000 - shape_angle.x;
shape_angle.z *= -1;
}
@@ -1418,7 +1420,7 @@ int daAlink_c::procLadderDownStartInit() {
dComIfGp_setPlayerStatus0(0, 0x2000000);
setOldRootQuaternion(0, 0x8000, 0);
shape_angle.y += 0x8000;
ANGLE_ADD_2(shape_angle.y, 0x8000);
current.angle.y = shape_angle.y;
f32 var_f31 = cM_ssin(field_0x306e);
@@ -2457,7 +2459,7 @@ int daAlink_c::procClimbToRoof() {
field_0x2f99 = 2;
if (checkAnmEnd(frameCtrl)) {
shape_angle.y += 0x8000;
ANGLE_ADD_2(shape_angle.y, 0x8000);
current.angle.y = shape_angle.y;
mPrevAngleY = shape_angle.y;
setOldRootQuaternion(0, 0x8000, 0);
@@ -2495,7 +2497,7 @@ void daAlink_c::setRoofHangHandOnSE(cBgS_PolyInfo* unused) {
if (frame_ctrl->checkPass(field_0x3478)) {
return;
} else if (frame_ctrl->checkPass(field_0x347c)) {
(void)0;
}
}
@@ -2842,7 +2844,7 @@ int daAlink_c::procRoofHangTurnInit() {
if ((s16)(mMoveAngle - shape_angle.y) < 0) {
anm_speed = -mpHIO->mRoofHang.m.mInvertASpeed;
mProcVar0.field_0x3008 = 1;
shape_angle.y += 0x8000;
ANGLE_ADD_2(shape_angle.y, 0x8000);
setOldRootQuaternion(0, -0x8000, 0);
field_0x2060->getOldFrameTransInfo(0)->mTranslate.z = -8.899365425109863f;
mProcVar2.field_0x300c = mMoveAngle;
@@ -2881,7 +2883,7 @@ int daAlink_c::procRoofHangTurn() {
daPy_frameCtrl_c* frame_ctrl = mUnderFrameCtrl;
if (checkAnmEnd(frame_ctrl)) {
if (mProcVar0.field_0x3008 == 0) {
shape_angle.y += 0x8000;
ANGLE_ADD_2(shape_angle.y, 0x8000);
current.angle.y = shape_angle.y;
setOldRootQuaternion(0, -0x8000, 0);
field_0x2060->getOldFrameTransInfo(0)->mTranslate.z += 17.798730850219727f;
+44 -35
View File
@@ -18,6 +18,8 @@ enum {
};
void daAlink_c::hsChainShape_c::draw() {
static const int dummy = 0;
daAlink_c* alink = (daAlink_c*)getUserArea();
J3DModelData* modelData = alink->getItemModelData();
J3DMaterial* material = modelData->getMaterialNodePointer(0);
@@ -50,7 +52,8 @@ void daAlink_c::hsChainShape_c::draw() {
ppos++;
pangle++;
for (int i = 0; i < 101; i++, ppos++, pangle++) {
int i;
for (i = 0; i < 101; i++, ppos++, pangle++) {
mDoMtx_stack_c::copy(j3dSys.getViewMtx());
mDoMtx_stack_c::transM(*ppos);
mDoMtx_stack_c::ZXYrotM(*pangle);
@@ -65,7 +68,7 @@ void daAlink_c::hsChainShape_c::draw() {
cXyz spC8;
cXyz spBC;
for (int i = 0; i < 2; i++) {
for (i = 0; i < 2; i++) {
cXyz* sp48;
csXyz* sp44;
@@ -91,7 +94,7 @@ void daAlink_c::hsChainShape_c::draw() {
spE = -0x3000;
}
sp10 = sp44->y;
sp10 = (s16)sp44->y;
sp14 = sp44->z + spE;
f32 var_f29 = spC8.abs();
@@ -144,7 +147,7 @@ void daAlink_c::hsChainShape_c::draw() {
csXyz sp64(sp6C);
f32 sp34 = M_PI / maxDistanceF;
f32 temp_f27;
f32 var_f26 = 0.0f;
f32 var_f28;
@@ -153,6 +156,7 @@ void daAlink_c::hsChainShape_c::draw() {
if (alink->getHookshotStopTime() & 1) {
var_f28 *= -1.0f;
}
(void)0;
while (maxDistanceF > var_f30) {
temp_f27 = var_f28 * cM_fsin(sp34 * var_f30);
@@ -172,7 +176,7 @@ void daAlink_c::hsChainShape_c::draw() {
material->getShape()->simpleDrawCache();
sp64.z += 0x3000;
ANGLE_ADD_2(sp64.z, 0x3000);
var_f26 = temp_f27;
var_f30 += fabsf(cM_scos(spC)) * 5.0f;
@@ -183,15 +187,15 @@ void daAlink_c::hsChainShape_c::draw() {
const cXyz& subChainTopPos = alink->getHsSubChainTopPos();
maxDistance = subChainRootPos - subChainTopPos;
f32 temp_f1 = maxDistance.abs();
if (temp_f1 > 1.0f) {
maxDistance *= (1.0f / temp_f1);
maxDistanceF = maxDistance.abs();
if (maxDistanceF > 1.0f) {
maxDistance *= (1.0f / maxDistanceF);
var_f30 = 0.0f;
sp98 = subChainTopPos;
sp6C.set(maxDistance.atan2sY_XZ(), maxDistance.atan2sX_Z(), 0);
while (temp_f1 > var_f30) {
while (maxDistanceF > var_f30) {
mDoMtx_stack_c::copy(j3dSys.getViewMtx());
mDoMtx_stack_c::transM(sp98);
mDoMtx_stack_c::ZXYrotM(sp6C);
@@ -202,7 +206,7 @@ void daAlink_c::hsChainShape_c::draw() {
material->getShape()->simpleDrawCache();
sp98 += maxDistance * 5.0f;
sp6C.z += 0x3000;
ANGLE_ADD_2(sp6C.z, 0x3000);
var_f30 += 5.0f;
}
}
@@ -212,8 +216,7 @@ void daAlink_c::hsChainShape_c::draw() {
void daAlink_c::hookshotAtHitCallBack(dCcD_GObjInf* i_atObjInf, fopAc_ac_c* i_tgActor,
dCcD_GObjInf* i_tgObjInf) {
if (i_tgActor != NULL && fopAcM_IsActor(i_tgActor) && !i_tgObjInf->ChkTgHookshotThrough()) {
cXyz* hit_pos_p = i_atObjInf->GetAtHitPosP();
f32 dist_to_hitpos = getHsChainTopPos().abs(*hit_pos_p);
f32 dist_to_hitpos = getHsChainTopPos().abs(*i_atObjInf->GetAtHitPosP());
if (dist_to_hitpos < mSearchBallScale) {
mSearchBallScale = dist_to_hitpos;
@@ -709,7 +712,13 @@ void daAlink_c::setHookshotReturnEnd() {
field_0x2060->initOldFrameMorf(3.0f, field_0x30a8, field_0x30aa);
} else if (checkHookshotShootAnime()) {
int _;
setUpperAnimeBaseSpeed(dRes_ID_ALANM_BCK_HSWAIT_e, checkAttentionLock() ? mpHIO->mItem.mHookshot.m.mWaitAnmSpeed : 0.0f, 3.0f);
f32 anmSpeed;
if (!checkAttentionLock()) {
anmSpeed = 0.0f;
} else {
anmSpeed = mpHIO->mItem.mHookshot.m.mWaitAnmSpeed;
}
setUpperAnimeBaseSpeed(dRes_ID_ALANM_BCK_HSWAIT_e, anmSpeed, 3.0f);
}
mFastShotTime = 0;
@@ -796,25 +805,24 @@ void daAlink_c::setHookshotPos() {
mDoMtx_stack_c::transM(-2.0f, 1.0f, 1.0f);
mDoMtx_stack_c::XYZrotM(cM_deg2s(5.7f), cM_deg2s(162.0f), 0);
J3DModel* var_r27;
J3DModel* model;
if (field_0x3020 == 0) {
var_r27 = mHeldItemModel;
model = mHeldItemModel;
} else {
var_r27 = field_0x0710;
model = field_0x0710;
}
var_r27->setBaseTRMtx(mDoMtx_stack_c::get());
model->setBaseTRMtx(mDoMtx_stack_c::get());
mDoMtx_stack_c::copy(mpLinkModel->getAnmMtx(mRightItemJntNo));
mDoMtx_stack_c::transM(-2.0f, 0.0f, 1.0f);
mDoMtx_stack_c::XYZrotM(cM_deg2s(-78.0f), cM_deg2s(182.0f), cM_deg2s(-99.0f));
J3DModel* var_r27_2;
if (field_0x3020 == 0) {
var_r27_2 = field_0x0710;
model = field_0x0710;
} else {
var_r27_2 = mHeldItemModel;
model = mHeldItemModel;
}
var_r27_2->setBaseTRMtx(mDoMtx_stack_c::get());
model->setBaseTRMtx(mDoMtx_stack_c::get());
if (mItemMode == 2 || mItemMode == HS_MODE_SHOOT_e) {
field_0x33dc += 1.0f;
@@ -865,6 +873,7 @@ void daAlink_c::setHookshotPos() {
mpHookSound->framework(0, mVoiceReverbIntensity);
fopAc_ac_c* targetAc_p = mHookTargetAcKeep.getActor();
f32 var_f29;
f32 return_speed;
f32 shoot_speed;
f32 max_length;
@@ -981,7 +990,7 @@ void daAlink_c::setHookshotPos() {
if (mHookTargetAcKeep.getActor() != NULL) {
mHookshotTopPos = field_0x381c;
fopAc_ac_c* targetAc_p = mHookTargetAcKeep.getActor();
targetAc_p = mHookTargetAcKeep.getActor();
if (targetAc_p != NULL && (targetAc_p->actor_status & 0x280000)) {
mHookTargetAcKeep.setData(targetAc_p);
mIronBallCenterPos = mHookshotTopPos - targetAc_p->current.pos;
@@ -1026,12 +1035,12 @@ void daAlink_c::setHookshotPos() {
}
cXyz sp17C = mHookshotTopPos - mHeldItemRootPos;
f32 temp_f1 = sp17C.abs();
sp17C *= 1.0f / temp_f1;
var_f29 = sp17C.abs();
sp17C *= 1.0f / var_f29;
f32 temp_f26 = max_length - 15.0f;
if (temp_f1 >= temp_f26) {
mHookshotTopPos = mHeldItemRootPos + (sp17C * temp_f26);
f32 var_f26 = max_length - 15.0f;
if (var_f29 >= var_f26) {
mHookshotTopPos = mHeldItemRootPos + (sp17C * var_f26);
mItemMode = HS_MODE_RETURN_e;
}
@@ -1070,9 +1079,9 @@ void daAlink_c::setHookshotPos() {
mPolyInfo2.SetPolyInfo(mRopeLinChk);
if (dComIfG_Bgsp().ChkMoveBG_NoDABg(mRopeLinChk)) {
fopAc_ac_c* target_ac = dComIfG_Bgsp().GetActorPointer(mRopeLinChk);
mHookTargetAcKeep.setData(target_ac);
fopAcM_setHookCarryNow(target_ac);
targetAc_p = dComIfG_Bgsp().GetActorPointer(mRopeLinChk);
mHookTargetAcKeep.setData(targetAc_p);
fopAcM_setHookCarryNow(targetAc_p);
}
} else {
int poly_att0 = dComIfG_Bgsp().GetPolyAtt0(mRopeLinChk);
@@ -1131,7 +1140,7 @@ void daAlink_c::setHookshotPos() {
if (dComIfG_Bgsp().LineCross(mpHookshotLinChk) &&
dComIfG_Bgsp().GetPolyAtt0(*mpHookshotLinChk) != 6)
{
fpc_ProcID id = fopKyM_createWpillar(mpHookshotLinChk->GetCrossP(), 0.5f, 0);
fopKyM_createWpillar(mpHookshotLinChk->GetCrossP(), 0.5f, 0);
mDoAud_seStart(Z2SE_CM_BODYFALL_WATER_S, mpHookshotLinChk->GetCrossP(), 0,
mVoiceReverbIntensity);
}
@@ -1217,7 +1226,7 @@ void daAlink_c::hookshotRoofTurn() {
if (checkInputOnR()) {
int stick_direction = getDirectionFromAngle(mStickAngle);
int angle = (int)(1024.0f * mMoveValue * mMoveValue);
s16 angle = 1024.0f * mMoveValue * mMoveValue;
if (stick_direction == DIR_LEFT) {
shape_angle.y += angle;
@@ -1252,11 +1261,11 @@ void daAlink_c::hookshotRoofTurn() {
u8 status_dir = 0;
if (current.pos.y < max_rise_y) {
status_dir |= 8;
status_dir |= (u8)0x8;
}
if (current.pos.y > min_descend_y) {
status_dir |= 2;
status_dir |= (u8)0x2;
}
if (!checkEventRun()) {
+17 -8
View File
@@ -281,9 +281,14 @@ void daAlink_c::setHorseSwordUpAnime() {
void daAlink_c::setHorseTurnUpperAnime(BOOL i_isTurnL) {
if (checkHorseNoUpperAnime() || (!i_isTurnL && checkHorseTurnRAnime()) ||
(i_isTurnL == TRUE && checkHorseTurnLAnime()))
{
setUpperAnimeBaseMorf(!i_isTurnL ? (u16)dRes_ID_ALANM_BCK_TURNLS_e : (u16)dRes_ID_ALANM_BCK_TURNRS_e, 4.0f);
(i_isTurnL == TRUE && checkHorseTurnLAnime())) {
u16 anmResIdx;
if (i_isTurnL == FALSE) {
anmResIdx = (u16)dRes_ID_ALANM_BCK_TURNLS_e;
} else {
anmResIdx = (u16)dRes_ID_ALANM_BCK_TURNRS_e;
}
setUpperAnimeBaseMorf(anmResIdx, 4.0f);
}
}
@@ -1095,7 +1100,11 @@ int daAlink_c::checkHorseGetOffDirection() {
lin_end_pos.set(ride_actor_p->current.pos.x + cM_ssin(var_r28) * 125.0f, lin_start_pos.y,
ride_actor_p->current.pos.z + cM_scos(var_r28) * 125.0f);
#if PLATFORM_SHIELD
f32 check_y[3];
#else
f32 check_y[3] = {0.0f, 0.0f, 0.0f};
#endif
check_y[0] = current.pos.y;
check_y[1] = ride_actor_p->current.pos.y + (current.pos.y - ride_actor_p->current.pos.y) * 0.5f;
@@ -1103,8 +1112,7 @@ int daAlink_c::checkHorseGetOffDirection() {
check_y[2] = var_f31;
int check_no;
int i;
for (i = 0; i < 2; i++) {
for (int i = 0; i < 2; i++) {
for (check_no = 0; check_no < 3; check_no++) {
lin_start_pos.y = check_y[check_no];
lin_end_pos.y = lin_start_pos.y;
@@ -1123,7 +1131,7 @@ int daAlink_c::checkHorseGetOffDirection() {
lin_end_pos.x = lin_start_pos.x * 2.0f - lin_end_pos.x;
lin_end_pos.z = lin_start_pos.z * 2.0f - lin_end_pos.z;
var_r28 += 0x8000;
ANGLE_ADD_2(var_r28, 0x8000);
}
return 2;
@@ -1319,7 +1327,7 @@ int daAlink_c::procHorseRideInit() {
}
field_0x2fc0 = 1;
}
if (mDemo.getDemoMode() != daPy_demo_c::DEMO_UNK_7_e) {
setOldRootQuaternion(0, (s16)(shape_angle.y - field_0x27f4->shape_angle.y), 0);
}
@@ -1670,7 +1678,8 @@ int daAlink_c::procHorseWaitInit() {
initServiceWaitTime();
checkHorseGetOffAndSetDoStatus();
setSyncRide((!checkHorseNoUpperAnime() && !checkEquipAnime()) || checkInputOnR() || !checkHorseGetOff() || checkHorseGetOffDirection() == 2);
setSyncRide(!((checkHorseNoUpperAnime() || checkEquipAnime()) && !checkInputOnR() &&
checkHorseGetOff() && checkHorseGetOffDirection() != 2));
field_0x33f0 = 0.0f;
return 1;
}
+26 -9
View File
@@ -18,7 +18,8 @@ static fopAc_ac_c* daAlink_searchIceLeaf(fopAc_ac_c* i_actor, void* i_data) {
}
bool daAlink_c::checkSnowCode() const {
return mGndPolySpecialCode == dBgW_SPCODE_HEAVY_SNOW || mGndPolySpecialCode == dBgW_SPCODE_LIGHT_SNOW;
return mGndPolySpecialCode == dBgW_SPCODE_HEAVY_SNOW ||
mGndPolySpecialCode == dBgW_SPCODE_LIGHT_SNOW;
}
bool daAlink_c::checkSnowCodePolygon(cBgS_PolyInfo& i_polyinfo) {
@@ -27,7 +28,8 @@ bool daAlink_c::checkSnowCodePolygon(cBgS_PolyInfo& i_polyinfo) {
}
bool daAlink_c::checkBoardRestart() {
return (mRideStatus == 0 && mRideAcKeep.getActor() != NULL) && fopAcM_GetName(mRideAcKeep.getActor()) == PROC_Obj_IceLeaf;
return (mRideStatus == 0 && mRideAcKeep.getActor() != NULL) &&
fopAcM_GetName(mRideAcKeep.getActor()) == PROC_Obj_IceLeaf;
}
int daAlink_c::boardCommon(BOOL i_canMove) {
@@ -47,7 +49,9 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
s16 sp8 = current.angle.y + 0x8000;
for (int i = 0; i < 3; i++) {
if (mAcchCir[i].ChkWallHit() && cLib_distanceAngleS(sp8, mAcchCir[i].GetWallAngleY()) <= 0x2000 && mNormalSpeed > 30.0f) {
if (mAcchCir[i].ChkWallHit() &&
cLib_distanceAngleS(sp8, mAcchCir[i].GetWallAngleY()) <= 0x2000 &&
mNormalSpeed > 30.0f) {
setJumpMode();
return procCoLargeDamageInit(-4, TRUE, 0, 0, NULL, 0);
}
@@ -110,12 +114,22 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
var_f30 = (temp_f29 * mNormalSpeed) / 5.0f;
}
if (checkZeroSpeedF() && temp_r26 > 0x7000 && mProcID == PROC_BOARD_WAIT && !checkModeFlg(2)) {
if (mProcVar3.field_0x300e <= 910.0f && checkUnderMove0BckNoArc(ANM_RIDE_WAIT) && mLinkAcch.ChkGroundHit()) {
if (checkZeroSpeedF() &&
temp_r26 > 0x7000 &&
mProcID == PROC_BOARD_WAIT &&
!checkModeFlg(2)) {
if (mProcVar3.field_0x300e <= l_boardSlopeAngleMin &&
checkUnderMove0BckNoArc(ANM_RIDE_WAIT) &&
mLinkAcch.ChkGroundHit()) {
return procBoardTurnInit();
}
}
} else if (temp_r26 < 0x2000 && field_0x2f8c == 0xB && mProcID == PROC_BOARD_WAIT && !checkModeFlg(2) && mLinkAcch.ChkGroundHit() && (mProcVar3.field_0x300e < field_0x3122) && (checkUnderMove0BckNoArc(ANM_RIDE_WAIT) || checkUnderMove0BckNoArc(ANM_RIDE_FRONT))) {
} else if (temp_r26 < 0x2000 &&
field_0x2f8c == 0xB &&
mProcID == PROC_BOARD_WAIT &&
!checkModeFlg(2) && mLinkAcch.ChkGroundHit() &&
(mProcVar3.field_0x300e < field_0x3122) &&
(checkUnderMove0BckNoArc(ANM_RIDE_WAIT) || checkUnderMove0BckNoArc(ANM_RIDE_FRONT))) {
if (mNormalSpeed <= mpHIO->mItem.mBoard.m.mMaxPushSpeed) {
return procBoardRowInit();
}
@@ -160,7 +174,10 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
offModeFlg(2);
speed.y = 0.0f;
} else {
if (mProcVar3.field_0x300e > 910.0f && (mProcID != PROC_BOARD_ROW || !(mProcVar3.field_0x300e < 2000.0f))) {
if (mProcVar3.field_0x300e > l_boardSlopeAngleMin &&
(mProcID != PROC_BOARD_ROW || !(mProcVar3.field_0x300e < l_boardSlopeRowAngleMin))) {
f32 temp_f27;
f32 temp_f26;
f32 var_f25 = (f32)mProcVar3.field_0x300e / (f32)field_0x3122;
if (var_f25 > 1.0f) {
var_f25 = 1.0f;
@@ -176,8 +193,8 @@ int daAlink_c::boardCommon(BOOL i_canMove) {
var_f31 *= cM_fsin(1.5707964f * var_f25);
if (var_f31 > 0.1f) {
f32 temp_f27 = (var_f31 * cM_ssin(var_r27)) + (mNormalSpeed * cM_ssin(shape_angle.y));
f32 temp_f26 = (var_f31 * cM_scos(var_r27)) + (mNormalSpeed * cM_scos(shape_angle.y));
temp_f27 = (var_f31 * cM_ssin(var_r27)) + (mNormalSpeed * cM_ssin(shape_angle.y));
temp_f26 = (var_f31 * cM_scos(var_r27)) + (mNormalSpeed * cM_scos(shape_angle.y));
mNormalSpeed = JMAFastSqrt((temp_f27 * temp_f27) + (temp_f26 * temp_f26));
if (mNormalSpeed > mMaxSpeed) {
+20 -17
View File
@@ -213,6 +213,11 @@ void daAlink_c::setIronBallChainPos() {
int sp38;
int sp34;
f32 var_f30;
f32 var_f31;
f32 var_f29;
f32 var_f28;
f32 var_f27;
if (mItemVar0.field_0x3018 == 2) {
var_r29 = mIronBallChainPos + 1;
var_r27 = var_r29 - 1;
@@ -293,20 +298,20 @@ void daAlink_c::setIronBallChainPos() {
daPy_frameCtrl_c* framectrl = &mUnderFrameCtrl[0];
if (mItemVar0.field_0x3018 == 1) {
f32 temp_f25 = framectrl->getEnd() - 13.0f;
f32 temp_f29 = (framectrl->getFrame() - 13.0f) / temp_f25;
s16 sp12 = -16384.0f - (14336.0f * temp_f29);
var_f29 = (framectrl->getFrame() - 13.0f) / (framectrl->getEnd() - 13.0f);
s16 sp12 = -16384.0f - (14336.0f * var_f29);
mDoMtx_stack_c::ZXYrotS(mBodyAngle.x, shape_angle.y, 0);
mDoMtx_stack_c::YrotM(sp12);
mDoMtx_stack_c::multVec(&cXyz::BaseZ, &sp298);
sp298 *= 15.0f * (1.0f + temp_f29);
sp298 *= 15.0f * (1.0f + var_f29);
sp38 = 1000;
} else if (mItemVar0.field_0x3018 == 4) {
Vec sp268 = {0.0f, 0.0f, 0.0f};
sp268.y = mpHIO->mItem.mIronBall.m.mThrowChainAccelY;
sp268.z = mpHIO->mItem.mIronBall.m.mThrowChainAccelZ;
f32 throwAccelZ = mpHIO->mItem.mIronBall.m.mThrowChainAccelZ;
sp268.z = throwAccelZ;
mDoMtx_stack_c::ZXYrotS(mBodyAngle.x, shape_angle.y, 0);
mDoMtx_stack_c::multVec(&sp268, &sp298);
@@ -355,10 +360,8 @@ void daAlink_c::setIronBallChainPos() {
sp2A4 += sp298;
}
s16 temp_r25 = sp2A4.atan2sX_Z();
mIronBallChainAngle->set(sp2A4.atan2sY_XZ(), temp_r25, 0);
mIronBallChainAngle->set(sp2A4.atan2sY_XZ(), sp2A4.atan2sX_Z(), 0);
} else {
f32 var_f30;
if (mItemVar0.field_0x3018 == 4 || mItemVar0.field_0x3018 == 5) {
var_f30 = mpHIO->mItem.mIronBall.m.mThrowChainGravity;
} else {
@@ -384,9 +387,9 @@ void daAlink_c::setIronBallChainPos() {
BOOL sp2C = ((mItemVar0.field_0x3018 == 0 && checkUnderMove1BckNoArc(ANM_IRONBALL_WALK)) && mNowAnmPackUnder[1].getRatio() > 0.8f) && (mUnderFrameCtrl[1].getFrame() >= 24.0f || mUnderFrameCtrl[1].getFrame() <= 3.0f);
f32 temp_f31 = 5.0f * (5.0f * (mNowAnmPackUnder[1].getRatio() - 0.8f));
f32 temp_f28 = temp_f31 * cM_scos(shape_angle.y);
temp_f31 *= cM_ssin(shape_angle.y);
var_f31 = 5.0f * (5.0f * (mNowAnmPackUnder[1].getRatio() - 0.8f));
var_f28 = var_f31 * cM_scos(shape_angle.y);
var_f31 *= cM_ssin(shape_angle.y);
for (i = mItemMode; i > 0; i--, var_r29--, var_r26--) {
sp28C = *var_r29;
@@ -396,8 +399,8 @@ void daAlink_c::setIronBallChainPos() {
} else {
sp2A4 = (*var_r29 - *var_r27) + *var_r26;
if (sp2C) {
sp2A4.x += temp_f31;
sp2A4.z += temp_f28;
sp2A4.x += var_f31;
sp2A4.z += var_f28;
}
sp2A4.y += var_f30;
@@ -421,10 +424,10 @@ void daAlink_c::setIronBallChainPos() {
s16 sp10;
s16 spE = mIronBallChainAngle->z + 0x3000;
for (i = 0; i < mItemMode; i++, sp3C++, var_r29++, spE += 0x3000) {
for (i = 0; i < mItemMode; i++, sp3C++, var_r29++, ANGLE_ADD_2(spE, 0x3000)) {
sp2A4 = (*var_r27 - *var_r29);
f32 var_f27 = sp2A4.absXZ();
var_f27 = sp2A4.absXZ();
if (var_f27 < 1.0f) {
sp10 = sp3C[-1].y;
} else {
@@ -721,7 +724,7 @@ void daAlink_c::setIronBallPos() {
}
if (mItemMode > 6) {
mItemMode -= var_r22;
ANGLE_SUB_2(mItemMode, var_r22);
if (mItemMode <= 6) {
mItemVar0.field_0x3018 = 8;
}
@@ -749,7 +752,7 @@ void daAlink_c::setIronBallPos() {
mDoMtx_stack_c::multVec(&ironBallPosVec, mIronBallChainPos);
if (mItemMode > 6) {
mItemMode -= 10;
mItemMode -= (s16)10;
if (mItemMode < 6) {
mItemMode = 6;
}
+1 -1
View File
@@ -374,7 +374,7 @@ int daAlink_c::procSumouSideMove() {
f32 var_f1;
if (checkInputOnR() && temp_r30_2 > 0x800 && temp_r30_2 < 0x7800) {
if (abs((s16)(mMoveAngle - current.angle.y)) > 0x4000) {
current.angle.y += 0x8000;
ANGLE_ADD_2(current.angle.y, 0x8000);
mNormalSpeed *= -1.0f;
if (field_0x2f98 == 3) {
+6 -5
View File
@@ -254,7 +254,7 @@ void daAlink_c::setSpeedAndAngleSwim() {
if (checkInputOnR()) {
if (getDirectionFromCurrentAngle() == DIR_BACKWARD) {
current.angle.y += 0x8000;
ANGLE_ADD_2(current.angle.y, 0x8000);
mNormalSpeed *= -1.0f;
}
@@ -1413,12 +1413,13 @@ int daAlink_c::procSwimDamageInit(dCcD_GObjInf* i_hitObj) {
dmg_vec->z * var_f29 + dmg_vec->x * var_f30);
mProcVar0.field_0x3008 =
cLib_minMaxLimit(cM_atan2s(sp24.z, sp24.y), (s16)-mpHIO->mDamage.mDamSwim.m.mFrontBackBodyMaxAngle,
(s16)mpHIO->mDamage.mDamSwim.m.mFrontBackBodyMaxAngle);
cLib_minMaxLimit<s16>(cM_atan2s(sp24.z, sp24.y),
-mpHIO->mDamage.mDamSwim.m.mFrontBackBodyMaxAngle,
mpHIO->mDamage.mDamSwim.m.mFrontBackBodyMaxAngle);
mProcVar1.field_0x300a = cLib_minMaxLimit(
mProcVar1.field_0x300a = cLib_minMaxLimit<s16>(
cM_atan2s(sp24.x, -JMAFastSqrt(sp24.y * sp24.y + sp24.z * sp24.z)),
(s16)-mpHIO->mDamage.mDamSwim.m.mLeftRightBodyMaxAngle, (s16)mpHIO->mDamage.mDamSwim.m.mLeftRightBodyMaxAngle);
-mpHIO->mDamage.mDamSwim.m.mLeftRightBodyMaxAngle, mpHIO->mDamage.mDamSwim.m.mLeftRightBodyMaxAngle);
int dir = getDirectionFromAngle(cM_atan2s(-sp24.x, -sp24.z));
if (bvar4) {
+2
View File
@@ -272,6 +272,7 @@ void daAlink_c::initStatusWindow() {
JUT_ASSERT(437, tmpBuffer);
JKRReadIdxResource(tmpBuffer, 0x400, btpResIdx, dComIfGp_getAnmArchive());
// this should call J3DAnmLoaderDataBase::load(const void*) but it breaks retail
J3DAnmTexPattern* btp = (J3DAnmTexPattern*)J3DAnmLoaderDataBase::load(tmpBuffer, J3DLOADER_UNK_FLAG0);
btp->setFrame(0.0f);
btp->searchUpdateMaterialID(field_0x06c0);
@@ -281,6 +282,7 @@ void daAlink_c::initStatusWindow() {
JUT_ASSERT(449, tmpBuffer);
JKRReadIdxResource(tmpBuffer, 0x400, btkResIdx, dComIfGp_getAnmArchive());
// this should call J3DAnmLoaderDataBase::load(const void*) but it breaks retail
J3DAnmTextureSRTKey* btk = (J3DAnmTextureSRTKey*)J3DAnmLoaderDataBase::load(tmpBuffer, J3DLOADER_UNK_FLAG0);
btk->setFrame(0.0f);
btk->searchUpdateMaterialID(field_0x06c0);
+119 -112
View File
@@ -722,7 +722,7 @@ void daAlink_c::setSpeedAndAngleWolf() {
var_r4 = mMoveAngle;
}
cLib_addCalcAngleS(&shape_angle.y, var_r4, turn_rate, turn_max * 2, turn_min * 2);
cLib_addCalcAngleS(&shape_angle.y, var_r4, turn_rate, (s16)turn_max * 2, (s16)turn_min * 2);
int temp_r3 = (s16)(temp_r26 - current.angle.y) * (s16)(shape_angle.y - current.angle.y);
if (temp_r3 <= 0 && temp_r3 >= -0x1000000) {
@@ -766,7 +766,7 @@ void daAlink_c::setSpeedAndAngleWolfAtn() {
if (getDirectionFromCurrentAngle() == DIR_BACKWARD &&
(field_0x2f98 == 0 || field_0x2f98 == 1))
{
current.angle.y += 0x8000;
ANGLE_ADD_2(current.angle.y, 0x8000);
mNormalSpeed *= -1.0f;
if (checkWolfAtnMoveBack((s16)(current.angle.y - shape_angle.y))) {
@@ -816,7 +816,7 @@ void daAlink_c::setSpeedAndAngleWolfAtn() {
}
cLib_addCalcAngleS(&shape_angle.y, var_r26, mpHIO->mWolf.mWlAtnMove.m.mTurnAngleRate,
turn_max * 2, mpHIO->mWolf.mWlAtnMove.m.mTurnAngleMin * 2);
(s16)turn_max * 2, mpHIO->mWolf.mWlAtnMove.m.mTurnAngleMin * 2);
}
setNormalSpeedF(speed, deceleration);
@@ -839,19 +839,9 @@ BOOL daAlink_c::checkUnderMove0BckNoArcWolf(daAlink_c::daAlink_WANM i_anm) const
}
void daAlink_c::setBlendWolfMoveAnime(f32 param_0) {
f32 sp8;
if (mGroundCode == 8) {
sp8 = 1.0f;
} else {
sp8 = cM_scos(field_0x2ff0);
}
f32 var_f31;
f32 temp_f30 = fabsf(mNormalSpeed * sp8) / mMaxSpeed;
daPy_frameCtrl_c* framectrl0 = &mUnderFrameCtrl[0];
daPy_frameCtrl_c* framectrl1 = &mUnderFrameCtrl[1];
f32 temp_f30;
daPy_frameCtrl_c* framectrl0;
daPy_frameCtrl_c* framectrl1;
f32 idleAnmSpeed;
f32 walkAnmSpeed;
f32 jogAnmSpeed;
@@ -862,6 +852,21 @@ void daAlink_c::setBlendWolfMoveAnime(f32 param_0) {
f32 jogToRunRate;
f32 walkRunMorf;
f32 runAnmMinBlendRate;
f32 spC;
f32 sp8;
if (mGroundCode == 8) {
sp8 = 1.0f;
} else {
sp8 = cM_scos(field_0x2ff0);
}
f32 var_f31;
temp_f30 = fabsf(mNormalSpeed * sp8) / mMaxSpeed;
framectrl0 = &mUnderFrameCtrl[0];
framectrl1 = &mUnderFrameCtrl[1];
if (checkWolfDashMode()) {
walkToJogRate = mpHIO->mWolf.mWlMove.m.mWalkToBriskWalkRate;
walkRunMorf = mpHIO->mWolf.mWlMove.m.mWalkRunInterpolation;
@@ -986,7 +991,6 @@ void daAlink_c::setBlendWolfMoveAnime(f32 param_0) {
var_f31 = 1.0f;
}
f32 spC;
if (checkNoResetFlg1(FLG1_DASH_MODE)) {
if (checkWolfSlowDash()) {
spC = mpHIO->mWolf.mWlMove.m.mADashQuickRunASpeedSlow;
@@ -1075,7 +1079,7 @@ void daAlink_c::setWolfAtnMoveDirection() {
}
} else if (mProcID != PROC_WOLF_ROLL_ATTACK_MOVE) {
if (field_0x2f98 == 1) {
current.angle.y += 0x8000;
ANGLE_ADD_2(current.angle.y, 0x8000);
mNormalSpeed *= -1.0f;
}
@@ -1155,20 +1159,12 @@ void daAlink_c::setBlendWolfAtnMoveAnime(f32 param_0) {
void daAlink_c::setBlendWolfAtnBackMoveAnime(f32 param_0) {
mMaxSpeed = mpHIO->mWolf.mWlAtnMove.m.mRearMaxSpeed;
f32 var_f28;
if (mGroundCode == 8) {
var_f28 = 1.0f;
} else {
var_f28 = cM_scos(field_0x2ff0);
}
f32 temp_f31 = fabsf(mNormalSpeed * var_f28) / mMaxSpeed;
f32 var_f30;
f32 var_f31 = fabsf(mNormalSpeed * (mGroundCode == 8 ? 1.0f : cM_scos(field_0x2ff0))) / mMaxSpeed;
field_0x2fc1 = 3;
if (temp_f31 < mpHIO->mWolf.mWlAtnMove.m.mRearWalkChangeRate) {
f32 temp_f29 = temp_f31 / mpHIO->mWolf.mWlAtnMove.m.mRearWalkChangeRate;
if (var_f31 < mpHIO->mWolf.mWlAtnMove.m.mRearWalkChangeRate) {
f32 var_f29 = var_f31 / mpHIO->mWolf.mWlAtnMove.m.mRearWalkChangeRate;
int var_r29;
if (checkModeFlg(1)) {
@@ -1178,6 +1174,7 @@ void daAlink_c::setBlendWolfAtnBackMoveAnime(f32 param_0) {
}
daAlink_WANM var_r28;
f32 var_f30;
if (checkWolfAtnWait()) {
var_r28 = WANM_ATN;
var_f30 = mpHIO->mWolf.mWlMove.m.mGazeIdleAnmSpeed;
@@ -1186,7 +1183,7 @@ void daAlink_c::setBlendWolfAtnBackMoveAnime(f32 param_0) {
var_f30 = mpHIO->mWolf.mWlMoveNoP.m.mIdleAnmSpeed;
}
setDoubleAnimeWolf(temp_f29, var_f30, mpHIO->mWolf.mWlAtnMove.m.mRearWalkAnmSpeed, var_r28,
setDoubleAnimeWolf(var_f29, var_f30, mpHIO->mWolf.mWlAtnMove.m.mRearWalkAnmSpeed, var_r28,
WANM_ATN_LOCK_WALK_BACK, var_r29, param_0);
} else {
setDoubleAnimeWolf(1.0f, mpHIO->mWolf.mWlAtnMove.m.mRearWalkAnmSpeed,
@@ -1274,7 +1271,7 @@ int daAlink_c::setSingleAnimeWolf(daAlink_c::daAlink_WANM i_anmID, f32 i_speed,
// "Is Adult Link but setting Wolf animation\n"
OS_REPORT("リンクなのに狼アニメ設定\n");
JUT_ASSERT(2214, FALSE);
}
}
J3DAnmTransform* var_r30 = getAnimeResource(&mUnderAnmHeap[0], m_wlAnmDataTable[i_anmID].m_bckID, 0x10800);
if (var_r30 == NULL) {
@@ -1688,7 +1685,7 @@ void daAlink_c::wolfBgCheck() {
if (var_r28 != 0 || var_r25 != 0) {
onNoResetFlg1(FLG1_UNK_20000000);
if (var_r28 != 0 && var_r25 != 0) {
if (sp20.abs2() > sp14.abs2()) {
sp8 = sp20;
@@ -1819,8 +1816,9 @@ void daAlink_c::setWolfFootMatrix() {
daAlink_footData_c* footData = mFootData1;
int i, j;
int var_r31;
for (i = 0; i < 2; i++, footData++) {
int var_r31 = fFootJoint[i];
var_r31 = fFootJoint[i];
for (j = 0; j < 3; j++, var_r31++) {
cMtx_copy(mpLinkModel->getAnmMtx(var_r31), footData->field_0x14[j]);
if (j == 1) {
@@ -1831,9 +1829,9 @@ void daAlink_c::setWolfFootMatrix() {
footData = mFootData2;
for (int i = 0; i < 2; i++, footData++) {
int var_r31 = bFootJoint[i];
for (int j = 0; j < 3; j++, var_r31++) {
for (i = 0; i < 2; i++, footData++) {
var_r31 = bFootJoint[i];
for (j = 0; j < 3; j++, var_r31++) {
cMtx_copy(mpLinkModel->getAnmMtx(var_r31), footData->field_0x14[j]);
if (j == 0) {
var_r31++;
@@ -1841,64 +1839,66 @@ void daAlink_c::setWolfFootMatrix() {
}
}
if (field_0x2060->getOldFrameFlg()) {
cXyz sp40[4];
cXyz sp34(0.0f, 0.0f, 0.0f);
cXyz sp28;
if (!field_0x2060->getOldFrameFlg()) {
return;
}
footData = mFootData1;
cXyz sp40[4];
cXyz sp34(0.0f, 0.0f, 0.0f);
cXyz sp28;
for (i = 0; i < 2; i++, footData++) {
int var_r31 = fFootJoint[i];
for (j = 0; j < 4; j++, var_r31++) {
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(var_r31), &sp40[j]);
}
footData = mFootData1;
int temp_r31 = fFootJoint[i];
setMatrixWorldAxisRot(mpLinkModel->getAnmMtx(temp_r31), footData->field_0x6, 0, 0, 0, NULL);
sp34.x = sp40[0].abs(sp40[1]);
mDoMtx_stack_c::multVec(&sp34, &sp28);
temp_r31++;
setMatrixWorldAxisRot(mpLinkModel->getAnmMtx(temp_r31), footData->field_0x4, 0, 0, 0, &sp28);
sp34.x = sp40[1].abs(sp40[2]);
mDoMtx_stack_c::multVec(&sp34, &sp28);
temp_r31++;
setMatrixWorldAxisRot(mpLinkModel->getAnmMtx(temp_r31), footData->field_0x4, 0, 0, 0, &sp28);
sp34.x = sp40[2].abs(sp40[3]);
mDoMtx_stack_c::multVec(&sp34, &sp28);
temp_r31++;
setMatrixWorldAxisRot(mpLinkModel->getAnmMtx(temp_r31), footData->field_0x2, 0, 0, 0, &sp28);
for (i = 0; i < 2; i++, footData++) {
var_r31 = fFootJoint[i];
for (j = 0; j < 4; j++, var_r31++) {
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(var_r31), &sp40[j]);
}
footData = mFootData2;
var_r31 = fFootJoint[i];
setMatrixWorldAxisRot(mpLinkModel->getAnmMtx(var_r31), footData->field_0x6, 0, 0, 0, NULL);
for (i = 0; i < 2; i++, footData++) {
int var_r31 = bFootJoint[i];
for (j = 0; j < 4; j++, var_r31++) {
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(var_r31), &sp40[j]);
}
sp34.x = sp40[0].abs(sp40[1]);
mDoMtx_stack_c::multVec(&sp34, &sp28);
var_r31++;
setMatrixWorldAxisRot(mpLinkModel->getAnmMtx(var_r31), footData->field_0x4, 0, 0, 0, &sp28);
int temp_r31 = bFootJoint[i];
setMatrixWorldAxisRot(mpLinkModel->getAnmMtx(temp_r31), footData->field_0x6, 0, 0, 0, NULL);
sp34.x = sp40[0].abs(sp40[1]);
mDoMtx_stack_c::multVec(&sp34, &sp28);
temp_r31++;
setMatrixWorldAxisRot(mpLinkModel->getAnmMtx(temp_r31), footData->field_0x6, 0, 0, 0, &sp28);
sp34.x = sp40[1].abs(sp40[2]);
mDoMtx_stack_c::multVec(&sp34, &sp28);
var_r31++;
setMatrixWorldAxisRot(mpLinkModel->getAnmMtx(var_r31), footData->field_0x4, 0, 0, 0, &sp28);
sp34.x = sp40[1].abs(sp40[2]);
mDoMtx_stack_c::multVec(&sp34, &sp28);
temp_r31++;
setMatrixWorldAxisRot(mpLinkModel->getAnmMtx(temp_r31), footData->field_0x4, 0, 0, 0, &sp28);
sp34.x = sp40[2].abs(sp40[3]);
mDoMtx_stack_c::multVec(&sp34, &sp28);
var_r31++;
setMatrixWorldAxisRot(mpLinkModel->getAnmMtx(var_r31), footData->field_0x2, 0, 0, 0, &sp28);
}
sp34.x = sp40[2].abs(sp40[3]);
mDoMtx_stack_c::multVec(&sp34, &sp28);
temp_r31++;
setMatrixWorldAxisRot(mpLinkModel->getAnmMtx(temp_r31), footData->field_0x2, 0, 0, 0, &sp28);
footData = mFootData2;
for (i = 0; i < 2; i++, footData++) {
var_r31 = bFootJoint[i];
for (j = 0; j < 4; j++, var_r31++) {
mDoMtx_multVecZero(mpLinkModel->getAnmMtx(var_r31), &sp40[j]);
}
var_r31 = bFootJoint[i];
setMatrixWorldAxisRot(mpLinkModel->getAnmMtx(var_r31), footData->field_0x6, 0, 0, 0, NULL);
sp34.x = sp40[0].abs(sp40[1]);
mDoMtx_stack_c::multVec(&sp34, &sp28);
var_r31++;
setMatrixWorldAxisRot(mpLinkModel->getAnmMtx(var_r31), footData->field_0x6, 0, 0, 0, &sp28);
sp34.x = sp40[1].abs(sp40[2]);
mDoMtx_stack_c::multVec(&sp34, &sp28);
var_r31++;
setMatrixWorldAxisRot(mpLinkModel->getAnmMtx(var_r31), footData->field_0x4, 0, 0, 0, &sp28);
sp34.x = sp40[2].abs(sp40[3]);
mDoMtx_stack_c::multVec(&sp34, &sp28);
var_r31++;
setMatrixWorldAxisRot(mpLinkModel->getAnmMtx(var_r31), footData->field_0x2, 0, 0, 0, &sp28);
}
}
@@ -2039,7 +2039,7 @@ void daAlink_c::wolfFootBgCheck() {
}
if (temp_f30 > 0.0f || sp30) {
if (!setLegAngle(temp_f30, footData, &sp58[i][j], &sp50[i][j], 1)) {
if (!setLegAngle(temp_f30, footData, &sp58[i][j], &sp50[i][j], 1)) {
sp58[i][j] = 0;
sp50[i][j] = 0;
}
@@ -2051,7 +2051,7 @@ void daAlink_c::wolfFootBgCheck() {
cLib_addCalcAngleS(&footData->field_0x6, sp58[i][j], 2, 0x1800, 0x10);
cLib_addCalcAngleS(&footData->field_0x4, sp50[i][j], 2, 0x1800, 0x10);
s16 spE;
if (mProcID == PROC_WOLF_SLIDE_READY) {
spE = shape_angle.x;
@@ -2180,6 +2180,8 @@ f32 daAlink_c::setWolfWaitSlip() {
void daAlink_c::checkWolfAtnDoCharge() {}
void daAlink_c::setWolfChainPos() {
static const int dummy1 = 0;
static const int dummy2 = 0;
static Vec const wolfChainBaseOffset = {22.0f, 0.0f, -12.0f};
static Vec const wolfChainVec = {0.0f, 0.0f, -9.0f};
@@ -2228,7 +2230,7 @@ void daAlink_c::setWolfChainPos() {
var_r29->y -= 9.0f;
*var_r30 = *(var_r30 - 1);
var_r30->z += 0x4000;
ANGLE_ADD_2(var_r30->z, 0x4000);
*var_r26 = cXyz::Zero;
}
@@ -2292,9 +2294,9 @@ void daAlink_c::setWolfChainPos() {
sp8 = var_r30[-1].z - var_r30->z;
if ((sp8 >= 0 && sp8 <= 0x4000) || sp8 < -0x4000) {
var_r30->z -= 0x2000;
ANGLE_SUB_2(var_r30->z, 0x2000);
} else {
var_r30->z += 0x2000;
ANGLE_ADD_2(var_r30->z, 0x2000);
}
mDoMtx_stack_c::transS(sp78);
@@ -2682,7 +2684,7 @@ int daAlink_c::procWolfDashReverseInit(int param_0) {
} else {
mNormalSpeed = mpHIO->mWolf.mWlMove.m.mDashReboundHorizontalSpeed;
speed.y = mpHIO->mWolf.mWlMove.m.mDashReboundVerticalSpeed;
current.angle.y += 0x8000;
ANGLE_ADD_2(current.angle.y, 0x8000);
mProcVar2.field_0x300c = 0;
}
@@ -3888,19 +3890,19 @@ int daAlink_c::procWolfHowlDemoInit() {
sp8.z = sp14.z - var_f30;
if (!commonLineCheck(&sp14, &sp8)) {
shape_angle.y += 0x8000;
ANGLE_ADD_2(shape_angle.y, 0x8000);
} else {
sp8.x = sp14.x + var_f30;
sp8.z = sp14.z - var_f31;
if (!commonLineCheck(&sp14, &sp8)) {
shape_angle.y += 0x4000;
ANGLE_ADD_2(shape_angle.y, 0x4000);
} else {
sp8.x = sp14.x - var_f30;
sp8.z = sp14.z + var_f31;
if (!commonLineCheck(&sp14, &sp8)) {
shape_angle.y -= 0x4000;
ANGLE_SUB_2(shape_angle.y, 0x4000);
}
}
}
@@ -4567,10 +4569,10 @@ int daAlink_c::procWolfRopeHangInit(int param_0) {
mProcVar2.field_0x300c = 0;
if (param_0 == 2) {
shape_angle.y -= 0x4000;
ANGLE_SUB_2(shape_angle.y, 0x4000);
mProcVar4.field_0x3010 = -mProcVar4.field_0x3010;
} else {
shape_angle.y += 0x4000;
ANGLE_ADD(shape_angle.y, 0x4000);
}
wolfRopeSwingInc(50.0f);
@@ -4597,12 +4599,12 @@ int daAlink_c::procWolfRopeHang() {
field_0x2060->getOldFrameTransInfo(0)->mTranslate.z -= 15.0f;
if (field_0x3198 == 2) {
shape_angle.y += 0x4000;
ANGLE_ADD_2(shape_angle.y, 0x4000);
setOldRootQuaternion(0, -0x4000, 0);
shape_angle.x = -shape_angle.z;
return procWolfRopeMoveInit(0, 0);
} else {
shape_angle.y -= 0x4000;
ANGLE_SUB_2(shape_angle.y, 0x4000);
setOldRootQuaternion(0, 0x4000, 0);
shape_angle.x = shape_angle.z;
return procWolfRopeMoveInit(1, 0);
@@ -5292,11 +5294,11 @@ int daAlink_c::procWolfGiantPuzzle() {
field_0x3478 = mMaxSpeed;
}
} else if (direction == DIR_LEFT) {
mProcVar2.mPuzzleAimAngle += 0x4000;
ANGLE_ADD_2(mProcVar2.mPuzzleAimAngle, 0x4000);
} else if (direction == DIR_RIGHT) {
mProcVar2.mPuzzleAimAngle -= 0x4000;
ANGLE_SUB_2(mProcVar2.mPuzzleAimAngle, 0x4000);
} else {
mProcVar2.mPuzzleAimAngle += 0x8000;
ANGLE_ADD_2(mProcVar2.mPuzzleAimAngle, 0x8000);
}
}
}
@@ -6028,7 +6030,8 @@ BOOL daAlink_c::checkMidnaDisappearMode() const {
return mProcID == PROC_WOLF_DIG_THROUGH ||
(checkWolf() && dComIfGp_checkPlayerStatus0(0, 0x8000000) &&
!dComIfGp_checkPlayerStatus0(0, 0x10) &&
(mTargetedActor == NULL || !(mTargetedActor->attention_info.flags & fopAc_AttnFlag_UNK_0x800000)));
!(mTargetedActor != NULL &&
mTargetedActor->attention_info.flags & fopAc_AttnFlag_UNK_0x800000));
}
BOOL daAlink_c::checkWolfLieContinue(int param_0) {
@@ -6271,7 +6274,7 @@ int daAlink_c::procWolfLieMove() {
} else {
spA = mMoveAngle + 0x8000;
}
cLib_addCalcAngleS(&shape_angle.y, spA, mpHIO->mWolf.mWlLie.m.mProneTurnRate, mpHIO->mWolf.mWlLie.m.mProneTurnMax, mpHIO->mWolf.mWlLie.m.mProneTurnMin);
}
@@ -6379,7 +6382,7 @@ int daAlink_c::procWolfLieAutoMove() {
} else {
int var_r28 = 1;
if (mProcVar1.field_0x300a > 0) {
mProcVar1.field_0x300a -= 1;
mProcVar1.field_0x300a--;
}
if (mProcVar3.field_0x300e != 0) {
@@ -7202,7 +7205,7 @@ int daAlink_c::procWolfJumpAttackInit(int param_0) {
f32 attack_init_speed;
f32 var_f30;
f32 var_f29;
if (param_0 == 1) {
setCutType(CUT_TYPE_WOLF_JUMP);
setCylAtParam(AT_TYPE_WOLF_ATTACK, dCcG_At_Spl_UNK_1, 3, dCcD_SE_WOLF_BITE, 3, mpHIO->mWolf.mWlAttack.mWlAtCjump.m.mAttackRadius, mpHIO->mWolf.mWlAttack.mWlAtCjump.m.mAttackHeight);
@@ -7271,7 +7274,7 @@ int daAlink_c::procWolfJumpAttackInit(int param_0) {
if (mProcVar0.field_0x3008 != 0) {
var_f30 -= 10.0f;
}
if (var_f30 > 0.0f) {
var_f29 = JMAFastSqrt((2.0f * var_f30) / -gravity);
} else {
@@ -7286,6 +7289,8 @@ int daAlink_c::procWolfJumpAttackInit(int param_0) {
mNormalSpeed = attack_init_speed;
speed.y = min_vertical_speed;
}
(void)0;
}
} else {
mNormalSpeed = attack_init_speed;
@@ -7548,7 +7553,7 @@ int daAlink_c::procWolfJumpAttackNormalLand() {
checkNextActionWolf(0);
} else if (frameCtrl->getFrame() > mpHIO->mWolf.mWlAttack.mWlAtLand.m.mNormalLandingAnm.mCancelFrame) {
if (mProcVar2.field_0x300c != 0) {
shape_angle.y -= -0x8000;
ANGLE_ADD_2(shape_angle.y, 0x8000);
return procWolfJumpAttackInit(3);
}
@@ -7565,7 +7570,7 @@ int daAlink_c::procWolfWaitAttackInit(int i_attackType) {
/* 0x0 */ daAlink_c::daAlink_WANM m_anmID;
/* 0x4 */ u8 m_cutType;
}; // Size: 0x8
static const daAlink_WCutParamTbl dataTabl[] = {
{
daAlink_c::WANM_ATTACK_B_LEFT,
@@ -8105,7 +8110,7 @@ int daAlink_c::procWolfLockAttackTurn() {
if (mWolfLockNum != 0) {
s16 target_angle = cLib_targetAngleY(&current.pos, &mWolfLockAcKeep[0].getActor()->eyePos);
if (mProcVar2.field_0x300c != 0) {
target_angle += 0x8000;
ANGLE_ADD_2(target_angle, 0x8000);
}
cLib_addCalcAngleS(&shape_angle.y, target_angle, 2, 0x2000, 0x800);
@@ -8135,7 +8140,7 @@ int daAlink_c::procWolfAttackReverseInit() {
mNormalSpeed = mpHIO->mWolf.mWlAttack.m.mJumpBackSpeedH;
speed.y = mpHIO->mWolf.mWlAttack.m.mJumpBackSpeedV;
current.angle.y += 0x8000;
ANGLE_ADD_2(current.angle.y, 0x8000);
dComIfGp_getVibration().StartShock(5, 15, cXyz(0.0f, 1.0f, 0.0f));
dKy_Sound_set(current.pos, 100, fopAcM_GetID(this), 5);
@@ -8808,7 +8813,7 @@ int daAlink_c::procWolfChainReady() {
shape_angle.y = cLib_targetAngleY(&current.pos, &chain->getJumpAimPos());
current.angle.y = shape_angle.y;
mProcVar3.field_0x300e = 1;
cXyz vec1 = chain->getJumpAimPos() - field_0x34e0;
f32 dist_xz = vec1.absXZ();
f32 dist = vec1.abs();
@@ -8998,7 +9003,7 @@ int daAlink_c::procWolfDigInit() {
s16 var_r27 = fopAcM_searchActorAngleY(this, var_r29);
if (abs((s16)(var_r27 - shape_angle.y)) > 0x4000) {
var_r27 += 0x8000;
ANGLE_ADD_2(var_r27, 0x8000);
}
shape_angle.y = var_r27;
@@ -9132,7 +9137,7 @@ int daAlink_c::procWolfDig() {
((daObjDigpl_c*)dig_actor)->onDigFlg();
field_0x280c.clearData();
}
if (frame_ctrl->getFrame() >= 11.0f) {
if (frame_ctrl->getFrame() <= 41.0f) {
if (mProcVar0.field_0x3008 == 0) {
@@ -9153,6 +9158,8 @@ int daAlink_c::procWolfDig() {
}
int daAlink_c::procWolfDigThroughInit(int param_0) {
static const int dummy = 0;
static const u16 snowID[] = {
dPa_RM(ID_ZI_S_DIGTHROUGHSNOW_A),
dPa_RM(ID_ZI_S_DIGTHROUGHSNOW_B),