summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/d/a/d_a_npc.cpp961
-rw-r--r--src/d/bg/d_bg_s.cpp42
-rw-r--r--src/d/bg/d_bg_s_acch.cpp3
-rw-r--r--src/d/bg/d_bg_w_base.cpp8
-rw-r--r--src/d/bg/d_bg_w_kcol.cpp75
-rw-r--r--src/d/com/d_com_inf_game.cpp6
-rw-r--r--src/d/com/d_com_static.cpp90
-rw-r--r--src/d/d_npc_lib.cpp162
8 files changed, 739 insertions, 608 deletions
diff --git a/src/d/a/d_a_npc.cpp b/src/d/a/d_a_npc.cpp
index 7b0d7b84cc..db10509537 100644
--- a/src/d/a/d_a_npc.cpp
+++ b/src/d/a/d_a_npc.cpp
@@ -4,13 +4,14 @@
//
#include "d/a/d_a_npc.h"
+#include "JSystem/J3DGraphBase/J3DMaterial.h"
+#include "SSystem/SComponent/c_math.h"
#include "d/d_procname.h"
+#include "d/msg/d_msg_object.h"
#include "dol2asm.h"
#include "f_op/f_op_actor_mng.h"
-#include "rel/d/a/npc/d_a_npc_tk/d_a_npc_tk.h"
-#include "d/msg/d_msg_object.h"
#include "m_Do/m_Do_lib.h"
-#include "JSystem/J3DGraphBase/J3DMaterial.h"
+#include "rel/d/a/npc/d_a_npc_tk/d_a_npc_tk.h"
//
// Forward References:
@@ -163,9 +164,9 @@ extern "C" void __dt__22daNpcT_MotionSeqMngr_cFv();
extern "C" void __dt__18daNpcT_ActorMngr_cFv();
extern "C" void __dt__15daNpcT_JntAnm_cFv();
extern "C" void __dt__15daNpcT_MatAnm_cFv();
-extern "C" void func_8014D32C(void* _this, s16*);
-extern "C" void func_8014D348(void* _this);
-extern "C" void func_8014D364(void* _this, int, int);
+extern "C" s16 func_8014D32C(s16*);
+extern "C" int func_8014D348(int*);
+extern "C" int func_8014D364(int, int);
extern "C" void __sinit_d_a_npc_cpp();
extern "C" static void daBaseNpc_addIdx__FiiPUsi();
extern "C" static void daBaseNpc_subIdx__FiiPUsi();
@@ -382,7 +383,7 @@ extern "C" u8 mFindCount__8daNpcF_c[4];
extern "C" u8 mSrchActorName__8daNpcF_c[2 + 2 /* padding */];
extern "C" extern u8 data_80450FF8[8];
static asm s32 daBaseNpc_chkPnt(cXyz param_0, dPnt* param_1, u16 param_2, u16 param_3, int param_4,
- int param_5);
+ int param_5);
static u16 daNpcF_putNurbs(dPnt* param_0, int param_1, int param_2, dPnt* param_3, int param_4);
//
@@ -670,7 +671,8 @@ void daNpcT_MatAnm_c::calc(J3DMaterial* param_0) const {
for (u32 i = 0; i < 8; i++) {
if (getTexMtxAnm(i).getAnmFlag()) {
- J3DTexMtxInfo* curr_mtx_info = &param_0->getTexGenBlock()->getTexMtx(i)->getTexMtxInfo();
+ J3DTexMtxInfo* curr_mtx_info =
+ &param_0->getTexGenBlock()->getTexMtx(i)->getTexMtxInfo();
if (field_0x104 != 0) {
curr_mtx_info->mSRT.mTranslationX = mTranslationX;
@@ -680,9 +682,10 @@ void daNpcT_MatAnm_c::calc(J3DMaterial* param_0) const {
if (field_0x105 != 0) {
f32 tmp8 = 1.0f / (field_0x105 + 1);
- curr_mtx_info->mSRT.mTranslationX = field_0xF4 * (1.0f - tmp8) + curr_mtx_info->mSRT.mTranslationX * tmp8;
- curr_mtx_info->mSRT.mTranslationY = field_0xF8 * (1.0f - tmp8) + curr_mtx_info->mSRT.mTranslationY * tmp8;
-
+ curr_mtx_info->mSRT.mTranslationX =
+ field_0xF4 * (1.0f - tmp8) + curr_mtx_info->mSRT.mTranslationX * tmp8;
+ curr_mtx_info->mSRT.mTranslationY =
+ field_0xF8 * (1.0f - tmp8) + curr_mtx_info->mSRT.mTranslationY * tmp8;
}
field_0xF4 = curr_mtx_info->mSRT.mTranslationX;
@@ -785,12 +788,12 @@ static int daNpcT_addIdx(int param_0, int param_1, u16& param_2, int param_3) {
}
param_2 = tmp2;
- return tmp;
+ return tmp;
}
/* 80145A78-80145AC4 1403B8 004C+00 2/2 0/0 0/0 .text daNpcT_subIdx__FiiRUsi */
static int daNpcT_subIdx(int param_0, int param_1, u16& param_2, int param_3) {
- int tmp = 0;
+ int tmp = 0;
int tmp2 = param_2;
tmp2 -= param_0;
@@ -802,7 +805,7 @@ static int daNpcT_subIdx(int param_0, int param_1, u16& param_2, int param_3) {
int tmp5 = param_0 / param_1;
tmp2 = param_0 - (tmp5 * param_1);
-
+
} else {
tmp2 = 0;
tmp = 1;
@@ -810,41 +813,35 @@ static int daNpcT_subIdx(int param_0, int param_1, u16& param_2, int param_3) {
}
param_2 = tmp2;
- return tmp;
+ return tmp;
}
/* 80145AC4-80145B20 140404 005C+00 5/5 0/0 0/0 .text daNpcT_incIdx__FiRUsii */
static int daNpcT_incIdx(int param_0, u16& param_1, int param_2, int param_3) {
- return param_3 ? daNpcT_subIdx(1,param_0,param_1,param_2) : daNpcT_addIdx(1,param_0,param_1,param_2);
+ return param_3 ? daNpcT_subIdx(1, param_0, param_1, param_2) :
+ daNpcT_addIdx(1, param_0, param_1, param_2);
}
/* 80145B20-80145B7C 140460 005C+00 3/3 0/0 0/0 .text daNpcT_decIdx__FiRUsii */
-static void daNpcT_decIdx(int param_0, u16& param_1, int param_2, int param_3) {
- param_3 ? daNpcT_addIdx(1,param_0,param_1,param_2) : daNpcT_subIdx(1,param_0,param_1,param_2);
+static int daNpcT_decIdx(int param_0, u16& param_1, int param_2, int param_3) {
+ return param_3 ? daNpcT_addIdx(1, param_0, param_1, param_2) :
+ daNpcT_subIdx(1, param_0, param_1, param_2);
}
/* 80145B7C-80145C40 1404BC 00C4+00 1/1 0/0 0/0 .text
* hermite__13daNpcT_Path_cFR4cXyzR4cXyzR4cXyzR4cXyzR16daNpcT_Hermite_cR4cXyz */
void daNpcT_Path_c::hermite(cXyz& param_0, cXyz& param_1, cXyz& param_2, cXyz& param_3,
- daNpcT_Hermite_c& param_4, cXyz& param_5) {
- param_5.x = param_0.x * param_4.mPosition.x +
- param_2.x * param_4.mPosition.y +
- param_1.x * param_4.mPosition.z +
- param_3.x * param_4.field_0x10;
+ daNpcT_Hermite_c& param_4, cXyz& param_5) {
+ param_5.x = param_0.x * param_4.mPosition.x + param_2.x * param_4.mPosition.y +
+ param_1.x * param_4.mPosition.z + param_3.x * param_4.field_0x10;
- param_5.y = param_0.y * param_4.mPosition.x +
- param_2.y * param_4.mPosition.y +
- param_1.y * param_4.mPosition.z +
- param_3.y * param_4.field_0x10;
-
+ param_5.y = param_0.y * param_4.mPosition.x + param_2.y * param_4.mPosition.y +
+ param_1.y * param_4.mPosition.z + param_3.y * param_4.field_0x10;
- param_5.z = param_0.z * param_4.mPosition.x +
- param_2.z * param_4.mPosition.y +
- param_1.z * param_4.mPosition.z +
- param_3.z * param_4.field_0x10;
+ param_5.z = param_0.z * param_4.mPosition.x + param_2.z * param_4.mPosition.y +
+ param_1.z * param_4.mPosition.z + param_3.z * param_4.field_0x10;
}
-
/* 80145C40-80145C74 140580 0034+00 0/0 0/0 44/44 .text initialize__13daNpcT_Path_cFv */
void daNpcT_Path_c::initialize() {
mpRoomPath = 0;
@@ -869,7 +866,7 @@ int daNpcT_Path_c::setPathInfo(u8 i_pathIdx, s8 i_roomNo, u8 i_direction) {
mDirection = i_direction;
if (i_pathIdx != 0xFF) {
- mpRoomPath = dPath_GetRoomPath(i_pathIdx,i_roomNo);
+ mpRoomPath = dPath_GetRoomPath(i_pathIdx, i_roomNo);
if (!mpRoomPath) {
return 0;
}
@@ -888,7 +885,7 @@ int daNpcT_Path_c::setNextPathInfo(s8 param_0, u8 i_direction) {
u16 next_id = mpRoomPath->m_nextID;
if (next_id != 0xFFFF) {
- mpRoomPath = dPath_GetRoomPath(next_id,param_0);
+ mpRoomPath = dPath_GetRoomPath(next_id, param_0);
if (!mpRoomPath) {
return 0;
}
@@ -907,7 +904,6 @@ void daNpcT_Path_c::reverse() {
}
mDirection = 1;
field_0x1E = 1;
-
}
/* 80145DD0-80145E38 140710 0068+00 2/2 0/0 8/8 .text setNextIdx__13daNpcT_Path_cFi */
@@ -915,10 +911,10 @@ int daNpcT_Path_c::setNextIdx(int param_0) {
u16 numPnts = getNumPnts();
if (chkClose() != 0 && numPnts == param_0) {
- return daNpcT_incIdx(param_0,mIdx,1,mDirection);
+ return daNpcT_incIdx(param_0, mIdx, 1, mDirection);
}
- return daNpcT_incIdx(param_0,mIdx,0,mDirection);
+ return daNpcT_incIdx(param_0, mIdx, 0, mDirection);
}
/* 80145E38-80145FB4 140778 017C+00 0/0 0/0 1/1 .text getDstPos__13daNpcT_Path_cF4cXyzP4cXyzi */
@@ -926,10 +922,10 @@ int daNpcT_Path_c::getDstPos(cXyz param_0, cXyz* param_1, int i_idx) {
if (i_idx == mIdx) {
*param_1 = getPntPos(getIdx() - 1);
return 1;
- }
+ }
- while(true) {
- if (!chkPassed1(param_0,i_idx)) {
+ while (true) {
+ if (!chkPassed1(param_0, i_idx)) {
break;
}
field_0x1E = 1;
@@ -941,7 +937,7 @@ int daNpcT_Path_c::getDstPos(cXyz param_0, cXyz* param_1, int i_idx) {
}
int i_idx2;
*param_1 = getPntPos(i_idx2 = getIdx());
-
+
return 0;
}
@@ -951,10 +947,10 @@ int daNpcT_Path_c::getDstPosH(cXyz param_0, cXyz* param_1, int i_idx, int param_
if (i_idx == mIdx) {
*param_1 = getPntPos(getIdx() - 1);
return 1;
- }
+ }
- while(true) {
- if (!chkPassed1(param_0,i_idx)) {
+ while (true) {
+ if (!chkPassed1(param_0, i_idx)) {
break;
}
field_0x1E = 1;
@@ -964,8 +960,8 @@ int daNpcT_Path_c::getDstPosH(cXyz param_0, cXyz* param_1, int i_idx, int param_
return 1;
}
}
-
- while(true) {
+
+ while (true) {
if (field_0x1E < param_3) {
if (chkPassed2(param_0, param_1, i_idx, param_3)) {
field_0x1E++;
@@ -977,7 +973,6 @@ int daNpcT_Path_c::getDstPosH(cXyz param_0, cXyz* param_1, int i_idx, int param_
}
return 0;
}
-
}
/* ############################################################################################## */
@@ -986,83 +981,67 @@ SECTION_SDATA2 static f32 lit_4513 = 100.0f;
/* 80146188-801464D8 140AC8 0350+00 2/2 0/0 2/2 .text chkPassed1__13daNpcT_Path_cF4cXyzi
*/
+// one instruction order swap, otherwise matches with literals
#ifdef NONMATCHING
int daNpcT_Path_c::chkPassed1(cXyz param_0, int param_1) {
- u16 idx = mIdx;
- u16 tmpIdx1 = idx;
- u16 tmpIdx2 = idx;
-
- u8 tmp;
-
- cXyz l_pos1;
- cXyz l_pos2;
- cXyz l_pos3;
- cXyz l_pos4;
- cXyz l_pos5;
- cXyz l_pos6;
- cXyz l_pos7;
-
- f32 l_float1;
- f32 l_float2;
- f32 l_float3;
- f32 l_float4;
- f32 l_float5;
- f32 l_float6;
+ cXyz sp80;
+ cXyz sp74;
+ cXyz sp68;
+ cXyz sp5C;
- Vec l_vec;
-
+ u16 temp_r30 = getIdx() & 0xFFFF;
+ u16 spA;
+ u16 sp8;
- if ((mpRoomPath->m_closed & 1) == 0 || param_1 == mpRoomPath->m_num) {
- daNpcT_decIdx(param_1,tmpIdx2,1, chkReverse());
+ sp8 = temp_r30;
+ spA = sp8;
- daNpcT_incIdx(mpRoomPath->m_num,tmpIdx1,1,chkReverse());
+ if (chkClose() && param_1 == getNumPnts()) {
+ daNpcT_decIdx(getNumPnts(), spA, 1, chkReverse());
+ daNpcT_incIdx(getNumPnts(), sp8, 1, chkReverse());
} else {
- daNpcT_decIdx(param_1,tmpIdx1,0,chkReverse());
-
- daNpcT_incIdx(param_1,tmpIdx2,0,chkReverse());
+ daNpcT_decIdx(param_1, spA, 0, chkReverse());
+ daNpcT_incIdx(param_1, sp8, 0, chkReverse());
}
- tmp = tmpIdx2;
-
- l_pos5 = getPntPos(idx);
- l_pos6 = getPntPos(mIdx);
- l_pos7 = getPntPos(mIdx);
-
- l_pos1 = l_pos7;
- l_pos2 = l_pos6;
- l_pos3 = l_pos5;
+ sp80 = getPntPos(spA);
+ sp74 = getPntPos(temp_r30);
+ sp68 = getPntPos(sp8);
+ if (spA == temp_r30) {
+ sp5C.set(0.0f, 0.0f, 100.0f);
- if (tmp == mIdx) {
- l_vec.x = 0.0f;
- l_vec.y = 0.0f;
- l_vec.z = 100.0f;
-
- s16 angle = cLib_targetAngleY(&l_pos1,&l_pos2);
- mDoMtx_YrotS((MtxP)&mDoMtx_stack_c::now,angle);
- MTXMultVec((MtxP)&mDoMtx_stack_c::now,&l_vec,&l_vec);
- l_pos4 = (cXyz)l_vec + l_pos2;
- l_pos3 = l_pos4;
+ mDoMtx_stack_c::YrotS(cLib_targetAngleY(&sp68, &sp74));
+ mDoMtx_stack_c::multVec(&sp5C, &sp5C);
+ sp80 = sp5C + sp74;
}
- if (mIdx == tmpIdx1) {
- l_vec.x = 0.0f;
- l_vec.y = 0.0f;
- l_vec.z = 100.0f;
+ if (temp_r30 == sp8) {
+ sp5C.set(0.0f, 0.0f, 100.0f);
- s16 angle = cLib_targetAngleY(&l_pos3,&l_pos2);
- mDoMtx_YrotS((MtxP)&mDoMtx_stack_c::now,angle);
- MTXMultVec((MtxP)&mDoMtx_stack_c::now,&l_vec,&l_vec);
- l_pos5 = (cXyz)l_vec + l_pos2;
- l_pos1 = l_pos5;
+ mDoMtx_stack_c::YrotS(cLib_targetAngleY(&sp80, &sp74));
+ mDoMtx_stack_c::multVec(&sp5C, &sp5C);
+ sp68 = sp5C + sp74;
}
- if (cM3d_Len2dSqPntAndSegLine(param_0.x,param_0.z,l_pos3.x,l_pos3.z,l_pos1.x,l_pos1.z,&l_float1,&l_float2,&l_float3)
- && cM3d_Len2dSqPntAndSegLine(l_pos2.x,l_pos2.z,l_pos3.x,l_pos3.z,l_pos1.x,l_pos1.z,&l_float4,&l_float5,&l_float6)) {
- if (0x4000 < abs(cM_atan2s(l_pos1.x - l_pos3.x, l_pos1.z - l_pos3.z) - cM_atan2s(l_float4 - l_float1, l_float5 - l_float2))) {
+ f32 sp1C;
+ f32 sp18;
+ f32 sp14;
+ f32 sp10;
+ f32 spC;
+
+ if (cM3d_Len2dSqPntAndSegLine(param_0.x, param_0.z, sp80.x, sp80.z, sp68.x, sp68.z, &sp1C,
+ &sp14, &spC) &&
+ cM3d_Len2dSqPntAndSegLine(sp74.x, sp74.z, sp80.x, sp80.z, sp68.x, sp68.z, &sp18, &sp10,
+ &spC))
+ {
+ if (0x4000 < (u16)abs((s16)(cM_atan2s(sp68.x - sp80.x, sp68.z - sp80.z) -
+ cM_atan2s(sp18 - sp1C, sp10 - sp14))))
+ {
return 1;
}
}
+
return 0;
}
#else
@@ -1105,50 +1084,87 @@ SECTION_DATA static void* lit_5258[9] = {
};
/* 803B36D8-803B371C 0107F8 0044+00 0/0 0/0 54/54 .data mCcDCyl__8daNpcT_c */
-SECTION_DATA u8 daNpcT_c::mCcDCyl[68] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+dCcD_SrcCyl daNpcT_c::mCcDCyl = {
+ {
+ {0x0, {{0x0, 0x0, 0x0}, {0x0, 0x0}, 0x0}}, // mObj
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {0.0f, 0.0f, 0.0f}, // mCenter
+ 0.0f, // mRadius
+ 0.0f // mHeight
+ } // mCyl
};
/* 803B371C-803B375C 01083C 0040+00 0/0 0/0 3/3 .data mCcDSph__8daNpcT_c */
-SECTION_DATA u8 daNpcT_c::mCcDSph[64] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+dCcD_SrcSph daNpcT_c::mCcDSph = {
+ {
+ {0x0, {{0x0, 0x0, 0x0}, {0x0, 0x0}, 0x0}}, // mObj
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {{0.0f, 0.0f, 0.0f}, 0.0f} // mSph
+ } // mSphAttr
};
/* 803B375C-803B37A0 01087C 0044+00 0/0 0/0 1/1 .data mCcDCyl__11daBaseNpc_c */
-SECTION_DATA u8 daBaseNpc_c::mCcDCyl[68] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+dCcD_SrcCyl daBaseNpc_c::mCcDCyl = {
+ {
+ {0x0, {{0x0, 0x0, 0x0}, {0x0, 0x0}, 0x0}}, // mObj
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {0.0f, 0.0f, 0.0f}, // mCenter
+ 0.0f, // mRadius
+ 0.0f // mHeight
+ } // mCyl
};
/* 803B37A0-803B37E0 0108C0 0040+00 0/0 0/0 1/1 .data mCcDSph__11daBaseNpc_c */
-SECTION_DATA u8 daBaseNpc_c::mCcDSph[64] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+dCcD_SrcSph daBaseNpc_c::mCcDSph = {
+ {
+ {0x0, {{0x0, 0x0, 0x0}, {0x0, 0x0}, 0x0}}, // mObj
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {{0.0f, 0.0f, 0.0f}, 0.0f} // mSph
+ } // mSphAttr
};
/* 803B37E0-803B3824 010900 0044+00 0/0 0/0 36/36 .data mCcDCyl__8daNpcF_c */
-SECTION_DATA dCcD_SrcCyl daNpcF_c::mCcDCyl = {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f
+dCcD_SrcCyl daNpcF_c::mCcDCyl = {
+ {
+ {0x0, {{0x0, 0x0, 0x0}, {0x0, 0x0}, 0x0}}, // mObj
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {0.0f, 0.0f, 0.0f}, // mCenter
+ 0.0f, // mRadius
+ 0.0f // mHeight
+ } // mCyl
};
/* 803B3824-803B3864 010944 0040+00 0/0 0/0 2/2 .data mCcDSph__8daNpcF_c */
-SECTION_DATA u8 daNpcF_c::mCcDSph[64] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+dCcD_SrcSph daNpcF_c::mCcDSph = {
+ {
+ {0x0, {{0x0, 0x0, 0x0}, {0x0, 0x0}, 0x0}}, // mObj
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt
+ {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjTg
+ {0x0}, // mGObjCo
+ }, // mObjInf
+ {
+ {{0.0f, 0.0f, 0.0f}, 0.0f} // mSph
+ } // mSphAttr
};
/* 803B3864-803B3870 010984 000C+00 2/2 0/0 0/0 .data __vt__18daNpcF_ActorMngr_c */
@@ -1527,7 +1543,7 @@ void daNpcT_DmgStagger_c::setParam(fopAc_ac_c* i_actor1, fopAc_ac_c* i_actor2, s
if (i_actor2 && i_actor1) {
field_0xc = FLOAT_LABEL(lit_5422);
field_0x10 = FLOAT_LABEL(lit_5423);
- field_0x16 = fopAcM_searchActorAngleY(i_actor1,i_actor2) - i_angle;
+ field_0x16 = fopAcM_searchActorAngleY(i_actor1, i_actor2) - i_angle;
mStagger = 0x4000;
}
}
@@ -1773,10 +1789,10 @@ int daNpcT_c::execute() {
SECTION_SDATA2 static f32 lit_5794 = 20.0f;
/* 8014886C-80148C70 1431AC 0404+00 0/0 0/0 58/58 .text draw__8daNpcT_cFiifP11_GXColorS10fiii */
-// regalloc + literals
+// matches with literals
#ifdef NONMATCHING
-int daNpcT_c::draw(int param_0, int param_1, f32 param_2, GXColorS10* color, f32 param_4,
- int param_5, int param_6, int param_7) {
+int daNpcT_c::draw(int param_0, int i_setEffMtx, f32 param_2, GXColorS10* i_color, f32 param_4,
+ int i_drawGhost, int param_6, int param_7) {
J3DModel* model = mMcaMorfAnm[0]->getModel();
J3DModelData* modelData = model->getModelData();
field_0xe34 = 1;
@@ -1790,17 +1806,17 @@ int daNpcT_c::draw(int param_0, int param_1, f32 param_2, GXColorS10* color, f32
mTevStr.mFogColor.b = 0;
mTevStr.mFogColor.a = 0;
- if (color != NULL) {
- mTevStr.mFogColor.r = color->r;
- mTevStr.mFogColor.g = color->g;
- mTevStr.mFogColor.b = color->b;
- mTevStr.mFogColor.a = color->a;
+ if (i_color != NULL) {
+ mTevStr.mFogColor.r = i_color->r;
+ mTevStr.mFogColor.g = i_color->g;
+ mTevStr.mFogColor.b = i_color->b;
+ mTevStr.mFogColor.a = i_color->a;
}
- if (field_0xdb8 && mTimer) {
- f32 r = (f32)field_0xdb8 / (f32)mTimer;
+ if (field_0xdb8 != 0 && mTimer != 0) {
+ f32 r = (f32)mTimer / (f32)field_0xdb8;
- if (cM3d_IsZero_inverted(r)) {
+ if (cM3d_IsZero(r) == false) {
mTevStr.mFogColor.r = r * 20.0f;
}
} else if (param_0 != 0) {
@@ -1823,11 +1839,11 @@ int daNpcT_c::draw(int param_0, int param_1, f32 param_2, GXColorS10* color, f32
mBpkAnm.entry(modelData);
}
- if (param_1 != 0) {
+ if (i_setEffMtx) {
fopAcM_setEffectMtx(this, modelData);
}
- if (param_5 != 0) {
+ if (i_drawGhost) {
drawGhost();
} else if (field_0xa89 != 0) {
g_env_light.settingTevStruct(4, &current.pos, &mTevStr);
@@ -1859,12 +1875,12 @@ int daNpcT_c::draw(int param_0, int param_1, f32 param_2, GXColorS10* color, f32
if (param_6 == 0) {
if (param_7 == 0) {
- field_0xd94 = dComIfGd_setShadow(
- field_0xd94, 1, model, &current.pos, param_2, param_4, current.pos.y,
- field_0xdf4, field_0x930, &mTevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
+ field_0xd94 = dComIfGd_setShadow(field_0xd94, 1, model, &current.pos, param_2, param_4,
+ current.pos.y, field_0xdf4, field_0x930, &mTevStr, 0,
+ 1.0f, dDlst_shadowControl_c::getSimpleTex());
} else {
- dComIfGd_setSimpleShadow(&current.pos, field_0xdf4, param_4, field_0x930, 0,
- 1.0f, dDlst_shadowControl_c::getSimpleTex());
+ dComIfGd_setSimpleShadow(&current.pos, field_0xdf4, param_4, field_0x930, 0, 1.0f,
+ dDlst_shadowControl_c::getSimpleTex());
}
}
@@ -1898,30 +1914,26 @@ void daNpcT_c::setRoomNo() {
}
/* 80148D10-80148DD0 143650 00C0+00 1/1 0/0 0/0 .text checkEndAnm__8daNpcT_cFf */
-// weird mr assignments
+// this looks much better with -O2? something weird going on here
#ifdef NONMATCHING
+#pragma push
+#pragma optimization_level 2
int daNpcT_c::checkEndAnm(f32 param_0) {
- switch(mMcaMorfAnm[0]->getPlayMode()) {
- case 2:
- return mMcaMorfAnm[0]->isLoop();
- case 0:
- case 1:
- bool ret;
- bool ret2;
- ret2 = ret = 0;
- if (mMcaMorfAnm[0]->isStop() && cM3d_IsZero(mMcaMorfAnm[0]->getPlaySpeed()) != false) {
- ret2 = 1;
- }
- if (ret2 && cM3d_IsZero_inverted(param_0)) {
- ret = 1;
- }
- return ret;
- case 3:
- break;
+ switch (mMcaMorfAnm[0]->getPlayMode()) {
+ case 2:
+ return mMcaMorfAnm[0]->isLoop();
+ case 0:
+ case 1:
+ return mMcaMorfAnm[0]->isStop() && cM3d_IsZero(mMcaMorfAnm[0]->getPlaySpeed()) &&
+ !cM3d_IsZero(param_0);
+ case 3:
+ case 4:
+ break;
}
return 0;
}
+#pragma pop
#else
#pragma push
#pragma optimization_level 0
@@ -1936,28 +1948,22 @@ asm int daNpcT_c::checkEndAnm(f32 param_0) {
/* 80148DD0-80148E4C 143710 007C+00 1/1 0/0 0/0 .text checkEndAnm__8daNpcT_cFP12J3DFrameCtrlf */
// weird mr
#ifdef NONMATCHING
+#pragma push
+#pragma optimization_level 2
int daNpcT_c::checkEndAnm(J3DFrameCtrl* param_0, f32 param_1) {
- switch(param_0->getAttribute()) {
- case 2:
- return (param_0->getState() >> 1) & 1;
- case 0:
- case 1:
- bool ret;
- bool ret2;
- ret2 = ret = 0;
- if ((param_0->getState() & 1) && param_0->getRate() == 0.0f) {
- ret2 = 1;
- }
- if (ret2 && param_1 != 0.0f) {
- ret = 1;
- }
- return ret;
- case 3:
- break;
+ switch (param_0->getAttribute()) {
+ case 2:
+ return param_0->checkState(2);
+ case 0:
+ case 1:
+ return (param_0->checkState(1) || param_0->getRate() == 0.0f) && param_1 != 0.0f;
+ case 3:
+ break;
}
return 0;
}
+#pragma pop
#else
#pragma push
#pragma optimization_level 0
@@ -1970,6 +1976,112 @@ asm int daNpcT_c::checkEndAnm(J3DFrameCtrl* param_0, f32 param_1) {
#endif
/* 80148E4C-801490D4 14378C 0288+00 1/1 0/0 0/0 .text playAllAnm__8daNpcT_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void daNpcT_c::playAllAnm() {
+ if (!(field_0xd98 & 0x4000)) {
+ if (field_0xd98 & 0x400) {
+ f32 bck_speed = mBckAnm.getPlaySpeed();
+ if (field_0xd98 & 0x10) {
+ mBckAnm.setPlaySpeed(0.0f);
+ }
+
+ mBckAnm.play();
+
+ if (checkEndAnm(mBckAnm.getFrameCtrl(), bck_speed)) {
+ field_0xe20++;
+ }
+
+ mBckAnm.setPlaySpeed(bck_speed);
+ }
+
+ if (field_0xd98 & 0x800) {
+ f32 btp_speed = mBtpAnm.getPlaySpeed();
+ if (field_0xd98 & 0x20) {
+ mBtpAnm.setPlaySpeed(0.0f);
+
+ if (field_0xd98 & 0x2000) {
+ field_0xdc0 = func_8014D364(90, 90);
+ }
+ }
+
+ if (func_8014D348(&field_0xdc0) != 0) {
+ mBtpAnm.setPlaySpeed(0.0f);
+ }
+
+ mBtpAnm.play();
+
+ if (field_0xd98 & 0x2000) {
+ if (checkEndAnm(mBtpAnm.getFrameCtrl(), mBtpAnm.getPlaySpeed())) {
+ field_0xdc0 = func_8014D364(90, 90);
+ }
+ } else {
+ field_0xdc0 = 0;
+ }
+
+ mBtpAnm.setPlaySpeed(btp_speed);
+ }
+ }
+
+ if (field_0xd98 & 0x40) {
+ f32 morf_speed = mMcaMorfAnm[0]->getPlaySpeed();
+ if (field_0xd98 & 0x1) {
+ mMcaMorfAnm[0]->setPlaySpeed(0.0f);
+ mMcaMorfAnm[0]->play(field_0xda8, field_0xe24);
+ mMcaMorfAnm[0]->setPlaySpeed(morf_speed);
+
+ if (mMcaMorfAnm[1] != NULL) {
+ mMcaMorfAnm[1]->setPlaySpeed(0.0f);
+ mMcaMorfAnm[1]->play(0, 0);
+ mMcaMorfAnm[1]->setPlaySpeed(morf_speed);
+ }
+ } else {
+ mMcaMorfAnm[0]->play(field_0xda8, field_0xe24);
+
+ if (mMcaMorfAnm[1] != NULL) {
+ mMcaMorfAnm[1]->play(0, 0);
+ }
+
+ if (checkEndAnm(morf_speed)) {
+ field_0xe1e++;
+ }
+ }
+ }
+
+ if (field_0xd98 & 0x80) {
+ f32 btk_speed = mBtkAnm.getPlaySpeed();
+ if (field_0xd98 & 0x2) {
+ mBtkAnm.setPlaySpeed(0.0f);
+ }
+
+ ctrlBtk();
+ mBtkAnm.play();
+ mBtkAnm.setPlaySpeed(btk_speed);
+ }
+
+ if (field_0xd98 & 0x100) {
+ f32 brk_speed = mBrkAnm.getPlaySpeed();
+ if (field_0xd98 & 0x4) {
+ mBrkAnm.setPlaySpeed(0.0f);
+ }
+
+ mBrkAnm.play();
+ mBrkAnm.setPlaySpeed(brk_speed);
+ }
+
+ if (field_0xd98 & 0x200) {
+ f32 bpk_speed = mBpkAnm.getPlaySpeed();
+ if (field_0xd98 & 0x8) {
+ mBpkAnm.setPlaySpeed(0.0f);
+ }
+
+ mBpkAnm.play();
+ mBpkAnm.setPlaySpeed(bpk_speed);
+ }
+
+ field_0xd98 &= ~0x403F;
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -1978,6 +2090,7 @@ asm void daNpcT_c::playAllAnm() {
#include "asm/d/a/d_a_npc/playAllAnm__8daNpcT_cFv.s"
}
#pragma pop
+#endif
/* 801490D4-80149190 143A14 00BC+00 1/0 1/0 55/0 .text ctrlBtk__8daNpcT_cFv */
#pragma push
@@ -2018,8 +2131,8 @@ void daNpcT_c::ctrlFaceMotion() {
int l_int;
f32 l_float;
- if (field_0xb50.play(field_0xe20,&l_int,&l_float)) {
- setFaceMotionAnm(l_int,true);
+ if (field_0xb50.play(field_0xe20, &l_int, &l_float)) {
+ setFaceMotionAnm(l_int, true);
if (l_float < FLOAT_LABEL(lit_4116)) {
mMcaMorfAnm[0]->setMorf(field_0xa80);
@@ -2036,7 +2149,7 @@ void daNpcT_c::ctrlFaceMotion() {
mMcaMorfAnm[1]->setMorf(l_float);
}
}
- }
+ }
}
/* 80149300-801493B8 143C40 00B8+00 1/1 0/0 0/0 .text ctrlMotion__8daNpcT_cFv */
@@ -2047,14 +2160,14 @@ void daNpcT_c::ctrlMotion() {
int l_int2;
f32 l_float;
- if (field_0xb74.play(field_0xe1e,&l_int,&l_float)) {
+ if (field_0xb74.play(field_0xe1e, &l_int, &l_float)) {
l_int2 = 0;
if (l_float < 0.5f) {
l_int2 = 1;
}
-
- setMotionAnm(l_int,l_float < 0.0f ? field_0xa84 : l_float,l_int2);
+
+ setMotionAnm(l_int, l_float < 0.0f ? field_0xa84 : l_float, l_int2);
field_0xdfc = 0.0f;
@@ -2485,7 +2598,7 @@ asm void daNpcT_c::getActorDistance(fopAc_ac_c* param_0, int param_1, int param_
/* 8014BBF0-8014BC78 146530 0088+00 0/0 1/1 180/180 .text initTalk__8daNpcT_cFiPP10fopAc_ac_c */
int daNpcT_c::initTalk(int param_0, fopAc_ac_c** param_1) {
- mFlow.init(this,param_0,0,param_1);
+ mFlow.init(this, param_0, 0, param_1);
field_0xdc8 = fopAcM_searchPlayerAngleY(this);
if (checkStep()) {
mStepNo = 0;
@@ -2493,7 +2606,7 @@ int daNpcT_c::initTalk(int param_0, fopAc_ac_c** param_1) {
f32 tmp = FLOAT_LABEL(lit_4116);
speedF = tmp;
- speed.set(tmp,tmp,tmp);
+ speed.set(tmp, tmp, tmp);
return 1;
}
@@ -2555,14 +2668,14 @@ asm void daNpcT_c::getEvtAreaTagP(int param_0, int param_1) {
fopAc_ac_c* daNpcT_c::getShopItemTagP() {
mFindCount = 0;
mSrchName = 0x127;
- i_fpcM_Search((fopAcIt_JudgeFunc)srchActor,(void*)this);
+ i_fpcM_Search((fopAcIt_JudgeFunc)srchActor, (void*)this);
for (s32 i = 0; i < mFindCount; i++) {
if ((fopAcM_GetParam(mFindActorPtrs[i]) & 0xf0000000) == 0xf0000000) {
return mFindActorPtrs[i];
- }
+ }
}
-
+
return NULL;
}
@@ -2600,20 +2713,19 @@ SECTION_SDATA2 static f32 lit_7551 = 448.0f;
// matches with literals
#ifdef NONMATCHING
bool daNpcT_chkActorInScreen(fopAc_ac_c* i_ActorP, f32 param_1, f32 param_2, f32 param_3,
- f32 param_4, f32 param_5, f32 param_6, f32 param_7, int param_8) {
+ f32 param_4, f32 param_5, f32 param_6, f32 param_7, int param_8) {
cXyz proj;
cXyz pos_array[8];
if (fopAcM_GetMtx(i_ActorP)) {
- pos_array[0].set(param_1,param_5,param_3);
- pos_array[1].set(param_4,param_5,param_3);
- pos_array[2].set(param_1,param_5,param_6);
- pos_array[3].set(param_4,param_5,param_6);
- pos_array[4].set(param_1,param_2,param_3);
- pos_array[5].set(param_4,param_2,param_3);
- pos_array[6].set(param_1,param_2,param_6);
- pos_array[7].set(param_4,param_2,param_6);
-
+ pos_array[0].set(param_1, param_5, param_3);
+ pos_array[1].set(param_4, param_5, param_3);
+ pos_array[2].set(param_1, param_5, param_6);
+ pos_array[3].set(param_4, param_5, param_6);
+ pos_array[4].set(param_1, param_2, param_3);
+ pos_array[5].set(param_4, param_2, param_3);
+ pos_array[6].set(param_1, param_2, param_6);
+ pos_array[7].set(param_4, param_2, param_6);
mDoMtx_stack_c::copy(fopAcM_GetMtx(i_ActorP));
mDoMtx_stack_c::transM(0.0f, param_7, 0.0f);
@@ -2621,15 +2733,15 @@ bool daNpcT_chkActorInScreen(fopAc_ac_c* i_ActorP, f32 param_1, f32 param_2, f32
if (param_8) {
return false;
- }
+ }
for (int i = 0; i < 8; i++) {
- mDoLib_project(&pos_array[i],&proj);
+ mDoLib_project(&pos_array[i], &proj);
if (0.0f < proj.x && proj.x < 608.0f && 0.0f < proj.y && proj.y < 448.0f) {
continue;
}
return false;
}
-
+
return true;
}
@@ -2654,16 +2766,18 @@ BOOL daNpcT_chkPointInArea(cXyz param_0, cXyz param_1, cXyz param_2, s16 param_3
cXyz diff;
mDoMtx_stack_c::YrotS(-param_3);
- mDoMtx_stack_c::transM(-param_1.x,-param_1.y,-param_1.z);
- mDoMtx_stack_c::multVec(&param_0,&l_pos);
+ mDoMtx_stack_c::transM(-param_1.x, -param_1.y, -param_1.z);
+ mDoMtx_stack_c::multVec(&param_0, &l_pos);
f32 l_float1 = fabsf(param_2.x);
f32 l_float2 = fabsf(param_2.z);
f32 l_float3 = fabsf(l_pos.x);
f32 l_float4 = fabsf(l_pos.z);
- if (param_4 != 0 && (!(FLOAT_LABEL(lit_4116) <= (diff = param_0 - param_1).y) || !(diff.y < param_2.y))) {
- ret = FALSE;
+ if (param_4 != 0 &&
+ (!(FLOAT_LABEL(lit_4116) <= (diff = param_0 - param_1).y) || !(diff.y < param_2.y)))
+ {
+ ret = FALSE;
} else {
f32 tmp1 = (l_float3 * l_float3) / (l_float1 * l_float1);
f32 tmp2 = (l_float4 * l_float4) / (l_float2 * l_float2);
@@ -2694,17 +2808,19 @@ bool daNpcT_chkDoBtnIsSpeak(fopAc_ac_c* i_ActorP) {
for (int i = 0; i < dComIfGp_getAttention().GetActionCount(); i++) {
if (dComIfGp_getAttention().ActionTarget(i) == i_ActorP &&
dComIfGp_getAttention().getActionBtnB() &&
- dComIfGp_getAttention().getActionBtnB()->mType == 3) {
- ret = 1;
- };
+ dComIfGp_getAttention().getActionBtnB()->mType == 3)
+ {
+ ret = 1;
+ };
}
for (int i = 0; i < dComIfGp_getAttention().GetLockonCount(); i++) {
if (dComIfGp_getAttention().LockonTarget(i) == i_ActorP &&
dComIfGp_getAttention().getActionBtnB() &&
- dComIfGp_getAttention().getActionBtnB()->mType == 1) {
- ret = 1;
- };
+ dComIfGp_getAttention().getActionBtnB()->mType == 1)
+ {
+ ret = 1;
+ };
}
}
}
@@ -2973,7 +3089,7 @@ bool daNpcT_c::getEyeballLMaterialNo() {
}
/* 8014D0B0-8014D0B8 1479F0 0008+00 1/0 1/0 0/0 .text getEyeballRMaterialNo__8daNpcT_cFv
- */\
+ */
bool daNpcT_c::getEyeballRMaterialNo() {
return false;
}
@@ -3042,7 +3158,7 @@ asm daNpcT_MatAnm_c::~daNpcT_MatAnm_c() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-extern "C" asm void func_8014D32C(void* _this, s16* param_0) {
+extern "C" asm s16 func_8014D32C(s16* param_0) {
nofralloc
#include "asm/d/a/d_a_npc/func_8014D32C.s"
}
@@ -3052,7 +3168,7 @@ extern "C" asm void func_8014D32C(void* _this, s16* param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-extern "C" asm void func_8014D348(void* _this) {
+extern "C" asm int func_8014D348(int*) {
nofralloc
#include "asm/d/a/d_a_npc/func_8014D348.s"
}
@@ -3062,7 +3178,7 @@ extern "C" asm void func_8014D348(void* _this) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-extern "C" asm void func_8014D364(void* _this, int param_0, int param_1) {
+extern "C" asm int func_8014D364(int param_0, int param_1) {
nofralloc
#include "asm/d/a/d_a_npc/func_8014D364.s"
}
@@ -3081,8 +3197,7 @@ COMPILER_STRIP_GATE(0x80392680, &daNpcT_c::mCcDObjData);
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void __sinit_d_a_npc_cpp() {
- nofralloc
+asm void __sinit_d_a_npc_cpp(){nofralloc
#include "asm/d/a/d_a_npc/__sinit_d_a_npc_cpp.s"
}
#pragma pop
@@ -3092,19 +3207,23 @@ asm void __sinit_d_a_npc_cpp() {
REGISTER_CTORS(0x8014D3D8, __sinit_d_a_npc_cpp);
#pragma pop
+/**
+ * From here to `__dt__18daBaseNpc_acMngr_cFv` is supposed to be d_a_npc2.cpp
+ * according to the debug rom OSPanic reports
+ */
+
/* 8014D538-8014D584 147E78 004C+00 2/2 0/0 0/0 .text daBaseNpc_addIdx__FiiPUsi */
static int daBaseNpc_addIdx(int param_0, int param_1, u16* param_2, int param_3) {
int tmp = *param_2;
int ret;
-
+
ret = 0;
tmp += param_0;
if (param_1 <= tmp) {
if (param_3 != 0) {
tmp -= param_1 * (tmp / param_1);
- }
- else {
+ } else {
tmp = param_1 != 0 ? param_1 - 1 : 0;
ret = 1;
}
@@ -3118,15 +3237,14 @@ static int daBaseNpc_addIdx(int param_0, int param_1, u16* param_2, int param_3)
static int daBaseNpc_subIdx(int param_0, int param_1, u16* param_2, int param_3) {
int tmp = *param_2;
int ret;
-
+
ret = 0;
tmp -= param_0;
if (tmp <= 0) {
if (param_3 != 0) {
tmp += param_1 * (tmp / param_1 + 1);
- }
- else {
+ } else {
tmp = 0;
ret = 1;
}
@@ -3139,18 +3257,20 @@ static int daBaseNpc_subIdx(int param_0, int param_1, u16* param_2, int param_3)
/* 8014D5C4-8014D620 147F04 005C+00 2/2 0/0 0/0 .text daBaseNpc_incIdx__FiPUsii */
static void daBaseNpc_incIdx(int i_pathNo, u16* i_pathIdx, int i_pathClosed, int i_pathDirection) {
if (i_pathDirection < 0) {
- daBaseNpc_subIdx(1,i_pathNo,i_pathIdx,i_pathClosed);
+ daBaseNpc_subIdx(1, i_pathNo, i_pathIdx, i_pathClosed);
} else {
- daBaseNpc_addIdx(1,i_pathNo,i_pathIdx,i_pathClosed);;
+ daBaseNpc_addIdx(1, i_pathNo, i_pathIdx, i_pathClosed);
+ ;
}
}
/* 8014D620-8014D67C 147F60 005C+00 1/1 0/0 0/0 .text daBaseNpc_decIdx__FiPUsii */
static void daBaseNpc_decIdx(int i_pathNo, u16* i_pathIdx, int i_pathClosed, int i_pathDirection) {
if (i_pathDirection < 0) {
- daBaseNpc_addIdx(1,i_pathNo,i_pathIdx,i_pathClosed);
+ daBaseNpc_addIdx(1, i_pathNo, i_pathIdx, i_pathClosed);
} else {
- daBaseNpc_subIdx(1,i_pathNo,i_pathIdx,i_pathClosed);;
+ daBaseNpc_subIdx(1, i_pathNo, i_pathIdx, i_pathClosed);
+ ;
}
}
@@ -3216,23 +3336,24 @@ BOOL daBaseNpc_path_c::isPath() {
/* 8014D9BC-8014DA48 1482FC 008C+00 0/0 0/0 1/1 .text setPathInfo__16daBaseNpc_path_cFUcScSc */
static asm int daBaseNpc_putNurbs(dPnt* param_0, int param_1, int param_2, dPnt* param_3,
- int param_4);
+ int param_4);
int daBaseNpc_path_c::setPathInfo(u8 i_pathIdx, s8 i_roomNo, s8 i_direction) {
dPath* room_path;
-
+
mpRoomPath = 0;
mIdx = 0;
mDirection = i_direction;
if (i_pathIdx != 0xFF) {
- mpRoomPath = dPath_GetRoomPath(i_pathIdx,i_roomNo);
+ mpRoomPath = dPath_GetRoomPath(i_pathIdx, i_roomNo);
room_path = mpRoomPath;
if (!room_path) {
return 0;
}
int isClosed = dPath_ChkClose(room_path);
- field_0xa0e = daBaseNpc_putNurbs((dPnt*)room_path->m_points,room_path->m_num,0xA0, (dPnt*)field_0xc, isClosed);
+ field_0xa0e = daBaseNpc_putNurbs((dPnt*)room_path->m_points, room_path->m_num, 0xA0,
+ (dPnt*)field_0xc, isClosed);
}
return isPath();
}
@@ -3246,7 +3367,8 @@ void daBaseNpc_path_c::reverseDir() {
/* 8014DA64-8014DAC4 1483A4 0060+00 0/0 0/0 3/3 .text chkPnt__16daBaseNpc_path_cF4cXyz */
s32 daBaseNpc_path_c::chkPnt(cXyz i_pos) {
- return daBaseNpc_chkPnt(i_pos, (dPnt*)mpRoomPath->m_points, mIdx, mpRoomPath->m_num, dPath_ChkClose(mpRoomPath), mDirection);
+ return daBaseNpc_chkPnt(i_pos, (dPnt*)mpRoomPath->m_points, mIdx, mpRoomPath->m_num,
+ dPath_ChkClose(mpRoomPath), mDirection);
}
/* 8014DAC4-8014DB04 148404 0040+00 0/0 0/0 3/3 .text setNextPnt__16daBaseNpc_path_cFv */
@@ -3274,12 +3396,10 @@ void daBaseNpc_lookat_c::limitter(s16 param_1, s16* param_2, s16 param_3, s16 pa
int tmp = param_1;
int tmp2 = tmp + *param_2;
-
if (param_3 < tmp2) {
if (tmp < param_3) {
*param_2 -= tmp2 - param_3;
- }
- else {
+ } else {
*param_2 = 0;
}
}
@@ -3292,7 +3412,7 @@ void daBaseNpc_lookat_c::limitter(s16 param_1, s16* param_2, s16 param_3, s16 pa
if (param_4 < param_1) {
*param_2 -= (int)(tmp - param_4);
- return;
+ return;
}
*param_2 = 0;
@@ -3317,7 +3437,7 @@ asm void daBaseNpc_lookat_c::calc(fopAc_ac_c* param_0, f32 (*param_1)[4], s16 pa
#pragma pop
/* 8014E634-8014E658 148F74 0024+00 0/0 0/0 1/1 .text setMaxJntLmt__18daBaseNpc_lookat_cF5csXyzi
- */
+ */
void daBaseNpc_lookat_c::setMaxJntLmt(csXyz i_pos, int i_modifier) {
mMaxJntLmt[i_modifier].x = i_pos.x;
mMaxJntLmt[i_modifier].y = i_pos.y;
@@ -3325,7 +3445,7 @@ void daBaseNpc_lookat_c::setMaxJntLmt(csXyz i_pos, int i_modifier) {
}
/* 8014E658-8014E67C 148F98 0024+00 0/0 0/0 1/1 .text setMinJntLmt__18daBaseNpc_lookat_cF5csXyzi
-*/
+ */
void daBaseNpc_lookat_c::setMinJntLmt(csXyz i_pos, int i_modifier) {
mMinJntLmt[i_modifier].x = i_pos.x;
mMinJntLmt[i_modifier].y = i_pos.y;
@@ -3397,7 +3517,7 @@ bool daBaseNpc_c::getResName() {
/* 8014EE44-8014EE80 149784 003C+00 0/0 0/0 2/2 .text getTrnsfrmKeyAnmP__11daBaseNpc_cFPci */
J3DAnmTransform* daBaseNpc_c::getTrnsfrmKeyAnmP(char* param_0, int param_1) {
- return (J3DAnmTransform*)dComIfG_getObjectRes(param_0,param_1);
+ return (J3DAnmTransform*)dComIfG_getObjectRes(param_0, param_1);
}
/* 8014EE80-8014EEE4 1497C0 0064+00 0/0 0/0 1/1 .text
@@ -3415,20 +3535,20 @@ asm void daBaseNpc_c::setMcaMorfAnm(J3DAnmTransformKey* param_0, f32 param_1, f3
/* 8014EEE4-8014EF28 149824 0044+00 0/0 0/0 1/1 .text
* setBckAnm__11daBaseNpc_cFP15J3DAnmTransformfiiib */
void daBaseNpc_c::setBckAnm(J3DAnmTransform* param_0, f32 param_1, int param_2, int param_3,
- int param_4, bool param_5) {
- mBckAnm.init(param_0,1,param_2,param_1,param_3,param_4,param_5);
+ int param_4, bool param_5) {
+ mBckAnm.init(param_0, 1, param_2, param_1, param_3, param_4, param_5);
}
/* 8014EF28-8014EF64 149868 003C+00 0/0 0/0 1/1 .text getTexPtrnAnmP__11daBaseNpc_cFPci
*/
J3DAnmTransform* daBaseNpc_c::getTexPtrnAnmP(char* param_0, int param_1) {
- return (J3DAnmTransform*)dComIfG_getObjectRes(param_0,param_1);
+ return (J3DAnmTransform*)dComIfG_getObjectRes(param_0, param_1);
}
/* 8014EF64-8014EFA4 1498A4 0040+00 0/0 0/0 1/1 .text
* setBtpAnm__11daBaseNpc_cFP16J3DAnmTexPatternP12J3DModelDatafi */
- void daBaseNpc_c::setBtpAnm(J3DAnmTexPattern* param_0, J3DModelData* param_1, f32 param_2,
- int param_3) {
+void daBaseNpc_c::setBtpAnm(J3DAnmTexPattern* param_0, J3DModelData* param_1, f32 param_2,
+ int param_3) {
mBtpAnm.init(&param_1->getMaterialTable(), param_0, 1, param_3, param_2, 0, -1);
}
@@ -3438,9 +3558,8 @@ void daBaseNpc_c::attnSttsOn(int param_0, int param_1) {
if (dComIfGp_getLinkPlayer()->i_checkWolf()) {
if (param_1 != 0) {
- tmp = 10;
- }
- else {
+ tmp = 10;
+ } else {
tmp = 1;
}
} else if (param_0 != 0) {
@@ -3460,11 +3579,12 @@ void daBaseNpc_c::setParam() {
/* 8014EFF4-8014F09C 149934 00A8+00 0/0 0/0 1/1 .text orderEvent__11daBaseNpc_cFiPc */
void daBaseNpc_c::orderEvent(int param_0, char* i_evtName) {
if (i_evtName) {
- mEvtIdx = i_dComIfGp_getEventManager().getEventIdx(this,i_evtName,-1);
+ mEvtIdx = i_dComIfGp_getEventManager().getEventIdx(this, i_evtName, -1);
fopAcM_orderOtherEventId(this, mEvtIdx, -1, -1, 0, 1);
} else {
- if ((mUnk >= 0 && mAttentionInfo.mFlags == 10) && (mEvtInfo.mCondition |= 1,param_0 != 0)) {
- fopAcM_orderSpeakEvent(this,0,0);
+ if ((mUnk >= 0 && mAttentionInfo.mFlags == 10) && (mEvtInfo.mCondition |= 1, param_0 != 0))
+ {
+ fopAcM_orderSpeakEvent(this, 0, 0);
}
}
}
@@ -3495,19 +3615,19 @@ bool daBaseNpc_c::btkCtrl() {
// weird condition mr
#ifdef NONMATCHING
int daBaseNpc_c::checkEndAnm(f32 param_0) {
- switch(mMcaMorfAnm[0]->getPlayMode()) {
- case 2:
- return mMcaMorfAnm[0]->isLoop();
- case 0:
- case 1:
- bool state = false;
-
- if (mMcaMorfAnm[0]->isStop() && param_0 != mMcaMorfAnm[0]->getPlaySpeed()) {
- state = true;
- }
- return state;
- case 3:
- break;
+ switch (mMcaMorfAnm[0]->getPlayMode()) {
+ case 2:
+ return mMcaMorfAnm[0]->isLoop();
+ case 0:
+ case 1:
+ bool state = false;
+
+ if (mMcaMorfAnm[0]->isStop() && param_0 != mMcaMorfAnm[0]->getPlaySpeed()) {
+ state = true;
+ }
+ return state;
+ case 3:
+ break;
}
return 0;
@@ -3544,7 +3664,6 @@ int daBaseNpc_c::checkEndAnm(J3DFrameCtrl* param_0) {
}
return 0;
-
}
#else
#pragma push
@@ -3575,7 +3694,8 @@ void daBaseNpc_c::adjustShapeAngle() {
/* 8014F390-8014F4A0 149CD0 0110+00 2/0 0/0 1/0 .text setMtx__11daBaseNpc_cFi */
void daBaseNpc_c::setMtx(int param_0) {
- J3DModel* model = mMcaMorfAnm[0]->getModel();;
+ J3DModel* model = mMcaMorfAnm[0]->getModel();
+ ;
J3DModelData* modelData = model->getModelData();
mDoMtx_stack_c::transS(current.pos);
@@ -3594,19 +3714,19 @@ void daBaseNpc_c::setMtx(int param_0) {
u16 tmp = 0;
while (field_0x83c[tmp] != 0xffff) {
- mBckAnm.entryJoint(modelData,field_0x83c[tmp],mBckAnm.getFrame());
+ mBckAnm.entryJoint(modelData, field_0x83c[tmp], mBckAnm.getFrame());
tmp++;
}
-
+
mMcaMorfAnm[0]->modelCalc();
u16 tmp2 = 0;
while (field_0x83c[tmp2] != 0xffff) {
- mBckAnm.removeJoint(modelData,field_0x83c[tmp2]);
+ mBckAnm.removeJoint(modelData, field_0x83c[tmp2]);
tmp2++;
}
-
+
} else {
mMcaMorfAnm[0]->modelCalc();
}
@@ -3721,7 +3841,7 @@ static asm void daBaseNpc_PntVsLineSegmentLengthSquare2D(f32 param_0, f32 param_
#pragma optimization_level 0
#pragma optimizewithasm off
static asm int daBaseNpc_putNurbs(dPnt* param_0, int param_1, int param_2, dPnt* param_3,
- int param_4) {
+ int param_4) {
nofralloc
#include "asm/d/a/d_a_npc/daBaseNpc_putNurbs__FP4dPntiiP4dPnti.s"
}
@@ -3732,7 +3852,7 @@ static asm int daBaseNpc_putNurbs(dPnt* param_0, int param_1, int param_2, dPnt*
#pragma optimization_level 0
#pragma optimizewithasm off
static asm s32 daBaseNpc_chkPnt(cXyz param_0, dPnt* param_1, u16 param_2, u16 param_3, int param_4,
- int param_5) {
+ int param_5) {
nofralloc
#include "asm/d/a/d_a_npc/daBaseNpc_chkPnt__F4cXyzP4dPntUsUsii.s"
}
@@ -3835,6 +3955,11 @@ asm daBaseNpc_acMngr_c::~daBaseNpc_acMngr_c() {
}
#pragma pop
+/**
+ * From here until end? is supposed to be d_a_npc4.cpp
+ * according to debug rom OSPanic reports
+ */
+
/* 8015056C-801505AC 14AEAC 0040+00 2/2 0/0 0/0 .text daNpcF_addIdx__FiiRUsi */
// may be able to simplify this more
static int daNpcF_addIdx(int param_0, int param_1, u16& param_2, int param_3) {
@@ -3856,9 +3981,6 @@ static int daNpcF_addIdx(int param_0, int param_1, u16& param_2, int param_3) {
return tmp;
}
-
-
-
/* 801505AC-801505F8 14AEEC 004C+00 2/2 0/0 0/0 .text daNpcF_subIdx__FiiRUsi */
// may be able to simplify this more
static int daNpcF_subIdx(int param_0, int param_1, u16& param_2, int param_3) {
@@ -3874,7 +3996,7 @@ static int daNpcF_subIdx(int param_0, int param_1, u16& param_2, int param_3) {
int tmp5 = param_0 / param_1;
tmp2 = param_0 - (tmp5 * param_1);
-
+
} else {
tmp2 = 0;
tmp = 1;
@@ -3887,17 +4009,19 @@ static int daNpcF_subIdx(int param_0, int param_1, u16& param_2, int param_3) {
/* 801505F8-80150654 14AF38 005C+00 4/4 0/0 0/0 .text daNpcF_incIdx__FiRUsii */
static int daNpcF_incIdx(int param_0, u16& param_1, int param_2, int param_3) {
- return param_3 ? daNpcF_subIdx(1,param_0,param_1,param_2) : daNpcF_addIdx(1,param_0,param_1,param_2);
+ return param_3 ? daNpcF_subIdx(1, param_0, param_1, param_2) :
+ daNpcF_addIdx(1, param_0, param_1, param_2);
}
/* 80150654-801506B0 14AF94 005C+00 3/3 0/0 0/0 .text daNpcF_decIdx__FiRUsii */
static int daNpcF_decIdx(int param_0, u16& param_1, int param_2, int param_3) {
- return param_3 ? daNpcF_addIdx(1,param_0,param_1,param_2) : daNpcF_subIdx(1,param_0,param_1,param_2);
+ return param_3 ? daNpcF_addIdx(1, param_0, param_1, param_2) :
+ daNpcF_subIdx(1, param_0, param_1, param_2);
}
/* 801506B0-801506BC 14AFF0 000C+00 0/0 0/0 130/130 .text initialize__18daNpcF_ActorMngr_cFv */
void daNpcF_ActorMngr_c::initialize() {
- mActorID = -1;
+ mActorID = -1;
}
/* 801506BC-801506D8 14AFFC 001C+00 1/1 0/0 130/130 .text
@@ -3916,7 +4040,7 @@ void daNpcF_ActorMngr_c::entry(unsigned int i_actorID) {
/* 801506E0-801506EC 14B020 000C+00 2/2 0/0 55/55 .text remove__18daNpcF_ActorMngr_cFv */
void daNpcF_ActorMngr_c::remove() {
- mActorID = -1;
+ mActorID = -1;
}
/* 801506EC-80150738 14B02C 004C+00 1/1 0/0 135/135 .text getActorP__18daNpcF_ActorMngr_cFv */
@@ -3951,16 +4075,19 @@ void daNpcF_MatAnm_c::calc(J3DMaterial* param_0) const {
for (u32 i = 0; i < 8; i++) {
if (J3DMaterialAnm::getTexMtxAnm(i).getAnmFlag()) {
- J3DTexMtxInfo* curr_mtx_info = &param_0->getTexGenBlock()->getTexMtx(i)->getTexMtxInfo();
+ J3DTexMtxInfo* curr_mtx_info =
+ &param_0->getTexGenBlock()->getTexMtx(i)->getTexMtxInfo();
if (field_0x105 != 0) {
f32 tmp8 = 1.0f / (field_0x105 + 1);
f32 tmp9 = (1.0f - tmp8);
f32 tmp10 = field_0xF4 * (1.0f - tmp8);
- curr_mtx_info->mSRT.mTranslationX = tmp10 + curr_mtx_info->mSRT.mTranslationX * tmp8;
- curr_mtx_info->mSRT.mTranslationY = field_0xF8 * tmp9 + curr_mtx_info->mSRT.mTranslationY * tmp8;
-
+ curr_mtx_info->mSRT.mTranslationX =
+ tmp10 + curr_mtx_info->mSRT.mTranslationX * tmp8;
+ curr_mtx_info->mSRT.mTranslationY =
+ field_0xF8 * tmp9 + curr_mtx_info->mSRT.mTranslationY * tmp8;
+
} else {
if (mEyeMoveFlag != 0) {
curr_mtx_info->mSRT.mTranslationX = mNowOffsetX;
@@ -3993,9 +4120,9 @@ void daNpcF_SPCurve_c::initialize(dPath* i_path, int param_1) {
field_0x02 = 0;
field_0x04 = param_1;
mIsClosed = 0;
- f32 lit = 1.0f; // correct to lit_4116 later
+ f32 lit = 1.0f; // correct to lit_4116 later
- for (int i = 0; i < 96; i++) {
+ for (int i = 0; i < 96; i++) {
mPoints[i].m_position.x = lit;
mPoints[i].m_position.y = lit;
mPoints[i].m_position.z = lit;
@@ -4003,7 +4130,8 @@ void daNpcF_SPCurve_c::initialize(dPath* i_path, int param_1) {
if (i_path) {
mIsClosed = i_path->m_closed & 1;
- mNurbs = daNpcF_putNurbs((dPnt*)i_path->m_points,i_path->m_num, 0x60, (dPnt*)mPoints,mIsClosed);
+ mNurbs = daNpcF_putNurbs((dPnt*)i_path->m_points, i_path->m_num, 0x60, (dPnt*)mPoints,
+ mIsClosed);
}
}
#else
@@ -4024,7 +4152,7 @@ void daNpcF_Path_c::initialize() {
mIsClosed = 0;
mpRoomPath = 0;
- mSPCurve.initialize(0,0);
+ mSPCurve.initialize(0, 0);
f32 value = FLOAT_LABEL(lit_4116);
field_0x08 = value;
@@ -4040,11 +4168,11 @@ int daNpcF_Path_c::setPathInfo(u8 param_0, s8 param_1, u8 param_2) {
dStage_dPnt_c point;
if (param_0 != 0xFF) {
- mpRoomPath = dPath_GetRoomPath(param_0,param_1);
+ mpRoomPath = dPath_GetRoomPath(param_0, param_1);
if (!mpRoomPath) {
return 0;
}
- mSPCurve.initialize(mpRoomPath,field_0x02);
+ mSPCurve.initialize(mpRoomPath, field_0x02);
mIsClosed = mpRoomPath->m_closed & 1;
u16 idx;
mPosition = getPntPos(idx = mIdx);
@@ -4055,10 +4183,11 @@ int daNpcF_Path_c::setPathInfo(u8 param_0, s8 param_1, u8 param_2) {
/* 80150A24-80150A7C 14B364 0058+00 1/1 0/0 1/1 .text chkPassed__13daNpcF_Path_cF4cXyz */
// forward decleration
int daNpcF_chkPassed(cXyz param_0, dPnt* param_1, u16 param_2, u16 param_3, int param_4,
- int param_5);
+ int param_5);
int daNpcF_Path_c::chkPassed(cXyz param_0) {
- return daNpcF_chkPassed(param_0, (dPnt*)mpRoomPath->m_points,mIdx,mpRoomPath->m_num,(int)mIsClosed,(int)field_0x02);
+ return daNpcF_chkPassed(param_0, (dPnt*)mpRoomPath->m_points, mIdx, mpRoomPath->m_num,
+ (int)mIsClosed, (int)field_0x02);
}
/* 80150A7C-80150BBC 14B3BC 0140+00 0/0 0/0 4/4 .text chkPassedDst__13daNpcF_Path_cF4cXyz
@@ -4131,8 +4260,10 @@ int daNpcF_Path_c::getDstPos(cXyz i_pos1, cXyz& i_pos2) {
while (ret == 0) {
int curr_index;
i_pos2 = getPntPos(curr_index = getIdx());
-
- if (!chkPassed(i_pos1)) { break; };
+
+ if (!chkPassed(i_pos1)) {
+ break;
+ };
if (setNextIdx()) {
ret = 1;
@@ -4179,8 +4310,8 @@ SECTION_SDATA2 static f32 lit_9971 = 32.0f;
* setParam__15daNpcF_Lookat_cFffffffffffffsP4cXyz */
#ifdef NONMATCHING
void daNpcF_Lookat_c::setParam(f32 param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4,
- f32 param_5, f32 param_6, f32 param_7, f32 param_8, f32 param_9,
- f32 param_10, f32 param_11, s16 param_12, cXyz* param_13) {
+ f32 param_5, f32 param_6, f32 param_7, f32 param_8, f32 param_9,
+ f32 param_10, f32 param_11, s16 param_12, cXyz* param_13) {
static cXyz vec(0.0f, 0.0f, 32.0f);
field_0x00[0] = param_13[0];
@@ -4227,7 +4358,7 @@ asm void daNpcF_Lookat_c::setParam(f32 param_0, f32 param_1, f32 param_2, f32 pa
* calc__15daNpcF_Lookat_cFP10fopAc_ac_cPA4_fPP5csXyziii */
#ifdef NONMATCHING
void daNpcF_Lookat_c::calc(fopAc_ac_c* param_0, Mtx baseTransformMtx, csXyz** param_2, int param_3,
- int param_4, int debug) {
+ int param_4, int debug) {
cXyz local_a4[4];
csXyz local_bc[4];
cXyz local_c8;
@@ -4237,7 +4368,7 @@ void daNpcF_Lookat_c::calc(fopAc_ac_c* param_0, Mtx baseTransformMtx, csXyz** pa
if (mAttnPos) {
initCalc(param_0, baseTransformMtx, local_a4, local_bc, local_d8, local_c8, debug);
-
+
for (int i = 2; i >= -1; i--) {
update(local_a4, local_bc, local_d8);
if (0 <= i) {
@@ -4250,7 +4381,7 @@ void daNpcF_Lookat_c::calc(fopAc_ac_c* param_0, Mtx baseTransformMtx, csXyz** pa
clrRotAngle();
}
- int i,j;
+ int i, j;
for (i = 2, j = 1; i >= 0; i--, j++) {
if (param_3) {
*(param_2[i]) = mRotAngle[i];
@@ -4329,7 +4460,7 @@ SECTION_SDATA2 static f32 lit_10253 = 63.0f / 100.0f;
#ifdef NONMATCHING
// matches except literals
void daNpcF_Lookat_c::initCalc(fopAc_ac_c* actor, Mtx baseTransformMtx, cXyz* param_2,
- csXyz* param_3, f32* param_4, cXyz& param_5, int debug) {
+ csXyz* param_3, f32* param_4, cXyz& param_5, int debug) {
Mtx mtx;
cXyz local_90;
cMtx_copy(baseTransformMtx, mtx);
@@ -4475,7 +4606,9 @@ BOOL daNpcF_c::execute() {
field_0x9ef = 0;
field_0x9f3 = 0;
for (int i = 0; i < 5; i++) {
- if ((field_0x938 == 0 || field_0x934 != i) && field_0x93c[i] != 0 && cLib_calcTimer(&field_0x93c[i]) == 0) {
+ if ((field_0x938 == 0 || field_0x934 != i) && field_0x93c[i] != 0 &&
+ cLib_calcTimer(&field_0x93c[i]) == 0)
+ {
field_0x82c[i].remove();
}
}
@@ -4568,7 +4701,9 @@ BOOL daNpcF_c::draw(int param_0, int param_1, f32 param_2, _GXColorS10* param_3,
mBrkAnm.remove(modelData);
}
- field_0x9a0 = dComIfGd_setShadow(field_0x9a0, true, model, &current.pos, param_2, 20.0f, current.pos.y, field_0x980, field_0xa44, &mTevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
+ field_0x9a0 = dComIfGd_setShadow(field_0x9a0, true, model, &current.pos, param_2, 20.0f,
+ current.pos.y, field_0x980, field_0xa44, &mTevStr, 0,
+ 1.0f, dDlst_shadowControl_c::getSimpleTex());
drawOtherMdls();
}
@@ -4690,7 +4825,7 @@ J3DAnmTevRegKey* daNpcF_c::getTevRegKeyAnmP(char* arcName, int fileIdx) {
#ifdef NONMATCHING
// literals
BOOL daNpcF_c::setMcaMorfAnm(J3DAnmTransformKey* i_anm, f32 i_rate, f32 i_morf, int i_attr,
- int i_start, int i_end) {
+ int i_start, int i_end) {
mMcaMorf->setAnm(i_anm, i_attr, i_morf, i_rate, (f32)i_start, (f32)i_end);
return true;
}
@@ -4708,29 +4843,29 @@ asm BOOL daNpcF_c::setMcaMorfAnm(J3DAnmTransformKey* param_0, f32 param_1, f32 p
/* 80152C80-80152CC4 14D5C0 0044+00 0/0 0/0 25/25 .text
* setBckAnm__8daNpcF_cFP15J3DAnmTransformfiiib */
-BOOL daNpcF_c::setBckAnm(J3DAnmTransform* i_bck, f32 i_rate, int i_attr, int i_start,
- int i_end, bool i_modify) {
+BOOL daNpcF_c::setBckAnm(J3DAnmTransform* i_bck, f32 i_rate, int i_attr, int i_start, int i_end,
+ bool i_modify) {
return mBckAnm.init(i_bck, true, i_attr, i_rate, (s16)i_start, (s16)i_end, i_modify);
}
/* 80152CC4-80152D04 14D604 0040+00 0/0 0/0 32/32 .text
* setBtpAnm__8daNpcF_cFP16J3DAnmTexPatternP12J3DModelDatafi */
BOOL daNpcF_c::setBtpAnm(J3DAnmTexPattern* i_btp, J3DModelData* i_modelData, f32 i_rate,
- int i_attr) {
+ int i_attr) {
return mBtpAnm.init(i_modelData, i_btp, true, i_attr, i_rate, 0, -1);
}
/* 80152D04-80152D44 14D644 0040+00 0/0 0/0 26/26 .text
* setBtkAnm__8daNpcF_cFP19J3DAnmTextureSRTKeyP12J3DModelDatafi */
BOOL daNpcF_c::setBtkAnm(J3DAnmTextureSRTKey* i_btk, J3DModelData* i_modelData, f32 i_rate,
- int i_attr) {
+ int i_attr) {
return mBtkAnm.init(i_modelData, i_btk, true, i_attr, i_rate, 0, -1);
}
/* 80152D44-80152D84 14D684 0040+00 0/0 0/0 2/2 .text
* setBrkAnm__8daNpcF_cFP15J3DAnmTevRegKeyP12J3DModelDatafi */
BOOL daNpcF_c::setBrkAnm(J3DAnmTevRegKey* i_brk, J3DModelData* i_modelData, f32 i_rate,
- int i_attr) {
+ int i_attr) {
return mBrkAnm.init(i_modelData, i_brk, true, i_attr, i_rate, 0, -1);
}
@@ -4758,22 +4893,22 @@ asm void daNpcF_c::setRoomNo() {
#ifdef NONMATCHING
BOOL daNpcF_c::chkEndAnm(f32 param_0) {
switch (mMcaMorf->getPlayMode()) {
- case 2:
- return mMcaMorf->isLoop();
- case 0:
- case 1:
- bool b = false;
- bool ret = false;
- if (mMcaMorf->isStop() && mMcaMorf->getPlaySpeed() == 0.0f) {
- b = true;
- }
- if (b && param_0 != 0.0f) {
- ret = true;
- }
- return ret;
- case 3:
- default:
- return false;
+ case 2:
+ return mMcaMorf->isLoop();
+ case 0:
+ case 1:
+ bool b = false;
+ bool ret = false;
+ if (mMcaMorf->isStop() && mMcaMorf->getPlaySpeed() == 0.0f) {
+ b = true;
+ }
+ if (b && param_0 != 0.0f) {
+ ret = true;
+ }
+ return ret;
+ case 3:
+ default:
+ return false;
}
}
#else
@@ -4792,27 +4927,28 @@ asm BOOL daNpcF_c::chkEndAnm(f32 param_0) {
* Check whether an animation has ended or looped.
* @param frameCtrl The frame controller for the animation.
* @param prevRate The previous rate of animation.
- * @return `true` if the animation has just stopped or just looped, `false` otherwise. Returns `false` if the animation is two-way (attribute 3 or 4).
+ * @return `true` if the animation has just stopped or just looped, `false` otherwise. Returns
+ * `false` if the animation is two-way (attribute 3 or 4).
*/
#ifdef NONMATCHING
BOOL daNpcF_c::chkEndAnm(J3DFrameCtrl* frameCtrl, f32 prevRate) {
switch (frameCtrl->getAttribute()) {
- case 2:
- return (frameCtrl->getState() >> 1) & 1;
- case 0:
- case 1:
- bool b = false;
- bool ret = false;
- if (frameCtrl->getState() & 1 && frameCtrl->getRate() == 0.0f) {
- b = true;
- }
- if (b && prevRate != 0.0f) {
- ret = true;
- }
- return ret;
- case 3:
- default:
- return false;
+ case 2:
+ return (frameCtrl->getState() >> 1) & 1;
+ case 0:
+ case 1:
+ bool b = false;
+ bool ret = false;
+ if (frameCtrl->getState() & 1 && frameCtrl->getRate() == 0.0f) {
+ b = true;
+ }
+ if (b && prevRate != 0.0f) {
+ ret = true;
+ }
+ return ret;
+ case 3:
+ default:
+ return false;
}
}
#else
@@ -4910,7 +5046,7 @@ asm BOOL daNpcF_c::playAllAnm() {
/* 80153150-80153264 14DA90 0114+00 0/0 0/0 25/25 .text
* playExpressionAnm__8daNpcF_cFPPPQ28daNpcF_c18daNpcF_anmPlayData */
-/**
+/**
* Set the expression animation.
* @param anm The animation data, a two-dimensional array of data pointers, indexed first by
* the expression index and second by the expression phase. Each piece of data consists of
@@ -4924,7 +5060,9 @@ void daNpcF_c::playExpressionAnm(daNpcF_c::daNpcF_anmPlayData*** anm) {
playData = anm[mExpression][mExpressionPhase];
}
if (playData != NULL) {
- if (mExpressionPrevPhase == mExpressionPhase && playData->numLoops > 0 && playData->numLoops <= mExpressionLoops) {
+ if (mExpressionPrevPhase == mExpressionPhase && playData->numLoops > 0 &&
+ playData->numLoops <= mExpressionLoops)
+ {
mExpressionPhase++;
playData = anm[mExpression][mExpressionPhase];
}
@@ -4953,7 +5091,7 @@ asm void daNpcF_c::playExpressionAnm(daNpcF_c::daNpcF_anmPlayData*** param_0) {
/* 80153264-8015337C 14DBA4 0118+00 0/0 0/0 37/37 .text
* playMotionAnm__8daNpcF_cFPPPQ28daNpcF_c18daNpcF_anmPlayData */
-/**
+/**
* Set the motion animation.
* @param anm The animation data, a two-dimensional array of data pointers, indexed first by
* the motion index and second by the motion phase. Each piece of data consists of
@@ -4967,7 +5105,9 @@ void daNpcF_c::playMotionAnm(daNpcF_c::daNpcF_anmPlayData*** anm) {
playData = anm[mMotion][mMotionPhase];
}
if (playData != NULL) {
- if (mMotionPrevPhase == mMotionPhase && playData->numLoops > 0 && playData->numLoops <= motionLoops) {
+ if (mMotionPrevPhase == mMotionPhase && playData->numLoops > 0 &&
+ playData->numLoops <= motionLoops)
+ {
mMotionPhase++;
playData = anm[mMotion][mMotionPhase];
}
@@ -4999,7 +5139,8 @@ asm void daNpcF_c::playMotionAnm(daNpcF_c::daNpcF_anmPlayData*** param_0) {
* Compute the animation matrix for one of the "lookat" joints (lower body, upper body, head).
* This matrix is applied to the matrix in `mDoMtx_stack_c::now`.
* @param jointNo The index of the joint in question.
- * @param jointList An array of the three indices of the joints for the lower body, the upper body, and the head.
+ * @param jointList An array of the three indices of the joints for the lower body, the upper body,
+ * and the head.
* @param param_2 Unknown.
*/
#ifdef NONMATCHING
@@ -5187,14 +5328,16 @@ BOOL daNpcF_c::chkActorInArea(fopAc_ac_c* actor, cXyz center, cXyz box, s16 angY
mDoMtx_stack_c::YrotS(-angY);
mDoMtx_stack_c::transM(-center.x, -center.y, -center.z);
mDoMtx_stack_c::multVec(&actor->current.pos, &relPos);
-
+
f32 boxX = fabsf(box.x);
f32 boxZ = fabsf(box.z);
f32 posX = fabsf(relPos.x);
f32 posZ = fabsf(relPos.z);
disp = center - actor->current.pos;
-
- if ((posX * posX) / (boxX * boxX) + (posZ * posZ) / (boxZ * boxZ) <= 1.0f && -box.y < disp.y && disp.y < box.y) {
+
+ if ((posX * posX) / (boxX * boxX) + (posZ * posZ) / (boxZ * boxZ) <= 1.0f && -box.y < disp.y &&
+ disp.y < box.y)
+ {
ret = true;
}
@@ -5253,10 +5396,10 @@ asm BOOL daNpcF_c::chkActorInAttnArea(fopAc_ac_c* actorCheck, fopAc_ac_c* actorA
/* 80153D1C-80153D84 14E65C 0068+00 0/0 0/0 118/118 .text initTalk__8daNpcF_cFiPP10fopAc_ac_c */
int daNpcF_c::initTalk(int param_0, fopAc_ac_c** param_1) {
- mFlow.init(this,param_0,0,param_1);
+ mFlow.init(this, param_0, 0, param_1);
f32 tmp = FLOAT_LABEL(lit_4116);
speedF = tmp;
- speed.set(tmp,tmp,tmp);
+ speed.set(tmp, tmp, tmp);
field_0x9e9 = 0;
field_0x9ec = 0;
return 1;
@@ -5303,10 +5446,10 @@ asm void daNpcF_c::setAngle(s16 param_0) {
#pragma pop
/* 80154278-801542A0 14EBB8 0028+00 0/0 0/0 36/36 .text getDistTableIdx__8daNpcF_cFii */
-u8 daNpcF_getDistTableIdx(int param_0, int param_1); //fwd dec to get a match
+u8 daNpcF_getDistTableIdx(int param_0, int param_1); // fwd dec to get a match
u8 daNpcF_c::getDistTableIdx(int param_0, int param_1) {
- return daNpcF_getDistTableIdx(param_0,param_1);
+ return daNpcF_getDistTableIdx(param_0, param_1);
}
/* 801542A0-8015436C 14EBE0 00CC+00 0/0 0/0 6/6 .text getEvtAreaTagP__8daNpcF_cFii */
@@ -5314,7 +5457,7 @@ u8 daNpcF_c::getDistTableIdx(int param_0, int param_1) {
fopAc_ac_c* daNpcF_c::getEvtAreaTagP(int param_0, int param_1) {
mFindCount = 0;
mSrchActorName = PROC_TAG_EVTAREA;
- fpcM_Search((fpcLyIt_JudgeFunc)this->srchActor,(void*)this);
+ fpcM_Search((fpcLyIt_JudgeFunc)this->srchActor, (void*)this);
for (int i = 0; mFindCount >= 0; mFindCount--) {
if (param_0 == mFindActorPList[i] && param_1 == mFindActorPList[i]) {
@@ -5343,8 +5486,8 @@ SECTION_SDATA2 static f32 lit_11605 = 450.0f;
*/
#ifdef NONMATCHING
fopAc_ac_c* daNpcF_c::getAttnActorP(int param_0, void* (*param_1)(void*, void*), f32 param_2,
- f32 param_3, f32 param_4, f32 param_5, s16 param_6, int param_7,
- int param_8) {
+ f32 param_3, f32 param_4, f32 param_5, s16 param_6, int param_7,
+ int param_8) {
fopAc_ac_c* actor = NULL;
int rnd = 450 + (int)((cM_rnd() - 0.5f) * 450.0f);
int rnd2 = param_7 + (int)((cM_rnd() - 0.5f) * param_7);
@@ -5366,23 +5509,25 @@ fopAc_ac_c* daNpcF_c::getAttnActorP(int param_0, void* (*param_1)(void*, void*),
mFindCount = 0;
fpcEx_Search((fpcLyIt_JudgeFunc)param_1, this);
for (int i = 0; i < mFindCount; i++) {
- if (chkPointInArea(getAttentionPos(mFindActorPList[i]), mAttentionInfo.mPosition, param_2, param_3, param_4, 0) &&
- chkActorInSight2(mFindActorPList[i], param_5, param_6)) {
- int j;
- for (j = 0; j < 5; j++) {
- // !@Bug I think field_0x93c index should be j
- if (mFindActorPList[i] == field_0x82c[j].getActorP() && field_0x93c[i] != 0) {
- break;
- }
+ if (chkPointInArea(getAttentionPos(mFindActorPList[i]), mAttentionInfo.mPosition,
+ param_2, param_3, param_4, 0) &&
+ chkActorInSight2(mFindActorPList[i], param_5, param_6))
+ {
+ int j;
+ for (j = 0; j < 5; j++) {
+ // !@Bug I think field_0x93c index should be j
+ if (mFindActorPList[i] == field_0x82c[j].getActorP() && field_0x93c[i] != 0) {
+ break;
}
+ }
- if (j == 5) {
- f32 dist2 = fopAcM_searchActorDistanceXZ(this, mFindActorPList[i]);
- if (dist2 < minDistance) {
- actor = mFindActorPList[i];
- minDistance = dist2;
- }
+ if (j == 5) {
+ f32 dist2 = fopAcM_searchActorDistanceXZ(this, mFindActorPList[i]);
+ if (dist2 < minDistance) {
+ actor = mFindActorPList[i];
+ minDistance = dist2;
}
+ }
}
}
@@ -5392,7 +5537,8 @@ fopAc_ac_c* daNpcF_c::getAttnActorP(int param_0, void* (*param_1)(void*, void*),
r28 = 1;
}
if (actor != NULL) {
- int minInd, j;;
+ int minInd, j;
+ ;
int dist3 = 900;
minInd = 0;
for (j = 0; j < 5; j++) {
@@ -5422,8 +5568,8 @@ fopAc_ac_c* daNpcF_c::getAttnActorP(int param_0, void* (*param_1)(void*, void*),
#pragma optimization_level 0
#pragma optimizewithasm off
asm fopAc_ac_c* daNpcF_c::getAttnActorP(int param_0, void* (*param_1)(void*, void*), f32 param_2,
- f32 param_3, f32 param_4, f32 param_5, s16 param_6, int param_7,
- int param_8) {
+ f32 param_3, f32 param_4, f32 param_5, s16 param_6,
+ int param_7, int param_8) {
nofralloc
#include "asm/d/a/d_a_npc/getAttnActorP__8daNpcF_cFiPFPvPv_Pvffffsii.s"
}
@@ -5442,10 +5588,10 @@ asm BOOL daNpcF_c::chkActorInSight2(fopAc_ac_c* param_0, f32 param_1, s16 param_
#pragma pop
/* 80154834-801548F4 14F174 00C0+00 2/2 0/0 0/0 .text chkPointInArea__8daNpcF_cF4cXyz4cXyzfffs */
-// literal load order
+// literal load order
#ifdef NONMATCHING
BOOL daNpcF_c::chkPointInArea(cXyz param_0, cXyz param_1, f32 param_2, f32 param_3, f32 param_4,
- s16 param_5) {
+ s16 param_5) {
cXyz tmp_pos1;
cXyz tmp_pos2;
@@ -5456,7 +5602,7 @@ BOOL daNpcF_c::chkPointInArea(cXyz param_0, cXyz param_1, f32 param_2, f32 param
param_3 = param_4;
}
- f32 res = fabsf(param_3 - tmp_float1) * 0.5f;
+ f32 res = fabsf(param_3 - tmp_float1) * 0.5f;
tmp_pos1.x = param_2;
tmp_pos1.y = res;
tmp_pos1.z = param_2;
@@ -5467,7 +5613,7 @@ BOOL daNpcF_c::chkPointInArea(cXyz param_0, cXyz param_1, f32 param_2, f32 param
tmp_pos2.y += tmp_float1;
tmp_pos2.y += tmp_pos1.y;
- return chkPointInArea(param_0,tmp_pos2,tmp_pos1,param_5);
+ return chkPointInArea(param_0, tmp_pos2, tmp_pos1, param_5);
}
#else
#pragma push
@@ -5484,7 +5630,7 @@ asm BOOL daNpcF_c::chkPointInArea(cXyz param_0, cXyz param_1, f32 param_2, f32 p
/* 801548F4-8015496C 14F234 0078+00 1/1 0/0 0/0 .text chkPointInArea__8daNpcF_cF4cXyz4cXyz4cXyzs
*/
BOOL daNpcF_c::chkPointInArea(cXyz param_0, cXyz param_1, cXyz param_2, s16 param_3) {
- return daNpcF_chkPointInArea(param_0,param_1,param_2,param_3);
+ return daNpcF_chkPointInArea(param_0, param_1, param_2, param_3);
}
/* 8015496C-801549E0 14F2AC 0074+00 3/3 0/0 0/0 .text getAttentionPos__8daNpcF_cFP10fopAc_ac_c */
@@ -5534,7 +5680,8 @@ void daNpcF_c::setHitodamaPrtcl() {
local_20.z = mEyePos.z + field_0x9b8.z + field_0x9c4.z;
for (int i = 0; i < 2; i++) {
- field_0x9a8[i] = dComIfGp_particle_set(field_0x9a8[i], id_11798[i], &local_20, &field_0x8f0, NULL);
+ field_0x9a8[i] =
+ dComIfGp_particle_set(field_0x9a8[i], id_11798[i], &local_20, &field_0x8f0, NULL);
JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(field_0x9a8[i]);
if (emitter != NULL) {
if (dComIfGs_wolfeye_effect_check() == 0) {
@@ -5561,12 +5708,12 @@ asm void daNpcF_c::setHitodamaPrtcl() {
/* 80154DA8-80154E54 14F6E8 00AC+00 1/1 0/0 1/1 .text
* daNpcF_pntVsLineSegmentLengthSquare2D__FffffffPfPfPf */
int daNpcF_pntVsLineSegmentLengthSquare2D(f32 param_0, f32 param_1, f32 param_2, f32 param_3,
- f32 param_4, f32 param_5, f32* param_6, f32* param_7,
- f32* param_8) {
+ f32 param_4, f32 param_5, f32* param_6, f32* param_7,
+ f32* param_8) {
f32 l_float3;
f32 l_float1;
f32 l_float2;
-
+
int ret;
ret = 0;
@@ -5603,7 +5750,7 @@ static u16 daNpcF_putNurbs(dPnt* param_0, int param_1, int param_2, dPnt* param_
#pragma optimization_level 0
#pragma optimizewithasm off
asm int daNpcF_chkPassed(cXyz param_0, dPnt* param_1, u16 param_2, u16 param_3, int param_4,
- int param_5) {
+ int param_5) {
nofralloc
#include "asm/d/a/d_a_npc/daNpcF_chkPassed__F4cXyzP4dPntUsUsii.s"
}
@@ -5653,10 +5800,10 @@ void daNpcF_offTmpBit(u32 i_idx) {
* daNpcF_getPlayerInfoFromPlayerList__FiiR4cXyzR5csXyz */
int daNpcF_getPlayerInfoFromPlayerList(int param_0, int i_roomNo, cXyz& param_2, csXyz& param_3) {
int rv = 0;
-
+
dStage_roomStatus_c* roomP = dComIfGp_roomControl_getStatusRoomDt(i_roomNo);
stage_actor_data_class* entries = roomP->mRoomDt.getPlayer()->mEntries;
-
+
for (int i = 0; i < roomP->mRoomDt.getPlayerNum(); entries++, i++) {
if (param_0 == (u8)entries->mAngle.z) {
param_2 = entries->mSpawnPos;
@@ -5677,17 +5824,19 @@ bool daNpcF_chkDoBtnEqSpeak(fopAc_ac_c* i_ActorP) {
for (int i = 0; i < dComIfGp_getAttention().GetActionCount(); i++) {
if (dComIfGp_getAttention().ActionTarget(i) == i_ActorP &&
dComIfGp_getAttention().getActionBtnB() &&
- dComIfGp_getAttention().getActionBtnB()->mType == 3) {
- ret = 1;
- };
+ dComIfGp_getAttention().getActionBtnB()->mType == 3)
+ {
+ ret = 1;
+ };
}
for (int i = 0; i < dComIfGp_getAttention().GetLockonCount(); i++) {
if (dComIfGp_getAttention().LockonTarget(i) == i_ActorP &&
dComIfGp_getAttention().getActionBtnB() &&
- dComIfGp_getAttention().getActionBtnB()->mType == 1) {
- ret = 1;
- };
+ dComIfGp_getAttention().getActionBtnB()->mType == 1)
+ {
+ ret = 1;
+ };
}
}
return ret;
@@ -5703,9 +5852,9 @@ BOOL daNpcF_chkPointInArea(cXyz param_0, cXyz param_1, cXyz param_2, s16 param_3
f32 l_float4;
cXyz l_pos;
- mDoMtx_YrotS((MtxP)&mDoMtx_stack_c::now,-param_3);
- mDoMtx_stack_c::transM(-param_1.x,-param_1.y,-param_1.z);
- MTXMultVec((MtxP)&mDoMtx_stack_c::now,(Vec*)&param_0,&l_vec);
+ mDoMtx_YrotS((MtxP)&mDoMtx_stack_c::now, -param_3);
+ mDoMtx_stack_c::transM(-param_1.x, -param_1.y, -param_1.z);
+ MTXMultVec((MtxP)&mDoMtx_stack_c::now, (Vec*)&param_0, &l_vec);
l_float1 = fabsf(param_2.x);
l_float2 = fabsf(param_2.z);
diff --git a/src/d/bg/d_bg_s.cpp b/src/d/bg/d_bg_s.cpp
index 8614be211d..3553a4e9f0 100644
--- a/src/d/bg/d_bg_s.cpp
+++ b/src/d/bg/d_bg_s.cpp
@@ -1,28 +1,15 @@
-//
-// Generated By: dol2asm
-// Translation Unit: d/bg/d_bg_s
-//
+/**
+ * d_bg_s.cpp
+ * Background (Map) Collision main handler
+ */
#include "d/bg/d_bg_s.h"
#include "d/bg/d_bg_s_sph_chk.h"
#include "d/bg/d_bg_w.h"
#include "d/com/d_com_inf_game.h"
#include "dolphin/mtx/mtxvec.h"
-#include "dolphin/types.h"
#include "f_op/f_op_actor_mng.h"
-//
-// Forward References:
-//
-
-//
-// External References:
-//
-
-//
-// Declarations:
-//
-
/* 800740F4-80074110 06EA34 001C+00 2/2 1/1 0/0 .text Init__11cBgS_ChkElmFv */
void cBgS_ChkElm::Init() {
m_bgw_base_ptr = NULL;
@@ -160,7 +147,9 @@ f32 cBgS::GroundCross(cBgS_GndChk* p_gnd) {
return p_gnd->GetNowY();
}
-struct cBgS_dzb_data {
+// this is identical to cBgD_t except using u32's for the table offsets.
+// u32 is needed to match in ConvDzb ?
+struct cBgD_t_ {
// Vertex Info
/* 0x00 */ int m_v_num;
/* 0x04 */ u32 m_v_tbl;
@@ -185,20 +174,20 @@ struct cBgS_dzb_data {
/* 0x28 */ int m_ti_num;
/* 0x2C */ u32 m_ti_tbl;
- /* 0x30 */ u32 field_0x30;
+ /* 0x30 */ u32 m_flags;
}; // Size: 0x34
-struct cBgS_dzb_strgroup {
+struct cBgD_Grp_t_ {
u32 strOffset;
u8 data[0x30];
};
/* 80074578-80074618 06EEB8 00A0+00 0/0 1/1 0/0 .text ConvDzb__4cBgSFPv */
void* cBgS::ConvDzb(void* p_dzb) {
- cBgS_dzb_data* pbgd = (cBgS_dzb_data*)p_dzb;
+ cBgD_t_* pbgd = (cBgD_t_*)p_dzb;
- if (((pbgd->field_0x30 & 0x80000000) == 0)) {
- pbgd->field_0x30 |= 0x80000000;
+ if (((pbgd->m_flags & 0x80000000) == 0)) {
+ pbgd->m_flags |= 0x80000000;
} else {
return p_dzb;
}
@@ -214,8 +203,8 @@ void* cBgS::ConvDzb(void* p_dzb) {
pbgd->m_ti_tbl += (u32)p_dzb;
for (int i = 0; i < pbgd->m_g_num; i++) {
- ((cBgS_dzb_strgroup*)pbgd->m_g_tbl)[i].strOffset =
- (u32)p_dzb + ((cBgS_dzb_strgroup*)pbgd->m_g_tbl)[i].strOffset;
+ ((cBgD_Grp_t_*)pbgd->m_g_tbl)[i].strOffset =
+ (u32)p_dzb + ((cBgD_Grp_t_*)pbgd->m_g_tbl)[i].strOffset;
}
return p_dzb;
@@ -920,6 +909,3 @@ f32 dBgS_GetNY(cBgS_PolyInfo const& poly) {
dComIfG_Bgsp().GetTriPla(poly, &pla);
return pla.mNormal.y;
}
-
-/* 80450F68-80450F70 000468 0008+00 0/0 1/1 0/0 .sbss None */
-u8 data_80450F68[8] __attribute__((aligned(8)));
diff --git a/src/d/bg/d_bg_s_acch.cpp b/src/d/bg/d_bg_s_acch.cpp
index a599b281ba..476f7f0e2b 100644
--- a/src/d/bg/d_bg_s_acch.cpp
+++ b/src/d/bg/d_bg_s_acch.cpp
@@ -313,6 +313,9 @@ void dBgS_Acch::GroundCheckInit(dBgS& param_0) {
}
}
+/* 80450F68-80450F70 000468 0008+00 0/0 1/1 0/0 .sbss None */
+s8 data_80450F68;
+
/* 80076350-8007654C 070C90 01FC+00 2/2 0/0 0/0 .text GroundCheck__9dBgS_AcchFR4dBgS */
// issues with tmpRoofChk
#ifdef NONMATCHING
diff --git a/src/d/bg/d_bg_w_base.cpp b/src/d/bg/d_bg_w_base.cpp
index 28b72cda0a..fa0ec6284c 100644
--- a/src/d/bg/d_bg_w_base.cpp
+++ b/src/d/bg/d_bg_w_base.cpp
@@ -32,15 +32,11 @@ bool dBgW_Base::ChkMemoryError() {
/* 8007E6D8-8007E6DC 079018 0004+00 1/0 2/0 0/0 .text
* CallRideCallBack__9dBgW_BaseFP10fopAc_ac_cP10fopAc_ac_c */
-void dBgW_Base::CallRideCallBack(fopAc_ac_c* param_0, fopAc_ac_c* param_1) {
- /* empty function */
-}
+void dBgW_Base::CallRideCallBack(fopAc_ac_c* param_0, fopAc_ac_c* param_1) {}
/* 8007E6DC-8007E6E0 07901C 0004+00 1/0 2/0 0/0 .text
* CallArrowStickCallBack__9dBgW_BaseFP10fopAc_ac_cP10fopAc_ac_cR4cXyz */
-void dBgW_Base::CallArrowStickCallBack(fopAc_ac_c* param_0, fopAc_ac_c* param_1, cXyz& param_2) {
- /* empty function */
-}
+void dBgW_Base::CallArrowStickCallBack(fopAc_ac_c* param_0, fopAc_ac_c* param_1, cXyz& param_2) {}
/* 8007E6E0-8007E6F4 079020 0014+00 0/0 1/1 0/0 .text CalcDiffShapeAngleY__9dBgW_BaseFs
*/
diff --git a/src/d/bg/d_bg_w_kcol.cpp b/src/d/bg/d_bg_w_kcol.cpp
index 4568802019..83ad04cdd9 100644
--- a/src/d/bg/d_bg_w_kcol.cpp
+++ b/src/d/bg/d_bg_w_kcol.cpp
@@ -140,86 +140,13 @@ extern "C" u8 sincosTable___5JMath[65536];
// Declarations:
//
-/* ############################################################################################## */
-/* 803ABDC8-803ABEB8 008EE8 00F0+00 2/2 0/0 0/0 .data __vt__8dBgWKCol */
-SECTION_DATA extern void* __vt__8dBgWKCol[60] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8dBgWKColFv,
- (void*)ChkMemoryError__9dBgW_BaseFv,
- (void*)ChkNotReady__8dBgWKColCFv,
- (void*)ChkLock__8dBgWKColCFv,
- (void*)ChkMoveBg__8dBgWKColCFv,
- (void*)ChkMoveFlag__8dBgWKColCFv,
- (void*)GetTriPla__8dBgWKColCFRC13cBgS_PolyInfo,
- (void*)GetTriPnt__8dBgWKColCFRC13cBgS_PolyInfoP4cXyzP4cXyzP4cXyz,
- (void*)GetBnd__8dBgWKColCFv,
- (void*)GetGrpInf__8dBgWKColCFRC13cBgS_PolyInfo,
- (void*)OffMoveFlag__8dBgWKColFv,
- (void*)GetTopUnder__8dBgWKColCFPfPf,
- (void*)SetOldShapeAngleY__9dBgW_BaseFs,
- (void*)LineCheck__8dBgWKColFP11cBgS_LinChk,
- (void*)GroundCross__8dBgWKColFP11cBgS_GndChk,
- (void*)ShdwDraw__8dBgWKColFP13cBgS_ShdwDraw,
- (void*)CaptPoly__8dBgWKColFR13dBgS_CaptPoly,
- (void*)WallCorrect__8dBgWKColFP9dBgS_Acch,
- (void*)WallCorrectSort__8dBgWKColFP9dBgS_Acch,
- (void*)RoofChk__8dBgWKColFP12dBgS_RoofChk,
- (void*)SplGrpChk__8dBgWKColFP14dBgS_SplGrpChk,
- (void*)SphChk__8dBgWKColFP11dBgS_SphChkPv,
- (void*)GetGrpRoomIndex__8dBgWKColCFRC13cBgS_PolyInfo,
- (void*)GetExitId__8dBgWKColFRC13cBgS_PolyInfo,
- (void*)GetPolyColor__8dBgWKColFRC13cBgS_PolyInfo,
- (void*)GetHorseNoEntry__8dBgWKColFRC13cBgS_PolyInfo,
- (void*)GetSpecialCode__8dBgWKColFRC13cBgS_PolyInfo,
- (void*)GetSpecialCode__8dBgWKColFi,
- (void*)GetMagnetCode__8dBgWKColFRC13cBgS_PolyInfo,
- (void*)GetPolyObjThrough__8dBgWKColFi,
- (void*)GetPolyCamThrough__8dBgWKColFi,
- (void*)GetPolyLinkThrough__8dBgWKColFi,
- (void*)GetPolyArrowThrough__8dBgWKColFi,
- (void*)GetPolyHSStick__8dBgWKColFi,
- (void*)GetPolyBoomerangThrough__8dBgWKColFi,
- (void*)GetPolyRopeThrough__8dBgWKColFi,
- (void*)GetPolyBombThrough__8dBgWKColFi,
- (void*)GetShdwThrough__8dBgWKColFi,
- (void*)GetUnderwaterRoofCode__8dBgWKColFi,
- (void*)GetMonkeyBarsCode__8dBgWKColFRC13cBgS_PolyInfo,
- (void*)GetLinkNo__8dBgWKColFRC13cBgS_PolyInfo,
- (void*)GetWallCode__8dBgWKColFRC13cBgS_PolyInfo,
- (void*)GetPolyAtt0__8dBgWKColFRC13cBgS_PolyInfo,
- (void*)GetPolyAtt1__8dBgWKColFRC13cBgS_PolyInfo,
- (void*)GetGroundCode__8dBgWKColFRC13cBgS_PolyInfo,
- (void*)GetIronBallThrough__8dBgWKColFi,
- (void*)GetAttackThrough__8dBgWKColFi,
- (void*)GetCamMoveBG__8dBgWKColFRC13cBgS_PolyInfo,
- (void*)GetRoomCamId__8dBgWKColFRC13cBgS_PolyInfo,
- (void*)GetRoomPathId__8dBgWKColFRC13cBgS_PolyInfo,
- (void*)GetRoomPathPntNo__8dBgWKColFRC13cBgS_PolyInfo,
- (void*)GetPolyGrpRoomInfId__8dBgWKColFRC13cBgS_PolyInfo,
- (void*)GetGrpSoundId__8dBgWKColFRC13cBgS_PolyInfo,
- (void*)CrrPos__8dBgWKColFRC13cBgS_PolyInfoPvbP4cXyzP5csXyzP5csXyz,
- (void*)TransPos__8dBgWKColFRC13cBgS_PolyInfoPvbP4cXyzP5csXyzP5csXyz,
- (void*)MatrixCrrPos__8dBgWKColFRC13cBgS_PolyInfoPvbP4cXyzP5csXyzP5csXyz,
- (void*)CallRideCallBack__9dBgW_BaseFP10fopAc_ac_cP10fopAc_ac_c,
- (void*)CallArrowStickCallBack__9dBgW_BaseFP10fopAc_ac_cP10fopAc_ac_cR4cXyz,
-};
-
/* 8007E6F4-8007E74C 079034 0058+00 0/0 0/0 1/1 .text __ct__8dBgWKColFv */
dBgWKCol::dBgWKCol() {
m_pkc_head = NULL;
}
/* 8007E74C-8007E7D0 07908C 0084+00 1/0 0/0 0/0 .text __dt__8dBgWKColFv */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-// asm dBgWKCol::~dBgWKCol() {
-extern "C" asm void __dt__8dBgWKColFv() {
- nofralloc
-#include "asm/d/bg/d_bg_w_kcol/__dt__8dBgWKColFv.s"
-}
-#pragma pop
+dBgWKCol::~dBgWKCol() {}
/* 8007E7D0-8007E804 079110 0034+00 0/0 1/1 0/0 .text initKCollision__8dBgWKColFPv */
void dBgWKCol::initKCollision(void* i_kclData) {
diff --git a/src/d/com/d_com_inf_game.cpp b/src/d/com/d_com_inf_game.cpp
index a3071c2e2d..94759a22f9 100644
--- a/src/d/com/d_com_inf_game.cpp
+++ b/src/d/com/d_com_inf_game.cpp
@@ -2428,11 +2428,11 @@ int dComLbG_PhaseHandler(request_of_phase_process_class* i_phaseReq, cPhs__Handl
void* i_data) {
int phase = cPhs_Handler(i_phaseReq, i_handler, i_data);
switch (phase) {
- case 2:
+ case cPhs_NEXT_e:
phase = dComLbG_PhaseHandler(i_phaseReq, i_handler, i_data);
break;
- case 1:
- case 3:
+ case cPhs_LOADING_e:
+ case cPhs_UNK3_e:
break;
}
diff --git a/src/d/com/d_com_static.cpp b/src/d/com/d_com_static.cpp
index 93bc7b3963..be1134044c 100644
--- a/src/d/com/d_com_static.cpp
+++ b/src/d/com/d_com_static.cpp
@@ -7,11 +7,15 @@
#include "MSL_C/stdio.h"
#include "d/d_demo.h"
#include "dol2asm.h"
+#include "rel/d/a/d_a_dshutter/d_a_dshutter.h"
+#include "rel/d/a/d_a_grass/d_a_grass.h"
+#include "rel/d/a/d_a_mirror/d_a_mirror.h"
#include "rel/d/a/d_a_movie_player/d_a_movie_player.h"
+#include "rel/d/a/d_a_set_bgobj/d_a_set_bgobj.h"
#include "rel/d/a/obj/d_a_obj_carry/d_a_obj_carry.h"
#include "rel/d/a/tag/d_a_tag_magne/d_a_tag_magne.h"
+#include "rel/d/a/tag/d_a_tag_mist/d_a_tag_mist.h"
#include "rel/d/a/tag/d_a_tag_stream/d_a_tag_stream.h"
-#include "rel/d/a/d_a_mirror/d_a_mirror.h"
//
// Types:
@@ -23,53 +27,12 @@ struct daYkgr_c {
static u8 m_emitter[4];
};
-struct daTagMist_c {
- /* 80031CF0 */ static u8 getPlayerNo();
-
- static u8 mPlayerNo;
-};
-
-struct daSetBgObj_c {
- /* 80031870 */ static const char* getArcName(fopAc_ac_c*);
-};
-
struct daObjMovebox {
struct Act_c {
static void* M_dir_base[2];
};
};
-struct dFlower_packet_c {
- typedef void (dFlower_packet_c::*DeleteRoomFunc)(int);
- static DeleteRoomFunc m_deleteRoom;
-};
-
-struct dGrass_packet_c {
- typedef void (dGrass_packet_c::*DeleteRoomFunc)(int);
- static DeleteRoomFunc m_deleteRoom;
-};
-
-struct daGrass_c {
- /* 800319C8 */ static void deleteRoomGrass(int);
- /* 80031A20 */ static void deleteRoomFlower(int);
-
- static u8 m_myObj[4];
- static dGrass_packet_c* m_grass;
- static dFlower_packet_c* m_flower;
-};
-
-struct daDsh_c {
- static f32 OPEN_SIZE;
- static f32 OPEN_ACCEL;
- static f32 OPEN_SPEED;
- static f32 OPEN_BOUND_SPEED;
- static f32 OPEN_BOUND_RATIO;
- static f32 CLOSE_ACCEL;
- static f32 CLOSE_SPEED;
- static f32 CLOSE_BOUND_SPEED;
- static f32 CLOSE_BOUND_RATIO;
-};
-
//
// Forward References:
//
@@ -227,7 +190,8 @@ bool daSus_c::data_c::check(cXyz const& i_pos) {
if ((field_0x8.x <= i_pos.x && i_pos.x <= field_0x14.x) &&
(field_0x8.y <= i_pos.y && i_pos.y <= field_0x14.y) &&
- (field_0x8.z <= i_pos.z && i_pos.z <= field_0x14.z)) {
+ (field_0x8.z <= i_pos.z && i_pos.z <= field_0x14.z))
+ {
return true;
}
@@ -241,7 +205,7 @@ u8 daSus_c::data_c::check(fopAc_ac_c* i_actor) {
}
u8 tmp = 0x80;
-
+
if (check(i_actor->orig.pos)) {
tmp |= 1;
}
@@ -279,7 +243,8 @@ void daSus_c::room_c::add(daSus_c::data_c* i_data) {
daSus_c::data_c* data1 = mpData;
daSus_c::data_c* data2 = data1->getNext();
while (data2 != NULL) {
- if (data1->getType() != 0) break;
+ if (data1->getType() != 0)
+ break;
data1 = data2;
data2 = data2->getNext();
}
@@ -316,8 +281,8 @@ s16 daSus_c::mSetTop;
/* 80031248-800313BC 02BB88 0174+00 0/0 0/0 1/1 .text newData__7daSus_cFScRC4cXyzRC4cXyzUcUcUc */
// Issues with mSetTop and m_count__9daArrow_c relocation
#ifdef NONMATCHING
-int daSus_c::newData(s8 i_roomNo, cXyz const& param_1, cXyz const& param_2, u8 param_3,
- u8 param_4, u8 i_type) {
+int daSus_c::newData(s8 i_roomNo, cXyz const& param_1, cXyz const& param_2, u8 param_3, u8 param_4,
+ u8 i_type) {
s16 setTop = mSetTop;
daSus_c::data_c* pData = ((daSus_c::data_c*)mData) + setTop;
for (s16 i = setTop; i < 32; pData++, i++) {
@@ -347,7 +312,7 @@ int daSus_c::newData(s8 i_roomNo, cXyz const& param_1, cXyz const& param_2, u8 p
#pragma optimization_level 0
#pragma optimizewithasm off
asm int daSus_c::newData(s8 param_0, cXyz const& param_1, cXyz const& param_2, u8 param_3,
- u8 param_4, u8 param_5) {
+ u8 param_4, u8 param_5) {
nofralloc
#include "asm/d/com/d_com_static/newData__7daSus_cFScRC4cXyzRC4cXyzUcUcUc.s"
}
@@ -542,12 +507,11 @@ SECTION_SDATA2 f32 daDsh_c::CLOSE_BOUND_RATIO = -0.4f;
int daTagStream_c::checkArea(cXyz const* param_0) {
cXyz relativePos;
fpoAcM_relativePos(this, param_0, &relativePos);
- if (relativePos.y >= 0.0f && relativePos.y <= mScale.y &&
- fabsf(relativePos.x) <= mScale.x &&
+ if (relativePos.y >= 0.0f && relativePos.y <= mScale.y && fabsf(relativePos.x) <= mScale.x &&
fabsf(relativePos.z) <= mScale.z)
{
return 1;
- }
+ }
return 0;
}
@@ -581,34 +545,34 @@ int daMirror_c::remove() {
/* ############################################################################################## */
/* 80424588-80424594 0512A8 000C+00 1/2 0/0 1/1 .bss m_deleteRoom__15dGrass_packet_c */
-dGrass_packet_c::DeleteRoomFunc dGrass_packet_c::m_deleteRoom;
+dGrass_packet_c::deleteFunc dGrass_packet_c::m_deleteRoom;
/* 80450DAC-80450DB0 0002AC 0004+00 0/0 0/0 2/2 .sbss m_myObj__9daGrass_c */
-u8 daGrass_c::m_myObj[4];
+daGrass_c* daGrass_c::m_myObj;
/* 80450DB0-80450DB4 0002B0 0004+00 1/1 0/0 11/11 .sbss m_grass__9daGrass_c */
dGrass_packet_c* daGrass_c::m_grass;
/* 800319C8-80031A20 02C308 0058+00 0/0 0/0 1/1 .text deleteRoomGrass__9daGrass_cFi */
void daGrass_c::deleteRoomGrass(int param_0) {
- if (m_grass) {
- dGrass_packet_c::DeleteRoomFunc func = dGrass_packet_c::m_deleteRoom;
- (m_grass->*(func))(param_0);
+ if (m_grass != NULL) {
+ dGrass_packet_c::deleteFunc delete_func = dGrass_packet_c::m_deleteRoom;
+ (m_grass->*(delete_func))(param_0);
}
}
/* ############################################################################################## */
/* 80424594-804245A0 0512B4 000C+00 1/2 0/0 1/1 .bss m_deleteRoom__16dFlower_packet_c */
-dFlower_packet_c::DeleteRoomFunc dFlower_packet_c::m_deleteRoom;
+dFlower_packet_c::deleteFunc dFlower_packet_c::m_deleteRoom;
/* 80450DB4-80450DB8 0002B4 0004+00 1/1 0/0 9/9 .sbss m_flower__9daGrass_c */
dFlower_packet_c* daGrass_c::m_flower;
/* 80031A20-80031A78 02C360 0058+00 0/0 0/0 1/1 .text deleteRoomFlower__9daGrass_cFi */
void daGrass_c::deleteRoomFlower(int param_0) {
- if (m_flower) {
- dFlower_packet_c::DeleteRoomFunc func = dFlower_packet_c::m_deleteRoom;
- (m_flower->*(func))(param_0);
+ if (m_flower != NULL) {
+ dFlower_packet_c::deleteFunc delete_func = dFlower_packet_c::m_deleteRoom;
+ (m_flower->*(delete_func))(param_0);
}
}
@@ -655,7 +619,8 @@ int daTagMagne_c::checkMagnetCode(cBgS_PolyInfo& poly) {
int magCode = dComIfG_Bgsp().GetMagnetCode(poly);
if ((magCode == 1 && mTagMagne->checkMagneA()) || (magCode == 2 && mTagMagne->checkMagneB()) ||
- (magCode == 3 && mTagMagne->checkMagneC())) {
+ (magCode == 3 && mTagMagne->checkMagneC()))
+ {
return 1;
}
@@ -776,8 +741,7 @@ s8 daObjCarry_c::getRoomNo(int idx) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void __sinit_d_com_static_cpp() {
- nofralloc
+asm void __sinit_d_com_static_cpp(){nofralloc
#include "asm/d/com/d_com_static/__sinit_d_com_static_cpp.s"
}
#pragma pop
diff --git a/src/d/d_npc_lib.cpp b/src/d/d_npc_lib.cpp
index 29cb2333cd..955338722a 100644
--- a/src/d/d_npc_lib.cpp
+++ b/src/d/d_npc_lib.cpp
@@ -4,6 +4,7 @@
//
#include "d/d_npc_lib.h"
+#include "SSystem/SComponent/c_math.h"
#include "dol2asm.h"
//
@@ -52,29 +53,32 @@ extern "C" extern u8 data_80451164[4];
// Declarations:
//
-/* ############################################################################################## */
-/* 803C2B88-803C2B98 01FCA8 000C+04 2/2 0/0 0/0 .data __vt__16dNpcLib_lookat_c */
-SECTION_DATA extern void* __vt__16dNpcLib_lookat_c[3 + 1 /* padding */] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__16dNpcLib_lookat_cFv,
- /* padding */
- NULL,
-};
-
/* 80251314-8025140C 24BC54 00F8+00 0/0 0/0 4/4 .text __ct__16dNpcLib_lookat_cFv */
dNpcLib_lookat_c::dNpcLib_lookat_c() {}
/* 8025140C-80251534 24BD4C 0128+00 0/0 0/0 2/2 .text
* init__16dNpcLib_lookat_cFP8J3DModelPiP5csXyzP5csXyz */
-#pragma push
-#pragma optimization_level 0
-#pragma optimizewithasm off
-asm void dNpcLib_lookat_c::init(J3DModel* param_0, int* param_1, csXyz* param_2, csXyz* param_3) {
- nofralloc
-#include "asm/d/d_npc_lib/init__16dNpcLib_lookat_cFP8J3DModelPiP5csXyzP5csXyz.s"
+void dNpcLib_lookat_c::init(J3DModel* i_mdl_p, int* param_1, csXyz* param_2, csXyz* param_3) {
+ int i;
+ for (i = 0; i < 4; i++) {
+ field_0xbc[i] = -1;
+ }
+
+ mCount = 0;
+ for (i = 0; i < 3; i++) {
+ int a_jntNum = param_1[i];
+ if (a_jntNum < 0) {
+ break;
+ }
+
+ mDoMtx_stack_c::copy(i_mdl_p->i_getAnmMtx(a_jntNum));
+ mDoMtx_stack_c::multVecZero(&field_0x04[mCount]);
+ field_0xbc[i] = a_jntNum;
+ field_0x94[i] = param_2[i];
+ field_0x7c[i] = param_3[i];
+ mCount++;
+ }
}
-#pragma pop
/* ############################################################################################## */
/* 80454DE8-80454DEC 0033E8 0004+00 3/3 0/0 0/0 .sdata2 @3864 */
@@ -111,20 +115,96 @@ SECTION_SDATA2 static f64 lit_3873 = 4503601774854144.0 /* cast s32 to float */;
/* 80251534-80251B60 24BE74 062C+00 0/0 0/0 2/2 .text
* action__16dNpcLib_lookat_cF4cXyz4cXyzP10fopAc_ac_cPA4_fi */
+// regswap, equivalent
+#ifdef NONMATCHING
+void dNpcLib_lookat_c::action(cXyz param_0, cXyz param_1, fopAc_ac_c* param_2, Mtx param_3,
+ int param_4) {
+ cXyz spA0;
+
+ Mtx sp90;
+ cMtx_copy(param_3, sp90);
+ sp90[2][3] = 0.0f;
+ sp90[1][3] = 0.0f;
+ sp90[0][3] = 0.0f;
+
+ mDoMtx_stack_c::copy(sp90);
+ mDoMtx_stack_c::inverse();
+ cMtx_copy(mDoMtx_stack_c::get(), sp90);
+
+ for (int i = 0; i < mCount; i++) {
+ spA0 = field_0x04[i] - param_2->current.pos;
+ mDoMtx_stack_c::transS(param_2->current.pos);
+ mDoMtx_stack_c::concat(sp90);
+ mDoMtx_stack_c::multVec(&spA0, &field_0x04[i]);
+ }
+
+ spA0 = param_0 - param_2->current.pos;
+ mDoMtx_stack_c::transS(param_2->current.pos);
+ mDoMtx_stack_c::concat(sp90);
+ mDoMtx_stack_c::multVec(&spA0, &param_0);
+
+ spA0 = param_1 - param_2->current.pos;
+ mDoMtx_stack_c::transS(param_2->current.pos);
+ mDoMtx_stack_c::concat(sp90);
+ mDoMtx_stack_c::multVec(&spA0, &field_0x04[mCount]);
+
+ setPrm();
+ update();
+
+ cXyz spAC;
+ cXyz spB8;
+
+ f32 tmp = 1.0f;
+ for (int i = mCount - 1; i >= 0 && param_4 == 1; i--) {
+ spAC = param_0 - field_0x04[i];
+
+ if (!spAC.isZero()) {
+ spAC.normalize();
+
+ spB8 = field_0x04[mCount] - field_0x04[i];
+ if (!spB8.isZero()) {
+ spB8.normalize();
+
+ s16 svar7 = -cM_atan2s(spAC.y, spAC.absXZ());
+ s16 svar8 = cM_atan2s(spAC.x, spAC.z);
+
+ s16 svar9 = -cM_atan2s(spB8.y, spB8.absXZ());
+ s16 svar10 = cM_atan2s(spB8.x, spB8.z);
+
+ field_0x4c[i].x += (s16)(tmp * (f32)(svar7 - svar9));
+ field_0x4c[i].y += (s16)(tmp * (f32)(svar8 - svar10));
+
+ limitter(&field_0x4c[i].x, field_0x34[i].x, field_0x94[i].x, field_0x7c[i].x);
+ limitter(&field_0x4c[i].y, field_0x34[i].y, field_0x94[i].y, field_0x7c[i].y);
+ }
+ }
+
+ tmp *= 0.5f;
+ update();
+ }
+
+ csXyz sp114(csXyz::Zero);
+ for (int i = 0; i < 4; i++) {
+ sp114 += field_0x4c[i];
+ field_0x64[i].x = sp114.x;
+ field_0x64[i].y = sp114.y;
+ field_0x64[i].z = 0;
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
-asm void dNpcLib_lookat_c::action(cXyz param_0, cXyz param_1, fopAc_ac_c* param_2,
- f32 (*param_3)[4], int param_4) {
+asm void dNpcLib_lookat_c::action(cXyz param_0, cXyz param_1, fopAc_ac_c* param_2, Mtx param_3,
+ int param_4) {
nofralloc
#include "asm/d/d_npc_lib/action__16dNpcLib_lookat_cF4cXyz4cXyzP10fopAc_ac_cPA4_fi.s"
}
#pragma pop
+#endif
/* 80251B60-80251B64 24C4A0 0004+00 0/0 0/0 2/2 .text dbView__16dNpcLib_lookat_cFv */
-void dNpcLib_lookat_c::dbView() {
- /* empty function */
-}
+void dNpcLib_lookat_c::dbView() {}
/* ############################################################################################## */
/* 80454E18-80454E20 003418 0004+04 1/1 0/0 0/0 .sdata2 @3970 */
@@ -145,6 +225,29 @@ asm void dNpcLib_lookat_c::setPrm() {
#pragma pop
/* 80251EF8-80252018 24C838 0120+00 1/1 0/0 0/0 .text update__16dNpcLib_lookat_cFv */
+// matches with literals
+#ifdef NONMATCHING
+void dNpcLib_lookat_c::update() {
+ cXyz sp50;
+ csXyz sp58(csXyz::Zero);
+ Mtx m;
+
+ for (int i = 0; i < mCount; i++) {
+ mDoMtx_stack_c::XYZrotS(field_0x34[i]);
+ cMtx_copy(mDoMtx_stack_c::get(), m);
+
+ mDoMtx_stack_c::transS(field_0x04[i]);
+ sp58.x += field_0x4c[i].x;
+ sp58.y += field_0x4c[i].y;
+
+ mDoMtx_stack_c::ZXYrotM(sp58);
+ mDoMtx_stack_c::concat(m);
+
+ sp50.set(0.0f, 0.0f, field_0xac[i]);
+ mDoMtx_stack_c::multVec(&sp50, &field_0x04[i + 1]);
+ }
+}
+#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -153,24 +256,27 @@ asm void dNpcLib_lookat_c::update() {
#include "asm/d/d_npc_lib/update__16dNpcLib_lookat_cFv.s"
}
#pragma pop
+#endif
/* 80252018-80252094 24C958 007C+00 1/1 0/0 0/0 .text limitter__16dNpcLib_lookat_cFPssss */
-int dNpcLib_lookat_c::limitter(s16* param_0, s16 param_1, s16 param_2, s16 param_3) {
- int limit = param_1 + *param_0;
+int dNpcLib_lookat_c::limitter(s16* o_value, s16 param_1, s16 param_2, s16 param_3) {
+ int limit = param_1 + *o_value;
if (param_2 <= limit) {
if (param_2 <= param_1) {
- *param_0 = 0;
+ *o_value = 0;
} else {
- *param_0 -= (s16)(limit - param_2);
+ *o_value -= (s16)(limit - param_2);
}
}
+
if (limit <= param_3) {
if (param_1 <= param_3) {
- *param_0 = 0;
+ *o_value = 0;
} else {
- *param_0 -= (s16)(limit - param_3);
+ *o_value -= (s16)(limit - param_3);
}
}
+
return 1;
}