mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-23 06:54:16 -04:00
@@ -3,6 +3,7 @@
|
||||
|
||||
#include "JSystem/J3DGraphAnimator/J3DJoint.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "global.h"
|
||||
|
||||
class JUTNameTab;
|
||||
|
||||
@@ -70,4 +71,6 @@ private:
|
||||
/* 0x44 */ JUTNameTab* mJointName;
|
||||
}; // Size: 0x48
|
||||
|
||||
STATIC_ASSERT(sizeof(J3DJointTree) == 0x48);
|
||||
|
||||
#endif /* J3DJOINTTREE_H */
|
||||
|
||||
@@ -43,7 +43,6 @@ public:
|
||||
entryModelData(param_0, param_1, param_2);
|
||||
}
|
||||
|
||||
void setBaseTRMtx(f32 (*)[4]);
|
||||
void initialize();
|
||||
s32 entryModelData(J3DModelData*, u32, u32);
|
||||
s32 createShapePacket(J3DModelData*);
|
||||
@@ -79,7 +78,7 @@ public:
|
||||
bool isCpuSkinningOn() const { return (mFlags & J3DMdlFlag_SkinPosCpu) && (mFlags & J3DMdlFlag_SkinNrmCpu); }
|
||||
|
||||
Mtx& getBaseTRMtx() { return mBaseTransformMtx; }
|
||||
void i_setBaseTRMtx(Mtx m) { MTXCopy(m, mBaseTransformMtx); }
|
||||
void setBaseTRMtx(Mtx m) { MTXCopy(m, mBaseTransformMtx); }
|
||||
u32 getMtxCalcMode() const { return mFlags & 0x03; }
|
||||
J3DVertexBuffer* getVertexBuffer() const { return (J3DVertexBuffer*)&mVertexBuffer; }
|
||||
J3DMatPacket* getMatPacket(u16 idx) const { return &mpMatPacket[idx]; }
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "JSystem/J3DGraphAnimator/J3DShapeTable.h"
|
||||
#include "JSystem/J3DGraphBase/J3DSys.h"
|
||||
#include "JSystem/J3DGraphBase/J3DVertex.h"
|
||||
#include "JSystem/J3DGraphBase/J3DMaterial.h"
|
||||
|
||||
typedef struct _GXColor GXColor;
|
||||
class JUTNameTab;
|
||||
|
||||
@@ -13,7 +13,9 @@ private:
|
||||
/* 0x08 */ unsigned int mActorId;
|
||||
|
||||
public:
|
||||
cBgS_PolyInfo() {}
|
||||
cBgS_PolyInfo() {
|
||||
ClearPi();
|
||||
}
|
||||
void ClearPi() {
|
||||
mPolyIndex = -1;
|
||||
mBgIndex = 0x100;
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define C_LIB_H_
|
||||
|
||||
#include "SSystem/SComponent/c_xyz.h"
|
||||
#include "SSystem/SComponent/c_math.h"
|
||||
#include "dolphin/mtx/mtx.h"
|
||||
|
||||
inline bool cLib_IsZero(f32 value) {
|
||||
@@ -29,8 +30,7 @@ int cLib_chasePosXZ(cXyz* o_value, cXyz const& target, f32 step);
|
||||
int cLib_chaseAngleS(s16* o_value, s16 target, s16 step);
|
||||
|
||||
s16 cLib_targetAngleY(cXyz* lhs, cXyz* rhs);
|
||||
s16 cLib_targetAngleY(const cXyz& lhs, const cXyz& rhs);
|
||||
s16 cLib_targetAngleX(const cXyz*, const cXyz*);
|
||||
s16 cLib_targetAngleX(cXyz*, cXyz*);
|
||||
|
||||
void cLib_offsetPos(cXyz* pDest, cXyz* pSrc, s16 angle, cXyz* vec);
|
||||
s32 cLib_distanceAngleS(s16 x, s16 y);
|
||||
|
||||
@@ -22,7 +22,7 @@ class cM3dGCir : public cM2dGCir {
|
||||
|
||||
public:
|
||||
cM3dGCir(void);
|
||||
virtual ~cM3dGCir(void);
|
||||
virtual ~cM3dGCir(void) {}
|
||||
void Set(f32, f32, f32, f32);
|
||||
};
|
||||
|
||||
|
||||
@@ -835,6 +835,10 @@ inline int dComIfGd_setRealShadow2(u32 id, s8 param_2, J3DModel* pModel, cXyz* p
|
||||
|
||||
int dComIfGd_setSimpleShadow2(cXyz* i_pos, f32 param_1, f32 param_2, cBgS_PolyInfo& i_floorPoly, s16 i_angle, f32 param_5, GXTexObj* i_tex);
|
||||
|
||||
inline void dComIfGd_setAlphaModel(unsigned char param_0, float(*param_1)[4], unsigned char param_2) {
|
||||
g_dComIfG_gameInfo.drawlist.setAlphaModel(param_0, param_1, param_2);
|
||||
}
|
||||
|
||||
/**
|
||||
* === RESOURCE ===
|
||||
*/
|
||||
|
||||
+10
-1
@@ -165,7 +165,13 @@ public:
|
||||
struct view_port_class;
|
||||
struct view_class;
|
||||
struct camera_class;
|
||||
struct dDlst_alphaModel_c;
|
||||
struct dDlst_alphaModel_c {
|
||||
public:
|
||||
dDlst_alphaModel_c();
|
||||
void create(int);
|
||||
void set(unsigned char, float(*)[4], unsigned char);
|
||||
void draw(float(*)[4]);
|
||||
};
|
||||
|
||||
class dDlst_list_c {
|
||||
public:
|
||||
@@ -191,6 +197,9 @@ public:
|
||||
dKy_tevstr_c* pTevStr) {
|
||||
return mShadowControl.setReal2(id, param_2, pModel, pPos, param_5, param_6, pTevStr);
|
||||
}
|
||||
void setAlphaModel(unsigned char param_0, float(*param_1)[4], unsigned char param_2) {
|
||||
mpAlphaModel0->set(param_0, param_1, param_2);
|
||||
}
|
||||
|
||||
static void offWipe() { mWipe = false; }
|
||||
|
||||
|
||||
@@ -164,9 +164,9 @@ struct actor_attention_types {
|
||||
void setFlag(u32 flags) { mFlags |= flags; }
|
||||
|
||||
/* 0x00 */ u8 mDistances[8];
|
||||
/* 0x0C */ cXyz mPosition;
|
||||
/* 0x18 */ u32 mFlags;
|
||||
}; // Size = 0x1C
|
||||
/* 0x08 */ cXyz mPosition;
|
||||
/* 0x14 */ u32 mFlags;
|
||||
}; // Size = 0x18
|
||||
|
||||
class dJntCol_c;
|
||||
|
||||
|
||||
@@ -6,10 +6,10 @@
|
||||
#include "f_pc/f_pc_layer_tag.h"
|
||||
#include "f_pc/f_pc_line_tag.h"
|
||||
#include "f_pc/f_pc_priority.h"
|
||||
#include "f_pc/f_pc_profile.h"
|
||||
|
||||
typedef struct create_request create_request;
|
||||
typedef struct process_method_class process_method_class;
|
||||
typedef struct process_profile_definition process_profile_definition;
|
||||
typedef struct profile_method_class profile_method_class;
|
||||
|
||||
typedef struct base_process_class {
|
||||
|
||||
@@ -18,7 +18,7 @@ public:
|
||||
mDoExt_baseAnm() { mpFrameCtrl = NULL; }
|
||||
virtual ~mDoExt_baseAnm() {}
|
||||
|
||||
int initPlay(s16 i_frameMax, int i_attribute, f32 i_rate, s16 i_startF, s16 i_endF);
|
||||
int initPlay(s16 i_frameMax, int i_attribute, f32 i_rate, s16 i_startF, s16 i_endF, bool);
|
||||
int play();
|
||||
|
||||
J3DFrameCtrl* getFrameCtrl() { return mpFrameCtrl; }
|
||||
@@ -71,21 +71,19 @@ class J3DTevColorAnm;
|
||||
class J3DTevKColorAnm;
|
||||
class mDoExt_brkAnm : public mDoExt_baseAnm {
|
||||
public:
|
||||
mDoExt_brkAnm() { mpAnm = NULL; }
|
||||
mDoExt_brkAnm() {
|
||||
mpCRegAnm = NULL;
|
||||
mpKRegAnm = NULL;
|
||||
}
|
||||
/* 8000D70C */ int init(J3DMaterialTable* i_matTable, J3DAnmTevRegKey* i_brk, int i_anmPlay,
|
||||
int i_attribute, f32 i_rate, s16 i_start, s16 i_end, bool i_modify, int i_entry);
|
||||
/* 8000D7A8 */ void entry(J3DMaterialTable* i_matTable, f32 i_frame);
|
||||
|
||||
void entry(J3DModelData* i_modelData) { entry(i_modelData, getFrame()); }
|
||||
void entry(J3DModelData* i_modelData, f32 i_frame) {
|
||||
entry(&i_modelData->getMaterialTable(), i_frame);
|
||||
}
|
||||
void entry(J3DModelData* i_modelData, f32 i_frame);
|
||||
|
||||
int init(J3DModelData* i_modelData, J3DAnmTevRegKey* i_brk, int i_anmPlay, int i_attribute,
|
||||
f32 i_rate, s16 i_start, s16 i_end, bool i_modify, int i_entry) {
|
||||
return init(&i_modelData->getMaterialTable(), i_brk, i_anmPlay, i_attribute, i_rate,
|
||||
i_start, i_end, i_modify, i_entry);
|
||||
}
|
||||
f32 i_rate, s16 i_start, s16 i_end, bool i_modify, int i_entry);
|
||||
|
||||
int remove(J3DModelData* i_modelData) { return i_modelData->removeTevRegAnimator(mpAnm); }
|
||||
void entryFrame() { entryFrame(getFrame()); }
|
||||
|
||||
@@ -11,7 +11,9 @@ public:
|
||||
|
||||
class JORReflexible : public JOREventListener {
|
||||
public:
|
||||
#ifdef DEBUG
|
||||
virtual ~JORReflexible() {}
|
||||
#endif
|
||||
};
|
||||
|
||||
class mDoHIO_child_c {
|
||||
@@ -44,6 +46,13 @@ public:
|
||||
virtual ~mDoHIO_root_c() {}
|
||||
|
||||
void update();
|
||||
|
||||
s8 mDoHIO_createChild(const char* name, JORReflexible* hio) {
|
||||
return m_subroot.createChild(name, hio);
|
||||
}
|
||||
void mDoHIO_deleteChild(s8 childID) {
|
||||
m_subroot.deleteChild(childID);
|
||||
}
|
||||
|
||||
/* 0x0 */ mDoHIO_subRoot_c m_subroot;
|
||||
};
|
||||
|
||||
@@ -64,7 +64,7 @@ void daBranch_c::set_mtx() {
|
||||
mDoMtx_stack_c::transS(getPosition());
|
||||
mDoMtx_stack_c::XYZrotM(getAngle().x, getAngle().y, getAngle().z);
|
||||
|
||||
pMdl->i_setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
pMdl->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ BOOL daKaji_c::CreateHeap() {
|
||||
(J3DAnmTransformKey*)dComIfG_getObjectRes("Kaji", 0xE), // kj_wait.bck
|
||||
2, 0.0f, 0, -1, 1,
|
||||
dComIfG_getObjectRes("Kaji", 0x8), // kj_wait.bas
|
||||
0x00080000,
|
||||
0x00080000,
|
||||
0x11000002
|
||||
);
|
||||
|
||||
@@ -94,7 +94,7 @@ BOOL daKaji_c::_execute() {
|
||||
cXyz* offset = &cXyz(0.0f, 740.0f, -858.0f);
|
||||
offset->y += g_regHIO.mChild[10].mFloatRegs[10];
|
||||
offset->z += g_regHIO.mChild[10].mFloatRegs[11];
|
||||
cMtx_multVec( l_p_ship->mpModel->getBaseTRMtx(), offset, ¤t.pos);
|
||||
cMtx_multVec(l_p_ship->mpModel->getBaseTRMtx(), offset, ¤t.pos);
|
||||
|
||||
daObjPirateship::Act_c* ship = l_p_ship;
|
||||
shape_angle = ship->shape_angle;
|
||||
@@ -103,10 +103,9 @@ BOOL daKaji_c::_execute() {
|
||||
mpMorf->play(NULL, 0, 0);
|
||||
|
||||
mpMorf->getModel()->setBaseScale(mScale);
|
||||
PSMTXTrans(mDoMtx_stack_c::get(), current.pos.x, current.pos.y, current.pos.z);
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z);
|
||||
|
||||
mpMorf->getModel()->i_setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
mpMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
MTXCopy(mDoMtx_stack_c::get(), mMtx);
|
||||
|
||||
return FALSE;
|
||||
@@ -143,12 +142,12 @@ static BOOL daKajiDraw(void* i_this) {
|
||||
}
|
||||
|
||||
/* 00000568-00000570 .text daKajiIsDelete__FPv */
|
||||
static BOOL daKajiIsDelete(void* actor) {
|
||||
static BOOL daKajiIsDelete(void* i_this) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static actor_method_class daKajiMethodTable = {
|
||||
(process_method_func)daKajiCreate,
|
||||
(process_method_func)daKajiCreate,
|
||||
(process_method_func)daKajiDelete,
|
||||
(process_method_func)daKajiExecute,
|
||||
(process_method_func)daKajiIsDelete,
|
||||
|
||||
@@ -163,7 +163,7 @@ void daMozo_c::set_mtx() {
|
||||
mDoMtx_stack_c::transS(getPosition());
|
||||
mDoMtx_stack_c::YrotM(getAngle().y);
|
||||
|
||||
mdl->i_setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
mdl->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
}
|
||||
|
||||
/* 00000AAC-00000C38 .text anime_proc__8daMozo_cFv */
|
||||
|
||||
+431
-57
@@ -3,42 +3,266 @@
|
||||
// Translation Unit: d_a_nh.cpp
|
||||
//
|
||||
|
||||
#include "d_a_nh.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "d/d_cc_d.h"
|
||||
#include "d/d_bg_s_acch.h"
|
||||
#include "d/d_bg_s_gnd_chk.h"
|
||||
#include "m_Do/m_Do_hostIO.h"
|
||||
#include "m_Do/m_Do_mtx.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
|
||||
struct daNh_HIO_c__Registers {
|
||||
/* 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 mGravity;
|
||||
/* 0x30 */ f32 field_0x30;
|
||||
/* 0x34 */ f32 field_0x34;
|
||||
/* 0x38 */ f32 mModelScale;
|
||||
/* 0x3C */ s16 field_0x3c;
|
||||
/* 0x3E */ s16 field_0x3e;
|
||||
/* 0x40 */ s16 field_0x40;
|
||||
}; // Size: 0x3C
|
||||
|
||||
class daNh_HIO_c : public JORReflexible {
|
||||
public:
|
||||
daNh_HIO_c();
|
||||
virtual ~daNh_HIO_c();
|
||||
|
||||
public:
|
||||
/* 0x04 */ s8 mChildID;
|
||||
/* 0x08 */ daNh_HIO_c__Registers reg;
|
||||
/* 0x44 */ fopAc_ac_c* unk44;
|
||||
}; // Size: 0x44
|
||||
|
||||
static daNh_HIO_c l_HIO;
|
||||
|
||||
static dCcD_SrcCyl l_cyl_src = {
|
||||
// dCcD_SrcGObjInf
|
||||
{
|
||||
/* Flags */ 0,
|
||||
/* SrcObjAt Type */ 0,
|
||||
/* SrcObjAt Atp */ 0,
|
||||
/* SrcObjAt SPrm */ 0,
|
||||
/* SrcObjTg Type */ 0xFFFFFFFF,
|
||||
/* SrcObjTg SPrm */ 0x03,
|
||||
/* SrcObjCo SPrm */ 0x19,
|
||||
/* 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 */ 10.0f,
|
||||
/* Height */ 20.0f,
|
||||
},
|
||||
};
|
||||
|
||||
class daNh_c : fopAc_ac_c {
|
||||
public:
|
||||
typedef BOOL (daNh_c::*daNh_c_ActionFunc)(void*);
|
||||
|
||||
enum ActionStatus {
|
||||
ACTION_ENDING = -1,
|
||||
ACTION_STARTING = 0,
|
||||
ACTION_ONGOING = 1,
|
||||
};
|
||||
|
||||
~daNh_c();
|
||||
void setBaseMtx();
|
||||
BOOL createHeap();
|
||||
s32 create();
|
||||
BOOL init();
|
||||
void action(void*);
|
||||
BOOL setAction(daNh_c_ActionFunc, void*);
|
||||
BOOL checkBinCatch();
|
||||
void searchPlayer();
|
||||
void moveProc(float, float, short);
|
||||
f32 getHomeDistance();
|
||||
BOOL checkTimer();
|
||||
void BGCheck();
|
||||
void airMove();
|
||||
BOOL waitAction(void*);
|
||||
BOOL checkEscapeEnd();
|
||||
BOOL escapeAction(void*);
|
||||
BOOL returnAction(void*);
|
||||
BOOL execute();
|
||||
BOOL initBrkAnm(bool);
|
||||
void playBrkAnm();
|
||||
BOOL draw();
|
||||
|
||||
public:
|
||||
/* 0x290 */ u8 temp1[0x298 - 0x290];
|
||||
/* 0x298 */ J3DModel* mpModel;
|
||||
/* 0x29C */ dBgS_ObjAcch mAcch;
|
||||
/* 0x460 */ dBgS_AcchCir mAcchCir;
|
||||
/* 0x4A0 */ dCcD_Stts mStts;
|
||||
/* 0x4DC */ dCcD_Cyl mCyl;
|
||||
/* 0x60C */ mDoExt_brkAnm mBrkAnm;
|
||||
/* 0x624 */ u8 temp2[0x630 - 0x624];
|
||||
/* 0x630 */ cBgS_PolyInfo mPolyInfo;
|
||||
/* 0x640 */ daNh_c_ActionFunc mCurrActionFunc;
|
||||
/* 0x64C */ Mtx mMtx;
|
||||
/* 0x67C */ f32 mPlayerDist;
|
||||
/* 0x680 */ f32 mGroundY;
|
||||
/* 0x684 */ int mTimer;
|
||||
/* 0x688 */ s32 unk688;
|
||||
/* 0x68C */ u8 unk68C;
|
||||
/* 0x68D */ s8 mActionStatus;
|
||||
/* 0x68E */ u8 unk68E;
|
||||
/* 0x68F */ u8 unk68F;
|
||||
/* 0x690 */ u8 unk690;
|
||||
/* 0x691 */ u8 unk691;
|
||||
/* 0x692 */ u8 temp5[0x694 - 0x692];
|
||||
/* 0x694 */ s16 unk694;
|
||||
/* 0x696 */ s16 unk696;
|
||||
/* 0x698 */ s16 unk698;
|
||||
/* 0x69A */ s16 unk69A;
|
||||
/* 0x69C */ u8 temp6[0x6A0 - 0x69C];
|
||||
/* 0x6A0 */ f32 unk6A0;
|
||||
/* 0x6A4 */ u8 temp7[0x6A8 - 0x6A4];
|
||||
};
|
||||
|
||||
/* 800F95B8-800F9654 .text __ct__10daNh_HIO_cFv */
|
||||
daNh_HIO_c::daNh_HIO_c() {
|
||||
/* Nonmatching */
|
||||
mChildID = -1;
|
||||
static const daNh_HIO_c__Registers init_data = {
|
||||
200.0f,
|
||||
100.0f,
|
||||
-50.0f,
|
||||
140.0f,
|
||||
0.95f,
|
||||
5.0f,
|
||||
50.0f,
|
||||
1.0f,
|
||||
-1.0f,
|
||||
/* mGravity */ 0.25f,
|
||||
250.0f,
|
||||
600.0f,
|
||||
/* mModelScale */ 2.5f,
|
||||
0x2000,
|
||||
0x20,
|
||||
0x12C,
|
||||
};
|
||||
reg = init_data;
|
||||
}
|
||||
|
||||
/* 800FAEAC-800FAEF4 .text __dt__10daNh_HIO_cFv */
|
||||
daNh_HIO_c::~daNh_HIO_c() {}
|
||||
|
||||
/* 800F9654-800F9874 .text __dt__6daNh_cFv */
|
||||
daNh_c::~daNh_c() {
|
||||
/* Nonmatching */
|
||||
if (l_HIO.mChildID >= 0) {
|
||||
mDoHIO_root.mDoHIO_deleteChild(l_HIO.mChildID);
|
||||
l_HIO.mChildID = -1;
|
||||
}
|
||||
}
|
||||
|
||||
/* 800F9874-800F9980 .text setBaseMtx__6daNh_cFv */
|
||||
void daNh_c::setBaseMtx() {
|
||||
/* Nonmatching */
|
||||
J3DModel* model = mpModel;
|
||||
mScale.setAll(l_HIO.reg.mModelScale);
|
||||
model->setBaseScale(mScale);
|
||||
mDoMtx_stack_c::transS(getPosition());
|
||||
mDoMtx_stack_c::YrotM(shape_angle.y);
|
||||
MTXCopy(mDoMtx_stack_c::get(), model->getBaseTRMtx());
|
||||
|
||||
cXyz offset;
|
||||
offset.z = 0.0f;
|
||||
offset.x = 0.0f;
|
||||
offset.y = l_HIO.reg.field_0x14;
|
||||
cXyz temp;
|
||||
cMtx_multVec(mDoMtx_stack_c::get(), &offset, &temp);
|
||||
PSMTXTrans(mDoMtx_stack_c::get(), temp.x, temp.y, temp.z);
|
||||
mDoMtx_stack_c::scaleM(l_HIO.reg.field_0x18, l_HIO.reg.field_0x18, l_HIO.reg.field_0x18);
|
||||
MTXCopy(mDoMtx_stack_c::get(), mMtx);
|
||||
}
|
||||
|
||||
/* 800F9980-800F9A54 .text createHeap__6daNh_cFv */
|
||||
void daNh_c::createHeap() {
|
||||
/* Nonmatching */
|
||||
BOOL daNh_c::createHeap() {
|
||||
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Always", 0x34); // nh.bdl
|
||||
JUT_ASSERT(359, modelData != 0);
|
||||
|
||||
mpModel = mDoExt_J3DModel__create(modelData, 0, 0x11020203);
|
||||
if (!mpModel) {
|
||||
return FALSE;
|
||||
}
|
||||
if (!initBrkAnm(false)) {
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 800F9A54-800F9A74 .text checkCreateHeap__FP10fopAc_ac_c */
|
||||
void checkCreateHeap(fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
static BOOL checkCreateHeap(fopAc_ac_c* i_this) {
|
||||
return ((daNh_c*)i_this)->createHeap();
|
||||
}
|
||||
|
||||
/* 800F9A74-800F9C8C .text create__6daNh_cFv */
|
||||
void daNh_c::create() {
|
||||
/* Nonmatching */
|
||||
s32 daNh_c::create() {
|
||||
static u32 a_heap_size_tbl;
|
||||
static s8 init;
|
||||
if (!init) {
|
||||
a_heap_size_tbl = 0x4000;
|
||||
init = 1;
|
||||
}
|
||||
|
||||
s32 phase_state = cPhs_COMPLEATE_e;
|
||||
|
||||
fopAcM_SetupActor(this, daNh_c);
|
||||
|
||||
if (!fopAcM_entrySolidHeap(this, (heapCallbackFunc)&checkCreateHeap, a_heap_size_tbl)) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
mCullMtx = mpModel->getBaseTRMtx();
|
||||
|
||||
if (l_HIO.mChildID < 0) {
|
||||
l_HIO.mChildID = mDoHIO_root.mDoHIO_createChild("森のほたる", &l_HIO);
|
||||
l_HIO.unk44 = this;
|
||||
}
|
||||
if (!this->init()) {
|
||||
phase_state = cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
return phase_state;
|
||||
}
|
||||
|
||||
/* 800F9C8C-800F9D64 .text init__6daNh_cFv */
|
||||
void daNh_c::init() {
|
||||
BOOL daNh_c::init() {
|
||||
/* Nonmatching */
|
||||
mGravity = l_HIO.reg.mGravity;
|
||||
|
||||
BGCheck();
|
||||
|
||||
mStts.Init(0xFF, 0xFF, this);
|
||||
mCyl.Set(l_cyl_src);
|
||||
mCyl.SetStts(&mStts);
|
||||
|
||||
setBaseMtx();
|
||||
|
||||
mEyePos = mAttentionInfo.mPosition = current.pos;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 800F9D64-800F9DF4 .text action__6daNh_cFPv */
|
||||
@@ -47,12 +271,27 @@ void daNh_c::action(void*) {
|
||||
}
|
||||
|
||||
/* 800F9DF4-800F9EB8 .text setAction__6daNh_cFM6daNh_cFPCvPvPv_iPv */
|
||||
void daNh_c::setAction(int (daNh_c::*)(void*), void*) {
|
||||
BOOL daNh_c::setAction(daNh_c_ActionFunc actionFunc, void* arg) {
|
||||
/* Nonmatching */
|
||||
if (mCurrActionFunc != actionFunc) {
|
||||
if (mCurrActionFunc != NULL) {
|
||||
mActionStatus = ACTION_ENDING;
|
||||
(this->*mCurrActionFunc)(arg);
|
||||
}
|
||||
mCurrActionFunc = actionFunc;
|
||||
mActionStatus = ACTION_STARTING;
|
||||
unk694 = 0;
|
||||
unk696 = 0;
|
||||
unk698 = 0;
|
||||
unk69A = 0;
|
||||
unk6A0 = 0.0f;
|
||||
(this->*mCurrActionFunc)(arg);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 800F9EB8-800F9F3C .text checkBinCatch__6daNh_cFv */
|
||||
void daNh_c::checkBinCatch() {
|
||||
BOOL daNh_c::checkBinCatch() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
@@ -67,102 +306,237 @@ void daNh_c::moveProc(float, float, short) {
|
||||
}
|
||||
|
||||
/* 800FA19C-800FA260 .text getHomeDistance__6daNh_cFv */
|
||||
void daNh_c::getHomeDistance() {
|
||||
/* Nonmatching */
|
||||
f32 daNh_c::getHomeDistance() {
|
||||
cXyz delta = orig.pos - current.pos;
|
||||
return cXyz(delta.x, 0.0f, delta.z).abs();
|
||||
}
|
||||
|
||||
/* 800FA260-800FA2E4 .text checkTimer__6daNh_cFv */
|
||||
void daNh_c::checkTimer() {
|
||||
/* Nonmatching */
|
||||
BOOL daNh_c::checkTimer() {
|
||||
if (unk691 == 1 && !cLib_calcTimer(&mTimer)) {
|
||||
unk688 -= 4;
|
||||
if (unk688 < 0) {
|
||||
unk688 = 0;
|
||||
}
|
||||
if (unk688 == 0) {
|
||||
fopAcM_delete(this);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* 800FA2E4-800FA568 .text BGCheck__6daNh_cFv */
|
||||
void daNh_c::BGCheck() {
|
||||
/* Nonmatching */
|
||||
dBgS_ObjGndChk_All gndChk;
|
||||
gndChk.SetPos(¤t.pos);
|
||||
f32 groundY = dComIfG_Bgsp()->GroundCross(&gndChk);
|
||||
if (groundY != -1000000000.0f) {
|
||||
mGroundY = groundY;
|
||||
mTevStr.mRoomNo = current.roomNo = dComIfG_Bgsp()->GetRoomId(gndChk);
|
||||
mTevStr.mEnvrIdxOverride = dComIfG_Bgsp()->GetPolyColor(gndChk);
|
||||
}
|
||||
}
|
||||
|
||||
/* 800FA568-800FA5B4 .text airMove__6daNh_cFv */
|
||||
void daNh_c::airMove() {
|
||||
/* Nonmatching */
|
||||
f32 idealY = mGroundY + l_HIO.reg.field_0x20;
|
||||
if (current.pos.y < idealY - 10.0f) {
|
||||
mMaxFallSpeed = l_HIO.reg.field_0x24;
|
||||
} else if (current.pos.y > idealY + 10.0f) {
|
||||
mMaxFallSpeed = l_HIO.reg.field_0x28;
|
||||
}
|
||||
}
|
||||
|
||||
/* 800FA5B4-800FA674 .text waitAction__6daNh_cFPv */
|
||||
void daNh_c::waitAction(void*) {
|
||||
/* Nonmatching */
|
||||
BOOL daNh_c::waitAction(void*) {
|
||||
if (mActionStatus == ACTION_STARTING) {
|
||||
mActionStatus += 1; // ACTION_ONGOING
|
||||
mPlayerDist = fopAcM_searchPlayerDistance(this);
|
||||
} else if (mActionStatus != ACTION_ENDING) {
|
||||
cLib_addCalc(&speedF, 0.0f, 0.1f, 10.0f, 1.0f);
|
||||
if (getHomeDistance() > 50.0f) {
|
||||
setAction(&returnAction, NULL);
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 800FA674-800FA78C .text checkEscapeEnd__6daNh_cFv */
|
||||
void daNh_c::checkEscapeEnd() {
|
||||
/* Nonmatching */
|
||||
BOOL daNh_c::checkEscapeEnd() {
|
||||
cXyz deltaPos = orig.pos - current.pos;
|
||||
if (unk691 != 1) {
|
||||
if (!cLib_calcTimer(&unk694)) {
|
||||
setAction(&waitAction, NULL);
|
||||
return TRUE;
|
||||
}
|
||||
if (deltaPos.abs2XZ() > l_HIO.reg.field_0x30*l_HIO.reg.field_0x30) {
|
||||
setAction(&returnAction, NULL);
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/* 800FA78C-800FA880 .text escapeAction__6daNh_cFPv */
|
||||
void daNh_c::escapeAction(void*) {
|
||||
/* Nonmatching */
|
||||
BOOL daNh_c::escapeAction(void*) {
|
||||
if (mActionStatus == ACTION_STARTING) {
|
||||
mActionStatus += 1; // ACTION_ONGOING
|
||||
unk68F = 0;
|
||||
unk690 = 0;
|
||||
unk694 = 150;
|
||||
} else if (mActionStatus != ACTION_ENDING) {
|
||||
if (!checkEscapeEnd()) {
|
||||
s16 angle = fopAcM_searchPlayerAngleY(this) + 0x8000;
|
||||
if (!cLib_calcTimer(&unk690)) {
|
||||
unk68F ^= 1;
|
||||
unk690 = cLib_getRndValue(15, 20);
|
||||
}
|
||||
angle += unk68F ? -0x2000 : 0x2000;
|
||||
moveProc(5.0f, 0.5f, angle);
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 800FA880-800FAA34 .text returnAction__6daNh_cFPv */
|
||||
void daNh_c::returnAction(void*) {
|
||||
/* Nonmatching */
|
||||
BOOL daNh_c::returnAction(void*) {
|
||||
if (mActionStatus == ACTION_STARTING) {
|
||||
mActionStatus += 1; // ACTION_ONGOING
|
||||
unk68F = 0;
|
||||
unk690 = 0;
|
||||
unk694 = 150;
|
||||
} else if (mActionStatus != ACTION_ENDING) {
|
||||
if (getHomeDistance() < 50.0f) {
|
||||
setAction(&waitAction, NULL);
|
||||
} else {
|
||||
s16 targetAngle = cLib_targetAngleY(¤t.pos, &orig.pos);
|
||||
cXyz delta = orig.pos - current.pos;
|
||||
f32 distXZ = cXyz(delta.x, 0.0f, delta.z).abs2();
|
||||
if (distXZ < l_HIO.reg.field_0x30*l_HIO.reg.field_0x30) {
|
||||
s16 temp2 = targetAngle - fopAcM_searchPlayerAngleY(this);
|
||||
if (abs(temp2) < 0x1000) {
|
||||
if (temp2 < 0) {
|
||||
targetAngle -= 0x4000;
|
||||
} else {
|
||||
targetAngle += 0x4000;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!cLib_calcTimer(&unk690)) {
|
||||
unk68F ^= 1;
|
||||
unk690 = cLib_getRndValue(15, 20);
|
||||
}
|
||||
targetAngle += (unk68F ? -0x2000 : 0x2000);
|
||||
moveProc(5.0f, 0.5f, targetAngle);
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 800FAA34-800FABE0 .text execute__6daNh_cFv */
|
||||
void daNh_c::execute() {
|
||||
BOOL daNh_c::execute() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800FABE0-800FACC4 .text initBrkAnm__6daNh_cFb */
|
||||
void daNh_c::initBrkAnm(bool) {
|
||||
/* Nonmatching */
|
||||
BOOL daNh_c::initBrkAnm(bool i_modify) {
|
||||
J3DModelData* modelData = mpModel->getModelData();
|
||||
bool success = false;
|
||||
|
||||
J3DAnmTevRegKey* a_brk = (J3DAnmTevRegKey*)dComIfG_getObjectRes("Always", 0x4E); // tnh.brk
|
||||
JUT_ASSERT(883, a_brk != 0);
|
||||
|
||||
if (mBrkAnm.init(modelData, a_brk, true, 2, 1.0f, 0, -1, i_modify, false)) {
|
||||
success = true;
|
||||
}
|
||||
return success;
|
||||
}
|
||||
|
||||
/* 800FACC4-800FACE8 .text playBrkAnm__6daNh_cFv */
|
||||
void daNh_c::playBrkAnm() {
|
||||
/* Nonmatching */
|
||||
mBrkAnm.play();
|
||||
}
|
||||
|
||||
/* 800FACE8-800FAE1C .text draw__6daNh_cFv */
|
||||
void daNh_c::draw() {
|
||||
/* Nonmatching */
|
||||
BOOL daNh_c::draw() {
|
||||
g_env_light.settingTevStruct(0, ¤t.pos, &mTevStr);
|
||||
g_env_light.setLightTevColorType(mpModel, &mTevStr);
|
||||
|
||||
J3DModelData* modelData = mpModel->getModelData();
|
||||
|
||||
mBrkAnm.entry(modelData);
|
||||
mDoExt_modelUpdateDL(mpModel);
|
||||
modelData->getMaterialTable().removeTevRegAnimator(mBrkAnm.getBrkAnm());
|
||||
|
||||
J3DMaterial* mat = modelData->getMaterialNodePointer(0);
|
||||
if (mat) {
|
||||
J3DTevBlock* tevBlock = mat->getTevBlock();
|
||||
if (tevBlock) {
|
||||
GXColorS10* color = tevBlock->getTevColor(1);
|
||||
if (color) {
|
||||
unk68E = ((color->r + color->g + color->b) / 3) >> 2;
|
||||
}
|
||||
|
||||
GXColor* kColor = tevBlock->getTevKColor(3);
|
||||
if (kColor) {
|
||||
kColor->a = unk688;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dComIfGd_setAlphaModel(0, mMtx, unk68E);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 800FAE1C-800FAE3C .text daNh_Draw__FP6daNh_c */
|
||||
void daNh_Draw(daNh_c*) {
|
||||
/* Nonmatching */
|
||||
BOOL daNh_Draw(daNh_c* i_this) {
|
||||
return i_this->draw();
|
||||
}
|
||||
|
||||
/* 800FAE3C-800FAE5C .text daNh_Execute__FP6daNh_c */
|
||||
void daNh_Execute(daNh_c*) {
|
||||
/* Nonmatching */
|
||||
BOOL daNh_Execute(daNh_c* i_this) {
|
||||
return i_this->execute();
|
||||
}
|
||||
|
||||
/* 800FAE5C-800FAE64 .text daNh_IsDelete__FP6daNh_c */
|
||||
void daNh_IsDelete(daNh_c*) {
|
||||
/* Nonmatching */
|
||||
BOOL daNh_IsDelete(daNh_c* i_this) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 800FAE64-800FAE8C .text daNh_Delete__FP6daNh_c */
|
||||
void daNh_Delete(daNh_c*) {
|
||||
/* Nonmatching */
|
||||
BOOL daNh_Delete(daNh_c* i_this) {
|
||||
i_this->~daNh_c();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 800FAE8C-800FAEAC .text daNh_Create__FP10fopAc_ac_c */
|
||||
void daNh_Create(fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
s32 daNh_Create(fopAc_ac_c* i_this) {
|
||||
return ((daNh_c*)i_this)->create();
|
||||
}
|
||||
|
||||
/* 800FAEAC-800FAEF4 .text __dt__10daNh_HIO_cFv */
|
||||
daNh_HIO_c::~daNh_HIO_c() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800FAEF4-800FAF10 .text cLib_calcTimer<i>__FPi */
|
||||
void cLib_calcTimer<int>(int*) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800FAF10-800FAF84 .text cLib_getRndValue<i>__Fii */
|
||||
void cLib_getRndValue<int>(int, int) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
static actor_method_class l_daNh_Method = {
|
||||
(process_method_func)daNh_Create,
|
||||
(process_method_func)daNh_Delete,
|
||||
(process_method_func)daNh_Execute,
|
||||
(process_method_func)daNh_IsDelete,
|
||||
(process_method_func)daNh_Draw,
|
||||
};
|
||||
|
||||
extern actor_process_profile_definition g_profile_NH = {
|
||||
/* LayerID */ fpcLy_CURRENT_e,
|
||||
/* ListID */ 7,
|
||||
/* ListPrio */ fpcLy_CURRENT_e,
|
||||
/* ProcName */ PROC_NH,
|
||||
/* Proc SubMtd */ &g_fpcLf_Method.mBase,
|
||||
/* Size */ sizeof(daNh_c),
|
||||
/* SizeOther */ 0,
|
||||
/* Parameters */ 0,
|
||||
/* Leaf SubMtd */ &g_fopAc_Method.base,
|
||||
/* Priority */ 0x013C,
|
||||
/* Actor SubMtd */ &l_daNh_Method,
|
||||
/* Status */ 0x00040100,
|
||||
/* Group */ fopAc_ACTOR_e,
|
||||
/* CullType */ fopAc_CULLBOX_0_e,
|
||||
};
|
||||
|
||||
@@ -95,7 +95,7 @@ s32 daObjYgush00_c::_create() {
|
||||
if (fopAcM_entrySolidHeap(this, (heapCallbackFunc)solidHeapCB, 0x740) == 1) {
|
||||
mpModel->setBaseScale(mScale);
|
||||
mDoMtx_stack_c::transS(getPosition());
|
||||
mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
fopAcM_SetMtx(this, mpModel->getBaseTRMtx());
|
||||
|
||||
fopAcM_setCullSizeBox(this,
|
||||
|
||||
@@ -474,7 +474,7 @@ namespace daObjMovebox {
|
||||
}
|
||||
|
||||
if (mpModel) {
|
||||
mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
}
|
||||
MTXCopy(mDoMtx_stack_c::get(), mMtx);
|
||||
|
||||
|
||||
@@ -293,7 +293,7 @@ namespace daObjPaper {
|
||||
mDoMtx_stack_c::transS(getPosition());
|
||||
mDoMtx_stack_c::ZXYrotM(shape_angle.x, shape_angle.y, shape_angle.z);
|
||||
|
||||
mpModel->i_setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
}
|
||||
|
||||
/* 00000948-00000984 .text init_mtx__Q210daObjPaper5Act_cFv */
|
||||
|
||||
+1
-1
@@ -1186,7 +1186,7 @@ void dNpc_EventCut_c::cutMoveToPosStart() {
|
||||
}
|
||||
|
||||
void dNpc_EventCut_c::cutMoveToPosProc() {
|
||||
s16 angle = cLib_targetAngleY(mpActor->current.pos, mPos);
|
||||
s16 angle = cLib_targetAngleY(&mpActor->current.pos, &mPos);
|
||||
|
||||
cXyz temp(pDelDistance * JMASinShort(angle), mPos.y, pDelDistance * JMASCosShort(angle));
|
||||
|
||||
|
||||
@@ -22,12 +22,12 @@ void isCurrentSolidHeap() {
|
||||
}
|
||||
|
||||
/* 8000DD4C-8000DF24 .text initPlay__14mDoExt_baseAnmFsifssb */
|
||||
void mDoExt_baseAnm::initPlay(short, int, float, short, short, bool) {
|
||||
int mDoExt_baseAnm::initPlay(short, int, float, short, short, bool) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 8000DF24-8000DFC4 .text play__14mDoExt_baseAnmFv */
|
||||
void mDoExt_baseAnm::play() {
|
||||
int mDoExt_baseAnm::play() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
@@ -127,17 +127,19 @@ void mDoExt_btkAnm::entry(J3DMaterialTable*, float) {
|
||||
}
|
||||
|
||||
/* 8000EB74-8000EBA0 .text init__13mDoExt_brkAnmFP12J3DModelDataP15J3DAnmTevRegKeyiifssbi */
|
||||
void mDoExt_brkAnm::init(J3DModelData*, J3DAnmTevRegKey*, int, int, float, short, short, bool, int) {
|
||||
/* Nonmatching */
|
||||
int mDoExt_brkAnm::init(J3DModelData* i_modelData, J3DAnmTevRegKey* i_brk, int i_anmPlay,
|
||||
int i_attribute, f32 i_rate, s16 i_start, s16 i_end, bool i_modify, int i_entry) {
|
||||
return init(&i_modelData->getMaterialTable(), i_brk, i_anmPlay, i_attribute, i_rate,
|
||||
i_start, i_end, i_modify, i_entry);
|
||||
}
|
||||
|
||||
/* 8000EBA0-8000EBC4 .text entry__13mDoExt_brkAnmFP12J3DModelDataf */
|
||||
void mDoExt_brkAnm::entry(J3DModelData*, float) {
|
||||
/* Nonmatching */
|
||||
void mDoExt_brkAnm::entry(J3DModelData* i_modelData, float i_frame) {
|
||||
entry(&i_modelData->getMaterialTable(), i_frame);
|
||||
}
|
||||
|
||||
/* 8000EBC4-8000EEE8 .text init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifssbi */
|
||||
void mDoExt_brkAnm::init(J3DMaterialTable*, J3DAnmTevRegKey*, int, int, float, short, short, bool, int) {
|
||||
int mDoExt_brkAnm::init(J3DMaterialTable*, J3DAnmTevRegKey*, int, int, float, short, short, bool, int) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user