d_a_npc_md progress

This commit is contained in:
LagoLunatic
2023-10-26 23:57:58 -04:00
parent febaa8ff15
commit 828c8672e0
10 changed files with 527 additions and 124 deletions
+1 -1
View File
@@ -41,7 +41,7 @@ enum cCcD_ObjAtType {
/* 0x00100000 */ AT_TYPE_LIGHT_ARROW = (1 << 20),
/* 0x00200000 */ AT_TYPE_LEAF_WIND = (1 << 21),
/* 0x00400000 */ AT_TYPE_UNK400000 = (1 << 22),
/* 0x00800000 */ AT_TYPE_UNK800000 = (1 << 23),
/* 0x00800000 */ AT_TYPE_LIGHT = (1 << 23),
/* 0x01000000 */ AT_TYPE_STALFOS_MACE = (1 << 24),
/* 0x04000000 */ AT_TYPE_DARKNUT_SWORD = (1 << 26),
/* 0x08000000 */ AT_TYPE_GRAPPLING_HOOK = (1 << 27),
+88 -58
View File
@@ -195,18 +195,30 @@ public:
class daNpc_Md_c : public daPy_npc_c {
public:
enum ActionStatus {
ACTION_STARTING = 0,
ACTION_ONGOING = 1,
ACTION_ENDING = -1,
};
typedef int (daNpc_Md_c::*ActionFunc)(void*);
bool chkPlayerAction(ActionFunc func) { return mCurrPlayerActionFunc == func; }
bool chkNpcAction(ActionFunc func) { return mCurrNpcActionFunc == func; }
bool isOldLightBodyHit() { return m30F0 & 0x8000; }
daNpc_Md_c() {}
~daNpc_Md_c();
void XyCheckCB(int);
void XyEventCB(int);
s32 create();
void createHeap();
void setAction(int (daNpc_Md_c::**)(void*), int (daNpc_Md_c::*)(void*), void*);
BOOL createHeap();
BOOL setAction(ActionFunc*, ActionFunc, void*);
void npcAction(void*);
void setNpcAction(int (daNpc_Md_c::*)(void*), void*);
void setNpcAction(ActionFunc, void*);
void playerAction(void*);
void setPlayerAction(int (daNpc_Md_c::*)(void*), void*);
void setPlayerAction(ActionFunc, void*);
void getStickAngY(int);
void calcStickPos(short, cXyz*);
void flyCheck();
@@ -228,50 +240,50 @@ public:
void setMessageAnimation(unsigned char);
void waitGroundCheck();
void chkAdanmaeDemoOrder();
void waitNpcAction(void*);
void harpWaitNpcAction(void*);
int waitNpcAction(void*);
int harpWaitNpcAction(void*);
void XYTalkCheck();
void talkNpcAction(void*);
void shipTalkNpcAction(void*);
void kyohiNpcAction(void*);
void shipNpcAction(void*);
void mwaitNpcAction(void*);
void squatdownNpcAction(void*);
void sqwait01NpcAction(void*);
int talkNpcAction(void*);
int shipTalkNpcAction(void*);
int kyohiNpcAction(void*);
int shipNpcAction(void*);
int mwaitNpcAction(void*);
int squatdownNpcAction(void*);
int sqwait01NpcAction(void*);
void changeCaught02();
void carryNpcAction(void*);
void throwNpcAction(void*);
void glidingNpcAction(void*);
int carryNpcAction(void*);
int throwNpcAction(void*);
int glidingNpcAction(void*);
void windProc();
void fallNpcAction(void*);
void fall02NpcAction(void*);
void wallHitNpcAction(void*);
void land01NpcAction(void*);
void land02NpcAction(void*);
void land03NpcAction(void*);
void piyo2NpcAction(void*);
void deleteNpcAction(void*);
void demoFlyNpcAction(void*);
int fallNpcAction(void*);
int fall02NpcAction(void*);
int wallHitNpcAction(void*);
int land01NpcAction(void*);
int land02NpcAction(void*);
int land03NpcAction(void*);
int piyo2NpcAction(void*);
int deleteNpcAction(void*);
int demoFlyNpcAction(void*);
void routeAngCheck(cXyz&, short*);
void routeWallCheck(cXyz&, cXyz&, short*);
void checkForwardGroundY(short);
void checkWallJump(short);
void routeCheck(float, short*);
void searchNpcAction(void*);
void hitNpcAction(void*);
int searchNpcAction(void*);
int hitNpcAction(void*);
void setNormalSpeedF(float, float, float, float, float);
void setSpeedAndAngleNormal(float, short);
void walkProc(float, short);
void jumpNpcAction(void*);
void escapeNpcAction(void*);
void waitPlayerAction(void*);
void walkPlayerAction(void*);
void hitPlayerAction(void*);
void jumpPlayerAction(void*);
void flyPlayerAction(void*);
void landPlayerAction(void*);
void mkamaePlayerAction(void*);
void carryPlayerAction(void*);
int jumpNpcAction(void*);
int escapeNpcAction(void*);
int waitPlayerAction(void*);
int walkPlayerAction(void*);
int hitPlayerAction(void*);
int jumpPlayerAction(void*);
int flyPlayerAction(void*);
int landPlayerAction(void*);
int mkamaePlayerAction(void*);
int carryPlayerAction(void*);
void eventProc();
void initialDefault(int);
void actionDefault(int);
@@ -312,9 +324,9 @@ public:
void talk_init();
void talk(int);
void getAnmType(unsigned char);
void initTexPatternAnm(unsigned char, bool);
BOOL initTexPatternAnm(unsigned char, bool);
void playTexPatternAnm();
void initLightBtkAnm(bool);
BOOL initLightBtkAnm(bool);
void playLightBtkAnm();
void setAnm(int);
void dNpc_Md_setAnm(mDoExt_McaMorf2*, float, int, float, float, char*, char*, const char*);
@@ -349,12 +361,18 @@ public:
virtual MtxP getRightHandMatrix() {}
virtual f32 getBaseAnimeFrameRate() {}
virtual f32 getBaseAnimeFrame() {}
static bool m_flying;
static short m_flyingTimer;
public:
/* 0x04EC */ request_of_phase_process_class mPhs;
/* 0x04F4 */ u8 m04F4[0x04FC - 0x04F4];
/* 0x04FC */ mDoExt_McaMorf2* m04FC;
/* 0x0500 */ u8 m0500[0x0520 - 0x0500];
/* 0x04F4 */ J3DModel* mpHarpModel;
/* 0x04F8 */ J3DModel* mpHarpLightModel;
/* 0x04FC */ mDoExt_McaMorf2* mpMorf;
/* 0x0500 */ mDoExt_McaMorf2* mpArmMorf;
/* 0x0504 */ mDoExt_McaMorf* mpWingMorf;
/* 0x0508 */ u8 m0508[0x0520 - 0x0508];
/* 0x0520 */ mDoExt_btpAnm m0520;
/* 0x0534 */ mDoExt_btkAnm m0534;
/* 0x0548 */ u8 m0548[0x054C - 0x0548];
@@ -372,24 +390,30 @@ public:
/* 0x3074 */ dPa_rippleEcallBack m3074;
/* 0x3088 */ u8 m3088[0x30A0 - 0x3088];
/* 0x30A0 */ cXyz m30A0;
/* 0x30AC */ u8 m30AC[0x30EC - 0x30AC];
/* 0x30AC */ u8 m30AC[0x30D4 - 0x30AC];
/* 0x30D4 */ ActionFunc mCurrPlayerActionFunc;
/* 0x30E0 */ ActionFunc mCurrNpcActionFunc;
/* 0x30EC */ int mMsgId;
/* 0x30F0 */ u32 m30F0;
/* 0x30F4 */ u8 m30F4[0x30F8 - 0x30F4];
/* 0x30F8 */ f32 m30F8;
/* 0x30FC */ u8 m30FC[0x3104 - 0x30FC];
/* 0x3104 */ int m3104;
/* 0x3108 */ u8 m3108[0x3120 - 0x3108];
/* 0x3120 */ u8 mArmRlocJointIdx;
/* 0x3121 */ u8 mArmLlocJointIdx;
/* 0x3122 */ u8 mWingRlocJointIdx;
/* 0x3123 */ u8 mWingLlocJointIdx;
/* 0x3124 */ u8 mNeckJointIdx;
/* 0x3125 */ u8 mWingR2JointIdx;
/* 0x3126 */ u8 mWingL2JointIdx;
/* 0x3127 */ u8 mWingR3JointIdx;
/* 0x3128 */ u8 mWingL3JointIdx;
/* 0x3129 */ u8 mHandLJointIdx;
/* 0x3108 */ u8 m3108[0x311C - 0x3108];
/* 0x311C */ s8 m_backbone1_jnt_num;
/* 0x311D */ s8 m_backbone2_jnt_num;
/* 0x311E */ s8 m_armR_jnt_num;
/* 0x311F */ s8 m_armL_jnt_num;
/* 0x3120 */ s8 m_armRloc_jnt_num;
/* 0x3121 */ s8 m_armLloc_jnt_num;
/* 0x3122 */ s8 m_wingRloc_jnt_num;
/* 0x3123 */ s8 m_wingLloc_jnt_num;
/* 0x3124 */ s8 m_neck_jnt_num;
/* 0x3125 */ s8 m_wingR2_jnt_num;
/* 0x3126 */ s8 m_wingL2_jnt_num;
/* 0x3127 */ s8 m_wingR3_jnt_num;
/* 0x3128 */ s8 m_wingL3_jnt_num;
/* 0x3129 */ s8 m_handL_jnt_num;
/* 0x312A */ u8 m312A;
/* 0x312B */ u8 m312B[0x312C - 0x312B];
/* 0x312C */ u8 m312C;
@@ -397,18 +421,24 @@ public:
/* 0x312E */ u8 mCurEventMode;
/* 0x312F */ u8 m312F[0x3131 - 0x312F];
/* 0x3131 */ u8 m3131;
/* 0x3132 */ u8 m3132;
/* 0x3132 */ s8 mActionStatus;
/* 0x3133 */ u8 m3133[0x3138 - 0x3133];
/* 0x3138 */ u8 m3138;
/* 0x3139 */ u8 mCurEvent;
/* 0x313A */ u8 m313A;
/* 0x313B */ u8 m313B[0x3148 - 0x313B];
/* 0x313B */ u8 m313B[0x3140 - 0x313B];
/* 0x3140 */ bool m3140;
/* 0x3141 */ u8 m3141[0x3144 - 0x3141];
/* 0x3144 */ s16 m3144;
/* 0x3146 */ s16 m3146;
/* 0x3148 */ s16 m3148;
/* 0x314A */ s16 m314A;
/* 0x314C */ s16 m314C;
/* 0x314E */ u8 m314E[0x3158 - 0x314E];
/* 0x314E */ u8 m314E[0x3150 - 0x314E];
/* 0x3150 */ f32 m3150;
/* 0x3154 */ u8 m3154[0x3158 - 0x3154];
/* 0x3158 */ s16 mEventIdxTable[10];
/* 0x316C */ u8 m316C[0x3174 - 0x316C];
/* 0x316C */ s8 m_hair_jnt_nums[8];
/* 0x3174 */ cXyz m3174[8];
/* 0x31D4 */ cXyz m31D4[8];
/* 0x3234 */ cXyz m3234[4];
+11 -2
View File
@@ -329,7 +329,10 @@ public:
class mDoExt_McaMorf : public J3DMtxCalcMaya {
public:
mDoExt_McaMorf(J3DModelData*, mDoExt_McaMorfCallBack1_c*, mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, int, float, int, int, int, void*, unsigned long, unsigned long);
mDoExt_McaMorf(J3DModelData* modelData, mDoExt_McaMorfCallBack1_c* callback1,
mDoExt_McaMorfCallBack2_c* callback2, J3DAnmTransform* anmTransform,
int loopMode, f32 param_5, int param_6, int param_7, int param_8,
void* basAnm, u32 modelFlag, u32 differedDlistFlag);
virtual ~mDoExt_McaMorf();
void calc();
@@ -384,7 +387,11 @@ public:
class mDoExt_McaMorf2 : public J3DMtxCalcMaya {
public:
mDoExt_McaMorf2(J3DModelData*, mDoExt_McaMorfCallBack1_c*, mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, J3DAnmTransform*, int, f32, int, int, int, void*, u32, u32);
mDoExt_McaMorf2(J3DModelData* modelData, mDoExt_McaMorfCallBack1_c* callback1,
mDoExt_McaMorfCallBack2_c* callback2,
J3DAnmTransform* anmTransform1, J3DAnmTransform* anmTransform2,
int loopMode, f32 param_5, int param_6, int param_7, int param_8,
void* basAnm, u32 modelFlag, u32 differedDlistFlag);
~mDoExt_McaMorf2();
void ERROR_EXIT();
@@ -396,6 +403,8 @@ public:
void calc();
void stopZelAnime();
J3DModel* getModel() { return mpModel; }
/* 0x50 */ J3DModel* mpModel;
/* 0x54 */ J3DAnmTransform* field_0x54;
/* 0x58 */ J3DAnmTransform* field_0x58;
+1 -1
View File
@@ -1367,7 +1367,7 @@ static s32 daAM_Create(fopAc_ac_c* i_actor) {
/* SrcObjAt Type */ AT_TYPE_UNK1000,
/* SrcObjAt Atp */ 0,
/* SrcObjAt SPrm */ 0,
/* SrcObjTg Type */ ~(AT_TYPE_WATER | AT_TYPE_UNK20000 | AT_TYPE_LEAF_WIND | AT_TYPE_UNK400000 | AT_TYPE_UNK800000),
/* SrcObjTg Type */ ~(AT_TYPE_WATER | AT_TYPE_UNK20000 | AT_TYPE_LEAF_WIND | AT_TYPE_UNK400000 | AT_TYPE_LIGHT),
/* SrcObjTg SPrm */ 0x03,
/* SrcObjCo SPrm */ 0x75,
/* SrcGObjAt Se */ 0,
+2 -2
View File
@@ -1450,7 +1450,7 @@ static s32 daAM2_Create(fopAc_ac_c* i_actor) {
/* SrcObjAt Type */ AT_TYPE_UNK1000,
/* SrcObjAt Atp */ 0,
/* SrcObjAt SPrm */ 0,
/* SrcObjTg Type */ ~(AT_TYPE_WATER | AT_TYPE_UNK20000 | AT_TYPE_LEAF_WIND | AT_TYPE_UNK400000 | AT_TYPE_UNK800000),
/* SrcObjTg Type */ ~(AT_TYPE_WATER | AT_TYPE_UNK20000 | AT_TYPE_LEAF_WIND | AT_TYPE_UNK400000 | AT_TYPE_LIGHT),
/* SrcObjTg SPrm */ 0x03,
/* SrcObjCo SPrm */ 0,
/* SrcGObjAt Se */ 0,
@@ -1482,7 +1482,7 @@ static s32 daAM2_Create(fopAc_ac_c* i_actor) {
/* SrcObjAt Type */ AT_TYPE_UNK1000,
/* SrcObjAt Atp */ 0,
/* SrcObjAt SPrm */ 0,
/* SrcObjTg Type */ ~(AT_TYPE_WATER | AT_TYPE_UNK20000 | AT_TYPE_LEAF_WIND | AT_TYPE_UNK400000 | AT_TYPE_UNK800000),
/* SrcObjTg Type */ ~(AT_TYPE_WATER | AT_TYPE_UNK20000 | AT_TYPE_LEAF_WIND | AT_TYPE_UNK400000 | AT_TYPE_LIGHT),
/* SrcObjTg SPrm */ 0x03,
/* SrcObjCo SPrm */ 0x75,
/* SrcGObjAt Se */ 0,
+412 -55
View File
@@ -7,6 +7,160 @@
#include "d/d_procname.h"
#include "JSystem/JKernel/JKRHeap.h"
// Needed for the .data section to match.
static f32 dummy1[3] = {1.0f, 1.0f, 1.0f};
static f32 dummy2[3] = {1.0f, 1.0f, 1.0f};
static u8 dummy3[4] = {0x02, 0x00, 0x02, 0x01};
static f64 dummy4[2] = {3.0, 0.5};
static char* l_arc_name = "Md";
static char* l_arc_name_ship = "Md_ship";
static char* l_staff_name = "Md1";
static char* event_name_tbl[] = {
"Md_ItemGet",
"Md_RopeGet",
"MD_FLY",
"md_cliff",
"Md_Fly2",
"Md_Tact",
"Md_TactTrue",
"Md_HarpTalk",
"OPTION_CHAR_END",
"DEFAULT_TALK_XY",
};
static dCcD_SrcCyl l_cyl_src = {
// dCcD_SrcGObjInf
{
/* Flags */ 0,
/* SrcObjAt Type */ 0,
/* SrcObjAt Atp */ 0,
/* SrcObjAt SPrm */ 0,
/* SrcObjTg Type */ ~(AT_TYPE_BOOMERANG | AT_TYPE_LEAF_WIND | AT_TYPE_LIGHT),
/* SrcObjTg SPrm */ 0x05,
/* SrcObjCo SPrm */ 0x75,
/* SrcGObjAt Se */ 0,
/* SrcGObjAt HitMark */ 0,
/* SrcGObjAt Spl */ 0,
/* SrcGObjAt Mtrl */ 0,
/* SrcGObjAt GFlag */ 0,
/* SrcGObjTg Se */ 0,
/* SrcGObjTg HitMark */ 0,
/* SrcGObjTg Spl */ 0,
/* SrcGObjTg Mtrl */ 0,
/* SrcGObjTg GFlag */ 0x04,
/* SrcGObjCo GFlag */ 0,
},
// cM3dGCylS
{
/* Center */ 0.0f, 0.0f, 0.0f,
/* Radius */ 30.0f,
/* Height */ 80.0f,
},
};
static dCcD_SrcCyl l_light_cyl_src = {
// dCcD_SrcGObjInf
{
/* Flags */ 0,
/* SrcObjAt Type */ 0,
/* SrcObjAt Atp */ 0,
/* SrcObjAt SPrm */ 0,
/* SrcObjTg Type */ AT_TYPE_LIGHT,
/* SrcObjTg SPrm */ 0x03,
/* SrcObjCo SPrm */ 0,
/* SrcGObjAt Se */ 0,
/* SrcGObjAt HitMark */ 0,
/* SrcGObjAt Spl */ 0,
/* SrcGObjAt Mtrl */ 0,
/* SrcGObjAt GFlag */ 0,
/* SrcGObjTg Se */ 0,
/* SrcGObjTg HitMark */ 0,
/* SrcGObjTg Spl */ 0,
/* SrcGObjTg Mtrl */ 0,
/* SrcGObjTg GFlag */ 0x04,
/* SrcGObjCo GFlag */ 0,
},
// cM3dGCylS
{
/* Center */ 0.0f, 0.0f, 0.0f,
/* Radius */ 30.0f,
/* Height */ 80.0f,
},
};
static dCcD_SrcCps l_fan_light_cps_src = {
// dCcD_SrcGObjInf
{
/* Flags */ 0,
/* SrcObjAt Type */ AT_TYPE_LIGHT,
/* SrcObjAt Atp */ 0,
/* SrcObjAt SPrm */ 0x0F,
/* SrcObjTg Type */ 0,
/* SrcObjTg SPrm */ 0,
/* SrcObjCo SPrm */ 0,
/* SrcGObjAt Se */ 0,
/* SrcGObjAt HitMark */ 0,
/* SrcGObjAt Spl */ 0,
/* SrcGObjAt Mtrl */ 0,
/* SrcGObjAt GFlag */ 0x02,
/* SrcGObjTg Se */ 0,
/* SrcGObjTg HitMark */ 0,
/* SrcGObjTg Spl */ 0,
/* SrcGObjTg Mtrl */ 0,
/* SrcGObjTg GFlag */ 0,
/* SrcGObjCo GFlag */ 0,
},
// cM3dGCpsS
{
/* Start */ 0.0f, 0.0f, 0.0f,
/* End */ 0.0f, 0.0f, 0.0f,
/* Radius */ 70.0f,
},
};
static dCcD_SrcCyl l_wind_cyl_src = {
// dCcD_SrcGObjInf
{
/* Flags */ 0,
/* SrcObjAt Type */ 0,
/* SrcObjAt Atp */ 0,
/* SrcObjAt SPrm */ 0,
/* SrcObjTg Type */ AT_TYPE_LEAF_WIND,
/* SrcObjTg SPrm */ 0x03,
/* SrcObjCo SPrm */ 0,
/* SrcGObjAt Se */ 0,
/* SrcGObjAt HitMark */ 0,
/* SrcGObjAt Spl */ 0,
/* SrcGObjAt Mtrl */ 0,
/* SrcGObjAt GFlag */ 0,
/* SrcGObjTg Se */ 0,
/* SrcGObjTg HitMark */ 0,
/* SrcGObjTg Spl */ 0,
/* SrcGObjTg Mtrl */ 0,
/* SrcGObjTg GFlag */ 0x04,
/* SrcGObjCo GFlag */ 0,
},
// cM3dGCylS
{
/* Center */ 0.0f, 0.0f, 0.0f,
/* Radius */ 30.0f,
/* Height */ 80.0f,
},
};
static char* hairName[] = {
"hair1",
"hair2",
"hair3",
"hair4",
"hair5",
"hair6",
"hair7",
};
/* 000000EC-0000013C .text __ct__15daNpc_Md_HIO6_cFv */
daNpc_Md_HIO6_c::daNpc_Md_HIO6_c() {
m04 = 500.0f;
@@ -163,8 +317,8 @@ daNpc_Md_HIO_c::daNpc_Md_HIO_c() {
}
/* 000006DC-000006FC .text daNpc_Md_XyCheckCB__FPvi */
static void daNpc_Md_XyCheckCB(void*, int) {
/* Nonmatching */
static void daNpc_Md_XyCheckCB(void* i_this, int param_1) {
return static_cast<daNpc_Md_c*>(i_this)->XyCheckCB(param_1);
}
/* 000006FC-000007FC .text XyCheckCB__10daNpc_Md_cFi */
@@ -173,8 +327,8 @@ void daNpc_Md_c::XyCheckCB(int) {
}
/* 000007FC-0000081C .text daNpc_Md_XyEventCB__FPvi */
static void daNpc_Md_XyEventCB(void*, int) {
/* Nonmatching */
static void daNpc_Md_XyEventCB(void* i_this, int param_1) {
return static_cast<daNpc_Md_c*>(i_this)->XyEventCB(param_1);
}
/* 0000081C-00000864 .text XyEventCB__10daNpc_Md_cFi */
@@ -183,8 +337,8 @@ void daNpc_Md_c::XyEventCB(int) {
}
/* 00000864-00000884 .text CheckCreateHeap__FP10fopAc_ac_c */
static void CheckCreateHeap(fopAc_ac_c*) {
/* Nonmatching */
static BOOL CheckCreateHeap(fopAc_ac_c* i_this) {
return static_cast<daNpc_Md_c*>(i_this)->createHeap();
}
/* 00000884-00000D80 .text create__10daNpc_Md_cFv */
@@ -194,17 +348,17 @@ s32 daNpc_Md_c::create() {
}
/* 000012C0-00001444 .text nodeCallBack__FP7J3DNodei */
static void nodeCallBack(J3DNode*, int) {
static int nodeCallBack(J3DNode*, int) {
/* Nonmatching */
}
/* 00001444-0000154C .text waistNodeCallBack__FP7J3DNodei */
static void waistNodeCallBack(J3DNode*, int) {
static int waistNodeCallBack(J3DNode*, int) {
/* Nonmatching */
}
/* 0000154C-0000160C .text armNodeCallBack__FP7J3DNodei */
static void armNodeCallBack(J3DNode*, int) {
static int armNodeCallBack(J3DNode*, int) {
/* Nonmatching */
}
@@ -214,7 +368,7 @@ static void hairCross(cXyz*, cXyz*, cXyz*) {
}
/* 00001CBC-00001D0C .text hairTopNodeCallBack__FP7J3DNodei */
static void hairTopNodeCallBack(J3DNode*, int) {
static int hairTopNodeCallBack(J3DNode*, int) {
/* Nonmatching */
}
@@ -224,37 +378,240 @@ static void vecChange(cXyz*, cXyz*, short) {
}
/* 00001F5C-0000240C .text hairNodeCallBack__FP7J3DNodei */
static void hairNodeCallBack(J3DNode*, int) {
static int hairNodeCallBack(J3DNode*, int) {
/* Nonmatching */
}
/* 0000240C-00002F80 .text createHeap__10daNpc_Md_cFv */
void daNpc_Md_c::createHeap() {
BOOL daNpc_Md_c::createHeap() {
/* Nonmatching */
char wait_anim_name[32];
char arm_wait_anim_name[32];
if (m3138 == 7) {
strcpy(wait_anim_name, "md_shipwait.bck");
strcpy(arm_wait_anim_name, "mdarm_shipwait.bck");
} else {
strcpy(wait_anim_name, "md_wait01.bck");
strcpy(arm_wait_anim_name, "mdarm_wait01.bck");
}
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(mModelArcName, "md.bdl");
JUT_ASSERT(1995, modelData != 0);
mpMorf = new mDoExt_McaMorf2(
modelData,
NULL, NULL,
(J3DAnmTransformKey*)dComIfG_getObjectRes(mModelArcName, wait_anim_name),
NULL,
J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, 1,
NULL,
0x00080000,
0x11020022
);
if (!mpMorf || !mpMorf->getModel()) {
return FALSE;
}
m_backbone1_jnt_num = modelData->getJointName()->getIndex("backbone1");
JUT_ASSERT(2013, m_backbone1_jnt_num >= 0);
m_backbone2_jnt_num = modelData->getJointName()->getIndex("backbone2");
JUT_ASSERT(2016, m_backbone2_jnt_num >= 0);
m_armR_jnt_num = modelData->getJointName()->getIndex("armR");
JUT_ASSERT(2019, m_armR_jnt_num >= 0);
m_armL_jnt_num = modelData->getJointName()->getIndex("armL");
JUT_ASSERT(2022, m_armL_jnt_num >= 0);
m_neck_jnt_num = modelData->getJointName()->getIndex("neck");
JUT_ASSERT(2025, m_neck_jnt_num >= 0);
s16 neck_jnt_num = modelData->getJointName()->getIndex("neck");
if (neck_jnt_num >= 0) {
modelData->getJointNodePointer(neck_jnt_num)->setCallBack(nodeCallBack);
}
modelData->getJointNodePointer(m_backbone1_jnt_num)->setCallBack(waistNodeCallBack);
m_hair_jnt_nums[0] = modelData->getJointName()->getIndex(hairName[0]);
if (m_hair_jnt_nums[0] >= 0) {
modelData->getJointNodePointer(m_hair_jnt_nums[0])->setCallBack(hairTopNodeCallBack);
}
for (int i = 1; i < 8; i++) {
m_hair_jnt_nums[i] = modelData->getJointName()->getIndex(hairName[i]);
if (m_hair_jnt_nums[i] >= 0) {
modelData->getJointNodePointer(m_hair_jnt_nums[i])->setCallBack(hairNodeCallBack);
}
}
mpMorf->getModel()->setUserArea((u32)this);
modelData = (J3DModelData*)dComIfG_getObjectRes(mModelArcName, "md.bdl");
JUT_ASSERT(2051, modelData != 0);
mpArmMorf = new mDoExt_McaMorf2(
modelData,
NULL, NULL,
(J3DAnmTransformKey*)dComIfG_getObjectRes(mModelArcName, arm_wait_anim_name),
NULL,
J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, 0,
NULL,
0x00000000,
0x11020203
);
if (!mpArmMorf || !mpArmMorf->getModel()) {
return FALSE;
}
m_armRloc_jnt_num = modelData->getJointName()->getIndex("armRloc");
JUT_ASSERT(2065, m_armRloc_jnt_num >= 0);
m_armLloc_jnt_num = modelData->getJointName()->getIndex("armLloc");
JUT_ASSERT(2068, m_armLloc_jnt_num >= 0);
m_handL_jnt_num = modelData->getJointName()->getIndex("handL");
JUT_ASSERT(2071, m_handL_jnt_num >= 0);
modelData->getJointNodePointer(m_armRloc_jnt_num)->setCallBack(armNodeCallBack);
modelData->getJointNodePointer(m_armLloc_jnt_num)->setCallBack(armNodeCallBack);
mpArmMorf->getModel()->setUserArea((u32)this);
if (m3138 != 7) {
modelData = (J3DModelData*)dComIfG_getObjectRes(mModelArcName, "mdwing.bdl");
JUT_ASSERT(2077, modelData != 0);
mpWingMorf = new mDoExt_McaMorf(
modelData,
NULL, NULL,
(J3DAnmTransformKey*)dComIfG_getObjectRes(mModelArcName, "mdwing_wait01.bck"),
J3DFrameCtrl::LOOP_REPEAT_e, 1.0f, 0, -1, 0,
NULL,
0x00000000,
0x11020203
);
if (!mpWingMorf || !mpWingMorf->getModel()) {
return FALSE;
}
m_wingRloc_jnt_num = modelData->getJointName()->getIndex("wingRloc");
JUT_ASSERT(2097, m_wingRloc_jnt_num >= 0);
m_wingLloc_jnt_num = modelData->getJointName()->getIndex("wingLloc");
JUT_ASSERT(2100, m_wingLloc_jnt_num >= 0);
m_wingR2_jnt_num = modelData->getJointName()->getIndex("wingR2");
JUT_ASSERT(2103, m_wingR2_jnt_num >= 0);
m_wingL2_jnt_num = modelData->getJointName()->getIndex("wingL2");
JUT_ASSERT(2106, m_wingL2_jnt_num >= 0);
m_wingR3_jnt_num = modelData->getJointName()->getIndex("wingR3");
JUT_ASSERT(2109, m_wingR3_jnt_num >= 0);
m_wingL3_jnt_num = modelData->getJointName()->getIndex("wingL3");
JUT_ASSERT(2112, m_wingL3_jnt_num >= 0);
modelData->getJointNodePointer(m_wingRloc_jnt_num)->setCallBack(armNodeCallBack);
modelData->getJointNodePointer(m_wingLloc_jnt_num)->setCallBack(armNodeCallBack);
mpWingMorf->getModel()->setUserArea((u32)this);
}
modelData = (J3DModelData*)dComIfG_getObjectRes(mModelArcName, "mdharp.bdl");
mpHarpModel = mDoExt_J3DModel__create(modelData, 0, 0x11020203);
if (!mpHarpModel) {
return FALSE;
}
modelData = (J3DModelData*)dComIfG_getObjectRes(mModelArcName, "ymdhp00.bdl");
mpHarpLightModel = mDoExt_J3DModel__create(modelData, 0, 0x11020203);
if (!mpHarpLightModel) {
return FALSE;
}
if (!initLightBtkAnm(false)) {
return FALSE;
}
if (!initTexPatternAnm(0, 0)) {
return FALSE;
}
mAcchCir[0].SetWall(20.0f, 20.0f);
mAcchCir[1].SetWall(60.0f, 20.0f);
mAcch.Set(&current.pos, &next.pos, this, ARRAY_SIZE(mAcchCir), mAcchCir, &speed, NULL, NULL);
mAcch.ClrRoofNone();
mAcch.SetRoofCrrHeight(120.0f);
mAcch.OnLineCheck();
mAcch.ClrWaterNone();
return TRUE;
}
/* 00002F80-00003050 .text setAction__10daNpc_Md_cFPM10daNpc_Md_cFPCvPvPv_iM10daNpc_Md_cFPCvPvPv_iPv */
void daNpc_Md_c::setAction(int (daNpc_Md_c::**)(void*), int (daNpc_Md_c::*)(void*), void*) {
/* Nonmatching */
BOOL daNpc_Md_c::setAction(ActionFunc* pCurrActionFunc, ActionFunc newActionFunc, void* arg) {
if (*pCurrActionFunc != newActionFunc) {
if (*pCurrActionFunc) {
mActionStatus = ACTION_ENDING;
(this->**pCurrActionFunc)(arg);
}
*pCurrActionFunc = newActionFunc;
mActionStatus = ACTION_STARTING;
m3144 = 0;
m3146 = 0;
m3148 = 0;
m314A = 0;
m3150 = 0.0f;
(this->**pCurrActionFunc)(arg);
}
return TRUE;
}
/* 00003050-00003124 .text npcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::npcAction(void*) {
/* Nonmatching */
void daNpc_Md_c::npcAction(void* arg) {
if (!mCurrNpcActionFunc) {
speedF = 0.0f;
if (m3104 == 0x20) {
setNpcAction(&mwaitNpcAction, NULL);
} else {
setNpcAction(&waitNpcAction, NULL);
}
}
(this->*mCurrNpcActionFunc)(arg);
}
/* 00003124-00003194 .text setNpcAction__10daNpc_Md_cFM10daNpc_Md_cFPCvPvPv_iPv */
void daNpc_Md_c::setNpcAction(int (daNpc_Md_c::*)(void*), void*) {
/* Nonmatching */
void daNpc_Md_c::setNpcAction(ActionFunc actionFunc, void* arg) {
m_flying = false;
mCurrPlayerActionFunc = NULL;
setAction(&mCurrNpcActionFunc, actionFunc, arg);
}
/* 00003194-00003360 .text playerAction__10daNpc_Md_cFPv */
void daNpc_Md_c::playerAction(void*) {
void daNpc_Md_c::playerAction(void* arg) {
/* Nonmatching */
if (!mCurrPlayerActionFunc) {
speedF = 0.0f;
setPlayerAction(&waitPlayerAction, NULL);
}
if (mAcch.ChkGroundHit() && isOldLightBodyHit()) {
dComIfGp_setRStatusForce(0x07); // Show "Return" on the R button
if (chkPlayerAction(mkamaePlayerAction)) {
dComIfGp_setDoStatus(0x00); // Show the A button without anything on it
dComIfGp_setAStatus(0x08); // TODO
} else {
dComIfGp_setDoStatus(0x2E); // TODO
dComIfGp_setAStatus(0x3E); // Do not display the B button icon at all
if (!m3140) {
dComIfGp_getVibration().StartShock(4, -0x21, cXyz(0.0f, 1.0f, 0.0f));
}
}
} else {
dComIfGp_setDoStatus(0x23); // Show "Fly" on the A button
if (chkPlayerAction(flyPlayerAction)) {
dComIfGp_setRStatusForce(0x3E); // TODO
dComIfGp_setAStatus(0x06); // Show "Let Go" on the B button icon
} else {
dComIfGp_setRStatusForce(0x07); // Show "Return" on the R button
dComIfGp_setAStatus(0x3E); // Do not display the B button icon at all
}
}
(this->*mCurrPlayerActionFunc)(arg);
}
/* 00003360-000033C4 .text setPlayerAction__10daNpc_Md_cFM10daNpc_Md_cFPCvPvPv_iPv */
void daNpc_Md_c::setPlayerAction(int (daNpc_Md_c::*)(void*), void*) {
void daNpc_Md_c::setPlayerAction(ActionFunc actionFunc, void* arg) {
/* Nonmatching */
}
@@ -369,12 +726,12 @@ void daNpc_Md_c::chkAdanmaeDemoOrder() {
}
/* 000043D4-00004B04 .text waitNpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::waitNpcAction(void*) {
int daNpc_Md_c::waitNpcAction(void*) {
/* Nonmatching */
}
/* 00004B04-00004CFC .text harpWaitNpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::harpWaitNpcAction(void*) {
int daNpc_Md_c::harpWaitNpcAction(void*) {
/* Nonmatching */
}
@@ -384,37 +741,37 @@ void daNpc_Md_c::XYTalkCheck() {
}
/* 00004D40-0000504C .text talkNpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::talkNpcAction(void*) {
int daNpc_Md_c::talkNpcAction(void*) {
/* Nonmatching */
}
/* 0000504C-000051FC .text shipTalkNpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::shipTalkNpcAction(void*) {
int daNpc_Md_c::shipTalkNpcAction(void*) {
/* Nonmatching */
}
/* 000051FC-00005308 .text kyohiNpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::kyohiNpcAction(void*) {
int daNpc_Md_c::kyohiNpcAction(void*) {
/* Nonmatching */
}
/* 00005308-00005534 .text shipNpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::shipNpcAction(void*) {
int daNpc_Md_c::shipNpcAction(void*) {
/* Nonmatching */
}
/* 00005534-000057B0 .text mwaitNpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::mwaitNpcAction(void*) {
int daNpc_Md_c::mwaitNpcAction(void*) {
/* Nonmatching */
}
/* 000057B0-000058E0 .text squatdownNpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::squatdownNpcAction(void*) {
int daNpc_Md_c::squatdownNpcAction(void*) {
/* Nonmatching */
}
/* 000058E0-00005A74 .text sqwait01NpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::sqwait01NpcAction(void*) {
int daNpc_Md_c::sqwait01NpcAction(void*) {
/* Nonmatching */
}
@@ -424,17 +781,17 @@ void daNpc_Md_c::changeCaught02() {
}
/* 00005AB0-000061A8 .text carryNpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::carryNpcAction(void*) {
int daNpc_Md_c::carryNpcAction(void*) {
/* Nonmatching */
}
/* 000061A8-00006450 .text throwNpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::throwNpcAction(void*) {
int daNpc_Md_c::throwNpcAction(void*) {
/* Nonmatching */
}
/* 00006450-00006764 .text glidingNpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::glidingNpcAction(void*) {
int daNpc_Md_c::glidingNpcAction(void*) {
/* Nonmatching */
}
@@ -444,47 +801,47 @@ void daNpc_Md_c::windProc() {
}
/* 00006B24-00006C80 .text fallNpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::fallNpcAction(void*) {
int daNpc_Md_c::fallNpcAction(void*) {
/* Nonmatching */
}
/* 00006C80-00006F70 .text fall02NpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::fall02NpcAction(void*) {
int daNpc_Md_c::fall02NpcAction(void*) {
/* Nonmatching */
}
/* 00006F70-000071E4 .text wallHitNpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::wallHitNpcAction(void*) {
int daNpc_Md_c::wallHitNpcAction(void*) {
/* Nonmatching */
}
/* 000071E4-000073BC .text land01NpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::land01NpcAction(void*) {
int daNpc_Md_c::land01NpcAction(void*) {
/* Nonmatching */
}
/* 000073BC-000074C0 .text land02NpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::land02NpcAction(void*) {
int daNpc_Md_c::land02NpcAction(void*) {
/* Nonmatching */
}
/* 000074C0-000075C4 .text land03NpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::land03NpcAction(void*) {
int daNpc_Md_c::land03NpcAction(void*) {
/* Nonmatching */
}
/* 000075C4-00007824 .text piyo2NpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::piyo2NpcAction(void*) {
int daNpc_Md_c::piyo2NpcAction(void*) {
/* Nonmatching */
}
/* 00007824-0000786C .text deleteNpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::deleteNpcAction(void*) {
int daNpc_Md_c::deleteNpcAction(void*) {
/* Nonmatching */
}
/* 0000786C-00007A98 .text demoFlyNpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::demoFlyNpcAction(void*) {
int daNpc_Md_c::demoFlyNpcAction(void*) {
/* Nonmatching */
}
@@ -514,12 +871,12 @@ void daNpc_Md_c::routeCheck(float, short*) {
}
/* 00008858-00008CEC .text searchNpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::searchNpcAction(void*) {
int daNpc_Md_c::searchNpcAction(void*) {
/* Nonmatching */
}
/* 00008CEC-00008E54 .text hitNpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::hitNpcAction(void*) {
int daNpc_Md_c::hitNpcAction(void*) {
/* Nonmatching */
}
@@ -539,52 +896,52 @@ void daNpc_Md_c::walkProc(float, short) {
}
/* 00009180-000092E0 .text jumpNpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::jumpNpcAction(void*) {
int daNpc_Md_c::jumpNpcAction(void*) {
/* Nonmatching */
}
/* 000092E0-000095C8 .text escapeNpcAction__10daNpc_Md_cFPv */
void daNpc_Md_c::escapeNpcAction(void*) {
int daNpc_Md_c::escapeNpcAction(void*) {
/* Nonmatching */
}
/* 000095C8-00009894 .text waitPlayerAction__10daNpc_Md_cFPv */
void daNpc_Md_c::waitPlayerAction(void*) {
int daNpc_Md_c::waitPlayerAction(void*) {
/* Nonmatching */
}
/* 00009894-00009B08 .text walkPlayerAction__10daNpc_Md_cFPv */
void daNpc_Md_c::walkPlayerAction(void*) {
int daNpc_Md_c::walkPlayerAction(void*) {
/* Nonmatching */
}
/* 00009B08-00009CCC .text hitPlayerAction__10daNpc_Md_cFPv */
void daNpc_Md_c::hitPlayerAction(void*) {
int daNpc_Md_c::hitPlayerAction(void*) {
/* Nonmatching */
}
/* 00009CCC-00009E7C .text jumpPlayerAction__10daNpc_Md_cFPv */
void daNpc_Md_c::jumpPlayerAction(void*) {
int daNpc_Md_c::jumpPlayerAction(void*) {
/* Nonmatching */
}
/* 00009E7C-0000A534 .text flyPlayerAction__10daNpc_Md_cFPv */
void daNpc_Md_c::flyPlayerAction(void*) {
int daNpc_Md_c::flyPlayerAction(void*) {
/* Nonmatching */
}
/* 0000A534-0000A698 .text landPlayerAction__10daNpc_Md_cFPv */
void daNpc_Md_c::landPlayerAction(void*) {
int daNpc_Md_c::landPlayerAction(void*) {
/* Nonmatching */
}
/* 0000A698-0000A8D0 .text mkamaePlayerAction__10daNpc_Md_cFPv */
void daNpc_Md_c::mkamaePlayerAction(void*) {
int daNpc_Md_c::mkamaePlayerAction(void*) {
/* Nonmatching */
}
/* 0000A8D0-0000A9BC .text carryPlayerAction__10daNpc_Md_cFPv */
void daNpc_Md_c::carryPlayerAction(void*) {
int daNpc_Md_c::carryPlayerAction(void*) {
/* Nonmatching */
}
@@ -788,7 +1145,7 @@ void daNpc_Md_c::getAnmType(unsigned char) {
}
/* 0000CDF4-0000CF18 .text initTexPatternAnm__10daNpc_Md_cFUcb */
void daNpc_Md_c::initTexPatternAnm(unsigned char, bool) {
BOOL daNpc_Md_c::initTexPatternAnm(unsigned char, bool) {
/* Nonmatching */
}
@@ -798,7 +1155,7 @@ void daNpc_Md_c::playTexPatternAnm() {
}
/* 0000CFCC-0000D0B8 .text initLightBtkAnm__10daNpc_Md_cFb */
void daNpc_Md_c::initLightBtkAnm(bool) {
BOOL daNpc_Md_c::initLightBtkAnm(bool) {
/* Nonmatching */
}
+1 -1
View File
@@ -139,7 +139,7 @@ static const dCcD_SrcCyl l_cyl_tg_src = {
/* SrcObjAt Type */ 0,
/* SrcObjAt Atp */ 0,
/* SrcObjAt SPrm */ 0,
/* SrcObjTg Type */ ~(AT_TYPE_WATER | AT_TYPE_UNK20000 | AT_TYPE_UNK400000 | AT_TYPE_UNK800000),
/* SrcObjTg Type */ ~(AT_TYPE_WATER | AT_TYPE_UNK20000 | AT_TYPE_UNK400000 | AT_TYPE_LIGHT),
/* SrcObjTg SPrm */ 9,
/* SrcObjCo SPrm */ 0,
/* SrcGObjAt Se */ 0,
+1 -1
View File
@@ -62,7 +62,7 @@ namespace daObjPaper {
/* SrcObjAt Type */ 0,
/* SrcObjAt Atp */ 0,
/* SrcObjAt SPrm */ 0,
/* SrcObjTg Type */ ~(AT_TYPE_WATER | AT_TYPE_UNK20000 | AT_TYPE_LEAF_WIND | AT_TYPE_UNK400000 | AT_TYPE_UNK800000),
/* SrcObjTg Type */ ~(AT_TYPE_WATER | AT_TYPE_UNK20000 | AT_TYPE_LEAF_WIND | AT_TYPE_UNK400000 | AT_TYPE_LIGHT),
/* SrcObjTg SPrm */ 0x0F,
/* SrcObjCo SPrm */ 0x79,
/* SrcGObjAt Se */ 0,
+1 -1
View File
@@ -743,7 +743,7 @@ BOOL light_at_hit_check(cXyz* pPos) {
bool ret = false;
fopAc_ac_c * pActor;
u32 res = dComIfG_Ccsp()->mMass_Mng.Chk(pPos, &pActor, &hitInfo);
if (((res & 1) != 0) && (hitInfo.GetAtHitObj()->GetAtType() & AT_TYPE_UNK800000) != 0)
if (((res & 1) != 0) && (hitInfo.GetAtHitObj()->GetAtType() & AT_TYPE_LIGHT) != 0)
ret = true;
return ret;
}
+9 -2
View File
@@ -1151,7 +1151,10 @@ void mDoExt_MtxCalcOldFrame::decOldFrameMorfCounter() {
}
/* 80012650-800129E4 .text __ct__14mDoExt_McaMorfFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiiPvUlUl */
mDoExt_McaMorf::mDoExt_McaMorf(J3DModelData* modelData, mDoExt_McaMorfCallBack1_c* callback1, mDoExt_McaMorfCallBack2_c* callback2, J3DAnmTransform* anmTransform, int loopMode, f32 param_5, int param_6, int param_7, int param_8, void* basAnm, u32 modelFlag, u32 differedDlistFlag) {
mDoExt_McaMorf::mDoExt_McaMorf(J3DModelData* modelData, mDoExt_McaMorfCallBack1_c* callback1,
mDoExt_McaMorfCallBack2_c* callback2, J3DAnmTransform* anmTransform,
int loopMode, f32 param_5, int param_6, int param_7, int param_8,
void* basAnm, u32 modelFlag, u32 differedDlistFlag) {
mpModel = NULL;
mpSound = NULL;
mpTransformInfo = NULL;
@@ -1380,7 +1383,11 @@ void mDoExt_McaMorf::stopZelAnime() {
}
/* 80013388-800136F4 .text __ct__15mDoExt_McaMorf2FP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformP15J3DAnmTransformifiiiPvUlUl */
mDoExt_McaMorf2::mDoExt_McaMorf2(J3DModelData*, mDoExt_McaMorfCallBack1_c*, mDoExt_McaMorfCallBack2_c*, J3DAnmTransform*, J3DAnmTransform*, int, f32, int, int, int, void*, u32, u32) {
mDoExt_McaMorf2::mDoExt_McaMorf2(J3DModelData* modelData, mDoExt_McaMorfCallBack1_c* callback1,
mDoExt_McaMorfCallBack2_c* callback2,
J3DAnmTransform* anmTransform1, J3DAnmTransform* anmTransform2,
int loopMode, f32 param_5, int param_6, int param_7, int param_8,
void* basAnm, u32 modelFlag, u32 differedDlistFlag) {
/* Nonmatching */
}