Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions config/GZ2E01/rels/d_a_npc_grz/symbols.txt
Original file line number Diff line number Diff line change
Expand Up @@ -301,6 +301,7 @@ __global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:globa
@3810 = .bss:0x00000048; // type:object size:0xC scope:local
l_HIO = .bss:0x00000054; // type:object size:0x4 scope:global data:4byte
@4691 = .bss:0x00000058; // type:object size:0xC scope:local
init$2545 = .bss:0x00000064; // type:object size:0x1 scope:local align:1
eyeOffset$4690 = .bss:0x00000068; // type:object size:0xC scope:local
sInstance__40JASGlobalInstance<19JASDefaultBankTable> = .bss:0x00000074; // type:object size:0x4 scope:global
sInstance__35JASGlobalInstance<14JASAudioThread> = .bss:0x00000078; // type:object size:0x4 scope:global
Expand Down
2 changes: 1 addition & 1 deletion configure.py
Original file line number Diff line number Diff line change
Expand Up @@ -1839,7 +1839,7 @@ def MatchingFor(*versions) -> bool:
ActorRel(NonMatching, "d_a_npc_gro"),
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_npc_grr", extra_cflags=[DANPCF_C_HACK]),
ActorRel(NonMatching, "d_a_npc_grs"),
ActorRel(NonMatching, "d_a_npc_grz"),
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_npc_grz", extra_cflags=[DANPCF_C_HACK]), # weak func order
ActorRel(NonMatching, "d_a_npc_guard"),
ActorRel(NonMatching, "d_a_npc_gwolf"),
ActorRel(MatchingFor("GZ2E01", "GZ2J01"), "d_a_npc_hanjo"),
Expand Down
141 changes: 96 additions & 45 deletions include/d/actor/d_a_npc_grz.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,82 +10,133 @@
*
* @details
*
*/
class daNpc_Grz_c : public fopAc_ac_c {
*/

struct daNpc_Grz_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
/* 0x6C */ s16 color_time; // カラータイム - Color Time
/* 0x6E */ s16 color_r; // カラーR - Color R
/* 0x70 */ s16 color_g; // カラーG - Color G
/* 0x72 */ s16 color_b; // カラーB - Color B
/* 0x74 */ f32 walk_speed; // 歩き速度 - Walk Speed
/* 0x78 */ f32 rotation_movement_speed; // 回転移動速度 - Rotational Movement Speed
/* 0x7C */ f32 demo_start_distance; // デモ開始距離 - Demo Start Distance
};

class daNpc_Grz_HIO_c : public mDoHIO_entry_c {
/* 0x8 */ daNpc_Grz_HIOParam param;
};

class daNpc_Grz_c : public daNpcF_c {
public:
typedef int (daNpc_Grz_c::*actionFunc)(void*);
typedef int (daNpc_Grz_c::*cutFunc)(int);

class daNpc_GrZ_prtclMngr_c {
public:
/* 809E8658 */ ~daNpc_GrZ_prtclMngr_c();
/* 809E8694 */ daNpc_GrZ_prtclMngr_c();
/* 0x00 */ u8 field_0x0;
/* 0x04 */ cXyz mPos;
/* 0x10 */ csXyz mAngle;
/* 0x18 */ cXyz mScale;
/* 0x24 */ dPaPo_c mPaPo;
};

/* 809E840C */ daNpc_Grz_c();
/* 809E88C0 */ ~daNpc_Grz_c();
/* 809E8BA0 */ void create();
/* 809E8E68 */ void CreateHeap();
/* 809E92AC */ void Delete();
/* 809E92E0 */ void Execute();
/* 809E9324 */ void Draw();
/* 809E9568 */ void ctrlJoint(J3DJoint*, J3DModel*);
/* 809E979C */ void createHeapCallBack(fopAc_ac_c*);
/* 809E97BC */ void ctrlJointCallBack(J3DJoint*, int);
/* 809E8BA0 */ cPhs__Step create();
/* 809E8E68 */ int CreateHeap();
/* 809E92AC */ int Delete();
/* 809E92E0 */ int Execute();
/* 809E9324 */ int Draw();
/* 809E9568 */ int ctrlJoint(J3DJoint*, J3DModel*);
/* 809E979C */ static int createHeapCallBack(fopAc_ac_c*);
/* 809E97BC */ static int ctrlJointCallBack(J3DJoint*, int);
/* 809E9808 */ void setParam();
/* 809E9954 */ void main();
/* 809E9AD4 */ void ctrlBtk();
/* 809E9954 */ BOOL main();
/* 809E9AD4 */ BOOL ctrlBtk();
/* 809E9BB4 */ void setAttnPos();
/* 809EA1DC */ void setCollisionPunch();
/* 809EA734 */ void setExpressionAnm(int, bool);
/* 809EAA08 */ void setExpressionBtp(int);
/* 809EA734 */ bool setExpressionAnm(int, bool);
/* 809EAA08 */ bool setExpressionBtp(int);
/* 809EAB34 */ void setExpression(int, f32);
/* 809EAB60 */ bool setMotionAnm(int, f32);
/* 809EAB60 */ void setMotionAnm(int, f32);
/* 809EAD4C */ void setMotion(int, f32, int);
/* 809EAD90 */ bool drawDbgInfo();
/* 809EAD90 */ int drawDbgInfo();
/* 809EAD98 */ void drawOtherMdls();
/* 809EAD9C */ void getTypeFromParam();
/* 809EADE8 */ void isDelete();
/* 809EAD9C */ int getTypeFromParam();
/* 809EADE8 */ BOOL isDelete();
/* 809EAE88 */ void reset();
/* 809EB154 */ void resetCol();
/* 809EB234 */ void playExpression();
/* 809EB5C0 */ void playMotion();
/* 809EBA3C */ void chkAction(int (daNpc_Grz_c::*)(void*));
/* 809EBA68 */ void setAction(int (daNpc_Grz_c::*)(void*));
/* 809EBB10 */ void selectAction();
/* 809EBA3C */ BOOL chkAction(actionFunc);
/* 809EBA68 */ BOOL setAction(actionFunc);
/* 809EBB10 */ BOOL selectAction();
/* 809EBC04 */ void doNormalAction(int);
/* 809EBD18 */ void doEvent();
/* 809EC0CC */ void setSkipZev(int, int);
/* 809EBD18 */ BOOL doEvent();
/* 809EC0CC */ bool setSkipZev(int, int);
/* 809EC164 */ void setLookMode(int);
/* 809EC188 */ void lookat();
/* 809EC424 */ void setExpressionTalkAfter();
/* 809EC4C4 */ void wait(void*);
/* 809EC854 */ void waitSmash(void*);
/* 809ECBF0 */ void lieDown(void*);
/* 809ECCA0 */ void waitWeak(void*);
/* 809ECD50 */ void talk(void*);
/* 809ECF88 */ void test(void*);
/* 809ED06C */ void setPrtcl();
/* 809ED18C */ void doWaitCut(int);
/* 809ED228 */ void doRebirthCut(int);
/* 809ED3D4 */ void doTalkStandCut(int);
/* 809ED5EC */ void doGoOutCut(int);
/* 809EDBA4 */ void doStoneSmashCut(int);
/* 809EE5F0 */ void doStoneSmashSkipCut(int);
/* 809EF184 */ void adjustShapeAngle();
/* 809EC4C4 */ int wait(void*);
/* 809EC854 */ int waitSmash(void*);
/* 809ECBF0 */ int lieDown(void*);
/* 809ECCA0 */ int waitWeak(void*);
/* 809ECD50 */ int talk(void*);
/* 809ECF88 */ int test(void*);
/* 809ED06C */ int setPrtcl();
/* 809ED18C */ int doWaitCut(int);
/* 809ED228 */ int doRebirthCut(int);
/* 809ED3D4 */ int doTalkStandCut(int);
/* 809ED5EC */ int doGoOutCut(int);
/* 809EDBA4 */ int doStoneSmashCut(int);
/* 809EE5F0 */ int doStoneSmashSkipCut(int);
/* 809EF184 */ void adjustShapeAngle() {}

static void* mEvtCutNameList[7];
static u8 mEvtCutList[84];
u8 getPathNoFromParam() { return (fopAcM_GetParam(this) & 0xFF00) >> 8; }

static char* mEvtCutNameList[7];
static cutFunc mEvtCutList[7];

private:
/* 0x568 */ u8 field_0x568[0x1b08 - 0x568];
/* 0x0B48 */ Z2Creature mSound;
/* 0x0BD8 */ daNpcF_MatAnm_c* mpMatAnm;
/* 0x0BDC */ daNpcF_Lookat_c mLookat;
/* 0x0C78 */ daNpcF_Path_c mPath;
/* 0x12A8 */ daNpcF_ActorMngr_c mActorMngrs[4];
/* 0x12C8 */ daNpc_Grz_HIO_c* mHIO;
/* 0x12CC */ dCcD_Cyl mCyl1;
/* 0x1408 */ dCcD_Cyl mCyl2;
/* 0x1544 */ dCcD_Sph mSphs[4];
/* 0x1A24 */ actionFunc mNextAction;
/* 0x1A30 */ actionFunc mAction;
/* 0x1A3C */ request_of_phase_process_class mPhases[5];
/* 0x1A64 */ int field_0x1a64;
/* 0x1A68 */ int field_0x1a68;
/* 0x1A6C */ int field_0x1a6c;
/* 0x1A70 */ int field_0x1a70;
/* 0x1A74 */ int mMsgNo;
/* 0x1A78 */ s16 mLookMode;
/* 0x1A7A */ u16 mMode;
/* 0x1A7C */ u8 mType;
/* 0x1A80 */ int mAnm;
/* 0x1A84 */ int field_0x1a84;
/* 0x1A88 */ int field_0x1a88;
/* 0x1A8C */ int mTimer;
/* 0x1A90 */ J3DGXColorS10 mColor;
/* 0x1A98 */ u8 mSwNo;
/* 0x1A9C */ int field_0x1a9c;
/* 0x1AA0 */ u32 field_0x1aa0[3];
/* 0x1AAC */ daNpc_GrZ_prtclMngr_c mPrtclMngr[1];
};

STATIC_ASSERT(sizeof(daNpc_Grz_c) == 0x1b08);

class daNpc_Grz_Param_c {
public:
/* 809EF188 */ ~daNpc_Grz_Param_c();
/* 809EF188 */ virtual ~daNpc_Grz_Param_c() {}

static u8 const m[128];
static daNpc_Grz_HIOParam const m;
};


#endif /* D_A_NPC_GRZ_H */
6 changes: 5 additions & 1 deletion include/d/actor/d_a_obj_grz_rock.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,12 @@ class daObjGrzRock_c : public fopAc_ac_c {
/* 80C151A4 */ void Draw();
/* 80C15248 */ void Delete();

void setSmashFlag(u8 i_smashFlag) { mSmashFlag = i_smashFlag; }

private:
/* 0x568 */ u8 field_0x568[0x804 - 0x568];
/* 0x568 */ u8 field_0x568[0x801 - 0x568];
/* 0x801 */ u8 mSmashFlag;
/* 0x802 */ u8 field_0x802[0x804 - 0x802];
};

STATIC_ASSERT(sizeof(daObjGrzRock_c) == 0x804);
Expand Down
6 changes: 1 addition & 5 deletions include/d/d_event_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,7 @@ class dEvent_exception_c {
#endif

class dEvent_manager_c {
public:
enum Event_Cut_Nums {
/* 0x1 */ NUM_EVT_CUTS_e = 0x1,
};

public:
void* getSubstance(dEvDtData_c* p_data, int type);
void setDbgData(const char*);
dEvent_manager_c();
Expand Down
6 changes: 5 additions & 1 deletion src/d/actor/d_a_npc_grc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,10 @@ enum Type {
/* 0x6 */ TYPE_6,
};

enum Event_Cut_Nums {
/* 0x1 */ NUM_EVT_CUTS_e = 0x1,
};

/* 809CFBB4-809CFBB8 000054 0004+00 1/1 0/0 0/0 .bss l_HIO */
static daNpc_grC_Param_c l_HIO;

Expand Down Expand Up @@ -1136,7 +1140,7 @@ BOOL daNpc_grC_c::doEvent() {
mStaffID = staffId;
int evtCutNo = eventManager.getMyActIdx(staffId, &mEvtCutNameList, 1, 0, 0);

JUT_ASSERT(1774, (0 <= evtCutNo) && (evtCutNo < dEvent_manager_c::NUM_EVT_CUTS_e));
JUT_ASSERT(1774, (0 <= evtCutNo) && (evtCutNo < NUM_EVT_CUTS_e));
JUT_ASSERT(1775, 0 != mEvtCutList[evtCutNo]);

if ((this->*mEvtCutList[evtCutNo])(staffId)) {
Expand Down
6 changes: 5 additions & 1 deletion src/d/actor/d_a_npc_grr.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,10 @@ enum Type {
/* 0x3 */ TYPE_3
};

enum Event_Cut_Nums {
/* 0x1 */ NUM_EVT_CUTS_e = 0x1,
};

/* 809E3F44-809E3F48 000054 0004+00 1/1 0/0 0/0 .bss l_HIO */
static daNpc_grR_Param_c l_HIO;

Expand Down Expand Up @@ -1117,7 +1121,7 @@ BOOL daNpc_grR_c::doEvent() {
mStaffID = staffId;
int evtCutNo = eventManager.getMyActIdx(staffId, &mEvtCutNameList, 1, 0, 0);

JUT_ASSERT(1771, (0 <= evtCutNo) && (evtCutNo < dEvent_manager_c::NUM_EVT_CUTS_e));
JUT_ASSERT(1771, (0 <= evtCutNo) && (evtCutNo < NUM_EVT_CUTS_e));
JUT_ASSERT(1772, 0 != mEvtCutList[evtCutNo]);

if ((this->*mEvtCutList[evtCutNo])(staffId)) {
Expand Down
Loading