From c9d38baa2144fdde08159f67337ca0673862311b Mon Sep 17 00:00:00 2001 From: WilliamArnett Date: Mon, 19 May 2025 00:07:19 -0500 Subject: [PATCH] 41% text --- include/d/actor/d_a_npc_kk1.h | 100 +++-- src/d/actor/d_a_npc_kk1.cpp | 690 ++++++++++++++++++++++++---------- 2 files changed, 557 insertions(+), 233 deletions(-) diff --git a/include/d/actor/d_a_npc_kk1.h b/include/d/actor/d_a_npc_kk1.h index 17f4e6d4c..7de6e6dd0 100644 --- a/include/d/actor/d_a_npc_kk1.h +++ b/include/d/actor/d_a_npc_kk1.h @@ -4,26 +4,34 @@ #include "d/actor/d_a_player.h" #include "d/d_npc.h" #include "f_op/f_op_actor.h" +#include "m_Do/m_Do_hostIO.h" class J3DNode; + + class daNpc_Kk1_c : public fopNpc_npc_c { public: struct anm_prm_c { - + s8 pad1; + s8 field_0x1; + f32 field_0x2; + u32 pad3; + u32 pad4; }; - void getSWbit() {} + int getSWbit(); void _nodeCB_Head(J3DNode*, J3DModel*); void _nodeCB_BackBone(J3DNode*, J3DModel*); - void init_KK1_0(); - void createInit(); + static void* searchActor_SWC00(void*, void*); //Todo: Self-added. Do I need this? + bool init_KK1_0(); + bool createInit(); void play_animation(); void setMtx(bool); - void bckResID(int); - void btpResID(int); - void setBtp(signed char, bool); + int bckResID(int); + int btpResID(int); + bool setBtp(signed char, bool); void init_texPttrnAnm(signed char, bool); void play_btp_anm(); void play_eff_anm(); @@ -112,7 +120,7 @@ public: void wait_3(); void wait_4(); void talk_1(); - void wait_action1(void*); + int wait_action1(void*); void demo(); void shadowDraw(); bool _draw(); @@ -127,30 +135,40 @@ public: /* 0x6C4 */ f32 field_0x6C4; /* 0x6C8 */ f32 field_0x6C8; /* 0x6CC */ u16 field_0x6CC; - /* 0x6CE */ char mKkString; - /* 0x6CF */ u8 field_0xCF; - /* 0x6D6 */ u8 field_0x6C2[0x6FC - 0x6D0]; + /* 0x6CE */ char mKkString; + /* 0x6CF */ u8 field_0x6CF; + /* 0x6D0 */ u8 field_0x6D0[0x6D8 - 0x6D0]; + /* 0x6D8 */ mDoExt_btpAnm mBtpAnm; + /* 0x6EC*/ u8 field_0x6EC; + /* 0x6ED*/ s8 field_0x6ED; + /* 0x6EE*/ s16 field_0x6EE; + /* 0x6F2*/ u8 field_0x6F2[0x6FC - 0x6F2]; /* 0x6FC*/ fpc_ProcID mPartnerProcID; /* 0x700*/ u32 field_0x700; - /* 0x700*/ dNpc_PathRun_c mRunPath; - /* 0x704 */ u8 field_0x70C[0x72C - 0x70C]; + /* 0x704*/ dNpc_PathRun_c mRunPath; + /* 0x70C */ u8 field_0x70C[0x71E - 0x70C]; + /* 0x71E */ csXyz field_0x71E; + /* 0x724 */ u8 field_0x724[0x72C - 0x724]; /* 0x72C */ cXyz field_0x72C; /* 0x738 */ cXyz field_0x738; /* 0x744 */ u8 field_0x744[0x750 - 0x744]; /* 0x750 */ cXyz field_0x750; - /* 0x75C */ u8 field_0x75C[0x770 - 0x75C]; + /* 0x75C */ cXyz field_0x75C; + /* 0x768 */ f32 field_0x768; + /* 0x76A */ u8 field_0x76A[4]; /* 0x770 */ s16 mAngleY; /* 0x772 */ s16 field_0x772; /* 0x774 */ s16 field_0x774; /* 0x776 */ s16 field_0x776; /* 0x778 */ int field_0x778; - /* 0x77C */ s16 field_0x77C[0x08]; //8 Elements * U16 = 16 bytes - /* 0x78C */ s16 field_0x78C; //Array Index? + /* 0x77C */ s16 mEvtIDTbl[0x08]; //8 Elements * U16 = 16 bytes + /* 0x78C */ s16 mEvtIDIdx; //Array Index? /* 0x78E */ s8 field_0x78E[0x798 - 0x78E]; /* 0x798 */ s16 field_0x798; /* 0x79A */ s16 field_0x79A; /* 0x79C */ s16 field_0x79C; - /* 0x79E */ s16 field_0x79E; + /* 0x79E */ s8 field_0x79E; + /* 0x79E */ s8 field_0x79F; /* 0x7A0 */ s16 field_0x7A0; /* 0x7A2 */ s16 field_0x7A2; @@ -185,32 +203,56 @@ public: /* 0x7C2 */ u8 field_0x7C2; /* 0x7C3 */ u8 field_0x7C3; /* 0x7C4 */ bool field_0x7C4; - /* 0x7C5 */ u8 field_0x7C5[0x814 - 0x7C5]; + /* 0x7C5 */ u8 field_0x7C5[0x7CE - 0x7C5]; + /* 0x7D0 */ anm_prm_c* field_0x7D0; + /* 0x7D4 */ u8 field_0x7D4[0x7E4 - 0x7D4]; + /* 0x7E4 */ u32 field_0x7E4[3]; //Appears to be a struct + /* 0x7E8 */ //u8 field_0x7E8[0x7F0 - 0x7E8]; + /* 0x7F0 */ mDoExt_bckAnm field_0x7F0; + /* 0x800 */ s16 field_0x800; + /* 0x802 */ s16 field_0x802; + /* 0x804 */ s16 field_0x804; + /* 0x806 */ u16 field_0x806; +//TODO: SOME KIND OF STRUCT HERE? + /* 0x808*/ u8 field_0x808_base[4]; //Offset 0 + /* 0x80C */ J3DModelData* field_0x80C; //Offset 4 + /* 0x810 */ u32 field_0x810; /* 0x814 */ s8 field_0x814; /* 0x815 */ u8 field_0x815; /* 0x816 */ s8 field_0x816; - /* 0x817 */ u8 field_0x817; + /* 0x817 */ u8 anm_prm_idx; /* 0x818 */ u8 field_0x818; - /* 0x819 */ u8 field_0x819; - /* 0x81B */ s8 field_0x81A; - /* 0x81B */ s8 field_0x81B; - /* 0x81C */ u8 field_0x81C; - /* 0x81D */ u8 field_0x81D; + /* 0x819 */ s8 field_0x819; + /* 0x81A */ s8 field_0x81A; + /* 0x81B */ s8 field_0x81B; + /* 0x81C */ u16 field_0x81C; /* 0x81E */ u8 field_0x81E; /* 0x81F */ s8 field_0x81F; /* 0x820 */ s8 field_0x820; /* 0x821 */ s8 field_0x821; + /* 0x822 */ s8 field_0x822; + /* 0x823 */ s8 field_0x823; + //TODO: Wtf out of class size? + // /* 0x824 */ u32 field_0x824; + // /* 0x828 */ u32 field_0x828; + // /* 0x82C */ u32 field_0x82C; + + + + }; // Size: 0x824 -class daNpc_Kk1_HIO_c { +class daNpc_Kk1_HIO_c : mDoHIO_entry_c{ public: daNpc_Kk1_HIO_c(); - virtual ~daNpc_Kk1_HIO_c(); + virtual ~daNpc_Kk1_HIO_c(){}; public: /* 0x04 */ s8 mNo; - /* 0x08 */ f32 mHorizontalDistance; - /* 0x0C */ f32 mVerticalDistance; - /* 0x10 */ u8 mUnusedU8[0x1E - 0x10]; + /* 0x08 */ s16 mHorizontalDistance; + /* 0x08 */ s32 field_0xA; + /* 0x0C */ s16 field_0xC; + /* 0x10 */ u8 mUnusedU8; + /* 0x11 */ u8 field_0x11[0x1E - 0x11]; /* 0x1E */ s16 field_0x1E; /* 0x20 */ f32 field_0x20; /* 0x24 */ f32 field_0x24; diff --git a/src/d/actor/d_a_npc_kk1.cpp b/src/d/actor/d_a_npc_kk1.cpp index 4aadc4bf3..ed069270b 100644 --- a/src/d/actor/d_a_npc_kk1.cpp +++ b/src/d/actor/d_a_npc_kk1.cpp @@ -4,119 +4,430 @@ // #include "d/actor/d_a_npc_kk1.h" +#include "NMWException.h" #include "d/actor/d_a_player.h" +#include "d/actor/d_a_swc00.h" #include "d/d_com_inf_game.h" #include "d/d_procname.h" static daNpc_Kk1_HIO_c l_HIO; +inline int daNpc_Kk1_c::getSWbit() { + return this->field_0x7B5; +} + + /* 000000EC-00000150 .text __ct__15daNpc_Kk1_HIO_cFv */ daNpc_Kk1_HIO_c::daNpc_Kk1_HIO_c() { /* Nonmatching */ + static f32 a_prm_tbl[] = {350.0f,30.0f,0.0f}; + memcpy(&field_0xC,a_prm_tbl,0x54); + mNo = -1; + field_0xA = -1; + return; } + + + /* 00000198-000001E4 .text nodeCB_Head__FP7J3DNodei */ -static BOOL nodeCB_Head(J3DNode*, int) { +static BOOL nodeCB_Head(J3DNode* arg0, int arg1) { + daNpc_Kk1_c* temp_r3; + + if (arg1 == 0) { + temp_r3 = (daNpc_Kk1_c*)j3dSys.mModel->getUserArea(); + if (temp_r3 != NULL) { + temp_r3->_nodeCB_Head(arg0, j3dSys.mModel); + } + } + return 1; +} + +f32 stuffforhead[4]; +cXyz at4163; + +extern "C" void __dt__4cXyzFv(void* obj, s16 destoryFlag); +/* 000001E4-00000304 .text _nodeCB_Head__11daNpc_Kk1_cFP7J3DNodeP8J3DModel */ +void daNpc_Kk1_c::_nodeCB_Head(J3DNode* node, J3DModel* model) { + /* Nonmatching */ + + + static cXyz a_eye_pos_off = cXyz(14.0,18,0.0); + + + u16 joint_number = static_cast(node)->getJntNo(); + MTXCopy(model->getAnmMtx(joint_number), mDoMtx_stack_c::now); + mDoMtx_stack_c::multVecZero(&field_0x750); + mDoMtx_ZrotM(&stuffforhead, field_0x768); + MTXCopy(mDoMtx_stack_c::now, j3dSys.mCurrentMtx); + model->setAnmMtx(joint_number, mDoMtx_stack_c::now); /* Nonmatching */ } -/* 000001E4-00000304 .text _nodeCB_Head__11daNpc_Kk1_cFP7J3DNodeP8J3DModel */ -void daNpc_Kk1_c::_nodeCB_Head(J3DNode*, J3DModel*) { - /* Nonmatching */ -} /* 00000340-0000038C .text nodeCB_BackBone__FP7J3DNodei */ -static BOOL nodeCB_BackBone(J3DNode*, int) { +static BOOL nodeCB_BackBone(J3DNode *param_1, int param_2) { /* Nonmatching */ + if (param_2 == 0) { + J3DModel* model = (J3DModel*)j3dSys.mModel; + if ((J3DModel *)(j3dSys.mModel)->getUserArea() != (J3DModel *)0x0) { + ((daNpc_Kk1_c*)(model->getUserArea()))->_nodeCB_BackBone(param_1,model); + + } + } + return 1; } /* 0000038C-0000042C .text _nodeCB_BackBone__11daNpc_Kk1_cFP7J3DNodeP8J3DModel */ -void daNpc_Kk1_c::_nodeCB_BackBone(J3DNode*, J3DModel*) { +void daNpc_Kk1_c::_nodeCB_BackBone(J3DNode* node, J3DModel* model) { /* Nonmatching */ + u16 joint_number = static_cast(node)->getJntNo(); + MTXCopy(model->getAnmMtx(joint_number), mDoMtx_stack_c::now); + mDoMtx_stack_c::XrotM(this->m_jnt.getBackbone_y()); + mDoMtx_stack_c::ZrotM(-this->m_jnt.getBackbone_x()); + + MTXCopy(mDoMtx_stack_c::now, j3dSys.mCurrentMtx); + model->setAnmMtx(joint_number, mDoMtx_stack_c::now); } /* 0000042C-0000044C .text CheckCreateHeap__FP10fopAc_ac_c */ -static BOOL CheckCreateHeap(fopAc_ac_c*) { +static void CheckCreateHeap(fopAc_ac_c* param_1) { /* Nonmatching */ + ((daNpc_Kk1_c*)param_1)->CreateHeap(); + + return; } +#define L_CHECK_SZ 20 +s32 l_check_wrk; +fopAc_ac_c* l_check_inf[L_CHECK_SZ]; + /* 0000044C-000004EC .text searchActor_SWC00__FPvPv */ -void* searchActor_SWC00(void*, void*) { - /* Nonmatching */ +void* searchActor_SWC00(void* i_swc, void* i_kk1) { + //TODO: I am the greatest programmer who has ever lived. + swc00_class* SwcAct = static_cast(i_swc); + daNpc_Kk1_c* Kk1Act = static_cast(i_kk1); + if ( + l_check_wrk < L_CHECK_SZ && fopAc_IsActor(SwcAct) && + fopAcM_GetName(SwcAct) == PROC_SWC00 && daSwc00_getType(SwcAct) == 0 && + daSwc00_getSw1No(SwcAct) == Kk1Act->getSWbit() + ){ + l_check_inf[l_check_wrk] = SwcAct; + l_check_wrk++; + } + return NULL; } - + +int (daNpc_Kk1_c::*actionptr)(void*); /* 000004EC-00000598 .text init_KK1_0__11daNpc_Kk1_cFv */ -void daNpc_Kk1_c::init_KK1_0() { +bool daNpc_Kk1_c::init_KK1_0() { /* Nonmatching */ + + bool uVar2; + int (daNpc_Kk1_c::*local_18)(void*); + s32 local_14; + void(*local_10)(void*); + + + if ((dComIfGs_isEventBit(0x2d01) != 0) && ((dKy_daynight_check() == 0) || (dComIfGs_isEventBit(0xe08) == 0))) { + + + set_action(&daNpc_Kk1_c::wait_action1,NULL); + uVar2 = 1; + return true; + } + else { + return false; + } + } +dCcD_SrcCyl dNpc_cyl_src; + + +char* l_evn_tbl[] = { + "run_start", "run_start_2", "catch", "get_empty_btl", + "bye", "otoboke", "runaway", "bye_2", +}; /* 00000598-000007B0 .text createInit__11daNpc_Kk1_cFv */ -void daNpc_Kk1_c::createInit() { +bool daNpc_Kk1_c::createInit() { /* Nonmatching */ + for (int i = 0; i < 8; ++i) { + mEvtIDTbl[i] = dComIfGp_evmng_getEventIdx(l_evn_tbl[i], 0xFF); + } + mEventCut.setActorInfo2("Kk1", this); + field_0x7B5 = base.mParameters >> 8; + + u8 params = base.mParameters >> 0x10; + if (params != 0xff) { + mRunPath.setInf(params, current.roomNo, true); + if (mRunPath.mPath != NULL) { + fopAcM_OffStatus(this, fopAcStts_NOCULLEXEC_e); + set_pthPoint(0); + } + else { + return FALSE; + } + } + if (mRunPath.mPath == NULL) { + return FALSE; + } + + attention_info.flags = fopAc_Attn_LOCKON_TALK_e | fopAc_Attn_ACTION_SPEAK_e; + + switch(field_0x820){ + case 0: + break; + } + + attention_info.distances[1] = 0xA9; + attention_info.distances[3] = 0xA9; + + gravity = -4.5f; + field_0x81A = 0xC; + + + bool control=0; + switch(field_0x820){ + case 0: + control = init_KK1_0(); + break; + default: + control = 0; + break; + } + if(control == 0){ + return false; + } + + + field_0x71E = current.angle; + shape_angle = field_0x71E; + mStts.Init(0xFF, 0xff, this); + mCyl.SetStts(&mStts); + mCyl.Set(dNpc_cyl_src); + mObjAcch.CrrPos(*dComIfG_Bgsp()); + play_animation(); + tevStr.mRoomNo = dComIfG_Bgsp()->GetRoomId(mObjAcch.m_gnd); + tevStr.mEnvrIdxOverride = dComIfG_Bgsp()->GetPolyColor(mObjAcch.m_gnd); + mpMorf->setMorf(0.0f); + setMtx(true); + return true; + + } /* 000007B0-00000918 .text play_animation__11daNpc_Kk1_cFv */ void daNpc_Kk1_c::play_animation() { /* Nonmatching */ +// ~ 6] play_btp_anm__11daNpc_Kk1_cFv (func,global) found in d_a_npc_kk1.o +// ~ 6] ChkGroundHit__9dBgS_AcchFv (func,weak) found in d_a_npc_kk1.o +// >>> SYMBOL NOT FOUND: GetMtrlSndId__4dBgSFR13cBgS_PolyInfo +// ~ 6] fopAcM_GetRoomNo__FP10fopAc_ac_c (func,weak) found in d_a_npc_kk1.o +// >>> SYMBOL NOT FOUND: dComIfGp_getReverb__Fi +// >>> SYMBOL NOT FOUND: play__14mDoExt_McaMorfFP3VecUlSc +// ~ 6] getFrame__14mDoExt_McaMorfFv (func,weak) found in d_a_npc_kk1.o +// 7] getFrame__12J3DFrameCtrlCFv (func,weak) found in d_a_npc_kk1.o +// 6] checkFrame__14mDoExt_McaMorfFf (func,weak) found in d_a_npc_kk1.o + + + + + + + cXyz floatload; + u32 uVar5 = 0; + play_btp_anm(); + + //dBgS_Acch::ChkGroundHit(); + + if (mObjAcch.ChkGroundHit() != 0) { + uVar5 = dComIfG_Bgsp()->GetMtrlSndId(mObjAcch.m_gnd); + } + + field_0x7B2 = mpMorf->play(&eyePos,uVar5,dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + if(mpMorf->getFrame() < field_0x768){ + field_0x7B2 = 1; + } + + field_0x768 = mpMorf->getFrame(); + + switch(field_0x81A){ + case 8: + if (mpMorf->checkFrame(4.0) != 0) { + + floatload.set(0.0,-50.0,-15.0); + setBikon(floatload); + } + break; + case 9: + if (mpMorf->checkFrame(4.0) != 0) { + + floatload.set(0.0,-50.0,0.0); + setBikon(floatload); + } + break; + } + play_eff_anm(); + return; } /* 00000918-00000A98 .text setMtx__11daNpc_Kk1_cFb */ -void daNpc_Kk1_c::setMtx(bool) { +void daNpc_Kk1_c::setMtx(bool param_1) { /* Nonmatching */ + + J3DModel *pJVar1; + //TODO: Don't come back till you find out more about the struct at 0x808 + pJVar1 = mpMorf->mpModel; + pJVar1->setBaseScale(scale); + MtxP stackPtr = mDoMtx_stack_c::get(); + PSMTXTrans(mDoMtx_stack_c::get(),current.pos.x,current.pos.y,current.pos.z); + mDoMtx_stack_c::ZXYrotM(field_0x71E); + ((J3DModel*)stackPtr)->setBaseTRMtx(mpMorf->mpModel->getBaseTRMtx()); + mpMorf->calc(); + volatile cXyz someFloat1; + someFloat1.x = 0.0; + someFloat1.y = -4.5; + someFloat1.z = 4.0; + //mDoExt_bckAnmRemove(mpMorf->mpModel->getModelData()); + field_0x7F0.entry((J3DModelData*)field_0x808_base[0x4],field_0x804); + PSMTXTrans(mDoMtx_stack_c::get(),current.pos.x,current.pos.y,current.pos.z); + mDoMtx_YrotM(mDoMtx_stack_c::get(),current.angle.y); + mDoMtx_stack_c::transM(someFloat1.x,someFloat1.y,someFloat1.z); + PSMTXCopy(mDoMtx_stack_c::get(),(MtxP)field_0x808_base[0x24]); //TODO: WRONG!!! + (void(*)(void))field_0x808_base[0x10]; + *(u32 *)(**(int **)(*(int *)(*(int *)&this->field_0x808_base + 4) + 0x2c) + 0x58) = 0; + + flwAse(); + setAttention(param_1); + return; } /* 00000A98-00000AAC .text bckResID__11daNpc_Kk1_cFi */ -void daNpc_Kk1_c::bckResID(int) { - /* Nonmatching */ -} +int daNpc_Kk1_c::bckResID(int param_1) { + static const u32 a_resID_tbl[] = {9,1}; + return a_resID_tbl[param_1]; +} +const u32 fillervars[] = { + 1,2,3,4,5,7,8, +0,0,0,0,0,0,0, +0,0,0, +}; /* 00000AAC-00000AC0 .text btpResID__11daNpc_Kk1_cFi */ -void daNpc_Kk1_c::btpResID(int) { +int daNpc_Kk1_c::btpResID(int param_1) { /* Nonmatching */ + static const u32 a_resID_tbl_2[] = {17}; + return a_resID_tbl_2[param_1]; } /* 00000AC0-00000BC4 .text setBtp__11daNpc_Kk1_cFScb */ -void daNpc_Kk1_c::setBtp(signed char, bool) { +bool daNpc_Kk1_c::setBtp(signed char param_1, bool param_2) { /* Nonmatching */ +{ + + J3DAnmTexPattern *pJVar1; + + J3DModel* pJVar5 = mpMorf->getModel(); + if (param_1 < 0) { + return false; + } + else { + + pJVar1 = (J3DAnmTexPattern*)dComIfG_getObjectIDRes(&mKkString,btpResID(param_1)); + if (pJVar1 == 0) { + u32 uVar2 = JUTAssertion::getSDevice(); + JUTAssertion::showAssert(uVar2,"d_a_npc_kk1.cpp",0x234,"a_btp != 0"); + OSPanic("d_a_npc_kk1.cpp",0x234,"Halt"); + } + field_0x819 = param_1; + field_0x6EC = 0; + field_0x6EE = 0; + + + return mBtpAnm.init(pJVar5->getModelData(),pJVar1,1,0,1.0,0,-1,param_2,0) != 0; + } + +} } /* 00000BC4-00000BE4 .text init_texPttrnAnm__11daNpc_Kk1_cFScb */ -void daNpc_Kk1_c::init_texPttrnAnm(signed char, bool) { +void daNpc_Kk1_c::init_texPttrnAnm(signed char param_1, bool param_2) { /* Nonmatching */ + setBtp(param_1, param_2); + return; } /* 00000BE4-00000C80 .text play_btp_anm__11daNpc_Kk1_cFv */ void daNpc_Kk1_c::play_btp_anm() { /* Nonmatching */ + u8 uVar1; + + uVar1 = mBtpAnm.getBtpAnm()->getFrameMax();// getAnmTable()->mMaxFrame; + if ((field_0x819 != 0) || + (cLib_calcTimer(&field_0x6EE) == 0)) { + field_0x6EC = field_0x6EC + 1; + if (field_0x6EC >= uVar1) { + if (field_0x819 != 0) { + field_0x6EC = (char)uVar1; + return; + + } + else { + field_0x6EE = cLib_getRndValue(0x3c,0x5a); + field_0x6EC = 0; + } + } + } + return; } /* 00000C80-00000CFC .text play_eff_anm__11daNpc_Kk1_cFv */ void daNpc_Kk1_c::play_eff_anm() { /* Nonmatching */ - char* fillerstr; - strcpy(fillerstr,"run_start"); - strcpy(fillerstr,"run_start_2"); - strcpy(fillerstr,"catch"); - strcpy(fillerstr,"get_empty_btl"); - strcpy(fillerstr,"bye"); - strcpy(fillerstr,"otoboke"); - strcpy(fillerstr,"runaway"); - strcpy(fillerstr,"bye_2"); - strcpy(fillerstr,"Kk1"); - strcpy(fillerstr,"d_a_npc_kk1.cpp"); - strcpy(fillerstr,"a_btp != 0"); - strcpy(fillerstr,"Halt"); + + s32 sVar1; + field_0x800 += 1; + if(field_0x800 >= 0x1E){ + field_0x800 = 0x1D; + } + sVar1 = field_0x7E4[2]; //TODO: Struct Shenaniganry + field_0x802 += 1; + if(sVar1 < field_0x802){ + field_0x802 = sVar1 - 1; + } + sVar1 = (int)field_0x7F0.getBckAnm() + 6; //TODO: Ditto + field_0x804 += 1; + if(sVar1 < field_0x804){ + field_0x804 = 0x3B; + } + return; + + + } /* 00000CFC-00000DDC .text setAnm_anm__11daNpc_Kk1_cFPQ211daNpc_Kk1_c9anm_prm_c */ -void daNpc_Kk1_c::setAnm_anm(daNpc_Kk1_c::anm_prm_c*) { +void daNpc_Kk1_c::setAnm_anm(daNpc_Kk1_c::anm_prm_c* param_1) { /* Nonmatching */ + //if(((char)*param_1 > -1)&&(field_0x7CE != param_1)){} + } + +struct anmstruct { + u16 pad1; + + f32 field_0x1; + f32 field_0x2; + u32 pad3; + u32 pad2[0xC]; +}; /* 00000DDC-00000E4C .text setAnm_NUM__11daNpc_Kk1_cFii */ -void daNpc_Kk1_c::setAnm_NUM(int, int) { +void daNpc_Kk1_c::setAnm_NUM(int param_1, int param_2) { /* Nonmatching */ + } /* 00000E4C-00000EB8 .text setAnm__11daNpc_Kk1_cFv */ @@ -135,8 +446,9 @@ void daNpc_Kk1_c::ctrlAnmTag() { } /* 00000EC0-00000FA0 .text chngAnmAtr__11daNpc_Kk1_cFUc */ -void daNpc_Kk1_c::chngAnmAtr(unsigned char) { +void daNpc_Kk1_c::chngAnmAtr(unsigned char param_1) { /* Nonmatching */ + } /* 00000FA0-00001080 .text ctrlAnmAtr__11daNpc_Kk1_cFv */ @@ -147,16 +459,57 @@ void daNpc_Kk1_c::ctrlAnmAtr() { /* 00001080-000010E4 .text setAnm_ATR__11daNpc_Kk1_cFv */ void daNpc_Kk1_c::setAnm_ATR() { /* Nonmatching */ + static daNpc_Kk1_c::anm_prm_c a_anm_prm_tbl[13] = { +{0x00,0x00,0x00,0x00}, +{0x00,0x00,0x00,0x00}, +{0x00,0x00,0x00,0x00}, +{0x00,0x00,0x00,0x00}, +{0x00,0x00,0x00,0x00}, +{0x00,0x00,0x00,0x00}, +{0x00,0x00,0x00,0x00}, +{0x00,0x00,0x00,0x00}, +{0x00,0x00,0x00,0x00}, +{0x00,0x00,0x00,0x00}, +{0x00,0x00,0x00,0x00}, +{0x00,0x00,0x00,0x00}, +{0x00,0x00,0x00,0x00}, + + }; + init_texPttrnAnm(a_anm_prm_tbl[anm_prm_idx].field_0x1,true); + setAnm_anm(((daNpc_Kk1_c::anm_prm_c *)(&a_anm_prm_tbl[anm_prm_idx]))); + return; } /* 000010E4-000011A0 .text anmAtr__11daNpc_Kk1_cFUs */ -void daNpc_Kk1_c::anmAtr(unsigned short) { +void daNpc_Kk1_c::anmAtr(unsigned short param_1) { /* Nonmatching */ - dComIfGp_getMesgAnimeAttrInfo(); - chngAnmAtr(1); - dComIfGp_getMesgAnimeTagInfo(); - dComIfGp_clearMesgAnimeTagInfo(); - chngAnmTag(); + // dComIfGp_getMesgAnimeAttrInfo(); + // chngAnmAtr(1); + // dComIfGp_getMesgAnimeTagInfo(); + // dComIfGp_clearMesgAnimeTagInfo(); + // chngAnmTag(); + // ctrlAnmAtr(); + // ctrlAnmTag(); + u8 uVar1; + switch(param_1){ + case 6: + + if (field_0x822 == 0) { + chngAnmAtr(dComIfGp_getMesgAnimeAttrInfo()); + field_0x822 += 1; + } + uVar1 = dComIfGp_getMesgAnimeTagInfo(); + if (( uVar1 != 0xFF) && + (uVar1 != field_0x818)) { + dComIfGp_clearMesgAnimeTagInfo(); + field_0x818 = uVar1; + chngAnmTag(); + } + break; + case 14: + field_0x822 = 0; + break; + } ctrlAnmAtr(); ctrlAnmTag(); @@ -313,149 +666,11 @@ u16 daNpc_Kk1_c::next_msgStatus(unsigned long* param_1) { } return var_r0; } -// /* Nonmatching */ -// u8 bVar1 = this->mpCurrMsg->mSelectNum; -// u16 uVar2 = 0xf; -// switch(*param_1) { -// case 0x1c85: -// *param_1 = 0x1c86; -// break; -// case 0x1c86: -// *param_1 = 0x1ca7; -// break; -// case 0x1c88: -// *param_1 = 0x1c89; -// break; -// case 0x1c89: -// *param_1 = 0x1c8a; -// break; -// case 0x1c8a: -// *param_1 = 0x1ca9; -// break; -// case 0x1c8b: -// *param_1 = 0x1cac; -// this->field_0x7B8 = 1; -// break; -// case 0x1c8d: -// *param_1 = 0x1c8e; -// break; -// case 0x1c8e: -// *param_1 = 0x1c8f; -// break; -// case 0x1c8f: -// if (bVar1 == 1) { -// *param_1 = 0x1ca5; -// field_0x7AE++; -// } -// else if (bVar1 == 0) { -// *param_1 = 0x1c90; -// } -// break; -// case 0x1c90: -// *param_1 = 0x1c91; -// break; -// case 0x1c91: -// if (bVar1 == 1) { -// *param_1 = 0x1c92; -// field_0x7AE++; -// } -// else if (bVar1 == 0) { -// *param_1 = 0x1c93; -// } -// break; -// case 0x1c92: -// *param_1 = 0x1c91; -// break; -// case 0x1c93: -// *param_1 = 0x1c94; -// break; -// case 0x1c94: -// *param_1 = 0x1c95; -// if (bVar1 == 1) { -// *param_1 = 0x1c96; -// field_0x7AE++; -// } - -// break; -// case 0x1c95: -// *param_1 = 0x1c96; -// break; -// case 0x1c96: -// *param_1 = 0x1c97; -// break; -// case 0x1c97: -// if (bVar1 == 1) { -// *param_1 = (this->field_0x7AE <= 1) ? (0x1C9B - 1 - (this->field_0x7AE >> 31)) -// : (0x1C9B - 0 - (this->field_0x7AE >> 31)); -// } -// else if (bVar1 == 0) { -// *param_1 = 0x1c98; -// } -// break; -// case 0x1c98: -// if (bVar1 == 1) { -// uVar2 = 0x10; -// } -// else if (bVar1 == 0) { -// *param_1 = 0x1c99; -// } -// break; -// case 0x1c99: -// if (bVar1 == 1) { -// *param_1 = 0x1c9a; -// } -// else if (bVar1 == 0) { -// int fieldValue = this->field_0x7AE; -// uint temp = (fieldValue <= 1) ? 1 : 0; -// *param_1 = (-temp) - (fieldValue >> 31) + 0x1C9D; -// } -// break; -// case 0x1c9b: -// *param_1 = 0x1c9d; -// break; -// case 0x1c9d: -// *param_1 = 0x1c9e; -// break; -// case 0x1c9e: -// *param_1 = 0x1caa; -// break; -// case 0x1c9f: -// uVar2 = 0x10; -// break; - - -// case 0x1ca5: -// *param_1 = 0x1c8f; -// break; -// case 0x1ca7: -// *param_1 = 0x1ca8; -// break; -// case 0x1caa: -// *param_1 = 0x1c9f; -// break; -// case 0x1ca1: -// *param_1 = 0x1ca2; -// break; -// case 0x1ca2: -// *param_1 = 0x1ca3; -// break; -// case 0x1ca3: -// *param_1 = 0x1ca4; -// break; -// case 0x1ca4: -// *param_1 = 0x1cab; -// break; -// default: -// uVar2 = 0x10; -// break; -// } -// return uVar2; -// } /* 0000149C-00001534 .text getMsg_KK1_0__11daNpc_Kk1_cFv */ u32 daNpc_Kk1_c::getMsg_KK1_0() { - if (dKy_daynight_check() == 1) { + if (dKy_daynight_check() == 1) { //If Night if (field_0x7BA != 0) { field_0x7BA = 0; @@ -465,7 +680,7 @@ u32 daNpc_Kk1_c::getMsg_KK1_0() { return 0x1c8b; } } - else { + else { //If Day if (dComIfGs_isEventBit(0xe08) == 0) { if(dComIfGs_isEventBit(0xe10)){ return 0x1C87; @@ -477,7 +692,6 @@ u32 daNpc_Kk1_c::getMsg_KK1_0() { return 0x1c85; } } - //I'm the goat } /* 00001534-00001570 .text getMsg__11daNpc_Kk1_cFv */ @@ -496,24 +710,23 @@ void daNpc_Kk1_c::eventOrder() { /* Nonmatching */ char cVar1 = field_0x81B; if ((cVar1 == '\x01') || (cVar1 == '\x02')) { - // this->eventInfo.mCondition |= dEvtCnd_CANTALK_e; eventInfo.onCondition(dEvtCnd_CANTALK_e); - if(field_0x81B == '\x01'){ + if(field_0x81B == '\x01'){ //1 = Speaking? fopAcM_orderSpeakEvent(this); } }else if (cVar1 >= 0x03){ - field_0x78C = (cVar1 - 3); - fopAcM_orderOtherEventId(this,field_0x77C[field_0x78C],0x00ff,0xffff,0,1); + mEvtIDIdx = (cVar1 - 3); + fopAcM_orderOtherEventId(this,mEvtIDTbl[mEvtIDIdx],0x00ff,0xffff,0,1); } - //fopAcM_orderOtherEventId(this,(&field_0x77C + 2*field_0x78C),) + //fopAcM_orderOtherEventId(this,(&evt_id_tbl + 2*mEvtIDIdx),) } /* 000015FC-000016DC .text checkOrder__11daNpc_Kk1_cFv */ void daNpc_Kk1_c::checkOrder() { /* Nonmatching */ if(eventInfo.checkCommandDemoAccrpt()){ - if(dComIfGp_evmng_startCheck(field_0x77C[field_0x78C]) && (s8)field_0x81B >= 0x03){ - switch(field_0x78C){ + if(dComIfGp_evmng_startCheck(mEvtIDTbl[mEvtIDIdx]) && (s8)field_0x81B >= 0x03){ + switch(mEvtIDIdx){ case 4: setAnm_NUM(0,1); break; @@ -524,7 +737,7 @@ void daNpc_Kk1_c::checkOrder() { } field_0x81B = 0; - field_0x817 = 0xFF; + anm_prm_idx = 0xFF; field_0x818 = 0xFF; }; @@ -581,9 +794,7 @@ fopAc_ac_c* daNpc_Kk1_c::searchByID(fpc_ProcID param_1, int* param_2) { -#define L_CHECK_SZ 20 -s32 l_check_wrk; -fopAc_ac_c* l_check_inf[L_CHECK_SZ]; + //static PartnerSearchResult l_check_inf; // Search results buffer /* 00001808-000018B8 .text partner_search_sub__11daNpc_Kk1_cFPFPvPv_Pv */ bool daNpc_Kk1_c::partner_search_sub(void* (*param_1)(void*, void*)) { @@ -832,10 +1043,6 @@ bool daNpc_Kk1_c::cut_move_CATCH_END() { return true; } -// const struct pathnodes{ -// double p1; -// double p2; -// } path = {0x2827262524232221,0x2223242526272829}; /* 00001FB4-000022BC .text cut_init_TRN__11daNpc_Kk1_cFi */ void daNpc_Kk1_c::cut_init_TRN(int) { @@ -1287,24 +1494,101 @@ void daNpc_Kk1_c::privateCut(int param_1) { /* 00002D98-00002DBC .text endEvent__11daNpc_Kk1_cFv */ void daNpc_Kk1_c::endEvent() { dComIfGp_event_reset(); - field_0x817 = 0xff; + anm_prm_idx = 0xff; field_0x818 = 0xff; return; } /* 00002DBC-00002DF4 .text isEventEntry__11daNpc_Kk1_cFv */ void daNpc_Kk1_c::isEventEntry() { - /* Nonmatching */ + dComIfGp_evmng_getMyStaffId(mEventCut.getActorName(),NULL,0); + return; } /* 00002DF4-00002F80 .text event_proc__11daNpc_Kk1_cFi */ -void daNpc_Kk1_c::event_proc(int) { +void daNpc_Kk1_c::event_proc(int param_1) { /* Nonmatching */ + + + if (dComIfGp_evmng_endCheck(mEvtIDTbl[mEvtIDIdx])) { + s16 idx = mEvtIDIdx; + + + switch(idx){ + case 0: + case 1: + setStt(5); + break; + case 2: + + eventInfo.mEventId = -1; + switch(mCurrMsgNo) { + case 0x1c99: + case 0x1c9b: + case 0x1c9d: + case 0x1c9e: + break; + case 0x1c9a: + this->field_0x81B = 10; + this->field_0x81E = 0; + this->field_0x7C4 = 1; + break; + case 0x1c98: + case 0x1c9c: + this->field_0x81B = 7; + this->field_0x81E = 1; + this->field_0x7C4 = 1; + break; + case 0x1c9f: + setStt(6); + this->field_0x81B = 6; + this->field_0x81E = 0; + this->field_0x7C4 = 1; + break; + } + break; + + case 3: + + + field_0x81B = 1; + dComIfGs_onEventBit(0xE08); + field_0x7BA = 1; + break; + + case 4: + case 6: + case 7: + fopAcM_delete(this); + break; + case 5: + break; + + + } + endEvent(); + return; + } + if(mEventCut.cutProc() == 0){ + privateCut(param_1); + } } /* 00002F80-00002FB8 .text checkCommandTalk__11daNpc_Kk1_cFv */ bool daNpc_Kk1_c::checkCommandTalk() { /* Nonmatching */ + + bool retval = false; + + + if (eventInfo.checkCommandTalk()){ + retval = true; + if((field_0x816 == 5)&&(field_0x7A4 != 0)){ + retval = false; + } + } + return retval; + } /* 00002FB8-00003064 .text set_action__11daNpc_Kk1_cFM11daNpc_Kk1_cFPCvPvPv_iPv */ @@ -1453,7 +1737,7 @@ void daNpc_Kk1_c::talk_1() { } /* 000052B4-000053F4 .text wait_action1__11daNpc_Kk1_cFPv */ -void daNpc_Kk1_c::wait_action1(void*) { +int daNpc_Kk1_c::wait_action1(void*) { /* Nonmatching */ } @@ -1500,8 +1784,6 @@ void daNpc_Kk1_c::effcCreateHeap() { /* 000065E0-00006684 .text CreateHeap__11daNpc_Kk1_cFv */ void daNpc_Kk1_c::CreateHeap() { /* Nonmatching */ - char* fillerstr; - strcpy(fillerstr,""); return; }