d_a_npc_ls1 matching (#925)

* Match daNpc_Ls1_c::create, decideType, and ctor

* 16% matching in .text
-Match daNpc_Ls1_c::CreateHeap
-Match daNpc_Ls1_c::itemCreateHeap
-Match daNpc_Ls1_c::handCreateHeap
-Match daNpc_Ls1_c::_delete
-Match other trivial functions

* Add hio_prm_c

* 27% matching in .text
-Add some static data
-Match daNpc_Ls1_c::endEvent
-Match daNpc_Ls1_c::isEventEntry
-Match daNpc_Ls1_c::execute
-Match daNpc_Ls1_c::bodyCreateHeap
-Match some more trivial funcs

* 33% matching in .text
-Match daNpc_Ls1_c::create_init
-Match daNpc_Ls1_c::chngAnmTag
-Match daNpc_Ls1_c::ctrlAnmTag
-Match init_LS1_#n() funcs
-Match searchActor funcs

* Add daNpc_Ls1_c::anm_prm_c struct and associated static data

* 39% matching in .text
- Matched daNpc_Ls1_matAnm_c::calc
- Matched static node callbacks
- Matched daNpc_Ls1_c::setAnm_anm
- Matched daNpc_Ls1_c::setAnm_NUM
- Matched daNpc_Ls1_c::chngAnmAtr
- Misc code formatting changes

* 52% matching in .text
- Match daNpc_Ls1_c::play_animation
- Match daNpc_Ls1_c::set_mtx
- Match ResID funcs
- Match daNpc_Ls1_c::setBtp
- Match daNpc_Ls1_c::setMat
- Match daNpc_Ls1_c::setBtk
- Match daNpc_Ls1_c::init_texPttrnAnm
- Match daNpc_Ls1_c::play_btp_anm
- Match daNpc_Ls1_c::play_btk_anm
- Match daNpc_Ls1_c::ctrlAnmAtr
- Match daNpc_Ls1_c::setAnm_ATR
- Match daNpc_Ls1_c::chk_parts_notMov
- Match daNpc_Ls1_c::cut_init_LOK_PLYER
- Match daNpc_Ls1_c::cut_move_WAI
- Match daNpc_Ls1_c::cut_init_ANM_CHG
- Match daNpc_Ls1_c::set_action

* Update comments

* Match daNpc_Ls1_c::_draw

* 63% matching in .text
- Match member J3D node callbacks
- Match daNpc_Ls1_c::eye_ctrl
- Match daNpc_Ls1_c::next_msgStatus
- Match daNpc_Ls1_c::getMsg
- Match daNpc_Ls1_c::chk_talk
- Match daNpc_Ls1_c::setEyeCtrl
- Match daNpc_Ls1_c::clrEyeCtrl
- Match daNpc_Ls1_c::setAttention
- Add misc enums
- Add a_cut_tbl

* 66% matching in .text
- Matched daNpc_Ls1_c::searchByID
- Matched daNpc_Ls1_c::partner_search_sub
- Matched daNpc_Ls1_c::partner_search
- Matched daNpc_Ls1_c::chkAttention
- Marched daNpc_Ls1_c::shadowDraw

* 75% matching in .text
- Match daNpc_Ls1_c::anmAtr
- Match daNpc_Ls1_c::getMsg_LS1_0
- Match daNpc_Ls1_c::chk_talk
- Match daNpc_Ls1_c::setStt
- Match daNpc_Ls1_c::get_playerEvnPos
- Match daNpc_Ls1_c::chkTelescope
- Match daNpc_Ls1_c::wait_1
- Match daNpc_Ls1_c::wait_4
- Match daNpc_Ls1_c::talk_1
- Match daNpc_Ls1_c::demo_action1

* Match daNpc_Ls1_c::wait_3

* 100% matching for both demo and retail

* Update comments

* Initial refactoring work

* Renaming work & declaring functions in f_op_msg_mng header

* Refactoring continued

* Last bit of renaming work

* Add missing include
This commit is contained in:
Roland
2026-02-11 21:31:05 -06:00
committed by GitHub
parent 1763262970
commit c79fa65efd
6 changed files with 2268 additions and 249 deletions
+1 -1
View File
@@ -1650,7 +1650,7 @@ config.libs = [
ActorRel(MatchingFor("GZLJ01", "GZLE01", "GZLP01"), "d_a_npc_km1"),
ActorRel(NonMatching, "d_a_npc_ko1"),
ActorRel(NonMatching, "d_a_npc_kp1"),
ActorRel(NonMatching, "d_a_npc_ls1"),
ActorRel(Matching, "d_a_npc_ls1"),
ActorRel(NonMatching, "d_a_npc_mk"),
ActorRel(NonMatching, "d_a_npc_mn"),
ActorRel(NonMatching, "d_a_npc_mt"),
+10 -6
View File
@@ -1,11 +1,12 @@
#ifndef D_A_NPC_BM1_H
#define D_A_NPC_BM1_H
#include "d/d_npc.h"
#include "f_op/f_op_actor.h"
class J3DNode;
class daNpc_Bm1_c : public fopAc_ac_c {
class daNpc_Bm1_c : public fopNpc_npc_c {
public:
struct anm_prm_c {
@@ -67,7 +68,7 @@ public:
void chk_talk();
void chk_partsNotMove();
void lookBack();
void next_msgStatus(unsigned long*);
u16 next_msgStatus(unsigned long*);
void getBitMask();
void getMsg_PST_1();
void getMsg_PST_3();
@@ -81,7 +82,7 @@ public:
void getMsg_BMC_3();
void getMsg_BMD_0();
void getMsg_BMD_1();
void getMsg();
u32 getMsg();
void chkAttention();
void setAttention(bool);
void searchByID(fpc_ProcID);
@@ -194,9 +195,11 @@ public:
/* 0x870 */ u8 m870[0x874 - 0x870];
/* 0x874 */ s16 m874;
/* 0x876 */ s16 m876;
/* 0x878 */ u8 m878[0x881 - 0x878];
/* 0x878 */ u8 m878[0x880 - 0x878];
/* 0x880 */ u8 m880;
/* 0x881 */ u8 m881;
/* 0x882 */ u8 m882[0x884 - 0x882];
/* 0x882 */ u8 m882;
/* 0x883 */ u8 m883[0x884 - 0x883];
/* 0x884 */ u8 m884;
/* 0x885 */ u8 m885[0x887 - 0x885];
/* 0x887 */ u8 m887;
@@ -212,7 +215,8 @@ public:
/* 0x902 */ u8 mSpecificType;
/* 0x903 */ u8 mSpawnCondition;
/* 0x904 */ u8 m904[0x908 - 0x904];
};
};
STATIC_ASSERT(sizeof(daNpc_Bm1_c) == 0x908);
class daNpc_Bm1_childHIO_c {
public:
+190 -64
View File
@@ -1,30 +1,43 @@
#ifndef D_A_NPC_LS1_H
#define D_A_NPC_LS1_H
#include "d/d_npc.h"
#include "f_op/f_op_actor.h"
#include "m_Do/m_Do_hostIO.h"
class J3DMaterial;
class J3DNode;
class daNpc_Ls1_matAnm_c {
class daNpc_Ls1_matAnm_c : public J3DMaterialAnm {
public:
daNpc_Ls1_matAnm_c();
void clrMoveFlag() {}
void getNowOffsetX() {}
void getNowOffsetY() {}
void setMoveFlag() {}
void clrMoveFlag() { mbMove = 0; }
f32& getNowOffsetX() { return mOffset.x; }
f32& getNowOffsetY() { return mOffset.y; }
void setMoveFlag() { mbMove = 1; }
void calc(J3DMaterial*) const;
public:
/* Place member variables here */
};
/* 0x6C */ cXy mOffset;
/* 0x74 */ u8 m74[0x7C - 0x74];
/* 0x7C */ u8 mbMove;
/* 0x7D */ u8 m7D[0x80 - 0x7D];
}; // Size: 0x80
class daNpc_Ls1_c : public fopAc_ac_c {
class daNpc_Ls1_c : public fopNpc_npc_c {
public:
typedef BOOL (daNpc_Ls1_c::*ProcFunc)(void*);
struct anm_prm_c {
};
/* 0x00 */ s8 mBckResIndex;
/* 0x01 */ s8 mResIndex;
/* 0x04 */ f32 mMorf;
/* 0x08 */ f32 mSpeed;
/* 0x0C */ int mLoopMode;
}; // Size: 0x10
inline daNpc_Ls1_c();
void _nodeCB_Head(J3DNode*, J3DModel*);
void _nodeCB_BackBone(J3DNode*, J3DModel*);
@@ -32,21 +45,21 @@ public:
void _nodeCB_Hand_R(J3DNode*, J3DModel*);
void _Ls_hand_nodeCB_Hand_L(J3DNode*, J3DModel*);
void _Ls_hand_nodeCB_Hand_R(J3DNode*, J3DModel*);
void init_LS1_0();
void init_LS1_1();
void init_LS1_2();
void init_LS1_3();
void init_LS1_4();
void createInit();
bool init_LS1_0();
bool init_LS1_1();
bool init_LS1_2();
bool init_LS1_3();
bool init_LS1_4();
bool createInit();
void play_animation();
void setMtx(bool);
void bckResID(int);
void btpResID(int);
void btkResID(int);
void setBtp(signed char, bool);
int bckResID(int);
int btpResID(int);
int btkResID(int);
bool setBtp(s8, bool);
void setMat();
void setBtk(signed char, bool);
void init_texPttrnAnm(signed char, bool);
bool setBtk(s8, bool);
bool init_texPttrnAnm(s8, bool);
void play_btp_anm();
void eye_ctrl();
void play_btk_anm();
@@ -55,74 +68,187 @@ public:
void setAnm();
void chngAnmTag();
void ctrlAnmTag();
void chngAnmAtr(unsigned char);
void chngAnmAtr(u8);
void ctrlAnmAtr();
void setAnm_ATR(int);
void anmAtr(unsigned short);
void next_msgStatus(unsigned long*);
void getMsg_LS1_0();
void getMsg_LS1_3();
void getMsg();
void anmAtr(u16);
u16 next_msgStatus(u32*);
u32 getMsg_LS1_0();
u32 getMsg_LS1_3();
u32 getMsg();
void eventOrder();
void checkOrder();
void chk_talk();
void chk_parts_notMov();
void searchByID(fpc_ProcID, int*);
void partner_search_sub(void* (*)(void*, void*));
bool chk_talk();
bool chk_parts_notMov();
fopAc_ac_c* searchByID(fpc_ProcID, int*);
bool partner_search_sub(void* (*)(void*, void*));
void partner_search();
void setEyeCtrl();
void clrEyeCtrl();
void lookBack();
void chkAttention();
bool chkAttention();
void setAttention(bool);
void decideType(int);
bool decideType(int);
void cut_init_LOK_PLYER(int);
void cut_move_LOK_PLYER();
bool cut_move_LOK_PLYER();
void cut_init_PLYER_MOV(int);
void cut_move_PLYER_MOV();
bool cut_move_PLYER_MOV();
void cut_init_WAI(int);
void cut_move_WAI();
bool cut_move_WAI();
void cut_init_ANM_CHG(int);
void cut_move_ANM_CHG();
bool cut_move_ANM_CHG();
void privateCut(int);
void endEvent();
void isEventEntry();
int isEventEntry();
void event_proc(int);
void set_action(int (daNpc_Ls1_c::*)(void*), void*);
void setStt(signed char);
void chk_areaIN(float, float, short, cXyz);
void get_playerEvnPos(int);
void chkTelescope_sph(cXyz, float, float);
void chkTelescope(cXyz, float, float);
void telescope_proc();
void wait_1();
void wait_2();
void wait_3();
void wait_4();
void talk_1();
void wait_action1(void*);
void demo_action1(void*);
void demo();
BOOL set_action(ProcFunc, void*);
void setStt(s8);
bool chk_areaIN(f32, f32, s16, cXyz);
cXyz get_playerEvnPos(int);
bool chkTelescope_sph(cXyz, f32, f32);
bool chkTelescope(cXyz, f32, f32);
bool telescope_proc();
BOOL wait_1();
BOOL wait_2();
BOOL wait_3();
BOOL wait_4();
BOOL talk_1();
BOOL wait_action1(void*);
BOOL demo_action1(void*);
bool demo();
void shadowDraw();
BOOL _draw();
BOOL _execute();
BOOL _delete();
cPhs_State _create();
void bodyCreateHeap();
void handCreateHeap();
void itemCreateHeap();
void CreateHeap();
BOOL bodyCreateHeap();
BOOL handCreateHeap();
BOOL itemCreateHeap();
BOOL CreateHeap();
public:
/* Place member variables here */
};
/* 0x6C4 */ request_of_phase_process_class mPhs;
/* 0x6CC */ s8 m_hed_jnt_num;
/* 0x6CD */ s8 m_bbone_jnt_num;
/* 0x6CE */ s8 m_hnd_L_jnt_num;
/* 0x6CF */ s8 m_hnd_R_jnt_num;
/* 0x6D0 */ J3DModel* mpTelescopeModel;
/* 0x6D4 */ f32 mTelescopeScale;
/* 0x6D8 */ daNpc_Ls1_matAnm_c* mpMatAnms[2];
/* 0x6E0 */ char mArcName[3];
/* 0x6E3 */ u8 m6E3[0x6E4 - 0x6E3];
/* 0x6E4 */ u32 mShadowID;
/* 0x6E8 */ J3DModel* mpLsHandModel;
/* 0x6EC */ s8 m_lsHnd_L_jnt_num;
/* 0x6ED */ s8 m_lsHnd_R_jnt_num;
/* 0x6EE */ u8 m6EE[0x6F0 - 0x6EE];
/* 0x6F0 */ mDoExt_btkAnm mBtkAnm;
/* 0x704 */ u8 mBtkFrame;
/* 0x705 */ u8 m705[0x708 - 0x705];
/* 0x708 */ mDoExt_btpAnm mBtpAnm;
/* 0x71C */ u8 mBtpFrame;
/* 0x71D */ u8 m71D[0x71E - 0x71D];
/* 0x71E */ s16 mTimer1;
/* 0x720 */ ProcFunc mCurrProcFunc;
/* 0x72C */ Mtx mHand_L_Mtx;
/* 0x75C */ Mtx mHand_R_Mtx;
/* 0x78C */ fpc_ProcID mBm1ProcID;
/* 0x790 */ fpc_ProcID m790;
/* 0x794 */ cXyz m794;
/* 0x7A0 */ csXyz m7A0;
/* 0x7A6 */ csXyz mAngle;
/* 0x7AC */ u8 m7AC[0x7B4 - 0x7AC];
/* 0x7B4 */ cXyz mTransformedEyePos;
/* 0x7C0 */ cXyz mPlayerEyePos;
/* 0x7CC */ cXyz m7CC[2];
/* 0x7E4 */ cXyz m7E4;
/* 0x7F0 */ u8 m7F0[0x800 - 0x7F0];
/* 0x800 */ f32 mPrevMorfFrame;
/* 0x804 */ s16 mActorAngleY;
/* 0x806 */ s16 mJointHeadY;
/* 0x808 */ s16 mJointBackboneY;
/* 0x80A */ u8 m80A[0x80C - 0x80A];
/* 0x80C */ BOOL mbSetEyePos;
/* 0x810 */ u32 m810;
/* 0x814 */ s16 mEventIDTbl[4];
/* 0x81C */ s16 mEventIndex;
/* 0x81E */ s16 mTimer2;
/* 0x820 */ u8 m820[0x822 - 0x820];
/* 0x822 */ s16 mTimer3;
/* 0x824 */ s16 mTimer4;
/* 0x826 */ s16 mTimer5;
/* 0x828 */ u8 m828[0x82E - 0x828];
/* 0x82E */ s16 m82E;
/* 0x830 */ s8 mbMorfAnimStopped; // Not typed as bool, but used like one
/* 0x831 */ u8 m831;
/* 0x832 */ u8 mItemNo;
/* 0x833 */ u8 m833;
/* 0x834 */ bool m834;
/* 0x835 */ bool m835;
/* 0x836 */ bool m836;
/* 0x837 */ bool mbResLoadIsComplete;
/* 0x838 */ bool m838;
/* 0x839 */ u8 mbEyeCtrlSet;
/* 0x83A */ bool m83A;
/* 0x83B */ u8 m83B;
/* 0x83C */ u8 m83C;
/* 0x83D */ bool m83D;
/* 0x83E */ bool mbAttention;
/* 0x83F */ bool m83F;
/* 0x840 */ bool m840;
/* 0x841 */ bool m841;
/* 0x842 */ s16 mHalfHeadAngleY;
/* 0x844 */ s16 mHalfHeadAngleX;
/* 0x846 */ s16 m846;
/* 0x848 */ s16 m848;
/* 0x84A */ s8 mActionIndex;
/* 0x84B */ u8 m84B;
/* 0x84C */ u8 mMesgAnimeTag;
/* 0x84D */ s8 mBtpResIDIndex;
/* 0x84E */ s8 mBtkResIDIndex;
/* 0x84F */ s8 mBckResIndex;
/* 0x850 */ s8 m850;
/* 0x851 */ s8 m851;
/* 0x852 */ s8 m852;
/* 0x853 */ s8 m853;
/* 0x854 */ s8 m854;
/* 0x855 */ s8 mType;
/* 0x856 */ s8 m856;
/* 0x857 */ s8 m857;
}; // Size: 0x858
class daNpc_Ls1_HIO_c {
class daNpc_Ls1_HIO_c : public mDoHIO_entry_c {
public:
struct hio_prm_c {
/* 0x00 */ s16 mMaxHeadX;
/* 0x02 */ s16 mMaxHeadY;
/* 0x04 */ s16 mMinHeadX;
/* 0x06 */ s16 mMinHeadY;
/* 0x08 */ s16 mMaxBackBoneX;
/* 0x0A */ s16 mMaxBackBoneY;
/* 0x0C */ s16 mMinBackBoneX;
/* 0x0E */ s16 mMinBackBoneY;
/* 0x10 */ s16 mMaxTurnStep;
/* 0x12 */ s16 m12;
/* 0x14 */ f32 mAttPosOffsetY;
/* 0x18 */ bool m18;
/* 0x19 */ // 3 bytes of alignment padding
/* 0x1C */ f32 m1C;
/* 0x20 */ f32 m29;
/* 0x24 */ f32 m24;
/* 0x28 */ f32 m28;
/* 0x2C */ f32 m2C;
/* 0x30 */ s16 m30;
/* 0x32 */ // 2 bytes of alignment padding
/* 0x34 */ f32 mPlayerEyePosOffsetY;
}; // Size: 0x38
daNpc_Ls1_HIO_c();
inline virtual ~daNpc_Ls1_HIO_c();
public:
/* Place member variables here */
};
/* 0x04 */ s8 m04;
/* 0x05 */ // 3 bytes of alignment padding
/* 0x08 */ s32 m08;
/* 0x0C */ hio_prm_c mPrm;
}; // Size: 0x44
#endif /* D_A_NPC_LS1_H */
+4
View File
@@ -374,12 +374,16 @@ void fopMsgM_setNowAlpha(fopMsgM_pane_alpha_class*, f32);
void fopMsgM_setAlpha(fopMsgM_pane_alpha_class*);
u32 fopMsgM_searchMessageNumber(u32);
bool fopMsgM_forceSendOn();
void fopMsgM_messageSendOn();
void fopMsgM_messageSendOff();
bool fopMsgM_checkMessageSend();
u32 fopMsgM_tactMessageSet();
void fopMsgM_demoMsgFlagOn();
bool fopMsgM_getScopeMode();
bool fopMsgM_releaseScopeMode();
void fopMsgM_demoMsgFlagOn();
void fopMsgM_demoMsgFlagOff();
bool fopMsgM_demoMsgFlagCheck();
+2 -2
View File
@@ -284,7 +284,7 @@ void daNpc_Bm1_c::lookBack() {
}
/* 00002590-00002A58 .text next_msgStatus__11daNpc_Bm1_cFPUl */
void daNpc_Bm1_c::next_msgStatus(unsigned long*) {
u16 daNpc_Bm1_c::next_msgStatus(unsigned long*) {
/* Nonmatching */
}
@@ -354,7 +354,7 @@ void daNpc_Bm1_c::getMsg_BMD_1() {
}
/* 00003470-00003548 .text getMsg__11daNpc_Bm1_cFv */
void daNpc_Bm1_c::getMsg() {
u32 daNpc_Bm1_c::getMsg() {
/* Nonmatching */
}
+2061 -176
View File
File diff suppressed because it is too large Load Diff