mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-11 03:25:52 -04:00
fix conflict
This commit is contained in:
+11
-6
@@ -198,6 +198,10 @@ LIBS = [
|
||||
"objects": [
|
||||
Object(NonMatching, "JSystem/JFramework/JFWDisplay.cpp"),
|
||||
Object(NonMatching, "JSystem/JFramework/JFWSystem.cpp"),
|
||||
Object(Matching, "JSystem/J3DGraphBase/J3DVertex.cpp"),
|
||||
Object(NonMatching, "JSystem/J3DGraphBase/J3DPacket.cpp"),
|
||||
Object(NonMatching, "JSystem/J3DGraphBase/J3DShape.cpp"),
|
||||
Object(Matching, "JSystem/J3DGraphBase/J3DDrawBuffer.cpp"),
|
||||
Object(Matching, "JSystem/J3DU/J3DUDL.cpp"),
|
||||
Object(NonMatching, "JSystem/JParticle/JPATexture.cpp"),
|
||||
Object(Matching, "JSystem/JKernel/JKRFile.cpp"),
|
||||
@@ -238,22 +242,22 @@ LIBS = [
|
||||
Object(Matching, "SSystem/SComponent/c_tag_iter.cpp"),
|
||||
Object(NonMatching, "SSystem/SComponent/c_xyz.cpp"),
|
||||
Object(Matching, "SSystem/SComponent/c_sxyz.cpp"),
|
||||
Object(NonMatching, "SSystem/SComponent/c_math.cpp"),
|
||||
Object(Matching, "SSystem/SComponent/c_math.cpp"),
|
||||
Object(NonMatching, "SSystem/SComponent/c_bg_s.cpp"),
|
||||
Object(Matching, "SSystem/SComponent/c_bg_s_chk.cpp"),
|
||||
Object(NonMatching, "SSystem/SComponent/c_bg_s_gnd_chk.cpp"),
|
||||
Object(NonMatching, "SSystem/SComponent/c_bg_s_lin_chk.cpp"),
|
||||
Object(Matching, "SSystem/SComponent/c_bg_s_lin_chk.cpp"),
|
||||
Object(NonMatching, "SSystem/SComponent/c_bg_w.cpp"),
|
||||
Object(NonMatching, "SSystem/SComponent/c_m2d.cpp"),
|
||||
Object(NonMatching, "SSystem/SComponent/c_m2d_g_box.cpp"),
|
||||
Object(Matching, "SSystem/SComponent/c_m3d_g_aab.cpp"),
|
||||
Object(NonMatching, "SSystem/SComponent/c_m3d_g_cyl.cpp"),
|
||||
Object(Matching, "SSystem/SComponent/c_m3d_g_cyl.cpp"),
|
||||
Object(Matching, "SSystem/SComponent/c_m3d_g_pla.cpp"),
|
||||
Object(NonMatching, "SSystem/SComponent/c_m3d_g_sph.cpp"),
|
||||
Object(Matching, "SSystem/SComponent/c_m3d_g_tri.cpp"),
|
||||
Object(NonMatching, "SSystem/SComponent/c_lib.cpp"),
|
||||
Object(NonMatching, "SSystem/SComponent/c_angle.cpp"),
|
||||
Object(NonMatching, "SSystem/SComponent/c_data_tbl.cpp"),
|
||||
Object(Matching, "SSystem/SComponent/c_data_tbl.cpp"),
|
||||
],
|
||||
},
|
||||
{
|
||||
@@ -280,7 +284,7 @@ LIBS = [
|
||||
Object(Matching, "f_op/f_op_view.cpp"),
|
||||
Object(Matching, "f_op/f_op_kankyo.cpp"),
|
||||
Object(Matching, "f_op/f_op_msg.cpp"),
|
||||
Object(NonMatching, "f_op/f_op_kankyo_mng.cpp"),
|
||||
Object(Matching, "f_op/f_op_kankyo_mng.cpp"),
|
||||
Object(NonMatching, "f_op/f_op_msg_mng.cpp"),
|
||||
Object(Matching, "f_op/f_op_draw_iter.cpp"),
|
||||
Object(Matching, "f_op/f_op_draw_tag.cpp"),
|
||||
@@ -330,6 +334,7 @@ LIBS = [
|
||||
Object(NonMatching, "d/d_com_inf_game.cpp"),
|
||||
Object(NonMatching, "d/d_save.cpp"),
|
||||
Object(NonMatching, "d/d_save_init.cpp"),
|
||||
Object(Matching, "d/d_bg_s_movebg_actor.cpp"),
|
||||
|
||||
Object(NonMatching, "d/actor/d_a_player_main.cpp"),
|
||||
Object(NonMatching, "d/actor/d_a_itembase_static.cpp"),
|
||||
@@ -380,7 +385,7 @@ LIBS = [
|
||||
ActorRel(NonMatching, "d_a_lamp"),
|
||||
ActorRel(NonMatching, "d_a_lod_bg"),
|
||||
ActorRel(NonMatching, "d_a_lwood"),
|
||||
ActorRel(NonMatching, "d_a_magma"),
|
||||
ActorRel(Matching, "d_a_magma"),
|
||||
ActorRel(NonMatching, "d_a_majuu_flag"),
|
||||
ActorRel(NonMatching, "d_a_mdoor"),
|
||||
ActorRel(NonMatching, "d_a_msw"),
|
||||
|
||||
@@ -29,6 +29,10 @@ struct J3DUnkCalc2 {
|
||||
|
||||
typedef void (*J3DCalcCallBack)(J3DModel*, u32 timing);
|
||||
|
||||
class J3DMatPacket;
|
||||
class J3DShapePacket;
|
||||
class J3DVisibilityManager;
|
||||
|
||||
class J3DModel {
|
||||
public:
|
||||
J3DModel() {
|
||||
@@ -39,32 +43,32 @@ public:
|
||||
entryModelData(param_0, param_1, param_2);
|
||||
}
|
||||
|
||||
/* 800CFFF4 */ void setBaseTRMtx(f32 (*)[4]);
|
||||
/* 80327100 */ void initialize();
|
||||
/* 80327184 */ s32 entryModelData(J3DModelData*, u32, u32);
|
||||
/* 80327300 */ s32 createShapePacket(J3DModelData*);
|
||||
/* 803273CC */ s32 createMatPacket(J3DModelData*, u32);
|
||||
/* 803275FC */ s32 newDifferedDisplayList(u32);
|
||||
/* 8032767C */ void lock();
|
||||
/* 803276B4 */ void unlock();
|
||||
/* 803279A0 */ void diff();
|
||||
/* 80327A2C */ s32 setDeformData(J3DDeformData*, u32);
|
||||
/* 80327AA0 */ s32 setSkinDeform(J3DSkinDeform*, u32);
|
||||
/* 80327BD4 */ void calcAnmMtx();
|
||||
/* 80327C58 */ void calcWeightEnvelopeMtx();
|
||||
/* 80328190 */ void calcNrmMtx();
|
||||
/* 803281B4 */ void calcBumpMtx();
|
||||
/* 803282B8 */ void calcBBoardMtx();
|
||||
/* 803282EC */ void prepareShapePackets();
|
||||
void setBaseTRMtx(f32 (*)[4]);
|
||||
void initialize();
|
||||
s32 entryModelData(J3DModelData*, u32, u32);
|
||||
s32 createShapePacket(J3DModelData*);
|
||||
s32 createMatPacket(J3DModelData*, u32);
|
||||
s32 newDifferedDisplayList(u32);
|
||||
void lock();
|
||||
void unlock();
|
||||
void diff();
|
||||
s32 setDeformData(J3DDeformData*, u32);
|
||||
s32 setSkinDeform(J3DSkinDeform*, u32);
|
||||
void calcAnmMtx();
|
||||
void calcWeightEnvelopeMtx();
|
||||
void calcNrmMtx();
|
||||
void calcBumpMtx();
|
||||
void calcBBoardMtx();
|
||||
void prepareShapePackets();
|
||||
MtxP getAnmMtx(int);
|
||||
|
||||
/* 80327CA4 */ virtual void update();
|
||||
/* 80327E4C */ virtual void entry();
|
||||
/* 80327CF0 */ virtual void calc();
|
||||
/* 803276EC */ virtual void calcMaterial();
|
||||
/* 80327858 */ virtual void calcDiffTexMtx();
|
||||
/* 80327F40 */ virtual void viewCalc();
|
||||
/* 80328350 */ virtual ~J3DModel();
|
||||
virtual void update();
|
||||
virtual void entry();
|
||||
virtual void calc();
|
||||
virtual void calcMaterial();
|
||||
virtual void calcDiffTexMtx();
|
||||
virtual void viewCalc();
|
||||
virtual ~J3DModel();
|
||||
|
||||
J3DModelData* getModelData() { return mModelData; }
|
||||
|
||||
@@ -78,39 +82,42 @@ public:
|
||||
void i_setBaseTRMtx(Mtx m) { MTXCopy(m, mBaseTransformMtx); }
|
||||
u32 getMtxCalcMode() const { return mFlags & 0x03; }
|
||||
J3DVertexBuffer* getVertexBuffer() const { return (J3DVertexBuffer*)&mVertexBuffer; }
|
||||
J3DMatPacket* getMatPacket(u16 idx) const { return &mMatPacket[idx]; }
|
||||
J3DShapePacket* getShapePacket(u16 idx) const { return &mShapePacket[idx]; }
|
||||
J3DMtxBuffer* getMtxBuffer() const { return mMtxBuffer; }
|
||||
Mtx33* getBumpMtxPtr(int idx) const { return mMtxBuffer->getBumpMtxPtr(idx); }
|
||||
Mtx33* getNrmMtxPtr() const { return mMtxBuffer->getNrmMtxPtr(); }
|
||||
Mtx* getDrawMtxPtr() const { return mMtxBuffer->getDrawMtxPtr(); }
|
||||
J3DMatPacket* getMatPacket(u16 idx) const { return &mpMatPacket[idx]; }
|
||||
J3DShapePacket* getShapePacket(u16 idx) const { return &mpShapePacket[idx]; }
|
||||
// Mtx33* getBumpMtxPtr(int idx) const { return mMtxBuffer->getBumpMtxPtr(idx); }
|
||||
Mtx33* getNrmMtxPtr() const { return mpNrmMtxBuf[1][mCurrentViewNo]; }
|
||||
Mtx* getDrawMtxPtr() const { return mpDrawMtxBuf[1][mCurrentViewNo]; }
|
||||
void setBaseScale(const Vec& scale) { mBaseScale = scale; }
|
||||
void setUserArea(u32 area) { mUserArea = area; }
|
||||
u32 getUserArea() const { return mUserArea; }
|
||||
Vec* getBaseScale() { return &mBaseScale; }
|
||||
void setAnmMtx(int i, Mtx m) { mMtxBuffer->setAnmMtx(i, m); }
|
||||
|
||||
// is there a better way to handle inlines with same name as non-inlines?
|
||||
MtxP i_getAnmMtx(int p1) { return mMtxBuffer->getAnmMtx(p1); }
|
||||
void i_setAnmMtx(int p1, Mtx mtx) { mMtxBuffer->setAnmMtx(p1, mtx); }
|
||||
|
||||
/* 0x04 */ J3DModelData* mModelData;
|
||||
/* 0x08 */ u32 mFlags;
|
||||
/* 0x0C */ u32 mDiffFlag;
|
||||
/* 0x10 */ J3DCalcCallBack mCalcCallBack;
|
||||
/* 0x14 */ u32 mUserArea;
|
||||
/* 0x18 */ Vec mBaseScale;
|
||||
/* 0x24 */ Mtx mBaseTransformMtx;
|
||||
/* 0x54 */ Mtx mInternalView;
|
||||
/* 0x84 */ J3DMtxBuffer* mMtxBuffer;
|
||||
/* 0x88 */ J3DVertexBuffer mVertexBuffer;
|
||||
/* 0xC0 */ J3DMatPacket* mMatPacket;
|
||||
/* 0xC4 */ J3DShapePacket* mShapePacket;
|
||||
/* 0xC8 */ J3DDeformData* mDeformData;
|
||||
/* 0xCC */ J3DSkinDeform* mSkinDeform;
|
||||
/* 0xD0 */ J3DVtxColorCalc* mVtxColorCalc;
|
||||
/* 0xD4 */ J3DUnkCalc1* mUnkCalc1;
|
||||
/* 0xD8 */ J3DUnkCalc2* mUnkCalc2;
|
||||
/* 0x004 */ J3DModelData* mModelData;
|
||||
/* 0x008 */ u32 mFlags;
|
||||
/* 0x00C */ u32 mDiffFlag;
|
||||
/* 0x010 */ J3DCalcCallBack mCalcCallBack;
|
||||
/* 0x014 */ u32 mUserArea;
|
||||
/* 0x018 */ Vec mBaseScale;
|
||||
/* 0x024 */ Mtx mBaseTransformMtx;
|
||||
/* 0x054 */ Mtx mInternalView;
|
||||
/* 0x084 */ u8* mpScaleFlagArr;
|
||||
/* 0x088 */ u8* mpEvlpScaleFlagArr;
|
||||
/* 0x08C */ Mtx* mpNodeMtx;
|
||||
/* 0x090 */ Mtx* mpWeightEnvMtx;
|
||||
/* 0x094 */ Mtx** mpDrawMtxBuf[2];
|
||||
/* 0x09C */ Mtx33** mpNrmMtxBuf[2];
|
||||
/* 0x0A4 */ Mtx33*** mpBumpMtxArr[2];
|
||||
/* 0x0AC */ u32 mMtxBufferFlag;
|
||||
/* 0x0B0 */ u32 mCurrentViewNo;
|
||||
/* 0x0B4 */ J3DMatPacket* mpMatPacket;
|
||||
/* 0x0B8 */ J3DShapePacket* mpShapePacket;
|
||||
/* 0x0BC */ J3DDeformData* mpDeformData;
|
||||
/* 0x0C0 */ J3DSkinDeform* mpSkinDeform;
|
||||
/* 0x0C4 */ void * pad4[2];
|
||||
/* 0x0CC */ J3DVertexBuffer mVertexBuffer;
|
||||
/* 0x104 */ J3DVisibilityManager * mpVisibilityManager;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(J3DModel) == 0x108);
|
||||
|
||||
#endif /* J3DMODEL_H */
|
||||
|
||||
@@ -4,35 +4,12 @@
|
||||
#include "JSystem/J3DGraphBase/J3DSys.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
// matches debug
|
||||
inline f32 J3DCalcZValue(register MtxP m, register Vec v) {
|
||||
register f32 temp_f4;
|
||||
register f32 out;
|
||||
register f32 temp_f0;
|
||||
register f32 temp_f2;
|
||||
register f32 temp_f1 = 1.0f;
|
||||
|
||||
// clang-format off
|
||||
asm {
|
||||
psq_l temp_f0, 0(v), 0, 0 /* qr0 */
|
||||
lfs temp_f2, 8(v)
|
||||
psq_l temp_f4, 32(m), 0, 0 /* qr0 */
|
||||
psq_l out, 40(m), 0, 0 /* qr0 */
|
||||
ps_merge00 temp_f2, temp_f2, temp_f1
|
||||
ps_mul temp_f4, temp_f0, temp_f4
|
||||
ps_madd out, temp_f2, out, temp_f4
|
||||
ps_sum0 out, out, out, out
|
||||
}
|
||||
// clang-format on
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
class J3DDrawBuffer;
|
||||
class J3DPacket;
|
||||
class J3DDrawPacket;
|
||||
class J3DMatPacket;
|
||||
class J3DShapePacket;
|
||||
class J3DCallBackPacket;
|
||||
|
||||
typedef int (J3DDrawBuffer::*sortFunc)(J3DMatPacket*);
|
||||
typedef void (J3DDrawBuffer::*drawFunc)() const;
|
||||
@@ -75,6 +52,7 @@ public:
|
||||
void setNonSort() { mSortType = 5; }
|
||||
void setZSort() { mSortType = 2; }
|
||||
void setZMtx(MtxP mtx) { mpZMtx = mtx; }
|
||||
void setCallBackPacket(J3DCallBackPacket* pPacket);
|
||||
|
||||
public:
|
||||
/* 0x00 */ J3DPacket** mpBuf;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -12,35 +12,34 @@ class J3DMaterialAnm;
|
||||
|
||||
class J3DMaterial {
|
||||
public:
|
||||
/* 803157A0 */ static J3DColorBlock* createColorBlock(u32);
|
||||
/* 803159A0 */ static J3DTexGenBlock* createTexGenBlock(u32);
|
||||
/* 80315B04 */ static J3DTevBlock* createTevBlock(int);
|
||||
/* 80315E78 */ static J3DIndBlock* createIndBlock(int);
|
||||
/* 80315F60 */ static J3DPEBlock* createPEBlock(u32, u32);
|
||||
/* 80316100 */ static u32 calcSizeColorBlock(u32);
|
||||
/* 80316150 */ static u32 calcSizeTexGenBlock(u32);
|
||||
/* 8031617C */ static u32 calcSizeTevBlock(int);
|
||||
/* 803161C4 */ static u32 calcSizeIndBlock(int);
|
||||
/* 803161D8 */ static u32 calcSizePEBlock(u32, u32);
|
||||
/* 80316240 */ void initialize();
|
||||
/* 80316290 */ u32 countDLSize();
|
||||
/* 80316344 */ void makeDisplayList_private(J3DDisplayListObj*);
|
||||
/* 80316AB0 */ void setCurrentMtx();
|
||||
/* 80316AC8 */ void calcCurrentMtx();
|
||||
/* 80316D68 */ void copy(J3DMaterial*);
|
||||
/* 80316E90 */ s32 newSharedDisplayList(u32);
|
||||
/* 80316F24 */ s32 newSingleSharedDisplayList(u32);
|
||||
static J3DColorBlock* createColorBlock(u32);
|
||||
static J3DTexGenBlock* createTexGenBlock(u32);
|
||||
static J3DTevBlock* createTevBlock(int);
|
||||
static J3DIndBlock* createIndBlock(int);
|
||||
static J3DPEBlock* createPEBlock(u32, u32);
|
||||
static u32 calcSizeColorBlock(u32);
|
||||
static u32 calcSizeTexGenBlock(u32);
|
||||
static u32 calcSizeTevBlock(int);
|
||||
static u32 calcSizeIndBlock(int);
|
||||
static u32 calcSizePEBlock(u32, u32);
|
||||
void initialize();
|
||||
u32 countDLSize();
|
||||
void makeDisplayList_private(J3DDisplayListObj*);
|
||||
void setCurrentMtx();
|
||||
void calcCurrentMtx();
|
||||
void copy(J3DMaterial*);
|
||||
s32 newSharedDisplayList(u32);
|
||||
s32 newSingleSharedDisplayList(u32);
|
||||
|
||||
/* 803169DC */ virtual void calc(f32 const (*)[4]);
|
||||
/* 80316A54 */ virtual void calcDiffTexMtx(f32 const (*)[4]);
|
||||
/* 80316620 */ virtual void makeDisplayList();
|
||||
/* 80316668 */ virtual void makeSharedDisplayList();
|
||||
/* 8031668C */ virtual void load();
|
||||
/* 803166DC */ virtual void loadSharedDL();
|
||||
/* 80316740 */ virtual void patch();
|
||||
/* 803167D8 */ virtual void diff(u32);
|
||||
/* 80316E14 */ virtual void reset();
|
||||
/* 80316E70 */ virtual void change();
|
||||
virtual void calc(f32 const (*)[4]);
|
||||
virtual void makeDisplayList();
|
||||
virtual void makeSharedDisplayList();
|
||||
virtual void load();
|
||||
virtual void loadSharedDL();
|
||||
virtual void patch();
|
||||
virtual void diff(u32);
|
||||
virtual void reset();
|
||||
virtual void change();
|
||||
|
||||
J3DMaterial* getNext() const { return mNext; }
|
||||
J3DShape* getShape() const { return mShape; }
|
||||
|
||||
@@ -30,7 +30,7 @@ inline int calcDifferedBufferSize_TexMtxSize(int param_1) {
|
||||
}
|
||||
|
||||
inline int calcDifferedBufferSize_TexGenSize(int param_1) {
|
||||
return param_1 * 0x3d + 10;
|
||||
return param_1 * 0x39 + 5;
|
||||
}
|
||||
|
||||
inline u32 getDiffFlag_TexNoNum(u32 param_1) {
|
||||
@@ -146,16 +146,24 @@ public:
|
||||
void offFlag(u32 flag) { mFlags &= ~flag; }
|
||||
void lock() { onFlag(LOCKED); }
|
||||
void unlock() { offFlag(LOCKED); }
|
||||
J3DTexMtxObj* getTexMtxObj() const { return mpTexMtxObj; }
|
||||
bool isLocked() const { return checkFlag(1); }
|
||||
|
||||
public:
|
||||
/* 0x10 */ u32 mFlags;
|
||||
/* 0x14 */ char mPad0[0x0C]; // unk
|
||||
/* 0x20 */ J3DDisplayListObj* mpDisplayListObj;
|
||||
/* 0x24 */ J3DTexMtxObj* mpTexMtxObj;
|
||||
}; // Size: 0x28
|
||||
|
||||
class J3DCallBackPacket : public J3DPacket {
|
||||
public:
|
||||
~J3DCallBackPacket();
|
||||
virtual void draw();
|
||||
|
||||
public:
|
||||
typedef void (*CallBack)(J3DCallBackPacket * pPacket, u32 timing);
|
||||
CallBack mpCallBack;
|
||||
};
|
||||
|
||||
class J3DShapePacket : public J3DDrawPacket {
|
||||
public:
|
||||
J3DShapePacket();
|
||||
@@ -169,7 +177,8 @@ public:
|
||||
|
||||
void setShape(J3DShape* pShape) { mpShape = pShape; }
|
||||
void setModel(J3DModel* pModel) { mpModel = pModel; }
|
||||
void setMtxBuffer(J3DMtxBuffer* pMtxBuffer) { mpMtxBuffer = pMtxBuffer; }
|
||||
void setDrawMtx(Mtx** pDrawMtx) { mpDrawMtx = pDrawMtx; }
|
||||
void setNrmMtx(Mtx33** pNrmMtx) { mpNrmMtx = pNrmMtx; }
|
||||
void setBaseMtxPtr(Mtx* pMtx) { mpBaseMtxPtr = pMtx; }
|
||||
|
||||
J3DShape* getShape() const { return mpShape; }
|
||||
@@ -177,12 +186,15 @@ public:
|
||||
Mtx* getBaseMtxPtr() const { return mpBaseMtxPtr; }
|
||||
|
||||
public:
|
||||
/* 0x28 */ J3DShape* mpShape;
|
||||
/* 0x2C */ J3DMtxBuffer* mpMtxBuffer;
|
||||
/* 0x24 */ J3DShape* mpShape;
|
||||
/* 0x28 */ Mtx** mpDrawMtx;
|
||||
/* 0x2C */ Mtx33** mpNrmMtx;
|
||||
/* 0x30 */ Mtx* mpBaseMtxPtr;
|
||||
/* 0x34 */ u32 mDiffFlag;
|
||||
/* 0x38 */ J3DModel* mpModel;
|
||||
}; // Size: 0x3C
|
||||
/* 0x34 */ u32* mpCurrentViewNo;
|
||||
/* 0x38 */ u32 mDiffFlag;
|
||||
/* 0x3C */ u8* mpScaleFlagArray;
|
||||
/* 0x40 */ J3DModel* mpModel;
|
||||
}; // Size: 0x44
|
||||
|
||||
class J3DMatPacket : public J3DDrawPacket {
|
||||
public:
|
||||
|
||||
@@ -121,6 +121,7 @@ public:
|
||||
static void resetVcdVatCache() { sOldVcdVatCmd = NULL; }
|
||||
|
||||
static void* sOldVcdVatCmd;
|
||||
static u8 sEnvelopeFlag;
|
||||
|
||||
private:
|
||||
friend struct J3DShapeFactory;
|
||||
|
||||
@@ -54,6 +54,7 @@ public:
|
||||
static u32 sCurrentPipeline;
|
||||
// static J3DScaleFlag sCurrentScaleFlag;
|
||||
static u8* sCurrentScaleFlag;
|
||||
static u8 sNBTFlag;
|
||||
static u32 sTexMtxLoadType;
|
||||
|
||||
static void setCurrentPipeline(u32 pipeline) { sCurrentPipeline = pipeline; }
|
||||
|
||||
@@ -44,27 +44,27 @@ struct J3DSys {
|
||||
/* 0x05C */ u8 field_0x5c[0x04];
|
||||
/* 0x060 */ u32 mTexCacheRegionNum;
|
||||
/* 0x064 */ GXTexRegion mTexCacheRegion[8];
|
||||
/* 0x0E4 */ u8 field_0xe4[0x20];
|
||||
/* 0x104 */ Mtx* mModelDrawMtx;
|
||||
/* 0x108 */ Mtx33* mModelNrmMtx;
|
||||
/* 0x10C */ void* mVtxPos;
|
||||
/* 0x110 */ void* mVtxNrm;
|
||||
/* 0x114 */ _GXColor* mVtxCol;
|
||||
/* 0x118 */ Vec* mNBTScale;
|
||||
/* 0x0E4 */ u8 field_0xe4[0x24];
|
||||
/* 0x108 */ Mtx* mModelDrawMtx;
|
||||
/* 0x10C */ Mtx33* mModelNrmMtx;
|
||||
/* 0x110 */ void* mVtxPos;
|
||||
/* 0x114 */ void* mVtxNrm;
|
||||
/* 0x118 */ _GXColor* mVtxCol;
|
||||
/* 0x11C */ Vec* mNBTScale;
|
||||
|
||||
/* 8030FDE8 */ J3DSys();
|
||||
/* 8030FEC0 */ void loadPosMtxIndx(int, u16) const;
|
||||
/* 8030FEE4 */ void loadNrmMtxIndx(int, u16) const;
|
||||
/* 8030FF0C */ void setTexCacheRegion(_GXTexCacheSize);
|
||||
/* 803100BC */ void drawInit();
|
||||
/* 8031073C */ void reinitGX();
|
||||
/* 8031079C */ void reinitGenMode();
|
||||
/* 803107E8 */ void reinitLighting();
|
||||
/* 80310894 */ void reinitTransform();
|
||||
/* 80310998 */ void reinitTexture();
|
||||
/* 80310A3C */ void reinitTevStages();
|
||||
/* 80310D44 */ void reinitIndStages();
|
||||
/* 80310E3C */ void reinitPixelProc();
|
||||
J3DSys();
|
||||
void loadPosMtxIndx(int, u16) const;
|
||||
void loadNrmMtxIndx(int, u16) const;
|
||||
void setTexCacheRegion(_GXTexCacheSize);
|
||||
void drawInit();
|
||||
void reinitGX();
|
||||
void reinitGenMode();
|
||||
void reinitLighting();
|
||||
void reinitTransform();
|
||||
void reinitTexture();
|
||||
void reinitTevStages();
|
||||
void reinitIndStages();
|
||||
void reinitPixelProc();
|
||||
|
||||
enum DrawMode {
|
||||
/* 0x3 */ OPA_TEX_EDGE = 3,
|
||||
|
||||
@@ -210,4 +210,6 @@ inline void J3DPSMulMtxVec(register Mtx3P mtx, register SVec* vec, register SVec
|
||||
}
|
||||
}
|
||||
|
||||
f32 J3DCalcZValue(register MtxP m, register Vec v);
|
||||
|
||||
#endif /* J3DTRANSFORM_H */
|
||||
|
||||
@@ -22,6 +22,7 @@ struct J3DVtxColorCalc {
|
||||
class J3DVertexData {
|
||||
public:
|
||||
J3DVertexData();
|
||||
~J3DVertexData();
|
||||
|
||||
void* getVtxPosArray() const { return mVtxPosArray; }
|
||||
void* getVtxNrmArray() const { return mVtxNrmArray; }
|
||||
@@ -46,32 +47,32 @@ private:
|
||||
/* 0x04 */ u32 mNrmNum;
|
||||
/* 0x08 */ u32 mColNum;
|
||||
/* 0x0C */ u32 mTexCoordNum;
|
||||
/* 0x10 */ u32 mPacketNum;
|
||||
/* 0x14 */ GXVtxAttrFmtList* mVtxAttrFmtList;
|
||||
/* 0x18 */ void* mVtxPosArray;
|
||||
/* 0x1C */ void* mVtxNrmArray;
|
||||
/* 0x20 */ void* mVtxNBTArray;
|
||||
/* 0x24 */ GXColor* mVtxColorArray[2];
|
||||
/* 0x2C */ void* mVtxTexCoordArray[8];
|
||||
/* 0x4C */ u8 mVtxPosFrac;
|
||||
/* 0x50 */ GXCompType mVtxPosType;
|
||||
/* 0x54 */ u8 mVtxNrmFrac;
|
||||
/* 0x58 */ GXCompType mVtxNrmType;
|
||||
/* 0x10 */ GXVtxAttrFmtList* mVtxAttrFmtList;
|
||||
/* 0x14 */ void* mVtxPosArray;
|
||||
/* 0x18 */ void* mVtxNrmArray;
|
||||
/* 0x1C */ void* mVtxNBTArray;
|
||||
/* 0x20 */ GXColor* mVtxColorArray[2];
|
||||
/* 0x28 */ void* mVtxTexCoordArray[8];
|
||||
/* 0x48 */ u8 mVtxPosFrac;
|
||||
/* 0x4C */ GXCompType mVtxPosType;
|
||||
/* 0x50 */ u8 mVtxNrmFrac;
|
||||
/* 0x54 */ GXCompType mVtxNrmType;
|
||||
/* 0x58 */ u32 mPacketNum;
|
||||
};
|
||||
|
||||
class J3DVertexBuffer {
|
||||
public:
|
||||
J3DVertexBuffer() { init(); }
|
||||
|
||||
/* 80310F78 */ void setVertexData(J3DVertexData*);
|
||||
/* 80310FD8 */ void init();
|
||||
/* 80311030 */ ~J3DVertexBuffer();
|
||||
/* 8031106C */ void setArray() const;
|
||||
/* 80311090 */ s32 copyLocalVtxPosArray(u32);
|
||||
/* 803111B0 */ s32 copyLocalVtxNrmArray(u32);
|
||||
/* 803112D0 */ s32 copyLocalVtxArray(u32);
|
||||
/* 80311478 */ s32 allocTransformedVtxPosArray();
|
||||
/* 8031152C */ s32 allocTransformedVtxNrmArray();
|
||||
void setVertexData(J3DVertexData*);
|
||||
void init();
|
||||
~J3DVertexBuffer();
|
||||
void setArray() const;
|
||||
s32 copyLocalVtxPosArray(u32);
|
||||
s32 copyLocalVtxNrmArray(u32);
|
||||
s32 copyLocalVtxArray(u32);
|
||||
s32 allocTransformedVtxPosArray();
|
||||
s32 allocTransformedVtxNrmArray();
|
||||
|
||||
void setCurrentVtxPos(void* pVtxPos) { mCurrentVtxPos = pVtxPos; }
|
||||
void* getCurrentVtxPos() { return mCurrentVtxPos; }
|
||||
|
||||
@@ -2,17 +2,24 @@
|
||||
#define C_BG_S_POLY_INFO_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "global.h"
|
||||
|
||||
class cBgW;
|
||||
class cBgS_PolyInfo {
|
||||
private:
|
||||
/* 0x00 */ u16 mPolyIndex;
|
||||
/* 0x02 */ u16 mBgIndex;
|
||||
/* 0x04 */ void* unk_0x04;
|
||||
/* 0x04 */ cBgW* mpBgW;
|
||||
/* 0x08 */ unsigned int mActorId;
|
||||
|
||||
public:
|
||||
cBgS_PolyInfo();
|
||||
void ClearPi();
|
||||
void ClearPi() {
|
||||
mPolyIndex = -1;
|
||||
mBgIndex = 0x100;
|
||||
mpBgW = NULL;
|
||||
mActorId = -1;
|
||||
}
|
||||
void SetPolyInfo(const cBgS_PolyInfo&);
|
||||
void SetActorInfo(int, void*, unsigned int);
|
||||
bool ChkSafe(const void*, unsigned int) const;
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
#ifndef C_BG_W_H
|
||||
#define C_BG_W_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
#include "SSystem/SComponent/c_xyz.h"
|
||||
#include "dolphin/mtx/mtx.h"
|
||||
|
||||
class cBgW_BgId {
|
||||
private:
|
||||
/* 0x0 */ u16 m_id;
|
||||
/* 0x0 */ int m_id;
|
||||
/* 0x4 vtable */
|
||||
|
||||
public:
|
||||
void Release();
|
||||
bool ChkUsed() const;
|
||||
void Regist(int);
|
||||
|
||||
virtual ~cBgW_BgId() {}
|
||||
@@ -19,10 +19,99 @@ public:
|
||||
void Ct() { m_id = 0x100; }
|
||||
|
||||
u16 GetId() const { return m_id; }
|
||||
bool ChkUsed() const {
|
||||
if (m_id >= 0 && m_id < 0x100) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
bool cBgW_CheckBGround(float a1);
|
||||
bool cBgW_CheckBRoof(float a1);
|
||||
bool cBgW_CheckBWall(float a1);
|
||||
class cBgW_TriElm;
|
||||
class cBgW_RwgElm;
|
||||
class cBgW_BlkElm;
|
||||
class cBgW_GrpElm;
|
||||
class cBgW_NodeTree;
|
||||
class cBgD_t;
|
||||
class cBgS_LinChk;
|
||||
class cBgS_GndChk;
|
||||
class cBgS_ShdwDraw;
|
||||
class cBgS_PolyPassChk;
|
||||
class cBgS_GrpPassChk;
|
||||
|
||||
class cBgW : public cBgW_BgId {
|
||||
public:
|
||||
enum Flags_e {
|
||||
MOVE_BG_e = 0x1,
|
||||
NO_VTX_TBL_e = 0x10,
|
||||
GLOBAL_e = 0x20,
|
||||
LOCK_e = 0x80,
|
||||
};
|
||||
|
||||
cBgW();
|
||||
|
||||
void FreeArea();
|
||||
void GlobalVtx();
|
||||
void SetVtx();
|
||||
|
||||
void SetTri();
|
||||
void BlckConnect(u16*, int*, int);
|
||||
void MakeBlckTransMinMax(cXyz*, cXyz*);
|
||||
void MakeBlckMinMax(int, cXyz*, cXyz*);
|
||||
void MakeBlckBnd(int, cXyz*, cXyz*);
|
||||
void MakeNodeTreeRp(int);
|
||||
void MakeNodeTreeGrpRp(int);
|
||||
void MakeNodeTree();
|
||||
void ChkMemoryError();
|
||||
bool Set(cBgD_t*, u32, f32(*)[3][4]);
|
||||
void RwgLineCheck(u16, cBgS_LinChk*);
|
||||
void LineCheckRp(cBgS_LinChk*, int);
|
||||
void LineCheckGrpRp(cBgS_LinChk*, int, int);
|
||||
void RwgGroundCheckCommon(f32, u16, cBgS_GndChk*);
|
||||
void RwgGroundCheckGnd(u16, cBgS_GndChk*);
|
||||
void RwgGroundCheckWall(u16, cBgS_GndChk*);
|
||||
void GroundCrossRp(cBgS_GndChk*, int);
|
||||
void GroundCrossGrpRp(cBgS_GndChk*, int, int);
|
||||
void CopyOldMtx();
|
||||
void Move();
|
||||
void RwgShdwDraw(int, cBgS_ShdwDraw*);
|
||||
void ShdwDrawRp(cBgS_ShdwDraw*, int);
|
||||
void ShdwDrawGrpRp(cBgS_ShdwDraw*, int);
|
||||
void GetTrans(cXyz*) const;
|
||||
void GetTriPnt(int, cXyz*, cXyz*, cXyz*) const;
|
||||
void GetTopUnder(f32*, f32*) const;
|
||||
|
||||
virtual ~cBgW();
|
||||
virtual void GetGrpToRoomIndex(int) const;
|
||||
virtual void CalcPlane();
|
||||
virtual void ClassifyPlane();
|
||||
virtual void ChkPolyThrough(int, cBgS_PolyPassChk*);
|
||||
virtual void ChkShdwDrawThrough(int, cBgS_PolyPassChk*);
|
||||
virtual void ChkGrpThrough(int, cBgS_GrpPassChk*, int);
|
||||
|
||||
/* 0x08 */ Mtx* mpModelMtx;
|
||||
/* 0x0C */ Mtx mOldMtx;
|
||||
/* 0x3C */ Mtx mCurMtx;
|
||||
/* 0x6C */ u8 mFlags;
|
||||
/* 0x6D */ u8 mbNeedsFullTransform;
|
||||
/* 0x6E */ u8 field_0x6E[0x74 - 0x6E];
|
||||
/* 0x74 */ u8 mMoveCounter;
|
||||
/* 0x75 */ u8 mWallCorrectPriority;
|
||||
/* 0x76 */ u8 field_0x76[0x78 - 0x76];
|
||||
/* 0x78 */ int mIgnorePlaneType;
|
||||
/* 0x7C */ cXyz mTransVel;
|
||||
/* 0x88 */ cBgW_TriElm* mpTriElm;
|
||||
/* 0x8C */ cBgW_RwgElm* mpRwg;
|
||||
/* 0x90 */ cXyz* mpVtxTbl;
|
||||
/* 0x94 */ cBgD_t* mpBgDt;
|
||||
/* 0x98 */ cBgW_BlkElm* mpBlk;
|
||||
/* 0x9C */ cBgW_GrpElm* mpGrp;
|
||||
/* 0xA0 */ cBgW_NodeTree* mpNodeTree;
|
||||
/* 0xA4 */ int mRootGrpIdx;
|
||||
};
|
||||
|
||||
bool cBgW_CheckBGround(f32 a1);
|
||||
bool cBgW_CheckBRoof(f32 a1);
|
||||
bool cBgW_CheckBWall(f32 a1);
|
||||
|
||||
#endif /* C_BG_W_H */
|
||||
|
||||
@@ -22,7 +22,15 @@ class cCcD_AabAttr;
|
||||
class cCcD_CylAttr;
|
||||
class cCcD_SphAttr;
|
||||
|
||||
enum cCcD_ObjAtType {};
|
||||
enum cCcD_ObjAtType {
|
||||
/* 0x00000002 */ AT_TYPE_SWORD = (1 << 1),
|
||||
/* 0x00000020 */ AT_TYPE_BOMB = (1 << 5),
|
||||
/* 0x00000040 */ AT_TYPE_BOOMERANG = (1 << 6),
|
||||
/* 0x00004000 */ AT_TYPE_NORMAL_ARROW = (1 << 14),
|
||||
/* 0x00040000 */ AT_TYPE_FIRE_ARROW = (1 << 18),
|
||||
/* 0x00080000 */ AT_TYPE_ICE_ARROW = (1 << 19),
|
||||
/* 0x00100000 */ AT_TYPE_LIGHT_ARROW = (1 << 20),
|
||||
};
|
||||
|
||||
class cCcD_ShapeAttr {
|
||||
public:
|
||||
|
||||
@@ -4,13 +4,13 @@
|
||||
#include "dolphin/types.h"
|
||||
|
||||
struct cDT_NamePTbl {
|
||||
u32 mCount;
|
||||
char ** mpNames;
|
||||
|
||||
cDT_NamePTbl();
|
||||
virtual ~cDT_NamePTbl();
|
||||
int GetIndex(const char *pName, int start) const;
|
||||
void Set(u32 count, char** pNames);
|
||||
|
||||
u32 mCount;
|
||||
char ** mpNames;
|
||||
};
|
||||
|
||||
struct cDT_DataSrc {
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define D_A_ITEM_H
|
||||
|
||||
#include "d/actor/d_a_itembase.h"
|
||||
#include "d/d_particle.h"
|
||||
|
||||
class daItem_c : public daItemBase_c {
|
||||
public:
|
||||
@@ -28,7 +29,7 @@ public:
|
||||
void itemDefaultRotateY();
|
||||
bool checkItemDisappear();
|
||||
void setItemTimer(int);
|
||||
bool checkPlayerGet();
|
||||
BOOL checkPlayerGet();
|
||||
void itemActionForRupee();
|
||||
void itemActionForHeart();
|
||||
void itemActionForKey();
|
||||
@@ -45,14 +46,36 @@ public:
|
||||
void mode_water();
|
||||
void initAction();
|
||||
s32 _daItem_isdelete();
|
||||
|
||||
s32 checkControl();
|
||||
s32 startControl();
|
||||
s32 endControl();
|
||||
s32 checkLock();
|
||||
s32 setLock();
|
||||
s32 releaseLock();
|
||||
s32 checkActionNow();
|
||||
|
||||
public:
|
||||
u8 temp1[0x20];
|
||||
/* 0x648 */ s32 mSwitchId;
|
||||
/* 0x64C */ s32 mActivationSwitch;
|
||||
/* 0x650 */ f32 field3_0x650;
|
||||
/* 0x654 */ u8 field4_0x654[0x658 - 0x654];
|
||||
/* 0x658 */ s16 mItemTimer;
|
||||
/* 0x65A */ s16 field7_0x65a;
|
||||
/* 0x65C */ s16 field8_0x65c;
|
||||
/* 0x65E */ u8 field10_0x65e[0x667 - 0x65E];
|
||||
/* 0x667 */ u8 mUnknownParam;
|
||||
/* 0x668 */ u8 mItemAction;
|
||||
/* 0x669 */ u8 mStatusFlags;
|
||||
/* 0x66A */ u8 mMode;
|
||||
/* 0x66B */ u8 mCurAction;
|
||||
u8 temp2[0x54];
|
||||
/* 0x66B */ u8 mCurState;
|
||||
/* 0x66C */ u8 field23_0x66c[0x6BC - 0x66C];
|
||||
// /* 0x674 */ dPa_rippleEcallBack mPtclRippleCb;
|
||||
// /* 0x688 */ dPa_followEcallBack mPtclFollowCb;
|
||||
// /* 0x69C */ dPa_smokeEcallBack mPtclSmokeCb;
|
||||
/* 0x6BC */ JPABaseEmitter* mpParticleEmitter;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daItem_c) == 0x6C0);
|
||||
|
||||
#endif /* D_A_ITEM_H */
|
||||
@@ -3,6 +3,9 @@
|
||||
|
||||
#include "f_op/f_op_actor.h"
|
||||
#include "SSystem/SComponent/c_phase.h"
|
||||
#include "d/d_bg_s.h"
|
||||
#include "d/d_bg_s_acch.h"
|
||||
#include "d/d_cc_d.h"
|
||||
|
||||
class mDoExt_btkAnm;
|
||||
class mDoExt_brkAnm;
|
||||
@@ -15,17 +18,22 @@ struct daItemBase_c_m_data {
|
||||
/* 0x0C */ float mScaleAnimSpeed;
|
||||
/* 0x10 */ float field4_0x10;
|
||||
/* 0x14 */ short field5_0x14;
|
||||
/* 0x16 */ short field6_0x16;
|
||||
/* 0x16 */ short mDuration;
|
||||
/* 0x18 */ short field7_0x18;
|
||||
/* 0x1A */ u8 field8_0x1a;
|
||||
/* 0x1B */ u8 field9_0x1b;
|
||||
/* 0x1C */ short mNumFramesPerFullSpin;
|
||||
u8 temp1[0x26];
|
||||
u8 temp1[0x1A];
|
||||
/* 0x38 */ f32 mPickedUpInitialSpeedY;
|
||||
/* 0x3C */ f32 mPickedUpGravity;
|
||||
/* 0x40 */ short field45_0x40;
|
||||
/* 0x42 */ short field47_0x42;
|
||||
u8 temp2[0x4];
|
||||
/* 0x48 */ float mVelocityScale;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(daItemBase_c_m_data) == 0x4C);
|
||||
|
||||
struct daItemBase_c : public fopAc_ac_c {
|
||||
public:
|
||||
s32 DeleteBase(const char*);
|
||||
@@ -46,12 +54,10 @@ public:
|
||||
void hide();
|
||||
void show();
|
||||
void changeDraw();
|
||||
void chkDraw();
|
||||
bool chkDraw();
|
||||
void dead();
|
||||
void chkDead();
|
||||
void setLoadError();
|
||||
void CheckItemCreateHeap(fopAc_ac_c*);
|
||||
void CheckFieldItemCreateHeap(fopAc_ac_c*);
|
||||
|
||||
daItemBase_c_m_data* getData();
|
||||
|
||||
@@ -66,15 +72,11 @@ public:
|
||||
/* 0x2B0 */ mDoExt_brkAnm* mBrkAnm1;
|
||||
/* 0x2B4 */ mDoExt_brkAnm* mBrkAnm2;
|
||||
/* 0x2B8 */ mDoExt_bckAnm* mBckAnm;
|
||||
// /* 0x2BC */ dBgS_Acch mAcch;
|
||||
// /* 0x480 */ dBgS_AcchCir mAcchCir;
|
||||
// /* 0x4C0 */ dCcD_Stts mStts;
|
||||
// /* 0x4FC */ dCcD_Cyl mCyl;
|
||||
// /* 0x62C */ undefined field14_0x62c;
|
||||
// /* 0x62D */ undefined field15_0x62d;
|
||||
// /* 0x62E */ undefined field16_0x62e;
|
||||
// /* 0x62F */ undefined field17_0x62f;
|
||||
u8 temp[0x374];
|
||||
/* 0x2BC */ dBgS_Acch mAcch;
|
||||
/* 0x480 */ dBgS_AcchCir mAcchCir;
|
||||
/* 0x4C0 */ dCcD_Stts mStts;
|
||||
/* 0x4FC */ dCcD_Cyl mCyl;
|
||||
/* 0x62C */ u8 field14_0x62c[0x630 - 0x62C];
|
||||
/* 0x630 */ int mPickupFlag;
|
||||
/* 0x634 */ int field19_0x634;
|
||||
/* 0x638 */ short field20_0x638;
|
||||
|
||||
@@ -14,6 +14,6 @@ void dead();
|
||||
void chkDead();
|
||||
void setLoadError();
|
||||
void CheckItemCreateHeap(fopAc_ac_c*);
|
||||
void CheckFieldItemCreateHeap(fopAc_ac_c*);
|
||||
s32 CheckFieldItemCreateHeap(fopAc_ac_c*);
|
||||
|
||||
#endif /* D_A_ITEMBASE_STATIC_H */
|
||||
@@ -2,9 +2,9 @@
|
||||
#define D_A_PLAYER
|
||||
|
||||
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
|
||||
#include "d/d_cc_d.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_cc_d.h"
|
||||
|
||||
class daPy_matAnm_c : public J3DMaterialAnm {
|
||||
public:
|
||||
@@ -138,4 +138,4 @@ public:
|
||||
void getRopePos() const;
|
||||
};
|
||||
|
||||
#endif /* D_A_PLAYER */
|
||||
#endif /* D_A_PLAYER */
|
||||
|
||||
@@ -2,11 +2,12 @@
|
||||
#define D_A_PLAYER_LINK
|
||||
|
||||
#include "JAZelAudio/JAIZelBasic.h"
|
||||
#include "m_Do/m_Do_ext.h"
|
||||
#include "d/d_attention.h"
|
||||
#include "d/d_bg_s_acch.h"
|
||||
#include "d/d_bg_s_lin_chk.h"
|
||||
#include "d/d_drawlist.h"
|
||||
#include "m_Do/m_Do_ext.h"
|
||||
#include "d/d_bg_w.h"
|
||||
#include "d/actor/d_a_player.h"
|
||||
|
||||
class mDoExt_MtxCalcOldFrame;
|
||||
@@ -177,11 +178,6 @@ struct MagicArmorAuraEntry {
|
||||
|
||||
class daPy_anmIndex_c;
|
||||
|
||||
class dBgW {
|
||||
public:
|
||||
enum PushPullLabel {};
|
||||
};
|
||||
|
||||
class daPy_lk_c : public daPy_py_c {
|
||||
public:
|
||||
enum daPy_HEAP_TYPE {};
|
||||
|
||||
+39
-35
@@ -1,9 +1,10 @@
|
||||
#ifndef D_BG_D_BG_S_H
|
||||
#define D_BG_D_BG_S_H
|
||||
|
||||
#include "global.h"
|
||||
#include "SSystem/SComponent/c_sxyz.h"
|
||||
#include "SSystem/SComponent/c_xyz.h"
|
||||
#include "d/d_bg_w.h"
|
||||
#include "global.h"
|
||||
|
||||
class cBgS_LinChk;
|
||||
class cBgS_GndChk;
|
||||
@@ -12,7 +13,6 @@ class cM3dGPla;
|
||||
class cBgS_ShdwDraw;
|
||||
class dBgW;
|
||||
class fopAc_ac_c;
|
||||
class dBgW_Base;
|
||||
class dBgS_Acch;
|
||||
class dBgS_RoofChk;
|
||||
class dBgS_SplGrpChk;
|
||||
@@ -20,19 +20,19 @@ class dBgS_SphChk;
|
||||
|
||||
class cBgS_ChkElm {
|
||||
public:
|
||||
/* 0x00 */ dBgW_Base* m_bgw_base_ptr;
|
||||
/* 0x00 */ cBgW* m_bgw_base_ptr;
|
||||
/* 0x04 */ bool m_used;
|
||||
/* 0x08 */ u32 m_actor_id;
|
||||
/* 0x0C */ fopAc_ac_c* m_actor_ptr;
|
||||
/* 0x10 vtable */
|
||||
|
||||
public:
|
||||
cBgS_ChkElm() { this->Init(); }
|
||||
cBgS_ChkElm() { Init(); }
|
||||
void Init();
|
||||
void Release();
|
||||
|
||||
virtual ~cBgS_ChkElm() {}
|
||||
virtual void Regist2(dBgW_Base*, unsigned int, void*);
|
||||
virtual void Regist2(cBgW*, u32, void*);
|
||||
|
||||
bool ChkUsed() const { return m_used; }
|
||||
}; // Size: 0x14
|
||||
@@ -55,7 +55,7 @@ public:
|
||||
f32 GroundCross(cBgS_GndChk*);
|
||||
static void* ConvDzb(void*);
|
||||
fopAc_ac_c* GetActorPointer(int) const;
|
||||
dBgW_Base* GetBgWPointer(cBgS_PolyInfo&) const;
|
||||
cBgW* GetBgWPointer(cBgS_PolyInfo&) const;
|
||||
bool ChkPolySafe(cBgS_PolyInfo&);
|
||||
void GetTriGrp(int, int) const;
|
||||
void GetGrpToRoomId(int, int) const;
|
||||
@@ -76,43 +76,47 @@ class dBgS : public cBgS {
|
||||
public:
|
||||
dBgS() {}
|
||||
~dBgS() {}
|
||||
|
||||
void Ct();
|
||||
void Dt();
|
||||
void ClrMoveFlag();
|
||||
void Move();
|
||||
bool Regist(dBgW_Base*, fopAc_ac_c*);
|
||||
bool ChkMoveBG(cBgS_PolyInfo const&);
|
||||
bool ChkMoveBG_NoDABg(cBgS_PolyInfo const&);
|
||||
s32 GetExitId(cBgS_PolyInfo const&);
|
||||
s32 GetPolyColor(cBgS_PolyInfo const&);
|
||||
BOOL GetHorseNoEntry(cBgS_PolyInfo const&);
|
||||
int GetSpecialCode(cBgS_PolyInfo const&);
|
||||
int GetMagnetCode(cBgS_PolyInfo const&);
|
||||
int GetMonkeyBarsCode(cBgS_PolyInfo const&);
|
||||
u32 GetUnderwaterRoofCode(cBgS_PolyInfo const&);
|
||||
s32 GetWallCode(cBgS_PolyInfo const&);
|
||||
int GetPolyAtt0(cBgS_PolyInfo const&);
|
||||
int GetPolyAtt1(cBgS_PolyInfo const&);
|
||||
int GetGroundCode(cBgS_PolyInfo const&);
|
||||
s32 GetCamMoveBG(cBgS_PolyInfo const&);
|
||||
s32 GetRoomCamId(cBgS_PolyInfo const&);
|
||||
s32 GetRoomPathId(cBgS_PolyInfo const&);
|
||||
s32 GetRoomPathPntNo(cBgS_PolyInfo const&);
|
||||
u8 GetGrpSoundId(cBgS_PolyInfo const&);
|
||||
u32 ChkGrpInf(cBgS_PolyInfo const&, u32);
|
||||
s32 GetRoomId(cBgS_PolyInfo const&);
|
||||
bool GetPolyAttackThrough(cBgS_PolyInfo const&);
|
||||
u32 ChkPolyHSStick(cBgS_PolyInfo const&);
|
||||
bool Regist(cBgW*, fopAc_ac_c*);
|
||||
bool ChkMoveBG(cBgS_PolyInfo&);
|
||||
bool ChkMoveBG_NoDABg(cBgS_PolyInfo&);
|
||||
int GetPolyId0(int, int, int, u32, u32);
|
||||
int GetPolyCamId(int, int);
|
||||
int GetMtrlSndId(cBgS_PolyInfo&);
|
||||
int GetExitId(cBgS_PolyInfo&);
|
||||
int GetPolyColor(cBgS_PolyInfo&);
|
||||
int GetGrpRoomInfId(cBgS_PolyInfo&);
|
||||
u8 GetGrpSoundId(cBgS_PolyInfo&);
|
||||
u32 ChkGrpInf(cBgS_PolyInfo&, u32);
|
||||
int GetPolyId1(int, int, int, u32, u32);
|
||||
void GetLinkNo(cBgS_PolyInfo&);
|
||||
int GetWallCode(cBgS_PolyInfo&);
|
||||
int GetSpecialCode(cBgS_PolyInfo&);
|
||||
void GetAttributeCodeDirect(cBgS_PolyInfo&);
|
||||
void GetAttributeCode(cBgS_PolyInfo&);
|
||||
void GetGroundCode(cBgS_PolyInfo&);
|
||||
void GetPolyId2(int, int, int, u32, u32);
|
||||
int GetCamMoveBG(cBgS_PolyInfo&);
|
||||
int GetRoomCamId(cBgS_PolyInfo&);
|
||||
int GetRoomPathId(cBgS_PolyInfo&);
|
||||
int GetRoomPathPntNo(cBgS_PolyInfo&);
|
||||
int GetRoomId(cBgS_PolyInfo&);
|
||||
u32 ChkPolyHSStick(cBgS_PolyInfo&);
|
||||
void LineCrossNonMoveBG(cBgS_LinChk*);
|
||||
void WallCorrect(dBgS_Acch*);
|
||||
void WallCorrectSort(dBgS_Acch*);
|
||||
f32 RoofChk(dBgS_RoofChk*);
|
||||
bool SplGrpChk(dBgS_SplGrpChk*);
|
||||
bool SphChk(dBgS_SphChk*, void*);
|
||||
void MoveBgCrrPos(cBgS_PolyInfo const&, bool, cXyz*, csXyz*, csXyz*, bool, bool);
|
||||
void MoveBgTransPos(cBgS_PolyInfo const&, bool, cXyz*, csXyz*, csXyz*);
|
||||
void MoveBgMatrixCrrPos(cBgS_PolyInfo const&, bool, cXyz*, csXyz*, csXyz*);
|
||||
void RideCallBack(cBgS_PolyInfo const&, fopAc_ac_c*);
|
||||
void ArrowStickCallBack(cBgS_PolyInfo const&, fopAc_ac_c*, cXyz&);
|
||||
void WallCrrPos(dBgS_CrrPos*);
|
||||
void MoveBgCrrPos(cBgS_PolyInfo&, bool, cXyz*, csXyz*, csXyz*);
|
||||
void MoveBgTransPos(cBgS_PolyInfo&, bool, cXyz*, csXyz*, csXyz*);
|
||||
void MoveBgMatrixCrrPos(cBgS_PolyInfo&, bool, cXyz*, csXyz*, csXyz*);
|
||||
void RideCallBack(cBgS_PolyInfo&, fopAc_ac_c*);
|
||||
void PushPullCallBack(cBgS_PolyInfo&, fopAc_ac_c*, short, dBgW::PushPullLabel);
|
||||
|
||||
bool WaterChk(dBgS_SplGrpChk* chk) { return SplGrpChk(chk); }
|
||||
}; // Size: 0x1404
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
#ifndef D_BG_S_MOVEBG_ACTOR_H
|
||||
#define D_BG_S_MOVEBG_ACTOR_H
|
||||
|
||||
#include "SSystem/SComponent/c_bg_s_poly_info.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
|
||||
class dBgW;
|
||||
typedef void (*MoveBGActor_SetFunc)(dBgW*, void*, cBgS_PolyInfo&, bool, cXyz*, csXyz*,
|
||||
csXyz*);
|
||||
|
||||
class dBgS_MoveBgActor : public fopAc_ac_c {
|
||||
public:
|
||||
/* 0x290 */ dBgW* mpBgW;
|
||||
/* 0x294 */ Mtx mBgMtx;
|
||||
|
||||
dBgS_MoveBgActor();
|
||||
int MoveBGCreateHeap();
|
||||
int MoveBGCreate(char const*, int, MoveBGActor_SetFunc, u32);
|
||||
int MoveBGDelete();
|
||||
int MoveBGExecute();
|
||||
|
||||
int MoveBGDraw() { return Draw(); }
|
||||
|
||||
virtual int CreateHeap() { return 1; }
|
||||
virtual int Create() { return 1; }
|
||||
virtual int Execute(Mtx**) { return 1; }
|
||||
virtual int Draw() { return 1; }
|
||||
virtual int Delete() { return 1; }
|
||||
virtual int IsDelete() { return 1; }
|
||||
virtual int ToFore() { return 1; }
|
||||
virtual int ToBack() { return 1; }
|
||||
|
||||
static const char* m_name;
|
||||
static int m_dzb_id;
|
||||
static MoveBGActor_SetFunc m_set_func;
|
||||
};
|
||||
|
||||
#endif /* D_BG_S_MOVEBG_ACTOR_H */
|
||||
@@ -0,0 +1,65 @@
|
||||
#ifndef D_BG_W_H
|
||||
#define D_BG_W_H
|
||||
|
||||
#include "SSystem/SComponent/c_bg_w.h"
|
||||
|
||||
class dBgS_Acch;
|
||||
class cM3dGPla;
|
||||
class dBgS_RoofChk;
|
||||
class dBgS_SplGrpChk;
|
||||
class dBgS_SphChk;
|
||||
class cM3dGTri;
|
||||
class dBgS_CrrPos;
|
||||
class cBgS_PolyInfo;
|
||||
|
||||
class dBgW;
|
||||
typedef void (*dBgW_CrrFunc)(dBgW*, void*, cBgS_PolyInfo&, bool, cXyz*, csXyz*, csXyz*);
|
||||
|
||||
class dBgW : public cBgW {
|
||||
public:
|
||||
enum PushPullLabel {};
|
||||
|
||||
dBgW();
|
||||
|
||||
void Move();
|
||||
void positionWallCorrect(dBgS_Acch*, f32, cM3dGPla&, cXyz*, f32);
|
||||
void RwgWallCorrect(dBgS_Acch*, u16);
|
||||
void WallCorrectRp(dBgS_Acch*, int);
|
||||
void WallCorrectGrpRp(dBgS_Acch*, int, int);
|
||||
void RwgRoofChk(u16, dBgS_RoofChk*);
|
||||
void RoofChkRp(dBgS_RoofChk*, int);
|
||||
void RoofChkGrpRp(dBgS_RoofChk*, int, int);
|
||||
void RwgSplGrpChk(u16, dBgS_SplGrpChk*);
|
||||
void SplGrpChkRp(dBgS_SplGrpChk*, int);
|
||||
void SplGrpChkGrpRp(dBgS_SplGrpChk*, int, int);
|
||||
void RwgSphChk(u16, dBgS_SphChk*, void*);
|
||||
void SphChkRp(dBgS_SphChk*, void*, int);
|
||||
void SphChkGrpRp(dBgS_SphChk*, void*, int, int);
|
||||
void positionWallCrrPos(cM3dGTri&, dBgS_CrrPos*, cXyz*, f32, f32);
|
||||
void RwgWallCrrPos(u16, dBgS_CrrPos*);
|
||||
void WallCrrPosRp(dBgS_CrrPos*, int);
|
||||
void WallCrrPosGrpRp(dBgS_CrrPos*, int, int);
|
||||
void WallCrrPos(dBgS_CrrPos*);
|
||||
void ChangeAttributeCodeByPathPntNo(int, u32);
|
||||
|
||||
virtual ~dBgW() {}
|
||||
virtual void ChkPolyThrough(int, cBgS_PolyPassChk*);
|
||||
virtual void ChkShdwDrawThrough(int, cBgS_PolyPassChk*);
|
||||
virtual void ChkGrpThrough(int, cBgS_GrpPassChk*, int);
|
||||
virtual void CrrPos(cBgS_PolyInfo&, void*, bool, cXyz*, csXyz*, csXyz*);
|
||||
virtual void TransPos(cBgS_PolyInfo&, void*, bool, cXyz*, csXyz*, csXyz*);
|
||||
virtual void MatrixCrrPos(cBgS_PolyInfo&, void*, bool, cXyz*, csXyz*, csXyz*);
|
||||
|
||||
void SetCrrFunc(dBgW_CrrFunc func) { m_crr_func = func; }
|
||||
|
||||
/* 0xA8 */ dBgW_CrrFunc m_crr_func;
|
||||
/* 0xAC */ s16 mOldRotY;
|
||||
/* 0xAE */ s16 mRotYDelta;
|
||||
/* 0xB0 */ void* mpRideCb;
|
||||
/* 0xB4 */ void* mpPushPullCb;
|
||||
/* 0xB8 */ s16 mRoomNo;
|
||||
/* 0xBA */ u8 mFlag;
|
||||
/* 0xBB */ u8 mRoomNo2;
|
||||
};
|
||||
|
||||
#endif /* D_BG_W_H */
|
||||
@@ -180,9 +180,11 @@ public:
|
||||
/* 0x47EC */ JKRArchive* mpCamResArchive;
|
||||
/* 0x47F0 */ JKRArchive* mpSwimResArchive;
|
||||
/* 0x47F4 */ JKRArchive* mpWindResArchive;
|
||||
#if VERSION != VERSION_JP
|
||||
/* 0x47F8 */ JKRArchive* mpEnglishTextArchive;
|
||||
/* 0x47FC */ JKRArchive* mpHyruleTextArchive;
|
||||
/* 0x4800 */ u8 field_0x4800[0x4824 - 0x4800];
|
||||
#endif
|
||||
/* 0x4800 */ u8 mpCARDHeap[0x24];
|
||||
/* 0x4824 */ dPa_control_c* mParticle;
|
||||
/* 0x4828 */ dDemo_manager_c* mDemo;
|
||||
/* 0x482C */ dMagma_packet_c* mpMagmaPacket;
|
||||
@@ -428,6 +430,14 @@ inline BOOL dComIfGs_isSwitch(s32 i_no, s32 i_roomNo) {
|
||||
return g_dComIfG_gameInfo.save.isSwitch(i_no, i_roomNo);
|
||||
}
|
||||
|
||||
inline void dComIfGs_onItem(int bitNo, int roomNo) {
|
||||
g_dComIfG_gameInfo.save.onItem(bitNo, roomNo);
|
||||
}
|
||||
|
||||
inline bool dComIfGs_isItem(int bitNo, int roomNo) {
|
||||
return g_dComIfG_gameInfo.save.isItem(bitNo, roomNo);
|
||||
}
|
||||
|
||||
/**
|
||||
* === PLAY ===
|
||||
*/
|
||||
@@ -507,6 +517,10 @@ inline dBgS* dComIfG_Bgsp() {
|
||||
return &g_dComIfG_gameInfo.play.mBgS;
|
||||
}
|
||||
|
||||
inline dCcS* dComIfG_Ccsp() {
|
||||
return &g_dComIfG_gameInfo.play.mCcS;
|
||||
}
|
||||
|
||||
inline daShip_c* dComIfGp_getShipActor() {
|
||||
return (daShip_c*)g_dComIfG_gameInfo.play.getPlayerPtr(2);
|
||||
}
|
||||
@@ -519,6 +533,10 @@ inline dStage_stageDt_c& dComIfGp_getStage() {
|
||||
return g_dComIfG_gameInfo.play.getStage();
|
||||
}
|
||||
|
||||
inline daPy_py_c* daPy_getPlayerActorClass() {
|
||||
return (daPy_py_c*)dComIfGp_getPlayer(0);
|
||||
}
|
||||
|
||||
inline daPy_lk_c* daPy_getPlayerLinkActorClass() {
|
||||
return (daPy_lk_c*)g_dComIfG_gameInfo.play.getPlayerPtr(0);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
#ifndef D_ITEM_H
|
||||
#define D_ITEM_H
|
||||
|
||||
#include "dolphin/types.h"
|
||||
|
||||
void execItemGet(u8 itemNo);
|
||||
BOOL checkItemGet(u8 itemNo, BOOL defaultVal);
|
||||
void item_func_heart();
|
||||
|
||||
+31
-2
@@ -282,6 +282,29 @@ struct dItem_data_item_resource {
|
||||
|
||||
STATIC_ASSERT(sizeof(dItem_data_item_resource) == 0x24);
|
||||
|
||||
struct dItem_data_field_item_res {
|
||||
/* 0x00 */ char * mModelArcName;
|
||||
/* 0x04 */ short mModelFileId;
|
||||
/* 0x06 */ short mBtkAnmResIdx1;
|
||||
/* 0x08 */ short mBtkAnmResIdx2;
|
||||
/* 0x0A */ short mBrkAnmResIdx1;
|
||||
/* 0x0C */ short mBrkAnmResIdx2;
|
||||
/* 0x0E */ short mBckAnmResIdx;
|
||||
/* 0x10 */ u8 mTevRegAnimFrameIndex;
|
||||
/* 0x11 */ u8 field8_0x11;
|
||||
/* 0x12 */ u8 field9_0x12;
|
||||
/* 0x13 */ u8 field10_0x13;
|
||||
/* 0x14 */ u8 field11_0x14;
|
||||
/* 0x15 */ u8 field12_0x15;
|
||||
/* 0x16 */ u8 field13_0x16;
|
||||
/* 0x17 */ u8 field14_0x17;
|
||||
/* 0x18 */ u16 mHeapSize;
|
||||
/* 0x1A */ u8 field16_0x1a;
|
||||
/* 0x1B */ u8 field17_0x1b;
|
||||
};
|
||||
|
||||
STATIC_ASSERT(sizeof(dItem_data_field_item_res) == 0x1C);
|
||||
|
||||
struct dItem_data_item_info {
|
||||
/* 0x00 */ u8 mMaybeShadowRelated;
|
||||
/* 0x01 */ u8 mCollisionH; // Cylinder Height
|
||||
@@ -293,8 +316,14 @@ STATIC_ASSERT(sizeof(dItem_data_item_info) == 0x4);
|
||||
|
||||
class dItem_data {
|
||||
public:
|
||||
static dItem_data_item_resource item_resource[0x100];
|
||||
static dItem_data_item_info item_info[0x100];
|
||||
static dItem_data_item_resource item_resource[0x100];
|
||||
static dItem_data_field_item_res field_item_res[0x100];
|
||||
static dItem_data_item_info item_info[0x100];
|
||||
|
||||
static bool checkAppearEffect(u8 itemNo);
|
||||
static s16 getAppearEffect(u8 itemNo);
|
||||
static bool checkSpecialEffect(u8 itemNo);
|
||||
static u16 getSpecialEffect(u8 itemNo);
|
||||
};
|
||||
|
||||
#endif /* D_ITEM_DATA_H */
|
||||
@@ -12,10 +12,8 @@ struct fopKyM_prm_class {
|
||||
|
||||
typedef int (*fopKyM_CreateFunc)(void*);
|
||||
|
||||
static fopKyM_prm_class* fopKyM_CreateAppend(void);
|
||||
static fopKyM_prm_class* createAppend(int param_1, cXyz* param_2, cXyz* param_3);
|
||||
void fopKyM_Delete(void* param_1);
|
||||
static int fopKyM_Create(s16 param_1, fopKyM_CreateFunc param_2, void* param_3);
|
||||
int fopKyM_Create(s16 param_1, fopKyM_CreateFunc param_2, void* param_3);
|
||||
base_process_class* fopKyM_fastCreate(s16 param_0, int param_1, cXyz* param_2, cXyz* param_3,
|
||||
fopKyM_CreateFunc);
|
||||
int fopKyM_createWpillar(cXyz const* i_pos, f32 scale, int i_param);
|
||||
|
||||
@@ -246,6 +246,7 @@ public:
|
||||
void setFrame(f32 frame) { mFrameCtrl.setFrame(frame); }
|
||||
void updateDL();
|
||||
void play(Vec *, u32, u8);
|
||||
void stopZelAnime();
|
||||
|
||||
u32 pad[0x50]; // J3DMtxCalcMaya
|
||||
/* 0x50 */ J3DModel* mpModel;
|
||||
|
||||
@@ -4,79 +4,252 @@
|
||||
//
|
||||
|
||||
#include "JSystem/J3DGraphBase/J3DDrawBuffer.h"
|
||||
#include "JSystem/J3DGraphBase/J3DPacket.h"
|
||||
#include "JSystem/J3DGraphBase/J3DMaterial.h"
|
||||
#include "JSystem/J3DGraphBase/J3DSys.h"
|
||||
#include "JSystem/J3DGraphBase/J3DTexture.h"
|
||||
#include "JSystem/J3DGraphBase/J3DTransform.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
void J3DDrawBuffer::calcZRatio() {
|
||||
mZRatio = (mZFar - mZNear) / (f32)mBufSize;
|
||||
}
|
||||
|
||||
/* 802EC74C-802EC7B4 .text initialize__13J3DDrawBufferFv */
|
||||
void J3DDrawBuffer::initialize() {
|
||||
/* Nonmatching */
|
||||
mDrawType = DRAW_HEAD;
|
||||
mSortType = SORT_MAT;
|
||||
mZNear = 1.0f;
|
||||
mZFar = 10000.0f;
|
||||
mpZMtx = NULL;
|
||||
mpCallBackPacket = NULL;
|
||||
mBufSize = 0x20;
|
||||
calcZRatio();
|
||||
}
|
||||
|
||||
/* 802EC7B4-802EC84C .text allocBuffer__13J3DDrawBufferFUl */
|
||||
void J3DDrawBuffer::allocBuffer(unsigned long) {
|
||||
/* Nonmatching */
|
||||
J3DError J3DDrawBuffer::allocBuffer(u32 bufSize) {
|
||||
mpBuf = new (0x20) J3DPacket*[bufSize];
|
||||
if (mpBuf == NULL)
|
||||
return kJ3DError_Alloc;
|
||||
|
||||
mBufSize = bufSize;
|
||||
frameInit();
|
||||
calcZRatio();
|
||||
return kJ3DError_Success;
|
||||
}
|
||||
|
||||
/* 802EC84C-802EC8AC .text __dt__13J3DDrawBufferFv */
|
||||
J3DDrawBuffer::~J3DDrawBuffer() {
|
||||
/* Nonmatching */
|
||||
frameInit();
|
||||
|
||||
delete[] mpBuf;
|
||||
mpBuf = NULL;
|
||||
}
|
||||
|
||||
/* 802EC8AC-802EC8E4 .text frameInit__13J3DDrawBufferFv */
|
||||
void J3DDrawBuffer::frameInit() {
|
||||
/* Nonmatching */
|
||||
for (u32 i = 0; i < mBufSize; i++)
|
||||
mpBuf[i] = NULL;
|
||||
|
||||
mpCallBackPacket = NULL;
|
||||
}
|
||||
|
||||
/* 802EC8E4-802ECA38 .text entryMatSort__13J3DDrawBufferFP12J3DMatPacket */
|
||||
void J3DDrawBuffer::entryMatSort(J3DMatPacket*) {
|
||||
/* Nonmatching */
|
||||
int J3DDrawBuffer::entryMatSort(J3DMatPacket* pMatPacket) {
|
||||
pMatPacket->drawClear();
|
||||
pMatPacket->getShapePacket()->drawClear();
|
||||
|
||||
if (pMatPacket->isChanged()) {
|
||||
pMatPacket->setNextPacket(mpBuf[0]);
|
||||
mpBuf[0] = pMatPacket;
|
||||
return 1;
|
||||
}
|
||||
|
||||
J3DTexture* texture = j3dSys.getTexture();
|
||||
u32 hash;
|
||||
u16 texNo = pMatPacket->getMaterial()->getTexNo(0);
|
||||
if (texNo == 0xFFFF) {
|
||||
hash = 0;
|
||||
} else {
|
||||
hash = ((u32)texture->getResTIMG(texNo) + texture->getResTIMG(texNo)->imageOffset) >> 5;
|
||||
}
|
||||
u32 slot = hash & (mBufSize - 1);
|
||||
|
||||
if (mpBuf[slot] == NULL) {
|
||||
mpBuf[slot] = pMatPacket;
|
||||
return 1;
|
||||
} else {
|
||||
for (J3DMatPacket* pkt = (J3DMatPacket*)mpBuf[slot]; pkt != NULL; pkt = (J3DMatPacket*)pkt->getNextPacket()) {
|
||||
if (pkt->isSame(pMatPacket)) {
|
||||
pkt->addShapePacket(pMatPacket->getShapePacket());
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
pMatPacket->setNextPacket(mpBuf[slot]);
|
||||
mpBuf[slot] = pMatPacket;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* 802ECA38-802ECAF0 .text entryMatAnmSort__13J3DDrawBufferFP12J3DMatPacket */
|
||||
void J3DDrawBuffer::entryMatAnmSort(J3DMatPacket*) {
|
||||
/* Nonmatching */
|
||||
int J3DDrawBuffer::entryMatAnmSort(J3DMatPacket* pMatPacket) {
|
||||
J3DMaterialAnm* pMaterialAnm = pMatPacket->mpMaterialAnm;
|
||||
u32 slot = (u32)pMaterialAnm & (mBufSize - 1);
|
||||
|
||||
if (pMaterialAnm == NULL) {
|
||||
return entryMatSort(pMatPacket);
|
||||
} else {
|
||||
pMatPacket->drawClear();
|
||||
pMatPacket->getShapePacket()->drawClear();
|
||||
if (mpBuf[slot] == NULL) {
|
||||
mpBuf[slot] = pMatPacket;
|
||||
return 1;
|
||||
} else {
|
||||
for (J3DMatPacket* pkt = (J3DMatPacket*)mpBuf[slot]; pkt != NULL;
|
||||
pkt = (J3DMatPacket*)pkt->getNextPacket())
|
||||
{
|
||||
if (pkt->mpMaterialAnm == pMaterialAnm) {
|
||||
pkt->addShapePacket(pMatPacket->getShapePacket());
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
pMatPacket->setNextPacket(mpBuf[slot]);
|
||||
mpBuf[slot] = pMatPacket;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 802ECAF0-802ECBEC .text entryZSort__13J3DDrawBufferFP12J3DMatPacket */
|
||||
void J3DDrawBuffer::entryZSort(J3DMatPacket*) {
|
||||
/* Nonmatching */
|
||||
int J3DDrawBuffer::entryZSort(J3DMatPacket* i_packet) {
|
||||
i_packet->drawClear();
|
||||
i_packet->getShapePacket()->drawClear();
|
||||
|
||||
Vec tmp;
|
||||
tmp.x = mpZMtx[0][3];
|
||||
tmp.y = mpZMtx[1][3];
|
||||
tmp.z = mpZMtx[2][3];
|
||||
|
||||
f32 value = -J3DCalcZValue(j3dSys.getViewMtx(), tmp);
|
||||
|
||||
u32 uvar4;
|
||||
if (mZNear + mZRatio < value) {
|
||||
if (mZFar - mZRatio > value) {
|
||||
uvar4 = value / mZRatio;
|
||||
} else {
|
||||
uvar4 = mBufSize - 1;
|
||||
}
|
||||
} else {
|
||||
uvar4 = 0;
|
||||
}
|
||||
|
||||
u32 idx = (mBufSize - 1) - uvar4;
|
||||
i_packet->setNextPacket(mpBuf[idx]);
|
||||
mpBuf[idx] = i_packet;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 802ECBEC-802ECC3C .text entryModelSort__13J3DDrawBufferFP12J3DMatPacket */
|
||||
void J3DDrawBuffer::entryModelSort(J3DMatPacket*) {
|
||||
/* Nonmatching */
|
||||
int J3DDrawBuffer::entryModelSort(J3DMatPacket* i_packet) {
|
||||
i_packet->drawClear();
|
||||
i_packet->getShapePacket()->drawClear();
|
||||
|
||||
if (mpCallBackPacket != NULL) {
|
||||
mpCallBackPacket->addChildPacket(i_packet);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 802ECC3C-802ECC90 .text entryInvalidSort__13J3DDrawBufferFP12J3DMatPacket */
|
||||
void J3DDrawBuffer::entryInvalidSort(J3DMatPacket*) {
|
||||
/* Nonmatching */
|
||||
int J3DDrawBuffer::entryInvalidSort(J3DMatPacket* i_packet) {
|
||||
i_packet->drawClear();
|
||||
i_packet->getShapePacket()->drawClear();
|
||||
|
||||
if (mpCallBackPacket != NULL) {
|
||||
mpCallBackPacket->addChildPacket(i_packet->getShapePacket());
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* 802ECC90-802ECCC4 .text entryNonSort__13J3DDrawBufferFP12J3DMatPacket */
|
||||
void J3DDrawBuffer::entryNonSort(J3DMatPacket*) {
|
||||
/* Nonmatching */
|
||||
int J3DDrawBuffer::entryNonSort(J3DMatPacket* i_packet) {
|
||||
i_packet->drawClear();
|
||||
i_packet->mpShapePacket->drawClear();
|
||||
|
||||
i_packet->setNextPacket(mpBuf[0]);
|
||||
mpBuf[0] = i_packet;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 802ECCC4-802ECCE4 .text entryImm__13J3DDrawBufferFP9J3DPacketUs */
|
||||
void J3DDrawBuffer::entryImm(J3DPacket*, unsigned short) {
|
||||
/* Nonmatching */
|
||||
int J3DDrawBuffer::entryImm(J3DPacket* i_packet, u16 index) {
|
||||
i_packet->setNextPacket(mpBuf[index]);
|
||||
mpBuf[index] = i_packet;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
sortFunc J3DDrawBuffer::sortFuncTable[] = {
|
||||
&J3DDrawBuffer::entryMatSort,
|
||||
&J3DDrawBuffer::entryMatAnmSort,
|
||||
&J3DDrawBuffer::entryZSort,
|
||||
&J3DDrawBuffer::entryModelSort,
|
||||
&J3DDrawBuffer::entryInvalidSort,
|
||||
&J3DDrawBuffer::entryNonSort,
|
||||
};
|
||||
|
||||
drawFunc J3DDrawBuffer::drawFuncTable[] = {
|
||||
&J3DDrawBuffer::drawHead,
|
||||
&J3DDrawBuffer::drawTail,
|
||||
};
|
||||
|
||||
/* 802ECCE4-802ECD38 .text draw__13J3DDrawBufferCFv */
|
||||
void J3DDrawBuffer::draw() const {
|
||||
/* Nonmatching */
|
||||
drawFunc func = drawFuncTable[mDrawType];
|
||||
(this->*func)();
|
||||
}
|
||||
|
||||
/* 802ECD38-802ECDB0 .text drawHead__13J3DDrawBufferCFv */
|
||||
void J3DDrawBuffer::drawHead() const {
|
||||
/* Nonmatching */
|
||||
u32 size = mBufSize;
|
||||
J3DPacket** buf = mpBuf;
|
||||
|
||||
for (u32 i = 0; i < size; i++) {
|
||||
for (J3DPacket* packet = buf[i]; packet != NULL; packet = packet->getNextPacket()) {
|
||||
packet->draw();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 802ECDB0-802ECE2C .text drawTail__13J3DDrawBufferCFv */
|
||||
void J3DDrawBuffer::drawTail() const {
|
||||
/* Nonmatching */
|
||||
int num = mBufSize - 1;
|
||||
|
||||
for (int i = num; i >= 0; i--) {
|
||||
for (J3DPacket* packet = mpBuf[i]; packet != NULL; packet = packet->getNextPacket()) {
|
||||
packet->draw();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 802ECE2C-802ECE5C .text setCallBackPacket__13J3DDrawBufferFP17J3DCallBackPacket */
|
||||
void J3DDrawBuffer::setCallBackPacket(J3DCallBackPacket*) {
|
||||
/* Nonmatching */
|
||||
void J3DDrawBuffer::setCallBackPacket(J3DCallBackPacket* pPacket) {
|
||||
mpCallBackPacket = pPacket;
|
||||
if (pPacket != NULL) {
|
||||
pPacket->drawClear();
|
||||
pPacket->setNextPacket(mpBuf[0]);
|
||||
mpBuf[0] = pPacket;
|
||||
}
|
||||
}
|
||||
|
||||
int J3DDrawBuffer::entryNum;
|
||||
|
||||
@@ -4,176 +4,402 @@
|
||||
//
|
||||
|
||||
#include "JSystem/J3DGraphBase/J3DPacket.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "JSystem/J3DGraphBase/J3DMaterial.h"
|
||||
#include "JSystem/J3DGraphBase/J3DSys.h"
|
||||
#include "JSystem/J3DGraphAnimator/J3DModel.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "MSL_C/string.h"
|
||||
#include "dolphin/gx/GX.h"
|
||||
#include "dolphin/os/OS.h"
|
||||
|
||||
/* 802DAE1C-802DAE9C .text newDisplayList__17J3DDisplayListObjFUl */
|
||||
void J3DDisplayListObj::newDisplayList(unsigned long) {
|
||||
/* Nonmatching */
|
||||
J3DError J3DDisplayListObj::newDisplayList(u32 capacity) {
|
||||
mCapacity = ALIGN_NEXT(capacity, 0x20);
|
||||
mpData[0] = new (0x20) char[mCapacity];
|
||||
mpData[1] = new (0x20) char[mCapacity];
|
||||
mSize = 0;
|
||||
|
||||
if (mpData[0] == NULL || mpData[1] == NULL)
|
||||
return kJ3DError_Alloc;
|
||||
|
||||
return kJ3DError_Success;
|
||||
}
|
||||
|
||||
/* 802DAE9C-802DAF00 .text newSingleDisplayList__17J3DDisplayListObjFUl */
|
||||
void J3DDisplayListObj::newSingleDisplayList(unsigned long) {
|
||||
/* Nonmatching */
|
||||
J3DError J3DDisplayListObj::newSingleDisplayList(u32 capacity) {
|
||||
mCapacity = ALIGN_NEXT(capacity, 0x20);
|
||||
mpData[0] = new (0x20) char[mCapacity];
|
||||
mpData[1] = mpData[0];
|
||||
mSize = 0;
|
||||
|
||||
if (mpData[0] == NULL)
|
||||
return kJ3DError_Alloc;
|
||||
|
||||
return kJ3DError_Success;
|
||||
}
|
||||
|
||||
/* 802DAF00-802DAF78 .text single_To_Double__17J3DDisplayListObjFv */
|
||||
void J3DDisplayListObj::single_To_Double() {
|
||||
/* Nonmatching */
|
||||
J3DError J3DDisplayListObj::single_To_Double() {
|
||||
if (mpData[0] == mpData[1]) {
|
||||
mpData[1] = new (0x20) char[mCapacity];
|
||||
|
||||
if (mpData[1] == NULL)
|
||||
return kJ3DError_Alloc;
|
||||
|
||||
memcpy(mpData[1], mpData[0], mCapacity);
|
||||
DCStoreRange(mpData[1], mCapacity);
|
||||
}
|
||||
|
||||
return kJ3DError_Success;
|
||||
}
|
||||
|
||||
/* 802DAF78-802DAF98 .text setSingleDisplayList__17J3DDisplayListObjFPvUl */
|
||||
void J3DDisplayListObj::setSingleDisplayList(void*, unsigned long) {
|
||||
/* Nonmatching */
|
||||
void J3DDisplayListObj::setSingleDisplayList(void* pDLData, u32 size) {
|
||||
mCapacity = ALIGN_NEXT(size, 0x20);
|
||||
mpData[0] = pDLData;
|
||||
mpData[1] = mpData[0];
|
||||
mSize = size;
|
||||
}
|
||||
|
||||
/* 802DAF98-802DAFAC .text swapBuffer__17J3DDisplayListObjFv */
|
||||
void J3DDisplayListObj::swapBuffer() {
|
||||
/* Nonmatching */
|
||||
void* pTmp = mpData[0];
|
||||
mpData[0] = mpData[1];
|
||||
mpData[1] = pTmp;
|
||||
}
|
||||
|
||||
/* 802DAFAC-802DAFD8 .text callDL__17J3DDisplayListObjCFv */
|
||||
void J3DDisplayListObj::callDL() const {
|
||||
/* Nonmatching */
|
||||
GXCallDisplayList(mpData[0], mSize);
|
||||
}
|
||||
|
||||
GDLObj J3DDisplayListObj::sGDLObj;
|
||||
s32 J3DDisplayListObj::sInterruptFlag;
|
||||
|
||||
/* 802DAFD8-802DB02C .text beginDL__17J3DDisplayListObjFv */
|
||||
void J3DDisplayListObj::beginDL() {
|
||||
/* Nonmatching */
|
||||
swapBuffer();
|
||||
sInterruptFlag = OSDisableInterrupts();
|
||||
GDInitGDLObj(&sGDLObj, (u8*)mpData[0], mCapacity);
|
||||
GDSetCurrent(&sGDLObj);
|
||||
}
|
||||
|
||||
/* 802DB02C-802DB088 .text endDL__17J3DDisplayListObjFv */
|
||||
void J3DDisplayListObj::endDL() {
|
||||
/* Nonmatching */
|
||||
u32 J3DDisplayListObj::endDL() {
|
||||
GDPadCurr32();
|
||||
OSRestoreInterrupts(sInterruptFlag);
|
||||
mSize = GDGetGDLObjOffset(&sGDLObj);
|
||||
GDFlushCurrToMem();
|
||||
GDSetCurrent(NULL);
|
||||
return mSize;
|
||||
}
|
||||
|
||||
/* 802DB088-802DB0A8 .text beginPatch__17J3DDisplayListObjFv */
|
||||
void J3DDisplayListObj::beginPatch() {
|
||||
/* Nonmatching */
|
||||
beginDL();
|
||||
}
|
||||
|
||||
/* 802DB0A8-802DB0E4 .text endPatch__17J3DDisplayListObjFv */
|
||||
void J3DDisplayListObj::endPatch() {
|
||||
/* Nonmatching */
|
||||
u32 J3DDisplayListObj::endPatch() {
|
||||
OSRestoreInterrupts(sInterruptFlag);
|
||||
GDSetCurrent(NULL);
|
||||
return mSize;
|
||||
}
|
||||
|
||||
/* 802DB0E4-802DB0EC .text isSame__9J3DPacketCFP12J3DMatPacket */
|
||||
void J3DPacket::isSame(J3DMatPacket*) const {
|
||||
/* Nonmatching */
|
||||
bool J3DPacket::isSame(J3DMatPacket*) const {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* 802DB0EC-802DB0F4 .text entry__9J3DPacketFP13J3DDrawBuffer */
|
||||
void J3DPacket::entry(J3DDrawBuffer*) {
|
||||
/* Nonmatching */
|
||||
int J3DPacket::entry(J3DDrawBuffer*) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 802DB0F4-802DB114 .text addChildPacket__9J3DPacketFP9J3DPacket */
|
||||
void J3DPacket::addChildPacket(J3DPacket*) {
|
||||
/* Nonmatching */
|
||||
void J3DPacket::addChildPacket(J3DPacket* pPacket) {
|
||||
if (mpFirstChild == NULL) {
|
||||
mpFirstChild = pPacket;
|
||||
} else {
|
||||
pPacket->mpNextPacket = mpFirstChild;
|
||||
mpFirstChild = pPacket;
|
||||
}
|
||||
}
|
||||
|
||||
/* 802DB114-802DB1A0 .text draw__17J3DCallBackPacketFv */
|
||||
void J3DCallBackPacket::draw() {
|
||||
/* Nonmatching */
|
||||
if (mpCallBack != NULL)
|
||||
mpCallBack(this, 0);
|
||||
|
||||
for (J3DPacket * pPacket = mpFirstChild; pPacket != NULL; pPacket = pPacket->getNextPacket())
|
||||
pPacket->draw();
|
||||
|
||||
if (mpCallBack != NULL)
|
||||
mpCallBack(this, 1);
|
||||
}
|
||||
|
||||
/* 802DB1A0-802DB1D4 .text __ct__13J3DDrawPacketFv */
|
||||
J3DDrawPacket::J3DDrawPacket() {
|
||||
/* Nonmatching */
|
||||
mFlags = 0;
|
||||
mpDisplayListObj = NULL;
|
||||
}
|
||||
|
||||
/* 802DB1D4-802DB230 .text __dt__13J3DDrawPacketFv */
|
||||
J3DDrawPacket::~J3DDrawPacket() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 802DB230-802DB2BC .text newDisplayList__13J3DDrawPacketFUl */
|
||||
void J3DDrawPacket::newDisplayList(unsigned long) {
|
||||
/* Nonmatching */
|
||||
J3DError J3DDrawPacket::newDisplayList(u32 size) {
|
||||
mpDisplayListObj = new J3DDisplayListObj();
|
||||
|
||||
if (mpDisplayListObj == NULL)
|
||||
return kJ3DError_Alloc;
|
||||
|
||||
J3DError ret = mpDisplayListObj->newDisplayList(size);
|
||||
if (ret != kJ3DError_Success)
|
||||
return ret;
|
||||
|
||||
return kJ3DError_Success;
|
||||
}
|
||||
|
||||
/* 802DB2BC-802DB348 .text newSingleDisplayList__13J3DDrawPacketFUl */
|
||||
void J3DDrawPacket::newSingleDisplayList(unsigned long) {
|
||||
/* Nonmatching */
|
||||
J3DError J3DDrawPacket::newSingleDisplayList(u32 size) {
|
||||
mpDisplayListObj = new J3DDisplayListObj();
|
||||
|
||||
if (mpDisplayListObj == NULL)
|
||||
return kJ3DError_Alloc;
|
||||
|
||||
J3DError ret = mpDisplayListObj->newSingleDisplayList(size);
|
||||
if (ret != kJ3DError_Success)
|
||||
return ret;
|
||||
|
||||
return kJ3DError_Success;
|
||||
}
|
||||
|
||||
/* 802DB348-802DB36C .text draw__13J3DDrawPacketFv */
|
||||
void J3DDrawPacket::draw() {
|
||||
/* Nonmatching */
|
||||
mpDisplayListObj->callDL();
|
||||
}
|
||||
|
||||
/* 802DB36C-802DB3C4 .text __ct__12J3DMatPacketFv */
|
||||
J3DMatPacket::J3DMatPacket() {
|
||||
/* Nonmatching */
|
||||
mpInitShapePacket = NULL;
|
||||
mpMaterial = NULL;
|
||||
mDiffFlag = -1;
|
||||
mpTexture = NULL;
|
||||
mpMaterialAnm = NULL;
|
||||
}
|
||||
|
||||
/* 802DB3C4-802DB424 .text __dt__12J3DMatPacketFv */
|
||||
J3DMatPacket::~J3DMatPacket() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 802DB424-802DB444 .text addShapePacket__12J3DMatPacketFP14J3DShapePacket */
|
||||
void J3DMatPacket::addShapePacket(J3DShapePacket*) {
|
||||
/* Nonmatching */
|
||||
void J3DMatPacket::addShapePacket(J3DShapePacket* pShape) {
|
||||
if (mpShapePacket == NULL) {
|
||||
mpShapePacket = pShape;
|
||||
} else {
|
||||
pShape->mpNextPacket = mpShapePacket;
|
||||
mpShapePacket = pShape;
|
||||
}
|
||||
}
|
||||
|
||||
/* 802DB444-802DB46C .text beginDiff__12J3DMatPacketFv */
|
||||
void J3DMatPacket::beginDiff() {
|
||||
/* Nonmatching */
|
||||
mpInitShapePacket->mpDisplayListObj->beginDL();
|
||||
}
|
||||
|
||||
/* 802DB46C-802DB494 .text endDiff__12J3DMatPacketFv */
|
||||
void J3DMatPacket::endDiff() {
|
||||
/* Nonmatching */
|
||||
mpInitShapePacket->mpDisplayListObj->endDL();
|
||||
}
|
||||
|
||||
/* 802DB494-802DB524 .text draw__12J3DMatPacketFv */
|
||||
void J3DMatPacket::draw() {
|
||||
/* Nonmatching */
|
||||
j3dSys.setTexture(mpTexture);
|
||||
j3dSys.setMatPacket(this);
|
||||
|
||||
mpMaterial->load();
|
||||
J3DShapePacket* packet = getShapePacket();
|
||||
|
||||
J3DShape* shape = packet->getShape();
|
||||
shape->loadPreDrawSetting();
|
||||
|
||||
while (packet != NULL) {
|
||||
if (packet->getDisplayListObj() != NULL) {
|
||||
packet->getDisplayListObj()->callDL();
|
||||
}
|
||||
|
||||
packet->drawFast();
|
||||
packet = (J3DShapePacket*)packet->getNextPacket();
|
||||
}
|
||||
|
||||
shape->resetVcdVatCache();
|
||||
}
|
||||
|
||||
/* 802DB524-802DB584 .text __ct__14J3DShapePacketFv */
|
||||
J3DShapePacket::J3DShapePacket() {
|
||||
/* Nonmatching */
|
||||
mpShape = NULL;
|
||||
mpDrawMtx = NULL;
|
||||
mpNrmMtx = NULL;
|
||||
mpBaseMtxPtr = NULL;
|
||||
mpCurrentViewNo = &j3dDefaultViewNo;
|
||||
mpScaleFlagArray = NULL;
|
||||
mpModel = NULL;
|
||||
}
|
||||
|
||||
/* 802DB584-802DB5E4 .text __dt__14J3DShapePacketFv */
|
||||
J3DShapePacket::~J3DShapePacket() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
u32 sDifferedRegister[] = {
|
||||
0x00000001, 0x00000002, 0x01000000, 0x10000000, 0x20000000, 0x02000000, 0x08000000,
|
||||
};
|
||||
|
||||
s32 sSizeOfDiffered[] = {
|
||||
13, 21, 120, 55, 15, 19, 45,
|
||||
};
|
||||
|
||||
/* 802DB5E4-802DB7CC .text calcDifferedBufferSize__14J3DShapePacketFUl */
|
||||
void J3DShapePacket::calcDifferedBufferSize(unsigned long) {
|
||||
/* Nonmatching */
|
||||
u32 J3DShapePacket::calcDifferedBufferSize(u32 flag) {
|
||||
int iVar5 = 0;
|
||||
for (int i = 0; i < 7; i++) {
|
||||
if ((flag & sDifferedRegister[i]) != 0) {
|
||||
iVar5 += sSizeOfDiffered[i];
|
||||
}
|
||||
}
|
||||
|
||||
iVar5 += getDiffFlag_LightObjNum(flag) * 0x48;
|
||||
u32 uVar2 = getDiffFlag_TexGenNum(flag);
|
||||
if (uVar2 != 0) {
|
||||
u32 local_4c = mpShape->getMaterial()->getTexGenNum();
|
||||
if (uVar2 > local_4c) {
|
||||
local_4c = uVar2;
|
||||
}
|
||||
|
||||
if ((flag & 0x1000)) {
|
||||
iVar5 += calcDifferedBufferSize_TexGenSize(local_4c);
|
||||
} else {
|
||||
iVar5 += calcDifferedBufferSize_TexMtxSize(local_4c);
|
||||
}
|
||||
}
|
||||
|
||||
uVar2 = getDiffFlag_TexNoNum(flag);
|
||||
if (uVar2 != 0) {
|
||||
u8 local_58;
|
||||
if (mpShape->getMaterial()->getTevStageNum() > 8) {
|
||||
local_58 = 8;
|
||||
} else {
|
||||
local_58 = mpShape->getMaterial()->getTevStageNum();
|
||||
}
|
||||
u32 local_50 = local_58;
|
||||
local_50 = uVar2 > local_50 ? uVar2 : local_50;
|
||||
if ((flag & 0x4000000)) {
|
||||
iVar5 += calcDifferedBufferSize_TexNoAndTexCoordScaleSize(local_50);
|
||||
} else {
|
||||
iVar5 += calcDifferedBufferSize_TexNoSize(local_50);
|
||||
}
|
||||
}
|
||||
|
||||
uVar2 = getDiffFlag_TevStageNum(flag);
|
||||
if (uVar2 != 0) {
|
||||
u8 local_58;
|
||||
if (mpShape->getMaterial()->getTevStageNum() > 8) {
|
||||
local_58 = 8;
|
||||
} else {
|
||||
local_58 = mpShape->getMaterial()->getTevStageNum();
|
||||
}
|
||||
u32 local_50 = local_58;
|
||||
local_50 = uVar2 > local_50 ? uVar2 : local_50;
|
||||
iVar5 += calcDifferedBufferSize_TevStageSize(local_50);
|
||||
if (flag & 0x8000000) {
|
||||
iVar5 += calcDifferedBufferSize_TevStageDirectSize(local_50);
|
||||
}
|
||||
}
|
||||
|
||||
return ALIGN_NEXT(iVar5, 0x20);
|
||||
}
|
||||
|
||||
/* 802DB7CC-802DB818 .text newDifferedDisplayList__14J3DShapePacketFUl */
|
||||
void J3DShapePacket::newDifferedDisplayList(unsigned long) {
|
||||
/* Nonmatching */
|
||||
J3DError J3DShapePacket::newDifferedDisplayList(u32 flag) {
|
||||
mDiffFlag = flag;
|
||||
u32 bufSize = calcDifferedBufferSize(flag);
|
||||
J3DError error = newDisplayList(bufSize);
|
||||
|
||||
if (error != kJ3DError_Success) {
|
||||
return error;
|
||||
}
|
||||
|
||||
setDisplayListObj(getDisplayListObj());
|
||||
return kJ3DError_Success;
|
||||
}
|
||||
|
||||
/* 802DB818-802DB890 .text prepareDraw__14J3DShapePacketCFv */
|
||||
void J3DShapePacket::prepareDraw() const {
|
||||
/* Nonmatching */
|
||||
mpModel->getVertexBuffer()->setArray();
|
||||
j3dSys.setModel(mpModel);
|
||||
j3dSys.setShapePacket((J3DShapePacket*)this);
|
||||
|
||||
mpShape->setScaleFlagArray(mpScaleFlagArray);
|
||||
mpShape->setDrawMtx(mpDrawMtx);
|
||||
mpShape->setNrmMtx(mpNrmMtx);
|
||||
mpShape->setCurrentViewNoPtr(mpCurrentViewNo);
|
||||
}
|
||||
|
||||
/* 802DB890-802DB8F8 .text draw__14J3DShapePacketFv */
|
||||
void J3DShapePacket::draw() {
|
||||
/* Nonmatching */
|
||||
if (!checkFlag(J3DShpFlag_Hidden) && mpShape != NULL) {
|
||||
prepareDraw();
|
||||
|
||||
#if 0
|
||||
if (mpTexMtxObj != NULL) {
|
||||
J3DMaterial* material = mpShape->getMaterial();
|
||||
J3DDifferedTexMtx::sTexGenBlock = material->getTexGenBlock();
|
||||
J3DDifferedTexMtx::sTexMtxObj = getTexMtxObj();
|
||||
} else {
|
||||
J3DDifferedTexMtx::sTexGenBlock = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (mpDisplayListObj != NULL) {
|
||||
mpDisplayListObj->callDL();
|
||||
}
|
||||
|
||||
mpShape->draw();
|
||||
}
|
||||
}
|
||||
|
||||
/* 802DB8F8-802DB950 .text drawFast__14J3DShapePacketFv */
|
||||
void J3DShapePacket::drawFast() {
|
||||
/* Nonmatching */
|
||||
if (!checkFlag(J3DShpFlag_Hidden) && mpShape != NULL) {
|
||||
prepareDraw();
|
||||
|
||||
#if 0
|
||||
if (mpTexMtxObj != NULL) {
|
||||
J3DMaterial* material = mpShape->getMaterial();
|
||||
J3DDifferedTexMtx::sTexGenBlock = material->getTexGenBlock();
|
||||
J3DDifferedTexMtx::sTexMtxObj = getTexMtxObj();
|
||||
} else {
|
||||
J3DDifferedTexMtx::sTexGenBlock = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
mpShape->drawFast();
|
||||
}
|
||||
}
|
||||
|
||||
/* 802DB950-802DB978 .text isSame__12J3DMatPacketCFP12J3DMatPacket */
|
||||
void J3DMatPacket::isSame(J3DMatPacket*) const {
|
||||
/* Nonmatching */
|
||||
bool J3DMatPacket::isSame(J3DMatPacket* pOther) const {
|
||||
bool isSame = false;
|
||||
|
||||
if (mDiffFlag == pOther->mDiffFlag && !(mDiffFlag >> 0x1F)) {
|
||||
isSame = true;
|
||||
}
|
||||
return isSame;
|
||||
}
|
||||
|
||||
/* 802DB978-802DB97C .text draw__9J3DPacketFv */
|
||||
void J3DPacket::draw() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 802DB97C-802DB9D8 .text __dt__17J3DCallBackPacketFv */
|
||||
|
||||
@@ -4,79 +4,264 @@
|
||||
//
|
||||
|
||||
#include "JSystem/J3DGraphBase/J3DShape.h"
|
||||
#include "JSystem/J3DGraphBase/J3DPacket.h"
|
||||
#include "JSystem/J3DGraphBase/J3DSys.h"
|
||||
#include "JSystem/J3DGraphBase/J3DVertex.h"
|
||||
#include "dolphin/gd/GDBase.h"
|
||||
#include "dolphin/gd/GDGeometry.h"
|
||||
#include "dolphin/os/OS.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
extern void J3DGDSetVtxAttrFmtv(_GXVtxFmt, GXVtxAttrFmtList *, bool);
|
||||
extern void J3DFifoLoadPosMtxImm(Mtx, u32);
|
||||
extern void J3DFifoLoadNrmMtxImm(Mtx, u32);
|
||||
|
||||
/* 802DD18C-802DD1FC .text initialize__8J3DShapeFv */
|
||||
|
||||
void J3DShape::initialize() {
|
||||
/* Nonmatching */
|
||||
mMaterial = NULL;
|
||||
mIndex = -1;
|
||||
mMtxGroupNum = 0;
|
||||
mFlags = 0;
|
||||
mRadius = 0.0f;
|
||||
mMin.x = 0.0f;
|
||||
mMin.y = 0.0f;
|
||||
mMin.z = 0.0f;
|
||||
mMax.x = 0.0f;
|
||||
mMax.y = 0.0f;
|
||||
mMax.z = 0.0f;
|
||||
mVtxDesc = NULL;
|
||||
mShapeMtx = NULL;
|
||||
mShapeDraw = NULL;
|
||||
mVertexData = NULL;
|
||||
mDrawMtxData = NULL;
|
||||
mScaleFlagArray = NULL;
|
||||
mDrawMtx = NULL;
|
||||
mNrmMtx = NULL;
|
||||
mCurrentViewNo = &j3dDefaultViewNo;
|
||||
mHasNBT = false;
|
||||
mHasPNMTXIdx = false;
|
||||
}
|
||||
|
||||
/* 802DD1FC-802DD27C .text calcNBTScale__8J3DShapeFRC3VecPA3_A3_fPA3_A3_f */
|
||||
void J3DShape::calcNBTScale(const Vec&, float(*)[3][3], float(*)[3][3]) {
|
||||
/* Nonmatching */
|
||||
void J3DShape::calcNBTScale(Vec const& param_0, Mtx33* param_1, Mtx33* param_2) {
|
||||
for (u16 i = 0; i < getMtxGroupNum(); i++)
|
||||
getShapeMtx(i)->calcNBTScale(param_0, param_1, param_2);
|
||||
}
|
||||
|
||||
/* 802DD27C-802DD2F0 .text countBumpMtxNum__8J3DShapeCFv */
|
||||
void J3DShape::countBumpMtxNum() const {
|
||||
/* Nonmatching */
|
||||
u32 J3DShape::countBumpMtxNum() const {
|
||||
u32 num = 0;
|
||||
for (u16 i = 0; i < getMtxGroupNum(); i++)
|
||||
num += getShapeMtx(i)->getUseMtxNum();
|
||||
return num;
|
||||
}
|
||||
|
||||
/* 802DD2F0-802DD308 .text J3DLoadCPCmd__FUcUl */
|
||||
void J3DLoadCPCmd(unsigned char, unsigned long) {
|
||||
/* Nonmatching */
|
||||
void J3DLoadCPCmd(u8 cmd, u32 param) {
|
||||
GFX_FIFO(u8) = GX_CMD_LOAD_CP_REG;
|
||||
GFX_FIFO(u8) = cmd;
|
||||
GFX_FIFO(u32) = param;
|
||||
}
|
||||
|
||||
/* 802DD308-802DD344 .text J3DLoadArrayBasePtr__F7_GXAttrPv */
|
||||
void J3DLoadArrayBasePtr(_GXAttr, void*) {
|
||||
/* Nonmatching */
|
||||
static void J3DLoadArrayBasePtr(_GXAttr attr, void* data) {
|
||||
u32 idx = (attr == GX_VA_NBT) ? 1 : (attr - GX_VA_POS);
|
||||
J3DLoadCPCmd(0xA0 + idx, ((u32)data & 0x7FFFFFFF));
|
||||
}
|
||||
|
||||
/* 802DD344-802DD3B4 .text loadVtxArray__8J3DShapeCFv */
|
||||
void J3DShape::loadVtxArray() const {
|
||||
/* Nonmatching */
|
||||
J3DLoadArrayBasePtr(GX_VA_POS, j3dSys.getVtxPos());
|
||||
if (!mHasNBT) {
|
||||
J3DLoadArrayBasePtr(GX_VA_NRM, j3dSys.getVtxNrm());
|
||||
}
|
||||
J3DLoadArrayBasePtr(GX_VA_CLR0, j3dSys.getVtxCol());
|
||||
}
|
||||
|
||||
/* 802DD3B4-802DD3F0 .text isSameVcdVatCmd__8J3DShapeFP8J3DShape */
|
||||
void J3DShape::isSameVcdVatCmd(J3DShape*) {
|
||||
/* Nonmatching */
|
||||
bool J3DShape::isSameVcdVatCmd(J3DShape* other) {
|
||||
u8* a = other->mVcdVatCmd;
|
||||
u8* b = mVcdVatCmd;
|
||||
for (u32 i = 0; i < kVcdVatDLSize; i++)
|
||||
if (a[i] != b[i])
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 802DD3F0-802DD6B8 .text makeVtxArrayCmd__8J3DShapeFv */
|
||||
void J3DShape::makeVtxArrayCmd() {
|
||||
/* Nonmatching */
|
||||
GXVtxAttrFmtList* vtxAttr = mVertexData->getVtxAttrFmtList();
|
||||
|
||||
u8 stride[0x0C];
|
||||
void* array[0x0C];
|
||||
for (u32 i = 0; i < 0x0C; i++) {
|
||||
stride[i] = 0;
|
||||
array[i] = 0;
|
||||
}
|
||||
|
||||
for (; vtxAttr->mAttrib != GX_VA_NULL; vtxAttr++) {
|
||||
switch (vtxAttr->mAttrib) {
|
||||
case GX_VA_POS: {
|
||||
if (vtxAttr->mCompType == GX_F32)
|
||||
stride[vtxAttr->mAttrib - GX_VA_POS] = 0x0C;
|
||||
else
|
||||
stride[vtxAttr->mAttrib - GX_VA_POS] = 0x06;
|
||||
array[vtxAttr->mAttrib - GX_VA_POS] = mVertexData->getVtxPosArray();
|
||||
mVertexData->setVtxPosFrac(vtxAttr->mCompShift);
|
||||
mVertexData->setVtxPosType((GXCompType)vtxAttr->mCompType);
|
||||
} break;
|
||||
case GX_VA_NRM: {
|
||||
if (vtxAttr->mCompType == GX_F32)
|
||||
stride[vtxAttr->mAttrib - GX_VA_POS] = 0x0C;
|
||||
else
|
||||
stride[vtxAttr->mAttrib - GX_VA_POS] = 0x06;
|
||||
array[vtxAttr->mAttrib - GX_VA_POS] = mVertexData->getVtxNrmArray();
|
||||
mVertexData->setVtxNrmFrac(vtxAttr->mCompShift);
|
||||
mVertexData->setVtxNrmType((GXCompType)vtxAttr->mCompType);
|
||||
} break;
|
||||
case GX_VA_CLR0:
|
||||
case GX_VA_CLR1: {
|
||||
stride[vtxAttr->mAttrib - GX_VA_POS] = 0x04;
|
||||
array[vtxAttr->mAttrib - GX_VA_POS] =
|
||||
mVertexData->getVtxColorArray(vtxAttr->mAttrib - GX_VA_CLR0);
|
||||
} break;
|
||||
case GX_VA_TEX0:
|
||||
case GX_VA_TEX1:
|
||||
case GX_VA_TEX2:
|
||||
case GX_VA_TEX3:
|
||||
case GX_VA_TEX4:
|
||||
case GX_VA_TEX5:
|
||||
case GX_VA_TEX6:
|
||||
case GX_VA_TEX7: {
|
||||
if (vtxAttr->mCompType == GX_F32)
|
||||
stride[vtxAttr->mAttrib - GX_VA_POS] = 0x08;
|
||||
else
|
||||
stride[vtxAttr->mAttrib - GX_VA_POS] = 0x04;
|
||||
array[vtxAttr->mAttrib - GX_VA_POS] = mVertexData->getVtxTexCoordArray(vtxAttr->mAttrib - GX_VA_TEX0);
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
GXVtxDescList* vtxDesc = mVtxDesc;
|
||||
mHasPNMTXIdx = false;
|
||||
for (; vtxDesc->attr != GX_VA_NULL; vtxDesc++) {
|
||||
if (vtxDesc->attr == GX_VA_NBT && vtxDesc->type != GX_NONE) {
|
||||
mHasNBT = true;
|
||||
stride[GX_VA_NRM - GX_VA_POS] *= 3;
|
||||
array[GX_VA_NRM - GX_VA_POS] = mVertexData->getVtxNBTArray();
|
||||
} else if (vtxDesc->attr == GX_VA_PNMTXIDX && vtxDesc->type != GX_NONE) {
|
||||
mHasPNMTXIdx = true;
|
||||
}
|
||||
}
|
||||
|
||||
for (s32 i = 0; i < 0x0C; i++) {
|
||||
if (array[i] != 0)
|
||||
GDSetArray((GXAttr)(i + GX_VA_POS), array[i], stride[i]);
|
||||
else
|
||||
GDSetArrayRaw((GXAttr)(i + GX_VA_POS), NULL, stride[i]);
|
||||
}
|
||||
}
|
||||
|
||||
/* 802DD6B8-802DD72C .text makeVcdVatCmd__8J3DShapeFv */
|
||||
void J3DShape::makeVcdVatCmd() {
|
||||
/* Nonmatching */
|
||||
GDLObj gdl_obj;
|
||||
GDInitGDLObj(&gdl_obj, mVcdVatCmd, kVcdVatDLSize);
|
||||
GDSetCurrent(&gdl_obj);
|
||||
GDSetVtxDescv(mVtxDesc);
|
||||
makeVtxArrayCmd();
|
||||
J3DGDSetVtxAttrFmtv(GX_VTXFMT0, mVertexData->getVtxAttrFmtList(), mHasNBT);
|
||||
GDPadCurr32();
|
||||
GDFlushCurrToMem();
|
||||
GDSetCurrent(NULL);
|
||||
}
|
||||
|
||||
void* J3DShape::sOldVcdVatCmd;
|
||||
|
||||
/* 802DD72C-802DD7CC .text loadPreDrawSetting__8J3DShapeCFv */
|
||||
void J3DShape::loadPreDrawSetting() const {
|
||||
/* Nonmatching */
|
||||
if (sOldVcdVatCmd != mVcdVatCmd) {
|
||||
GXCallDisplayList(mVcdVatCmd, kVcdVatDLSize);
|
||||
sOldVcdVatCmd = mVcdVatCmd;
|
||||
}
|
||||
|
||||
mCurrentMtx.load();
|
||||
}
|
||||
|
||||
u8 J3DShape::sEnvelopeFlag;
|
||||
|
||||
/* 802DD7CC-802DD874 .text setArrayAndBindPipeline__8J3DShapeCFv */
|
||||
void J3DShape::setArrayAndBindPipeline() const {
|
||||
/* Nonmatching */
|
||||
J3DShapeMtx::setCurrentPipeline(getPipeline());
|
||||
loadVtxArray();
|
||||
j3dSys.setModelDrawMtx(mDrawMtx[*mCurrentViewNo]);
|
||||
j3dSys.setModelNrmMtx(mNrmMtx[*mCurrentViewNo]);
|
||||
J3DShapeMtx::sCurrentScaleFlag = mScaleFlagArray;
|
||||
J3DShapeMtx::sNBTFlag = mHasNBT;
|
||||
J3DShape::sEnvelopeFlag = mHasPNMTXIdx;
|
||||
}
|
||||
|
||||
/* 802DD874-802DD9FC .text drawFast__8J3DShapeCFv */
|
||||
void J3DShape::drawFast() const {
|
||||
/* Nonmatching */
|
||||
if (sOldVcdVatCmd != mVcdVatCmd) {
|
||||
GXCallDisplayList(mVcdVatCmd, kVcdVatDLSize);
|
||||
sOldVcdVatCmd = mVcdVatCmd;
|
||||
}
|
||||
|
||||
if (sEnvelopeFlag != 0 && !mHasPNMTXIdx)
|
||||
mCurrentMtx.load();
|
||||
|
||||
setArrayAndBindPipeline();
|
||||
if (!checkFlag(J3DShpFlag_NoMtx)) {
|
||||
for (u16 i = 0; i < getMtxGroupNum(); i++) {
|
||||
if (getShapeMtx(i) != NULL)
|
||||
getShapeMtx(i)->load();
|
||||
if (getShapeDraw(i) != NULL)
|
||||
getShapeDraw(i)->draw();
|
||||
}
|
||||
} else {
|
||||
J3DFifoLoadPosMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), GX_PNMTX0);
|
||||
J3DFifoLoadNrmMtxImm(*j3dSys.getShapePacket()->getBaseMtxPtr(), GX_PNMTX0);
|
||||
for (u16 i = 0; i < getMtxGroupNum(); i++)
|
||||
if (getShapeDraw(i) != NULL)
|
||||
getShapeDraw(i)->draw();
|
||||
}
|
||||
}
|
||||
|
||||
/* 802DD9FC-802DDA44 .text draw__8J3DShapeCFv */
|
||||
void J3DShape::draw() const {
|
||||
/* Nonmatching */
|
||||
sOldVcdVatCmd = NULL;
|
||||
loadPreDrawSetting();
|
||||
drawFast();
|
||||
}
|
||||
|
||||
/* 802DDA44-802DDAC8 .text simpleDraw__8J3DShapeCFv */
|
||||
void J3DShape::simpleDraw() const {
|
||||
/* Nonmatching */
|
||||
resetVcdVatCache();
|
||||
loadPreDrawSetting();
|
||||
J3DShapeMtx::setCurrentPipeline(getPipeline());
|
||||
loadVtxArray();
|
||||
for (u16 i = 0; i < getMtxGroupNum(); i++) {
|
||||
if (getShapeDraw(i) != NULL) {
|
||||
getShapeDraw(i)->draw();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 802DDAC8-802DDBC4 .text simpleDrawCache__8J3DShapeCFv */
|
||||
void J3DShape::simpleDrawCache() const {
|
||||
/* Nonmatching */
|
||||
if (sOldVcdVatCmd != mVcdVatCmd) {
|
||||
GXCallDisplayList(mVcdVatCmd, kVcdVatDLSize);
|
||||
sOldVcdVatCmd = mVcdVatCmd;
|
||||
}
|
||||
|
||||
if (sEnvelopeFlag != 0 && !mHasPNMTXIdx)
|
||||
mCurrentMtx.load();
|
||||
|
||||
loadVtxArray();
|
||||
for (u16 i = 0; i < getMtxGroupNum(); i++)
|
||||
if (getShapeDraw(i) != NULL)
|
||||
getShapeDraw(i)->draw();
|
||||
}
|
||||
|
||||
@@ -17,8 +17,29 @@ void J3DGQRSetup7(unsigned long, unsigned long, unsigned long, unsigned long) {
|
||||
}
|
||||
|
||||
/* 802DA0E8-802DA120 .text J3DCalcZValue__FPA4_f3Vec */
|
||||
void J3DCalcZValue(float(*)[4], Vec) {
|
||||
/* Nonmatching */
|
||||
|
||||
// matches debug
|
||||
f32 J3DCalcZValue(register MtxP m, register Vec v) {
|
||||
register f32 temp_f4;
|
||||
register f32 out;
|
||||
register f32 temp_f0;
|
||||
register f32 temp_f2;
|
||||
register f32 temp_f1 = 1.0f;
|
||||
|
||||
// clang-format off
|
||||
asm {
|
||||
psq_l temp_f0, 0(v), 0, 0 /* qr0 */
|
||||
lfs temp_f2, 8(v)
|
||||
psq_l temp_f4, 32(m), 0, 0 /* qr0 */
|
||||
psq_l out, 40(m), 0, 0 /* qr0 */
|
||||
ps_merge00 temp_f2, temp_f2, temp_f1
|
||||
ps_mul temp_f4, temp_f0, temp_f4
|
||||
ps_madd out, temp_f2, out, temp_f4
|
||||
ps_sum0 out, out, out, out
|
||||
}
|
||||
// clang-format on
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
/* 802DA120-802DA2E0 .text J3DCalcBBoardMtx__FPA4_f */
|
||||
|
||||
@@ -4,54 +4,132 @@
|
||||
//
|
||||
|
||||
#include "JSystem/J3DGraphBase/J3DVertex.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "JSystem/J3DGraphBase/J3DSys.h"
|
||||
#include "JSystem/J3DGraphAnimator/J3DJointTree.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "global.h"
|
||||
|
||||
/* 802D9D24-802D9D9C .text __ct__13J3DVertexDataFv */
|
||||
J3DVertexData::J3DVertexData() {
|
||||
/* Nonmatching */
|
||||
mVtxNum = 0;
|
||||
mNrmNum = 0;
|
||||
mColNum = 0;
|
||||
|
||||
mVtxAttrFmtList = NULL;
|
||||
mVtxPosArray = NULL;
|
||||
mVtxNrmArray = NULL;
|
||||
mVtxNBTArray = NULL;
|
||||
|
||||
for (int i = 0; i < ARRAY_SIZE(mVtxColorArray); i++)
|
||||
mVtxColorArray[i] = NULL;
|
||||
|
||||
for (int i = 0; i < ARRAY_SIZE(mVtxTexCoordArray); i++)
|
||||
mVtxTexCoordArray[i] = NULL;
|
||||
|
||||
mVtxPosFrac = 0;
|
||||
mVtxPosType = GX_F32;
|
||||
mVtxNrmFrac = 0;
|
||||
mVtxNrmType = GX_F32;
|
||||
}
|
||||
|
||||
/* 802D9D9C-802D9DD8 .text __dt__13J3DVertexDataFv */
|
||||
J3DVertexData::~J3DVertexData() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 802D9DD8-802D9E38 .text setVertexData__15J3DVertexBufferFP13J3DVertexData */
|
||||
void J3DVertexBuffer::setVertexData(J3DVertexData*) {
|
||||
/* Nonmatching */
|
||||
void J3DVertexBuffer::setVertexData(J3DVertexData* pVtxData) {
|
||||
mVtxData = pVtxData;
|
||||
mVtxPosArray[0] = pVtxData->getVtxPosArray();
|
||||
mVtxNrmArray[0] = pVtxData->getVtxNrmArray();
|
||||
mVtxColArray[0] = pVtxData->getVtxColorArray(0);
|
||||
mVtxPosArray[1] = NULL;
|
||||
mVtxNrmArray[1] = NULL;
|
||||
mVtxColArray[1] = NULL;
|
||||
|
||||
mTransformedVtxPosArray[0] = pVtxData->getVtxPosArray();
|
||||
mTransformedVtxNrmArray[0] = pVtxData->getVtxNrmArray();
|
||||
mTransformedVtxPosArray[1] = NULL;
|
||||
mTransformedVtxNrmArray[1] = NULL;
|
||||
|
||||
frameInit();
|
||||
}
|
||||
|
||||
/* 802D9E38-802D9E90 .text init__15J3DVertexBufferFv */
|
||||
void J3DVertexBuffer::init() {
|
||||
/* Nonmatching */
|
||||
mVtxData = NULL;
|
||||
|
||||
mVtxPosArray[1] = NULL;
|
||||
mVtxPosArray[0] = NULL;
|
||||
|
||||
mVtxNrmArray[1] = NULL;
|
||||
mVtxNrmArray[0] = NULL;
|
||||
|
||||
mVtxColArray[1] = NULL;
|
||||
mVtxColArray[0] = NULL;
|
||||
|
||||
mTransformedVtxPosArray[1] = NULL;
|
||||
mTransformedVtxPosArray[0] = NULL;
|
||||
|
||||
mTransformedVtxNrmArray[1] = NULL;
|
||||
mTransformedVtxNrmArray[0] = NULL;
|
||||
|
||||
mCurrentVtxPos = NULL;
|
||||
mCurrentVtxNrm = NULL;
|
||||
mCurrentVtxCol = NULL;
|
||||
|
||||
frameInit();
|
||||
}
|
||||
|
||||
/* 802D9E90-802D9ECC .text __dt__15J3DVertexBufferFv */
|
||||
J3DVertexBuffer::~J3DVertexBuffer() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 802D9ECC-802D9EF0 .text setArray__15J3DVertexBufferCFv */
|
||||
void J3DVertexBuffer::setArray() const {
|
||||
/* Nonmatching */
|
||||
j3dSys.setVtxPos(mCurrentVtxPos);
|
||||
j3dSys.setVtxNrm(mCurrentVtxNrm);
|
||||
j3dSys.setVtxCol(mCurrentVtxCol);
|
||||
}
|
||||
|
||||
/* 802D9EF0-802D9FA4 .text allocTransformedVtxPosArray__15J3DVertexBufferFv */
|
||||
void J3DVertexBuffer::allocTransformedVtxPosArray() {
|
||||
/* Nonmatching */
|
||||
s32 J3DVertexBuffer::allocTransformedVtxPosArray() {
|
||||
if (mTransformedVtxPosArray[0] != NULL && mTransformedVtxPosArray[1] != NULL)
|
||||
return kJ3DError_Success;
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
if (i == 0 || mTransformedVtxPosArray[i] == NULL) {
|
||||
mTransformedVtxPosArray[i] = new (0x20) Vec[mVtxData->getVtxNum()];
|
||||
if (mTransformedVtxPosArray[i] == NULL)
|
||||
return kJ3DError_Alloc;
|
||||
}
|
||||
}
|
||||
|
||||
return kJ3DError_Success;
|
||||
}
|
||||
|
||||
/* 802D9FA4-802DA058 .text allocTransformedVtxNrmArray__15J3DVertexBufferFv */
|
||||
void J3DVertexBuffer::allocTransformedVtxNrmArray() {
|
||||
/* Nonmatching */
|
||||
s32 J3DVertexBuffer::allocTransformedVtxNrmArray() {
|
||||
if (mTransformedVtxNrmArray[0] != NULL && mTransformedVtxNrmArray[1] != NULL)
|
||||
return kJ3DError_Success;
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
if (i == 0 || mTransformedVtxNrmArray[i] == NULL) {
|
||||
mTransformedVtxNrmArray[i] = new (0x20) VertexNormal[mVtxData->getNrmNum()];
|
||||
if (mTransformedVtxNrmArray[i] == NULL)
|
||||
return kJ3DError_Alloc;
|
||||
}
|
||||
}
|
||||
|
||||
return kJ3DError_Success;
|
||||
}
|
||||
|
||||
/* 802DA058-802DA06C .text __ct__14J3DDrawMtxDataFv */
|
||||
J3DDrawMtxData::J3DDrawMtxData() {
|
||||
/* Nonmatching */
|
||||
mEntryNum = 0;
|
||||
mDrawMtxFlag = NULL;
|
||||
mDrawMtxIndex = NULL;
|
||||
}
|
||||
|
||||
/* 802DA06C-802DA0A8 .text __dt__14J3DDrawMtxDataFv */
|
||||
J3DDrawMtxData::~J3DDrawMtxData() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
@@ -8,10 +8,11 @@
|
||||
|
||||
/* 80247418-80247480 .text ct__11cBgS_LinChkFv */
|
||||
void cBgS_LinChk::ct() {
|
||||
mLin.mStart = cXyz::Zero;
|
||||
mLin.mEnd = cXyz::Zero;
|
||||
field_0x40 = cXyz::Zero ;
|
||||
setActorPid(0xFFFFFFFF);
|
||||
cXyz zero = cXyz::Zero;
|
||||
mLin.mStart = zero;
|
||||
mLin.mEnd = zero;
|
||||
field_0x40 = zero;
|
||||
setActorPid(-1);
|
||||
field_0x4c = 0;
|
||||
mFrontFlag = 1;
|
||||
mBackFlag = 0;
|
||||
@@ -19,7 +20,8 @@ void cBgS_LinChk::ct() {
|
||||
|
||||
/* 80247480-80247500 .text Set2__11cBgS_LinChkFP4cXyzP4cXyzUi */
|
||||
void cBgS_LinChk::Set2(cXyz* pStart, cXyz* pEnd, unsigned int actorPid) {
|
||||
mLin.SetStartEnd(*pStart, *pEnd);
|
||||
mLin.mStart.set(*pStart);
|
||||
mLin.mEnd.set(*pEnd);
|
||||
field_0x40 = *pEnd;
|
||||
setActorPid(actorPid);
|
||||
field_0x4c &= ~0x10;
|
||||
|
||||
@@ -4,10 +4,11 @@
|
||||
//
|
||||
|
||||
#include "SSystem/SComponent/c_lib.h"
|
||||
#include "SSystem/SComponent/c_math.h"
|
||||
#include "MSL_C/string.h"
|
||||
#include "SSystem/SComponent/c_math.h"
|
||||
#include "dolphin/mtx/mtxvec.h"
|
||||
|
||||
|
||||
/* 802528A4-802528C4 .text cLib_memCpy__FPvPCvUl */
|
||||
void cLib_memCpy(void* dst, const void* src, unsigned long size) {
|
||||
memcpy(dst, src, size);
|
||||
@@ -202,35 +203,33 @@ void cLib_addCalcAngleS2(s16* pValue, s16 target, s16 scale, s16 maxStep) {
|
||||
}
|
||||
|
||||
/* 802532C4-8025335C .text cLib_addCalcAngleL__FPlllll */
|
||||
s16 cLib_addCalcAngleL(s32* pValue, s32 target, s32 scale, s32 maxStep, s32 minStep) {
|
||||
s32 cLib_addCalcAngleL(s32* pValue, s32 target, s32 scale, s32 maxStep, s32 minStep) {
|
||||
s32 diff = target - *pValue;
|
||||
if (*pValue != target) {
|
||||
s32 step = (diff) / scale;
|
||||
if (step > minStep || step < -minStep) {
|
||||
if (step > maxStep) {
|
||||
step = maxStep;
|
||||
scale = (diff) / scale;
|
||||
if (scale > minStep || scale < -minStep) {
|
||||
if (scale > maxStep) {
|
||||
scale = maxStep;
|
||||
}
|
||||
if (step < -maxStep) {
|
||||
step = -maxStep;
|
||||
if (scale < -maxStep) {
|
||||
scale = -maxStep;
|
||||
}
|
||||
*pValue += step;
|
||||
*pValue += scale;
|
||||
} else {
|
||||
if (0 <= diff) {
|
||||
*pValue += minStep;
|
||||
diff = target - *pValue;
|
||||
if (0 >= diff) {
|
||||
if (0 >= target - *pValue) {
|
||||
*pValue = target;
|
||||
}
|
||||
} else {
|
||||
*pValue -= minStep;
|
||||
diff = target - *pValue;
|
||||
if (0 <= diff) {
|
||||
if (0 <= target - *pValue) {
|
||||
*pValue = target;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return target - *pValue;
|
||||
return diff;
|
||||
}
|
||||
|
||||
/* 8025335C-802533D0 .text cLib_chaseUC__FPUcUcUc */
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
#include "MSL_C/float.h"
|
||||
|
||||
#define CHECK_FLOAT_CLASS(line, x) JUT_ASSERT(__FILE__, line, !(((sizeof(x) == sizeof(float)) ? __fpclassifyf((float)(x)) : __fpclassifyd((double)(x)) ) == 1));
|
||||
#define CHECK_FLOAT_RANGE(line, x) JUT_ASSERT(__FILE__, line, -1.0e32f < x && x < 1.0e32f);
|
||||
#define CHECK_VEC3_RANGE(line, v) JUT_ASSERT(__FILE__, line, -1.0e32f < v.x && v.x < 1.0e32f && -1.0e32f < v.y && v.y < 1.0e32f && -1.0e32f < v.z && v.z < 1.0e32f)
|
||||
#define CHECK_FLOAT_CLASS(line, x) JUT_ASSERT(line, !(((sizeof(x) == sizeof(float)) ? __fpclassifyf((float)(x)) : __fpclassifyd((double)(x)) ) == 1));
|
||||
#define CHECK_FLOAT_RANGE(line, x) JUT_ASSERT(line, -1.0e32f < x && x < 1.0e32f);
|
||||
#define CHECK_VEC3_RANGE(line, v) JUT_ASSERT(line, -1.0e32f < v.x && v.x < 1.0e32f && -1.0e32f < v.y && v.y < 1.0e32f && -1.0e32f < v.z && v.z < 1.0e32f)
|
||||
|
||||
/* 80251D88-80252020 .text SetC__8cM3dGCylFRC4cXyz */
|
||||
void cM3dGCyl::SetC(const cXyz& pos) {
|
||||
|
||||
@@ -8,9 +8,9 @@
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
#include "MSL_C/float.h"
|
||||
|
||||
#define CHECK_FLOAT_CLASS(line, x) JUT_ASSERT(__FILE__, line, !(((sizeof(x) == sizeof(float)) ? __fpclassifyf((float)(x)) : __fpclassifyd((double)(x)) ) == 1));
|
||||
#define CHECK_FLOAT_RANGE(line, x) JUT_ASSERT(__FILE__, line, -1.0e32f < x && x < 1.0e32f);
|
||||
#define CHECK_VEC3_RANGE(line, v) JUT_ASSERT(__FILE__, line, -1.0e32f < v.x && v.x < 1.0e32f && -1.0e32f < v.y && v.y < 1.0e32f && -1.0e32f < v.z && v.z < 1.0e32f)
|
||||
#define CHECK_FLOAT_CLASS(line, x) JUT_ASSERT(line, !(((sizeof(x) == sizeof(float)) ? __fpclassifyf((float)(x)) : __fpclassifyd((double)(x)) ) == 1));
|
||||
#define CHECK_FLOAT_RANGE(line, x) JUT_ASSERT(line, -1.0e32f < x && x < 1.0e32f);
|
||||
#define CHECK_VEC3_RANGE(line, v) JUT_ASSERT(line, -1.0e32f < v.x && v.x < 1.0e32f && -1.0e32f < v.y && v.y < 1.0e32f && -1.0e32f < v.z && v.z < 1.0e32f)
|
||||
|
||||
/* 8025238C-80252624 .text SetC__8cM3dGSphFRC4cXyz */
|
||||
void cM3dGSph::SetC(const cXyz& pos) {
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
|
||||
/* 80246044-8024609C .text cM_rad2s__Ff */
|
||||
s16 cM_rad2s(float f0) {
|
||||
f32 tmpF = fmod(f0, 6.2831854820251465 /* approx. 2 * PI */);
|
||||
s32 tmp = (tmpF * 10430.378f /* approx. 32768 / PI */);
|
||||
f64 tmpF = fmod(f0, 6.2831854820251465 /* approx. 2 * PI */);
|
||||
s32 tmp = (tmpF * 10430.3779296875 /* approx. 32768 / PI */);
|
||||
if (tmp < -0x8000) {
|
||||
tmp += 0x10000;
|
||||
} else if (tmp > 0x7FFF) {
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
//
|
||||
|
||||
#include "SSystem/SComponent/c_xyz.h"
|
||||
#include "SSystem/SComponent/c_math.h"
|
||||
#include "MSL_C/float.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
#include "MSL_C/float.h"
|
||||
#include "SSystem/SComponent/c_math.h"
|
||||
|
||||
const cXyz cXyz::Zero(0, 0, 0);
|
||||
const cXyz cXyz::BaseX(1, 0, 0);
|
||||
@@ -150,7 +150,6 @@ bool cXyz::operator!=(const Vec& vec) const {
|
||||
|
||||
/* 80245CE4-80245D48 .text isZero__4cXyzCFv */
|
||||
bool cXyz::isZero(void) const {
|
||||
return fabsf(this->x) < 3.814697e-06 &&
|
||||
fabsf(this->y) < 3.814697e-06 &&
|
||||
fabsf(this->z) < 3.814697e-06;
|
||||
return fabsf(this->x) < 3.814697e-06f && fabsf(this->y) < 3.814697e-06f &&
|
||||
fabsf(this->z) < 3.814697e-06f;
|
||||
}
|
||||
|
||||
+117
-33
@@ -9,13 +9,27 @@
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "m_Do/m_Do_ext.h"
|
||||
#include "m_Do/m_Do_mtx.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_resorce.h"
|
||||
#include "d/d_kankyo.h"
|
||||
#include "JSystem/J3DGraphBase/J3DMaterial.h"
|
||||
#include "dolphin/mtx/mtx.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
|
||||
class daBranch_c : public fopAc_ac_c {
|
||||
public:
|
||||
~daBranch_c() {
|
||||
for (int i = 0; i < 2; i++) {
|
||||
mDoExt_McaMorf* anim = mAnims[i];
|
||||
if (anim != 0) {
|
||||
anim->stopZelAnime();
|
||||
}
|
||||
}
|
||||
|
||||
dComIfG_resDelete(&mPhs, m_arcname);
|
||||
}
|
||||
|
||||
void set_mtx();
|
||||
void set_anim(int, int, int);
|
||||
void demoPlay(mDoExt_McaMorf*);
|
||||
@@ -24,9 +38,13 @@ public:
|
||||
static s32 solidHeapCB(fopAc_ac_c*);
|
||||
|
||||
/* 0x0290 */ request_of_phase_process_class mPhs;
|
||||
/* 0x0294 */ s8 dummy[0x10];
|
||||
// ...
|
||||
/* 0x02A8*/ mDoExt_McaMorf* mAnims[2];
|
||||
/* 0x0298 */ J3DModel* mModels[2];
|
||||
/* 0x02A0 */ u8 dummy2[0x08];
|
||||
/* 0x02A8 */ mDoExt_McaMorf* mAnims[2];
|
||||
/* 0x02B0 */ u8 dummy[0x08];
|
||||
/* 0x02B8 */ u32 m02B8;
|
||||
/* 0x02BC */ u8 m02BC;
|
||||
/* 0x02BD */ u8 m02BD;
|
||||
|
||||
static char m_arcname[];
|
||||
};
|
||||
@@ -35,20 +53,29 @@ char daBranch_c::m_arcname[] = "Kwood_00";
|
||||
|
||||
/* 00000078-00000128 .text set_mtx__10daBranch_cFv */
|
||||
void daBranch_c::set_mtx() {
|
||||
/* Nonmatching */
|
||||
//for (int i = 0; i < 2; i ++) {
|
||||
J3DModel* pMdl;
|
||||
|
||||
//}
|
||||
for (int i = 0; i < 2; i ++) {
|
||||
pMdl = mModels[i];
|
||||
|
||||
if (pMdl) {
|
||||
pMdl->setBaseScale(mScale);
|
||||
|
||||
mDoMtx_stack_c::transS(getPosition());
|
||||
mDoMtx_stack_c::XYZrotM(getAngle().x, getAngle().y, getAngle().z);
|
||||
pMdl->i_setBaseTRMtx(mDoMtx_stack_c::get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 00000128-000001E4 .text set_anim__10daBranch_cFiii */
|
||||
void daBranch_c::set_anim(int i_animIdx, int i_bckIdx, int i_basIdx) {
|
||||
if (i_bckIdx > 0 && i_basIdx > 0) {
|
||||
void* pSnd = dComIfG_getObjectIDRes(m_arcname, i_basIdx);
|
||||
void* pAnm = dComIfG_getObjectIDRes(m_arcname, i_bckIdx);
|
||||
J3DAnmTransform* pAnm = static_cast<J3DAnmTransform*>(dComIfG_getObjectIDRes(m_arcname, i_bckIdx));
|
||||
|
||||
mAnims[i_animIdx]->setAnm(
|
||||
static_cast<J3DAnmTransform*>(pAnm),
|
||||
pAnm,
|
||||
-1,
|
||||
0.0f,
|
||||
1.0f,
|
||||
@@ -73,31 +100,25 @@ s32 daBranch_c::solidHeapCB(fopAc_ac_c* i_this) {
|
||||
/* 00000248-0000049C .text CreateHeap__10daBranch_cFv */
|
||||
s32 daBranch_c::CreateHeap() {
|
||||
/* Nonmatching */
|
||||
int basIds[] = { 8, 0 };
|
||||
int bckIds[] = { 7, 2 };
|
||||
int bmdIds[] = { 6, 5 };
|
||||
int t[] = {0, 0};
|
||||
|
||||
BOOL status = TRUE;
|
||||
|
||||
s32 ids[] = {
|
||||
8, 0,
|
||||
7, 2,
|
||||
6, 5
|
||||
};
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
void* modelRes = dRes_control_c::getIDRes(m_arcname, ids[i + 4], g_dComIfG_gameInfo.mResControl.mObjectInfo, 0x40);
|
||||
void* bckRes = dRes_control_c::getIDRes(m_arcname, ids[i + 2], g_dComIfG_gameInfo.mResControl.mObjectInfo, 0x40);
|
||||
J3DModelData* modelData = static_cast<J3DModelData*>(dComIfG_getObjectIDRes(m_arcname, bmdIds[i]));
|
||||
J3DAnmTransformKey* bck = static_cast<J3DAnmTransformKey*>(dComIfG_getObjectIDRes(m_arcname, bckIds[i]));
|
||||
|
||||
if (!modelRes) {
|
||||
JUT_ASSERT(0x1CC, "modelData != 0");
|
||||
}
|
||||
if (!bckRes) {
|
||||
JUT_ASSERT(0x1CD, "bck != 0");
|
||||
}
|
||||
JUT_ASSERT(0x1CC, modelData != 0);
|
||||
JUT_ASSERT(0x1CD, bck != 0);
|
||||
|
||||
mDoExt_McaMorf* newMorf = new mDoExt_McaMorf(
|
||||
(J3DModelData*)dRes_control_c::getIDRes(m_arcname, ids[i + 4], g_dComIfG_gameInfo.mResControl.mObjectInfo, 0x40),
|
||||
static_cast<J3DModelData*>(dComIfG_getObjectIDRes(m_arcname, bmdIds[i])),
|
||||
0,
|
||||
0,
|
||||
(J3DAnmTransformKey*)dRes_control_c::getIDRes(m_arcname, ids[i + 2], g_dComIfG_gameInfo.mResControl.mObjectInfo, 0x40),
|
||||
static_cast<J3DAnmTransformKey*>(dComIfG_getObjectIDRes(m_arcname, bckIds[i])),
|
||||
0,
|
||||
1.0f,
|
||||
0,
|
||||
@@ -109,35 +130,81 @@ s32 daBranch_c::CreateHeap() {
|
||||
);
|
||||
|
||||
mAnims[i] = newMorf;
|
||||
if (mAnims[i] == 0) {
|
||||
if (!mAnims[i]) {
|
||||
status = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
mModels[i] = newMorf->mpModel;
|
||||
if (!mModels[i]) {
|
||||
status = FALSE;
|
||||
break;
|
||||
}
|
||||
|
||||
mAnims[i]->setFrame(0.0f);
|
||||
set_anim(i, bckIds[i], basIds[i]);
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/* 0000049C-00000524 .text daBranch_Draw__FP10daBranch_c */
|
||||
void daBranch_Draw(daBranch_c*) {
|
||||
/* Nonmatching */
|
||||
BOOL daBranch_Draw(daBranch_c* i_this) {
|
||||
int activeIdx = 0;
|
||||
if (i_this->m02B8 == 5) {
|
||||
activeIdx = 1;
|
||||
}
|
||||
|
||||
g_env_light.settingTevStruct(TEV_TYPE_BG0, &i_this->current.pos, &i_this->mTevStr);
|
||||
g_env_light.setLightTevColorType(i_this->mModels[activeIdx], &i_this->mTevStr);
|
||||
|
||||
i_this->mAnims[activeIdx]->updateDL();
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 00000524-0000060C .text daBranch_Execute__FP10daBranch_c */
|
||||
void daBranch_Execute(daBranch_c*) {
|
||||
void daBranch_Execute(daBranch_c* i_this) {
|
||||
/* Nonmatching */
|
||||
int demoId = i_this->mDemoActorId;
|
||||
|
||||
if (demoId == 0) {
|
||||
if (i_this->m02B8 == 5) {
|
||||
if (i_this->mAnims[1]) {
|
||||
i_this->mAnims[1]->play(0, 0, 0);
|
||||
}
|
||||
}
|
||||
else if (i_this->m02B8 == 6 && i_this->mAnims[0]) {
|
||||
i_this->mAnims[0]->play(0, 0, 0);
|
||||
}
|
||||
}
|
||||
else {
|
||||
void* demoActor = g_dComIfG_gameInfo.play.mDemo;
|
||||
|
||||
if (demoActor) {
|
||||
//i_this->m02B8 = demoActor->mShape;
|
||||
|
||||
if (i_this->m02B8 == 6) {
|
||||
i_this->demoPlay(i_this->mAnims[0]);
|
||||
}
|
||||
else if (i_this->m02B8 == 5) {
|
||||
i_this->demoPlay(i_this->mAnims[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
i_this->set_mtx();
|
||||
}
|
||||
|
||||
/* 0000060C-00000614 .text daBranch_IsDelete__FP10daBranch_c */
|
||||
BOOL daBranch_IsDelete(daBranch_c*) {
|
||||
BOOL daBranch_IsDelete(daBranch_c* i_this) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 00000614-00000694 .text daBranch_Delete__FP10daBranch_c */
|
||||
void daBranch_Delete(daBranch_c*) {
|
||||
/* Nonmatching */
|
||||
BOOL daBranch_Delete(daBranch_c* i_this) {
|
||||
i_this->~daBranch_c();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 00000694-0000080C .text daBranch_Create__FP10fopAc_ac_c */
|
||||
@@ -153,13 +220,30 @@ s32 daBranch_Create(fopAc_ac_c* i_this) {
|
||||
|
||||
if (solidHeapResult & 0xFF == 0) {
|
||||
for (int i = 0; i < 2; i++) {
|
||||
//branch->mBase.m
|
||||
branch->mAnims[i] = 0;
|
||||
}
|
||||
|
||||
state = cPhs_ERROR_e;
|
||||
}
|
||||
else {
|
||||
branch->mCullMtx = branch->mModels[0]->mBaseTransformMtx;
|
||||
fopAcM_setCullSizeBox(i_this, 0.0f, 0.0f, -50.0f, 300.0f, 100.0f, 50.0f);
|
||||
|
||||
branch->m02B8 = 6;
|
||||
branch->m02BC = 0;
|
||||
branch->m02BD = 0;
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
J3DModelData* modelData = branch->mModels[i]->mModelData;
|
||||
|
||||
for (int j = 0; j < modelData->getMaterialNum(); j++) {
|
||||
J3DMaterial* mat = modelData->getMaterialNodePointer(j);
|
||||
if (mat) {
|
||||
J3DFog* fog = mat->getPEBlock()->getFog();
|
||||
fog->field_0x0 = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+236
-41
@@ -5,14 +5,44 @@
|
||||
|
||||
#include "d/d_item.h"
|
||||
#include "d/d_item_data.h"
|
||||
#include "d/actor/d_a_itembase_static.h"
|
||||
#include "d/actor/d_a_item.h"
|
||||
#include "d/actor/d_a_player_link.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
class dCcD_GObjInf;
|
||||
|
||||
static dCcD_SrcCyl m_cyl_src = {
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0xFFFFFFFF, // Tg damage types
|
||||
9,
|
||||
0x59,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
4,
|
||||
0,
|
||||
|
||||
// Cylinder
|
||||
0.0, // X
|
||||
0.0, // Y
|
||||
0.0, // Z
|
||||
10.0, // Radius
|
||||
50.0, // Height
|
||||
};
|
||||
|
||||
/* 800F4BC8-800F4BD4 .text getData__12daItemBase_cFv */
|
||||
daItemBase_c_m_data* daItemBase_c::getData() {
|
||||
return &daItemBase_c::m_data;
|
||||
@@ -27,7 +57,25 @@ void setArrowTrans(short, cXyz) {
|
||||
float daItem_c::getYOffset() {
|
||||
switch (m_itemNo) {
|
||||
case HEART:
|
||||
return 0.0;
|
||||
return 0.0f;
|
||||
case SKULL_NECKLACE:
|
||||
return 0.0f;
|
||||
case BOKOBABA_SEED:
|
||||
return 0.0f;
|
||||
case GOLDEN_FEATHER:
|
||||
return 0.0f;
|
||||
case BOKO_BELT:
|
||||
return 0.0f;
|
||||
case RED_JELLY:
|
||||
case GREEN_JELLY:
|
||||
case BLUE_JELLY:
|
||||
return 0.0f;
|
||||
case SWORD:
|
||||
return 20.0f;
|
||||
case SHIELD:
|
||||
return 23.0f;
|
||||
case DROPPED_SWORD:
|
||||
return 10.0f;
|
||||
case GREEN_RUPEE:
|
||||
case BLUE_RUPEE:
|
||||
case YELLOW_RUPEE:
|
||||
@@ -35,33 +83,15 @@ float daItem_c::getYOffset() {
|
||||
case PURPLE_RUPEE:
|
||||
case ORANGE_RUPEE:
|
||||
case SILVER_RUPEE:
|
||||
return 0.0;
|
||||
return 0.0f;
|
||||
case KAKERA_HEART:
|
||||
case UTUWA_HEART:
|
||||
return 0.0;
|
||||
return 0.0f;
|
||||
case SMALL_KEY:
|
||||
case BOSS_KEY:
|
||||
return 0.0;
|
||||
case SWORD:
|
||||
return 20.0;
|
||||
case SHIELD:
|
||||
return 23.0;
|
||||
case DROPPED_SWORD:
|
||||
return 10.0;
|
||||
case SKULL_NECKLACE:
|
||||
return 0.0;
|
||||
case BOKOBABA_SEED:
|
||||
return 0.0;
|
||||
case GOLDEN_FEATHER:
|
||||
return 0.0;
|
||||
case BOKO_BELT:
|
||||
return 0.0;
|
||||
case RED_JELLY:
|
||||
case GREEN_JELLY:
|
||||
case BLUE_JELLY:
|
||||
return 0.0;
|
||||
return 0.0f;
|
||||
default:
|
||||
return 0.0;
|
||||
return 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,11 +113,120 @@ void itemGetCallBack(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*) {
|
||||
/* 800F5044-800F53EC .text CreateInit__8daItem_cFv */
|
||||
void daItem_c::CreateInit() {
|
||||
/* Nonmatching */
|
||||
mAcchCir.SetWall(30.0, 30.0);
|
||||
cXyz* speedPtr = &speed;
|
||||
mAcch.Set(¤t.pos, &next.pos, this, 1, &mAcchCir, speedPtr, NULL, NULL);
|
||||
mAcch.m_flags &= ~0x400;
|
||||
mAcch.m_flags &= ~0x8;
|
||||
mCullMtx = mModel->mBaseTransformMtx;
|
||||
mStts.Init(0, 0xFF, this);
|
||||
mCyl.Set(m_cyl_src);
|
||||
mCyl.SetCoHitCallback(&itemGetCallBack);
|
||||
|
||||
dItem_data_item_info* item_info = &dItem_data::item_info[m_itemNo];
|
||||
f32 height = item_info->mCollisionH;
|
||||
f32 radius = item_info->mCollisionR;
|
||||
if (mScale.x > 1.0) {
|
||||
height *= mScale.x;
|
||||
radius *= mScale.x;
|
||||
}
|
||||
mCyl.SetR(radius);
|
||||
mCyl.SetH(height);
|
||||
|
||||
mItemTimer = getData()->mDuration;
|
||||
field7_0x65a = getData()->field7_0x18;
|
||||
mCurState = 0;
|
||||
field3_0x650 = speedPtr->y;
|
||||
mStatusFlags |= 2;
|
||||
|
||||
mUnknownParam = (fpcM_GetParam(this) & 0x03000000) >> 0x18;
|
||||
mItemAction = (fpcM_GetParam(this) & 0xFC000000) >> 0x1A;
|
||||
|
||||
show();
|
||||
|
||||
if (dItem_data::checkSpecialEffect(m_itemNo) && (m_itemNo != SMALL_KEY || (mStatusFlags & 2))) {
|
||||
dItem_data::getSpecialEffect(m_itemNo);
|
||||
// TODO: dPa_control_c::set
|
||||
}
|
||||
|
||||
switch (m_itemNo) {
|
||||
case BOMB_5:
|
||||
case BOMB_10:
|
||||
case BOMB_20:
|
||||
case BOMB_30:
|
||||
mScaleTarget.x = 0.6;
|
||||
mScaleTarget.y = 0.6;
|
||||
mScaleTarget.z = 0.6;
|
||||
break;
|
||||
default:
|
||||
mScaleTarget.x = 1.0;
|
||||
mScaleTarget.y = 1.0;
|
||||
mScaleTarget.z = 1.0;
|
||||
break;
|
||||
}
|
||||
|
||||
mSwitchId = (fpcM_GetParam(this) & 0x00FF0000) >> 0x10;
|
||||
if (mSwitchId != 0xFF && i_fopAcM_isSwitch(this, mSwitchId)) {
|
||||
hide();
|
||||
mStatusFlags |= 2;
|
||||
}
|
||||
mActivationSwitch = (orig.angle.z & 0x00FF) >> 0;
|
||||
|
||||
initAction();
|
||||
|
||||
switch (m_itemNo) {
|
||||
case SHIELD:
|
||||
mStatus |= 0x4000;
|
||||
break;
|
||||
case DROPPED_SWORD:
|
||||
current.angle.x = 0x4000;
|
||||
break;
|
||||
}
|
||||
|
||||
set_mtx();
|
||||
animPlay(1.0, 1.0, 1.0, 1.0, 1.0);
|
||||
|
||||
s16 procname = PROC_BST; // Gohdan
|
||||
if (fopAcIt_Judge(&fpcSch_JudgeForPName, &procname)) {
|
||||
// TODO: dPa_control_c::set
|
||||
mpParticleEmitter = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* 800F53EC-800F5668 .text _daItem_create__8daItem_cFv */
|
||||
s32 daItem_c::_daItem_create() {
|
||||
/* Nonmatching */
|
||||
fopAcM_SetupActor(this, daItem_c);
|
||||
|
||||
m_itemNo = (fpcM_GetParam(this) & 0x000000FF) >> 0x00;
|
||||
|
||||
if (!dItem_data::field_item_res[m_itemNo].mModelArcName) {
|
||||
setLoadError();
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
mPickupFlag = (fpcM_GetParam(this) & 0x0000FF00) >> 0x08;
|
||||
if (m_itemNo != BLUE_JELLY) { // Blue Chu Jelly uses mPickupFlag as if it was a switch.
|
||||
mPickupFlag &= 0x7F;
|
||||
if (dComIfGs_isItem(mPickupFlag, orig.roomNo) && mPickupFlag != 0x7F) {
|
||||
// Already picked up, don't create the item again.
|
||||
setLoadError();
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
}
|
||||
|
||||
s32 phase_state = dComIfG_resLoad(&mPhs, dItem_data::field_item_res[m_itemNo].mModelArcName);
|
||||
if (phase_state == cPhs_COMPLEATE_e) {
|
||||
u16 heapSize = dItem_data::field_item_res[m_itemNo].mHeapSize;
|
||||
s32 result = fopAcM_entrySolidHeap(this, (heapCallbackFunc)&CheckFieldItemCreateHeap, heapSize);
|
||||
if (!result) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
CreateInit();
|
||||
}
|
||||
|
||||
return phase_state;
|
||||
}
|
||||
|
||||
/* 800F5668-800F5834 .text _daItem_execute__8daItem_cFv */
|
||||
@@ -103,6 +242,20 @@ void daItem_c::mode_proc_call() {
|
||||
/* 800F59CC-800F5AFC .text execInitNormalDirection__8daItem_cFv */
|
||||
void daItem_c::execInitNormalDirection() {
|
||||
/* Nonmatching */
|
||||
daPy_getPlayerActorClass()->getHeadTopPos();
|
||||
|
||||
field8_0x65c = getData()->field45_0x40;
|
||||
|
||||
f32 speedY = getData()->mPickedUpInitialSpeedY;
|
||||
speed.x = 0;
|
||||
speed.y = speedY;
|
||||
speed.z = 0;
|
||||
mGravity = getData()->mPickedUpGravity;
|
||||
|
||||
show();
|
||||
|
||||
// TODO dPa_smokeEcallBack
|
||||
// TODO mpParticleEmitter
|
||||
}
|
||||
|
||||
/* 800F5AFC-800F5BC8 .text execMainNormalDirection__8daItem_cFv */
|
||||
@@ -127,7 +280,10 @@ void daItem_c::execMainGetDemoDirection() {
|
||||
|
||||
/* 800F5D44-800F5D88 .text execBringNezumi__8daItem_cFv */
|
||||
void daItem_c::execBringNezumi() {
|
||||
/* Nonmatching */
|
||||
if (mUnknownParam != 1) {
|
||||
fopAcM_posMoveF(this, mStts.GetCCMoveP());
|
||||
}
|
||||
mode_proc_call();
|
||||
}
|
||||
|
||||
/* 800F5D88-800F5F40 .text execWaitMain__8daItem_cFv */
|
||||
@@ -147,17 +303,37 @@ void daItem_c::scaleAnimFromBossItem() {
|
||||
|
||||
/* 800F60C0-800F6110 .text _daItem_draw__8daItem_cFv */
|
||||
s32 daItem_c::_daItem_draw() {
|
||||
/* Nonmatching */
|
||||
if (chkDraw()) {
|
||||
return DrawBase();
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 800F6110-800F61C8 .text setTevStr__8daItem_cFv */
|
||||
void daItem_c::setTevStr() {
|
||||
/* Nonmatching */
|
||||
g_env_light.settingTevStruct(TEV_TYPE_ACTOR, getPositionP(), &mTevStr);
|
||||
|
||||
mTevStr.mColorC0.r = 0x96;
|
||||
mTevStr.mColorC0.g = 0x96;
|
||||
mTevStr.mColorC0.b = 0x96;
|
||||
mTevStr.mColorK0.r = 0xFF;
|
||||
mTevStr.mColorK0.g = 0xFF;
|
||||
mTevStr.mColorK0.b = 0xFF;
|
||||
g_env_light.setLightTevColorType(mModel, &mTevStr);
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
if (!mModelArrow[i]) {
|
||||
continue;
|
||||
}
|
||||
g_env_light.setLightTevColorType(mModelArrow[i], &mTevStr);
|
||||
}
|
||||
}
|
||||
|
||||
/* 800F61C8-800F6268 .text _daItem_delete__8daItem_cFv */
|
||||
s32 daItem_c::_daItem_delete() {
|
||||
/* Nonmatching */
|
||||
// TODO: dPa_rippleEcallBack::end()
|
||||
DeleteBase(dItem_data::field_item_res[m_itemNo].mModelArcName);
|
||||
}
|
||||
|
||||
/* 800F6268-800F6434 .text Reflect__FR4cXyzP4cXyzff */
|
||||
@@ -181,7 +357,7 @@ void daItem_c::itemDefaultRotateY() {
|
||||
/* 800F6D78-800F6E54 .text checkItemDisappear__8daItem_cFv */
|
||||
bool daItem_c::checkItemDisappear() {
|
||||
bool disappearing = true;
|
||||
if (mCurAction == 3) {
|
||||
if (mCurState == 3) {
|
||||
disappearing = false;
|
||||
show();
|
||||
}
|
||||
@@ -197,7 +373,7 @@ bool daItem_c::checkItemDisappear() {
|
||||
if (g_dComIfG_gameInfo.play.mEvtCtrl.mMode != 0) {
|
||||
disappearing = false;
|
||||
}
|
||||
if (mCurAction == 4) {
|
||||
if (mCurState == 4) {
|
||||
disappearing = false;
|
||||
}
|
||||
if ((mStatusFlags & 0x08) || (mStatusFlags & 0x40) || (mStatus & 0x100000)) {
|
||||
@@ -208,13 +384,23 @@ bool daItem_c::checkItemDisappear() {
|
||||
}
|
||||
|
||||
/* 800F6E54-800F6E74 .text setItemTimer__8daItem_cFi */
|
||||
void daItem_c::setItemTimer(int) {
|
||||
/* Nonmatching */
|
||||
void daItem_c::setItemTimer(int timer) {
|
||||
if (timer == -1) {
|
||||
mStatusFlags |= 0x10;
|
||||
return;
|
||||
}
|
||||
mItemTimer = timer;
|
||||
}
|
||||
|
||||
/* 800F6E74-800F6EC8 .text checkPlayerGet__8daItem_cFv */
|
||||
bool daItem_c::checkPlayerGet() {
|
||||
/* Nonmatching */
|
||||
BOOL daItem_c::checkPlayerGet() {
|
||||
if (field20_0x638 < getData()->field47_0x42) {
|
||||
return FALSE;
|
||||
}
|
||||
if (mCurState == 3) {
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 800F6EC8-800F7028 .text itemActionForRupee__8daItem_cFv */
|
||||
@@ -259,14 +445,23 @@ void daItem_c::set_bound_se() {
|
||||
|
||||
/* 800F7DDC-800F7E6C .text checkGetItem__8daItem_cFv */
|
||||
s32 daItem_c::checkGetItem() {
|
||||
/* Nonmatching */
|
||||
if (checkPlayerGet()) {
|
||||
itemGetExecute();
|
||||
|
||||
return 1;
|
||||
if (!checkPlayerGet()) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (mCyl.ChkTgHit()) {
|
||||
cCcD_Obj* hitObj = mCyl.GetTgHitObj();
|
||||
if (hitObj) {
|
||||
u32 atType = hitObj->GetAtType();
|
||||
if (atType & AT_TYPE_SWORD) {
|
||||
itemGetExecute();
|
||||
return 1;
|
||||
} else if (atType & AT_TYPE_BOOMERANG) {
|
||||
mStatusFlags |= 0x08;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mStatusFlags |= 0x08;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -301,8 +496,8 @@ void daItem_c::initAction() {
|
||||
}
|
||||
|
||||
/* 800F8950-800F8970 .text daItem_Draw__FP8daItem_c */
|
||||
void daItem_Draw(daItem_c*) {
|
||||
/* Nonmatching */
|
||||
s32 daItem_Draw(daItem_c* i_this) {
|
||||
return i_this->_daItem_draw();
|
||||
}
|
||||
|
||||
/* 800F8970-800F8990 .text daItem_Execute__FP8daItem_c */
|
||||
@@ -322,7 +517,7 @@ s32 daItem_Delete(daItem_c* i_this) {
|
||||
|
||||
/* 800F89D0-800F89F0 .text daItem_Create__FP10fopAc_ac_c */
|
||||
s32 daItem_Create(fopAc_ac_c* i_this) {
|
||||
/* Nonmatching */
|
||||
return ((daItem_c*)i_this)->_daItem_create();
|
||||
}
|
||||
|
||||
/* 800F89F0-800F89F8 .text _daItem_isdelete__8daItem_cFv */
|
||||
|
||||
@@ -3,41 +3,44 @@
|
||||
// Translation Unit: d_a_item_static.cpp
|
||||
//
|
||||
|
||||
#include "d_a_item_static.h"
|
||||
// #include "d/actor/d_a_item_static.h"
|
||||
#include "d/actor/d_a_item.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
/* 80068820-800688A0 .text checkControl__8daItem_cFv */
|
||||
void daItem_c::checkControl() {
|
||||
s32 daItem_c::checkControl() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800688A0-800688E8 .text startControl__8daItem_cFv */
|
||||
void daItem_c::startControl() {
|
||||
s32 daItem_c::startControl() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800688E8-800688F8 .text endControl__8daItem_cFv */
|
||||
void daItem_c::endControl() {
|
||||
/* Nonmatching */
|
||||
s32 daItem_c::endControl() {
|
||||
mCurState = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 800688F8-80068950 .text checkLock__8daItem_cFv */
|
||||
void daItem_c::checkLock() {
|
||||
s32 daItem_c::checkLock() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 80068950-80068998 .text setLock__8daItem_cFv */
|
||||
void daItem_c::setLock() {
|
||||
s32 daItem_c::setLock() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 80068998-800689A8 .text releaseLock__8daItem_cFv */
|
||||
void daItem_c::releaseLock() {
|
||||
/* Nonmatching */
|
||||
s32 daItem_c::releaseLock() {
|
||||
mCurState = 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 800689A8-800689F0 .text checkActionNow__8daItem_cFv */
|
||||
void daItem_c::checkActionNow() {
|
||||
s32 daItem_c::checkActionNow() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
//
|
||||
|
||||
#include "d/actor/d_a_itembase_static.h"
|
||||
#include "d/actor/d_a_itembase.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
/* 80068650-80068658 .text getItemNo__12daItemBase_cFv */
|
||||
@@ -37,7 +38,7 @@ void daItemBase_c::changeDraw() {
|
||||
}
|
||||
|
||||
/* 800686F8-80068710 .text chkDraw__12daItemBase_cFv */
|
||||
void daItemBase_c::chkDraw() {
|
||||
bool daItemBase_c::chkDraw() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
@@ -62,7 +63,7 @@ void CheckItemCreateHeap(fopAc_ac_c*) {
|
||||
}
|
||||
|
||||
/* 800687B4-80068820 .text CheckFieldItemCreateHeap__FP10fopAc_ac_c */
|
||||
void CheckFieldItemCreateHeap(fopAc_ac_c*) {
|
||||
s32 CheckFieldItemCreateHeap(fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
|
||||
@@ -3,21 +3,78 @@
|
||||
// Translation Unit: d_a_magma.cpp
|
||||
//
|
||||
|
||||
#include "d_a_magma.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "d/d_magma.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
|
||||
class daMagma_c : public fopAc_ac_c {
|
||||
public:
|
||||
~daMagma_c() {
|
||||
dComIfG_resDelete(&mPhs, "Magma");
|
||||
}
|
||||
|
||||
request_of_phase_process_class mPhs;
|
||||
};
|
||||
|
||||
/* 00000078-00000080 .text daMagma_IsDelete__FP9daMagma_c */
|
||||
void daMagma_IsDelete(daMagma_c*) {
|
||||
/* Nonmatching */
|
||||
BOOL daMagma_IsDelete(daMagma_c* i_this) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 00000080-000000CC .text daMagma_Delete__FP9daMagma_c */
|
||||
void daMagma_Delete(daMagma_c*) {
|
||||
/* Nonmatching */
|
||||
BOOL daMagma_Delete(daMagma_c* i_this) {
|
||||
i_this->~daMagma_c();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* 000000CC-00000178 .text daMagma_Create__FP10fopAc_ac_c */
|
||||
void daMagma_Create(fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
s32 daMagma_Create(fopAc_ac_c* i_this) {
|
||||
daMagma_c* magma = static_cast<daMagma_c*>(i_this);
|
||||
|
||||
fopAcM_SetupActor(magma, daMagma_c);
|
||||
|
||||
int result = dComIfG_resLoad(&magma->mPhs, "Magma");
|
||||
if (result != cPhs_COMPLEATE_e) {
|
||||
return result;
|
||||
}
|
||||
|
||||
if (g_dComIfG_gameInfo.play.createMagma()) {
|
||||
g_dComIfG_gameInfo.play.mpMagmaPacket->newFloor(
|
||||
magma->current.pos,
|
||||
magma->mScale,
|
||||
magma->getRoomNo(),
|
||||
magma->mBase.mParameters
|
||||
);
|
||||
}
|
||||
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
static actor_method_class l_daMagma_Method = {
|
||||
(process_method_func)daMagma_Create,
|
||||
(process_method_func)daMagma_Delete,
|
||||
(process_method_func)0,
|
||||
(process_method_func)daMagma_IsDelete,
|
||||
(process_method_func)0,
|
||||
};
|
||||
|
||||
extern actor_process_profile_definition g_profile_MAGMA = {
|
||||
fpcLy_CURRENT_e,
|
||||
7,
|
||||
fpcPi_CURRENT_e,
|
||||
PROC_MAGMA,
|
||||
&g_fpcLf_Method.mBase,
|
||||
sizeof(daMagma_c),
|
||||
0,
|
||||
0,
|
||||
&g_fopAc_Method.base,
|
||||
0x01BC,
|
||||
&l_daMagma_Method,
|
||||
0x00040180,
|
||||
fopAc_ACTOR_e,
|
||||
fopAc_CULLBOX_0_e
|
||||
};
|
||||
|
||||
+78
-13
@@ -3,26 +3,91 @@
|
||||
// Translation Unit: d_a_swc00.cpp
|
||||
//
|
||||
|
||||
#include "d_a_swc00.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "d/d_procname.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
|
||||
/* 00000078-00000180 .text daSwc00_Execute__FP11swc00_class */
|
||||
void daSwc00_Execute(swc00_class*) {
|
||||
/* Nonmatching */
|
||||
struct swc00_class : public fopAc_ac_c {};
|
||||
|
||||
static inline s32 getSwBit(u32 param) {
|
||||
return param & 0xFF;
|
||||
}
|
||||
|
||||
/* 00000180-00000188 .text daSwc00_IsDelete__FP11swc00_class */
|
||||
void daSwc00_IsDelete(swc00_class*) {
|
||||
static s32 daSwc00_Execute(swc00_class* i_this) {
|
||||
/* Nonmatching */
|
||||
s32 enable_sw = fopAcM_GetParam(i_this) >> 8 & 0xFF;
|
||||
if(enable_sw == 0xFF || dComIfGs_isSwitch(enable_sw, i_this->current.roomNo)) {
|
||||
u8 swBit = fopAcM_GetParam(i_this) & 0xFF;
|
||||
|
||||
f32 xz_dist = fopAcM_searchPlayerDistanceXZ2(i_this);
|
||||
f32 y_diff = dComIfGp_getPlayer(0)->current.pos.y - i_this->current.pos.y;
|
||||
if(xz_dist < i_this->mScale.x && (-100.0f < y_diff && y_diff < i_this->mScale.y)) {
|
||||
dComIfGs_onSwitch(swBit, i_this->current.roomNo);
|
||||
|
||||
if((fopAcM_GetParam(i_this) >> 0x10 & 3) != 0) {
|
||||
fopAcM_delete(i_this);
|
||||
}
|
||||
}
|
||||
else if((fopAcM_GetParam(i_this) >> 0x10 & 3) == 0) {
|
||||
dComIfGs_offSwitch(swBit, i_this->current.roomNo);
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 00000188-00000190 .text daSwc00_Delete__FP11swc00_class */
|
||||
void daSwc00_Delete(swc00_class*) {
|
||||
/* Nonmatching */
|
||||
static s32 daSwc00_IsDelete(swc00_class* i_this) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 00000190-00000274 .text daSwc00_Create__FP10fopAc_ac_c */
|
||||
void daSwc00_Create(fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
static s32 daSwc00_Delete(swc00_class* i_this) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
static s32 daSwc00_Create(fopAc_ac_c* i_this) {
|
||||
fopAcM_SetupActor(i_this, swc00_class);
|
||||
|
||||
if(dComIfGs_isSwitch(fopAcM_GetParam(i_this) & 0xFF, i_this->current.roomNo)) {
|
||||
if((fopAcM_GetParam(i_this) >> 0x10 & 0x3) == 0) {
|
||||
u32 swBit = getSwBit(fopAcM_GetParam(i_this));
|
||||
dComIfGs_offSwitch(swBit, i_this->current.roomNo);
|
||||
}
|
||||
else {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
}
|
||||
|
||||
i_this->mScale.x *= 100.0f;
|
||||
i_this->mScale.x += 30.0f;
|
||||
i_this->mScale.x *= i_this->mScale.x;
|
||||
i_this->mScale.y *= 100.0f;
|
||||
|
||||
return cPhs_COMPLEATE_e;
|
||||
}
|
||||
|
||||
|
||||
static actor_method_class l_daSwc00_Method = {
|
||||
(process_method_func)daSwc00_Create,
|
||||
(process_method_func)daSwc00_Delete,
|
||||
(process_method_func)daSwc00_Execute,
|
||||
(process_method_func)daSwc00_IsDelete,
|
||||
(process_method_func)0,
|
||||
};
|
||||
|
||||
extern actor_process_profile_definition g_profile_SWC00 = {
|
||||
fpcLy_CURRENT_e,
|
||||
7,
|
||||
fpcPi_CURRENT_e,
|
||||
PROC_SWC00,
|
||||
&g_fpcLf_Method.mBase,
|
||||
sizeof(swc00_class),
|
||||
0,
|
||||
0,
|
||||
&g_fopAc_Method.base,
|
||||
0x011A,
|
||||
&l_daSwc00_Method,
|
||||
0x00040000,
|
||||
fopAc_ACTOR_e,
|
||||
fopAc_CULLBOX_0_e,
|
||||
};
|
||||
|
||||
@@ -93,7 +93,7 @@ namespace daTagRet {
|
||||
mCyl.SetC(current.pos);
|
||||
mCyl.SetR(1000.0f*mScale.x);
|
||||
mCyl.SetH(100.0f*mScale.y);
|
||||
g_dComIfG_gameInfo.play.mCcS.Set(&mCyl);
|
||||
dComIfG_Ccsp()->Set(&mCyl);
|
||||
|
||||
if (mCyl.ChkCoHit()) {
|
||||
u32 playerId = daObj::PrmAbstract(this, PRM_PLAYER_ID_W, PRM_PLAYER_ID_S);
|
||||
|
||||
@@ -3,76 +3,102 @@
|
||||
// Translation Unit: d_bg_s_movebg_actor.cpp
|
||||
//
|
||||
|
||||
#include "d_bg_s_movebg_actor.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "d/d_bg_s_movebg_actor.h"
|
||||
#include "d/d_bg_w.h"
|
||||
#include "d/d_com_inf_game.h"
|
||||
#include "m_Do/m_Do_mtx.h"
|
||||
|
||||
/* 800A56B8-800A56FC .text __ct__16dBgS_MoveBgActorFv */
|
||||
dBgS_MoveBgActor::dBgS_MoveBgActor() {
|
||||
/* Nonmatching */
|
||||
mpBgW = NULL;
|
||||
}
|
||||
|
||||
/* 800A56FC-800A571C .text CheckCreateHeap__FP10fopAc_ac_c */
|
||||
void CheckCreateHeap(fopAc_ac_c*) {
|
||||
/* Nonmatching */
|
||||
static int CheckCreateHeap(fopAc_ac_c* i_actor) {
|
||||
return static_cast<dBgS_MoveBgActor*>(i_actor)->MoveBGCreateHeap();
|
||||
}
|
||||
|
||||
const char* dBgS_MoveBgActor::m_name;
|
||||
|
||||
int dBgS_MoveBgActor::m_dzb_id;
|
||||
|
||||
MoveBGActor_SetFunc dBgS_MoveBgActor::m_set_func;
|
||||
|
||||
/* 800A571C-800A57F4 .text MoveBGCreateHeap__16dBgS_MoveBgActorFv */
|
||||
void dBgS_MoveBgActor::MoveBGCreateHeap() {
|
||||
/* Nonmatching */
|
||||
int dBgS_MoveBgActor::MoveBGCreateHeap() {
|
||||
if (!CreateHeap()) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
mpBgW = new dBgW();
|
||||
if (mpBgW != NULL) {
|
||||
cBgD_t* res = (cBgD_t*)dComIfG_getObjectRes(m_name, m_dzb_id);
|
||||
if (!mpBgW->Set(res, cBgW::MOVE_BG_e, &mBgMtx)) {
|
||||
if (m_set_func != NULL) {
|
||||
mpBgW->SetCrrFunc(m_set_func);
|
||||
}
|
||||
} else {
|
||||
goto RET; // probably fake match, clean up later
|
||||
}
|
||||
} else {
|
||||
RET:
|
||||
mpBgW = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 800A57F4-800A58F4 .text MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvR13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUl */
|
||||
void dBgS_MoveBgActor::MoveBGCreate(const char*, int, void (*)(dBgW*, void*, cBgS_PolyInfo&, bool, cXyz*, csXyz*, csXyz*), unsigned long) {
|
||||
/* Nonmatching */
|
||||
/* 800A57F4-800A58F4 .text
|
||||
* MoveBGCreate__16dBgS_MoveBgActorFPCciPFP4dBgWPvR13cBgS_PolyInfobP4cXyzP5csXyzP5csXyz_vUl */
|
||||
int dBgS_MoveBgActor::MoveBGCreate(const char* i_arcName, int i_dzb_id,
|
||||
MoveBGActor_SetFunc i_setFunc, u32 i_heapSize) {
|
||||
mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
|
||||
mDoMtx_stack_c::YrotM(shape_angle.y);
|
||||
mDoMtx_stack_c::scaleM(mScale.x, mScale.y, mScale.z);
|
||||
MTXCopy(mDoMtx_stack_c::get(), mBgMtx);
|
||||
|
||||
m_name = i_arcName;
|
||||
m_dzb_id = i_dzb_id;
|
||||
m_set_func = i_setFunc;
|
||||
|
||||
if (!fopAcM_entrySolidHeap(this, CheckCreateHeap, i_heapSize)) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
if (dComIfG_Bgsp()->Regist(mpBgW, this)) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
// return Create() ? cPhs_COMPLEATE_e : cPhs_ERROR_e; // using enums here changes code gen
|
||||
return Create() ? 4 : 5;
|
||||
}
|
||||
|
||||
/* 800A58F4-800A5980 .text MoveBGDelete__16dBgS_MoveBgActorFv */
|
||||
void dBgS_MoveBgActor::MoveBGDelete() {
|
||||
/* Nonmatching */
|
||||
int dBgS_MoveBgActor::MoveBGDelete() {
|
||||
int ret = Delete();
|
||||
|
||||
if (mpBgW != NULL && mpBgW->ChkUsed()) {
|
||||
dComIfG_Bgsp()->Release(mpBgW);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 800A5980-800A5A3C .text MoveBGExecute__16dBgS_MoveBgActorFv */
|
||||
void dBgS_MoveBgActor::MoveBGExecute() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
int dBgS_MoveBgActor::MoveBGExecute() {
|
||||
Mtx* new_mtx = NULL;
|
||||
|
||||
/* 800A5A3C-800A5A44 .text CreateHeap__16dBgS_MoveBgActorFv */
|
||||
void dBgS_MoveBgActor::CreateHeap() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
int ret = Execute(&new_mtx);
|
||||
if (new_mtx == NULL) {
|
||||
mDoMtx_stack_c::transS(current.pos.x, current.pos.y, current.pos.z);
|
||||
mDoMtx_stack_c::YrotM(shape_angle.y);
|
||||
mDoMtx_stack_c::scaleM(mScale.x, mScale.y, mScale.z);
|
||||
MTXCopy(mDoMtx_stack_c::get(), mBgMtx);
|
||||
} else {
|
||||
MTXCopy(*new_mtx, mBgMtx);
|
||||
}
|
||||
|
||||
/* 800A5A44-800A5A4C .text Create__16dBgS_MoveBgActorFv */
|
||||
void dBgS_MoveBgActor::Create() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
mpBgW->Move();
|
||||
|
||||
/* 800A5A4C-800A5A54 .text Delete__16dBgS_MoveBgActorFv */
|
||||
void dBgS_MoveBgActor::Delete() {
|
||||
/* Nonmatching */
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* 800A5A54-800A5A5C .text Execute__16dBgS_MoveBgActorFPPA3_A4_f */
|
||||
void dBgS_MoveBgActor::Execute(float(**)[3][4]) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800A5A5C-800A5A64 .text Draw__16dBgS_MoveBgActorFv */
|
||||
void dBgS_MoveBgActor::Draw() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800A5A64-800A5A6C .text IsDelete__16dBgS_MoveBgActorFv */
|
||||
void dBgS_MoveBgActor::IsDelete() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800A5A6C-800A5A74 .text ToFore__16dBgS_MoveBgActorFv */
|
||||
void dBgS_MoveBgActor::ToFore() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800A5A74-800A5A7C .text ToBack__16dBgS_MoveBgActorFv */
|
||||
void dBgS_MoveBgActor::ToBack() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -7,12 +7,12 @@
|
||||
#include "dolphin/types.h"
|
||||
|
||||
/* 800C2DFC-800C2E30 .text execItemGet__FUc */
|
||||
void execItemGet(unsigned char) {
|
||||
void execItemGet(u8 itemNo) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800C2E30-800C2E7C .text checkItemGet__FUci */
|
||||
void checkItemGet(unsigned char, int) {
|
||||
BOOL checkItemGet(u8, BOOL defaultVal) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
|
||||
@@ -7,22 +7,22 @@
|
||||
#include "dolphin/types.h"
|
||||
|
||||
/* 800C12F4-800C1334 .text checkAppearEffect__10dItem_dataFUc */
|
||||
void dItem_data::checkAppearEffect(unsigned char) {
|
||||
bool dItem_data::checkAppearEffect(u8 itemNo) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800C1334-800C13B4 .text getAppearEffect__10dItem_dataFUc */
|
||||
void dItem_data::getAppearEffect(unsigned char) {
|
||||
s16 dItem_data::getAppearEffect(u8 itemNo) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800C13B4-800C13F8 .text checkSpecialEffect__10dItem_dataFUc */
|
||||
void dItem_data::checkSpecialEffect(unsigned char) {
|
||||
bool dItem_data::checkSpecialEffect(u8 itemNo) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800C13F8-800C1474 .text getSpecialEffect__10dItem_dataFUc */
|
||||
void dItem_data::getSpecialEffect(unsigned char) {
|
||||
u16 dItem_data::getSpecialEffect(u8 itemNo) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ void fopKyM_Delete(void* i_process) {
|
||||
}
|
||||
|
||||
/* 8002A988-8002A9D8 .text fopKyM_Create__FsPFPv_iPv */
|
||||
static int fopKyM_Create(s16 i_procName, fopKyM_CreateFunc i_createFunc, void* i_process) {
|
||||
int fopKyM_Create(s16 i_procName, fopKyM_CreateFunc i_createFunc, void* i_process) {
|
||||
return fpcM_Create(i_procName, i_createFunc, i_process);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user