d_a_npc_kasi_hana, mich, and kyu work (#2610)

* equivalent

* kasi_mng_c work

* class work and create function work

* kasi_mng_c is matching

* little more work

* almost matching

* enums defined

* kasi_hana almost matching

* more mich work

* mich almost matching

* kyu almost matching

* potentially fixed issue

* Now maybe good?

* Should be fixed now

* PR Cleanup
This commit is contained in:
Carco_21 2025-08-29 15:40:14 -04:00 committed by GitHub
parent 6313a96d49
commit 179189c758
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15 changed files with 5491 additions and 6077 deletions

View File

@ -1829,9 +1829,9 @@ config.libs = [
ActorRel(NonMatching, "d_a_npc_inko"),
ActorRel(NonMatching, "d_a_npc_ins"),
ActorRel(NonMatching, "d_a_npc_jagar"),
ActorRel(NonMatching, "d_a_npc_kasi_hana"),
ActorRel(NonMatching, "d_a_npc_kasi_kyu"),
ActorRel(NonMatching, "d_a_npc_kasi_mich"),
ActorRel(NonMatching, "d_a_npc_kasi_hana", extra_cflags=[DANPCF_C_HACK]),
ActorRel(NonMatching, "d_a_npc_kasi_kyu", extra_cflags=[DANPCF_C_HACK]),
ActorRel(NonMatching, "d_a_npc_kasi_mich", extra_cflags=[DANPCF_C_HACK]),
ActorRel(MatchingFor("GZ2E01"), "d_a_npc_kdk"),
ActorRel(NonMatching, "d_a_npc_kn"),
ActorRel(NonMatching, "d_a_npc_knj"),

View File

@ -1298,6 +1298,7 @@ public:
void offReverse() { mIsReversed = false; }
dPath* getPathInfo() { return mPathInfo; }
void setRange(f32 i_range) { mRange = i_range; }
u16 getNumPnts() { return mPathInfo->m_num; }
}; // Size: 0x630
class daNpcF_Lookat_c {

View File

@ -81,10 +81,14 @@ public:
/* 80990DDC */ void _Evt_SpotLight_Off_CutMain(int const&);
/* 80991858 */ void setMtx();
BOOL isMiniGamePlaying() { return mIsMiniGamePlaying; }
static u8 mEvtSeqList[96];
private:
/* 0x568 */ u8 field_0x568[0xe78 - 0x568];
/* 0x568 */ u8 field_0x568[0xe08 - 0x568];
/* 0xE08 */ s8 mIsMiniGamePlaying;
/* 0xE09 */ u8 field_0xe09[0xe78 - 0xe09];
};
STATIC_ASSERT(sizeof(daNpcChin_c) == 0xe78);

View File

@ -2,6 +2,7 @@
#define D_A_NPC_KASI_HANA_H
#include "d/actor/d_a_npc.h"
#include "d/actor/d_a_tag_escape.h"
/**
* @ingroup actors-npcs
@ -10,109 +11,196 @@
*
* @details
*
*/
class daNpcKasiHana_c : public fopAc_ac_c {
public:
/* 80A1BE44 */ daNpcKasiHana_c();
/* 80A1C0A4 */ ~daNpcKasiHana_c();
/* 80A1C334 */ void Create();
/* 80A1C5B0 */ void CreateHeap();
/* 80A1C734 */ void Delete();
/* 80A1C768 */ void Execute();
/* 80A1C78C */ void Draw();
/* 80A1C7D8 */ void ctrlJoint(J3DJoint*, J3DModel*);
/* 80A1C964 */ void createHeapCallBack(fopAc_ac_c*);
/* 80A1C984 */ void ctrlJointCallBack(J3DJoint*, int);
/* 80A1C9D0 */ void setParam();
/* 80A1CA60 */ void main();
/* 80A1CD28 */ void setAttnPos();
/* 80A1CED0 */ bool setMotionAnm(int, f32);
/* 80A1CFA0 */ void setMotion(int, f32, int);
/* 80A1CFE8 */ bool drawDbgInfo();
/* 80A1CFF0 */ void reset();
/* 80A1D238 */ void playMotion();
/* 80A1D604 */ void playMotionAnmLoop(daNpcF_c::daNpcF_anmPlayData***);
/* 80A1D77C */ void setAction(int (daNpcKasiHana_c::*)(int));
/* 80A1D824 */ void setLookMode(int);
/* 80A1D848 */ void lookat();
/* 80A1DA28 */ void step(s16, int);
/* 80A1DB1C */ void chkFindPlayer();
/* 80A1DC00 */ void wait(int);
/* 80A1E184 */ void chace_st(int);
/* 80A1E228 */ void chace(int);
/* 80A1E3AC */ void getChacePos();
/* 80A1E4AC */ void turn(int);
/* 80A1E578 */ void fear(int);
/* 80A1E78C */ void srchWolfTag();
/* 80A1E7F4 */ void _srch_escape_tag(void*, void*);
/* 80A1E8C4 */ void getWolfPathNearIdx();
/* 80A1E9F8 */ void talk(int);
/* 80A1EB5C */ void demo(int);
/* 80A1EE38 */ void escape(int);
/* 80A1EF90 */ void cheer(int);
/* 80A1F198 */ void _turn_to_link(s16);
/* 80A1F1E4 */ void _turn_pos(cXyz const&, s16);
/* 80A1F240 */ void actor_front_check(fopAc_ac_c*);
/* 80A1F318 */ void _getOffset(cXyz const&, cXyz&);
/* 80A1F384 */ void _Evt_Kasi_Appear(int);
/* 80A1F42C */ void _Evt_Kasi_Appear_CutInit(int const&);
/* 80A1F50C */ void _Evt_Kasi_Appear_CutMain(int const&);
/* 80A1F638 */ void _Evt_Kasi_Talk(int);
/* 80A1F740 */ void _Evt_Kasi_Talk_CutInit(int const&);
/* 80A1F860 */ void _Evt_Kasi_Talk_CutMain(int const&, int);
/* 80A1F9F4 */ void _Evt_Kasi(int);
/* 80A1FA9C */ void _Evt_Kasi_CutInit(int const&);
/* 80A1FBC4 */ void _Evt_Kasi_CutMain(int const&);
/* 80A1FD64 */ void _Evt_Kasi_Cheer(int);
/* 80A1FE6C */ void _Evt_Kasi_Cheer_CutInit(int const&);
/* 80A1FF78 */ void _Evt_Kasi_Cheer_CutMain(int const&, int);
/* 80A2016C */ void _Evt_Kasi_Cheer2(int);
/* 80A20244 */ void _Evt_Kasi_Cheer2_CutInit(int const&);
/* 80A20350 */ void _Evt_Kasi_Cheer2_CutMain(int const&, int);
/* 80A20678 */ void adjustShapeAngle();
*/
static u8 mEvtSeqList[72];
static u8 mTargetTag[4];
static u8 mTargetTagDist[4];
static u8 mWolfAngle[2 + 2 /* padding */];
private:
/* 0x568 */ u8 field_0x568[0x1ac8 - 0x568];
struct daNpcKasiHana_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
/* 0x6C */ f32 track_start_dist; // 追跡開始距離 - Track Start Distance
/* 0x70 */ f32 track_stop_dist; // 追跡停止距離 - Track Stop Distance
/* 0x74 */ f32 track_spd; // 追跡速度 - Track Speed
/* 0x78 */ f32 escape_spd; // 逃げる速度 - Escape Speed
};
STATIC_ASSERT(sizeof(daNpcKasiHana_c) == 0x1ac8);
class daNpcKasiHana_Param_c {
public:
/* 80A2067C */ ~daNpcKasiHana_Param_c();
static u8 const m[124];
class daNpcKasiHana_HIO_c
#ifdef DEBUG
: public mDoHIO_entry_c
#endif
{
/* 0x8 */ daNpcKasiHana_HIOParam param;
};
class daNpcKasi_Mng_c {
public:
daNpcKasi_Mng_c() {
mIsPathInit = false;
mCenterPos.set(0.0f, 0.0f, 0.0f);
mSygnal = 0;
}
/* 80A1AFAC */ void calcEscapeForm();
/* 80A1B0D8 */ void calcCenterPos();
/* 80A1B1C8 */ void getDistFromCenter();
/* 80A1B0D8 */ BOOL calcCenterPos();
/* 80A1B1C8 */ f32 getDistFromCenter();
/* 80A1B35C */ void getOffsetFromLeader(cXyz const&, cXyz&);
/* 80A1B410 */ void initPath(u8, u16);
/* 80A1B48C */ void getPlNearPoint();
/* 80A1B5F0 */ void getSygnalInfo();
/* 80A1B48C */ int getPlNearPoint();
/* 80A1B5F0 */ int getSygnalInfo();
/* 80A1B628 */ void sendInfo();
/* 80A1B6F8 */ void offTalk();
/* 80A1B774 */ void chkTalk();
/* 80A1B810 */ void chkFear();
/* 80A1B884 */ void chkEscape();
/* 80A1B920 */ void createHearts();
/* 80A1B774 */ BOOL chkTalk();
/* 80A1B810 */ BOOL chkFear();
/* 80A1B884 */ BOOL chkEscape();
/* 80A1B920 */ BOOL createHearts();
/* 80A1BAAC */ void allDemoMove();
/* 80A1BB24 */ void allDemoNotMove();
/* 80A1BB9C */ void isMiniGamePlaying();
/* 80A1BB9C */ BOOL isMiniGamePlaying();
/* 80A1BBE0 */ void schMemberActor();
/* 80A1BC88 */ void schDanchoActor();
/* 80A1BCF0 */ void deleteAllMember();
/* 80A1BD6C */ void chgWeightHeavy();
/* 80A1BDD8 */ void chgWeightLight();
/* 80A2065C */ void getCenterPos();
/* 80A2065C */ cXyz getCenterPos();
void setKyuPos(const cXyz& i_pos) { mKyuPos = i_pos; }
void setMichPos(const cXyz& i_pos) { mMichPos = i_pos; }
BOOL chkSygnal(int param_1) { return mSygnal & param_1; }
void SygnalClear() { mSygnal = 0; }
void onSygnal(int param_1) { mSygnal |= param_1; }
void setHanaActor(fopAc_ac_c* a_this) { if (a_this != NULL) mHanaActorMngr.entry(a_this); }
BOOL isPathInit() { return mIsPathInit; }
fopAc_ac_c* getHanaActor() { return mHanaActorMngr.getActorP(); }
fopAc_ac_c* getKyuActor() { return mKyuActorMngr.getActorP(); }
fopAc_ac_c* getMichActor() { return mMichActorMngr.getActorP(); }
/* 0x00 */ daNpcF_ActorMngr_c mHanaActorMngr;
/* 0x08 */ daNpcF_ActorMngr_c mKyuActorMngr;
/* 0x10 */ daNpcF_ActorMngr_c mMichActorMngr;
/* 0x18 */ daNpcF_ActorMngr_c mDanchoActorMngr;
/* 0x20 */ int mSygnal;
/* 0x24 */ cXyz mKyuPos;
/* 0x30 */ cXyz mMichPos;
/* 0x3C */ cXyz mCenterPos;
/* 0x48 */ int mPlPoint;
/* 0x4C */ bool mIsPathInit;
/* 0x50 */ daNpcF_Path_c mPath;
};
class daNpcKasiHana_c : public daNpcF_c {
public:
typedef int (daNpcKasiHana_c::*actionFunc)(int);
typedef BOOL (daNpcKasiHana_c::*cutFunc)(int);
typedef BOOL (daNpcKasiHana_c::*EventFn)(int);
/* 80A1BE44 */ daNpcKasiHana_c();
/* 80A1C0A4 */ ~daNpcKasiHana_c();
/* 80A1C334 */ cPhs__Step Create();
/* 80A1C5B0 */ int CreateHeap();
/* 80A1C734 */ int Delete();
/* 80A1C768 */ int Execute();
/* 80A1C78C */ int Draw();
/* 80A1C7D8 */ int ctrlJoint(J3DJoint*, J3DModel*);
/* 80A1C964 */ static int createHeapCallBack(fopAc_ac_c*);
/* 80A1C984 */ static int ctrlJointCallBack(J3DJoint*, int);
/* 80A1C9D0 */ void setParam();
/* 80A1CA60 */ BOOL main();
/* 80A1CD28 */ void setAttnPos();
/* 80A1CED0 */ void setMotionAnm(int, f32);
/* 80A1CFA0 */ void setMotion(int, f32, int);
/* 80A1CFE8 */ int drawDbgInfo();
/* 80A1CFF0 */ void reset();
/* 80A1D238 */ void playMotion();
/* 80A1D604 */ void playMotionAnmLoop(daNpcF_c::daNpcF_anmPlayData***);
/* 80A1D77C */ BOOL setAction(actionFunc);
/* 80A1D824 */ void setLookMode(int);
/* 80A1D848 */ void lookat();
/* 80A1DA28 */ BOOL step(s16, int);
/* 80A1DB1C */ BOOL chkFindPlayer();
/* 80A1DC00 */ int wait(int);
/* 80A1E184 */ int chace_st(int);
/* 80A1E228 */ int chace(int);
/* 80A1E3AC */ cXyz getChacePos();
/* 80A1E4AC */ int turn(int);
/* 80A1E578 */ int fear(int);
/* 80A1E78C */ daTagEscape_c* srchWolfTag();
/* 80A1E7F4 */ static void* _srch_escape_tag(void*, void*);
/* 80A1E8C4 */ int getWolfPathNearIdx();
/* 80A1E9F8 */ int talk(int);
/* 80A1EB5C */ int demo(int);
/* 80A1EE38 */ int escape(int);
/* 80A1EF90 */ int cheer(int);
/* 80A1F198 */ BOOL _turn_to_link(s16);
/* 80A1F1E4 */ BOOL _turn_pos(cXyz const&, s16);
/* 80A1F240 */ BOOL actor_front_check(fopAc_ac_c*);
/* 80A1F318 */ void _getOffset(cXyz const&, cXyz&);
/* 80A1F384 */ BOOL _Evt_Kasi_Appear(int);
/* 80A1F42C */ BOOL _Evt_Kasi_Appear_CutInit(int const&);
/* 80A1F50C */ BOOL _Evt_Kasi_Appear_CutMain(int const&);
/* 80A1F638 */ BOOL _Evt_Kasi_Talk(int);
/* 80A1F740 */ BOOL _Evt_Kasi_Talk_CutInit(int const&);
/* 80A1F860 */ BOOL _Evt_Kasi_Talk_CutMain(int const&, int);
/* 80A1F9F4 */ BOOL _Evt_Kasi(int);
/* 80A1FA9C */ BOOL _Evt_Kasi_CutInit(int const&);
/* 80A1FBC4 */ BOOL _Evt_Kasi_CutMain(int const&);
/* 80A1FD64 */ BOOL _Evt_Kasi_Cheer(int);
/* 80A1FE6C */ BOOL _Evt_Kasi_Cheer_CutInit(int const&);
/* 80A1FF78 */ BOOL _Evt_Kasi_Cheer_CutMain(int const&, int);
/* 80A2016C */ BOOL _Evt_Kasi_Cheer2(int);
/* 80A20244 */ BOOL _Evt_Kasi_Cheer2_CutInit(int const&);
/* 80A20350 */ BOOL _Evt_Kasi_Cheer2_CutMain(int const&, int);
/* 80A20678 */ void adjustShapeAngle();
int getMessageNo() { return home.angle.x; }
s8 getType() {
s8 rv = fopAcM_GetParam(this) & 0xFF;
if (rv == 0xFF) {
rv = 0;
}
return rv;
}
void off_talked() { mTalked = false; }
BOOL is_talked() { return mTalked; }
BOOL is_escape() { return mEscape; }
void chgWeightHeavy() { mCcStts.SetWeight(0xFE); }
void chgWeightLight() { mCcStts.SetWeight(0xD8); }
u8 getRailNo() { return fopAcM_GetParam(this) >> 8; }
bool chkAction(actionFunc action) { return action == mAction; }
int getSwitchBitNo() { return (fopAcM_GetParam(this) >> 16) & 0xFF; }
BOOL pl_front_check() { return actor_front_check(daPy_getPlayerActorClass()); }
void setEscapePathDir() { if (pl_front_check()) mPath.reverse(); }
static EventFn mEvtSeqList[6];
static daTagEscape_c* mTargetTag;
static f32 mTargetTagDist;
static s16 mWolfAngle;
private:
/* 0x0B48 */ Z2CreatureCitizen mSound;
/* 0x0BEC */ u8 field_0xbec[0xbf0 - 0xbec];
/* 0x0BF0 */ daNpcF_Lookat_c mLookat;
/* 0x0C8C */ daNpcF_ActorMngr_c mActorMngr[1];
/* 0x0C94 */ daNpcF_Path_c mPath;
/* 0x12C4 */ daNpcKasiHana_HIO_c* mHIO;
/* 0x12C8 */ dCcD_Cyl mCyl;
/* 0x1404 */ s8 mType;
/* 0x1405 */ u8 field_0x1405;
/* 0x1406 */ s16 mMode;
/* 0x1408 */ actionFunc mAction;
/* 0x1414 */ request_of_phase_process_class mPhases[3];
/* 0x142C */ fpc_ProcID field_0x142c;
/* 0x1430 */ int field_0x1430;
/* 0x1434 */ int field_0x1434;
/* 0x1438 */ int mMessageNo;
/* 0x143C */ s16 mLookMode;
/* 0x143E */ s16 field_0x143e;
/* 0x1440 */ u8 field_0x1440;
/* 0x1441 */ s8 field_0x1441;
/* 0x1442 */ bool mTalked;
/* 0x1443 */ bool mEscape;
/* 0x1444 */ u8 field_0x1444;
/* 0x1445 */ bool field_0x1445;
/* 0x1448 */ daNpcKasi_Mng_c mKasiMng;
};
STATIC_ASSERT(sizeof(daNpcKasiHana_c) == 0x1ac8);
#endif /* D_A_NPC_KASI_HANA_H */

View File

@ -2,6 +2,7 @@
#define D_A_NPC_KASI_KYU_H
#include "d/actor/d_a_npc.h"
#include "d/actor/d_a_tag_escape.h"
/**
* @ingroup actors-npcs
@ -10,76 +11,143 @@
*
* @details
*
*/
class daNpcKasiKyu_c : public fopAc_ac_c {
*/
struct daNpcKasiKyu_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
/* 0x6C */ s16 escape_time; // 逃げるまでの時間 - Escape Time
/* 0x70 */ f32 escape_spd; // 逃げる速度 - Escape Speed
};
class daNpcKasiKyu_HIO_c
#ifdef DEBUG
: public mDoHIO_entry_c
#endif
{
/* 0x8 */ daNpcKasiKyu_HIOParam param;
};
class daNpcKasiKyu_c : public daNpcF_c {
public:
typedef int (daNpcKasiKyu_c::*actionFunc)(int);
typedef BOOL (daNpcKasiKyu_c::*EventFn)(int);
/* 80A219CC */ daNpcKasiKyu_c();
/* 80A21C14 */ ~daNpcKasiKyu_c();
/* 80A21E24 */ void Create();
/* 80A220A0 */ void CreateHeap();
/* 80A22224 */ void Delete();
/* 80A22258 */ void Execute();
/* 80A22284 */ void Draw();
/* 80A222D0 */ void ctrlJoint(J3DJoint*, J3DModel*);
/* 80A2245C */ void createHeapCallBack(fopAc_ac_c*);
/* 80A2247C */ void ctrlJointCallBack(J3DJoint*, int);
/* 80A21E24 */ cPhs__Step Create();
/* 80A220A0 */ int CreateHeap();
/* 80A22224 */ int Delete();
/* 80A22258 */ int Execute();
/* 80A22284 */ int Draw();
/* 80A222D0 */ int ctrlJoint(J3DJoint*, J3DModel*);
/* 80A2245C */ static int createHeapCallBack(fopAc_ac_c*);
/* 80A2247C */ static int ctrlJointCallBack(J3DJoint*, int);
/* 80A224C8 */ void setParam();
/* 80A22534 */ void main();
/* 80A22534 */ BOOL main();
/* 80A227DC */ void setAttnPos();
/* 80A22984 */ bool setMotionAnm(int, f32);
/* 80A22984 */ void setMotionAnm(int, f32);
/* 80A22A54 */ void setMotion(int, f32, int);
/* 80A22A9C */ bool drawDbgInfo();
/* 80A22A9C */ BOOL drawDbgInfo();
/* 80A22AA4 */ void reset();
/* 80A22CD8 */ void playMotion();
/* 80A2310C */ void playMotionAnmLoop(daNpcF_c::daNpcF_anmPlayData***);
/* 80A23284 */ void setAction(int (daNpcKasiKyu_c::*)(int));
/* 80A23284 */ BOOL setAction(int (daNpcKasiKyu_c::*)(int));
/* 80A2332C */ void setLookMode(int);
/* 80A23350 */ void lookat();
/* 80A23530 */ void step(s16, int);
/* 80A23624 */ void chkFindPlayer();
/* 80A23708 */ void wait(int);
/* 80A23AB4 */ void fear(int);
/* 80A23C90 */ void srchWolfTag();
/* 80A23CF8 */ void _srch_escape_tag(void*, void*);
/* 80A23DC8 */ void getWolfPathNearIdx();
/* 80A23EFC */ void chace_st(int);
/* 80A23FA0 */ void chace(int);
/* 80A24110 */ void getChacePos();
/* 80A241CC */ void turn_link(int);
/* 80A2428C */ void turn_home(int);
/* 80A24370 */ void turn_center(int);
/* 80A24440 */ void talk_dummy(int);
/* 80A244B8 */ void kya(int);
/* 80A24590 */ void kya2(int);
/* 80A24628 */ void kya_stop(int);
/* 80A246FC */ void iyan(int);
/* 80A24774 */ void iyan_look(int);
/* 80A2484C */ void turn_hana(int);
/* 80A2493C */ void escape(int);
/* 80A24A54 */ void wait_dummy(int);
/* 80A24AD8 */ void cheer(int);
/* 80A24CC4 */ void _turn_to_link(s16);
/* 80A24D10 */ void _turn_pos(cXyz const&, s16);
/* 80A24D6C */ void actor_front_check(fopAc_ac_c*);
/* 80A23530 */ BOOL step(s16, int);
/* 80A23624 */ BOOL chkFindPlayer();
/* 80A23708 */ int wait(int);
/* 80A23AB4 */ int fear(int);
/* 80A23C90 */ daTagEscape_c* srchWolfTag();
/* 80A23CF8 */ static void* _srch_escape_tag(void*, void*);
/* 80A23DC8 */ int getWolfPathNearIdx();
/* 80A23EFC */ int chace_st(int);
/* 80A23FA0 */ int chace(int);
/* 80A24110 */ cXyz getChacePos();
/* 80A241CC */ int turn_link(int);
/* 80A2428C */ int turn_home(int);
/* 80A24370 */ int turn_center(int);
/* 80A24440 */ int talk_dummy(int);
/* 80A244B8 */ int kya(int);
/* 80A24590 */ int kya2(int);
/* 80A24628 */ int kya_stop(int);
/* 80A246FC */ int iyan(int);
/* 80A24774 */ int iyan_look(int);
/* 80A2484C */ int turn_hana(int);
/* 80A2493C */ int escape(int);
/* 80A24A54 */ int wait_dummy(int);
/* 80A24AD8 */ int cheer(int);
/* 80A24CC4 */ BOOL _turn_to_link(s16);
/* 80A24D10 */ BOOL _turn_pos(cXyz const&, s16);
/* 80A24D6C */ BOOL actor_front_check(fopAc_ac_c*);
/* 80A24E44 */ void _getOffset(cXyz const&, cXyz&);
/* 80A25848 */ void adjustShapeAngle();
/* 80A25848 */ void adjustShapeAngle() {}
static u8 mEvtSeqList[12];
static u8 mTargetTag[4];
static u8 mTargetTagDist[4];
s8 getType() {
s8 rv = fopAcM_GetParam(this) & 0xFF;
if (rv == 0xFF) {
rv = 0;
}
return rv;
}
int getMessageNo() { return home.angle.x; }
u8 getRailNo() { return fopAcM_GetParam(this) >> 8; }
void setSygnal(int i_sygnal) { mSygnal = i_sygnal; }
void setChacePos(cXyz& i_chacePos) { mChacePos = i_chacePos; }
void setCenterPos(cXyz& i_centerPos) { mCenterPos = i_centerPos; }
void setPlPoint(int i_plPoint) { mPlPoint = i_plPoint; }
void off_talked() { mTalked = false; }
BOOL is_talked() { return mTalked; }
BOOL is_fear() { return mFear; }
BOOL is_escape() { return mEscape; }
void chgWeightHeavy() { mCcStts.SetWeight(0xFE); }
void chgWeightLight() { mCcStts.SetWeight(0xD8); }
BOOL pl_front_check() { return actor_front_check(daPy_getPlayerActorClass()); }
static EventFn mEvtSeqList[1];
static daTagEscape_c* mTargetTag;
static f32 mTargetTagDist;
static s16 mWolfAngle;
private:
/* 0x568 */ u8 field_0x568[0x146c - 0x568];
/* 0x0B48 */ Z2CreatureCitizen mSound;
/* 0x0BEC */ u8 field_0xbec[0xbf0 - 0xbec];
/* 0x0BF0 */ daNpcF_Lookat_c mLookat;
/* 0x0C8C */ daNpcF_ActorMngr_c mActorMngr[1];
/* 0x0C94 */ daNpcF_Path_c mPath;
/* 0x12C4 */ daNpcKasiKyu_HIO_c* mHIO;
/* 0x12C8 */ dCcD_Cyl mCyl;
/* 0x1404 */ s16 mMode;
/* 0x1408 */ actionFunc mAction;
/* 0x1414 */ request_of_phase_process_class mPhases[3];
/* 0x142C */ fpc_ProcID field_0x142c;
/* 0x1430 */ int field_0x1430;
/* 0x1434 */ int field_0x1434;
/* 0x1438 */ int mMessageNo;
/* 0x143C */ s16 mLookMode;
/* 0x143E */ s16 field_0x143e;
/* 0x1440 */ int mSygnal;
/* 0x1444 */ cXyz mChacePos;
/* 0x1450 */ cXyz mCenterPos;
/* 0x145C */ int mPlPoint;
/* 0x1460 */ int field_0x1460;
/* 0x1464 */ s8 mType;
/* 0x1465 */ s8 field_0x1465;
/* 0x1466 */ bool mTalked;
/* 0x1467 */ bool mFear;
/* 0x1468 */ bool mEscape;
/* 0x1469 */ u8 field_0x1469;
};
STATIC_ASSERT(sizeof(daNpcKasiKyu_c) == 0x146c);
class daNpcKasiKyu_Param_c {
public:
/* 80A2584C */ ~daNpcKasiKyu_Param_c();
/* 80A2584C */ virtual ~daNpcKasiKyu_Param_c() {}
static u8 const m[116];
static daNpcKasiKyu_HIOParam const m;
};
#endif /* D_A_NPC_KASI_KYU_H */

View File

@ -2,6 +2,7 @@
#define D_A_NPC_KASI_MICH_H
#include "d/actor/d_a_npc.h"
#include "d/actor/d_a_tag_escape.h"
/**
* @ingroup actors-npcs
@ -10,76 +11,143 @@
*
* @details
*
*/
class daNpcKasiMich_c : public fopAc_ac_c {
*/
struct daNpcKasiMich_HIOParam {
/* 0x00 */ daNpcF_HIOParam common;
/* 0x6C */ s16 escape_time; // 逃げるまでの時間 - Escape Time
/* 0x70 */ f32 escape_spd; // 逃げる速度 - Escape Speed
};
class daNpcKasiMich_HIO_c
#ifdef DEBUG
: public mDoHIO_entry_c
#endif
{
/* 0x8 */ daNpcKasiMich_HIOParam param;
};
class daNpcKasiMich_c : public daNpcF_c {
public:
typedef int (daNpcKasiMich_c::*actionFunc)(int);
typedef BOOL (daNpcKasiMich_c::*EventFn)(int);
/* 80A261CC */ daNpcKasiMich_c();
/* 80A26414 */ ~daNpcKasiMich_c();
/* 80A26624 */ void Create();
/* 80A268A0 */ void CreateHeap();
/* 80A26A24 */ void Delete();
/* 80A26A58 */ void Execute();
/* 80A26A84 */ void Draw();
/* 80A26AD0 */ void ctrlJoint(J3DJoint*, J3DModel*);
/* 80A26C5C */ void createHeapCallBack(fopAc_ac_c*);
/* 80A26C7C */ void ctrlJointCallBack(J3DJoint*, int);
/* 80A26624 */ cPhs__Step Create();
/* 80A268A0 */ int CreateHeap();
/* 80A26A24 */ int Delete();
/* 80A26A58 */ int Execute();
/* 80A26A84 */ int Draw();
/* 80A26AD0 */ int ctrlJoint(J3DJoint*, J3DModel*);
/* 80A26C5C */ static int createHeapCallBack(fopAc_ac_c*);
/* 80A26C7C */ static int ctrlJointCallBack(J3DJoint*, int);
/* 80A26CC8 */ void setParam();
/* 80A26D34 */ void main();
/* 80A26D34 */ BOOL main();
/* 80A26FDC */ void setAttnPos();
/* 80A27184 */ bool setMotionAnm(int, f32);
/* 80A27184 */ void setMotionAnm(int, f32);
/* 80A27254 */ void setMotion(int, f32, int);
/* 80A2729C */ bool drawDbgInfo();
/* 80A2729C */ BOOL drawDbgInfo();
/* 80A272A4 */ void reset();
/* 80A274D8 */ void playMotion();
/* 80A2790C */ void playMotionAnmLoop(daNpcF_c::daNpcF_anmPlayData***);
/* 80A27A84 */ void setAction(int (daNpcKasiMich_c::*)(int));
/* 80A27A84 */ BOOL setAction(actionFunc);
/* 80A27B2C */ void setLookMode(int);
/* 80A27B50 */ void lookat();
/* 80A27D30 */ void step(s16, int);
/* 80A27E24 */ void chkFindPlayer();
/* 80A27F08 */ void wait(int);
/* 80A282B4 */ void fear(int);
/* 80A28490 */ void srchWolfTag();
/* 80A284F8 */ void _srch_escape_tag(void*, void*);
/* 80A285C8 */ void getWolfPathNearIdx();
/* 80A286FC */ void chace_st(int);
/* 80A287A0 */ void chace(int);
/* 80A28910 */ void getChacePos();
/* 80A289CC */ void turn_link(int);
/* 80A28A8C */ void turn_home(int);
/* 80A28B70 */ void turn_center(int);
/* 80A28C40 */ void talk_dummy(int);
/* 80A28CB8 */ void kya(int);
/* 80A28D90 */ void kya2(int);
/* 80A28E28 */ void kya_stop(int);
/* 80A28EFC */ void iyan(int);
/* 80A28F74 */ void escape(int);
/* 80A2908C */ void iyan_look(int);
/* 80A29164 */ void turn_hana(int);
/* 80A291E8 */ void wait_dummy(int);
/* 80A2926C */ void cheer(int);
/* 80A29458 */ void _turn_to_link(s16);
/* 80A294A4 */ void _turn_pos(cXyz const&, s16);
/* 80A29500 */ void actor_front_check(fopAc_ac_c*);
/* 80A27D30 */ BOOL step(s16, int);
/* 80A27E24 */ BOOL chkFindPlayer();
/* 80A27F08 */ int wait(int);
/* 80A282B4 */ int fear(int);
/* 80A28490 */ daTagEscape_c* srchWolfTag();
/* 80A284F8 */ static void* _srch_escape_tag(void*, void*);
/* 80A285C8 */ int getWolfPathNearIdx();
/* 80A286FC */ int chace_st(int);
/* 80A287A0 */ int chace(int);
/* 80A28910 */ cXyz getChacePos();
/* 80A289CC */ int turn_link(int);
/* 80A28A8C */ int turn_home(int);
/* 80A28B70 */ int turn_center(int);
/* 80A28C40 */ int talk_dummy(int);
/* 80A28CB8 */ int kya(int);
/* 80A28D90 */ int kya2(int);
/* 80A28E28 */ int kya_stop(int);
/* 80A28EFC */ int iyan(int);
/* 80A28F74 */ int escape(int);
/* 80A2908C */ int iyan_look(int);
/* 80A29164 */ int turn_hana(int);
/* 80A291E8 */ int wait_dummy(int);
/* 80A2926C */ int cheer(int);
/* 80A29458 */ BOOL _turn_to_link(s16);
/* 80A294A4 */ BOOL _turn_pos(cXyz const&, s16);
/* 80A29500 */ BOOL actor_front_check(fopAc_ac_c*);
/* 80A295D8 */ void _getOffset(cXyz const&, cXyz&);
/* 80A29FDC */ void adjustShapeAngle();
/* 80A29FDC */ void adjustShapeAngle() {}
static u8 mEvtSeqList[12];
static u8 mTargetTag[4];
static u8 mTargetTagDist[4];
s8 getType() {
s8 rv = fopAcM_GetParam(this) & 0xFF;
if (rv == 0xFF) {
rv = 0;
}
return rv;
}
int getMessageNo() { return home.angle.x; }
u8 getRailNo() { return fopAcM_GetParam(this) >> 8; }
void setSygnal(int i_sygnal) { mSygnal = i_sygnal; }
void setChacePos(cXyz& i_chacePos) { mChacePos = i_chacePos; }
void setCenterPos(cXyz& i_centerPos) { mCenterPos = i_centerPos; }
void setPlPoint(int i_plPoint) { mPlPoint = i_plPoint; }
void off_talked() { mTalked = false; }
BOOL is_talked() { return mTalked; }
BOOL is_fear() { return mFear; }
BOOL is_escape() { return mEscape; }
void chgWeightHeavy() { mCcStts.SetWeight(0xFE); }
void chgWeightLight() { mCcStts.SetWeight(0xD8); }
BOOL pl_front_check() { return actor_front_check(daPy_getPlayerActorClass()); }
static EventFn mEvtSeqList[1];
static daTagEscape_c* mTargetTag;
static f32 mTargetTagDist;
static s16 mWolfAngle;
private:
/* 0x568 */ u8 field_0x568[0x146c - 0x568];
/* 0x0B48 */ Z2CreatureCitizen mSound;
/* 0x0BEC */ u8 field_0xbec[0xbf0 - 0xbec];
/* 0x0BF0 */ daNpcF_Lookat_c mLookat;
/* 0x0C8C */ daNpcF_ActorMngr_c mActorMngr[1];
/* 0x0C94 */ daNpcF_Path_c mPath;
/* 0x12C4 */ daNpcKasiMich_HIO_c* mHIO;
/* 0x12C8 */ dCcD_Cyl mCyl;
/* 0x1404 */ s16 mMode;
/* 0x1408 */ actionFunc mAction;
/* 0x1414 */ request_of_phase_process_class mPhases[3];
/* 0x142C */ fpc_ProcID field_0x142c;
/* 0x1430 */ int field_0x1430;
/* 0x1434 */ int field_0x1434;
/* 0x1438 */ int mMessageNo;
/* 0x143C */ s16 mLookMode;
/* 0x143E */ s16 field_0x143e;
/* 0x1440 */ s16 field_0x1440;
/* 0x1444 */ int mSygnal;
/* 0x1448 */ cXyz mChacePos;
/* 0x1454 */ cXyz mCenterPos;
/* 0x1460 */ int mPlPoint;
/* 0x1464 */ s8 mType;
/* 0x1465 */ s8 field_0x1465;
/* 0x1466 */ bool mTalked;
/* 0x1467 */ bool mFear;
/* 0x1468 */ bool mEscape;
/* 0x1469 */ u8 field_0x1469;
};
STATIC_ASSERT(sizeof(daNpcKasiMich_c) == 0x146c);
class daNpcKasiMich_Param_c {
public:
/* 80A29FE0 */ ~daNpcKasiMich_Param_c();
/* 80A29FE0 */ virtual ~daNpcKasiMich_Param_c() {}
static u8 const m[116];
static daNpcKasiMich_HIOParam const m;
};
#endif /* D_A_NPC_KASI_MICH_H */

View File

@ -871,11 +871,13 @@ int dComIfG_resDelete(request_of_phase_process_class* i_phase, char const* i_res
int dComIfG_changeOpeningScene(scene_class* scene, s16 procName);
int dComIfG_resLoad(request_of_phase_process_class* i_phase, char const* i_arcName);
int dComIfG_resLoad(request_of_phase_process_class* i_phase, char const* i_resName, JKRHeap* heap);
int dComIfG_TimerStop(int);
int dComIfG_TimerDeleteRequest(int i_mode);
int dComIfG_TimerStart(int i_mode, s16 i_time);
u32 dComIfG_getTrigA(u32 i_padNo);
bool dComIfGp_isLightDropMapVisible();
int dComIfG_TimerReStart(int);
int dComIfG_TimerEnd(int i_mode, int param_1);
void dComIfGs_onStageBossEnemy(int i_stageNo);

View File

@ -14,6 +14,8 @@ s32 dTimer_createTimer(s32 i_mode, u32 i_limitMs, u8 i_type, u8 param_3, f32 par
u32 dTimer_createGetIn2D(s32 param_0, cXyz i_pos);
int dTimer_getRestTimeMs();
u8 dTimer_isStart();
void dTimer_show();
void dTimer_hide();
u8 dTimer_isReadyFlag();
class dDlst_TimerScrnDraw_c : public dDlst_base_c {

View File

@ -243,7 +243,7 @@ void daB_GG_c::initCc() {
} // mSphAttr
};
mCcStts.Init(254, 0xFF, this);
mCcStts.Init(0xFE, 0xFF, this);
mCcCyl.Set(ccCylSrc);
mCcCyl.SetStts(&mCcStts);
mCcCyl.SetC(current.pos);

View File

@ -4853,7 +4853,7 @@ static int daB_GND_Create(fopAc_ac_c* a_this) {
a_this->health = 24;
i_this->field_0x560 = 24;
i_this->mGndCcStts.Init(254, 0, a_this);
i_this->mGndCcStts.Init(0xFE, 0, a_this);
i_this->mHorseCcStts.Init(150, 0, a_this);
static dCcD_SrcSph h_cc_sph_src = {

View File

@ -1099,7 +1099,7 @@ int daE_GI_c::create() {
health = 240;
field_0x560 = 240;
mCcStts.Init(254, 0, this);
mCcStts.Init(0xFE, 0, this);
mCcSph[0].Set(cc_gi_src);
mCcSph[0].SetStts(&mCcStts);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -169,7 +169,7 @@ int daObjKWheel00_c::Create() {
if(m_type == TYPE_SMALL_PLATINUM)
fopAcM_SetStatus(this, 0);
mStts.Init(254, 0, this);
mStts.Init(0xFE, 0, this);
for(int i = 0; i < 4; i++) {
mLargeGearTeethSphereColliders[i].SetStts(&mStts);