summaryrefslogtreecommitdiff
path: root/src/d/actor/d_a_npc_grc.cpp
diff options
context:
space:
mode:
authorCarco_21 <144170194+carter-ktb21@users.noreply.github.com>2025-08-22 03:52:59 -0400
committerGitHub <noreply@github.com>2025-08-22 10:52:59 +0300
commit731d8be59e74228d4f6250be200090eb44226f19 (patch)
tree33fc2364c33ea27d789f7d3d19d80043ced4c3d5 /src/d/actor/d_a_npc_grc.cpp
parentef75333735a80b9ee290544a5f3d4b80388d09cd (diff)
d_a_npc_grc equivalent (#2594)
* initial work * d_a_npc_grc equivalent * Fixed configure.py change * pr cleanup
Diffstat (limited to 'src/d/actor/d_a_npc_grc.cpp')
-rw-r--r--src/d/actor/d_a_npc_grc.cpp3080
1 files changed, 1423 insertions, 1657 deletions
diff --git a/src/d/actor/d_a_npc_grc.cpp b/src/d/actor/d_a_npc_grc.cpp
index e66db0b254..d3fe5d338b 100644
--- a/src/d/actor/d_a_npc_grc.cpp
+++ b/src/d/actor/d_a_npc_grc.cpp
@@ -4,924 +4,852 @@
*/
#include "d/actor/d_a_npc_grc.h"
-#include "dol2asm.h"
-
-//
-// Forward References:
-//
-
-extern "C" void __ct__11daNpc_grC_cFv();
-extern "C" void __dt__8cM3dGCylFv();
-extern "C" void __dt__8cM3dGAabFv();
-extern "C" void __dt__11daNpc_grC_cFv();
-extern "C" void create__11daNpc_grC_cFv();
-extern "C" void CreateHeap__11daNpc_grC_cFv();
-extern "C" void Delete__11daNpc_grC_cFv();
-extern "C" void Execute__11daNpc_grC_cFv();
-extern "C" void Draw__11daNpc_grC_cFv();
-extern "C" void ctrlJoint__11daNpc_grC_cFP8J3DJointP8J3DModel();
-extern "C" void createHeapCallBack__11daNpc_grC_cFP10fopAc_ac_c();
-extern "C" void ctrlJointCallBack__11daNpc_grC_cFP8J3DJointi();
-extern "C" void setParam__11daNpc_grC_cFv();
-extern "C" void main__11daNpc_grC_cFv();
-extern "C" bool ctrlBtk__11daNpc_grC_cFv();
-extern "C" void setAttnPos__11daNpc_grC_cFv();
-extern "C" void setExpressionAnm__11daNpc_grC_cFib();
-extern "C" void setExpressionBtp__11daNpc_grC_cFi();
-extern "C" void setExpression__11daNpc_grC_cFif();
-extern "C" void setMotionAnm__11daNpc_grC_cFif();
-extern "C" void setMotion__11daNpc_grC_cFifi();
-extern "C" bool drawDbgInfo__11daNpc_grC_cFv();
-extern "C" void drawOtherMdls__11daNpc_grC_cFv();
-extern "C" void getTypeFromParam__11daNpc_grC_cFv();
-extern "C" void isDelete__11daNpc_grC_cFv();
-extern "C" void reset__11daNpc_grC_cFv();
-extern "C" void playExpression__11daNpc_grC_cFv();
-extern "C" void playMotion__11daNpc_grC_cFv();
-extern "C" void chkAction__11daNpc_grC_cFM11daNpc_grC_cFPCvPvPv_i();
-extern "C" void setAction__11daNpc_grC_cFM11daNpc_grC_cFPCvPvPv_i();
-extern "C" void selectAction__11daNpc_grC_cFv();
-extern "C" void doNormalAction__11daNpc_grC_cFi();
-extern "C" void doEvent__11daNpc_grC_cFv();
-extern "C" void setLookMode__11daNpc_grC_cFi();
-extern "C" void lookat__11daNpc_grC_cFv();
-extern "C" void chkFindPlayer__11daNpc_grC_cFv();
-extern "C" void setExpressionTalkAfter__11daNpc_grC_cFv();
-extern "C" void wait__11daNpc_grC_cFPv();
-extern "C" void waitTW__11daNpc_grC_cFPv();
-extern "C" void waitSpa__11daNpc_grC_cFPv();
-extern "C" void waitBuyer__11daNpc_grC_cFPv();
-extern "C" void talk__11daNpc_grC_cFPv();
-extern "C" void test__11daNpc_grC_cFPv();
-extern "C" void setPrtcl__11daNpc_grC_cFv();
-extern "C" static void daNpc_grC_Create__FPv();
-extern "C" static void daNpc_grC_Delete__FPv();
-extern "C" static void daNpc_grC_Execute__FPv();
-extern "C" static void daNpc_grC_Draw__FPv();
-extern "C" static bool daNpc_grC_IsDelete__FPv();
-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 __dt__10cCcD_GSttsFv();
-extern "C" void __sinit_d_a_npc_grc_cpp();
-extern "C" void adjustShapeAngle__11daNpc_grC_cFv();
-extern "C" void __dt__17daNpc_grC_Param_cFv();
-extern "C" static void func_809CF4F8();
-extern "C" static void func_809CF500();
-extern "C" u8 const m__17daNpc_grC_Param_c[108];
-extern "C" extern char const* const d_a_npc_grc__stringBase0;
-extern "C" void* mEvtCutNameList__11daNpc_grC_c;
-extern "C" u8 mEvtCutList__11daNpc_grC_c[12];
-
-//
-// External References:
-//
-
-extern "C" void mDoMtx_YrotS__FPA4_fs();
-extern "C" void mDoMtx_YrotM__FPA4_fs();
-extern "C" void mDoMtx_ZrotM__FPA4_fs();
-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 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_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 dComIfGs_wolfeye_effect_check__Fv();
-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 getMyActIdx__16dEvent_manager_cFiPCPCciii();
-extern "C" void cutEnd__16dEvent_manager_cFi();
-extern "C" void ChkPresentEnd__16dEvent_manager_cFv();
-extern "C" void init__7dPaPo_cFP9dBgS_Acchff();
-extern "C" void setEffectCenter__7dPaPo_cFPC12dKy_tevstr_cPC4cXyzUlUlPC4cXyzPC5csXyzPC4cXyzScff();
-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_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 tgHitCallBack__8daNpcF_cFP10fopAc_ac_cP12dCcD_GObjInfP10fopAc_ac_cP12dCcD_GObjInf();
-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 hitChk2__8daNpcF_cFP8dCcD_Cylii();
-extern "C" void setDamage__8daNpcF_cFiii();
-extern "C" void ctrlMsgAnm__8daNpcF_cFRiRiP10fopAc_ac_ci();
-extern "C" void orderEvent__8daNpcF_cFiPcUsUsUcUs();
-extern "C" void 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 step__8daNpcF_cFsiii();
-extern "C" void getDistTableIdx__8daNpcF_cFii();
-extern "C" void getAttnActorP__8daNpcF_cFiPFPvPv_Pvffffsii();
-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_addCalc2__FPffff();
-extern "C" void cLib_chaseS__FPsss();
-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 __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_24();
-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_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__12cCcD_CylAttr[25];
-extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
-extern "C" extern void* __vt__9cCcD_Stts[8];
-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:
-//
-
-/* ############################################################################################## */
-/* 809CF7F0-809CF7F0 0002D4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_809CF7F0 = "grC";
-SECTION_DEAD static char const* const stringBase_809CF7F4 = "grC_Mdl";
-SECTION_DEAD static char const* const stringBase_809CF7FC = "grC_TW";
-SECTION_DEAD static char const* const stringBase_809CF803 = "";
-#pragma pop
-
-/* 809CF81C-809CF828 000000 000C+00 4/4 0/0 0/0 .data cNullVec__6Z2Calc */
-SECTION_DATA static u8 cNullVec__6Z2Calc[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
+#include "Z2AudioLib/Z2Instances.h"
+
+enum grC_RES_File_ID {
+ /* BCK */
+ /* 0x05 */ BCK_GRC_F_CHEERFUL = 0x5,
+ /* 0x06 */ BCK_GRC_F_CHEERFUL_T,
+ /* 0x07 */ BCK_GRC_GRUMPY,
+ /* 0x08 */ BCK_GRC_GRUMPY_T,
+ /* 0x09 */ BCK_GRC_F_SAD_TALK,
+ /* 0x0A */ BCK_GRC_F_TALK_A,
+ /* 0x0B */ BCK_GRC_F_WAIT_A,
+ /* 0x0C */ BCK_GRC_FH_CLOSEEYE,
+ /* 0x0D */ BCK_GRC_FH_SAD_TALK,
+ /* 0x0E */ BCK_GRC_GET_UP,
+ /* 0x0F */ BCK_GRC_SAD_TALK,
+ /* 0x10 */ BCK_GRC_SAD_WAIT,
+ /* 0x11 */ BCK_GRC_SIT_A,
+ /* 0x12 */ BCK_GRC_STEP,
+ /* 0x13 */ BCK_GRC_TALK_A,
+ /* 0x14 */ BCK_GRC_TALK_B,
+ /* 0x15 */ BCK_GRC_TOSIT_A,
+ /* 0x16 */ BCK_GRC_WAIT_A,
+
+ /* BTK */
+ /* 0x19 */ BTK_GRC_A = 0x19,
+
+ /* BTP */
+ /* 0x1C */ BTP_GRC_A = 0x1C,
+ /* 0x1D */ BTP_GRC_F_CHEERFUL_T,
+ /* 0x1E */ BTP_GRC_F_GRUMPY_T,
+ /* 0x1F */ BTP_GRC_F_SAD_TALK,
+ /* 0x20 */ BTP_GRC_FH_CLOSEEYE,
+ /* 0x21 */ BTP_GRC_FH_SAD_TALK,
+};
+
+enum grC_Mdl_RES_File_ID {
+ /* BMDR */
+ /* 0x3 */ BMDR_GRC_A = 0x3,
+};
+
+enum grC_TW_RES_File_ID {
+ /* BMDR */
+ /* 0x3 */ BMDR_GRC_TW = 0x3,
+};
+
+enum RES_Name {
+ /* 0x0 */ GRC,
+ /* 0x1 */ GRC_MDL,
+ /* 0x2 */ GRC_TW,
+};
+
+enum Joint {
+ /* 0x00 */ JNT_CENTER,
+ /* 0x01 */ JNT_BACKBONE1,
+ /* 0x02 */ JNT_BACKBONE2,
+ /* 0x03 */ JNT_NECK,
+ /* 0x04 */ JNT_HEAD,
+ /* 0x05 */ JNT_CHIN,
+ /* 0x06 */ JNT_MAYU,
+ /* 0x07 */ JNT_MOUTH,
+ /* 0x08 */ JNT_SHOULDERL,
+ /* 0x09 */ JNT_ARML1,
+ /* 0x0A */ JNT_ARML2,
+ /* 0x0B */ JNT_HANDL,
+ /* 0x0C */ JNT_SHOULDERR,
+ /* 0x0D */ JNT_ARMR1,
+ /* 0x0E */ JNT_ARMR2,
+ /* 0x0F */ JNT_HANDR,
+ /* 0x10 */ JNT_WAIST,
+ /* 0x11 */ JNT_LEGL1,
+ /* 0x12 */ JNT_LEGL2,
+ /* 0x13 */ JNT_FOOTL,
+ /* 0x14 */ JNT_LEGR1,
+ /* 0x15 */ JNT_LEGR2,
+ /* 0x16 */ JNT_FOOTR,
+};
+
+enum Animation {
+ /* 0x00 */ ANM_NONE,
+ /* 0x01 */ ANM_F_WAIT_A,
+ /* 0x02 */ ANM_GRUMPY,
+ /* 0x03 */ ANM_F_CHEERFUL,
+ /* 0x04 */ ANM_FH_SAD_TALK,
+ /* 0x05 */ ANM_F_TALK_A,
+ /* 0x06 */ ANM_GRUMPY_T,
+ /* 0x07 */ ANM_F_CHEERFUL_T,
+ /* 0x08 */ ANM_F_SAD_TALK,
+ /* 0x09 */ ANM_FH_CLOSEEYE,
+ /* 0x0A */ ANM_WAIT_A,
+ /* 0x0B */ ANM_TALK_A,
+ /* 0x0C */ ANM_TALK_B,
+ /* 0x0D */ ANM_SAD_TALK,
+ /* 0x0E */ ANM_SIT_A,
+ /* 0x0F */ ANM_TOSIT_A,
+ /* 0x10 */ ANM_GET_UP,
+ /* 0x11 */ ANM_SAD_WAIT,
+ /* 0x12 */ ANM_STEP,
+};
+
+enum Expression {
+ /* 0x0 */ EXPR_TALK_A,
+ /* 0x1 */ EXPR_GRUMPY_T,
+ /* 0x2 */ EXPR_CHEERFUL_T,
+ /* 0x9 */ EXPR_SAD_TALK = 0x9,
+ /* 0xA */ EXPR_CLOSEEYE,
+ /* 0xB */ EXPR_GRUMPY,
+ /* 0xC */ EXPR_CHEERFUL,
+ /* 0xD */ EXPR_H_SAD_TALK,
+ /* 0xE */ EXPR_NONE,
+};
+
+enum Expression_BTP {
+ /* 0x0 */ EXPR_BTP_GRC_A,
+ /* 0x1 */ EXPR_BTP_F_CHEERFUL_T,
+ /* 0x2 */ EXPR_BTP_F_GRUMPY_T,
+ /* 0x3 */ EXPR_BTP_F_SAD_TALK,
+ /* 0x4 */ EXPR_BTP_FH_SAD_TALK,
+ /* 0x5 */ EXPR_BTP_FH_CLOSEEYE,
+};
+
+enum Motion {
+ /* 0x0 */ MOT_WAIT_A,
+ /* 0x1 */ MOT_GET_UP,
+ /* 0x2 */ MOT_TALK_A,
+ /* 0x3 */ MOT_TALK_B,
+ /* 0x4 */ MOT_TOSIT_A,
+ /* 0x5 */ MOT_SIT_A,
+ /* 0x6 */ MOT_SAD_TALK,
+ /* 0x7 */ MOT_SAD_WAIT,
+ /* 0x8 */ MOT_STEP,
+};
+
+enum Type {
+ /* 0x0 */ TYPE_0,
+ /* 0x1 */ TYPE_TWILIGHT,
+ /* 0x2 */ TYPE_SPA,
+ /* 0x3 */ TYPE_3,
+ /* 0x4 */ TYPE_BUYER,
+ /* 0x5 */ TYPE_5,
+ /* 0x6 */ TYPE_6,
+};
+
+UNK_REL_DATA;
+
+UNK_REL_BSS;
-/* 809CF828-809CF83C 00000C 0004+10 0/0 0/0 0/0 .data @1787 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u32 lit_1787[1 + 4 /* padding */] = {
- 0x02000201,
- /* padding */
- 0x40080000,
- 0x00000000,
- 0x3FE00000,
- 0x00000000,
-};
-#pragma pop
+/* 809CFBB4-809CFBB8 000054 0004+00 1/1 0/0 0/0 .bss l_HIO */
+static daNpc_grC_Param_c l_HIO;
/* 809CF83C-809CF84C 000020 0010+00 1/1 0/0 0/0 .data l_bmdGetParamList */
-SECTION_DATA static u8 l_bmdGetParamList[16] = {
- 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02,
+static daNpc_GetParam1 l_bmdGetParamList[2] = {
+ {BMDR_GRC_A, GRC_MDL},
+ {BMDR_GRC_TW, GRC_TW},
};
/* 809CF84C-809CF8E4 000030 0098+00 1/2 0/0 0/0 .data l_bckGetParamList */
-SECTION_DATA static u8 l_bckGetParamList[152] = {
- 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00,
+static daNpc_GetParam1 l_bckGetParamList[19] = {
+ {-1, GRC},
+ {BCK_GRC_F_WAIT_A, 0},
+ {BCK_GRC_GRUMPY, GRC},
+ {BCK_GRC_F_CHEERFUL, GRC},
+ {BCK_GRC_FH_SAD_TALK, GRC},
+ {BCK_GRC_F_TALK_A, GRC},
+ {BCK_GRC_GRUMPY_T, GRC},
+ {BCK_GRC_F_CHEERFUL_T, GRC},
+ {BCK_GRC_F_SAD_TALK, GRC},
+ {BCK_GRC_FH_CLOSEEYE, GRC},
+ {BCK_GRC_WAIT_A, GRC},
+ {BCK_GRC_TALK_A, GRC},
+ {BCK_GRC_TALK_B, GRC},
+ {BCK_GRC_SAD_TALK, GRC},
+ {BCK_GRC_SIT_A, GRC},
+ {BCK_GRC_TOSIT_A, GRC},
+ {BCK_GRC_GET_UP, GRC},
+ {BCK_GRC_SAD_WAIT, GRC},
+ {BCK_GRC_STEP, GRC},
};
/* 809CF8E4-809CF914 0000C8 0030+00 1/1 0/0 0/0 .data l_btpGetParamList */
-SECTION_DATA static u8 l_btpGetParamList[48] = {
- 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00,
+static daNpc_GetParam1 l_btpGetParamList[6] = {
+ {BTP_GRC_A, GRC},
+ {BTP_GRC_F_CHEERFUL_T, GRC},
+ {BTP_GRC_F_GRUMPY_T, GRC},
+ {BTP_GRC_F_SAD_TALK, GRC},
+ {BTP_GRC_FH_SAD_TALK, GRC},
+ {BTP_GRC_FH_CLOSEEYE, GRC},
};
/* 809CF914-809CF91C 0000F8 0008+00 0/1 0/0 0/0 .data l_btkGetParamList */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_btkGetParamList[8] = {
- 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
+static daNpc_GetParam1 l_btkGetParamList[1] = {
+ {-1, GRC},
};
-#pragma pop
/* 809CF91C-809CF924 000100 0008+00 0/1 0/0 0/0 .data l_evtGetParamList */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_evtGetParamList[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+static daNpc_GetParam1 l_evtGetParamList[1] = {
+ {0, GRC},
};
-#pragma pop
/* 809CF924-809CF930 000108 000C+00 1/0 0/0 0/0 .data l_loadRes_GRCa */
-SECTION_DATA static u8 l_loadRes_GRCa[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF,
+static int l_loadRes_GRCa[3] = {
+ GRC, GRC_MDL, -1,
};
/* 809CF930-809CF93C 000114 000C+00 1/0 0/0 0/0 .data l_loadRes_GRCa_TW */
-SECTION_DATA static u8 l_loadRes_GRCa_TW[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xFF, 0xFF, 0xFF, 0xFF,
+static int l_loadRes_GRCa_TW[3] = {
+ GRC, GRC_TW, -1,
};
/* 809CF93C-809CF948 000120 000C+00 1/0 0/0 0/0 .data l_loadRes_GRC0 */
-SECTION_DATA static u8 l_loadRes_GRC0[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF,
+static int l_loadRes_GRC0[3] = {
+ GRC, GRC_MDL, -1,
};
/* 809CF948-809CF964 -00001 001C+00 2/2 0/0 0/0 .data l_loadRes_list */
-SECTION_DATA static void* l_loadRes_list[7] = {
- (void*)&l_loadRes_GRCa, (void*)&l_loadRes_GRCa_TW, (void*)&l_loadRes_GRCa,
- (void*)&l_loadRes_GRCa, (void*)&l_loadRes_GRCa, (void*)&l_loadRes_GRCa,
- (void*)&l_loadRes_GRC0,
+static int* l_loadRes_list[7] = {
+ l_loadRes_GRCa, l_loadRes_GRCa_TW, l_loadRes_GRCa,
+ l_loadRes_GRCa, l_loadRes_GRCa, l_loadRes_GRCa,
+ l_loadRes_GRC0,
};
/* 809CF964-809CF970 -00001 000C+00 5/7 0/0 0/0 .data l_resNames */
-SECTION_DATA static void* l_resNames[3] = {
- (void*)&d_a_npc_grc__stringBase0,
- (void*)(((char*)&d_a_npc_grc__stringBase0) + 0x4),
- (void*)(((char*)&d_a_npc_grc__stringBase0) + 0xC),
+static char* l_resNames[3] = {
+ "grC",
+ "grC_Mdl",
+ "grC_TW",
};
/* 809CF970-809CF974 000154 0004+00 0/1 0/0 0/0 .data l_evtNames */
-#pragma push
-#pragma force_active on
-SECTION_DATA static u8 l_evtNames[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
+static char* l_evtNames[1] = {
+ NULL
};
-#pragma pop
/* 809CF974-809CF978 -00001 0004+00 0/1 0/0 0/0 .data l_myName */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* l_myName = (void*)&d_a_npc_grc__stringBase0;
-#pragma pop
+static char* l_myName = "grC";
/* 809CF978-809CF97C -00001 0004+00 0/1 0/0 0/0 .data mEvtCutNameList__11daNpc_grC_c */
-#pragma push
-#pragma force_active on
-SECTION_DATA void* daNpc_grC_c::mEvtCutNameList =
- (void*)(((char*)&d_a_npc_grc__stringBase0) + 0x13);
-#pragma pop
+char* daNpc_grC_c::mEvtCutNameList = "";
/* 809CF97C-809CF988 000160 000C+00 1/2 0/0 0/0 .data mEvtCutList__11daNpc_grC_c */
-SECTION_DATA u8 daNpc_grC_c::mEvtCutList[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
+daNpc_grC_c::EventFn daNpc_grC_c::mEvtCutList[1] = {NULL};
-/* 809CF988-809CF994 -00001 000C+00 1/1 0/0 0/0 .data @4469 */
-SECTION_DATA static void* lit_4469[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)test__11daNpc_grC_cFPv,
-};
+/* 809CB4CC-809CB650 0000EC 0184+00 1/1 0/0 0/0 .text __ct__11daNpc_grC_cFv */
+daNpc_grC_c::daNpc_grC_c() {}
-/* 809CF994-809CF9BC -00001 0028+00 1/1 0/0 0/0 .data @4874 */
-SECTION_DATA static void* lit_4874[10] = {
- (void*)(((char*)setExpressionAnm__11daNpc_grC_cFib) + 0x90),
- (void*)(((char*)setExpressionAnm__11daNpc_grC_cFib) + 0xAC),
- (void*)(((char*)setExpressionAnm__11daNpc_grC_cFib) + 0xCC),
- (void*)(((char*)setExpressionAnm__11daNpc_grC_cFib) + 0xEC),
- (void*)(((char*)setExpressionAnm__11daNpc_grC_cFib) + 0x10C),
- (void*)(((char*)setExpressionAnm__11daNpc_grC_cFib) + 0x12C),
- (void*)(((char*)setExpressionAnm__11daNpc_grC_cFib) + 0x14C),
- (void*)(((char*)setExpressionAnm__11daNpc_grC_cFib) + 0x168),
- (void*)(((char*)setExpressionAnm__11daNpc_grC_cFib) + 0x184),
- (void*)(((char*)setExpressionAnm__11daNpc_grC_cFib) + 0x1A0),
-};
+/* 809CB6E0-809CB8E0 000300 0200+00 1/0 0/0 0/0 .text __dt__11daNpc_grC_cFv */
+daNpc_grC_c::~daNpc_grC_c() {
+ for (int i = 0; l_loadRes_list[mType][i] >= 0; i++) {
+ dComIfG_resDelete(&mPhases[i], l_resNames[l_loadRes_list[mType][i]]);
+ }
-/* 809CF9BC-809CF9E0 -00001 0024+00 1/1 0/0 0/0 .data @4946 */
-SECTION_DATA static void* lit_4946[9] = {
- (void*)(((char*)setMotionAnm__11daNpc_grC_cFif) + 0xCC),
- (void*)(((char*)setMotionAnm__11daNpc_grC_cFif) + 0xCC),
- (void*)(((char*)setMotionAnm__11daNpc_grC_cFif) + 0x9C),
- (void*)(((char*)setMotionAnm__11daNpc_grC_cFif) + 0xA4),
- (void*)(((char*)setMotionAnm__11daNpc_grC_cFif) + 0xCC),
- (void*)(((char*)setMotionAnm__11daNpc_grC_cFif) + 0xAC),
- (void*)(((char*)setMotionAnm__11daNpc_grC_cFif) + 0xB4),
- (void*)(((char*)setMotionAnm__11daNpc_grC_cFif) + 0xCC),
- (void*)(((char*)setMotionAnm__11daNpc_grC_cFif) + 0xBC),
-};
+ if (heap != NULL) {
+ mpMorf->stopZelAnime();
+ }
+}
-/* 809CF9E0-809CF9EC -00001 000C+00 0/1 0/0 0/0 .data @5149 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_5149[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)test__11daNpc_grC_cFPv,
-};
-#pragma pop
-
-/* 809CF9EC-809CF9F8 -00001 000C+00 0/1 0/0 0/0 .data @5153 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_5153[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)waitTW__11daNpc_grC_cFPv,
-};
-#pragma pop
-
-/* 809CF9F8-809CFA04 -00001 000C+00 0/1 0/0 0/0 .data @5155 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_5155[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)waitSpa__11daNpc_grC_cFPv,
-};
-#pragma pop
-
-/* 809CFA04-809CFA10 -00001 000C+00 0/1 0/0 0/0 .data @5157 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_5157[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)waitBuyer__11daNpc_grC_cFPv,
-};
-#pragma pop
-
-/* 809CFA10-809CFA1C -00001 000C+00 0/1 0/0 0/0 .data @5159 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_5159[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)wait__11daNpc_grC_cFPv,
-};
-#pragma pop
-
-/* 809CFA1C-809CFA28 -00001 000C+00 0/1 0/0 0/0 .data @5199 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_5199[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)talk__11daNpc_grC_cFPv,
-};
-#pragma pop
-
-/* 809CFA28-809CFA34 -00001 000C+00 0/1 0/0 0/0 .data @5207 */
-#pragma push
-#pragma force_active on
-SECTION_DATA static void* lit_5207[3] = {
- (void*)NULL,
- (void*)0xFFFFFFFF,
- (void*)talk__11daNpc_grC_cFPv,
+/* 809CF51C-809CF588 000000 006C+00 13/13 0/0 0/0 .rodata m__17daNpc_grC_Param_c */
+daNpc_grC_HIOParam const daNpc_grC_Param_c::m = {
+ 40.0f,
+ -3.0f,
+ 1.0f,
+ 400.0f,
+ 255.0f,
+ 140.0f,
+ 35.0f,
+ 50.0f,
+ 0.0f,
+ 0.0f,
+ 10.0f,
+ -10.0f,
+ 30.0f,
+ -30.0f,
+ 45.0f,
+ -45.0f,
+ 0.6f,
+ 12.0f,
+ 4,
+ 6,
+ 6,
+ 6,
+ 180.0f,
+ 500.0f,
+ 300.0f,
+ -300.0f,
+ 60,
+ 8,
+ 0,
+ 0,
+ 0,
+ false,
+ false,
};
-#pragma pop
-/* 809CFA34-809CFA54 -00001 0020+00 1/0 0/0 0/0 .data daNpc_grC_MethodTable */
-static actor_method_class daNpc_grC_MethodTable = {
- (process_method_func)daNpc_grC_Create__FPv,
- (process_method_func)daNpc_grC_Delete__FPv,
- (process_method_func)daNpc_grC_Execute__FPv,
- (process_method_func)daNpc_grC_IsDelete__FPv,
- (process_method_func)daNpc_grC_Draw__FPv,
-};
+/* 809CB8E0-809CBBD4 000500 02F4+00 1/1 0/0 0/0 .text create__11daNpc_grC_cFv */
+cPhs__Step daNpc_grC_c::create() {
+ fopAcM_SetupActor(this, daNpc_grC_c);
-/* 809CFA54-809CFA84 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_GRC */
-extern actor_process_profile_definition g_profile_NPC_GRC = {
- fpcLy_CURRENT_e, // mLayerID
- 7, // mListID
- fpcPi_CURRENT_e, // mListPrio
- PROC_NPC_GRC, // mProcName
- &g_fpcLf_Method.base, // sub_method
- sizeof(daNpc_grC_c), // mSize
- 0, // mSizeOther
- 0, // mParameters
- &g_fopAc_Method.base, // sub_method
- 307, // mPriority
- &daNpc_grC_MethodTable, // sub_method
- 0x00044100, // mStatus
- fopAc_NPC_e, // mActorType
- fopAc_CULLBOX_CUSTOM_e, // cullType
-};
+ mTwilight = dKy_darkworld_check();
+ mType = getTypeFromParam();
-/* 809CFA84-809CFACC 000268 0048+00 2/2 0/0 0/0 .data __vt__11daNpc_grC_c */
-SECTION_DATA extern void* __vt__11daNpc_grC_c[18] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__11daNpc_grC_cFv,
- (void*)setParam__11daNpc_grC_cFv,
- (void*)main__11daNpc_grC_cFv,
- (void*)ctrlBtk__11daNpc_grC_cFv,
- (void*)adjustShapeAngle__11daNpc_grC_cFv,
- (void*)setMtx__8daNpcF_cFv,
- (void*)setMtx2__8daNpcF_cFv,
- (void*)setAttnPos__11daNpc_grC_cFv,
- (void*)setCollisions__8daNpcF_cFv,
- (void*)setExpressionAnm__11daNpc_grC_cFib,
- (void*)setExpressionBtp__11daNpc_grC_cFi,
- (void*)setExpression__11daNpc_grC_cFif,
- (void*)setMotionAnm__11daNpc_grC_cFif,
- (void*)setMotion__11daNpc_grC_cFifi,
- (void*)drawDbgInfo__11daNpc_grC_cFv,
- (void*)drawOtherMdls__11daNpc_grC_cFv,
-};
+ if (home.angle.x != 0xFFFF) {
+ mFlowID = home.angle.x;
+ } else {
+ mFlowID = -1;
+ }
-/* 809CFACC-809CFAD8 0002B0 000C+00 3/3 0/0 0/0 .data __vt__12J3DFrameCtrl */
-SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12J3DFrameCtrlFv,
-};
+ if (isDelete()) {
+ return cPhs_ERROR_e;
+ }
-/* 809CFAD8-809CFAFC 0002BC 0024+00 3/3 0/0 0/0 .data __vt__12dBgS_ObjAcch */
-SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12dBgS_ObjAcchFv,
- (void*)NULL,
- (void*)NULL,
- (void*)func_809CF500,
- (void*)NULL,
- (void*)NULL,
- (void*)func_809CF4F8,
-};
+ int res_count = 0;
+ int i = 0;
+ for (; l_loadRes_list[mType][i] >= 0; i++) {
+ cPhs__Step step = (cPhs__Step)dComIfG_resLoad(&mPhases[i], l_resNames[l_loadRes_list[mType][i]]);
-/* 809CFAFC-809CFB08 0002E0 000C+00 3/3 0/0 0/0 .data __vt__10cCcD_GStts */
-SECTION_DATA extern void* __vt__10cCcD_GStts[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__10cCcD_GSttsFv,
-};
+ if (step == cPhs_ERROR_e || step == cPhs_UNK3_e) {
+ return cPhs_ERROR_e;
+ }
-/* 809CFB08-809CFB14 0002EC 000C+00 2/2 0/0 0/0 .data __vt__10dCcD_GStts */
-SECTION_DATA extern void* __vt__10dCcD_GStts[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__10dCcD_GSttsFv,
-};
+ if (step == cPhs_COMPLEATE_e) {
+ res_count++;
+ }
+ }
-/* 809CFB14-809CFB20 0002F8 000C+00 2/2 0/0 0/0 .data __vt__12dBgS_AcchCir */
-SECTION_DATA extern void* __vt__12dBgS_AcchCir[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__12dBgS_AcchCirFv,
-};
+ if (res_count == i) {
+ if (!fopAcM_entrySolidHeap(this, createHeapCallBack, 0x36E0)) {
+ return cPhs_ERROR_e;
+ }
-/* 809CFB20-809CFB2C 000304 000C+00 4/4 0/0 0/0 .data __vt__18daNpcF_ActorMngr_c */
-SECTION_DATA extern void* __vt__18daNpcF_ActorMngr_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__18daNpcF_ActorMngr_cFv,
-};
+ fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
+ fopAcM_setCullSizeBox(this, -300.0f, -50.0f, -300.0f, 300.0f, 450.0f, 300.0f);
-/* 809CFB2C-809CFB38 000310 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGCyl */
-SECTION_DATA extern void* __vt__8cM3dGCyl[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGCylFv,
-};
+ mSound.init(&current.pos, &eyePos, 3, 1);
-/* 809CFB38-809CFB44 00031C 000C+00 3/3 0/0 0/0 .data __vt__8cM3dGAab */
-SECTION_DATA extern void* __vt__8cM3dGAab[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__8cM3dGAabFv,
-};
+ mAcchCir.SetWall(daNpc_grC_Param_c::m.common.width, daNpc_grC_Param_c::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));
+ mPaPo.init(&mAcch, daNpc_grC_Param_c::m.common.height, daNpc_grC_Param_c::m.common.height);
+ mCcStts.Init(daNpc_grC_Param_c::m.common.weight, 0, this);
+ mCyl.Set(mCcDCyl);
+ mCyl.SetStts(&mCcStts);
+ mCyl.SetTgHitCallback(tgHitCallBack);
+ mAcch.CrrPos(dComIfG_Bgsp());
-/* 809CFB44-809CFB50 000328 000C+00 3/3 0/0 0/0 .data __vt__15daNpcF_Lookat_c */
-SECTION_DATA extern void* __vt__15daNpcF_Lookat_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__15daNpcF_Lookat_cFv,
-};
+ mGndChk = mAcch.m_gnd;
+ mGroundH = mAcch.GetGroundH();
-/* 809CB4CC-809CB650 0000EC 0184+00 1/1 0/0 0/0 .text __ct__11daNpc_grC_cFv */
-daNpc_grC_c::daNpc_grC_c() {
- // NONMATCHING
-}
+ setEnvTevColor();
+ setRoomNo();
+ reset();
+ Execute();
-/* 809CB650-809CB698 000270 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGCylFv */
-// cM3dGCyl::~cM3dGCyl() {
-extern "C" void __dt__8cM3dGCylFv() {
- // NONMATCHING
-}
+ return cPhs_COMPLEATE_e;
+ }
-/* 809CB698-809CB6E0 0002B8 0048+00 1/0 0/0 0/0 .text __dt__8cM3dGAabFv */
-// cM3dGAab::~cM3dGAab() {
-extern "C" void __dt__8cM3dGAabFv() {
- // NONMATCHING
+ return cPhs_INIT_e;
}
-/* 809CB6E0-809CB8E0 000300 0200+00 1/0 0/0 0/0 .text __dt__11daNpc_grC_cFv */
-daNpc_grC_c::~daNpc_grC_c() {
- // NONMATCHING
-}
+/* 809CBBD4-809CBDC4 0007F4 01F0+00 1/1 0/0 0/0 .text CreateHeap__11daNpc_grC_cFv */
+int daNpc_grC_c::CreateHeap() {
+ J3DModelData* mdlData_p = NULL;
-/* ############################################################################################## */
-/* 809CF51C-809CF588 000000 006C+00 13/13 0/0 0/0 .rodata m__17daNpc_grC_Param_c */
-SECTION_RODATA u8 const daNpc_grC_Param_c::m[108] = {
- 0x42, 0x20, 0x00, 0x00, 0xC0, 0x40, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x43, 0xC8, 0x00, 0x00,
- 0x43, 0x7F, 0x00, 0x00, 0x43, 0x0C, 0x00, 0x00, 0x42, 0x0C, 0x00, 0x00, 0x42, 0x48, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x41, 0x20, 0x00, 0x00, 0xC1, 0x20, 0x00, 0x00,
- 0x41, 0xF0, 0x00, 0x00, 0xC1, 0xF0, 0x00, 0x00, 0x42, 0x34, 0x00, 0x00, 0xC2, 0x34, 0x00, 0x00,
- 0x3F, 0x19, 0x99, 0x9A, 0x41, 0x40, 0x00, 0x00, 0x00, 0x04, 0x00, 0x06, 0x00, 0x06, 0x00, 0x06,
- 0x43, 0x34, 0x00, 0x00, 0x43, 0xFA, 0x00, 0x00, 0x43, 0x96, 0x00, 0x00, 0xC3, 0x96, 0x00, 0x00,
- 0x00, 0x3C, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF51C, &daNpc_grC_Param_c::m);
-
-/* 809CF588-809CF58C 00006C 0004+00 0/1 0/0 0/0 .rodata @4397 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4397 = -300.0f;
-COMPILER_STRIP_GATE(0x809CF588, &lit_4397);
-#pragma pop
-
-/* 809CF58C-809CF590 000070 0004+00 0/1 0/0 0/0 .rodata @4398 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4398 = -50.0f;
-COMPILER_STRIP_GATE(0x809CF58C, &lit_4398);
-#pragma pop
-
-/* 809CF590-809CF594 000074 0004+00 0/1 0/0 0/0 .rodata @4399 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4399 = 300.0f;
-COMPILER_STRIP_GATE(0x809CF590, &lit_4399);
-#pragma pop
-
-/* 809CF594-809CF598 000078 0004+00 0/1 0/0 0/0 .rodata @4400 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4400 = 450.0f;
-COMPILER_STRIP_GATE(0x809CF594, &lit_4400);
-#pragma pop
+ if (mTwilight) {
+ if (l_bmdGetParamList[1].fileIdx >= 0) {
+ mdlData_p = (J3DModelData*)dComIfG_getObjectRes(l_resNames[l_bmdGetParamList[1].arcIdx], l_bmdGetParamList[1].fileIdx);
+ }
+ } else if (l_bmdGetParamList[0].fileIdx >= 0) {
+ mdlData_p = (J3DModelData*)dComIfG_getObjectRes(l_resNames[l_bmdGetParamList[0].arcIdx], l_bmdGetParamList[0].fileIdx);
+ }
-/* 809CB8E0-809CBBD4 000500 02F4+00 1/1 0/0 0/0 .text create__11daNpc_grC_cFv */
-void daNpc_grC_c::create() {
- // NONMATCHING
-}
+ JUT_ASSERT(452, 0 != mdlData_p);
-/* ############################################################################################## */
-/* 809CF598-809CF59C 00007C 0004+00 5/5 0/0 0/0 .rodata @4454 */
-SECTION_RODATA static f32 const lit_4454 = 1.0f;
-COMPILER_STRIP_GATE(0x809CF598, &lit_4454);
-
-/* 809CF59C-809CF5A0 000080 0004+00 4/6 0/0 0/0 .rodata @4455 */
-SECTION_RODATA static u8 const lit_4455[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF59C, &lit_4455);
+ mpMorf = new mDoExt_McaMorfSO(mdlData_p, NULL, NULL, NULL, -1, 1.0f, 0, -1, &mSound, 0x80000, 0x11020284);
+ if (mpMorf != NULL && mpMorf->getModel() == NULL) {
+ mpMorf->stopZelAnime();
+ mpMorf = NULL;
+ }
-/* 809CBBD4-809CBDC4 0007F4 01F0+00 1/1 0/0 0/0 .text CreateHeap__11daNpc_grC_cFv */
-void daNpc_grC_c::CreateHeap() {
- // NONMATCHING
+ if (mpMorf == NULL) {
+ return 0;
+ }
+
+ J3DModel* model = mpMorf->getModel();
+ for (u16 i = 0; i < mdlData_p->getJointNum(); i++) {
+ mdlData_p->getJointNodePointer(i)->setCallBack(ctrlJointCallBack);
+ }
+ model->setUserArea((u32)this);
+
+ field_0xbd8 = 0;
+
+ if (!setExpressionAnm(ANM_F_TALK_A, false)) {
+ return 0;
+ }
+
+ setMotionAnm(ANM_WAIT_A, 0.0f);
+
+ return 1;
}
/* 809CBDC4-809CBDF8 0009E4 0034+00 1/1 0/0 0/0 .text Delete__11daNpc_grC_cFv */
-void daNpc_grC_c::Delete() {
- // NONMATCHING
+int daNpc_grC_c::Delete() {
+ this->~daNpc_grC_c();
+ return 1;
}
/* 809CBDF8-809CBE18 000A18 0020+00 2/2 0/0 0/0 .text Execute__11daNpc_grC_cFv */
-void daNpc_grC_c::Execute() {
- // NONMATCHING
+int daNpc_grC_c::Execute() {
+ return execute();
}
/* 809CBE18-809CBE8C 000A38 0074+00 1/1 0/0 0/0 .text Draw__11daNpc_grC_cFv */
-void daNpc_grC_c::Draw() {
- // NONMATCHING
+int daNpc_grC_c::Draw() {
+ return draw(chkAction(&daNpc_grC_c::test), FALSE, daNpc_grC_Param_c::m.common.real_shadow_size, NULL, FALSE);
}
-/* ############################################################################################## */
-/* 809CF5A0-809CF5AC 000084 000C+00 1/1 0/0 0/0 .rodata @4478 */
-SECTION_RODATA static u8 const lit_4478[12] = {
- 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04,
-};
-COMPILER_STRIP_GATE(0x809CF5A0, &lit_4478);
+/* 809CBE8C-809CC0C0 000AAC 0234+00 1/1 0/0 0/0 .text ctrlJoint__11daNpc_grC_cFP8J3DJointP8J3DModel */
+int daNpc_grC_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
+ int jntNo = i_joint->getJntNo();
+ int i_jointList[3] = {JNT_BACKBONE1, JNT_NECK, JNT_HEAD};
+
+ if (jntNo == 0) {
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_BACKBONE1));
+ mDoMtx_stack_c::multVecZero(&mLookatPos[0]);
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_NECK));
+ mDoMtx_stack_c::multVecZero(&mLookatPos[1]);
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(JNT_HEAD));
+ mDoMtx_stack_c::multVecZero(&mLookatPos[2]);
+ }
+
+ mDoMtx_stack_c::copy(i_model->getAnmMtx(jntNo));
+
+ switch (jntNo) {
+ case JNT_BACKBONE1:
+ case JNT_NECK:
+ case JNT_HEAD:
+ setLookatMtx(jntNo, i_jointList, daNpc_grC_Param_c::m.common.neck_rotation_ratio);
+ break;
+ }
+
+ if (jntNo == JNT_BACKBONE1) {
+ mDoMtx_stack_c::YrotM(-field_0x908[0].z);
+ mDoMtx_stack_c::ZrotM(field_0x908[0].x);
+ } else if (jntNo == JNT_HEAD) {
+ mDoMtx_stack_c::YrotM(-field_0x908[2].z);
+ mDoMtx_stack_c::ZrotM(field_0x908[2].x);
+ }
+
+ i_model->setAnmMtx(jntNo, mDoMtx_stack_c::get());
+ MTXCopy(mDoMtx_stack_c::get(), J3DSys::mCurrentMtx);
+
+ if ((jntNo == JNT_HEAD || jntNo == JNT_MOUTH) && (mAnmFlags & ANM_PLAY_BCK) != 0) {
+ J3DAnmTransform* anm = mBckAnm.getBckAnm();
+ mBckAnm.changeBckOnly(mpMorf->getAnm());
+ mpMorf->changeAnm(anm);
+ }
-/* 809CBE8C-809CC0C0 000AAC 0234+00 1/1 0/0 0/0 .text
- * ctrlJoint__11daNpc_grC_cFP8J3DJointP8J3DModel */
-void daNpc_grC_c::ctrlJoint(J3DJoint* param_0, J3DModel* param_1) {
- // NONMATCHING
+ return 1;
}
-/* 809CC0C0-809CC0E0 000CE0 0020+00 1/1 0/0 0/0 .text
- * createHeapCallBack__11daNpc_grC_cFP10fopAc_ac_c */
-void daNpc_grC_c::createHeapCallBack(fopAc_ac_c* param_0) {
- // NONMATCHING
+/* 809CC0C0-809CC0E0 000CE0 0020+00 1/1 0/0 0/0 .text createHeapCallBack__11daNpc_grC_cFP10fopAc_ac_c */
+int daNpc_grC_c::createHeapCallBack(fopAc_ac_c* a_this) {
+ daNpc_grC_c* i_this = (daNpc_grC_c*)a_this;
+ return i_this->CreateHeap();
}
-/* 809CC0E0-809CC12C 000D00 004C+00 2/2 0/0 0/0 .text ctrlJointCallBack__11daNpc_grC_cFP8J3DJointi
- */
-void daNpc_grC_c::ctrlJointCallBack(J3DJoint* param_0, int param_1) {
- // NONMATCHING
+/* 809CC0E0-809CC12C 000D00 004C+00 2/2 0/0 0/0 .text ctrlJointCallBack__11daNpc_grC_cFP8J3DJointi */
+int daNpc_grC_c::ctrlJointCallBack(J3DJoint* i_joint, int param_2) {
+ if (param_2 == 0) {
+ J3DModel* model = j3dSys.getModel();
+ daNpc_grC_c* i_this = (daNpc_grC_c*)model->getUserArea();
+
+ if (i_this != NULL) {
+ i_this->ctrlJoint(i_joint, model);
+ }
+ }
+
+ return 1;
}
/* 809CC12C-809CC26C 000D4C 0140+00 1/0 0/0 0/0 .text setParam__11daNpc_grC_cFv */
void daNpc_grC_c::setParam() {
- // NONMATCHING
+ ActionFn action = mNextAction;
+ u32 uVar1 = 10;
+ selectAction();
+
+ if (!mTwilight && daPy_py_c::checkNowWolf()) {
+ uVar1 = 0;
+ }
+
+ if (mNextAction != action) {
+ for (int i = 2; i < 2; i++) {
+ mActorMngr[i].initialize();
+ }
+ }
+
+ field_0xe30 = 0;
+ field_0xe34 = 0;
+
+ s16 talk_distance = daNpc_grC_Param_c::m.common.talk_distance;
+ s16 talk_angle = daNpc_grC_Param_c::m.common.talk_angle;
+
+ attention_info.distances[fopAc_attn_LOCK_e] = getDistTableIdx(daNpc_grC_Param_c::m.common.attention_distance, daNpc_grC_Param_c::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(talk_distance, talk_angle);
+ attention_info.flags = uVar1;
+
+ scale.set(daNpc_grC_Param_c::m.common.scale, daNpc_grC_Param_c::m.common.scale, daNpc_grC_Param_c::m.common.scale);
+ mAcchCir.SetWallR(daNpc_grC_Param_c::m.common.width);
+ mAcchCir.SetWallH(daNpc_grC_Param_c::m.common.knee_length);
+ gravity = daNpc_grC_Param_c::m.common.gravity;
}
/* 809CC26C-809CC3EC 000E8C 0180+00 1/0 0/0 0/0 .text main__11daNpc_grC_cFv */
-void daNpc_grC_c::main() {
- // NONMATCHING
+BOOL daNpc_grC_c::main() {
+ if (!doEvent()) {
+ doNormalAction(1);
+ }
+
+ if (checkHide()) {
+ attention_info.flags = 0;
+ }
+
+ if (!daNpc_grC_Param_c::m.common.debug_mode_ON && (!dComIfGp_event_runCheck() || (mOrderNewEvt && dComIfGp_getEvent().isOrderOK()))) {
+ if (mOrderEvtNo != 0) {
+ eventInfo.setArchiveName(l_resNames[l_evtGetParamList[mOrderEvtNo].arcIdx]);
+ }
+
+ orderEvent(field_0xe51, l_evtNames[l_evtGetParamList[mOrderEvtNo].fileIdx], 0xFFFF, 40, 0xFF, 1);
+ }
+
+ if (field_0x9ee) {
+ mExpressionMorfOverride = 0.0f;
+ mMotionMorfOverride = 0.0f;
+ field_0x9ee = false;
+ }
+
+ playExpression();
+ playMotion();
+
+ return TRUE;
}
/* 809CC3EC-809CC3F4 00100C 0008+00 1/0 0/0 0/0 .text ctrlBtk__11daNpc_grC_cFv */
-bool daNpc_grC_c::ctrlBtk() {
+BOOL daNpc_grC_c::ctrlBtk() {
+ return FALSE;
+}
+
+/* 809CC3F4-809CC930 001014 053C+00 1/0 0/0 0/0 .text setAttnPos__11daNpc_grC_cFv */
+void daNpc_grC_c::setAttnPos() {
+ static cXyz const eyeOffset(16.0f, 60.0f, 0.0f);
+
+ cXyz sp7c, sp88, sp94, spa0;
+ f32 attention_offset = daNpc_grC_Param_c::m.common.attention_offset;
+
+ mDoMtx_stack_c::YrotS(field_0x990);
+ cLib_addCalc2(&field_0x984[0], 0.0f, 0.1f, 125.0f);
+ cLib_addCalc2(&field_0x984[2], 0.0f, 0.1f, 125.0f);
+
+ for (int i = 0; i < 3; i++) {
+ sp94.set(0.0f, 0.0f, field_0x984[i] * cM_ssin(field_0x992));
+ mDoMtx_stack_c::multVec(&sp94, &spa0);
+ field_0x908[i].x = -spa0.z;
+ field_0x908[i].z = -spa0.x;
+ }
+
+ cLib_chaseS(&field_0x992, 0, 0x555);
+
+ if (mLookMode == LOOK_RESET) {
+ for (int i = 0; i < 3; i++) {
+ mLookatAngle[i].setall(0);
+ }
+ }
+
+ J3DModelData* mdlData_p = mpMorf->getModel()->getModelData();
+ for (u16 i = 0; i < mdlData_p->getJointNum(); i++) {
+ mdlData_p->getJointNodePointer(i)->setCallBack(ctrlJointCallBack);
+ }
+
+ setMtx();
+ lookat();
+ setPrtcl();
+
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(4));
+ mDoMtx_stack_c::multVecZero(&mHeadPos);
+ mDoMtx_stack_c::multVec(&eyeOffset, &eyePos);
+ mDoMtx_stack_c::multVec(&eyeOffset, &sp94);
+
+ mHeadAngle.x = cLib_targetAngleX(&mHeadPos, &sp94);
+ mHeadAngle.y = cLib_targetAngleY(&mHeadPos, &sp94);
+
+ cXyz* attnPos = mLookat.getAttnPos();
+ if (attnPos != NULL) {
+ sp88 = *attnPos - eyePos;
+ mEyeAngle.y = -(mLookatAngle[2].y + mCurAngle.y);
+ mEyeAngle.y += cM_atan2s(sp88.x, sp88.z);
+ mEyeAngle.x = -cM_atan2s(sp88.y, sp88.absXZ());
+ } else {
+ mEyeAngle.y = 0;
+ mEyeAngle.x = 0;
+ }
+
+ f32 fVar1 = 0.0f;
+ f32 fVar2 = 0.0f;
+
+ attention_info.position = mHeadPos;
+ attention_info.position.y += attention_offset;
+
+ if (!mHide) {
+ if (!mIsDamaged) {
+ mCyl.SetTgType(0xD8FBFDFF);
+ mCyl.SetTgSPrm(0x1F);
+ mCyl.OnTgNoHitMark();
+ } else {
+ mCyl.SetTgType(0);
+ mCyl.SetTgSPrm(0);
+ }
+
+ mCyl.SetCoSPrm(0x79);
+ mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(1));
+ mDoMtx_stack_c::multVecZero(&sp7c);
+ sp7c.y = current.pos.y;
+ mCyl.SetC(sp7c);
+ mCyl.SetH(daNpc_grC_Param_c::m.common.height + fVar1);
+ mCyl.SetR(daNpc_grC_Param_c::m.common.width + fVar2);
+ dComIfG_Ccsp()->Set(&mCyl);
+ }
+
+ mCyl.ClrTgHit();
+}
+
+/* 809CC930-809CCB78 001550 0248+00 2/0 0/0 0/0 .text setExpressionAnm__11daNpc_grC_cFib */
+bool daNpc_grC_c::setExpressionAnm(int i_idx, bool i_modify) {
+ J3DAnmTransform* anm = NULL;
+ int i_attr = J3DFrameCtrl::EMode_NONE;
+
+ mAnmFlags &= ~ANM_EXPRESSION_FLAGS;
+
+ if (l_bckGetParamList[i_idx].fileIdx >= 0) {
+ anm = getTrnsfrmKeyAnmP(l_resNames[l_bckGetParamList[i_idx].arcIdx], l_bckGetParamList[i_idx].fileIdx);
+ }
+
+ bool bVar1 = false;
+ switch (i_idx) {
+ case ANM_NONE:
+ bVar1 = setExpressionBtp(EXPR_BTP_GRC_A);
+ break;
+
+ case ANM_F_WAIT_A:
+ bVar1 = setExpressionBtp(EXPR_BTP_GRC_A);
+ i_attr = J3DFrameCtrl::EMode_LOOP;
+ break;
+
+ case ANM_GRUMPY:
+ bVar1 = setExpressionBtp(EXPR_BTP_GRC_A);
+ i_attr = J3DFrameCtrl::EMode_LOOP;
+ break;
+
+ case ANM_F_CHEERFUL:
+ bVar1 = setExpressionBtp(EXPR_BTP_GRC_A);
+ i_attr = J3DFrameCtrl::EMode_LOOP;
+ break;
+
+ case ANM_FH_SAD_TALK:
+ bVar1 = setExpressionBtp(EXPR_BTP_FH_SAD_TALK);
+ i_attr = J3DFrameCtrl::EMode_LOOP;
+ break;
+
+ case ANM_F_TALK_A:
+ bVar1 = setExpressionBtp(EXPR_BTP_GRC_A);
+ i_attr = J3DFrameCtrl::EMode_LOOP;
+ break;
+
+ case ANM_GRUMPY_T:
+ // BTP idx may have mistakenly been switched with the case that follows
+ bVar1 = setExpressionBtp(EXPR_BTP_F_CHEERFUL_T);
+ break;
+
+ case ANM_F_CHEERFUL_T:
+ // BTP idx may have mistakenly been switched with the case that preceeds
+ bVar1 = setExpressionBtp(EXPR_BTP_F_GRUMPY_T);
+ break;
+
+ case ANM_F_SAD_TALK:
+ bVar1 = setExpressionBtp(EXPR_BTP_F_SAD_TALK);
+ break;
+
+ case ANM_FH_CLOSEEYE:
+ bVar1 = setExpressionBtp(EXPR_BTP_FH_CLOSEEYE);
+ i_attr = J3DFrameCtrl::EMode_LOOP;
+ break;
+
+ default:
+ anm = NULL;
+ break;
+ }
+
+ if (!bVar1) {
+ return false;
+ }
+
+ if (anm == NULL) {
+ return true;
+ }
+
+ if (setBckAnm(anm, 1.0f, i_attr, 0, -1, i_modify)) {
+ mAnmFlags |= ANM_PAUSE_BCK | ANM_PLAY_BCK;
+ mExpressionLoops = 0;
+ return true;
+ }
+
return false;
}
-/* ############################################################################################## */
-/* 809CF5AC-809CF5B0 000090 0004+00 0/1 0/0 0/0 .rodata @4839 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4839 = 16.0f;
-COMPILER_STRIP_GATE(0x809CF5AC, &lit_4839);
-#pragma pop
-
-/* 809CF5B0-809CF5B4 000094 0004+00 0/1 0/0 0/0 .rodata @4840 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4840 = 60.0f;
-COMPILER_STRIP_GATE(0x809CF5B0, &lit_4840);
-#pragma pop
-
-/* 809CF5B4-809CF5B8 000098 0004+00 0/1 0/0 0/0 .rodata @4841 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4841 = 1.0f / 10.0f;
-COMPILER_STRIP_GATE(0x809CF5B4, &lit_4841);
-#pragma pop
-
-/* 809CF5B8-809CF5BC 00009C 0004+00 0/1 0/0 0/0 .rodata @4842 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_4842 = 125.0f;
-COMPILER_STRIP_GATE(0x809CF5B8, &lit_4842);
-#pragma pop
-
-/* 809CF5BC-809CF5C4 0000A0 0008+00 0/1 0/0 0/0 .rodata @4843 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4843[8] = {
- 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF5BC, &lit_4843);
-#pragma pop
-
-/* 809CF5C4-809CF5CC 0000A8 0008+00 0/1 0/0 0/0 .rodata @4844 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4844[8] = {
- 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF5C4, &lit_4844);
-#pragma pop
-
-/* 809CF5CC-809CF5D4 0000B0 0008+00 0/1 0/0 0/0 .rodata @4845 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_4845[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF5CC, &lit_4845);
-#pragma pop
-
-/* 809CFB68-809CFB6C 000008 0001+03 1/1 0/0 0/0 .bss @1109 */
-static u8 lit_1109[1 + 3 /* padding */];
-
-/* 809CFB6C-809CFB70 00000C 0001+03 0/0 0/0 0/0 .bss @1107 */
-#pragma push
-#pragma force_active on
-static u8 lit_1107[1 + 3 /* padding */];
-#pragma pop
-
-/* 809CFB70-809CFB74 000010 0001+03 0/0 0/0 0/0 .bss @1105 */
-#pragma push
-#pragma force_active on
-static u8 lit_1105[1 + 3 /* padding */];
-#pragma pop
-
-/* 809CFB74-809CFB78 000014 0001+03 0/0 0/0 0/0 .bss @1104 */
-#pragma push
-#pragma force_active on
-static u8 lit_1104[1 + 3 /* padding */];
-#pragma pop
-
-/* 809CFB78-809CFB7C 000018 0001+03 0/0 0/0 0/0 .bss @1099 */
-#pragma push
-#pragma force_active on
-static u8 lit_1099[1 + 3 /* padding */];
-#pragma pop
-
-/* 809CFB7C-809CFB80 00001C 0001+03 0/0 0/0 0/0 .bss @1097 */
-#pragma push
-#pragma force_active on
-static u8 lit_1097[1 + 3 /* padding */];
-#pragma pop
-
-/* 809CFB80-809CFB84 000020 0001+03 0/0 0/0 0/0 .bss @1095 */
-#pragma push
-#pragma force_active on
-static u8 lit_1095[1 + 3 /* padding */];
-#pragma pop
-
-/* 809CFB84-809CFB88 000024 0001+03 0/0 0/0 0/0 .bss @1094 */
-#pragma push
-#pragma force_active on
-static u8 lit_1094[1 + 3 /* padding */];
-#pragma pop
-
-/* 809CFB88-809CFB8C 000028 0001+03 0/0 0/0 0/0 .bss @1057 */
-#pragma push
-#pragma force_active on
-static u8 lit_1057[1 + 3 /* padding */];
-#pragma pop
-
-/* 809CFB8C-809CFB90 00002C 0001+03 0/0 0/0 0/0 .bss @1055 */
-#pragma push
-#pragma force_active on
-static u8 lit_1055[1 + 3 /* padding */];
-#pragma pop
-
-/* 809CFB90-809CFB94 000030 0001+03 0/0 0/0 0/0 .bss @1053 */
-#pragma push
-#pragma force_active on
-static u8 lit_1053[1 + 3 /* padding */];
-#pragma pop
-
-/* 809CFB94-809CFB98 000034 0001+03 0/0 0/0 0/0 .bss @1052 */
-#pragma push
-#pragma force_active on
-static u8 lit_1052[1 + 3 /* padding */];
-#pragma pop
-
-/* 809CFB98-809CFB9C 000038 0001+03 0/0 0/0 0/0 .bss @1014 */
-#pragma push
-#pragma force_active on
-static u8 lit_1014[1 + 3 /* padding */];
-#pragma pop
-
-/* 809CFB9C-809CFBA0 00003C 0001+03 0/0 0/0 0/0 .bss @1012 */
-#pragma push
-#pragma force_active on
-static u8 lit_1012[1 + 3 /* padding */];
-#pragma pop
-
-/* 809CFBA0-809CFBA4 000040 0001+03 0/0 0/0 0/0 .bss @1010 */
-#pragma push
-#pragma force_active on
-static u8 lit_1010[1 + 3 /* padding */];
-#pragma pop
-
-/* 809CFBA4-809CFBA8 000044 0001+03 0/0 0/0 0/0 .bss @1009 */
-#pragma push
-#pragma force_active on
-static u8 lit_1009[1 + 3 /* padding */];
-#pragma pop
-
-/* 809CFBA8-809CFBB4 000048 000C+00 1/1 0/0 0/0 .bss @4019 */
-static u8 lit_4019[12];
+/* 809CCB78-809CCCA4 001798 012C+00 1/0 0/0 0/0 .text setExpressionBtp__11daNpc_grC_cFi */
+bool daNpc_grC_c::setExpressionBtp(int i_idx) {
+ J3DAnmTexPattern* anm = NULL;
+ int i_attr = J3DFrameCtrl::EMode_NONE;
-/* 809CFBB4-809CFBB8 000054 0004+00 1/1 0/0 0/0 .bss l_HIO */
-static u8 l_HIO[4];
+ mAnmFlags &= ~(ANM_PLAY_BTP | ANM_PAUSE_BTP | ANM_FLAG_800);
-/* 809CFBB8-809CFBC8 000058 000C+04 0/1 0/0 0/0 .bss @4659 */
-#pragma push
-#pragma force_active on
-static u8 lit_4659[12 + 4 /* padding */];
-#pragma pop
+ if (l_btpGetParamList[i_idx].fileIdx >= 0) {
+ anm = getTexPtrnAnmP(l_resNames[l_btpGetParamList[i_idx].arcIdx], l_btpGetParamList[i_idx].fileIdx);
+ }
-/* 809CFBC8-809CFBD4 000068 000C+00 0/1 0/0 0/0 .bss eyeOffset$4658 */
-#pragma push
-#pragma force_active on
-static u8 eyeOffset[12];
-#pragma pop
+ switch (i_idx) {
+ case EXPR_BTP_GRC_A:
+ i_attr = J3DFrameCtrl::EMode_LOOP;
+ break;
-/* 809CC3F4-809CC930 001014 053C+00 1/0 0/0 0/0 .text setAttnPos__11daNpc_grC_cFv */
-void daNpc_grC_c::setAttnPos() {
- // NONMATCHING
-}
+ case EXPR_BTP_F_CHEERFUL_T:
+ case EXPR_BTP_F_GRUMPY_T:
+ case EXPR_BTP_F_SAD_TALK:
+ break;
+
+ case EXPR_BTP_FH_SAD_TALK:
+ i_attr = J3DFrameCtrl::EMode_LOOP;
+ break;
-/* 809CC930-809CCB78 001550 0248+00 2/0 0/0 0/0 .text setExpressionAnm__11daNpc_grC_cFib
- */
-void daNpc_grC_c::setExpressionAnm(int param_0, bool param_1) {
- // NONMATCHING
-}
+ case EXPR_BTP_FH_CLOSEEYE:
+ i_attr = J3DFrameCtrl::EMode_LOOP;
+ break;
+
+ default:
+ anm = NULL;
+ break;
+ }
+
+ if (anm == NULL) {
+ return true;
+ }
+
+ if (setBtpAnm(anm, mpMorf->getModel()->getModelData(), 1.0f, i_attr)) {
+ mAnmFlags |= ANM_PAUSE_BTP | ANM_PLAY_BTP;
-/* 809CCB78-809CCCA4 001798 012C+00 1/0 0/0 0/0 .text setExpressionBtp__11daNpc_grC_cFi
- */
-void daNpc_grC_c::setExpressionBtp(int param_0) {
- // NONMATCHING
+ if (i_idx == EXPR_BTP_GRC_A) {
+ mAnmFlags |= ANM_FLAG_800;
+ }
+
+ return true;
+ }
+
+ return false;
}
/* 809CCCA4-809CCCD0 0018C4 002C+00 1/0 0/0 0/0 .text setExpression__11daNpc_grC_cFif */
-void daNpc_grC_c::setExpression(int param_0, f32 param_1) {
- // NONMATCHING
+void daNpc_grC_c::setExpression(int i_expression, f32 i_morf) {
+ if (i_expression >= 0 && i_expression < 0xF) {
+ mExpression = i_expression;
+ mExpressionMorfOverride = i_morf;
+ mExpressionPrevPhase = -1;
+ mExpressionPhase = 0;
+ }
}
/* 809CCCD0-809CCE70 0018F0 01A0+00 2/0 0/0 0/0 .text setMotionAnm__11daNpc_grC_cFif */
-bool daNpc_grC_c::setMotionAnm(int param_0, f32 param_1) {
- // NONMATCHING
+void daNpc_grC_c::setMotionAnm(int i_idx, f32 i_morf) {
+ J3DAnmTransformKey* anm = NULL;
+ J3DAnmTextureSRTKey* i_btk = NULL;
+ int i_attr = J3DFrameCtrl::EMode_LOOP;
+
+ mAnmFlags &= ~ANM_MOTION_FLAGS;
+
+ if (l_bckGetParamList[i_idx].fileIdx >= 0) {
+ anm = getTrnsfrmKeyAnmP(l_resNames[l_bckGetParamList[i_idx].arcIdx], l_bckGetParamList[i_idx].fileIdx);
+ }
+
+ switch (i_idx) {
+ case ANM_WAIT_A:
+ case ANM_TALK_A:
+ case ANM_SIT_A:
+ case ANM_SAD_WAIT:
+ break;
+
+ case ANM_TALK_B:
+ i_attr = J3DFrameCtrl::EMode_NONE;
+ break;
+
+ case ANM_SAD_TALK:
+ i_attr = J3DFrameCtrl::EMode_NONE;
+ break;
+
+ case ANM_TOSIT_A:
+ i_attr = J3DFrameCtrl::EMode_NONE;
+ break;
+
+ case ANM_GET_UP:
+ i_attr = J3DFrameCtrl::EMode_NONE;
+ break;
+
+ case ANM_STEP:
+ i_attr = J3DFrameCtrl::EMode_NONE;
+ break;
+
+ default:
+ anm = NULL;
+ i_btk = NULL;
+ break;
+ }
+
+ if (l_btkGetParamList[0].fileIdx >= 0) {
+ i_btk = getTexSRTKeyAnmP(l_resNames[l_btkGetParamList[0].arcIdx], l_btkGetParamList[0].fileIdx);
+ }
+
+ if (i_btk != NULL && setBtkAnm(i_btk, mpMorf->getModel()->getModelData(), 1.0f, J3DFrameCtrl::EMode_LOOP)) {
+ mAnmFlags |= ANM_PAUSE_BTK | ANM_PLAY_BTK;
+ }
+
+ if (anm != NULL && setMcaMorfAnm(anm, 1.0f, i_morf, i_attr, 0, -1)) {
+ mAnmFlags |= ANM_PLAY_MORF | ANM_PAUSE_MORF;
+ mMotionLoops = 0;
+ }
}
/* 809CCE70-809CCEB4 001A90 0044+00 1/0 0/0 0/0 .text setMotion__11daNpc_grC_cFifi */
-void daNpc_grC_c::setMotion(int param_0, f32 param_1, int param_2) {
- // NONMATCHING
+void daNpc_grC_c::setMotion(int i_motion, f32 i_morf, int param_3) {
+ s16 motion = i_motion;
+ if ((param_3 != 0 || mMotion != motion) && i_motion >= 0 && i_motion < 9) {
+ mMotion = motion;
+ mMotionMorfOverride = i_morf;
+ mMotionPrevPhase = -1;
+ mMotionPhase = 0;
+ }
}
/* 809CCEB4-809CCEBC 001AD4 0008+00 1/0 0/0 0/0 .text drawDbgInfo__11daNpc_grC_cFv */
-bool daNpc_grC_c::drawDbgInfo() {
- return false;
+int daNpc_grC_c::drawDbgInfo() {
+ return 0;
}
/* 809CCEBC-809CCEC0 001ADC 0004+00 1/0 0/0 0/0 .text drawOtherMdls__11daNpc_grC_cFv */
@@ -929,939 +857,777 @@ void daNpc_grC_c::drawOtherMdls() {
/* empty function */
}
-/* 809CCEC0-809CCF38 001AE0 0078+00 1/1 0/0 0/0 .text getTypeFromParam__11daNpc_grC_cFv
- */
-void daNpc_grC_c::getTypeFromParam() {
- // NONMATCHING
+/* 809CCEC0-809CCF38 001AE0 0078+00 1/1 0/0 0/0 .text getTypeFromParam__11daNpc_grC_cFv */
+u8 daNpc_grC_c::getTypeFromParam() {
+ switch (fopAcM_GetParam(this) & 0xFF) {
+ case 0:
+ default:
+ return mTwilight ? TYPE_TWILIGHT : TYPE_0;
+
+ case 1:
+ return TYPE_SPA;
+
+ case 2:
+ if (mTwilight) {
+ return TYPE_TWILIGHT;
+ }
+
+ return TYPE_3;
+
+ case 3:
+ return TYPE_BUYER;
+
+ case 4:
+ return TYPE_5;
+ }
}
/* 809CCF38-809CCFBC 001B58 0084+00 1/1 0/0 0/0 .text isDelete__11daNpc_grC_cFv */
-void daNpc_grC_c::isDelete() {
- // NONMATCHING
-}
+BOOL daNpc_grC_c::isDelete() {
+ if (mType == TYPE_6 || mType == TYPE_0 || mType == TYPE_TWILIGHT || mType == TYPE_SPA &&
+ /*dSv_event_flag_c::M_031 - Goron Mines - Goron Mines clear */
+ daNpcF_chkEvtBit(64) ||
+ mType == TYPE_3 || mType == TYPE_BUYER || mType == TYPE_5) {
+ return FALSE;
+ }
-/* ############################################################################################## */
-/* 809CF5D4-809CF5D8 0000B8 0004+00 8/8 0/0 0/0 .rodata @5043 */
-SECTION_RODATA static f32 const lit_5043 = -1.0f;
-COMPILER_STRIP_GATE(0x809CF5D4, &lit_5043);
+ return TRUE;
+}
/* 809CCFBC-809CD1B4 001BDC 01F8+00 1/1 0/0 0/0 .text reset__11daNpc_grC_cFv */
void daNpc_grC_c::reset() {
- // NONMATCHING
+ initialize();
+ mLookat.initialize();
+
+ for (int i = 0; i < 2; i++) {
+ mActorMngr[i].initialize();
+ }
+
+ mNextAction = NULL;
+ mAction = NULL;
+ field_0xe30 = 0;
+ field_0xe34 = 0;
+ field_0xe38 = 0;
+ field_0xe3c = 0;
+ mLookMode = -1;
+ mMode = 0;
+ current.pos = home.pos;
+ old.pos = current.pos;
+ current.angle.set(0, home.angle.y, 0);
+ old.angle = current.angle;
+ shape_angle = current.angle;
+ mCurAngle = current.angle;
+ mOldAngle = mCurAngle;
+ speedF = 0.0f;
+ speed.setall(0.0f);
+ field_0x9ee = true;
+ field_0xe51 = false;
+ mIsSpringWaterShopClosed = false;
+ mItemID = fpcM_ERROR_PROCESS_ID_e;
+
+ if (mType == TYPE_3) {
+ /* dSv_event_flag_c::F_0377 - Castle Town - Goron spring water shop open! */
+ if (!daNpcF_chkEvtBit(377)) {
+ mIsSpringWaterShopClosed = true;
+ }
+ } else if (mType == TYPE_BUYER) {
+ setExpression(EXPR_NONE, -1.0f);
+ setMotion(MOT_SIT_A, -1.0f, 0);
+ }
}
-/* ############################################################################################## */
-/* 809CF5D8-809CF5E4 0000BC 000C+00 0/1 0/0 0/0 .rodata @5047 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5047[12] = {
- 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-};
-COMPILER_STRIP_GATE(0x809CF5D8, &lit_5047);
-#pragma pop
-
-/* 809CF5E4-809CF5F0 0000C8 000C+00 0/1 0/0 0/0 .rodata @5048 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5048[12] = {
- 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF5E4, &lit_5048);
-#pragma pop
-
-/* 809CF5F0-809CF5F8 0000D4 0008+00 0/1 0/0 0/0 .rodata @5049 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5049[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF5F0, &lit_5049);
-#pragma pop
-
-/* 809CF5F8-809CF604 0000DC 000C+00 0/1 0/0 0/0 .rodata @5050 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5050[12] = {
- 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-};
-COMPILER_STRIP_GATE(0x809CF5F8, &lit_5050);
-#pragma pop
-
-/* 809CF604-809CF610 0000E8 000C+00 0/1 0/0 0/0 .rodata @5051 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5051[12] = {
- 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF604, &lit_5051);
-#pragma pop
-
-/* 809CF610-809CF618 0000F4 0008+00 0/1 0/0 0/0 .rodata @5052 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5052[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF610, &lit_5052);
-#pragma pop
-
-/* 809CF618-809CF624 0000FC 000C+00 0/1 0/0 0/0 .rodata @5053 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5053[12] = {
- 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-};
-COMPILER_STRIP_GATE(0x809CF618, &lit_5053);
-#pragma pop
-
-/* 809CF624-809CF630 000108 000C+00 0/1 0/0 0/0 .rodata @5054 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5054[12] = {
- 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF624, &lit_5054);
-#pragma pop
-
-/* 809CF630-809CF638 000114 0008+00 0/1 0/0 0/0 .rodata @5055 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5055[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF630, &lit_5055);
-#pragma pop
-
-/* 809CF638-809CF644 00011C 000C+00 0/1 0/0 0/0 .rodata @5056 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5056[12] = {
- 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-};
-COMPILER_STRIP_GATE(0x809CF638, &lit_5056);
-#pragma pop
-
-/* 809CF644-809CF650 000128 000C+00 0/1 0/0 0/0 .rodata @5057 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5057[12] = {
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF644, &lit_5057);
-#pragma pop
-
-/* 809CF650-809CF658 000134 0008+00 0/1 0/0 0/0 .rodata @5058 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5058[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF650, &lit_5058);
-#pragma pop
-
-/* 809CF658-809CF664 00013C 000C+00 0/1 0/0 0/0 .rodata @5059 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5059[12] = {
- 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF658, &lit_5059);
-#pragma pop
-
-/* 809CF664-809CF668 000148 0004+00 0/1 0/0 0/0 .rodata @5060 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5060[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF664, &lit_5060);
-#pragma pop
-
-/* 809CF668-809CF674 00014C 000C+00 0/1 0/0 0/0 .rodata @5061 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5061[12] = {
- 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF668, &lit_5061);
-#pragma pop
-
-/* 809CF674-809CF678 000158 0004+00 0/1 0/0 0/0 .rodata @5062 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5062[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF674, &lit_5062);
-#pragma pop
-
-/* 809CF678-809CF684 00015C 000C+00 0/1 0/0 0/0 .rodata @5063 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5063[12] = {
- 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF678, &lit_5063);
-#pragma pop
-
-/* 809CF684-809CF688 000168 0004+00 0/1 0/0 0/0 .rodata @5064 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5064[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF684, &lit_5064);
-#pragma pop
-
-/* 809CF688-809CF694 00016C 000C+00 0/1 0/0 0/0 .rodata @5065 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5065[12] = {
- 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF688, &lit_5065);
-#pragma pop
-
-/* 809CF694-809CF698 000178 0004+00 0/1 0/0 0/0 .rodata @5066 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5066[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF694, &lit_5066);
-#pragma pop
-
-/* 809CF698-809CF6A4 00017C 000C+00 0/1 0/0 0/0 .rodata @5067 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5067[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF698, &lit_5067);
-#pragma pop
-
-/* 809CF6A4-809CF6A8 000188 0004+00 0/1 0/0 0/0 .rodata @5068 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5068[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF6A4, &lit_5068);
-#pragma pop
-
/* 809CD1B4-809CD4AC 001DD4 02F8+00 1/1 0/0 0/0 .text playExpression__11daNpc_grC_cFv */
void daNpc_grC_c::playExpression() {
- // NONMATCHING
+ daNpcF_anmPlayData dat0a = {ANM_F_TALK_A, daNpc_grC_Param_c::m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat0b = {ANM_F_WAIT_A, daNpc_grC_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat0[2] = {&dat0a, &dat0b};
+ daNpcF_anmPlayData dat1a = {ANM_GRUMPY_T, daNpc_grC_Param_c::m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat1b = {ANM_GRUMPY, daNpc_grC_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat1[2] = {&dat1a, &dat1b};
+ daNpcF_anmPlayData dat2a = {ANM_F_CHEERFUL_T, daNpc_grC_Param_c::m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat2b = {ANM_F_CHEERFUL, daNpc_grC_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat2[2] = {&dat2a, &dat2b};
+ daNpcF_anmPlayData dat3a = {ANM_F_SAD_TALK, daNpc_grC_Param_c::m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat3b = {ANM_FH_SAD_TALK, daNpc_grC_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat3[2] = {&dat3a, &dat3b};
+ daNpcF_anmPlayData dat4 = {ANM_FH_CLOSEEYE, daNpc_grC_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat4[1] = {&dat4};
+ daNpcF_anmPlayData dat5 = {ANM_GRUMPY, daNpc_grC_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat5[1] = {&dat5};
+ daNpcF_anmPlayData dat6 = {ANM_F_CHEERFUL, daNpc_grC_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat6[1] = {&dat6};
+ daNpcF_anmPlayData dat7 = {ANM_FH_SAD_TALK, daNpc_grC_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat7[1] = {&dat7};
+ daNpcF_anmPlayData dat8 = {ANM_NONE, daNpc_grC_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat8[1] = {&dat8};
+
+ daNpcF_anmPlayData** ppDat[15] = {
+ pDat0,
+ pDat1,
+ pDat2,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ pDat3,
+ pDat4,
+ pDat5,
+ pDat6,
+ pDat7,
+ pDat8,
+ };
+
+ if (mExpression >= 0 && mExpression < 0xF) {
+ playExpressionAnm(ppDat);
+ }
}
-/* ############################################################################################## */
-/* 809CF6A8-809CF6E4 00018C 003C+00 0/0 0/0 0/0 .rodata @5069 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5069[60] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF6A8, &lit_5069);
-#pragma pop
-
-/* 809CF6E4-809CF6F0 0001C8 000C+00 0/1 0/0 0/0 .rodata @5092 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5092[12] = {
- 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF6E4, &lit_5092);
-#pragma pop
-
-/* 809CF6F0-809CF6F4 0001D4 0004+00 0/1 0/0 0/0 .rodata @5093 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5093[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF6F0, &lit_5093);
-#pragma pop
-
-/* 809CF6F4-809CF700 0001D8 000C+00 0/1 0/0 0/0 .rodata @5094 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5094[12] = {
- 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-};
-COMPILER_STRIP_GATE(0x809CF6F4, &lit_5094);
-#pragma pop
-
-/* 809CF700-809CF70C 0001E4 000C+00 0/1 0/0 0/0 .rodata @5095 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5095[12] = {
- 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF700, &lit_5095);
-#pragma pop
-
-/* 809CF70C-809CF714 0001F0 0008+00 0/1 0/0 0/0 .rodata @5096 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5096[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF70C, &lit_5096);
-#pragma pop
-
-/* 809CF714-809CF720 0001F8 000C+00 0/1 0/0 0/0 .rodata @5097 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5097[12] = {
- 0x00, 0x0B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF714, &lit_5097);
-#pragma pop
-
-/* 809CF720-809CF724 000204 0004+00 0/1 0/0 0/0 .rodata @5098 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5098[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF720, &lit_5098);
-#pragma pop
-
-/* 809CF724-809CF730 000208 000C+00 0/1 0/0 0/0 .rodata @5099 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5099[12] = {
- 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-};
-COMPILER_STRIP_GATE(0x809CF724, &lit_5099);
-#pragma pop
-
-/* 809CF730-809CF73C 000214 000C+00 0/1 0/0 0/0 .rodata @5100 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5100[12] = {
- 0x00, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF730, &lit_5100);
-#pragma pop
-
-/* 809CF73C-809CF744 000220 0008+00 0/1 0/0 0/0 .rodata @5101 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5101[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF73C, &lit_5101);
-#pragma pop
-
-/* 809CF744-809CF750 000228 000C+00 0/1 0/0 0/0 .rodata @5102 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5102[12] = {
- 0x00, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-};
-COMPILER_STRIP_GATE(0x809CF744, &lit_5102);
-#pragma pop
-
-/* 809CF750-809CF75C 000234 000C+00 0/1 0/0 0/0 .rodata @5103 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5103[12] = {
- 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF750, &lit_5103);
-#pragma pop
-
-/* 809CF75C-809CF764 000240 0008+00 0/1 0/0 0/0 .rodata @5104 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5104[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF75C, &lit_5104);
-#pragma pop
-
-/* 809CF764-809CF770 000248 000C+00 0/1 0/0 0/0 .rodata @5105 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5105[12] = {
- 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF764, &lit_5105);
-#pragma pop
-
-/* 809CF770-809CF774 000254 0004+00 0/1 0/0 0/0 .rodata @5106 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5106[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF770, &lit_5106);
-#pragma pop
-
-/* 809CF774-809CF780 000258 000C+00 0/1 0/0 0/0 .rodata @5107 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5107[12] = {
- 0x00, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
-};
-COMPILER_STRIP_GATE(0x809CF774, &lit_5107);
-#pragma pop
-
-/* 809CF780-809CF78C 000264 000C+00 0/1 0/0 0/0 .rodata @5108 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5108[12] = {
- 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF780, &lit_5108);
-#pragma pop
-
-/* 809CF78C-809CF794 000270 0008+00 0/1 0/0 0/0 .rodata @5109 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5109[8] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF78C, &lit_5109);
-#pragma pop
-
-/* 809CF794-809CF7A0 000278 000C+00 0/1 0/0 0/0 .rodata @5110 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5110[12] = {
- 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF794, &lit_5110);
-#pragma pop
-
-/* 809CF7A0-809CF7A4 000284 0004+00 0/1 0/0 0/0 .rodata @5111 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5111[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF7A0, &lit_5111);
-#pragma pop
-
-/* 809CF7A4-809CF7B0 000288 000C+00 0/1 0/0 0/0 .rodata @5112 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5112[12] = {
- 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF7A4, &lit_5112);
-#pragma pop
-
-/* 809CF7B0-809CF7B4 000294 0004+00 0/1 0/0 0/0 .rodata @5113 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5113[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF7B0, &lit_5113);
-#pragma pop
-
/* 809CD4AC-809CD794 0020CC 02E8+00 1/1 0/0 0/0 .text playMotion__11daNpc_grC_cFv */
void daNpc_grC_c::playMotion() {
- // NONMATCHING
+ daNpcF_anmPlayData dat0 = {ANM_WAIT_A, daNpc_grC_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat0[1] = {&dat0};
+ daNpcF_anmPlayData dat1a = {ANM_GET_UP, daNpc_grC_Param_c::m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat1b = {ANM_WAIT_A, 0.0f, 0};
+ daNpcF_anmPlayData* pDat1[2] = {&dat1a, &dat1b};
+ daNpcF_anmPlayData dat2 = {ANM_TALK_A, daNpc_grC_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat2[1] = {&dat2};
+ daNpcF_anmPlayData dat3a = {ANM_TALK_B, daNpc_grC_Param_c::m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat3b = {ANM_WAIT_A, 0.0f, 0};
+ daNpcF_anmPlayData* pDat3[2] = {&dat3a, &dat3b};
+ daNpcF_anmPlayData dat4a = {ANM_TOSIT_A, daNpc_grC_Param_c::m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat4b = {ANM_SIT_A, 0.0f, 0};
+ daNpcF_anmPlayData* pDat4[2] = {&dat4a, &dat4b};
+ daNpcF_anmPlayData dat5 = {ANM_SIT_A, daNpc_grC_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat5[1] = {&dat5};
+ daNpcF_anmPlayData dat6a = {ANM_SAD_TALK, daNpc_grC_Param_c::m.common.morf_frame, 1};
+ daNpcF_anmPlayData dat6b = {ANM_SAD_WAIT, 0.0f, 0};
+ daNpcF_anmPlayData* pDat6[2] = {&dat6a, &dat6b};
+ daNpcF_anmPlayData dat7 = {ANM_SAD_WAIT, daNpc_grC_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat7[1] = {&dat7};
+ daNpcF_anmPlayData dat8 = {ANM_STEP, daNpc_grC_Param_c::m.common.morf_frame, 0};
+ daNpcF_anmPlayData* pDat8[1] = {&dat8};
+
+ daNpcF_anmPlayData** ppDat[9] = {
+ pDat0,
+ pDat1,
+ pDat2,
+ pDat3,
+ pDat4,
+ pDat5,
+ pDat6,
+ pDat7,
+ pDat8,
+ };
+
+ if (mMotion >= 0 && mMotion < 9) {
+ playMotionAnm(ppDat);
+ }
+}
+
+/* 809CD794-809CD7C0 0023B4 002C+00 2/2 0/0 0/0 .text chkAction__11daNpc_grC_cFM11daNpc_grC_cFPCvPvPv_i */
+BOOL daNpc_grC_c::chkAction(ActionFn action) {
+ return mAction == action;
+}
+
+/* 809CD7C0-809CD868 0023E0 00A8+00 2/2 0/0 0/0 .text setAction__11daNpc_grC_cFM11daNpc_grC_cFPCvPvPv_i */
+BOOL daNpc_grC_c::setAction(ActionFn action) {
+ mMode = 3;
+
+ if (mAction) {
+ (this->*mAction)(NULL);
+ }
+
+ mMode = 0;
+ mAction = action;
+
+ if (mAction) {
+ (this->*mAction)(NULL);
+ }
+
+ return TRUE;
}
-/* 809CD794-809CD7C0 0023B4 002C+00 2/2 0/0 0/0 .text
- * chkAction__11daNpc_grC_cFM11daNpc_grC_cFPCvPvPv_i */
-void daNpc_grC_c::chkAction(int (daNpc_grC_c::*param_0)(void*)) {
- // NONMATCHING
-}
+/* 809CD868-809CD960 002488 00F8+00 1/1 0/0 0/0 .text selectAction__11daNpc_grC_cFv */
+BOOL daNpc_grC_c::selectAction() {
+ mNextAction = NULL;
-/* 809CD7C0-809CD868 0023E0 00A8+00 2/2 0/0 0/0 .text
- * setAction__11daNpc_grC_cFM11daNpc_grC_cFPCvPvPv_i */
-void daNpc_grC_c::setAction(int (daNpc_grC_c::*param_0)(void*)) {
- // NONMATCHING
-}
+ if (daNpc_grC_Param_c::m.common.debug_mode_ON) {
+ mNextAction = &daNpc_grC_c::test;
+ } else {
+ switch (mType) {
+ case TYPE_TWILIGHT:
+ mNextAction = &daNpc_grC_c::waitTW;
+ break;
-/* 809CD868-809CD960 002488 00F8+00 1/1 0/0 0/0 .text selectAction__11daNpc_grC_cFv */
-void daNpc_grC_c::selectAction() {
- // NONMATCHING
+ case TYPE_SPA:
+ mNextAction = &daNpc_grC_c::waitSpa;
+ break;
+
+ case TYPE_BUYER:
+ mNextAction = &daNpc_grC_c::waitBuyer;
+ break;
+
+ default:
+ mNextAction = &daNpc_grC_c::wait;
+ break;
+ }
+ }
+
+ return TRUE;
}
/* 809CD960-809CDA74 002580 0114+00 1/1 0/0 0/0 .text doNormalAction__11daNpc_grC_cFi */
-void daNpc_grC_c::doNormalAction(int param_0) {
- // NONMATCHING
+void daNpc_grC_c::doNormalAction(int param_1) {
+ if (param_1 != 0 && hitChk2(&mCyl, TRUE, FALSE)) {
+ int i_timer;
+ if (mCutType == daPy_py_c::CUT_TYPE_TURN_RIGHT) {
+ i_timer = 20;
+ } else {
+ i_timer = daNpc_grC_Param_c::m.common.damage_time;
+ }
+
+ setDamage(i_timer, 14, 0);
+ setLookMode(LOOK_RESET);
+ } else if (mIsDamaged && mDamageTimer == 0) {
+ mMode = 0;
+ mIsDamaged = false;
+ }
+
+ mOrderEvtNo = 0;
+
+ if (mNextAction) {
+ if (mAction == mNextAction) {
+ (this->*mAction)(NULL);
+ } else {
+ setAction(mNextAction);
+ }
+ }
}
/* 809CDA74-809CDD50 002694 02DC+00 1/1 0/0 0/0 .text doEvent__11daNpc_grC_cFv */
-void daNpc_grC_c::doEvent() {
- // NONMATCHING
+BOOL daNpc_grC_c::doEvent() {
+ BOOL rv = FALSE;
+
+ if (dComIfGp_event_runCheck() != 0) {
+ dEvent_manager_c& eventManager = dComIfGp_getEventManager();
+
+ if (!field_0xe51) {
+ mOrderNewEvt = false;
+ } else {
+ mOrderNewEvt = true;
+ }
+
+ if (eventInfo.checkCommandTalk()) {
+ if (chkAction(&daNpc_grC_c::talk)) {
+ (this->*mAction)(NULL);
+ } else if (dComIfGp_event_chkTalkXY() == 0 || dComIfGp_evmng_ChkPresentEnd()) {
+ setAction(&daNpc_grC_c::talk);
+ }
+
+ rv = TRUE;
+ } else {
+ if (mItemID != fpcM_ERROR_PROCESS_ID_e) {
+ dComIfGp_event_setItemPartnerId(mItemID);
+ mItemID = fpcM_ERROR_PROCESS_ID_e;
+ }
+
+ int staffId = eventManager.getMyStaffId(l_myName, NULL, 0);
+ if (staffId != -1) {
+ mStaffID = staffId;
+ int evtCutNo = eventManager.getMyActIdx(staffId, &mEvtCutNameList, 1, 0, 0);
+
+ JUT_ASSERT(1774, (0 <= evtCutNo) && (evtCutNo < NUM_EVT_CUTS_e));
+ JUT_ASSERT(1775, 0 != mEvtCutList[evtCutNo]);
+
+ if ((this->*mEvtCutList[evtCutNo])(staffId)) {
+ eventManager.cutEnd(staffId);
+ }
+
+ rv = TRUE;
+ }
+
+ if (eventInfo.checkCommandDemoAccrpt() && mEventIdx != -1 && eventManager.endCheck(mEventIdx) != 0) {
+ dComIfGp_event_reset();
+ mOrderEvtNo = 0;
+ mEventIdx = -1;
+ }
+ }
+
+ int i_msgTimer, i_expression, i_motion;
+ i_msgTimer = mMsgTimer;
+
+ if (ctrlMsgAnm(i_expression, i_motion, this, FALSE) != 0) {
+ if (!field_0x9eb) {
+ setExpression(i_expression, -1.0f);
+ setMotion(i_motion, -1.0f, 0);
+ }
+ } else if (i_msgTimer != 0 && !field_0x9eb) {
+ setExpressionTalkAfter();
+ }
+ } else {
+ mMsgTimer = 0;
+
+ if (mStaffID != -1) {
+ mAction = NULL;
+ mStaffID = -1;
+ }
+ }
+
+ return rv;
}
/* 809CDD50-809CDD74 002970 0024+00 7/7 0/0 0/0 .text setLookMode__11daNpc_grC_cFi */
-void daNpc_grC_c::setLookMode(int param_0) {
- // NONMATCHING
+void daNpc_grC_c::setLookMode(int i_lookMode) {
+ if (i_lookMode >= 0 && i_lookMode < 5 && i_lookMode != mLookMode) {
+ mLookMode = i_lookMode;
+ }
}
-/* ############################################################################################## */
-/* 809CF7B4-809CF7D8 000298 0024+00 0/0 0/0 0/0 .rodata @5114 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5114[36] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF7B4, &lit_5114);
-#pragma pop
-
-/* 809CF7D8-809CF7E4 0002BC 000C+00 0/1 0/0 0/0 .rodata @5264 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static u8 const lit_5264[12] = {
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-};
-COMPILER_STRIP_GATE(0x809CF7D8, &lit_5264);
-#pragma pop
-
-/* 809CF7E4-809CF7E8 0002C8 0004+00 0/1 0/0 0/0 .rodata @5317 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5317 = -80.0f;
-COMPILER_STRIP_GATE(0x809CF7E4, &lit_5317);
-#pragma pop
-
-/* 809CF7E8-809CF7EC 0002CC 0004+00 0/1 0/0 0/0 .rodata @5318 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5318 = 80.0f;
-COMPILER_STRIP_GATE(0x809CF7E8, &lit_5318);
-#pragma pop
-
-/* 809CF7EC-809CF7F0 0002D0 0004+00 0/1 0/0 0/0 .rodata @5319 */
-#pragma push
-#pragma force_active on
-SECTION_RODATA static f32 const lit_5319 = 40.0f;
-COMPILER_STRIP_GATE(0x809CF7EC, &lit_5319);
-#pragma pop
-
/* 809CDD74-809CDFFC 002994 0288+00 1/1 0/0 0/0 .text lookat__11daNpc_grC_cFv */
void daNpc_grC_c::lookat() {
- // NONMATCHING
+ daPy_py_c* player = NULL;
+ J3DModel* model = mpMorf->getModel();
+ BOOL i_snap = FALSE;
+ f32 body_angleX_min = daNpc_grC_Param_c::m.common.body_angleX_min;
+ f32 body_angleX_max = daNpc_grC_Param_c::m.common.body_angleX_max;
+ f32 body_angleY_min = daNpc_grC_Param_c::m.common.body_angleY_min;
+ f32 body_angleY_max = daNpc_grC_Param_c::m.common.body_angleY_max;
+ f32 head_angleX_min = daNpc_grC_Param_c::m.common.head_angleX_min;
+ f32 head_angleX_max = daNpc_grC_Param_c::m.common.head_angleX_max;
+ f32 head_angleY_min = daNpc_grC_Param_c::m.common.head_angleY_min;
+ f32 head_angleY_max = daNpc_grC_Param_c::m.common.head_angleY_max;
+ s16 angle_delta = mCurAngle.y - mOldAngle.y;
+ cXyz lookatPos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]};
+ csXyz* lookatAngle[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]};
+ cXyz spe8;
+
+ switch (mLookMode) {
+ case LOOK_NONE:
+ break;
+
+ case LOOK_RESET:
+ i_snap = TRUE;
+ break;
+
+ case LOOK_PLAYER:
+ case LOOK_PLAYER_TALK:
+ player = daPy_getPlayerActorClass();
+
+ if (mLookMode != LOOK_PLAYER_TALK) {
+ break;
+ }
+
+ head_angleY_min = -80.0f;
+ head_angleY_max = 80.0f;
+ break;
+
+ case LOOK_ACTOR:
+ player = (daPy_py_c*)mActorMngr[1].getActorP();
+ break;
+ }
+
+ if (player != NULL) {
+ mLookPos = player->attention_info.position;
+
+ if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK && mLookMode != LOOK_ACTOR) {
+ 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, lookatPos);
+ mLookat.calc(this, model->getBaseTRMtx(), lookatAngle, i_snap, angle_delta, FALSE);
+
}
/* 809CDFFC-809CE12C 002C1C 0130+00 3/3 0/0 0/0 .text chkFindPlayer__11daNpc_grC_cFv */
-void daNpc_grC_c::chkFindPlayer() {
- // NONMATCHING
+BOOL daNpc_grC_c::chkFindPlayer() {
+ BOOL rv;
+
+ if (abs((s16)(fopAcM_searchPlayerAngleY(this) - current.angle.y)) < 0x3C00) {
+ if (mActorMngr[0].getActorP() == NULL) {
+ rv = chkActorInAttnArea(daPy_getPlayerActorClass(), this, getDistTableIdx(10, 6));
+ } else {
+ rv = chkActorInAttnArea(daPy_getPlayerActorClass(), this, getDistTableIdx(12, 6));
+ }
+ } else {
+ if (mActorMngr[0].getActorP() == NULL) {
+ rv = chkPlayerInSpeakArea(this);
+ } else {
+ rv = chkPlayerInTalkArea(this);
+ }
+ }
+
+ if (rv) {
+ mActorMngr[0].entry(daPy_getPlayerActorClass());
+ } else {
+ mActorMngr[0].remove();
+ }
+
+ return rv;
}
/* 809CE12C-809CE1F8 002D4C 00CC+00 1/1 0/0 0/0 .text setExpressionTalkAfter__11daNpc_grC_cFv */
void daNpc_grC_c::setExpressionTalkAfter() {
- // NONMATCHING
+ switch (mExpression) {
+ case EXPR_GRUMPY_T:
+ setExpression(EXPR_GRUMPY, -1.0f);
+ break;
+
+ case EXPR_CHEERFUL_T:
+ setExpression(EXPR_CHEERFUL, -1.0f);
+ break;
+
+ case EXPR_SAD_TALK:
+ setExpression(EXPR_H_SAD_TALK, -1.0f);
+ break;
+
+ case EXPR_CLOSEEYE:
+ break;
+
+ default:
+ setExpression(EXPR_NONE, -1.0f);
+ break;
+ }
}
/* 809CE1F8-809CE3A8 002E18 01B0+00 1/0 0/0 0/0 .text wait__11daNpc_grC_cFPv */
-void daNpc_grC_c::wait(void* param_0) {
- // NONMATCHING
+BOOL daNpc_grC_c::wait(void* param_1) {
+ switch (mMode) {
+ case 0:
+ if (mIsSpringWaterShopClosed) {
+ setExpression(EXPR_H_SAD_TALK, -1.0f);
+ setMotion(MOT_SAD_WAIT, -1.0f, 0);
+ field_0x9ea = true;
+ } else {
+ setExpression(EXPR_NONE, -1.0f);
+ setMotion(MOT_WAIT_A, -1.0f, 0);
+ }
+
+ setLookMode(LOOK_NONE);
+ mTurnMode = 0;
+ mMode = 2;
+ // fallthrough
+ case 2:
+ if (!mIsDamaged) {
+ if (mActorMngr[0].getActorP() != NULL) {
+ if (!chkFindPlayer()) {
+ mTurnMode = 0;
+ }
+ } else if (chkFindPlayer()) {
+ mTurnMode = 0;
+ }
+
+ if (mActorMngr[0].getActorP() != NULL) {
+ setLookMode(LOOK_PLAYER);
+ } else {
+ setLookMode(LOOK_NONE);
+
+ if (home.angle.y != mCurAngle.y && step(home.angle.y, 14, 8, 15)) {
+ mMode = 0;
+ }
+ }
+ }
+ break;
+
+ case 3:
+ break;
+ }
+
+ return TRUE;
}
/* 809CE3A8-809CE490 002FC8 00E8+00 1/0 0/0 0/0 .text waitTW__11daNpc_grC_cFPv */
-void daNpc_grC_c::waitTW(void* param_0) {
- // NONMATCHING
+BOOL daNpc_grC_c::waitTW(void* param_1) {
+ switch (mMode) {
+ case 0:
+ setExpression(EXPR_NONE, -1.0f);
+ setMotion(MOT_WAIT_A, -1.0f, 0);
+ setLookMode(LOOK_NONE);
+ mTurnMode = 0;
+ mMode = 2;
+ // fallthrough
+ case 2:
+ if (!mIsDamaged && home.angle.y != mCurAngle.y && step(home.angle.y, 14, 8, 15)) {
+ mMode = 0;
+ }
+ break;
+
+ case 3:
+ break;
+ }
+
+ return TRUE;
}
-/* ############################################################################################## */
-/* 809CF7F0-809CF7F0 0002D4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_809CF804 = "F_SP110";
-#pragma pop
-
/* 809CE490-809CE688 0030B0 01F8+00 1/0 0/0 0/0 .text waitSpa__11daNpc_grC_cFPv */
-void daNpc_grC_c::waitSpa(void* param_0) {
- // NONMATCHING
+BOOL daNpc_grC_c::waitSpa(void* param_1) {
+ switch (mMode) {
+ case 0:
+ if (strcmp(dComIfGp_getStartStageName(), "F_SP110") == 0) {
+ setExpression(EXPR_CLOSEEYE, -1.0f);
+ } else {
+ setExpression(EXPR_NONE, -1.0f);
+ }
+
+ setMotion(MOT_SIT_A, -1.0f, 0);
+ setLookMode(LOOK_NONE);
+ mTurnMode = 0;
+ mMode = 2;
+ field_0x9ea = true;
+ // fallthrough
+ case 2:
+ if (!mIsDamaged) {
+ if (mActorMngr[0].getActorP() != NULL) {
+ if (!chkFindPlayer()) {
+ mTurnMode = 0;
+ }
+ } else if (chkFindPlayer()) {
+ mTurnMode = 0;
+ }
+
+ if (mActorMngr[0].getActorP() != NULL) {
+ setLookMode(LOOK_PLAYER);
+ } else {
+ setLookMode(LOOK_NONE);
+ }
+
+ if (home.angle.y == mCurAngle.y) {
+ fopAc_ac_c* actor = getAttnActorP(mActorMngr[0].getActorP() != NULL, srchAttnActor1, daNpc_grC_Param_c::m.common.search_distance,
+ daNpc_grC_Param_c::m.common.search_height, daNpc_grC_Param_c::m.common.search_depth, daNpc_grC_Param_c::m.common.fov,
+ shape_angle.y, 120, TRUE);
+ if (actor != NULL) {
+ mActorMngr[1].entry(actor);
+ setLookMode(LOOK_ACTOR);
+ }
+ } else {
+ mAttnChangeTimer = 0;
+ }
+ }
+ break;
+
+ case 3:
+ break;
+ }
+
+ return TRUE;
}
/* 809CE688-809CE7C4 0032A8 013C+00 1/0 0/0 0/0 .text waitBuyer__11daNpc_grC_cFPv */
-void daNpc_grC_c::waitBuyer(void* param_0) {
- // NONMATCHING
+BOOL daNpc_grC_c::waitBuyer(void* param_1) {
+ switch (mMode) {
+ case 0:
+ if (!field_0xe51 && mMotion != MOT_SIT_A) {
+ setExpression(EXPR_NONE, -1.0f);
+ setMotion(MOT_TOSIT_A, -1.0f, 0);
+ }
+
+ mTurnMode = 0;
+ field_0x9ea = true;
+ mMode = 2;
+ field_0x9ea = true;
+ // fallthrough
+ case 2:
+ if (!mIsDamaged) {
+ if (mActorMngr[0].getActorP() != NULL) {
+ if (!chkFindPlayer()) {
+ mTurnMode = 0;
+ }
+ } else if (chkFindPlayer()) {
+ mTurnMode = 0;
+ }
+
+ if (mActorMngr[0].getActorP() != NULL) {
+ setLookMode(LOOK_PLAYER);
+ } else {
+ setLookMode(LOOK_NONE);
+ }
+ }
+ break;
+
+ case 3:
+ break;
+ }
+
+ return TRUE;
}
-/* ############################################################################################## */
-/* 809CF7F0-809CF7F0 0002D4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
-#pragma push
-#pragma force_active on
-SECTION_DEAD static char const* const stringBase_809CF80C = "DEFAULT_GETITEM";
-#pragma pop
-
/* 809CE7C4-809CEA6C 0033E4 02A8+00 2/0 0/0 0/0 .text talk__11daNpc_grC_cFPv */
-void daNpc_grC_c::talk(void* param_0) {
- // NONMATCHING
+BOOL daNpc_grC_c::talk(void* param_1) {
+ BOOL rv = FALSE;
+ BOOL bVar1 = FALSE;
+ int i_itemNo = 0;
+
+ switch (mMode) {
+ case 0:
+ if (mIsDamaged) {
+ break;
+ }
+
+ initTalk(mFlowID, NULL);
+ mTurnMode = 0;
+
+ if ((mType == TYPE_BUYER || mType == TYPE_5) && !field_0xe51) {
+ daNpcF_offTmpBit(0xB);
+ daNpcF_offTmpBit(0xC);
+ }
+
+ field_0xe51 = false;
+ mMode = 2;
+ // fallthrough
+ case 2:
+ if (field_0x9ea || mTwilight) {
+ bVar1 = TRUE;
+ } else {
+ setLookMode(LOOK_PLAYER_TALK);
+ mActorMngr[0].entry(daPy_getPlayerActorClass());
+
+ if (mCurAngle.y == fopAcM_searchPlayerAngleY(this)) {
+ bVar1 = TRUE;
+ } else if (step(fopAcM_searchPlayerAngleY(this), 14, 8, 15)) {
+ setExpression(EXPR_NONE, -1.0f);
+ setMotion(MOT_WAIT_A, -1.0f, 0);
+ mTurnMode = 0;
+ }
+ }
+
+ if (bVar1 && talkProc(NULL, TRUE, NULL)) {
+ rv = TRUE;
+
+ if (mFlow.getEventId(&i_itemNo) == 1) {
+ mItemID = fopAcM_createItemForPresentDemo(&current.pos, i_itemNo, 0, -1, -1, NULL, NULL);
+
+ if (mItemID != fpcM_ERROR_PROCESS_ID_e) {
+ s16 i_eventID = dComIfGp_getEventManager().getEventIdx(this, "DEFAULT_GETITEM", 0xFF);
+ dComIfGp_getEvent().reset(this);
+ fopAcM_orderChangeEventId(this, i_eventID, 1, 0xFFFF);
+ field_0x9ec = true;
+ rv = TRUE;
+ mOrderNewEvt = true;
+ field_0xe51 = true;
+ }
+ }
+ }
+
+ if (rv) {
+ mMode = 3;
+
+ if (!field_0x9ec) {
+ dComIfGp_event_reset();
+ }
+
+ field_0x9ec = false;
+ }
+ break;
+
+ case 3:
+ break;
+ }
+
+ return rv;
}
/* 809CEA6C-809CEB50 00368C 00E4+00 2/0 0/0 0/0 .text test__11daNpc_grC_cFPv */
-void daNpc_grC_c::test(void* param_0) {
- // NONMATCHING
+BOOL daNpc_grC_c::test(void* param_1) {
+ switch (mMode) {
+ case 0:
+ speedF = 0.0f;
+ speed.setall(0.0f);
+ mMode = 2;
+ // fallthrough
+ case 2:
+ if (daNpc_grC_Param_c::m.common.face_expression != mExpression) {
+ setExpression(daNpc_grC_Param_c::m.common.face_expression, daNpc_grC_Param_c::m.common.morf_frame);
+ }
+
+ setMotion(daNpc_grC_Param_c::m.common.motion, daNpc_grC_Param_c::m.common.morf_frame, 0);
+ setLookMode(daNpc_grC_Param_c::m.common.look_mode);
+ mOrderEvtNo = 0;
+ attention_info.flags = 0;
+ break;
+
+ case 3:
+ break;
+ }
+
+ return TRUE;
}
/* 809CEB50-809CEBDC 003770 008C+00 1/1 0/0 0/0 .text setPrtcl__11daNpc_grC_cFv */
void daNpc_grC_c::setPrtcl() {
- // NONMATCHING
+ cXyz sp34(1.0f, 1.0f, 1.0f);
+ f32 fVar1 = 1.0f;
+ cXyz sp40(mHeadPos);
+
+ sp40.y = current.pos.y;
+ mPaPo.setEffectCenter(&tevStr, &sp40, 1, 0x40002, NULL, NULL, &sp34, fopAcM_GetRoomNo(this), fVar1, speedF);
}
/* 809CEBDC-809CEBFC 0037FC 0020+00 1/0 0/0 0/0 .text daNpc_grC_Create__FPv */
-static void daNpc_grC_Create(void* param_0) {
- // NONMATCHING
+static int daNpc_grC_Create(void* a_this) {
+ daNpc_grC_c* i_this = (daNpc_grC_c*)a_this;
+ return i_this->create();
}
/* 809CEBFC-809CEC1C 00381C 0020+00 1/0 0/0 0/0 .text daNpc_grC_Delete__FPv */
-static void daNpc_grC_Delete(void* param_0) {
- // NONMATCHING
+static int daNpc_grC_Delete(void* a_this) {
+ daNpc_grC_c* i_this = (daNpc_grC_c*)a_this;
+ return i_this->Delete();
}
/* 809CEC1C-809CEC3C 00383C 0020+00 1/0 0/0 0/0 .text daNpc_grC_Execute__FPv */
-static void daNpc_grC_Execute(void* param_0) {
- // NONMATCHING
+static int daNpc_grC_Execute(void* a_this) {
+ daNpc_grC_c* i_this = (daNpc_grC_c*)a_this;
+ return i_this->Execute();
}
/* 809CEC3C-809CEC5C 00385C 0020+00 1/0 0/0 0/0 .text daNpc_grC_Draw__FPv */
-static void daNpc_grC_Draw(void* param_0) {
- // NONMATCHING
+static int daNpc_grC_Draw(void* a_this) {
+ daNpc_grC_c* i_this = (daNpc_grC_c*)a_this;
+ return i_this->Draw();
}
/* 809CEC5C-809CEC64 00387C 0008+00 1/0 0/0 0/0 .text daNpc_grC_IsDelete__FPv */
-static bool daNpc_grC_IsDelete(void* param_0) {
- return true;
-}
-
-/* 809CEC64-809CECAC 003884 0048+00 5/4 0/0 0/0 .text __dt__18daNpcF_ActorMngr_cFv */
-// daNpcF_ActorMngr_c::~daNpcF_ActorMngr_c() {
-extern "C" void __dt__18daNpcF_ActorMngr_cFv() {
- // NONMATCHING
-}
-
-/* 809CECAC-809CECE8 0038CC 003C+00 2/2 0/0 0/0 .text __ct__18daNpcF_ActorMngr_cFv */
-// daNpcF_ActorMngr_c::daNpcF_ActorMngr_c() {
-extern "C" void __ct__18daNpcF_ActorMngr_cFv() {
- // NONMATCHING
-}
-
-/* 809CECE8-809CEDB8 003908 00D0+00 1/0 0/0 0/0 .text __dt__15daNpcF_Lookat_cFv */
-// daNpcF_Lookat_c::~daNpcF_Lookat_c() {
-extern "C" void __dt__15daNpcF_Lookat_cFv() {
- // NONMATCHING
-}
-
-/* 809CEDB8-809CEDF4 0039D8 003C+00 5/5 0/0 0/0 .text __dt__5csXyzFv */
-// csXyz::~csXyz() {
-extern "C" void __dt__5csXyzFv() {
- // NONMATCHING
-}
-
-/* 809CEDF4-809CEDF8 003A14 0004+00 2/2 0/0 0/0 .text __ct__5csXyzFv */
-// csXyz::csXyz() {
-extern "C" void __ct__5csXyzFv() {
- /* empty function */
-}
-
-/* 809CEDF8-809CEE34 003A18 003C+00 6/6 0/0 0/0 .text __dt__4cXyzFv */
-// cXyz::~cXyz() {
-extern "C" void __dt__4cXyzFv() {
- // NONMATCHING
-}
-
-/* 809CEE34-809CEE38 003A54 0004+00 2/2 0/0 0/0 .text __ct__4cXyzFv */
-// cXyz::cXyz() {
-extern "C" void __ct__4cXyzFv() {
- /* empty function */
-}
-
-/* 809CEE38-809CF084 003A58 024C+00 1/1 0/0 0/0 .text __dt__8daNpcF_cFv */
-// daNpcF_c::~daNpcF_c() {
-extern "C" void __dt__8daNpcF_cFv() {
- // NONMATCHING
-}
-
-/* 809CF084-809CF274 003CA4 01F0+00 1/1 0/0 0/0 .text __ct__8daNpcF_cFv */
-// daNpcF_c::daNpcF_c() {
-extern "C" void __ct__8daNpcF_cFv() {
- // NONMATCHING
-}
-
-/* 809CF274-809CF2E4 003E94 0070+00 1/0 0/0 0/0 .text __dt__12dBgS_AcchCirFv */
-// dBgS_AcchCir::~dBgS_AcchCir() {
-extern "C" void __dt__12dBgS_AcchCirFv() {
- // NONMATCHING
-}
-
-/* 809CF2E4-809CF340 003F04 005C+00 1/0 0/0 0/0 .text __dt__10dCcD_GSttsFv */
-// dCcD_GStts::~dCcD_GStts() {
-extern "C" void __dt__10dCcD_GSttsFv() {
- // NONMATCHING
-}
-
-/* 809CF340-809CF3B0 003F60 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */
-// dBgS_ObjAcch::~dBgS_ObjAcch() {
-extern "C" void __dt__12dBgS_ObjAcchFv() {
- // NONMATCHING
-}
-
-/* 809CF3B0-809CF3F8 003FD0 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */
-// J3DFrameCtrl::~J3DFrameCtrl() {
-extern "C" void __dt__12J3DFrameCtrlFv() {
- // NONMATCHING
-}
-
-/* 809CF3F8-809CF3FC 004018 0004+00 1/0 0/0 0/0 .text setCollisions__8daNpcF_cFv */
-// void daNpcF_c::setCollisions() {
-extern "C" void setCollisions__8daNpcF_cFv() {
- /* empty function */
-}
-
-/* 809CF3FC-809CF444 00401C 0048+00 1/0 0/0 0/0 .text __dt__10cCcD_GSttsFv */
-// cCcD_GStts::~cCcD_GStts() {
-extern "C" void __dt__10cCcD_GSttsFv() {
- // NONMATCHING
+static int daNpc_grC_IsDelete(void* a_this) {
+ return 1;
}
-/* ############################################################################################## */
-/* 809CFB50-809CFB5C 000334 000C+00 2/2 0/0 0/0 .data __vt__17daNpc_grC_Param_c */
-SECTION_DATA extern void* __vt__17daNpc_grC_Param_c[3] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__17daNpc_grC_Param_cFv,
-};
-
-/* 809CF444-809CF4AC 004064 0068+00 0/0 1/0 0/0 .text __sinit_d_a_npc_grc_cpp */
-void __sinit_d_a_npc_grc_cpp() {
- // NONMATCHING
-}
-
-#pragma push
-#pragma force_active on
-REGISTER_CTORS(0x809CF444, __sinit_d_a_npc_grc_cpp);
-#pragma pop
-
-/* 809CF4AC-809CF4B0 0040CC 0004+00 1/0 0/0 0/0 .text adjustShapeAngle__11daNpc_grC_cFv
- */
+/* 809CF4AC-809CF4B0 0040CC 0004+00 1/0 0/0 0/0 .text adjustShapeAngle__11daNpc_grC_cFv */
void daNpc_grC_c::adjustShapeAngle() {
/* empty function */
}
-/* 809CF4B0-809CF4F8 0040D0 0048+00 2/1 0/0 0/0 .text __dt__17daNpc_grC_Param_cFv */
-daNpc_grC_Param_c::~daNpc_grC_Param_c() {
- // NONMATCHING
-}
-
-/* 809CF4F8-809CF500 004118 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */
-static void func_809CF4F8() {
- // NONMATCHING
-}
+AUDIO_INSTANCES;
-/* 809CF500-809CF508 004120 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */
-static void func_809CF500() {
- // NONMATCHING
-}
+/* 809CFA34-809CFA54 -00001 0020+00 1/0 0/0 0/0 .data daNpc_grC_MethodTable */
+static actor_method_class daNpc_grC_MethodTable = {
+ (process_method_func)daNpc_grC_Create,
+ (process_method_func)daNpc_grC_Delete,
+ (process_method_func)daNpc_grC_Execute,
+ (process_method_func)daNpc_grC_IsDelete,
+ (process_method_func)daNpc_grC_Draw,
+};
-/* ############################################################################################## */
-/* 809CFBD4-809CFBD8 000074 0004+00 0/0 0/0 0/0 .bss
- * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */
-#pragma push
-#pragma force_active on
-static u8 data_809CFBD4[4];
-#pragma pop
-
-/* 809CFBD8-809CFBDC 000078 0004+00 0/0 0/0 0/0 .bss
- * sInstance__35JASGlobalInstance<14JASAudioThread> */
-#pragma push
-#pragma force_active on
-static u8 data_809CFBD8[4];
-#pragma pop
-
-/* 809CFBDC-809CFBE0 00007C 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_809CFBDC[4];
-#pragma pop
-
-/* 809CFBE0-809CFBE4 000080 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_809CFBE0[4];
-#pragma pop
-
-/* 809CFBE4-809CFBE8 000084 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_809CFBE4[4];
-#pragma pop
-
-/* 809CFBE8-809CFBEC 000088 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_809CFBE8[4];
-#pragma pop
-
-/* 809CFBEC-809CFBF0 00008C 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys>
- */
-#pragma push
-#pragma force_active on
-static u8 data_809CFBEC[4];
-#pragma pop
-
-/* 809CFBF0-809CFBF4 000090 0004+00 0/0 0/0 0/0 .bss
- * sInstance__36JASGlobalInstance<15JAISoundStarter> */
-#pragma push
-#pragma force_active on
-static u8 data_809CFBF0[4];
-#pragma pop
-
-/* 809CFBF4-809CFBF8 000094 0004+00 0/0 0/0 0/0 .bss
- * sInstance__35JASGlobalInstance<14Z2SoundStarter> */
-#pragma push
-#pragma force_active on
-static u8 data_809CFBF4[4];
-#pragma pop
-
-/* 809CFBF8-809CFBFC 000098 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */
-#pragma push
-#pragma force_active on
-static u8 data_809CFBF8[4];
-#pragma pop
-
-/* 809CFBFC-809CFC00 00009C 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_809CFBFC[4];
-#pragma pop
-
-/* 809CFC00-809CFC04 0000A0 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_809CFC00[4];
-#pragma pop
-
-/* 809CFC04-809CFC08 0000A4 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAIStreamMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_809CFC04[4];
-#pragma pop
-
-/* 809CFC08-809CFC0C 0000A8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_809CFC08[4];
-#pragma pop
-
-/* 809CFC0C-809CFC10 0000AC 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAISoundInfo> */
-#pragma push
-#pragma force_active on
-static u8 data_809CFC0C[4];
-#pragma pop
-
-/* 809CFC10-809CFC14 0000B0 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13JAUSoundTable> */
-#pragma push
-#pragma force_active on
-static u8 data_809CFC10[4];
-#pragma pop
-
-/* 809CFC14-809CFC18 0000B4 0004+00 0/0 0/0 0/0 .bss
- * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */
-#pragma push
-#pragma force_active on
-static u8 data_809CFC14[4];
-#pragma pop
-
-/* 809CFC18-809CFC1C 0000B8 0004+00 0/0 0/0 0/0 .bss
- * sInstance__33JASGlobalInstance<12JAUSoundInfo> */
-#pragma push
-#pragma force_active on
-static u8 data_809CFC18[4];
-#pragma pop
-
-/* 809CFC1C-809CFC20 0000BC 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo>
- */
-#pragma push
-#pragma force_active on
-static u8 data_809CFC1C[4];
-#pragma pop
-
-/* 809CFC20-809CFC24 0000C0 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_809CFC20[4];
-#pragma pop
-
-/* 809CFC24-809CFC28 0000C4 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience>
- */
-#pragma push
-#pragma force_active on
-static u8 data_809CFC24[4];
-#pragma pop
-
-/* 809CFC28-809CFC2C 0000C8 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_809CFC28[4];
-#pragma pop
-
-/* 809CFC2C-809CFC30 0000CC 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_809CFC2C[4];
-#pragma pop
-
-/* 809CFC30-809CFC34 0000D0 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr>
- */
-#pragma push
-#pragma force_active on
-static u8 data_809CFC30[4];
-#pragma pop
-
-/* 809CFC34-809CFC38 0000D4 0004+00 0/0 0/0 0/0 .bss
- * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */
-#pragma push
-#pragma force_active on
-static u8 data_809CFC34[4];
-#pragma pop
-
-/* 809CF7F0-809CF7F0 0002D4 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+/* 809CFA54-809CFA84 -00001 0030+00 0/0 0/0 1/0 .data g_profile_NPC_GRC */
+extern actor_process_profile_definition g_profile_NPC_GRC = {
+ fpcLy_CURRENT_e, // mLayerID
+ 7, // mListID
+ fpcPi_CURRENT_e, // mListPrio
+ PROC_NPC_GRC, // mProcName
+ &g_fpcLf_Method.base, // sub_method
+ sizeof(daNpc_grC_c), // mSize
+ 0, // mSizeOther
+ 0, // mParameters
+ &g_fopAc_Method.base, // sub_method
+ 307, // mPriority
+ &daNpc_grC_MethodTable, // sub_method
+ 0x00044100, // mStatus
+ fopAc_NPC_e, // mActorType
+ fopAc_CULLBOX_CUSTOM_e, // cullType
+};