summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhev7 <143887945+hev7@users.noreply.github.com>2025-10-26 11:03:16 +0000
committerGitHub <noreply@github.com>2025-10-26 13:03:16 +0200
commita61d0272a683f99dcfe367ad31310532391cd12a (patch)
tree18a476d2c3f82cae650c78b1e562de315452319a /src
parent6bd013741b620402bcf46d1b714776db5c366b96 (diff)
NPC work, obj_szbridge matching (#2757)
* Some NPC work * Fix impal * Hopefully fix regressions in debug * HIO work for more NPCs * fix regressions * obj_szbridge matching * Fix literals
Diffstat (limited to 'src')
-rw-r--r--src/d/actor/d_a_npc_ash.cpp670
-rw-r--r--src/d/actor/d_a_npc_ashB.cpp936
-rw-r--r--src/d/actor/d_a_npc_impal.cpp277
-rw-r--r--src/d/actor/d_a_npc_lud.cpp142
-rw-r--r--src/d/actor/d_a_npc_moi.cpp156
-rw-r--r--src/d/actor/d_a_npc_shad.cpp196
-rw-r--r--src/d/actor/d_a_npc_shoe.cpp514
-rw-r--r--src/d/actor/d_a_npc_the.cpp684
-rw-r--r--src/d/actor/d_a_npc_uri.cpp310
-rw-r--r--src/d/actor/d_a_obj_szbridge.cpp467
10 files changed, 1790 insertions, 2562 deletions
diff --git a/src/d/actor/d_a_npc_ash.cpp b/src/d/actor/d_a_npc_ash.cpp
index 41148824dc..8238de3e37 100644
--- a/src/d/actor/d_a_npc_ash.cpp
+++ b/src/d/actor/d_a_npc_ash.cpp
@@ -3,251 +3,62 @@
* NPC - Ashei
*/
-#include "d/dolzel_rel.h" // IWYU pragma: keep
+#include "d/dolzel_rel.h" // IWYU pragma: keep
-#include "d/actor/d_a_npc_ash.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "SSystem/SComponent/c_math.h"
+#include "d/actor/d_a_npc_ash.h"
#include "d/actor/d_a_tag_evtarea.h"
-#include "dol2asm.h"
-
-//
-// Forward References:
-//
-
-extern "C" void __ct__10daNpcAsh_cFv();
-extern "C" void __dt__8dCcD_CylFv();
-extern "C" void __ct__8dCcD_CylFv();
-extern "C" void __dt__8cM3dGCylFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__10daNpcAsh_cFv();
-extern "C" void Create__10daNpcAsh_cFv();
-extern "C" void CreateHeap__10daNpcAsh_cFv();
-extern "C" void __dt__15J3DTevKColorAnmFv();
-extern "C" void __ct__15J3DTevKColorAnmFv();
-extern "C" void __dt__14J3DTevColorAnmFv();
-extern "C" void __ct__14J3DTevColorAnmFv();
-extern "C" void __dt__11J3DTexNoAnmFv();
-extern "C" void __ct__11J3DTexNoAnmFv();
-extern "C" void __dt__12J3DTexMtxAnmFv();
-extern "C" void __ct__12J3DTexMtxAnmFv();
-extern "C" void __dt__14J3DMatColorAnmFv();
-extern "C" void __ct__14J3DMatColorAnmFv();
-extern "C" void Delete__10daNpcAsh_cFv();
-extern "C" void Execute__10daNpcAsh_cFv();
-extern "C" void Draw__10daNpcAsh_cFv();
-extern "C" void ctrlJoint__10daNpcAsh_cFP8J3DJointP8J3DModel();
-extern "C" void createHeapCallBack__10daNpcAsh_cFP10fopAc_ac_c();
-extern "C" void ctrlJointCallBack__10daNpcAsh_cFP8J3DJointi();
-extern "C" void setExpressionAnm__10daNpcAsh_cFib();
-extern "C" void setExpressionBtp__10daNpcAsh_cFi();
-extern "C" void setMotionAnm__10daNpcAsh_cFif();
-extern "C" void reset__10daNpcAsh_cFv();
-extern "C" void setAction__10daNpcAsh_cFM10daNpcAsh_cFPCvPvPv_b();
-extern "C" void isSneaking__10daNpcAsh_cFv();
-extern "C" void wait_type0__10daNpcAsh_cFPv();
-extern "C" void setMotion__10daNpcAsh_cFifi();
-extern "C" void setExpression__10daNpcAsh_cFif();
-extern "C" void wait_type1__10daNpcAsh_cFPv();
-extern "C" void talk__10daNpcAsh_cFPv();
-extern "C" void demo__10daNpcAsh_cFPv();
-extern "C" void leave__10daNpcAsh_cFPv();
-extern "C" void EvCut_Introduction__10daNpcAsh_cFi();
-extern "C" void EvCut_Meeting__10daNpcAsh_cFi();
-extern "C" void EvCut_WiretapSponsor__10daNpcAsh_cFi();
-extern "C" void EvCut_WiretapEntrant__10daNpcAsh_cFi();
-extern "C" static void daNpcAsh_Create__FPv();
-extern "C" static void daNpcAsh_Delete__FPv();
-extern "C" static void daNpcAsh_Execute__FPv();
-extern "C" static void daNpcAsh_Draw__FPv();
-extern "C" static bool daNpcAsh_IsDelete__FPv();
-extern "C" void calc__11J3DTexNoAnmCFPUs();
-extern "C" void setParam__10daNpcAsh_cFv();
-extern "C" void main__10daNpcAsh_cFv();
-extern "C" void playMotion__10daNpcAsh_cFv();
-extern "C" void ctrlBtk__10daNpcAsh_cFv();
-extern "C" void setAttnPos__10daNpcAsh_cFv();
-extern "C" void lookat__10daNpcAsh_cFv();
-extern "C" bool drawDbgInfo__10daNpcAsh_cFv();
-extern "C" void func_8095CC94(void* _this, s16);
-extern "C" void __sinit_d_a_npc_ash_cpp();
-extern "C" void __dt__18daNpcF_ActorMngr_cFv();
-extern "C" void __ct__18daNpcF_ActorMngr_cFv();
-extern "C" void __dt__15daNpcF_Lookat_cFv();
-extern "C" void __dt__5csXyzFv();
-extern "C" void __ct__5csXyzFv();
-extern "C" void __dt__4cXyzFv();
-extern "C" void __ct__4cXyzFv();
-extern "C" void __dt__8daNpcF_cFv();
-extern "C" void __ct__8daNpcF_cFv();
-extern "C" void __dt__12dBgS_AcchCirFv();
-extern "C" void __dt__10dCcD_GSttsFv();
-extern "C" void __dt__12dBgS_ObjAcchFv();
-extern "C" void __dt__12J3DFrameCtrlFv();
-extern "C" void adjustShapeAngle__8daNpcF_cFv();
-extern "C" void setCollisions__8daNpcF_cFv();
-extern "C" void drawOtherMdls__8daNpcF_cFv();
-extern "C" void __dt__10cCcD_GSttsFv();
-extern "C" void chkPointInArea__15daTag_EvtArea_cF4cXyz();
-extern "C" void __dt__16daNpcAsh_Param_cFv();
-extern "C" static void func_8095D61C();
-extern "C" static void func_8095D624();
-extern "C" u8 const m__16daNpcAsh_Param_c[108];
-extern "C" extern char* const d_a_npc_ash__stringBase0;
-extern "C" u8 mEvtSeqList__10daNpcAsh_c[72];
-
-//
-// External References:
-//
-
-extern "C" void changeBckOnly__13mDoExt_bckAnmFP15J3DAnmTransform();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-extern "C" void
-__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl();
-extern "C" void modelCalc__16mDoExt_McaMorfSOFv();
-extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv();
-extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void __dt__10fopAc_ac_cFv();
-extern "C" void fopAcIt_Judge__FPFPvPv_PvPv();
-extern "C" void fopAcM_delete__FP10fopAc_ac_c();
-extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
-extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff();
-extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c();
-extern "C" void fpcSch_JudgeForPName__FPvPv();
-extern "C" void getLayerNo__14dComIfG_play_cFi();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfGs_isStageSwitch__Fii();
-extern "C" void isSwitch__12dSv_memBit_cCFi();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void reset__14dEvt_control_cFv();
-extern "C" void convPId__14dEvt_control_cFUi();
-extern "C" void setPtI_Id__14dEvt_control_cFUi();
-extern "C" void endCheck__16dEvent_manager_cFs();
-extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci();
-extern "C" void getIsAddvance__16dEvent_manager_cFi();
-extern "C" void getMyActIdx__16dEvent_manager_cFiPCPCciii();
-extern "C" void getMyNowCutName__16dEvent_manager_cFi();
-extern "C" void getMySubstanceP__16dEvent_manager_cFiPCci();
-extern "C" void cutEnd__16dEvent_manager_cFi();
-extern "C" void ChkPresentEnd__16dEvent_manager_cFv();
-extern "C" void __ct__12dBgS_AcchCirFv();
-extern "C" void SetWall__12dBgS_AcchCirFff();
-extern "C" void __dt__9dBgS_AcchFv();
-extern "C" void __ct__9dBgS_AcchFv();
-extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz();
-extern "C" void CrrPos__9dBgS_AcchFR4dBgS();
-extern "C" void __ct__11dBgS_GndChkFv();
-extern "C" void __dt__11dBgS_GndChkFv();
-extern "C" void __ct__11dBgS_LinChkFv();
-extern "C" void __dt__11dBgS_LinChkFv();
-extern "C" void SetObj__16dBgS_PolyPassChkFv();
-extern "C" void __ct__10dCcD_GSttsFv();
-extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
-extern "C" void __ct__12dCcD_GObjInfFv();
-extern "C" void __dt__12dCcD_GObjInfFv();
-extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl();
-extern "C" void initialize__18daNpcF_ActorMngr_cFv();
-extern "C" void entry__18daNpcF_ActorMngr_cFP10fopAc_ac_c();
-extern "C" void remove__18daNpcF_ActorMngr_cFv();
-extern "C" void getActorP__18daNpcF_ActorMngr_cFv();
-extern "C" void initialize__15daNpcF_MatAnm_cFv();
-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 execute__8daNpcF_cFv();
-extern "C" void draw__8daNpcF_cFiifP11_GXColorS10i();
-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 setMcaMorfAnm__8daNpcF_cFP18J3DAnmTransformKeyffiii();
-extern "C" void setBckAnm__8daNpcF_cFP15J3DAnmTransformfiiib();
-extern "C" void setBtpAnm__8daNpcF_cFP16J3DAnmTexPatternP12J3DModelDatafi();
-extern "C" void setBtkAnm__8daNpcF_cFP19J3DAnmTextureSRTKeyP12J3DModelDatafi();
-extern "C" void setEnvTevColor__8daNpcF_cFv();
-extern "C" void setRoomNo__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 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 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 setAngle__8daNpcF_cFs();
-extern "C" void getDistTableIdx__8daNpcF_cFii();
-extern "C" void getEvtAreaTagP__8daNpcF_cFii();
-extern "C" void daNpcF_chkEvtBit__FUl();
-extern "C" void daNpcF_chkTmpBit__FUl();
-extern "C" void daNpcF_offTmpBit__FUl();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void __ct__10dMsgFlow_cFv();
-extern "C" void __dt__10dMsgFlow_cFv();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void __mi__4cXyzCFRC3Vec();
-extern "C" void cM_atan2s__Fff();
-extern "C" void __ct__11cBgS_GndChkFv();
-extern "C" void __dt__11cBgS_GndChkFv();
-extern "C" void __dt__13cBgS_PolyInfoFv();
-extern "C" void __dt__8cM3dGCirFv();
-extern "C" void SetC__8cM3dGCylFRC4cXyz();
-extern "C" void SetH__8cM3dGCylFf();
-extern "C" void SetR__8cM3dGCylFf();
-extern "C" void cLib_targetAngleY__FPC3VecPC3Vec();
-extern "C" void cLib_targetAngleX__FPC4cXyzPC4cXyz();
-extern "C" void __ct__10Z2CreatureFv();
-extern "C" void __dt__10Z2CreatureFv();
-extern "C" void init__10Z2CreatureFP3VecP3VecUcUc();
-extern "C" void* __nw__FUl();
-extern "C" void __dl__FPv();
-extern "C" void init__12J3DFrameCtrlFs();
-extern "C" void getTexNo__16J3DAnmTexPatternCFUsPUs();
-extern "C" void initialize__14J3DMaterialAnmFv();
-extern "C" void __destroy_arr();
-extern "C" void __construct_array();
-extern "C" void __ptmf_test();
-extern "C" void __ptmf_scall();
-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_24();
-extern "C" void _restgpr_25();
-extern "C" void _restgpr_26();
-extern "C" void _restgpr_27();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" extern u8 const __ptmf_null[12 + 4 /* padding */];
-extern "C" extern void* __vt__8dCcD_Cyl[36];
-extern "C" extern void* __vt__9dCcD_Stts[11];
-extern "C" u8 mCcDCyl__8daNpcF_c[68];
-extern "C" extern void* __vt__8daNpcF_c[18];
-extern "C" extern void* __vt__15daNpcF_MatAnm_c[4 + 6 /* padding */];
-extern "C" extern void* __vt__12cCcD_CylAttr[25];
-extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
-extern "C" extern void* __vt__9cCcD_Stts[8];
-extern "C" extern void* __vt__14J3DMaterialAnm[4];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" u8 mCurrentMtx__6J3DSys[48];
-extern "C" u8 sincosTable___5JMath[65536];
-extern "C" void chkPointInArea__15daTag_EvtArea_cF4cXyz4cXyz();
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
+
+/* 8095D640-8095D6AC 000000 006C+00 14/14 0/0 0/0 .rodata m__16daNpcAsh_Param_c */
+const daNpcAsh_HIOParam daNpcAsh_Param_c::m = {
+ 35.0f, // attention_offset
+ -3.0f, // gravity
+ 1.0f, // scale
+ 400.0f, // real_shadow_size
+ 255.0f, // weight
+ 200.0f, // height
+ 35.0f, // knee_length
+ 30.0f, // width
+ 0.0f, // body_angleX_max
+ 0.0f, // body_angleX_min
+ 0.0f, // body_angleY_max
+ 0.0f, // body_angleY_min
+ 30.0f, // head_angleX_max
+ 0.0f, // head_angleX_min
+ 30.0f, // head_angleY_max
+ -30.0f, // head_angleY_min
+ 0.8f, // neck_rotation_ratio
+ 12.0f, // morf_frame
+ 3, // talk_distance
+ 6, // talk_angle
+ 5, // attention_distance
+ 6, // attention_angle
+ 120.0f, // fov
+ 500.0f, // search_distance
+ 300.0f, // search_height
+ -300.0f, // search_depth
+ 60, // attention_time
+ 8, // damage_time
+ 0, // face_expression
+ 0, // motion
+ 0, // look_mode
+ 0, // debug_mode_ON
+ 0, // debug_info_ON
+};
+
+#if DEBUG
+daNpcAsh_HIO_c::daNpcAsh_HIO_c() {
+ m = daNpcAsh_Param_c::m;
+}
+
+void daNpcAsh_HIO_c::genMessage(JORMContext* ctext) {
+ // TODO
+}
+#endif
/* 8095DD4C-8095DD50 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */
-static daNpcAsh_Param_c l_HIO;
+NPC_ASH_HIO_CLASS l_HIO;
void daNpcAsh_c::setLookMode(int i_lookMode, fopAc_ac_c* i_talkPartner) {
if (i_lookMode != mLookMode || i_talkPartner != mTalkPartner) {
@@ -276,7 +87,7 @@ void daNpcAsh_c::searchActors() {
BOOL daNpcAsh_c::chkFindPlayer() {
BOOL ret;
- if (!chkActorInSight(daPy_getPlayerActorClass(), daNpcAsh_Param_c::m.mAttnFovY)) {
+ if (!chkActorInSight(daPy_getPlayerActorClass(), mpHIO->m.common.fov)) {
mActorMngr[0].remove();
ret = false;
} else {
@@ -326,44 +137,48 @@ bool daNpcAsh_c::step(s16 i_angY, bool i_animate) {
/* 8095D9B0-8095DA88 000020 00D8+00 1/2 0/0 0/0 .data l_bckGetParamList */
static daNpc_GetParam2 l_bckGetParamList[18] = {
- {-1, 2, 0}, // <none>
- {7, 0, 0}, // ash_f_talk_a
- {12, 0, 1}, // ash_f_talk_b
- {11, 0, 1}, // ash_f_silent
- {8, 0, 1}, // ash_f_cool
- {7, 0, 1}, // ash_f_ask
- {9, 0, 1}, // ash_f_explain_a
- {10, 0, 1}, // ash_f_explain_b
- {8, 2, 0}, // ash_wait_a
- {14, 2, 1}, // ash_wait_b
- {15, 2, 1}, // ash_wait_c
- {13, 0, 1}, // ash_step
- {4, 0, 1}, // ash_cool
- {3, 0, 1}, // ash_ask
- {5, 0, 1}, // ash_explain_a
- {6, 0, 1}, // ash_explain_b
- {5, 2, 2}, // ash_bowwait
- {4, 2, 2}, // ash_bowrun
+ {-1, 2, 0}, // <none>
+ {7, 0, 0}, // ash_f_talk_a
+ {12, 0, 1}, // ash_f_talk_b
+ {11, 0, 1}, // ash_f_silent
+ {8, 0, 1}, // ash_f_cool
+ {7, 0, 1}, // ash_f_ask
+ {9, 0, 1}, // ash_f_explain_a
+ {10, 0, 1}, // ash_f_explain_b
+ {8, 2, 0}, // ash_wait_a
+ {14, 2, 1}, // ash_wait_b
+ {15, 2, 1}, // ash_wait_c
+ {13, 0, 1}, // ash_step
+ {4, 0, 1}, // ash_cool
+ {3, 0, 1}, // ash_ask
+ {5, 0, 1}, // ash_explain_a
+ {6, 0, 1}, // ash_explain_b
+ {5, 2, 2}, // ash_bowwait
+ {4, 2, 2}, // ash_bowrun
};
/* 8095DA88-8095DA94 0000F8 000C+00 1/1 0/0 0/0 .data l_btpGetParamList */
static daNpc_GetParam2 l_btpGetParamList[1] = {
- {17, 2, 0}, // ash
+ {17, 2, 0}, // ash
};
/* 8095DA94-8095DAA0 000104 000C+00 0/1 0/0 0/0 .data l_btkGetParamList */
static daNpc_GetParam2 l_btkGetParamList[1] = {
- {14, 2, 0}, // ash
+ {14, 2, 0}, // ash
};
/* 8095DAA0-8095DAAC 000110 000C+00 1/0 0/0 0/0 .data l_loadRes_ASH0 */
static int l_loadRes_ASH0[3] = {
- 0, 1, -1,
+ 0,
+ 1,
+ -1,
};
/* 8095DAAC-8095DAB8 00011C 000C+00 1/0 0/0 0/0 .data l_loadRes_ASH1 */
static int l_loadRes_ASH1[3] = {
- 0, 2, -1,
+ 0,
+ 2,
+ -1,
};
/* 8095DAB8-8095DAC0 -00001 0008+00 2/2 0/0 0/0 .data l_loadRes_list */
@@ -402,9 +217,7 @@ daNpcAsh_c::EventFn daNpcAsh_c::mEvtSeqList[6] = {
};
/* 809582EC-80958430 0000EC 0144+00 1/1 0/0 0/0 .text __ct__10daNpcAsh_cFv */
-daNpcAsh_c::daNpcAsh_c() {
- // NONMATCHING
-}
+daNpcAsh_c::daNpcAsh_c() {}
/* 80958610-809587A0 000410 0190+00 1/0 0/0 0/0 .text __dt__10daNpcAsh_cFv */
daNpcAsh_c::~daNpcAsh_c() {
@@ -417,42 +230,6 @@ daNpcAsh_c::~daNpcAsh_c() {
}
}
-/* 8095D640-8095D6AC 000000 006C+00 14/14 0/0 0/0 .rodata m__16daNpcAsh_Param_c */
-daNpcAsh_Param_c::param const daNpcAsh_Param_c::m = {
- 35.0f, // mAttnOffsetY
- -3.0f, // mGravity
- 1.0f, // mScale
- 400.0f, // mShadowDepth
- 255.0f, // mCcWeight
- 200.0f, // mCylH
- 35.0f, // mWallH
- 30.0f, // mWallR
- 0.0f, // mBodyUpAngle
- 0.0f, // mBodyDownAngle
- 0.0f, // mBodyLeftAngle
- 0.0f, // mBodyRightAngle
- 30.0f, // mHeadUpAngle
- 0.0f, // mHeadDownAngle
- 30.0f, // mHeadLeftAngle
- -30.0f, // mHeadRightAngle
- 0.8f, // mNeckAngleScl
- 12.0f, // mMorfFrames
- 3, // mSpeakDistIdx
- 6, // mSpeakAngleIdx
- 5, // mTalkDistIdx
- 6, // mTalkAngleIdx
- 120.0f, // mAttnFovY
- 500.0f, // mAttnRadius
- 300.0f, // mAttnUpperY
- -300.0f, // mAttnLowerY
- 60,
- 8, // mDamageTimer
- 0, // mTestExpression
- 0, // mTestMotion
- 0, // mTestLookMode
- false, // mTest
-};
-
/* 809587A0-80958B68 0005A0 03C8+00 1/1 0/0 0/0 .text Create__10daNpcAsh_cFv */
cPhs__Step daNpcAsh_c::Create() {
cPhs__Step step;
@@ -460,10 +237,11 @@ cPhs__Step daNpcAsh_c::Create() {
fopAcM_ct(this, daNpcAsh_c);
if (!strcmp(dComIfGp_getStartStageName(), "R_SP116") && dComIfG_play_c::getLayerNo(0) == 4) {
- /* dSv_event_flag_c::F_0361 - Arbiter's Grounds - Spun the spinning pillars */
+ /* dSv_event_flag_c::F_0361 - Arbiter's Grounds - Spun the spinning pillars */
if (daNpcF_chkEvtBit(0x169)
- /* dSv_event_flag_c::F_0266 - Snowpeak Ruins - Snowpeak Ruins clear */
- && !daNpcF_chkEvtBit(0x10A)) {
+ /* dSv_event_flag_c::F_0266 - Snowpeak Ruins - Snowpeak Ruins clear */
+ && !daNpcF_chkEvtBit(0x10A))
+ {
return cPhs_ERROR_e;
}
if (dComIfGs_isStageSwitch(0x18, 0x4b)) {
@@ -509,13 +287,13 @@ cPhs__Step daNpcAsh_c::Create() {
fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
fopAcM_setCullSizeBox(this, -100.0f, -50.0f, -100.0f, 100.0f, 220.0f, 100.0f);
mCreatureSound.init(&current.pos, &eyePos, 3, 1);
- mAcchCir.SetWall(daNpcAsh_Param_c::m.mWallR, daNpcAsh_Param_c::m.mWallH);
+ mAcchCir.SetWall(mpHIO->m.common.width, mpHIO->m.common.knee_length);
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this));
mAcch.SetRoofNone();
mAcch.SetWaterNone();
mAcch.CrrPos(dComIfG_Bgsp());
- mCcStts.Init((int)daNpcAsh_Param_c::m.mCcWeight, 0, this);
+ mCcStts.Init((int)mpHIO->m.common.weight, 0, this);
mCcCyl[0].Set(daNpcF_c::mCcDCyl);
mCcCyl[0].SetStts(&mCcStts);
mCcCyl[0].SetTgType(0);
@@ -542,8 +320,8 @@ cPhs__Step daNpcAsh_c::Create() {
/* 80958B68-80958F08 000968 03A0+00 1/1 0/0 0/0 .text CreateHeap__10daNpcAsh_cFv */
BOOL daNpcAsh_c::CreateHeap() {
J3DModelData* modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(l_arcNames[0], 11));
- mpMorf = new mDoExt_McaMorfSO(modelData, NULL, NULL, NULL, -1, 1.0f, 0, -1,
- &mCreatureSound, 0x80000, 0x11020284);
+ mpMorf = new mDoExt_McaMorfSO(modelData, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mCreatureSound,
+ 0x80000, 0x11020284);
if (mpMorf != NULL && mpMorf->mpModel == NULL) {
mpMorf->stopZelAnime();
mpMorf = NULL;
@@ -566,13 +344,15 @@ BOOL daNpcAsh_c::CreateHeap() {
mModelQuiver = NULL;
mModelBow = NULL;
if (mType == TYPE_CASTLE) {
- mModelBow = mDoExt_J3DModel__create(static_cast<J3DModelData*>(
- dComIfG_getObjectRes(l_arcNames[2], 8)), 0x80000, 0x11000084);
+ mModelBow = mDoExt_J3DModel__create(
+ static_cast<J3DModelData*>(dComIfG_getObjectRes(l_arcNames[2], 8)), 0x80000,
+ 0x11000084);
if (mModelBow == NULL) {
return false;
}
- mModelQuiver = mDoExt_J3DModel__create(static_cast<J3DModelData*>(
- dComIfG_getObjectRes(l_arcNames[2], 9)), 0x80000, 0x11000084);
+ mModelQuiver = mDoExt_J3DModel__create(
+ static_cast<J3DModelData*>(dComIfG_getObjectRes(l_arcNames[2], 9)), 0x80000,
+ 0x11000084);
if (mModelQuiver == NULL) {
return false;
}
@@ -612,7 +392,7 @@ int daNpcAsh_c::Execute() {
/* 8095911C-80959238 000F1C 011C+00 1/1 0/0 0/0 .text Draw__10daNpcAsh_cFv */
int daNpcAsh_c::Draw() {
mpMorf->getModel()->getModelData()->getMaterialNodePointer(2)->setMaterialAnm(mpMatAnm);
- draw(false, false, daNpcAsh_Param_c::m.mShadowDepth, NULL, false);
+ draw(false, false, mpHIO->m.common.real_shadow_size, NULL, false);
if (mType == TYPE_CASTLE) {
g_env_light.setLightTevColorType_MAJI(mModelBow, &tevStr);
@@ -649,12 +429,12 @@ bool daNpcAsh_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
case 1:
case 3:
case 4:
- setLookatMtx(jointNo, lookatJoints, daNpcAsh_Param_c::m.mNeckAngleScl);
+ setLookatMtx(jointNo, lookatJoints, mpHIO->m.common.neck_rotation_ratio);
break;
}
i_model->setAnmMtx(jointNo, mDoMtx_stack_c::get());
cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx);
-
+
if ((jointNo == 4 || jointNo == 12) && (mAnmFlags & ANM_PLAY_BCK)) {
J3DAnmTransform* bckAnm = mBckAnm.getBckAnm();
mBckAnm.changeBckOnly(mpMorf->getAnm());
@@ -783,8 +563,8 @@ void daNpcAsh_c::setMotionAnm(int i_idx, f32 i_morf) {
J3DAnmTransformKey* morfAnm = getTrnsfrmKeyAnmP(l_arcNames[l_bckGetParamList[i_idx].arcIdx],
l_bckGetParamList[i_idx].fileIdx);
- J3DAnmTextureSRTKey* btkAnm = getTexSRTKeyAnmP(l_arcNames[l_btkGetParamList[0].arcIdx],
- l_btkGetParamList[0].fileIdx);
+ J3DAnmTextureSRTKey* btkAnm =
+ getTexSRTKeyAnmP(l_arcNames[l_btkGetParamList[0].arcIdx], l_btkGetParamList[0].fileIdx);
s32 morfAttr = l_bckGetParamList[i_idx].attr;
s32 btkAttr = l_btkGetParamList[0].attr;
mAnmFlags &= ~ANM_MOTION_FLAGS;
@@ -817,7 +597,7 @@ void daNpcAsh_c::reset() {
mpActionFn = NULL;
mLookMode = -1;
mMode = 0;
- gravity = daNpcAsh_Param_c::m.mGravity;
+ gravity = mpHIO->m.common.gravity;
current.pos = home.pos;
old.pos = current.pos;
current.angle.set(0, home.angle.y, 0);
@@ -866,8 +646,8 @@ bool daNpcAsh_c::setAction(daNpcAsh_c::ActionFn i_actionFn) {
/* 80959BD0-80959C40 0019D0 0070+00 1/1 0/0 0/0 .text isSneaking__10daNpcAsh_cFv */
bool daNpcAsh_c::isSneaking() {
- if (!strcmp(dComIfGp_getStartStageName(), "R_SP116")
- && dComIfGp_getStartStageRoomNo() == 5 && dComIfG_play_c::getLayerNo(0) == 2)
+ if (!strcmp(dComIfGp_getStartStageName(), "R_SP116") && dComIfGp_getStartStageRoomNo() == 5 &&
+ dComIfG_play_c::getLayerNo(0) == 2)
{
return true;
} else {
@@ -876,31 +656,24 @@ bool daNpcAsh_c::isSneaking() {
}
void daNpcAsh_c::playExpression() {
- daNpcF_anmPlayData dat0 = {ANM_F_TALK_A, daNpcAsh_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat0 = {ANM_F_TALK_A, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat0[1] = {&dat0};
- daNpcF_anmPlayData dat1 = {ANM_F_TALK_B, daNpcAsh_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat1 = {ANM_F_TALK_B, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat1[1] = {&dat1};
- daNpcF_anmPlayData dat2 = {ANM_F_SILENT, daNpcAsh_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat2 = {ANM_F_SILENT, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat2[1] = {&dat2};
- daNpcF_anmPlayData dat3 = {ANM_F_COOL, daNpcAsh_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat3 = {ANM_F_COOL, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat3[1] = {&dat3};
- daNpcF_anmPlayData dat4 = {ANM_F_ASK, daNpcAsh_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat4 = {ANM_F_ASK, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat4[1] = {&dat4};
- daNpcF_anmPlayData dat5 = {ANM_F_EXPLAIN_A, daNpcAsh_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat5 = {ANM_F_EXPLAIN_A, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat5[1] = {&dat5};
- daNpcF_anmPlayData dat6 = {ANM_F_EXPLAIN_B, daNpcAsh_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat6 = {ANM_F_EXPLAIN_B, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat6[1] = {&dat6};
- daNpcF_anmPlayData dat7 = {ANM_NONE, daNpcAsh_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat7 = {ANM_NONE, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat7[1] = {&dat7};
daNpcF_anmPlayData** ppDat[8] = {
- pDat0,
- pDat1,
- pDat2,
- pDat3,
- pDat4,
- pDat5,
- pDat6,
- pDat7,
+ pDat0, pDat1, pDat2, pDat3, pDat4, pDat5, pDat6, pDat7,
};
if (mExpression >= 0 && mExpression < 8) {
playExpressionAnm(ppDat);
@@ -909,56 +682,90 @@ void daNpcAsh_c::playExpression() {
/* 8095C200-8095C520 004000 0320+00 1/1 0/0 0/0 .text playMotion__10daNpcAsh_cFv */
void daNpcAsh_c::playMotion() {
- daNpcF_anmPlayData dat0 = {ANM_WAIT_A, daNpcAsh_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat0 = {ANM_WAIT_A, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat0[1] = {&dat0};
- daNpcF_anmPlayData dat1 = {ANM_WAIT_B, daNpcAsh_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat1 = {ANM_WAIT_B, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat1[1] = {&dat1};
- daNpcF_anmPlayData dat2 = {ANM_WAIT_C, daNpcAsh_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat2 = {ANM_WAIT_C, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat2[1] = {&dat2};
- daNpcF_anmPlayData dat3a = {ANM_COOL, daNpcAsh_Param_c::m.mMorfFrames, 1};
- daNpcF_anmPlayData dat3b = {ANM_WAIT_C, daNpcAsh_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat3a = {ANM_COOL, mpHIO->m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat3b = {ANM_WAIT_C, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat3[2] = {&dat3a, &dat3b};
- daNpcF_anmPlayData dat4a = {ANM_ASK, daNpcAsh_Param_c::m.mMorfFrames, 1};
- daNpcF_anmPlayData dat4b = {ANM_WAIT_C, daNpcAsh_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat4a = {ANM_ASK, mpHIO->m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat4b = {ANM_WAIT_C, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat4[2] = {&dat4a, &dat4b};
- daNpcF_anmPlayData dat5a = {ANM_EXPLAIN_A, daNpcAsh_Param_c::m.mMorfFrames, 1};
- daNpcF_anmPlayData dat5b = {ANM_WAIT_C, daNpcAsh_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat5a = {ANM_EXPLAIN_A, mpHIO->m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat5b = {ANM_WAIT_C, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat5[2] = {&dat5a, &dat5b};
- daNpcF_anmPlayData dat6a = {ANM_EXPLAIN_B, daNpcAsh_Param_c::m.mMorfFrames, 1};
- daNpcF_anmPlayData dat6b = {ANM_WAIT_A, daNpcAsh_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat6a = {ANM_EXPLAIN_B, mpHIO->m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat6b = {ANM_WAIT_A, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat6[2] = {&dat6a, &dat6b};
- daNpcF_anmPlayData dat7 = {ANM_BOWWAIT, daNpcAsh_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat7 = {ANM_BOWWAIT, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat7[1] = {&dat7};
- daNpcF_anmPlayData dat8 = {ANM_BOWRUN, daNpcAsh_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat8 = {ANM_BOWRUN, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat8[1] = {&dat8};
daNpcF_anmPlayData dat9 = {ANM_STEP, 4.0f, 1};
daNpcF_anmPlayData* pDat9[1] = {&dat9};
daNpcF_anmPlayData** ppDat[10] = {
- pDat0,
- pDat1,
- pDat2,
- pDat3,
- pDat4,
- pDat5,
- pDat6,
- pDat7,
- pDat8,
- pDat9,
+ pDat0, pDat1, pDat2, pDat3, pDat4, pDat5, pDat6, pDat7, pDat8, pDat9,
};
if (mMotion >= 0 && mMotion < 10) {
playMotionAnm(ppDat);
}
}
-/* 8095D878-8095D884 000238 000C+00 0/1 0/0 0/0 .rodata @4697 */
-// somehow supposed to be part of lookat()
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4697[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x8095D878, &lit_4697);
-#pragma pop
+/* 8095C9BC-8095CC8C 0047BC 02D0+00 1/1 0/0 0/0 .text lookat__10daNpcAsh_cFv */
+void daNpcAsh_c::lookat() {
+ daPy_py_c* player = NULL;
+ J3DModel* model = mpMorf->getModel();
+
+ BOOL snap = false;
+ f32 body_angleX_min = mpHIO->m.common.body_angleX_min;
+ f32 body_angleX_max = mpHIO->m.common.body_angleX_max;
+ f32 body_angleY_min = mMotion == MOT_WAIT_A ? -15.0f : mpHIO->m.common.body_angleY_min;
+ f32 body_angleY_max = mMotion == MOT_WAIT_A ? 15.0f : mpHIO->m.common.body_angleY_max;
+ f32 head_angleX_min = mpHIO->m.common.head_angleX_min;
+ f32 head_angleX_max = mpHIO->m.common.head_angleX_max;
+ f32 head_angleY_min = mMotion == MOT_WAIT_A ? -30.0f : mpHIO->m.common.head_angleY_min;
+ f32 head_angleY_max = mMotion == MOT_WAIT_A ? 30.0f : mpHIO->m.common.head_angleY_max;
+
+ s16 angle_delta = mCurAngle.y - mOldAngle.y;
+ cXyz lookat_pos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]};
+ csXyz* lookat_angle[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]};
+
+ switch (mLookMode) {
+ case LOOK_NONE:
+ break;
+ case LOOK_RESET:
+ snap = true;
+ break;
+ case LOOK_PLAYER:
+ case LOOK_PLAYER_TALK:
+ player = daPy_getPlayerActorClass();
+ break;
+ case LOOK_ACTOR:
+ player = (daPy_py_c*)mActorMngr[4].getActorP();
+ break;
+ case LOOK_ATTN:
+ player = (daPy_py_c*)mTalkPartner;
+ break;
+ }
+
+ if (player != NULL) {
+ mLookPos = player->attention_info.position;
+ if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK) {
+ mLookPos.y -= 40.0f;
+ }
+ mLookat.setAttnPos(&mLookPos);
+ } else {
+ mLookat.setAttnPos(NULL);
+ }
+
+ mLookat.setParam(body_angleX_min, body_angleX_max, body_angleY_min, body_angleY_max, 0.0f, 0.0f,
+ 0.0f, 0.0f, head_angleX_min, head_angleX_max, head_angleY_min, head_angleY_max,
+ mCurAngle.y, lookat_pos);
+ mLookat.calc(this, model->getBaseTRMtx(), lookat_angle, snap, angle_delta, false);
+}
/* 80959C40-8095A67C 001A40 0A3C+00 4/0 0/0 0/0 .text wait_type0__10daNpcAsh_cFPv */
bool daNpcAsh_c::wait_type0(void* param_0) {
@@ -1010,8 +817,8 @@ bool daNpcAsh_c::wait_type0(void* param_0) {
}
daTag_EvtArea_c* evtArea = static_cast<daTag_EvtArea_c*>(mActorMngr[5].getActorP());
- if (evtArea != NULL
- && evtArea->chkPointInArea(*fopAcM_GetPosition_p(daPy_getPlayerActorClass())))
+ if (evtArea != NULL &&
+ evtArea->chkPointInArea(*fopAcM_GetPosition_p(daPy_getPlayerActorClass())))
{
daNpcF_offTmpBit(11);
mOrderEvtNo = 2;
@@ -1050,8 +857,8 @@ bool daNpcAsh_c::wait_type0(void* param_0) {
if (mOrderEvtNo != 0) {
eventInfo.setArchiveName("Ash");
}
- orderEvent(mMapToolId, mOrderEvtNo != 0 ? l_evtNames[mOrderEvtNo] : NULL,
- -1, 40, -1, 1);
+ orderEvent(mMapToolId, mOrderEvtNo != 0 ? l_evtNames[mOrderEvtNo] : NULL, -1, 40, -1,
+ 1);
}
break;
@@ -1200,8 +1007,8 @@ bool daNpcAsh_c::demo(void* param_0) {
s32 staff_id = eventManager.getMyStaffId(l_myName, NULL, 0);
if (staff_id != -1) {
mStaffID = staff_id;
- s32 eventIdx = eventManager.getMyActIdx(staff_id, l_evtNames,
- ARRAY_SIZEU(l_evtNames), 0, 0);
+ s32 eventIdx =
+ eventManager.getMyActIdx(staff_id, l_evtNames, ARRAY_SIZEU(l_evtNames), 0, 0);
if (eventIdx >= 1 && eventIdx < 6) {
mOrderEvtNo = eventIdx;
}
@@ -1210,8 +1017,8 @@ bool daNpcAsh_c::demo(void* param_0) {
}
}
- if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1
- && eventManager.endCheck(mEventIdx))
+ if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1 &&
+ eventManager.endCheck(mEventIdx))
{
dComIfGp_event_reset();
mOrderEvtNo = 0;
@@ -1307,8 +1114,8 @@ BOOL daNpcAsh_c::EvCut_Meeting(int i_staffID) {
switch (*cutName) {
case '0001':
case '0002':
- dComIfGp_setMesgCameraInfoActor(actors[0], actors[1], actors[2], actors[3],
- NULL, NULL, NULL, NULL, NULL, NULL);
+ dComIfGp_setMesgCameraInfoActor(actors[0], actors[1], actors[2], actors[3], NULL, NULL,
+ NULL, NULL, NULL, NULL);
initTalk(0x42e, actors);
}
}
@@ -1344,7 +1151,7 @@ BOOL daNpcAsh_c::EvCut_Meeting(int i_staffID) {
setLookMode(LOOK_PLAYER, NULL);
break;
}
-
+
return false;
}
@@ -1362,8 +1169,8 @@ BOOL daNpcAsh_c::EvCut_WiretapSponsor(int i_staffID) {
if (evtMgr.getIsAddvance(i_staffID)) {
switch (*cutName) {
case '0001':
- dComIfGp_setMesgCameraInfoActor(actors[0], actors[1], actors[2], actors[3],
- NULL, NULL, NULL, NULL, NULL, NULL);
+ dComIfGp_setMesgCameraInfoActor(actors[0], actors[1], actors[2], actors[3], NULL, NULL,
+ NULL, NULL, NULL, NULL);
initTalk(mFlowID, actors);
break;
}
@@ -1424,7 +1231,7 @@ BOOL daNpcAsh_c::EvCut_WiretapEntrant(int i_staffID) {
setExpressionTalkAfter();
}
}
-
+
fopAc_ac_c* talk_partner = dComIfGp_event_getTalkPartner();
if (talk_partner == this) {
talk_partner = NULL;
@@ -1470,14 +1277,16 @@ void daNpcAsh_c::setParam() {
} else {
if (!strcmp(dComIfGp_getStartStageName(), "R_SP116")) {
attention_info.distances[fopAc_attn_LOCK_e] = getDistTableIdx(3, 6);
- attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
+ attention_info.distances[fopAc_attn_TALK_e] =
+ attention_info.distances[fopAc_attn_LOCK_e];
attention_info.distances[fopAc_attn_SPEAK_e] = getDistTableIdx(2, 6);
} else {
- attention_info.distances[fopAc_attn_LOCK_e] = getDistTableIdx(daNpcAsh_Param_c::m.mTalkDistIdx,
- daNpcAsh_Param_c::m.mTalkAngleIdx);
- attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
- attention_info.distances[fopAc_attn_SPEAK_e] = getDistTableIdx(daNpcAsh_Param_c::m.mSpeakDistIdx,
- daNpcAsh_Param_c::m.mSpeakAngleIdx);
+ attention_info.distances[fopAc_attn_LOCK_e] = getDistTableIdx(
+ mpHIO->m.common.attention_distance, mpHIO->m.common.attention_angle);
+ attention_info.distances[fopAc_attn_TALK_e] =
+ attention_info.distances[fopAc_attn_LOCK_e];
+ attention_info.distances[fopAc_attn_SPEAK_e] =
+ getDistTableIdx(mpHIO->m.common.talk_distance, mpHIO->m.common.talk_angle);
}
}
}
@@ -1497,7 +1306,6 @@ BOOL daNpcAsh_c::main() {
}
/* 8095C520-8095C5C4 004320 00A4+00 1/0 0/0 0/0 .text ctrlBtk__10daNpcAsh_cFv */
-// NONMATCHING inlining issues
BOOL daNpcAsh_c::ctrlBtk() {
if (mpMatAnm != NULL) {
mpMatAnm->setNowOffsetX(cM_ssin(mEyeAngle.y) * 0.2f * -1.0f);
@@ -1540,8 +1348,7 @@ void daNpcAsh_c::setAttnPos() {
mEyeAngle.x = 0;
}
- attention_info.position.set(mHeadPos.x,
- mHeadPos.y + daNpcAsh_Param_c::m.mAttnOffsetY,
+ attention_info.position.set(mHeadPos.x, mHeadPos.y + mpHIO->m.common.attention_offset,
mHeadPos.z);
cXyz center;
@@ -1549,18 +1356,20 @@ void daNpcAsh_c::setAttnPos() {
mDoMtx_stack_c::multVecZero(&center);
center.y = current.pos.y;
mCcCyl[0].SetC(center);
- mCcCyl[0].SetH(daNpcAsh_Param_c::m.mCylH);
- mCcCyl[0].SetR(daNpcAsh_Param_c::m.mWallR);
+ mCcCyl[0].SetH(mpHIO->m.common.height);
+ mCcCyl[0].SetR(mpHIO->m.common.width);
dComIfG_Ccsp()->Set(&mCcCyl[0]);
- /* dSv_event_flag_c::F_0361 - Arbiter's Grounds - Spun the spinning pillars */
- if (mType == TYPE_BAR && (!daNpcF_chkEvtBit(0x169)
- /* dSv_event_flag_c::F_0266 - Snowpeak Ruins - Snowpeak Ruins clear */
- || !daNpcF_chkEvtBit(0x10A)
- /* dSv_event_flag_c::F_0267 - Temple of Time - Temple of Time clear */
- || !daNpcF_chkEvtBit(0x10B)
- /* dSv_event_flag_c::F_0268 - City in the Sky - City in the Sky clear */
- || daNpcF_chkEvtBit(0x10C))) {
+ /* dSv_event_flag_c::F_0361 - Arbiter's Grounds - Spun the spinning pillars */
+ if (mType == TYPE_BAR &&
+ (!daNpcF_chkEvtBit(0x169)
+ /* dSv_event_flag_c::F_0266 - Snowpeak Ruins - Snowpeak Ruins clear */
+ || !daNpcF_chkEvtBit(0x10A)
+ /* dSv_event_flag_c::F_0267 - Temple of Time - Temple of Time clear */
+ || !daNpcF_chkEvtBit(0x10B)
+ /* dSv_event_flag_c::F_0268 - City in the Sky - City in the Sky clear */
+ || daNpcF_chkEvtBit(0x10C)))
+ {
center.set(3070.0f, -1150.0f, 2446.0f);
mCcCyl[1].SetC(center);
mCcCyl[1].SetH(170.0f);
@@ -1569,59 +1378,6 @@ void daNpcAsh_c::setAttnPos() {
}
}
-/* 8095C9BC-8095CC8C 0047BC 02D0+00 1/1 0/0 0/0 .text lookat__10daNpcAsh_cFv */
-// NONMATCHING literal issues
-void daNpcAsh_c::lookat() {
- fopAc_ac_c* actor = NULL;
- J3DModel* model = mpMorf->getModel();
- BOOL snap = false;
- f32 body_down_angle = daNpcAsh_Param_c::m.mBodyDownAngle;
- f32 body_up_angle = daNpcAsh_Param_c::m.mBodyUpAngle;
- f32 body_right_angle = mMotion == MOT_WAIT_A ? -15.0f : daNpcAsh_Param_c::m.mBodyRightAngle;
- f32 body_left_angle = mMotion == MOT_WAIT_A ? 15.0f : daNpcAsh_Param_c::m.mBodyLeftAngle;
- f32 head_down_angle = daNpcAsh_Param_c::m.mHeadDownAngle;
- f32 head_up_angle = daNpcAsh_Param_c::m.mHeadUpAngle;
- f32 head_right_angle = mMotion == MOT_WAIT_A ? -30.0f : daNpcAsh_Param_c::m.mHeadRightAngle;
- f32 head_left_angle = mMotion == MOT_WAIT_A ? 30.0f : daNpcAsh_Param_c::m.mHeadLeftAngle;
- s16 angle_delta = mCurAngle.y - mOldAngle.y;
- cXyz lookat_pos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]};
- csXyz* lookat_angle[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]};
-
- switch (mLookMode) {
- case LOOK_NONE:
- break;
- case LOOK_RESET:
- snap = true;
- break;
- case LOOK_PLAYER:
- case LOOK_PLAYER_TALK:
- actor = daPy_getPlayerActorClass();
- break;
- case LOOK_ACTOR:
- actor = mActorMngr[4].getActorP();
- break;
- case LOOK_ATTN:
- actor = mTalkPartner;
- break;
- }
-
- if (actor != NULL) {
- mLookPos = actor->attention_info.position;
- if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK) {
- mLookPos.y -= 40.0f;
- }
- mLookat.setAttnPos(&mLookPos);
- } else {
- mLookat.setAttnPos(NULL);
- }
-
- mLookat.setParam(body_down_angle, body_up_angle, body_right_angle, body_left_angle,
- 0.0f, 0.0f, 0.0f, 0.0f,
- head_down_angle, head_up_angle, head_right_angle, head_left_angle,
- mCurAngle.y, lookat_pos);
- mLookat.calc(this, model->getBaseTRMtx(), lookat_angle, snap, angle_delta, false);
-}
-
/* 8095CC8C-8095CC94 004A8C 0008+00 1/0 0/0 0/0 .text drawDbgInfo__10daNpcAsh_cFv */
BOOL daNpcAsh_c::drawDbgInfo() {
return false;
@@ -1629,10 +1385,8 @@ BOOL daNpcAsh_c::drawDbgInfo() {
/* 8095DC04-8095DC24 -00001 0020+00 1/0 0/0 0/0 .data daNpcAsh_MethodTable */
static actor_method_class daNpcAsh_MethodTable = {
- (process_method_func)daNpcAsh_Create,
- (process_method_func)daNpcAsh_Delete,
- (process_method_func)daNpcAsh_Execute,
- (process_method_func)daNpcAsh_IsDelete,
+ (process_method_func)daNpcAsh_Create, (process_method_func)daNpcAsh_Delete,
+ (process_method_func)daNpcAsh_Execute, (process_method_func)daNpcAsh_IsDelete,
(process_method_func)daNpcAsh_Draw,
};
diff --git a/src/d/actor/d_a_npc_ashB.cpp b/src/d/actor/d_a_npc_ashB.cpp
index 42c62fd733..6727d71726 100644
--- a/src/d/actor/d_a_npc_ashB.cpp
+++ b/src/d/actor/d_a_npc_ashB.cpp
@@ -1,276 +1,85 @@
/**
* @file d_a_npc_ashB.cpp
- *
-*/
+ *
+ */
-#include "d/dolzel_rel.h" // IWYU pragma: keep
+#include "d/dolzel_rel.h" // IWYU pragma: keep
-#include "d/actor/d_a_npc_ashB.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
-#include "dol2asm.h"
-
-
-//
-// Forward References:
-//
-
-extern "C" void __ct__11daNpcAshB_cFv();
-extern "C" void __dt__8cM3dGCylFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__11daNpcAshB_cFv();
-extern "C" void Create__11daNpcAshB_cFv();
-extern "C" void CreateHeap__11daNpcAshB_cFv();
-extern "C" void __dt__15J3DTevKColorAnmFv();
-extern "C" void __ct__15J3DTevKColorAnmFv();
-extern "C" void __dt__14J3DTevColorAnmFv();
-extern "C" void __ct__14J3DTevColorAnmFv();
-extern "C" void __dt__11J3DTexNoAnmFv();
-extern "C" void __ct__11J3DTexNoAnmFv();
-extern "C" void __dt__12J3DTexMtxAnmFv();
-extern "C" void __ct__12J3DTexMtxAnmFv();
-extern "C" void __dt__14J3DMatColorAnmFv();
-extern "C" void __ct__14J3DMatColorAnmFv();
-extern "C" void Delete__11daNpcAshB_cFv();
-extern "C" void Execute__11daNpcAshB_cFv();
-extern "C" void Draw__11daNpcAshB_cFv();
-extern "C" void ctrlJoint__11daNpcAshB_cFP8J3DJointP8J3DModel();
-extern "C" void createHeapCallBack__11daNpcAshB_cFP10fopAc_ac_c();
-// extern "C" void ctrlJointCallBack__11daNpcAshB_cFP8J3DJointi();
-extern "C" void setExpressionAnm__11daNpcAshB_cFib();
-extern "C" void setExpressionBtp__11daNpcAshB_cFi();
-extern "C" void setMotionAnm__11daNpcAshB_cFif();
-extern "C" void reset__11daNpcAshB_cFv();
-extern "C" void setAction__11daNpcAshB_cFM11daNpcAshB_cFPCvPvPv_b();
-extern "C" void wait__11daNpcAshB_cFPv();
-extern "C" void setMotion__11daNpcAshB_cFifi();
-extern "C" void setExpression__11daNpcAshB_cFif();
-extern "C" void talk__11daNpcAshB_cFPv();
-extern "C" void demo__11daNpcAshB_cFPv();
-extern "C" void EvCut_Appear__11daNpcAshB_cFi();
-extern "C" static void daNpcAshB_Create__FPv();
-extern "C" static void daNpcAshB_Delete__FPv();
-extern "C" static void daNpcAshB_Execute__FPv();
-extern "C" static void daNpcAshB_Draw__FPv();
-extern "C" static bool daNpcAshB_IsDelete__FPv();
-extern "C" void calc__11J3DTexNoAnmCFPUs();
-extern "C" void setParam__11daNpcAshB_cFv();
-extern "C" void main__11daNpcAshB_cFv();
-extern "C" void playMotion__11daNpcAshB_cFv();
-extern "C" void ctrlBtk__11daNpcAshB_cFv();
-extern "C" void setAttnPos__11daNpcAshB_cFv();
-extern "C" void lookat__11daNpcAshB_cFv();
-extern "C" void drawOtherMdls__11daNpcAshB_cFv();
-extern "C" bool drawDbgInfo__11daNpcAshB_cFv();
-extern "C" void func_80961800(void* _this, s16);
-extern "C" void __sinit_d_a_npc_ashB_cpp();
-extern "C" void __dt__18daNpcF_ActorMngr_cFv();
-extern "C" void __ct__18daNpcF_ActorMngr_cFv();
-extern "C" void __dt__15daNpcF_Lookat_cFv();
-extern "C" void __dt__5csXyzFv();
-extern "C" void __ct__5csXyzFv();
-extern "C" void __dt__4cXyzFv();
-extern "C" void __ct__4cXyzFv();
-extern "C" void __dt__8daNpcF_cFv();
-extern "C" void __ct__8daNpcF_cFv();
-extern "C" void __dt__12dBgS_AcchCirFv();
-extern "C" void __dt__10dCcD_GSttsFv();
-extern "C" void __dt__12dBgS_ObjAcchFv();
-extern "C" void __dt__12J3DFrameCtrlFv();
-extern "C" void adjustShapeAngle__8daNpcF_cFv();
-extern "C" void setCollisions__8daNpcF_cFv();
-extern "C" void __dt__10cCcD_GSttsFv();
-extern "C" void __dt__17daNpcAshB_Param_cFv();
-extern "C" static void func_809620C0();
-extern "C" static void func_809620C8();
-extern "C" u8 const m__17daNpcAshB_Param_c[112];
-extern "C" extern char const* const d_a_npc_ashB__stringBase0;
-extern "C" u8 mEvtSeqList__11daNpcAshB_c[24];
-
-//
-// External References:
-//
-
-extern "C" void changeBckOnly__13mDoExt_bckAnmFP15J3DAnmTransform();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-extern "C" void
-__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl();
-extern "C" void modelCalc__16mDoExt_McaMorfSOFv();
-extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv();
-extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void __dt__10fopAc_ac_cFv();
-extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
-extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff();
-extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c();
-extern "C" void fopAcM_seenActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c();
-extern "C" void fopAcM_searchActorDistanceXZ__FPC10fopAc_ac_cPC10fopAc_ac_c();
-extern "C" void fopAcM_searchActorDistanceXZ2__FPC10fopAc_ac_cPC10fopAc_ac_c();
-extern "C" void fopAcM_orderChangeEventId__FP10fopAc_ac_csUsUs();
-extern "C" void fopAcM_createItemForPresentDemo__FPC4cXyziUciiPC5csXyzPC4cXyz();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-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 setPtI_Id__14dEvt_control_cFUi();
-extern "C" void getEventIdx__16dEvent_manager_cFP10fopAc_ac_cPCcUc();
-extern "C" void endCheck__16dEvent_manager_cFs();
-extern "C" void getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci();
-extern "C" void getIsAddvance__16dEvent_manager_cFi();
-extern "C" void getMyNowCutName__16dEvent_manager_cFi();
-extern "C" void cutEnd__16dEvent_manager_cFi();
-extern "C" void getRunEventName__16dEvent_manager_cFv();
-extern "C" void ChkPresentEnd__16dEvent_manager_cFv();
-extern "C" void __ct__12dBgS_AcchCirFv();
-extern "C" void SetWall__12dBgS_AcchCirFff();
-extern "C" void __dt__9dBgS_AcchFv();
-extern "C" void __ct__9dBgS_AcchFv();
-extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz();
-extern "C" void CrrPos__9dBgS_AcchFR4dBgS();
-extern "C" void __ct__11dBgS_GndChkFv();
-extern "C" void __dt__11dBgS_GndChkFv();
-extern "C" void __ct__11dBgS_LinChkFv();
-extern "C" void __dt__11dBgS_LinChkFv();
-extern "C" void SetObj__16dBgS_PolyPassChkFv();
-extern "C" void __ct__10dCcD_GSttsFv();
-extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
-extern "C" void __ct__12dCcD_GObjInfFv();
-extern "C" void __dt__12dCcD_GObjInfFv();
-extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl();
-extern "C" void initialize__18daNpcF_ActorMngr_cFv();
-extern "C" void entry__18daNpcF_ActorMngr_cFP10fopAc_ac_c();
-extern "C" void remove__18daNpcF_ActorMngr_cFv();
-extern "C" void getActorP__18daNpcF_ActorMngr_cFv();
-extern "C" void initialize__15daNpcF_MatAnm_cFv();
-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 execute__8daNpcF_cFv();
-extern "C" void draw__8daNpcF_cFiifP11_GXColorS10i();
-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 setMcaMorfAnm__8daNpcF_cFP18J3DAnmTransformKeyffiii();
-extern "C" void setBckAnm__8daNpcF_cFP15J3DAnmTransformfiiib();
-extern "C" void setBtpAnm__8daNpcF_cFP16J3DAnmTexPatternP12J3DModelDatafi();
-extern "C" void setBtkAnm__8daNpcF_cFP19J3DAnmTextureSRTKeyP12J3DModelDatafi();
-extern "C" void setEnvTevColor__8daNpcF_cFv();
-extern "C" void setRoomNo__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 ctrlMsgAnm__8daNpcF_cFRiRiP10fopAc_ac_ci();
-extern "C" void orderEvent__8daNpcF_cFiPcUsUsUcUs();
-extern "C" void chkActorInSight__8daNpcF_cFP10fopAc_ac_cf();
-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 getDistTableIdx__8daNpcF_cFii();
-extern "C" void daNpcF_chkEvtBit__FUl();
-extern "C" void daNpcF_offTmpBit__FUl();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void __ct__10dMsgFlow_cFv();
-extern "C" void __dt__10dMsgFlow_cFv();
-extern "C" void getEventId__10dMsgFlow_cFPi();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void __mi__4cXyzCFRC3Vec();
-extern "C" void cM_atan2s__Fff();
-extern "C" void __ct__11cBgS_GndChkFv();
-extern "C" void __dt__11cBgS_GndChkFv();
-extern "C" void __dt__13cBgS_PolyInfoFv();
-extern "C" void __dt__8cM3dGCirFv();
-extern "C" void SetC__8cM3dGCylFRC4cXyz();
-extern "C" void SetH__8cM3dGCylFf();
-extern "C" void SetR__8cM3dGCylFf();
-extern "C" void cLib_targetAngleY__FPC3VecPC3Vec();
-extern "C" void cLib_targetAngleX__FPC4cXyzPC4cXyz();
-extern "C" void __ct__10Z2CreatureFv();
-extern "C" void __dt__10Z2CreatureFv();
-extern "C" void init__10Z2CreatureFP3VecP3VecUcUc();
-extern "C" void* __nw__FUl();
-extern "C" void __dl__FPv();
-extern "C" void init__12J3DFrameCtrlFs();
-extern "C" void getTexNo__16J3DAnmTexPatternCFUsPUs();
-extern "C" void initialize__14J3DMaterialAnmFv();
-extern "C" void __destroy_arr();
-extern "C" void __construct_array();
-extern "C" void __ptmf_test();
-extern "C" void __ptmf_scall();
-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_25();
-extern "C" void _restgpr_26();
-extern "C" void _restgpr_27();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" extern u8 const __ptmf_null[12 + 4 /* padding */];
-extern "C" extern void* __vt__8dCcD_Cyl[36];
-extern "C" extern void* __vt__9dCcD_Stts[11];
-extern "C" u8 mCcDCyl__8daNpcF_c[68];
-extern "C" extern void* __vt__8daNpcF_c[18];
-extern "C" extern void* __vt__15daNpcF_MatAnm_c[4 + 6 /* padding */];
-extern "C" extern void* __vt__12cCcD_CylAttr[25];
-extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
-extern "C" extern void* __vt__9cCcD_Stts[8];
-extern "C" extern void* __vt__14J3DMaterialAnm[4];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" u8 mCurrentMtx__6J3DSys[48];
-extern "C" u8 sincosTable___5JMath[65536];
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
+#include "d/actor/d_a_npc_ashB.h"
+
+/* 809620E4-80962154 000000 0070+00 11/11 0/0 0/0 .rodata m__17daNpcAshB_Param_c */
+const daNpcAshB_HIOParam daNpcAshB_Param_c::m = {
+ 205.0f, // attention_offset
+ -3.0f, // gravity
+ 1.0f, // scale
+ 400.0f, // real_shadow_size
+ 255.0f, // weight
+ 200.0f, // height
+ 35.0f, // knee_length
+ 30.0f, // width
+ 0.0f, // body_angleX_max
+ 0.0f, // body_angleX_min
+ 15.0f, // body_angleY_max
+ -15.0f, // body_angleY_min
+ 20.0f, // head_angleX_max
+ 0.0f, // head_angleX_min
+ 20.0f, // head_angleY_max
+ -20.0f, // head_angleY_min
+ 0.8f, // neck_rotation_ratio
+ 12.0f, // morf_frame
+ 3, // talk_distance
+ 6, // talk_angle
+ 5, // attention_distance
+ 6, // attention_angle
+ 80.0f, // fov
+ 500.0f, // search_distance
+ 300.0f, // search_height
+ -300.0f, // search_depth
+ 60, // attention_time
+ 8, // damage_time
+ 0, // face_expression
+ 0, // motion
+ 0, // look_mode
+ 0, // debug_mode_ON
+ 0, // debug_info_ON
+ 400.0f, // field_0x6c
+};
+
+#if DEBUG
+daNpcAshB_HIO_c::daNpcAshB_HIO_c() {
+ m = daNpcAshB_Param_c::m;
+}
+
+void daNpcAshB_HIO_c::genMessage(JORMContext* ctext) {
+ // TODO
+}
+#endif
+
+NPC_ASHB_HIO_CLASS l_HIO;
/* 80962438-80962534 000020 00FC+00 1/2 0/0 0/0 .data l_bckGetParamList */
static daNpc_GetParam2 l_bckGetParamList[21] = {
- {-1, 2, 0},
- {13,0, 0},
- {14, 0, 0},
- {11, 0, 0},
- {10, 0, 0},
- {9, 0, 0},
- {12, 0, 0},
- {24, 2, 0},
- {25, 2, 0},
- {24, 2, 0},
- {21, 0, 0},
- {22, 0, 0},
- {20, 0, 0},
- {23, 0, 0},
- {7, 0, 0},
- {8, 0, 0},
- {18, 0, 0},
- {15, 0, 0},
- {16, 0, 0},
- {17, 2, 0},
- {19, 0, 0},
+ {-1, 2, 0}, {13, 0, 0}, {14, 0, 0}, {11, 0, 0}, {10, 0, 0}, {9, 0, 0}, {12, 0, 0},
+ {24, 2, 0}, {25, 2, 0}, {24, 2, 0}, {21, 0, 0}, {22, 0, 0}, {20, 0, 0}, {23, 0, 0},
+ {7, 0, 0}, {8, 0, 0}, {18, 0, 0}, {15, 0, 0}, {16, 0, 0}, {17, 2, 0}, {19, 0, 0},
};
-static daNpcAshB_Param_c l_HIO;
-
/* 80962534-80962564 00011C 0030+00 1/1 0/0 0/0 .data l_btpGetParamList */
static daNpc_GetParam2 l_btpGetParamList[4] = {
- {38,2,0},
- {41,0,0},
- {40,0,0},
- {39,0,0},
+ {38, 2, 0},
+ {41, 0, 0},
+ {40, 0, 0},
+ {39, 0, 0},
};
/* 80962564-80962594 00014C 0030+00 1/2 0/0 0/0 .data l_btkGetParamList */
static daNpc_GetParam2 l_btkGetParamList[4] = {
- {32,2,0},
- {34,0,0},
- {33,0,0},
- {35,0,0},
-
+ {32, 2, 0},
+ {34, 0, 0},
+ {33, 0, 0},
+ {35, 0, 0},
+
};
/* 80962594-80962598 -00001 0004+00 6/8 0/0 0/0 .data l_arcNames */
@@ -280,8 +89,8 @@ static char* l_arcNames[1] = {
/* 80962598-809625A0 -00001 0008+00 0/1 0/0 0/0 .data l_evtNames */
static char* l_evtNames[2] = {
- "ASHB_APPEAR",
- "NO_RESPONSE",
+ NULL,
+ "ASHB_APPEAR",
};
/* 809625A0-809625A4 -00001 0004+00 0/2 0/0 0/0 .data l_myName */
@@ -290,13 +99,11 @@ static char* l_myName = "AshB";
/* 809625B0-809625C8 000198 0018+00 1/2 0/0 0/0 .data mEvtSeqList__11daNpcAshB_c */
daNpcAshB_c::EventFn daNpcAshB_c::mEvtSeqList[2] = {
NULL,
- &EvCut_Appear
+ &EvCut_Appear,
};
/* 8095DE4C-8095DFD0 0000EC 0184+00 1/1 0/0 0/0 .text __ct__11daNpcAshB_cFv */
-daNpcAshB_c::daNpcAshB_c() : daNpcF_c() {
- // NONMATCHING
-}
+daNpcAshB_c::daNpcAshB_c() {}
/* 8095E060-8095E224 000300 01C4+00 1/0 0/0 0/0 .text __dt__11daNpcAshB_cFv */
daNpcAshB_c::~daNpcAshB_c() {
@@ -309,54 +116,18 @@ daNpcAshB_c::~daNpcAshB_c() {
}
}
-/* ############################################################################################## */
-/* 809620E4-80962154 000000 0070+00 11/11 0/0 0/0 .rodata m__17daNpcAshB_Param_c */
-daNpcAshB_Param_c::param const daNpcAshB_Param_c::m = {
- 205.0f,
- -3.0f,
- 1.0f,
- 400.0f,
- 255.0f,
- 200.0f,
- 35.0f,
- 30.0f,
- 0.0f,
- 0.0f,
- 15.0f,
- -15.0f,
- 20.0f,
- 0.0f,
- 20.0f,
- -20.0f,
- 0.8f,
- 12.0f,
- 3,
- 6,
- 5,
- 6,
- 80.0f,
- 500.0f,
- 300.0f,
- -300.0f,
- 60,
- 8,
- 0,
- 0,
- 0,
- false,
- 400.0f,
-};
-
/* 8095E224-8095E4A0 0004C4 027C+00 1/1 0/0 0/0 .text Create__11daNpcAshB_cFv */
cPhs__Step daNpcAshB_c::Create() {
cPhs__Step step;
fopAcM_ct(this, daNpcAshB_c);
- /* dSv_event_flag_c::F_0361 - Arbiter's Grounds - Spun the spinning pillars */
+ /* dSv_event_flag_c::F_0361 - Arbiter's Grounds - Spun the spinning pillars */
if (!daNpcF_chkEvtBit(0x169)
- /* dSv_event_flag_c::F_0335 - Snowpeak mountain - Obtained scribble from Ashei at mountain pass */
- || daNpcF_chkEvtBit(0x14F)) {
+ /* dSv_event_flag_c::F_0335 - Snowpeak mountain - Obtained scribble from Ashei at mountain
+ pass */
+ || daNpcF_chkEvtBit(0x14F))
+ {
return cPhs_ERROR_e;
} else {
mFlowID = getMessageNo();
@@ -377,13 +148,14 @@ cPhs__Step daNpcAshB_c::Create() {
fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
fopAcM_setCullSizeBox(this, -100.0f, -50.0f, -100.0f, 100.0f, 220.0f, 100.0f);
mCreatureSound.init(&current.pos, &eyePos, 3, 1);
- mAcchCir.SetWall(daNpcAshB_Param_c::m.mWallR,daNpcAshB_Param_c::m.mWallH);
- mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
- fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this));
+ mAcchCir.SetWall(mpHIO->m.common.width, mpHIO->m.common.knee_length);
+ mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1,
+ &mAcchCir, fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this),
+ fopAcM_GetShapeAngle_p(this));
mAcch.SetRoofNone();
mAcch.SetWaterNone();
mAcch.CrrPos(dComIfG_Bgsp());
- mCcStts.Init((int)daNpcAshB_Param_c::m.mCcWeight, 0, this);
+ mCcStts.Init((int)mpHIO->m.common.weight, 0, this);
mCyl.Set(daNpcF_c::mCcDCyl);
mCyl.SetStts(&mCcStts);
mCyl.SetTgType(0);
@@ -405,8 +177,8 @@ cPhs__Step daNpcAshB_c::Create() {
/* 8095E4A0-8095E758 000740 02B8+00 1/1 0/0 0/0 .text CreateHeap__11daNpcAshB_cFv */
BOOL daNpcAshB_c::CreateHeap() {
J3DModelData* modelData = static_cast<J3DModelData*>(dComIfG_getObjectRes(l_arcNames[0], 28));
- mpMorf = new mDoExt_McaMorfSO(modelData, NULL, NULL, NULL, -1, 1.0f, 0, -1,
- &mCreatureSound, 0x80000, 0x11020284);
+ mpMorf = new mDoExt_McaMorfSO(modelData, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mCreatureSound,
+ 0x80000, 0x11020284);
if (mpMorf != NULL && mpMorf->mpModel == NULL) {
mpMorf->stopZelAnime();
mpMorf = NULL;
@@ -425,7 +197,9 @@ BOOL daNpcAshB_c::CreateHeap() {
if (mpMatAnm == NULL) {
return false;
} else {
- mpModel = mDoExt_J3DModel__create(static_cast<J3DModelData*>(dComIfG_getObjectRes(l_arcNames[0], 29)),0x80000,0x11000084);
+ mpModel = mDoExt_J3DModel__create(
+ static_cast<J3DModelData*>(dComIfG_getObjectRes(l_arcNames[0], 29)), 0x80000,
+ 0x11000084);
if (mpModel == NULL) {
return false;
} else {
@@ -454,7 +228,7 @@ int daNpcAshB_c::Execute() {
/* 8095E96C-8095E9C8 000C0C 005C+00 1/1 0/0 0/0 .text Draw__11daNpcAshB_cFv */
int daNpcAshB_c::Draw() {
mpMorf->getModel()->getModelData()->getMaterialNodePointer(2)->setMaterialAnm(mpMatAnm);
- draw(false, false, daNpcAshB_Param_c::m.mShadowDepth, NULL, false);
+ draw(false, false, mpHIO->m.common.real_shadow_size, NULL, false);
return 1;
}
@@ -478,13 +252,13 @@ bool daNpcAshB_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
case 1:
case 9:
case 10:
- setLookatMtx(jointNo, lookatJoints, daNpcAshB_Param_c::m.mNeckAngleScl);
+ setLookatMtx(jointNo, lookatJoints, mpHIO->m.common.neck_rotation_ratio);
break;
}
i_model->setAnmMtx(jointNo, mDoMtx_stack_c::get());
cMtx_copy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx);
-
+
if ((jointNo == 10 || jointNo == 19) && (mAnmFlags & ANM_PLAY_BCK)) {
J3DAnmTransform* bckAnm = mBckAnm.getBckAnm();
mBckAnm.changeBckOnly(mpMorf->getAnm());
@@ -521,7 +295,7 @@ inline void daNpcAshB_c::setLookMode(int i_lookMode) {
inline BOOL daNpcAshB_c::chkFindPlayer() {
BOOL ret;
- if (!chkActorInSight(daPy_getPlayerActorClass(), daNpcAshB_Param_c::m.mAttnFovY)) {
+ if (!chkActorInSight(daPy_getPlayerActorClass(), mpHIO->m.common.fov)) {
mActorMngr[0].remove();
ret = false;
} else {
@@ -540,35 +314,140 @@ inline BOOL daNpcAshB_c::chkFindPlayer() {
}
inline void daNpcAshB_c::playExpression() {
- daNpcF_anmPlayData dat0 = {ANM_F_TALK_A, daNpcAshB_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat0 = {ANM_F_TALK_A, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat0[1] = {&dat0};
- daNpcF_anmPlayData dat1 = {ANM_F_TALK_B, daNpcAshB_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat1 = {ANM_F_TALK_B, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat1[1] = {&dat1};
daNpcF_anmPlayData dat2 = {ANM_F_SILENT, 0.0f, 0};
daNpcF_anmPlayData* pDat2[1] = {&dat2};
- daNpcF_anmPlayData dat3 = {ANM_F_COOL, daNpcAshB_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat3 = {ANM_F_COOL, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat3[1] = {&dat3};
- daNpcF_anmPlayData dat4 = {ANM_F_ASK, daNpcAshB_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat4 = {ANM_F_ASK, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat4[1] = {&dat4};
- daNpcF_anmPlayData dat5 = {ANM_F_EXPLAIN_A, daNpcAshB_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat5 = {ANM_F_EXPLAIN_A, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat5[1] = {&dat5};
- daNpcF_anmPlayData dat6 = {ANM_NONE, daNpcAshB_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat6 = {ANM_NONE, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat6[1] = {&dat6};
daNpcF_anmPlayData** ppDat[7] = {
- pDat0,
- pDat1,
- pDat2,
- pDat3,
- pDat4,
- pDat5,
- pDat6,
+ pDat0, pDat1, pDat2, pDat3, pDat4, pDat5, pDat6,
};
if (mExpression >= 0 && mExpression < 7) {
playExpressionAnm(ppDat);
}
}
+/* 80960D64-80961188 003004 0424+00 1/1 0/0 0/0 .text playMotion__11daNpcAshB_cFv */
+void daNpcAshB_c::playMotion() {
+ daNpcF_anmPlayData dat0 = {7, mpHIO->m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat0[1] = {&dat0};
+
+ daNpcF_anmPlayData dat1 = {8, mpHIO->m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat1[1] = {&dat1};
+
+ daNpcF_anmPlayData dat2a = {0xC, mpHIO->m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat2b = {0xD, 0.0f, 1};
+ daNpcF_anmPlayData dat2c = {8, 0.0f, 0};
+ daNpcF_anmPlayData* pDat2[3] = {&dat2a, &dat2b, &dat2c};
+
+ daNpcF_anmPlayData dat3a = {0xE, mpHIO->m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat3b = {8, 0.0f, 0};
+ daNpcF_anmPlayData* pDat3[2] = {&dat3a, &dat3b};
+
+ daNpcF_anmPlayData dat4a = {0xF, mpHIO->m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat4b = {8, 0.0f, 0};
+ daNpcF_anmPlayData* pDat4[2] = {&dat4a, &dat4b};
+
+ daNpcF_anmPlayData dat5a = {0x10, mpHIO->m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat5b = {8, 0.0f, 0};
+ daNpcF_anmPlayData* pDat5[2] = {&dat5a, &dat5b};
+
+ daNpcF_anmPlayData dat6a = {0x11, mpHIO->m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat6b = {8, 0.0f, 0};
+ daNpcF_anmPlayData* pDat6[2] = {&dat6a, &dat6b};
+
+ daNpcF_anmPlayData dat7a = {0x12, mpHIO->m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat7b = {0x13, 0.0f, 0};
+ daNpcF_anmPlayData* pDat7[2] = {&dat7a, &dat7b};
+
+ daNpcF_anmPlayData dat8 = {0x13, mpHIO->m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat8[1] = {&dat8};
+
+ daNpcF_anmPlayData dat9a = {0x14, mpHIO->m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat9b = {8, 0.0f, 0};
+ daNpcF_anmPlayData* pDat9[2] = {&dat9a, &dat9b};
+
+ daNpcF_anmPlayData dat10 = {0xA, 4.0f, 1};
+ daNpcF_anmPlayData* pDat10[2] = {&dat10, NULL};
+ daNpcF_anmPlayData dat11 = {0xB, 4.0f, 1};
+ daNpcF_anmPlayData* pDat11[2] = {&dat11, NULL};
+
+ daNpcF_anmPlayData** ppDat[12] = {
+ pDat0, pDat1, pDat2, pDat3, pDat4, pDat5, pDat6, pDat7, pDat8, pDat9, pDat10, pDat11,
+ };
+ if (mMotion >= 0 && mMotion < 12) {
+ playMotionAnm(ppDat);
+ }
+}
+
+/* 80961574-80961770 003814 01FC+00 1/1 0/0 0/0 .text lookat__11daNpcAshB_cFv */
+void daNpcAshB_c::lookat() {
+ fopAc_ac_c* actor = NULL;
+ J3DModel* model = mpMorf->getModel();
+
+ BOOL snap = false;
+ f32 body_angleX_min = mpHIO->m.common.body_angleX_min;
+ f32 body_angleX_max = mpHIO->m.common.body_angleX_max;
+ f32 body_angleY_min = mpHIO->m.common.body_angleY_min;
+ f32 body_angleY_max = mpHIO->m.common.body_angleY_max;
+ f32 head_angleX_min = mpHIO->m.common.head_angleX_min;
+ f32 head_angleX_max = mpHIO->m.common.head_angleX_max;
+ f32 head_angleY_min = mpHIO->m.common.head_angleY_min;
+ f32 head_angleY_max = mpHIO->m.common.head_angleY_max;
+
+ s16 angle_delta = mCurAngle.y - mOldAngle.y;
+
+ cXyz lookat_pos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]};
+ csXyz* lookat_angle[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]};
+
+ switch (mLookMode) {
+ case LOOK_NONE:
+ break;
+ case LOOK_RESET:
+ snap = true;
+ break;
+ case LOOK_PLAYER:
+ case LOOK_PLAYER_TALK:
+ actor = daPy_getPlayerActorClass();
+ if (mLookMode != LOOK_PLAYER_TALK) {
+ break;
+ }
+ head_angleY_min = -80.0f;
+ head_angleY_max = 80.0f;
+ break;
+ case LOOK_ACTOR:
+ actor = daPy_getPlayerActorClass();
+ body_angleY_min = 0.0f;
+ body_angleY_max = 0.0f;
+ break;
+ }
+
+ if (actor != NULL) {
+ mLookPos = actor->attention_info.position;
+ if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK) {
+ mLookPos.y -= 40.0f;
+ }
+ mLookat.setAttnPos(&mLookPos);
+ } else {
+ mLookat.setAttnPos(NULL);
+ }
+
+ mLookat.setParam(body_angleX_min, body_angleX_max, body_angleY_min, body_angleY_max, 0.0f, 0.0f,
+ 0.0f, 0.0f, head_angleX_min, head_angleX_max, head_angleY_min, head_angleY_max,
+ mCurAngle.y, lookat_pos);
+ mLookat.calc(this, model->getBaseTRMtx(), lookat_angle, snap, angle_delta, false);
+}
+
/* 8095EC00-8095EE00 000EA0 0200+00 2/0 0/0 0/0 .text setExpressionAnm__11daNpcAshB_cFib
*/
bool daNpcAshB_c::setExpressionAnm(int i_idx, bool i_modify) {
@@ -669,7 +548,7 @@ void daNpcAshB_c::setMotionAnm(int i_idx, f32 i_morf) {
iVar5 = 3;
break;
}
-
+
J3DAnmTransformKey* morfAnm = getTrnsfrmKeyAnmP(l_arcNames[l_bckGetParamList[i_idx].arcIdx],
l_bckGetParamList[i_idx].fileIdx);
J3DAnmTextureSRTKey* btkAnm = getTexSRTKeyAnmP(l_arcNames[l_btkGetParamList[iVar5].arcIdx],
@@ -678,19 +557,18 @@ void daNpcAshB_c::setMotionAnm(int i_idx, f32 i_morf) {
int oiVar5 = l_bckGetParamList[i_idx].attr;
int iVar4 = l_btkGetParamList[iVar5].attr;
-
mAnmFlags &= 0xffffffc0;
if (i_idx == 12) {
bool unused_bool = setExpressionBtp(1);
- (void) unused_bool;
+ (void)unused_bool;
}
- if (morfAnm && setMcaMorfAnm(morfAnm,1.0f,i_morf,oiVar5,0,-1)) {
+ if (morfAnm && setMcaMorfAnm(morfAnm, 1.0f, i_morf, oiVar5, 0, -1)) {
mAnmFlags |= 9;
mMotionLoops = 0;
}
- if (btkAnm && setBtkAnm(btkAnm,mpMorf->getModel()->getModelData(),1.0,iVar4)) {
+ if (btkAnm && setBtkAnm(btkAnm, mpMorf->getModel()->getModelData(), 1.0, iVar4)) {
mAnmFlags |= 0x12;
}
}
@@ -708,7 +586,6 @@ void daNpcAshB_c::reset() {
field_0xddc = 0;
field_0xde0 = 0;
-
mpActionFn = NULL;
mLookMode = -1;
mMode = 0;
@@ -782,7 +659,7 @@ bool daNpcAshB_c::step(s16 i_targetAngle, int param_2, f32 i_rate) {
}
/* 8095F2C4-8095FC70 001564 09AC+00 4/0 0/0 0/0 .text wait__11daNpcAshB_cFPv */
-// NONMATCHING - float literals, regalloc, wrong variable order loads. the shitty trifecta
+// NONMATCHING - regalloc
bool daNpcAshB_c::wait(void* param_0) {
switch (mMode) {
case 0:
@@ -797,41 +674,38 @@ bool daNpcAshB_c::wait(void* param_0) {
if (field_0xdee != 0) {
setLookMode(LOOK_PLAYER);
- if (field_0xdea == mCurAngle.y) {
- s16 res = cM_deg2s(daNpcAshB_Param_c::m.mBodyLeftAngle + daNpcAshB_Param_c::m.mHeadLeftAngle);
+ if (mCurAngle.y == field_0xdea) {
+ s16 res =
+ cM_deg2s(mpHIO->m.common.body_angleY_max + mpHIO->m.common.head_angleY_max);
if (fopAcM_seenPlayerAngleY(this) > res) {
field_0xdea = fopAcM_searchPlayerAngleY(this);
}
- } else {
- if (step(mCurAngle.y,1,15.0f)) {
- setExpression(EXPR_EXPLAIN_B, -1.0f);
- setMotion(MOT_WAIT_A, -1.0f, false);
- mTurnMode = 0;
- }
+ } else if (step(mCurAngle.y, 1, 15.0f)) {
+ setExpression(EXPR_EXPLAIN_B, -1.0f);
+ setMotion(MOT_WAIT_A, -1.0f, false);
+ mTurnMode = 0;
}
- if (fopAcM_searchPlayerDistanceXZ(this) > daNpcAshB_Param_c::m.field_0x6c) {
+ if (fopAcM_searchPlayerDistanceXZ(this) > mpHIO->m.field_0x6c) {
field_0xdee = 0;
}
-
} else {
if (mActorMngr[0].getActorP()) {
- if (!chkFindPlayer())
- mTurnMode = 0;
- } else {
- if (chkFindPlayer())
+ if (!chkFindPlayer()) {
mTurnMode = 0;
+ }
+ } else if (chkFindPlayer()) {
+ mTurnMode = 0;
}
if (mActorMngr[0].getActorP()) {
setLookMode(LOOK_PLAYER);
-
} else {
setLookMode(LOOK_NONE);
if (home.angle.y != mCurAngle.y) {
- if (step(home.angle.y,1,15.0f)) {
+ if (step(home.angle.y, 1, 15.0f)) {
setExpression(EXPR_EXPLAIN_B, -1.0f);
setMotion(MOT_WAIT_A, -1.0f, false);
mTurnMode = 0;
@@ -839,9 +713,9 @@ bool daNpcAshB_c::wait(void* param_0) {
}
}
}
- /* dSv_event_flag_c::F_0335 - Snowpeak mountain - Obtained scribble from Ashei at mountain pass */
- if (!daNpcF_chkEvtBit(0x14F)
- && field_0xded == 0 && !daPy_py_c::checkNowWolf()) {
+ /* dSv_event_flag_c::F_0335 - Snowpeak mountain - Obtained scribble from Ashei at mountain
+ * pass */
+ if (!daNpcF_chkEvtBit(0x14F) && field_0xded == 0 && !daPy_py_c::checkNowWolf()) {
f32 res = pow(600.0f, 2.0f);
if (fopAcM_searchPlayerDistanceXZ2(this) <= res) {
daNpcF_offTmpBit(0xb);
@@ -860,22 +734,21 @@ bool daNpcAshB_c::wait(void* param_0) {
u8 preitemno = dComIfGp_event_getPreItemNo();
if (preitemno == fpcNm_ITEM_ASHS_SCRIBBLING) {
mFlowID = 504;
- setAction(&wait);
+ setAction(&talk);
} else {
- s16 evt_idx = dComIfGp_getEventManager().getEventIdx(this,"NO_RESPONSE",0xff);
+ s16 evt_idx =
+ dComIfGp_getEventManager().getEventIdx(this, "NO_RESPONSE", 0xff);
dComIfGp_getEvent().reset(this);
fopAcM_orderChangeEventId(this, evt_idx, 1, -1);
-
}
}
-
} else {
- setAction(&wait);
+ setAction(&talk);
}
} else {
int mystaffid = dComIfGp_getEventManager().getMyStaffId(l_myName, NULL, 0);
if (mystaffid != -1) {
- setAction(&wait);
+ setAction(&demo);
}
}
} else {
@@ -883,13 +756,13 @@ bool daNpcAshB_c::wait(void* param_0) {
eventInfo.setArchiveName(l_arcNames[0]);
}
- orderEvent(field_0xdec,l_evtNames[mOrderEvtNo*1],-1, 40, -1, 1);
+ orderEvent(field_0xdec, l_evtNames[mOrderEvtNo * 1], -1, 40, -1, 1);
- /* dSv_event_flag_c::F_0335 - Snowpeak mountain - Obtained scribble from Ashei at mountain pass */
+ /* dSv_event_flag_c::F_0335 - Snowpeak mountain - Obtained scribble from Ashei at
+ * mountain pass */
if (daNpcF_chkEvtBit(0x14F)) {
eventInfo.onCondition(0x20);
}
-
}
break;
case 3:
@@ -922,7 +795,6 @@ void daNpcAshB_c::setMotion(int i_motion, f32 i_morf, BOOL i_restart) {
if (field_0xded != 0)
motion = 10;
break;
-
}
if (i_restart || mMotion != motion) {
@@ -947,7 +819,7 @@ void daNpcAshB_c::setExpression(int i_expression, f32 i_morf) {
i_expression = 0;
break;
}
-
+
if (i_expression >= 0 && i_expression < 7) {
mExpression = i_expression;
mExpressionMorfOverride = i_morf;
@@ -955,8 +827,8 @@ void daNpcAshB_c::setExpression(int i_expression, f32 i_morf) {
mExpressionPhase = 0;
}
}
+
/* 8095FD9C-809602E0 00203C 0544+00 2/0 0/0 0/0 .text talk__11daNpcAshB_cFPv */
-// NONMATCHING float literals
bool daNpcAshB_c::talk(void* param_0) {
bool ret = false;
@@ -977,9 +849,11 @@ bool daNpcAshB_c::talk(void* param_0) {
mActorMngr[0].entry(daPy_getPlayerActorClass());
int evt_id = 0;
if (mFlow.getEventId(&evt_id) == 1) {
- mItemPartnerId = fopAcM_createItemForPresentDemo(&current.pos,evt_id,0,-1,-1,0,0);
+ mItemPartnerId =
+ fopAcM_createItemForPresentDemo(&current.pos, evt_id, 0, -1, -1, 0, 0);
if (mItemPartnerId != 0xffffffff) {
- s16 evt_idx = dComIfGp_getEventManager().getEventIdx(this, "DEFAULT_GETITEM", 0xff);
+ s16 evt_idx =
+ dComIfGp_getEventManager().getEventIdx(this, "DEFAULT_GETITEM", 0xff);
dComIfGp_getEvent().reset(this);
fopAcM_orderChangeEventId(this, evt_idx, 1, -1);
field_0x9ec = 1;
@@ -988,7 +862,7 @@ bool daNpcAshB_c::talk(void* param_0) {
} else {
setAction(&wait);
}
-
+
ret = true;
} else {
s32 prev_msg_timer = mMsgTimer;
@@ -1010,7 +884,7 @@ bool daNpcAshB_c::talk(void* param_0) {
mTurnMode = 0;
}
}
-
+
if (ret) {
mFlowID = getMessageNo();
}
@@ -1018,7 +892,7 @@ bool daNpcAshB_c::talk(void* param_0) {
case 3:
setExpression(EXPR_EXPLAIN_B, -1.0f);
if (!field_0x9ec) {
- dComIfGp_event_reset();
+ dComIfGp_event_reset();
}
field_0x9ec = false;
@@ -1031,7 +905,7 @@ bool daNpcAshB_c::talk(void* param_0) {
/* 809602E0-809604C8 002580 01E8+00 1/0 0/0 0/0 .text demo__11daNpcAshB_cFPv */
// NONMATCHING - extra instruction at dComIfGp_event_runCheck() causing regalloc issues?
bool daNpcAshB_c::demo(void* param_0) {
- dEvent_manager_c& eventManager = dComIfGp_getEventManager();
+ dEvent_manager_c& evtmgr = dComIfGp_getEventManager();
switch (mMode) {
case 0:
@@ -1041,25 +915,24 @@ bool daNpcAshB_c::demo(void* param_0) {
// fallthrough
case 2:
- if (dComIfGp_event_runCheck()) {
- if (!eventInfo.checkCommandTalk()) {
- s32 staff_id = eventManager.getMyStaffId(l_myName, NULL, 0);
- if (staff_id != -1) {
- mStaffID = staff_id;
- if ((this->*(mEvtSeqList[mOrderEvtNo]))(staff_id)) {
- eventManager.cutEnd(staff_id);
- }
+ if (dComIfGp_event_runCheck() != 0 && !eventInfo.checkCommandTalk()) {
+ s32 staff_id = evtmgr.getMyStaffId(l_myName, NULL, 0);
+ if (staff_id != -1) {
+ mStaffID = staff_id;
+ if ((this->*(mEvtSeqList[mOrderEvtNo]))(staff_id)) {
+ evtmgr.cutEnd(staff_id);
}
+ }
- if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1 && eventManager.endCheck(mEventIdx)) {
- dComIfGp_event_reset();
- mOrderEvtNo = 0;
- mEventIdx = -1;
- setAction(&wait);
- }
+ if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1 && evtmgr.endCheck(mEventIdx))
+ {
+ dComIfGp_event_reset();
+ mOrderEvtNo = 0;
+ mEventIdx = -1;
+ setAction(&wait);
}
}
-
+
break;
case 3:
@@ -1070,7 +943,6 @@ bool daNpcAshB_c::demo(void* param_0) {
}
/* 809604C8-809609A8 002768 04E0+00 3/0 0/0 0/0 .text EvCut_Appear__11daNpcAshB_cFi */
-// NONMATCHING literals
BOOL daNpcAshB_c::EvCut_Appear(int i_staffID) {
int local_30[2];
dEvent_manager_c& evtMgr = dComIfGp_getEventManager();
@@ -1078,29 +950,31 @@ BOOL daNpcAshB_c::EvCut_Appear(int i_staffID) {
if (evtMgr.getIsAddvance(i_staffID)) {
switch (*cut_name) {
- // '0001', '0003', etc. wouldn't match?
- case 0x30303031:
+ case '0001':
+ break;
+ case '0002':
setLookMode(LOOK_ACTOR);
break;
- case 0x30303033:
+ case '0003':
setLookMode(LOOK_PLAYER);
mTurnMode = 0;
break;
- case 0x30303034:
- case 0x30303036:
- case 0x30303037:
- case 0x30303039:
+ case '0004':
+ case '0006':
+ case '0007':
+ case '0009':
initTalk(mFlowID, NULL);
break;
- case 0x30303035:
- setExpression(6,6.0f);
- setMotion(2, 2.0f, false);
+ case '0005':
+ setExpression(6, 0.0f);
+ setMotion(2, -1.0f, false);
mMsgTimer = 0;
break;
- case 0x30303038:
+ case '0008':
local_30[0] = 0;
if (mFlow.getEventId(local_30) == 1) {
- mItemPartnerId = fopAcM_createItemForPresentDemo(&current.pos,local_30[0], 0, -1, -1, 0, 0);
+ mItemPartnerId =
+ fopAcM_createItemForPresentDemo(&current.pos, local_30[0], 0, -1, -1, 0, 0);
dComIfGp_event_setItemPartnerId(mItemPartnerId);
mItemPartnerId = -1;
}
@@ -1109,42 +983,42 @@ BOOL daNpcAshB_c::EvCut_Appear(int i_staffID) {
}
switch (*cut_name) {
- case 0x30303031:
- case 0x30303032:
+ case '0001':
+ case '0002':
return TRUE;
- case 0x30303033:
- if (step(fopAcM_searchPlayerAngleY(this), 1, 20.0f) != 0) {
- setLookMode(2);
- setMotion(0, -1.0f, 0);
- mTurnMode = 0;
- return TRUE;
- }
- break;
- case 0x30303034:
- case 0x30303036:
- case 0x30303037:
- case 0x30303039:
- if (talkProc(NULL, TRUE, NULL)) {
- return TRUE;
- }
- break;
- case 0x30303035:
- if (mMotionPhase > 1) {
- mpMorf->getModel()->getModelData()->getMaterialNodePointer(4)->getShape()->hide();
- return TRUE;
- }
+ case '0003':
+ if (step(fopAcM_searchPlayerAngleY(this), 1, 20.0f) != 0) {
+ setLookMode(2);
+ setMotion(0, -1.0f, 0);
+ mTurnMode = 0;
+ return TRUE;
+ }
+ break;
+ case '0004':
+ case '0006':
+ case '0007':
+ case '0009':
+ if (talkProc(NULL, TRUE, NULL)) {
+ return TRUE;
+ }
+ break;
+ case '0005':
+ if (mMotionPhase > 1) {
+ mpMorf->getModel()->getModelData()->getMaterialNodePointer(4)->getShape()->hide();
+ return TRUE;
+ }
- if (mMotionPhase == 1) {
- setExpression(6,0.0f);
- f32 subtract = mpMorf->getEndFrame() - 1.0f;
- if (mpMorf->getFrame() > subtract) {
- field_0xded = 1;
- }
+ if (mMotionPhase == 1) {
+ setExpression(6, 0.0f);
+ f32 subtract = mpMorf->getEndFrame() - 1.0f;
+ if (mpMorf->getFrame() > subtract) {
+ field_0xded = 1;
}
- break;
- case 0x30303038:
- field_0x9eb = true;
- return TRUE;
+ }
+ break;
+ case '0008':
+ field_0x9eb = true;
+ return TRUE;
}
int timer = mMsgTimer;
@@ -1192,18 +1066,24 @@ static bool daNpcAshB_IsDelete(void* param_0) {
/* 80960A60-80960AE8 002D00 0088+00 1/0 0/0 0/0 .text setParam__11daNpcAshB_cFv */
void daNpcAshB_c::setParam() {
- attention_info.flags = daPy_py_c::checkNowWolf() ? 0 : (fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e);
- attention_info.distances[0] = getDistTableIdx(daNpcAshB_Param_c::m.mTalkDistIdx,daNpcAshB_Param_c::m.mTalkAngleIdx);
+ attention_info.flags =
+ daPy_py_c::checkNowWolf() ? 0 : (fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e);
+ attention_info.distances[0] =
+ getDistTableIdx(mpHIO->m.common.attention_distance, mpHIO->m.common.attention_angle);
attention_info.distances[1] = attention_info.distances[0];
- attention_info.distances[3] = getDistTableIdx(daNpcAshB_Param_c::m.mSpeakDistIdx,daNpcAshB_Param_c::m.mSpeakAngleIdx);
+ attention_info.distances[3] =
+ getDistTableIdx(mpHIO->m.common.talk_distance, mpHIO->m.common.talk_angle);
}
/* 80960AE8-80960D64 002D88 027C+00 1/0 0/0 0/0 .text main__11daNpcAshB_cFv */
BOOL daNpcAshB_c::main() {
- if (mpActionFn != NULL)
+ if (mpActionFn != NULL) {
(this->*mpActionFn)(NULL);
+ }
- if (mItemPartnerId != -1 && dComIfGp_event_runCheck() != 0 && !strcmp(dComIfGp_getEventManager().getRunEventName(), "DEFAULT_GETITEM")) {
+ if (mItemPartnerId != -1 && dComIfGp_event_runCheck() != 0 &&
+ !strcmp(dComIfGp_getEventManager().getRunEventName(), "DEFAULT_GETITEM"))
+ {
dComIfGp_event_setItemPartnerId(mItemPartnerId);
mItemPartnerId = -1;
}
@@ -1213,77 +1093,12 @@ BOOL daNpcAshB_c::main() {
return true;
}
-/* 80960D64-80961188 003004 0424+00 1/1 0/0 0/0 .text playMotion__11daNpcAshB_cFv */
-// NONMATCHING - no clue
-void daNpcAshB_c::playMotion() {
- daNpcF_anmPlayData dat0 = {7, daNpcAshB_Param_c::m.mMorfFrames, 0};
- daNpcF_anmPlayData* pDat0[1] = {&dat0};
-
- daNpcF_anmPlayData dat1 = {8, daNpcAshB_Param_c::m.mMorfFrames, 0};
- daNpcF_anmPlayData* pDat1[1] = {&dat1};
-
- daNpcF_anmPlayData dat2a = {0xC, daNpcAshB_Param_c::m.mMorfFrames, 1};
- daNpcF_anmPlayData dat2b = {0xD, 0.0f, 1};
- daNpcF_anmPlayData dat2c = {8, 0.0f, 0};
- daNpcF_anmPlayData* pDat2[3] = {&dat2a, &dat2b, &dat2c};
-
- daNpcF_anmPlayData dat3a = {0xE, daNpcAshB_Param_c::m.mMorfFrames, 1};
- daNpcF_anmPlayData dat3b = {8, 0.0f, 0};
- daNpcF_anmPlayData* pDat3[2] = {&dat3a, &dat3b};
-
- daNpcF_anmPlayData dat4a = {0xF, daNpcAshB_Param_c::m.mMorfFrames, 1};
- daNpcF_anmPlayData dat4b = {8, 0.0f, 0};
- daNpcF_anmPlayData* pDat4[2] = {&dat4a, &dat4b};
-
- daNpcF_anmPlayData dat5a = {0x10, daNpcAshB_Param_c::m.mMorfFrames, 1};
- daNpcF_anmPlayData dat5b = {8, 0.0f, 0};
- daNpcF_anmPlayData* pDat5[2] = {&dat5a, &dat5b};
-
- daNpcF_anmPlayData dat6a = {0x11, daNpcAshB_Param_c::m.mMorfFrames, 1};
- daNpcF_anmPlayData dat6b = {8, 0.0f, 0};
- daNpcF_anmPlayData* pDat6[2] = {&dat6a, &dat6b};
-
- daNpcF_anmPlayData dat7a = {0x12, daNpcAshB_Param_c::m.mMorfFrames, 1};
- daNpcF_anmPlayData dat7b = {0x13, 0.0f, 0};
- daNpcF_anmPlayData* pDat7[2] = {&dat7a, &dat7b};
-
- daNpcF_anmPlayData dat8 = {0x13, daNpcAshB_Param_c::m.mMorfFrames, 0};
- daNpcF_anmPlayData* pDat8[1] = {&dat8};
-
- daNpcF_anmPlayData dat9a = {0x14, daNpcAshB_Param_c::m.mMorfFrames, 1};
- daNpcF_anmPlayData dat9b = {8, 0.0f, 0};
- daNpcF_anmPlayData* pDat9[2] = {&dat9a, &dat9b};
-
- daNpcF_anmPlayData dat10 = {0xA, 4.0f, 1};
- daNpcF_anmPlayData* pDat10[2] = {&dat10, NULL};
- daNpcF_anmPlayData dat11 = {0xB, 4.0f, 1};
- daNpcF_anmPlayData* pDat11[2] = {&dat11, NULL};
-
- daNpcF_anmPlayData** ppDat[12] = {
- pDat0,
- pDat1,
- pDat2,
- pDat3,
- pDat4,
- pDat5,
- pDat6,
- pDat7,
- pDat8,
- pDat9,
- pDat10,
- pDat11,
- };
- if (mMotion >= 0 && mMotion < 12) {
- playMotionAnm(ppDat);
- }
-}
-
/* 80961188-80961264 003428 00DC+00 1/0 0/0 0/0 .text ctrlBtk__11daNpcAshB_cFv */
-// NONMATCHING inlining issues
BOOL daNpcAshB_c::ctrlBtk() {
if (mpMatAnm != NULL) {
J3DAnmTextureSRTKey* btkAnm = NULL;
- btkAnm = getTexSRTKeyAnmP(l_arcNames[l_btkGetParamList[0].arcIdx],l_btkGetParamList[0].fileIdx);
+ btkAnm =
+ getTexSRTKeyAnmP(l_arcNames[l_btkGetParamList[0].arcIdx], l_btkGetParamList[0].fileIdx);
if (btkAnm == mBtkAnm.getBtkAnm()) {
mpMatAnm->setNowOffsetX(cM_ssin(mEyeAngle.y) * 0.2f * -1.0f);
@@ -1297,10 +1112,9 @@ BOOL daNpcAshB_c::ctrlBtk() {
}
/* 80961264-80961574 003504 0310+00 1/0 0/0 0/0 .text setAttnPos__11daNpcAshB_cFv */
-// float literals
void daNpcAshB_c::setAttnPos() {
if (mLookMode == 1) {
- for (int i = 0; i < 3; i++) {
+ for (int i = 0; i < 3; i++) {
mLookatAngle[i].setall(0);
}
}
@@ -1308,16 +1122,15 @@ void daNpcAshB_c::setAttnPos() {
setMtx();
lookat();
- cXyz vec(10.0f,10.0f,0.0f);
+ cXyz vec(10.0f, 10.0f, 0.0f);
mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(10));
mDoMtx_stack_c::multVecZero(&mHeadPos);
mDoMtx_stack_c::multVec(&vec, &eyePos);
vec.x = 0.0f;
mDoMtx_stack_c::multVec(&vec, &vec);
-
- mHeadAngle.x = cLib_targetAngleX(&mHeadPos,&vec);
- mHeadAngle.y = cLib_targetAngleY(&mHeadPos,&vec);
+ mHeadAngle.x = cLib_targetAngleX(&mHeadPos, &vec);
+ mHeadAngle.y = cLib_targetAngleY(&mHeadPos, &vec);
cXyz* attnPos = mLookat.getAttnPos();
if (attnPos != NULL) {
@@ -1325,82 +1138,21 @@ void daNpcAshB_c::setAttnPos() {
mEyeAngle.y = -(mLookatAngle[2].y + mCurAngle.y);
mEyeAngle.y += cM_atan2s(local_48.x, local_48.z);
mEyeAngle.x = mHeadAngle.x - cM_atan2s(local_48.y, local_48.absXZ());
- // mEyeAngle.x += mHeadAngle.x;
} else {
mEyeAngle.y = 0;
mEyeAngle.x = 0;
}
- attention_info.position.set(current.pos.x,
- current.pos.y + daNpcAshB_Param_c::m.mAttnOffsetY,
+ attention_info.position.set(current.pos.x, current.pos.y + mpHIO->m.common.attention_offset,
current.pos.z);
mCyl.SetC(current.pos);
- mCyl.SetH(daNpcAshB_Param_c::m.mCylH);
- mCyl.SetR(daNpcAshB_Param_c::m.mWallR);
+ mCyl.SetH(mpHIO->m.common.height);
+ mCyl.SetR(mpHIO->m.common.width);
dComIfG_Ccsp()->Set(&mCyl);
}
-/* 80961574-80961770 003814 01FC+00 1/1 0/0 0/0 .text lookat__11daNpcAshB_cFv */
-// NONMATCHING literal issues
-void daNpcAshB_c::lookat() {
- fopAc_ac_c* actor = NULL;
- J3DModel* model = mpMorf->getModel();
- BOOL snap = false;
- f32 body_down_angle = daNpcAshB_Param_c::m.mBodyDownAngle;
- f32 body_up_angle = daNpcAshB_Param_c::m.mBodyUpAngle;
- f32 body_right_angle = daNpcAshB_Param_c::m.mBodyRightAngle;
- f32 body_left_angle = daNpcAshB_Param_c::m.mBodyLeftAngle;
- f32 head_down_angle = daNpcAshB_Param_c::m.mHeadDownAngle;
- f32 head_up_angle = daNpcAshB_Param_c::m.mHeadUpAngle;
- f32 head_right_angle = daNpcAshB_Param_c::m.mHeadRightAngle;
- f32 head_left_angle = daNpcAshB_Param_c::m.mHeadLeftAngle;
-
- s16 angle_delta = mCurAngle.y - mOldAngle.y;
-
- cXyz lookat_pos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]};
- csXyz* lookat_angle[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]};
-
- switch (mLookMode) {
- case LOOK_NONE:
- break;
- case LOOK_RESET:
- snap = true;
- break;
- case LOOK_PLAYER:
- case LOOK_PLAYER_TALK:
- actor = daPy_getPlayerActorClass();
- if (mLookMode != LOOK_PLAYER_TALK) {
- break;
- }
- head_right_angle = -80.0f;
- head_left_angle = 80.0f;
- break;
- case LOOK_ACTOR:
- actor = daPy_getPlayerActorClass();
- body_right_angle = 0.0f;
- body_left_angle = 0.0f;
- break;
- }
-
- if (actor != NULL) {
- mLookPos = actor->attention_info.position;
- if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK) {
- mLookPos.y -= 40.0f;
- }
- mLookat.setAttnPos(&mLookPos);
- } else {
- mLookat.setAttnPos(NULL);
- }
-
- mLookat.setParam(body_down_angle, body_up_angle, body_right_angle, body_left_angle,
- 0.0f, 0.0f, 0.0f, 0.0f,
- head_down_angle, head_up_angle, head_right_angle, head_left_angle,
- mCurAngle.y, lookat_pos);
- mLookat.calc(this, model->getBaseTRMtx(), lookat_angle, snap, angle_delta, false);
-}
-
/* 80961770-809617F8 003A10 0088+00 1/0 0/0 0/0 .text drawOtherMdls__11daNpcAshB_cFv */
void daNpcAshB_c::drawOtherMdls() {
if (field_0xded != 0) {
@@ -1420,27 +1172,25 @@ BOOL daNpcAshB_c::drawDbgInfo() {
/* 80962680-809626A0 -00001 0020+00 1/0 0/0 0/0 .data daNpcAshB_MethodTable */
static actor_method_class daNpcAshB_MethodTable = {
- (process_method_func)daNpcAshB_Create,
- (process_method_func)daNpcAshB_Delete,
- (process_method_func)daNpcAshB_Execute,
- (process_method_func)daNpcAshB_IsDelete,
+ (process_method_func)daNpcAshB_Create, (process_method_func)daNpcAshB_Delete,
+ (process_method_func)daNpcAshB_Execute, (process_method_func)daNpcAshB_IsDelete,
(process_method_func)daNpcAshB_Draw,
};
/* 809626A0-809626D0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_ASHB */
extern actor_process_profile_definition g_profile_NPC_ASHB = {
- fpcLy_CURRENT_e, // mLayerID
- 7, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_NPC_ASHB, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daNpcAshB_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 412, // mPriority
- &daNpcAshB_MethodTable, // sub_method
- 0x00040100, // mStatus
- fopAc_NPC_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
+ fpcLy_CURRENT_e, // mLayerID
+ 7, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_NPC_ASHB, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daNpcAshB_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 412, // mPriority
+ &daNpcAshB_MethodTable, // sub_method
+ 0x00040100, // mStatus
+ fopAc_NPC_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
};
diff --git a/src/d/actor/d_a_npc_impal.cpp b/src/d/actor/d_a_npc_impal.cpp
index 9e4a0f2550..c5259a4be7 100644
--- a/src/d/actor/d_a_npc_impal.cpp
+++ b/src/d/actor/d_a_npc_impal.cpp
@@ -1,13 +1,61 @@
/**
-* @file d_a_npc_impal.cpp
+ * @file d_a_npc_impal.cpp
*
*/
-#include "d/dolzel_rel.h" // IWYU pragma: keep
+#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "d/actor/d_a_npc_impal.h"
-static daNpcImpal_Param_c l_HIO;
+/* 80A0C270-80A0C2E0 000000 0070+00 12/12 0/0 0/0 .rodata m__18daNpcImpal_Param_c */
+daNpcImpal_HIOParam const daNpcImpal_Param_c::m = {
+ 135.0f, // attention_offset
+ -3.0f, // gravity
+ 1.0f, // scale
+ 560.0f, // real_shadow_size
+ 255.0f, // weight
+ 130.0f, // height
+ 35.0f, // knee_length
+ 30.0f, // width
+ 0.0f, // body_angleX_max
+ 0.0f, // body_angleX_min
+ 10.0f, // body_angleY_max
+ -10.0f, // body_angleY_min
+ 30.0f, // head_angleX_max
+ -10.0f, // head_angleX_min
+ 45.0f, // head_angleY_max
+ -45.0f, // head_angleY_min
+ 0.600000024f, // neck_rotation_ratio
+ 20.0f, // morf_frame
+ 3, // talk_distance
+ 6, // talk_angle
+ 5, // attention_distance
+ 6, // attention_angle
+ 80.0f, // fov
+ 500.0f, // search_distance
+ 300.0f, // search_height
+ -300.0f, // search_depth
+ 60, // attention_time
+ 8, // damage_time
+ 0, // face_expression
+ 0, // motion
+ 0, // look_mode
+ 0, // debug_mode_ON
+ 0, // debug_info_ON
+ 300.0f, // field_0x6c
+};
+
+#if DEBUG
+daNpcImpal_HIO_c::daNpcImpal_HIO_c() {
+ m = daNpcImpal_Param_c::m;
+}
+
+void daNpcImpal_HIO_c::genMessage(JORMContext* ctext) {
+ // TODO
+}
+#endif
+
+NPC_IMPAL_HIO_CLASS l_HIO;
/* 80A0C544-80A0C61C 000020 00D8+00 1/2 0/0 0/0 .data l_bckGetParamList */
static daNpc_GetParam2 l_bckGetParamList[18] = {
@@ -56,9 +104,7 @@ daNpcImpal_c::EventFn daNpcImpal_c::mEvtSeqList[4] = {
};
/* 80A079EC-80A07B70 0000EC 0184+00 1/1 0/0 0/0 .text __ct__12daNpcImpal_cFv */
-daNpcImpal_c::daNpcImpal_c() {
- // NONMATCHING
-}
+daNpcImpal_c::daNpcImpal_c() {}
/* 80A07C00-80A07DC4 000300 01C4+00 1/0 0/0 0/0 .text __dt__12daNpcImpal_cFv */
daNpcImpal_c::~daNpcImpal_c() {
@@ -71,43 +117,6 @@ daNpcImpal_c::~daNpcImpal_c() {
}
}
-/* 80A0C270-80A0C2E0 000000 0070+00 12/12 0/0 0/0 .rodata m__18daNpcImpal_Param_c */
-daNpc_Impal_HIOParam const daNpcImpal_Param_c::m = {
- 135.0f, // mAttnOffsetY
- -3.0f, // mGravity
- 1.0f, // mScale
- 560.0f, // mShadowDepth
- 255.0f, // mCcWeight
- 130.0f, // mCylH
- 35.0f, // mWallH
- 30.0f, // mWallR
- 0.0f, // mBodyUpAngle
- 0.0f, // mBodyDownAngle
- 10.0f, // mBodyLeftAngle
- -10.0f, // mBodyRightAngle
- 30.0f, // mHeadUpAngle
- -10.0f, // mHeadDownAngle
- 45.0f, // mHeadLeftAngle
- -45.0f, // mHeadRightAngle
- 0.600000024f, // mNeckAngleScl
- 20.0f, // mMorfFrames
- 3, // mSpeakDistIdx
- 6, // mSpeakAngleIdx
- 5, // mTalkDistIdx
- 6, // mTalkAngleIdx
- 80.0f, // mAttnFovY
- 500.0f, // mAttnRadius
- 300.0f, // mAttnUpperY
- -300.0f, // mAttnLowerY
- 60, // field_0x60
- 8, // mDamageTimer
- 0, // mTestExpression
- 0, // mTestMotion
- 0, // mTestLookMode
- false, // mTest
- 300.0f, // field_0x6c
-};
-
/* 80A07DC4-80A080F8 0004C4 0334+00 1/1 0/0 0/0 .text Create__12daNpcImpal_cFv */
int daNpcImpal_c::Create() {
int phase;
@@ -139,13 +148,13 @@ int daNpcImpal_c::Create() {
fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
fopAcM_setCullSizeBox(this, -160.0f, -50.0f, -160.0f, 160.0f, 220.0f, 160.0f);
mCreatureSound.init(&current.pos, &eyePos, 3, 1);
- mAcchCir.SetWall(daNpcImpal_Param_c::m.mWallR, daNpcImpal_Param_c::m.mWallH);
+ mAcchCir.SetWall(mpHIO->m.common.width, mpHIO->m.common.knee_length);
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this));
mAcch.SetRoofNone();
mAcch.SetWaterNone();
mAcch.CrrPos(dComIfG_Bgsp());
- mCcStts.Init((int)daNpcImpal_Param_c::m.mCcWeight, 0, this);
+ mCcStts.Init((int)mpHIO->m.common.weight, 0, this);
mCyl.Set(daNpcF_c::mCcDCyl);
mCyl.SetStts(&mCcStts);
mCyl.SetTgType(0);
@@ -222,7 +231,7 @@ int daNpcImpal_c::Draw() {
}
mpMorf->getModel()->getModelData()->getMaterialNodePointer(2)->setMaterialAnm(mpMatAnm);
- draw(false, false, daNpcImpal_Param_c::m.mShadowDepth, NULL, false);
+ draw(false, false, mpHIO->m.common.real_shadow_size, NULL, false);
return 1;
}
@@ -247,7 +256,7 @@ bool daNpcImpal_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
case 1:
case 3:
case 4:
- setLookatMtx(jointNo, lookatJoints, daNpcImpal_Param_c::m.mNeckAngleScl);
+ setLookatMtx(jointNo, lookatJoints, mpHIO->m.common.neck_rotation_ratio);
break;
}
@@ -314,21 +323,21 @@ s16 daNpcImpal_c::step(s16 i_angle, int i_animate) {
}
void daNpcImpal_c::playExpression() {
- daNpcF_anmPlayData dat0 = {ANM_1, daNpcImpal_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat0 = {ANM_1, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData* pDat0[1] = {&dat0};
- daNpcF_anmPlayData dat1 = {ANM_5, daNpcImpal_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat1 = {ANM_5, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData* pDat1[1] = {&dat1};
- daNpcF_anmPlayData dat2 = {ANM_4, daNpcImpal_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat2 = {ANM_4, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData* pDat2[1] = {&dat2};
- daNpcF_anmPlayData dat3 = {ANM_6, daNpcImpal_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat3 = {ANM_6, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData* pDat3[1] = {&dat3};
- daNpcF_anmPlayData dat4 = {ANM_8, daNpcImpal_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat4 = {ANM_8, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat4[1] = {&dat4};
- daNpcF_anmPlayData dat5 = {ANM_7, daNpcImpal_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat5 = {ANM_7, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat5[1] = {&dat5};
- daNpcF_anmPlayData dat6 = {ANM_9, daNpcImpal_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat6 = {ANM_9, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat6[1] = {&dat6};
- daNpcF_anmPlayData dat7 = {ANM_0, daNpcImpal_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat7 = {ANM_0, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat7[1] = {&dat7};
daNpcF_anmPlayData** ppDat[8] = {
@@ -340,21 +349,21 @@ void daNpcImpal_c::playExpression() {
}
void daNpcImpal_c::playMotion() {
- daNpcF_anmPlayData dat0 = {0xA, daNpcImpal_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat0 = {0xA, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat0[1] = {&dat0};
- daNpcF_anmPlayData dat1a = {0xD, daNpcImpal_Param_c::m.mMorfFrames, 1};
- daNpcF_anmPlayData dat1b = {0xB, daNpcImpal_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat1a = {0xD, mpHIO->m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat1b = {0xB, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat1[2] = {&dat1a, &dat1b};
- daNpcF_anmPlayData dat2 = {0xB, daNpcImpal_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat2 = {0xB, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat2[1] = {&dat2};
- daNpcF_anmPlayData dat3 = {0xC, daNpcImpal_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat3 = {0xC, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat3[1] = {&dat3};
- daNpcF_anmPlayData dat4a = {0xE, daNpcImpal_Param_c::m.mMorfFrames, 1};
- daNpcF_anmPlayData dat4b = {0xA, daNpcImpal_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat4a = {0xE, mpHIO->m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat4b = {0xA, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat4[2] = {&dat4a, &dat4b};
daNpcF_anmPlayData dat5a = {0x10, 0.0f, 1};
@@ -459,7 +468,8 @@ bool daNpcImpal_c::setExpressionAnm(int i_idx, bool i_modify) {
return false;
}
-/* 80A08A68-80A08B48 001168 00E0+00 1/0 0/0 0/0 .text setExpressionBtp__12daNpcImpal_cFi */
+/* 80A08A68-80A08B48 001168 00E0+00 1/0 0/0 0/0 .text setExpressionBtp__12daNpcImpal_cFi
+ */
bool daNpcImpal_c::setExpressionBtp(int i_idx) {
J3DAnmTexPattern* btpAnm = getTexPtrnAnmP(l_arcNames[l_btpGetParamList[i_idx].arcIdx],
l_btpGetParamList[i_idx].fileIdx);
@@ -583,25 +593,57 @@ bool daNpcImpal_c::setAction(daNpcImpal_c::actionFunc i_actionFn) {
return true;
}
-static u8 const lit_4589[12 + 4 /* padding */] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- 0x00,
- /* padding */
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
+/* 80A0B76C-80A0B94C 003E6C 01E0+00 1/1 0/0 0/0 .text lookat__12daNpcImpal_cFv */
+void daNpcImpal_c::lookat() {
+ fopAc_ac_c* actor = NULL;
+ J3DModel* model = mpMorf->getModel();
+ BOOL snap = false;
+
+ f32 body_angleX_min = mpHIO->m.common.body_angleX_min;
+ f32 body_angleX_max = mpHIO->m.common.body_angleX_max;
+ f32 body_angleY_min = mpHIO->m.common.body_angleY_min;
+ f32 body_angleY_max = mpHIO->m.common.body_angleY_max;
+ f32 head_angleX_min = mpHIO->m.common.head_angleX_min;
+ f32 head_angleX_max = mpHIO->m.common.head_angleX_max;
+ f32 head_angleY_min = mpHIO->m.common.head_angleY_min;
+ f32 head_angleY_max = mpHIO->m.common.head_angleY_max;
+
+ s16 angle_delta = mCurAngle.y - mOldAngle.y;
+
+ cXyz lookat_pos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]};
+ csXyz* lookat_angle[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]};
+
+ switch (mLookMode) {
+ case LOOK_NONE:
+ break;
+ case LOOK_RESET:
+ snap = true;
+ break;
+ case LOOK_PLAYER:
+ case LOOK_PLAYER_TALK:
+ actor = daPy_getPlayerActorClass();
+ if (mLookMode == LOOK_PLAYER_TALK) {
+ head_angleY_min = -80.0f;
+ head_angleY_max = 80.0f;
+ }
+ break;
+ }
+
+ if (actor != NULL) {
+ mLookPos = actor->attention_info.position;
+ if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK) {
+ mLookPos.y -= 40.0f;
+ }
+ mLookat.setAttnPos(&mLookPos);
+ } else {
+ mLookat.setAttnPos(NULL);
+ }
+
+ mLookat.setParam(body_angleX_min, body_angleX_max, body_angleY_min, body_angleY_max, 0.0f, 0.0f,
+ 0.0f, 0.0f, head_angleX_min, head_angleX_max, head_angleY_min, head_angleY_max,
+ mCurAngle.y, lookat_pos);
+ mLookat.calc(this, model->getBaseTRMtx(), lookat_angle, snap, angle_delta, false);
+}
/* 80A08F60-80A090E8 001660 0188+00 1/1 0/0 0/0 .text s_sub1__FPvPv */
static void* s_sub1(void* i_actor, void* i_data) {
@@ -616,7 +658,7 @@ static void* s_sub1(void* i_actor, void* i_data) {
BOOL daNpcImpal_c::chkFindPlayer() {
BOOL ret;
- if (!chkActorInSight(daPy_getPlayerActorClass(), daNpcImpal_Param_c::m.mAttnFovY)) {
+ if (!chkActorInSight(daPy_getPlayerActorClass(), mpHIO->m.common.fov)) {
mActorMngr[0].remove();
ret = false;
} else {
@@ -1111,10 +1153,10 @@ static int daNpcImpal_IsDelete(void* i_this) {
/* 80A0ADF8-80A0AEA8 0034F8 00B0+00 1/0 0/0 0/0 .text setParam__12daNpcImpal_cFv */
void daNpcImpal_c::setParam() {
attention_info.distances[0] =
- getDistTableIdx(daNpcImpal_Param_c::m.mTalkDistIdx, daNpcImpal_Param_c::m.mTalkAngleIdx);
+ getDistTableIdx(mpHIO->m.common.attention_distance, mpHIO->m.common.attention_angle);
attention_info.distances[1] = attention_info.distances[0];
attention_info.distances[3] =
- getDistTableIdx(daNpcImpal_Param_c::m.mSpeakDistIdx, daNpcImpal_Param_c::m.mSpeakAngleIdx);
+ getDistTableIdx(mpHIO->m.common.talk_distance, mpHIO->m.common.talk_angle);
if (field_0xde9) {
attention_info.flags = fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e;
@@ -1122,10 +1164,10 @@ void daNpcImpal_c::setParam() {
attention_info.flags = 0;
}
- mAcchCir.SetWallR(daNpcImpal_Param_c::m.mWallR);
- mAcchCir.SetWallH(daNpcImpal_Param_c::m.mWallH);
+ mAcchCir.SetWallR(mpHIO->m.common.width);
+ mAcchCir.SetWallH(mpHIO->m.common.knee_length);
- gravity = daNpcImpal_Param_c::m.mGravity;
+ gravity = mpHIO->m.common.gravity;
}
/* 80A0AEA8-80A0B380 0035A8 04D8+00 1/0 0/0 0/0 .text main__12daNpcImpal_cFv */
@@ -1198,70 +1240,17 @@ void daNpcImpal_c::setAttnPos() {
mEyeAngle.x = 0;
}
- attention_info.position.set(current.pos.x, current.pos.y + daNpcImpal_Param_c::m.mAttnOffsetY,
+ attention_info.position.set(current.pos.x, current.pos.y + mpHIO->m.common.attention_offset,
current.pos.z);
if (field_0xde9) {
mCyl.SetC(current.pos);
- mCyl.SetH(daNpcImpal_Param_c::m.mCylH);
- mCyl.SetR(daNpcImpal_Param_c::m.mWallR);
+ mCyl.SetH(mpHIO->m.common.height);
+ mCyl.SetR(mpHIO->m.common.width);
dComIfG_Ccsp()->Set(&mCyl);
}
}
-/* 80A0B76C-80A0B94C 003E6C 01E0+00 1/1 0/0 0/0 .text lookat__12daNpcImpal_cFv */
-// Nonmatching - lookat_angle causing issues with literals
-void daNpcImpal_c::lookat() {
- fopAc_ac_c* actor = NULL;
- J3DModel* model = mpMorf->getModel();
- BOOL snap = false;
-
- f32 body_down_angle = daNpcImpal_Param_c::m.mBodyDownAngle;
- f32 body_up_angle = daNpcImpal_Param_c::m.mBodyUpAngle;
- f32 body_right_angle = daNpcImpal_Param_c::m.mBodyRightAngle;
- f32 body_left_angle = daNpcImpal_Param_c::m.mBodyLeftAngle;
- f32 head_down_angle = daNpcImpal_Param_c::m.mHeadDownAngle;
- f32 head_up_angle = daNpcImpal_Param_c::m.mHeadUpAngle;
- f32 head_right_angle = daNpcImpal_Param_c::m.mHeadRightAngle;
- f32 head_left_angle = daNpcImpal_Param_c::m.mHeadLeftAngle;
-
- s16 angle_delta = mCurAngle.y - mOldAngle.y;
-
- cXyz lookat_pos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]};
- csXyz* lookat_angle[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]};
-
- switch (mLookMode) {
- case LOOK_NONE:
- break;
- case LOOK_RESET:
- snap = true;
- break;
- case LOOK_PLAYER:
- case LOOK_PLAYER_TALK:
- actor = daPy_getPlayerActorClass();
- if (mLookMode == LOOK_PLAYER_TALK) {
- head_right_angle = -80.0f;
- head_left_angle = 80.0f;
- }
- break;
- }
-
- if (actor != NULL) {
- mLookPos = actor->attention_info.position;
- if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK) {
- mLookPos.y -= 40.0f;
- }
- mLookat.setAttnPos(&mLookPos);
- } else {
- mLookat.setAttnPos(NULL);
- }
-
- mLookat.setParam(body_down_angle, body_up_angle, body_right_angle, body_left_angle, 0.0f, 0.0f,
- 0.0f, 0.0f, head_down_angle, head_up_angle, head_right_angle, head_left_angle,
- mCurAngle.y, lookat_pos);
- mLookat.calc(this, model->getBaseTRMtx(), lookat_angle, snap, angle_delta, false);
-}
-
/* 80A0B94C-80A0B954 00404C 0008+00 1/0 0/0 0/0 .text drawDbgInfo__12daNpcImpal_cFv */
BOOL daNpcImpal_c::drawDbgInfo() {
return FALSE;
diff --git a/src/d/actor/d_a_npc_lud.cpp b/src/d/actor/d_a_npc_lud.cpp
index 00b8ce3593..b8197f08dc 100644
--- a/src/d/actor/d_a_npc_lud.cpp
+++ b/src/d/actor/d_a_npc_lud.cpp
@@ -1,13 +1,73 @@
/**
* @file d_a_npc_lud.cpp
*
-*/
+ */
-#include "d/dolzel_rel.h" // IWYU pragma: keep
+#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "d/actor/d_a_npc_len.h"
#include "d/actor/d_a_npc_lud.h"
+/* 80A6FD7C-80A6FE0C 000000 0090+00 10/10 0/0 0/0 .rodata m__17daNpc_Lud_Param_c */
+const daNpc_Lud_HIOParam daNpc_Lud_Param_c::m = {
+ 160.0f, // attention_offset
+ -3.0f, // gravity
+ 1.0f, // scale
+ 400.0f, // real_shadow_size
+ 255.0f, // weight
+ 150.0f, // height
+ 35.0f, // knee_length
+ 30.0f, // width
+ 0.0f, // body_angleX_max
+ 0.0f, // body_angleX_min
+ 30.0f, // body_angleY_max
+ -30.0f, // body_angleY_min
+ 30.0f, // head_angleX_max
+ -10.0f, // head_angleX_min
+ 45.0f, // head_angleY_max
+ -45.0f, // head_angleY_min
+ 0.6f, // neck_rotation_ratio
+ 12.0f, // morf_frame
+ 3, // talk_distance
+ 6, // talk_angle
+ 5, // attention_distance
+ 6, // attention_angle
+ 110.0f, // fov
+ 0.0f, // search_distance
+ 0.0f, // search_height
+ 0.0f, // search_depth
+ 60, // attention_time
+ 8, // damage_time
+ 0, // face_expression
+ 0, // motion
+ 0, // look_mode
+ 0, // debug_mode_ON
+ 0, // debug_info_ON
+ 4.0f, // expression_morf_frame
+ -15.0f, // box_min_x
+ 0.0f, // box_min_y
+ -15.0f, // box_min_z
+ 15.0f, // box_max_x
+ 40.0f, // box_max_y
+ 15.0f, // box_max_z
+ 90.0f, // box_offset
+ 1.0f, // play_speed
+};
+
+#if DEBUG
+daNpc_Lud_HIO_c::daNpc_Lud_HIO_c() {
+ m = daNpc_Lud_Param_c::m;
+}
+
+void daNpc_Lud_HIO_c::listenPropertyEvent(const JORPropertyEvent* event) {
+ // TODO
+}
+
+void daNpc_Lud_HIO_c::genMessage(JORMContext* ctext) {
+ // TODO
+}
+#endif
+
enum Type {
/* 0x0 */ TYPE_0,
/* 0x1 */ TYPE_1,
@@ -200,14 +260,6 @@ daNpc_Lud_c::~daNpc_Lud_c() {
deleteRes(l_loadResPtrnList[mType], (const char**)l_resNameList);
}
-/* 80A6FD7C-80A6FE0C 000000 0090+00 10/10 0/0 0/0 .rodata m__17daNpc_Lud_Param_c */
-const daNpc_Lud_HIOParam daNpc_Lud_Param_c::m = {
- 160.0f, -3.0f, 1.0f, 400.0f, 255.0f, 150.0f, 35.0f, 30.0f, 0.0f, 0.0f, 30.0f,
- -30.0f, 30.0f, -10.0f, 45.0f, -45.0f, 0.6f, 12.0f, 3, 6, 5, 6,
- 110.0f, 0.0f, 0.0f, 0.0f, 60, 8, 0, 0, 0, 0, 0,
- 4.0f, -15.0f, 0.0f, -15.0f, 15.0f, 40.0f, 15.0f, 90.0f, 1.0f,
-};
-
/* 80A6ACF4-80A6AFA8 000234 02B4+00 1/1 0/0 0/0 .text create__11daNpc_Lud_cFv */
int daNpc_Lud_c::create() {
static int const heapSize[9] = {
@@ -239,7 +291,7 @@ int daNpc_Lud_c::create() {
reset();
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this));
- mCcStts.Init(daNpc_Lud_Param_c::m.common.weight, 0, this);
+ mCcStts.Init(mpHIO->m.common.weight, 0, this);
mCyl.Set(mCcDCyl);
mCyl.SetStts(&mCcStts);
mCyl.SetTgHitCallback(tgHitCallBack);
@@ -485,10 +537,10 @@ void daNpc_Lud_c::setParam() {
selectAction();
srchActors();
- s16 talk_distance = daNpc_Lud_Param_c::m.common.talk_distance;
- s16 talk_angle = daNpc_Lud_Param_c::m.common.talk_angle;
- s16 attention_distance = daNpc_Lud_Param_c::m.common.attention_distance;
- s16 attention_angle = daNpc_Lud_Param_c::m.common.attention_angle;
+ s16 talk_distance = mpHIO->m.common.talk_distance;
+ s16 talk_angle = mpHIO->m.common.talk_angle;
+ s16 attention_distance = mpHIO->m.common.attention_distance;
+ s16 attention_angle = mpHIO->m.common.attention_angle;
switch (mType) {
case TYPE_0:
@@ -518,24 +570,23 @@ void daNpc_Lud_c::setParam() {
daNpcT_getDistTableIdx(talk_distance, talk_angle);
attention_info.flags = fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e;
- scale.set(daNpc_Lud_Param_c::m.common.scale, daNpc_Lud_Param_c::m.common.scale,
- daNpc_Lud_Param_c::m.common.scale);
- mCcStts.SetWeight(daNpc_Lud_Param_c::m.common.weight);
- mCylH = daNpc_Lud_Param_c::m.common.height;
- mWallR = daNpc_Lud_Param_c::m.common.width;
+ scale.set(mpHIO->m.common.scale, mpHIO->m.common.scale, mpHIO->m.common.scale);
+ mCcStts.SetWeight(mpHIO->m.common.weight);
+ mCylH = mpHIO->m.common.height;
+ mWallR = mpHIO->m.common.width;
if (mTwilight) {
mCylH = 120.0f;
}
- mAttnFovY = daNpc_Lud_Param_c::m.common.fov;
+ mAttnFovY = mpHIO->m.common.fov;
mAcchCir.SetWallR(mWallR);
- mAcchCir.SetWallH(daNpc_Lud_Param_c::m.common.knee_length);
- mRealShadowSize = daNpc_Lud_Param_c::m.common.real_shadow_size;
+ mAcchCir.SetWallH(mpHIO->m.common.knee_length);
+ mRealShadowSize = mpHIO->m.common.real_shadow_size;
if (mType == TYPE_4 || mType == TYPE_5 || mType == TYPE_6) {
mRealShadowSize = 500.0f;
}
- mExpressionMorfFrame = daNpc_Lud_Param_c::m.common.expression_morf_frame;
- mMorfFrames = daNpc_Lud_Param_c::m.common.morf_frame;
- gravity = daNpc_Lud_Param_c::m.common.gravity;
+ mExpressionMorfFrame = mpHIO->m.common.expression_morf_frame;
+ mMorfFrames = mpHIO->m.common.morf_frame;
+ gravity = mpHIO->m.common.gravity;
}
/* 80A6BD44-80A6BE6C 001284 0128+00 1/0 0/0 0/0 .text checkChangeEvt__11daNpc_Lud_cFv */
@@ -680,7 +731,7 @@ void daNpc_Lud_c::beforeMove() {
}
/* 80A70B64-80A70B68 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */
-static daNpc_Lud_Param_c l_HIO;
+NPC_LUD_HIO_CLASS l_HIO;
/* 80A6C3A8-80A6C8EC 0018E8 0544+00 1/0 0/0 0/0 .text setAttnPos__11daNpc_Lud_cFv */
void daNpc_Lud_c::setAttnPos() {
@@ -697,23 +748,23 @@ void daNpc_Lud_c::setAttnPos() {
if (mType == TYPE_4 || mType == TYPE_5 || mType == TYPE_6) {
mJntAnm.setParam(this, mpMorf[0]->getModel(), &cStack_70, getBackboneJointNo(),
- getNeckJointNo(), getHeadJointNo(), l_HIO.m.common.body_angleX_min,
- l_HIO.m.common.body_angleX_max, 0.0f, 0.0f, l_HIO.m.common.head_angleX_min,
- l_HIO.m.common.head_angleX_max, l_HIO.m.common.head_angleY_min,
- l_HIO.m.common.head_angleY_max, l_HIO.m.common.neck_rotation_ratio, dVar8,
- NULL);
+ getNeckJointNo(), getHeadJointNo(), mpHIO->m.common.body_angleX_min,
+ mpHIO->m.common.body_angleX_max, 0.0f, 0.0f,
+ mpHIO->m.common.head_angleX_min, mpHIO->m.common.head_angleX_max,
+ mpHIO->m.common.head_angleY_min, mpHIO->m.common.head_angleY_max,
+ mpHIO->m.common.neck_rotation_ratio, dVar8, NULL);
} else {
mJntAnm.setParam(this, mpMorf[0]->getModel(), &cStack_70, getBackboneJointNo(),
- getNeckJointNo(), getHeadJointNo(), l_HIO.m.common.body_angleX_min,
- l_HIO.m.common.body_angleX_max, l_HIO.m.common.body_angleY_min,
- l_HIO.m.common.body_angleY_max, l_HIO.m.common.head_angleX_min,
- l_HIO.m.common.head_angleX_max, l_HIO.m.common.head_angleY_min,
- l_HIO.m.common.head_angleY_max, l_HIO.m.common.neck_rotation_ratio, dVar8,
- NULL);
+ getNeckJointNo(), getHeadJointNo(), mpHIO->m.common.body_angleX_min,
+ mpHIO->m.common.body_angleX_max, mpHIO->m.common.body_angleY_min,
+ mpHIO->m.common.body_angleY_max, mpHIO->m.common.head_angleX_min,
+ mpHIO->m.common.head_angleX_max, mpHIO->m.common.head_angleY_min,
+ mpHIO->m.common.head_angleY_max, mpHIO->m.common.neck_rotation_ratio,
+ dVar8, NULL);
}
mJntAnm.calcJntRad(0.2f, 1.0f, dVar8);
- mpMorf[0]->setPlaySpeed(l_HIO.m.play_speed);
+ mpMorf[0]->setPlaySpeed(mpHIO->m.play_speed);
setMtx();
if (mpBowlMorf != NULL) {
@@ -746,7 +797,7 @@ void daNpc_Lud_c::setAttnPos() {
mDoMtx_stack_c::multVec(&cStack_70, &attention_info.position);
} else {
cStack_70.set(0.0f, 0.0f, 0.0f);
- cStack_70.y = l_HIO.m.common.attention_offset;
+ cStack_70.y = mpHIO->m.common.attention_offset;
mDoMtx_stack_c::YrotS(mCurAngle.y);
mDoMtx_stack_c::multVec(&cStack_70, &cStack_70);
attention_info.position = current.pos + cStack_70;
@@ -1309,13 +1360,10 @@ int daNpc_Lud_c::wait(void* param_0) {
fopAc_ac_c* actor_p = (daNpc_Len_c*)mActorMngr[2].getActorP();
if (actor_p != NULL &&
((daNpc_Len_c*)actor_p)
- ->checkStartDemo13StbEvt(this, daNpc_Lud_Param_c::m.common.box_min_x,
- daNpc_Lud_Param_c::m.common.box_min_y,
- daNpc_Lud_Param_c::m.common.box_min_z,
- daNpc_Lud_Param_c::m.common.box_max_x,
- daNpc_Lud_Param_c::m.common.box_max_y,
- daNpc_Lud_Param_c::m.common.box_max_z,
- daNpc_Lud_Param_c::m.common.box_offset))
+ ->checkStartDemo13StbEvt(this, mpHIO->m.common.box_min_x,
+ mpHIO->m.common.box_min_y, mpHIO->m.common.box_min_z,
+ mpHIO->m.common.box_max_x, mpHIO->m.common.box_max_y,
+ mpHIO->m.common.box_max_z, mpHIO->m.common.box_offset))
{
mEvtNo = 2;
field_0xfd5 = 1;
diff --git a/src/d/actor/d_a_npc_moi.cpp b/src/d/actor/d_a_npc_moi.cpp
index 900bd1a11e..670a4a8787 100644
--- a/src/d/actor/d_a_npc_moi.cpp
+++ b/src/d/actor/d_a_npc_moi.cpp
@@ -3,7 +3,7 @@
*
*/
-#include "d/dolzel_rel.h" // IWYU pragma: keep
+#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "SSystem/SComponent/c_counter.h"
#include "Z2AudioLib/Z2Instances.h"
@@ -11,6 +11,80 @@
#include "d/actor/d_a_npc_moi.h"
#include "d/actor/d_a_npc_uri.h"
+/* 80A7AEF0-80A7AFAC 000000 00BC+00 19/19 0/0 0/0 .rodata m__17daNpc_Moi_Param_c */
+const daNpc_Moi_HIOParam daNpc_Moi_Param_c::m = {
+ 200.0f, // attention_offset
+ -3.0f, // gravity
+ 1.0f, // scale
+ 400.0f, // real_shadow_size
+ 255.0f, // weight
+ 180.0f, // height
+ 35.0f, // knee_length
+ 30.0f, // width
+ 0.0f, // body_angleX_max
+ 0.0f, // body_angleX_min
+ 10.0f, // body_angleY_max
+ -10.0f, // body_angleY_min
+ 30.0f, // head_angleX_max
+ -10.0f, // head_angleX_min
+ 45.0f, // head_angleY_max
+ -45.0f, // head_angleY_min
+ 0.6f, // neck_rotation_ratio
+ 12.0f, // morf_frame
+ 3, // talk_distance
+ 6, // talk_angle
+ 5, // attention_distance
+ 6, // attention_angle
+ 110.0f, // fov
+ 0.0f, // search_distance
+ 0.0f, // search_height
+ 0.0f, // search_depth
+ 60, // attention_time
+ 8, // damage_time
+ 0, // face_expression
+ 0, // motion
+ 0, // look_mode
+ 0, // debug_mode_ON
+ 0, // debug_info_ON
+ 4.0f, // expression_morf_frame
+ 0.0f, // box_min_x
+ 0.0f, // box_min_y
+ 0.0f, // box_min_z
+ 0.0f, // box_max_x
+ 0.0f, // box_max_y
+ 0.0f, // box_max_z
+ 0.0f, // box_offset
+ 350.0f, // field_0x8c
+ 300.0f, // field_0x90
+ -100.0f, // field_0x94
+ 90, // field_0x98
+ 200, // field_0x9a
+ 235, // field_0x9c
+ 125, // field_0x9e
+ 0, // field_0xa0
+ 0, // field_0xa2
+ 1.0f, // field_0xa4
+ 1000.0f, // field_0xa8
+ 300.0f, // field_0xac
+ -300.0f, // field_0xb0
+ 30.0f, // field_0xb4
+ 60.0f, // field_0xb8
+};
+
+#if DEBUG
+daNpc_Moi_HIO_c::daNpc_Moi_HIO_c() {
+ m = daNpc_Moi_Param_c::m;
+}
+
+void daNpc_Moi_HIO_c::listenPropertyEvent(const JORPropertyEvent* event) {
+ // TODO
+}
+
+void daNpc_Moi_HIO_c::genMessage(JORMContext* ctext) {
+ // TODO
+}
+#endif
+
/* 80A7B17C-80A7B1BC 000020 0040+00 1/1 0/0 0/0 .data l_bmdData */
static int l_bmdData[8][2] = {
{11, 1}, {29, 3}, {30, 3}, {31, 3}, {13, 1}, {33, 3}, {12, 1}, {32, 3},
@@ -193,17 +267,6 @@ daNpc_Moi_c::~daNpc_Moi_c() {
deleteRes(l_loadResPtrnList[mType], (char const**)l_resNameList);
}
-/* 80A7AEF0-80A7AFAC 000000 00BC+00 19/19 0/0 0/0 .rodata m__17daNpc_Moi_Param_c */
-const daNpc_Moi_HIOParam daNpc_Moi_Param_c::m = {
- 200.0f, -3.0f, 1.0f, 400.0f, 255.0f, 180.0f, 35.0f, 30.0f, 0.0f, 0.0f, 10.0f,
- -10.0f, 30.0f, -10.0f, 45.0f, -45.0f, 0.6f, 12.0f, 3, 6, 5, 6,
- 110.0f, 0.0f, 0.0f, 0.0f, 60, 8, 0, 0, 0, 0, 0,
- 4.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0x43, 0xAF, 0x00,
- 0x00, 0x43, 0x96, 0x00, 0x00, 0xC2, 0xC8, 0x00, 0x00, 90, 200,
- 235, 125, 0, 0, 1.0f, 0x44, 0x7A, 0x00, 0x00, 0x43, 0x96,
- 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00, 30.0f, 60.0f,
-};
-
/* 80A74150-80A74474 0002F0 0324+00 1/1 0/0 0/0 .text create__11daNpc_Moi_cFv */
int daNpc_Moi_c::create() {
static const int heapSize[] = {0, 0x5C70, 0x7CB0, 0x7CA0, 0x5C70, 0x5C80, 0};
@@ -234,7 +297,7 @@ int daNpc_Moi_c::create() {
reset();
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this));
- mCcStts.Init(daNpc_Moi_Param_c::m.common.weight, 0, this);
+ mCcStts.Init(mpHIO->m.common.weight, 0, this);
for (int i = 0; i < 4; i++) {
mCyl[i].Set(mCcDCyl);
mCyl[i].SetStts(&mCcStts);
@@ -358,11 +421,11 @@ int daNpc_Moi_c::Draw() {
actor->field_0x634 = field_0x1628;
actor->current.pos = field_0x1628;
GXColor color;
- color.r = daNpc_Moi_Param_c::m.field_0x9c;
- color.g = daNpc_Moi_Param_c::m.field_0x9e;
- color.b = daNpc_Moi_Param_c::m.field_0xa0;
+ color.r = mpHIO->m.field_0x9c;
+ color.g = mpHIO->m.field_0x9e;
+ color.b = mpHIO->m.field_0xa0;
color.a = (u8)actor->field_0x5c0;
- dKy_BossLight_set(&field_0x1628, &color, daNpc_Moi_Param_c::m.field_0xa4, 1);
+ dKy_BossLight_set(&field_0x1628, &color, mpHIO->m.field_0xa4, 1);
}
}
@@ -535,10 +598,10 @@ void daNpc_Moi_c::setParam() {
srchActors();
int uVar5 = (fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e);
- s16 talk_distance = daNpc_Moi_Param_c::m.common.talk_distance;
- s16 talk_angle = daNpc_Moi_Param_c::m.common.talk_angle;
- s16 attention_distance = daNpc_Moi_Param_c::m.common.attention_distance;
- s16 attention_angle = daNpc_Moi_Param_c::m.common.attention_angle;
+ s16 talk_distance = mpHIO->m.common.talk_distance;
+ s16 talk_angle = mpHIO->m.common.talk_angle;
+ s16 attention_distance = mpHIO->m.common.attention_distance;
+ s16 attention_angle = mpHIO->m.common.attention_angle;
if (mType == TYPE_2) {
if (field_0x166d) {
@@ -584,18 +647,17 @@ void daNpc_Moi_c::setParam() {
attention_info.flags = uVar5;
}
- scale.set(daNpc_Moi_Param_c::m.common.scale, daNpc_Moi_Param_c::m.common.scale,
- daNpc_Moi_Param_c::m.common.scale);
- mCcStts.SetWeight(daNpc_Moi_Param_c::m.common.weight);
- mCylH = daNpc_Moi_Param_c::m.common.height;
- mWallR = daNpc_Moi_Param_c::m.common.width;
- mAttnFovY = daNpc_Moi_Param_c::m.common.fov;
+ scale.set(mpHIO->m.common.scale, mpHIO->m.common.scale, mpHIO->m.common.scale);
+ mCcStts.SetWeight(mpHIO->m.common.weight);
+ mCylH = mpHIO->m.common.height;
+ mWallR = mpHIO->m.common.width;
+ mAttnFovY = mpHIO->m.common.fov;
if (mType == TYPE_2) {
mAttnFovY = 135.0f;
}
mAcchCir.SetWallR(mWallR);
- mAcchCir.SetWallH(daNpc_Moi_Param_c::m.common.knee_length);
- mRealShadowSize = daNpc_Moi_Param_c::m.common.real_shadow_size;
+ mAcchCir.SetWallH(mpHIO->m.common.knee_length);
+ mRealShadowSize = mpHIO->m.common.real_shadow_size;
if (mType == TYPE_1) {
mRealShadowSize = 600.0f;
} else if (mType == TYPE_2) {
@@ -604,9 +666,9 @@ void daNpc_Moi_c::setParam() {
mRealShadowSize = 800.0f;
}
}
- gravity = daNpc_Moi_Param_c::m.common.gravity;
- mExpressionMorfFrame = daNpc_Moi_Param_c::m.common.expression_morf_frame;
- mMorfFrames = daNpc_Moi_Param_c::m.common.morf_frame;
+ gravity = mpHIO->m.common.gravity;
+ mExpressionMorfFrame = mpHIO->m.common.expression_morf_frame;
+ mMorfFrames = mpHIO->m.common.morf_frame;
if (mType == TYPE_3) {
mAcch.SetGrndNone();
mAcch.SetWallNone();
@@ -762,7 +824,7 @@ void daNpc_Moi_c::beforeMove() {
}
/* 80A7BFF4-80A7BFF8 000054 0004+00 1/1 0/0 0/0 .bss l_HIO */
-static daNpc_Moi_Param_c l_HIO;
+NPC_MOI_HIO_CLASS l_HIO;
/* 80A75AB8-80A75E68 001C58 03B0+00 1/0 0/0 0/0 .text setAttnPos__11daNpc_Moi_cFv */
void daNpc_Moi_c::setAttnPos() {
@@ -775,15 +837,15 @@ void daNpc_Moi_c::setAttnPos() {
if (mType == 3) {
mJntAnm.setParam(this, mpMorf[0]->getModel(), &acStack_3c, getBackboneJointNo(),
getNeckJointNo(), getHeadJointNo(), 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
- 0.0f, 0.0f, l_HIO.m.common.neck_rotation_ratio, dVar6, NULL);
+ 0.0f, 0.0f, mpHIO->m.common.neck_rotation_ratio, dVar6, NULL);
} else {
mJntAnm.setParam(this, mpMorf[0]->getModel(), &acStack_3c, getBackboneJointNo(),
- getNeckJointNo(), getHeadJointNo(), l_HIO.m.common.body_angleX_min,
- l_HIO.m.common.body_angleX_max, l_HIO.m.common.body_angleY_min,
- l_HIO.m.common.body_angleY_max, l_HIO.m.common.head_angleX_min,
- l_HIO.m.common.head_angleX_max, l_HIO.m.common.head_angleY_min,
- l_HIO.m.common.head_angleY_max, l_HIO.m.common.neck_rotation_ratio, dVar6,
- NULL);
+ getNeckJointNo(), getHeadJointNo(), mpHIO->m.common.body_angleX_min,
+ mpHIO->m.common.body_angleX_max, mpHIO->m.common.body_angleY_min,
+ mpHIO->m.common.body_angleY_max, mpHIO->m.common.head_angleX_min,
+ mpHIO->m.common.head_angleX_max, mpHIO->m.common.head_angleY_min,
+ mpHIO->m.common.head_angleY_max, mpHIO->m.common.neck_rotation_ratio,
+ dVar6, NULL);
}
mJntAnm.calcJntRad(0.2f, 1.0f, dVar6);
@@ -795,7 +857,7 @@ void daNpc_Moi_c::setAttnPos() {
mJntAnm.setEyeAngleY(eyePos, mCurAngle.y + field_0xd8a.y, 1, 1.0f, 0);
acStack_3c.set(0.0f, 0.0f, 0.0f);
- acStack_3c.y = l_HIO.m.common.attention_offset;
+ acStack_3c.y = mpHIO->m.common.attention_offset;
if (mType == TYPE_3) {
acStack_3c.set(0.0f, 140.0f, -60.0f);
@@ -1052,10 +1114,10 @@ void daNpc_Moi_c::setSSlash(int param_1) {
mSound.startCreatureVoice(JAISoundID(Z2SE_MOI_V_WOUND_SWING), -1);
}
field_0x1664 = fopAcM_searchPlayerAngleY(this);
- s16 iVar3 = cM_deg2s(daNpc_Moi_Param_c::m.field_0xb8);
- daPy_getPlayerActorClass()->setThrowDamage(
- fopAcM_searchPlayerAngleY(this), daNpc_Moi_Param_c::m.field_0xb4 * cM_scos(iVar3),
- daNpc_Moi_Param_c::m.field_0xb4 * cM_ssin(iVar3), 1, 0, 0);
+ s16 iVar3 = cM_deg2s(mpHIO->m.field_0xb8);
+ daPy_getPlayerActorClass()->setThrowDamage(fopAcM_searchPlayerAngleY(this),
+ mpHIO->m.field_0xb4 * cM_scos(iVar3),
+ mpHIO->m.field_0xb4 * cM_ssin(iVar3), 1, 0, 0);
if (param_1 != 0) {
field_0x1660 = 1;
field_0x165c = 202;
@@ -1679,7 +1741,7 @@ int daNpc_Moi_c::cutFindWolf(int param_1) {
/* 80A789D8-80A78E0C 004B78 0434+00 2/0 0/0 0/0 .text wait__11daNpc_Moi_cFPv */
int daNpc_Moi_c::wait(void* param_1) {
- int iVar4 = daNpc_Moi_Param_c::m.field_0x98;
+ int iVar4 = mpHIO->m.field_0x98;
switch (mMode) {
case MODE_ENTER:
@@ -1793,7 +1855,7 @@ int daNpc_Moi_c::walk(void* param_1) {
/* 80A78FF4-80A794C0 005194 04CC+00 1/0 0/0 0/0 .text walkOnEggshell__11daNpc_Moi_cFPv */
int daNpc_Moi_c::walkOnEggshell(void* param_1) {
- int sVar1 = daNpc_Moi_Param_c::m.field_0x9a;
+ int sVar1 = mpHIO->m.field_0x9a;
switch (mMode) {
case MODE_ENTER:
diff --git a/src/d/actor/d_a_npc_shad.cpp b/src/d/actor/d_a_npc_shad.cpp
index 2732feeb40..560306d994 100644
--- a/src/d/actor/d_a_npc_shad.cpp
+++ b/src/d/actor/d_a_npc_shad.cpp
@@ -11,6 +11,54 @@
#include "d/actor/d_a_tag_evtarea.h"
#include "d/d_msg_object.h"
+/* 80AE1FDC-80AE204C 000000 0070+00 19/19 0/0 0/0 .rodata m__17daNpcShad_Param_c */
+const daNpcShad_HIOParam daNpcShad_Param_c::m = {
+ 35.0f, // attention_offset
+ -3.0f, // gravity
+ 1.0f, // scale
+ 400.0f, // real_shadow_size
+ 255.0f, // weight
+ 200.0f, // height
+ 35.0f, // knee_length
+ 30.0f, // width
+ 0.0f, // body_angleX_max
+ 0.0f, // body_angleX_min
+ 45.0f, // body_angleY_max
+ -45.0f, // body_angleY_min
+ 30.0f, // head_angleX_max
+ -10.0f, // head_angleX_min
+ 40.0f, // head_angleY_max
+ -40.0f, // head_angleY_min
+ 0.6f, // neck_rotation_ratio
+ 12.0f, // morf_frame
+ 3, // talk_distance
+ 6, // talk_angle
+ 5, // attention_distance
+ 6, // attention_angle
+ 80.0f, // fov
+ 500.0f, // search_distance
+ 300.0f, // search_height
+ -300.0f, // search_depth
+ 60, // attention_time
+ 8, // damage_time
+ 0, // face_expression
+ 0, // motion
+ 0, // look_mode
+ false, // debug_mode_ON
+ false, // debug_info_ON
+ 12.0f, // traveling_speed
+};
+
+#if DEBUG
+daNpcShad_HIO_c::daNpcShad_HIO_c() {
+ m = daNpcShad_Param_c::m;
+}
+
+void daNpcShad_HIO_c::genMessage(JORMContext* ctext) {
+ // TODO
+}
+#endif
+
enum Shad_RES_File_ID {
/* BCK */
/* 0x07 */ BCK_SHAD_F_DISCOURAGED = 0x7,
@@ -272,7 +320,7 @@ static char* l_evtArcs[14] = {
static char* l_myName = "Shad";
/* 80AE2CC4-80AE2CC8 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */
-static daNpcShad_Param_c l_HIO;
+NPC_SHAD_HIO_CLASS l_HIO;
/* 80AE2A00-80AE2AA8 0003E0 00A8+00 0/2 0/0 0/0 .data mEvtSeqList__11daNpcShad_c */
daNpcShad_c::EventFn daNpcShad_c::mEvtSeqList[14] = {
@@ -292,44 +340,6 @@ daNpcShad_c::EventFn daNpcShad_c::mEvtSeqList[14] = {
&daNpcShad_c::EvCut_WiretapEntrant,
};
-/* 80AE1FDC-80AE204C 000000 0070+00 19/19 0/0 0/0 .rodata m__17daNpcShad_Param_c */
-const daNpcShad_HIOParam daNpcShad_Param_c::m = {
- 35.0f,
- -3.0f,
- 1.0f,
- 400.0f,
- 255.0f,
- 200.0f,
- 35.0f,
- 30.0f,
- 0.0f,
- 0.0f,
- 45.0f,
- -45.0f,
- 30.0f,
- -10.0f,
- 40.0f,
- -40.0f,
- 0.6f,
- 12.0f,
- 3,
- 6,
- 5,
- 6,
- 80.0f,
- 500.0f,
- 300.0f,
- -300.0f,
- 60,
- 8,
- 0,
- 0,
- 0,
- false,
- false,
- 12.0f,
-};
-
daNpcShad_c::daNpcShad_c() {
// empty function
}
@@ -447,13 +457,13 @@ cPhs__Step daNpcShad_c::Create() {
fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
fopAcM_setCullSizeBox(this, -100.0f, -50.0f, -100.0f, 100.0f, 220.0f, 100.0f);
mSound.init(&current.pos, &eyePos, 3, 1);
- mAcchCir.SetWall(daNpcShad_Param_c::m.common.width, daNpcShad_Param_c::m.common.knee_length);
+ mAcchCir.SetWall(mpHIO->m.common.width, mpHIO->m.common.knee_length);
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this));
mAcch.SetRoofNone();
mAcch.SetWaterNone();
mAcch.CrrPos(dComIfG_Bgsp());
- mCcStts.Init(daNpcShad_Param_c::m.common.weight, 0, this);
+ mCcStts.Init(mpHIO->m.common.weight, 0, this);
field_0xcb0.Set(mCcDCyl);
field_0xcb0.SetStts(&mCcStts);
@@ -567,7 +577,7 @@ int daNpcShad_c::Draw() {
}
mpMorf->getModel()->getModelData()->getMaterialNodePointer(1)->setMaterialAnm(mpMatAnm);
- draw(FALSE, FALSE, daNpcShad_Param_c::m.common.real_shadow_size, NULL, FALSE);
+ draw(FALSE, FALSE, mpHIO->m.common.real_shadow_size, NULL, FALSE);
if (mBookKnifeModel != NULL) {
g_env_light.setLightTevColorType_MAJI(mBookKnifeModel, &tevStr);
@@ -606,7 +616,7 @@ int daNpcShad_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
case JNT_BACKBONE1:
case JNT_NECK:
case JNT_HEAD:
- setLookatMtx(jntNo, lookatJoints, daNpcShad_Param_c::m.common.neck_rotation_ratio);
+ setLookatMtx(jntNo, lookatJoints, mpHIO->m.common.neck_rotation_ratio);
break;
}
@@ -825,9 +835,9 @@ void daNpcShad_c::reset() {
attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
attention_info.distances[fopAc_attn_SPEAK_e] = getDistTableIdx(2, 3);
} else {
- attention_info.distances[fopAc_attn_LOCK_e] = getDistTableIdx(daNpcShad_Param_c::m.common.attention_distance, daNpcShad_Param_c::m.common.attention_angle);
+ attention_info.distances[fopAc_attn_LOCK_e] = getDistTableIdx(mpHIO->m.common.attention_distance, mpHIO->m.common.attention_angle);
attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
- attention_info.distances[fopAc_attn_SPEAK_e] = getDistTableIdx(daNpcShad_Param_c::m.common.talk_distance, daNpcShad_Param_c::m.common.talk_angle);
+ attention_info.distances[fopAc_attn_SPEAK_e] = getDistTableIdx(mpHIO->m.common.talk_distance, mpHIO->m.common.talk_angle);
}
current.pos = home.pos;
@@ -898,18 +908,18 @@ inline bool daNpcShad_c::isSneaking() {
/* 80AE0B58-80AE0ED0 008A38 0378+00 1/1 0/0 0/0 .text playExpression__11daNpcShad_cFv */
inline void daNpcShad_c::playExpression() {
- daNpcF_anmPlayData dat0 = {ANM_F_TALK_A, daNpcShad_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData dat0 = {ANM_F_TALK_A, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat0[1] = {&dat0};
- daNpcF_anmPlayData dat1a = {ANM_F_HAPPY, daNpcShad_Param_c::m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat1a = {ANM_F_HAPPY, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData dat1b = {ANM_FH_HAPPY, 0.0f, 0};
daNpcF_anmPlayData* pDat1[2] = {&dat1a, &dat1b};
- daNpcF_anmPlayData dat2a = {ANM_F_ANGER, daNpcShad_Param_c::m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat2a = {ANM_F_ANGER, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData dat2b = {ANM_FH_ANGER, 0.0f, 0};
daNpcF_anmPlayData* pDat2[2] = {&dat2a, &dat2b};
- daNpcF_anmPlayData dat3a = {ANM_F_DISCOURAGED, daNpcShad_Param_c::m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat3a = {ANM_F_DISCOURAGED, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData dat3b = {ANM_FH_DISCOURAGED, 0.0f, 0};
daNpcF_anmPlayData* pDat3[2] = {&dat3a, &dat3b};
- daNpcF_anmPlayData dat4 = {ANM_F_KOMON, daNpcShad_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData dat4 = {ANM_F_KOMON, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat4[1] = {&dat4};
daNpcF_anmPlayData dat5 = {ANM_F_SURPRISE, 0.0f, 0};
daNpcF_anmPlayData* pDat5[1] = {&dat5};
@@ -923,9 +933,9 @@ inline void daNpcShad_c::playExpression() {
daNpcF_anmPlayData* pDat9[1] = {&dat9};
daNpcF_anmPlayData dat10 = {ANM_FH_DISCOURAGED, 0.0f, 0};
daNpcF_anmPlayData* pDat10[1] = {&dat10};
- daNpcF_anmPlayData dat11 = {ANM_F_CHANT, daNpcShad_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData dat11 = {ANM_F_CHANT, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat11[1] = {&dat11};
- daNpcF_anmPlayData dat12 = {ANM_NONE, daNpcShad_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData dat12 = {ANM_NONE, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat12[1] = {&dat12};
daNpcF_anmPlayData** ppDat[13] = {
pDat0, pDat1, pDat2, pDat3, pDat4,
@@ -940,52 +950,52 @@ inline void daNpcShad_c::playExpression() {
/* 80AE04D8-80AE0B58 0083B8 0680+00 1/1 0/0 0/0 .text playMotion__11daNpcShad_cFv */
inline void daNpcShad_c::playMotion() {
- daNpcF_anmPlayData dat0 = {ANM_WAIT_A, daNpcShad_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData dat0 = {ANM_WAIT_A, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat0[1] = {&dat0};
- daNpcF_anmPlayData dat1a = {ANM_BOOK_TALK_A, daNpcShad_Param_c::m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat1a = {ANM_BOOK_TALK_A, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData dat1b = {ANM_BOOK_WAIT, 0.0f, 0};
daNpcF_anmPlayData* pDat1[2] = {&dat1a, &dat1b};
- daNpcF_anmPlayData dat2 = {ANM_BOOK_WAIT, daNpcShad_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData dat2 = {ANM_BOOK_WAIT, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat2[1] = {&dat2};
- daNpcF_anmPlayData dat3a = {ANM_HI, daNpcShad_Param_c::m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat3a = {ANM_HI, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData dat3b = {ANM_WAIT_A, 0.0f, 0};
daNpcF_anmPlayData* pDat3[2] = {&dat3a, &dat3b};
- daNpcF_anmPlayData dat4 = {ANM_SIT_A, daNpcShad_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData dat4 = {ANM_SIT_A, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat4[1] = {&dat4};
- daNpcF_anmPlayData dat5a = {ANM_LOOKBACK, daNpcShad_Param_c::m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat5a = {ANM_LOOKBACK, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData dat5b = {ANM_WAIT_A, 0.0f, 0};
daNpcF_anmPlayData* pDat5[2] = {&dat5a, &dat5b};
- daNpcF_anmPlayData dat6a = {ANM_DISCOURAGED, daNpcShad_Param_c::m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat6a = {ANM_DISCOURAGED, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData dat6b = {ANM_DISCOURAGED_WAIT, 0.0f, 0};
daNpcF_anmPlayData* pDat6[2] = {&dat6a, &dat6b};
- daNpcF_anmPlayData dat7 = {ANM_DISCOURAGED_WAIT, daNpcShad_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData dat7 = {ANM_DISCOURAGED_WAIT, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat7[1] = {&dat7};
- daNpcF_anmPlayData dat8a = {ANM_TALK_A, daNpcShad_Param_c::m.common.morf_frame, 1};
- daNpcF_anmPlayData dat8b = {ANM_WAIT_A, daNpcShad_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData dat8a = {ANM_TALK_A, mpHIO->m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat8b = {ANM_WAIT_A, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat8[2] = {&dat8a, &dat8b};
- daNpcF_anmPlayData dat9a = {ANM_SITTALK_A, daNpcShad_Param_c::m.common.morf_frame, 1};
- daNpcF_anmPlayData dat9b = {ANM_SIT_A, daNpcShad_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData dat9a = {ANM_SITTALK_A, mpHIO->m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat9b = {ANM_SIT_A, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat9[2] = {&dat9a, &dat9b};
- daNpcF_anmPlayData dat10a = {ANM_LOOK, daNpcShad_Param_c::m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat10a = {ANM_LOOK, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData dat10b = {ANM_LOOK_WAIT, 0.0f, 0};
daNpcF_anmPlayData* pDat10[2] = {&dat10a, &dat10b};
- daNpcF_anmPlayData dat11a = {ANM_TAKE_KOMON, daNpcShad_Param_c::m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat11a = {ANM_TAKE_KOMON, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData dat11b = {ANM_READ_KOMON, 0.0f, 0};
daNpcF_anmPlayData* pDat11[2] = {&dat11a, &dat11b};
- daNpcF_anmPlayData dat12 = {ANM_READ_KOMON, daNpcShad_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData dat12 = {ANM_READ_KOMON, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat12[1] = {&dat12};
- daNpcF_anmPlayData dat13 = {ANM_LOOK_WAIT, daNpcShad_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData dat13 = {ANM_LOOK_WAIT, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat13[1] = {&dat13};
- daNpcF_anmPlayData dat14a = {ANM_SURPRISE, daNpcShad_Param_c::m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat14a = {ANM_SURPRISE, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData dat14b = {ANM_SURPRISE_WAIT, 0.0f, 0};
daNpcF_anmPlayData* pDat14[2] = {&dat14a, &dat14b};
- daNpcF_anmPlayData dat15 = {ANM_SURPRISE_WAIT, daNpcShad_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData dat15 = {ANM_SURPRISE_WAIT, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat15[1] = {&dat15};
- daNpcF_anmPlayData dat16 = {ANM_LOOKUP, daNpcShad_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData dat16 = {ANM_LOOKUP, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat16[1] = {&dat16};
- daNpcF_anmPlayData dat17 = {ANM_SAD_WALK, daNpcShad_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData dat17 = {ANM_SAD_WALK, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat17[1] = {&dat17};
- daNpcF_anmPlayData dat18 = {ANM_CHANT, daNpcShad_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData dat18 = {ANM_CHANT, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat18[1] = {&dat18};
daNpcF_anmPlayData dat19 = {ANM_RUN_A, 4.0f, 0};
daNpcF_anmPlayData* pDat19[1] = {&dat19};
@@ -1013,27 +1023,27 @@ inline void daNpcShad_c::lookat() {
daPy_py_c* player = NULL;
J3DModel* model = mpMorf->getModel();
int iVar1 = 0;
- f32 body_angleX_min = daNpcShad_Param_c::m.common.body_angleX_min;
- f32 body_angleX_max = daNpcShad_Param_c::m.common.body_angleX_max;
+ f32 body_angleX_min = mpHIO->m.common.body_angleX_min;
+ f32 body_angleX_max = mpHIO->m.common.body_angleX_max;
f32 body_angleY_min;
if (mMode == 1) {
body_angleY_min = -30.0f;
} else {
- body_angleY_min = daNpcShad_Param_c::m.common.body_angleY_min;
+ body_angleY_min = mpHIO->m.common.body_angleY_min;
}
f32 body_angleY_max;
if (mMode == 1) {
body_angleY_max = 30.0f;
} else {
- body_angleY_max = daNpcShad_Param_c::m.common.body_angleY_max;
+ body_angleY_max = mpHIO->m.common.body_angleY_max;
}
- f32 head_angleX_min = daNpcShad_Param_c::m.common.head_angleX_min;
- f32 head_angleX_max = daNpcShad_Param_c::m.common.head_angleX_max;
- f32 head_angleY_min = daNpcShad_Param_c::m.common.head_angleY_min;
- f32 head_angleY_max = daNpcShad_Param_c::m.common.head_angleY_max;
+ f32 head_angleX_min = mpHIO->m.common.head_angleX_min;
+ f32 head_angleX_max = mpHIO->m.common.head_angleX_max;
+ f32 head_angleY_min = mpHIO->m.common.head_angleY_min;
+ f32 head_angleY_max = mpHIO->m.common.head_angleY_max;
s16 sVar1 = mCurAngle.y - mOldAngle.y;
cXyz spf0[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]};
@@ -1082,7 +1092,7 @@ inline BOOL daNpcShad_c::chkFindPlayer() {
if (mMode == 0) {
fVar1 = 135.0f;
} else {
- fVar1 = daNpcShad_Param_c::m.common.fov;
+ fVar1 = mpHIO->m.common.fov;
}
if (!chkActorInSight(daPy_getPlayerActorClass(), fVar1)) {
@@ -1288,7 +1298,7 @@ bool daNpcShad_c::wait_type1(void* param_1) {
setLookMode(LOOK_PLAYER, NULL, NULL);
if (mCurAngle.y == field_0xe1c) {
- if (fopAcM_seenPlayerAngleY(this) > cM_deg2s(daNpcShad_Param_c::m.common.body_angleY_max + daNpcShad_Param_c::m.common.head_angleY_max)) {
+ if (fopAcM_seenPlayerAngleY(this) > cM_deg2s(mpHIO->m.common.body_angleY_max + mpHIO->m.common.head_angleY_max)) {
field_0xe1c = fopAcM_searchPlayerAngleY(this);
}
} else if (step(field_0xe1c, MOT_STEPB, 30.0f)) {
@@ -1316,7 +1326,7 @@ bool daNpcShad_c::wait_type1(void* param_1) {
setLookMode(LOOK_PLAYER, NULL, NULL);
if (mCurAngle.y == field_0xe1c) {
- if (fopAcM_seenPlayerAngleY(this) > cM_deg2s(daNpcShad_Param_c::m.common.body_angleY_max + daNpcShad_Param_c::m.common.head_angleY_max)) {
+ if (fopAcM_seenPlayerAngleY(this) > cM_deg2s(mpHIO->m.common.body_angleY_max + mpHIO->m.common.head_angleY_max)) {
field_0xe1c = fopAcM_searchPlayerAngleY(this);
}
} else if (step(field_0xe1c, MOT_STEPB, 30.0f)) {
@@ -1622,7 +1632,7 @@ bool daNpcShad_c::leave(void* param_1) {
setExpression(EXPR_NONE, -1.0f);
setMotion(MOT_RUN_A, -1.0f, FALSE);
mTurnMode = 0;
- speedF = daNpcShad_Param_c::m.traveling_speed;
+ speedF = mpHIO->m.traveling_speed;
field_0xe1a = 2;
break;
@@ -2582,14 +2592,14 @@ void daNpcShad_c::setParam() {
attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
attention_info.distances[fopAc_attn_SPEAK_e] = getDistTableIdx(2, 5);
} else {
- attention_info.distances[fopAc_attn_LOCK_e] = getDistTableIdx(daNpcShad_Param_c::m.common.attention_distance, daNpcShad_Param_c::m.common.attention_angle);
+ attention_info.distances[fopAc_attn_LOCK_e] = getDistTableIdx(mpHIO->m.common.attention_distance, mpHIO->m.common.attention_angle);
attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
- attention_info.distances[fopAc_attn_SPEAK_e] = getDistTableIdx(daNpcShad_Param_c::m.common.talk_distance, daNpcShad_Param_c::m.common.talk_angle);
+ attention_info.distances[fopAc_attn_SPEAK_e] = getDistTableIdx(mpHIO->m.common.talk_distance, mpHIO->m.common.talk_angle);
}
- mAcchCir.SetWallR(daNpcShad_Param_c::m.common.width);
- mAcchCir.SetWallH(daNpcShad_Param_c::m.common.knee_length);
- gravity = daNpcShad_Param_c::m.common.gravity;
+ mAcchCir.SetWallR(mpHIO->m.common.width);
+ mAcchCir.SetWallH(mpHIO->m.common.knee_length);
+ gravity = mpHIO->m.common.gravity;
}
/* 80AE0438-80AE04D8 008318 00A0+00 1/0 0/0 0/0 .text main__11daNpcShad_cFv */
@@ -2658,20 +2668,20 @@ inline void daNpcShad_c::setAttnPos() {
mEyeAngle.x = 0;
}
- attention_info.position.set(mHeadPos.x, mHeadPos.y + daNpcShad_Param_c::m.common.attention_offset, mHeadPos.z);
+ attention_info.position.set(mHeadPos.x, mHeadPos.y + mpHIO->m.common.attention_offset, mHeadPos.z);
cXyz sp58;
mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_BACKBONE2));
mDoMtx_stack_c::multVecZero(&sp58);
sp58.y = current.pos.y;
field_0xcb0.SetC(sp58);
- field_0xcb0.SetH(daNpcShad_Param_c::m.common.height);
+ field_0xcb0.SetH(mpHIO->m.common.height);
f32 fVar1;
if (mMode == 0) {
fVar1 = 45.0f;
} else {
- fVar1 = daNpcShad_Param_c::m.common.width;
+ fVar1 = mpHIO->m.common.width;
}
field_0xcb0.SetR(fVar1);
diff --git a/src/d/actor/d_a_npc_shoe.cpp b/src/d/actor/d_a_npc_shoe.cpp
index 8b82179a45..46fec85fb4 100644
--- a/src/d/actor/d_a_npc_shoe.cpp
+++ b/src/d/actor/d_a_npc_shoe.cpp
@@ -1,18 +1,60 @@
/**
* @file d_a_npc_shoe.cpp
- *
-*/
+ *
+ */
-#include "d/dolzel_rel.h" // IWYU pragma: keep
+#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "d/actor/d_a_npc_shoe.h"
-#include "dol2asm.h"
-//
-// Declarations:
-//
+/* 80AEA3B0-80AEA41C 000000 006C+00 11/11 0/0 0/0 .rodata m__17daNpcShoe_Param_c */
+const daNpcShoe_HIOParam daNpcShoe_Param_c::m = {
+ 55.0f, // attention_offset
+ -3.0f, // gravity
+ 1.0f, // scale
+ 300.0f, // real_shadow_size
+ 255.0f, // weight
+ 140.0f, // height
+ 35.0f, // knee_length
+ 30.0f, // width
+ 0.0f, // body_angleX_max
+ 0.0f, // body_angleX_min
+ 10.0f, // body_angleY_max
+ -10.0f, // body_angleY_min
+ 30.0f, // head_angleX_max
+ -10.0f, // head_angleX_min
+ 45.0f, // head_angleY_max
+ -45.0f, // head_angleY_min
+ 0.6f, // neck_rotation_ratio
+ 12.0f, // morf_frame
+ 2, // talk_distance
+ 2, // talk_angle
+ 3, // attention_distance
+ 2, // attention_angle
+ 60.0f, // fov
+ 500.0f, // search_distance
+ 300.0f, // search_height
+ -300.0f, // search_depth
+ 60, // attention_time
+ 0, // damage_time
+ 0, // face_expression
+ 0, // motion
+ 0, // look_mode
+ 0, // debug_mode_ON
+ 0, // debug_info_ON
+};
+
+#if DEBUG
+daNpcShoe_HIO_c::daNpcShoe_HIO_c() {
+ m = daNpcShoe_Param_c::m;
+}
+
+void daNpcShoe_HIO_c::genMessage(JORMContext* ctext) {
+ // TODO
+}
+#endif
-static daNpcShoe_Param_c l_HIO;
+NPC_SHOE_HIO_CLASS l_HIO;
void daNpcShoe_c::setLookMode(int i_lookMode) {
if (mLookMode != i_lookMode) {
@@ -22,7 +64,7 @@ void daNpcShoe_c::setLookMode(int i_lookMode) {
bool daNpcShoe_c::chkFindPlayer() {
bool ret;
- if (!chkActorInSight(daPy_getPlayerActorClass(), daNpcShoe_Param_c::m.mAttnFovY)) {
+ if (!chkActorInSight(daPy_getPlayerActorClass(), mpHIO->m.common.fov)) {
mActorMngr[0].remove();
ret = false;
} else {
@@ -42,16 +84,16 @@ bool daNpcShoe_c::chkFindPlayer() {
/* 80AEA558-80AEA594 000020 003C+00 1/1 0/0 0/0 .data l_bckGetParamList */
static daNpc_GetParam2 l_bckGetParamList[5] = {
- { 17, 2, 1}, // m_sitwait_a
- { 13, 0, 1}, // m_sittalk_a
- { 14, 0, 1}, // m_sittalk_a_b
- { 5, 0, 0}, // shoe_talk_a
- { 11, 2, 1} // m_sit_to_wolf_a
+ {17, 2, 1}, // m_sitwait_a
+ {13, 0, 1}, // m_sittalk_a
+ {14, 0, 1}, // m_sittalk_a_b
+ {5, 0, 0}, // shoe_talk_a
+ {11, 2, 1} // m_sit_to_wolf_a
};
/* 80AEA594-80AEA5A0 00005C 000C+00 0/0 0/0 0/0 .data l_btpGetParamList */
static daNpc_GetParam2 l_btpGetParamList[1] = {
- { 12, 2, 0 }, // shoe
+ {12, 2, 0}, // shoe
};
/* 80AEA5A0-80AEA5AC -00001 000C+00 5/6 0/0 0/0 .data l_arcNames */
@@ -62,22 +104,16 @@ static char* l_arcNames[3] = {
};
/* 80AEA5AC-80AEA5B0 000074 0004+00 0/1 0/0 0/0 .data l_evtNames */
-static char* l_evtNames[1] = {
- l_arcNames[0]
-};
+static char* l_evtNames[1] = {l_arcNames[0]};
/* 80AEA5B0-80AEA5B4 -00001 0004+00 0/2 0/0 0/0 .data l_myName */
static char* l_myName = "Shoe";
/* 80AEA5B4-80AEA5C0 00007C 000C+00 1/2 0/0 0/0 .data mEvtSeqList__11daNpcShoe_c */
-daNpcShoe_c::EventFn daNpcShoe_c::mEvtSeqList[1] = {
- NULL
-};
+daNpcShoe_c::EventFn daNpcShoe_c::mEvtSeqList[1] = {NULL};
/* 80AE794C-80AE7AD0 0000EC 0184+00 1/1 0/0 0/0 .text __ct__11daNpcShoe_cFv */
-daNpcShoe_c::daNpcShoe_c() {
- // NONMATCHING
-}
+daNpcShoe_c::daNpcShoe_c() {}
/* 80AE7B60-80AE7D48 000300 01E8+00 1/0 0/0 0/0 .text __dt__11daNpcShoe_cFv */
daNpcShoe_c::~daNpcShoe_c() {
@@ -89,43 +125,6 @@ daNpcShoe_c::~daNpcShoe_c() {
}
}
-/* ############################################################################################## */
-/* 80AEA3B0-80AEA41C 000000 006C+00 11/11 0/0 0/0 .rodata m__17daNpcShoe_Param_c */
-daNpcShoe_Param_c::param const daNpcShoe_Param_c::m = {
- 55.0f,
- -3.0f,
- 1.0f,
- 300.0f,
- 255.0f,
- 140.0f,
- 35.0f,
- 30.0f,
- 0.0f,
- 0.0f,
- 10.0f,
- -10.0f,
- 30.0f,
- -10.0f,
- 45.0f,
- -45.0f,
- 0.6f,
- 12.0f,
- 2,
- 2,
- 3,
- 2,
- 60.0f,
- 500.0f,
- 300.0f,
- -300.0f,
- 60,
- 0,
- 0,
- 0,
- 0,
- false,
-};
-
/* 80AE7D48-80AE7FD8 0004E8 0290+00 1/1 0/0 0/0 .text Create__11daNpcShoe_cFv */
cPhs__Step daNpcShoe_c::Create() {
cPhs__Step step;
@@ -154,13 +153,13 @@ cPhs__Step daNpcShoe_c::Create() {
mCreature.init(&current.pos, &eyePos, 3, 1);
mCreature.setMdlType(7, false, (BOOL)(dKy_darkworld_check() != 0));
- mAcchCir.SetWall(daNpcShoe_Param_c::m.mWallR, daNpcShoe_Param_c::m.mWallH);
+ mAcchCir.SetWall(mpHIO->m.common.width, mpHIO->m.common.knee_length);
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this));
mAcch.CrrPos(dComIfG_Bgsp());
- mCcStts.Init((int)daNpcShoe_Param_c::m.mCcWeight, 0, this);
+ mCcStts.Init((int)mpHIO->m.common.weight, 0, this);
mCcCyl.Set(mCcDCyl);
mCcCyl.SetStts(&mCcStts);
@@ -169,7 +168,7 @@ cPhs__Step daNpcShoe_c::Create() {
mGndChk = mAcch.m_gnd;
mGroundH = mAcch.m_ground_h;
- gravity = daNpcShoe_Param_c::m.mGravity;
+ gravity = mpHIO->m.common.gravity;
setEnvTevColor();
setRoomNo();
@@ -186,9 +185,9 @@ BOOL daNpcShoe_c::CreateHeap() {
JUT_ASSERT(292, NULL != mdlData_p)
- mpMorf = new mDoExt_McaMorfSO(mdlData_p, NULL, NULL, NULL, -1, 1.0f, 0, -1,
- &mCreature, 0x80000, 0x11020084);
-
+ mpMorf = new mDoExt_McaMorfSO(mdlData_p, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mCreature, 0x80000,
+ 0x11020084);
+
if (mpMorf != NULL && mpMorf->mpModel == NULL) {
mpMorf->stopZelAnime();
mpMorf = NULL;
@@ -267,15 +266,16 @@ int daNpcShoe_c::Draw() {
return 1;
}
- draw(false, false, daNpcShoe_Param_c::m.mShadowDepth, NULL, false);
+ draw(false, false, mpHIO->m.common.real_shadow_size, NULL, false);
g_env_light.setLightTevColorType_MAJI(mpModel1->mModelData, &tevStr);
mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(11));
mpModel1->setBaseTRMtx(mDoMtx_stack_c::get());
mDoExt_modelUpdateDL(mpModel1);
g_env_light.setLightTevColorType_MAJI(mpModel2->mModelData, &tevStr);
mDoExt_modelUpdateDL(mpModel2);
- dComIfGd_setSimpleShadow(&current.pos, mAcch.GetGroundH(), 50.0f, mAcch.m_gnd, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex());
-
+ dComIfGd_setSimpleShadow(&current.pos, mAcch.GetGroundH(), 50.0f, mAcch.m_gnd, 0, 1.0f,
+ dDlst_shadowControl_c::getSimpleTex());
+
return 1;
}
@@ -293,14 +293,14 @@ bool daNpcShoe_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(3));
mDoMtx_stack_c::multVecZero(&mLookatPos[2]);
}
-
+
mDoMtx_stack_c::copy(i_model->getAnmMtx(joint_no));
- switch(joint_no) {
- case 1:
- case 2:
- case 3:
- setLookatMtx(joint_no, lookat_joints, daNpcShoe_Param_c::m.mNeckAngleScl);
- break;
+ switch (joint_no) {
+ case 1:
+ case 2:
+ case 3:
+ setLookatMtx(joint_no, lookat_joints, mpHIO->m.common.neck_rotation_ratio);
+ break;
}
i_model->setAnmMtx(joint_no, mDoMtx_stack_c::get());
@@ -342,7 +342,6 @@ void daNpcShoe_c::setMotion(int i_motion, f32 i_morf, BOOL i_restart) {
}
}
-
/* 80AE864C-80AE895C 000DEC 0310+00 1/1 0/0 0/0 .text reset__11daNpcShoe_cFv */
void daNpcShoe_c::reset() {
initialize();
@@ -410,28 +409,23 @@ void daNpcShoe_c::reset() {
mMotionMorfOverride = 0.0f;
}
-
void daNpcShoe_c::playMotion() {
- daNpcF_anmPlayData dat0 = {ANM_M_SITWAIT_A, daNpcShoe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat0 = {ANM_M_SITWAIT_A, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat0[1] = {&dat0};
- daNpcF_anmPlayData dat1a = {ANM_M_SITTALK_A, daNpcShoe_Param_c::m.mMorfFrames, 1};
- daNpcF_anmPlayData dat1b = {ANM_M_SITWAIT_A, daNpcShoe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat1a = {ANM_M_SITTALK_A, mpHIO->m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat1b = {ANM_M_SITWAIT_A, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat1[2] = {&dat1a, &dat1b};
- daNpcF_anmPlayData dat2a = {ANM_M_SITTALK_A_B, daNpcShoe_Param_c::m.mMorfFrames, 1};
- daNpcF_anmPlayData dat2b = {ANM_M_SITWAIT_A, daNpcShoe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat2a = {ANM_M_SITTALK_A_B, mpHIO->m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat2b = {ANM_M_SITWAIT_A, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat2[2] = {&dat2a, &dat2b};
- daNpcF_anmPlayData dat3a = {ANM_SHOE_TALK_A, daNpcShoe_Param_c::m.mMorfFrames, 1};
- daNpcF_anmPlayData dat3b = {ANM_M_SITWAIT_A, daNpcShoe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat3a = {ANM_SHOE_TALK_A, mpHIO->m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat3b = {ANM_M_SITWAIT_A, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat3[2] = {&dat3a, &dat3b};
- daNpcF_anmPlayData dat4 = {ANM_M_SIT_TO_WOLF_A, daNpcShoe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat4 = {ANM_M_SIT_TO_WOLF_A, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat4[1] = {&dat4};
daNpcF_anmPlayData** ppDat[5] = {
- pDat0,
- pDat1,
- pDat2,
- pDat3,
- pDat4,
+ pDat0, pDat1, pDat2, pDat3, pDat4,
};
if (mMotion >= 0 && mMotion < 5) {
field_0xe16 = mMotionPhase;
@@ -439,6 +433,57 @@ void daNpcShoe_c::playMotion() {
}
}
+/* 80AE9820-80AE9A00 001FC0 01E0+00 1/1 0/0 0/0 .text lookat__11daNpcShoe_cFv */
+void daNpcShoe_c::lookat() {
+ fopAc_ac_c* actor = NULL;
+ J3DModel* model = mpMorf->getModel();
+
+ BOOL snap = false;
+ f32 body_angleX_min = mpHIO->m.common.body_angleX_min;
+ f32 body_angleX_max = mpHIO->m.common.body_angleX_max;
+ f32 body_angleY_min = mpHIO->m.common.body_angleY_min;
+ f32 body_angleY_max = mpHIO->m.common.body_angleY_max;
+ f32 head_angleX_min = mpHIO->m.common.head_angleX_min;
+ f32 head_angleX_max = mpHIO->m.common.head_angleX_max;
+ f32 head_angleY_min = mpHIO->m.common.head_angleY_min;
+ f32 head_angleY_max = mpHIO->m.common.head_angleY_max;
+
+ s16 angle_delta = mCurAngle.y - mOldAngle.y;
+ cXyz lookat_pos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]};
+ csXyz* lookat_angle[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]};
+
+ switch (mLookMode) {
+ case LOOK_NONE:
+ break;
+ case LOOK_RESET:
+ snap = true;
+ break;
+ case LOOK_PLAYER:
+ case LOOK_PLAYER_TALK:
+ actor = daPy_getPlayerActorClass();
+ if (mLookMode != LOOK_PLAYER_TALK) {
+ break;
+ }
+ head_angleY_min = -80.0f;
+ head_angleY_max = 80.0f;
+ break;
+ }
+
+ if (actor != NULL) {
+ mLookPos = actor->attention_info.position;
+ if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK) {
+ mLookPos.y -= 40.0f;
+ }
+ mLookat.setAttnPos(&mLookPos);
+ } else {
+ mLookat.setAttnPos(NULL);
+ }
+
+ mLookat.setParam(body_angleX_min, body_angleX_max, body_angleY_min, body_angleY_max, 0.0f, 0.0f,
+ 0.0f, 0.0f, head_angleX_min, head_angleX_max, head_angleY_min, head_angleY_max,
+ mCurAngle.y, lookat_pos);
+ mLookat.calc(this, model->getBaseTRMtx(), lookat_angle, snap, angle_delta, false);
+}
/* 80AE895C-80AE8A04 0010FC 00A8+00 1/1 0/0 0/0 .text
* setAction__11daNpcShoe_cFM11daNpcShoe_cFPCvPvPv_b */
@@ -458,7 +503,6 @@ int daNpcShoe_c::setAction(bool (daNpcShoe_c::*i_actionFunc)(void*)) {
/* 80AE8A04-80AE8E24 0011A4 0420+00 3/0 0/0 0/0 .text wait__11daNpcShoe_cFPv */
bool daNpcShoe_c::wait(void* param_0) {
- // NONMATCHING
switch (mMode) {
case 0:
setMotion(MOT_SITWAIT_A, -1.0f, false);
@@ -469,7 +513,7 @@ bool daNpcShoe_c::wait(void* param_0) {
break;
case 2: {
chkFindPlayer();
-
+
fopAc_ac_c* pactor = mActorMngr->getActorP();
if (pactor != NULL) {
setLookMode(LOOK_PLAYER);
@@ -513,27 +557,26 @@ bool daNpcShoe_c::wait(void* param_0) {
return 1;
}
-
/* 80AE8E24-80AE8ED4 0015C4 00B0+00 1/0 0/0 0/0 .text fear__11daNpcShoe_cFPv */
bool daNpcShoe_c::fear(void* param_0) {
switch (mMode) {
- case 0:
- setMotion(MOT_SIT_TO_WOLF_A, -1.0f, false);
- speedF = 0.0f;
- mMode = 2;
- break;
- case 1:
- break;
- case 2:
- if (mpMorf->checkFrame(1.0f)) {
- mCreature.playVoice(2);
- }
- break;
- case 3:
- break;
- default:
- JUT_ASSERT(1100, FALSE);
- break;
+ case 0:
+ setMotion(MOT_SIT_TO_WOLF_A, -1.0f, false);
+ speedF = 0.0f;
+ mMode = 2;
+ break;
+ case 1:
+ break;
+ case 2:
+ if (mpMorf->checkFrame(1.0f)) {
+ mCreature.playVoice(2);
+ }
+ break;
+ case 3:
+ break;
+ default:
+ JUT_ASSERT(1100, FALSE);
+ break;
}
return 1;
}
@@ -542,37 +585,37 @@ bool daNpcShoe_c::fear(void* param_0) {
bool daNpcShoe_c::talk(void* param_0) {
bool ret = 0;
switch (mMode) {
- case 0:
- initTalk(field_0xe0c, NULL);
- mMsgTimer = 0;
- field_0xe1a = 0;
- setLookMode(LOOK_PLAYER_TALK);
- mMode = 2;
- break;
- case 1:
- break;
- case 2:
- if (talkProc(NULL, 1, NULL)) {
- mActorMngr->entry(daPy_getPlayerActorClass());
- setAction(&daNpcShoe_c::wait);
- ret = 1;
- } else {
- int expression, motion;
- if (ctrlMsgAnm(expression, motion, this, false)) {
- setMotion(motion, -1.0f, false);
- }
- }
- break;
- case 3:
- if (field_0x9ec != 0) {
- break;
+ case 0:
+ initTalk(field_0xe0c, NULL);
+ mMsgTimer = 0;
+ field_0xe1a = 0;
+ setLookMode(LOOK_PLAYER_TALK);
+ mMode = 2;
+ break;
+ case 1:
+ break;
+ case 2:
+ if (talkProc(NULL, 1, NULL)) {
+ mActorMngr->entry(daPy_getPlayerActorClass());
+ setAction(&daNpcShoe_c::wait);
+ ret = 1;
+ } else {
+ int expression, motion;
+ if (ctrlMsgAnm(expression, motion, this, false)) {
+ setMotion(motion, -1.0f, false);
}
-
- dComIfGp_event_reset();
- break;
- default:
- JUT_ASSERT(1169, FALSE);
+ }
+ break;
+ case 3:
+ if (field_0x9ec != 0) {
break;
+ }
+
+ dComIfGp_event_reset();
+ break;
+ default:
+ JUT_ASSERT(1169, FALSE);
+ break;
}
return ret;
}
@@ -580,39 +623,41 @@ bool daNpcShoe_c::talk(void* param_0) {
/* 80AE9094-80AE9260 001834 01CC+00 1/0 0/0 0/0 .text demo__11daNpcShoe_cFPv */
bool daNpcShoe_c::demo(void* param_0) {
switch (mMode) {
- case 0:
- setMotion(MOT_SITWAIT_A, -1.0f, false);
- mMode = 2;
- break;
- case 1:
- break;
- case 2:
- if (dComIfGp_event_runCheck() != FALSE && !eventInfo.checkCommandTalk()) {
- dEvent_manager_c& eventManager = dComIfGp_getEventManager();
- s32 staff_id = eventManager.getMyStaffId(l_myName, NULL, 0);
- if (staff_id != -1) {
- mStaffID = staff_id;
-
- JUT_ASSERT(1203, NULL != mEvtSeqList[mOrderEvtNo])
-
- if ((this->*(mEvtSeqList[mOrderEvtNo]))(staff_id)) {
- eventManager.cutEnd(staff_id);
- }
- }
+ case 0:
+ setMotion(MOT_SITWAIT_A, -1.0f, false);
+ mMode = 2;
+ break;
+ case 1:
+ break;
+ case 2:
+ if (dComIfGp_event_runCheck() != FALSE && !eventInfo.checkCommandTalk()) {
+ dEvent_manager_c& eventManager = dComIfGp_getEventManager();
+ s32 staff_id = eventManager.getMyStaffId(l_myName, NULL, 0);
+ if (staff_id != -1) {
+ mStaffID = staff_id;
+
+ JUT_ASSERT(1203, NULL != mEvtSeqList[mOrderEvtNo])
- if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1 && eventManager.endCheck(mEventIdx)) {
- dComIfGp_event_reset();
- mOrderEvtNo = 0;
- mEventIdx = -1;
- setAction(&daNpcShoe_c::wait);
+ if ((this->*(mEvtSeqList[mOrderEvtNo]))(staff_id)) {
+ eventManager.cutEnd(staff_id);
}
}
- break;
- case 3:
- break;
- default:
- JUT_ASSERT(1169, FALSE);
- break;
+
+ if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1 &&
+ eventManager.endCheck(mEventIdx))
+ {
+ dComIfGp_event_reset();
+ mOrderEvtNo = 0;
+ mEventIdx = -1;
+ setAction(&daNpcShoe_c::wait);
+ }
+ }
+ break;
+ case 3:
+ break;
+ default:
+ JUT_ASSERT(1169, FALSE);
+ break;
}
return 1;
}
@@ -644,16 +689,19 @@ static bool daNpcShoe_IsDelete(void* param_0) {
/* 80AE92E8-80AE93A0 001A88 00B8+00 1/0 0/0 0/0 .text setParam__11daNpcShoe_cFv */
void daNpcShoe_c::setParam() {
- attention_info.distances[0] = getDistTableIdx(daNpcShoe_Param_c::m.mTalkDistIdx, daNpcShoe_Param_c::m.mTalkAngleIdx);
+ attention_info.distances[0] =
+ getDistTableIdx(mpHIO->m.common.attention_distance, mpHIO->m.common.attention_angle);
attention_info.distances[1] = attention_info.distances[0];
- attention_info.distances[3] = getDistTableIdx(daNpcShoe_Param_c::m.mSpeakDistIdx, daNpcShoe_Param_c::m.mSpeakAngleIdx);
+ attention_info.distances[3] =
+ getDistTableIdx(mpHIO->m.common.talk_distance, mpHIO->m.common.talk_angle);
- attention_info.flags = (field_0xe1b != 0) ? (fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e) : 0;
+ attention_info.flags =
+ (field_0xe1b != 0) ? (fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e) : 0;
- scale.setall(daNpcShoe_Param_c::m.mScale);
- mAcchCir.SetWallR(daNpcShoe_Param_c::m.mWallR);
- mAcchCir.SetWallH(daNpcShoe_Param_c::m.mWallH);
- gravity = daNpcShoe_Param_c::m.mGravity;
+ scale.setall(mpHIO->m.common.scale);
+ mAcchCir.SetWallR(mpHIO->m.common.width);
+ mAcchCir.SetWallH(mpHIO->m.common.knee_length);
+ gravity = mpHIO->m.common.gravity;
}
/* 80AE93A0-80AE9624 001B40 0284+00 1/0 0/0 0/0 .text main__11daNpcShoe_cFv */
@@ -671,7 +719,6 @@ BOOL daNpcShoe_c::main() {
/* 80AE9624-80AE9820 001DC4 01FC+00 1/0 0/0 0/0 .text setAttnPos__11daNpcShoe_cFv */
void daNpcShoe_c::setAttnPos() {
- // NONMATCHING
if (mLookMode == LOOK_RESET) {
for (int i = 0; i < 3; i++) {
mLookatAngle[i].setall(0);
@@ -681,88 +728,37 @@ void daNpcShoe_c::setAttnPos() {
setMtx();
lookat();
- cXyz vec(10.0f,15.0f,0.0f);
+ cXyz vec(10.0f, 15.0f, 0.0f);
mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(3));
mDoMtx_stack_c::multVecZero(&mHeadPos);
mDoMtx_stack_c::multVec(&vec, &eyePos);
vec.x = 0.0f;
mDoMtx_stack_c::multVec(&vec, &vec);
- mHeadAngle.x = cLib_targetAngleX(&mHeadPos,&vec);
- mHeadAngle.y = cLib_targetAngleY(&mHeadPos,&vec);
+ mHeadAngle.x = cLib_targetAngleX(&mHeadPos, &vec);
+ mHeadAngle.y = cLib_targetAngleY(&mHeadPos, &vec);
mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(3));
mDoMtx_stack_c::multVecZero(&attention_info.position);
- attention_info.position.y += daNpcShoe_Param_c::m.mAttnOffsetY;
+ attention_info.position.y += mpHIO->m.common.attention_offset;
cXyz cStack28;
mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(1));
mDoMtx_stack_c::multVecZero(&cStack28);
cStack28.y = current.pos.y;
mCcCyl.SetC(cStack28);
- mCcCyl.SetH(daNpcShoe_Param_c::m.mCylH);
- mCcCyl.SetR(daNpcShoe_Param_c::m.mWallR);
+ mCcCyl.SetH(mpHIO->m.common.height);
+ mCcCyl.SetR(mpHIO->m.common.width);
dComIfG_Ccsp()->Set(&mCcCyl);
}
-/* 80AE9820-80AE9A00 001FC0 01E0+00 1/1 0/0 0/0 .text lookat__11daNpcShoe_cFv */
-void daNpcShoe_c::lookat() {
- // NONMATCHING
- fopAc_ac_c* actor = NULL;
- J3DModel* model = mpMorf->getModel();
- BOOL snap = false;
- f32 body_down_angle = daNpcShoe_Param_c::m.mBodyDownAngle;
- f32 body_up_angle = daNpcShoe_Param_c::m.mBodyUpAngle;
- f32 body_right_angle = daNpcShoe_Param_c::m.mBodyRightAngle;
- f32 body_left_angle = daNpcShoe_Param_c::m.mBodyLeftAngle;
- f32 head_down_angle = daNpcShoe_Param_c::m.mHeadDownAngle;
- f32 head_up_angle = daNpcShoe_Param_c::m.mHeadUpAngle;
- f32 head_right_angle = daNpcShoe_Param_c::m.mHeadRightAngle;
- f32 head_left_angle = daNpcShoe_Param_c::m.mHeadLeftAngle;
- s16 angle_delta = mCurAngle.y - mOldAngle.y;
- cXyz lookat_pos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]};
- csXyz* lookat_angle[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]};
-
- switch (mLookMode) {
- case LOOK_NONE:
- break;
- case LOOK_RESET:
- snap = true;
- break;
- case LOOK_PLAYER:
- case LOOK_PLAYER_TALK:
- actor = daPy_getPlayerActorClass();
- if (mLookMode != LOOK_PLAYER_TALK) {
- break;
- }
- head_right_angle = -80.0f;
- head_left_angle = 80.0f;
- break;
- }
-
- if (actor != NULL) {
- mLookPos = actor->attention_info.position;
- if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK) {
- mLookPos.y -= 40.0f;
- }
- mLookat.setAttnPos(&mLookPos);
- } else {
- mLookat.setAttnPos(NULL);
- }
-
- mLookat.setParam(body_down_angle, body_up_angle, body_right_angle, body_left_angle,
- 0.0f, 0.0f, 0.0f, 0.0f,
- head_down_angle, head_up_angle, head_right_angle, head_left_angle,
- mCurAngle.y, lookat_pos);
- mLookat.calc(this, model->getBaseTRMtx(), lookat_angle, snap, angle_delta, false);
-}
-
/* 80AE9A00-80AE9AD0 0021A0 00D0+00 1/0 0/0 0/0 .text setMotionAnm__11daNpcShoe_cFif */
void daNpcShoe_c::setMotionAnm(int i_idx, f32 i_morf) {
- J3DAnmTransformKey* morfAnm = getTrnsfrmKeyAnmP(l_arcNames[l_bckGetParamList[i_idx].arcIdx], l_bckGetParamList[i_idx].fileIdx);
-
+ J3DAnmTransformKey* morfAnm = getTrnsfrmKeyAnmP(l_arcNames[l_bckGetParamList[i_idx].arcIdx],
+ l_bckGetParamList[i_idx].fileIdx);
+
int morfAttr = l_bckGetParamList[i_idx].attr;
-
+
mAnmFlags &= ~(ANM_PAUSE_MORF | ANM_PLAY_MORF);
if (morfAnm) {
@@ -780,33 +776,29 @@ BOOL daNpcShoe_c::drawDbgInfo() {
/* 80AEA340-80AEA344 002AE0 0004+00 1/0 0/0 0/0 .text adjustShapeAngle__11daNpcShoe_cFv
*/
-void daNpcShoe_c::adjustShapeAngle() {
- /* empty function */
-}
+void daNpcShoe_c::adjustShapeAngle() {}
/* 80AEA608-80AEA628 -00001 0020+00 1/0 0/0 0/0 .data daNpcShoe_MethodTable */
static actor_method_class daNpcShoe_MethodTable = {
- (process_method_func)daNpcShoe_Create,
- (process_method_func)daNpcShoe_Delete,
- (process_method_func)daNpcShoe_Execute,
- (process_method_func)daNpcShoe_IsDelete,
+ (process_method_func)daNpcShoe_Create, (process_method_func)daNpcShoe_Delete,
+ (process_method_func)daNpcShoe_Execute, (process_method_func)daNpcShoe_IsDelete,
(process_method_func)daNpcShoe_Draw,
};
/* 80AEA628-80AEA658 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_SHOE */
extern actor_process_profile_definition g_profile_NPC_SHOE = {
- fpcLy_CURRENT_e, // mLayerID
- 7, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_NPC_SHOE, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daNpcShoe_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 417, // mPriority
- &daNpcShoe_MethodTable, // sub_method
- 0x00044107, // mStatus
- fopAc_NPC_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
+ fpcLy_CURRENT_e, // mLayerID
+ 7, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_NPC_SHOE, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daNpcShoe_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 417, // mPriority
+ &daNpcShoe_MethodTable, // sub_method
+ 0x00044107, // mStatus
+ fopAc_NPC_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
};
diff --git a/src/d/actor/d_a_npc_the.cpp b/src/d/actor/d_a_npc_the.cpp
index 0b94b95b7e..cd1595a862 100644
--- a/src/d/actor/d_a_npc_the.cpp
+++ b/src/d/actor/d_a_npc_the.cpp
@@ -3,248 +3,66 @@
* NPC - Telma
*/
-#include "d/dolzel_rel.h" // IWYU pragma: keep
+#include "d/dolzel_rel.h" // IWYU pragma: keep
-#include "d/actor/d_a_npc_the.h"
-#include "SSystem/SComponent/c_math.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
+#include "SSystem/SComponent/c_math.h"
+#include "d/actor/d_a_npc_the.h"
#include "d/actor/d_a_tag_evtarea.h"
-#include "dol2asm.h"
-
-//
-// Forward References:
-//
-
-extern "C" void __ct__10daNpcThe_cFv();
-extern "C" void __dt__8cM3dGCylFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__10daNpcThe_cFv();
-extern "C" void ctrlJoint__10daNpcThe_cFP8J3DJointP8J3DModel();
-extern "C" void createHeapCallBack__10daNpcThe_cFP10fopAc_ac_c();
-extern "C" void __dt__15J3DTevKColorAnmFv();
-extern "C" void __ct__15J3DTevKColorAnmFv();
-extern "C" void __dt__14J3DTevColorAnmFv();
-extern "C" void __ct__14J3DTevColorAnmFv();
-extern "C" void __dt__11J3DTexNoAnmFv();
-extern "C" void __ct__11J3DTexNoAnmFv();
-extern "C" void __dt__12J3DTexMtxAnmFv();
-extern "C" void __ct__12J3DTexMtxAnmFv();
-extern "C" void __dt__14J3DMatColorAnmFv();
-extern "C" void __ct__14J3DMatColorAnmFv();
-extern "C" void ctrlJointCallBack__10daNpcThe_cFP8J3DJointi();
-extern "C" void setExpressionAnm__10daNpcThe_cFib();
-extern "C" void setExpressionBtp__10daNpcThe_cFi();
-extern "C" void setMotionAnm__10daNpcThe_cFif();
-extern "C" void wait__10daNpcThe_cFPv();
-extern "C" void setMotion__10daNpcThe_cFifi();
-extern "C" void setExpression__10daNpcThe_cFif();
-extern "C" void waitTW__10daNpcThe_cFPv();
-extern "C" void talk__10daNpcThe_cFPv();
-extern "C" void test__10daNpcThe_cFPv();
-extern "C" bool EvCut_TwResistance__10daNpcThe_cFi();
-extern "C" void EvCut_Introduction__10daNpcThe_cFi();
-extern "C" static void daNpcThe_Create__FPv();
-extern "C" void create__10daNpcThe_cFv();
-extern "C" void reset__10daNpcThe_cFv();
-extern "C" static void daNpcThe_Delete__FPv();
-extern "C" static void daNpcThe_Execute__FPv();
-extern "C" static void daNpcThe_Draw__FPv();
-extern "C" static bool daNpcThe_IsDelete__FPv();
-extern "C" void calc__11J3DTexNoAnmCFPUs();
-extern "C" void setParam__10daNpcThe_cFv();
-extern "C" void main__10daNpcThe_cFv();
-extern "C" void playMotion__10daNpcThe_cFv();
-extern "C" void playExpression__10daNpcThe_cFv();
-extern "C" void doEvent__10daNpcThe_cFv();
-extern "C" void ctrlBtk__10daNpcThe_cFv();
-extern "C" void setAttnPos__10daNpcThe_cFv();
-extern "C" void lookat__10daNpcThe_cFv();
-extern "C" bool drawDbgInfo__10daNpcThe_cFv();
-extern "C" void func_80AFB490(void* _this, s16);
-extern "C" void __sinit_d_a_npc_the_cpp();
-extern "C" void __dt__18daNpcF_ActorMngr_cFv();
-extern "C" void __ct__18daNpcF_ActorMngr_cFv();
-extern "C" void __dt__15daNpcF_Lookat_cFv();
-extern "C" void __dt__5csXyzFv();
-extern "C" void __ct__5csXyzFv();
-extern "C" void __dt__4cXyzFv();
-extern "C" void __ct__4cXyzFv();
-extern "C" void __dt__8daNpcF_cFv();
-extern "C" void __ct__8daNpcF_cFv();
-extern "C" void __dt__12dBgS_AcchCirFv();
-extern "C" void __dt__10dCcD_GSttsFv();
-extern "C" void __dt__12dBgS_ObjAcchFv();
-extern "C" void __dt__12J3DFrameCtrlFv();
-extern "C" void setCollisions__8daNpcF_cFv();
-extern "C" void drawOtherMdls__8daNpcF_cFv();
-extern "C" void __dt__10cCcD_GSttsFv();
-extern "C" void chkPointInArea__15daTag_EvtArea_cF4cXyz();
-extern "C" void adjustShapeAngle__10daNpcThe_cFv();
-extern "C" void __dt__16daNpcThe_Param_cFv();
-extern "C" static void func_80AFBDE8();
-extern "C" static void func_80AFBDF0();
-extern "C" u8 const m__16daNpcThe_Param_c[108];
-extern "C" extern char const* const d_a_npc_the__stringBase0;
-extern "C" void* mEvtCutNameList__10daNpcThe_c[4];
-extern "C" u8 mEvtCutList__10daNpcThe_c[48];
-static cPhs__Step daNpcThe_Create(void*);
-static int daNpcThe_Delete(void*);
-static int daNpcThe_Execute(void*);
-static int daNpcThe_IsDelete(void*);
-static int daNpcThe_Draw(void*);
-
-//
-// External References:
-//
-
-extern "C" void changeBckOnly__13mDoExt_bckAnmFP15J3DAnmTransform();
-extern "C" void
-__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl();
-extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv();
-extern "C" void __ct__10fopAc_ac_cFv();
-extern "C" void __dt__10fopAc_ac_cFv();
-extern "C" void fopAcIt_Judge__FPFPvPv_PvPv();
-extern "C" void fopAcM_delete__FP10fopAc_ac_c();
-extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
-extern "C" void fopAcM_setCullSizeBox2__FP10fopAc_ac_cP12J3DModelData();
-extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c();
-extern "C" void fopAcM_orderChangeEventId__FP10fopAc_ac_csUsUs();
-extern "C" void fopAcM_createItemForPresentDemo__FPC4cXyziUciiPC5csXyzPC4cXyz();
-extern "C" void fpcSch_JudgeForPName__FPvPv();
-extern "C" void getLayerNo__14dComIfG_play_cFi();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfGs_wolfeye_effect_check__Fv();
-extern "C" void isEventBit__11dSv_event_cCFUs();
-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 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 getMyStaffId__16dEvent_manager_cFPCcP10fopAc_ac_ci();
-extern "C" void getIsAddvance__16dEvent_manager_cFi();
-extern "C" void getMyActIdx__16dEvent_manager_cFiPCPCciii();
-extern "C" void getMyNowCutName__16dEvent_manager_cFi();
-extern "C" void cutEnd__16dEvent_manager_cFi();
-extern "C" void ChkPresentEnd__16dEvent_manager_cFv();
-extern "C" void __ct__12dBgS_AcchCirFv();
-extern "C" void SetWallR__12dBgS_AcchCirFf();
-extern "C" void SetWall__12dBgS_AcchCirFff();
-extern "C" void __dt__9dBgS_AcchFv();
-extern "C" void __ct__9dBgS_AcchFv();
-extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz();
-extern "C" void CrrPos__9dBgS_AcchFR4dBgS();
-extern "C" void __ct__11dBgS_GndChkFv();
-extern "C" void __dt__11dBgS_GndChkFv();
-extern "C" void __ct__11dBgS_LinChkFv();
-extern "C" void __dt__11dBgS_LinChkFv();
-extern "C" void SetObj__16dBgS_PolyPassChkFv();
-extern "C" void __ct__10dCcD_GSttsFv();
-extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
-extern "C" void __ct__12dCcD_GObjInfFv();
-extern "C" void __dt__12dCcD_GObjInfFv();
-extern "C" void Set__8dCcD_CylFRC11dCcD_SrcCyl();
-extern "C" void initialize__18daNpcF_ActorMngr_cFv();
-extern "C" void entry__18daNpcF_ActorMngr_cFP10fopAc_ac_c();
-extern "C" void remove__18daNpcF_ActorMngr_cFv();
-extern "C" void getActorP__18daNpcF_ActorMngr_cFv();
-extern "C" void initialize__15daNpcF_MatAnm_cFv();
-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 execute__8daNpcF_cFv();
-extern "C" void draw__8daNpcF_cFiifP11_GXColorS10i();
-extern "C" void srchAttnActor1__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 setMcaMorfAnm__8daNpcF_cFP18J3DAnmTransformKeyffiii();
-extern "C" void setBckAnm__8daNpcF_cFP15J3DAnmTransformfiiib();
-extern "C" void setBtpAnm__8daNpcF_cFP16J3DAnmTexPatternP12J3DModelDatafi();
-extern "C" void setBtkAnm__8daNpcF_cFP19J3DAnmTextureSRTKeyP12J3DModelDatafi();
-extern "C" void setEnvTevColor__8daNpcF_cFv();
-extern "C" void setRoomNo__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 ctrlMsgAnm__8daNpcF_cFRiRiP10fopAc_ac_ci();
-extern "C" void orderEvent__8daNpcF_cFiPcUsUsUcUs();
-extern "C" void initTalk__8daNpcF_cFiPP10fopAc_ac_c();
-extern "C" void talkProc__8daNpcF_cFPiiPP10fopAc_ac_c();
-extern "C" void step__8daNpcF_cFsiii();
-extern "C" void getDistTableIdx__8daNpcF_cFii();
-extern "C" void getEvtAreaTagP__8daNpcF_cFii();
-extern "C" void getAttnActorP__8daNpcF_cFiPFPvPv_Pvffffsii();
-extern "C" void chkFindPlayer2__8daNpcF_cFis();
-extern "C" void daNpcF_chkEvtBit__FUl();
-extern "C" void daNpcF_offTmpBit__FUl();
-extern "C" void dKy_darkworld_check__Fv();
-extern "C" void __ct__10dMsgFlow_cFv();
-extern "C" void __dt__10dMsgFlow_cFv();
-extern "C" void getEventId__10dMsgFlow_cFPi();
-extern "C" void Set__4cCcSFP8cCcD_Obj();
-extern "C" void __mi__4cXyzCFRC3Vec();
-extern "C" void cM_atan2s__Fff();
-extern "C" void __ct__11cBgS_GndChkFv();
-extern "C" void __dt__11cBgS_GndChkFv();
-extern "C" void __dt__13cBgS_PolyInfoFv();
-extern "C" void __dt__8cM3dGCirFv();
-extern "C" void SetC__8cM3dGCylFRC4cXyz();
-extern "C" void SetH__8cM3dGCylFf();
-extern "C" void SetR__8cM3dGCylFf();
-extern "C" void cLib_targetAngleY__FPC3VecPC3Vec();
-extern "C" void cLib_targetAngleX__FPC4cXyzPC4cXyz();
-extern "C" void __ct__10Z2CreatureFv();
-extern "C" void __dt__10Z2CreatureFv();
-extern "C" void init__10Z2CreatureFP3VecP3VecUcUc();
-extern "C" void* __nw__FUl();
-extern "C" void __dl__FPv();
-extern "C" void init__12J3DFrameCtrlFs();
-extern "C" void getTexNo__16J3DAnmTexPatternCFUsPUs();
-extern "C" void initialize__14J3DMaterialAnmFv();
-extern "C" void __destroy_arr();
-extern "C" void __construct_array();
-extern "C" void __ptmf_test();
-extern "C" void __ptmf_cmpr();
-extern "C" void __ptmf_scall();
-extern "C" void _savegpr_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_25();
-extern "C" void _restgpr_26();
-extern "C" void _restgpr_27();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" extern u8 const __ptmf_null[12 + 4 /* padding */];
-extern "C" u8 saveBitLabels__16dSv_event_flag_c[1644 + 4 /* padding */];
-extern "C" extern void* __vt__8dCcD_Cyl[36];
-extern "C" extern void* __vt__9dCcD_Stts[11];
-extern "C" u8 mCcDCyl__8daNpcF_c[68];
-extern "C" extern void* __vt__8daNpcF_c[18];
-extern "C" extern void* __vt__15daNpcF_MatAnm_c[4 + 6 /* padding */];
-extern "C" extern void* __vt__12cCcD_CylAttr[25];
-extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
-extern "C" extern void* __vt__9cCcD_Stts[8];
-extern "C" extern void* __vt__14J3DMaterialAnm[4];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-extern "C" u8 mCurrentMtx__6J3DSys[48];
-extern "C" u8 sincosTable___5JMath[65536];
-extern "C" void chkPointInArea__15daTag_EvtArea_cF4cXyz4cXyz();
-extern "C" void __register_global_object();
-
-//
-// Declarations:
-//
+
+/* 80AFBE0C-80AFBE78 000000 006C+00 11/11 0/0 0/0 .rodata m__16daNpcThe_Param_c */
+const daNpcThe_HIOParam daNpcThe_Param_c::m = {
+ 220.0f, // attention_offset
+ -3.0f, // gravity
+ 1.0f, // scale
+ 400.0f, // real_shadow_size
+ 255.0f, // weight
+ 200.0f, // height
+ 35.0f, // knee_length
+ 40.0f, // width
+ 0.0f, // body_angleX_max
+ -20.0f, // body_angleX_min
+ 10.0f, // body_angleY_max
+ -10.0f, // body_angleY_min
+ 30.0f, // head_angleX_max
+ -20.0f, // head_angleX_min
+ 45.0f, // head_angleY_max
+ -45.0f, // head_angleY_min
+ 0.6f, // neck_rotation_ratio
+ 12.0f, // morf_frame
+ 3, // talk_distance
+ 6, // talk_angle
+ 5, // attention_distance
+ 6, // attention_angle
+ 80.0f, // fov
+ 500.0f, // search_distance
+ 300.0f, // search_height
+ -300.0f, // search_depth
+ 60, // attention_time
+ 8, // damage_time
+ 0, // face_expression
+ 0, // motion
+ 0, // look_mode
+ 0, // debug_mode_ON
+ 0, // debug_info_ON
+};
+
+#if DEBUG
+daNpcThe_HIO_c::daNpcThe_HIO_c() {
+ m = daNpcThe_Param_c::m;
+}
+
+void daNpcThe_HIO_c::listenPropertyEvent(const JORPropertyEvent* event) {
+ // TODO
+}
+
+void daNpcThe_HIO_c::genMessage(JORMContext* ctext) {
+ // TODO
+}
+#endif
/* 80AFC67C-80AFC680 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */
-static daNpcThe_Param_c l_HIO;
+NPC_THE_HIO_CLASS l_HIO;
/* 80AFC1F0-80AFC200 000020 0010+00 1/1 0/0 0/0 .data l_bmdGetParamList */
static daNpc_GetParam1 l_bmdGetParamList[2] = {
@@ -332,7 +150,10 @@ static char* l_resNames[4] = {
/* 80AFC390-80AFC3A0 0001C0 0010+00 0/2 0/0 0/0 .data l_evtGetParamList */
static int l_evtGetParamList[4] = {
- 0, 3, 3, 0,
+ 0,
+ 3,
+ 3,
+ 0,
};
/* 80AFC3A0-80AFC3B0 -00001 0010+00 0/2 0/0 0/0 .data l_evtNames */
@@ -365,14 +186,11 @@ int daNpcThe_c::Draw() {
mpMorf->getModel()->getModelData()->getMaterialNodePointer(2)->setMaterialAnm(mpMatAnm);
ActionFn action_test = &test;
int is_test = mpActionFn == action_test;
- return draw(is_test, false, daNpcThe_Param_c::m.mShadowDepth, NULL, false);
+ return draw(is_test, false, mpHIO->m.common.real_shadow_size, NULL, false);
}
/* 80AF76CC-80AF7850 0000EC 0184+00 1/1 0/0 0/0 .text __ct__10daNpcThe_cFv */
-// NONMATCHING daNpcF_c constructor needs to not be inlined
-daNpcThe_c::daNpcThe_c() {
- /* empty function */
-}
+daNpcThe_c::daNpcThe_c() {}
/* 80AF78E0-80AF7AE0 000300 0200+00 1/0 0/0 0/0 .text __dt__10daNpcThe_cFv */
daNpcThe_c::~daNpcThe_c() {
@@ -384,55 +202,18 @@ daNpcThe_c::~daNpcThe_c() {
}
}
-/* 80AFBE0C-80AFBE78 000000 006C+00 11/11 0/0 0/0 .rodata m__16daNpcThe_Param_c */
-daNpcThe_Param_c::param const daNpcThe_Param_c::m = {
- 220.0f, // mAttnOffsetY
- -3.0f, // mGravity
- 1.0f, // mScale
- 400.0f, // mShadowDepth
- 255.0f, // mCcWeight
- 200.0f, // mCylH
- 35.0f, // mWallH
- 40.0f, // mWallR
- 0.0f, // mBodyUpAngle
- -20.0f, // mBodyDownAngle
- 10.0f, // mBodyLeftAngle
- -10.0f, // mBodyRightAngle
- 30.0f, // mHeadUpAngle
- -20.0f, // mHeadDownAngle
- 45.0f, // mHeadLeftAngle
- -45.0f, // mHeadRightAngle
- 0.6f, // mNeckAngleScl
- 12.0f, // mMorfFrames
- 3, // mSpeakDistIdx
- 6, // mSpeakAngleIdx
- 5, // mTalkDistIdx
- 6, // mTalkAngleIdx
- 80.0f, // mAttnFovY
- 500.0f, // mAttnRadius
- 300.0f, // mAttnUpperY
- -300.0f, // mAttnLowerY
- 60,
- 8, // mDamageTimer
- 0, // mTestExpression
- 0, // mTestMotion
- 0, // mTestLookMode
- false, // mTest
-};
-
int daNpcThe_c::CreateHeap() {
J3DModelData* model_data = NULL;
mTwilight = dKy_darkworld_check();
int bmd_get_idx = mTwilight ? 1 : 0;
if (l_bmdGetParamList[bmd_get_idx].fileIdx >= 0) {
- model_data = static_cast<J3DModelData*>(dComIfG_getObjectRes(
- l_resNames[l_bmdGetParamList[bmd_get_idx].arcIdx],
- l_bmdGetParamList[bmd_get_idx].fileIdx
- ));
+ model_data = static_cast<J3DModelData*>(
+ dComIfG_getObjectRes(l_resNames[l_bmdGetParamList[bmd_get_idx].arcIdx],
+ l_bmdGetParamList[bmd_get_idx].fileIdx));
}
- mpMorf = new mDoExt_McaMorfSO(model_data, NULL, NULL, NULL, -1, 1.0f, 0, -1,
- &mSound, 0x80000, 0x11020284);
-
+ mpMorf = new mDoExt_McaMorfSO(model_data, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mSound, 0x80000,
+ 0x11020284);
+
if (mpMorf != NULL && mpMorf->getModel() == NULL) {
mpMorf->stopZelAnime();
mpMorf = NULL;
@@ -475,13 +256,13 @@ int daNpcThe_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
}
mDoMtx_stack_c::copy(i_model->getAnmMtx(joint_no));
-
+
switch (joint_no) {
- case 1:
- case 3:
- case 4:
- setLookatMtx(joint_no, lookat_joints, daNpcThe_Param_c::m.mNeckAngleScl);
- break;
+ case 1:
+ case 3:
+ case 4:
+ setLookatMtx(joint_no, lookat_joints, mpHIO->m.common.neck_rotation_ratio);
+ break;
}
i_model->setAnmMtx(joint_no, mDoMtx_stack_c::get());
@@ -723,10 +504,10 @@ void daNpcThe_c::setMotionAnm(int i_idx, f32 i_morf) {
}
if (l_btkGetParamList[0].fileIdx >= 0) {
- anm_tex = getTexSRTKeyAnmP(l_resNames[l_btkGetParamList[0].arcIdx],
- l_btkGetParamList[0].fileIdx);
+ anm_tex =
+ getTexSRTKeyAnmP(l_resNames[l_btkGetParamList[0].arcIdx], l_btkGetParamList[0].fileIdx);
}
-
+
if (anm_tex != NULL) {
if (setBtkAnm(anm_tex, mpMorf->getModel()->getModelData(), 1.0f, 2)) {
mAnmFlags |= ANM_PAUSE_BTK | ANM_PLAY_BTK;
@@ -743,19 +524,19 @@ void daNpcThe_c::setMotionAnm(int i_idx, f32 i_morf) {
/* 80AFA338-80AFA6CC 002D58 0394+00 1/1 0/0 0/0 .text playExpression__10daNpcThe_cFv */
void daNpcThe_c::playExpression() {
- daNpcF_anmPlayData dat0 = {ANM_F_TALK_A, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat0 = {ANM_F_TALK_A, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData* pDat0[2] = {&dat0, NULL};
- daNpcF_anmPlayData dat1 = {ANM_F_SMILE, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat1 = {ANM_F_SMILE, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData* pDat1[2] = {&dat1, NULL};
- daNpcF_anmPlayData dat2 = {ANM_F_CHUCKLE, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat2 = {ANM_F_CHUCKLE, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData* pDat2[2] = {&dat2, NULL};
- daNpcF_anmPlayData dat3 = {ANM_F_TALK_B, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat3 = {ANM_F_TALK_B, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData* pDat3[2] = {&dat3, NULL};
- daNpcF_anmPlayData dat4 = {ANM_F_TALK_C, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat4 = {ANM_F_TALK_C, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData* pDat4[2] = {&dat4, NULL};
- daNpcF_anmPlayData dat5 = {ANM_F_LAUGH, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat5 = {ANM_F_LAUGH, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData* pDat5[2] = {&dat5, NULL};
- daNpcF_anmPlayData dat6 = {ANM_F_TALK_R, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat6 = {ANM_F_TALK_R, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData* pDat6[2] = {&dat6, NULL};
daNpcF_anmPlayData dat7 = {ANM_FH_TALK_R, 0.0f, 0};
daNpcF_anmPlayData* pDat7[2] = {&dat7, NULL};
@@ -769,23 +550,11 @@ void daNpcThe_c::playExpression() {
daNpcF_anmPlayData* pDat11[2] = {&dat11, NULL};
daNpcF_anmPlayData dat12 = {ANM_FH_LAUGH, 0.0f, 0};
daNpcF_anmPlayData* pDat12[2] = {&dat12, NULL};
- daNpcF_anmPlayData dat13 = {ANM_NONE, daNpcThe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat13 = {ANM_NONE, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat13[1] = {&dat13};
daNpcF_anmPlayData** ppDat[14] = {
- pDat0,
- pDat1,
- pDat2,
- pDat3,
- pDat4,
- pDat5,
- pDat6,
- pDat7,
- pDat8,
- pDat9,
- pDat10,
- pDat11,
- pDat12,
- pDat13,
+ pDat0, pDat1, pDat2, pDat3, pDat4, pDat5, pDat6,
+ pDat7, pDat8, pDat9, pDat10, pDat11, pDat12, pDat13,
};
if (mExpression >= 0 && mExpression < 14) {
playExpressionAnm(ppDat);
@@ -794,56 +563,99 @@ void daNpcThe_c::playExpression() {
/* 80AF9F94-80AFA338 0029B4 03A4+00 1/1 0/0 0/0 .text playMotion__10daNpcThe_cFv */
void daNpcThe_c::playMotion() {
- daNpcF_anmPlayData dat0 = {ANM_WAIT_A, daNpcThe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat0 = {ANM_WAIT_A, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat0[1] = {&dat0};
- daNpcF_anmPlayData dat1a = {ANM_LOOK_A, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat1a = {ANM_LOOK_A, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData dat1b = {ANM_WAIT_LOOKING, 0.0f, 0};
daNpcF_anmPlayData* pDat1[2] = {&dat1a, &dat1b};
- daNpcF_anmPlayData dat2a = {ANM_TO_WAIT_B, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat2a = {ANM_TO_WAIT_B, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData dat2b = {ANM_WAIT_B, 0.0f, 0};
daNpcF_anmPlayData* pDat2[2] = {&dat2a, &dat2b};
- daNpcF_anmPlayData dat3 = {ANM_WAIT_LOOKUP, daNpcThe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat3 = {ANM_WAIT_LOOKUP, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat3[1] = {&dat3};
- daNpcF_anmPlayData dat4a = {ANM_KUNE_TALK, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat4a = {ANM_KUNE_TALK, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData dat4b = {ANM_KUNE_WAIT_B, 0.0f, 0};
daNpcF_anmPlayData* pDat4[2] = {&dat4a, &dat4b};
- daNpcF_anmPlayData dat5 = {ANM_KUNE_WAIT_A, daNpcThe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat5 = {ANM_KUNE_WAIT_A, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat5[1] = {&dat5};
- daNpcF_anmPlayData dat6a = {ANM_KUNE_SHISHI, daNpcThe_Param_c::m.mMorfFrames, 1};
- daNpcF_anmPlayData dat6b = {ANM_KUNE_WAIT_A, daNpcThe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat6a = {ANM_KUNE_SHISHI, mpHIO->m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat6b = {ANM_KUNE_WAIT_A, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat6[2] = {&dat6a, &dat6b};
- daNpcF_anmPlayData dat7 = {ANM_WAIT_B, daNpcThe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat7 = {ANM_WAIT_B, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat7[1] = {&dat7};
- daNpcF_anmPlayData dat8 = {ANM_KUNE_WAIT_B, daNpcThe_Param_c::m.mMorfFrames, 0};
+ daNpcF_anmPlayData dat8 = {ANM_KUNE_WAIT_B, mpHIO->m.common.morf_frame, 0};
daNpcF_anmPlayData* pDat8[1] = {&dat8};
- daNpcF_anmPlayData dat9a = {ANM_TALK_R, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat9a = {ANM_TALK_R, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData dat9b = {ANM_TALKING_R, 0.0f, 0};
daNpcF_anmPlayData* pDat9[2] = {&dat9a, &dat9b};
- daNpcF_anmPlayData dat10a = {ANM_LOOK, daNpcThe_Param_c::m.mMorfFrames, 1};
+ daNpcF_anmPlayData dat10a = {ANM_LOOK, mpHIO->m.common.morf_frame, 1};
daNpcF_anmPlayData dat10b = {ANM_WAIT_LOOKING, 0.0f, 0};
daNpcF_anmPlayData* pDat10[2] = {&dat10a, &dat10b};
daNpcF_anmPlayData** ppDat[11] = {
- pDat0,
- pDat1,
- pDat2,
- pDat3,
- pDat4,
- pDat5,
- pDat6,
- pDat7,
- pDat8,
- pDat9,
- pDat10,
+ pDat0, pDat1, pDat2, pDat3, pDat4, pDat5, pDat6, pDat7, pDat8, pDat9, pDat10,
};
if (mMotion >= 0 && mMotion < 11) {
playMotionAnm(ppDat);
}
}
-/* 80AFC114-80AFC120 000308 000C+00 0/1 0/0 0/0 .rodata @4676 */
-static u8 const lit_4676[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
+/* 80AFB1C4-80AFB488 003BE4 02C4+00 1/1 0/0 0/0 .text lookat__10daNpcThe_cFv */
+void daNpcThe_c::lookat() {
+ fopAc_ac_c* actor = NULL;
+ J3DModel* model = mpMorf->getModel();
+
+ BOOL snap = false;
+ f32 body_angleX_min = mpHIO->m.common.body_angleX_min;
+ f32 body_angleX_max = mpHIO->m.common.body_angleX_max;
+ f32 body_angleY_min = mpHIO->m.common.body_angleY_min;
+ f32 body_angleY_max = mpHIO->m.common.body_angleY_max;
+ f32 head_angleX_min = mpHIO->m.common.head_angleX_min;
+ f32 head_angleX_max = mpHIO->m.common.head_angleX_max;
+ f32 head_angleY_min = mpHIO->m.common.head_angleY_min;
+ f32 head_angleY_max = mpHIO->m.common.head_angleY_max;
+
+ s16 angle_delta = mCurAngle.y - mOldAngle.y;
+ cXyz lookat_pos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]};
+ csXyz* lookat_angle[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]};
+
+ switch (mLookMode) {
+ case LOOK_RESET:
+ snap = true;
+ break;
+ case LOOK_PLAYER_TALK:
+ head_angleY_min = -80.0f;
+ head_angleY_max = 80.0f;
+ // fallthrough
+ case LOOK_PLAYER:
+ actor = daPy_getPlayerActorClass();
+ break;
+ case LOOK_ACTOR:
+ actor = fopAcM_SearchByName(PROC_NPC_ZRC);
+ break;
+ case LOOK_ATTN:
+ break;
+ }
+
+ if (actor != NULL) {
+ if (mLookMode == LOOK_ACTOR) {
+ mLookPos = actor->eyePos;
+ } else {
+ mLookPos = actor->attention_info.position;
+ if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK && mLookMode != LOOK_ATTN)
+ {
+ mLookPos.y -= 40.0f;
+ }
+ }
+ mLookat.setAttnPos(&mLookPos);
+ } else {
+ mLookat.setAttnPos(NULL);
+ }
+
+ mLookat.setParam(body_angleX_min, body_angleX_max, body_angleY_min, body_angleY_max, 0.0f, 0.0f,
+ 0.0f, 0.0f, head_angleX_min, head_angleX_max, head_angleY_min, head_angleY_max,
+ mCurAngle.y, lookat_pos);
+ mLookat.calc(this, model->getBaseTRMtx(), lookat_angle, snap, angle_delta, 0);
+}
/* 80AF8744-80AF8B0C 001164 03C8+00 1/0 0/0 0/0 .text wait__10daNpcThe_cFPv */
BOOL daNpcThe_c::wait(void* param_0) {
@@ -912,11 +724,10 @@ BOOL daNpcThe_c::wait(void* param_0) {
}
if (mCurAngle.y == home.angle.y) {
- fopAc_ac_c* actor =
- getAttnActorP(mActorMngr[0].getActorP() != NULL, srchAttnActor1,
- daNpcThe_Param_c::m.mAttnRadius, daNpcThe_Param_c::m.mAttnUpperY,
- daNpcThe_Param_c::m.mAttnLowerY, daNpcThe_Param_c::m.mAttnFovY,
- shape_angle.y, 120, 1);
+ fopAc_ac_c* actor = getAttnActorP(
+ mActorMngr[0].getActorP() != NULL, srchAttnActor1,
+ mpHIO->m.common.search_distance, mpHIO->m.common.search_height,
+ mpHIO->m.common.search_depth, mpHIO->m.common.fov, shape_angle.y, 120, 1);
if (actor != NULL) {
mActorMngr[1].entry(actor);
setLookMode(LOOK_ATTN);
@@ -1008,12 +819,12 @@ BOOL daNpcThe_c::talk(void* param_0) {
bvar1 = true;
} else {
if (mType == TYPE_KAKARIKO &&
- (mpMorf->getAnm() == getTrnsfrmKeyAnmP(
- l_resNames[l_bckGetParamList[24].arcIdx], l_bckGetParamList[24].fileIdx)
- || mpMorf->getAnm() == getTrnsfrmKeyAnmP(
- l_resNames[l_bckGetParamList[25].arcIdx], l_bckGetParamList[25].fileIdx)
- || mpMorf->getAnm() == getTrnsfrmKeyAnmP(
- l_resNames[l_bckGetParamList[26].arcIdx], l_bckGetParamList[26].fileIdx)))
+ (mpMorf->getAnm() == getTrnsfrmKeyAnmP(l_resNames[l_bckGetParamList[24].arcIdx],
+ l_bckGetParamList[24].fileIdx) ||
+ mpMorf->getAnm() == getTrnsfrmKeyAnmP(l_resNames[l_bckGetParamList[25].arcIdx],
+ l_bckGetParamList[25].fileIdx) ||
+ mpMorf->getAnm() == getTrnsfrmKeyAnmP(l_resNames[l_bckGetParamList[26].arcIdx],
+ l_bckGetParamList[26].fileIdx)))
{
setLookMode(LOOK_NONE);
} else {
@@ -1045,11 +856,11 @@ BOOL daNpcThe_c::talk(void* param_0) {
}
int item_no = 0;
if (mFlow.getEventId(&item_no) == 1) {
- mItemID = fopAcM_createItemForPresentDemo(&current.pos, item_no,
- 0, -1, -1, NULL, NULL);
+ mItemID = fopAcM_createItemForPresentDemo(&current.pos, item_no, 0, -1, -1,
+ NULL, NULL);
if (mItemID != -1) {
- s16 event_id = dComIfGp_getEventManager()
- .getEventIdx(this, "DEFAULT_GETITEM", 0xff);
+ s16 event_id = dComIfGp_getEventManager().getEventIdx(
+ this, "DEFAULT_GETITEM", 0xff);
dComIfGp_getEvent().reset(this);
fopAcM_orderChangeEventId(this, event_id, 1, 0xffff);
field_0x9ec = true;
@@ -1100,11 +911,11 @@ BOOL daNpcThe_c::test(void* param_0) {
case 2:
attention_info.flags = 0;
- if (mExpression != daNpcThe_Param_c::m.mTestExpression) {
- setExpression(daNpcThe_Param_c::m.mTestExpression, daNpcThe_Param_c::m.mMorfFrames);
+ if (mExpression != mpHIO->m.common.face_expression) {
+ setExpression(mpHIO->m.common.face_expression, mpHIO->m.common.morf_frame);
}
- setMotion(daNpcThe_Param_c::m.mTestMotion, daNpcThe_Param_c::m.mMorfFrames, false);
- setLookMode(daNpcThe_Param_c::m.mTestLookMode);
+ setMotion(mpHIO->m.common.motion, mpHIO->m.common.morf_frame, false);
+ setLookMode(mpHIO->m.common.look_mode);
break;
case 3:
@@ -1160,9 +971,9 @@ static cPhs__Step daNpcThe_Create(void* i_this) {
/* 80AF9358-80AF9748 001D78 03F0+00 1/1 0/0 0/0 .text create__10daNpcThe_cFv */
cPhs__Step daNpcThe_c::create() {
fopAcM_ct(this, daNpcThe_c);
-
+
mType = getTypeFromParam();
-
+
int flow_id = home.angle.x;
if (flow_id != 0xffff) {
mFlowID = flow_id;
@@ -1171,10 +982,11 @@ cPhs__Step daNpcThe_c::create() {
}
if (mType == TYPE_KAKARIKO
- /* dSv_event_flag_c::M_035 - Cutscene - [cutscene: 35] after carriage guarding event */
+ /* dSv_event_flag_c::M_035 - Cutscene - [cutscene: 35] after carriage guarding event */
&& (!dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[68])
- /* dSv_event_flag_c::M_045 - Lakebed Temple - Lakebed Temple clear */
- || dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[78]))) {
+ /* dSv_event_flag_c::M_045 - Lakebed Temple - Lakebed Temple clear */
+ || dComIfGs_isEventBit(dSv_event_flag_c::saveBitLabels[78])))
+ {
return cPhs_ERROR_e;
}
@@ -1215,19 +1027,19 @@ cPhs__Step daNpcThe_c::create() {
fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
fopAcM_setCullSizeBox2(this, mpMorf->getModel()->getModelData());
mSound.init(&current.pos, &eyePos, 3, 1);
- mAcchCir.SetWall(daNpcThe_Param_c::m.mWallR, daNpcThe_Param_c::m.mWallH);
+ mAcchCir.SetWall(mpHIO->m.common.width, mpHIO->m.common.knee_length);
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this));
mAcch.SetRoofNone();
mAcch.SetWaterNone();
mAcch.CrrPos(dComIfG_Bgsp());
- mCcStts.Init(daNpcThe_Param_c::m.mCcWeight, 0, this);
+ mCcStts.Init(mpHIO->m.common.weight, 0, this);
mColCyl.Set(mCcDCyl);
mColCyl.SetStts(&mCcStts);
mColCyl.SetTgType(0);
mColCyl.SetTgSPrm(0);
- mColCyl.SetH(daNpcThe_Param_c::m.mCylH);
- mColCyl.SetR(daNpcThe_Param_c::m.mWallR);
+ mColCyl.SetH(mpHIO->m.common.height);
+ mColCyl.SetR(mpHIO->m.common.width);
mGndChk = mAcch.m_gnd;
mGroundH = mAcch.GetGroundH();
@@ -1288,7 +1100,6 @@ static int daNpcThe_Draw(void* i_this) {
return static_cast<daNpcThe_c*>(i_this)->Draw();
}
-
/* 80AF99BC-80AF99C4 0023DC 0008+00 1/0 0/0 0/0 .text daNpcThe_IsDelete__FPv */
static int daNpcThe_IsDelete(void* i_this) {
return 1;
@@ -1302,7 +1113,7 @@ void daNpcThe_c::setParam() {
ActionFn next_action = mpNextActionFn;
mpNextActionFn = NULL;
- if (daNpcThe_Param_c::m.mTest) {
+ if (mpHIO->m.common.debug_mode_ON) {
mpNextActionFn = &test;
} else if (mTwilight) {
mpNextActionFn = &waitTW;
@@ -1315,8 +1126,8 @@ void daNpcThe_c::setParam() {
}
}
- int speak_angle_idx = mType == TYPE_KAKARIKO ? (s16)1 : daNpcThe_Param_c::m.mSpeakAngleIdx;
- int talk_angle_idx = mType == TYPE_KAKARIKO ? (s16)1 : daNpcThe_Param_c::m.mTalkAngleIdx;
+ int speak_angle_idx = mType == TYPE_KAKARIKO ? (s16)1 : mpHIO->m.common.talk_angle;
+ int talk_angle_idx = mType == TYPE_KAKARIKO ? (s16)1 : mpHIO->m.common.attention_angle;
attention_info.flags = fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e;
if (isSneaking()) {
attention_info.distances[fopAc_attn_LOCK_e] = 0x4e;
@@ -1325,29 +1136,28 @@ void daNpcThe_c::setParam() {
attention_info.flags |= fopAc_AttnFlag_UNK_0x800000;
} else {
if (!strcmp(dComIfGp_getStartStageName(), "R_SP116")) {
- attention_info.distances[fopAc_attn_LOCK_e]
- = getDistTableIdx(daNpcThe_Param_c::m.mTalkDistIdx, talk_angle_idx);
- attention_info.distances[fopAc_attn_TALK_e]
- = attention_info.distances[fopAc_attn_LOCK_e];
- attention_info.distances[fopAc_attn_SPEAK_e]
- = getDistTableIdx(daNpcThe_Param_c::m.mSpeakDistIdx + 1, speak_angle_idx);
+ attention_info.distances[fopAc_attn_LOCK_e] =
+ getDistTableIdx(mpHIO->m.common.attention_distance, talk_angle_idx);
+ attention_info.distances[fopAc_attn_TALK_e] =
+ attention_info.distances[fopAc_attn_LOCK_e];
+ attention_info.distances[fopAc_attn_SPEAK_e] =
+ getDistTableIdx(mpHIO->m.common.talk_distance + 1, speak_angle_idx);
} else {
- attention_info.distances[fopAc_attn_LOCK_e]
- = getDistTableIdx(daNpcThe_Param_c::m.mTalkDistIdx, talk_angle_idx);
- attention_info.distances[fopAc_attn_TALK_e]
- = attention_info.distances[fopAc_attn_LOCK_e];
- attention_info.distances[fopAc_attn_SPEAK_e]
- = getDistTableIdx(daNpcThe_Param_c::m.mSpeakDistIdx, speak_angle_idx);
+ attention_info.distances[fopAc_attn_LOCK_e] =
+ getDistTableIdx(mpHIO->m.common.attention_distance, talk_angle_idx);
+ attention_info.distances[fopAc_attn_TALK_e] =
+ attention_info.distances[fopAc_attn_LOCK_e];
+ attention_info.distances[fopAc_attn_SPEAK_e] =
+ getDistTableIdx(mpHIO->m.common.talk_distance, speak_angle_idx);
}
}
- scale.setall(daNpcThe_Param_c::m.mScale);
- mAcchCir.SetWallR(daNpcThe_Param_c::m.mWallR);
- mAcchCir.SetWallH(daNpcThe_Param_c::m.mWallH);
- gravity = daNpcThe_Param_c::m.mGravity;
+ scale.setall(mpHIO->m.common.scale);
+ mAcchCir.SetWallR(mpHIO->m.common.width);
+ mAcchCir.SetWallH(mpHIO->m.common.knee_length);
+ gravity = mpHIO->m.common.gravity;
}
-
/* 80AF9CF0-80AF9F94 002710 02A4+00 1/0 0/0 0/0 .text main__10daNpcThe_cFv */
// NONMATCHING dComIfG_gameInfo issues
BOOL daNpcThe_c::main() {
@@ -1370,9 +1180,8 @@ BOOL daNpcThe_c::main() {
mItemID = -1;
}
- if (!daNpcThe_Param_c::m.mTest
- && (dComIfGp_event_runCheck() == FALSE
- || (mOrderNewEvt && dComIfGp_getEvent().isOrderOK())))
+ if (!mpHIO->m.common.debug_mode_ON &&
+ (dComIfGp_event_runCheck() == FALSE || (mOrderNewEvt && dComIfGp_getEvent().isOrderOK())))
{
if (mOrderEvtNo != 0 && l_resNames[l_evtGetParamList[mOrderEvtNo]] != NULL) {
eventInfo.setArchiveName(l_resNames[l_evtGetParamList[mOrderEvtNo]]);
@@ -1421,7 +1230,8 @@ BOOL daNpcThe_c::doEvent() {
dEvent_manager_c& event_manager = dComIfGp_getEventManager();
if (eventInfo.checkCommandTalk()) {
if (mTwilight) {
- /* dSv_event_flag_c::F_0277 - Castle Town - Hear conversation between Telma and Ilia in Telma's shop (Twilight) */
+ /* dSv_event_flag_c::F_0277 - Castle Town - Hear conversation between Telma and Ilia
+ * in Telma's shop (Twilight) */
if (daNpcF_chkEvtBit(0x115)) {
mOrderEvtNo = 2;
} else {
@@ -1454,8 +1264,8 @@ BOOL daNpcThe_c::doEvent() {
setAction(&talk);
}
} else {
- s16 event_idx
- = dComIfGp_getEventManager().getEventIdx(this, "NO_RESPONSE", 0xff);
+ s16 event_idx =
+ dComIfGp_getEventManager().getEventIdx(this, "NO_RESPONSE", 0xff);
dComIfGp_getEvent().reset(this);
fopAcM_orderChangeEventId(this, event_idx, 1, 0xffff);
}
@@ -1484,8 +1294,9 @@ BOOL daNpcThe_c::doEvent() {
}
ret = true;
}
- if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1
- && event_manager.endCheck(mEventIdx)) {
+ if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1 &&
+ event_manager.endCheck(mEventIdx))
+ {
dComIfGp_event_reset();
mOrderEvtNo = 0;
mEventIdx = -1;
@@ -1514,7 +1325,6 @@ BOOL daNpcThe_c::doEvent() {
}
/* 80AFADEC-80AFAEC8 00380C 00DC+00 1/0 0/0 0/0 .text ctrlBtk__10daNpcThe_cFv */
-// NONMATCHING somehow this needs to not inline TSinCosTable<13,f32>::sinShort
BOOL daNpcThe_c::ctrlBtk() {
if (mpMatAnm != NULL) {
J3DAnmTextureSRTKey* anm = NULL;
@@ -1552,7 +1362,7 @@ void daNpcThe_c::setAttnPos() {
mDoMtx_stack_c::multVec(&vec1, &vec1);
mHeadAngle.x = cLib_targetAngleX(&mHeadPos, &vec1);
mHeadAngle.y = cLib_targetAngleY(&mHeadPos, &vec1);
-
+
cXyz* attn_pos = mLookat.getAttnPos();
if (attn_pos != NULL) {
cXyz vec2 = *attn_pos - eyePos;
@@ -1564,8 +1374,7 @@ void daNpcThe_c::setAttnPos() {
mEyeAngle.x = 0;
}
- attention_info.position.set(current.pos.x,
- current.pos.y + daNpcThe_Param_c::m.mAttnOffsetY,
+ attention_info.position.set(current.pos.x, current.pos.y + mpHIO->m.common.attention_offset,
current.pos.z);
if (!mHide) {
@@ -1574,65 +1383,6 @@ void daNpcThe_c::setAttnPos() {
}
}
-/* 80AFB1C4-80AFB488 003BE4 02C4+00 1/1 0/0 0/0 .text lookat__10daNpcThe_cFv */
-// NONMATCHING rodata problems
-void daNpcThe_c::lookat() {
- fopAc_ac_c* actor = NULL;
- J3DModel* model = mpMorf->getModel();
- BOOL snap = false;
- f32 body_down_angle = daNpcThe_Param_c::m.mBodyDownAngle;
- f32 body_up_angle = daNpcThe_Param_c::m.mBodyUpAngle;
- f32 body_right_angle = daNpcThe_Param_c::m.mBodyRightAngle;
- f32 body_left_angle = daNpcThe_Param_c::m.mBodyLeftAngle;
- f32 head_down_angle = daNpcThe_Param_c::m.mHeadDownAngle;
- f32 head_up_angle = daNpcThe_Param_c::m.mHeadUpAngle;
- f32 head_right_angle = daNpcThe_Param_c::m.mHeadRightAngle;
- f32 head_left_angle = daNpcThe_Param_c::m.mHeadLeftAngle;
- s16 angle_delta = mCurAngle.y - mOldAngle.y;
- cXyz lookat_pos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]};
- csXyz* lookat_angle[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]};
-
- switch (mLookMode) {
- case LOOK_RESET:
- snap = true;
- break;
- case LOOK_PLAYER_TALK:
- head_right_angle = -80.0f;
- head_left_angle = 80.0f;
- // fallthrough
- case LOOK_PLAYER:
- actor = daPy_getPlayerActorClass();
- break;
- case LOOK_ACTOR:
- actor = fopAcM_SearchByName(PROC_NPC_ZRC);
- break;
- case LOOK_ATTN:
- break;
- }
-
- if (actor != NULL) {
- if (mLookMode == LOOK_ACTOR) {
- mLookPos = actor->eyePos;
- } else {
- mLookPos = actor->attention_info.position;
- if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK && mLookMode != LOOK_ATTN)
- {
- mLookPos.y -= 40.0f;
- }
- }
- mLookat.setAttnPos(&mLookPos);
- } else {
- mLookat.setAttnPos(NULL);
- }
-
- mLookat.setParam(body_down_angle, body_up_angle, body_right_angle, body_left_angle,
- 0.0f, 0.0f, 0.0f, 0.0f,
- head_down_angle, head_up_angle, head_right_angle, head_left_angle,
- mCurAngle.y, lookat_pos);
- mLookat.calc(this, model->getBaseTRMtx(), lookat_angle, snap, angle_delta, 0);
-}
-
-
/* 80AFB488-80AFB490 003EA8 0008+00 1/0 0/0 0/0 .text drawDbgInfo__10daNpcThe_cFv */
BOOL daNpcThe_c::drawDbgInfo() {
return false;
@@ -1640,10 +1390,8 @@ BOOL daNpcThe_c::drawDbgInfo() {
/* 80AFC534-80AFC554 -00001 0020+00 1/0 0/0 0/0 .data daNpcThe_MethodTable */
static actor_method_class daNpcThe_MethodTable = {
- (process_method_func)daNpcThe_Create,
- (process_method_func)daNpcThe_Delete,
- (process_method_func)daNpcThe_Execute,
- (process_method_func)daNpcThe_IsDelete,
+ (process_method_func)daNpcThe_Create, (process_method_func)daNpcThe_Delete,
+ (process_method_func)daNpcThe_Execute, (process_method_func)daNpcThe_IsDelete,
(process_method_func)daNpcThe_Draw,
};
diff --git a/src/d/actor/d_a_npc_uri.cpp b/src/d/actor/d_a_npc_uri.cpp
index 3f253d8854..cb0831a39b 100644
--- a/src/d/actor/d_a_npc_uri.cpp
+++ b/src/d/actor/d_a_npc_uri.cpp
@@ -1,14 +1,84 @@
/**
-* @file d_a_npc_uri.cpp
+ * @file d_a_npc_uri.cpp
*
*/
-#include "d/dolzel_rel.h" // IWYU pragma: keep
+#include "d/dolzel_rel.h" // IWYU pragma: keep
-#include "d/actor/d_a_npc_uri.h"
#include "Z2AudioLib/Z2Instances.h"
+#include "d/actor/d_a_npc_uri.h"
#include "m_Do/m_Do_graphic.h"
+/* 80B2CE14-80B2CEC0 000000 00AC+00 14/14 0/0 0/0 .rodata m__17daNpc_Uri_Param_c */
+const daNpc_Uri_HIOParam daNpc_Uri_Param_c::m = {
+ 200.0f, // attention_offset
+ -3.0f, // gravity
+ 1.0f, // scale
+ 500.0f, // real_shadow_size
+ 255.0f, // weight
+ 180.0f, // height
+ 35.0f, // knee_length
+ 30.0f, // width
+ 0.0f, // body_angleX_max
+ 0.0f, // body_angleX_min
+ 10.0f, // body_angleY_max
+ -10.0f, // body_angleY_min
+ 30.0f, // head_angleX_max
+ -10.0f, // head_angleX_min
+ 45.0f, // head_angleY_max
+ -45.0f, // head_angleY_min
+ 0.6f, // neck_rotation_ratio
+ 20.0f, // morf_frame
+ 3, // talk_distance
+ 6, // talk_angle
+ 5, // attention_distance
+ 6, // attention_angle
+ 110.0f, // fov
+ 400.0f, // search_distance
+ 300.0f, // search_height
+ -300.0f, // search_depth
+ 60, // attention_time
+ 8, // damage_time
+ 0, // face_expression
+ 0, // motion
+ 0, // look_mode
+ 0, // debug_mode_ON
+ 0, // debug_info_ON
+ 4.0f, // expression_morf_frame
+ 0.0f, // box_min_x
+ 0.0f, // box_min_y
+ 0.0f, // box_min_z
+ 0.0f, // box_max_x
+ 0.0f, // box_max_y
+ 0.0f, // box_max_z
+ 0.0f, // box_offset
+ 120, // field_0x8c
+ 120, // field_0x8e
+ 60, // field_0x90
+ 180, // field_0x92
+ 10, // field_0x94
+ 0, // field_0x96
+ 350.0f, // field_0x98
+ 400.0f, // field_0x9c
+ 3000.0f, // field_0xa0
+ 200.0f, // field_0xa4
+ 600.0f, // field_0xa8
+};
+
+#if DEBUG
+daNpc_Uri_HIO_c::daNpc_Uri_HIO_c() {
+ m = daNpc_Uri_Param_c::m;
+}
+
+void daNpc_Uri_HIO_c::listenPropertyEvent(const JORPropertyEvent* event) {
+ // TODO
+}
+
+void daNpc_Uri_HIO_c::genMessage(JORMContext* ctext) {
+ // TODO
+}
+#endif
+
/* 80B2D068-80B2D078 000020 0010+00 1/1 0/0 0/0 .data l_bmdData */
static int l_bmdData[2][2] = {{12, 1}, {33, 2}};
@@ -164,54 +234,6 @@ daNpc_Uri_c::~daNpc_Uri_c() {
deleteRes(l_loadResPtrnList[mType], (char const**)l_resNameList);
}
-/* ############################################################################################## */
-/* 80B2CE14-80B2CEC0 000000 00AC+00 14/14 0/0 0/0 .rodata m__17daNpc_Uri_Param_c */
-daNpc_Uri_HIOParam const daNpc_Uri_Param_c::m = {
- 200.0f, // field_0x00
- -3.0f, // field_0x04
- 1.0f, // field_0x08
- 500.0f, // field_0x0c
- 255.0f, // field_0x10
- 180.0f, // field_0x14
- 35.0f, // field_0x18
- 30.0f, // field_0x1c
- 0.0f, // field_0x20
- 0.0f, // field_0x24
- 10.0f, // field_0x28
- -10.0f, // field_0x2c
- 30.0f, // field_0x30
- -10.0f, // field_0x34
- 45.0f, // field_0x38
- -45.0f, // field_0x3c
- 0.6f, // field_0x40
- 20.0f, // field_0x44
- 3, // field_0x48
- 6, // field_0x4a
- 5, // field_0x4c
- 6, // field_0x4e
- 110.0f, // field_0x50
- 400.0f, // field_0x54
- 300.0f, // field_0x58
- -300.0f, // field_0x5c
- 60, // field_0x60
- 8, // field_0x62
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 4.0f, // field_0x6c
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 120, // field_0x8c
- 120, // field_0x8e
- 60, // field_0x90
- 180, // field_0x92
- 10, // field_0x94
- 0, // field_0x96
- 350.0f, // field_0x98
- 400.0f, // field_0x9c
- 3000.0f, // field_0xa0
- 200.0f, // field_0xa4
- 600.0f, // field_0xa8
-};
-
/* 80B268F8-80B26BE4 000238 02EC+00 1/1 0/0 0/0 .text create__11daNpc_Uri_cFv */
int daNpc_Uri_c::create() {
static const int heapSize[] = {0, 0x3F20, 0, 0, 0x3740, 0x3740, 0};
@@ -242,7 +264,7 @@ int daNpc_Uri_c::create() {
reset();
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this));
- mCcStts.Init(daNpc_Uri_Param_c::m.field_0x10, 0, this);
+ mCcStts.Init(daNpc_Uri_Param_c::m.common.weight, 0, this);
mCyl.Set(mCcDCyl);
mCyl.SetStts(&mCcStts);
mCyl.SetTgHitCallback(tgHitCallBack);
@@ -433,7 +455,8 @@ void daNpc_Uri_c::reset() {
field_0xfd8 = cStack_44;
field_0xfe4.setall(0);
field_0xfe4.y = cLib_targetAngleY(&acStack_38, &field_0xfd8);
- /* dSv_event_flag_c::F_0032 - Ordon Ranch - 3rd day - First convo with fado (before forced goat chase) */
+ /* dSv_event_flag_c::F_0032 - Ordon Ranch - 3rd day - First convo with fado (before forced
+ * goat chase) */
if (daNpcT_chkEvtBit(0x25)) {
setPos(cStack_44);
cStack_a0.y = cLib_targetAngleY(&acStack_38, &cStack_44);
@@ -446,23 +469,26 @@ void daNpc_Uri_c::reset() {
cStack_a0.y = cLib_targetAngleY(&acStack_38, &cStack_44);
mPath.setNextIdx(mPath.getNumPnts());
}
- /* dSv_event_flag_c::F_0027 - Ordon Village - Uli tutorial ends (same whether pass or fail) */
+ /* dSv_event_flag_c::F_0027 - Ordon Village - Uli tutorial ends (same whether pass or fail)
+ */
if (daNpcT_chkEvtBit(0x20)
- /* dSv_event_flag_c::F_0025 - Ordon Village - Pass Uli's pick-up tutorial */
+ /* dSv_event_flag_c::F_0025 - Ordon Village - Pass Uli's pick-up tutorial */
|| daNpcT_chkEvtBit(0x1E)
- /* dSv_event_flag_c::F_0048 - Ordon Village - Uli's pick-up tutorial <fail> */
- || daNpcT_chkEvtBit(0x92) )
+ /* dSv_event_flag_c::F_0048 - Ordon Village - Uli's pick-up tutorial <fail> */
+ || daNpcT_chkEvtBit(0x92))
{
setPos(home.pos);
- /* dSv_event_flag_c::F_0027 - Ordon Village - Uli tutorial ends (same whether pass or fail) */
+ /* dSv_event_flag_c::F_0027 - Ordon Village - Uli tutorial ends (same whether pass or
+ * fail) */
if (daNpcT_chkEvtBit(0x20)) {
field_0x100d = 1;
} else {
- /* dSv_event_flag_c::F_0025 - Ordon Village - Pass Uli's pick-up tutorial */
+ /* dSv_event_flag_c::F_0025 - Ordon Village - Pass Uli's pick-up tutorial */
if (daNpcT_chkEvtBit(0x1E)
- /* dSv_event_flag_c::F_0048 - Ordon Village - Uli's pick-up tutorial <fail> */
- || daNpcT_chkEvtBit(0x92)) {
+ /* dSv_event_flag_c::F_0048 - Ordon Village - Uli's pick-up tutorial <fail> */
+ || daNpcT_chkEvtBit(0x92))
+ {
field_0x100f = 1;
}
}
@@ -480,7 +506,8 @@ void daNpc_Uri_c::reset() {
/* T_0007 - Ordon Village - During Uli's pick-up tutorial */
daNpcT_offTmpBit(7);
- /* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding Uli, Ordon village night */
+ /* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding Uli, Ordon village night
+ */
dComIfGs_offTmpBit(0x1308);
setAngle(cStack_a0);
}
@@ -509,10 +536,10 @@ void daNpc_Uri_c::setParam() {
selectAction();
srchActors();
- s16 sVar7 = daNpc_Uri_Param_c::m.field_0x48;
- s16 sVar6 = daNpc_Uri_Param_c::m.field_0x4a;
- s16 sVar5 = daNpc_Uri_Param_c::m.field_0x4c;
- s16 sVar4 = daNpc_Uri_Param_c::m.field_0x4e;
+ s16 sVar7 = mpHIO->m.common.talk_distance;
+ s16 sVar6 = mpHIO->m.common.talk_angle;
+ s16 sVar5 = mpHIO->m.common.attention_distance;
+ s16 sVar4 = mpHIO->m.common.attention_angle;
if (mType == TYPE_1) {
sVar6 = 4;
sVar4 = 4;
@@ -528,18 +555,17 @@ void daNpc_Uri_c::setParam() {
attention_info.distances[fopAc_attn_TALK_e] = attention_info.distances[fopAc_attn_LOCK_e];
attention_info.distances[fopAc_attn_SPEAK_e] = daNpcT_getDistTableIdx(sVar7, sVar6);
attention_info.flags = (fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e);
- scale.set(daNpc_Uri_Param_c::m.field_0x08, daNpc_Uri_Param_c::m.field_0x08,
- daNpc_Uri_Param_c::m.field_0x08);
- mCcStts.SetWeight(daNpc_Uri_Param_c::m.field_0x10);
- mCylH = daNpc_Uri_Param_c::m.field_0x14;
- mWallR = daNpc_Uri_Param_c::m.field_0x1c;
- mAttnFovY = daNpc_Uri_Param_c::m.field_0x50;
+ scale.set(mpHIO->m.common.scale, mpHIO->m.common.scale, mpHIO->m.common.scale);
+ mCcStts.SetWeight(mpHIO->m.common.weight);
+ mCylH = mpHIO->m.common.height;
+ mWallR = mpHIO->m.common.width;
+ mAttnFovY = mpHIO->m.common.fov;
mAcchCir.SetWallR(mWallR);
- mAcchCir.SetWallH(daNpc_Uri_Param_c::m.field_0x18);
- mRealShadowSize = daNpc_Uri_Param_c::m.field_0x0c;
- gravity = daNpc_Uri_Param_c::m.field_0x04;
- mExpressionMorfFrame = daNpc_Uri_Param_c::m.field_0x6c;
- mMorfFrames = daNpc_Uri_Param_c::m.field_0x44;
+ mAcchCir.SetWallH(mpHIO->m.common.knee_length);
+ mRealShadowSize = mpHIO->m.common.real_shadow_size;
+ gravity = mpHIO->m.common.gravity;
+ mExpressionMorfFrame = mpHIO->m.common.expression_morf_frame;
+ mMorfFrames = mpHIO->m.common.morf_frame;
if (mType == TYPE_4) {
mAcch.SetGrndNone();
mAcch.SetWallNone();
@@ -562,13 +588,15 @@ BOOL daNpc_Uri_c::checkChangeEvt() {
switch (mType) {
case TYPE_1:
- /* dSv_event_flag_c::F_0025 - Ordon Village - Pass Uli's pick-up tutorial */
+ /* dSv_event_flag_c::F_0025 - Ordon Village - Pass Uli's pick-up tutorial */
if (!daNpcT_chkEvtBit(0x1E)
- /* dSv_event_flag_c::F_0048 - Ordon Village - Uli's pick-up tutorial <fail> */
- && !daNpcT_chkEvtBit(0x92)) {
- /* T_0007 - Ordon Village - During Uli's pick-up tutorial */
+ /* dSv_event_flag_c::F_0048 - Ordon Village - Uli's pick-up tutorial <fail> */
+ && !daNpcT_chkEvtBit(0x92))
+ {
+ /* T_0007 - Ordon Village - During Uli's pick-up tutorial */
if (!daNpcT_chkTmpBit(0x7)) {
- /* dSv_event_flag_c::F_0031 - Ordon Village - 2nd day - Spoke to Uli bfore finding basket */
+ /* dSv_event_flag_c::F_0031 - Ordon Village - 2nd day - Spoke to Uli bfore
+ * finding basket */
if (daNpcT_chkEvtBit(0x24)) {
mEvtNo = 4;
} else {
@@ -577,7 +605,8 @@ BOOL daNpc_Uri_c::checkChangeEvt() {
evtChange();
return TRUE;
}
- /* dSv_event_flag_c::F_0027 - Ordon Village - Uli tutorial ends (same whether pass or fail) */
+ /* dSv_event_flag_c::F_0027 - Ordon Village - Uli tutorial ends (same whether pass
+ * or fail) */
} else if (!daNpcT_chkEvtBit(0x20) && field_0x100b == 0) {
mEvtNo = 7;
evtChange();
@@ -585,10 +614,13 @@ BOOL daNpc_Uri_c::checkChangeEvt() {
}
break;
case TYPE_4:
- /* dSv_event_flag_c::M_028 - Cutscene - [cutscene: 14] restore mountain spirit - Reuinion with Colin et al. */
+ /* dSv_event_flag_c::M_028 - Cutscene - [cutscene: 14] restore mountain spirit -
+ * Reuinion with Colin et al. */
if (daNpcT_chkEvtBit(0x3D)
- /* dSv_event_flag_c::F_0330 - Ordon Village - Meet again with Uli for the first time (first forced conversation) */
- && !daNpcT_chkEvtBit(0x14A)) {
+ /* dSv_event_flag_c::F_0330 - Ordon Village - Meet again with Uli for the first time
+ (first forced conversation) */
+ && !daNpcT_chkEvtBit(0x14A))
+ {
mEvtNo = 10;
evtChange();
return TRUE;
@@ -714,7 +746,7 @@ void daNpc_Uri_c::beforeMove() {
}
/* 80B2DD64-80B2DD68 000054 0004+00 1/1 0/0 0/0 .bss l_HIO */
-static daNpc_Uri_Param_c l_HIO;
+NPC_URI_HIO_CLASS l_HIO;
/* 80B27FD8-80B28318 001918 0340+00 1/0 0/0 0/0 .text setAttnPos__11daNpc_Uri_cFv */
void daNpc_Uri_c::setAttnPos() {
@@ -724,9 +756,12 @@ void daNpc_Uri_c::setAttnPos() {
f32 dVar6 = cM_s2rad(mCurAngle.y - field_0xd7e.y);
mJntAnm.setParam(this, mpMorf[0]->getModel(), &acStack_3c, getBackboneJointNo(),
- getNeckJointNo(), getHeadJointNo(), l_HIO.m.field_0x24, l_HIO.m.field_0x20,
- l_HIO.m.field_0x2c, l_HIO.m.field_0x28, l_HIO.m.field_0x34, l_HIO.m.field_0x30,
- l_HIO.m.field_0x3c, l_HIO.m.field_0x38, l_HIO.m.field_0x40, dVar6, NULL);
+ getNeckJointNo(), getHeadJointNo(), mpHIO->m.common.body_angleX_min,
+ mpHIO->m.common.body_angleX_max, mpHIO->m.common.body_angleY_min,
+ mpHIO->m.common.body_angleY_max, mpHIO->m.common.head_angleX_min,
+ mpHIO->m.common.head_angleX_max, mpHIO->m.common.head_angleY_min,
+ mpHIO->m.common.head_angleY_max, mpHIO->m.common.neck_rotation_ratio, dVar6,
+ NULL);
mJntAnm.calcJntRad(0.2f, 1.0f, dVar6);
setMtx();
@@ -737,7 +772,7 @@ void daNpc_Uri_c::setAttnPos() {
mJntAnm.setEyeAngleY(eyePos, mCurAngle.y + field_0xd8a.y, 1, 1.0f, 0);
acStack_3c.set(0.0f, 0.0f, 0.0f);
- acStack_3c.y = l_HIO.m.field_0x00;
+ acStack_3c.y = mpHIO->m.common.attention_offset;
if (field_0x100d != 0) {
if (mType == TYPE_1) {
@@ -907,7 +942,7 @@ int daNpc_Uri_c::selectAction() {
field_0xfc0[0] = &daNpc_Uri_c::sitWait;
} else {
if (field_0x100e != NULL) {
- /* T_0007 - Ordon Village - During Uli's pick-up tutorial */
+ /* T_0007 - Ordon Village - During Uli's pick-up tutorial */
if (daNpcT_chkTmpBit(7) && field_0x100f == NULL) {
field_0xfc0[0] = &daNpc_Uri_c::walk;
} else {
@@ -975,16 +1010,16 @@ int daNpc_Uri_c::getTutorialCond(cXyz param_1) {
cXyz cStack_5c;
local_44 = mPath.getPntPos(mPath.getNumPnts() - 1);
- if (local_44.absXZ(param_1) < daNpc_Uri_Param_c::m.field_0x98) {
+ if (local_44.absXZ(param_1) < mpHIO->m.field_0x98) {
return 9;
}
f32 fVar11 = (param_1 - current.pos).absXZ();
s16 sVar8 = cLib_targetAngleY(&current.pos, &param_1) - mCurAngle.y;
s16 uVar5 = abs(sVar8);
- if (daNpc_Uri_Param_c::m.field_0xa4 < fVar11 && ((u32)uVar5 & 0xFFFF) > 0x4000) {
- if (daNpc_Uri_Param_c::m.field_0xa8 < fVar11) {
- field_0x1000 = daNpc_Uri_Param_c::m.field_0xa8 - 100.0f;
+ if (mpHIO->m.field_0xa4 < fVar11 && ((u32)uVar5 & 0xFFFF) > 0x4000) {
+ if (mpHIO->m.field_0xa8 < fVar11) {
+ field_0x1000 = mpHIO->m.field_0xa8 - 100.0f;
return 5;
}
if (field_0x1009 != NULL) {
@@ -996,13 +1031,13 @@ int daNpc_Uri_c::getTutorialCond(cXyz param_1) {
for (i = 0; i < mPath.getNumPnts() - 1; i++) {
local_44 = mPath.getPntPos(i);
local_50 = mPath.getPntPos(i + 1);
- if (!((param_1 - local_44).absXZ() < daNpc_Uri_Param_c::m.field_0xa8)) {
- if (!((param_1 - local_50).absXZ() < daNpc_Uri_Param_c::m.field_0xa8)) {
+ if (!((param_1 - local_44).absXZ() < mpHIO->m.field_0xa8)) {
+ if (!((param_1 - local_50).absXZ() < mpHIO->m.field_0xa8)) {
f32 local_a8;
if (cM3d_Len2dSqPntAndSegLine(param_1.x, param_1.z, local_44.x, local_44.z,
local_50.x, local_50.z, &cStack_5c.x, &cStack_5c.z,
&local_a8) &&
- local_a8 < daNpc_Uri_Param_c::m.field_0xa8)
+ local_a8 < mpHIO->m.field_0xa8)
{
break;
}
@@ -1015,7 +1050,7 @@ int daNpc_Uri_c::getTutorialCond(cXyz param_1) {
}
if (mPath.getNumPnts() - 1 <= i) {
- field_0x1000 = daNpc_Uri_Param_c::m.field_0xa8 - 100.0f;
+ field_0x1000 = mpHIO->m.field_0xa8 - 100.0f;
return 5;
}
@@ -1180,7 +1215,8 @@ int daNpc_Uri_c::cutEndCarryTutorial(int param_1) {
if (fopAcM_IsExecuting(mItemPartnerId)) {
/* T_0007 - Ordon Village - During Uli's pick-up tutorial */
daNpcT_offTmpBit(7);
- /* dSv_event_tmp_flag_c::T_0009 - Ordon Village - Walked a bit during Uli's pick-up tutorial */
+ /* dSv_event_tmp_flag_c::T_0009 - Ordon Village - Walked a bit during Uli's pick-up
+ * tutorial */
daNpcT_offTmpBit(10);
/* dSv_event_tmp_flag_c::T_0031 - Ordon Village - Borrow Rusl's sword */
daNpcT_offTmpBit(0x20);
@@ -1270,14 +1306,15 @@ int daNpc_Uri_c::cutFindWolf(int param_1) {
sVar9 = -0x4000;
}
sVar9 += home.angle.y;
- cStack_2c.set(0.0f, 300.0f, daNpc_Uri_Param_c::m.field_0x54 + 150.0f);
+ cStack_2c.set(0.0f, 300.0f, mpHIO->m.common.search_distance + 150.0f);
mDoMtx_stack_c::YrotS(sVar9);
mDoMtx_stack_c::multVec(&cStack_2c, &cStack_2c);
cStack_2c += current.pos;
mGndChk.SetPos(&cStack_2c);
cStack_2c.y = dComIfG_Bgsp().GroundCross(&mGndChk);
daPy_getPlayerActorClass()->setPlayerPosAndAngle(&cStack_2c, sVar9 - (s16)0x8000, 0);
- /* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding Uli, Ordon village night */
+ /* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding Uli, Ordon village
+ * night */
dComIfGs_onTmpBit(0x1308);
break;
case 1:
@@ -1332,7 +1369,8 @@ int daNpc_Uri_c::cutMeetingAgain(int param_1) {
switch (iVar10) {
case 0:
mJntAnm.lookPlayer(0);
- /* dSv_event_tmp_flag_c::T_0010 - General use - General use temporary flag (flow control) A */
+ /* dSv_event_tmp_flag_c::T_0010 - General use - General use temporary flag (flow
+ * control) A */
daNpcT_offTmpBit(0xB);
initTalk(mFlowNodeNo, NULL);
break;
@@ -1393,7 +1431,7 @@ int daNpc_Uri_c::cutMeetingAgain(int param_1) {
/* 80B29EA0-80B2A1B4 0037E0 0314+00 1/0 0/0 0/0 .text krun__11daNpc_Uri_cFPv */
int daNpc_Uri_c::krun(void* param_0) {
- int iVar7 = daNpc_Uri_Param_c::m.field_0x8c / 2;
+ int iVar7 = mpHIO->m.field_0x8c / 2;
switch (mMode) {
case MODE_ENTER:
@@ -1455,10 +1493,12 @@ int daNpc_Uri_c::wait(void* param_0) {
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
} else {
if (field_0x100f) {
- /* dSv_event_flag_c::F_0025 - Ordon Village - Pass Uli's pick-up tutorial */
+ /* dSv_event_flag_c::F_0025 - Ordon Village - Pass Uli's pick-up tutorial */
if (!daNpcT_chkEvtBit(0x1E)
- /* dSv_event_flag_c::F_0048 - Ordon Village - Uli's pick-up tutorial <fail> */
- && !daNpcT_chkEvtBit(0x92)) {
+ /* dSv_event_flag_c::F_0048 - Ordon Village - Uli's pick-up tutorial
+ <fail> */
+ && !daNpcT_chkEvtBit(0x92))
+ {
mFaceMotionSeqMngr.setNo(17, -1.0f, 0, 0);
mMotionSeqMngr.setNo(8, -1.0f, 0, 0);
} else {
@@ -1466,7 +1506,8 @@ int daNpc_Uri_c::wait(void* param_0) {
mMotionSeqMngr.setNo(0, -1.0f, 0, 0);
}
} else {
- /* dSv_event_flag_c::F_0031 - Ordon Village - 2nd day - Spoke to Uli bfore finding basket */
+ /* dSv_event_flag_c::F_0031 - Ordon Village - 2nd day - Spoke to Uli bfore
+ * finding basket */
if (daNpcT_chkEvtBit(0x24)) {
mFaceMotionSeqMngr.setNo(5, -1.0f, 0, 0);
mMotionSeqMngr.setNo(12, -1.0f, 0, 0);
@@ -1478,7 +1519,8 @@ int daNpc_Uri_c::wait(void* param_0) {
}
break;
case TYPE_3:
- /* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding Uli, Ordon village night */
+ /* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding Uli, Ordon
+ * village night */
if (dComIfGs_isTmpBit(0x1308)) {
mFaceMotionSeqMngr.setNo(12, -1.0f, 0, 0);
mMotionSeqMngr.setNo(22, -1.0f, 0, 0);
@@ -1496,7 +1538,7 @@ int daNpc_Uri_c::wait(void* param_0) {
case MODE_RUN:
switch (mType) {
case TYPE_1:
- /* T_0007 - Ordon Village - During Uli's pick-up tutorial */
+ /* T_0007 - Ordon Village - During Uli's pick-up tutorial */
if (daNpcT_chkTmpBit(0x7)) {
if (chkPlayerCarryBasket()) {
switch (getTutorialCond(daPy_getPlayerActorClass()->current.pos)) {
@@ -1512,10 +1554,11 @@ int daNpc_Uri_c::wait(void* param_0) {
}
}
} else {
- /* dSv_event_flag_c::F_0025 - Ordon Village - Pass Uli's pick-up tutorial */
+ /* dSv_event_flag_c::F_0025 - Ordon Village - Pass Uli's pick-up tutorial */
if (!daNpcT_chkEvtBit(0x1E)
- /* dSv_event_flag_c::F_0048 - Ordon Village - Uli's pick-up tutorial <fail> */
- && !daNpcT_chkEvtBit(0x92)) {
+ /* dSv_event_flag_c::F_0048 - Ordon Village - Uli's pick-up tutorial <fail> */
+ && !daNpcT_chkEvtBit(0x92))
+ {
cXyz acStack_70 = getAttnPos(daPy_getPlayerActorClass());
int dist_index = attention_info.distances[1];
f32 fVar2 = dComIfGp_getAttention()->getDistTable(dist_index).mLowerY * -1.0f;
@@ -1523,7 +1566,8 @@ int daNpc_Uri_c::wait(void* param_0) {
if (chkPointInArea(acStack_70, attention_info.position, 200.0f, fVar2, fVar3,
0))
{
- if (daPy_getPlayerActorClass()->eventInfo.chkCondition(dEvtCnd_CANTALK_e) != 0 &&
+ if (daPy_getPlayerActorClass()->eventInfo.chkCondition(dEvtCnd_CANTALK_e) !=
+ 0 &&
chkPlayerCarryBasket())
{
mEvtNo = 5;
@@ -1536,15 +1580,18 @@ int daNpc_Uri_c::wait(void* param_0) {
case TYPE_2:
break;
case TYPE_3:
- /* dSv_event_flag_c::F_0205 - Ordon Village - Heard Rusl and Uli talking in Ordon village at night */
+ /* dSv_event_flag_c::F_0205 - Ordon Village - Heard Rusl and Uli talking in Ordon
+ * village at night */
if (daNpcT_chkEvtBit(0xCD)) {
cXyz cStack_7c = getAttnPos(daPy_getPlayerActorClass());
if (chkPointInArea(cStack_7c, attention_info.position,
- daNpc_Uri_Param_c::m.field_0x54, daNpc_Uri_Param_c::m.field_0x58,
- daNpc_Uri_Param_c::m.field_0x5c, mCurAngle.y))
+ mpHIO->m.common.search_distance, mpHIO->m.common.search_height,
+ mpHIO->m.common.search_depth, mCurAngle.y))
{
if (!daPy_getPlayerActorClass()->checkPlayerFly()) {
- if (daPy_getPlayerActorClass()->eventInfo.chkCondition(dEvtCnd_CANTALK_e) != 0) {
+ if (daPy_getPlayerActorClass()->eventInfo.chkCondition(dEvtCnd_CANTALK_e) !=
+ 0)
+ {
if (chkActorInSight(daPy_getPlayerActorClass(), mAttnFovY,
home.angle.y))
{
@@ -1564,7 +1611,8 @@ int daNpc_Uri_c::wait(void* param_0) {
mSpeakEvent = true;
field_0xe33 = true;
}
- /* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding Uli, Ordon village night */
+ /* dSv_event_tmp_flag_c::GUARD_URI - Ordon Village - Rusl is guarding Uli, Ordon village
+ * night */
if (dComIfGs_isTmpBit(0x1308)) {
mPlayerActorMngr.entry(daPy_getPlayerActorClass());
mJntAnm.lookPlayer(0);
@@ -1621,9 +1669,9 @@ int daNpc_Uri_c::wait(void* param_0) {
/* 80B2AB60-80B2B24C 0044A0 06EC+00 1/0 0/0 0/0 .text walk__11daNpc_Uri_cFPv */
int daNpc_Uri_c::walk(void* param_0) {
BOOL bVar = FALSE;
- int uVar2 = daNpc_Uri_Param_c::m.field_0x8c;
- int uVar3 = daNpc_Uri_Param_c::m.field_0x8e;
- int uVar4 = daNpc_Uri_Param_c::m.field_0x90;
+ int uVar2 = mpHIO->m.field_0x8c;
+ int uVar3 = mpHIO->m.field_0x8e;
+ int uVar4 = mpHIO->m.field_0x90;
switch (mMode) {
case MODE_ENTER:
@@ -1745,7 +1793,7 @@ int daNpc_Uri_c::walk(void* param_0) {
/* 80B2B24C-80B2B7C0 004B8C 0574+00 2/0 0/0 0/0 .text sitWait__11daNpc_Uri_cFPv */
int daNpc_Uri_c::sitWait(void* param_0) {
- int sVar2 = daNpc_Uri_Param_c::m.field_0x92;
+ int sVar2 = mpHIO->m.field_0x92;
switch (mMode) {
case MODE_ENTER:
@@ -1763,12 +1811,14 @@ int daNpc_Uri_c::sitWait(void* param_0) {
}
break;
case TYPE_4:
- /* dSv_event_flag_c::M_028 - Cutscene - [cutscene: 14] restore mountain spirit - Reuinion with Colin et al. */
+ /* dSv_event_flag_c::M_028 - Cutscene - [cutscene: 14] restore mountain spirit -
+ * Reuinion with Colin et al. */
if (daNpcT_chkEvtBit(0x3D)
- /* dSv_event_flag_c::F_0330 - Ordon Village - Meet again with Uli for the first time
- (first forced conversation) */
+ /* dSv_event_flag_c::F_0330 - Ordon Village - Meet again with Uli for the first
+ time (first forced conversation) */
&& (daNpcT_chkEvtBit(0x14A)
- /* dSv_event_flag_c::F_0516 - Ordon Village - Told Uli directly about having found kids */
+ /* dSv_event_flag_c::F_0516 - Ordon Village - Told Uli directly about having
+ found kids */
|| daNpcT_chkEvtBit(0x204)))
{
mFaceMotionSeqMngr.setNo(17, -1.0f, 0, 0);
@@ -1782,8 +1832,8 @@ int daNpc_Uri_c::sitWait(void* param_0) {
mMode = MODE_RUN;
}
case MODE_RUN:
- /* dSv_event_flag_c::F_0330 - Ordon Village - Meet again with Uli for the first time
- (first forced conversation) */
+ /* dSv_event_flag_c::F_0330 - Ordon Village - Meet again with Uli for the first time
+ (first forced conversation) */
if (mType == TYPE_4 && !daNpcT_chkEvtBit(0x14A)) {
mSpeakEvent = true;
field_0xe33 = true;
diff --git a/src/d/actor/d_a_obj_szbridge.cpp b/src/d/actor/d_a_obj_szbridge.cpp
index f5bc8b298b..25d5a0834f 100644
--- a/src/d/actor/d_a_obj_szbridge.cpp
+++ b/src/d/actor/d_a_obj_szbridge.cpp
@@ -1,389 +1,214 @@
/**
* @file d_a_obj_szbridge.cpp
- *
-*/
+ *
+ */
-#include "d/dolzel_rel.h" // IWYU pragma: keep
+#include "d/dolzel_rel.h" // IWYU pragma: keep
#include "d/actor/d_a_obj_szbridge.h"
-#include "dol2asm.h"
-
-
-//
-// Forward References:
-//
-
-extern "C" static void rideCallback__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c();
-extern "C" void rideActor__15daObjSZbridge_cFP10fopAc_ac_c();
-extern "C" void create1st__15daObjSZbridge_cFv();
-extern "C" void setMtx__15daObjSZbridge_cFv();
-extern "C" void CreateHeap__15daObjSZbridge_cFv();
-extern "C" void chkBg__15daObjSZbridge_cFv();
-extern "C" void __dt__11dBgS_WtrChkFv();
-extern "C" void __dt__14dBgS_ObjGndChkFv();
-extern "C" void Create__15daObjSZbridge_cFv();
-extern "C" void Execute__15daObjSZbridge_cFPPA3_A4_f();
-extern "C" void Draw__15daObjSZbridge_cFv();
-extern "C" void Delete__15daObjSZbridge_cFv();
-extern "C" static void daObjSZbridge_create1st__FP15daObjSZbridge_c();
-extern "C" static void daObjSZbridge_MoveBGDelete__FP15daObjSZbridge_c();
-extern "C" static void daObjSZbridge_MoveBGExecute__FP15daObjSZbridge_c();
-extern "C" static void daObjSZbridge_MoveBGDraw__FP15daObjSZbridge_c();
-extern "C" void __dt__15daObjSZbridge_cFv();
-extern "C" static void func_80D04C00();
-extern "C" static void func_80D04C08();
-extern "C" static void func_80D04C10();
-extern "C" static void func_80D04C18();
-extern "C" static void func_80D04C20();
-extern "C" static void func_80D04C28();
-extern "C" extern char const* const d_a_obj_szbridge__stringBase0;
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_YrotM__FPA4_fs();
-extern "C" void mDoExt_modelUpdateDL__FP8J3DModel();
-extern "C" void mDoExt_J3DModel__create__FP12J3DModelDataUlUl();
-extern "C" void __dt__10fopAc_ac_cFv();
-extern "C" void fopAcM_setCullSizeBox__FP10fopAc_ac_cffffff();
-extern "C" void fopAcM_effHamonSet__FPUlPC4cXyzff();
-extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
-extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
-extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
-extern "C" void GroundCross__4cBgSFP11cBgS_GndChk();
-extern "C" void SplGrpChk__4dBgSFP14dBgS_SplGrpChk();
-extern "C" void dBgS_MoveBGProc_Typical__FP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz();
-extern "C" void __ct__11dBgS_GndChkFv();
-extern "C" void __dt__11dBgS_GndChkFv();
-extern "C" void __ct__16dBgS_MoveBgActorFv();
-extern "C" bool IsDelete__16dBgS_MoveBgActorFv();
-extern "C" bool ToFore__16dBgS_MoveBgActorFv();
-extern "C" bool ToBack__16dBgS_MoveBgActorFv();
-extern "C" void
-MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvRC13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUlPA3_A4_f();
-extern "C" void MoveBGDelete__16dBgS_MoveBgActorFv();
-extern "C" void MoveBGExecute__16dBgS_MoveBgActorFv();
-extern "C" void Set__14dBgS_SplGrpChkFR4cXyzf();
-extern "C" void __dt__14dBgS_SplGrpChkFv();
-extern "C" void SetObj__16dBgS_PolyPassChkFv();
-extern "C" void __ct__11dBgS_WtrChkFv();
-extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
-extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
-extern "C" void cM_rndF__Ff();
-extern "C" void SetPos__11cBgS_GndChkFPC4cXyz();
-extern "C" void __dl__FPv();
-extern "C" void _savegpr_26();
-extern "C" void _restgpr_26();
-extern "C" extern void* __vt__16dBgS_MoveBgActor[10];
-extern "C" u8 now__14mDoMtx_stack_c[48];
-
-//
-// Declarations:
-//
/* 80D04338-80D04360 000078 0028+00 1/1 0/0 0/0 .text
* rideCallback__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c */
static void rideCallback(dBgW* param_0, fopAc_ac_c* param_1, fopAc_ac_c* param_2) {
- // NONMATCHING
+ static_cast<daObjSZbridge_c*>(param_1)->rideActor(param_2);
}
-/* ############################################################################################## */
/* 80D04C38-80D04C50 000000 0018+00 3/3 0/0 0/0 .rodata l_cull_box */
-SECTION_RODATA static u8 const l_cull_box[24] = {
- 0xC3, 0x9B, 0x00, 0x00, 0xC1, 0xF0, 0x00, 0x00, 0xC4, 0x3E, 0x00, 0x00,
- 0x43, 0x9B, 0x00, 0x00, 0x43, 0xB4, 0x00, 0x00, 0x44, 0x3E, 0x00, 0x00,
+static const Vec l_cull_box[2] = {
+ {-310.0f, -30.0f, -760.0f},
+ {310.0f, 360.0f, 760.0f},
};
-COMPILER_STRIP_GATE(0x80D04C38, &l_cull_box);
-
-/* 80D04C50-80D04C54 000018 0004+00 0/1 0/0 0/0 .rodata @3642 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3642 = 1.0f;
-COMPILER_STRIP_GATE(0x80D04C50, &lit_3642);
-#pragma pop
-
-/* 80D04C54-80D04C58 00001C 0004+00 0/1 0/0 0/0 .rodata @3643 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3643 = 3.0f / 10.0f;
-COMPILER_STRIP_GATE(0x80D04C54, &lit_3643);
-#pragma pop
-
-/* 80D04C58-80D04C5C 000020 0004+00 0/1 0/0 0/0 .rodata @3644 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3644 = 7.0f;
-COMPILER_STRIP_GATE(0x80D04C58, &lit_3644);
-#pragma pop
-
-/* 80D04C5C-80D04C60 000024 0004+00 0/1 0/0 0/0 .rodata @3645 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3645 = 1.0f / 25.0f;
-COMPILER_STRIP_GATE(0x80D04C5C, &lit_3645);
-#pragma pop
-
-/* 80D04C60-80D04C64 000028 0004+00 0/1 0/0 0/0 .rodata @3646 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3646 = 0.25f;
-COMPILER_STRIP_GATE(0x80D04C60, &lit_3646);
-#pragma pop
/* 80D04360-80D04424 0000A0 00C4+00 1/1 0/0 0/0 .text rideActor__15daObjSZbridge_cFP10fopAc_ac_c
*/
-void daObjSZbridge_c::rideActor(fopAc_ac_c* param_0) {
- // NONMATCHING
+void daObjSZbridge_c::rideActor(fopAc_ac_c* i_actor) {
+ cXyz pos = i_actor->current.pos;
+ pos.y = mWaterY;
+ if ((!cM3d_IsZero(i_actor->speed.getSquareMag()) && cM_rndF(1.0f) < 0.3f) || field_0x620 == 0) {
+ fopAcM_effHamonSet(&field_0x618[0], &pos, 7.0f, 0.04f);
+ speed.y -= 0.25f;
+ }
+ field_0x620 = 10;
}
-/* ############################################################################################## */
-/* 80D04C80-80D04C80 000048 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_80D04C80 = "S_Zbridge";
-#pragma pop
-
/* 80D04C8C-80D04C90 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */
-SECTION_DATA static void* l_arcName = (void*)&d_a_obj_szbridge__stringBase0;
+static const char* l_arcName = "S_Zbridge";
/* 80D04424-80D044B8 000164 0094+00 1/1 0/0 0/0 .text create1st__15daObjSZbridge_cFv */
-void daObjSZbridge_c::create1st() {
- // NONMATCHING
+int daObjSZbridge_c::create1st() {
+ int rv = dComIfG_resLoad(this, l_arcName);
+ if (rv == cPhs_COMPLEATE_e) {
+ setMtx();
+ rv = MoveBGCreate(l_arcName, 7, dBgS_MoveBGProc_Typical, 0x11190, &mBgMtx);
+ if (rv == cPhs_ERROR_e) {
+ return rv;
+ }
+ }
+ return rv;
}
/* 80D044B8-80D04528 0001F8 0070+00 2/2 0/0 0/0 .text setMtx__15daObjSZbridge_cFv */
void daObjSZbridge_c::setMtx() {
- // NONMATCHING
+ mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
+ mDoMtx_stack_c::YrotM(current.angle.y);
+ MTXCopy(mDoMtx_stack_c::get(), field_0x5d8);
+ MTXCopy(mDoMtx_stack_c::get(), mBgMtx);
}
/* 80D04528-80D04598 000268 0070+00 1/0 0/0 0/0 .text CreateHeap__15daObjSZbridge_cFv */
-void daObjSZbridge_c::CreateHeap() {
- // NONMATCHING
+int daObjSZbridge_c::CreateHeap() {
+ J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 4);
+ mpModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
+ return mpModel != NULL ? 1 : 0;
}
-/* ############################################################################################## */
-/* 80D04C64-80D04C68 00002C 0004+00 0/1 0/0 0/0 .rodata @3715 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3715 = 700.0f;
-COMPILER_STRIP_GATE(0x80D04C64, &lit_3715);
-#pragma pop
-
-/* 80D04C68-80D04C6C 000030 0004+00 0/1 0/0 0/0 .rodata @3716 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3716 = -G_CM3D_F_INF;
-COMPILER_STRIP_GATE(0x80D04C68, &lit_3716);
-#pragma pop
-
-/* 80D04C6C-80D04C70 000034 0004+00 0/1 0/0 0/0 .rodata @3717 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3717 = 1.0f / 20.0f;
-COMPILER_STRIP_GATE(0x80D04C6C, &lit_3717);
-#pragma pop
-
-/* 80D04C70-80D04C74 000038 0004+00 0/1 0/0 0/0 .rodata @3718 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3718 = 70.0f;
-COMPILER_STRIP_GATE(0x80D04C70, &lit_3718);
-#pragma pop
-
-/* 80D04C74-80D04C78 00003C 0004+00 0/1 0/0 0/0 .rodata @3719 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u32 const lit_3719 = 0x3F7C28F6;
-COMPILER_STRIP_GATE(0x80D04C74, &lit_3719);
-#pragma pop
-
-/* 80D04C78-80D04C7C 000040 0004+00 0/1 0/0 0/0 .rodata @3720 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_3720 = 5.0f;
-COMPILER_STRIP_GATE(0x80D04C78, &lit_3720);
-#pragma pop
+/* 80D04598-80D047D4 0002D8 023C+00 2/2 0/0 0/0 .text chkBg__15daObjSZbridge_cFv */
+void daObjSZbridge_c::chkBg() {
+ cXyz chk_pos;
-/* 80D04C90-80D04CB0 -00001 0020+00 1/0 0/0 0/0 .data daObjSZbridge_METHODS */
-static actor_method_class daObjSZbridge_METHODS = {
- (process_method_func)daObjSZbridge_create1st__FP15daObjSZbridge_c,
- (process_method_func)daObjSZbridge_MoveBGDelete__FP15daObjSZbridge_c,
- (process_method_func)daObjSZbridge_MoveBGExecute__FP15daObjSZbridge_c,
- 0,
- (process_method_func)daObjSZbridge_MoveBGDraw__FP15daObjSZbridge_c,
-};
+ dBgS_ObjGndChk(gnd_chk);
-/* 80D04CB0-80D04CE0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_SZbridge */
-extern actor_process_profile_definition g_profile_Obj_SZbridge = {
- fpcLy_CURRENT_e, // mLayerID
- 3, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_Obj_SZbridge, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daObjSZbridge_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 676, // mPriority
- &daObjSZbridge_METHODS, // sub_method
- 0x00040100, // mStatus
- fopAc_ACTOR_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
+ chk_pos = current.pos;
+ chk_pos.y += 700.0f;
-/* 80D04CE0-80D04D10 000054 0030+00 2/2 0/0 0/0 .data __vt__11dBgS_WtrChk */
-SECTION_DATA extern void* __vt__11dBgS_WtrChk[12] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__11dBgS_WtrChkFv,
- (void*)NULL,
- (void*)NULL,
- (void*)func_80D04C18,
- (void*)NULL,
- (void*)NULL,
- (void*)func_80D04C28,
- (void*)NULL,
- (void*)NULL,
- (void*)func_80D04C20,
-};
+ gnd_chk.SetPos(&chk_pos);
+ gnd_chk.SetActorPid(base.base.id);
+ mGroundY = dComIfG_Bgsp().GroundCross(&gnd_chk);
+ chk_pos.y = mGroundY;
-/* 80D04D10-80D04D40 000084 0030+00 2/2 0/0 0/0 .data __vt__14dBgS_ObjGndChk */
-SECTION_DATA extern void* __vt__14dBgS_ObjGndChk[12] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__14dBgS_ObjGndChkFv,
- (void*)NULL,
- (void*)NULL,
- (void*)func_80D04C00,
- (void*)NULL,
- (void*)NULL,
- (void*)func_80D04C10,
- (void*)NULL,
- (void*)NULL,
- (void*)func_80D04C08,
-};
+ f32 posY = current.pos.y + 700.0f;
+ dBgS_WtrChk(wtr_chk);
+ wtr_chk.Set(chk_pos, posY);
-/* 80D04598-80D047D4 0002D8 023C+00 2/2 0/0 0/0 .text chkBg__15daObjSZbridge_cFv */
-void daObjSZbridge_c::chkBg() {
- // NONMATCHING
-}
+ if (dComIfG_Bgsp().WaterChk(&wtr_chk)) {
+ mWaterY = wtr_chk.GetHeight();
+ } else {
+ mWaterY = -G_CM3D_F_INF;
+ }
-/* 80D047D4-80D0484C 000514 0078+00 4/3 0/0 0/0 .text __dt__11dBgS_WtrChkFv */
-// dBgS_WtrChk::~dBgS_WtrChk() {
-extern "C" void __dt__11dBgS_WtrChkFv() {
- // NONMATCHING
-}
+ if (mWaterY > mGroundY) {
+ speed.y -= 0.05f * (current.pos.y - (mWaterY - 70.0f));
+ speed.y *= 0.985f;
+ current.pos.y += speed.y;
-/* 80D0484C-80D048C4 00058C 0078+00 4/3 0/0 0/0 .text __dt__14dBgS_ObjGndChkFv */
-// dBgS_ObjGndChk::~dBgS_ObjGndChk() {
-extern "C" void __dt__14dBgS_ObjGndChkFv() {
- // NONMATCHING
-}
+ if (current.pos.y > 5.0f + (mWaterY - 70.0f)) {
+ current.pos.y = 5.0f + (mWaterY - 70.0f);
+ }
-/* ############################################################################################## */
-/* 80D04C7C-80D04C80 000044 0004+00 1/1 0/0 0/0 .rodata @3739 */
-SECTION_RODATA static u8 const lit_3739[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x80D04C7C, &lit_3739);
+ if (current.pos.y < (mWaterY - 70.0f) - 5.0f) {
+ current.pos.y = (mWaterY - 70.0f) - 5.0f;
+ }
+
+ speed.y = current.pos.y - old.pos.y;
+ field_0x614 = 1;
+ } else {
+ current.pos.y = mGroundY;
+ field_0x614 = 0;
+ }
+}
/* 80D048C4-80D04974 000604 00B0+00 1/0 0/0 0/0 .text Create__15daObjSZbridge_cFv */
-void daObjSZbridge_c::Create() {
- // NONMATCHING
+int daObjSZbridge_c::Create() {
+ mpBgW->SetRideCallback(rideCallback);
+ chkBg();
+ speed.y = 0;
+
+ mpModel->setBaseTRMtx(field_0x5d8);
+ fopAcM_SetMtx(this, field_0x5d8);
+ fopAcM_setCullSizeBox(this, l_cull_box[0].x, l_cull_box[0].y, l_cull_box[0].z, l_cull_box[1].x,
+ l_cull_box[1].y, l_cull_box[1].z);
+
+ for (int i = 0; i < 2; i++) {
+ field_0x618[i] = -1;
+ }
+
+ field_0x620 = 0;
+
+ return 1;
}
/* 80D04974-80D049E4 0006B4 0070+00 1/0 0/0 0/0 .text Execute__15daObjSZbridge_cFPPA3_A4_f */
-void daObjSZbridge_c::Execute(Mtx** param_0) {
- // NONMATCHING
+int daObjSZbridge_c::Execute(Mtx** param_0) {
+ chkBg();
+
+ if (field_0x620 != 0) {
+ field_0x620--;
+ }
+
+ setMtx();
+ mpModel->setBaseTRMtx(field_0x5d8);
+
+ *param_0 = &mBgMtx;
+
+ return 1;
}
/* 80D049E4-80D04A88 000724 00A4+00 1/0 0/0 0/0 .text Draw__15daObjSZbridge_cFv */
-void daObjSZbridge_c::Draw() {
- // NONMATCHING
+int daObjSZbridge_c::Draw() {
+ g_env_light.settingTevStruct(16, &current.pos, &tevStr);
+ g_env_light.setLightTevColorType_MAJI(mpModel, &tevStr);
+
+ dComIfGd_setListBG();
+ mDoExt_modelUpdateDL(mpModel);
+ dComIfGd_setList();
+
+ return 1;
}
/* 80D04A88-80D04AC4 0007C8 003C+00 1/0 0/0 0/0 .text Delete__15daObjSZbridge_cFv */
-void daObjSZbridge_c::Delete() {
- // NONMATCHING
+int daObjSZbridge_c::Delete() {
+ dComIfG_resDelete(this, l_arcName);
+ return 1;
}
-/* ############################################################################################## */
-/* 80D04D40-80D04D6C 0000B4 002C+00 2/2 0/0 0/0 .data __vt__15daObjSZbridge_c */
-SECTION_DATA extern void* __vt__15daObjSZbridge_c[11] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)CreateHeap__15daObjSZbridge_cFv,
- (void*)Create__15daObjSZbridge_cFv,
- (void*)Execute__15daObjSZbridge_cFPPA3_A4_f,
- (void*)Draw__15daObjSZbridge_cFv,
- (void*)Delete__15daObjSZbridge_cFv,
- (void*)IsDelete__16dBgS_MoveBgActorFv,
- (void*)ToFore__16dBgS_MoveBgActorFv,
- (void*)ToBack__16dBgS_MoveBgActorFv,
- (void*)__dt__15daObjSZbridge_cFv,
-};
-
/* 80D04AC4-80D04B24 000804 0060+00 1/0 0/0 0/0 .text daObjSZbridge_create1st__FP15daObjSZbridge_c
*/
-static void daObjSZbridge_create1st(daObjSZbridge_c* param_0) {
- // NONMATCHING
+static int daObjSZbridge_create1st(daObjSZbridge_c* i_this) {
+ fopAcM_ct(i_this, daObjSZbridge_c);
+ return i_this->create1st();
}
/* 80D04B24-80D04B44 000864 0020+00 1/0 0/0 0/0 .text
* daObjSZbridge_MoveBGDelete__FP15daObjSZbridge_c */
-static void daObjSZbridge_MoveBGDelete(daObjSZbridge_c* param_0) {
- // NONMATCHING
+static int daObjSZbridge_MoveBGDelete(daObjSZbridge_c* i_this) {
+ return i_this->MoveBGDelete();
}
/* 80D04B44-80D04B64 000884 0020+00 1/0 0/0 0/0 .text
* daObjSZbridge_MoveBGExecute__FP15daObjSZbridge_c */
-static void daObjSZbridge_MoveBGExecute(daObjSZbridge_c* param_0) {
- // NONMATCHING
+static int daObjSZbridge_MoveBGExecute(daObjSZbridge_c* i_this) {
+ return i_this->MoveBGExecute();
}
/* 80D04B64-80D04B90 0008A4 002C+00 1/0 0/0 0/0 .text
* daObjSZbridge_MoveBGDraw__FP15daObjSZbridge_c */
-static void daObjSZbridge_MoveBGDraw(daObjSZbridge_c* param_0) {
- // NONMATCHING
-}
-
-/* 80D04B90-80D04C00 0008D0 0070+00 1/0 0/0 0/0 .text __dt__15daObjSZbridge_cFv */
-daObjSZbridge_c::~daObjSZbridge_c() {
- // NONMATCHING
-}
-
-/* 80D04C00-80D04C08 000940 0008+00 1/0 0/0 0/0 .text @20@__dt__14dBgS_ObjGndChkFv */
-static void func_80D04C00() {
- // NONMATCHING
-}
-
-/* 80D04C08-80D04C10 000948 0008+00 1/0 0/0 0/0 .text @76@__dt__14dBgS_ObjGndChkFv */
-static void func_80D04C08() {
- // NONMATCHING
-}
-
-/* 80D04C10-80D04C18 000950 0008+00 1/0 0/0 0/0 .text @60@__dt__14dBgS_ObjGndChkFv */
-static void func_80D04C10() {
- // NONMATCHING
-}
-
-/* 80D04C18-80D04C20 000958 0008+00 1/0 0/0 0/0 .text @16@__dt__11dBgS_WtrChkFv */
-static void func_80D04C18() {
- // NONMATCHING
+static int daObjSZbridge_MoveBGDraw(daObjSZbridge_c* i_this) {
+ return i_this->MoveBGDraw();
}
-/* 80D04C20-80D04C28 000960 0008+00 1/0 0/0 0/0 .text @52@__dt__11dBgS_WtrChkFv */
-static void func_80D04C20() {
- // NONMATCHING
-}
-
-/* 80D04C28-80D04C30 000968 0008+00 1/0 0/0 0/0 .text @36@__dt__11dBgS_WtrChkFv */
-static void func_80D04C28() {
- // NONMATCHING
-}
+/* 80D04C90-80D04CB0 -00001 0020+00 1/0 0/0 0/0 .data daObjSZbridge_METHODS */
+static actor_method_class daObjSZbridge_METHODS = {
+ (process_method_func)daObjSZbridge_create1st,
+ (process_method_func)daObjSZbridge_MoveBGDelete,
+ (process_method_func)daObjSZbridge_MoveBGExecute,
+ 0,
+ (process_method_func)daObjSZbridge_MoveBGDraw,
+};
-/* 80D04C80-80D04C80 000048 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+/* 80D04CB0-80D04CE0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_Obj_SZbridge */
+extern actor_process_profile_definition g_profile_Obj_SZbridge = {
+ fpcLy_CURRENT_e, // mLayerID
+ 3, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_Obj_SZbridge, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daObjSZbridge_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 676, // mPriority
+ &daObjSZbridge_METHODS, // sub_method
+ 0x00040100, // mStatus
+ fopAc_ACTOR_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};