mirror of https://github.com/zeldaret/tp.git
Compare commits
13 Commits
e2dfee5fcd
...
151d3deec1
Author | SHA1 | Date |
---|---|---|
![]() |
151d3deec1 | |
![]() |
e0bbad1f3f | |
![]() |
26d1ce88ee | |
![]() |
030ff70f70 | |
![]() |
55fb1b389c | |
![]() |
1be6a2cf27 | |
![]() |
3fcd6be1d4 | |
![]() |
2b3a12aa94 | |
![]() |
440f9df0bf | |
![]() |
3057ed5b63 | |
![]() |
8df5cf3293 | |
![]() |
e6a2729505 | |
![]() |
4d405ea481 |
|
@ -1836,7 +1836,7 @@ config.libs = [
|
|||
ActorRel(NonMatching, "d_a_npc_seira"),
|
||||
ActorRel(NonMatching, "d_a_npc_seira2"),
|
||||
ActorRel(NonMatching, "d_a_npc_seirei"),
|
||||
ActorRel(NonMatching, "d_a_npc_shad"),
|
||||
ActorRel(NonMatching, "d_a_npc_shad", extra_cflags=[DANPCF_C_HACK]),
|
||||
ActorRel(NonMatching, "d_a_npc_shaman"),
|
||||
ActorRel(NonMatching, "d_a_npc_shoe", extra_cflags=[DANPCF_C_HACK]),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_npc_shop0"),
|
||||
|
@ -1863,7 +1863,7 @@ config.libs = [
|
|||
ActorRel(NonMatching, "d_a_npc_ykm"),
|
||||
ActorRel(NonMatching, "d_a_npc_ykw"),
|
||||
ActorRel(NonMatching, "d_a_npc_zanb"),
|
||||
ActorRel(NonMatching, "d_a_npc_zant"),
|
||||
ActorRel(Equivalent, "d_a_npc_zant"), # weak func order
|
||||
ActorRel(NonMatching, "d_a_npc_zelR"),
|
||||
ActorRel(NonMatching, "d_a_npc_zelRo"),
|
||||
ActorRel(Equivalent, "d_a_npc_zelda"), # weak function order
|
||||
|
@ -2029,7 +2029,7 @@ config.libs = [
|
|||
ActorRel(NonMatching, "d_a_obj_lv6Tenbin"),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_lv6TogeRoll"),
|
||||
ActorRel(NonMatching, "d_a_obj_lv6TogeTrap"),
|
||||
ActorRel(NonMatching, "d_a_obj_lv6bemos"),
|
||||
ActorRel(MatchingFor("GZ2E01"), "d_a_obj_lv6bemos"),
|
||||
ActorRel(NonMatching, "d_a_obj_lv6bemos2"),
|
||||
ActorRel(NonMatching, "d_a_obj_lv6egate"),
|
||||
ActorRel(NonMatching, "d_a_obj_lv6elevta"),
|
||||
|
|
|
@ -33,6 +33,7 @@ public:
|
|||
|
||||
cXyz& getBallPos() { return m_ballPos; }
|
||||
void onPlayerRide() { m_isPlayerRide = true; }
|
||||
void onCoverVanishFlg() { m_coverVanishFlg = 1; }
|
||||
|
||||
struct BckTbl {
|
||||
u16 idx[4];
|
||||
|
|
|
@ -11,24 +11,42 @@
|
|||
*/
|
||||
|
||||
class daMant_packet_c : public J3DPacket {
|
||||
public:
|
||||
/* 80861298 */ void draw();
|
||||
/* 80862BA4 */ ~daMant_packet_c();
|
||||
public:
|
||||
/* 80861298 */ void draw();
|
||||
/* 80862BA4 */ ~daMant_packet_c();
|
||||
|
||||
/* 0x0010 */ Mtx mMtx;
|
||||
/* 0x0040 */ Mtx mMtx2;
|
||||
/* 0x0070 */ dKy_tevstr_c* field_0x70;
|
||||
/* 0x0074 */ u8 field_0x74;
|
||||
/* 0x0075 */ u8 field_0x75[0x78 - 0x75];
|
||||
/* 0x0078 */ cXyz mPos[338];
|
||||
/* 0x1050 */ cXyz mNrm[338];
|
||||
/* 0x2028 */ u8 field_0x2028;
|
||||
/* 0x2029 */ u8 mArg0;
|
||||
/* 0x202a */ u8 field_0x202a[0x202b - 0x202a];
|
||||
/* 0x0010 */ Mtx mMtx;
|
||||
/* 0x0040 */ Mtx mMtx2;
|
||||
/* 0x0070 */ dKy_tevstr_c* mTevStr;
|
||||
/* 0x0074 */ u8 field_0x74;
|
||||
/* 0x0078 */ cXyz mPos[2][169];
|
||||
/* 0x1050 */ cXyz mNrm[2][169];
|
||||
/* 0x2028 */ u8 field_0x2028;
|
||||
/* 0x2029 */ u8 mArg0;
|
||||
|
||||
cXyz* getPos() {
|
||||
return this->mPos + this->field_0x74 * 0xa9;
|
||||
}
|
||||
daMant_packet_c() {
|
||||
field_0x74 = 0;
|
||||
}
|
||||
|
||||
cXyz* getPos() {
|
||||
return &mPos[field_0x74][0];
|
||||
}
|
||||
|
||||
cXyz* getNrm() {
|
||||
return &mNrm[field_0x74][0];
|
||||
}
|
||||
|
||||
void setTevStr(dKy_tevstr_c* tevStr) {
|
||||
mTevStr = tevStr;
|
||||
}
|
||||
|
||||
MtxP getMtx2() {
|
||||
return mMtx2;
|
||||
}
|
||||
|
||||
MtxP getMtx() {
|
||||
return mMtx;
|
||||
}
|
||||
};
|
||||
struct mant_j_s {
|
||||
public:
|
||||
|
|
|
@ -11,68 +11,239 @@
|
|||
* @details
|
||||
*
|
||||
*/
|
||||
class daNpcShad_c : public fopAc_ac_c {
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
class daNpcShad_c : public daNpcF_c {
|
||||
public:
|
||||
typedef bool (daNpcShad_c::*ActionFn)(void*);
|
||||
typedef BOOL (daNpcShad_c::*EventFn)(int);
|
||||
|
||||
enum Animation {
|
||||
/* 0x00 */ ANM_NONE,
|
||||
/* 0x01 */ ANM_F_TALK_A,
|
||||
/* 0x02 */ ANM_F_HAPPY,
|
||||
/* 0x03 */ ANM_F_ANGER,
|
||||
/* 0x04 */ ANM_F_DISCOURAGED,
|
||||
/* 0x05 */ ANM_F_CHANT,
|
||||
/* 0x06 */ ANM_F_KOMON,
|
||||
/* 0x07 */ ANM_F_SURPRISE,
|
||||
/* 0x08 */ ANM_FH_SURPRISE,
|
||||
/* 0x09 */ ANM_FH_KOMON,
|
||||
/* 0x0A */ ANM_FH_HAPPY,
|
||||
/* 0x0B */ ANM_FH_ANGER,
|
||||
/* 0x0C */ ANM_FH_DISCOURAGED,
|
||||
/* 0x0D */ ANM_WAIT_A,
|
||||
/* 0x0E */ ANM_TALK_A,
|
||||
/* 0x0F */ ANM_STEP,
|
||||
/* 0x10 */ ANM_STEPB,
|
||||
/* 0x11 */ ANM_BOOK_WAIT,
|
||||
/* 0x12 */ ANM_BOOK_TALK_A,
|
||||
/* 0x13 */ ANM_HI,
|
||||
/* 0x14 */ ANM_RUN_A,
|
||||
/* 0x15 */ ANM_WALK_A,
|
||||
/* 0x16 */ ANM_SIT_A,
|
||||
/* 0x17 */ ANM_LOOKBACK,
|
||||
/* 0x18 */ ANM_CHANT,
|
||||
/* 0x19 */ ANM_DISCOURAGED,
|
||||
/* 0x1A */ ANM_DISCOURAGED_WAIT,
|
||||
/* 0x1B */ ANM_SITTALK_A,
|
||||
/* 0x1C */ ANM_LOOK,
|
||||
/* 0x1D */ ANM_LOOK_WAIT,
|
||||
/* 0x1E */ ANM_SAD_WALK,
|
||||
/* 0x1F */ ANM_LOOKUP,
|
||||
/* 0x20 */ ANM_TAKE_KOMON,
|
||||
/* 0x21 */ ANM_READ_KOMON,
|
||||
/* 0x22 */ ANM_SURPRISE,
|
||||
/* 0x23 */ ANM_SURPRISE_WAIT,
|
||||
};
|
||||
|
||||
enum Expression {
|
||||
/* 0x0 */ EXPR_TALK_A,
|
||||
/* 0x1 */ EXPR_HAPPY,
|
||||
/* 0x2 */ EXPR_ANGER,
|
||||
/* 0x3 */ EXPR_DISCOURAGED,
|
||||
/* 0x4 */ EXPR_KOMON,
|
||||
/* 0x5 */ EXPR_SURPRISE,
|
||||
/* 0x6 */ EXPR_H_SURPRISE,
|
||||
/* 0x7 */ EXPR_H_KOMON,
|
||||
/* 0x8 */ EXPR_H_HAPPY,
|
||||
/* 0x9 */ EXPR_H_ANGER,
|
||||
/* 0xA */ EXPR_H_DISCOURAGED,
|
||||
/* 0xB */ EXPR_CHANT,
|
||||
/* 0xC */ EXPR_NONE,
|
||||
};
|
||||
|
||||
enum Expression_BTP {
|
||||
/* 0x0 */ EXPR_BTP_SHAD,
|
||||
/* 0x1 */ EXPR_BTP_F_ANGER,
|
||||
/* 0x2 */ EXPR_BTP_F_DISCOURAGED,
|
||||
/* 0x3 */ EXPR_BTP_F_HAPPY,
|
||||
/* 0x4 */ EXPR_BTP_F_KOMON,
|
||||
/* 0x5 */ EXPR_BTP_F_SURPRISE,
|
||||
/* 0x6 */ EXPR_BTP_FH_SURPRISE,
|
||||
/* 0x7 */ EXPR_BTP_FH_KOMON,
|
||||
/* 0x8 */ EXPR_BTP_FH_ANGER,
|
||||
/* 0x9 */ EXPR_BTP_FH_DISCOURAGED,
|
||||
/* 0xA */ EXPR_BTP_FH_HAPPY
|
||||
};
|
||||
|
||||
enum Motion {
|
||||
/* 0x00 */ MOT_WAIT_A,
|
||||
/* 0x01 */ MOT_BOOK_TALK_A,
|
||||
/* 0x02 */ MOT_BOOK_WAIT,
|
||||
/* 0x03 */ MOT_HI,
|
||||
/* 0x04 */ MOT_SIT_A,
|
||||
/* 0x05 */ MOT_LOOKBACK,
|
||||
/* 0x06 */ MOT_DISCOURAGED,
|
||||
/* 0x07 */ MOT_DISCOURAGED_WAIT,
|
||||
/* 0x08 */ MOT_TALK_A,
|
||||
/* 0x09 */ MOT_SITTALK_A,
|
||||
/* 0x0A */ MOT_LOOK,
|
||||
/* 0x0B */ MOT_TAKE_KOMON,
|
||||
/* 0x0C */ MOT_READ_KOMON,
|
||||
/* 0x0D */ MOT_LOOK_WAIT,
|
||||
/* 0x0E */ MOT_SURPRISE,
|
||||
/* 0x0F */ MOT_SURPRISE_WAIT,
|
||||
/* 0x10 */ MOT_LOOKUP,
|
||||
/* 0x11 */ MOT_SAD_WALK,
|
||||
/* 0x12 */ MOT_CHANT,
|
||||
/* 0x13 */ MOT_RUN_A,
|
||||
/* 0x14 */ MOT_WALK_A,
|
||||
/* 0x15 */ MOT_STEP,
|
||||
/* 0x16 */ MOT_STEPB,
|
||||
};
|
||||
|
||||
/* 80AD820C */ daNpcShad_c();
|
||||
/* 80AD8420 */ ~daNpcShad_c();
|
||||
/* 80AD8620 */ void Create();
|
||||
/* 80AD8B60 */ void CreateHeap();
|
||||
/* 80AD90E0 */ void Delete();
|
||||
/* 80AD9114 */ void Execute();
|
||||
/* 80AD9138 */ void Draw();
|
||||
/* 80AD9280 */ void ctrlJoint(J3DJoint*, J3DModel*);
|
||||
/* 80AD944C */ void createHeapCallBack(fopAc_ac_c*);
|
||||
/* 80AD946C */ void ctrlJointCallBack(J3DJoint*, int);
|
||||
/* 80AD94B8 */ void setExpressionAnm(int, bool);
|
||||
/* 80AD974C */ void setExpressionBtp(int);
|
||||
/* 80AD982C */ bool setMotionAnm(int, f32);
|
||||
/* 80AD8620 */ cPhs__Step Create();
|
||||
/* 80AD8B60 */ int CreateHeap();
|
||||
/* 80AD90E0 */ int Delete();
|
||||
/* 80AD9114 */ int Execute();
|
||||
/* 80AD9138 */ int Draw();
|
||||
/* 80AD9280 */ int ctrlJoint(J3DJoint*, J3DModel*);
|
||||
/* 80AD944C */ static int createHeapCallBack(fopAc_ac_c*);
|
||||
/* 80AD946C */ static int ctrlJointCallBack(J3DJoint*, int);
|
||||
/* 80AD94B8 */ bool setExpressionAnm(int, bool);
|
||||
/* 80AD974C */ bool setExpressionBtp(int);
|
||||
/* 80AD982C */ void setMotionAnm(int, f32);
|
||||
/* 80AD99B4 */ void reset();
|
||||
/* 80AD9C0C */ void setWaitAction();
|
||||
/* 80AD9E04 */ void getPathPoint(u8, int, Vec*);
|
||||
/* 80AD9E90 */ void isSneaking();
|
||||
/* 80AD9F00 */ void wait_type0(void*);
|
||||
/* 80ADA630 */ void setMotion(int, f32, int);
|
||||
/* 80AD9C0C */ inline void setWaitAction();
|
||||
/* 80AD9E04 */ inline bool getPathPoint(u8, int, Vec*);
|
||||
/* 80AD9E90 */ inline bool isSneaking();
|
||||
/* 80AD9F00 */ bool wait_type0(void*);
|
||||
/* 80ADA630 */ void setMotion(int, f32, BOOL);
|
||||
/* 80ADA674 */ void setExpression(int, f32);
|
||||
/* 80ADA6A0 */ void wait_type1(void*);
|
||||
/* 80ADB428 */ void wait_type2(void*);
|
||||
/* 80ADB628 */ void talk(void*);
|
||||
/* 80ADBEA8 */ void demo(void*);
|
||||
/* 80ADC3DC */ void leave(void*);
|
||||
/* 80ADC700 */ void EvCut_Introduction(int);
|
||||
/* 80ADC800 */ void EvCut_Meeting(int);
|
||||
/* 80ADCAD8 */ void EvCut_ToChantSpell1(int);
|
||||
/* 80ADD720 */ void EvCut_ToChantSpell2(int);
|
||||
/* 80ADE47C */ void EvCut_ToChantSpell2Skip(int);
|
||||
/* 80ADE5F8 */ void EvCut_DiscoveryCannon(int);
|
||||
/* 80ADED68 */ void EvCut_DiscoveryCannonSkip(int);
|
||||
/* 80ADEEE4 */ void EvCut_Disappear(int);
|
||||
/* 80ADF810 */ void EvCut_DisappearSkip(int);
|
||||
/* 80ADF8DC */ void EvCut_CallBack(int);
|
||||
/* 80ADFB70 */ void EvCut_WiretapSponsor(int);
|
||||
/* 80ADFE74 */ void EvCut_WiretapEntrant(int);
|
||||
/* 80ADA6A0 */ bool wait_type1(void*);
|
||||
/* 80ADB428 */ bool wait_type2(void*);
|
||||
/* 80ADB628 */ bool talk(void*);
|
||||
/* 80ADBEA8 */ bool demo(void*);
|
||||
/* 80ADC3DC */ bool leave(void*);
|
||||
/* 80ADC700 */ BOOL EvCut_Introduction(int);
|
||||
/* 80ADC800 */ BOOL EvCut_Meeting(int);
|
||||
/* 80ADCAD8 */ BOOL EvCut_ToChantSpell1(int);
|
||||
/* 80ADD720 */ BOOL EvCut_ToChantSpell2(int);
|
||||
/* 80ADE47C */ BOOL EvCut_ToChantSpell2Skip(int);
|
||||
/* 80ADE5F8 */ BOOL EvCut_DiscoveryCannon(int);
|
||||
/* 80ADED68 */ BOOL EvCut_DiscoveryCannonSkip(int);
|
||||
/* 80ADEEE4 */ BOOL EvCut_Disappear(int);
|
||||
/* 80ADF810 */ BOOL EvCut_DisappearSkip(int);
|
||||
/* 80ADF8DC */ BOOL EvCut_CallBack(int);
|
||||
/* 80ADFB70 */ BOOL EvCut_WiretapSponsor(int);
|
||||
/* 80ADFE74 */ BOOL EvCut_WiretapEntrant(int);
|
||||
/* 80AE01BC */ void setParam();
|
||||
/* 80AE0438 */ void main();
|
||||
/* 80AE0438 */ BOOL main();
|
||||
/* 80AE04D8 */ void playMotion();
|
||||
/* 80AE0B58 */ void playExpression();
|
||||
/* 80AE0ED0 */ void ctrlBtk();
|
||||
/* 80AE0ED0 */ BOOL ctrlBtk();
|
||||
/* 80AE0FAC */ void setAttnPos();
|
||||
/* 80AE1320 */ void lookat();
|
||||
/* 80AE153C */ bool drawDbgInfo();
|
||||
/* 80AE153C */ BOOL drawDbgInfo();
|
||||
|
||||
static u8 mEvtSeqList[168];
|
||||
static EventFn mEvtSeqList[14];
|
||||
|
||||
u8 getPathID() { return (fopAcM_GetParam(this) >> 8) & 0xFF; }
|
||||
s16 getMessageNo() { return shape_angle.x; }
|
||||
|
||||
inline void setAction(ActionFn action) {
|
||||
field_0xe1a = 3;
|
||||
|
||||
if (mActionFn) {
|
||||
(this->*mActionFn)(NULL);
|
||||
}
|
||||
|
||||
field_0xe1a = 0;
|
||||
mActionFn = action;
|
||||
|
||||
if (mActionFn) {
|
||||
(this->*mActionFn)(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
inline csXyz* unk_inline();
|
||||
inline BOOL chkFindPlayer();
|
||||
inline void setLookMode(int, fopAc_ac_c*, cXyz*);
|
||||
inline BOOL step(s16, int, f32);
|
||||
inline void setExpressionTalkAfter();
|
||||
inline void setLookObliquenessUp();
|
||||
|
||||
inline void searchActors() {
|
||||
if (mMode == 0) {
|
||||
if (mActorMngr[1].getActorP() == NULL) {
|
||||
mActorMngr[1].entry(fopAcM_SearchByName(PROC_NPC_ASH));
|
||||
}
|
||||
|
||||
if (mActorMngr[2].getActorP() == NULL) {
|
||||
mActorMngr[2].entry(fopAcM_SearchByName(PROC_NPC_RAFREL));
|
||||
}
|
||||
|
||||
if (mActorMngr[3].getActorP() == NULL) {
|
||||
mActorMngr[3].entry(fopAcM_SearchByName(PROC_NPC_MOIR));
|
||||
}
|
||||
|
||||
if (mActorMngr[4].getActorP() == NULL) {
|
||||
mActorMngr[4].entry(getEvtAreaTagP(17, 0));
|
||||
}
|
||||
} else if (mMode == 1 && daNpcF_chkEvtBit(0x12E) && mActorMngr[4].getActorP() == NULL) {
|
||||
mActorMngr[4].entry(getEvtAreaTagP(18, 0));
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x568 */ u8 field_0x568[0xe24 - 0x568];
|
||||
/* 0xB48 */ J3DModel* mBookKnifeModel;
|
||||
/* 0xB4C */ J3DModel* mKomonshoModel;
|
||||
/* 0xB50 */ Z2Creature mSound;
|
||||
/* 0xBE0 */ daNpcF_MatAnm_c* mpMatAnm;
|
||||
/* 0xBE4 */ daNpcF_Lookat_c mLookat;
|
||||
/* 0xC80 */ daNpcF_ActorMngr_c mActorMngr[5];
|
||||
/* 0xCA8 */ daPy_py_c* field_0xca8;
|
||||
/* 0xCAC */ u8 field_0xcac[0xcb0 - 0xcac];
|
||||
/* 0xCB0 */ dCcD_Cyl field_0xcb0;
|
||||
/* 0xDEC */ ActionFn mActionFn;
|
||||
/* 0xDF8 */ request_of_phase_process_class mPhases[2];
|
||||
/* 0xE08 */ fpc_ProcID mItemPartnerId;
|
||||
/* 0xE0C */ int field_0xe0c;
|
||||
/* 0xE10 */ int field_0xe10;
|
||||
/* 0xE14 */ s16 field_0xe14;
|
||||
/* 0xE16 */ s16 field_0xe16;
|
||||
/* 0xE18 */ s16 mLookMode;
|
||||
/* 0xE1A */ u16 field_0xe1a;
|
||||
/* 0xE1C */ s16 field_0xe1c;
|
||||
/* 0xE1E */ u8 field_0xe1e;
|
||||
/* 0xE1F */ u8 field_0xe1f;
|
||||
/* 0xE20 */ u8 mMode;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daNpcShad_c) == 0xe24);
|
||||
|
||||
class daNpcShad_Param_c {
|
||||
public:
|
||||
/* 80AE1F70 */ ~daNpcShad_Param_c();
|
||||
|
||||
static u8 const m[112];
|
||||
};
|
||||
|
||||
|
||||
#endif /* D_A_NPC_SHAD_H */
|
||||
|
|
|
@ -60,7 +60,7 @@ public:
|
|||
static cutFunc mCutList[1];
|
||||
|
||||
private:
|
||||
/* 0xE40 */ u8 field_0xe40[0xe44- 0xe40];
|
||||
/* 0xE40 */ u8 field_0xe40[0xe44 - 0xe40];
|
||||
/* 0xE44 */ dCcD_Cyl mCyl;
|
||||
/* 0xF80 */ u8 mType;
|
||||
/* 0xF81 */ u8 field_0xf81[0xf84 - 0xf81];
|
||||
|
@ -73,7 +73,7 @@ STATIC_ASSERT(sizeof(daNpc_Zant_c) == 0xfa0);
|
|||
|
||||
class daNpc_Zant_Param_c {
|
||||
public:
|
||||
/* 80B6E93C */ ~daNpc_Zant_Param_c() {};
|
||||
/* 80B6E93C */ virtual ~daNpc_Zant_Param_c() {}
|
||||
struct Data {
|
||||
/* 0x00 */ f32 field_0x0;
|
||||
/* 0x04 */ f32 field_0x4;
|
||||
|
@ -112,11 +112,19 @@ public:
|
|||
/* 0x7C */ f32 field_0x7c;
|
||||
/* 0x80 */ f32 field_0x80;
|
||||
/* 0x84 */ f32 field_0x84;
|
||||
/* 0x88 */ f32 field_0x88;
|
||||
/* 0x88 */ f32 field_0x88;
|
||||
};
|
||||
|
||||
static const Data m;
|
||||
};
|
||||
|
||||
class daNpc_Zant_HIO_c {
|
||||
public:
|
||||
virtual ~daNpc_Zant_HIO_c() {}
|
||||
|
||||
#if DEBUG
|
||||
daNpc_Zant_Param_c::Data param;
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif /* D_A_NPC_ZANT_H */
|
||||
|
|
|
@ -70,7 +70,7 @@ public:
|
|||
}
|
||||
|
||||
u32 getTalkAngle() {
|
||||
u32 talkAngle = (fopAcM_GetParam(this) & 0xe0) >> 5;
|
||||
u32 talkAngle = (fopAcM_GetParam(this) >> 5) & 0x7;
|
||||
if (talkAngle == 7) {
|
||||
return 0;
|
||||
} else {
|
||||
|
|
|
@ -100,6 +100,10 @@ inline void cMtx_multVecArray(Mtx mtx, const Vec* src, Vec* dst, u32 count) {
|
|||
mDoMtx_multVecArray(mtx, src, dst, count);
|
||||
}
|
||||
|
||||
inline void cMtx_inverseTranspose(const Mtx a, Mtx b) {
|
||||
mDoMtx_inverseTranspose(a, b);
|
||||
}
|
||||
|
||||
inline void mDoMtx_multVecZero(CMtxP param_0, Vec* param_1) {
|
||||
param_1->x = param_0[0][3];
|
||||
param_1->y = param_0[1][3];
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/**
|
||||
* @file d_a_mant.cpp
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
#include "d/actor/d_a_mant.h"
|
||||
|
@ -9,20 +9,7 @@
|
|||
#include "d/d_com_inf_game.h"
|
||||
#include "dol2asm.h"
|
||||
|
||||
/* 80862D20-80862D2C 000000 000C+00 1/1 0/0 0/0 .data cNullVec__6Z2Calc */
|
||||
static u8 cNullVec__6Z2Calc[12] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
/* 80862D2C-80862D40 00000C 0004+10 0/0 0/0 0/0 .data @1787 */
|
||||
static u32 lit_1787[1 + 4 /* padding */] = {
|
||||
0x02000201,
|
||||
/* padding */
|
||||
0x40080000,
|
||||
0x00000000,
|
||||
0x3FE00000,
|
||||
0x00000000,
|
||||
};
|
||||
UNK_REL_DATA
|
||||
|
||||
/* 80862D40-80866D40 000020 4000+00 2/1 0/0 0/0 .data l_Egnd_mantTEX */
|
||||
#include "assets/l_Egnd_mantTEX.h"
|
||||
|
@ -276,87 +263,87 @@ static void* tex_d[2] = {
|
|||
static char lbl_277_bss_0;
|
||||
|
||||
/* 80861298-808616B8 000078 0420+00 1/0 0/0 0/0 .text draw__15daMant_packet_cFv */
|
||||
// NONMATCHING - missing some weird stack duplication
|
||||
void daMant_packet_c::draw() {
|
||||
// NONMATCHING
|
||||
void* image = tex_d[0];
|
||||
void* lut = pal_d;
|
||||
|
||||
j3dSys.reinitGX();
|
||||
GXSetNumIndStages(0);
|
||||
dKy_setLight_again();
|
||||
dKy_GxFog_tevstr_set(this->field_0x70);
|
||||
dKy_GxFog_tevstr_set(this->mTevStr);
|
||||
GXClearVtxDesc();
|
||||
|
||||
GXSetVtxDesc(GX_VA_POS, GX_INDEX8);
|
||||
GXSetVtxDesc(GX_VA_NRM,GX_INDEX8);
|
||||
GXSetVtxDesc(GX_VA_TEX0,GX_INDEX8);
|
||||
GXSetVtxDesc(GX_VA_NRM, GX_INDEX8);
|
||||
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX8);
|
||||
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0,GX_VA_POS,GX_CLR_RGBA,GX_F32,0);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0,GX_VA_NRM,GX_CLR_RGB,GX_F32,0);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0,GX_VA_TEX0,GX_CLR_RGBA,GX_F32,0);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_F32, 0);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_CLR_RGB, GX_F32, 0);
|
||||
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_F32, 0);
|
||||
|
||||
GXSetArray(GX_VA_POS, this->getPos(), 12);
|
||||
GXSetArray(GX_VA_NRM, &this->mNrm[this->field_0x74 * 0xa9], 12);
|
||||
GXSetArray(GX_VA_NRM, this->getNrm(), 12);
|
||||
GXSetArray(GX_VA_TEX0, &l_texCoord, 8);
|
||||
|
||||
GXSetZCompLoc(0);
|
||||
GXSetZMode(GX_ENABLE,GX_LEQUAL,GX_ENABLE);
|
||||
GXSetZMode(GX_ENABLE, GX_LEQUAL, GX_ENABLE);
|
||||
GXSetNumChans(1);
|
||||
GXSetChanCtrl(GX_COLOR0,GX_ENABLE,GX_SRC_REG,GX_SRC_REG,0xff,GX_DF_CLAMP,GX_AF_SPOT);
|
||||
GXSetChanCtrl(GX_COLOR0, GX_ENABLE, GX_SRC_REG, GX_SRC_REG, 0xff, GX_DF_CLAMP, GX_AF_SPOT);
|
||||
GXSetNumTexGens(1);
|
||||
GXSetTexCoordGen2(GX_TEXCOORD0,GX_TG_MTX2x4,GX_TG_TEX0,0x3c,0,0x7d);
|
||||
GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3c);
|
||||
GXSetNumTevStages(1);
|
||||
GXSetTevSwapMode(GX_TEVSTAGE0,GX_TEV_SWAP0,GX_TEV_SWAP0);
|
||||
GXSetTevSwapMode(GX_TEVSTAGE0, GX_TEV_SWAP0, GX_TEV_SWAP0);
|
||||
|
||||
dKy_Global_amb_set(this->field_0x70);
|
||||
GXSetTevOrder(GX_TEVSTAGE0,GX_TEXCOORD0,GX_TEXMAP0,GX_COLOR0A0);
|
||||
dKy_Global_amb_set(this->mTevStr);
|
||||
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0);
|
||||
|
||||
GXColor local_84 = {1, 0, 0, 0};
|
||||
GXSetTevColor(GX_TEVREG0, local_84);
|
||||
GXColor local_8c = {1, 0, 0, 0};
|
||||
GXSetTevKColor(GX_KCOLOR0, local_8c);
|
||||
|
||||
GXSetTevKColorSel(GX_TEVSTAGE0,GX_TEV_KCSEL_K0);
|
||||
GXSetTevColorIn(GX_TEVSTAGE0,GX_CC_KONST,GX_CC_TEXC,GX_CC_RASC,GX_CC_C0);
|
||||
GXSetTevColorOp(GX_TEVSTAGE0,GX_TEV_ADD,GX_TB_ZERO,GX_CS_SCALE_4,GX_TRUE,GX_TEVPREV);
|
||||
GXSetTevAlphaIn(GX_TEVSTAGE0,GX_CA_ZERO,GX_CA_KONST,GX_CA_TEXA,GX_CA_ZERO);
|
||||
GXSetTevAlphaOp(GX_TEVSTAGE0,GX_TEV_ADD,GX_TB_ZERO,GX_CS_SCALE_1,GX_TRUE,GX_TEVPREV);
|
||||
GXSetTevKAlphaSel(GX_TEVSTAGE0,GX_TEV_KASEL_K3_A);
|
||||
GXSetAlphaCompare(GX_GREATER,0,GX_AOP_OR,GX_GREATER,0);
|
||||
GXSetTevKColorSel(GX_TEVSTAGE0, GX_TEV_KCSEL_K0);
|
||||
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_KONST, GX_CC_TEXC, GX_CC_RASC, GX_CC_C0);
|
||||
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_4, GX_TRUE, GX_TEVPREV);
|
||||
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_KONST, GX_CA_TEXA, GX_CA_ZERO);
|
||||
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
|
||||
GXSetTevKAlphaSel(GX_TEVSTAGE0, GX_TEV_KASEL_K3_A);
|
||||
GXSetAlphaCompare(GX_GREATER, 0, GX_AOP_OR, GX_GREATER, 0);
|
||||
|
||||
GXTlutObj GStack_80;
|
||||
GXInitTlutObj(&GStack_80,pal_d,GX_TL_RGB5A3,0x100);
|
||||
GXInitTlutObj(&GStack_80, lut, GX_TL_RGB5A3, 0x100);
|
||||
|
||||
GXTexObj GStack_74;
|
||||
GXInitTexObjCI(&GStack_74,lut,0x80,0x80,GX_TF_C8,GX_CLAMP,GX_CLAMP,0,0);
|
||||
GXInitTexObjLOD(&GStack_74,GX_LINEAR,GX_LINEAR,0.0,0.0,0.0,0,0,GX_ANISO_1);
|
||||
GXInitTexObjCI(&GStack_74, image, 0x80, 0x80, GX_TF_C8, GX_CLAMP, GX_CLAMP, 0, 0);
|
||||
GXInitTexObjLOD(&GStack_74, GX_LINEAR, GX_LINEAR, 0.0, 0.0, 0.0, 0, 0, GX_ANISO_1);
|
||||
|
||||
GXLoadTlut(&GStack_80,0);
|
||||
GXLoadTexObj(&GStack_74,GX_TEXMAP0);
|
||||
GXLoadTlut(&GStack_80, 0);
|
||||
GXLoadTexObj(&GStack_74, GX_TEXMAP0);
|
||||
|
||||
GXSetCullMode(GX_CULL_BACK);
|
||||
|
||||
GXLoadPosMtxImm(this->mMtx, GX_PNMTX0);
|
||||
Mtx MStack_54;
|
||||
mDoMtx_inverseTranspose(this->mMtx, MStack_54);
|
||||
cMtx_inverseTranspose(this->mMtx, MStack_54);
|
||||
|
||||
GXLoadNrmMtxImm(MStack_54,GX_PNMTX0);
|
||||
GXLoadNrmMtxImm(MStack_54, GX_PNMTX0);
|
||||
GXCallDisplayList(l_Egnd_mantDL, 0x3e0);
|
||||
|
||||
GXInitTexObjCI(&GStack_74,image,0x80,0x80,GX_TF_C8,GX_CLAMP,GX_CLAMP,0,0);
|
||||
GXInitTexObjLOD(&GStack_74,GX_LINEAR,GX_LINEAR,0.0,0.0,0.0,0,0,GX_ANISO_1);
|
||||
GXLoadTexObj(&GStack_74,GX_TEXMAP0);
|
||||
|
||||
GXInitTexObjCI(&GStack_74, l_Egnd_mantTEX_U, 0x80, 0x80, GX_TF_C8, GX_CLAMP, GX_CLAMP, 0, 0);
|
||||
GXInitTexObjLOD(&GStack_74, GX_LINEAR, GX_LINEAR, 0.0, 0.0, 0.0, 0, 0, GX_ANISO_1);
|
||||
GXLoadTexObj(&GStack_74, GX_TEXMAP0);
|
||||
|
||||
GXColor local_94 = {0, 0, 0, 0};
|
||||
GXSetTevColor(GX_TEVREG0,local_94);
|
||||
GXSetTevColor(GX_TEVREG0, local_94);
|
||||
GXColor local_9c = {0, 0, 0, 0};
|
||||
GXSetTevKColor(GX_KCOLOR0,local_9c);
|
||||
GXSetTevKColor(GX_KCOLOR0, local_9c);
|
||||
|
||||
GXSetCullMode(GX_CULL_FRONT);
|
||||
GXLoadPosMtxImm(this->mMtx2, GX_PNMTX0);
|
||||
mDoMtx_inverseTranspose(this->mMtx2, MStack_54);
|
||||
cMtx_inverseTranspose(this->mMtx2, MStack_54);
|
||||
|
||||
GXLoadNrmMtxImm(MStack_54,GX_PNMTX0);
|
||||
GXLoadNrmMtxImm(MStack_54, GX_PNMTX0);
|
||||
GXCallDisplayList(l_Egnd_mantDL, 0x3e0);
|
||||
|
||||
this->field_0x74 = lbl_277_bss_0 & 1;
|
||||
|
@ -365,19 +352,15 @@ void daMant_packet_c::draw() {
|
|||
|
||||
/* 808616B8-8086176C 000498 00B4+00 1/0 0/0 0/0 .text daMant_Draw__FP10mant_class */
|
||||
static int daMant_Draw(mant_class* i_this) {
|
||||
// NONMATCHING
|
||||
g_env_light.settingTevStruct(0, &i_this->current.pos, &i_this->tevStr);
|
||||
|
||||
MtxTrans(0.0f, 0.0f, 0.0f, 0.0f);
|
||||
|
||||
Mtx* viewMtx = &j3dSys.mViewMtx;
|
||||
Mtx* mtx1 = &i_this->field_0x0570.mMtx;
|
||||
cMtx_concat(*viewMtx, *calc_mtx, *mtx1);
|
||||
cMtx_concat(j3dSys.getViewMtx(), *calc_mtx, i_this->field_0x0570.getMtx());
|
||||
|
||||
Mtx* mtx2 = &i_this->field_0x0570.mMtx2;
|
||||
cMtx_concat(*viewMtx, *calc_mtx, *mtx2);
|
||||
cMtx_concat(j3dSys.getViewMtx(), *calc_mtx, i_this->field_0x0570.getMtx2());
|
||||
|
||||
i_this->field_0x0570.field_0x70 = &i_this->tevStr;
|
||||
i_this->field_0x0570.setTevStr(&i_this->tevStr);
|
||||
|
||||
j3dSys.getDrawBuffer(0)->entryImm(&i_this->field_0x0570, 0);
|
||||
|
||||
|
@ -385,12 +368,12 @@ static int daMant_Draw(mant_class* i_this) {
|
|||
}
|
||||
|
||||
/* 8086176C-80861F60 00054C 07F4+00 1/1 0/0 0/0 .text joint_control__FP10mant_classP8mant_j_siff */
|
||||
// NONMATCHING - regalloc
|
||||
static void joint_control(mant_class* i_this, mant_j_s* param_2, int param_3, f32 param_4, f32 param_5) {
|
||||
// NONMATCHING
|
||||
static f32 d_p[12] = {
|
||||
1.4000001f, 0.6f, 0.35f, 0.3f, 0.3f, 0.3f, 0.25f, 0.2f, 0.2f, 0.2f, 0.15f, 0.1f
|
||||
};
|
||||
|
||||
|
||||
cXyz local_134, local_140, local_14c, local_158, local_164;
|
||||
BOOL bVar2 = FALSE;
|
||||
f32 dVar14, dVar16, dVar17, dVar18, dVar19, dVar20;
|
||||
|
@ -422,7 +405,7 @@ static void joint_control(mant_class* i_this, mant_j_s* param_2, int param_3, f3
|
|||
cXyz local_188(0.0f, 0.0f, 0.0f);
|
||||
cXyz local_194(0.0f, 0.0f, 0.0f);
|
||||
cXyz local_1a0(0.0f, 0.0f, 0.0f);
|
||||
|
||||
|
||||
cMtx_YrotS(*calc_mtx, param_2->field_0x013a);
|
||||
local_134.x = 0.0f;
|
||||
local_134.y = 0.0f;
|
||||
|
@ -450,14 +433,14 @@ static void joint_control(mant_class* i_this, mant_j_s* param_2, int param_3, f3
|
|||
|
||||
dVar18 = i_this->field_0x3958;
|
||||
dVar18 *= 1.0f - i * 0.07f;
|
||||
|
||||
|
||||
local_1ac.zero();
|
||||
|
||||
|
||||
// (1.0f / 100.0f)
|
||||
if (param_4 > 0.01f) {
|
||||
dVar16 = 0.0f;
|
||||
f32 dVar14 = param_4 * (i * 0.05f + 1.0f);
|
||||
f32 dVar14 = param_4 * (i * 0.2f + 1.0f);
|
||||
cMtx_YrotS(*calc_mtx, param_2->field_0x013a);
|
||||
cMtx_XrotM(*calc_mtx, param_2->field_0x0138);
|
||||
|
||||
|
@ -466,7 +449,7 @@ static void joint_control(mant_class* i_this, mant_j_s* param_2, int param_3, f3
|
|||
local_140.z = -15.0f;
|
||||
MtxPosition(&local_140, &local_1ac);
|
||||
}
|
||||
|
||||
|
||||
if (param_5 > 0.01f) {
|
||||
dVar14 = param_5 * (i * 0.2f + 1.0f);
|
||||
cMtx_YrotS(*calc_mtx, param_2->field_0x013a + -6000);
|
||||
|
@ -539,16 +522,15 @@ static void joint_control(mant_class* i_this, mant_j_s* param_2, int param_3, f3
|
|||
|
||||
/* 80861F9C-80862424 000D7C 0488+00 1/1 0/0 0/0 .text mant_v_calc__FP10mant_class */
|
||||
static void mant_v_calc(mant_class* i_this) {
|
||||
// NONMATCHING
|
||||
cXyz local_e4, cStack_f0, local_fc, local_108;
|
||||
f32 dVar16, dVar15, dVar14, uVar15;
|
||||
csXyz local_134(0, 0, 0);
|
||||
// mant_j_s* mantJS;
|
||||
mant_j_s* mantJS;
|
||||
|
||||
local_fc = i_this->field_0x3928[0] - i_this->field_0x3928[1];
|
||||
local_134.y = cM_atan2s(local_fc.x, local_fc.z) + 0x4000;
|
||||
|
||||
// mantJS = i_this->field_0x25a8;
|
||||
mantJS = i_this->field_0x25a8;
|
||||
|
||||
local_e4.x = 0.0f;
|
||||
|
||||
|
@ -558,7 +540,7 @@ static void mant_v_calc(mant_class* i_this) {
|
|||
|
||||
local_108 = (i_this->current.pos - i_this->field_0x3940) * 0.9f;
|
||||
|
||||
if (10.0f < local_108.abs()) {
|
||||
if (local_108.abs() < 10.0f) {
|
||||
uVar15 = 0.0f;
|
||||
} else {
|
||||
local_134.y = cM_atan2s(local_108.x, local_108.z);
|
||||
|
@ -575,7 +557,7 @@ static void mant_v_calc(mant_class* i_this) {
|
|||
f32 uVar14 = 0.0f;
|
||||
if (i_this->field_0x3965 == 0) {
|
||||
if (i_this->field_0x3969 == 1) {
|
||||
uVar14 = (1.0f / 20.0f);
|
||||
uVar14 = (1.0f / 5.0f);
|
||||
} else if (i_this->field_0x3969 == 2) {
|
||||
uVar14 = 0.6f;
|
||||
} else if (i_this->field_0x3969 == 3) {
|
||||
|
@ -583,30 +565,30 @@ static void mant_v_calc(mant_class* i_this) {
|
|||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < 13; i++) {
|
||||
i_this->field_0x25a8[i].field_0x0[0].x = i_this->field_0x3928[1].x + (dVar16 * i);
|
||||
i_this->field_0x25a8[i].field_0x0[0].y = i_this->field_0x3928[1].y + (dVar15 * i);
|
||||
i_this->field_0x25a8[i].field_0x0[0].z = i_this->field_0x3928[1].z + (dVar14 * i);
|
||||
for (int i = 0; i < 13; i++, mantJS++) {
|
||||
i_this->field_0x25a8[i].field_0x0[0].x = i_this->field_0x3928[1].x + (dVar16 * i);
|
||||
i_this->field_0x25a8[i].field_0x0[0].y = i_this->field_0x3928[1].y + (dVar15 * i);
|
||||
i_this->field_0x25a8[i].field_0x0[0].z = i_this->field_0x3928[1].z + (dVar14 * i);
|
||||
|
||||
cMtx_YrotS(*calc_mtx, local_134.y);
|
||||
|
||||
local_e4.z = cM_fsin(i * 0.2617994f);
|
||||
local_e4.y = local_e4.z * -10.0f;
|
||||
local_e4.z = local_e4.z * -20.0f;
|
||||
f32 temp = cM_fsin(i * 0.2617994f);
|
||||
local_e4.y = temp * -10.0f;
|
||||
local_e4.z = temp * -20.0f;
|
||||
|
||||
MtxPosition(&local_e4, &cStack_f0);
|
||||
|
||||
i_this->field_0x25a8[i].field_0x0[i] += cStack_f0;
|
||||
i_this->field_0x25a8[i].field_0x0[0] += cStack_f0;
|
||||
|
||||
i_this->field_0x25a8[i].field_0x0138 = local_134.x;
|
||||
i_this->field_0x25a8[i].field_0x013a = local_134.y + (i + -6) * 0x5dc;
|
||||
|
||||
for (int j = 0; j < 12; j++) {
|
||||
for (int j = 1; j < 13; j++) {
|
||||
i_this->field_0x25a8[i].field_0x0[j].x += local_108.x;
|
||||
i_this->field_0x25a8[i].field_0x0[j].z += local_108.z;
|
||||
}
|
||||
|
||||
joint_control(i_this, i_this->field_0x25a8, i, uVar15, uVar14);
|
||||
joint_control(i_this, mantJS, i, uVar15, uVar14);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -629,9 +611,8 @@ static int mant_cut_type;
|
|||
|
||||
/* 808624E8-80862908 0012C8 0420+00 2/1 0/0 0/0 .text daMant_Execute__FP10mant_class */
|
||||
static int daMant_Execute(mant_class* i_this) {
|
||||
// NONMATCHING
|
||||
f32 in_f30, in_f31;
|
||||
int unaff_r29, iVar2, uVar1, uVar4;
|
||||
f32 var_f31, var_f30;
|
||||
int iVar8, unaff_r29, iVar2, uVar1, uVar4;
|
||||
|
||||
i_this->field_0x25a0++;
|
||||
lbl_277_bss_0++;
|
||||
|
@ -668,7 +649,7 @@ static int daMant_Execute(mant_class* i_this) {
|
|||
|
||||
i_this->field_0x3940 = i_this->current.pos;
|
||||
|
||||
int iVar8 = 0;
|
||||
iVar8 = 0;
|
||||
|
||||
if (i_this->field_0x3967 != 0) {
|
||||
mant_cut_type = i_this->field_0x3967;
|
||||
|
@ -684,18 +665,18 @@ static int daMant_Execute(mant_class* i_this) {
|
|||
}
|
||||
|
||||
unaff_r29 = cM_rndF(65536.0f);
|
||||
in_f31 = cM_rndFX(32.0f);
|
||||
in_f30 = cM_rndFX(32.0f);
|
||||
var_f31 = cM_rndFX(32.0f);
|
||||
var_f30 = cM_rndFX(32.0f);
|
||||
}
|
||||
|
||||
i_this->field_0x3967 = 0;
|
||||
}
|
||||
|
||||
for (int i = 0; i < iVar8; i++) {
|
||||
in_f31 += cM_ssin(unaff_r29);
|
||||
in_f30 -= cM_scos(unaff_r29);
|
||||
var_f31 += cM_ssin(unaff_r29);
|
||||
var_f30 -= cM_scos(unaff_r29);
|
||||
|
||||
uVar4 = (int)(in_f31 + 64.0f) | (int)(in_f30 + 64.0f) << 7;
|
||||
uVar4 = (int)(var_f31 + 64.0f) | (int)(var_f30 + 64.0f) << 7;
|
||||
|
||||
if (mant_cut_type == 0) {
|
||||
if (i <= 3 || 36 <= i) {
|
||||
|
@ -720,34 +701,30 @@ static int daMant_Execute(mant_class* i_this) {
|
|||
}
|
||||
|
||||
for (int j = 0; j < iVar2; j++) {
|
||||
if (j != 0) {
|
||||
if (j == 1) {
|
||||
uVar4 = uVar1++;
|
||||
} else if (j == 2) {
|
||||
uVar4 = uVar1 + 0x80;
|
||||
} else if (j == 3) {
|
||||
uVar4 = uVar1 + 0x81;
|
||||
} else {
|
||||
if (j == 3) {
|
||||
uVar4 = uVar1 + 0x81;
|
||||
} else {
|
||||
if (j == 4) {
|
||||
uVar4 = uVar1 + 2;
|
||||
} else if (j == 5) {
|
||||
uVar4 = uVar1 + 0x82;
|
||||
} else if (j == 6) {
|
||||
uVar4 = uVar1 + 0x102;
|
||||
} else if (j == 7) {
|
||||
uVar4 = uVar1 + 0x101;
|
||||
} else if (j == 8) {
|
||||
uVar4 = uVar1 + 0x100;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (j == 0) {
|
||||
uVar1 = uVar4;
|
||||
} else if (j == 1) {
|
||||
uVar1 = uVar4 + 1;
|
||||
} else if (j == 2) {
|
||||
uVar1 = uVar4 + 0x80;
|
||||
} else if (j == 3) {
|
||||
uVar1 = uVar4 + 0x81;
|
||||
} else if (j == 3) {
|
||||
uVar1 = uVar4 + 0x81;
|
||||
} else if (j == 4) {
|
||||
uVar1 = uVar4 + 2;
|
||||
} else if (j == 5) {
|
||||
uVar1 = uVar4 + 0x82;
|
||||
} else if (j == 6) {
|
||||
uVar1 = uVar4 + 0x102;
|
||||
} else if (j == 7) {
|
||||
uVar1 = uVar4 + 0x101;
|
||||
} else if (j == 8) {
|
||||
uVar1 = uVar4 + 0x100;
|
||||
}
|
||||
|
||||
if (0 <= uVar4 && uVar4 < 0x4000) {
|
||||
int iVar5 = (uVar4 & 7) + (uVar4 & 0x78) * 4 + (uVar4 >> 4 & 0x18) + (uVar4 & 0x3e00);
|
||||
if (0 <= uVar1 && uVar1 < 0x4000) {
|
||||
int iVar5 = (uVar1 & 7) + (uVar1 & 0x78) * 4 + (uVar1 >> 4 & 0x18) + (uVar1 & 0x3e00);
|
||||
l_Egnd_mantTEX_U[iVar5] = 0;
|
||||
l_Egnd_mantTEX[iVar5] = 0;
|
||||
}
|
||||
|
@ -769,11 +746,10 @@ static int daMant_Delete(mant_class* i_this) {
|
|||
|
||||
/* 80862918-80862AC0 0016F8 01A8+00 1/0 0/0 0/0 .text daMant_Create__FP10fopAc_ac_c */
|
||||
static int daMant_Create(fopAc_ac_c* i_this) {
|
||||
// NONMATCHING
|
||||
mant_class* m_this = (mant_class*)i_this;
|
||||
|
||||
// m_this->field_0x0570.field_0x74 = 0;
|
||||
|
||||
fopAcM_SetupActor(m_this, mant_class);
|
||||
//m_this->field_0x0570.field_0x74 = 0;
|
||||
m_this->field_0x259c = fopAcM_GetParam(i_this);
|
||||
|
||||
fopAcM_SetMin(i_this, -2000.0f, -2000.0f, -2000.0f);
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -8,12 +8,6 @@
|
|||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "SSystem/SComponent/c_counter.h"
|
||||
|
||||
/* 80B6ED28-80B6ED34 000008 000C+00 1/1 0/0 0/0 .bss @3811 */
|
||||
static u8 lit_3811[12];
|
||||
|
||||
/* 80B6ED34-80B6ED38 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */
|
||||
static u8 l_HIO[4];
|
||||
|
||||
UNK_REL_DATA
|
||||
|
||||
/* 80B6EAB4-80B6EABC 000020 0008+00 1/1 0/0 0/0 .data l_bmdData */
|
||||
|
@ -73,6 +67,9 @@ daNpc_Zant_c::cutFunc daNpc_Zant_c::mCutList[1] = {
|
|||
NULL
|
||||
};
|
||||
|
||||
/* 80B6ED34-80B6ED38 000014 0004+00 1/1 0/0 0/0 .bss l_HIO */
|
||||
static daNpc_Zant_Param_c l_HIO;
|
||||
|
||||
/* 80B6C1AC-80B6C2D0 0000EC 0124+00 1/0 0/0 0/0 .text __dt__12daNpc_Zant_cFv */
|
||||
daNpc_Zant_c::~daNpc_Zant_c() {
|
||||
OS_REPORT("|%06d:%x|daNpc_Zant_c -> デストラクト\n", g_Counter.mCounter0, this);
|
||||
|
@ -444,7 +441,7 @@ void daNpc_Zant_c::drawGhost() {
|
|||
/* 80B6D21C-80B6D264 00115C 0048+00 1/1 0/0 0/0 .text selectAction__12daNpc_Zant_cFv */
|
||||
int daNpc_Zant_c::selectAction() {
|
||||
field_0xf84 = NULL;
|
||||
field_0xf84 = &daNpc_Zant_c::talk;
|
||||
field_0xf84 = &daNpc_Zant_c::wait;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -487,7 +484,7 @@ int daNpc_Zant_c::wait(void* param_1) {
|
|||
if (chkActorInSight(mPlayerActorMngr.getActorP(), mAttnFovY, mCurAngle.y)) {
|
||||
mJntAnm.lookPlayer(0);
|
||||
}
|
||||
|
||||
|
||||
if (!srchPlayerActor() && home.angle.y == mCurAngle.y) {
|
||||
mMode = 1;
|
||||
}
|
||||
|
@ -534,7 +531,7 @@ int daNpc_Zant_c::talk(void* param_1) {
|
|||
dComIfGp_event_reset();
|
||||
mMode = 3;
|
||||
}
|
||||
|
||||
|
||||
mJntAnm.lookPlayer(0);
|
||||
if (mTwilight) {
|
||||
mJntAnm.lookNone(0);
|
||||
|
|
|
@ -44,7 +44,6 @@ const static dCcD_SrcSph l_sph_src = {
|
|||
|
||||
/* 80C7CB18-80C7CE24 000078 030C+00 1/1 0/0 0/0 .text nodeCallBack__FP8J3DJointi */
|
||||
static int nodeCallBack(J3DJoint* i_joint, int param_2) {
|
||||
// NONMATCHING
|
||||
if (param_2 == 0) {
|
||||
int jntNo = i_joint->getJntNo();
|
||||
J3DModel* model = j3dSys.getModel();
|
||||
|
@ -66,11 +65,12 @@ static int nodeCallBack(J3DJoint* i_joint, int param_2) {
|
|||
}
|
||||
|
||||
f32 fVar1 = player->current.pos.absXZ(i_this->field_0x894);
|
||||
f32 yDiff = i_this->field_0x894.y - player->current.pos.y;
|
||||
if (fVar1 > i_this->field_0x914) {
|
||||
fVar1 -= i_this->field_0x914;
|
||||
}
|
||||
|
||||
s16 sVar1 = cM_atan2s(i_this->field_0x894.y - player->current.pos.y, fVar1);
|
||||
s16 sVar1 = cM_atan2s(yDiff, fVar1);
|
||||
if (sVar1 > 8000) {
|
||||
sVar1 = 8000;
|
||||
}
|
||||
|
@ -282,7 +282,8 @@ void daObjL6Bm_c::action() {
|
|||
|
||||
/* 80C7D598-80C7D6CC 000AF8 0134+00 1/0 0/0 0/0 .text actionWait__11daObjL6Bm_cFv */
|
||||
void daObjL6Bm_c::actionWait() {
|
||||
// NONMATCHING
|
||||
bool var_r28 = false;
|
||||
bool var_r27 = false;
|
||||
f32 fVar1;
|
||||
f32 playerDistance = fopAcM_searchPlayerDistanceXZ(this);
|
||||
|
||||
|
@ -292,15 +293,26 @@ void daObjL6Bm_c::actionWait() {
|
|||
fVar1 = 1000.0f;
|
||||
}
|
||||
|
||||
if (playerDistance < fVar1 && (s16)abs((s16)(cLib_targetAngleY(fopAcM_GetPosition_p(this), fopAcM_GetPosition_p(dComIfGp_getPlayer(0))) - current.angle.y)) < 0x1000) {
|
||||
if (playerDistance < fVar1) {
|
||||
var_r28 = true;
|
||||
}
|
||||
|
||||
s16 targetAngle = cLib_targetAngleY(fopAcM_GetPosition_p(this), fopAcM_GetPosition_p(dComIfGp_getPlayer(0)));
|
||||
s16 angleDiff = (s16)abs((s16)(targetAngle - current.angle.y));
|
||||
s16 unkBound = 0x2000;
|
||||
if (angleDiff < unkBound / 2) {
|
||||
var_r27 = true;
|
||||
}
|
||||
|
||||
if (var_r28 && var_r27) {
|
||||
setAction(1);
|
||||
field_0x911 = 20;
|
||||
} else {
|
||||
s16 sVar1;
|
||||
if (getArg1() == 0xFF) {
|
||||
sVar1 = 0x4B0;
|
||||
} else {
|
||||
if (getArg1() != 0xFF) {
|
||||
sVar1 = (u16)getArg1() * 100;
|
||||
} else {
|
||||
sVar1 = 0x4B0;
|
||||
}
|
||||
current.angle.y += sVar1;
|
||||
}
|
||||
|
@ -313,8 +325,8 @@ void daObjL6Bm_c::actionWait() {
|
|||
|
||||
/* 80C7D6CC-80C7D894 000C2C 01C8+00 1/0 0/0 0/0 .text actionFindPlayer__11daObjL6Bm_cFv */
|
||||
void daObjL6Bm_c::actionFindPlayer() {
|
||||
// NONMATCHING
|
||||
f32 fVar1;
|
||||
bool var_r28 = false;
|
||||
f32 playerDistance = fopAcM_searchPlayerDistanceXZ(this);
|
||||
|
||||
if (getArg0() != 0xFF) {
|
||||
|
@ -324,6 +336,10 @@ void daObjL6Bm_c::actionFindPlayer() {
|
|||
}
|
||||
|
||||
if (playerDistance < fVar1) {
|
||||
var_r28 = true;
|
||||
}
|
||||
|
||||
if (!var_r28) {
|
||||
OS_REPORT("プレイヤー離れました!\n"); // Player has left!\n
|
||||
setAction(0);
|
||||
|
||||
|
|
|
@ -64,7 +64,7 @@ int daTag_KMsg_c::Delete() {
|
|||
/* 8048E010-8048E8B8 000210 08A8+00 1/1 0/0 0/0 .text Execute__12daTag_KMsg_cFv */
|
||||
// NONMATCHING Various issues: stack, getTalkAngle
|
||||
int daTag_KMsg_c::Execute() {
|
||||
bool r28 = false;
|
||||
bool var_r28 = false;
|
||||
if (home.roomNo == dComIfGp_roomControl_getStayNo()) {
|
||||
if (isDelete()) {
|
||||
fopAcM_delete(this);
|
||||
|
@ -73,15 +73,17 @@ int daTag_KMsg_c::Execute() {
|
|||
if (getType() == KMSG_TYPE_3) {
|
||||
if (field_0x5c3 == 0) {
|
||||
attention_info.flags = 0x80;
|
||||
attention_info.distances[7] = 0x4a;
|
||||
attention_info.distances[fopAc_attn_ETC_e] = 0x4a;
|
||||
} else {
|
||||
attention_info.flags = 0;
|
||||
}
|
||||
} else {
|
||||
int angle = getTalkAngle();
|
||||
int talkDistance = getTalkDis();
|
||||
attention_info.distances[1] = daNpcT_getDistTableIdx(talkDistance, angle);
|
||||
attention_info.distances[3] = attention_info.distances[1];
|
||||
#if VERSION == VERSION_SHIELD_DEBUG
|
||||
attention_info.distances[fopAc_attn_TALK_e] = daNpcT_getDistTableIdx(getTalkDis(), getTalkAngle());
|
||||
#else
|
||||
attention_info.distances[fopAc_attn_TALK_e] = daNpcT_getDistTableIdx(getTalkAngle(), getTalkDis());
|
||||
#endif
|
||||
attention_info.distances[fopAc_attn_SPEAK_e] = attention_info.distances[fopAc_attn_TALK_e];
|
||||
if (getAttnPosOffset() != 1000000000.0f) {
|
||||
attention_info.flags = 0xa;
|
||||
} else {
|
||||
|
@ -93,6 +95,7 @@ int daTag_KMsg_c::Execute() {
|
|||
{
|
||||
attention_info.flags = 0;
|
||||
}
|
||||
|
||||
if (dComIfGp_event_runCheck()) {
|
||||
if (eventInfo.checkCommandTalk()) {
|
||||
u16 iVar10 = 0;
|
||||
|
@ -114,7 +117,7 @@ int daTag_KMsg_c::Execute() {
|
|||
}
|
||||
|
||||
} else {
|
||||
r28 = true;
|
||||
var_r28 = true;
|
||||
if (!field_0x5c4) {
|
||||
mMsgFlow.init(this, mFlowNodeNo, 0, NULL);
|
||||
field_0x5c4 = true;
|
||||
|
@ -174,36 +177,39 @@ int daTag_KMsg_c::Execute() {
|
|||
attention_info.position.y += getAttnPosOffset();
|
||||
}
|
||||
eyePos.y += getEyePosOffset();
|
||||
}
|
||||
|
||||
if (r28) {
|
||||
f32 f31;
|
||||
if (getAttnPosOffset() != 1000000000.0f) {
|
||||
f31 = -0.5f * getAttnPosOffset();
|
||||
} else {
|
||||
f31 = -20.0f;
|
||||
}
|
||||
|
||||
cSAngle angle = shape_angle.y;
|
||||
cXyz vec60 = attention_info.position;
|
||||
vec60.y += f31;
|
||||
cXyz vec54;
|
||||
vec54.x = vec60.x + 80.0f * angle.Sin();
|
||||
vec54.y = vec60.y;
|
||||
vec54.z = vec60.z + 80.0f * angle.Cos();
|
||||
dBgS_LinChk lin_chk;
|
||||
lin_chk.ClrSttsWallOff();
|
||||
lin_chk.onBackFlag();
|
||||
lin_chk.onFrontFlag();
|
||||
lin_chk.Set(&vec54, &vec60, NULL);
|
||||
if (dComIfG_Bgsp().LineCross(&lin_chk)) {
|
||||
cXyz vec48;
|
||||
cXyz vec30 = vec54 - vec60;
|
||||
vec48 = lin_chk.GetCross() + vec30.norm() * 10.0f;
|
||||
attention_info.position.x = vec48.x;
|
||||
attention_info.position.z = vec48.z;
|
||||
}
|
||||
#if VERSION != VERSION_SHIELD_DEBUG
|
||||
if (var_r28) {
|
||||
f32 f31;
|
||||
if (getAttnPosOffset() != 1000000000.0f) {
|
||||
f31 = -0.5f * getAttnPosOffset();
|
||||
} else {
|
||||
f31 = -20.0f;
|
||||
}
|
||||
|
||||
cSAngle angle = shape_angle.y;
|
||||
cXyz vec60 = attention_info.position;
|
||||
vec60.y += f31;
|
||||
cXyz vec54;
|
||||
vec54.x = vec60.x + 80.0f * angle.Sin();
|
||||
vec54.y = vec60.y;
|
||||
vec54.z = vec60.z + 80.0f * angle.Cos();
|
||||
dBgS_LinChk lin_chk;
|
||||
lin_chk.ClrSttsWallOff();
|
||||
lin_chk.onBackFlag();
|
||||
lin_chk.onFrontFlag();
|
||||
lin_chk.Set(&vec54, &vec60, NULL);
|
||||
if (dComIfG_Bgsp().LineCross(&lin_chk)) {
|
||||
cXyz vec48;
|
||||
cXyz vec30 = vec54 - vec60;
|
||||
vec48 = lin_chk.GetCross() + vec30.norm() * 10.0f;
|
||||
attention_info.position.x = vec48.x;
|
||||
attention_info.position.z = vec48.z;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue