d_a_e_ym, d_a_e_oc, and d_a_npc_hanjo equivalent, d_a_npc_ashB work (#2368)

* d_a_e_ym, d_a_e_oc, and d_a_npc_hanjo equivalent, d_a_npc_ashB work

* Updates to PR based on feedback, plus fix debug build
This commit is contained in:
YunataSavior 2025-04-10 06:24:46 -07:00 committed by GitHub
parent c6f76e7240
commit 3d2942960d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 175 additions and 857 deletions

View File

@ -1652,7 +1652,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_e_mm_mt"),
ActorRel(NonMatching, "d_a_e_ms"),
ActorRel(NonMatching, "d_a_e_nz"),
ActorRel(NonMatching, "d_a_e_oc"),
ActorRel(Equivalent, "d_a_e_oc"),
ActorRel(MatchingFor("GZ2E01"), "d_a_e_oct_bg"),
ActorRel(Equivalent, "d_a_e_ot"), # weak func order
ActorRel(MatchingFor("GZ2E01"), "d_a_e_ph"),
@ -1689,7 +1689,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_e_yg"),
ActorRel(NonMatching, "d_a_e_yh"),
ActorRel(Equivalent, "d_a_e_yk"), # weak func order
ActorRel(NonMatching, "d_a_e_ym"),
ActorRel(Equivalent, "d_a_e_ym"),
ActorRel(MatchingFor("GZ2E01"), "d_a_e_ym_tag"),
ActorRel(NonMatching, "d_a_e_ymb"),
ActorRel(NonMatching, "d_a_e_yr"),
@ -1752,7 +1752,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_npc_grz"),
ActorRel(NonMatching, "d_a_npc_guard"),
ActorRel(NonMatching, "d_a_npc_gwolf"),
ActorRel(NonMatching, "d_a_npc_hanjo"),
ActorRel(Equivalent, "d_a_npc_hanjo"),
ActorRel(MatchingFor("GZ2E01"), "d_a_npc_henna0"),
ActorRel(NonMatching, "d_a_npc_hoz"),
ActorRel(NonMatching, "d_a_npc_impal"),

View File

@ -1033,6 +1033,7 @@ public:
/* 5 */ LOOK_ATTN,
};
daNpcF_c() { initialize(); }
/* 80152014 */ BOOL execute();
/* 801522AC */ int draw(BOOL, BOOL, f32, _GXColorS10*, BOOL);
/* 80152614 */ static void tgHitCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*,
@ -1091,7 +1092,7 @@ public:
/* 80155BC8 */ virtual void setParam();
/* 80155BC0 */ virtual BOOL main();
/* 80155BD8 */ virtual BOOL ctrlBtk();
/* 80155BBC */ virtual void adjustShapeAngle();
/* 80155BBC */ virtual void adjustShapeAngle() {}
/* 8015276C */ virtual void setMtx();
/* 801527FC */ virtual void setMtx2();
/* 80155BB8 */ virtual void setAttnPos();

View File

@ -137,7 +137,7 @@ STATIC_ASSERT(sizeof(daNpcAshB_c) == 0xdf0);
class daNpcAshB_Param_c {
public:
/* 80962078 */ virtual ~daNpcAshB_Param_c();
/* 80962078 */ virtual ~daNpcAshB_Param_c() {}
struct param {
/* 0x00 */ f32 mAttnOffsetY;

View File

@ -179,7 +179,7 @@ public:
static dCcD_SrcGObjInf const mStoneCcDObjInfo;
static char* mCutNameList[6];
static cutFunc mCutList[6];
static u8 mStoneCcDSph[64];
static dCcD_SrcSph mStoneCcDSph;
private:
/* 0x0E40 */ int field_0x0E40;
/* 0x0E44 */ J3DModel* mModel1;

View File

@ -2508,32 +2508,30 @@ static int useHeapInit(fopAc_ac_c* i_this) {
/* 80734DA8-807352AC 0088C8 0504+00 1/1 0/0 0/0 .text create__8daE_OC_cFv */
cPhs__Step daE_OC_c::create() {
// NONMATCHING. regalloc issue
f32 mult_val = 100.0f;
fopAc_ac_c* a_this = this;
fopAcM_SetupActor(this, daE_OC_c);
field_0x6b4 = fopAcM_GetParam(this) & 0xff;
if (field_0x6b4 == 0xff) {
field_0x6b4 = 0;
}
u8 range_sel = (fopAcM_GetParam(this) >> 8 & 0xff);
if (range_sel == 0x1) {
u8 u_var = ((fopAcM_GetParam(this) & 0xff00) >> 8);
if (u_var == 0x1) {
mPlayerRange = l_HIO.field_0x0c;
} else {
mPlayerRange = l_HIO.field_0x08;
}
field_0x6e0 = fopAcM_GetParam(this) >> 0x10;
field_0x6e0 = (fopAcM_GetParam(this) & 0xff0000) >> 0x10;
if (field_0x6e0 != 0xff) {
if (dComIfGs_isSwitch(field_0x6e0, fopAcM_GetRoomNo(this))) {
return cPhs_ERROR_e;
}
}
field_0x6e1 = fopAcM_GetParam(this) >> 0x18;
u8 u_var = current.angle.x;
field_0x6e1 = (fopAcM_GetParam(this) & 0xff000000) >> 0x18;
u_var = current.angle.x & 0xff;
if (u_var == 0xff) {
u_var = 0;
}
mMoveRange = mult_val * u_var;
mMoveRange = 100.0f * u_var;
u_var = current.angle.x >> 8 & 0xff;
if (u_var == 0xff || u_var == 0) {
mName = "E_OC";
@ -2557,7 +2555,8 @@ cPhs__Step daE_OC_c::create() {
fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
fopAcM_SetMin(this, -200.0f, -200.0f, -200.0f);
fopAcM_SetMax(this, 200.0f, 200.0f, 200.0f);
mAcch.Set(&current.pos, &old.pos, a_this, 1, &mAcchCir, &speed, NULL, NULL);
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
fopAcM_GetSpeed_p(this), NULL, NULL);
if (0 == strcmp("D_MN05", dComIfGp_getStartStageName())
&& dComIfGp_getStartStageRoomNo() == 0xc) {
mAcchCir.SetWallH(95.0f);
@ -2566,12 +2565,11 @@ cPhs__Step daE_OC_c::create() {
}
mAcchCir.SetWallR(100.0f);
if (mName == "E_OC") {
health = 40;
field_0x560 = 40;
field_0x560 = health = 40;
} else {
health = 220;
field_0x560 = 220;
field_0x560 = health = 220;
}
mStts.Init(100.0f, 0, this);
mSphs_cc[0].Set(E_OC_n::cc_sph_src);
mSphs_cc[0].SetStts(&mStts);
@ -2593,8 +2591,7 @@ cPhs__Step daE_OC_c::create() {
mSound.setEnemyName("E_oc");
mpSound = &mSound;
field_0xe5a = 1;
shape_angle.x = 0;
current.angle.x = 0;
current.angle.x = shape_angle.x = 0;
gravity = -5.0f;
switch (field_0x6b4) {
case 2:

View File

@ -3227,7 +3227,6 @@ static int useHeapInit(fopAc_ac_c* i_this) {
/* 80813EA4-808143A0 00BE64 04FC+00 2/2 0/0 0/0 .text checkBeforeBg__8daE_YM_cFs */
u8 daE_YM_c::checkBeforeBg(s16 i_rot_val) {
// NONMATCHING - regalloc
dBgS_LinChk lin_chk;
cXyz my_vec_0;
cXyz my_vec_1;
@ -3275,7 +3274,7 @@ u8 daE_YM_c::checkBeforeBg(s16 i_rot_val) {
mDoMtx_stack_c::multVec(&my_vec_0, &my_vec_1);
my_vec_3 = current.pos + my_vec_1;
cXyz inside_vec(0.0f, 0.0f, 80.0f);
cLib_offsetPos(&my_vec_2, &my_vec_3, field_0x668.z, &inside_vec);
cLib_offsetPos(&my_vec_2, &my_vec_3, (s16)field_0x668.z, &inside_vec);
lin_chk.Set(&my_vec_3, &my_vec_2, NULL);
if (dComIfG_Bgsp().LineCross(&lin_chk) == 0) {
return 1;
@ -3283,8 +3282,7 @@ u8 daE_YM_c::checkBeforeBg(s16 i_rot_val) {
cM3dGPla plane;
dComIfG_Bgsp().GetTriPla(lin_chk, &plane);
cXyz* p_vec = plane.GetNP();
f32 absxz_val = p_vec->absXZ();
s16 tan_val = cM_atan2s(absxz_val, p_vec->y) + -0x8000;
s16 tan_val = cM_atan2s(p_vec->absXZ(), p_vec->y) + -0x8000;
if (abs(tan_val + 0x4000) <= 0x1555) {
if (field_0x668.z != (s16)(cM_atan2s(p_vec->x, p_vec->z) + 0x8000)) {
return 1;
@ -3395,7 +3393,6 @@ void daE_YM_c::setHideType() {
/* 80814BA4-80815224 00CB64 0680+00 2/1 0/0 0/0 .text create__8daE_YM_cFv */
int daE_YM_c::create() {
// NONMATCHING - regalloc
fopAcM_SetupActor(this, daE_YM_c);
mType = fopAcM_GetParam(this);
@ -3403,17 +3400,17 @@ int daE_YM_c::create() {
mType = 0;
}
mSwitchBit = fopAcM_GetParam(this) >> 0x18;
mSwitchBit = (fopAcM_GetParam(this) & 0xff000000) >> 24;
u8 prm2 = fopAcM_GetParam(this) >> 0x10;
u8 prm2 = (fopAcM_GetParam(this) & 0xff0000) >> 16;
if (prm2 == 0xFF) {
prm2 = 0;
}
field_0x6e0 = prm2 * 100.0f;
u8 prm1 = fopAcM_GetParam(this) >> 0x8;
u8 tmp0 = (current.angle.z >> 8) & 0xff;
u8 prm1 = (fopAcM_GetParam(this) & 0xff00) >> 8;
u8 tmp0 = (current.angle.z & 0xff00) >> 8;
mTagNo = current.angle.z;
field_0x6a1 = 1;
if ((current.angle.x & 3) != 0) {
@ -3424,7 +3421,7 @@ int daE_YM_c::create() {
field_0x6cb = 1;
}
field_0x6a3 = (current.angle.x >> 8) & 0xff;
field_0x6a3 = (current.angle.x & 0xff00) >> 8;
if (mSwitchBit != 0xFF && dComIfGs_isSwitch(mSwitchBit, fopAcM_GetRoomNo(this))) {
#ifdef DEBUG
@ -3448,10 +3445,9 @@ int daE_YM_c::create() {
}
if (phase == cPhs_COMPLEATE_e) {
current.angle.z = 0;
current.angle.x = 0;
shape_angle.z = 0;
shape_angle.x = 0;
OS_REPORT("E_YM PARAM %x %x %x \n", fopAcM_GetParam(this), current.angle.z, current.angle.x);
current.angle.x = current.angle.z = 0;
shape_angle.x = shape_angle.z = 0;
if (!fopAcM_entrySolidHeap(this, useHeapInit, 0x28B0)) {
return cPhs_ERROR_e;
@ -3469,12 +3465,11 @@ int daE_YM_c::create() {
fopAcM_SetMin(this, -200.0f, -100.0f, -200.0f);
fopAcM_SetMax(this, 200.0f, 100.0f, 200.0f);
mAcch.Set(&current.pos, &old.pos, this, 1, &mAcchCir, &speed, NULL, NULL);
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
fopAcM_GetSpeed_p(this), NULL, NULL);
mAcch.OnLineCheck();
mAcchCir.SetWall(30.0f, 60.0f);
health = 10;
field_0x560 = 10;
field_0x560 = health = 10;
mStts.Init(100, 0, this);
mSphCc.Set(E_YM_n::cc_sph_src);

View File

@ -5188,11 +5188,6 @@ void daNpcF_c::setAttnPos() {
/* empty function */
}
/* 80155BBC-80155BC0 1504FC 0004+00 2/0 0/0 0/0 .text adjustShapeAngle__8daNpcF_cFv */
void daNpcF_c::adjustShapeAngle() {
/* empty function */
}
/* 80155BC0-80155BC8 150500 0008+00 2/0 0/0 0/0 .text main__8daNpcF_cFv */
BOOL daNpcF_c::main() {
return true;

View File

@ -227,13 +227,7 @@ extern "C" void __register_global_object();
// Declarations:
//
// fake data / lazy solution to get matches. fix later
static char* tmp[5] = {};
/* 80962418-80962424 000000 000C+00 3/3 0/0 0/0 .data cNullVec__6Z2Calc */
SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
UNK_REL_DATA;
/* 80962438-80962534 000020 00FC+00 1/2 0/0 0/0 .data l_bckGetParamList */
static daNpc_GetParam2 l_bckGetParamList[21] = {
@ -260,6 +254,8 @@ static daNpc_GetParam2 l_bckGetParamList[21] = {
{19, 0, 0},
};
static daNpcAshB_Param_c l_HIO;
/* 80962534-80962564 00011C 0030+00 1/1 0/0 0/0 .data l_btpGetParamList */
static daNpc_GetParam2 l_btpGetParamList[4] = {
{38,2,0},
@ -298,7 +294,7 @@ daNpcAshB_c::EventFn daNpcAshB_c::mEvtSeqList[2] = {
};
/* 8095DE4C-8095DFD0 0000EC 0184+00 1/1 0/0 0/0 .text __ct__11daNpcAshB_cFv */
daNpcAshB_c::daNpcAshB_c() {
daNpcAshB_c::daNpcAshB_c() : daNpcF_c() {
// NONMATCHING
}
@ -463,7 +459,7 @@ int daNpcAshB_c::Draw() {
* ctrlJoint__11daNpcAshB_cFP8J3DJointP8J3DModel */
bool daNpcAshB_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
int jointNo = i_joint->getJntNo();
int lookatJoints[3] = {1, 3, 4};
int lookatJoints[3] = {1, 9, 10};
if (jointNo == 0) {
mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(1));
@ -570,40 +566,6 @@ inline void daNpcAshB_c::playExpression() {
}
}
bool daNpcAshB_c::step(s16 i_targetAngle, int param_2, f32 i_rate) {
if (mTurnMode == 0) {
if (param_2 != 0) {
if ((int)fabsf(cM_sht2d((s16)(i_targetAngle - mCurAngle.y))) > 40) {
setExpression(6, -1.0f);
setMotion(10, -1.0f, 0);
}
mTurnTargetAngle = i_targetAngle;
mTurnAmount = 0;
if (mCurAngle.y == mTurnTargetAngle) {
mTurnMode++;
}
current.angle.y = mCurAngle.y;
shape_angle.y = current.angle.y;
mTurnMode++;
}
} else if (mTurnMode == 1) {
if (turn(mTurnTargetAngle, i_rate, 0)) {
shape_angle.y = current.angle.y;
mCurAngle.y = current.angle.y;
mOldAngle.y = current.angle.y;
mTurnMode++;
} else {
shape_angle.y = current.angle.y;
mCurAngle.y = current.angle.y;
}
}
return mTurnMode > 1;
}
/* 8095EC00-8095EE00 000EA0 0200+00 2/0 0/0 0/0 .text setExpressionAnm__11daNpcAshB_cFib
*/
bool daNpcAshB_c::setExpressionAnm(int i_idx, bool i_modify) {
@ -689,14 +651,12 @@ bool daNpcAshB_c::setExpressionBtp(int i_idx) {
/* 8095EEE0-8095F0A4 001180 01C4+00 1/0 0/0 0/0 .text setMotionAnm__11daNpcAshB_cFif */
// NONMATCHING regalloc
bool daNpcAshB_c::setMotionAnm(int i_idx, f32 i_morf) {
int iVar4;
int iVar5;
if (i_idx < 7 || i_idx >= 21) {
return;
}
iVar5 = 0;
int iVar5 = 0;
switch (i_idx) {
case 0x10:
iVar5 = 1;
@ -713,16 +673,18 @@ bool daNpcAshB_c::setMotionAnm(int i_idx, f32 i_morf) {
l_bckGetParamList[i_idx].fileIdx);
J3DAnmTextureSRTKey* btkAnm = getTexSRTKeyAnmP(l_arcNames[l_btkGetParamList[iVar5].arcIdx],
l_btkGetParamList[iVar5].fileIdx);
iVar5 = l_bckGetParamList[i_idx].attr;
iVar4 = l_btkGetParamList[i_idx].attr;
int oiVar5 = l_bckGetParamList[i_idx].attr;
int iVar4 = l_btkGetParamList[iVar5].attr;
mAnmFlags &= 0xffffffc0;
if (i_idx == 12) {
setExpressionBtp(1);
bool unused_bool = setExpressionBtp(1);
(void) unused_bool;
}
if (morfAnm && setMcaMorfAnm(morfAnm,1.0f,i_morf,iVar5,0,-1)) {
if (morfAnm && setMcaMorfAnm(morfAnm,1.0f,i_morf,oiVar5,0,-1)) {
mAnmFlags |= 9;
mMotionLoops = 0;
}
@ -783,6 +745,41 @@ bool daNpcAshB_c::setAction(daNpcAshB_c::ActionFn i_actionFn) {
return true;
}
bool daNpcAshB_c::step(s16 i_targetAngle, int param_2, f32 i_rate) {
if (mTurnMode == 0) {
if (param_2 != 0) {
s16 diff = i_targetAngle - mCurAngle.y;
if ((int)fabsf(cM_sht2d(diff)) > 40) {
setExpression(6, -1.0f);
setMotion(10, -1.0f, 0);
}
}
mTurnTargetAngle = i_targetAngle;
mTurnAmount = 0;
if (mCurAngle.y == mTurnTargetAngle) {
mTurnMode++;
}
current.angle.y = mCurAngle.y;
shape_angle.y = current.angle.y;
mTurnMode++;
} else if (mTurnMode == 1) {
if (turn(mTurnTargetAngle, i_rate, 0)) {
shape_angle.y = current.angle.y;
mCurAngle.y = current.angle.y;
mOldAngle.y = current.angle.y;
mTurnMode++;
} else {
shape_angle.y = current.angle.y;
mCurAngle.y = current.angle.y;
}
}
return mTurnMode > 1;
}
/* 8095F2C4-8095FC70 001564 09AC+00 4/0 0/0 0/0 .text wait__11daNpcAshB_cFPv */
// NONMATCHING - float literals, regalloc, wrong variable order loads. the shitty trifecta
bool daNpcAshB_c::wait(void* param_0) {
@ -832,13 +829,8 @@ bool daNpcAshB_c::wait(void* param_0) {
} else {
setLookMode(LOOK_NONE);
// loading these in the other order results in correct order load, wrong registers
// loading it in this order results in wrong order load, correct registers
s16 home_angle = home.angle.y;
s16 cur_angle = mCurAngle.y;
if (cur_angle != home_angle) {
if (step(mCurAngle.y,1,15.0f)) {
if (home.angle.y != mCurAngle.y) {
if (step(home.angle.y,1,15.0f)) {
setExpression(EXPR_EXPLAIN_B, -1.0f);
setMotion(MOT_WAIT_A, -1.0f, false);
mTurnMode = 0;
@ -863,7 +855,8 @@ bool daNpcAshB_c::wait(void* param_0) {
if (!dComIfGp_evmng_ChkPresentEnd()) {
return true;
} else {
if (dComIfGp_event_getPreItemNo() == 0x91) {
u8 preitemno = dComIfGp_event_getPreItemNo();
if (preitemno == fpcNm_ITEM_ASHS_SCRIBBLING) {
mFlowID = 504;
setAction(&wait);
} else {
@ -878,7 +871,8 @@ bool daNpcAshB_c::wait(void* param_0) {
setAction(&wait);
}
} else {
if (dComIfGp_getEventManager().getMyStaffId(l_myName, NULL, 0) != -1) {
int mystaffid = dComIfGp_getEventManager().getMyStaffId(l_myName, NULL, 0);
if (mystaffid != -1) {
setAction(&wait);
}
}
@ -897,6 +891,8 @@ bool daNpcAshB_c::wait(void* param_0) {
break;
case 3:
break;
default:
JUT_ASSERT(0x579, 0);
}
return true;
@ -1006,8 +1002,8 @@ bool daNpcAshB_c::talk(void* param_0) {
} else {
s16 angle = fopAcM_searchPlayerAngleY(this);
if (step(angle,1,15.0)) {
setMotion(0,0.0f,false);
if (step(angle, 1, 15.0f)) {
setMotion(0, -1.0f, false);
mTurnMode = 0;
}
}
@ -1219,39 +1215,48 @@ BOOL daNpcAshB_c::main() {
void daNpcAshB_c::playMotion() {
daNpcF_anmPlayData dat0 = {7, daNpcAshB_Param_c::m.mMorfFrames, 0};
daNpcF_anmPlayData* pDat0[1] = {&dat0};
daNpcF_anmPlayData dat1 = {8, daNpcAshB_Param_c::m.mMorfFrames, 0};
daNpcF_anmPlayData* pDat1[1] = {&dat1};
daNpcF_anmPlayData dat2 = {0xc, daNpcAshB_Param_c::m.mMorfFrames, 1};
daNpcF_anmPlayData* pDat2[1] = {&dat2};
daNpcF_anmPlayData dat3a = {0xd, daNpcAshB_Param_c::m.mMorfFrames, 1};
daNpcF_anmPlayData dat3b = {8, daNpcAshB_Param_c::m.mMorfFrames, 0};
daNpcF_anmPlayData dat2a = {0xC, daNpcAshB_Param_c::m.mMorfFrames, 1};
daNpcF_anmPlayData dat2b = {0xD, 0.0f, 1};
daNpcF_anmPlayData dat2c = {8, 0.0f, 0};
daNpcF_anmPlayData* pDat2[3] = {&dat2a, &dat2b, &dat2c};
daNpcF_anmPlayData dat3a = {0xE, daNpcAshB_Param_c::m.mMorfFrames, 1};
daNpcF_anmPlayData dat3b = {8, 0.0f, 0};
daNpcF_anmPlayData* pDat3[2] = {&dat3a, &dat3b};
daNpcF_anmPlayData dat4a = {0xe, daNpcAshB_Param_c::m.mMorfFrames, 1};
daNpcF_anmPlayData dat4b = {8, daNpcAshB_Param_c::m.mMorfFrames, 0};
daNpcF_anmPlayData dat4a = {0xF, daNpcAshB_Param_c::m.mMorfFrames, 1};
daNpcF_anmPlayData dat4b = {8, 0.0f, 0};
daNpcF_anmPlayData* pDat4[2] = {&dat4a, &dat4b};
daNpcF_anmPlayData dat5a = {0xf, daNpcAshB_Param_c::m.mMorfFrames, 1};
daNpcF_anmPlayData dat5b = {8, daNpcAshB_Param_c::m.mMorfFrames, 0};
daNpcF_anmPlayData dat5a = {0x10, daNpcAshB_Param_c::m.mMorfFrames, 1};
daNpcF_anmPlayData dat5b = {8, 0.0f, 0};
daNpcF_anmPlayData* pDat5[2] = {&dat5a, &dat5b};
daNpcF_anmPlayData dat6a = {16, daNpcAshB_Param_c::m.mMorfFrames, 1};
daNpcF_anmPlayData dat6b = {0x11, daNpcAshB_Param_c::m.mMorfFrames, 0};
daNpcF_anmPlayData dat6a = {0x11, daNpcAshB_Param_c::m.mMorfFrames, 1};
daNpcF_anmPlayData dat6b = {8, 0.0f, 0};
daNpcF_anmPlayData* pDat6[2] = {&dat6a, &dat6b};
daNpcF_anmPlayData dat7 = {8, daNpcAshB_Param_c::m.mMorfFrames, 1};
daNpcF_anmPlayData* pDat7[1] = {&dat7};
daNpcF_anmPlayData dat8 = {0x12, daNpcAshB_Param_c::m.mMorfFrames, 0};
daNpcF_anmPlayData dat7a = {0x12, daNpcAshB_Param_c::m.mMorfFrames, 1};
daNpcF_anmPlayData dat7b = {0x13, 0.0f, 0};
daNpcF_anmPlayData* pDat7[2] = {&dat7a, &dat7b};
daNpcF_anmPlayData dat8 = {0x13, daNpcAshB_Param_c::m.mMorfFrames, 0};
daNpcF_anmPlayData* pDat8[1] = {&dat8};
daNpcF_anmPlayData dat9 = {0x13, daNpcAshB_Param_c::m.mMorfFrames, 0};
daNpcF_anmPlayData* pDat9[1] = {&dat9};
daNpcF_anmPlayData dat10 = {0x13, daNpcAshB_Param_c::m.mMorfFrames, 1};
daNpcF_anmPlayData* pDat10[1] = {&dat10};
daNpcF_anmPlayData dat11 = {0x14, daNpcAshB_Param_c::m.mMorfFrames, 1};
daNpcF_anmPlayData* pDat11[1] = {&dat11};
// daNpcF_anmPlayData dat12 = {0x08, daNpcAshB_Param_c::m.mMorfFrames, 0};
// daNpcF_anmPlayData* pDat12[1] = {&dat12};
// daNpcF_anmPlayData dat13 = {0xa0, daNpcAshB_Param_c::m.mMorfFrames, 1};
// daNpcF_anmPlayData* pDat13[1] = {&dat13};
// daNpcF_anmPlayData dat14 = {0xb0, daNpcAshB_Param_c::m.mMorfFrames, 1};
// daNpcF_anmPlayData* pDat14[1] = {&dat14};
daNpcF_anmPlayData** ppDat[15] = {
daNpcF_anmPlayData dat9a = {0x14, daNpcAshB_Param_c::m.mMorfFrames, 1};
daNpcF_anmPlayData dat9b = {8, 0.0f, 0};
daNpcF_anmPlayData* pDat9[2] = {&dat9a, &dat9b};
daNpcF_anmPlayData dat10 = {0xA, 4.0f, 1};
daNpcF_anmPlayData* pDat10[2] = {&dat10, NULL};
daNpcF_anmPlayData dat11 = {0xB, 4.0f, 1};
daNpcF_anmPlayData* pDat11[2] = {&dat11, NULL};
daNpcF_anmPlayData** ppDat[12] = {
pDat0,
pDat1,
pDat2,
@ -1264,9 +1269,6 @@ void daNpcAshB_c::playMotion() {
pDat9,
pDat10,
pDat11,
// pDat12,
// pDat13,
// pDat14
};
if (mMotion >= 0 && mMotion < 12) {
playMotionAnm(ppDat);
@ -1277,7 +1279,8 @@ void daNpcAshB_c::playMotion() {
// NONMATCHING inlining issues
BOOL daNpcAshB_c::ctrlBtk() {
if (mpMatAnm != NULL) {
J3DAnmTextureSRTKey* btkAnm = getTexSRTKeyAnmP(l_arcNames[l_btkGetParamList[0].arcIdx],l_btkGetParamList[0].fileIdx);
J3DAnmTextureSRTKey* btkAnm = NULL;
btkAnm = getTexSRTKeyAnmP(l_arcNames[l_btkGetParamList[0].arcIdx],l_btkGetParamList[0].fileIdx);
if (btkAnm == mBtkAnm.getBtkAnm()) {
mpMatAnm->setNowOffsetX(cM_ssin(mEyeAngle.y) * 0.2f * -1.0f);
@ -1286,8 +1289,8 @@ BOOL daNpcAshB_c::ctrlBtk() {
return true;
}
mpMatAnm->offEyeMoveFlag();
return false;
}
}
return false;
}
/* 80961264-80961574 003504 0310+00 1/0 0/0 0/0 .text setAttnPos__11daNpcAshB_cFv */
@ -1368,8 +1371,8 @@ void daNpcAshB_c::lookat() {
if (mLookMode != LOOK_PLAYER_TALK) {
break;
}
body_down_angle = 0.0f;
body_up_angle = 1.0f;
body_down_angle = -80.0f;
body_up_angle = 80.0f;
break;
case LOOK_ACTOR:
actor = daPy_getPlayerActorClass();

View File

@ -13,361 +13,12 @@
#include "Z2AudioLib/Z2Instances.h"
#include "dol2asm.h"
//
// Forward References:
//
extern "C" void __dt__13daNpc_Hanjo_cFv();
extern "C" void create__13daNpc_Hanjo_cFv();
extern "C" void CreateHeap__13daNpc_Hanjo_cFv();
extern "C" void __dt__15J3DTevKColorAnmFv();
extern "C" void __ct__15J3DTevKColorAnmFv();
extern "C" void __dt__14J3DTevColorAnmFv();
extern "C" void __ct__14J3DTevColorAnmFv();
extern "C" void __dt__11J3DTexNoAnmFv();
extern "C" void __ct__11J3DTexNoAnmFv();
extern "C" void __dt__12J3DTexMtxAnmFv();
extern "C" void __ct__12J3DTexMtxAnmFv();
extern "C" void __dt__14J3DMatColorAnmFv();
extern "C" void __ct__14J3DMatColorAnmFv();
extern "C" void Delete__13daNpc_Hanjo_cFv();
extern "C" void Execute__13daNpc_Hanjo_cFv();
extern "C" void Draw__13daNpc_Hanjo_cFv();
extern "C" void createHeapCallBack__13daNpc_Hanjo_cFP10fopAc_ac_c();
extern "C" void ctrlJointCallBack__13daNpc_Hanjo_cFP8J3DJointi();
extern "C" void getType__13daNpc_Hanjo_cFv();
extern "C" void isDelete__13daNpc_Hanjo_cFv();
extern "C" void reset__13daNpc_Hanjo_cFv();
extern "C" void afterJntAnm__13daNpc_Hanjo_cFi();
extern "C" void setParam__13daNpc_Hanjo_cFv();
extern "C" void checkChangeEvt__13daNpc_Hanjo_cFv();
extern "C" void setAfterTalkMotion__13daNpc_Hanjo_cFv();
extern "C" void srchActors__13daNpc_Hanjo_cFv();
extern "C" void evtTalk__13daNpc_Hanjo_cFv();
extern "C" void evtCutProc__13daNpc_Hanjo_cFv();
extern "C" void action__13daNpc_Hanjo_cFv();
extern "C" void beforeMove__13daNpc_Hanjo_cFv();
extern "C" void afterMoved__13daNpc_Hanjo_cFv();
extern "C" void setAttnPos__13daNpc_Hanjo_cFv();
extern "C" void setCollision__13daNpc_Hanjo_cFv();
extern "C" bool drawDbgInfo__13daNpc_Hanjo_cFv();
extern "C" void drawOtherMdl__13daNpc_Hanjo_cFv();
extern "C" void selectAction__13daNpc_Hanjo_cFv();
extern "C" void chkAction__13daNpc_Hanjo_cFM13daNpc_Hanjo_cFPCvPvPv_i();
extern "C" void setAction__13daNpc_Hanjo_cFM13daNpc_Hanjo_cFPCvPvPv_i();
extern "C" void initShoot__13daNpc_Hanjo_cFi();
extern "C" void shoot__13daNpc_Hanjo_cFi();
extern "C" void initDive__13daNpc_Hanjo_cFv();
extern "C" void dive__13daNpc_Hanjo_cFv();
extern "C" void lookround__13daNpc_Hanjo_cFs();
extern "C" void commandToHawk__13daNpc_Hanjo_cFv();
extern "C" void cutConversationAboutSaru__13daNpc_Hanjo_cFi();
extern "C" void cutConversation__13daNpc_Hanjo_cFi();
extern "C" void cutPursuitBee__13daNpc_Hanjo_cFi();
extern "C" void cutAppearHawker__13daNpc_Hanjo_cFi();
extern "C" void cutDive__13daNpc_Hanjo_cFi();
extern "C" void wait__13daNpc_Hanjo_cFPv();
extern "C" void throwStone__13daNpc_Hanjo_cFPv();
extern "C" void takayose__13daNpc_Hanjo_cFPv();
extern "C" void talk__13daNpc_Hanjo_cFPv();
extern "C" static void daNpc_Hanjo_Create__FPv();
extern "C" static void daNpc_Hanjo_Delete__FPv();
extern "C" static void daNpc_Hanjo_Execute__FPv();
extern "C" static void daNpc_Hanjo_Draw__FPv();
extern "C" static bool daNpc_Hanjo_IsDelete__FPv();
extern "C" void calc__11J3DTexNoAnmCFPUs();
extern "C" void __dt__10cCcD_GSttsFv();
extern "C" void __dt__8daNpcT_cFv();
extern "C" void __dt__4cXyzFv();
extern "C" void __dt__5csXyzFv();
extern "C" void __dt__18daNpcT_ActorMngr_cFv();
extern "C" void __dt__13daNpcT_Path_cFv();
extern "C" void __ct__18daNpcT_ActorMngr_cFv();
extern "C" void __dt__8cM3dGCylFv();
extern "C" void __dt__8cM3dGAabFv();
extern "C" void
__ct__8daNpcT_cFPC26daNpcT_faceMotionAnmData_cPC22daNpcT_motionAnmData_cPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPC16daNpcT_evtData_cPPc();
extern "C" void __ct__5csXyzFv();
extern "C" void __dt__15daNpcT_JntAnm_cFv();
extern "C" void __ct__4cXyzFv();
extern "C" void __dt__22daNpcT_MotionSeqMngr_cFv();
extern "C" void __dt__12dBgS_AcchCirFv();
extern "C" void __dt__10dCcD_GSttsFv();
extern "C" void __dt__12dBgS_ObjAcchFv();
extern "C" void __dt__12J3DFrameCtrlFv();
extern "C" void setEyeAngleY__15daNpcT_JntAnm_cF4cXyzsifs();
extern "C" void setEyeAngleX__15daNpcT_JntAnm_cF4cXyzfs();
extern "C" void ctrlSubFaceMotion__8daNpcT_cFi();
extern "C" bool getEyeballLMaterialNo__8daNpcT_cFv();
extern "C" bool getEyeballRMaterialNo__8daNpcT_cFv();
extern "C" bool evtEndProc__8daNpcT_cFv();
extern "C" bool chkXYItems__8daNpcT_cFv();
extern "C" void decTmr__8daNpcT_cFv();
extern "C" void drawGhost__8daNpcT_cFv();
extern "C" bool afterSetFaceMotionAnm__8daNpcT_cFiifi();
extern "C" bool afterSetMotionAnm__8daNpcT_cFiifi();
extern "C" void getFaceMotionAnm__8daNpcT_cF26daNpcT_faceMotionAnmData_c();
extern "C" void getMotionAnm__8daNpcT_cF22daNpcT_motionAnmData_c();
extern "C" void changeAnm__8daNpcT_cFPiPi();
extern "C" void changeBck__8daNpcT_cFPiPi();
extern "C" void changeBtp__8daNpcT_cFPiPi();
extern "C" void changeBtk__8daNpcT_cFPiPi();
extern "C" void func_809FFE6C(void* _this, int*);
extern "C" void func_809FFE88(void* _this, f32, f32);
extern "C" void __sinit_d_a_npc_hanjo_cpp();
extern "C" void __dt__18daNpc_HanjoStone_cFv();
extern "C" void
__ct__13daNpc_Hanjo_cFPC26daNpcT_faceMotionAnmData_cPC22daNpcT_motionAnmData_cPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPCQ222daNpcT_MotionSeqMngr_c18sequenceStepData_ciPC16daNpcT_evtData_cPPc();
extern "C" void __ct__18daNpc_HanjoStone_cFv();
extern "C" void __dt__8cM3dGSphFv();
extern "C" s32 getEyeballMaterialNo__13daNpc_Hanjo_cFv();
extern "C" void getPos__18daNpc_HanjoStone_cFv();
extern "C" void getOld__18daNpc_HanjoStone_cFv();
extern "C" void posMoveF__18daNpc_HanjoStone_cFP10fopAc_ac_c();
extern "C" void setPos__18daNpc_HanjoStone_cF4cXyz();
extern "C" s32 getHeadJointNo__13daNpc_Hanjo_cFv();
extern "C" s32 getNeckJointNo__13daNpc_Hanjo_cFv();
extern "C" bool getBackboneJointNo__13daNpc_Hanjo_cFv();
extern "C" void setAngle__18daNpc_HanjoStone_cF5csXyz();
extern "C" void checkChangeJoint__13daNpc_Hanjo_cFi();
extern "C" void checkRemoveJoint__13daNpc_Hanjo_cFi();
extern "C" s32 getFootLJointNo__13daNpc_Hanjo_cFv();
extern "C" s32 getFootRJointNo__13daNpc_Hanjo_cFv();
extern "C" void __dt__19daNpc_Hanjo_Param_cFv();
extern "C" static void func_80A0057C();
extern "C" static void func_80A00584();
extern "C" void chkPointInArea__15daTag_EvtArea_cF4cXyz();
extern "C" u8 const m__19daNpc_Hanjo_Param_c[180];
extern "C" u8 const mStoneCcDObjInfo__13daNpc_Hanjo_c[48];
extern "C" extern char const* const d_a_npc_hanjo__stringBase0;
extern "C" void* mCutNameList__13daNpc_Hanjo_c[6];
extern "C" u8 mCutList__13daNpc_Hanjo_c[72];
extern "C" u8 mStoneCcDSph__13daNpc_Hanjo_c[64];
//
// External References:
//
extern "C" void mDoMtx_XYZrotM__FPA4_fsss();
extern "C" void mDoMtx_YrotS__FPA4_fs();
extern "C" void mDoMtx_YrotM__FPA4_fs();
extern "C" void mDoMtx_ZrotM__FPA4_fs();
extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
extern "C" void transM__14mDoMtx_stack_cFfff();
extern "C" void scaleM__14mDoMtx_stack_cFfff();
extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
extern "C" void
__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl();
extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv();
extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
extern "C" void __ct__10fopAc_ac_cFv();
extern "C" void __dt__10fopAc_ac_cFv();
extern "C" void fopAc_IsActor__FPv();
extern "C" void fopAcM_delete__FP10fopAc_ac_c();
extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData();
extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c();
extern "C" void fopAcM_getWaterY__FPC4cXyzPf();
extern "C" void dComIfGs_wolfeye_effect_check__Fv();
extern "C" void isCollect__20dSv_player_collect_cCFiUc();
extern "C" void onSwitch__12dSv_memBit_cFi();
extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
extern "C" void reset__14dEvt_control_cFv();
extern "C" void setSkipZev__14dEvt_control_cFPvPc();
extern "C" void onSkipFade__14dEvt_control_cFv();
extern "C" void setPt2__14dEvt_control_cFPv();
extern "C" void setPtT__14dEvt_control_cFPv();
extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci();
extern "C" void getIsAddvance__16dEvent_manager_cFi();
extern "C" void getMyActIdx__16dEvent_manager_cFiPCPCciii();
extern "C" void getMySubstanceP__16dEvent_manager_cFiPCci();
extern "C" void cutEnd__16dEvent_manager_cFi();
extern "C" void setGoal__16dEvent_manager_cFP4cXyz();
extern "C" void getRunEventName__16dEvent_manager_cFv();
extern "C" void ChkPresentEnd__16dEvent_manager_cFv();
extern "C" void
set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
extern "C" void init__7dPaPo_cFP9dBgS_Acchff();
extern "C" void StartShock__12dVibration_cFii4cXyz();
extern "C" void LineCross__4cBgSFP11cBgS_LinChk();
extern "C" void GroundCross__4cBgSFP11cBgS_GndChk();
extern "C" void __ct__12dBgS_AcchCirFv();
extern "C" void SetWallR__12dBgS_AcchCirFf();
extern "C" void __dt__9dBgS_AcchFv();
extern "C" void __ct__9dBgS_AcchFv();
extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz();
extern "C" void CrrPos__9dBgS_AcchFR4dBgS();
extern "C" void __ct__11dBgS_GndChkFv();
extern "C" void __dt__11dBgS_GndChkFv();
extern "C" void __ct__11dBgS_LinChkFv();
extern "C" void __dt__11dBgS_LinChkFv();
extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c();
extern "C" void SetObj__16dBgS_PolyPassChkFv();
extern "C" void GetAc__22dCcD_GAtTgCoCommonBaseFv();
extern "C" void __ct__10dCcD_GSttsFv();
extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
extern "C" void __ct__12dCcD_GObjInfFv();
extern "C" void __dt__12dCcD_GObjInfFv();
extern "C" void GetTgHitObj__12dCcD_GObjInfFv();
extern "C" void ChkCoHit__12dCcD_GObjInfFv();
extern "C" void GetCoHitObj__12dCcD_GObjInfFv();
extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl();
extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph();
extern "C" void initialize__18daNpcT_ActorMngr_cFv();
extern "C" void entry__18daNpcT_ActorMngr_cFP10fopAc_ac_c();
extern "C" void remove__18daNpcT_ActorMngr_cFv();
extern "C" void getActorP__18daNpcT_ActorMngr_cFv();
extern "C" void initialize__15daNpcT_MatAnm_cFv();
extern "C" void initialize__22daNpcT_MotionSeqMngr_cFv();
extern "C" void checkEndSequence__22daNpcT_MotionSeqMngr_cFv();
extern "C" void initialize__13daNpcT_Path_cFv();
extern "C" void setPathInfo__13daNpcT_Path_cFUcScUc();
extern "C" void getDstPosH__13daNpcT_Path_cF4cXyzP4cXyzii();
extern "C" void initialize__15daNpcT_JntAnm_cFv();
extern "C" void setParam__15daNpcT_JntAnm_cFP10fopAc_ac_cP8J3DModelP4cXyziiiffffffffffP4cXyz();
extern "C" void calcJntRad__15daNpcT_JntAnm_cFfff();
extern "C" void setParam__19daNpcT_DmgStagger_cFP10fopAc_ac_cP10fopAc_ac_cs();
extern "C" void calc__19daNpcT_DmgStagger_cFi();
extern "C" void tgHitCallBack__8daNpcT_cFP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf();
extern "C" void getTrnsfrmKeyAnmP__8daNpcT_cFPCci();
extern "C" void loadRes__8daNpcT_cFPCScPPCc();
extern "C" void deleteRes__8daNpcT_cFPCScPPCc();
extern "C" void execute__8daNpcT_cFv();
extern "C" void draw__8daNpcT_cFiifP11_GXColorS10fiii();
extern "C" void setEnvTevColor__8daNpcT_cFv();
extern "C" void setRoomNo__8daNpcT_cFv();
extern "C" void ctrlBtk__8daNpcT_cFv();
extern "C" void setMtx__8daNpcT_cFv();
extern "C" void ctrlJoint__8daNpcT_cFP8J3DJointP8J3DModel();
extern "C" void evtProc__8daNpcT_cFv();
extern "C" void setFootPos__8daNpcT_cFv();
extern "C" void setFootPrtcl__8daNpcT_cFP4cXyzff();
extern "C" bool checkCullDraw__8daNpcT_cFv();
extern "C" void twilight__8daNpcT_cFv();
extern "C" void evtOrder__8daNpcT_cFv();
extern "C" void evtChange__8daNpcT_cFv();
extern "C" void clrParam__8daNpcT_cFv();
extern "C" void setFaceMotionAnm__8daNpcT_cFib();
extern "C" void setMotionAnm__8daNpcT_cFifi();
extern "C" void setPos__8daNpcT_cF4cXyz();
extern "C" void setAngle__8daNpcT_cF5csXyz();
extern "C" void setAngle__8daNpcT_cFs();
extern "C" void hitChk__8daNpcT_cFP12dCcD_GObjInfUl();
extern "C" void setDamage__8daNpcT_cFiii();
extern "C" void chkActorInSight__8daNpcT_cFP10fopAc_ac_cfs();
extern "C" void chkPointInArea__8daNpcT_cF4cXyz4cXyzfffs();
extern "C" void srchPlayerActor__8daNpcT_cFv();
extern "C" void step__8daNpcT_cFsiiii();
extern "C" void initTalk__8daNpcT_cFiPP10fopAc_ac_c();
extern "C" void talkProc__8daNpcT_cFPiiPP10fopAc_ac_ci();
extern "C" void getNearestActorP__8daNpcT_cFs();
extern "C" void getEvtAreaTagP__8daNpcT_cFii();
extern "C" void daNpcT_getDistTableIdx__Fii();
extern "C" void daNpcT_onEvtBit__FUl();
extern "C" void daNpcT_chkEvtBit__FUl();
extern "C" void daNpcT_onTmpBit__FUl();
extern "C" void daNpcT_offTmpBit__FUl();
extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
extern "C" void dKy_set_actcol_ratio__Ff();
extern "C" void dKy_set_bgcol_ratio__Ff();
extern "C" void dKy_set_fogcol_ratio__Ff();
extern "C" void __ct__10dMsgFlow_cFv();
extern "C" void __dt__10dMsgFlow_cFv();
extern "C" void remove__10dMsgFlow_cFv();
extern "C" void GetAc__8cCcD_ObjFv();
extern "C" void Set__4cCcSFP8cCcD_Obj();
extern "C" void __pl__4cXyzCFRC3Vec();
extern "C" void __mi__4cXyzCFRC3Vec();
extern "C" void cM_atan2s__Fff();
extern "C" void cM_rnd__Fv();
extern "C" void cM_rndF__Ff();
extern "C" void __ct__11cBgS_GndChkFv();
extern "C" void __dt__11cBgS_GndChkFv();
extern "C" void SetPos__11cBgS_GndChkFPC4cXyz();
extern "C" void __dt__13cBgS_PolyInfoFv();
extern "C" void __dt__8cM3dGCirFv();
extern "C" void SetC__8cM3dGCylFRC4cXyz();
extern "C" void SetH__8cM3dGCylFf();
extern "C" void SetR__8cM3dGCylFf();
extern "C" void SetC__8cM3dGSphFRC4cXyz();
extern "C" void SetR__8cM3dGSphFf();
extern "C" void cLib_addCalc__FPfffff();
extern "C" void cLib_addCalcAngleS2__FPssss();
extern "C" void cLib_chaseF__FPfff();
extern "C" void cLib_targetAngleY__FPC3VecPC3Vec();
extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
extern "C" void __ct__10Z2CreatureFv();
extern "C" void __dt__10Z2CreatureFv();
extern "C" void init__10Z2CreatureFP3VecP3VecUcUc();
extern "C" void* __nw__FUl();
extern "C" void __dl__FPv();
extern "C" void init__12J3DFrameCtrlFs();
extern "C" void checkPass__12J3DFrameCtrlFf();
extern "C" void getTexNo__16J3DAnmTexPatternCFUsPUs();
extern "C" void initialize__14J3DMaterialAnmFv();
extern "C" void __destroy_arr();
extern "C" void __construct_array();
extern "C" void __ptmf_test();
extern "C" void __ptmf_cmpr();
extern "C" void __ptmf_scall();
extern "C" void _savegpr_22();
extern "C" void _savegpr_23();
extern "C" void _savegpr_24();
extern "C" void _savegpr_25();
extern "C" void _savegpr_26();
extern "C" void _savegpr_27();
extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_22();
extern "C" void _restgpr_23();
extern "C" void _restgpr_24();
extern "C" void _restgpr_25();
extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" extern u8 const __ptmf_null[12 + 4 /* padding */];
extern "C" extern void* __vt__8dCcD_Sph[36];
extern "C" extern void* __vt__8dCcD_Cyl[36];
extern "C" extern void* __vt__9dCcD_Stts[11];
extern "C" u8 mCcDCyl__8daNpcT_c[68];
extern "C" extern void* __vt__8daNpcT_c[49];
extern "C" extern void* __vt__15daNpcT_MatAnm_c[4 + 1 /* padding */];
extern "C" extern void* __vt__12cCcD_SphAttr[25];
extern "C" extern void* __vt__12cCcD_CylAttr[25];
extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
extern "C" extern void* __vt__9cCcD_Stts[8];
extern "C" extern void* __vt__14J3DMaterialAnm[4];
extern "C" u8 now__14mDoMtx_stack_c[48];
extern "C" u8 sincosTable___5JMath[65536];
extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
extern "C" void chkPointInArea__15daTag_EvtArea_cF4cXyz4cXyz();
extern "C" void __register_global_object();
//
// Declarations:
//
/* 80A00940-80A0094C 000000 000C+00 3/3 0/0 0/0 .data cNullVec__6Z2Calc */
SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 80A0094C-80A00960 00000C 0004+10 0/0 0/0 0/0 .data @1787 */
#pragma push
#pragma force_active on
SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
0x02000201,
/* padding */
0x40080000,
0x00000000,
0x3FE00000,
0x00000000,
};
#pragma pop
UNK_REL_DATA;
/* 80A00960-80A00980 000020 0020+00 1/1 0/0 0/0 .data l_bmdData */
static int l_bmdData[4][2] = {
@ -402,14 +53,6 @@ static char* l_resNameList[6] = {
"Sera",
};
/* ############################################################################################## */
/* 80A007F8-80A007F8 0001F8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80A008F0 = "CONVERSATION_ABOUT_SARU";
SECTION_DEAD static char const* const stringBase_80A00908 = "CONVERSATION";
#pragma pop
/* 80A009F0-80A009F4 0000B0 0003+01 1/0 0/0 0/0 .data l_loadResPtrn0 */
static s8 l_loadResPtrn0[3] = {
1,
@ -447,8 +90,6 @@ static s8* l_loadResPtrnList[5] = {
};
/* 80A00A1C-80A00B34 0000DC 0118+00 0/1 0/0 0/0 .data l_faceMotionAnmData */
#pragma push
#pragma force_active on
SECTION_DATA static daNpcT_faceMotionAnmData_c l_faceMotionAnmData[10] = {
{-1, 0, 0, 20, 2, 1, 1},
{7, 0, 1, 20, 2, 1, 1},
@ -461,7 +102,6 @@ SECTION_DATA static daNpcT_faceMotionAnmData_c l_faceMotionAnmData[10] = {
{9, 0, 2, 36, 0, 2, 0},
{ 11, 2, 2, 38, 2, 2, 0},
};
#pragma pop
/* 80A00B34-80A00DB8 0001F4 0284+00 1/2 0/0 0/0 .data l_motionAnmData */
SECTION_DATA static int l_motionAnmData[161] = {
@ -506,228 +146,22 @@ SECTION_DATA char* daNpc_Hanjo_c::mCutNameList[6] = {
"DIVE",
};
// /* 80A00F90-80A00F9C -00001 000C+00 0/1 0/0 0/0 .data @3854 */
// #pragma push
// #pragma force_active on
// SECTION_DATA static void* lit_3854[3] = {
// (void*)NULL,
// (void*)0xFFFFFFFF,
// (void*)cutConversationAboutSaru__13daNpc_Hanjo_cFi,
// };
// #pragma pop
// /* 80A00F9C-80A00FA8 -00001 000C+00 0/1 0/0 0/0 .data @3855 */
// #pragma push
// #pragma force_active on
// SECTION_DATA static void* lit_3855[3] = {
// (void*)NULL,
// (void*)0xFFFFFFFF,
// (void*)cutConversation__13daNpc_Hanjo_cFi,
// };
// #pragma pop
// /* 80A00FA8-80A00FB4 -00001 000C+00 0/1 0/0 0/0 .data @3856 */
// #pragma push
// #pragma force_active on
// SECTION_DATA static void* lit_3856[3] = {
// (void*)NULL,
// (void*)0xFFFFFFFF,
// (void*)cutPursuitBee__13daNpc_Hanjo_cFi,
// };
// #pragma pop
// /* 80A00FB4-80A00FC0 -00001 000C+00 0/1 0/0 0/0 .data @3857 */
// #pragma push
// #pragma force_active on
// SECTION_DATA static void* lit_3857[3] = {
// (void*)NULL,
// (void*)0xFFFFFFFF,
// (void*)cutAppearHawker__13daNpc_Hanjo_cFi,
// };
// #pragma pop
// /* 80A00FC0-80A00FCC -00001 000C+00 0/1 0/0 0/0 .data @3858 */
// #pragma push
// #pragma force_active on
// SECTION_DATA static void* lit_3858[3] = {
// (void*)NULL,
// (void*)0xFFFFFFFF,
// (void*)cutDive__13daNpc_Hanjo_cFi,
// };
// #pragma pop
/* 80A00FCC-80A01014 00068C 0048+00 1/2 0/0 0/0 .data mCutList__13daNpc_Hanjo_c */
daNpc_Hanjo_c::cutFunc daNpc_Hanjo_c::mCutList[6] = {
NULL,
&daNpc_Hanjo_c::cutConversationAboutSaru,
&daNpc_Hanjo_c::cutConversation,
&daNpc_Hanjo_c::cutPursuitBee,
&daNpc_Hanjo_c::cutAppearHawker,
&daNpc_Hanjo_c::cutDive,
NULL,
};
/* 80A01014-80A01054 0006D4 0040+00 0/1 0/0 0/0 .data mStoneCcDSph__13daNpc_Hanjo_c */
#pragma push
#pragma force_active on
SECTION_DATA u8 daNpc_Hanjo_c::mStoneCcDSph[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 daNpc_Hanjo_c::mStoneCcDSph = {
daNpc_Hanjo_c::mStoneCcDObjInfo, {}
};
#pragma pop
// /* 80A010F8-80A01104 0007B8 000C+00 2/2 0/0 0/0 .data __vt__11J3DTexNoAnm */
// SECTION_DATA extern void* __vt__11J3DTexNoAnm[3] = {
// (void*)NULL /* RTTI */,
// (void*)NULL,
// (void*)calc__11J3DTexNoAnmCFPUs,
// };
// /* 80A01104-80A01110 0007C4 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGSph */
// SECTION_DATA extern void* __vt__8cM3dGSph[3] = {
// (void*)NULL /* RTTI */,
// (void*)NULL,
// (void*)__dt__8cM3dGSphFv,
// };
// /* 80A01110-80A0111C 0007D0 000C+00 3/3 0/0 0/0 .data __vt__12J3DFrameCtrl */
// SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
// (void*)NULL /* RTTI */,
// (void*)NULL,
// (void*)__dt__12J3DFrameCtrlFv,
// };
// /* 80A0111C-80A01140 0007DC 0024+00 3/3 0/0 0/0 .data __vt__12dBgS_ObjAcch */
// SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = {
// (void*)NULL /* RTTI */,
// (void*)NULL,
// (void*)__dt__12dBgS_ObjAcchFv,
// (void*)NULL,
// (void*)NULL,
// (void*)func_80A00584,
// (void*)NULL,
// (void*)NULL,
// (void*)func_80A0057C,
// };
// /* 80A01140-80A0114C 000800 000C+00 2/2 0/0 0/0 .data __vt__12dBgS_AcchCir */
// SECTION_DATA extern void* __vt__12dBgS_AcchCir[3] = {
// (void*)NULL /* RTTI */,
// (void*)NULL,
// (void*)__dt__12dBgS_AcchCirFv,
// };
// /* 80A0114C-80A01158 00080C 000C+00 3/3 0/0 0/0 .data __vt__10cCcD_GStts */
// SECTION_DATA extern void* __vt__10cCcD_GStts[3] = {
// (void*)NULL /* RTTI */,
// (void*)NULL,
// (void*)__dt__10cCcD_GSttsFv,
// };
// /* 80A01158-80A01164 000818 000C+00 2/2 0/0 0/0 .data __vt__10dCcD_GStts */
// SECTION_DATA extern void* __vt__10dCcD_GStts[3] = {
// (void*)NULL /* RTTI */,
// (void*)NULL,
// (void*)__dt__10dCcD_GSttsFv,
// };
// /* 80A01164-80A01170 000824 000C+00 3/3 0/0 0/0 .data __vt__22daNpcT_MotionSeqMngr_c */
// SECTION_DATA extern void* __vt__22daNpcT_MotionSeqMngr_c[3] = {
// (void*)NULL /* RTTI */,
// (void*)NULL,
// (void*)__dt__22daNpcT_MotionSeqMngr_cFv,
// };
// /* 80A01170-80A0117C 000830 000C+00 5/5 0/0 0/0 .data __vt__18daNpcT_ActorMngr_c */
// SECTION_DATA extern void* __vt__18daNpcT_ActorMngr_c[3] = {
// (void*)NULL /* RTTI */,
// (void*)NULL,
// (void*)__dt__18daNpcT_ActorMngr_cFv,
// };
// /* 80A0117C-80A01188 00083C 000C+00 3/3 0/0 0/0 .data __vt__15daNpcT_JntAnm_c */
// SECTION_DATA extern void* __vt__15daNpcT_JntAnm_c[3] = {
// (void*)NULL /* RTTI */,
// (void*)NULL,
// (void*)__dt__15daNpcT_JntAnm_cFv,
// };
// /* 80A01188-80A01194 000848 000C+00 5/5 0/0 0/0 .data __vt__8cM3dGAab */
// SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
// (void*)NULL /* RTTI */,
// (void*)NULL,
// (void*)__dt__8cM3dGAabFv,
// };
// /* 80A01194-80A011A0 000854 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGCyl */
// SECTION_DATA extern void* __vt__8cM3dGCyl[3] = {
// (void*)NULL /* RTTI */,
// (void*)NULL,
// (void*)__dt__8cM3dGCylFv,
// };
// /* 80A011A0-80A011AC 000860 000C+00 3/3 0/0 0/0 .data __vt__13daNpcT_Path_c */
// SECTION_DATA extern void* __vt__13daNpcT_Path_c[3] = {
// (void*)NULL /* RTTI */,
// (void*)NULL,
// (void*)__dt__13daNpcT_Path_cFv,
// };
// /* 80A011AC-80A01270 00086C 00C4+00 2/2 0/0 0/0 .data __vt__13daNpc_Hanjo_c */
// SECTION_DATA extern void* __vt__13daNpc_Hanjo_c[49] = {
// (void*)NULL /* RTTI */,
// (void*)NULL,
// (void*)__dt__13daNpc_Hanjo_cFv,
// (void*)ctrlBtk__8daNpcT_cFv,
// (void*)ctrlSubFaceMotion__8daNpcT_cFi,
// (void*)checkChangeJoint__13daNpc_Hanjo_cFi,
// (void*)checkRemoveJoint__13daNpc_Hanjo_cFi,
// (void*)getBackboneJointNo__13daNpc_Hanjo_cFv,
// (void*)getNeckJointNo__13daNpc_Hanjo_cFv,
// (void*)getHeadJointNo__13daNpc_Hanjo_cFv,
// (void*)getFootLJointNo__13daNpc_Hanjo_cFv,
// (void*)getFootRJointNo__13daNpc_Hanjo_cFv,
// (void*)getEyeballLMaterialNo__8daNpcT_cFv,
// (void*)getEyeballRMaterialNo__8daNpcT_cFv,
// (void*)getEyeballMaterialNo__13daNpc_Hanjo_cFv,
// (void*)ctrlJoint__8daNpcT_cFP8J3DJointP8J3DModel,
// (void*)afterJntAnm__13daNpc_Hanjo_cFi,
// (void*)setParam__13daNpc_Hanjo_cFv,
// (void*)checkChangeEvt__13daNpc_Hanjo_cFv,
// (void*)evtTalk__13daNpc_Hanjo_cFv,
// (void*)evtEndProc__8daNpcT_cFv,
// (void*)evtCutProc__13daNpc_Hanjo_cFv,
// (void*)setAfterTalkMotion__13daNpc_Hanjo_cFv,
// (void*)evtProc__8daNpcT_cFv,
// (void*)action__13daNpc_Hanjo_cFv,
// (void*)beforeMove__13daNpc_Hanjo_cFv,
// (void*)afterMoved__13daNpc_Hanjo_cFv,
// (void*)setAttnPos__13daNpc_Hanjo_cFv,
// (void*)setFootPos__8daNpcT_cFv,
// (void*)setCollision__13daNpc_Hanjo_cFv,
// (void*)setFootPrtcl__8daNpcT_cFP4cXyzff,
// (void*)checkCullDraw__8daNpcT_cFv,
// (void*)twilight__8daNpcT_cFv,
// (void*)chkXYItems__8daNpcT_cFv,
// (void*)evtOrder__8daNpcT_cFv,
// (void*)decTmr__8daNpcT_cFv,
// (void*)clrParam__8daNpcT_cFv,
// (void*)drawDbgInfo__13daNpc_Hanjo_cFv,
// (void*)drawOtherMdl__13daNpc_Hanjo_cFv,
// (void*)drawGhost__8daNpcT_cFv,
// (void*)afterSetFaceMotionAnm__8daNpcT_cFiifi,
// (void*)afterSetMotionAnm__8daNpcT_cFiifi,
// (void*)getFaceMotionAnm__8daNpcT_cF26daNpcT_faceMotionAnmData_c,
// (void*)getMotionAnm__8daNpcT_cF22daNpcT_motionAnmData_c,
// (void*)changeAnm__8daNpcT_cFPiPi,
// (void*)changeBck__8daNpcT_cFPiPi,
// (void*)changeBtp__8daNpcT_cFPiPi,
// (void*)changeBtk__8daNpcT_cFPiPi,
// (void*)setMotionAnm__8daNpcT_cFifi,
// };
/* 809F908C-809F9278 0000EC 01EC+00 1/0 0/0 0/0 .text __dt__13daNpc_Hanjo_cFv */
daNpc_Hanjo_c::~daNpc_Hanjo_c() {
OS_REPORT("|%06d:%x|daNpc_Hanjo_c -> デストラクト\n", g_Counter.mCounter0, this);
@ -757,13 +191,9 @@ dCcD_SrcGObjInf const daNpc_Hanjo_c::mStoneCcDObjInfo = {
{{0}},
};
/* 80A006E4-80A006F8 0000E4 0014+00 0/1 0/0 0/0 .rodata heapSize$4058 */
static int const heapSize[5] = {
0x61B0, 0x41D0, 0x39D0, 0x39C0, 0,
};
/* 809F9278-809F9578 0002D8 0300+00 1/1 0/0 0/0 .text create__13daNpc_Hanjo_cFv */
int daNpc_Hanjo_c::create() {
static int const heapSize[5] = {0x61B0, 0x41D0, 0x39D0, 0x39C0, 0};
fopAcM_SetupActor2(this, daNpc_Hanjo_c, l_faceMotionAnmData,
(daNpcT_motionAnmData_c*)l_motionAnmData, l_faceMotionSequenceData, 4,
l_motionSequenceData, 4, l_evtList, l_resNameList);
@ -806,7 +236,7 @@ int daNpc_Hanjo_c::create() {
setRoomNo();
}
for (int i = 0; i < 4; i ++) {
mStones[i].getSphP()->Set(*(dCcD_SrcSph*)&mStoneCcDSph);
mStones[i].getSphP()->Set(mStoneCcDSph);
mStones[i].getSphP()->SetStts(&mCcStts);
}
mCreating = 1;
@ -816,18 +246,9 @@ int daNpc_Hanjo_c::create() {
return rv;
}
/* 80A00710-80A00718 000110 0008+00 0/1 0/0 0/0 .rodata bmdTypeList$4495 */
static int const bmdTypeList[2] = {
2, 3,
};
COMPILER_STRIP_GATE(0x80A00710, &bmdTypeList);
// /* 80A00718-80A0071C 000118 0004+00 1/9 0/0 0/0 .rodata @4593 */
// SECTION_RODATA static f32 const lit_4593 = 1.0f;
// COMPILER_STRIP_GATE(0x80A00718, &lit_4593);
/* 809F9578-809F997C 0005D8 0404+00 1/1 0/0 0/0 .text CreateHeap__13daNpc_Hanjo_cFv */
int daNpc_Hanjo_c::CreateHeap() {
static int const bmdTypeList[2] = {2, 3};
J3DModelData* modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(
l_resNameList[l_bmdData[0][1]], l_bmdData[0][0]));
if (modelData == NULL) {
@ -1279,104 +700,10 @@ void daNpc_Hanjo_c::afterMoved() {
}
}
/* 80A01288-80A0128C 000008 0001+03 1/1 0/0 0/0 .bss @1109 */
static u8 lit_1109[1 + 3 /* padding */];
/* 80A0128C-80A01290 00000C 0001+03 0/0 0/0 0/0 .bss @1107 */
#pragma push
#pragma force_active on
static u8 lit_1107[1 + 3 /* padding */];
#pragma pop
/* 80A01290-80A01294 000010 0001+03 0/0 0/0 0/0 .bss @1105 */
#pragma push
#pragma force_active on
static u8 lit_1105[1 + 3 /* padding */];
#pragma pop
/* 80A01294-80A01298 000014 0001+03 0/0 0/0 0/0 .bss @1104 */
#pragma push
#pragma force_active on
static u8 lit_1104[1 + 3 /* padding */];
#pragma pop
/* 80A01298-80A0129C 000018 0001+03 0/0 0/0 0/0 .bss @1099 */
#pragma push
#pragma force_active on
static u8 lit_1099[1 + 3 /* padding */];
#pragma pop
/* 80A0129C-80A012A0 00001C 0001+03 0/0 0/0 0/0 .bss @1097 */
#pragma push
#pragma force_active on
static u8 lit_1097[1 + 3 /* padding */];
#pragma pop
/* 80A012A0-80A012A4 000020 0001+03 0/0 0/0 0/0 .bss @1095 */
#pragma push
#pragma force_active on
static u8 lit_1095[1 + 3 /* padding */];
#pragma pop
/* 80A012A4-80A012A8 000024 0001+03 0/0 0/0 0/0 .bss @1094 */
#pragma push
#pragma force_active on
static u8 lit_1094[1 + 3 /* padding */];
#pragma pop
/* 80A012A8-80A012AC 000028 0001+03 0/0 0/0 0/0 .bss @1057 */
#pragma push
#pragma force_active on
static u8 lit_1057[1 + 3 /* padding */];
#pragma pop
/* 80A012AC-80A012B0 00002C 0001+03 0/0 0/0 0/0 .bss @1055 */
#pragma push
#pragma force_active on
static u8 lit_1055[1 + 3 /* padding */];
#pragma pop
/* 80A012B0-80A012B4 000030 0001+03 0/0 0/0 0/0 .bss @1053 */
#pragma push
#pragma force_active on
static u8 lit_1053[1 + 3 /* padding */];
#pragma pop
/* 80A012B4-80A012B8 000034 0001+03 0/0 0/0 0/0 .bss @1052 */
#pragma push
#pragma force_active on
static u8 lit_1052[1 + 3 /* padding */];
#pragma pop
/* 80A012B8-80A012BC 000038 0001+03 0/0 0/0 0/0 .bss @1014 */
#pragma push
#pragma force_active on
static u8 lit_1014[1 + 3 /* padding */];
#pragma pop
/* 80A012BC-80A012C0 00003C 0001+03 0/0 0/0 0/0 .bss @1012 */
#pragma push
#pragma force_active on
static u8 lit_1012[1 + 3 /* padding */];
#pragma pop
/* 80A012C0-80A012C4 000040 0001+03 0/0 0/0 0/0 .bss @1010 */
#pragma push
#pragma force_active on
static u8 lit_1010[1 + 3 /* padding */];
#pragma pop
/* 80A012C4-80A012C8 000044 0001+03 0/0 0/0 0/0 .bss @1009 */
#pragma push
#pragma force_active on
static u8 lit_1009[1 + 3 /* padding */];
#pragma pop
/* 80A012C8-80A012D4 000048 000C+00 1/1 0/0 0/0 .bss @3859 */
static u8 lit_3859[12];
UNK_REL_BSS;
/* 80A012D4-80A012D8 000054 0004+00 1/1 0/0 0/0 .bss l_HIO */
static u8 l_HIO[4];
static daNpc_Hanjo_Param_c l_HIO;
/* 809FABB8-809FAF90 001C18 03D8+00 1/0 0/0 0/0 .text setAttnPos__13daNpc_Hanjo_cFv */
void daNpc_Hanjo_c::setAttnPos() {
@ -1656,7 +983,7 @@ void daNpc_Hanjo_c::dive() {
cLib_chaseF(&speedF, 0.0f, 0.1f);
} else {
if (field_0x1720 == 0) {
mSound.startCreatureSound(Z2SE_CM_BODYFALL_WATER_M, 0, 0xffffffff);
mSound.startCreatureSound(Z2SE_CM_BODYFALL_WATER_M, 0, -1);
speedF *= 0.5f;
field_0x1720 = 1;
} else if (field_0x171f == 0) {
@ -1892,8 +1219,6 @@ int daNpc_Hanjo_c::cutConversation(int param_1) {
}
/* 809FC80C-809FCDC4 00386C 05B8+00 1/0 0/0 0/0 .text cutPursuitBee__13daNpc_Hanjo_cFi */
// NONMATCHING
// One instruction out of order
int daNpc_Hanjo_c::cutPursuitBee(int param_1) {
cXyz cStack_6c;
int rv = 0;
@ -1983,31 +1308,31 @@ int daNpc_Hanjo_c::cutPursuitBee(int param_1) {
mJntAnm.lookNone(0);
if (field_0x10e8.getDstPosH(current.pos, &cStack_6c, field_0x10e8.mpRoomPath->m_num, 4)) {
rv = 1;
} else {
cLib_addCalcAngleS2(&current.angle.y, cLib_targetAngleY(&current.pos, &cStack_6c), 4, 0x800);
shape_angle.y = current.angle.y;
mCurAngle.y = current.angle.y;
field_0xd7e.y = mCurAngle.y;
cLib_chaseF(&speedF,
daNpc_Hanjo_Param_c::m.field_0x90, 0.5f);
if (mEventTimer != 0 &&
mCyl1.ChkCoHit())
{
fopAc_ac_c* hitActor = mCyl1.GetCoHitAc();
if (daPy_getPlayerActorClass() == hitActor) {
f32 dVar17 = 40.0f;
s16 sVar11 = cM_deg2s(50.0f);
s16 actorAngle = fopAcM_searchActorAngleY(this, daPy_getPlayerActorClass()) - current.angle.y;
s16 angle2;
if (actorAngle > 0) {
angle2 = current.angle.y + 0x2000;
} else {
angle2 = current.angle.y - 0x2000;
}
daPy_getPlayerActorClass()->setThrowDamage(angle2, dVar17 * cM_scos(sVar11), dVar17 * cM_ssin(sVar11), 0, 1, 0);
field_0x1724 = 1;
mEventTimer = 0;
break;
}
cLib_addCalcAngleS2(&current.angle.y, cLib_targetAngleY(&current.pos, &cStack_6c), 4, 0x800);
shape_angle.y = current.angle.y;
mCurAngle.y = current.angle.y;
field_0xd7e.y = mCurAngle.y;
cLib_chaseF(&speedF, daNpc_Hanjo_Param_c::m.field_0x90, 0.5f);
if (mEventTimer != 0 &&
mCyl1.ChkCoHit())
{
fopAc_ac_c* hitActor = mCyl1.GetCoHitAc();
if (daPy_getPlayerActorClass() == hitActor) {
s16 sVar11 = cM_deg2s(50.0f);
s16 actorAngle = fopAcM_searchActorAngleY(this, daPy_getPlayerActorClass());
actorAngle -= current.angle.y;
if (actorAngle > 0) {
actorAngle = current.angle.y + 0x2000;
} else {
actorAngle = current.angle.y - 0x2000;
}
daPy_getPlayerActorClass()->setThrowDamage(actorAngle, 40.0f * cM_scos(sVar11),
40.0f * cM_ssin(sVar11), 0, 1, 0);
field_0x1724 = 1;
mEventTimer = 0;
}
}
break;
@ -2080,13 +1405,14 @@ int daNpc_Hanjo_c::cutAppearHawker(int param_1) {
case 5:
mEventTimer = iVar7;
break;
case 6:
case 6: {
mEventTimer = iVar7;
fopAc_ac_c* actor_p = field_0x10c8[2].getActorP();
JUT_ASSERT(3005, 0 != actor_p);
((daNPC_TK_c*)actor_p)->setAttackLink();
field_0x1722 = 1;
break;
}
case 99:
mMotionSeqMngr.setNo(13, 0.0, 1,
0);
@ -2195,12 +1521,13 @@ int daNpc_Hanjo_c::cutDive(int param_1) {
initTalk(0xd0, NULL);
mEventTimer = uVar4;
break;
case 1:
case 1: {
fopAc_ac_c* actor_p = field_0x10c8[2].getActorP();
if (actor_p != NULL){
((daNPC_TK_c*)actor_p)->setAway();
}
break;
}
case 2:
mFaceMotionSeqMngr.setNo(6, -1.0f, 0, 0);
mMotionSeqMngr.setNo(17, -1.0f, 0,
@ -2231,7 +1558,7 @@ int daNpc_Hanjo_c::cutDive(int param_1) {
rv = 1;
}
break;
case 2:
case 2: {
cStack_2c.set(0.0f, 0.0f, 50.0f);
mDoMtx_stack_c::YrotS(mCurAngle.y);
mDoMtx_stack_c::multVec(&cStack_2c, &cStack_2c);
@ -2257,6 +1584,7 @@ int daNpc_Hanjo_c::cutDive(int param_1) {
mCurAngle.y = current.angle.y;
cLib_chaseF(&speedF, daNpc_Hanjo_Param_c::m.field_0x90, 1.0f);
break;
}
case 3:
if (field_0x1720) {
if (mType == TYPE_1) {
@ -2495,7 +1823,7 @@ int daNpc_Hanjo_c::takayose(void* param_0) {
field_0x1710 = cLib_getRndValue(dVar8 * 0.5f, dVar8 * 1.5f);
mMode = 2;
}
case 2:
case 2: {
field_0xe2d = 0;
dComIfG_play_c& play = g_dComIfG_gameInfo.play;
if (play.getEvent().runCheck()) {
@ -2599,6 +1927,7 @@ int daNpc_Hanjo_c::takayose(void* param_0) {
}
}
break;
}
case 3:
default:
break;
@ -2705,6 +2034,3 @@ extern actor_process_profile_definition g_profile_NPC_HANJO = {
fopAc_NPC_e, // mActorType
fopAc_CULLBOX_CUSTOM_e, // cullType
};
/* 80A007F8-80A007F8 0001F8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */

View File

@ -4,6 +4,7 @@
*/
#include "d/actor/d_a_npc_zelR.h"
#include "SSystem/SComponent/c_counter.h"
UNK_REL_DATA
@ -138,7 +139,7 @@ int daNpc_ZelR_c::create() {
}
OS_REPORT("\t(%s:%d) flowNo:%d, PathID:%02x<%08x> ", fopAcM_getProcNameString(this), mType,
mFlowNodeNo, getPathID(), fopAcM_GetParam(this));
mFlowNodeNo, getPath(), fopAcM_GetParam(this));
if (isDelete()) {
OS_REPORT("===>isDelete:TRUE\n");
return cPhs_ERROR_e;