d_a_npc_knj matching (#2779)

* d_a_npc_knj matching

* remove casts
This commit is contained in:
hev7 2025-11-08 00:51:13 +00:00 committed by GitHub
parent 3981a9d359
commit e331c37001
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
8 changed files with 532 additions and 806 deletions

View File

@ -13,3 +13,4 @@ d/actor/d_a_obj_hb.cpp:
.text start:0x00000078 end:0x000020B8
.rodata start:0x00000000 end:0x00000108
.data start:0x00000000 end:0x000000D4
.bss start:0x00000000 end:0x00000004

View File

@ -13,3 +13,4 @@ d/actor/d_a_obj_lv7bridge.cpp:
.text start:0x00000078 end:0x00001698
.rodata start:0x00000000 end:0x00000094
.data start:0x00000000 end:0x00000180
.bss start:0x00000000 end:0x00000004

View File

@ -14,3 +14,4 @@ d/actor/d_a_obj_master_sword.cpp:
.ctors start:0x00000000 end:0x00000004
.rodata start:0x00000000 end:0x0000003C
.data start:0x00000000 end:0x00000154
.bss start:0x00000000 end:0x00000004

View File

@ -5,7 +5,7 @@ initWait__18daObjMasterSword_cFv = .text:0x00000078; // type:function size:0x58
executeWait__18daObjMasterSword_cFv = .text:0x000000D0; // type:function size:0x100 scope:global
createHeapCallBack__18daObjMasterSword_cFP10fopAc_ac_c = .text:0x000001D0; // type:function size:0x20 scope:global
CreateHeap__18daObjMasterSword_cFv = .text:0x000001F0; // type:function size:0x128 scope:global
daObjMasterSword_Create__FP10fopAc_ac_c = .text:0x00000318; // type:function size:0x20 scope:global
daObjMasterSword_Create__FP10fopAc_ac_c = .text:0x00000318; // type:function size:0x20 scope:local
create__18daObjMasterSword_cFv = .text:0x00000338; // type:function size:0x1B4 scope:global
create_init__18daObjMasterSword_cFv = .text:0x000004EC; // type:function size:0x2A0 scope:global
__dt__12dBgS_ObjAcchFv = .text:0x0000078C; // type:function size:0x70 scope:global
@ -14,12 +14,12 @@ __dt__8cM3dGCylFv = .text:0x0000086C; // type:function size:0x48 scope:global
__dt__8cM3dGAabFv = .text:0x000008B4; // type:function size:0x48 scope:global
__dt__10dCcD_GSttsFv = .text:0x000008FC; // type:function size:0x5C scope:global
__dt__12J3DFrameCtrlFv = .text:0x00000958; // type:function size:0x48 scope:global
daObjMasterSword_Delete__FP18daObjMasterSword_c = .text:0x000009A0; // type:function size:0x28 scope:global
daObjMasterSword_Delete__FP18daObjMasterSword_c = .text:0x000009A0; // type:function size:0x28 scope:local
__dt__18daObjMasterSword_cFv = .text:0x000009C8; // type:function size:0x1A0 scope:global
daObjMasterSword_Execute__FP18daObjMasterSword_c = .text:0x00000B68; // type:function size:0x10C scope:global
daObjMasterSword_Draw__FP18daObjMasterSword_c = .text:0x00000C74; // type:function size:0x20 scope:global
daObjMasterSword_Execute__FP18daObjMasterSword_c = .text:0x00000B68; // type:function size:0x10C scope:local
daObjMasterSword_Draw__FP18daObjMasterSword_c = .text:0x00000C74; // type:function size:0x20 scope:local
draw__18daObjMasterSword_cFv = .text:0x00000C94; // type:function size:0x180 scope:global
daObjMasterSword_IsDelete__FP18daObjMasterSword_c = .text:0x00000E14; // type:function size:0x8 scope:global
daObjMasterSword_IsDelete__FP18daObjMasterSword_c = .text:0x00000E14; // type:function size:0x8 scope:local
__dt__10cCcD_GSttsFv = .text:0x00000E1C; // type:function size:0x48 scope:global
__sinit_d_a_obj_master_sword_cpp = .text:0x00000E64; // type:function size:0x40 scope:local
@36@__dt__12dBgS_ObjAcchFv = .text:0x00000EA4; // type:function size:0x8 scope:local
@ -37,15 +37,16 @@ mAttr__18daObjMasterSword_c = .rodata:0x00000000; // type:object size:0x4 scope:
@4091 = .rodata:0x00000028; // type:object size:0x4 scope:local
@4092 = .rodata:0x0000002C; // type:object size:0x4 scope:local
@stringBase0 = .rodata:0x00000030; // type:object size:0xA scope:local data:string_table
cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:global
...data.0 = .data:0x00000000; // type:label scope:local
cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:local
@1787 = .data:0x0000000C; // type:object size:0x4 scope:local
lbl_568_data_10 = .data:0x00000010; // type:object size:0x10
l_arcName = .data:0x00000020; // type:object size:0x4 scope:global data:4byte
l_arcName = .data:0x00000020; // type:object size:0x4 scope:local data:4byte
@3655 = .data:0x00000024; // type:object size:0xC scope:local
@3656 = .data:0x00000030; // type:object size:0xC scope:local
ActionTable__18daObjMasterSword_c = .data:0x0000003C; // type:object size:0x18 scope:global data:4byte
ccCylSrc$localstatic3$initCollision__18daObjMasterSword_cFv = .data:0x00000054; // type:object size:0x44 scope:local align:4 data:float
l_daObjMasterSword_Method = .data:0x00000098; // type:object size:0x20 scope:global
l_daObjMasterSword_Method = .data:0x00000098; // type:object size:0x20 scope:local
g_profile_Obj_MasterSword = .data:0x000000B8; // type:object size:0x30 scope:global
__vt__10cCcD_GStts = .data:0x000000E8; // type:object size:0xC scope:global
__vt__10dCcD_GStts = .data:0x000000F4; // type:object size:0xC scope:global
@ -54,4 +55,4 @@ __vt__12dBgS_ObjAcch = .data:0x0000010C; // type:object size:0x24 scope:global
__vt__8cM3dGCyl = .data:0x00000130; // type:object size:0xC scope:global
__vt__8cM3dGAab = .data:0x0000013C; // type:object size:0xC scope:global
__vt__12J3DFrameCtrl = .data:0x00000148; // type:object size:0xC scope:global
lbl_568_bss_0 = .bss:0x00000000; // type:object size:0x1 data:byte
lbl_568_bss_0 = .bss:0x00000000; // type:object size:0x1 scope:local data:byte

View File

@ -21217,7 +21217,7 @@ memPool_$localstatic3$getMemPool___30JASPoolAllocObject<9JAIStream>Fv = .bss:0x8
@632 = .bss:0x80436178; // type:object size:0xC scope:local align:4
memPool_$localstatic3$getMemPool___39JASPoolAllocObject<17Z2SoundHandlePool>Fv = .bss:0x80436184; // type:object size:0x10 scope:weak align:4
@1539 = .bss:0x80436198; // type:object size:0xC scope:local align:4
memPool_$localstatic3$getMemPool___30JASPoolAllocObject<9Z2Audible>Fv = .bss:0x804361A4; // type:object size:0x10 scope:local align:4
memPool_$localstatic3$getMemPool___30JASPoolAllocObject<9Z2Audible>Fv = .bss:0x804361A4; // type:object size:0x10 scope:weak align:4
...bss.0 = .bss:0x804361B8; // type:label scope:local align:4
sCorrectPhrase = .bss:0x804361B8; // type:object size:0x24 scope:global align:4 data:4byte
sWindStoneSound = .bss:0x804361DC; // type:object size:0x24 scope:global align:4 data:4byte

View File

@ -1804,7 +1804,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_e_ws"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_ww"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_yc"),
ActorRel(MatchingFor("GZ2E01"), "d_a_e_yd"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01"), "d_a_e_yd"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_yd_leaf"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_yg"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_e_yh"),
@ -1884,7 +1884,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_npc_kasi_mich", extra_cflags=[DANPCF_C_HACK]),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_kdk"),
ActorRel(NonMatching, "d_a_npc_kn"),
ActorRel(NonMatching, "d_a_npc_knj"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_knj"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_kolinb"),
ActorRel(Equivalent, "d_a_npc_ks"), # weak func order
ActorRel(NonMatching, "d_a_npc_kyury"),
@ -2007,7 +2007,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_firepillar2"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_flag"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_flag2"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_flag3"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01"), "d_a_obj_flag3"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_food"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_fw"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_gadget"),
@ -2030,7 +2030,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_hakai_ftr"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_hasu2"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_hata"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_hb"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01"), "d_a_obj_hb"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_hbombkoya"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_heavySw"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_hfuta"),
@ -2100,7 +2100,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv5SwIce"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv5ychndlr"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv5yiblltray"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_lv6ChangeGate"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01"), "d_a_obj_lv6ChangeGate"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv6FurikoTrap"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv6Lblock"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv6SwGate"),
@ -2117,14 +2117,14 @@ config.libs = [
ActorRel(NonMatching, "d_a_obj_lv7PropellerY"),
ActorRel(Equivalent, "d_a_obj_lv7bridge"), # small regalloc
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv8KekkaiTrap"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_lv8Lift"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_lv8OptiLift"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01"), "d_a_obj_lv8Lift"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01"), "d_a_obj_lv8OptiLift"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv8UdFloor"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_lv9SwShutter"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_magLift"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_magLiftRot"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_maki"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_master_sword"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01"), "d_a_obj_master_sword"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_mato"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_mhole"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_mie"),
@ -2236,7 +2236,7 @@ config.libs = [
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_warp_kbrg"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_warp_obrg"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_waterGate"),
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_waterPillar"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01"), "d_a_obj_waterPillar"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_waterfall"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_wchain"),
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_obj_wdStick"),

View File

@ -3,6 +3,33 @@
#include "d/actor/d_a_npc.h"
struct daNpc_Knj_HIOParam {
/* 0x00 */ daNpcT_HIOParam common;
};
class daNpc_Knj_Param_c {
public:
/* 80A6FD10 */ virtual ~daNpc_Knj_Param_c() {}
static const daNpc_Knj_HIOParam m;
};
#if DEBUG
class daNpc_Knj_HIO_c : public mDoHIO_entry_c {
public:
daNpc_Knj_HIO_c();
void listenPropertyEvent(const JORPropertyEvent*);
void genMessage(JORMContext*);
daNpc_Knj_HIOParam m;
};
#define NPC_KNJ_HIO_CLASS daNpc_Knj_HIO_c
#else
#define NPC_KNJ_HIO_CLASS daNpc_Knj_Param_c
#endif
/**
* @ingroup actors-npcs
* @class daNpc_Knj_c
@ -11,54 +38,60 @@
* @details
*
*/
class daNpc_Knj_c : public fopAc_ac_c {
class daNpc_Knj_c : public daNpcT_c {
public:
typedef int (daNpc_Knj_c::*actionFunc)(void*);
typedef int (daNpc_Knj_c::*cutFunc)(int);
/* 80A4356C */ ~daNpc_Knj_c();
/* 80A43608 */ void create();
/* 80A43848 */ void CreateHeap();
/* 80A439A0 */ void Delete();
/* 80A439D4 */ void Execute();
/* 80A439F4 */ void Draw();
/* 80A43A88 */ void createHeapCallBack(fopAc_ac_c*);
/* 80A43AA8 */ void getType();
/* 80A43B1C */ void getFlowNodeNo();
/* 80A43B38 */ bool isDelete();
/* 80A43608 */ int create();
/* 80A43848 */ int CreateHeap();
/* 80A439A0 */ int Delete();
/* 80A439D4 */ int Execute();
/* 80A439F4 */ int Draw();
/* 80A43A88 */ static int createHeapCallBack(fopAc_ac_c*);
/* 80A43AA8 */ u8 getType();
/* 80A43B1C */ int getFlowNodeNo();
/* 80A43B38 */ BOOL isDelete();
/* 80A43B40 */ void reset();
/* 80A43C64 */ void setParam();
/* 80A43D58 */ void srchActors();
/* 80A43D5C */ void evtTalk();
/* 80A43E5C */ void evtCutProc();
/* 80A43D5C */ BOOL evtTalk();
/* 80A43E5C */ BOOL evtCutProc();
/* 80A43F24 */ void action();
/* 80A43FAC */ void beforeMove();
/* 80A44024 */ void setAttnPos();
/* 80A44080 */ bool drawDbgInfo();
/* 80A44088 */ void afterSetMotionAnm(int, int, f32, int);
/* 80A44080 */ BOOL drawDbgInfo();
/* 80A44088 */ bool afterSetMotionAnm(int, int, f32, int);
/* 80A44264 */ void drawGhost();
/* 80A442D0 */ void selectAction();
/* 80A44318 */ void chkAction(int (daNpc_Knj_c::*)(void*));
/* 80A44344 */ void setAction(int (daNpc_Knj_c::*)(void*));
/* 80A443EC */ void wait(void*);
/* 80A44598 */ void talk(void*);
/* 80A45460 */ daNpc_Knj_c(daNpcT_faceMotionAnmData_c const*, daNpcT_motionAnmData_c const*,
daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int,
daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int,
daNpcT_evtData_c const*, char**);
/* 80A442D0 */ int selectAction();
/* 80A44318 */ BOOL chkAction(actionFunc);
/* 80A44344 */ int setAction(actionFunc);
/* 80A443EC */ int wait(void*);
/* 80A44598 */ int talk(void*);
/* 80A45460 */ daNpc_Knj_c(
daNpcT_faceMotionAnmData_c const* i_faceMotionAnmData,
daNpcT_motionAnmData_c const* i_motionAnmData,
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_faceMotionSequenceData,
int i_faceMotionStepNum,
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData, int i_motionStepNum,
daNpcT_evtData_c const* i_evtData, char** i_arcNames)
: daNpcT_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData,
i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData,
i_arcNames) {}
static char* mCutNameList[1];
static u8 mCutList[12];
static cutFunc mCutList[1];
private:
/* 0x568 */ u8 field_0x568[0xe68 - 0x568];
/* 0xE40 */ NPC_KNJ_HIO_CLASS* mpHIO;
/* 0xE44 */ u8 mType;
/* 0xE48 */ actionFunc mNextAction;
/* 0xE54 */ actionFunc mAction;
/* 0xE60 */ u8 field_0xe60[0xe64 - 0xe60];
/* 0xE64 */ int field_0xe64;
};
STATIC_ASSERT(sizeof(daNpc_Knj_c) == 0xe68);
class daNpc_Knj_Param_c {
public:
/* 80A454A4 */ ~daNpc_Knj_Param_c();
static u8 const m[140];
};
#endif /* D_A_NPC_KNJ_H */

File diff suppressed because it is too large Load Diff