NPC work, obj_szbridge matching (#2757)

* Some NPC work

* Fix impal

* Hopefully fix regressions in debug

* HIO work for more NPCs

* fix regressions

* obj_szbridge matching

* Fix literals
This commit is contained in:
hev7
2025-10-26 11:03:16 +00:00
committed by GitHub
parent 245abbe4c3
commit 3984dfac31
23 changed files with 2138 additions and 2969 deletions
+65 -79
View File
@@ -3,6 +3,32 @@
#include "d/actor/d_a_npc.h"
struct daNpcAsh_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
};
class daNpcAsh_Param_c {
public:
/* 8095D5D4 */ virtual ~daNpcAsh_Param_c() {}
static const daNpcAsh_HIOParam m;
};
#if DEBUG
class daNpcAsh_HIO_c : public mDoHIO_entry_c {
public:
daNpcAsh_HIO_c();
void genMessage(JORMContext*);
daNpcAsh_HIOParam m;
};
#define NPC_ASH_HIO_CLASS daNpcAsh_HIO_c
#else
#define NPC_ASH_HIO_CLASS daNpcAsh_Param_c
#endif
/**
* @ingroup actors-npcs
* @class daNpcAsh_c
@@ -66,28 +92,6 @@ public:
/* 0x9 */ MOT_STEP,
};
private:
/* 0xB48 */ Z2Creature mCreatureSound;
/* 0xBD8 */ J3DModel* mModelBow;
/* 0xBDC */ J3DModel* mModelQuiver;
/* 0xBE0 */ daNpcF_MatAnm_c* mpMatAnm;
/* 0xBE4 */ daNpcF_Lookat_c mLookat;
/* 0xC80 */ daNpcF_ActorMngr_c mActorMngr[6];
/* 0xCB0 */ fopAc_ac_c* mTalkPartner;
/* 0xCB4 */ u32 field_0xcb4; // unused
/* 0xCB8 */ dCcD_Cyl mCcCyl[2];
/* 0xF30 */ ActionFn mpActionFn;
/* 0xF3C */ request_of_phase_process_class mPhase[2];
/* 0xF4C */ u32 mItemPartnerId;
/* 0xF50 */ u32 field_0xf50; // unused
/* 0xF54 */ u32 field_0xf54;
/* 0xF58 */ s16 mFlowID;
/* 0xF5A */ s16 mLookMode;
/* 0xF5C */ u16 mMode;
/* 0xF5E */ u8 mMapToolId;
/* 0xF5F */ u8 field_0xf5f;
/* 0xF60 */ u8 mType;
public:
/* 809582EC */ daNpcAsh_c();
/* 80958610 */ ~daNpcAsh_c();
@@ -112,23 +116,25 @@ public:
/* 8095A8EC */ bool talk(void*);
/* 8095AD28 */ bool demo(void*);
/* 8095B164 */ bool leave(void*);
/* 8095B48C */ BOOL EvCut_Introduction(int i_staffID);
/* 8095B58C */ BOOL EvCut_Meeting(int i_staffID);
/* 8095B83C */ BOOL EvCut_WiretapSponsor(int i_staffID);
/* 8095BA80 */ BOOL EvCut_WiretapEntrant(int i_staffID);
/* 8095BCF0 */ void setParam();
/* 8095BF6C */ BOOL main();
/* 8095C200 */ void playMotion();
/* 8095C520 */ BOOL ctrlBtk();
/* 8095C5C4 */ void setAttnPos();
/* 8095C9BC */ void lookat();
/* 8095CC8C */ BOOL drawDbgInfo();
/* 8095B48C */ BOOL EvCut_Introduction(int);
/* 8095B58C */ BOOL EvCut_Meeting(int);
/* 8095B83C */ BOOL EvCut_WiretapSponsor(int);
/* 8095BA80 */ BOOL EvCut_WiretapEntrant(int);
/* 8095BCF0 */ inline void setParam();
/* 8095BF6C */ inline BOOL main();
/* 8095C200 */ inline void playMotion();
/* 8095C520 */ inline BOOL ctrlBtk();
/* 8095C5C4 */ inline void setAttnPos();
/* 8095C9BC */ inline void lookat();
/* 8095CC8C */ inline BOOL drawDbgInfo();
s16 getMessageNo() { return shape_angle.x; }
/* dSv_event_flag_c::F_0268 - City in the Sky - City in the Sky clear */
bool isMap() { return !(daNpcF_chkEvtBit(0x10c)
/* dSv_event_flag_c::F_0264 - Cutscene - Get master sword */
|| !daNpcF_chkEvtBit(0x108)); }
/* dSv_event_flag_c::F_0268 - City in the Sky - City in the Sky clear */
bool isMap() {
return !(daNpcF_chkEvtBit(0x10c)
/* dSv_event_flag_c::F_0264 - Cutscene - Get master sword */
|| !daNpcF_chkEvtBit(0x108));
}
inline void setExpressionTalkAfter() { setExpression(7, -1.0f); }
inline void setLookMode(int i_lookMode, fopAc_ac_c* i_talkPartner);
inline void searchActors();
@@ -137,50 +143,30 @@ public:
inline void playExpression();
static EventFn mEvtSeqList[6];
private:
/* 0xB48 */ Z2Creature mCreatureSound;
/* 0xBD8 */ J3DModel* mModelBow;
/* 0xBDC */ J3DModel* mModelQuiver;
/* 0xBE0 */ daNpcF_MatAnm_c* mpMatAnm;
/* 0xBE4 */ daNpcF_Lookat_c mLookat;
/* 0xC80 */ daNpcF_ActorMngr_c mActorMngr[6];
/* 0xCB0 */ fopAc_ac_c* mTalkPartner;
/* 0xCB4 */ NPC_ASH_HIO_CLASS* mpHIO;
/* 0xCB8 */ dCcD_Cyl mCcCyl[2];
/* 0xF30 */ ActionFn mpActionFn;
/* 0xF3C */ request_of_phase_process_class mPhase[2];
/* 0xF4C */ u32 mItemPartnerId;
/* 0xF50 */ u32 field_0xf50; // unused
/* 0xF54 */ u32 field_0xf54;
/* 0xF58 */ s16 mFlowID;
/* 0xF5A */ s16 mLookMode;
/* 0xF5C */ u16 mMode;
/* 0xF5E */ u8 mMapToolId;
/* 0xF5F */ u8 field_0xf5f;
/* 0xF60 */ u8 mType;
};
STATIC_ASSERT(sizeof(daNpcAsh_c) == 0xF64);
class daNpcAsh_Param_c {
public:
/* 8095D5D4 */ virtual ~daNpcAsh_Param_c() {}
struct param {
/* 0x00 */ f32 mAttnOffsetY;
/* 0x04 */ f32 mGravity;
/* 0x08 */ f32 mScale;
/* 0x0C */ f32 mShadowDepth;
/* 0x10 */ f32 mCcWeight;
/* 0x14 */ f32 mCylH;
/* 0x18 */ f32 mWallH;
/* 0x1C */ f32 mWallR;
/* 0x20 */ f32 mBodyUpAngle;
/* 0x24 */ f32 mBodyDownAngle;
/* 0x28 */ f32 mBodyLeftAngle;
/* 0x2C */ f32 mBodyRightAngle;
/* 0x30 */ f32 mHeadUpAngle;
/* 0x34 */ f32 mHeadDownAngle;
/* 0x38 */ f32 mHeadLeftAngle;
/* 0x3C */ f32 mHeadRightAngle;
/* 0x40 */ f32 mNeckAngleScl;
/* 0x44 */ f32 mMorfFrames;
/* 0x48 */ s16 mSpeakDistIdx;
/* 0x4A */ s16 mSpeakAngleIdx;
/* 0x4C */ s16 mTalkDistIdx;
/* 0x4E */ s16 mTalkAngleIdx;
/* 0x50 */ f32 mAttnFovY;
/* 0x54 */ f32 mAttnRadius;
/* 0x58 */ f32 mAttnUpperY;
/* 0x5C */ f32 mAttnLowerY;
/* 0x60 */ s16 field_0x60;
/* 0x62 */ s16 mDamageTimer;
/* 0x64 */ s16 mTestExpression;
/* 0x66 */ s16 mTestMotion;
/* 0x68 */ s16 mTestLookMode;
/* 0x6A */ bool mTest;
};
static param const m;
};
#endif /* D_A_NPC_ASH_H */
+39 -56
View File
@@ -3,6 +3,33 @@
#include "d/actor/d_a_npc.h"
struct daNpcAshB_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
/* 0x6C */ f32 field_0x6c;
};
class daNpcAshB_Param_c {
public:
/* 80962078 */ virtual ~daNpcAshB_Param_c() {}
static const daNpcAshB_HIOParam m;
};
#if DEBUG
class daNpcAshB_HIO_c : public mDoHIO_entry_c {
public:
daNpcAshB_HIO_c();
void genMessage(JORMContext*);
daNpcAshB_HIOParam m;
};
#define NPC_ASHB_HIO_CLASS daNpcAshB_HIO_c
#else
#define NPC_ASHB_HIO_CLASS daNpcAshB_Param_c
#endif
/**
* @ingroup actors-npcs
* @class daNpcAshB_c
@@ -92,31 +119,31 @@ public:
/* 8095FD9C */ bool talk(void*);
/* 809602E0 */ bool demo(void*);
/* 809604C8 */ BOOL EvCut_Appear(int);
/* 80960A60 */ void setParam();
/* 80960AE8 */ BOOL main();
/* 80960D64 */ void playMotion();
/* 80961188 */ BOOL ctrlBtk();
/* 80961264 */ void setAttnPos();
/* 80961574 */ void lookat();
/* 80961770 */ void drawOtherMdls();
/* 809617F8 */ BOOL drawDbgInfo();
/* 80960A60 */ inline void setParam();
/* 80960AE8 */ inline BOOL main();
/* 80960D64 */ inline void playMotion();
/* 80961188 */ inline BOOL ctrlBtk();
/* 80961264 */ inline void setAttnPos();
/* 80961574 */ inline void lookat();
/* 80961770 */ inline void drawOtherMdls();
/* 809617F8 */ inline BOOL drawDbgInfo();
static EventFn mEvtSeqList[2];
s16 getMessageNo() { return (fopAcM_GetParam(this) >> 8) & 0xFFFF;}
s16 getMessageNo() { return (fopAcM_GetParam(this) >> 8) & 0xFFFF; }
inline void setExpressionTalkAfter() { setExpression(6, -1.0f); }
inline void setLookMode(int i_lookMode);
inline BOOL chkFindPlayer();
inline bool step(s16, int, f32);
inline void playExpression();
static EventFn mEvtSeqList[2];
private:
/* 0xB48 */ Z2Creature mCreatureSound;
/* 0xBD8 */ daNpcF_MatAnm_c* mpMatAnm;
/* 0xBDC */ J3DModel* mpModel;
/* 0xBE0 */ daNpcF_Lookat_c mLookat;
/* 0xC7C */ daNpcF_ActorMngr_c mActorMngr[1];
/* 0xC84 */ fopAc_ac_c* mpTalkPartner;
/* 0xC84 */ NPC_ASHB_HIO_CLASS* mpHIO;
/* 0xC88 */ dCcD_Cyl mCyl;
/* 0xDC4 */ ActionFn mpActionFn;
/* 0xDD0 */ request_of_phase_process_class mPhase[1];
@@ -130,52 +157,8 @@ private:
/* 0xDEC */ u8 field_0xdec;
/* 0xDED */ u8 field_0xded;
/* 0xDEE */ u8 field_0xdee;
};
STATIC_ASSERT(sizeof(daNpcAshB_c) == 0xdf0);
class daNpcAshB_Param_c {
public:
/* 80962078 */ virtual ~daNpcAshB_Param_c() {}
struct param {
/* 0x00 */ f32 mAttnOffsetY;
/* 0x04 */ f32 mGravity;
/* 0x08 */ f32 mScale;
/* 0x0C */ f32 mShadowDepth;
/* 0x10 */ f32 mCcWeight;
/* 0x14 */ f32 mCylH;
/* 0x18 */ f32 mWallH;
/* 0x1C */ f32 mWallR;
/* 0x20 */ f32 mBodyUpAngle;
/* 0x24 */ f32 mBodyDownAngle;
/* 0x28 */ f32 mBodyLeftAngle;
/* 0x2C */ f32 mBodyRightAngle;
/* 0x30 */ f32 mHeadUpAngle;
/* 0x34 */ f32 mHeadDownAngle;
/* 0x38 */ f32 mHeadLeftAngle;
/* 0x3C */ f32 mHeadRightAngle;
/* 0x40 */ f32 mNeckAngleScl;
/* 0x44 */ f32 mMorfFrames;
/* 0x48 */ s16 mSpeakDistIdx;
/* 0x4A */ s16 mSpeakAngleIdx;
/* 0x4C */ s16 mTalkDistIdx;
/* 0x4E */ s16 mTalkAngleIdx;
/* 0x50 */ f32 mAttnFovY;
/* 0x54 */ f32 mAttnRadius;
/* 0x58 */ f32 mAttnUpperY;
/* 0x5C */ f32 mAttnLowerY;
/* 0x60 */ s16 field_0x60;
/* 0x62 */ s16 mDamageTimer;
/* 0x64 */ s16 mTestExpression;
/* 0x66 */ s16 mTestMotion;
/* 0x68 */ s16 mTestLookMode;
/* 0x6A */ bool mTest;
/* 0x6C */ f32 field_0x6c;
};
static param const m;
};
#endif /* D_A_NPC_ASHB_H */
+34 -50
View File
@@ -3,6 +3,33 @@
#include "d/actor/d_a_npc.h"
struct daNpcImpal_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
/* 0x6C */ f32 field_0x6c;
};
class daNpcImpal_Param_c {
public:
/* 80A0C204 */ virtual ~daNpcImpal_Param_c() {}
static const daNpcImpal_HIOParam m;
};
#if DEBUG
class daNpcImpal_HIO_c : public mDoHIO_entry_c {
public:
daNpcImpal_HIO_c();
void genMessage(JORMContext*);
daNpcImpal_HIOParam m;
};
#define NPC_IMPAL_HIO_CLASS daNpcImpal_HIO_c
#else
#define NPC_IMPAL_HIO_CLASS daNpcImpal_Param_c
#endif
/**
* @ingroup actors-npcs
* @class daNpcImpal_c
@@ -77,12 +104,12 @@ public:
/* 80A0A1E0 */ BOOL EvCut_ImpalAppear1(int);
/* 80A0A680 */ BOOL EvCut_ImpalAppear2(int);
/* 80A0A950 */ BOOL EvCut_CopyRod(int);
/* 80A0ADF8 */ void setParam();
/* 80A0AEA8 */ BOOL main();
/* 80A0B380 */ BOOL ctrlBtk();
/* 80A0B45C */ void setAttnPos();
/* 80A0B76C */ void lookat();
/* 80A0B94C */ BOOL drawDbgInfo();
/* 80A0ADF8 */ inline void setParam();
/* 80A0AEA8 */ inline BOOL main();
/* 80A0B380 */ inline BOOL ctrlBtk();
/* 80A0B45C */ inline void setAttnPos();
/* 80A0B76C */ inline void lookat();
/* 80A0B94C */ inline BOOL drawDbgInfo();
s16 getMessageNo() { return shape_angle.x; }
u8 getSwitchNo() { return (fopAcM_GetParam(this) >> 8) & 0xFF; }
@@ -101,7 +128,7 @@ private:
/* 0xBD8 */ daNpcF_MatAnm_c* mpMatAnm;
/* 0xBDC */ daNpcF_Lookat_c mLookat;
/* 0xC78 */ daNpcF_ActorMngr_c mActorMngr[1];
/* 0xC80 */ fopAc_ac_c* mpTalkPartner;
/* 0xC80 */ NPC_IMPAL_HIO_CLASS* mpHIO;
/* 0xC84 */ dCcD_Cyl mCyl;
/* 0xDC0 */ actionFunc mpActionFn;
/* 0xDCC */ request_of_phase_process_class mPhase[1];
@@ -118,47 +145,4 @@ private:
STATIC_ASSERT(sizeof(daNpcImpal_c) == 0xdec);
struct daNpc_Impal_HIOParam {
/* 0x00 */ f32 mAttnOffsetY;
/* 0x04 */ f32 mGravity;
/* 0x08 */ f32 mScale;
/* 0x0C */ f32 mShadowDepth;
/* 0x10 */ f32 mCcWeight;
/* 0x14 */ f32 mCylH;
/* 0x18 */ f32 mWallH;
/* 0x1C */ f32 mWallR;
/* 0x20 */ f32 mBodyUpAngle;
/* 0x24 */ f32 mBodyDownAngle;
/* 0x28 */ f32 mBodyLeftAngle;
/* 0x2C */ f32 mBodyRightAngle;
/* 0x30 */ f32 mHeadUpAngle;
/* 0x34 */ f32 mHeadDownAngle;
/* 0x38 */ f32 mHeadLeftAngle;
/* 0x3C */ f32 mHeadRightAngle;
/* 0x40 */ f32 mNeckAngleScl;
/* 0x44 */ f32 mMorfFrames;
/* 0x48 */ s16 mSpeakDistIdx;
/* 0x4A */ s16 mSpeakAngleIdx;
/* 0x4C */ s16 mTalkDistIdx;
/* 0x4E */ s16 mTalkAngleIdx;
/* 0x50 */ f32 mAttnFovY;
/* 0x54 */ f32 mAttnRadius;
/* 0x58 */ f32 mAttnUpperY;
/* 0x5C */ f32 mAttnLowerY;
/* 0x60 */ s16 field_0x60;
/* 0x62 */ s16 mDamageTimer;
/* 0x64 */ s16 mTestExpression;
/* 0x66 */ s16 mTestMotion;
/* 0x68 */ s16 mTestLookMode;
/* 0x6A */ bool mTest;
/* 0x6C */ f32 field_0x6c;
};
class daNpcImpal_Param_c {
public:
/* 80A0C204 */ virtual ~daNpcImpal_Param_c() {}
static daNpc_Impal_HIOParam const m;
};
#endif /* D_A_NPC_IMPAL_H */
+25 -10
View File
@@ -3,15 +3,6 @@
#include "d/actor/d_a_npc.h"
/**
* @ingroup actors-npcs
* @class daNpc_Lud_c
* @brief Luda
*
* @details
*
*/
struct daNpc_Lud_HIOParam {
/* 0x00 */ daNpcT_HIOParam common;
/* 0x8C */ f32 play_speed;
@@ -24,6 +15,30 @@ public:
static const daNpc_Lud_HIOParam m;
};
#if DEBUG
class daNpc_Lud_HIO_c : public mDoHIO_entry_c {
public:
daNpc_Lud_HIO_c();
void listenPropertyEvent(const JORPropertyEvent*);
void genMessage(JORMContext*);
daNpc_Lud_HIOParam m;
};
#define NPC_LUD_HIO_CLASS daNpc_Lud_HIO_c
#else
#define NPC_LUD_HIO_CLASS daNpc_Lud_Param_c
#endif
/**
* @ingroup actors-npcs
* @class daNpc_Lud_c
* @brief Luda
*
* @details
*
*/
class daNpc_Lud_c : public daNpcT_c {
public:
typedef int (daNpc_Lud_c::*actionFunc)(void*);
@@ -101,7 +116,7 @@ public:
private:
/* 0xE40 */ mDoExt_McaMorfSO* mpBowlMorf;
/* 0xE44 */ u8 field_0xe44[0xe48 - 0xe44];
/* 0xE44 */ NPC_LUD_HIO_CLASS* mpHIO;
/* 0xE48 */ J3DModel* mpModel[2];
/* 0xE50 */ dCcD_Cyl mCyl;
/* 0xF8C */ u8 mType;
+27 -17
View File
@@ -3,18 +3,11 @@
#include "d/actor/d_a_npc.h"
/**
* @ingroup actors-npcs
* @class daNpc_Moi_c
* @brief Rusl
*
* @details
*
*/
struct daNpc_Moi_HIOParam {
/* 0x00 */ daNpcT_HIOParam common;
/* 0x8C */ u8 field_0x70[12];
/* 0x8C */ f32 field_0x8c;
/* 0x90 */ f32 field_0x90;
/* 0x94 */ f32 field_0x94;
/* 0x98 */ s16 field_0x98;
/* 0x9A */ s16 field_0x9a;
/* 0x9C */ s16 field_0x9c;
@@ -22,7 +15,9 @@ struct daNpc_Moi_HIOParam {
/* 0xA0 */ s16 field_0xa0;
/* 0xA2 */ s16 field_0xa2;
/* 0xA4 */ f32 field_0xa4;
/* 0xA8 */ u8 field_0xa8[12];
/* 0xA8 */ f32 field_0xa8;
/* 0xAC */ f32 field_0xac;
/* 0xB0 */ f32 field_0xb0;
/* 0xB4 */ f32 field_0xb4;
/* 0xB8 */ f32 field_0xb8;
};
@@ -34,15 +29,30 @@ public:
static const daNpc_Moi_HIOParam m;
};
class daNpc_Moi_HIO_c
#ifdef DEBUG
: public mDoHIO_entry_c
#endif
{
#if DEBUG
class daNpc_Moi_HIO_c : public mDoHIO_entry_c {
public:
daNpc_Moi_HIO_c();
void listenPropertyEvent(const JORPropertyEvent*);
void genMessage(JORMContext*);
daNpc_Moi_HIOParam m;
};
#define NPC_MOI_HIO_CLASS daNpc_Moi_HIO_c
#else
#define NPC_MOI_HIO_CLASS daNpc_Moi_Param_c
#endif
/**
* @ingroup actors-npcs
* @class daNpc_Moi_c
* @brief Rusl
*
* @details
*
*/
class daNpc_Moi_c : public daNpcT_c {
public:
typedef int (daNpc_Moi_c::*cutFunc)(int);
@@ -152,7 +162,7 @@ public:
static cutFunc mCutList[5];
private:
/* 0x0E40 */ daNpc_Moi_HIO_c* field_0xe40;
/* 0x0E40 */ NPC_MOI_HIO_CLASS* mpHIO;
/* 0x0E44 */ J3DModel* mpModel[6];
/* 0x0E5C */ dCcD_Cyl mCyl[4];
/* 0x134C */ dCcD_Cyl mCyl2;
+33 -21
View File
@@ -3,6 +3,33 @@
#include "d/actor/d_a_npc.h"
struct daNpcShad_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
/* 0x6C */ f32 traveling_speed; // 走行速度 (Traveling Speed)
};
class daNpcShad_Param_c : public JORReflexible {
public:
/* 80AE1F70 */ virtual ~daNpcShad_Param_c() {}
static const daNpcShad_HIOParam m;
};
#if DEBUG
class daNpcShad_HIO_c : public mDoHIO_entry_c {
public:
daNpcShad_HIO_c();
void genMessage(JORMContext*);
daNpcShad_HIOParam m;
};
#define NPC_SHAD_HIO_CLASS daNpcShad_HIO_c
#else
#define NPC_SHAD_HIO_CLASS daNpcShad_Param_c
#endif
/**
* @ingroup actors-npcs
* @class daNpcShad_c
@@ -10,24 +37,7 @@
*
* @details
*
*/
struct daNpcShad_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
/* 0x6C */ f32 traveling_speed; // 走行速度 (Traveling Speed)
};
class daNpcShad_Param_c: public JORReflexible {
public:
/* 80AE1F70 */ virtual ~daNpcShad_Param_c() {}
#ifdef DEBUG
void genMessage(JORMContext*);
#endif
static const daNpcShad_HIOParam m;
};
*/
class daNpcShad_c : public daNpcF_c {
public:
typedef bool (daNpcShad_c::*ActionFn)(void*);
@@ -219,8 +229,10 @@ public:
mActorMngr[4].entry(getEvtAreaTagP(17, 0));
}
} else if (mMode == 1
/* dSv_event_flag_c::F_0302 - Kakariko Village - Saw cutscene of Shad casting spells underneat Kakariko Village */
&& daNpcF_chkEvtBit(0x12E) && mActorMngr[4].getActorP() == NULL) {
/* dSv_event_flag_c::F_0302 - Kakariko Village - Saw cutscene of Shad casting
spells underneat Kakariko Village */
&& daNpcF_chkEvtBit(0x12E) && mActorMngr[4].getActorP() == NULL)
{
mActorMngr[4].entry(getEvtAreaTagP(18, 0));
}
}
@@ -233,7 +245,7 @@ private:
/* 0xBE4 */ daNpcF_Lookat_c mLookat;
/* 0xC80 */ daNpcF_ActorMngr_c mActorMngr[5];
/* 0xCA8 */ daPy_py_c* field_0xca8;
/* 0xCAC */ u8 field_0xcac[0xcb0 - 0xcac];
/* 0xCAC */ NPC_SHAD_HIO_CLASS* mpHIO;
/* 0xCB0 */ dCcD_Cyl field_0xcb0;
/* 0xDEC */ ActionFn mActionFn;
/* 0xDF8 */ request_of_phase_process_class mPhases[2];
+34 -50
View File
@@ -3,6 +3,34 @@
#include "d/actor/d_a_npc.h"
struct daNpcShoe_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
};
class daNpcShoe_Param_c {
public:
/* 80AEA344 */ virtual ~daNpcShoe_Param_c() {}
static const daNpcShoe_HIOParam m;
};
STATIC_ASSERT(sizeof(daNpcShoe_Param_c::m) == 0x6C);
#if DEBUG
class daNpcShoe_HIO_c : public mDoHIO_entry_c {
public:
daNpcShoe_HIO_c();
void genMessage(JORMContext*);
daNpcShoe_HIOParam m;
};
#define NPC_SHOE_HIO_CLASS daNpcShoe_HIO_c
#else
#define NPC_SHOE_HIO_CLASS daNpcShoe_Param_c
#endif
/**
* @ingroup actors-npcs
* @class daNpcShoe_c
@@ -52,10 +80,10 @@ public:
/* 80AE92E8 */ void setParam();
/* 80AE93A0 */ BOOL main();
/* 80AE9624 */ void setAttnPos();
/* 80AE9820 */ void lookat();
/* 80AE9820 */ inline void lookat();
/* 80AE9A00 */ void setMotionAnm(int, f32);
/* 80AE9AD0 */ BOOL drawDbgInfo();
/* 80AEA340 */ void adjustShapeAngle();
/* 80AE9AD0 */ inline BOOL drawDbgInfo();
/* 80AEA340 */ inline void adjustShapeAngle();
s16 getMessageNo() { return fopAcM_GetParam(this) >> 0x10; }
@@ -83,7 +111,7 @@ public:
inline void playMotion();
static EventFn mEvtSeqList[1];
private:
/* 0xB48 */ J3DModel* mpModel1;
/* 0xB4C */ J3DModel* mpModel2;
@@ -91,7 +119,7 @@ private:
/* 0xBF4 */ u8 field_0xbf4[0xbf8 - 0xbf4];
/* 0xBF8 */ daNpcF_Lookat_c mLookat;
/* 0xC94 */ daNpcF_ActorMngr_c mActorMngr[1];
/* 0xC9C */ u8 field_0xc9c[0xca0 - 0xc9c];
/* 0xC9C */ NPC_SHOE_HIO_CLASS* mpHIO;
/* 0xCA0 */ dCcD_Cyl mCcCyl;
/* 0xDDC */ actionFunc mpActionFn;
/* 0xDE8 */ request_of_phase_process_class mPhases[3];
@@ -105,53 +133,9 @@ private:
/* 0xE16 */ u16 field_0xe16;
/* 0xE18 */ u16 mMode;
/* 0xE1A */ u8 field_0xe1a;
/* 0xE1B */ u8 field_0xe1b; // Probably isDaytime or isNighttime
/* 0xE1B */ u8 field_0xe1b; // Probably isDaytime or isNighttime
};
STATIC_ASSERT(sizeof(daNpcShoe_c) == 0xe1c);
class daNpcShoe_Param_c {
public:
/* 8095D5D4 */ virtual ~daNpcShoe_Param_c() {}
struct param {
/* 0x00 */ f32 mAttnOffsetY;
/* 0x04 */ f32 mGravity;
/* 0x08 */ f32 mScale;
/* 0x0C */ f32 mShadowDepth;
/* 0x10 */ f32 mCcWeight;
/* 0x14 */ f32 mCylH;
/* 0x18 */ f32 mWallH;
/* 0x1C */ f32 mWallR;
/* 0x20 */ f32 mBodyUpAngle;
/* 0x24 */ f32 mBodyDownAngle;
/* 0x28 */ f32 mBodyLeftAngle;
/* 0x2C */ f32 mBodyRightAngle;
/* 0x30 */ f32 mHeadUpAngle;
/* 0x34 */ f32 mHeadDownAngle;
/* 0x38 */ f32 mHeadLeftAngle;
/* 0x3C */ f32 mHeadRightAngle;
/* 0x40 */ f32 mNeckAngleScl;
/* 0x44 */ f32 mMorfFrames;
/* 0x48 */ s16 mSpeakDistIdx;
/* 0x4A */ s16 mSpeakAngleIdx;
/* 0x4C */ s16 mTalkDistIdx;
/* 0x4E */ s16 mTalkAngleIdx;
/* 0x50 */ f32 mAttnFovY;
/* 0x54 */ f32 mAttnRadius;
/* 0x58 */ f32 mAttnUpperY;
/* 0x5C */ f32 mAttnLowerY;
/* 0x60 */ s16 field_0x60;
/* 0x62 */ s16 mDamageTimer;
/* 0x64 */ s16 mTestExpression;
/* 0x66 */ s16 mTestMotion;
/* 0x68 */ s16 mTestLookMode;
/* 0x6A */ bool mTest;
};
static param const m;
};
STATIC_ASSERT(sizeof(daNpcShoe_Param_c::param) == 0x6C);
#endif /* D_A_NPC_SHOE_H */
+43 -59
View File
@@ -3,6 +3,35 @@
#include "d/actor/d_a_npc.h"
struct daNpcThe_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
};
class daNpcThe_Param_c {
public:
/* 80AFBDA0 */ virtual ~daNpcThe_Param_c() {}
static const daNpcThe_HIOParam m;
};
STATIC_ASSERT(sizeof(daNpcThe_Param_c::m) == 0x6C);
#if DEBUG
class daNpcThe_HIO_c : public mDoHIO_entry_c {
public:
daNpcThe_HIO_c();
void listenPropertyEvent(const JORPropertyEvent*);
void genMessage(JORMContext*);
daNpcThe_HIOParam m;
};
#define NPC_THE_HIO_CLASS daNpcThe_HIO_c
#else
#define NPC_THE_HIO_CLASS daNpcThe_Param_c
#endif
/**
* @ingroup actors-npcs
* @class daNpcThe_c
@@ -103,16 +132,16 @@ public:
/* 80AF9358 */ cPhs__Step create();
/* 80AF9748 */ void reset();
/* inline */ inline int Draw();
/* 80AF99F4 */ void setParam();
/* 80AF9CF0 */ BOOL main();
/* 80AF9F94 */ void playMotion();
/* 80AFA338 */ void playExpression();
/* 80AF99F4 */ inline void setParam();
/* 80AF9CF0 */ inline BOOL main();
/* 80AF9F94 */ inline void playMotion();
/* 80AFA338 */ inline void playExpression();
/* inline */ inline void setExpressionTalkAfter();
/* 80AFA6CC */ BOOL doEvent();
/* 80AFADEC */ BOOL ctrlBtk();
/* 80AFAEC8 */ void setAttnPos();
/* 80AFB1C4 */ void lookat();
/* 80AFB488 */ BOOL drawDbgInfo();
/* 80AFA6CC */ inline BOOL doEvent();
/* 80AFADEC */ inline BOOL ctrlBtk();
/* 80AFAEC8 */ inline void setAttnPos();
/* 80AFB1C4 */ inline void lookat();
/* 80AFB488 */ inline BOOL drawDbgInfo();
/* 80AFBD9C */ void adjustShapeAngle() {}
u8 getTypeFromParam() {
@@ -143,16 +172,15 @@ public:
}
bool isSneaking() {
if (!strcmp(dComIfGp_getStartStageName(), "R_SP116") && dComIfGp_getStartStageRoomNo() == 5
&& dComIfG_play_c::getLayerNo(0) == 2) {
if (!strcmp(dComIfGp_getStartStageName(), "R_SP116") &&
dComIfGp_getStartStageRoomNo() == 5 && dComIfG_play_c::getLayerNo(0) == 2)
{
return true;
}
return false;
}
bool chkAction(ActionFn action) {
return mpActionFn == action;
}
bool chkAction(ActionFn action) { return mpActionFn == action; }
BOOL setAction(ActionFn action) {
if (mpActionFn != NULL) {
@@ -184,7 +212,7 @@ private:
/* 0xBD8 */ daNpcF_MatAnm_c* mpMatAnm;
/* 0xBDC */ daNpcF_Lookat_c mLookat;
/* 0xC78 */ daNpcF_ActorMngr_c mActorMngr[3];
/* 0xC90 */ u8 field_0xc90[4];
/* 0xC90 */ NPC_THE_HIO_CLASS* mpHIO;
/* 0xC94 */ dCcD_Cyl mColCyl;
/* 0xDD0 */ ActionFn mpNextActionFn;
/* 0xDDC */ ActionFn mpActionFn;
@@ -208,48 +236,4 @@ private:
STATIC_ASSERT(sizeof(daNpcThe_c) == 0xE20);
class daNpcThe_Param_c {
public:
struct param {
/* 0x00 */ f32 mAttnOffsetY;
/* 0x04 */ f32 mGravity;
/* 0x08 */ f32 mScale;
/* 0x0C */ f32 mShadowDepth;
/* 0x10 */ f32 mCcWeight;
/* 0x14 */ f32 mCylH;
/* 0x18 */ f32 mWallH;
/* 0x1C */ f32 mWallR;
/* 0x20 */ f32 mBodyUpAngle;
/* 0x24 */ f32 mBodyDownAngle;
/* 0x28 */ f32 mBodyLeftAngle;
/* 0x2C */ f32 mBodyRightAngle;
/* 0x30 */ f32 mHeadUpAngle;
/* 0x34 */ f32 mHeadDownAngle;
/* 0x38 */ f32 mHeadLeftAngle;
/* 0x3C */ f32 mHeadRightAngle;
/* 0x40 */ f32 mNeckAngleScl;
/* 0x44 */ f32 mMorfFrames;
/* 0x48 */ s16 mSpeakDistIdx;
/* 0x4A */ s16 mSpeakAngleIdx;
/* 0x4C */ s16 mTalkDistIdx;
/* 0x4E */ s16 mTalkAngleIdx;
/* 0x50 */ f32 mAttnFovY;
/* 0x54 */ f32 mAttnRadius;
/* 0x58 */ f32 mAttnUpperY;
/* 0x5C */ f32 mAttnLowerY;
/* 0x60 */ s16 field_0x60;
/* 0x62 */ s16 mDamageTimer;
/* 0x64 */ s16 mTestExpression;
/* 0x66 */ s16 mTestMotion;
/* 0x68 */ s16 mTestLookMode;
/* 0x6A */ bool mTest;
};
/* 80AFBDA0 */ virtual ~daNpcThe_Param_c() {}
static daNpcThe_Param_c::param const m;
};
STATIC_ASSERT(sizeof(daNpcThe_Param_c::param) == 0x6C);
#endif /* D_A_NPC_THE_H */
+25 -49
View File
@@ -3,47 +3,8 @@
#include "d/actor/d_a_npc.h"
/**
* @ingroup actors-npcs
* @class daNpc_Uri_c
* @brief Uli
*
* @details
*
*/
struct daNpc_Uri_HIOParam {
/* 0x00 */ f32 field_0x00;
/* 0x04 */ f32 field_0x04;
/* 0x08 */ f32 field_0x08;
/* 0x0C */ f32 field_0x0c;
/* 0x10 */ f32 field_0x10;
/* 0x14 */ f32 field_0x14;
/* 0x18 */ f32 field_0x18;
/* 0x1C */ f32 field_0x1c;
/* 0x20 */ f32 field_0x20;
/* 0x24 */ f32 field_0x24;
/* 0x28 */ f32 field_0x28;
/* 0x2C */ f32 field_0x2c;
/* 0x30 */ f32 field_0x30;
/* 0x34 */ f32 field_0x34;
/* 0x38 */ f32 field_0x38;
/* 0x3C */ f32 field_0x3c;
/* 0x40 */ f32 field_0x40;
/* 0x44 */ f32 field_0x44;
/* 0x48 */ s16 field_0x48;
/* 0x4A */ s16 field_0x4a;
/* 0x4C */ s16 field_0x4c;
/* 0x4E */ s16 field_0x4e;
/* 0x50 */ f32 field_0x50;
/* 0x54 */ f32 field_0x54;
/* 0x58 */ f32 field_0x58;
/* 0x5C */ f32 field_0x5c;
/* 0x60 */ s16 field_0x60;
/* 0x62 */ s16 field_0x62;
/* 0x64 */ u8 field_0x64[8];
/* 0x6C */ f32 field_0x6c;
/* 0x70 */ u8 field_0x70[28];
struct daNpc_Uri_HIOParam {
/* 0x00 */ daNpcT_HIOParam common;
/* 0x8C */ s16 field_0x8c;
/* 0x8E */ s16 field_0x8e;
/* 0x90 */ s16 field_0x90;
@@ -59,20 +20,35 @@
class daNpc_Uri_Param_c {
public:
/* 80B2CD94 */ virtual ~daNpc_Uri_Param_c() {};
/* 80B2CD94 */ virtual ~daNpc_Uri_Param_c() {}
static daNpc_Uri_HIOParam const m;
static const daNpc_Uri_HIOParam m;
};
class daNpc_Uri_HIO_c
#ifdef DEBUG
: public mDoHIO_entry_c
#endif
{
#if DEBUG
class daNpc_Uri_HIO_c : public mDoHIO_entry_c {
public:
daNpc_Uri_HIO_c();
void listenPropertyEvent(const JORPropertyEvent*);
void genMessage(JORMContext*);
daNpc_Uri_HIOParam m;
};
#define NPC_URI_HIO_CLASS daNpc_Uri_HIO_c
#else
#define NPC_URI_HIO_CLASS daNpc_Uri_Param_c
#endif
/**
* @ingroup actors-npcs
* @class daNpc_Uri_c
* @brief Uli
*
* @details
*
*/
class daNpc_Uri_c : public daNpcT_c {
public:
typedef int (daNpc_Uri_c::*cutFunc)(int);
@@ -164,7 +140,7 @@ public:
static cutFunc mCutList[7];
private:
/* 0x0E40 */ daNpc_Uri_HIO_c* field_0xe40;
/* 0x0E40 */ NPC_URI_HIO_CLASS* mpHIO;
/* 0x0E44 */ J3DModel* mpModel[1];
/* 0x0E48 */ dCcD_Cyl mCyl;
/* 0x0F84 */ u8 mType;
+17 -10
View File
@@ -1,6 +1,7 @@
#ifndef D_A_OBJ_SZBRIDGE_H
#define D_A_OBJ_SZBRIDGE_H
#include "d/d_bg_s_movebg_actor.h"
#include "f_op/f_op_actor_mng.h"
/**
@@ -11,24 +12,30 @@
* @details
*
*/
class daObjSZbridge_c : public fopAc_ac_c {
class daObjSZbridge_c : public dBgS_MoveBgActor, request_of_phase_process_class {
public:
/* 80D04360 */ void rideActor(fopAc_ac_c*);
/* 80D04424 */ void create1st();
/* 80D04424 */ int create1st();
/* 80D044B8 */ void setMtx();
/* 80D04528 */ void CreateHeap();
/* 80D04528 */ int CreateHeap();
/* 80D04598 */ void chkBg();
/* 80D048C4 */ void Create();
/* 80D04974 */ void Execute(Mtx**);
/* 80D049E4 */ void Draw();
/* 80D04A88 */ void Delete();
/* 80D04B90 */ ~daObjSZbridge_c();
/* 80D048C4 */ int Create();
/* 80D04974 */ int Execute(Mtx**);
/* 80D049E4 */ int Draw();
/* 80D04A88 */ int Delete();
/* 80D04B90 */ virtual ~daObjSZbridge_c() {}
private:
/* 0x568 */ u8 field_0x568[0x624 - 0x568];
/* 0x5A8 */ Mtx mBgMtx;
/* 0x5D8 */ Mtx field_0x5d8;
/* 0x608 */ J3DModel* mpModel;
/* 0x60C */ f32 mWaterY;
/* 0x610 */ f32 mGroundY;
/* 0x614 */ u8 field_0x614;
/* 0x618 */ u32 field_0x618[2];
/* 0x620 */ int field_0x620;
};
STATIC_ASSERT(sizeof(daObjSZbridge_c) == 0x624);
#endif /* D_A_OBJ_SZBRIDGE_H */