d_a_npc_chin matching (#2822)

This commit is contained in:
Max Roncace
2025-11-18 21:10:04 -08:00
committed by GitHub
parent 1b2fe5e2e3
commit 7f863c069b
19 changed files with 2200 additions and 2226 deletions
+180 -65
View File
@@ -2,6 +2,34 @@
#define D_A_NPC_CHIN_H
#include "d/actor/d_a_npc.h"
#include "d/actor/d_a_obj_glowSphere.h"
struct daNpcChin_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
};
class daNpcChin_Param_c {
public:
/* 8099188C */ virtual ~daNpcChin_Param_c() {}
static daNpcChin_HIOParam const m;
};
#if DEBUG
class daNpcChin_HIO_c : public mDoHIO_entry_c {
public:
daNpcChin_HIO_c();
void listenPropertyEvent(const JORPropertyEvent*);
void genMessage(JORMContext*);
/* 0x08 */ daNpcChin_HIOParam m;
};
#define NPC_CHIN_HIO_CLASS daNpcChin_HIO_c
#else
#define NPC_CHIN_HIO_CLASS daNpcChin_Param_c
#endif
/**
* @ingroup actors-npcs
@@ -11,94 +39,181 @@
* @details
*
*/
class daNpcChin_c : public fopAc_ac_c {
class daNpcChin_c : public daNpcF_c {
public:
class _SpotLight_c {
public:
/* 8098BF0C */ void loadModel();
/* 0x00 */ J3DModel* mpModel;
/* 0x04 */ mDoExt_btkAnm mBtkAnm;
/* 0x1C */ cXyz mPos;
/* 0x28 */ csXyz mRot;
/* 0x30 */ cXyz mScale;
/* 0x3C */ s8 mSwitch;
/* 8098BF0C */ int loadModel();
inline void switch_off() {
setSwitch(false);
setPlaySpeed(0.0f);
}
inline void switch_on() {
setSwitch(true);
setPlaySpeed(1.0f);
}
inline void setPlaySpeed(f32 i_speed) {
mBtkAnm.setPlaySpeed(i_speed);
}
inline void setSwitch(s8 i_active) {
mSwitch = i_active;
}
/* 8098C000 */ void setMtx();
inline bool is_switch_on() {
return mSwitch == TRUE;
}
/* 8098C060 */ void draw(dKy_tevstr_c*);
inline void setPos(cXyz& i_pos) {
mPos = i_pos;
}
inline void playBtk() {
mBtkAnm.play();
}
_SpotLight_c() {
mpModel = NULL;
mRot.set(0, 0, 0);
mScale.set(1.0f, 1.0f, 1.0f);
}
~_SpotLight_c() {}
};
typedef bool (daNpcChin_c::*actionFunc)(void*);
typedef int (daNpcChin_c::*eventFunc)(int);
/* 8098C104 */ daNpcChin_c();
/* 8098C2D8 */ ~daNpcChin_c();
/* 8098C510 */ void Create();
/* 8098C858 */ void CreateHeap();
/* 8098CCE4 */ void Delete();
/* 8098CD18 */ void Execute();
/* 8098CD74 */ void Draw();
/* 8098CDE8 */ void ctrlJoint(J3DJoint*, J3DModel*);
/* 8098CFB8 */ void createHeapCallBack(fopAc_ac_c*);
/* 8098CFD8 */ void ctrlJointCallBack(J3DJoint*, int);
/* 8098D024 */ void setParam();
/* 8098D0F8 */ void main();
/* 8098D198 */ void ctrlBtk();
/* 8098D26C */ void setAttnPos();
/* 8098D58C */ void setExpressionAnm(int, bool);
/* 8098D848 */ void setExpressionBtp(int);
/* 8098D938 */ bool setMotionAnm(int, f32);
/* 8098DB44 */ void setExpression(int, f32);
/* 8098DB70 */ void setMotion(int, f32, int);
/* 8098DBB4 */ bool drawDbgInfo();
/* 8098C2D8 */ virtual ~daNpcChin_c();
/* 8098C510 */ int Create();
/* 8098C858 */ int CreateHeap();
/* 8098CCE4 */ int Delete();
/* 8098CD18 */ int Execute();
/* 8098CD74 */ int Draw();
/* 8098CDE8 */ int ctrlJoint(J3DJoint*, J3DModel*);
/* 8098CFB8 */ static int createHeapCallBack(fopAc_ac_c*);
/* 8098CFD8 */ static int ctrlJointCallBack(J3DJoint*, int);
/* 8098D024 */ virtual void setParam();
/* 8098D0F8 */ virtual int main();
/* 8098D198 */ virtual int ctrlBtk();
/* 8098D26C */ virtual void setAttnPos();
/* 8098D58C */ virtual bool setExpressionAnm(int, bool);
/* 8098D848 */ virtual bool setExpressionBtp(int);
/* 8098D938 */ virtual void setMotionAnm(int, f32);
/* 8098DB44 */ virtual void setExpression(int, f32);
/* 8098DB70 */ virtual void setMotion(int, f32, int);
/* 8098DBB4 */ virtual int drawDbgInfo();
/* 8098DBBC */ void reset();
/* 8098DCD0 */ void playExpression();
/* 8098E04C */ void playMotion();
/* 8098E5C4 */ void setAction(bool (daNpcChin_c::*)(void*));
/* 8098E5C4 */ int setAction(actionFunc i_func);
/* 8098E66C */ void setLookMode(int);
/* 8098E690 */ void lookat();
/* 8098E870 */ void step(s16, int, int);
/* 8098EA00 */ void chkFindPlayer();
/* 8098E870 */ bool step(s16, int, int);
/* 8098EA00 */ BOOL chkFindPlayer();
/* 8098EACC */ void setExpressionTalkAfter();
/* 8098EBE8 */ void wait(void*);
/* 8098EFE4 */ void talk(void*);
/* 8098EBE8 */ bool wait(void*);
/* 8098EFE4 */ bool talk(void*);
/* 8098F208 */ void _talk_motion();
/* 8098F2BC */ void demo(void*);
/* 8098F414 */ void watch_game(void*);
/* 8098F2BC */ bool demo(void*);
/* 8098F414 */ bool watch_game(void*);
/* 8098F758 */ void Event_DT();
/* 8098FB3C */ void isGameEnd(int&);
/* 8098FD38 */ void _chkGameClear();
void Event_DT_Base() {
dComIfGp_event_reset();
mOrderEvtNo = 0;
mEventIdx = -1;
}
/* 8098FB3C */ BOOL isGameEnd(int&);
/* 8098FD38 */ BOOL _chkGameClear();
/* 8098FD5C */ void SphereReset();
/* 8098FD80 */ void _Evt_GameStart(int);
/* 8098FE28 */ void _Evt_GameStart_CutInit(int const&);
/* 8098FF30 */ void _Evt_GameStart_CutMain(int const&);
/* 8098FFD0 */ void _Evt_GameFailed(int);
/* 80990078 */ void _Evt_GameFailed_CutInit(int const&);
/* 80990174 */ void _Evt_GameFailed_CutMain(int const&);
/* 80990218 */ void _Evt_GameSucceed(int);
/* 809902C0 */ void _Evt_GameSucceed_CutInit(int const&);
/* 8099041C */ void _Evt_GameSucceed_CutMain(int const&);
/* 809905C4 */ void _Evt_SelectGiveUp(int);
/* 8099066C */ void _Evt_SelectGiveUp_CutInit(int const&);
/* 8099071C */ void _Evt_SelectGiveUp_CutMain(int const&);
/* 809907AC */ void _Evt_GameGiveUp(int);
/* 80990854 */ void _Evt_GameGiveUp_CutInit(int const&);
/* 80990950 */ void _Evt_GameGiveUp_CutMain(int const&);
/* 809909F4 */ void _Evt_Appear(int);
/* 80990A9C */ void _Evt_Appear_CutInit(int const&);
/* 80990BD8 */ void _Evt_Appear_CutMain(int const&);
/* 80990C9C */ void _Evt_SpotLight_Off(int);
/* 80990D44 */ void _Evt_SpotLight_Off_CutInit(int const&);
/* 80990DDC */ void _Evt_SpotLight_Off_CutMain(int const&);
/* 80991858 */ void setMtx();
/* 8098FD80 */ int _Evt_GameStart(int);
/* 8098FE28 */ int _Evt_GameStart_CutInit(int const&);
/* 8098FF30 */ int _Evt_GameStart_CutMain(int const&);
/* 8098FFD0 */ int _Evt_GameFailed(int);
/* 80990078 */ int _Evt_GameFailed_CutInit(int const&);
/* 80990174 */ int _Evt_GameFailed_CutMain(int const&);
/* 80990218 */ int _Evt_GameSucceed(int);
/* 809902C0 */ int _Evt_GameSucceed_CutInit(int const&);
/* 8099041C */ int _Evt_GameSucceed_CutMain(int const&);
/* 809905C4 */ int _Evt_SelectGiveUp(int);
/* 8099066C */ int _Evt_SelectGiveUp_CutInit(int const&);
/* 8099071C */ int _Evt_SelectGiveUp_CutMain(int const&);
/* 809907AC */ int _Evt_GameGiveUp(int);
/* 80990854 */ int _Evt_GameGiveUp_CutInit(int const&);
/* 80990950 */ int _Evt_GameGiveUp_CutMain(int const&);
/* 809909F4 */ int _Evt_Appear(int);
/* 80990A9C */ int _Evt_Appear_CutInit(int const&);
/* 80990BD8 */ int _Evt_Appear_CutMain(int const&);
/* 80990C9C */ int _Evt_SpotLight_Off(int);
/* 80990D44 */ int _Evt_SpotLight_Off_CutInit(int const&);
/* 80990DDC */ int _Evt_SpotLight_Off_CutMain(int const&);
/* 80991858 */ void setMtx() {
daNpcF_c::setMtx();
mSpotLight.setMtx();
}
BOOL isMiniGamePlaying() { return mIsMiniGamePlaying; }
inline BOOL isMiniGamePlaying() { return mIsMiniGamePlaying; }
static u8 mEvtSeqList[96];
inline s8 getSWBit() { return (fopAcM_GetParam(this) >> 8) & 0xff; }
private:
/* 0x568 */ u8 field_0x568[0xe08 - 0x568];
inline s16 getMessageNo() { return (s16)shape_angle.x; }
inline void Action() {
if (mAction != NULL) {
(this->*mAction)(0);
}
}
inline void ForcibleTalk_On() { field_0xe06 = 1; }
inline void ForcibleTalk_Off() { field_0xe06 = 0; }
inline u8 getForcibleTalk2() { return field_0xe06; }
static eventFunc mEvtSeqList[8];
/* 0xB48 */ Z2Creature mSound;
/* 0xBD8 */ daNpcF_MatAnm_c* mpMatAnm;
/* 0xBDC */ daNpcF_Lookat_c mLookat1;
/* 0xC78 */ NPC_CHIN_HIO_CLASS* mpHIO;
/* 0xC7C */ dCcD_Cyl mObjInf;
/* 0xDB8 */ actionFunc mAction;
/* 0xDC4 */ request_of_phase_process_class mPhases[6];
/* 0xDF4 */ fpc_ProcID field_0xdf4;
/* 0xDF8 */ int field_0xdf8;
/* 0xDFC */ int field_0xdfc;
/* 0xE00 */ s16 field_0xe00;
/* 0xE02 */ s16 mLookMode;
/* 0xE04 */ s16 mActionMode;
/* 0xE06 */ u8 field_0xe06;
/* 0xE07 */ s8 field_0xe07;
/* 0xE08 */ s8 mIsMiniGamePlaying;
/* 0xE09 */ u8 field_0xe09[0xe78 - 0xe09];
/* 0xE0C */ _GlSph_Mng_c* mpSphMng;
/* 0xE10 */ u32 mGameTime;
/* 0xE14 */ int field_0xe14;
/* 0xE18 */ int field_0xe18;
/* 0xE1C */ f32 field_0xe1c;
/* 0xE20 */ f32 field_0xe20;
/* 0xE24 */ s8 field_0xe24;
/* 0xE25 */ s8 field_0xe25;
/* 0xE26 */ u8 field_0xe26[0xe30 - 0xe26];
/* 0xE30 */ _SpotLight_c mSpotLight;
/* 0xE70 */ daNpcF_ActorMngr_c mActorMngrs[1];
};
STATIC_ASSERT(sizeof(daNpcChin_c) == 0xe78);
class daNpcChin_Param_c {
public:
/* 8099188C */ ~daNpcChin_Param_c();
static u8 const m[108];
};
#endif /* D_A_NPC_CHIN_H */
+3 -3
View File
@@ -49,7 +49,7 @@ public:
/* 80BFA4DC */ int entry(daGlwSph_c*);
/* 80BFA528 */ void remove(daGlwSph_c*);
/* 80BFA55C */ int _setting_main();
/* 80BFA5C4 */ bool _chkAllGet_main();
/* 80BFA5C4 */ BOOL _chkAllGet_main();
/* 80BFA60C */ void SphSeProc();
/* 80BFA6D8 */ static void clrSphSe();
/* 80BFA6E8 */ static u16 getSphSe();
@@ -59,7 +59,7 @@ public:
_setting_main();
}
bool isAllGet() {
BOOL isAllGet() {
return _chkAllGet_main();
}
@@ -100,7 +100,7 @@ public:
ACTION_MOVE_e,
};
/* 80BF9430 */ _GlSph_Mng_c& getSphMng();
/* 80BF9430 */ static _GlSph_Mng_c& getSphMng();
/* 80BF943C */ void setBaseMtx();
/* 80BF94AC */ static int createHeapCallBack(fopAc_ac_c*);
/* 80BF94CC */ int CreateHeap();
+1
View File
@@ -1090,6 +1090,7 @@ public:
void offDkCaught2() { offNoResetFlg0(FLG0_DK_CAUGHT); }
void onWaterFallFrontHit() { onEndResetFlg1(ERFLG1_UNK_800); }
void onCanoeItemCancel() { onEndResetFlg1(ERFLG1_UNK_20000000); }
void onSwordTriggerNon() { onEndResetFlg1(ERFLG1_UNK_40000000); }
u32 checkBoarSingleBattle() const { return checkNoResetFlg2(daPy_FLG2(FLG2_UNK_1000000 | FLG2_BOAR_SINGLE_BATTLE)); }
u32 checkWolfDashAutoJump() const { return checkNoResetFlg2(FLG2_WOLF_DASH_AUTO_JUMP); }
+8
View File
@@ -2159,6 +2159,14 @@ inline s8 dComIfGs_Grass_hide_Check() {
return g_dComIfG_gameInfo.field_0x1ddfc;
}
inline int dComIfGs_getHookGameTime() {
return g_dComIfG_gameInfo.info.getMiniGame().getHookGameTime();
}
inline void dComIfGs_setHookGameTime(u32 i_time) {
g_dComIfG_gameInfo.info.getMiniGame().setHookGameTime(i_time);
}
void dComIfGp_setSelectItem(int index);
s32 dComIfGp_offHeapLockFlag(int flag);
void dComIfGp_createSubExpHeap2D();
+1 -1
View File
@@ -180,7 +180,7 @@ public:
u8 isSelectMessage() { return mSelectMessage; }
void onNonStopJunpFlowFlag() { mNonStopJunpFlowFlag = 1; }
u16 getSelectNum() { return query005(NULL, NULL, 0); }
s16 getChoiceNo() { return mChoiceNo; }
int getChoiceNo() { return (s16)mChoiceNo; }
void setMsg(u32 msg) { mMsg = msg; }
bool checkEndFlow() { return field_0x26 == 1; }
+3 -1
View File
@@ -676,13 +676,15 @@ public:
void setBalloonScore(u32 i_score) { mBalloonScore = i_score; }
void setRaceGameTime(u32 i_time) { mRaceGameTime = i_time; }
void setHookGameTime(u32 i_time) { mHookGameTime = i_time; }
u32 getRaceGameTime() const { return mRaceGameTime; }
u32 getBalloonScore() const { return mBalloonScore; }
u32 getHookGameTime() const { return mHookGameTime; }
private:
/* 0x00 */ u8 unk0[1][4];
/* 0x04 */ u32 mStarTime;
/* 0x04 */ u32 mHookGameTime;
/* 0x08 */ u32 mBalloonScore;
/* 0x0C */ u32 mRaceGameTime;
/* 0x10 */ u32 unk16;
+3 -3
View File
@@ -9,11 +9,11 @@ class JKRArchive;
class JKRExpHeap;
s32 dTimer_createStockTimer();
s32 dTimer_createTimer(s32 i_mode, u32 i_limitMs, u8 i_type, u8 param_3, f32 param_4, f32 param_5,
fpc_ProcID dTimer_createTimer(s32 i_mode, u32 i_limitMs, u8 i_type, u8 param_3, f32 param_4, f32 param_5,
f32 param_6, f32 param_7);
u32 dTimer_createGetIn2D(s32 param_0, cXyz i_pos);
int dTimer_getRestTimeMs();
u8 dTimer_isStart();
bool dTimer_isStart();
void dTimer_show();
void dTimer_hide();
u8 dTimer_isReadyFlag();
@@ -132,7 +132,7 @@ public:
/* 8025D9F0 */ int getTimeMs();
/* 8025DA54 */ int getLimitTimeMs();
/* 8025DA9C */ int getRestTimeMs();
/* 8025DB10 */ u8 isStart();
/* 8025DB10 */ bool isStart();
/* 802613DC */ int createGetIn(cXyz);
s32 createStart(u16 param_0) { return mp_tm_scrn->createStart(param_0); }