daNpc_Os_c Work (#611)

* daNpc_Os_c Work

Mostly matching

* How Did I Miss This

Somehow this wasn't erroring on my machine

* Hopefully This Works Now

* Surely this is the last one

* Definitely compiles now

* Cleanup
This commit is contained in:
SuperDude88
2024-03-18 22:04:58 -04:00
committed by GitHub
parent 7ce949c59c
commit 3f1d64f3ab
7 changed files with 2341 additions and 302 deletions
+1 -1
View File
@@ -1484,7 +1484,7 @@ config.libs = [
ActorRel(NonMatching, "d_a_npc_mt"),
ActorRel(NonMatching, "d_a_npc_nz"),
ActorRel(NonMatching, "d_a_npc_ob1"),
ActorRel(NonMatching, "d_a_npc_os"),
ActorRel(NonMatching, "d_a_npc_os", extra_cflags=['-pragma "nosyminline on"']),
ActorRel(NonMatching, "d_a_npc_p1"),
ActorRel(NonMatching, "d_a_npc_p2"),
ActorRel(NonMatching, "d_a_npc_people"),
+214 -121
View File
@@ -6,187 +6,280 @@
#include "SSystem/SComponent/c_bg_s_poly_info.h"
#include "SSystem/SComponent/c_phase.h"
#include "d/d_npc.h"
#include "d/actor/d_a_player_npc.h"
#include "d/actor/d_a_pedestal.h"
#include "d/d_particle.h"
#include "m_Do/m_Do_hostIO.h"
class mDoExt_McaMorf;
class daNpc_Os_infiniteEcallBack_c : public dPa_levelEcallBack {
public:
void end();
void makeEmitter(unsigned short, const cXyz*, const csXyz*, const cXyz*);
void makeEmitter(u16, const cXyz*, const csXyz*, const cXyz*);
void execute(JPABaseEmitter*);
void setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char);
};
void setup(JPABaseEmitter*, const cXyz*, const csXyz*, s8);
class daNpc_Os_c : public fopAc_ac_c {
JPABaseEmitter* getEmitter() { return mpBaseEmitter; }
private:
/* 0x04 */ JPABaseEmitter* mpBaseEmitter;
}; // Size: 0x08
class daNpc_Os_c : public daPy_npc_c {
public:
~daNpc_Os_c();
void chkNpcAction(int (daNpc_Os_c::*)(void*)) {}
void chkPlayerAction(int (daNpc_Os_c::*)(void*)) {}
void clearStatus() {}
void getAttentionBasePos() {}
void getBackbone_x() {}
void getBackbone_y() {}
void getBaseAnimeFrame() {}
void getBaseAnimeFrameRate() {}
void getCattleRoomNo() {}
void getEyePos() {}
void getGroundY() {}
void getHead_x() {}
void getHead_y() {}
void getLeftHandMatrix() {}
void getRightHandMatrix() {}
void incAttnSetCount() {}
void isFinish() {}
void isGravity() {}
void isPlayerRoom_Goat() {}
void isSetHomePos() {}
void isWaterHit() {}
void offGravity() {}
void offPlayerRoom(int) {}
void onFinish() {}
void onGravity() {}
void onPlayerRoom(int) {}
void onSetHomePos() {}
void onWaterHit() {}
void setCattleRoomNo(signed char) {}
typedef int(daNpc_Os_c::*ActionFunc_t)(void*);
static bool m_playerRoom[3];
static s8 m_cattleRoomNo;
static dPa_smokeEcallBack m_smoke;
static dKy_tevstr_c m_smoke_tevstr;
daNpc_Os_c() {}
~daNpc_Os_c();
BOOL chkNpcAction(ActionFunc_t action) {
return mNpcAction == action;
}
BOOL chkPlayerAction(ActionFunc_t action) {
return mPlayerAction == action;
}
void clearStatus() { field_0x784 = 0; }
cXyz& getAttentionBasePos() { return field_0x754; }
s16 getBackbone_x() { return mJntCtrl.getBackbone_x(); }
s16 getBackbone_y() { return mJntCtrl.getBackbone_y(); }
f32 getBaseAnimeFrame() { return 0.0f; }
f32 getBaseAnimeFrameRate() { return 1.0f; }
s8 getCattleRoomNo() { return m_cattleRoomNo; }
cXyz& getEyePos() { return eyePos; }
f32 getGroundY() { return mAcch.GetGroundH(); }
s16 getHead_x() { return mJntCtrl.getHead_x(); }
s16 getHead_y() { return mJntCtrl.getHead_y(); }
MtxP getLeftHandMatrix() { return cullMtx; }
MtxP getRightHandMatrix() { return cullMtx; }
void incAttnSetCount() {
if(field_0x7A3 != 0xFF) {
field_0x7A3 += 1;
}
}
BOOL isFinish() { return cLib_checkBit(field_0x784, 0x1UL); }
BOOL isGravity() { return cLib_checkBit(field_0x784, 0x8UL); }
BOOL isPlayerRoom_Goat() {}
BOOL isSetHomePos() { return cLib_checkBit(field_0x784, 0x2UL); }
BOOL isWaterHit() { return cLib_checkBit(field_0x784, 0x4UL); }
void offGravity() { field_0x784 &= ~0x8; }
void offPlayerRoom(int idx) { m_playerRoom[idx] = false; }
void onFinish() { field_0x784 |= 0x1; }
void onGravity() { field_0x784 |= 0x8; }
void onPlayerRoom(int idx) { m_playerRoom[idx] = true; }
void onSetHomePos() { field_0x784 |= 0x2; }
void onWaterHit() { field_0x784 |= 0x4; }
void setCattleRoomNo(s8 roomNo) { m_cattleRoomNo = roomNo; }
static bool isPlayerRoom(int idx) { return m_playerRoom[idx]; }
s32 create();
void createHeap();
void jointCheck(signed char);
void wakeupCheck();
BOOL createHeap();
BOOL jointCheck(s8);
BOOL wakeupCheck();
void setWakeup();
void finishCheck();
BOOL finishCheck();
void setFinish();
void getWakeupOrderEventNum();
void getFinishOrderEventNum();
void getMyStaffId();
void getRestartNumber();
void checkGoalRoom();
s8 getWakeupOrderEventNum();
s8 getFinishOrderEventNum();
int getMyStaffId();
s8 getRestartNumber();
BOOL checkGoalRoom();
void checkPlayerRoom();
void eventOrderCheck();
void makeBeam(int);
void endBeam();
void wallHitCheck();
void walkProc(float, short);
void setAction(int (daNpc_Os_c::**)(void*), int (daNpc_Os_c::*)(void*), void*);
s32 wallHitCheck();
void walkProc(f32, s16);
BOOL setAction(ActionFunc_t*, ActionFunc_t, void*);
void npcAction(void*);
void setNpcAction(int (daNpc_Os_c::*)(void*), void*);
void setNpcAction(ActionFunc_t, void*);
void playerAction(void*);
void setPlayerAction(int (daNpc_Os_c::*)(void*), void*);
void getStickAngY();
void calcStickPos(short, cXyz*);
void setPlayerAction(ActionFunc_t, void*);
s16 getStickAngY();
int calcStickPos(s16, cXyz*);
void returnLinkPlayer();
void returnLinkCheck();
void waitNpcAction(void*);
void finish01NpcAction(void*);
void finish02NpcAction(void*);
void talkNpcAction(void*);
void carryNpcAction(void*);
void throwNpcAction(void*);
void jumpNpcAction(void*);
void routeAngCheck(cXyz&, short*);
void routeWallCheck(cXyz&, cXyz&, short*);
void checkForwardGroundY(short);
void checkWallJump(short);
void routeCheck(float, short*);
void searchNpcAction(void*);
void waitPlayerAction(void*);
void walkPlayerAction(void*);
void eventProc();
BOOL returnLinkCheck();
BOOL waitNpcAction(void*);
BOOL finish01NpcAction(void*);
BOOL finish02NpcAction(void*);
BOOL talkNpcAction(void*);
BOOL carryNpcAction(void*);
BOOL throwNpcAction(void*);
BOOL jumpNpcAction(void*);
void routeAngCheck(cXyz&, s16*);
void routeWallCheck(cXyz&, cXyz&, s16*);
f32 checkForwardGroundY(s16);
f32 checkWallJump(s16);
BOOL routeCheck(f32, s16*);
BOOL searchNpcAction(void*);
BOOL waitPlayerAction(void*);
BOOL walkPlayerAction(void*);
BOOL eventProc();
void initialDefault(int);
void actionDefault(int);
BOOL actionDefault(int);
void initialWaitEvent(int);
void actionWaitEvent(int);
BOOL actionWaitEvent(int);
void initialWakeupEvent(int);
void actionWakeupEvent(int);
BOOL actionWakeupEvent(int);
void initialMoveEvent(int);
void actionMoveEvent(int);
BOOL actionMoveEvent(int);
void initialMoveEndEvent(int);
void initialEndEvent(int);
void initialTurnEvent(int);
void actionTurnEvent(int);
BOOL actionTurnEvent(int);
void initialFinishEvent(int);
void actionFinishEvent(int);
BOOL actionFinishEvent(int);
void initialMsgSetEvent(int);
void actionMsgSetEvent(int);
void actionMsgEndEvent(int);
BOOL actionMsgSetEvent(int);
BOOL actionMsgEndEvent(int);
void initialSwitchOnEvent(int);
void initialNextEvent(int);
void initialSaveEvent(int);
void talk_init();
void talk();
BOOL talk_init();
BOOL talk();
void setAnm(int);
void dNpc_Os_setAnm(mDoExt_McaMorf*, int, float, float, int, const char*);
void initBrkAnm(unsigned char, bool);
BOOL dNpc_Os_setAnm(mDoExt_McaMorf*, int, f32, f32, int, const char*);
BOOL initBrkAnm(u8, bool);
void playBrkAnm();
void setAnm_brkAnm(int);
void chkAttention(cXyz, short);
void chkArea(cXyz*);
BOOL chkAttention(cXyz, s16);
bool chkArea(cXyz*);
void carryCheck();
void eventOrder();
void checkOrder();
void checkCommandTalk();
void next_msgStatus(unsigned long*);
void getMsg();
BOOL checkCommandTalk();
u16 next_msgStatus(u32*);
u32 getMsg();
void setCollision();
void setAttention(bool);
void lookBack(int, int, int);
void setBaseMtx();
void init();
BOOL init();
BOOL draw();
void animationPlay();
void smokeSet(unsigned short);
void smokeSet(u16);
BOOL execute();
public:
/* 0x4EC */ request_of_phase_process_class mPhs;
/* 0x4F4 */ mDoExt_McaMorf* m4F4;
/* 0x4F8 */ daPedestal::daPds_c* mpPedestal;
/* 0x4FC */ u8 m4FC[0x518 - 0x4FC];
/* 0x518 */ dBgS_AcchCir mAcchCir1;
/* 0x558 */ dBgS_AcchCir mAcchCir2;
/* 0x598 */ u8 m598[0x704 - 0x598];
/* 0x704 */ dNpc_JntCtrl_c mJntCtrl;
/* 0x738 */ u8 m738[0x784 - 0x738];
/* 0x784 */ u32 m784;
/* 0x788 */ u8 m788[0x798 - 0x788];
/* 0x798 */ s16 m798;
/* 0x79A */ u8 m79A[0x79C - 0x79A];
/* 0x79C */ u8 mTuno1JointIdx;
/* 0x79D */ u8 mTuno2JointIdx;
/* 0x79E */ u8 mTuno3JointIdx;
/* 0x79F */ u8 m79F[0x7A2 - 0x79F];
/* 0x7A2 */ u8 m7A2;
/* 0x7A3 */ u8 m7A3;
/* 0x7A4 */ u8 m7A4[0x7A8 - 0x7A4];
/* 0x7A8 */ u8 m7A8;
/* 0x7A9 */ u8 m7A9[0x7FC - 0x7A9];
/* 0x7FC */ cBgS_PolyInfo m7FC;
};
static bool m_playerRoom[];
static s8 m_cattleRoomNo;
static dPa_smokeEcallBack m_smoke;
static dKy_tevstr_c m_smoke_tevstr;
class daNpc_Os_HIO2_c {
private:
/* 0x4EC */ request_of_phase_process_class mPhs;
/* 0x4F4 */ mDoExt_McaMorf* mpMorf;
/* 0x4F8 */ daPedestal::daPds_c* mpPedestal;
/* 0x4FC */ mDoExt_brkAnm mBrkAnm;
/* 0x514 */ u32 mShadowId;
/* 0x518 */ dBgS_AcchCir mAcchCir[2];
/* 0x598 */ dCcD_Stts mStts;
/* 0x5D4 */ dCcD_Cyl mCyl;
/* 0x704 */ dNpc_JntCtrl_c mJntCtrl;
/* 0x738 */ daNpc_Os_infiniteEcallBack_c field_0x738;
/* 0x740 */ daNpc_Os_infiniteEcallBack_c field_0x740;
/* 0x748 */ cXyz field_0x748;
/* 0x754 */ cXyz field_0x754;
/* 0x760 */ f32 mPrevMorfFrame;
/* 0x764 */ f32 field_0x764;
/* 0x768 */ ActionFunc_t mPlayerAction;
/* 0x774 */ ActionFunc_t mNpcAction;
/* 0x780 */ u32 field_0x780;
/* 0x784 */ u32 field_0x784;
/* 0x788 */ f32 field_0x788;
/* 0x78C */ s32 field_0x78C;
/* 0x790 */ u8 field_0x790[0x794 - 0x790];
/* 0x794 */ u32 field_0x794;
/* 0x798 */ s16 field_0x798;
/* 0x79A */ u8 field_0x79A[0x79C - 0x79A];
/* 0x79C */ s8 mTuno1JointIdx;
/* 0x79D */ s8 mTuno2JointIdx;
/* 0x79E */ s8 mTuno3JointIdx;
/* 0x79F */ s8 mReachedAnimEnd;
/* 0x7A0 */ s8 field_0x7A0;
/* 0x7A0 */ s8 field_0x7A1;
/* 0x7A2 */ s8 field_0x7A2;
/* 0x7A3 */ u8 field_0x7A3;
/* 0x7A4 */ u8 field_0x7A4;
/* 0x7A5 */ s8 field_0x7A5;
/* 0x7A6 */ s8 field_0x7A6;
/* 0x7A7 */ u8 field_0x7A7;
/* 0x7A8 */ u8 field_0x7A8;
/* 0x7A9 */ s8 field_0x7A9;
/* 0x7AA */ s8 field_0x7AA;
/* 0x7AB */ u8 field_0x7AB;
/* 0x7AC */ s16 field_0x7AC;
/* 0x7AE */ s16 field_0x7AE;
/* 0x7B0 */ s16 field_0x7B0;
/* 0x7B2 */ s16 field_0x7B2;
/* 0x7B4 */ s16 field_0x7B4;
/* 0x7B6 */ s16 field_0x7B6;
/* 0x7B8 */ f32 field_0x7B8;
/* 0x7BC */ s16 field_0x7BC;
/* 0x7BE */ s16 field_0x7BE;
/* 0x7C0 */ s16 field_0x7C0;
/* 0x7C2 */ s16 field_0x7C2;
/* 0x7C4 */ s16 field_0x7C4[0x10];
/* 0x7E4 */ cXyz field_0x7E4;
/* 0x7F0 */ cXyz field_0x7F0;
/* 0x7FC */ cBgS_PolyInfo field_0x7FC;
}; // Size: 0x80C
class daNpc_Os_HIO2_c : public JORReflexible {
public:
daNpc_Os_HIO2_c();
virtual ~daNpc_Os_HIO2_c() {}
public:
/* Place member variables here */
};
/* 0x00 - vtable */
class daNpc_Os_HIO_c {
/* 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 */ s16 field_0x24;
/* 0x26 */ s16 field_0x26;
/* 0x28 */ s16 field_0x28;
}; // Size: 0x2A
class daNpc_Os_HIO_c : public JORReflexible {
public:
daNpc_Os_HIO_c();
virtual ~daNpc_Os_HIO_c() {}
public:
/* Place member variables here */
};
/* 0x00 - vtable*/
/* 0x04 */ s8 field_0x04;
/* 0x08 */ daNpc_Os_HIO2_c mOs2;
/* 0x34 */ dNpc_HIO_c mNpc;
/* 0x5C */ daNpc_Os_c* field_0x5C;
/* 0x60 */ f32 field_0x60;
/* 0x64 */ f32 field_0x64;
/* 0x68 */ f32 field_0x68;
/* 0x6C */ f32 field_0x6C;
/* 0x70 */ f32 field_0x70;
/* 0x74 */ f32 field_0x74;
/* 0x78 */ f32 field_0x78;
/* 0x7C */ f32 field_0x7C;
/* 0x80 */ f32 field_0x80;
/* 0x84 */ f32 field_0x84;
/* 0x88 */ f32 field_0x88;
/* 0x8C */ f32 field_0x8C;
/* 0x90 */ f32 field_0x90;
/* 0x94 */ f32 field_0x94;
/* 0x98 */ f32 field_0x98;
/* 0x9C */ f32 field_0x9C;
/* 0xA0 */ f32 field_0xA0;
/* 0xA4 */ f32 field_0xA4;
/* 0xA8 */ f32 field_0xA8;
/* 0xAC */ f32 field_0xAC;
/* 0xB0 */ f32 field_0xB0;
}; // Size: 0xB4
#endif /* D_A_NPC_OS_H */
+10 -2
View File
@@ -36,7 +36,9 @@ class camera_class;
class J2DOrthoGraph;
enum daPy__PlayerStatus0 {
daPyStts0_UNK1_e = 0x00000001,
daPyStts0_UNK10_e = 0x00000010,
daPyStts0_UNK100_e = 0x00000100,
daPyStts0_BOW_AIM_e = 0x00001000,
daPyStts0_SWORD_SWING_e = 0x00008000,
daPyStts0_SHIP_RIDE_e = 0x00010000,
@@ -44,6 +46,7 @@ enum daPy__PlayerStatus0 {
daPyStts0_SWIM_e = 0x00100000,
daPyStts0_TELESCOPE_LOOK_e = 0x00200000,
daPyStts0_BOOMERANG_WAIT_e = 0x00400000,
daPyStts0_UNK2000000_e = 0x02000000,
daPyStts0_CRAWL_e = 0x08000000,
daPyStts0_UNK20000000_e = 0x20000000,
daPyStts0_SPIN_ATTACK_e = 0x40000000,
@@ -350,6 +353,7 @@ public:
void setItemTimeCount(s32 time) { mAirMeter = time; }
void setItemTimeMax(s32 time) { field_0x4928 = time; }
u8 checkMesgSendButton() { return mMesgSendButton; }
u8 checkMesgCancelButton() { return mMesgCancelButton; }
void setPlayerStatus(int param_0, int i, u32 flag) { mPlayerStatus[param_0][i] |= flag; }
@@ -604,7 +608,7 @@ public:
/* 0x4945 */ u8 field_0x4945;
/* 0x4946 */ u8 field_0x4946;
/* 0x4947 */ u8 field_0x4947;
/* 0x4948 */ u8 field_0x4948;
/* 0x4948 */ u8 mMesgSendButton;
/* 0x4949 */ u8 mMesgCancelButton;
/* 0x494A */ u8 field_0x494a[6];
/* 0x4950 */ u8 mMelodyNum;
@@ -850,7 +854,7 @@ inline void dComIfGs_setReserveItem(u8 i_itemNo) {
g_dComIfG_gameInfo.save.getPlayer().getBagItem().setReserveItem(i_itemNo);
}
inline BOOL dComIfGs_isGetItemReserve(int i_no) {
inline BOOL dComIfGs_isGetItemReserve(u8 i_no) {
return g_dComIfG_gameInfo.save.getPlayer().getGetBagItem().isReserve(i_no);
}
@@ -2185,6 +2189,10 @@ inline void dComIfGp_setItemBeastNumCount(int i_idx, s16 num) {
g_dComIfG_gameInfo.play.setItemBeastNumCount(i_idx, num);
}
inline u8 dComIfGp_checkMesgSendButton() {
return g_dComIfG_gameInfo.play.checkMesgSendButton();
}
inline u8 dComIfGp_checkMesgCancelButton() {
return g_dComIfG_gameInfo.play.checkMesgCancelButton();
}
+9 -9
View File
@@ -31,7 +31,7 @@ public:
/* 0x22 */ u8 m22;
/* 0x23 */ u8 m23[0x24 - 0x23];
/* 0x24 */ f32 mMaxAttnDistXZ;
};
}; // Size: 0x28
class dNpc_JntCtrl_c {
public:
@@ -73,10 +73,10 @@ public:
s8 getBackboneJntNum() { return mBackboneJntNum; }
void setHeadJntNum(s8 jnt) { mHeadJntNum = jnt; }
void setBackboneJntNum(s8 jnt) { mBackboneJntNum = jnt; }
int getHead_x() { return mAngles[0][0]; }
int getHead_y() { return mAngles[0][1]; }
int getBackbone_x() { return mAngles[1][0]; }
int getBackbone_y() { return mAngles[1][1]; }
s16 getHead_x() { return mAngles[0][0]; }
s16 getHead_y() { return mAngles[0][1]; }
s16 getBackbone_x() { return mAngles[1][0]; }
s16 getBackbone_y() { return mAngles[1][1]; }
void setHead_x(s16 angle) { mAngles[0][0] = angle; }
void setHead_y(s16 angle) { mAngles[0][1] = angle; }
void setBackBone_x(s16 angle) { mAngles[1][0] = angle; }
@@ -103,7 +103,7 @@ public:
void turn_fromHead2Backbone(s16, s16*, s16*);
s16 follow_current(s16*, s16);
void lookAtTarget_2(s16*, cXyz*, cXyz, s16, s16, bool);
};
}; // Size: 0x34
class dNpc_EventCut_c {
private:
@@ -173,7 +173,7 @@ public:
}
static fopAc_ac_c* findActorCallBack(fopAc_ac_c*, void*);
};
}; // Size: 0x6C
class dNpc_PathRun_c {
public:
@@ -203,7 +203,7 @@ public:
/* 0x05 */ u8 mCurrPointIndex;
/* 0x06 */ u8 mbGoingForwards;
/* 0x07 */ u8 field_0x07;
};
}; // Size: 0x08
class dNpc_HeadAnm_c {
public:
@@ -235,7 +235,7 @@ public:
/* 0x1C */ s16 field_0x1C;
/* 0x1E */ s16 field_0x1E;
/* 0x20 */ s16 field_0x20;
};
}; // Size: 0x22
class fopNpc_npc_c : public fopAc_ac_c {
public:
+2
View File
@@ -74,6 +74,8 @@ public:
virtual void setup(JPABaseEmitter*, cXyz const*, csXyz const*, s8);
virtual void end();
void setTevStr(dKy_tevstr_c* tevStr) { mTevstr = tevStr; }
/* 0x14 */ s8 field_0x14;
/* 0x15 */ u8 field_0x15;
/* 0x16 */ GXColor field_0x16;
+2104 -168
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -134,7 +134,7 @@ void dComIfG_play_c::itemInit() {
field_0x4945 = 0;
field_0x4946 = 0;
field_0x4947 = 0;
field_0x4948 = 0;
mMesgSendButton = 0;
mMesgCancelButton = 0;
for (int i = 0; i < 6; i++) {