Files
tp/src/d/actor/d_a_npc.cpp
T
TakaRikka 24b72a5302 some cleanup of f_pc/f_op files (#2254)
* cleanup f_pc files

* cleanup f_op files

* fix a couple f_op_actor_mng functions

* minor JSystem work
2024-11-29 18:24:26 +02:00

5376 lines
190 KiB
C++

//
// Generated By: dol2asm
// Translation Unit: d/actor/d_a_npc
//
#include "d/actor/d_a_npc.h"
#include "SSystem/SComponent/c_math.h"
#include "d/d_msg_object.h"
#include "dol2asm.h"
#include "m_Do/m_Do_lib.h"
#include "d/actor/d_a_npc_tk.h"
#include "d/actor/d_a_tag_evtarea.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
//
// Forward References:
//
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 calc__15daNpcT_MatAnm_cCFP11J3DMaterial();
extern "C" void initialize__22daNpcT_MotionSeqMngr_cFv();
extern "C" void play__22daNpcT_MotionSeqMngr_cFUsPiPf();
extern "C" void checkEndSequence__22daNpcT_MotionSeqMngr_cFv();
extern "C" static void daNpcT_addIdx__FiiRUsi();
extern "C" static void daNpcT_subIdx__FiiRUsi();
extern "C" static void daNpcT_incIdx__FiRUsii();
extern "C" static void daNpcT_decIdx__FiRUsii();
extern "C" void hermite__13daNpcT_Path_cFR4cXyzR4cXyzR4cXyzR4cXyzR16daNpcT_Hermite_cR4cXyz();
extern "C" void initialize__13daNpcT_Path_cFv();
extern "C" void setPathInfo__13daNpcT_Path_cFUcScUc();
extern "C" void setNextPathInfo__13daNpcT_Path_cFScUc();
extern "C" void reverse__13daNpcT_Path_cFv();
extern "C" void setNextIdx__13daNpcT_Path_cFi();
extern "C" void getDstPos__13daNpcT_Path_cF4cXyzP4cXyzi();
extern "C" void getDstPosH__13daNpcT_Path_cF4cXyzP4cXyzii();
extern "C" void chkPassed1__13daNpcT_Path_cF4cXyzi();
extern "C" void chkPassed2__13daNpcT_Path_cF4cXyzP4cXyzii();
extern "C" static void daNpcT_chkPassed__F4cXyzP4dPntUsUsiiP4cXyzPiPi();
extern "C" void initialize__15daNpcT_JntAnm_cFv();
extern "C" void setParam__15daNpcT_JntAnm_cFP10fopAc_ac_cP8J3DModelP4cXyziiiffffffffffP4cXyz();
extern "C" void calc__15daNpcT_JntAnm_cFf();
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 srchActor__8daNpcT_cFPvPv();
extern "C" void getTrnsfrmAnmP__8daNpcT_cFPCci();
extern "C" void getTrnsfrmKeyAnmP__8daNpcT_cFPCci();
extern "C" void getTexPtrnAnmP__8daNpcT_cFPCci();
extern "C" void getTexSRTKeyAnmP__8daNpcT_cFPCci();
extern "C" void getTevRegKeyAnmP__8daNpcT_cFPCci();
extern "C" void getColorAnmP__8daNpcT_cFPCci();
extern "C" void setBckAnm__8daNpcT_cFP15J3DAnmTransformfiiib();
extern "C" void setMcaMorfAnm__8daNpcT_cFP18J3DAnmTransformKeyffiii();
extern "C" void setBtpAnm__8daNpcT_cFP16J3DAnmTexPatternP12J3DModelDatafi();
extern "C" void setBtkAnm__8daNpcT_cFP19J3DAnmTextureSRTKeyP12J3DModelDatafi();
extern "C" void setBrkAnm__8daNpcT_cFP15J3DAnmTevRegKeyP12J3DModelDatafi();
extern "C" void setBpkAnm__8daNpcT_cFP11J3DAnmColorP12J3DModelDatafi();
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 checkEndAnm__8daNpcT_cFf();
extern "C" void checkEndAnm__8daNpcT_cFP12J3DFrameCtrlf();
extern "C" void playAllAnm__8daNpcT_cFv();
extern "C" void ctrlBtk__8daNpcT_cFv();
extern "C" void setMtx__8daNpcT_cFv();
extern "C" void ctrlFaceMotion__8daNpcT_cFv();
extern "C" void ctrlMotion__8daNpcT_cFv();
extern "C" void ctrlMsgAnm__8daNpcT_cFPiPiP10fopAc_ac_ci();
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 chkPointInArea__8daNpcT_cF4cXyz4cXyz4cXyzs();
extern "C" void chkFindActor__8daNpcT_cFP10fopAc_ac_cis();
extern "C" void getDistTable__12dAttention_cFi();
extern "C" void chkWolfAction__8daNpcT_cFv();
extern "C" void chkFindWolf__8daNpcT_cFsiiffffi();
extern "C" void srchPlayerActor__8daNpcT_cFv();
extern "C" void getAttnPos__8daNpcT_cFP10fopAc_ac_c();
extern "C" void turn__8daNpcT_cFsii();
extern "C" void step__8daNpcT_cFsiiii();
extern "C" void calcSpeedAndAngle__8daNpcT_cF4cXyziss();
extern "C" void getActorDistance__8daNpcT_cFP10fopAc_ac_cii();
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 getShopItemTagP__8daNpcT_cFv();
extern "C" void setHitodamaPrtcl__8daNpcT_cFv();
extern "C" void daNpcT_chkActorInScreen__FP10fopAc_ac_cfffffffi();
extern "C" void daNpcT_chkPointInArea__F4cXyz4cXyz4cXyzsi();
extern "C" void daNpcT_getPlayerInfoFromPlayerList__FiiP4cXyzP5csXyz();
extern "C" void daNpcT_chkDoBtnIsSpeak__FP10fopAc_ac_c();
extern "C" void daNpcT_judgeRace__FP5dPathPP10fopAc_ac_cP16daNpcT_pntData_ciPi();
extern "C" void daNpcT_getDistTableIdx__Fii();
extern "C" void daNpcT_onEvtBit__FUl();
extern "C" void daNpcT_offEvtBit__FUl();
extern "C" void daNpcT_chkEvtBit__FUl();
extern "C" void daNpcT_onTmpBit__FUl();
extern "C" void daNpcT_offTmpBit__FUl();
extern "C" void daNpcT_chkTmpBit__FUl();
extern "C" void __dt__16daNpcT_Hermite_cFv();
extern "C" void decTmr__8daNpcT_cFv();
extern "C" void setCollision__8daNpcT_cFv();
extern "C" void setAttnPos__8daNpcT_cFv();
extern "C" void ctrlSubFaceMotion__8daNpcT_cFi();
extern "C" void afterMoved__8daNpcT_cFv();
extern "C" void beforeMove__8daNpcT_cFv();
extern "C" void action__8daNpcT_cFv();
extern "C" void setParam__8daNpcT_cFv();
extern "C" void drawOtherMdl__8daNpcT_cFv();
extern "C" void drawGhost__8daNpcT_cFv();
extern "C" bool drawDbgInfo__8daNpcT_cFv();
extern "C" bool checkRemoveJoint__8daNpcT_cFi();
extern "C" bool checkChangeJoint__8daNpcT_cFi();
extern "C" void afterJntAnm__8daNpcT_cFi();
extern "C" s32 getHeadJointNo__8daNpcT_cFv();
extern "C" s32 getNeckJointNo__8daNpcT_cFv();
extern "C" s32 getBackboneJointNo__8daNpcT_cFv();
extern "C" void setAfterTalkMotion__8daNpcT_cFv();
extern "C" bool evtCutProc__8daNpcT_cFv();
extern "C" bool evtEndProc__8daNpcT_cFv();
extern "C" bool evtTalk__8daNpcT_cFv();
extern "C" bool checkChangeEvt__8daNpcT_cFv();
extern "C" s32 getFootRJointNo__8daNpcT_cFv();
extern "C" s32 getFootLJointNo__8daNpcT_cFv();
extern "C" bool chkXYItems__8daNpcT_cFv();
extern "C" bool afterSetFaceMotionAnm__8daNpcT_cFiifi();
extern "C" void changeBtp__8daNpcT_cFPiPi();
extern "C" void changeBck__8daNpcT_cFPiPi();
extern "C" void getFaceMotionAnm__8daNpcT_cF26daNpcT_faceMotionAnmData_c();
extern "C" bool afterSetMotionAnm__8daNpcT_cFiifi();
extern "C" void changeBtk__8daNpcT_cFPiPi();
extern "C" void changeAnm__8daNpcT_cFPiPi();
extern "C" void getMotionAnm__8daNpcT_cF22daNpcT_motionAnmData_c();
extern "C" void __dt__8daNpcT_cFv();
extern "C" bool getEyeballLMaterialNo__8daNpcT_cFv();
extern "C" bool getEyeballRMaterialNo__8daNpcT_cFv();
extern "C" bool getEyeballMaterialNo__8daNpcT_cFv();
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" 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();
extern "C" static void daBaseNpc_incIdx__FiPUsii();
extern "C" static void daBaseNpc_decIdx__FiPUsii();
extern "C" static void daNpcBase_BBasis__FiiiPi();
extern "C" void __ct__18daBaseNpc_acMngr_cFv();
extern "C" void entry__18daBaseNpc_acMngr_cFP10fopAc_ac_c();
extern "C" void getActor__18daBaseNpc_acMngr_cFv();
extern "C" void calc__18daBaseNpc_matAnm_cCFP11J3DMaterial();
extern "C" void __ct__16daBaseNpc_path_cFv();
extern "C" void isPath__16daBaseNpc_path_cFv();
extern "C" void setPathInfo__16daBaseNpc_path_cFUcScSc();
extern "C" void reverseDir__16daBaseNpc_path_cFv();
extern "C" void chkPnt__16daBaseNpc_path_cF4cXyz();
extern "C" void setNextPnt__16daBaseNpc_path_cFv();
extern "C" void getIdx__16daBaseNpc_path_cFv();
extern "C" void setIdx__16daBaseNpc_path_cFUs();
extern "C" void getPntPos__16daBaseNpc_path_cFUs();
extern "C" void limitter__18daBaseNpc_lookat_cFsPsss();
extern "C" void calc__18daBaseNpc_lookat_cFP10fopAc_ac_cPA4_fs();
extern "C" void setMaxJntLmt__18daBaseNpc_lookat_cF5csXyzi();
extern "C" void setMinJntLmt__18daBaseNpc_lookat_cF5csXyzi();
extern "C" void setJntPos__18daBaseNpc_lookat_cF4cXyzi();
extern "C" void setAttnPos__18daBaseNpc_lookat_cFP4cXyz();
extern "C" void getRot__18daBaseNpc_lookat_cFi();
extern "C" void __ct__11daBaseNpc_cFv();
extern "C" void __dt__11daBaseNpc_cFv();
extern "C" void execute__11daBaseNpc_cFv();
extern "C" void draw__11daBaseNpc_cFf();
extern "C" bool getResName__11daBaseNpc_cFv();
extern "C" void getTrnsfrmKeyAnmP__11daBaseNpc_cFPci();
extern "C" void setMcaMorfAnm__11daBaseNpc_cFP18J3DAnmTransformKeyffiii();
extern "C" void setBckAnm__11daBaseNpc_cFP15J3DAnmTransformfiiib();
extern "C" void getTexPtrnAnmP__11daBaseNpc_cFPci();
extern "C" void setBtpAnm__11daBaseNpc_cFP16J3DAnmTexPatternP12J3DModelDatafi();
extern "C" void attnSttsOn__11daBaseNpc_cFii();
extern "C" void setParam__11daBaseNpc_cFv();
extern "C" void orderEvent__11daBaseNpc_cFiPc();
extern "C" void mainProc__11daBaseNpc_cFv();
extern "C" void setEnvTevColor__11daBaseNpc_cFv();
extern "C" void setRoomNo__11daBaseNpc_cFv();
extern "C" bool btkCtrl__11daBaseNpc_cFv();
extern "C" void checkEndAnm__11daBaseNpc_cFf();
extern "C" void checkEndAnm__11daBaseNpc_cFP12J3DFrameCtrl();
extern "C" void allAnmPlay__11daBaseNpc_cFv();
extern "C" void adjustShapeAngle__11daBaseNpc_cFv();
extern "C" void setMtx__11daBaseNpc_cFi();
extern "C" void setCollisions__11daBaseNpc_cFv();
extern "C" void setAttnPos__11daBaseNpc_cFv();
extern "C" void drawOtherMdls__11daBaseNpc_cFv();
extern "C" bool dbgDraw__11daBaseNpc_cFv();
extern "C" void __ct__23daBaseNpc_moveBgActor_cFv();
extern "C" static void CheckCreateHeap__FP10fopAc_ac_c();
extern "C" void MoveBGCreateHeap__23daBaseNpc_moveBgActor_cFv();
extern "C" void
MoveBGCreate__23daBaseNpc_moveBgActor_cFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUl();
extern "C" void MoveBGDelete__23daBaseNpc_moveBgActor_cFv();
extern "C" void MoveBGExecute__23daBaseNpc_moveBgActor_cFv();
extern "C" static void daBaseNpc_PntVsLineSegmentLengthSquare2D__FffffffPfPfPf();
extern "C" static void daBaseNpc_putNurbs__FP4dPntiiP4dPnti();
extern "C" static void daBaseNpc_chkPnt__F4cXyzP4dPntUsUsii();
extern "C" static void daBaseNpc_getGroundAngle__FP13cBgS_PolyInfos();
extern "C" void __dt__18daBaseNpc_lookat_cFv();
extern "C" bool CreateHeap__23daBaseNpc_moveBgActor_cFv();
extern "C" bool Create__23daBaseNpc_moveBgActor_cFv();
extern "C" bool Delete__23daBaseNpc_moveBgActor_cFv();
extern "C" bool Execute__23daBaseNpc_moveBgActor_cFPPA3_A4_f();
extern "C" bool Draw__23daBaseNpc_moveBgActor_cFv();
extern "C" bool IsDelete__23daBaseNpc_moveBgActor_cFv();
extern "C" bool ToFore__23daBaseNpc_moveBgActor_cFv();
extern "C" bool ToBack__23daBaseNpc_moveBgActor_cFv();
extern "C" void __dt__16daBaseNpc_path_cFv();
extern "C" void __dt__18daBaseNpc_matAnm_cFv();
extern "C" void __dt__18daBaseNpc_acMngr_cFv();
extern "C" static void daNpcF_addIdx__FiiRUsi();
extern "C" static void daNpcF_subIdx__FiiRUsi();
extern "C" static void daNpcF_incIdx__FiRUsii();
extern "C" static void daNpcF_decIdx__FiRUsii();
extern "C" void initialize__18daNpcF_ActorMngr_cFv();
extern "C" void entry__18daNpcF_ActorMngr_cFP10fopAc_ac_c();
extern "C" void entry__18daNpcF_ActorMngr_cFUi();
extern "C" void remove__18daNpcF_ActorMngr_cFv();
extern "C" void getActorP__18daNpcF_ActorMngr_cFv();
extern "C" void initialize__15daNpcF_MatAnm_cFv();
extern "C" void calc__15daNpcF_MatAnm_cCFP11J3DMaterial();
extern "C" void initialize__16daNpcF_SPCurve_cFP5dPathi();
extern "C" void initialize__13daNpcF_Path_cFv();
extern "C" void setPathInfo__13daNpcF_Path_cFUcScUc();
extern "C" void chkPassed__13daNpcF_Path_cF4cXyz();
extern "C" void chkPassedDst__13daNpcF_Path_cF4cXyz();
extern "C" void reverse__13daNpcF_Path_cFv();
extern "C" void setNextIdx__13daNpcF_Path_cFv();
extern "C" void getNextIdx__13daNpcF_Path_cFv();
extern "C" void getBeforeIdx__13daNpcF_Path_cFv();
extern "C" void getBeforePos__13daNpcF_Path_cFR4cXyz();
extern "C" void getNextPos__13daNpcF_Path_cFR4cXyz();
extern "C" void getDstPos__13daNpcF_Path_cF4cXyzR4cXyz();
extern "C" void setNextIdxDst__13daNpcF_Path_cF4cXyz();
extern "C" void initialize__15daNpcF_Lookat_cFv();
extern "C" void setParam__15daNpcF_Lookat_cFffffffffffffsP4cXyz();
extern "C" void calc__15daNpcF_Lookat_cFP10fopAc_ac_cPA4_fPP5csXyziii();
extern "C" void adjustMoveDisAngle__15daNpcF_Lookat_cFRssss();
extern "C" void initCalc__15daNpcF_Lookat_cFP10fopAc_ac_cPA4_fP4cXyzP5csXyzPfR4cXyzi();
extern "C" void update__15daNpcF_Lookat_cFP4cXyzP5csXyzPf();
extern "C" void calcMoveDisAngle__15daNpcF_Lookat_cFiP4cXyzP5csXyz4cXyzii();
extern "C" void setRotAngle__15daNpcF_Lookat_cFv();
extern "C" void clrRotAngle__15daNpcF_Lookat_cFv();
extern "C" void execute__8daNpcF_cFv();
extern "C" void draw__8daNpcF_cFiifP11_GXColorS10i();
extern "C" void tgHitCallBack__8daNpcF_cFP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf();
extern "C" void srchAttnActor1__8daNpcF_cFPvPv();
extern "C" void srchActor__8daNpcF_cFPvPv();
extern "C" void setMtx__8daNpcF_cFv();
extern "C" void setMtx2__8daNpcF_cFv();
extern "C" void initialize__8daNpcF_cFv();
extern "C" void getTrnsfrmKeyAnmP__8daNpcF_cFPci();
extern "C" void getTexPtrnAnmP__8daNpcF_cFPci();
extern "C" void getTexSRTKeyAnmP__8daNpcF_cFPci();
extern "C" void getTevRegKeyAnmP__8daNpcF_cFPci();
extern "C" void setMcaMorfAnm__8daNpcF_cFP18J3DAnmTransformKeyffiii();
extern "C" void setBckAnm__8daNpcF_cFP15J3DAnmTransformfiiib();
extern "C" void setBtpAnm__8daNpcF_cFP16J3DAnmTexPatternP12J3DModelDatafi();
extern "C" void setBtkAnm__8daNpcF_cFP19J3DAnmTextureSRTKeyP12J3DModelDatafi();
extern "C" void setBrkAnm__8daNpcF_cFP15J3DAnmTevRegKeyP12J3DModelDatafi();
extern "C" void setEnvTevColor__8daNpcF_cFv();
extern "C" void setRoomNo__8daNpcF_cFv();
extern "C" void chkEndAnm__8daNpcF_cFf();
extern "C" void chkEndAnm__8daNpcF_cFP12J3DFrameCtrlf();
extern "C" void playAllAnm__8daNpcF_cFv();
extern "C" void playExpressionAnm__8daNpcF_cFPPPQ28daNpcF_c18daNpcF_anmPlayData();
extern "C" void playMotionAnm__8daNpcF_cFPPPQ28daNpcF_c18daNpcF_anmPlayData();
extern "C" void setLookatMtx__8daNpcF_cFiPif();
extern "C" void hitChk2__8daNpcF_cFP8dCcD_Cylii();
extern "C" void setDamage__8daNpcF_cFiii();
extern "C" void ctrlMsgAnm__8daNpcF_cFRiRiP10fopAc_ac_ci();
extern "C" void orderEvent__8daNpcF_cFiPcUsUsUcUs();
extern "C" void changeEvent__8daNpcF_cFPcPcUsUs();
extern "C" void chkActorInSight__8daNpcF_cFP10fopAc_ac_cf();
extern "C" void chkActorInArea__8daNpcF_cFP10fopAc_ac_c4cXyz4cXyzs();
extern "C" void chkActorInAttnArea__8daNpcF_cFP10fopAc_ac_cP10fopAc_ac_ci();
extern "C" void initTalk__8daNpcF_cFiPP10fopAc_ac_c();
extern "C" void talkProc__8daNpcF_cFPiiPP10fopAc_ac_c();
extern "C" void turn__8daNpcF_cFsfi();
extern "C" void step__8daNpcF_cFsiii();
extern "C" void setAngle__8daNpcF_cFs();
extern "C" void getDistTableIdx__8daNpcF_cFii();
extern "C" void getEvtAreaTagP__8daNpcF_cFii();
extern "C" void getAttnActorP__8daNpcF_cFiPFPvPv_Pvffffsii();
extern "C" void chkActorInSight2__8daNpcF_cFP10fopAc_ac_cfs();
extern "C" void chkPointInArea__8daNpcF_cF4cXyz4cXyzfffs();
extern "C" void chkPointInArea__8daNpcF_cF4cXyz4cXyz4cXyzs();
extern "C" void getAttentionPos__8daNpcF_cFP10fopAc_ac_c();
extern "C" void chkFindPlayer2__8daNpcF_cFis();
extern "C" void setHitodamaPrtcl__8daNpcF_cFv();
extern "C" void daNpcF_pntVsLineSegmentLengthSquare2D__FffffffPfPfPf();
extern "C" static bool daNpcF_putNurbs__FP4dPntiiP4dPnti();
extern "C" void daNpcF_chkPassed__F4cXyzP4dPntUsUsii();
extern "C" void daNpcF_getGroundAngle__FP13cBgS_PolyInfos();
extern "C" void daNpcF_chkEvtBit__FUl();
extern "C" void daNpcF_onEvtBit__FUl();
extern "C" void daNpcF_chkTmpBit__FUl();
extern "C" void daNpcF_onTmpBit__FUl();
extern "C" void daNpcF_offTmpBit__FUl();
extern "C" void daNpcF_getPlayerInfoFromPlayerList__FiiR4cXyzR5csXyz();
extern "C" void daNpcF_chkDoBtnEqSpeak__FP10fopAc_ac_c();
extern "C" void daNpcF_chkPointInArea__F4cXyz4cXyz4cXyzs();
extern "C" void daNpcF_getDistTableIdx__Fii();
extern "C" void daNpcF_clearMessageTmpBit__Fv();
extern "C" void __dt__20daNpcF_MoveBgActor_cFv();
extern "C" void setCollisions__8daNpcF_cFv();
extern "C" void setAttnPos__8daNpcF_cFv();
extern "C" void adjustShapeAngle__8daNpcF_cFv();
extern "C" bool main__8daNpcF_cFv();
extern "C" void setParam__8daNpcF_cFv();
extern "C" void drawOtherMdls__8daNpcF_cFv();
extern "C" bool drawDbgInfo__8daNpcF_cFv();
extern "C" bool ctrlBtk__8daNpcF_cFv();
extern "C" bool setExpressionAnm__8daNpcF_cFib();
extern "C" void setMotionAnm__8daNpcF_cFif();
extern "C" void setMotion__8daNpcF_cFifi();
extern "C" void setExpression__8daNpcF_cFif();
extern "C" void __dt__8daNpcF_cFv();
extern "C" void __dt__18daNpcF_ActorMngr_cFv();
extern "C" bool CreateHeap__20daNpcF_MoveBgActor_cFv();
extern "C" bool Create__20daNpcF_MoveBgActor_cFv();
extern "C" bool Delete__20daNpcF_MoveBgActor_cFv();
extern "C" bool Execute__20daNpcF_MoveBgActor_cFPPA3_A4_f();
extern "C" bool Draw__20daNpcF_MoveBgActor_cFv();
extern "C" bool IsDelete__20daNpcF_MoveBgActor_cFv();
extern "C" bool ToFore__20daNpcF_MoveBgActor_cFv();
extern "C" bool ToBack__20daNpcF_MoveBgActor_cFv();
extern "C" bool setExpressionBtp__8daNpcF_cFi();
extern "C" void __dt__15daNpcF_MatAnm_cFv();
extern "C" void __dt__23daBaseNpc_moveBgActor_cFv();
extern "C" u8 const mCcDObjData__8daNpcT_c[48];
extern "C" u8 const mCcDObj__11daBaseNpc_c[48];
extern "C" u8 const mCcDObjInfo__8daNpcF_c[48];
extern "C" extern char const* const d_a_d_a_npc__stringBase0;
extern "C" u8 mCcDCyl__8daNpcT_c[68];
extern "C" u8 mCcDSph__8daNpcT_c[64];
extern "C" u8 mCcDCyl__11daBaseNpc_c[68];
extern "C" u8 mCcDSph__11daBaseNpc_c[64];
extern "C" u8 mCcDCyl__8daNpcF_c[68];
extern "C" u8 mCcDSph__8daNpcF_c[64];
extern "C" u8 mFindActorPtrs__8daNpcT_c[200];
extern "C" u8 mFindActorPList__8daNpcF_c[400];
extern "C" u8 mSrchName__8daNpcT_c[2 + 2 /* padding */];
extern "C" u8 mFindCount__8daNpcT_c[4];
extern "C" u8 m_name__23daBaseNpc_moveBgActor_c[4];
extern "C" u8 m_dzb_id__23daBaseNpc_moveBgActor_c[4];
extern "C" u8 m_set_func__23daBaseNpc_moveBgActor_c[4];
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);
static u16 daNpcF_putNurbs(dPnt* param_0, int param_1, int param_2, dPnt* param_3, int param_4);
//
// External References:
//
extern "C" void __dt__4cXyzFv();
extern "C" void mDoMtx_ZXYrotS__FPA4_fsss();
extern "C" void mDoMtx_ZXYrotM__FPA4_fsss();
extern "C" void mDoMtx_XrotS__FPA4_fs();
extern "C" void mDoMtx_YrotS__FPA4_fs();
extern "C" void mDoMtx_YrotM__FPA4_fs();
extern "C" void transS__14mDoMtx_stack_cFRC4cXyz();
extern "C" void transM__14mDoMtx_stack_cFfff();
extern "C" void scaleM__14mDoMtx_stack_cFRC4cXyz();
extern "C" void XYZrotS__14mDoMtx_stack_cFRC5csXyz();
extern "C" void XYZrotM__14mDoMtx_stack_cFRC5csXyz();
extern "C" void ZXYrotS__14mDoMtx_stack_cFRC5csXyz();
extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz();
extern "C" void play__14mDoExt_baseAnmFv();
extern "C" void init__13mDoExt_bpkAnmFP16J3DMaterialTableP11J3DAnmColoriifss();
extern "C" void entry__13mDoExt_bpkAnmFP16J3DMaterialTablef();
extern "C" void init__13mDoExt_btpAnmFP16J3DMaterialTableP16J3DAnmTexPatterniifss();
extern "C" void entry__13mDoExt_btpAnmFP16J3DMaterialTables();
extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss();
extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef();
extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss();
extern "C" void entry__13mDoExt_brkAnmFP16J3DMaterialTablef();
extern "C" void init__13mDoExt_bckAnmFP15J3DAnmTransformiifssb();
extern "C" void changeBckOnly__13mDoExt_bckAnmFP15J3DAnmTransform();
extern "C" void entryJoint__13mDoExt_bckAnmFP12J3DModelDataUsf();
extern "C" void setMorf__13mDoExt_morf_cFf();
extern "C" void setAnm__16mDoExt_McaMorfSOFP15J3DAnmTransformiffff();
extern "C" void play__16mDoExt_McaMorfSOFUlSc();
extern "C" void entryDL__16mDoExt_McaMorfSOFv();
extern "C" void modelCalc__16mDoExt_McaMorfSOFv();
extern "C" void __ct__4cXyzFv();
extern "C" void mDoLib_project__FP3VecP3Vec();
extern "C" void __ct__10fopAc_ac_cFv();
extern "C" void __dt__5csXyzFv();
extern "C" void __dt__10fopAc_ac_cFv();
extern "C" void fopAc_IsActor__FPv();
extern "C" void fopAcM_SearchByID__FUiPP10fopAc_ac_c();
extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
extern "C" void fopAcM_posMoveF__FP10fopAc_ac_cPC4cXyz();
extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c();
extern "C" void fopAcM_searchActorDistance__FPC10fopAc_ac_cPC10fopAc_ac_c();
extern "C" void fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c();
extern "C" void fopAcM_orderSpeakEvent__FP10fopAc_ac_cUsUs();
extern "C" void fopAcM_orderChangeEventId__FP10fopAc_ac_csUsUs();
extern "C" void fopAcM_orderOtherEventId__FP10fopAc_ac_csUcUsUsUs();
extern "C" void fopAcM_setEffectMtx__FPC10fopAc_ac_cPC12J3DModelData();
extern "C" void fopAcM_getPolygonAngle__FRC13cBgS_PolyInfos();
extern "C" void fopAcM_getPolygonAngle__FPC8cM3dGPlas();
extern "C" void fopKyM_create__FsiP4cXyzP4cXyzPFPv_i();
extern "C" void fpcEx_Search__FPFPvPv_PvPv();
extern "C" void getStatusRoomDt__20dStage_roomControl_cFi();
extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
extern "C" void dComIfGp_getReverb__Fi();
extern "C" void dComIfGd_setSimpleShadow__FP4cXyzffR13cBgS_PolyInfosfP9_GXTexObj();
extern "C" void
dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj();
extern "C" void dComIfGs_wolfeye_effect_check__Fv();
extern "C" void onEventBit__11dSv_event_cFUs();
extern "C" void offEventBit__11dSv_event_cFUs();
extern "C" void isEventBit__11dSv_event_cCFUs();
extern "C" void __dt__15J3DTevKColorAnmFv();
extern "C" void __dt__14J3DTevColorAnmFv();
extern "C" void __dt__11J3DTexNoAnmFv();
extern "C" void __dt__12J3DTexMtxAnmFv();
extern "C" void __dt__14J3DMatColorAnmFv();
extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
extern "C" void reset__14dEvt_control_cFv();
extern "C" void reset__14dEvt_control_cFPv();
extern "C" void convPId__14dEvt_control_cFUi();
extern "C" void setPtT__14dEvt_control_cFPv();
extern "C" void setPtI_Id__14dEvt_control_cFUi();
extern "C" void setObjectArchive__16dEvent_manager_cFPc();
extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cPCcUc();
extern "C" void endCheck__16dEvent_manager_cFs();
extern "C" void getRunEventName__16dEvent_manager_cFv();
extern "C" void getEmitter__Q213dPa_control_c7level_cFUl();
extern "C" void
set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
extern "C" void
setEffectTwo__8dPaPoT_cFPC12dKy_tevstr_cPC4cXyzUlUlPC4cXyzPC4cXyzPC4cXyzPC5csXyzPC4cXyzScff();
extern "C" void dPath_GetRoomPath__Fii();
extern "C" void getActionBtnB__12dAttention_cFv();
extern "C" void LockonTarget__12dAttention_cFl();
extern "C" void ActionTarget__12dAttention_cFl();
extern "C" void Release__4cBgSFP9dBgW_Base();
extern "C" void LineCross__4cBgSFP11cBgS_LinChk();
extern "C" void GroundCross__4cBgSFP11cBgS_GndChk();
extern "C" void ChkPolySafe__4cBgSFRC13cBgS_PolyInfo();
extern "C" void GetTriPla__4cBgSCFRC13cBgS_PolyInfoP8cM3dGPla();
extern "C" void Regist__4dBgSFP9dBgW_BaseP10fopAc_ac_c();
extern "C" void GetPolyColor__4dBgSFRC13cBgS_PolyInfo();
extern "C" void GetPolyAtt0__4dBgSFRC13cBgS_PolyInfo();
extern "C" void GetRoomId__4dBgSFRC13cBgS_PolyInfo();
extern "C" void __ct__12dBgS_AcchCirFv();
extern "C" void __dt__9dBgS_AcchFv();
extern "C" void __ct__9dBgS_AcchFv();
extern "C" void CrrPos__9dBgS_AcchFR4dBgS();
extern "C" void __dt__11dBgS_GndChkFv();
extern "C" void __dt__11dBgS_LinChkFv();
extern "C" void Set__11dBgS_LinChkFPC4cXyzPC4cXyzPC10fopAc_ac_c();
extern "C" void SetObj__16dBgS_PolyPassChkFv();
extern "C" void Set__4cBgWFP6cBgD_tUlPA3_A4_f();
extern "C" void __ct__4dBgWFv();
extern "C" void Move__4dBgWFv();
extern "C" void GetAc__22dCcD_GAtTgCoCommonBaseFv();
extern "C" void __ct__10dCcD_GSttsFv();
extern "C" void Move__10dCcD_GSttsFv();
extern "C" void ChkTgHit__12dCcD_GObjInfFv();
extern "C" void __ct__5csXyzFv();
extern "C" void getAttentionOffsetY__9daPy_py_cFv();
extern "C" void checkNowWolfEyeUp__9daPy_py_cFv();
extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
extern "C" void dKy_pol_sound_get__FPC13cBgS_PolyInfo();
extern "C" void dKy_darkworld_check__Fv();
extern "C" void getActor__12dMsgObject_cFv();
extern "C" void offMsgSendControl__12dMsgObject_cFv();
extern "C" void isMsgSendControl__12dMsgObject_cFv();
extern "C" void isMouthCheck__12dMsgObject_cFv();
extern "C" void __ct__10dMsgFlow_cFv();
extern "C" void __dt__10dMsgFlow_cFv();
extern "C" void init__10dMsgFlow_cFP10fopAc_ac_ciiPP10fopAc_ac_c();
extern "C" void doFlow__10dMsgFlow_cFP10fopAc_ac_cPP10fopAc_ac_ci();
extern "C" void checkEventRender__10dMsgFlow_cFPiPiPiPi();
extern "C" void getMsgNo__10dMsgFlow_cFv();
extern "C" void getMsg__10dMsgFlow_cFv();
extern "C" void __pl__4cXyzCFRC3Vec();
extern "C" void __mi__4cXyzCFRC3Vec();
extern "C" void normalize__4cXyzFv();
extern "C" void isZero__4cXyzCFv();
extern "C" void __apl__5csXyzFR5csXyz();
extern "C" void cM_rad2s__Ff();
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 ChkUsed__9cBgW_BgIdCFv();
extern "C" void cBgW_CheckBGround__Ff();
extern "C" void cM3d_Len2dSqPntAndSegLine__FffffffPfPfPf();
extern "C" void __dt__8cM3dGCirFv();
extern "C" void cLib_addCalc2__FPffff();
extern "C" void cLib_addCalcAngleS2__FPssss();
extern "C" void cLib_chaseS__FPsss();
extern "C" void cLib_chaseF__FPfff();
extern "C" void cLib_targetAngleY__FPC3VecPC3Vec();
extern "C" void cLib_targetAngleX__FPC4cXyzPC4cXyz();
extern "C" void __ct__7cSAngleFRC7cSAngle();
extern "C" void __ct__7cSAngleFs();
extern "C" void Inv__7cSAngleCFv();
extern "C" void __mi__7cSAngleCFs();
extern "C" void __ct__7cSGlobeFRC4cXyz();
extern "C" void __ct__10Z2CreatureFv();
extern "C" void __dt__10Z2CreatureFv();
extern "C" void* __nw__FUl();
extern "C" void __dl__FPv();
extern "C" void init__12J3DFrameCtrlFs();
extern "C" void calc__14J3DMaterialAnmCFP11J3DMaterial();
extern "C" void removeMatColorAnimator__16J3DMaterialTableFP11J3DAnmColor();
extern "C" void removeTexNoAnimator__16J3DMaterialTableFP16J3DAnmTexPattern();
extern "C" void removeTexMtxAnimator__16J3DMaterialTableFP19J3DAnmTextureSRTKey();
extern "C" void removeTevRegAnimator__16J3DMaterialTableFP15J3DAnmTevRegKey();
extern "C" void __register_global_object();
extern "C" void __destroy_arr();
extern "C" void __construct_array();
extern "C" void _savegpr_16();
extern "C" void _savegpr_18();
extern "C" void _savegpr_19();
extern "C" void _savegpr_20();
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_16();
extern "C" void _restgpr_18();
extern "C" void _restgpr_19();
extern "C" void _restgpr_20();
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" u8 const tempBitLabels__20dSv_event_tmp_flag_c[370 + 2 /* padding */];
extern "C" extern void* __vt__12J3DFrameCtrl[3];
extern "C" extern void* __vt__8cM3dGPla[3];
extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */];
extern "C" u8 dist_table__12dAttention_c[6552];
extern "C" extern void* __vt__12dBgS_AcchCir[3];
extern "C" extern void* __vt__9dCcD_Stts[11];
extern "C" extern void* __vt__10dCcD_GStts[3];
extern "C" extern void* __vt__10cCcD_GStts[3];
extern "C" extern void* __vt__12dBgS_ObjAcch[9];
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 mSimpleTexObj__21dDlst_shadowControl_c[32];
extern "C" extern dScnKy_env_light_c g_env_light;
extern "C" u8 mCurrentMtx__6J3DSys[48];
extern "C" u8 sincosTable___5JMath[65536];
extern "C" u8 Zero__5csXyz[4];
extern "C" extern u8 data_80451164[4];
//
// Declarations:
//
/* 801456D4-801456E0 140014 000C+00 1/1 0/0 159/159 .text initialize__18daNpcT_ActorMngr_cFv */
void daNpcT_ActorMngr_c::initialize() {
mActorID = -1;
}
/* 801456E0-801456FC 140020 001C+00 1/1 0/0 160/160 .text
* entry__18daNpcT_ActorMngr_cFP10fopAc_ac_c */
void daNpcT_ActorMngr_c::entry(fopAc_ac_c* actor) {
mActorID = fopAcM_GetID(actor);
}
/* 801456FC-80145708 14003C 000C+00 1/1 0/0 382/382 .text remove__18daNpcT_ActorMngr_cFv
*/
void daNpcT_ActorMngr_c::remove() {
mActorID = -1;
}
/* 80145708-80145764 140048 005C+00 2/2 1/1 233/233 .text getActorP__18daNpcT_ActorMngr_cFv */
fopAc_ac_c* daNpcT_ActorMngr_c::getActorP() {
fopAc_ac_c* actor = NULL;
if (fopAcM_SearchByID(mActorID, &actor) == 1 && actor != NULL && fopAcM_IsActor(actor)) {
return actor;
}
return NULL;
}
/* 80145764-80145788 1400A4 0024+00 0/0 0/0 103/103 .text initialize__15daNpcT_MatAnm_cFv
*/
void daNpcT_MatAnm_c::initialize() {
f32 value = 0.0f;
field_0xF4 = value;
field_0xF8 = value;
mTranslationX = value;
mTranslationY = value;
field_0x104 = 0;
field_0x105 = 0;
}
/* 80145788-80145898 1400C8 0110+00 1/0 0/0 0/0 .text calc__15daNpcT_MatAnm_cCFP11J3DMaterial */
void daNpcT_MatAnm_c::calc(J3DMaterial* param_0) const {
J3DMaterialAnm::calc(param_0);
for (u32 i = 0; i < 8; i++) {
if (getTexMtxAnm(i).getAnmFlag()) {
J3DTexMtxInfo* curr_mtx_info =
&param_0->getTexGenBlock()->getTexMtx(i)->getTexMtxInfo();
if (field_0x104 != 0) {
curr_mtx_info->mSRT.mTranslationX = mTranslationX;
curr_mtx_info->mSRT.mTranslationY = mTranslationY;
}
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;
}
field_0xF4 = curr_mtx_info->mSRT.mTranslationX;
field_0xF8 = curr_mtx_info->mSRT.mTranslationY;
}
}
}
/* 80145898-801458C0 1401D8 0028+00 4/4 0/0 533/533 .text initialize__22daNpcT_MotionSeqMngr_cFv
*/
void daNpcT_MotionSeqMngr_c::initialize() {
mNo = 0;
mOffset = 0;
mStepNo = 0;
field_0x14 = -1;
field_0x18 = -1.0f;
mEndSequence = false;
}
/* 801458C0-80145A24 140200 0164+00 2/2 0/0 2/2 .text play__22daNpcT_MotionSeqMngr_cFUsPiPf */
int daNpcT_MotionSeqMngr_c::play(u16 param_0, int* param_1, f32* param_2) {
int ret = 0;
if (field_0x14 == mStepNo && mStepNo < field_0x4) {
if ((&mpSeqData[mNo * field_0x4])[mStepNo].field_0x0 != -1) {
s8 tmp = (&mpSeqData[mNo * field_0x4])[mStepNo].field_0x3;
if (tmp > 0 && tmp <= param_0) {
mStepNo++;
} else if (tmp == 0 && param_0 != 0) {
mEndSequence = true;
}
}
}
if (field_0x14 != mStepNo && mStepNo < field_0x4) {
if ((&mpSeqData[mNo * field_0x4])[mStepNo].field_0x0 != -1) {
*param_1 = (&mpSeqData[mNo * field_0x4])[mStepNo].field_0x0;
*param_2 = (&mpSeqData[mNo * field_0x4])[mStepNo].field_0x2;
if (field_0x14 == -1 && -1.0f < field_0x18) {
*param_2 = field_0x18;
}
ret = 1;
} else {
mEndSequence = true;
}
}
field_0x14 = mStepNo;
return ret;
}
/* 80145A24-80145A38 140364 0014+00 0/0 0/0 43/43 .text
* checkEndSequence__22daNpcT_MotionSeqMngr_cFv */
s32 daNpcT_MotionSeqMngr_c::checkEndSequence() {
return mEndSequence == true;
}
/* 80145A38-80145A78 140378 0040+00 2/2 0/0 0/0 .text daNpcT_addIdx__FiiRUsi */
static int daNpcT_addIdx(int i_delta, int i_num, u16& i_idx, int i_closed) {
int end = 0;
int new_idx = i_idx;
new_idx += i_delta;
if (i_num <= new_idx) {
if (i_closed) {
new_idx %= i_num;
} else {
new_idx = i_num + -1;
end = 1;
}
}
i_idx = new_idx;
return end;
}
/* 80145A78-80145AC4 1403B8 004C+00 2/2 0/0 0/0 .text daNpcT_subIdx__FiiRUsi */
static int daNpcT_subIdx(int i_delta, int i_num, u16& i_idx, int i_closed) {
int end = 0;
int new_idx = i_idx;
new_idx -= i_delta;
if (0 > new_idx) {
if (i_closed) {
new_idx = (i_num + new_idx % i_num) % i_num;
} else {
new_idx = 0;
end = 1;
}
}
i_idx = new_idx;
return end;
}
/* 80145AC4-80145B20 140404 005C+00 5/5 0/0 0/0 .text daNpcT_incIdx__FiRUsii */
static int daNpcT_incIdx(int i_num, u16& i_idx, int i_closed, int i_direction) {
return i_direction ? daNpcT_subIdx(1, i_num, i_idx, i_closed) :
daNpcT_addIdx(1, i_num, i_idx, i_closed);
}
/* 80145B20-80145B7C 140460 005C+00 3/3 0/0 0/0 .text daNpcT_decIdx__FiRUsii */
static int daNpcT_decIdx(int i_num, u16& i_idx, int i_closed, int i_direction) {
return i_direction ? daNpcT_addIdx(1, i_num, i_idx, i_closed) :
daNpcT_subIdx(1, i_num, i_idx, i_closed);
}
/* 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;
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;
}
/* 80145C40-80145C74 140580 0034+00 0/0 0/0 44/44 .text initialize__13daNpcT_Path_cFv */
void daNpcT_Path_c::initialize() {
mpRoomPath = 0;
f32 value = 0.0f;
mPosition.x = value;
mPosition.y = value;
mPosition.z = value;
field_0x10 = value;
field_0x14 = value;
field_0x18 = value;
mIdx = 0;
mDirection = 0;
mIsClosed = 0;
}
/* 80145C74-80145D2C 1405B4 00B8+00 0/0 0/0 18/18 .text setPathInfo__13daNpcT_Path_cFUcScUc */
int daNpcT_Path_c::setPathInfo(u8 i_pathIdx, s8 i_roomNo, u8 i_direction) {
mpRoomPath = 0;
mIdx = 0;
mDirection = i_direction;
if (i_pathIdx != 0xFF) {
mpRoomPath = dPath_GetRoomPath(i_pathIdx, i_roomNo);
if (!mpRoomPath) {
return 0;
}
mIsClosed = dPath_ChkClose(mpRoomPath);
u16 idx;
mPosition = getPntPos(idx = getIdx());
}
return 1;
}
/* 80145D2C-80145DA0 14066C 0074+00 0/0 0/0 1/1 .text setNextPathInfo__13daNpcT_Path_cFScUc */
int daNpcT_Path_c::setNextPathInfo(s8 param_0, u8 i_direction) {
mIdx = 0;
mDirection = i_direction;
u16 next_id = mpRoomPath->m_nextID;
if (next_id != 0xFFFF) {
mpRoomPath = dPath_GetRoomPath(next_id, param_0);
if (!mpRoomPath) {
return 0;
}
mIsClosed = mpRoomPath->m_closed & 1;
}
return 1;
}
/* 80145DA0-80145DD0 1406E0 0030+00 0/0 0/0 1/1 .text reverse__13daNpcT_Path_cFv */
void daNpcT_Path_c::reverse() {
if (mDirection == 1) {
mDirection = 0;
field_0x1E = 1;
return;
}
mDirection = 1;
field_0x1E = 1;
}
/* 80145DD0-80145E38 140710 0068+00 2/2 0/0 8/8 .text setNextIdx__13daNpcT_Path_cFi */
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, 0, mDirection);
}
/* 80145E38-80145FB4 140778 017C+00 0/0 0/0 1/1 .text getDstPos__13daNpcT_Path_cF4cXyzP4cXyzi */
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)) {
break;
}
field_0x1E = 1;
if (setNextIdx(i_idx)) {
mIdx = i_idx;
*param_1 = getPntPos(getIdx() - 1);
return 1;
}
}
int i_idx2;
*param_1 = getPntPos(i_idx2 = getIdx());
return 0;
}
/* 80145FB4-80146188 1408F4 01D4+00 0/0 0/0 10/10 .text getDstPosH__13daNpcT_Path_cF4cXyzP4cXyzii
*/
int daNpcT_Path_c::getDstPosH(cXyz param_0, cXyz* param_1, int i_idx, int param_3) {
if (i_idx == mIdx) {
*param_1 = getPntPos(getIdx() - 1);
return 1;
}
while (true) {
if (!chkPassed1(param_0, i_idx)) {
break;
}
field_0x1E = 1;
if (setNextIdx(i_idx)) {
mIdx = i_idx;
*param_1 = getPntPos(getIdx() - 1);
return 1;
}
}
while (true) {
if (field_0x1E < param_3) {
if (chkPassed2(param_0, param_1, i_idx, param_3)) {
field_0x1E++;
continue;
}
} else {
int i_idx2;
*param_1 = getPntPos(i_idx2 = getIdx());
}
return 0;
}
}
/* 80146188-801464D8 140AC8 0350+00 2/2 0/0 2/2 .text chkPassed1__13daNpcT_Path_cF4cXyzi
*/
// NONMATCHING one instruction order swap
int daNpcT_Path_c::chkPassed1(cXyz i_pnt, int i_num) {
cXyz prev_pos, cur_pos, next_pos;
cXyz sp5C;
u16 cur_idx = getIdx() & 0xFFFF;
u16 prev_idx, next_idx;
prev_idx = next_idx = cur_idx;
if (chkClose() && i_num == getNumPnts()) {
daNpcT_decIdx(getNumPnts(), prev_idx, 1, chkReverse());
daNpcT_incIdx(getNumPnts(), next_idx, 1, chkReverse());
} else {
daNpcT_decIdx(i_num, prev_idx, 0, chkReverse());
daNpcT_incIdx(i_num, next_idx, 0, chkReverse());
}
prev_pos = getPntPos(prev_idx);
cur_pos = getPntPos(cur_idx);
next_pos = getPntPos(next_idx);
if (prev_idx == cur_idx) {
sp5C.set(0.0f, 0.0f, 100.0f);
mDoMtx_stack_c::YrotS(cLib_targetAngleY(&next_pos, &cur_pos));
mDoMtx_stack_c::multVec(&sp5C, &sp5C);
prev_pos = sp5C + cur_pos;
}
if (cur_idx == next_idx) {
sp5C.set(0.0f, 0.0f, 100.0f);
mDoMtx_stack_c::YrotS(cLib_targetAngleY(&prev_pos, &cur_pos));
mDoMtx_stack_c::multVec(&sp5C, &sp5C);
next_pos = sp5C + cur_pos;
}
f32 proj_pnt_x, proj_cur_x, proj_pnt_z, proj_cur_z, spC;
if (cM3d_Len2dSqPntAndSegLine(i_pnt.x, i_pnt.z, prev_pos.x, prev_pos.z,
next_pos.x, next_pos.z, &proj_pnt_x, &proj_pnt_z, &spC) &&
cM3d_Len2dSqPntAndSegLine(cur_pos.x, cur_pos.z, prev_pos.x, prev_pos.z,
next_pos.x, next_pos.z, &proj_cur_x, &proj_cur_z, &spC))
{
if (0x4000 < (u16)abs((s16)(cM_atan2s(next_pos.x - prev_pos.x, next_pos.z - prev_pos.z) -
cM_atan2s(proj_cur_x - proj_pnt_x, proj_cur_z - proj_pnt_z))))
{
return 1;
}
}
return 0;
}
/* ############################################################################################## */
/* 803B36A8-803B36B4 0107C8 000C+00 1/1 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,
};
/* 803B36B4-803B36D8 -00001 0024+00 1/2 0/0 0/0 .data @5258 */
SECTION_DATA static void* lit_5258[9] = {
(void*)(((char*)setParam__15daNpcT_JntAnm_cFP10fopAc_ac_cP8J3DModelP4cXyziiiffffffffffP4cXyz) +
0x3E8),
(void*)(((char*)setParam__15daNpcT_JntAnm_cFP10fopAc_ac_cP8J3DModelP4cXyziiiffffffffffP4cXyz) +
0x3F4),
(void*)(((char*)setParam__15daNpcT_JntAnm_cFP10fopAc_ac_cP8J3DModelP4cXyziiiffffffffffP4cXyz) +
0x428),
(void*)(((char*)setParam__15daNpcT_JntAnm_cFP10fopAc_ac_cP8J3DModelP4cXyziiiffffffffffP4cXyz) +
0x47C),
(void*)(((char*)setParam__15daNpcT_JntAnm_cFP10fopAc_ac_cP8J3DModelP4cXyziiiffffffffffP4cXyz) +
0x4A4),
(void*)(((char*)setParam__15daNpcT_JntAnm_cFP10fopAc_ac_cP8J3DModelP4cXyziiiffffffffffP4cXyz) +
0x4F0),
(void*)(((char*)setParam__15daNpcT_JntAnm_cFP10fopAc_ac_cP8J3DModelP4cXyziiiffffffffffP4cXyz) +
0x52C),
(void*)(((char*)setParam__15daNpcT_JntAnm_cFP10fopAc_ac_cP8J3DModelP4cXyziiiffffffffffP4cXyz) +
0x568),
(void*)(((char*)setParam__15daNpcT_JntAnm_cFP10fopAc_ac_cP8J3DModelP4cXyziiiffffffffffP4cXyz) +
0x568),
};
/* 803B36D8-803B371C 0107F8 0044+00 0/0 0/0 54/54 .data mCcDCyl__8daNpcT_c */
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 */
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 */
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 */
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 */
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 */
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
};
/* 801464D8-8014698C 140E18 04B4+00 1/1 0/0 0/0 .text chkPassed2__13daNpcT_Path_cF4cXyzP4cXyzii */
// NONMATCHING
int daNpcT_Path_c::chkPassed2(cXyz param_1, cXyz* param_2, int param_3, int param_4) {
cXyz cStack_80;
cXyz local_8c;
cXyz local_98;
cXyz cStack_a4;
cXyz cStack_b0;
cXyz cStack_bc;
u16 idx = getIdx();
u16 local_140;
u16 local_142;
u16 local_144;
local_144 = idx;
local_142 = idx;
if (chkClose() && getNumPnts() == param_3) {
daNpcT_decIdx(getNumPnts(), local_142, 1, chkReverse());
daNpcT_incIdx(getNumPnts(), local_144, 1, chkReverse());
} else {
daNpcT_decIdx(param_3, local_142, 0, chkReverse());
daNpcT_incIdx(param_3, local_144, 0, chkReverse());
}
local_140 = local_142;
if (chkClose() && getNumPnts() == param_3) {
daNpcT_decIdx(getNumPnts(), local_140, 1, chkReverse());
} else {
daNpcT_decIdx(param_3, local_140, 0, chkReverse());
}
cStack_80 = getPntPos(local_140);
local_8c = getPntPos(local_142);
local_98 = getPntPos(idx);
cStack_a4 = getPntPos(local_144);
if (local_142 == (u16)(idx & 0xffff)) {
cStack_b0 = cStack_a4 - local_8c;
} else {
cStack_b0 = local_98 - local_8c;
}
if (local_144 == (u16)(idx & 0xffff)) {
cStack_bc = cStack_a4 - local_8c;
} else {
cStack_bc = cStack_a4 - local_98;
}
daNpcT_Hermite_c adStack_70;
cXyz auStack_d4;
adStack_70.Set(field_0x1E * (1.0f / param_4));
hermite(local_8c, cStack_b0, local_98, cStack_bc, adStack_70,
auStack_d4);
param_2->x = auStack_d4.x;
param_2->y = auStack_d4.y;
param_2->z = auStack_d4.z;
f32 local_12c;
f32 local_130;
f32 local_134;
f32 local_138;
f32 auStack_13c;
if (cM3d_Len2dSqPntAndSegLine(param_1.x, param_1.z, local_8c.x, local_8c.z, local_98.x,
local_98.z, &local_12c, &local_134, &auStack_13c) &&
cM3d_Len2dSqPntAndSegLine(param_2->x, param_2->z, local_8c.x, local_8c.z, local_98.x,
local_98.z, &local_130, &local_138, &auStack_13c))
{
s16 sVar10 = cM_atan2s(local_98.x - local_8c.x,
local_98.z - local_8c.z);
s16 sVar11 = cM_atan2s(local_130 - local_12c,
local_138 - local_134);
s16 diff = sVar10 - sVar11;
u16 uVar4 = abs(diff);
if (uVar4 > 0x4000) {
return 1;
}
}
return 0;
}
/* 8014698C-80146C98 1412CC 030C+00 1/1 0/0 0/0 .text
* daNpcT_chkPassed__F4cXyzP4dPntUsUsiiP4cXyzPiPi */
static void daNpcT_chkPassed(cXyz param_0, dPnt* param_1, u16 param_2, u16 param_3, int param_4,
int param_5, cXyz* param_6, int* param_7, int* param_8) {
// NONMATCHING
}
/* 80146C98-80146CD8 1415D8 0040+00 0/0 0/0 121/121 .text initialize__15daNpcT_JntAnm_cFv
*/
void daNpcT_JntAnm_c::initialize() {
mActrMngr.initialize();
memset(&field_0x14, 0, (u32)&field_0x158 - (u32)&field_0x14);
}
/* ############################################################################################## */
/* 80453408-80453410 001A08 0008+00 8/8 0/0 0/0 .sdata2 @4723 */
SECTION_SDATA2 static f64 lit_4723 = 0.5;
/* 80453410-80453418 001A10 0008+00 8/8 0/0 0/0 .sdata2 @4724 */
SECTION_SDATA2 static f64 lit_4724 = 3.0;
/* 80453418-80453420 001A18 0008+00 8/8 0/0 0/0 .sdata2 @4725 */
SECTION_SDATA2 static u8 lit_4725[8] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 80453420-80453424 001A20 0004+00 5/5 0/0 0/0 .sdata2 @5239 */
SECTION_SDATA2 static f32 lit_5239 = 182.04444885253906f;
/* 80453424-80453428 001A24 0004+00 2/2 0/0 0/0 .sdata2 @5240 */
SECTION_SDATA2 static f32 lit_5240 = 9.58738019107841e-05f;
/* 80453428-8045342C 001A28 0004+00 2/2 0/0 0/0 .sdata2 @5241 */
SECTION_SDATA2 static f32 lit_5241 = 1000.0f;
/* 80146CD8-80147858 141618 0B80+00 1/0 0/0 52/52 .text
* setParam__15daNpcT_JntAnm_cFP10fopAc_ac_cP8J3DModelP4cXyziiiffffffffffP4cXyz */
void daNpcT_JntAnm_c::setParam(fopAc_ac_c* param_0, J3DModel* param_1, cXyz* param_2,
int param_3, int param_4, int param_5, f32 param_6, f32 param_7,
f32 param_8, f32 param_9, f32 param_10, f32 param_11,
f32 param_12, f32 param_13, f32 param_14, f32 param_15,
cXyz* param_16) {
// NONMATCHING
}
/* 80147858-80147C38 142198 03E0+00 1/1 0/0 0/0 .text calc__15daNpcT_JntAnm_cFf */
void daNpcT_JntAnm_c::calc(f32 param_0) {
// NONMATCHING
}
/* ############################################################################################## */
/* 8045342C-80453430 001A2C 0004+00 1/1 0/0 0/0 .sdata2 @5410 */
SECTION_SDATA2 static f32 lit_5410 = 3.1415927410125732f;
/* 80147C38-80147DCC 142578 0194+00 0/0 0/0 52/52 .text calcJntRad__15daNpcT_JntAnm_cFfff
*/
void daNpcT_JntAnm_c::calcJntRad(f32 param_0, f32 param_1, f32 param_2) {
// NONMATCHING
}
/* 80147DCC-80147E3C 14270C 0070+00 0/0 0/0 28/28 .text
* setParam__19daNpcT_DmgStagger_cFP10fopAc_ac_cP10fopAc_ac_cs */
void daNpcT_DmgStagger_c::setParam(fopAc_ac_c* i_actor1, fopAc_ac_c* i_actor2, s16 i_angle) {
if (i_actor2 && i_actor1) {
field_0xc[0] = 10922.0f;
field_0xc[1] = 7281.0f;
field_0x16 = fopAcM_searchActorAngleY(i_actor1, i_actor2) - i_angle;
mStagger = 0x4000;
}
}
/* ############################################################################################## */
/* 80453438-8045343C 001A38 0004+00 1/1 0/0 0/0 .sdata2 @5459 */
SECTION_SDATA2 static f32 lit_5459 = 1.0f / 10.0f;
/* 8045343C-80453440 001A3C 0004+00 1/1 0/0 0/0 .sdata2 @5460 */
SECTION_SDATA2 static f32 lit_5460 = 125.0f;
/* 80147E3C-80147FA4 14277C 0168+00 0/0 0/0 47/47 .text calc__19daNpcT_DmgStagger_cFi */
void daNpcT_DmgStagger_c::calc(int param_0) {
// NONMATCHING
}
/* 80147FA4-80147FD4 1428E4 0030+00 0/0 0/0 53/53 .text
* tgHitCallBack__8daNpcT_cFP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */
void daNpcT_c::tgHitCallBack(fopAc_ac_c* param_0, dCcD_GObjInf* param_1, fopAc_ac_c* param_2,
dCcD_GObjInf* param_3) {
// NONMATCHING
}
/* ############################################################################################## */
/* 80425708-804257D0 052428 00C8+00 4/4 0/0 40/40 .bss mFindActorPtrs__8daNpcT_c */
fopAc_ac_c* daNpcT_c::mFindActorPtrs[50];
/* 80450FD8-80450FDC 0004D8 0002+02 4/4 0/0 2/2 .sbss mSrchName__8daNpcT_c */
s16 daNpcT_c::mSrchName;
/* 80450FDC-80450FE0 0004DC 0004+00 4/4 0/0 42/42 .sbss mFindCount__8daNpcT_c */
s32 daNpcT_c::mFindCount;
/* 80147FD4-80148058 142914 0084+00 3/3 0/0 2/2 .text srchActor__8daNpcT_cFPvPv */
int daNpcT_c::srchActor(void* actor, void* param_1) {
if (mFindCount < 50 && fopAcM_IsActor(actor) && actor != param_1) {
if (mSrchName == fopAcM_GetName((fopAc_ac_c*)actor)) {
mFindActorPtrs[mFindCount] = (fopAc_ac_c*)actor;
mFindCount++;
}
}
return 0;
}
/* 80148058-80148094 142998 003C+00 1/1 0/0 7/7 .text getTrnsfrmAnmP__8daNpcT_cFPCci */
J3DAnmTransform* daNpcT_c::getTrnsfrmAnmP(char const* arcName, int fileIdx) {
return (J3DAnmTransform*)dComIfG_getObjectRes(arcName, fileIdx);
}
/* 80148094-801480D0 1429D4 003C+00 1/1 0/0 11/11 .text getTrnsfrmKeyAnmP__8daNpcT_cFPCci
*/
J3DAnmTransformKey* daNpcT_c::getTrnsfrmKeyAnmP(char const* arcName, int fileIdx) {
return (J3DAnmTransformKey*)dComIfG_getObjectRes(arcName, fileIdx);
}
/* 801480D0-8014810C 142A10 003C+00 1/1 0/0 1/1 .text getTexPtrnAnmP__8daNpcT_cFPCci */
J3DAnmTexPattern* daNpcT_c::getTexPtrnAnmP(char const* arcName, int fileIdx) {
return (J3DAnmTexPattern*)dComIfG_getObjectRes(arcName, fileIdx);
}
/* 8014810C-80148148 142A4C 003C+00 1/1 0/0 7/7 .text getTexSRTKeyAnmP__8daNpcT_cFPCci */
J3DAnmTextureSRTKey* daNpcT_c::getTexSRTKeyAnmP(char const* arcName, int fileIdx) {
return (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(arcName, fileIdx);
}
/* 80148148-80148184 142A88 003C+00 0/0 0/0 9/9 .text getTevRegKeyAnmP__8daNpcT_cFPCci */
J3DAnmTevRegKey* daNpcT_c::getTevRegKeyAnmP(char const* arcName, int fileIdx) {
return (J3DAnmTevRegKey*)dComIfG_getObjectRes(arcName, fileIdx);
}
/* 80148184-801481C0 142AC4 003C+00 0/0 0/0 2/2 .text getColorAnmP__8daNpcT_cFPCci */
J3DAnmColor* daNpcT_c::getColorAnmP(char const* arcName, int fileIdx) {
return (J3DAnmColor*)dComIfG_getObjectRes(arcName, fileIdx);
}
/* 801481C0-80148204 142B00 0044+00 1/1 0/0 0/0 .text setBckAnm__8daNpcT_cFP15J3DAnmTransformfiiib
*/
void daNpcT_c::setBckAnm(J3DAnmTransform* bck, f32 rate, int attr, int startF, int endF,
bool modify) {
mBckAnm.init(bck, TRUE, attr, rate, startF, endF, modify);
}
/* 80148204-801482F8 142B44 00F4+00 1/1 0/0 1/1 .text
* setMcaMorfAnm__8daNpcT_cFP18J3DAnmTransformKeyffiii */
int daNpcT_c::setMcaMorfAnm(J3DAnmTransformKey* bck, f32 morf, f32 frame, int mode, int startF,
int endF) {
f32 start = startF;
f32 end = endF;
mpMorf[0]->setAnm(bck, mode, frame, morf, start, end);
if (mpMorf[1] != NULL) {
mpMorf[1]->setAnm(bck, mode, frame, morf, start, end);
}
return 1;
}
/* 801482F8-80148338 142C38 0040+00 1/1 0/0 1/1 .text
* setBtpAnm__8daNpcT_cFP16J3DAnmTexPatternP12J3DModelDatafi */
void daNpcT_c::setBtpAnm(J3DAnmTexPattern* param_0, J3DModelData* modelData, f32 param_2,
int param_3) {
mBtpAnm.init(modelData, param_0, 1, param_3, param_2, 0, -1);
}
/* 80148338-80148378 142C78 0040+00 1/1 0/0 6/6 .text
* setBtkAnm__8daNpcT_cFP19J3DAnmTextureSRTKeyP12J3DModelDatafi */
void daNpcT_c::setBtkAnm(J3DAnmTextureSRTKey* param_0, J3DModelData* modelData, f32 param_2,
int param_3) {
mBtkAnm.init(modelData, param_0, 1, param_3, param_2, 0, -1);
}
/* 80148378-801483B8 142CB8 0040+00 0/0 0/0 9/9 .text
* setBrkAnm__8daNpcT_cFP15J3DAnmTevRegKeyP12J3DModelDatafi */
void daNpcT_c::setBrkAnm(J3DAnmTevRegKey* param_0, J3DModelData* modelData, f32 param_2,
int param_3) {
mBrkAnm.init(modelData, param_0, 1, param_3, param_2, 0, -1);
}
/* 801483B8-801483F8 142CF8 0040+00 0/0 0/0 2/2 .text
* setBpkAnm__8daNpcT_cFP11J3DAnmColorP12J3DModelDatafi */
void daNpcT_c::setBpkAnm(J3DAnmColor* param_0, J3DModelData* modelData, f32 param_2, int param_3) {
mBpkAnm.init(modelData, param_0, 1, param_3, param_2, 0, -1);
}
/* 801483F8-801484AC 142D38 00B4+00 0/0 0/0 58/58 .text loadRes__8daNpcT_cFPCScPPCc */
int daNpcT_c::loadRes(s8 const* resNoList, char const** resNameList) {
for (int resLoad_cnt = 0, i = 0; i < 10; i++) {
if (resNoList[i] == -1) {
if (i != resLoad_cnt) {
break;
}
return cPhs_COMPLEATE_e;
}
int phase_state = dComIfG_resLoad(&field_0x8e0[i], resNameList[resNoList[i]]);
if (phase_state == cPhs_COMPLEATE_e) {
resLoad_cnt++;
}
if (phase_state == cPhs_ERROR_e || phase_state == cPhs_UNK3_e) {
return cPhs_ERROR_e;
}
}
return cPhs_INIT_e;
}
/* 801484AC-8014852C 142DEC 0080+00 0/0 0/0 58/58 .text deleteRes__8daNpcT_cFPCScPPCc */
void daNpcT_c::deleteRes(s8 const* resNoList, char const** resNameList) {
for (int i = 0; i < 10 && resNoList[i] != -1; i++) {
dComIfG_resDelete(&field_0x8e0[i], resNameList[resNoList[i]]);
}
}
/* ############################################################################################## */
/* 80453440-80453444 001A40 0004+00 3/3 0/0 0/0 .sdata2 @5667 */
SECTION_SDATA2 static f32 lit_5667 = -1000000000.0f;
/* 8014852C-8014886C 142E6C 0340+00 0/0 0/0 59/59 .text execute__8daNpcT_cFv */
int daNpcT_c::execute() {
setParam();
if (!evtProc()) {
action();
}
beforeMove();
fopAcM_posMoveF(this, field_0x864.GetCCMoveP());
field_0x68c.CrrPos(dComIfG_Bgsp());
field_0x930 = field_0x68c.m_gnd;
field_0xdca = fopAcM_getPolygonAngle(field_0x930, current.angle.y);
field_0xdf4 = field_0x68c.GetGroundH();
if (FLOAT_LABEL(lit_5667) != field_0xdf4) {
field_0xda8 = dKy_pol_sound_get(&field_0x68c.m_gnd);
field_0xe24 = dComIfGp_getReverb(field_0x864.GetRoomId());
if (field_0x68c.ChkWaterHit() && field_0x68c.m_wtr.GetHeight() > field_0xdf4) {
field_0xda8 = dKy_pol_sound_get(&field_0x68c.m_wtr);
}
}
afterMoved();
if (FLOAT_LABEL(lit_5667) != field_0xdf4) {
setEnvTevColor();
setRoomNo();
}
if (field_0xb50.checkEntryNewMotion()) {
ctrlFaceMotion();
ctrlSubFaceMotion(1);
}
if (field_0xb74.checkEntryNewMotion()) {
ctrlMotion();
}
playAllAnm();
ctrlFaceMotion();
ctrlSubFaceMotion(0);
ctrlMotion();
setAttnPos();
cLib_chaseF(&field_0xdfc, 0.0f, 1.0f);
twilight();
setCollision();
if (!field_0xe2c) {
if ((field_0xe33 && dComIfGp_getEvent().isOrderOK()) || dComIfGp_event_runCheck() == 0) {
evtOrder();
}
}
clrParam();
decTmr();
return 1;
}
/* ############################################################################################## */
/* 80453444-80453448 001A44 0004+00 3/3 0/0 0/0 .sdata2 @5794 */
SECTION_SDATA2 static f32 lit_5794 = 20.0f;
/* 8014886C-80148C70 1431AC 0404+00 0/0 0/0 58/58 .text draw__8daNpcT_cFiifP11_GXColorS10fiii */
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 = mpMorf[0]->getModel();
J3DModelData* modelData = model->getModelData();
field_0xe34 = 1;
if (drawDbgInfo() || checkHide() || field_0xe2b) {
return 1;
}
tevStr.mFogColor.r = 0;
tevStr.mFogColor.g = 0;
tevStr.mFogColor.b = 0;
tevStr.mFogColor.a = 0;
if (i_color != NULL) {
tevStr.mFogColor.r = i_color->r;
tevStr.mFogColor.g = i_color->g;
tevStr.mFogColor.b = i_color->b;
tevStr.mFogColor.a = i_color->a;
}
if (field_0xdb8 != 0 && mTimer != 0) {
f32 r = (f32)mTimer / (f32)field_0xdb8;
if (cM3d_IsZero(r) == false) {
tevStr.mFogColor.r = r * 20.0f;
}
} else if (param_0 != 0) {
tevStr.mFogColor.g = 20;
}
if (field_0xd98 & 0x800) {
mBtpAnm.entry(modelData);
}
if (field_0xd98 & 0x80) {
mBtkAnm.entry(modelData);
}
if (field_0xd98 & 0x100) {
mBrkAnm.entry(modelData);
}
if (field_0xd98 & 0x200) {
mBpkAnm.entry(modelData);
}
if (i_setEffMtx) {
fopAcM_setEffectMtx(this, modelData);
}
if (i_drawGhost) {
drawGhost();
} else if (field_0xa89 != 0) {
g_env_light.settingTevStruct(4, &current.pos, &tevStr);
g_env_light.setLightTevColorType_MAJI(model, &tevStr);
dComIfGd_setListDark();
mpMorf[0]->entryDL();
dComIfGd_setList();
} else {
g_env_light.settingTevStruct(0, &current.pos, &tevStr);
g_env_light.setLightTevColorType_MAJI(model, &tevStr);
mpMorf[0]->entryDL();
}
if (field_0xd98 & 0x800) {
mBtpAnm.remove(modelData);
}
if (field_0xd98 & 0x80) {
mBtkAnm.remove(modelData);
}
if (field_0xd98 & 0x100) {
mBrkAnm.remove(modelData);
}
if (field_0xd98 & 0x200) {
mBpkAnm.remove(modelData);
}
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, &tevStr, 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());
}
}
drawOtherMdl();
return 1;
}
/* 80148C70-80148CCC 1435B0 005C+00 1/1 0/0 58/58 .text setEnvTevColor__8daNpcT_cFv */
void daNpcT_c::setEnvTevColor() {
tevStr.mEnvrIdxOverride = dComIfG_Bgsp().GetPolyColor(field_0x930);
tevStr.mRoomNo = dComIfG_Bgsp().GetRoomId(field_0x930);
}
/* 80148CCC-80148D10 14360C 0044+00 1/1 0/0 58/58 .text setRoomNo__8daNpcT_cFv */
void daNpcT_c::setRoomNo() {
int roomId = dComIfG_Bgsp().GetRoomId(field_0x930);
fopAcM_SetRoomNo(this, roomId);
field_0x864.SetRoomId(roomId);
}
/* 80148D10-80148DD0 143650 00C0+00 1/1 0/0 0/0 .text checkEndAnm__8daNpcT_cFf */
int daNpcT_c::checkEndAnm(f32 param_0) {
switch (mpMorf[0]->getPlayMode()) {
case 2:
return mpMorf[0]->isLoop();
case 0:
case 1:
return mpMorf[0]->isStop() && cM3d_IsZero(mpMorf[0]->getPlaySpeed()) &&
!cM3d_IsZero(param_0);
case 3:
case 4:
break;
}
return 0;
}
/* 80148DD0-80148E4C 143710 007C+00 1/1 0/0 0/0 .text checkEndAnm__8daNpcT_cFP12J3DFrameCtrlf */
int daNpcT_c::checkEndAnm(J3DFrameCtrl* param_0, f32 param_1) {
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;
}
/* 80148E4C-801490D4 14378C 0288+00 1/1 0/0 0/0 .text playAllAnm__8daNpcT_cFv */
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 = mpMorf[0]->getPlaySpeed();
if (field_0xd98 & 0x1) {
mpMorf[0]->setPlaySpeed(0.0f);
mpMorf[0]->play(field_0xda8, field_0xe24);
mpMorf[0]->setPlaySpeed(morf_speed);
if (mpMorf[1] != NULL) {
mpMorf[1]->setPlaySpeed(0.0f);
mpMorf[1]->play(0, 0);
mpMorf[1]->setPlaySpeed(morf_speed);
}
} else {
mpMorf[0]->play(field_0xda8, field_0xe24);
if (mpMorf[1] != NULL) {
mpMorf[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;
}
/* 801490D4-80149190 143A14 00BC+00 1/0 1/0 55/0 .text ctrlBtk__8daNpcT_cFv */
void daNpcT_c::ctrlBtk() {
// NONMATCHING
}
/* 80149190-8014924C 143AD0 00BC+00 0/0 0/0 57/57 .text setMtx__8daNpcT_cFv */
void daNpcT_c::setMtx() {
J3DModel* model = mpMorf[0]->getModel();
J3DModelData* modelData = model->getModelData();
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(field_0xd78);
mDoMtx_stack_c::scaleM(scale);
model->setBaseTRMtx(mDoMtx_stack_c::get());
model->setUserArea((u32)this);
mpMorf[0]->onMorfNone();
if (cM3d_IsZero(field_0xdfc) != 0) {
mpMorf[0]->offMorfNone();
}
if (field_0xd98 & 0x400) {
mBckAnm.getBckAnm()->setFrame(mBckAnm.getFrame());
}
mpMorf[0]->modelCalc();
}
/* 8014924C-80149300 143B8C 00B4+00 1/1 0/0 0/0 .text ctrlFaceMotion__8daNpcT_cFv */
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 (l_float < 0.0f) {
mpMorf[0]->setMorf(field_0xa80);
field_0xdfc = field_0xa80;
if (mpMorf[1]) {
mpMorf[1]->setMorf(field_0xa80);
}
} else {
mpMorf[0]->setMorf(l_float);
field_0xdfc = l_float;
if (mpMorf[1]) {
mpMorf[1]->setMorf(l_float);
}
}
}
}
/* 80149300-801493B8 143C40 00B8+00 1/1 0/0 0/0 .text ctrlMotion__8daNpcT_cFv */
void daNpcT_c::ctrlMotion() {
int l_int;
int l_int2;
f32 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);
field_0xdfc = 0.0f;
if (field_0xa88) {
mpMorf[0]->setMorf(0.0f);
field_0xdfc = 0.0f;
if (mpMorf[1]) {
mpMorf[1]->setMorf(0.0f);
}
}
}
}
/* 801493B8-8014951C 143CF8 0164+00 1/1 0/0 2/2 .text ctrlMsgAnm__8daNpcT_cFPiPiP10fopAc_ac_ci */
int daNpcT_c::ctrlMsgAnm(int* param_0, int* param_1, fopAc_ac_c* param_2, int param_3) {
*param_0 = -1;
*param_1 = -1;
if (param_3 != 0 || eventInfo.checkCommandTalk() || field_0xdac != -1) {
fopAc_ac_c* talk_partner = dComIfGp_event_getTalkPartner();
dMsgObject_c* talk_partner_conv = (dMsgObject_c*)talk_partner;
if (talk_partner == param_2) {
msg_class* conv_actor = talk_partner_conv->getActor();
u16 actor_command = conv_actor->mode;
if (actor_command == 2 || actor_command == 3) {
mMsgId = -1;
} else if (actor_command == 6) {
if (conv_actor->msg_idx != mMsgId) {
*param_0 = dComIfGp_getMesgFaceAnimeAttrInfo();
*param_1 = dComIfGp_getMesgAnimeAttrInfo();
mMsgId = conv_actor->msg_idx;
}
if (dMsgObject_c::isMouthCheck()) {
field_0xd98 &= ~0x4000;
} else {
field_0xd98 |= 0x4000;
}
field_0xdb4 = 0x14;
} else {
if (field_0xd98 & 0x4000) {
field_0xd98 &= ~0x4000;
}
mMsgId = -1;
}
} else {
mMsgId = -1;
if (field_0xdb4) {
field_0xdb4 = 1;
}
}
}
if (param_3 == 0) {
// cLib_calcTimer
func_8014D348(&field_0xdb4);
}
return field_0xdb4;
}
/* 8014951C-8014997C 143E5C 0460+00 1/0 1/0 59/0 .text ctrlJoint__8daNpcT_cFP8J3DJointP8J3DModel
*/
void daNpcT_c::ctrlJoint(J3DJoint* param_0, J3DModel* param_1) {
// NONMATCHING
}
/* ############################################################################################## */
/* 80392710-80392710 01ED70 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80392710 = "DEFAULT_GETITEM";
#pragma pop
/* 8014997C-80149BB4 1442BC 0238+00 1/0 1/0 58/0 .text evtProc__8daNpcT_cFv */
int daNpcT_c::evtProc() {
// NONMATCHING
}
/* 80149BB4-80149D7C 1444F4 01C8+00 1/0 1/0 60/0 .text setFootPos__8daNpcT_cFv */
void daNpcT_c::setFootPos() {
// NONMATCHING
}
/* 80149D7C-8014A05C 1446BC 02E0+00 1/0 1/0 60/0 .text setFootPrtcl__8daNpcT_cFP4cXyzff
*/
void daNpcT_c::setFootPrtcl(cXyz* param_0, f32 param_1, f32 param_2) {
// NONMATCHING
}
/* 8014A05C-8014A064 14499C 0008+00 1/0 1/0 60/0 .text checkCullDraw__8daNpcT_cFv */
bool daNpcT_c::checkCullDraw() {
return false;
}
/* 8014A064-8014A0B0 1449A4 004C+00 1/0 1/0 60/0 .text twilight__8daNpcT_cFv */
void daNpcT_c::twilight() {
if (field_0xa89 != 0) {
attention_info.flags |= 0x400000;
field_0xe2b = 0;
attention_info.flags |= 0x800000;
setHitodamaPrtcl();
}
}
/* 8014A0B0-8014A224 1449F0 0174+00 1/0 1/0 59/0 .text evtOrder__8daNpcT_cFv */
void daNpcT_c::evtOrder() {
// NONMATCHING
}
/* 8014A224-8014A324 144B64 0100+00 0/0 2/2 81/81 .text evtChange__8daNpcT_cFv */
void daNpcT_c::evtChange() {
// NONMATCHING
}
/* 8014A324-8014A388 144C64 0064+00 1/0 1/0 60/0 .text clrParam__8daNpcT_cFv */
void daNpcT_c::clrParam() {
field_0xd7e = field_0xd78;
mCutType = 0;
memset(&field_0xe30, 0, (u32)&field_0xe38 - (u32)&field_0xe30);
field_0xba8.clrDirectFlag();
}
/* 8014A388-8014A628 144CC8 02A0+00 1/1 0/0 57/57 .text setFaceMotionAnm__8daNpcT_cFib */
bool daNpcT_c::setFaceMotionAnm(int param_0, bool param_1) {
// NONMATCHING
}
/* 8014A628-8014A908 144F68 02E0+00 1/0 1/0 59/0 .text setMotionAnm__8daNpcT_cFifi */
bool daNpcT_c::setMotionAnm(int param_0, f32 param_1, int param_2) {
// NONMATCHING
}
/* ############################################################################################## */
/* 80453448-8045344C 001A48 0004+00 1/1 0/0 0/0 .sdata2 @6667 */
SECTION_SDATA2 static f32 lit_6667 = 300.0f;
/* 8014A908-8014A99C 145248 0094+00 0/0 0/0 40/40 .text setPos__8daNpcT_cF4cXyz */
void daNpcT_c::setPos(cXyz i_pos) {
i_pos.y += 300.0f;
field_0x930.SetPos(&i_pos);
i_pos.y = dComIfG_Bgsp().GroundCross(&field_0x930);
current.pos = i_pos;
old.pos = current.pos;
}
/* 8014A99C-8014AA18 1452DC 007C+00 0/0 0/0 29/29 .text setAngle__8daNpcT_cF5csXyz */
void daNpcT_c::setAngle(csXyz i_angle) {
current.angle = i_angle;
shape_angle = current.angle;
field_0xd78 = current.angle;
field_0xd7e = field_0xd78;
old.angle = current.angle;
}
/* 8014AA18-8014AA40 145358 0028+00 0/0 0/0 138/138 .text setAngle__8daNpcT_cFs */
void daNpcT_c::setAngle(s16 i_angle) {
current.angle.y = i_angle;
shape_angle.y = current.angle.y;
field_0xd78.y = current.angle.y;
field_0xd7e.y = field_0xd78.y;
old.angle.y = current.angle.y;
}
/* 8014AA40-8014AAD0 145380 0090+00 0/0 0/0 33/33 .text hitChk__8daNpcT_cFP12dCcD_GObjInfUl */
fopAc_ac_c* daNpcT_c::hitChk(dCcD_GObjInf* i_objInf, u32 param_1) {
dCcD_Stts* stts = (dCcD_Stts*)i_objInf->GetStts();
stts->Move();
if (mTimer == 0) {
fopAc_ac_c* hitAc = i_objInf->GetTgHitAc();
if (hitAc != NULL) {
if (fopAcM_GetName(hitAc) == PROC_NPC_TK && param_1 & 1) {
((daNPC_TK_c*)hitAc)->setBump();
return hitAc;
}
return hitAc;
}
}
return NULL;
}
/* 8014AAD0-8014ABD0 145410 0100+00 0/0 0/0 27/27 .text setDamage__8daNpcT_cFiii */
void daNpcT_c::setDamage(int param_0, int param_1, int param_2) {
// NONMATCHING
}
/* ############################################################################################## */
/* 8045344C-80453450 001A4C 0004+00 7/7 0/0 0/0 .sdata2 @6775 */
SECTION_SDATA2 static f32 lit_6775 = 180.0f;
/* 8014ABD0-8014ACF0 145510 0120+00 2/2 0/0 53/53 .text chkActorInSight__8daNpcT_cFP10fopAc_ac_cfs
*/
BOOL daNpcT_c::chkActorInSight(fopAc_ac_c* param_0, f32 param_1, s16 param_2) {
// NONMATCHING
}
/* 8014ACF0-8014ADA0 145630 00B0+00 2/2 0/0 12/12 .text chkPointInArea__8daNpcT_cF4cXyz4cXyzfffs
*/
BOOL daNpcT_c::chkPointInArea(cXyz param_0, cXyz param_1, f32 param_2, f32 param_3, f32 param_4,
s16 param_5) {
// NONMATCHING
}
/* 8014ADA0-8014AE1C 1456E0 007C+00 1/1 0/0 1/1 .text chkPointInArea__8daNpcT_cF4cXyz4cXyz4cXyzs
*/
BOOL daNpcT_c::chkPointInArea(cXyz param_0, cXyz param_1, cXyz param_2, s16 param_3) {
// NONMATCHING
}
/* ############################################################################################## */
/* 80453450-80453454 001A50 0004+00 2/2 0/0 0/0 .sdata2 @6904 */
SECTION_SDATA2 static f32 lit_6904 = 30.0f;
/* 80453454-80453458 001A54 0004+00 2/2 0/0 0/0 .sdata2 @6905 */
SECTION_SDATA2 static f32 lit_6905 = 45.0f;
/* 80453458-8045345C 001A58 0004+00 2/2 0/0 0/0 .sdata2 @6906 */
SECTION_SDATA2 static f32 lit_6906 = 60.0f;
/* 8045345C-80453460 001A5C 0004+00 2/2 0/0 0/0 .sdata2 @6907 */
SECTION_SDATA2 static f32 lit_6907 = 90.0f;
/* 80453460-80453464 001A60 0004+00 2/2 0/0 0/0 .sdata2 @6908 */
SECTION_SDATA2 static f32 lit_6908 = 110.0f;
/* 80453464-80453468 001A64 0004+00 2/2 0/0 0/0 .sdata2 @6909 */
SECTION_SDATA2 static f32 lit_6909 = 135.0f;
/* 8014AE1C-8014B010 14575C 01F4+00 1/1 0/0 0/0 .text chkFindActor__8daNpcT_cFP10fopAc_ac_cis */
void daNpcT_c::chkFindActor(fopAc_ac_c* param_0, int param_1, s16 param_2) {
// NONMATCHING
}
/* 8014B010-8014B024 145950 0014+00 5/5 1/1 0/0 .text getDistTable__12dAttention_cFi */
dist_entry& dAttention_c::getDistTable(int param_0) {
// NONMATCHING
}
/* 8014B024-8014B0C8 145964 00A4+00 1/1 0/0 0/0 .text chkWolfAction__8daNpcT_cFv */
void daNpcT_c::chkWolfAction() {
// NONMATCHING
}
/* 8014B0C8-8014B338 145A08 0270+00 0/0 0/0 2/2 .text chkFindWolf__8daNpcT_cFsiiffffi */
void daNpcT_c::chkFindWolf(s16 param_0, int param_1, int param_2, f32 param_3, f32 param_4,
f32 param_5, f32 param_6, int param_7) {
// NONMATCHING
}
/* 8014B338-8014B3EC 145C78 00B4+00 0/0 0/0 75/75 .text srchPlayerActor__8daNpcT_cFv */
BOOL daNpcT_c::srchPlayerActor() {
// NONMATCHING
}
/* 8014B3EC-8014B4A4 145D2C 00B8+00 3/3 0/0 5/5 .text getAttnPos__8daNpcT_cFP10fopAc_ac_c
*/
void daNpcT_c::getAttnPos(fopAc_ac_c* param_0) {
// NONMATCHING
}
/* ############################################################################################## */
/* 80453468-8045346C 001A68 0004+00 4/4 0/0 0/0 .sdata2 @7089 */
SECTION_SDATA2 static f32 lit_7089 = 0.0054931640625f;
/* 8045346C-80453470 001A6C 0004+00 4/4 0/0 0/0 .sdata2 @7090 */
SECTION_SDATA2 static f32 lit_7090 = 8.0f;
/* 80453470-80453474 001A70 0004+00 2/2 0/0 0/0 .sdata2 @7091 */
SECTION_SDATA2 static f32 lit_7091 = 16384.0f;
/* 8014B4A4-8014B648 145DE4 01A4+00 1/1 0/0 1/1 .text turn__8daNpcT_cFsii */
void daNpcT_c::turn(s16 param_0, int param_1, int param_2) {
// NONMATCHING
}
/* 8014B648-8014B808 145F88 01C0+00 0/0 0/0 177/177 .text step__8daNpcT_cFsiiii */
int daNpcT_c::step(s16 param_0, int param_1, int param_2, int param_3, int param_4) {
// NONMATCHING
}
/* ############################################################################################## */
/* 80453474-80453478 001A74 0004+00 1/1 0/0 0/0 .sdata2 @7222 */
SECTION_SDATA2 static f32 lit_7222 = 17.0f / 20.0f;
/* 8014B808-8014BB00 146148 02F8+00 0/0 0/0 11/11 .text calcSpeedAndAngle__8daNpcT_cF4cXyziss */
void daNpcT_c::calcSpeedAndAngle(cXyz param_0, int param_1, s16 param_2, s16 param_3) {
// NONMATCHING
}
/* ############################################################################################## */
/* 80453478-8045347C 001A78 0004+00 1/1 0/0 0/0 .sdata2 @7242 */
SECTION_SDATA2 static f32 lit_7242 = 6.0f;
/* 8014BB00-8014BBF0 146440 00F0+00 0/0 0/0 2/2 .text getActorDistance__8daNpcT_cFP10fopAc_ac_cii
*/
void daNpcT_c::getActorDistance(fopAc_ac_c* param_0, int param_1, int param_2) {
// NONMATCHING
}
/* 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);
field_0xdc8 = fopAcM_searchPlayerAngleY(this);
if (checkStep()) {
mStepNo = 0;
}
f32 tmp = 0.0f;
speedF = tmp;
speed.set(tmp, tmp, tmp);
return 1;
}
/* 8014BC78-8014BE2C 1465B8 01B4+00 0/0 0/0 169/169 .text talkProc__8daNpcT_cFPiiPP10fopAc_ac_ci
*/
int daNpcT_c::talkProc(int* param_0, int param_1, fopAc_ac_c** param_2, int param_3) {
// NONMATCHING
}
/* ############################################################################################## */
/* 8045347C-80453480 001A7C 0004+00 2/2 0/0 0/0 .sdata2 @7337 */
SECTION_SDATA2 static f32 lit_7337 = 1000000000.0f;
/* 8014BE2C-8014BEE4 14676C 00B8+00 0/0 0/0 25/25 .text getNearestActorP__8daNpcT_cFs */
fopAc_ac_c* daNpcT_c::getNearestActorP(s16 param_0) {
fopAc_ac_c* actor = NULL;
f32 minDistance = 1000000000.0f;
mFindCount = 0;
mSrchName = param_0;
fpcEx_Search((fpcLyIt_JudgeFunc)srchActor, this);
for (s32 i = 0; i < mFindCount; i++) {
f32 dist = fopAcM_searchActorDistance(this, mFindActorPtrs[i]);
if (dist < minDistance) {
minDistance = fopAcM_searchActorDistance(this, mFindActorPtrs[i]);
actor = mFindActorPtrs[i];
}
}
return actor;
}
/* 8014BEE4-8014BFB0 146824 00CC+00 0/0 0/0 12/12 .text getEvtAreaTagP__8daNpcT_cFii */
fopAc_ac_c* daNpcT_c::getEvtAreaTagP(int param_0, int param_1) {
// NONMATCHING
}
/* 8014BFB0-8014C030 1468F0 0080+00 0/0 0/0 5/5 .text getShopItemTagP__8daNpcT_cFv */
fopAc_ac_c* daNpcT_c::getShopItemTagP() {
mFindCount = 0;
mSrchName = 0x127;
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;
}
/* ############################################################################################## */
/* 80453480-80453484 001A80 0004+00 1/1 0/0 0/0 .sdata2 id$7388 */
SECTION_SDATA2 static u8 id_7388[4] = {
0x84,
0x97,
0x84,
0x98,
};
/* 80453484-80453488 001A84 0004+00 2/2 0/0 0/0 .sdata2 @7442 */
SECTION_SDATA2 static f32 lit_7442 = 4.0f;
/* 8014C030-8014C200 146970 01D0+00 1/1 0/0 0/0 .text setHitodamaPrtcl__8daNpcT_cFv */
void daNpcT_c::setHitodamaPrtcl() {
// NONMATCHING
}
/* ############################################################################################## */
/* 80453488-8045348C 001A88 0004+00 1/1 0/0 0/0 .sdata2 @7550 */
SECTION_SDATA2 static f32 lit_7550 = 608.0f;
/* 8045348C-80453490 001A8C 0004+00 1/1 0/0 0/0 .sdata2 @7551 */
SECTION_SDATA2 static f32 lit_7551 = 448.0f;
/* 8014C200-8014C384 146B40 0184+00 0/0 0/0 2/2 .text
* daNpcT_chkActorInScreen__FP10fopAc_ac_cfffffffi */
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) {
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);
mDoMtx_stack_c::copy(fopAcM_GetMtx(i_ActorP));
mDoMtx_stack_c::transM(0.0f, param_7, 0.0f);
cMtx_multVecArray((MtxP)&mDoMtx_stack_c::now, pos_array, pos_array, 8);
if (param_8) {
return false;
}
for (int i = 0; i < 8; i++) {
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;
}
return false;
}
/* 8014C384-8014C500 146CC4 017C+00 1/1 0/0 3/3 .text daNpcT_chkPointInArea__F4cXyz4cXyz4cXyzsi */
BOOL daNpcT_chkPointInArea(cXyz param_0, cXyz param_1, cXyz param_2, s16 param_3, int param_4) {
BOOL ret;
cXyz l_pos;
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);
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 &&
(!(0.0f <= (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);
tmp1 + tmp2 <= 1.0f ? ret = TRUE : ret = FALSE;
}
return ret;
}
/* 8014C500-8014C5E0 146E40 00E0+00 0/0 0/0 29/29 .text
* daNpcT_getPlayerInfoFromPlayerList__FiiP4cXyzP5csXyz */
void daNpcT_getPlayerInfoFromPlayerList(int param_0, int param_1, cXyz* param_2,
csXyz* param_3) {
// NONMATCHING
}
/* 8014C5E0-8014C700 146F20 0120+00 0/0 0/0 5/5 .text daNpcT_chkDoBtnIsSpeak__FP10fopAc_ac_c */
BOOL daNpcT_chkDoBtnIsSpeak(fopAc_ac_c* i_ActorP) {
BOOL ret = 0;
if (dComIfGp_getDoStatus() == 0x1c) {
if (daPy_getPlayerActorClass()->checkPriActorOwn(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;
};
}
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;
};
}
}
}
return ret;
}
/* 8014C700-8014CA18 147040 0318+00 0/0 0/0 2/2 .text
* daNpcT_judgeRace__FP5dPathPP10fopAc_ac_cP16daNpcT_pntData_ciPi */
void daNpcT_judgeRace(dPath* param_0, fopAc_ac_c** param_1, daNpcT_pntData_c* param_2,
int param_3, int* param_4) {
// NONMATCHING
}
/* 8014CA18-8014CA2C 147358 0014+00 0/0 0/0 61/61 .text daNpcT_getDistTableIdx__Fii */
u8 daNpcT_getDistTableIdx(int param_0, int param_1) {
return param_0 + param_1 * 0x14 + 0x5e;
}
/* 8014CA2C-8014CA6C 14736C 0040+00 0/0 0/0 25/25 .text daNpcT_onEvtBit__FUl */
void daNpcT_onEvtBit(u32 i_idx) {
dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[i_idx]);
}
/* 8014CA6C-8014CAAC 1473AC 0040+00 0/0 0/0 1/1 .text daNpcT_offEvtBit__FUl */
void daNpcT_offEvtBit(u32 i_idx) {
dComIfGs_offEventBit(dSv_event_flag_c::saveBitLabels[i_idx]);
}
/* 8014CAAC-8014CAEC 1473EC 0040+00 0/0 0/0 155/155 .text daNpcT_chkEvtBit__FUl */
BOOL daNpcT_chkEvtBit(u32 i_idx) {
return dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[i_idx]);
}
/* 8014CAEC-8014CB2C 14742C 0040+00 0/0 0/0 26/26 .text daNpcT_onTmpBit__FUl */
void daNpcT_onTmpBit(u32 i_idx) {
dComIfGs_onTmpBit(dSv_event_tmp_flag_c::tempBitLabels[i_idx]);
}
/* 8014CB2C-8014CB6C 14746C 0040+00 0/0 0/0 78/78 .text daNpcT_offTmpBit__FUl */
void daNpcT_offTmpBit(u32 i_idx) {
dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[i_idx]);
}
/* 8014CB6C-8014CBAC 1474AC 0040+00 0/0 0/0 38/38 .text daNpcT_chkTmpBit__FUl */
BOOL daNpcT_chkTmpBit(u32 i_idx) {
return dComIfGs_isTmpBit(dSv_event_tmp_flag_c::tempBitLabels[i_idx]);
}
/* 8014CC0C-8014CC10 14754C 0004+00 1/0 1/0 0/0 .text setCollision__8daNpcT_cFv */
void daNpcT_c::setCollision() {
/* empty function */
}
/* 8014CC10-8014CC14 147550 0004+00 1/0 1/0 0/0 .text setAttnPos__8daNpcT_cFv */
void daNpcT_c::setAttnPos() {
/* empty function */
}
/* 8014CC14-8014CC18 147554 0004+00 1/0 1/0 0/0 .text ctrlSubFaceMotion__8daNpcT_cFi */
//void daNpcT_c::ctrlSubFaceMotion(int param_0) {
void ctrlSubFaceMotion__8daNpcT_cFi() {
/* empty function */
}
/* 8014CC18-8014CC1C 147558 0004+00 1/0 1/0 0/0 .text afterMoved__8daNpcT_cFv */
void daNpcT_c::afterMoved() {
/* empty function */
}
/* 8014CC1C-8014CC20 14755C 0004+00 1/0 1/0 0/0 .text beforeMove__8daNpcT_cFv */
void daNpcT_c::beforeMove() {
/* empty function */
}
/* 8014CC20-8014CC24 147560 0004+00 1/0 1/0 0/0 .text action__8daNpcT_cFv */
void daNpcT_c::action() {
/* empty function */
}
/* 8014CC24-8014CC28 147564 0004+00 1/0 1/0 0/0 .text setParam__8daNpcT_cFv */
void daNpcT_c::setParam() {
/* empty function */
}
/* 8014CC28-8014CC2C 147568 0004+00 1/0 1/0 0/0 .text drawOtherMdl__8daNpcT_cFv */
void daNpcT_c::drawOtherMdl() {
/* empty function */
}
/* 8014CC30-8014CC38 147570 0008+00 1/0 1/0 0/0 .text drawDbgInfo__8daNpcT_cFv */
int daNpcT_c::drawDbgInfo() {
return false;
}
/* 8014CC48-8014CC4C 147588 0004+00 1/0 1/0 0/0 .text afterJntAnm__8daNpcT_cFi */
void daNpcT_c::afterJntAnm(int param_0) {
/* empty function */
}
/* 8014CC4C-8014CC54 14758C 0008+00 1/0 1/0 0/0 .text getHeadJointNo__8daNpcT_cFv */
s32 daNpcT_c::getHeadJointNo() {
return -1;
}
/* 8014CC54-8014CC5C 147594 0008+00 1/0 1/0 0/0 .text getNeckJointNo__8daNpcT_cFv */
s32 daNpcT_c::getNeckJointNo() {
return -1;
}
/* 8014CC5C-8014CC64 14759C 0008+00 1/0 1/0 0/0 .text getBackboneJointNo__8daNpcT_cFv */
s32 daNpcT_c::getBackboneJointNo() {
return -1;
}
/* 8014CC64-8014CC68 1475A4 0004+00 1/0 1/0 0/0 .text setAfterTalkMotion__8daNpcT_cFv */
void daNpcT_c::setAfterTalkMotion() {
/* empty function */
}
/* 8014CC68-8014CC70 1475A8 0008+00 1/0 1/0 0/0 .text evtCutProc__8daNpcT_cFv */
bool daNpcT_c::evtCutProc() {
return false;
}
/* 8014CC70-8014CC78 1475B0 0008+00 1/0 1/0 0/0 .text evtEndProc__8daNpcT_cFv */
// bool daNpcT_c::evtEndProc() {
extern "C" bool evtEndProc__8daNpcT_cFv() {
return true;
}
/* 8014CC78-8014CC80 1475B8 0008+00 1/0 1/0 0/0 .text evtTalk__8daNpcT_cFv */
bool daNpcT_c::evtTalk() {
return true;
}
/* 8014CC80-8014CC88 1475C0 0008+00 1/0 1/0 0/0 .text checkChangeEvt__8daNpcT_cFv */
bool daNpcT_c::checkChangeEvt() {
return false;
}
/* 8014CC88-8014CC90 1475C8 0008+00 1/0 1/0 0/0 .text getFootRJointNo__8daNpcT_cFv */
s32 daNpcT_c::getFootRJointNo() {
return -1;
}
/* 8014CC90-8014CC98 1475D0 0008+00 1/0 1/0 0/0 .text getFootLJointNo__8daNpcT_cFv */
s32 daNpcT_c::getFootLJointNo() {
return -1;
}
/* 8014CC98-8014CCA0 1475D8 0008+00 1/0 1/0 0/0 .text chkXYItems__8daNpcT_cFv */
// bool daNpcT_c::chkXYItems() {
extern "C" bool chkXYItems__8daNpcT_cFv() {
return false;
}
/* 8014CCA0-8014CCA8 1475E0 0008+00 1/0 1/0 0/0 .text afterSetFaceMotionAnm__8daNpcT_cFiifi */
// bool daNpcT_c::afterSetFaceMotionAnm(int param_0, int param_1, f32 param_2, int param_3) {
extern "C" bool afterSetFaceMotionAnm__8daNpcT_cFiifi() {
return true;
}
/* 8014CCE0-8014CCE8 147620 0008+00 1/0 1/0 0/0 .text afterSetMotionAnm__8daNpcT_cFiifi
*/
// bool daNpcT_c::afterSetMotionAnm(int param_0, int param_1, f32 param_2, int param_3) {
extern "C" bool afterSetMotionAnm__8daNpcT_cFiifi() {
return true;
}
/* 8014CD20-8014D0A8 147660 0388+00 1/0 1/1 0/0 .text __dt__8daNpcT_cFv */
// daNpcT_c::~daNpcT_c() {
extern "C" void __dt__8daNpcT_cFv() {
// NONMATCHING
}
/* 8014D0A8-8014D0B0 1479E8 0008+00 1/0 1/0 0/0 .text getEyeballLMaterialNo__8daNpcT_cFv
*/
// bool daNpcT_c::getEyeballLMaterialNo() {
extern "C" bool getEyeballLMaterialNo__8daNpcT_cFv() {
return false;
}
/* 8014D0B0-8014D0B8 1479F0 0008+00 1/0 1/0 0/0 .text getEyeballRMaterialNo__8daNpcT_cFv
*/
// bool daNpcT_c::getEyeballRMaterialNo() {
extern "C" bool getEyeballRMaterialNo__8daNpcT_cFv() {
return false;
}
/* 8014D0C0-8014D108 147A00 0048+00 1/0 0/0 0/0 .text __dt__22daNpcT_MotionSeqMngr_cFv */
// daNpcT_MotionSeqMngr_c::~daNpcT_MotionSeqMngr_c() {
extern "C" void __dt__22daNpcT_MotionSeqMngr_cFv() {
// NONMATCHING
}
/* 8014D108-8014D150 147A48 0048+00 1/0 0/0 0/0 .text __dt__18daNpcT_ActorMngr_cFv */
// daNpcT_ActorMngr_c::~daNpcT_ActorMngr_c() {
extern "C" void __dt__18daNpcT_ActorMngr_cFv() {
// NONMATCHING
}
/* 8014D150-8014D24C 147A90 00FC+00 1/0 0/0 0/0 .text __dt__15daNpcT_JntAnm_cFv */
// daNpcT_JntAnm_c::~daNpcT_JntAnm_c() {
extern "C" void __dt__15daNpcT_JntAnm_cFv() {
// NONMATCHING
}
/* ############################################################################################## */
/* 803B3B6C-803B3B80 010C8C 0010+04 1/1 0/0 45/45 .data __vt__15daNpcT_MatAnm_c */
SECTION_DATA extern void* __vt__15daNpcT_MatAnm_c[4 + 1 /* padding */] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__15daNpcT_MatAnm_cFv,
(void*)calc__15daNpcT_MatAnm_cCFP11J3DMaterial,
/* padding */
NULL,
};
/* 8014D24C-8014D32C 147B8C 00E0+00 1/0 0/0 0/0 .text __dt__15daNpcT_MatAnm_cFv */
daNpcT_MatAnm_c::~daNpcT_MatAnm_c() {
// NONMATCHING
}
/* 8014D32C-8014D348 147C6C 001C+00 1/1 0/0 0/0 .text cLib_calcTimer<s>__FPs */
extern "C" s16 func_8014D32C(s16* param_0) {
// NONMATCHING
}
/* 8014D348-8014D364 147C88 001C+00 7/7 2/2 0/0 .text cLib_calcTimer<i>__FPi */
extern "C" int func_8014D348(int*) {
// NONMATCHING
}
/* 8014D364-8014D3D8 147CA4 0074+00 4/4 1/1 0/0 .text cLib_getRndValue<i>__Fii */
extern "C" int func_8014D364(int param_0, int param_1) {
// NONMATCHING
}
/* ############################################################################################## */
/* 80392680-803926B0 01ECE0 0030+00 1/1 0/0 4/4 .rodata mCcDObjData__8daNpcT_c */
SECTION_RODATA u8 const daNpcT_c::mCcDObjData[48] = {
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, 0x79, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x80392680, &daNpcT_c::mCcDObjData);
/* 8014D3D8-8014D538 147D18 0160+00 0/0 1/0 0/0 .text __sinit_d_a_npc_cpp */
void __sinit_d_a_npc_cpp(){// NONMATCHING
}
#pragma push
#pragma force_active on
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 {
tmp = param_1 != 0 ? param_1 - 1 : 0;
ret = 1;
}
}
*param_2 = (u16)tmp;
return ret;
}
/* 8014D584-8014D5C4 147EC4 0040+00 2/2 0/0 0/0 .text daBaseNpc_subIdx__FiiPUsi */
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 {
tmp = 0;
ret = 1;
}
}
*param_2 = (u16)tmp;
return ret;
}
/* 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);
} else {
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);
} else {
daBaseNpc_subIdx(1, i_pathNo, i_pathIdx, i_pathClosed);
;
}
}
/* 8014D67C-8014D804 147FBC 0188+00 1/1 0/0 0/0 .text daNpcBase_BBasis__FiiiPi */
static void daNpcBase_BBasis(int param_0, int param_1, int param_2, int* param_3) {
// NONMATCHING
}
/* 8014D804-8014D81C 148144 0018+00 0/0 0/0 1/1 .text __ct__18daBaseNpc_acMngr_cFv */
daBaseNpc_acMngr_c::daBaseNpc_acMngr_c() {
// NONMATCHING
}
/* 8014D81C-8014D838 14815C 001C+00 0/0 0/0 9/9 .text entry__18daBaseNpc_acMngr_cFP10fopAc_ac_c */
void daBaseNpc_acMngr_c::entry(fopAc_ac_c* i_ActorP) {
mActorId = fopAcM_GetID(i_ActorP);
}
/* 8014D838-8014D884 148178 004C+00 0/0 0/0 6/6 .text getActor__18daBaseNpc_acMngr_cFv */
fopAc_ac_c* daBaseNpc_acMngr_c::getActor() {
fopAc_ac_c* ret = NULL;
if (fopAcM_SearchByID(mActorId, &ret) && ret != NULL) {
return ret;
}
return NULL;
}
/* 8014D884-8014D998 1481C4 0114+00 1/0 0/0 0/0 .text calc__18daBaseNpc_matAnm_cCFP11J3DMaterial
*/
void daBaseNpc_matAnm_c::calc(J3DMaterial* param_0) const {
// NONMATCHING
}
/* 8014D998-8014D9A8 1482D8 0010+00 0/0 0/0 1/1 .text __ct__16daBaseNpc_path_cFv */
daBaseNpc_path_c::daBaseNpc_path_c() {
// NONMATCHING
}
/* 8014D9A8-8014D9BC 1482E8 0014+00 1/1 0/0 4/4 .text isPath__16daBaseNpc_path_cFv */
BOOL daBaseNpc_path_c::isPath() {
return mpRoomPath != 0;
}
/* 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 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);
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);
}
return isPath();
}
/* 8014DA48-8014DA64 148388 001C+00 0/0 0/0 1/1 .text reverseDir__16daBaseNpc_path_cFv */
void daBaseNpc_path_c::reverseDir() {
s8 tmp_direction;
mDirection > 0 ? tmp_direction = -1 : tmp_direction = 1;
mDirection = tmp_direction;
}
/* 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);
}
/* 8014DAC4-8014DB04 148404 0040+00 0/0 0/0 3/3 .text setNextPnt__16daBaseNpc_path_cFv */
void daBaseNpc_path_c::setNextPnt() {
daBaseNpc_incIdx(mpRoomPath->m_num, &mIdx, dPath_ChkClose(mpRoomPath), mDirection);
}
/* 8014DB04-8014DB0C 148444 0008+00 0/0 0/0 3/3 .text getIdx__16daBaseNpc_path_cFv */
u16 daBaseNpc_path_c::getIdx() {
return mIdx;
}
/* 8014DB0C-8014DB14 -00001 0008+00 0/0 0/0 0/0 .text setIdx__16daBaseNpc_path_cFUs */
void daBaseNpc_path_c::setIdx(u16 i_idx) {
mIdx = i_idx;
}
/* 8014DB14-8014DB40 148454 002C+00 0/0 0/0 4/4 .text getPntPos__16daBaseNpc_path_cFUs */
Vec daBaseNpc_path_c::getPntPos(u16 i_idx) {
return mpRoomPath->m_points[i_idx].m_position;
}
/* 8014DB40-8014DBB4 148480 0074+00 1/1 0/0 0/0 .text limitter__18daBaseNpc_lookat_cFsPsss */
void daBaseNpc_lookat_c::limitter(s16 param_1, s16* param_2, s16 param_3, s16 param_4) {
int tmp = param_1;
int tmp2 = tmp + *param_2;
if (param_3 < tmp2) {
if (tmp < param_3) {
*param_2 -= tmp2 - param_3;
} else {
*param_2 = 0;
}
}
tmp += *param_2;
if (tmp >= (s16)param_4) {
return;
}
if (param_4 < param_1) {
*param_2 -= (int)(tmp - param_4);
return;
}
*param_2 = 0;
}
/* ############################################################################################## */
/* 80453490-80453494 001A90 0004+00 2/2 0/0 0/0 .sdata2 @8404 */
SECTION_SDATA2 static f32 lit_8404 = 0.25f;
/* 80453494-80453498 001A94 0004+00 1/1 0/0 0/0 .sdata2 @8405 */
SECTION_SDATA2 static f32 lit_8405 = 4.0f / 5.0f;
/* 8014DBB4-8014E634 1484F4 0A80+00 0/0 0/0 1/1 .text
* calc__18daBaseNpc_lookat_cFP10fopAc_ac_cPA4_fs */
void daBaseNpc_lookat_c::calc(fopAc_ac_c* param_0, f32 (*param_1)[4], s16 param_2) {
// NONMATCHING
}
/* 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;
mMaxJntLmt[i_modifier].z = i_pos.z;
}
/* 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;
mMinJntLmt[i_modifier].z = i_pos.z;
}
/* 8014E67C-8014E6A0 148FBC 0024+00 0/0 0/0 1/1 .text setJntPos__18daBaseNpc_lookat_cF4cXyzi */
void daBaseNpc_lookat_c::setJntPos(cXyz i_pos, int i_modifier) {
mJntPos[i_modifier].x = i_pos.x;
mJntPos[i_modifier].y = i_pos.y;
mJntPos[i_modifier].z = i_pos.z;
}
/* 8014E6A0-8014E6AC 148FE0 000C+00 0/0 0/0 1/1 .text setAttnPos__18daBaseNpc_lookat_cFP4cXyz */
int daBaseNpc_lookat_c::setAttnPos(cXyz* i_pos) {
mpAttnPos = i_pos;
return 1;
}
/* 8014E6AC-8014E6C8 148FEC 001C+00 0/0 0/0 1/1 .text getRot__18daBaseNpc_lookat_cFi */
csXyz daBaseNpc_lookat_c::getRot(int param_0) {
return mRotation[param_0];
}
/* 8014E6C8-8014E89C 149008 01D4+00 1/1 0/0 0/0 .text __ct__11daBaseNpc_cFv */
daBaseNpc_c::daBaseNpc_c() {
// NONMATCHING
}
/* 8014E89C-8014EAD0 1491DC 0234+00 2/1 0/0 2/2 .text __dt__11daBaseNpc_cFv */
daBaseNpc_c::~daBaseNpc_c() {
// NONMATCHING
}
/* 8014EAD0-8014EC50 149410 0180+00 2/0 0/0 2/0 .text execute__11daBaseNpc_cFv */
void daBaseNpc_c::execute() {
// NONMATCHING
}
/* 8014EC50-8014EE3C 149590 01EC+00 2/0 0/0 2/0 .text draw__11daBaseNpc_cFf */
void daBaseNpc_c::draw(f32 param_0) {
// NONMATCHING
}
/* 8014EE3C-8014EE44 14977C 0008+00 2/0 0/0 1/0 .text getResName__11daBaseNpc_cFv */
bool daBaseNpc_c::getResName() {
return false;
}
/* 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);
}
/* 8014EE80-8014EEE4 1497C0 0064+00 0/0 0/0 1/1 .text
* setMcaMorfAnm__11daBaseNpc_cFP18J3DAnmTransformKeyffiii */
void daBaseNpc_c::setMcaMorfAnm(J3DAnmTransformKey* param_0, f32 param_1, f32 param_2,
int param_3, int param_4, int param_5) {
// NONMATCHING
}
/* 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);
}
/* 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);
}
/* 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) {
mBtpAnm.init(&param_1->getMaterialTable(), param_0, 1, param_3, param_2, 0, -1);
}
/* 8014EFA4-8014EFF0 1498E4 004C+00 2/0 0/0 2/0 .text attnSttsOn__11daBaseNpc_cFii */
void daBaseNpc_c::attnSttsOn(int param_0, int param_1) {
u32 tmp;
if (dComIfGp_getLinkPlayer()->checkWolf()) {
if (param_1 != 0) {
tmp = 10;
} else {
tmp = 1;
}
} else if (param_0 != 0) {
tmp = 10;
} else {
tmp = 1;
}
attention_info.flags = tmp;
}
/* 8014EFF0-8014EFF4 149930 0004+00 2/0 0/0 1/0 .text setParam__11daBaseNpc_cFv */
void daBaseNpc_c::setParam() {
/* empty function */
}
/* 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 = dComIfGp_getEventManager().getEventIdx(this, i_evtName, -1);
fopAcM_orderOtherEventId(this, mEvtIdx, -1, -1, 0, 1);
} else {
if ((mUnk >= 0 && attention_info.flags == 10) && (eventInfo.mCondition |= 1, param_0 != 0))
{
fopAcM_orderSpeakEvent(this, 0, 0);
}
}
}
/* 8014F09C-8014F0A0 1499DC 0004+00 2/0 0/0 1/0 .text mainProc__11daBaseNpc_cFv */
void daBaseNpc_c::mainProc() {
/* empty function */
}
/* 8014F0A0-8014F0FC 1499E0 005C+00 1/1 0/0 2/2 .text setEnvTevColor__11daBaseNpc_cFv */
void daBaseNpc_c::setEnvTevColor() {
tevStr.mEnvrIdxOverride = dComIfG_Bgsp().GetPolyColor(mBgSPolyInfo);
tevStr.mRoomNo = dComIfG_Bgsp().GetRoomId(mBgSPolyInfo);
}
/* 8014F0FC-8014F140 149A3C 0044+00 1/1 0/0 2/2 .text setRoomNo__11daBaseNpc_cFv */
void daBaseNpc_c::setRoomNo() {
s32 room_id = dComIfG_Bgsp().GetRoomId(mBgSPolyInfo);
current.roomNo = room_id;
mRoomId = room_id;
}
/* 8014F140-8014F148 149A80 0008+00 2/0 0/0 2/0 .text btkCtrl__11daBaseNpc_cFv */
bool daBaseNpc_c::btkCtrl() {
return false;
}
/* 8014F148-8014F1C8 149A88 0080+00 1/1 0/0 0/0 .text checkEndAnm__11daBaseNpc_cFf */
int daBaseNpc_c::checkEndAnm(f32 param_0) {
switch (mpMorf[0]->getPlayMode()) {
case 2:
return mpMorf[0]->isLoop();
case 0:
case 1:
return mpMorf[0]->isStop() && param_0 != mpMorf[0]->getPlaySpeed();
case 3:
break;
}
return 0;
}
/* 8014F1C8-8014F228 149B08 0060+00 1/1 0/0 0/0 .text checkEndAnm__11daBaseNpc_cFP12J3DFrameCtrl
*/
int daBaseNpc_c::checkEndAnm(J3DFrameCtrl* param_0) {
switch (param_0->getAttribute()) {
case 2:
return param_0->checkState(2);
case 0:
case 1:
bool rv = true;
if (((param_0->checkState(1) == 0) && (param_0->getRate() != 0.0f))) {
rv = false;
}
return rv;
break;
case 3:
break;
}
return 0;
}
/* 8014F228-8014F38C 149B68 0164+00 2/0 0/0 2/0 .text allAnmPlay__11daBaseNpc_cFv */
void daBaseNpc_c::allAnmPlay() {
// NONMATCHING
}
/* 8014F38C-8014F390 149CCC 0004+00 2/0 0/0 1/0 .text adjustShapeAngle__11daBaseNpc_cFv
*/
void daBaseNpc_c::adjustShapeAngle() {
/* empty function */
}
/* 8014F390-8014F4A0 149CD0 0110+00 2/0 0/0 1/0 .text setMtx__11daBaseNpc_cFi */
void daBaseNpc_c::setMtx(int param_0) {
J3DModel* model = mpMorf[0]->getModel();
;
J3DModelData* modelData = model->getModelData();
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(field_0x91a);
mDoMtx_stack_c::scaleM(scale);
model->setBaseTRMtx(mDoMtx_stack_c::get());
if (param_0) {
model->setUserArea((u32)this);
} else {
model->setUserArea(0);
}
if ((field_0x840 & 0x10) && field_0x83c) {
u16 tmp = 0;
while (field_0x83c[tmp] != 0xffff) {
mBckAnm.entryJoint(modelData, field_0x83c[tmp], mBckAnm.getFrame());
tmp++;
}
mpMorf[0]->modelCalc();
u16 tmp2 = 0;
while (field_0x83c[tmp2] != 0xffff) {
mBckAnm.removeJoint(modelData, field_0x83c[tmp2]);
tmp2++;
}
} else {
mpMorf[0]->modelCalc();
}
}
/* 8014F4A0-8014F4A4 149DE0 0004+00 2/0 0/0 1/0 .text setCollisions__11daBaseNpc_cFv */
void daBaseNpc_c::setCollisions() {
/* empty function */
}
/* 8014F4A4-8014F4A8 149DE4 0004+00 2/0 0/0 1/0 .text setAttnPos__11daBaseNpc_cFv */
void daBaseNpc_c::setAttnPos() {
/* empty function */
}
/* 8014F4A8-8014F4AC 149DE8 0004+00 2/0 0/0 1/0 .text drawOtherMdls__11daBaseNpc_cFv */
void daBaseNpc_c::drawOtherMdls() {
/* empty function */
}
/* 8014F4AC-8014F4B4 149DEC 0008+00 2/0 0/0 1/0 .text dbgDraw__11daBaseNpc_cFv */
bool daBaseNpc_c::dbgDraw() {
return true;
}
/* 8014F4B4-8014F4F8 149DF4 0044+00 0/0 0/0 1/1 .text __ct__23daBaseNpc_moveBgActor_cFv
*/
// this probably has a more correct solution
daBaseNpc_moveBgActor_c::daBaseNpc_moveBgActor_c() {
field_0xa14 = 0;
}
/* 8014F4F8-8014F518 149E38 0020+00 1/1 0/0 0/0 .text CheckCreateHeap__FP10fopAc_ac_c */
static void CheckCreateHeap(fopAc_ac_c* i_bgActor) {
((daBaseNpc_moveBgActor_c*)i_bgActor)->MoveBGCreateHeap();
}
/* ############################################################################################## */
/* 80450FE0-80450FE4 0004E0 0004+00 2/2 0/0 0/0 .sbss m_name__23daBaseNpc_moveBgActor_c
*/
u8 daBaseNpc_moveBgActor_c::m_name[4];
/* 80450FE4-80450FE8 0004E4 0004+00 2/2 0/0 0/0 .sbss m_dzb_id__23daBaseNpc_moveBgActor_c
*/
u8 daBaseNpc_moveBgActor_c::m_dzb_id[4];
/* 80450FE8-80450FEC 0004E8 0004+00 2/2 0/0 0/0 .sbss m_set_func__23daBaseNpc_moveBgActor_c */
u8 daBaseNpc_moveBgActor_c::m_set_func[4];
/* 8014F518-8014F60C 149E58 00F4+00 1/1 0/0 0/0 .text
* MoveBGCreateHeap__23daBaseNpc_moveBgActor_cFv */
void daBaseNpc_moveBgActor_c::MoveBGCreateHeap() {
// NONMATCHING
}
/* 8014F60C-8014F6FC 149F4C 00F0+00 0/0 0/0 1/1 .text
* MoveBGCreate__23daBaseNpc_moveBgActor_cFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUl
*/
void daBaseNpc_moveBgActor_c::MoveBGCreate(char const* param_0, int param_1,
void (*param_2)(dBgW*, void*, cBgS_PolyInfo const&,
bool, cXyz*, csXyz*, csXyz*),
u32 param_3) {
// NONMATCHING
}
/* 8014F6FC-8014F770 14A03C 0074+00 0/0 0/0 1/1 .text MoveBGDelete__23daBaseNpc_moveBgActor_cFv */
void daBaseNpc_moveBgActor_c::MoveBGDelete() {
// NONMATCHING
}
/* 8014F770-8014F81C 14A0B0 00AC+00 0/0 0/0 2/2 .text MoveBGExecute__23daBaseNpc_moveBgActor_cFv
*/
void daBaseNpc_moveBgActor_c::MoveBGExecute() {
// NONMATCHING
}
/* 8014F81C-8014F8C4 14A15C 00A8+00 1/1 0/0 0/0 .text
* daBaseNpc_PntVsLineSegmentLengthSquare2D__FffffffPfPfPf */
static void daBaseNpc_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) {
// NONMATCHING
}
/* 8014F8C4-8014FB28 14A204 0264+00 1/1 0/0 0/0 .text daBaseNpc_putNurbs__FP4dPntiiP4dPnti */
static int daBaseNpc_putNurbs(dPnt* param_0, int param_1, int param_2, dPnt* param_3,
int param_4) {
// NONMATCHING
}
/* 8014FB28-80150230 14A468 0708+00 1/1 0/0 0/0 .text daBaseNpc_chkPnt__F4cXyzP4dPntUsUsii */
static s32 daBaseNpc_chkPnt(cXyz param_0, dPnt* param_1, u16 param_2, u16 param_3, int param_4,
int param_5) {
// NONMATCHING
}
/* 80150230-801502EC 14AB70 00BC+00 1/1 0/0 0/0 .text daBaseNpc_getGroundAngle__FP13cBgS_PolyInfos
*/
static void daBaseNpc_getGroundAngle(cBgS_PolyInfo* param_0, s16 param_1) {
// NONMATCHING
}
/* 801502EC-801503BC 14AC2C 00D0+00 1/0 0/0 0/0 .text __dt__18daBaseNpc_lookat_cFv */
daBaseNpc_lookat_c::~daBaseNpc_lookat_c() {
// NONMATCHING
}
/* 801503BC-801503C4 14ACFC 0008+00 1/0 0/0 0/0 .text CreateHeap__23daBaseNpc_moveBgActor_cFv */
bool daBaseNpc_moveBgActor_c::CreateHeap() {
return true;
}
/* 801503C4-801503CC 14AD04 0008+00 1/0 0/0 0/0 .text Create__23daBaseNpc_moveBgActor_cFv
*/
bool daBaseNpc_moveBgActor_c::Create() {
return true;
}
/* 801503CC-801503D4 14AD0C 0008+00 1/0 0/0 0/0 .text Delete__23daBaseNpc_moveBgActor_cFv
*/
bool daBaseNpc_moveBgActor_c::Delete() {
return true;
}
/* 801503D4-801503DC 14AD14 0008+00 1/0 0/0 0/0 .text Execute__23daBaseNpc_moveBgActor_cFPPA3_A4_f
*/
bool daBaseNpc_moveBgActor_c::Execute(f32 (**param_0)[3][4]) {
return true;
}
/* 801503DC-801503E4 14AD1C 0008+00 1/0 0/0 0/0 .text Draw__23daBaseNpc_moveBgActor_cFv
*/
bool daBaseNpc_moveBgActor_c::Draw() {
return true;
}
/* 801503E4-801503EC 14AD24 0008+00 1/0 0/0 0/0 .text IsDelete__23daBaseNpc_moveBgActor_cFv */
bool daBaseNpc_moveBgActor_c::IsDelete() {
return true;
}
/* 801503EC-801503F4 14AD2C 0008+00 1/0 0/0 0/0 .text ToFore__23daBaseNpc_moveBgActor_cFv
*/
bool daBaseNpc_moveBgActor_c::ToFore() {
return true;
}
/* 801503F4-801503FC 14AD34 0008+00 1/0 0/0 0/0 .text ToBack__23daBaseNpc_moveBgActor_cFv
*/
bool daBaseNpc_moveBgActor_c::ToBack() {
return true;
}
/* 801503FC-80150444 14AD3C 0048+00 1/0 0/0 0/0 .text __dt__16daBaseNpc_path_cFv */
daBaseNpc_path_c::~daBaseNpc_path_c() {
// NONMATCHING
}
/* 80150444-80150524 14AD84 00E0+00 1/0 0/0 0/0 .text __dt__18daBaseNpc_matAnm_cFv */
daBaseNpc_matAnm_c::~daBaseNpc_matAnm_c() {
// NONMATCHING
}
/* 80150524-8015056C 14AE64 0048+00 1/0 0/0 0/0 .text __dt__18daBaseNpc_acMngr_cFv */
daBaseNpc_acMngr_c::~daBaseNpc_acMngr_c() {
// NONMATCHING
}
/**
* 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 */
static BOOL daNpcF_addIdx(int i_step, int i_num, u16& i_idx, BOOL i_isClosed) {
int ret = false;
int new_idx = i_idx;
new_idx += i_step;
if (i_num <= new_idx) {
if (i_isClosed) {
new_idx %= i_num;
} else {
new_idx = i_num - 1;
ret = true;
}
}
i_idx = new_idx;
return ret;
}
/* 801505AC-801505F8 14AEEC 004C+00 2/2 0/0 0/0 .text daNpcF_subIdx__FiiRUsi */
static BOOL daNpcF_subIdx(int i_step, int i_num, u16& i_idx, BOOL i_isClosed) {
BOOL ret = false;
int new_idx = i_idx;
new_idx -= i_step;
if (0 > new_idx) {
if (i_isClosed) {
new_idx = (i_num + (new_idx % i_num)) % i_num;
} else {
new_idx = 0;
ret = true;
}
}
i_idx = new_idx;
return ret;
}
/* 801505F8-80150654 14AF38 005C+00 4/4 0/0 0/0 .text daNpcF_incIdx__FiRUsii */
static BOOL daNpcF_incIdx(int i_num, u16& i_idx, int i_isClosed, BOOL i_reverse) {
return i_reverse ? daNpcF_subIdx(1, i_num, i_idx, i_isClosed) :
daNpcF_addIdx(1, i_num, i_idx, i_isClosed);
}
/* 80150654-801506B0 14AF94 005C+00 3/3 0/0 0/0 .text daNpcF_decIdx__FiRUsii */
static BOOL daNpcF_decIdx(int i_num, u16& i_idx, int i_isClosed, BOOL i_reverse) {
return i_reverse ? daNpcF_addIdx(1, i_num, i_idx, i_isClosed) :
daNpcF_subIdx(1, i_num, i_idx, i_isClosed);
}
/* 801506B0-801506BC 14AFF0 000C+00 0/0 0/0 130/130 .text initialize__18daNpcF_ActorMngr_cFv */
void daNpcF_ActorMngr_c::initialize() {
mActorID = -1;
}
/* 801506BC-801506D8 14AFFC 001C+00 1/1 0/0 130/130 .text
* entry__18daNpcF_ActorMngr_cFP10fopAc_ac_c */
void daNpcF_ActorMngr_c::entry(fopAc_ac_c* i_actor) {
mActorID = fopAcM_GetID(i_actor);
}
/* 801506D8-801506E0 -00001 0008+00 0/0 0/0 0/0 .text entry__18daNpcF_ActorMngr_cFUi */
void daNpcF_ActorMngr_c::entry(unsigned int i_actorID) {
mActorID = 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;
}
/* 801506EC-80150738 14B02C 004C+00 1/1 0/0 135/135 .text getActorP__18daNpcF_ActorMngr_cFv */
fopAc_ac_c* daNpcF_ActorMngr_c::getActorP() {
fopAc_ac_c* actor = NULL;
if (fopAcM_SearchByID(mActorID, &actor) == 1 && actor != NULL) {
return actor;
}
return NULL;
}
/* 80150738-8015075C 14B078 0024+00 0/0 0/0 48/48 .text initialize__15daNpcF_MatAnm_cFv
*/
void daNpcF_MatAnm_c::initialize() {
f32 value = 0.0f;
field_0xF4 = value;
field_0xF8 = value;
mNowOffsetX = value;
mNowOffsetY = value;
mEyeMoveFlag = 0;
field_0x105 = 0;
}
/* 8015075C-80150870 14B09C 0114+00 1/0 0/0 0/0 .text calc__15daNpcF_MatAnm_cCFP11J3DMaterial */
void daNpcF_MatAnm_c::calc(J3DMaterial* param_0) const {
J3DMaterialAnm::calc(param_0);
for (u32 i = 0; i < 8; i++) {
if (J3DMaterialAnm::getTexMtxAnm(i).getAnmFlag()) {
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;
} else {
if (mEyeMoveFlag != 0) {
curr_mtx_info->mSRT.mTranslationX = mNowOffsetX;
curr_mtx_info->mSRT.mTranslationY = mNowOffsetY;
}
}
field_0xF4 = curr_mtx_info->mSRT.mTranslationX;
field_0xF8 = curr_mtx_info->mSRT.mTranslationY;
}
}
}
/* 80150870-80150900 14B1B0 0090+00 2/2 0/0 8/8 .text initialize__16daNpcF_SPCurve_cFP5dPathi */
void daNpcF_SPCurve_c::initialize(dPath* i_path, int i_isReversed) {
mNurbs = 0;
field_0x02 = 0;
mIsReversed = i_isReversed;
mIsClosed = false;
for (int i = 0; i < 96; i++) {
mPoints[i].m_position.x = 1.0f;
mPoints[i].m_position.y = 1.0f;
mPoints[i].m_position.z = 1.0f;
}
if (i_path) {
mIsClosed = dPath_ChkClose(i_path);
mNurbs = daNpcF_putNurbs((dPnt*)i_path->m_points, i_path->m_num, 0x60, (dPnt*)mPoints, mIsClosed);
}
}
/* 80150900-8015095C 14B240 005C+00 0/0 0/0 20/20 .text initialize__13daNpcF_Path_cFv */
void daNpcF_Path_c::initialize() {
mIdx = 0;
mIsReversed = false;
mIsClosed = false;
mpRoomPath = NULL;
mSPCurve.initialize(NULL, false);
f32 value = 0.0f;
mRange = value;
mPosDst = value;
field_0x10 = value;
}
/* 8015095C-80150A24 14B29C 00C8+00 0/0 0/0 12/12 .text setPathInfo__13daNpcF_Path_cFUcScUc */
int daNpcF_Path_c::setPathInfo(u8 param_0, s8 param_1, u8 i_isReversed) {
mpRoomPath = 0;
mIdx = 0;
mIsReversed = i_isReversed;
if (param_0 != 0xFF) {
mpRoomPath = dPath_GetRoomPath(param_0, param_1);
if (!mpRoomPath) {
return 0;
}
mSPCurve.initialize(mpRoomPath, mIsReversed);
mIsClosed = dPath_ChkClose(mpRoomPath);
mPosition = getPntPos(getIdx());
}
return 1;
}
/* 80150A24-80150A7C 14B364 0058+00 1/1 0/0 1/1 .text chkPassed__13daNpcF_Path_cF4cXyz */
BOOL daNpcF_Path_c::chkPassed(cXyz i_pos) {
return daNpcF_chkPassed(i_pos, (dPnt*)mpRoomPath->m_points, mIdx, mpRoomPath->m_num,
mIsClosed, mIsReversed);
}
/* 80150A7C-80150BBC 14B3BC 0140+00 0/0 0/0 4/4 .text chkPassedDst__13daNpcF_Path_cF4cXyz
*/
BOOL daNpcF_Path_c::chkPassedDst(cXyz i_pos) {
return mPosDst + field_0x10 <= (mPosition - i_pos).abs();
}
/* 80150BBC-80150BE0 14B4FC 0024+00 0/0 0/0 8/8 .text reverse__13daNpcF_Path_cFv */
void daNpcF_Path_c::reverse() {
if (mIsReversed == true) {
mIsReversed = false;
} else {
mIsReversed = true;
}
}
/* 80150BE0-80150C18 14B520 0038+00 2/2 0/0 6/6 .text setNextIdx__13daNpcF_Path_cFv */
BOOL daNpcF_Path_c::setNextIdx() {
return daNpcF_incIdx(mpRoomPath->m_num, mIdx, chkClose(), mIsReversed);
}
/* 80150C18-80150C60 14B558 0048+00 0/0 0/0 9/9 .text getNextIdx__13daNpcF_Path_cFv */
int daNpcF_Path_c::getNextIdx() {
u16 ret = mIdx;
daNpcF_incIdx(mpRoomPath->m_num, ret, chkClose(), mIsReversed);
return ret;
}
/* 80150C60-80150CA8 14B5A0 0048+00 0/0 0/0 3/3 .text getBeforeIdx__13daNpcF_Path_cFv */
int daNpcF_Path_c::getBeforeIdx() {
u16 ret = mIdx;
daNpcF_decIdx(mpRoomPath->m_num, ret, chkClose(), mIsReversed);
return ret;
}
/* 80150CA8-80150D44 14B5E8 009C+00 0/0 0/0 1/1 .text getBeforePos__13daNpcF_Path_cFR4cXyz */
BOOL daNpcF_Path_c::getBeforePos(cXyz& param_0) {
u16 idx = mIdx;
BOOL ret = daNpcF_decIdx(mpRoomPath->m_num, idx, chkClose(), mIsReversed);
param_0 = getPntPos(idx);
return ret;
}
/* 80150D44-80150DE0 14B684 009C+00 0/0 0/0 1/1 .text getNextPos__13daNpcF_Path_cFR4cXyz
*/
BOOL daNpcF_Path_c::getNextPos(cXyz& param_0) {
u16 idx = mIdx;
BOOL ret = daNpcF_incIdx(mpRoomPath->m_num, idx, chkClose(), mIsReversed);
param_0 = getPntPos(idx);
return ret;
}
/* 80150DE0-80150EB4 14B720 00D4+00 0/0 0/0 16/16 .text getDstPos__13daNpcF_Path_cF4cXyzR4cXyz */
int daNpcF_Path_c::getDstPos(cXyz i_pos1, cXyz& o_pos2) {
BOOL ret = false;
while (!ret) {
o_pos2 = getPntPos(getIdx());
if (!chkPassed(i_pos1)) {
break;
};
if (setNextIdx()) {
ret = true;
}
}
return ret;
}
/* 80150EB4-80151038 14B7F4 0184+00 0/0 0/0 2/2 .text setNextIdxDst__13daNpcF_Path_cF4cXyz */
void daNpcF_Path_c::setNextIdxDst(cXyz i_pos) {
if (!setNextIdx()) {
mPosDst = (i_pos - getPntPos(getIdx())).abs();
mPosition = i_pos;
}
}
/* 80151038-801510B8 14B978 0080+00 0/0 0/0 72/72 .text initialize__15daNpcF_Lookat_cFv
*/
void daNpcF_Lookat_c::initialize() {
for (int i = 0; i < 4; i++) {
mJointPos[i].setall(0.0f);
mAngularMoveDis[i].setall(0);
mMinAngle[i].setall(0);
mMaxAngle[i].setall(0);
mRotAngle[i].setall(0);
field_0x94[i] = false;
}
mAttnPos = NULL;
}
/* 801510B8-80151350 14B9F8 0298+00 0/0 0/0 34/34 .text
* setParam__15daNpcF_Lookat_cFffffffffffffsP4cXyz */
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 i_rotAngle, cXyz* i_jointPos) {
static cXyz vec(0.0f, 0.0f, 32.0f);
mJointPos[0] = i_jointPos[0];
mMinAngle[0].x = cM_deg2s(-param_1) - 0x4000;
mMinAngle[0].y = cM_deg2s(param_2);
mMinAngle[0].z = 0;
mMaxAngle[0].x = cM_deg2s(-param_0) - 0x4000;
mMaxAngle[0].y = cM_deg2s(param_3);
mMaxAngle[0].z = 0;
mJointPos[1] = i_jointPos[1];
mMinAngle[1].set(-0x4000, 0, 0);
mMaxAngle[1].set(-0x4000, 0, 0);
mJointPos[2] = i_jointPos[2];
mMinAngle[2].x = cM_deg2s(-param_9);
mMinAngle[2].y = cM_deg2s(param_10);
mMinAngle[2].z = 0;
mMaxAngle[2].x = cM_deg2s(-param_8);
mMaxAngle[2].y = cM_deg2s(param_11);
mMaxAngle[2].z = 0;
mDoMtx_stack_c::transS(mJointPos[2]);
mDoMtx_stack_c::YrotM(i_rotAngle);
mDoMtx_stack_c::multVec(&vec, &mJointPos[3]);
mMinAngle[3].set(0, 0, 0);
mMaxAngle[3].set(0, 0, 0);
}
/* 80151350-801515D4 14BC90 0284+00 0/0 0/0 34/34 .text
* calc__15daNpcF_Lookat_cFP10fopAc_ac_cPA4_fPP5csXyziii */
// NONMATCHING instruction out of order
void daNpcF_Lookat_c::calc(fopAc_ac_c* i_actor, Mtx i_baseTransformMtx, csXyz** o_lookatAngle,
BOOL i_snap, int i_axis, BOOL i_debug) {
cXyz local_a4[4];
csXyz local_bc[4];
cXyz local_c8;
f32 local_d8[4];
f32 local_e8;
f32 angY;
if (mAttnPos) {
initCalc(i_actor, i_baseTransformMtx, local_a4, local_bc, local_d8, local_c8, i_debug);
for (int i = 2; i >= -1; i--) {
update(local_a4, local_bc, local_d8);
if (0 <= i) {
calcMoveDisAngle(i, local_a4, local_bc, local_c8, i_axis, i_debug);
}
}
setRotAngle();
} else {
clrRotAngle();
}
int i, j;
for (i = 2, j = 1; i >= 0; i--, j++) {
if (i_snap) {
*(o_lookatAngle[i]) = mRotAngle[i];
} else {
local_e8 = (f32)o_lookatAngle[i]->x;
cLib_addCalc2(&local_e8, (f32)mRotAngle[i].x, 0.25f, (f32)(0x800 / j));
o_lookatAngle[i]->x = (s16)local_e8;
local_e8 = (f32)o_lookatAngle[i]->y;
angY = (f32)mRotAngle[i].y;
cLib_addCalc2(&local_e8, angY, 0.25f, (f32)(0x800 / j));
if (i_axis > 0 && angY - local_e8 < 0.0f) {
local_e8 = angY;
}
if (i_axis < 0 && 0.0f < angY - local_e8) {
local_e8 = angY;
}
o_lookatAngle[i]->y = (s16)local_e8;
o_lookatAngle[i]->z = 0;
}
}
}
/* 801515D4-80151648 14BF14 0074+00 1/1 0/0 0/0 .text adjustMoveDisAngle__15daNpcF_Lookat_cFRssss
*/
// NONMATCHING regalloc
void daNpcF_Lookat_c::adjustMoveDisAngle(s16& delta, s16 angle, s16 min, s16 max) {
int newAngle = angle + delta;
if (max < newAngle) {
if (angle < max) {
delta -= (newAngle - max);
} else {
delta = 0;
}
}
newAngle = angle + delta;
if (newAngle < min) {
if (min < angle) {
delta -= (newAngle - min);
} else {
delta = 0;
}
}
}
/* 80151648-80151A54 14BF88 040C+00 1/1 0/0 0/0 .text
* initCalc__15daNpcF_Lookat_cFP10fopAc_ac_cPA4_fP4cXyzP5csXyzPfR4cXyzi */
void daNpcF_Lookat_c::initCalc(fopAc_ac_c* i_actor, Mtx i_baseTransformMtx, cXyz* param_2,
csXyz* param_3, f32* param_4, cXyz& param_5, int i_debug) {
Mtx mtx;
cXyz local_90;
cMtx_copy(i_baseTransformMtx, mtx);
mtx[0][3] = 0.0f;
mtx[1][3] = 0.0f;
mtx[2][3] = 0.0f;
mDoMtx_stack_c::copy(mtx);
mDoMtx_stack_c::inverse();
cMtx_copy(mDoMtx_stack_c::get(), mtx);
mDoMtx_stack_c::transS(i_actor->current.pos);
mDoMtx_stack_c::concat(mtx);
for (int i = 0; i < 4; i++) {
local_90 = mJointPos[i] - i_actor->current.pos;
mDoMtx_stack_c::multVec(&local_90, &param_2[i]);
}
local_90 = *mAttnPos - i_actor->current.pos;
mDoMtx_stack_c::multVec(&local_90, &param_5);
for (int i = 0; i < 3; i++) {
cXyz* vec = &param_2[i];
local_90 = vec[1] - vec[0];
param_4[i] = local_90.abs();
param_3[i].setall(0);
param_3[i].x = -cM_atan2s(local_90.y, local_90.absXZ());
if (fabsf(cM_ssin(param_3[i].x)) < 0.63f) {
param_3[i].y = cM_atan2s(local_90.x, local_90.z);
} else {
param_3[i].y = 0;
}
}
}
/* 80151A54-80151B68 14C394 0114+00 1/1 0/0 0/0 .text update__15daNpcF_Lookat_cFP4cXyzP5csXyzPf */
void daNpcF_Lookat_c::update(cXyz* param_0, csXyz* param_1, f32* param_2) {
csXyz ang = csXyz::Zero;
cXyz vec;
Mtx mtx;
cXyz* pparam0i;
for (int i = 0; i < 3; i++) {
mDoMtx_stack_c::XYZrotS(param_1[i]);
cMtx_copy(mDoMtx_stack_c::get(), mtx);
pparam0i = &param_0[i];
mDoMtx_stack_c::transS(pparam0i[0]);
ang.x += mAngularMoveDis[i].x;
ang.y += mAngularMoveDis[i].y;
mDoMtx_stack_c::ZXYrotM(ang);
mDoMtx_stack_c::concat(mtx);
vec.set(0.0f, 0.0f, param_2[i]);
mDoMtx_stack_c::multVec(&vec, &pparam0i[1]);
}
}
/* 80151B68-80151F54 14C4A8 03EC+00 1/1 0/0 0/0 .text
* calcMoveDisAngle__15daNpcF_Lookat_cFiP4cXyzP5csXyz4cXyzii */
void daNpcF_Lookat_c::calcMoveDisAngle(int i_no, cXyz* param_1, csXyz* param_2, cXyz param_3,
int i_axis, int i_debug) {
if (i_axis == 0) {
field_0x94[i_no] = false;
}
if (!field_0x94[i_no]) {
cXyz vec1 = param_3 - param_1[i_no];
if (!vec1.isZero()) {
vec1.normalize();
cXyz vec2 = param_1[3] - param_1[i_no];
if (!vec2.isZero()) {
vec2.normalize();
s16 ivar3 = -cM_atan2s(vec1.y, vec1.absXZ());
s16 ivar4 = cM_atan2s(vec1.x, vec1.z);
s16 ivar5 = -cM_atan2s(vec2.y, vec2.absXZ());
s16 ivar6 = cM_atan2s(vec2.x, vec2.z);
mAngularMoveDis[i_no].x += (s16)(ivar3 - ivar5);
mAngularMoveDis[i_no].y += (s16)(ivar4 - ivar6);
}
}
}
adjustMoveDisAngle(mAngularMoveDis[i_no].x, param_2[i_no].x,
mMinAngle[i_no].x, mMaxAngle[i_no].x);
adjustMoveDisAngle(mAngularMoveDis[i_no].y, param_2[i_no].y,
mMinAngle[i_no].y, mMaxAngle[i_no].y);
if (i_axis < 0 && mAngularMoveDis[i_no].y > 0) {
field_0x94[i_no] = false;
}
if (i_axis > 0 && mAngularMoveDis[i_no].y < 0) {
field_0x94[i_no] = false;
}
}
/* 80151F54-80151FE0 14C894 008C+00 1/1 0/0 0/0 .text setRotAngle__15daNpcF_Lookat_cFv */
void daNpcF_Lookat_c::setRotAngle() {
int ang_x = 0;
int ang_y = 0;
for (int i = 0; i < 4; i++) {
ang_x += mAngularMoveDis[i].x;
ang_x = cLib_minMaxLimit(ang_x, -0x8000, 0x7fff);
ang_y += mAngularMoveDis[i].y;
ang_y = cLib_minMaxLimit(ang_y, -0x8000, 0x7fff);
mRotAngle[i].x = ang_x;
mRotAngle[i].y = ang_y;
mRotAngle[i].z = 0;
}
}
/* 80151FE0-80152014 14C920 0034+00 1/1 0/0 0/0 .text clrRotAngle__15daNpcF_Lookat_cFv */
void daNpcF_Lookat_c::clrRotAngle() {
for (int i = 0; i < 4; i++) {
mRotAngle[i].x = 0;
mRotAngle[i].y = 0;
mRotAngle[i].z = 0;
}
}
/* 80152014-801522AC 14C954 0298+00 0/0 0/0 38/38 .text execute__8daNpcF_cFv */
BOOL daNpcF_c::execute() {
setParam();
if (main()) {
fopAcM_posMoveF(this, mCcStts.GetCCMoveP());
mAcch.CrrPos(dComIfG_Bgsp());
mGndChk = mAcch.m_gnd;
mGroundH = mAcch.GetGroundH();
if (mGroundH != -1e+9f) {
field_0x998 = daNpcF_getGroundAngle(&mGndChk, mCurAngle.y);
setEnvTevColor();
setRoomNo();
mPolySound = dKy_pol_sound_get(&mAcch.m_gnd);
mReverb = dComIfGp_getReverb(mCcStts.GetRoomId());
if (mAcch.ChkWaterHit() && mAcch.m_wtr.GetHeight() > mGroundH) {
mPolySound = dKy_pol_sound_get(&mAcch.m_wtr);
}
}
}
playAllAnm();
adjustShapeAngle();
setAttnPos();
cLib_chaseF(&mExpressionMorf, 0.0f, 1.0f);
setCollisions();
if (mTwilight) {
attention_info.flags |= 0x400000;
attention_info.flags |= 0x800000;
setHitodamaPrtcl();
}
mOldAngle = mCurAngle;
mCutType = 0;
mOrderSpeakEvt = false;
mOrderNewEvt = false;
field_0x9eb = false;
field_0x9ef = 0;
field_0x9f3 = 0;
for (int i = 0; i < 5; i++) {
if ((mAttnChangeTimer == 0 || mAttnIdx != i) && mAttnActorTimer[i] != 0 &&
cLib_calcTimer(&mAttnActorTimer[i]) == 0)
{
mAttnActor[i].remove();
}
}
if (mDamageTimer != 0) {
cLib_calcTimer(&mDamageTimer);
}
return true;
}
/* 801522AC-80152614 14CBEC 0368+00 0/0 0/0 33/33 .text draw__8daNpcF_cFiifP11_GXColorS10i */
int daNpcF_c::draw(BOOL i_isTest, BOOL param_1, f32 i_shadowDepth, _GXColorS10* i_fogColor,
BOOL i_hideDamage) {
f32 damage_ratio, frame;
J3DModel* model = mpMorf->getModel();
J3DModelData* modelData = model->getModelData();
field_0x9f3 = 1;
if (!checkHide()) {
if (!i_hideDamage && mDamageTimer != 0 && mTotalDamageTimer != 0) {
damage_ratio = (f32)mDamageTimer / (f32)mTotalDamageTimer;
} else {
damage_ratio = 0.0f;
}
if (cM3d_IsZero_inverted(damage_ratio)) {
tevStr.mFogColor.r = (s16)(damage_ratio * 20.0f);
tevStr.mFogColor.g = 0;
} else if (i_isTest) {
tevStr.mFogColor.g = 20;
tevStr.mFogColor.r = 0;
} else if (i_fogColor != NULL) {
tevStr.mFogColor.r = i_fogColor->r;
tevStr.mFogColor.g = i_fogColor->g;
tevStr.mFogColor.b = i_fogColor->b;
tevStr.mFogColor.a = i_fogColor->a;
} else {
tevStr.mFogColor.g = 0;
tevStr.mFogColor.r = 0;
}
if (mTwilight) {
g_env_light.settingTevStruct(4, &current.pos, &tevStr);
} else {
g_env_light.settingTevStruct(0, &current.pos, &tevStr);
}
g_env_light.setLightTevColorType_MAJI(model->getModelData(), &tevStr);
if (!drawDbgInfo()) {
if (mAnmFlags & ANM_PLAY_BTP) {
mBtpAnm.entry(&modelData->getMaterialTable(), (s16)mBtpAnm.getFrame());
}
if (mAnmFlags & ANM_PLAY_BTK) {
frame = mBtkAnm.getFrame();
mBtkAnm.entry(&modelData->getMaterialTable(), frame);
}
if (mAnmFlags & ANM_PLAY_BRK) {
frame = mBrkAnm.getFrame();
mBrkAnm.entry(&modelData->getMaterialTable(), frame);
}
if (param_1) {
fopAcM_setEffectMtx(this, modelData);
}
if (mTwilight) {
dComIfGd_setListDark();
mpMorf->entryDL();
dComIfGd_setList();
} else {
mpMorf->entryDL();
}
if (mAnmFlags & ANM_PLAY_BTP) {
mBtpAnm.remove(modelData);
}
if (mAnmFlags & ANM_PLAY_BTK) {
mBtkAnm.remove(modelData);
}
if (mAnmFlags & ANM_PLAY_BRK) {
mBrkAnm.remove(modelData);
}
mShadowKey = dComIfGd_setShadow(mShadowKey, true, model, &current.pos, i_shadowDepth,
20.0f, current.pos.y, mGroundH, mGndChk, &tevStr, 0,
1.0f, dDlst_shadowControl_c::getSimpleTex());
drawOtherMdls();
}
}
return 1;
}
/* 80152614-80152654 14CF54 0040+00 0/0 0/0 13/13 .text
* tgHitCallBack__8daNpcF_cFP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf */
void daNpcF_c::tgHitCallBack(fopAc_ac_c* i_this, dCcD_GObjInf* param_1, fopAc_ac_c* i_actor,
dCcD_GObjInf* param_3) {
if (i_actor != NULL && fopAcM_GetProfName(i_actor) == PROC_ALINK) {
if (daPy_getPlayerActorClass() == i_actor) {
u8 cut_type = static_cast<daPy_py_c*>(i_actor)->getCutType();
static_cast<daNpcF_c*>(i_this)->setCutType(cut_type);
} else {
static_cast<daNpcF_c*>(i_this)->setCutType(daPy_py_c::CUT_TYPE_NM_VERTICAL);
}
}
}
/* 804257E8-80425978 052508 0190+00 4/4 0/0 0/0 .bss mFindActorPList__8daNpcF_c */
fopAc_ac_c* daNpcF_c::mFindActorPList[100];
/* 80450FF0-80450FF4 0004F0 0004+00 4/4 0/0 0/0 .sbss mFindCount__8daNpcF_c */
s32 daNpcF_c::mFindCount;
/* 80152654-801526E8 14CF94 0094+00 0/0 0/0 12/12 .text srchAttnActor1__8daNpcF_cFPvPv */
void* daNpcF_c::srchAttnActor1(void* i_proc, void* param_1) {
if (mFindCount < 100 && fopAcM_IsActor(i_proc)
&& (fopAcM_GetName(i_proc) == PROC_NI || fopAcM_GetName(i_proc) == PROC_COW
|| fopAcM_GetName(i_proc) == PROC_NPC_NE || fopAcM_GetName(i_proc) == PROC_DO
|| fopAcM_GetName(i_proc) == PROC_SQ || fopAcM_GetName(i_proc) == PROC_BD))
{
mFindActorPList[mFindCount] = static_cast<fopAc_ac_c*>(i_proc);
mFindCount++;
}
return NULL;
}
/* 80450FF4-80450FF8 0004F4 0002+02 2/2 0/0 0/0 .sbss mSrchActorName__8daNpcF_c */
s16 daNpcF_c::mSrchActorName;
/* 801526E8-8015276C 14D028 0084+00 1/1 0/0 0/0 .text srchActor__8daNpcF_cFPvPv */
void* daNpcF_c::srchActor(void* i_proc, void* i_this) {
if (mFindCount < 100 && fopAc_IsActor(i_proc) && i_proc != i_this
&& mSrchActorName == fopAcM_GetName(i_proc))
{
mFindActorPList[mFindCount] = static_cast<fopAc_ac_c*>(i_proc);
mFindCount++;
}
return NULL;
}
/* 8015276C-801527FC 14D0AC 0090+00 2/0 0/0 40/9 .text setMtx__8daNpcF_cFv */
void daNpcF_c::setMtx() {
J3DModel* model = mpMorf->getModel();
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(mCurAngle);
mDoMtx_stack_c::scaleM(scale);
model->setBaseTRMtx(mDoMtx_stack_c::get());
model->setUserArea((u32)this);
if (mAnmFlags & 0x100) {
mBckAnm.getBckAnm()->setFrame(mBckAnm.getFrame());
mpMorf->modelCalc();
} else {
mpMorf->modelCalc();
}
}
/* 801527FC-801528C8 14D13C 00CC+00 2/0 0/0 38/0 .text setMtx2__8daNpcF_cFv */
void daNpcF_c::setMtx2() {
J3DModel* model = mpMorf->getModel();
mDoMtx_stack_c::transS(current.pos);
mDoMtx_stack_c::ZXYrotM(mCurAngle);
mDoMtx_stack_c::scaleM(scale);
model->setBaseTRMtx(mDoMtx_stack_c::get());
model->setUserArea((u32)this);
if (cM3d_IsZero_inverted(mExpressionMorf)) {
mpMorf->onMorfNone();
} else {
mpMorf->offMorfNone();
}
if (mAnmFlags & 0x100) {
mBckAnm.getBckAnm()->setFrame(mBckAnm.getFrame());
mpMorf->modelCalc();
} else {
mpMorf->modelCalc();
}
}
/* 801528C8-80152B2C 14D208 0264+00 0/0 0/0 76/76 .text initialize__8daNpcF_cFv */
void daNpcF_c::initialize() {
field_0x824.remove();
for (int i = 0; i < 5; i++) {
mAttnActor[i].remove();
}
for (int i = 0; i < 3; i++) {
mLookatPos[i].setall(0.0f);
}
mLookPos.setall(0.0f);
field_0x884.setall(0.0f);
field_0x890.setall(0.0f);
field_0x89c.setall(0.0f);
field_0x8a8.setall(0.0f);
mHeadPos.setall(0.0f);
mCurAngle.setall(0);
mOldAngle.setall(0);
mEyeAngle.setall(0);
mHeadAngle.setall(0);
for (int i = 0; i < 3; i++) {
field_0x908[i].setall(0);
mLookatAngle[i].setall(0);
}
mStaffID = -1;
mCutType = 0;
mAttnIdx = 0;
mAttnChangeTimer = 0;
for (int i = 0; i < 5; i++) {
mAttnActorTimer[i] = 0;
}
mMsgTimer = 0;
mDamageTimer = 0;
mTotalDamageTimer = 0;
field_0x95c = 0;
mEventTimer = 0;
mBtpTimer = 0;
mTurnAmount = 0;
mTurnMode = 0;
mTurnStepNum = 0.0f;
mExpressionMorfOverride = 0.0f;
mMotionMorfOverride = 0.0f;
mGroundH = 0.0f;
for (int i = 0; i < 3; i++) {
field_0x984[i] = 0.0f;
}
field_0x990 = 0;
field_0x992 = 0;
mTurnStartAngle = 0;
mTurnTargetAngle = 0;
field_0x998 = 0;
mAnmFlags = 0;
mShadowKey = 0;
field_0x9a4 = -1;
mHitodamaParticleKey[0] = -1;
mHitodamaParticleKey[1] = -1;
mEventIdx = -1;
mExpressionPhase = 0;
mExpressionPrevPhase = 0;
mMotionPhase = 0;
mMotionPrevPhase = 0;
mExpression = -1;
mMotion = -1;
mMotionLoops = 0;
mExpressionLoops = 0;
mOrderEvtNo = 0;
mOrderSpeakEvt = false;
field_0x9ea = false;
field_0x9eb = false;
field_0x9ec = false;
mOrderNewEvt = false;
field_0x9ee = false;
field_0x9ef = 0;
mIsDamaged = false;
field_0x9f1 = 0;
mHide = false;
field_0x9f3 = 0;
field_0x9f5 = 1;
field_0x9f6 = 1;
field_0x9d2 = cM_rndF(0x10000);
}
/* 80152B2C-80152B68 14D46C 003C+00 0/0 0/0 69/69 .text getTrnsfrmKeyAnmP__8daNpcF_cFPci
*/
J3DAnmTransformKey* daNpcF_c::getTrnsfrmKeyAnmP(char* arcName, int fileIdx) {
return (J3DAnmTransformKey*)dComIfG_getObjectRes(arcName, fileIdx);
}
/* 80152B68-80152BA4 14D4A8 003C+00 0/0 0/0 31/31 .text getTexPtrnAnmP__8daNpcF_cFPci */
J3DAnmTexPattern* daNpcF_c::getTexPtrnAnmP(char* arcName, int fileIdx) {
return (J3DAnmTexPattern*)dComIfG_getObjectRes(arcName, fileIdx);
}
/* 80152BA4-80152BE0 14D4E4 003C+00 0/0 0/0 50/50 .text getTexSRTKeyAnmP__8daNpcF_cFPci
*/
J3DAnmTextureSRTKey* daNpcF_c::getTexSRTKeyAnmP(char* arcName, int fileIdx) {
return (J3DAnmTextureSRTKey*)dComIfG_getObjectRes(arcName, fileIdx);
}
/* 80152BE0-80152C1C 14D520 003C+00 0/0 0/0 2/2 .text getTevRegKeyAnmP__8daNpcF_cFPci */
J3DAnmTevRegKey* daNpcF_c::getTevRegKeyAnmP(char* arcName, int fileIdx) {
return (J3DAnmTevRegKey*)dComIfG_getObjectRes(arcName, fileIdx);
}
/* 80152C1C-80152C80 14D55C 0064+00 0/0 0/0 38/38 .text
* setMcaMorfAnm__8daNpcF_cFP18J3DAnmTransformKeyffiii */
BOOL daNpcF_c::setMcaMorfAnm(J3DAnmTransformKey* i_anm, f32 i_rate, f32 i_morf, int i_attr,
int i_start, int i_end) {
mpMorf->setAnm(i_anm, i_attr, i_morf, i_rate, (f32)i_start, (f32)i_end);
return true;
}
/* 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) {
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) {
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) {
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) {
return mBrkAnm.init(i_modelData, i_brk, true, i_attr, i_rate, 0, -1);
}
/* 80152D84-80152DE0 14D6C4 005C+00 1/1 0/0 40/40 .text setEnvTevColor__8daNpcF_cFv */
void daNpcF_c::setEnvTevColor() {
tevStr.mEnvrIdxOverride = dComIfG_Bgsp().GetPolyColor(mGndChk);
tevStr.mRoomNo = dComIfG_Bgsp().GetRoomId(mGndChk);
}
/* 80152DE0-80152E24 14D720 0044+00 1/1 0/0 40/40 .text setRoomNo__8daNpcF_cFv */
void daNpcF_c::setRoomNo() {
int room_id = dComIfG_Bgsp().GetRoomId(mGndChk);
fopAcM_SetRoomNo(this, room_id);
mCcStts.SetRoomId(room_id);
}
/* 80152E24-80152EC4 14D764 00A0+00 1/1 0/0 0/0 .text chkEndAnm__8daNpcF_cFf */
BOOL daNpcF_c::chkEndAnm(f32 param_0) {
switch (mpMorf->getPlayMode()) {
case 2:
return mpMorf->isLoop();
case 0:
case 1:
return mpMorf->isStop() && mpMorf->getPlaySpeed() == 0.0f && param_0 != 0.0f;
case 3:
default:
return false;
}
}
/* 80152EC4-80152F40 14D804 007C+00 1/1 0/0 0/0 .text chkEndAnm__8daNpcF_cFP12J3DFrameCtrlf */
/**
* 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).
*/
BOOL daNpcF_c::chkEndAnm(J3DFrameCtrl* frameCtrl, f32 prevRate) {
switch (frameCtrl->getAttribute()) {
case 2:
return frameCtrl->checkState(2);
case 0:
case 1:
return frameCtrl->checkState(1) && frameCtrl->getRate() == 0.0f && prevRate != 0.0f;
case 3:
default:
return false;
}
}
/* 80152F40-80153150 14D880 0210+00 1/1 0/0 2/2 .text playAllAnm__8daNpcF_cFv */
BOOL daNpcF_c::playAllAnm() {
f32 rate;
if (!(mAnmFlags & ANM_PAUSE_EXPRESSION)) {
if (mAnmFlags & ANM_PLAY_BCK) {
rate = mBckAnm.getPlaySpeed();
if (mAnmFlags & ANM_PAUSE_BCK) {
mBckAnm.setPlaySpeed(0.0f);
}
mBckAnm.play();
if (chkEndAnm(mBckAnm.getFrameCtrl(), rate)) {
mExpressionLoops++;
}
mBckAnm.setPlaySpeed(rate);
}
if (mAnmFlags & ANM_PLAY_BTP) {
rate = mBtpAnm.getPlaySpeed();
if (mAnmFlags & ANM_PAUSE_BTP) {
mBtpAnm.setPlaySpeed(0.0f);
}
mBtpAnm.play();
mBtpAnm.setPlaySpeed(rate);
if (mAnmFlags & ANM_FLAG_800) {
if (chkEndAnm(mBtpAnm.getFrameCtrl(), rate)) {
mBtpTimer = cLib_getRndValue(90, 90);
mBtpAnm.setPlaySpeed(0.0f);
}
} else {
mBtpTimer = 0;
}
if (cLib_calcTimer(&mBtpTimer) == 0) {
mBtpAnm.setPlaySpeed(1.0f);
}
}
}
if (mAnmFlags & ANM_PLAY_MORF) {
rate = mpMorf->getPlaySpeed();
if (mAnmFlags & ANM_PAUSE_MORF) {
mpMorf->setPlaySpeed(0.0f);
mpMorf->play(mPolySound, mReverb);
mpMorf->setPlaySpeed(rate);
} else {
mpMorf->play(mPolySound, mReverb);
if (chkEndAnm(rate)) {
mMotionLoops++;
}
}
}
if (mAnmFlags & ANM_PLAY_BTK) {
rate = mBtkAnm.getPlaySpeed();
if (mAnmFlags & ANM_PAUSE_BTK) {
mBtkAnm.setPlaySpeed(0.0f);
}
if (!ctrlBtk()) {
mBtkAnm.play();
}
mBtkAnm.setPlaySpeed(rate);
}
if (mAnmFlags & ANM_PLAY_BRK) {
rate = mBrkAnm.getPlaySpeed();
if (mAnmFlags & ANM_PAUSE_BRK) {
mBrkAnm.setPlaySpeed(0.0f);
}
mBrkAnm.play();
mBrkAnm.setPlaySpeed(rate);
}
mAnmFlags &= ~ANM_PAUSE_ALL;
return true;
}
/* 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
* an animation index for that phase of the expression, the number of interpolation frames, and
* the number of loops before moving on to the next phase (or 0 for the last phase).
*/
// NONMATCHING regalloc
void daNpcF_c::playExpressionAnm(daNpcF_c::daNpcF_anmPlayData*** anm) {
daNpcF_anmPlayData* playData = NULL;
if (anm[mExpression] != NULL) {
playData = anm[mExpression][mExpressionPhase];
}
if (playData != NULL) {
if (mExpressionPrevPhase == mExpressionPhase && playData->numLoops > 0 &&
playData->numLoops <= mExpressionLoops)
{
mExpressionPhase++;
playData = anm[mExpression][mExpressionPhase];
}
if (playData != NULL && mExpressionPrevPhase != mExpressionPhase) {
setExpressionAnm(playData->idx, true);
f32 morf = playData->morf;
if (mExpressionPhase == 0 && 0.0f <= mExpressionMorfOverride) {
morf = mExpressionMorfOverride;
}
mExpressionMorf = morf;
mpMorf->setMorf(morf);
}
}
mExpressionPrevPhase = mExpressionPhase;
}
/* 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
* an animation index for that phase of the motion, the number of interpolation frames, and the
* number of loops before moving on to the next phase (or 0 for the last phase).
*/
// NONMATCHING regalloc
void daNpcF_c::playMotionAnm(daNpcF_c::daNpcF_anmPlayData*** anm) {
daNpcF_anmPlayData* playData = NULL;
if (anm[mMotion] != NULL) {
playData = anm[mMotion][mMotionPhase];
}
if (playData != NULL) {
if (mMotionPrevPhase == mMotionPhase && playData->numLoops > 0 &&
playData->numLoops <= mMotionLoops)
{
mMotionPhase++;
playData = anm[mMotion][mMotionPhase];
}
if (playData != NULL && mMotionPrevPhase != mMotionPhase) {
setMotionAnm(playData->idx, 0.0f);
f32 morf = playData->morf;
if (mMotionPhase == 0 && 0.0f <= mMotionMorfOverride) {
morf = mMotionMorfOverride;
}
mExpressionMorf = 0.0f;
mpMorf->setMorf(morf);
}
}
mMotionPrevPhase = mMotionPhase;
}
/* 8015337C-80153578 14DCBC 01FC+00 0/0 0/0 34/34 .text setLookatMtx__8daNpcF_cFiPif */
/**
* Compute the animation matrix for the backbone, neck, or head joint.
* This matrix is applied to the matrix in `mDoMtx_stack_c::now`.
* @param i_jointNo The index of the joint in question.
* @param i_jointList An array of the three indices of the joints for the backbone, neck, and head.
* @param i_neckHeadAngleRatio The ratio between the neck angle and the head angle.
*/
void daNpcF_c::setLookatMtx(int i_jointNo, int* i_jointList, f32 i_neckHeadAngleRatio) {
cXyz pos;
Mtx baseMtx, invParentMtx;
if (i_jointList[0] == i_jointNo || i_jointList[1] == i_jointNo || i_jointList[2] == i_jointNo) {
mLookatAngle[1].x = (s16)((f32)mLookatAngle[2].x * i_neckHeadAngleRatio);
mLookatAngle[1].y = (s16)((f32)mLookatAngle[2].y * i_neckHeadAngleRatio);
mLookatAngle[1].z = (s16)((f32)mLookatAngle[2].z * i_neckHeadAngleRatio);
MTXCopy(mDoMtx_stack_c::get(), baseMtx);
pos.set(baseMtx[0][3], baseMtx[1][3], baseMtx[2][3]);
baseMtx[0][3] = baseMtx[1][3] = baseMtx[2][3] = 0.0f;
mDoMtx_stack_c::ZXYrotS(mCurAngle);
if (i_jointList[0] != i_jointNo) {
if (i_jointList[1] == i_jointNo) {
mDoMtx_stack_c::ZXYrotM(mLookatAngle[0]);
} else if (i_jointList[2] == i_jointNo) {
mDoMtx_stack_c::ZXYrotM(mLookatAngle[1]);
}
}
mDoMtx_stack_c::inverse();
MTXCopy(mDoMtx_stack_c::get(), invParentMtx);
mDoMtx_stack_c::transS(pos);
mDoMtx_stack_c::XYZrotM(mCurAngle);
if (i_jointList[0] == i_jointNo) {
mDoMtx_stack_c::ZXYrotM(mLookatAngle[0]);
} else if (i_jointList[1] == i_jointNo) {
mDoMtx_stack_c::ZXYrotM(mLookatAngle[1]);
} else if (i_jointList[2] == i_jointNo) {
mDoMtx_stack_c::ZXYrotM(mLookatAngle[2]);
}
mDoMtx_stack_c::concat(invParentMtx);
mDoMtx_stack_c::concat(baseMtx);
}
}
/* 80153578-80153658 14DEB8 00E0+00 0/0 0/0 13/13 .text hitChk2__8daNpcF_cFP8dCcD_Cylii
*/
BOOL daNpcF_c::hitChk2(dCcD_Cyl* i_ccCyl, BOOL param_1, BOOL param_2) {
static_cast<dCcD_Stts*>(i_ccCyl->GetStts())->Move();
if (mDamageTimer == 0 && i_ccCyl->ChkTgHit()) {
fopAc_ac_c* hit_actor = i_ccCyl->GetTgHitAc();
if (hit_actor != NULL) {
field_0x990 = fopAcM_searchActorAngleY(this, hit_actor) - mCurAngle.y;
if (fopAcM_GetName(hit_actor) == PROC_NPC_TK) {
if (param_1) {
static_cast<daNPC_TK_c*>(hit_actor)->setBump();
return true;
} else {
return false;
}
} else {
if (param_2) {
return true;
} else {
return false;
}
}
}
}
i_ccCyl->ClrTgHit();
return false;
}
/* 80153658-80153718 14DF98 00C0+00 0/0 0/0 12/12 .text setDamage__8daNpcF_cFiii */
void daNpcF_c::setDamage(int i_timer, int i_expression, int i_motion) {
if (i_expression >= 0) {
setExpression(i_expression, 0.0f);
}
if (i_motion >= 0) {
setMotion(i_motion, 0.0f, true);
}
field_0x984[0] = 8192.0f;
field_0x984[2] = 12743.0f;
field_0x992 = 0x4000;
mTotalDamageTimer = i_timer;
mDamageTimer = mTotalDamageTimer;
speed.setall(0.0f);
speedF = 0.0f;
mIsDamaged = true;
}
/* 80153718-8015387C 14E058 0164+00 0/0 0/0 81/81 .text ctrlMsgAnm__8daNpcF_cFRiRiP10fopAc_ac_ci
*/
int daNpcF_c::ctrlMsgAnm(int& o_expression, int& o_motion, fopAc_ac_c* param_2, BOOL param_3) {
o_expression = -1;
o_motion = -1;
if (param_3 || eventInfo.checkCommandTalk() || mStaffID != -1) {
fopAc_ac_c* talkPartner = dComIfGp_event_getTalkPartner();
if (talkPartner == param_2) {
msg_class* actor = dMsgObject_c::getActor();
if (actor->mode == dEvtCmd_INDEMO_e
|| actor->mode == dEvtCmd_INDOOR_e)
{
field_0x9a4 = -1;
} else if (actor->mode == dEvtCmd_INCATCH_e) {
if (actor->msg_idx != field_0x9a4) {
o_expression = dComIfGp_getMesgFaceAnimeAttrInfo();
o_motion = dComIfGp_getMesgAnimeAttrInfo();
field_0x9a4 = actor->msg_idx;
}
if (dMsgObject_c::isMouthCheck()) {
mAnmFlags &= ~ANM_PAUSE_EXPRESSION;
} else {
mAnmFlags |= ANM_PAUSE_EXPRESSION;
}
mMsgTimer = 20;
} else {
if (mAnmFlags & ANM_PAUSE_EXPRESSION) {
mAnmFlags &= ~ANM_PAUSE_EXPRESSION;
}
field_0x9a4 = -1;
}
} else {
field_0x9a4 = -1;
if (mMsgTimer != 0) {
mMsgTimer = 1;
}
}
}
if (!param_3) {
cLib_calcTimer(&mMsgTimer);
}
return mMsgTimer;
}
/* 8015387C-80153954 14E1BC 00D8+00 0/0 0/0 45/45 .text orderEvent__8daNpcF_cFiPcUsUsUcUs
*/
void daNpcF_c::orderEvent(int i_speak, char* i_evtName, u16 param_2, u16 i_priority, u8 i_mapToolID,
u16 i_flag) {
if (i_evtName != NULL) {
mEventIdx = dComIfGp_getEventManager().getEventIdx(this, i_evtName, 0xff);
fopAcM_orderOtherEventId(this, mEventIdx, i_mapToolID, param_2, i_priority, i_flag);
} else if (!mTwilight || daPy_py_c::checkNowWolfEyeUp()) {
if ((attention_info.flags & 8) || (attention_info.flags & 2)) {
eventInfo.i_onCondition(dEvtCnd_CANTALK_e);
if (i_speak) {
fopAcM_orderSpeakEvent(this, 0, 0);
}
}
}
}
/* 80153954-801539F0 14E294 009C+00 0/0 0/0 31/31 .text changeEvent__8daNpcF_cFPcPcUsUs
*/
void daNpcF_c::changeEvent(char* i_arcName, char* i_evtName, u16 param_2, u16 param_3) {
if (i_arcName != NULL) {
eventInfo.setArchiveName(i_arcName);
dComIfGp_getEventManager().setObjectArchive(eventInfo.getArchiveName());
}
mEventIdx = dComIfGp_getEventManager().getEventIdx(this, i_evtName, 0xff);
dComIfGp_getEvent().reset(this);
fopAcM_orderChangeEventId(this, mEventIdx, param_2, param_3);
}
/* 801539F0-80153A78 14E330 0088+00 0/0 0/0 21/21 .text chkActorInSight__8daNpcF_cFP10fopAc_ac_cf
*/
BOOL daNpcF_c::chkActorInSight(fopAc_ac_c* i_actor, f32 i_fovY) {
s16 tmp = mHeadAngle.y;
s16 angle = fopAcM_searchActorAngleY(this, i_actor) - tmp;
s16 abs_angle = abs(angle);
return i_fovY == 180.0f || abs_angle < cM_deg2s(i_fovY);
}
/* 80153A78-80153BDC 14E3B8 0164+00 1/1 0/0 0/0 .text
* chkActorInArea__8daNpcF_cFP10fopAc_ac_c4cXyz4cXyzs */
/**
* Check whether an actor is in an elliptic cylinder region.
* @param i_actor The actor to check.
* @param i_center The center of the cylinder.
* @param i_bounds The dimensions of the bounding box.
* @param i_angleY The angle to align the axis of the ellipse.
* @return Whether the actor's position vector lies in the elliptic cylinder.
*/
BOOL daNpcF_c::chkActorInArea(fopAc_ac_c* i_actor, cXyz i_center, cXyz i_bounds, s16 i_angleY) {
cXyz delta, relPos;
BOOL ret = false;
mDoMtx_stack_c::YrotS(-i_angleY);
mDoMtx_stack_c::transM(-i_center.x, -i_center.y, -i_center.z);
mDoMtx_stack_c::multVec(&i_actor->current.pos, &relPos);
f32 boundX = fabsf(i_bounds.x);
f32 boundZ = fabsf(i_bounds.z);
f32 posX = fabsf(relPos.x);
f32 posZ = fabsf(relPos.z);
delta = i_center - i_actor->current.pos;
if ((posX * posX) / (boundX * boundX) + (posZ * posZ) / (boundZ * boundZ) <= 1.0f
&& -i_bounds.y < delta.y && delta.y < i_bounds.y)
{
ret = true;
}
return ret;
}
/* 80153BDC-80153D1C 14E51C 0140+00 0/0 0/0 25/25 .text
* chkActorInAttnArea__8daNpcF_cFP10fopAc_ac_cP10fopAc_ac_ci */
/**
* Check whether an actor lies within another actor's region of attention.
* @param i_actorCheck The actor to check.
* @param i_actorAttn The actor whose attention region we are using.
* @param i_distIndex An index into the distance table to determine the attention region.
* @return Whether `actorCheck` is within the region of attention of `actorAttn`.
*/
BOOL daNpcF_c::chkActorInAttnArea(fopAc_ac_c* i_actorCheck, fopAc_ac_c* i_actorAttn,
int i_distIndex) {
BOOL ret = false;
f32 neg_lower_y = dComIfGp_getAttention().getDistTable(i_distIndex).mLowerY * -1.0f;
f32 neg_upper_y = dComIfGp_getAttention().getDistTable(i_distIndex).mUpperY * -1.0f;
cXyz center = i_actorAttn->current.pos;
cXyz bounds;
bounds.x = dComIfGp_getAttention().getDistTable(i_distIndex).mDistMax;
bounds.y = (fabsf(neg_lower_y) + fabsf(neg_upper_y)) / 2.0f;
bounds.z = dComIfGp_getAttention().getDistTable(i_distIndex).mDistMax;
center.y = bounds.y + (center.y + neg_upper_y);
if (chkActorInArea(i_actorCheck, center, bounds, i_actorAttn->shape_angle.y)) {
ret = true;
}
return ret;
}
/* 80153D1C-80153D84 14E65C 0068+00 0/0 0/0 118/118 .text initTalk__8daNpcF_cFiPP10fopAc_ac_c */
BOOL daNpcF_c::initTalk(int i_flowID, fopAc_ac_c** param_1) {
mFlow.init(this, i_flowID, 0, param_1);
f32 tmp = 0.0f;
speedF = tmp;
speed.set(tmp, tmp, tmp);
mOrderSpeakEvt = false;
field_0x9ec = false;
return true;
}
/* 80153D84-80153EF4 14E6C4 0170+00 0/0 0/0 119/119 .text talkProc__8daNpcF_cFPiiPP10fopAc_ac_c */
BOOL daNpcF_c::talkProc(int* param_0, BOOL param_1, fopAc_ac_c** i_actorP) {
BOOL ret = false;
int i1, motion, expression, i2;
motion = -1;
expression = -1;
if (dMsgObject_c::isMsgSendControl()) {
if (param_1) {
dMsgObject_c::offMsgSendControl();
}
} else if (mFlow.doFlow(this, i_actorP, 0)) {
ret = true;
} else {
if (mFlow.getMsg() != NULL && (mFlow.getMsg()->mode == 2 || mFlow.getMsg()->mode == 6)
&& param_0 != NULL) {
for (int i = 0; param_0[i] > 0; i++) {
if (param_0[i] == mFlow.getMsgNo()) {
ret = true;
break;
}
}
}
if (mFlow.checkEventRender(&i1, &motion, &expression, &i2)) {
if (expression != -1) {
setExpression(expression, -1.0f);
}
if (motion != -1) {
setMotion(motion, -1.0f, false);
}
}
}
return ret;
}
/* 80153EF4-801540A4 14E834 01B0+00 1/1 0/0 55/55 .text turn__8daNpcF_cFsfi */
BOOL daNpcF_c::turn(s16 i_targetAngle, f32 i_rate, int i_direction) {
int target_angle = i_targetAngle;
if (mTurnAmount == 0) {
mTurnStepNum = fabsf(cM_sht2d((s16)(current.angle.y - target_angle)));
mTurnStepNum = (mTurnStepNum / 180.0f) * i_rate;
mTurnStepNum = (int)mTurnStepNum + 1;
if (mTurnStepNum < 8.0f) {
mTurnStepNum = 8.0f;
}
mTurnStartAngle = current.angle.y;
}
s16 turn_start_angle = mTurnStartAngle;
if (i_direction == 0) {
i_direction = (s16)(target_angle - turn_start_angle) >= 0 ? 1 : -1;
}
u16 angle_diff = target_angle - turn_start_angle;
int signed_angle_diff = angle_diff;
if (i_direction < 0) {
signed_angle_diff = -(u16)(0xffff - angle_diff);
}
int turn_angle = (int)(signed_angle_diff * cM_ssin(mTurnAmount));
mTurnAmount = (int)((f32)mTurnAmount + (f32)0x4000 / mTurnStepNum);
if ((u16)mTurnAmount >= 0x4000) {
current.angle.y = i_targetAngle;
mTurnAmount = 0x4000;
} else {
current.angle.y = mTurnStartAngle + turn_angle;
}
return current.angle.y - (s16)i_targetAngle == 0;
}
/* 801540A4-80154250 14E9E4 01AC+00 0/0 0/0 58/58 .text step__8daNpcF_cFsiii */
BOOL daNpcF_c::step(s16 i_targetAngle, int i_expression, int i_motion, int i_rate) {
if (mTurnMode == 0) {
if ((int)fabsf(cM_sht2d((s16)(i_targetAngle - mCurAngle.y))) > 40) {
if (i_expression >= 0) {
setExpression(i_expression, -1.0f);
}
if (i_motion >= 0) {
setMotion(i_motion, -1.0f, false);
}
}
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;
}
/* 80154250-80154278 14EB90 0028+00 0/0 0/0 81/81 .text setAngle__8daNpcF_cFs */
void daNpcF_c::setAngle(s16 i_angle) {
current.angle.y = i_angle;
shape_angle.y = current.angle.y;
mCurAngle.y = current.angle.y;
mOldAngle.y = mCurAngle.y;
old.angle.y = current.angle.y;
}
/* 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_c::getDistTableIdx(int param_0, int param_1) {
return daNpcF_getDistTableIdx(param_0, param_1);
}
/* 801542A0-8015436C 14EBE0 00CC+00 0/0 0/0 6/6 .text getEvtAreaTagP__8daNpcF_cFii */
// NONMATCHING regalloc
fopAc_ac_c* daNpcF_c::getEvtAreaTagP(int i_type, int i_no) {
mFindCount = 0;
mSrchActorName = PROC_TAG_EVTAREA;
fpcM_Search(this->srchActor, this);
for (int i = 0; i < mFindCount; i++) {
daTag_EvtArea_c* evt_area = static_cast<daTag_EvtArea_c*>(mFindActorPList[i]);
if (i_type == evt_area->getType() && i_no == evt_area->getNo()) {
return evt_area;
}
}
return NULL;
}
/* 8015436C-80154730 14ECAC 03C4+00 0/0 0/0 12/12 .text getAttnActorP__8daNpcF_cFiPFPvPv_Pvffffsii
*/
// NONMATCHING regalloc
fopAc_ac_c* daNpcF_c::getAttnActorP(BOOL i_playerAttn, fpcLyIt_JudgeFunc i_searchFunc, f32 i_radius,
f32 i_offsetY1, f32 i_offsetY2, f32 i_fovY, s16 i_sightAngle,
int param_7, BOOL 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);
int r28 = 0;
f32 minDistance = 1000000000.0f;
if (mAttnChangeTimer != 0) {
daPy_py_c* player = daPy_getPlayerActorClass();
fopAcM_SearchByID(player->getGrabActorID(), &actor);
if (mAttnActor[mAttnIdx].getActorP() != actor) {
cLib_calcTimer(&mAttnChangeTimer);
}
actor = mAttnActor[mAttnIdx].getActorP();
}
if (actor == NULL) {
mAttnChangeTimer = 0;
if (i_playerAttn) {
i_radius = fopAcM_searchActorDistanceXZ(this, daPy_getPlayerActorClass());
}
mFindCount = 0;
fpcEx_Search(i_searchFunc, this);
for (int i = 0; i < mFindCount; i++) {
if (chkPointInArea(getAttentionPos(mFindActorPList[i]), attention_info.position,
i_radius, i_offsetY1, i_offsetY2, 0) &&
chkActorInSight2(mFindActorPList[i], i_fovY, i_sightAngle))
{
int j;
for (j = 0; j < 5; j++) {
// !@Bug I think mAttnActorTimer index should be j
if (mFindActorPList[i] == mAttnActor[j].getActorP() && mAttnActorTimer[i] != 0)
{
break;
}
}
if (j == 5) {
f32 dist2 = fopAcM_searchActorDistanceXZ(this, mFindActorPList[i]);
if (dist2 < minDistance) {
actor = mFindActorPList[i];
minDistance = dist2;
}
}
}
}
if (actor == NULL && i_playerAttn) {
daPy_py_c* player = daPy_getPlayerActorClass();
fopAcM_SearchByID(player->getGrabActorID(), &actor);
r28 = 1;
}
if (actor != NULL) {
int minInd, j;
int dist3 = 900;
minInd = 0;
for (j = 0; j < 5; j++) {
if (mAttnActorTimer[j] < dist3) {
dist3 = mAttnActorTimer[j];
minInd = j;
}
}
mAttnActor[minInd].entry(actor);
if (param_8) {
mAttnActorTimer[minInd] = r28 == 1 ? 0 : rnd;
} else {
mAttnActorTimer[minInd] = 0;
}
mAttnChangeTimer = (r28 != 1) ? rnd2 : 30;
mAttnIdx = minInd;
}
}
if (actor == NULL) {
mAttnChangeTimer = 0;
}
return actor;
}
/* 80154730-80154834 14F070 0104+00 2/2 0/0 0/0 .text chkActorInSight2__8daNpcF_cFP10fopAc_ac_cfs
*/
BOOL daNpcF_c::chkActorInSight2(fopAc_ac_c* i_actor, f32 i_fovY, s16 i_sightAngle) {
if (i_fovY < 180.0f) {
s16 fov_y = cM_deg2s(i_fovY);
cXyz actor_attn_pos = getAttentionPos(i_actor);
cSGlobe globe(attention_info.position - actor_attn_pos);
cSAngle s_ang_diff = cSAngle(globe.U().Inv()) - i_sightAngle;
s16 ang_diff = s_ang_diff.Val();
if (ang_diff < 0) {
ang_diff = -ang_diff;
}
return ang_diff <= fov_y;
} else {
return true;
}
}
/* 80154834-801548F4 14F174 00C0+00 2/2 0/0 0/0 .text chkPointInArea__8daNpcF_cF4cXyz4cXyzfffs */
BOOL daNpcF_c::chkPointInArea(cXyz i_point, cXyz param_1, f32 i_radius, f32 i_offsetY1,
f32 i_offsetY2, s16 i_angleY) {
cXyz bounds, center;
f32 lower = i_offsetY2;
f32 upper = i_offsetY1;
if (i_offsetY1 < i_offsetY2) {
lower = i_offsetY1;
upper = i_offsetY2;
}
bounds.set(i_radius, fabsf(upper - lower) / 2.0f, i_radius);
center = param_1;
center.y += lower;
center.y += bounds.y;
return chkPointInArea(i_point, center, bounds, i_angleY);
}
/* 801548F4-8015496C 14F234 0078+00 1/1 0/0 0/0 .text chkPointInArea__8daNpcF_cF4cXyz4cXyz4cXyzs
*/
BOOL daNpcF_c::chkPointInArea(cXyz i_point, cXyz i_center, cXyz i_bounds, s16 i_angleY) {
return daNpcF_chkPointInArea(i_point, i_center, i_bounds, i_angleY);
}
/* 8015496C-801549E0 14F2AC 0074+00 3/3 0/0 0/0 .text getAttentionPos__8daNpcF_cFP10fopAc_ac_c */
cXyz daNpcF_c::getAttentionPos(fopAc_ac_c* i_ActorP) {
cXyz pos = i_ActorP->attention_info.position;
if (fopAcM_GetName(i_ActorP) == PROC_ALINK) {
pos.y -= daPy_py_c::getAttentionOffsetY();
}
return pos;
}
/* 801549E0-80154BD8 14F320 01F8+00 0/0 0/0 18/18 .text chkFindPlayer2__8daNpcF_cFis */
BOOL daNpcF_c::chkFindPlayer2(BOOL i_hasAttn, s16 i_angle) {
cXyz attn_pos = getAttentionPos(daPy_getPlayerActorClass());
int attn_no = i_hasAttn == false ? attention_info.distances[fopAc_attn_SPEAK_e]
: attention_info.distances[fopAc_attn_TALK_e];
f32 fvar2 = i_hasAttn == false ? dAttention_c::getDistTable(attn_no).mDistMax
: dAttention_c::getDistTable(attn_no).mDistMaxRelease;
f32 fvar3 = dAttention_c::getDistTable(attn_no).mLowerY * -1.0f;
f32 fvar4 = dAttention_c::getDistTable(attn_no).mUpperY * -1.0f;
u32 uvar7 = dAttention_c::getDistTable(attn_no).mAngleSelect;
f32 fvar5 = 180.0f;
if (uvar7 & 8) {
fvar5 = 30.0f;
} else if (uvar7 & 0x10) {
fvar5 = 45.0f;
} else if (uvar7 & 0x20) {
fvar5 = 60.0f;
} else if (uvar7 & 0x40) {
fvar5 = 90.0f;
} else if (uvar7 & 0x80) {
fvar5 = 110.0f;
} else if (uvar7 & 0x100) {
fvar5 = 135.0f;
}
if (chkPointInArea(attn_pos, attention_info.position, fvar2, fvar3, fvar4, 0)
&& chkActorInSight2(daPy_getPlayerActorClass(), fvar5, i_angle)) {
return true;
}
return false;
}
/* 80154BD8-80154DA8 14F518 01D0+00 1/1 0/0 0/0 .text setHitodamaPrtcl__8daNpcF_cFv */
void daNpcF_c::setHitodamaPrtcl() {
cXyz pos;
field_0x9d0 = (u16)(field_0x9d2 * 2);
field_0x9b8.x = cM_ssin(field_0x9d2) * 8.0f;
field_0x9b8.y = cM_ssin(field_0x9d0) * 4.0f;
field_0x9b8.z = field_0x9b8.x * -cM_ssin(shape_angle.y);
field_0x9b8.x *= cM_scos(shape_angle.y);
field_0x9d2 += 0x400;
pos.x = eyePos.x + field_0x9b8.x + field_0x9c4.x;
pos.y = eyePos.y + field_0x9b8.y + field_0x9c4.y;
pos.z = eyePos.z + field_0x9b8.z + field_0x9c4.z;
for (int i = 0; i < 2; i++) {
static u16 id[2] = {0x8497, 0x8498};
mHitodamaParticleKey[i] =
dComIfGp_particle_set(mHitodamaParticleKey[i], id[i], &pos, &mCurAngle, NULL);
JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(mHitodamaParticleKey[i]);
if (emitter != NULL) {
u8 alpha;
if (dComIfGs_wolfeye_effect_check() == 0) {
alpha = 0xff;
} else {
alpha = 0;
}
emitter->setGlobalTranslation(pos.x, pos.y, pos.z);
emitter->setGlobalAlpha(alpha);
}
}
}
/* 80154DA8-80154E54 14F6E8 00AC+00 1/1 0/0 1/1 .text
* daNpcF_pntVsLineSegmentLengthSquare2D__FffffffPfPfPf */
BOOL daNpcF_pntVsLineSegmentLengthSquare2D(f32 i_pntX, f32 i_pntZ, f32 i_startX, f32 i_startZ,
f32 i_endX, f32 i_endZ, f32* o_projX, f32* o_projZ,
f32* o_dist2) {
BOOL ret = false;
f32 len2;
f32 line_x = i_endX - i_startX;
f32 line_z = i_endZ - i_startZ;
len2 = line_x * line_x + line_z * line_z;
if (0.0f == len2) {
*o_dist2 = 0.0f;
return false;
}
f32 prm = (line_x * (i_pntX - i_startX) + line_z * (i_pntZ - i_startZ)) / len2;
if (0.0f <= prm && prm <= 1.0f) {
ret = true;
}
*o_projX = i_startX + line_x * prm;
*o_projZ = i_startZ + line_z * prm;
//!@bug The last `o_projX` should be `o_projZ`
*o_dist2 = (*o_projX - i_pntX) * (*o_projX - i_pntX)
+ (*o_projZ - i_pntZ) * (*o_projX - i_pntZ);
return ret;
}
/* 80154E54-80154E5C 14F794 0008+00 1/1 0/0 0/0 .text daNpcF_putNurbs__FP4dPntiiP4dPnti
*/
static u16 daNpcF_putNurbs(dPnt* param_0, int param_1, int param_2, dPnt* param_3, int param_4) {
return false;
}
/* 80154E5C-8015556C 14F79C 0710+00 1/1 0/0 1/1 .text daNpcF_chkPassed__F4cXyzP4dPntUsUsii */
BOOL daNpcF_chkPassed(cXyz i_pos, dPnt* i_points, u16 i_idx, u16 i_num, BOOL i_isClosed,
BOOL i_isReversed) {
cXyz prev_pos, cur_pos, next_pos, pos;
u16 prev_idx = i_idx;
u16 next_idx = i_idx;
daNpcF_incIdx(i_num, next_idx, i_isClosed, false);
daNpcF_decIdx(i_num, prev_idx, i_isClosed, false);
prev_pos.set(i_points[prev_idx].m_position.x,
i_points[prev_idx].m_position.y,
i_points[prev_idx].m_position.z);
cur_pos.set(i_points[i_idx].m_position.x,
i_points[i_idx].m_position.y,
i_points[i_idx].m_position.z);
next_pos.set(i_points[next_idx].m_position.x,
i_points[next_idx].m_position.y,
i_points[next_idx].m_position.z);
f32 dist;
s16 angle;
if (prev_idx != i_idx || next_idx != i_idx) {
if (prev_idx < i_idx && i_idx < next_idx) {
dist = (next_pos - prev_pos).absXZ();
angle = cM_atan2s(next_pos.x - prev_pos.x, next_pos.z - prev_pos.z);
pos = prev_pos;
prev_pos.x = pos.x + dist * -1.0f * cM_ssin(angle);
prev_pos.z = pos.z + dist * -1.0f * cM_scos(angle);
next_pos.x = pos.x + dist * 2.0f * cM_ssin(angle);
next_pos.z = pos.z + dist * 2.0f * cM_scos(angle);
} else if (prev_idx < i_idx) {
dist = (cur_pos - prev_pos).absXZ();
angle = cM_atan2s(cur_pos.x - prev_pos.x, cur_pos.z - prev_pos.z);
pos = cur_pos;
prev_pos.x = pos.x + dist * -2.0f * cM_ssin(angle);
prev_pos.z = pos.z + dist * -2.0f * cM_scos(angle);
next_pos.x = pos.x + dist * 2.0f * cM_ssin(angle);
next_pos.z = pos.z + dist * 2.0f * cM_scos(angle);
} else if (i_idx < next_idx) {
dist = (next_pos - cur_pos).absXZ();
angle = cM_atan2s(next_pos.x - cur_pos.x, next_pos.z - cur_pos.z);
pos = cur_pos;
prev_pos.x = pos.x + dist * -2.0f * cM_ssin(angle);
prev_pos.z = pos.z + dist * -2.0f * cM_scos(angle);
next_pos.x = pos.x + dist * 2.0f * cM_ssin(angle);
next_pos.z = pos.z + dist * 2.0f * cM_scos(angle);
}
f32 proj_x, proj_z, proj2_x, proj2_z;
daNpcF_pntVsLineSegmentLengthSquare2D(i_pos.x, i_pos.z, prev_pos.x, prev_pos.z,
next_pos.x, next_pos.z, &proj_x, &proj_z, &dist);
if (cM3d_IsZero(dist)) {
return false;
} else {
daNpcF_pntVsLineSegmentLengthSquare2D(cur_pos.x, cur_pos.z, prev_pos.x, prev_pos.z,
next_pos.x, next_pos.z, &proj2_x, &proj2_z, &dist);
s16 angle2;
if (i_isReversed) {
angle2 = cM_atan2s(prev_pos.x - next_pos.x, prev_pos.z - next_pos.z);
} else {
angle2 = cM_atan2s(next_pos.x - prev_pos.x, next_pos.z - prev_pos.z);
}
u16 angle_diff = abs((s16)(angle2 - cM_atan2s(proj2_x - proj_x, proj2_z - proj_z)));
return angle_diff > 0x4000;
}
} else {
return false;
}
}
/* 8015556C-80155634 14FEAC 00C8+00 1/1 0/0 8/8 .text daNpcF_getGroundAngle__FP13cBgS_PolyInfos */
s16 daNpcF_getGroundAngle(cBgS_PolyInfo* param_0, s16 param_1) {
cM3dGPla tmp;
if (dComIfG_Bgsp().ChkPolySafe(*param_0)) {
if (!dComIfG_Bgsp().GetTriPla(*param_0, &tmp) || !cBgW_CheckBGround(tmp.mNormal.y)) {
return 0;
} else {
return fopAcM_getPolygonAngle(&tmp, param_1);
}
} else {
return 0;
}
}
/* 80155634-80155674 14FF74 0040+00 0/0 0/0 69/69 .text daNpcF_chkEvtBit__FUl */
BOOL daNpcF_chkEvtBit(u32 i_idx) {
return dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[i_idx]);
}
/* 80155674-801556B4 14FFB4 0040+00 0/0 0/0 13/13 .text daNpcF_onEvtBit__FUl */
void daNpcF_onEvtBit(u32 i_idx) {
dComIfGs_onEventBit(dSv_event_flag_c::saveBitLabels[i_idx]);
}
/* 801556B4-801556F4 14FFF4 0040+00 0/0 0/0 6/6 .text daNpcF_chkTmpBit__FUl */
BOOL daNpcF_chkTmpBit(u32 i_idx) {
return dComIfGs_isTmpBit(dSv_event_tmp_flag_c::tempBitLabels[i_idx]);
}
/* 801556F4-80155734 150034 0040+00 0/0 0/0 6/6 .text daNpcF_onTmpBit__FUl */
void daNpcF_onTmpBit(u32 i_idx) {
dComIfGs_onTmpBit(dSv_event_tmp_flag_c::tempBitLabels[i_idx]);
}
/* 80155734-80155774 150074 0040+00 1/1 0/0 36/36 .text daNpcF_offTmpBit__FUl */
void daNpcF_offTmpBit(u32 i_idx) {
dComIfGs_offTmpBit(dSv_event_tmp_flag_c::tempBitLabels[i_idx]);
}
/* 80155774-80155854 1500B4 00E0+00 0/0 2/2 5/5 .text
* 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;
param_3 = entries->mAngle;
rv = 1;
break;
}
}
return rv;
}
/* 80155854-80155968 150194 0114+00 0/0 0/0 1/1 .text daNpcF_chkDoBtnEqSpeak__FP10fopAc_ac_c */
bool daNpcF_chkDoBtnEqSpeak(fopAc_ac_c* i_ActorP) {
bool ret = 0;
if (daPy_getPlayerActorClass()->checkPriActorOwn(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;
};
}
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;
};
}
}
return ret;
}
/* 80155968-80155AD4 1502A8 016C+00 1/1 0/0 2/2 .text daNpcF_chkPointInArea__F4cXyz4cXyz4cXyzs */
BOOL daNpcF_chkPointInArea(cXyz i_point, cXyz i_center, cXyz i_bounds, s16 i_angleY) {
cXyz delta_aligned;
mDoMtx_stack_c::YrotS(-i_angleY);
mDoMtx_stack_c::transM(-i_center.x, -i_center.y, -i_center.z);
mDoMtx_stack_c::multVec(&i_point, &delta_aligned);
f32 bound_x = fabsf(i_bounds.x);
f32 bound_z = fabsf(i_bounds.z);
f32 delta_x = fabsf(delta_aligned.x);
f32 delta_z = fabsf(delta_aligned.z);
cXyz delta = i_center - i_point;
if (delta.y <= -i_bounds.y || i_bounds.y <= delta.y) {
return FALSE;
} else {
f32 tmp_float1 = (delta_x * delta_x) / (bound_x * bound_x);
f32 tmp_float2 = (delta_z * delta_z) / (bound_z * bound_z);
f32 tmp_float3 = tmp_float1 + tmp_float2;
return tmp_float3 <= 1.0f;
}
}
/* 80155AD4-80155AE8 150414 0014+00 1/1 0/0 1/1 .text daNpcF_getDistTableIdx__Fii */
u8 daNpcF_getDistTableIdx(int param_0, int param_1) {
return param_0 + param_1 * 0x14 + 0x5e;
}
/* 80155AE8-80155B54 150428 006C+00 0/0 0/0 6/6 .text daNpcF_clearMessageTmpBit__Fv */
void daNpcF_clearMessageTmpBit() {
daNpcF_offTmpBit(0xb);
daNpcF_offTmpBit(0xc);
daNpcF_offTmpBit(0xd);
daNpcF_offTmpBit(0xe);
daNpcF_offTmpBit(0xf);
daNpcF_offTmpBit(0x33);
daNpcF_offTmpBit(0x34);
daNpcF_offTmpBit(0x35);
daNpcF_offTmpBit(0x36);
daNpcF_offTmpBit(0x37);
}
/* 80155B54-80155BB4 150494 0060+00 1/0 0/0 0/0 .text __dt__20daNpcF_MoveBgActor_cFv */
daNpcF_MoveBgActor_c::~daNpcF_MoveBgActor_c() {
/* empty function */
}
/* 80155BB8-80155BBC 1504F8 0004+00 2/0 0/0 0/0 .text setAttnPos__8daNpcF_cFv */
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;
}
/* 80155BC8-80155BCC 150508 0004+00 2/0 0/0 0/0 .text setParam__8daNpcF_cFv */
void daNpcF_c::setParam() {
/* empty function */
}
/* 80155BCC-80155BD0 15050C 0004+00 2/0 0/0 0/0 .text drawOtherMdls__8daNpcF_cFv */
void daNpcF_c::drawOtherMdls() {
/* empty function */
}
/* 80155BD0-80155BD8 150510 0008+00 2/0 0/0 0/0 .text drawDbgInfo__8daNpcF_cFv */
BOOL daNpcF_c::drawDbgInfo() {
return true;
}
/* 80155BD8-80155BE0 150518 0008+00 2/0 0/0 0/0 .text ctrlBtk__8daNpcF_cFv */
BOOL daNpcF_c::ctrlBtk() {
return false;
}
/* 80155BE0-80155BE8 150520 0008+00 2/0 0/0 0/0 .text setExpressionAnm__8daNpcF_cFib */
bool daNpcF_c::setExpressionAnm(int param_0, bool param_1) {
return true;
}
/* 80155BE8-80155BEC 150528 0004+00 2/0 0/0 0/0 .text setMotionAnm__8daNpcF_cFif */
bool daNpcF_c::setMotionAnm(int param_0, f32 param_1) {
/* empty function */
}
/* 80155BEC-80155BF0 15052C 0004+00 2/0 0/0 0/0 .text setMotion__8daNpcF_cFifi */
void daNpcF_c::setMotion(int param_0, f32 param_1, int param_2) {
/* empty function */
}
/* 80155BF0-80155BF4 150530 0004+00 2/0 0/0 0/0 .text setExpression__8daNpcF_cFif */
void daNpcF_c::setExpression(int param_0, f32 param_1) {
/* empty function */
}
/* 80155E88-80155E90 1507C8 0008+00 1/0 0/0 0/0 .text CreateHeap__20daNpcF_MoveBgActor_cFv */
bool daNpcF_MoveBgActor_c::CreateHeap() {
return true;
}
/* 80155E90-80155E98 1507D0 0008+00 1/0 0/0 0/0 .text Create__20daNpcF_MoveBgActor_cFv */
bool daNpcF_MoveBgActor_c::Create() {
return true;
}
/* 80155E98-80155EA0 1507D8 0008+00 1/0 0/0 0/0 .text Delete__20daNpcF_MoveBgActor_cFv */
bool daNpcF_MoveBgActor_c::Delete() {
return true;
}
/* 80155EA0-80155EA8 1507E0 0008+00 1/0 0/0 0/0 .text Execute__20daNpcF_MoveBgActor_cFPPA3_A4_f */
bool daNpcF_MoveBgActor_c::Execute(f32 (**param_0)[3][4]) {
return true;
}
/* 80155EA8-80155EB0 1507E8 0008+00 1/0 0/0 0/0 .text Draw__20daNpcF_MoveBgActor_cFv */
bool daNpcF_MoveBgActor_c::Draw() {
return true;
}
/* 80155EB0-80155EB8 1507F0 0008+00 1/0 0/0 0/0 .text IsDelete__20daNpcF_MoveBgActor_cFv
*/
bool daNpcF_MoveBgActor_c::IsDelete() {
return true;
}
/* 80155EB8-80155EC0 1507F8 0008+00 1/0 0/0 0/0 .text ToFore__20daNpcF_MoveBgActor_cFv */
bool daNpcF_MoveBgActor_c::ToFore() {
return true;
}
/* 80155EC0-80155EC8 150800 0008+00 1/0 0/0 0/0 .text ToBack__20daNpcF_MoveBgActor_cFv */
bool daNpcF_MoveBgActor_c::ToBack() {
return true;
}
/* 80155EC8-80155ED0 150808 0008+00 2/0 0/0 0/0 .text setExpressionBtp__8daNpcF_cFi */
bool daNpcF_c::setExpressionBtp(int param_0) {
return true;
}
/* 80155ED0-80155FB0 150810 00E0+00 1/0 0/0 0/0 .text __dt__15daNpcF_MatAnm_cFv */
daNpcF_MatAnm_c::~daNpcF_MatAnm_c() {
/* empty function */
}
/* 80155FB0-80156010 1508F0 0060+00 1/0 0/0 0/0 .text __dt__23daBaseNpc_moveBgActor_cFv
*/
daBaseNpc_moveBgActor_c::~daBaseNpc_moveBgActor_c() {
// NONMATCHING
}
/* ############################################################################################## */
/* 803926B0-803926E0 01ED10 0030+00 0/0 0/0 0/0 .rodata mCcDObj__11daBaseNpc_c */
#pragma push
#pragma force_active on
SECTION_RODATA u8 const daBaseNpc_c::mCcDObj[48] = {
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, 0x79, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x803926B0, &daBaseNpc_c::mCcDObj);
#pragma pop
/* 803926E0-80392710 01ED40 0030+00 0/0 0/0 0/0 .rodata mCcDObjInfo__8daNpcF_c */
#pragma push
#pragma force_active on
SECTION_RODATA u8 const daNpcF_c::mCcDObjInfo[48] = {
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, 0x79, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x803926E0, &daNpcF_c::mCcDObjInfo);
#pragma pop
/* 80392720-80392725 01ED80 0005+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80392720 = ".bck";
#pragma pop
/* 80392725-8039272A 01ED85 0005+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80392725 = ".btp";
#pragma pop
/* 8039272A-8039272F 01ED8A 0005+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8039272A = ".btk";
#pragma pop
/* 8039272F-8039274A 01ED8F 001B+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8039272F = "%.3ff,\t// 注目オフセット\n";
#pragma pop
/* 8039274A-8039275B 01EDAA 0011+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8039274A = "%.3ff,\t// 重力\n";
#pragma pop
/* 8039275B-80392770 01EDBB 0015+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8039275B = "%.3ff,\t// スケ−ル\n";
#pragma pop
/* 80392770-8039278B 01EDD0 001B+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80392770 = "%.3ff,\t// リアル影サイズ\n";
#pragma pop
/* 8039278B-8039279C 01EDEB 0011+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8039278B = "%.3ff,\t// 体重\n";
#pragma pop
/* 8039279C-803927AD 01EDFC 0011+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8039279C = "%.3ff,\t// 高さ\n";
#pragma pop
/* 803927AD-803927C0 01EE0D 0013+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_803927AD = "%.3ff,\t// ひざ丈\n";
#pragma pop
/* 803927C0-803927CF 01EE20 000F+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_803927C0 = "%.3ff,\t// 幅\n";
#pragma pop
/* 803927CF-803927E8 01EE2F 0019+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_803927CF = "%.3ff,\t// 腰のX角上限\n";
#pragma pop
/* 803927E8-80392801 01EE48 0019+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_803927E8 = "%.3ff,\t// 腰のX角下限\n";
#pragma pop
/* 80392801-8039281A 01EE61 0019+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80392801 = "%.3ff,\t// 腰のY角上限\n";
#pragma pop
/* 8039281A-80392833 01EE7A 0019+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8039281A = "%.3ff,\t// 腰のY角下限\n";
#pragma pop
/* 80392833-8039284C 01EE93 0019+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80392833 = "%.3ff,\t// 頭のX角上限\n";
#pragma pop
/* 8039284C-80392865 01EEAC 0019+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8039284C = "%.3ff,\t// 頭のX角下限\n";
#pragma pop
/* 80392865-8039287E 01EEC5 0019+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80392865 = "%.3ff,\t// 頭のY角上限\n";
#pragma pop
/* 8039287E-80392897 01EEDE 0019+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8039287E = "%.3ff,\t// 頭のY角下限\n";
#pragma pop
/* 80392897-803928B0 01EEF7 0019+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80392897 = "%.3ff,\t// 首の回転比率\n";
#pragma pop
/* 803928B0-803928C9 01EF10 0019+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_803928B0 = "%.3ff,\t// 補間フレ−ム\n";
#pragma pop
/* 803928C9-803928DE 01EF29 0015+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_803928C9 = "%d, \t// 会話距離\n";
#pragma pop
/* 803928DE-803928F3 01EF3E 0015+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_803928DE = "%d, \t// 会話角度\n";
#pragma pop
/* 803928F3-80392908 01EF53 0015+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_803928F3 = "%d, \t// 注目距離\n";
#pragma pop
/* 80392908-8039291D 01EF68 0015+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80392908 = "%d, \t// 注目角度\n";
#pragma pop
/* 8039291D-8039292E 01EF7D 0011+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8039291D = "%.3ff,\t// 視界\n";
#pragma pop
/* 8039292E-80392945 01EF8E 0017+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8039292E = "%.3ff,\t// サ−チ距離\n";
#pragma pop
/* 80392945-8039295C 01EFA5 0017+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80392945 = "%.3ff,\t// サ−チ高さ\n";
#pragma pop
/* 8039295C-80392973 01EFBC 0017+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_8039295C = "%.3ff,\t// サ−チ低さ\n";
#pragma pop
/* 80392973-80392988 01EFD3 0015+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80392973 = "%d, \t// 注目時間\n";
#pragma pop
/* 80392988-803929A1 01EFE8 0019+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_80392988 = "%d, \t// ダメ−ジ期間\n";
#pragma pop
/* 803929A1-803929B2 01F001 0011+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
// MWCC ignores mapping of some japanese characters using the
// byte 0x5C (ASCII '\'). This is why this string is hex-encoded.
SECTION_DEAD static char const* const stringBase_803929A1 =
"\x25\x64\x2C\x20\x20\x20\x09\x2F\x2F\x20\x20\x95\x5C\x8F\xEE\x0A";
#pragma pop
/* 803929B2-803929C3 01F012 0011+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_803929B2 = "%d, \t// 動作\n";
#pragma pop
/* 803929C3-803929DA 01F023 0017+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_803929C3 = "%d, \t// 注視モ−ド\n";
#pragma pop
/* 803929DA-803929F7 01F03A 001D+00 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_803929DA = "%d, \t// デバグモ−ドON\n";
#pragma pop
/* 803929F7-80392A18 01F057 001B+06 0/0 0/0 0/0 .rodata None */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_803929F7 = "%d, \t// デバグ情報ON\n";
/* @stringBase0 padding */
SECTION_DEAD static char const* const pad_80392A12 = "\0\0\0\0\0";
#pragma pop
/* 80450FF8-80451000 0004F8 0008+00 0/0 1/1 0/0 .sbss None */
extern u8 data_80450FF8[8];
u8 data_80450FF8[8];
/* 80392710-80392710 01ED70 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */