mirror of https://github.com/zeldaret/tp.git
npc_toby OK (#2733)
* npc_toby 68% done * address ykm ykw regressions * All npc_toby cut done + chkPassed1 fakematch * npc_toby OK * npc_toby some hio var rename * npc_gnd cleanup * npc_gnd CreateHeap and reset * Add fakematch comment fo get_u16_Idx
This commit is contained in:
parent
da605fd792
commit
43bf8abf48
|
|
@ -55,11 +55,11 @@ wait__12daNpc_Toby_cFPv = .text:0x00004150; // type:function size:0x6E8 scope:gl
|
|||
walk__12daNpc_Toby_cFPv = .text:0x00004838; // type:function size:0x214 scope:global
|
||||
play__12daNpc_Toby_cFPv = .text:0x00004A4C; // type:function size:0x398 scope:global
|
||||
talk__12daNpc_Toby_cFPv = .text:0x00004DE4; // type:function size:0x2E4 scope:global
|
||||
daNpc_Toby_Create__FPv = .text:0x000050C8; // type:function size:0x20 scope:global
|
||||
daNpc_Toby_Delete__FPv = .text:0x000050E8; // type:function size:0x20 scope:global
|
||||
daNpc_Toby_Execute__FPv = .text:0x00005108; // type:function size:0x20 scope:global
|
||||
daNpc_Toby_Draw__FPv = .text:0x00005128; // type:function size:0x20 scope:global
|
||||
daNpc_Toby_IsDelete__FPv = .text:0x00005148; // type:function size:0x8 scope:global
|
||||
daNpc_Toby_Create__FPv = .text:0x000050C8; // type:function size:0x20 scope:local
|
||||
daNpc_Toby_Delete__FPv = .text:0x000050E8; // type:function size:0x20 scope:local
|
||||
daNpc_Toby_Execute__FPv = .text:0x00005108; // type:function size:0x20 scope:local
|
||||
daNpc_Toby_Draw__FPv = .text:0x00005128; // type:function size:0x20 scope:local
|
||||
daNpc_Toby_IsDelete__FPv = .text:0x00005148; // type:function size:0x8 scope:local
|
||||
calc__11J3DTexNoAnmCFPUs = .text:0x00005150; // type:function size:0x30 scope:global
|
||||
__dt__10cCcD_GSttsFv = .text:0x00005180; // type:function size:0x48 scope:global
|
||||
__dt__8daNpcT_cFv = .text:0x000051C8; // type:function size:0x388 scope:global
|
||||
|
|
@ -164,17 +164,17 @@ jointNo$5107 = .rodata:0x00000138; // type:object size:0x4 scope:local data:4byt
|
|||
@6541 = .rodata:0x0000019C; // type:object size:0xC scope:local
|
||||
@stringBase0 = .rodata:0x000001A8; // type:object size:0xBB scope:local data:string_table
|
||||
...data.0 = .data:0x00000000; // type:label scope:local
|
||||
cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:global
|
||||
cNullVec__6Z2Calc = .data:0x00000000; // type:object size:0xC scope:local
|
||||
@1787 = .data:0x0000000C; // type:object size:0x4 scope:local
|
||||
lbl_374_data_10 = .data:0x00000010; // type:object size:0x10
|
||||
l_bmdData = .data:0x00000020; // type:object size:0x18 scope:global
|
||||
l_bmdData = .data:0x00000020; // type:object size:0x18 scope:local
|
||||
l_evtList = .data:0x00000038; // type:object size:0x38 scope:global
|
||||
l_resNameList = .data:0x00000070; // type:object size:0x24 scope:global
|
||||
l_loadResPtrn0 = .data:0x00000094; // type:object size:0x6 scope:global
|
||||
l_loadResPtrn1 = .data:0x0000009C; // type:object size:0x6 scope:global
|
||||
l_loadResPtrn2 = .data:0x000000A4; // type:object size:0x5 scope:global
|
||||
l_loadResPtrn3 = .data:0x000000AC; // type:object size:0x8 scope:global
|
||||
l_loadResPtrnList = .data:0x000000B4; // type:object size:0x1C scope:global
|
||||
l_resNameList = .data:0x00000070; // type:object size:0x24 scope:local
|
||||
l_loadResPtrn0 = .data:0x00000094; // type:object size:0x6 scope:local
|
||||
l_loadResPtrn1 = .data:0x0000009C; // type:object size:0x6 scope:local
|
||||
l_loadResPtrn2 = .data:0x000000A4; // type:object size:0x5 scope:local
|
||||
l_loadResPtrn3 = .data:0x000000AC; // type:object size:0x8 scope:local
|
||||
l_loadResPtrnList = .data:0x000000B4; // type:object size:0x1C scope:local
|
||||
l_faceMotionAnmData = .data:0x000000D0; // type:object size:0x1C0 scope:global
|
||||
l_motionAnmData = .data:0x00000290; // type:object size:0x2BC scope:global
|
||||
l_faceMotionSequenceData = .data:0x0000054C; // type:object size:0x110 scope:global
|
||||
|
|
@ -200,7 +200,7 @@ mCutList__12daNpc_Toby_c = .data:0x00000850; // type:object size:0x54 scope:glob
|
|||
@5477 = .data:0x00000948; // type:object size:0x38 scope:local
|
||||
@6040 = .data:0x00000980; // type:object size:0x54 scope:local
|
||||
@6039 = .data:0x000009D4; // type:object size:0x54 scope:local
|
||||
daNpc_Toby_MethodTable = .data:0x00000A28; // type:object size:0x20 scope:global
|
||||
daNpc_Toby_MethodTable = .data:0x00000A28; // type:object size:0x20 scope:local
|
||||
g_profile_NPC_TOBY = .data:0x00000A48; // type:object size:0x30 scope:global
|
||||
__vt__11J3DTexNoAnm = .data:0x00000A78; // type:object size:0xC scope:global
|
||||
__vt__12J3DFrameCtrl = .data:0x00000A84; // type:object size:0xC scope:global
|
||||
|
|
|
|||
|
|
@ -1913,7 +1913,7 @@ config.libs = [
|
|||
ActorRel(NonMatching, "d_a_npc_tkc"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_tkj2"),
|
||||
ActorRel(NonMatching, "d_a_npc_tks", extra_cflags=[DANPCF_C_HACK]),
|
||||
ActorRel(NonMatching, "d_a_npc_toby"),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_npc_toby"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_tr"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_uri"),
|
||||
ActorRel(MatchingFor("GZ2E01", "GZ2P01", "GZ2J01"), "d_a_npc_worm"),
|
||||
|
|
|
|||
|
|
@ -440,6 +440,7 @@ public:
|
|||
/* 80145C74 */ int setPathInfo(u8, s8, u8);
|
||||
/* 80145D2C */ int setNextPathInfo(s8, u8);
|
||||
/* 80145DA0 */ void reverse();
|
||||
void setNextIdx() { setNextIdx(getNumPnts()); }
|
||||
/* 80145DD0 */ int setNextIdx(int);
|
||||
int getDstPos(cXyz i_pnt, cXyz* o_pos_p) {
|
||||
return getDstPos(i_pnt, o_pos_p, getNumPnts());
|
||||
|
|
@ -460,7 +461,9 @@ public:
|
|||
|
||||
Vec getPntPos(int i_idx) { return mPathInfo->m_points[i_idx].m_position; }
|
||||
|
||||
u8 getArg0() { return mPathInfo->m_points[mIdx].mArg0; }
|
||||
int getArg0() { return mPathInfo->m_points[mIdx].mArg0; }
|
||||
int getArg1() { return mPathInfo->m_points[mIdx].mArg1; }
|
||||
int getArg2() { return mPathInfo->m_points[mIdx].mArg2; }
|
||||
|
||||
int chkClose() {
|
||||
BOOL rt = dPath_ChkClose(mPathInfo);
|
||||
|
|
@ -473,7 +476,11 @@ public:
|
|||
|
||||
void setIdx(int i_idx) { mIdx = i_idx; }
|
||||
|
||||
const u16 getIdx() { return mIdx; }
|
||||
const int getIdx() { return mIdx; }
|
||||
#if VERSION != VERSION_SHIELD_DEBUG
|
||||
// fakematch inline to fix daNpcT_Path_c::chkPassed1
|
||||
const u16 get_u16_Idx() { return mIdx; }
|
||||
#endif
|
||||
|
||||
dPath* getPathInfo() { return mPathInfo; }
|
||||
|
||||
|
|
@ -791,6 +798,7 @@ void daNpcT_offTmpBit(u32 i_idx);
|
|||
void daNpcT_onTmpBit(u32 i_idx);
|
||||
BOOL daNpcT_chkTmpBit(u32 i_idx);
|
||||
void daNpcT_onEvtBit(u32 i_idx);
|
||||
void daNpcT_offEvtBit(u32 i_idx);
|
||||
BOOL daNpcT_chkTmpBit(u32 i_idx);
|
||||
BOOL daNpcT_getPlayerInfoFromPlayerList(int param_0, int i_roomNo, cXyz* o_spawnPos,
|
||||
csXyz* o_angle);
|
||||
|
|
|
|||
|
|
@ -3,6 +3,33 @@
|
|||
|
||||
#include "d/actor/d_a_npc.h"
|
||||
|
||||
struct daNpc_Gnd_HIOParam {
|
||||
/* 0x00 */ daNpcT_HIOParam common;
|
||||
};
|
||||
|
||||
class daNpc_Gnd_Param_c {
|
||||
public:
|
||||
/* 809BE434 */ virtual ~daNpc_Gnd_Param_c() {}
|
||||
|
||||
static const daNpc_Gnd_HIOParam m;
|
||||
};
|
||||
|
||||
#if DEBUG
|
||||
class daNpc_Gnd_HIO_c : public mDoHIO_entry_c {
|
||||
public:
|
||||
daNpc_Gnd_HIO_c();
|
||||
|
||||
void listenPropertyEvent(const JORPropertyEvent*);
|
||||
void genMessage(JORMContext*);
|
||||
|
||||
daNpc_Gnd_HIOParam m;
|
||||
};
|
||||
|
||||
#define NPC_GND_HIO_CLASS daNpc_Gnd_HIO_c
|
||||
#else
|
||||
#define NPC_GND_HIO_CLASS daNpc_Gnd_Param_c
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @ingroup actors-npcs
|
||||
* @class daNpc_Gnd_c
|
||||
|
|
@ -27,7 +54,7 @@ public:
|
|||
/* 809BBE60 */ int Execute();
|
||||
/* 809BBE80 */ int Draw();
|
||||
/* 809BBF44 */ static int createHeapCallBack(fopAc_ac_c*);
|
||||
/* 809BBF64 */ int ctrlJointCallBack(J3DJoint*, int);
|
||||
/* 809BBF64 */ static int ctrlJointCallBack(J3DJoint*, int);
|
||||
/* 809BBFBC */ u8 getType();
|
||||
/* 809BBFDC */ int getFlowNodeNo();
|
||||
/* 809BBFF8 */ int isDelete();
|
||||
|
|
@ -50,76 +77,38 @@ public:
|
|||
/* 809BCD5C */ void setAction(int (daNpc_Gnd_c::*)(void*));
|
||||
/* 809BCE04 */ void wait(void*);
|
||||
/* 809BD050 */ void talk(void*);
|
||||
/* 809BE2D0 */ daNpc_Gnd_c(daNpcT_faceMotionAnmData_c const* param_1, daNpcT_motionAnmData_c const* param_2,
|
||||
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_3, int param_4,
|
||||
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* param_5, int param_6,
|
||||
daNpcT_evtData_c const* param_7, char** param_8) :
|
||||
daNpcT_c(param_1, param_2, param_3, param_4, param_5, param_6, param_7, param_8)
|
||||
{}
|
||||
/* 809BE40C */ u16 getEyeballRMaterialNo();
|
||||
/* 809BE414 */ u16 getEyeballLMaterialNo();
|
||||
/* 809BE41C */ s32 getHeadJointNo();
|
||||
/* 809BE424 */ s32 getNeckJointNo();
|
||||
/* 809BE42C */ s32 getBackboneJointNo();
|
||||
/* 809BE2D0 */ daNpc_Gnd_c(
|
||||
daNpcT_faceMotionAnmData_c const* i_faceMotionAnmData,
|
||||
daNpcT_motionAnmData_c const* i_motionAnmData,
|
||||
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_faceMotionSequenceData,
|
||||
int i_faceMotionStepNum,
|
||||
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData, int i_motionStepNum,
|
||||
daNpcT_evtData_c const* i_evtData, char** i_arcNames)
|
||||
: daNpcT_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData,
|
||||
i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData,
|
||||
i_arcNames) {
|
||||
// "|%06d:%x|daNpc_Gnd_c -> Construct\n"
|
||||
OS_REPORT("|%06d:%x|daNpc_Gnd_c -> コンストラクト\n", g_Counter.mCounter0, this);
|
||||
}
|
||||
/* 809BE40C */ u16 getEyeballRMaterialNo() { return 3; }
|
||||
/* 809BE414 */ u16 getEyeballLMaterialNo() { return 2; }
|
||||
/* 809BE41C */ s32 getHeadJointNo() { return 4; }
|
||||
/* 809BE424 */ s32 getNeckJointNo() { return 3; }
|
||||
/* 809BE42C */ s32 getBackboneJointNo() { return 1; }
|
||||
|
||||
static char* mCutNameList;
|
||||
static cutFunc mCutList[1];
|
||||
|
||||
private:
|
||||
/* 0xE40 */ u8 field_0xe40[0xf80 - 0xe40];
|
||||
/* 0xE40 */ NPC_GND_HIO_CLASS* mpHIO;
|
||||
/* 0xE44 */ dCcD_Cyl mCyl1;
|
||||
/* 0xF80 */ u8 mType;
|
||||
/* 0xF81 */ u8 field_0xf81[0xfa0 - 0xf81];
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daNpc_Gnd_c) == 0xfa0);
|
||||
|
||||
class daNpc_Gnd_Param_c {
|
||||
public:
|
||||
/* 809BE434 */ ~daNpc_Gnd_Param_c();
|
||||
|
||||
struct Data {
|
||||
/* 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 */ 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;
|
||||
};
|
||||
|
||||
static const Data m;
|
||||
/* 0xF81 */ u8 field_0xf81[0xF84 - 0xF81];
|
||||
/* 0xF84 */ u8 field_0xF84;
|
||||
/* 0xF85 */ u8 field_0xF85[0xF9C - 0xF85];
|
||||
/* 0xF9C */ u8 field_0xF9C;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daNpc_Gnd_c) == 0xFA0);
|
||||
|
||||
#endif /* D_A_NPC_GND_H */
|
||||
|
|
|
|||
|
|
@ -4,6 +4,37 @@
|
|||
#include "dolphin/types.h"
|
||||
#include "d/actor/d_a_npc.h"
|
||||
|
||||
struct daNpc_Toby_HIOParam {
|
||||
/* 0x00 */ daNpcT_HIOParam common;
|
||||
/* 0x8C */ f32 performance_speed;
|
||||
/* 0x90 */ f32 speedup_performance;
|
||||
/* 0x94 */ f32 init_play_speed;
|
||||
/* 0x98 */ f32 switching_speed;
|
||||
};
|
||||
|
||||
class daNpc_Toby_Param_c {
|
||||
public:
|
||||
/* 80B24978 */ virtual ~daNpc_Toby_Param_c() {}
|
||||
|
||||
static const daNpc_Toby_HIOParam m;
|
||||
};
|
||||
|
||||
#if DEBUG
|
||||
class daNpc_Toby_HIO_c : public mDoHIO_entry_c {
|
||||
public:
|
||||
daNpc_Toby_HIO_c();
|
||||
|
||||
void listenPropertyEvent(const JORPropertyEvent*);
|
||||
void genMessage(JORMContext*);
|
||||
|
||||
daNpc_Toby_HIOParam m;
|
||||
};
|
||||
|
||||
#define NPC_TOBY_HIO_CLASS daNpc_Toby_HIO_c
|
||||
#else
|
||||
#define NPC_TOBY_HIO_CLASS daNpc_Toby_Param_c
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @ingroup actors-npcs
|
||||
* @class daNpc_Toby_c
|
||||
|
|
@ -12,78 +43,119 @@
|
|||
* @details
|
||||
*
|
||||
*/
|
||||
class daNpc_Toby_c : public fopAc_ac_c {
|
||||
class daNpc_Toby_c : public daNpcT_c {
|
||||
public:
|
||||
typedef int (daNpc_Toby_c::*cutFunc)(int);
|
||||
typedef int (daNpc_Toby_c::*actionFunc)(void*);
|
||||
|
||||
/* 80B1E64C */ ~daNpc_Toby_c();
|
||||
/* 80B1E798 */ void create();
|
||||
/* 80B1EA60 */ void CreateHeap();
|
||||
/* 80B1EF28 */ void Delete();
|
||||
/* 80B1EF5C */ void Execute();
|
||||
/* 80B1EF7C */ void Draw();
|
||||
/* 80B1F010 */ void createHeapCallBack(fopAc_ac_c*);
|
||||
/* 80B1F030 */ void ctrlJointCallBack(J3DJoint*, int);
|
||||
/* 80B1F088 */ void srchToby(void*, void*);
|
||||
/* 80B1F124 */ void getOtherTobyP(int);
|
||||
/* 80B1F200 */ void getType();
|
||||
/* 80B1F274 */ void isDelete();
|
||||
/* 80B1E798 */ int create();
|
||||
/* 80B1EA60 */ int CreateHeap();
|
||||
/* 80B1EF28 */ int Delete();
|
||||
/* 80B1EF5C */ int Execute();
|
||||
/* 80B1EF7C */ int Draw();
|
||||
/* 80B1F010 */ static int createHeapCallBack(fopAc_ac_c*);
|
||||
/* 80B1F030 */ static int ctrlJointCallBack(J3DJoint*, int);
|
||||
/* 80B1F088 */ static void* srchToby(void*, void*);
|
||||
/* 80B1F124 */ fopAc_ac_c* getOtherTobyP(int);
|
||||
/* 80B1F200 */ u8 getType();
|
||||
/* 80B1F274 */ int isDelete();
|
||||
/* 80B1F384 */ void reset();
|
||||
/* 80B1F5AC */ void afterJntAnm(int);
|
||||
/* 80B1F638 */ void setParam();
|
||||
/* 80B1F784 */ void checkChangeEvt();
|
||||
/* 80B1F784 */ BOOL checkChangeEvt();
|
||||
/* 80B1F950 */ void setAfterTalkMotion();
|
||||
/* 80B1FA08 */ void srchActors();
|
||||
/* 80B1FB34 */ void evtTalk();
|
||||
/* 80B1FBD4 */ void evtCutProc();
|
||||
/* 80B1FB34 */ BOOL evtTalk();
|
||||
/* 80B1FBD4 */ BOOL evtCutProc();
|
||||
/* 80B1FC9C */ void action();
|
||||
/* 80B1FE68 */ void beforeMove();
|
||||
/* 80B1FF2C */ void setAttnPos();
|
||||
/* 80B20278 */ void setCollision();
|
||||
/* 80B2042C */ bool drawDbgInfo();
|
||||
/* 80B2042C */ int drawDbgInfo();
|
||||
/* 80B20434 */ void drawOtherMdl();
|
||||
/* 80B2050C */ void afterSetFaceMotionAnm(int, int, f32, int);
|
||||
/* 80B20568 */ void afterSetMotionAnm(int, int, f32, int);
|
||||
/* 80B205F4 */ void selectAction();
|
||||
/* 80B20710 */ void chkAction(int (daNpc_Toby_c::*)(void*));
|
||||
/* 80B2073C */ void setAction(int (daNpc_Toby_c::*)(void*));
|
||||
/* 80B207E4 */ void cutTobyHouseFire(int);
|
||||
/* 80B20AB0 */ void cutTalkToOneself(int);
|
||||
/* 80B20FC0 */ void cutRepairSCannon(int);
|
||||
/* 80B215B4 */ void cutSCannon(int);
|
||||
/* 80B219F4 */ void cutConversationAboutSCannon(int);
|
||||
/* 80B22434 */ void cutConversationAboutZra(int);
|
||||
/* 80B22614 */ void chkAttnZra();
|
||||
/* 80B226B0 */ void wait(void*);
|
||||
/* 80B22D98 */ void walk(void*);
|
||||
/* 80B22FAC */ void play(void*);
|
||||
/* 80B23344 */ void talk(void*);
|
||||
/* 80B24840 */ daNpc_Toby_c(daNpcT_faceMotionAnmData_c const*, daNpcT_motionAnmData_c const*,
|
||||
daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int,
|
||||
daNpcT_MotionSeqMngr_c::sequenceStepData_c const*, int,
|
||||
daNpcT_evtData_c const*, char**);
|
||||
/* 80B24920 */ u16 getEyeballMaterialNo();
|
||||
/* 80B24928 */ s32 getHeadJointNo();
|
||||
/* 80B24930 */ s32 getNeckJointNo();
|
||||
/* 80B24938 */ bool getBackboneJointNo();
|
||||
/* 80B24940 */ void checkChangeJoint(int);
|
||||
/* 80B24950 */ void checkRemoveJoint(int);
|
||||
/* 80B24960 */ s32 getFootLJointNo();
|
||||
/* 80B24968 */ s32 getFootRJointNo();
|
||||
/* 80B24970 */ bool chkXYItems();
|
||||
/* 80B2050C */ bool afterSetFaceMotionAnm(int, int, f32, int);
|
||||
/* 80B20568 */ bool afterSetMotionAnm(int, int, f32, int);
|
||||
/* 80B205F4 */ int selectAction();
|
||||
/* 80B20710 */ int chkAction(actionFunc);
|
||||
/* 80B2073C */ int setAction(actionFunc);
|
||||
/* 80B207E4 */ int cutTobyHouseFire(int);
|
||||
/* 80B20AB0 */ int cutTalkToOneself(int);
|
||||
/* 80B20FC0 */ int cutRepairSCannon(int);
|
||||
/* 80B215B4 */ int cutSCannon(int);
|
||||
/* 80B219F4 */ int cutConversationAboutSCannon(int);
|
||||
/* 80B22434 */ int cutConversationAboutZra(int);
|
||||
/* 80B22614 */ int chkAttnZra();
|
||||
/* 80B226B0 */ int wait(void*);
|
||||
/* 80B22D98 */ int walk(void*);
|
||||
/* 80B22FAC */ int play(void*);
|
||||
/* 80B23344 */ int talk(void*);
|
||||
#if DEBUG
|
||||
int test(void*);
|
||||
#endif
|
||||
/* 80B24840 */ daNpc_Toby_c(
|
||||
daNpcT_faceMotionAnmData_c const* i_faceMotionAnmData,
|
||||
daNpcT_motionAnmData_c const* i_motionAnmData,
|
||||
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_faceMotionSequenceData,
|
||||
int i_faceMotionStepNum,
|
||||
daNpcT_MotionSeqMngr_c::sequenceStepData_c const* i_motionSequenceData, int i_motionStepNum,
|
||||
daNpcT_evtData_c const* i_evtData, char** i_arcNames)
|
||||
: daNpcT_c(i_faceMotionAnmData, i_motionAnmData, i_faceMotionSequenceData,
|
||||
i_faceMotionStepNum, i_motionSequenceData, i_motionStepNum, i_evtData,
|
||||
i_arcNames) {
|
||||
// "|%06d:%x|daNpc_Toby_c -> Construct\n"
|
||||
OS_REPORT("|%06d:%x|daNpc_Toby_c -> コンストラクト\n", g_Counter.mCounter0, this);
|
||||
}
|
||||
/* 80B24920 */ u16 getEyeballMaterialNo() { return 2; }
|
||||
/* 80B24928 */ s32 getHeadJointNo() { return 4; }
|
||||
/* 80B24930 */ s32 getNeckJointNo() { return 3; }
|
||||
/* 80B24938 */ s32 getBackboneJointNo() { return 1; }
|
||||
/* 80B24940 */ BOOL checkChangeJoint(int arg0) { return arg0 == 4; }
|
||||
/* 80B24950 */ BOOL checkRemoveJoint(int arg0) { return arg0 == 8; }
|
||||
/* 80B24960 */ s32 getFootLJointNo() { return 24; }
|
||||
/* 80B24968 */ s32 getFootRJointNo() { return 27; }
|
||||
/* 80B24970 */ BOOL chkXYItems() { return TRUE; }
|
||||
|
||||
int getFlowNodeNo() {
|
||||
u16 nodeNo = home.angle.x;
|
||||
u32 rv;
|
||||
if (nodeNo == 0xffff) {
|
||||
rv = -1;
|
||||
} else {
|
||||
rv = nodeNo;
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
u8 getPathID() { return (fopAcM_GetParam(this) & 0xFF00) >> 8; }
|
||||
u8 getBitSW() { return (fopAcM_GetParam(this) & 0xFF0000) >> 16; }
|
||||
|
||||
static char* mCutNameList[7];
|
||||
static u8 mCutList[84];
|
||||
static cutFunc mCutList[7];
|
||||
|
||||
private:
|
||||
/* 0x568 */ u8 field_0x568[0x1008 - 0x568];
|
||||
/* 0x0E40 */ NPC_TOBY_HIO_CLASS* mpHIO;
|
||||
/* 0x0E44 */ J3DModel* mpTobyModels[1];
|
||||
/* 0x0E48 */ dCcD_Cyl mCyl1;
|
||||
/* 0x0F84 */ u8 mType;
|
||||
/* 0x0F88 */ daNpcT_ActorMngr_c mActorMngr[4];
|
||||
/* 0x0FA8 */ actionFunc mActFunc_0;
|
||||
/* 0x0FB4 */ actionFunc mActFunc_1;
|
||||
/* 0x0FC0 */ daNpcT_Path_c mPath;
|
||||
/* 0x0FE8 */ cXyz field_0x0FE8;
|
||||
/* 0x0FF4 */ int field_0x0FF4;
|
||||
/* 0x0FF8 */ f32 mPlaySpeed;
|
||||
/* 0x0FFC */ u16 field_0x0FFC;
|
||||
/* 0x0FFE */ u8 field_0x0FFE;
|
||||
/* 0x0FFF */ u8 field_0x0FFF;
|
||||
/* 0x1000 */ u8 field_0x1000;
|
||||
/* 0x1001 */ bool field_0x1001;
|
||||
/* 0x1002 */ bool field_0x1002;
|
||||
/* 0x1003 */ u8 field_0x1003;
|
||||
/* 0x1004 */ u8 field_0x1004;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daNpc_Toby_c) == 0x1008);
|
||||
|
||||
class daNpc_Toby_Param_c {
|
||||
public:
|
||||
/* 80B24978 */ ~daNpc_Toby_Param_c();
|
||||
|
||||
static u8 const m[156];
|
||||
};
|
||||
|
||||
#endif /* D_A_NPC_TOBY_H */
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ private:
|
|||
/* 0xB28 */ f32 mGroundH;
|
||||
/* 0xB2C */ f32 mAnmPlaySpeed;
|
||||
/* 0xB30 */ u8 field_0xb30;
|
||||
/* 0xB31 */ u8 field_0xb31;
|
||||
/* 0xB31 */ u8 mCoNone;
|
||||
|
||||
public:
|
||||
/* 80BA56EC */ virtual ~daObj_AutoMata_c();
|
||||
|
|
@ -46,6 +46,14 @@ public:
|
|||
/* 80BA6690 */ void setRoomNo();
|
||||
/* 80BA66D4 */ void setMtx();
|
||||
/* 80BA674C */ void setSe();
|
||||
|
||||
void setAnmPlaySpeed(f32 i_playspeed) {
|
||||
mAnmPlaySpeed = i_playspeed;
|
||||
}
|
||||
|
||||
void setCoNone() {
|
||||
mCoNone = true;
|
||||
}
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daObj_AutoMata_c) == 0xb38);
|
||||
|
|
|
|||
|
|
@ -461,12 +461,18 @@ int daNpcT_Path_c::getDstPosH(cXyz i_pnt, cXyz* o_pos_p, int i_idx, int param_3)
|
|||
|
||||
/* 80146188-801464D8 140AC8 0350+00 2/2 0/0 2/2 .text chkPassed1__13daNpcT_Path_cF4cXyzi
|
||||
*/
|
||||
// NONMATCHING one instruction order swap
|
||||
int daNpcT_Path_c::chkPassed1(cXyz i_pnt, int i_num) {
|
||||
cXyz prev_pos, cur_pos, next_pos;
|
||||
cXyz prev_pos;
|
||||
cXyz cur_pos;
|
||||
cXyz next_pos;
|
||||
cXyz sp5C;
|
||||
|
||||
#if VERSION != VERSION_SHIELD_DEBUG
|
||||
// FIXME: fakematch. I literally don't know how else to get this to match....
|
||||
u16 cur_idx = get_u16_Idx();
|
||||
#else
|
||||
u16 cur_idx = getIdx();
|
||||
#endif
|
||||
u16 prev_idx, next_idx;
|
||||
prev_idx = next_idx = cur_idx;
|
||||
|
||||
|
|
@ -543,7 +549,7 @@ int daNpcT_Path_c::chkPassed2(cXyz i_pnt, cXyz* param_2, int i_num, int param_4)
|
|||
cXyz h_startTan;
|
||||
cXyz h_endTan;
|
||||
|
||||
u16 cur_idx = (u16)getIdx();
|
||||
u16 cur_idx = getIdx();
|
||||
u16 sp10;
|
||||
u16 prev_idx;
|
||||
u16 next_idx;
|
||||
|
|
@ -1794,11 +1800,17 @@ int daNpcT_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
|
|||
}
|
||||
|
||||
/* 8014997C-80149BB4 1442BC 0238+00 1/0 1/0 58/0 .text evtProc__8daNpcT_cFv */
|
||||
// NONMATCHING loads dComIfG_gameInfo twice
|
||||
BOOL daNpcT_c::evtProc() {
|
||||
BOOL ret = FALSE;
|
||||
|
||||
if (dComIfGp_event_runCheck() != 0) {
|
||||
#if VERSION != VERSION_SHIELD_DEBUG
|
||||
// TODO: gameInfo fake match to force reuse of pointer
|
||||
dComIfG_play_c* play = &g_dComIfG_gameInfo.play;
|
||||
if (play->getEvent().runCheck())
|
||||
#else
|
||||
if (dComIfGp_event_runCheck())
|
||||
#endif
|
||||
{
|
||||
if (eventInfo.checkCommandTalk()) {
|
||||
if (!checkChangeEvt()) {
|
||||
evtTalk();
|
||||
|
|
@ -1807,7 +1819,11 @@ BOOL daNpcT_c::evtProc() {
|
|||
} else if (eventInfo.checkCommandDemoAccrpt()
|
||||
&& dComIfGp_getEventManager().endCheck(mEvtId)) {
|
||||
if (evtEndProc()) {
|
||||
#if VERSION != VERSION_SHIELD_DEBUG
|
||||
play->getEvent().reset();
|
||||
#else
|
||||
dComIfGp_event_reset();
|
||||
#endif
|
||||
mEvtId = -1;
|
||||
}
|
||||
} else {
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -454,8 +454,8 @@ BOOL daNpc_Moi_c::isDelete() {
|
|||
/* 80A74D8C-80A7513C 000F2C 03B0+00 1/1 0/0 0/0 .text reset__11daNpc_Moi_cFv */
|
||||
void daNpc_Moi_c::reset() {
|
||||
int iVar8;
|
||||
csXyz cStack_80;
|
||||
cXyz cStack_30;
|
||||
csXyz cStack_80;
|
||||
|
||||
int iVar1 = (u8*)&field_0x1670 - (u8*)&field_0x1610;
|
||||
if (mpMatAnm[0] != NULL) {
|
||||
|
|
@ -489,13 +489,13 @@ void daNpc_Moi_c::reset() {
|
|||
break;
|
||||
case TYPE_2:
|
||||
if (daNpcT_chkEvtBit(0xcd)) {
|
||||
JUT_ASSERT(1932, 0 != mPath.getPathInfo());
|
||||
iVar8 = g_Counter.mCounter0 % mPath.getNumPnts();
|
||||
cStack_30 = mPath.getPntPos(iVar8);
|
||||
setPos(cStack_30);
|
||||
mPath.setIdx(iVar8);
|
||||
mPath.setNextIdx(mPath.getNumPnts());
|
||||
u16 path_idx = mPath.getIdx();
|
||||
cStack_30 = mPath.getPntPos(path_idx);
|
||||
mPath.setNextIdx();
|
||||
cStack_30 = mPath.getPntPos(mPath.getIdx());
|
||||
cStack_80.y = cLib_targetAngleY(¤t.pos, &cStack_30);
|
||||
}
|
||||
field_0x1666 = 1;
|
||||
|
|
@ -1576,8 +1576,7 @@ int daNpc_Moi_c::cutConversationWithUri(int param_1) {
|
|||
setPos(cStack_34);
|
||||
mPath.setIdx(0);
|
||||
mPath.setNextIdx(mPath.getNumPnts());
|
||||
u16 path_idx = mPath.getIdx();
|
||||
cStack_34 = mPath.getPntPos(path_idx);
|
||||
cStack_34 = mPath.getPntPos(mPath.getIdx());
|
||||
setAngle(cLib_targetAngleY(¤t.pos, &cStack_34));
|
||||
break;
|
||||
case 2:
|
||||
|
|
@ -1638,8 +1637,7 @@ int daNpc_Moi_c::cutFindWolf(int param_1) {
|
|||
mPath.offReverse();
|
||||
mPath.setIdx(0);
|
||||
mPath.setNextIdx(mPath.getNumPnts());
|
||||
u16 path_idx = mPath.getIdx();
|
||||
cStack_30 = mPath.getPntPos(path_idx);
|
||||
cStack_30 = mPath.getPntPos(mPath.getIdx());
|
||||
field_0x1664 = fopAcM_searchPlayerAngleY(this);
|
||||
setAngle(field_0x1664);
|
||||
mPlayerActorMngr.entry(daPy_getPlayerActorClass());
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -3426,7 +3426,7 @@ BOOL daNpc_ykM_c::race(void* param_1) {
|
|||
int idx;
|
||||
while (true) {
|
||||
if (mPath.chkPassed1(current.pos, mPath.getNumPnts())) {
|
||||
if (mPath.getArg0() == 0) {
|
||||
if (u8(mPath.getArg0()) == 0) {
|
||||
mSound.startCreatureSound(Z2SE_YM_SNOBO_JUMP, 0, -1);
|
||||
mSound.startCreatureVoice(Z2SE_YM_V_SNOBO_JUMP, -1);
|
||||
field_0x157e = 1;
|
||||
|
|
|
|||
|
|
@ -2879,7 +2879,7 @@ int daNpc_ykW_c::race(void* param_0) {
|
|||
if (field_0x106e == 0) {
|
||||
while (true) {
|
||||
if (mPath.chkPassed1(current.pos, mPath.getNumPnts())) {
|
||||
if (mPath.getArg0() == 0) {
|
||||
if (u8(mPath.getArg0()) == 0) {
|
||||
mSound.startCreatureSound(Z2SE_YW_SNOBO_JUMP, 0, -1);
|
||||
mSound.startCreatureVoice(Z2SE_YW_V_SNOBO_JUMP, -1);
|
||||
field_0x106e = 1;
|
||||
|
|
|
|||
|
|
@ -148,7 +148,7 @@ int daObj_AutoMata_c::Execute() {
|
|||
mAnmPlaySpeed = 0.0f;
|
||||
setSe();
|
||||
setMtx();
|
||||
if (field_0xb31 == 0) {
|
||||
if (mCoNone == 0) {
|
||||
cStack_28.set(0.0f, 40.0f, 0.0f);
|
||||
mDoMtx_stack_c::copy(mpMorf->getModel()->getAnmMtx(3));
|
||||
mDoMtx_stack_c::multVec(&cStack_28, &sphCenter);
|
||||
|
|
@ -164,7 +164,7 @@ int daObj_AutoMata_c::Execute() {
|
|||
mCyl.ClrCoHit();
|
||||
attention_info.flags = 0;
|
||||
eyePos = attention_info.position = current.pos;
|
||||
field_0xb31 = 0;
|
||||
mCoNone = 0;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
|
|
|
|||
Loading…
Reference in New Issue