mirror of
https://github.com/zeldaret/tp
synced 2026-07-11 15:28:38 -04:00
d_a_npc work
daBaseNpc_c::setBckAnm and J3DAnmTransform* daBaseNpc_c daBaseNpc_c::setBtpAnm daBaseNpc_c::attnSttsOn daBaseNpc_c::orderEvent daBaseNpc_c::setEnvTevColor daBaseNpc_c::setRoomNo daBaseNpc_c::checkEndAnm attempt CheckCreateHeap daNpcF_addIdx daNpcF_subIdx daNpcF_incIdx daNpcF_decIdx daNpcF_ActorMngr_c::initialize() daNpcF_ActorMngr_c::entry cleanup daNpcF_ActorMngr_c::entry daNpcF_ActorMngr_c::remove daNpcF_ActorMngr_c::getActorP daNpcF_MatAnm_c::calc attempt daNpcF_SPCurve_c::initialize minor fixes daNpcF_Path_c::initialize daNpcF_Path_c::setPathInfo daNpcF_Path_c::chkPassed daNpcF_Path_c::reverse daNpcF_Path_c::setNextIdx daNpcF_Path_c::getNextIdx daNpcF_Path_c::getBeforeIdx daNpcF_Path_c::getBeforePos daNpcF_Path_c::getNextPos daNpcT_MatAnm_c::initialize daNpcT_MatAnm_c::calc daNpcT_addIdx daNpcT_subIdx daNpcT_decIdx daNpcT_Path_c::hermite daNpcT_Path_c::initialize daNpcT_Path_c::setPathInfo attempt daNpcT_Path_c::setNextPathInfo daNpcT_Path_c::reverse daNpcT_Path_c::setNextIdx daNpcT_Path_c::getDstPos attempt daNpcT_DmgStagger_c::setParam Add FLOAT_LABEL where possible fopEn_enemy / fix e_wb move jasper's jsystem work over d_attention / d_demo / d_lib work remove asm clean up dolphin files / work on some rels (#212) * d_a_alldie / d_a_tboxSw / d_a_tag_gstart / d_a_tag_hstop * dolphin OS work / cleanup * dolphin GX work / cleanup * finish changing dolphin files to C * more files into C * match rest of MSL_C math functions * more dolphin files converted to C * remove asm * d_bg_w work * remove asm * d_a_alink work / kytag14 initial changes to d_a_e_yc checkpoint until virtual destructor issue is solved daNpcF_Lookat_c::adjustMoveDisAngle daBaseNpc_c::setMtx daBaseNpc_moveBgActor_c::daBaseNpc_moveBgActor_c() daNpcT_c::ctrlFaceMotion daNpcT_c::ctrlMsgAnm attempt daNpcT_c::initTalk daNpcF_clearMessageTmpBit daNpcF_getDistTableIdx daNpcF_offTmpBit daNpcF_onTmpBit daNpcF_chkTmpBit daNpcF_onEvtBit daNpcF_chkEvtBit daNpcF_c::getDistTableIdx daNpcF_chkPointInArea daNpcF_chkDoBtnEqSpeak daNpcF_getPlayerInfoFromPlayerList attempt daNpcF_pntVsLineSegmentLengthSquare2D daNpcF_c::chkPointInArea daNpcF_c::chkPointInArea daNpcF_c::getAttentionPos daNpcT_chkTmpBit daNpcT_offTmpBit daNpcT_onTmpBit daNpcT_chkEvtBit daNpcT_offEvtBit daNpcT_onEvtBit daNpcT_chkDoBtnIsSpeak daNpcT_getDistTableIdx daBaseNpc_acMngr_c::entry daNpcF_c::initTalk undo override
This commit is contained in:
@@ -577,6 +577,7 @@ public:
|
||||
f32 getFrame() const { return mFrame; }
|
||||
s16 getEnd() const { return mEnd; }
|
||||
u8 getAttribute() const { return mAttribute; }
|
||||
u8 getState() const { return mState; }
|
||||
void setAttribute(u8 attr) { mAttribute = attr; }
|
||||
void setEnd(s16 end) { mEnd = end; }
|
||||
void setRate(f32 rate) { mRate = rate; }
|
||||
|
||||
@@ -68,13 +68,15 @@ public:
|
||||
static J3DMtxCalc* mCurrentMtxCalc;
|
||||
|
||||
private:
|
||||
friend struct J3DJointFactory;
|
||||
|
||||
/* 0x00 */ void* mCallBackUserData;
|
||||
/* 0x04 */ J3DJointCallBack mCallBack;
|
||||
/* 0x08 */ void* field_0x8;
|
||||
/* 0x0C */ J3DJoint* mChild;
|
||||
/* 0x10 */ J3DJoint* mYounger;
|
||||
/* 0x14 */ u16 mJntNo;
|
||||
/* 0x16 */ u8 mMtxType;
|
||||
/* 0x16 */ u8 mKind;
|
||||
/* 0x17 */ u8 mScaleCompensate;
|
||||
/* 0x18 */ J3DTransformInfo mTransformInfo;
|
||||
/* 0x38 */ f32 mBoundingSphereRadius;
|
||||
|
||||
@@ -34,6 +34,7 @@ public:
|
||||
u16 getWEvlpMtxNum() const { return mWEvlpMtxNum; }
|
||||
u16 getJointNum() const { return mJointNum; }
|
||||
u16 getDrawMtxNum() const { return mDrawMtxData.mEntryNum; }
|
||||
JUTNameTab* getJointName() const { return mJointName; }
|
||||
J3DJoint* getRootNode() { return mRootNode; }
|
||||
J3DJoint* getJointNodePointer(u16 idx) const { return mJointNodePointer[idx]; }
|
||||
J3DMtxCalc* getBasicMtxCalc() const { return mBasicMtxCalc; }
|
||||
|
||||
@@ -33,6 +33,7 @@ public:
|
||||
J3DShape* getShapeNodePointer(u16 idx) const { return mShapeTable.getShapeNodePointer(idx); }
|
||||
J3DJoint* getJointNodePointer(u16 idx) const { return mJointTree.getJointNodePointer(idx); }
|
||||
J3DJointTree& getJointTree() { return mJointTree; }
|
||||
JUTNameTab* getJointName() const { return mJointTree.getJointName(); }
|
||||
Mtx& getInvJointMtx(s32 idx) const { return mJointTree.getInvJointMtx(idx); }
|
||||
J3DTexture* getTexture() const { return mMaterialTable.getTexture(); }
|
||||
JUTNameTab* getTextureName() const { return mMaterialTable.getTextureName(); }
|
||||
|
||||
@@ -11,22 +11,37 @@ class J3DDrawPacket;
|
||||
class J3DMatPacket;
|
||||
class J3DShapePacket;
|
||||
|
||||
typedef void (*J3DDrawBuffer_DrawFunc)(const J3DDrawBuffer* this_);
|
||||
typedef int (J3DDrawBuffer::*sortFunc)(J3DMatPacket*);
|
||||
typedef void (J3DDrawBuffer::*drawFunc)() const;
|
||||
|
||||
class J3DDrawBuffer {
|
||||
public:
|
||||
enum EDrawType {
|
||||
DRAW_HEAD,
|
||||
DRAW_TAIL,
|
||||
};
|
||||
|
||||
enum ESortType {
|
||||
SORT_MAT,
|
||||
SORT_MAT_ANM,
|
||||
SORT_Z,
|
||||
SORT_MODEL,
|
||||
SORT_INVALID,
|
||||
SORT_NON,
|
||||
};
|
||||
|
||||
J3DDrawBuffer() { initialize(); }
|
||||
~J3DDrawBuffer();
|
||||
void initialize();
|
||||
J3DError allocBuffer(u32);
|
||||
void frameInit();
|
||||
void entryMatSort(J3DMatPacket*);
|
||||
void entryMatAnmSort(J3DMatPacket*);
|
||||
void entryZSort(J3DMatPacket*);
|
||||
void entryModelSort(J3DMatPacket*);
|
||||
void entryInvalidSort(J3DMatPacket*);
|
||||
bool entryNonSort(J3DMatPacket*);
|
||||
bool entryImm(J3DPacket* pPacket, u16 index);
|
||||
int entryMatSort(J3DMatPacket*);
|
||||
int entryMatAnmSort(J3DMatPacket*);
|
||||
int entryZSort(J3DMatPacket*);
|
||||
int entryModelSort(J3DMatPacket*);
|
||||
int entryInvalidSort(J3DMatPacket*);
|
||||
int entryNonSort(J3DMatPacket*);
|
||||
int entryImm(J3DPacket* pPacket, u16 index);
|
||||
void draw() const;
|
||||
void drawHead() const;
|
||||
void drawTail() const;
|
||||
@@ -43,12 +58,12 @@ public:
|
||||
/* 0x10 */ f32 mZNear;
|
||||
/* 0x14 */ f32 mZFar;
|
||||
/* 0x18 */ f32 mZRatio;
|
||||
/* 0x1C */ Mtx* mpZMtx;
|
||||
/* 0x1C */ MtxP mpZMtx;
|
||||
/* 0x20 */ J3DPacket* mpCallBackPacket;
|
||||
|
||||
static u8 sortFuncTable[72];
|
||||
static u8 drawFuncTable[24];
|
||||
static u8 entryNum[4 + 4 /* padding */];
|
||||
static sortFunc sortFuncTable[6];
|
||||
static drawFunc drawFuncTable[2];
|
||||
static int entryNum;
|
||||
};
|
||||
|
||||
#endif /* J3DDRAWBUFFER_H */
|
||||
|
||||
@@ -51,27 +51,29 @@ public:
|
||||
class J3DPacket {
|
||||
public:
|
||||
J3DPacket() {
|
||||
mpNextSibling = NULL;
|
||||
mpNextPacket = NULL;
|
||||
mpFirstChild = NULL;
|
||||
mpUserData = NULL;
|
||||
}
|
||||
|
||||
void addChildPacket(J3DPacket*);
|
||||
J3DPacket* getNextPacket() const { return mpNextSibling; }
|
||||
|
||||
J3DPacket* getNextPacket() const { return mpNextPacket; }
|
||||
void setNextPacket(J3DPacket* i_packet) { mpNextPacket = i_packet; }
|
||||
|
||||
inline void clear() {
|
||||
mpNextSibling = NULL;
|
||||
void drawClear() {
|
||||
mpNextPacket = NULL;
|
||||
mpFirstChild = NULL;
|
||||
}
|
||||
|
||||
void setUserArea(u32 area) { mpUserData = (void*)area; }
|
||||
|
||||
virtual bool entry(J3DDrawBuffer*);
|
||||
virtual int entry(J3DDrawBuffer*);
|
||||
virtual void draw();
|
||||
virtual ~J3DPacket() {}
|
||||
|
||||
public:
|
||||
/* 0x04 */ J3DPacket* mpNextSibling;
|
||||
/* 0x04 */ J3DPacket* mpNextPacket;
|
||||
/* 0x08 */ J3DPacket* mpFirstChild;
|
||||
/* 0x0C */ void* mpUserData;
|
||||
}; // Size: 0x10
|
||||
@@ -143,19 +145,21 @@ public:
|
||||
void endDiff();
|
||||
bool isSame(J3DMatPacket*) const;
|
||||
|
||||
J3DMaterial* getMaterial() const { return mpMaterial; }
|
||||
J3DShapePacket* getShapePacket() const { return mpShapePacket; }
|
||||
void setShapePacket(J3DShapePacket* packet) { mpShapePacket = packet; }
|
||||
void setInitShapePacket(J3DShapePacket* packet) { mpInitShapePacket = packet; }
|
||||
bool isChanged() const { return mDiffFlag < 0; }
|
||||
|
||||
virtual ~J3DMatPacket();
|
||||
virtual bool entry(J3DDrawBuffer*);
|
||||
virtual int entry(J3DDrawBuffer*);
|
||||
virtual void draw();
|
||||
|
||||
public:
|
||||
/* 0x28 */ J3DShapePacket* mpInitShapePacket;
|
||||
/* 0x2C */ J3DShapePacket* mpShapePacket;
|
||||
/* 0x30 */ J3DMaterial* mpMaterial;
|
||||
/* 0x34 */ u32 mSortFlags;
|
||||
/* 0x34 */ u32 mDiffFlag;
|
||||
/* 0x38 */ J3DTexture* mpTexture;
|
||||
/* 0x3C */ J3DMaterialAnm* mpMaterialAnm;
|
||||
}; // Size: 0x40
|
||||
|
||||
@@ -27,6 +27,11 @@ static inline void J3DFifoWriteXFCmd(u16 cmd, u16 len) {
|
||||
|
||||
class J3DCurrentMtx : public J3DCurrentMtxInfo {
|
||||
public:
|
||||
J3DCurrentMtx() {
|
||||
mMtxIdxRegA = 0x3cf3cf00;
|
||||
mMtxIdxRegB = 0x00f3cf3c;
|
||||
}
|
||||
|
||||
u32 getMtxIdxRegA() const { return mMtxIdxRegA; }
|
||||
u32 getMtxIdxRegB() const { return mMtxIdxRegB; }
|
||||
|
||||
@@ -54,6 +59,14 @@ enum J3DShpFlag {
|
||||
|
||||
class J3DShape {
|
||||
public:
|
||||
J3DShape() {
|
||||
initialize();
|
||||
}
|
||||
|
||||
enum {
|
||||
kVcdVatDLSize = 0xC0,
|
||||
};
|
||||
|
||||
/* 80314B48 */ void initialize();
|
||||
/* 80314BB8 */ void addTexMtxIndexInDL(_GXAttr, u32);
|
||||
/* 80314CBC */ void addTexMtxIndexInVcd(_GXAttr);
|
||||
@@ -93,11 +106,14 @@ public:
|
||||
inline u32 getMtxGroupNum() const { return mMtxGroupNum; }
|
||||
inline J3DShapeDraw* getShapeDraw(u32 idx) const { return mShapeDraw[idx]; }
|
||||
inline J3DShapeMtx* getShapeMtx(u32 idx) const { return mShapeMtx[idx]; }
|
||||
|
||||
static void resetVcdVatCache() { sOldVcdVatCmd = NULL; }
|
||||
|
||||
static void* sOldVcdVatCmd;
|
||||
|
||||
private:
|
||||
friend struct J3DShapeFactory;
|
||||
|
||||
/* 0x04 */ J3DMaterial* mMaterial;
|
||||
/* 0x08 */ u16 mIndex;
|
||||
/* 0x0A */ u16 mMtxGroupNum;
|
||||
|
||||
@@ -24,6 +24,10 @@ extern u8 struct_804515B0[4];
|
||||
|
||||
class J3DShapeMtx {
|
||||
public:
|
||||
J3DShapeMtx(u16 useMtxIndex)
|
||||
: mUseMtxIndex(useMtxIndex)
|
||||
{}
|
||||
|
||||
/* 803130A8 */ void resetMtxLoadCache();
|
||||
/* 803130E4 */ void loadMtxIndx_PNGP(int, u16) const;
|
||||
/* 80313128 */ void loadMtxIndx_PCPU(int, u16) const;
|
||||
@@ -54,6 +58,10 @@ private:
|
||||
|
||||
class J3DShapeMtxConcatView : public J3DShapeMtx {
|
||||
public:
|
||||
J3DShapeMtxConcatView(u16 useMtxIndex)
|
||||
: J3DShapeMtx(useMtxIndex)
|
||||
{}
|
||||
|
||||
/* 80314730 */ virtual ~J3DShapeMtxConcatView();
|
||||
/* 803147E0 */ virtual u32 getType() const;
|
||||
/* 80313C54 */ virtual void load() const;
|
||||
@@ -73,6 +81,10 @@ public:
|
||||
|
||||
class J3DShapeMtxYBBoardConcatView : public J3DShapeMtxConcatView {
|
||||
public:
|
||||
J3DShapeMtxYBBoardConcatView(u16 useMtxIndex)
|
||||
: J3DShapeMtxConcatView(useMtxIndex)
|
||||
{}
|
||||
|
||||
/* 80314520 */ virtual ~J3DShapeMtxYBBoardConcatView();
|
||||
/* 803147E0 */ virtual u32 getType() const;
|
||||
/* 803143E4 */ virtual void load() const;
|
||||
@@ -80,6 +92,10 @@ public:
|
||||
|
||||
class J3DShapeMtxBBoardConcatView : public J3DShapeMtxConcatView {
|
||||
public:
|
||||
J3DShapeMtxBBoardConcatView(u16 useMtxIndex)
|
||||
: J3DShapeMtxConcatView(useMtxIndex)
|
||||
{}
|
||||
|
||||
/* 803145A4 */ virtual ~J3DShapeMtxBBoardConcatView();
|
||||
/* 803147E0 */ virtual u32 getType() const;
|
||||
/* 803142D4 */ virtual void load() const;
|
||||
@@ -87,6 +103,12 @@ public:
|
||||
|
||||
class J3DShapeMtxMulti : public J3DShapeMtx {
|
||||
public:
|
||||
J3DShapeMtxMulti(u16 useMtxIndex, u16 useMtxNum, u16* useMtxIndexTable)
|
||||
: J3DShapeMtx(useMtxIndex)
|
||||
, mUseMtxNum(useMtxNum)
|
||||
, mUseMtxIndexTable(useMtxIndexTable)
|
||||
{}
|
||||
|
||||
/* 803146B0 */ virtual ~J3DShapeMtxMulti();
|
||||
/* 803147E0 */ virtual u32 getType() const;
|
||||
/* 80273E08 */ virtual u32 getUseMtxNum() const;
|
||||
@@ -96,11 +118,17 @@ public:
|
||||
|
||||
private:
|
||||
/* 0x6 */ u16 mUseMtxNum;
|
||||
/* 0x8 */ u16* mUseMtxIndex;
|
||||
/* 0x8 */ u16* mUseMtxIndexTable;
|
||||
};
|
||||
|
||||
class J3DShapeMtxMultiConcatView : public J3DShapeMtx {
|
||||
class J3DShapeMtxMultiConcatView : public J3DShapeMtxConcatView {
|
||||
public:
|
||||
J3DShapeMtxMultiConcatView(u16 useMtxIndex, u16 useMtxNum, u16* useMtxIndexTable)
|
||||
: J3DShapeMtxConcatView(useMtxIndex)
|
||||
, mUseMtxNum(useMtxNum)
|
||||
, mUseMtxIndexTable(useMtxIndexTable)
|
||||
{}
|
||||
|
||||
/* 8031461C */ virtual ~J3DShapeMtxMultiConcatView();
|
||||
/* 803147E0 */ virtual u32 getType() const;
|
||||
/* 80273E08 */ virtual u32 getUseMtxNum() const;
|
||||
@@ -111,7 +139,7 @@ public:
|
||||
|
||||
private:
|
||||
/* 0x6 */ u16 mUseMtxNum;
|
||||
/* 0x8 */ u16* mUseMtxIndex;
|
||||
/* 0x8 */ u16* mUseMtxIndexTable;
|
||||
};
|
||||
|
||||
#endif /* J3DSHAPEMTX_H */
|
||||
#endif /* J3DSHAPEMTX_H */
|
||||
@@ -93,6 +93,9 @@ struct J3DSys {
|
||||
void setMaterialMode(u32 mode) { mMaterialMode = mode; }
|
||||
|
||||
void setTexture(J3DTexture* pTex) { mTexture = pTex; }
|
||||
J3DTexture* getTexture() { return mTexture; }
|
||||
|
||||
void setNBTScale(Vec* scale) { mNBTScale = scale; }
|
||||
|
||||
void onFlag(u32 flag) { mFlags |= flag; }
|
||||
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
#ifndef J3DTRANSFORM_H
|
||||
#define J3DTRANSFORM_H
|
||||
|
||||
#include "JSystem/JGeometry.h"
|
||||
#include "dolphin/mtx/mtxvec.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
struct J3DTransformInfo {
|
||||
/* 0x00 */ Vec mScale;
|
||||
/* 0x0C */ SVec mRotation;
|
||||
/* 0x14 */ Vec mTranslate;
|
||||
/* 0x00 */ JGeometry::TVec3<f32> mScale;
|
||||
/* 0x0C */ JGeometry::TVec3<s16> mRotation;
|
||||
/* 0x14 */ JGeometry::TVec3<f32> mTranslate;
|
||||
}; // Size: 0x20
|
||||
|
||||
extern J3DTransformInfo const j3dDefaultTransformInfo;
|
||||
|
||||
@@ -94,8 +94,4 @@ struct VertexNormal {
|
||||
Vec data;
|
||||
};
|
||||
|
||||
struct VertexPosition {
|
||||
Vec data;
|
||||
};
|
||||
|
||||
#endif /* J3DVERTEX_H */
|
||||
|
||||
@@ -1,6 +1,49 @@
|
||||
#ifndef J3DJOINTFACTORY_H
|
||||
#define J3DJOINTFACTORY_H
|
||||
|
||||
#include "JSystem/J3DGraphBase/J3DTransform.h"
|
||||
#include "JSystem/JGeometry.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#endif /* J3DJOINTFACTORY_H */
|
||||
struct J3DJoint;
|
||||
struct ResNTAB;
|
||||
|
||||
struct J3DJointInitData {
|
||||
/* 0x00 */ u16 mKind;
|
||||
/* 0x02 */ bool mScaleCompensate;
|
||||
/* 0x04 */ J3DTransformInfo mTransformInfo;
|
||||
/* 0x24 */ f32 mRadius;
|
||||
/* 0x28 */ Vec mMin;
|
||||
/* 0x2C */ Vec mMax;
|
||||
}; // Size: 0x30
|
||||
|
||||
struct J3DJointBlock {
|
||||
/* 0x00 */ u8 mMagic[4];
|
||||
/* 0x04 */ u32 mSize;
|
||||
|
||||
/* 0x08 */ u16 mJointNum;
|
||||
/* 0x0A */ u16 _pad;
|
||||
|
||||
/* 0x0C */ J3DJointInitData* mJointInitData;
|
||||
/* 0x10 */ u16* mIndexTable;
|
||||
/* 0x14 */ ResNTAB* mNameTable;
|
||||
};
|
||||
|
||||
struct J3DJointFactory {
|
||||
/* 80337178 */ J3DJointFactory(J3DJointBlock const&);
|
||||
/* 803371D0 */ J3DJoint* create(int);
|
||||
|
||||
J3DJointInitData* mJointInitData;
|
||||
u16* mIndexTable;
|
||||
|
||||
u16 getKind(int no) const { return mJointInitData[mIndexTable[no]].mKind; }
|
||||
u8 getScaleCompensate(int no) const { return mJointInitData[mIndexTable[no]].mScaleCompensate; }
|
||||
const J3DTransformInfo& getTransformInfo(int no) const {
|
||||
return mJointInitData[mIndexTable[no]].mTransformInfo;
|
||||
}
|
||||
f32 getRadius(int no) const { return mJointInitData[mIndexTable[no]].mRadius; }
|
||||
Vec& getMin(int no) const { return mJointInitData[mIndexTable[no]].mMin; }
|
||||
Vec& getMax(int no) const { return mJointInitData[mIndexTable[no]].mMax; }
|
||||
};
|
||||
|
||||
#endif /* J3DJOINTFACTORY_H */
|
||||
@@ -1,6 +1,78 @@
|
||||
#ifndef J3DSHAPEFACTORY_H
|
||||
#define J3DSHAPEFACTORY_H
|
||||
|
||||
#include "dolphin/gx/GX.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
#endif /* J3DSHAPEFACTORY_H */
|
||||
struct J3DShape;
|
||||
struct J3DShapeMtx;
|
||||
struct J3DShapeDraw;
|
||||
struct ResNTAB;
|
||||
|
||||
struct J3DShapeInitData {
|
||||
/* 0x00 */ u8 mShapeMtxType;
|
||||
/* 0x02 */ u16 mMtxGroupNum;
|
||||
/* 0x04 */ u16 mVtxDescListIndex;
|
||||
/* 0x06 */ u16 mMtxInitDataIndex;
|
||||
/* 0x08 */ u16 mDrawInitDataIndex;
|
||||
/* 0x0C */ f32 mRadius;
|
||||
/* 0x10 */ Vec mMin;
|
||||
/* 0x1C */ Vec mMax;
|
||||
};
|
||||
|
||||
struct J3DShapeMtxInitData {
|
||||
/* 0x00 */ u16 mUseMtxIndex;
|
||||
/* 0x02 */ u16 mUseMtxCount;
|
||||
/* 0x04 */ u32 mFirstUseMtxIndex;
|
||||
};
|
||||
|
||||
struct J3DShapeDrawInitData {
|
||||
/* 0x00 */ u32 mDisplayListSize;
|
||||
/* 0x04 */ u32 mDisplayListIndex;
|
||||
};
|
||||
|
||||
struct J3DShapeBlock {
|
||||
/* 0x00 */ u8 mMagic[4];
|
||||
/* 0x04 */ u32 mSize;
|
||||
|
||||
/* 0x08 */ u16 mShapeNum;
|
||||
/* 0x0A */ u16 _pad;
|
||||
|
||||
/* 0x0C */ J3DShapeInitData* mShapeInitData;
|
||||
/* 0x10 */ u16* mIndexTable;
|
||||
/* 0x14 */ ResNTAB* mNameTable;
|
||||
/* 0x18 */ GXVtxDescList* mVtxDescList;
|
||||
/* 0x1C */ u16* mMtxTable;
|
||||
/* 0x20 */ u8* mDisplayListData;
|
||||
/* 0x24 */ J3DShapeMtxInitData* mMtxInitData;
|
||||
/* 0x28 */ J3DShapeDrawInitData* mDrawInitData;
|
||||
};
|
||||
|
||||
struct J3DShapeFactory {
|
||||
/* 80337350 */ J3DShapeFactory(J3DShapeBlock const&);
|
||||
/* 80337400 */ J3DShape* create(int, u32, GXVtxDescList*);
|
||||
/* 803375BC */ J3DShapeMtx* newShapeMtx(u32, int, int) const;
|
||||
/* 8033784C */ J3DShapeDraw* newShapeDraw(int, int) const;
|
||||
/* 803378D8 */ void allocVcdVatCmdBuffer(u32);
|
||||
/* 80337944 */ s32 calcSize(int, u32);
|
||||
/* 803379D8 */ s32 calcSizeVcdVatCmdBuffer(u32);
|
||||
/* 803379E8 */ s32 calcSizeShapeMtx(u32, int, int) const;
|
||||
|
||||
/* 0x00 */ J3DShapeInitData* mShapeInitData;
|
||||
/* 0x04 */ u16* mIndexTable;
|
||||
/* 0x08 */ GXVtxDescList* mVtxDescList;
|
||||
/* 0x0C */ u16* mMtxTable;
|
||||
/* 0x10 */ u8* mDisplayListData;
|
||||
/* 0x14 */ J3DShapeMtxInitData* mMtxInitData;
|
||||
/* 0x18 */ J3DShapeDrawInitData* mDrawInitData;
|
||||
/* 0x1C */ u8* mVcdVatCmdBuffer;
|
||||
|
||||
u32 getMtxGroupNum(int no) const { return mShapeInitData[mIndexTable[no]].mMtxGroupNum; }
|
||||
GXVtxDescList* getVtxDescList(int no) const { return (GXVtxDescList*)((u8*)mVtxDescList + mShapeInitData[mIndexTable[no]].mVtxDescListIndex); }
|
||||
f32 getRadius(int no) const { return mShapeInitData[mIndexTable[no]].mRadius; }
|
||||
Vec& getMin(int no) const { return mShapeInitData[mIndexTable[no]].mMin; }
|
||||
Vec& getMax(int no) const { return mShapeInitData[mIndexTable[no]].mMax; }
|
||||
};
|
||||
|
||||
|
||||
#endif /* J3DSHAPEFACTORY_H */
|
||||
@@ -2,6 +2,7 @@
|
||||
#define J3DUCLIPPER_H
|
||||
|
||||
#include "dolphin/mtx/vec.h"
|
||||
#include "dolphin/mtx/mtxvec.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
class J3DUClipper {
|
||||
|
||||
@@ -19,6 +19,18 @@ struct TVec3 {
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct TVec3<s16> {
|
||||
s16 x, y, z;
|
||||
|
||||
TVec3& operator=(const TVec3& b) {
|
||||
// Force copies to use lwz/lha
|
||||
*((s32*)this) = *((s32*)&b);
|
||||
z = b.z;
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
|
||||
template <>
|
||||
struct TVec3<f32> {
|
||||
f32 x;
|
||||
@@ -47,6 +59,20 @@ struct TVec3<f32> {
|
||||
y = a.y * b.y;
|
||||
z = a.z * b.z;
|
||||
}
|
||||
|
||||
inline TVec3<f32>& operator=(const TVec3<f32>& b) {
|
||||
register f32* dst = &x;
|
||||
const register f32* src = &b.x;
|
||||
register f32 x_y;
|
||||
register f32 z;
|
||||
asm {
|
||||
psq_l x_y, 0(src), 0, 0
|
||||
psq_st x_y, 0(dst), 0, 0
|
||||
lfs z, 8(src)
|
||||
stfs z, 8(dst)
|
||||
};
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
|
||||
@@ -9,7 +9,9 @@
|
||||
|
||||
namespace JStudio {
|
||||
namespace data {
|
||||
struct TEOperationData {};
|
||||
enum TEOperationData {
|
||||
UNK_0x19 = 0x19,
|
||||
};
|
||||
};
|
||||
|
||||
struct TAdaptor;
|
||||
@@ -50,6 +52,26 @@ public:
|
||||
/* 8028680C */ virtual void do_wait(u32);
|
||||
/* 8028682C */ virtual void do_data(void const*, u32, void const*, u32);
|
||||
|
||||
void prepareAdaptor() {
|
||||
if (mpAdaptor != NULL) {
|
||||
// mpAdaptor->adaptor_setObject_(this);
|
||||
// mpAdaptor->adaptor_do_begin();
|
||||
}
|
||||
}
|
||||
|
||||
template<class T>
|
||||
T* createFromAdaptor(const stb::data::TParse_TBlock_object& param_0, T* param_1) {
|
||||
T* n = new T(param_0, param_1);
|
||||
|
||||
if (n == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
n->prepareAdaptor();
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
/* 0x34 */ TAdaptor* mpAdaptor;
|
||||
};
|
||||
|
||||
@@ -86,7 +108,11 @@ struct TAdaptor {
|
||||
/* 80286648 */ void adaptor_setVariableValue_FVR_INDEX_(JStudio::TAdaptor*, JStudio::TControl*,
|
||||
u32, void const*, u32);
|
||||
|
||||
/* 0x4 */ TObject* pObject_;
|
||||
void adaptor_setObject_(const TObject* pObject) {
|
||||
pObject_ = pObject;
|
||||
}
|
||||
|
||||
/* 0x4 */ const TObject* pObject_;
|
||||
/* 0x8 */ TVariableValue* pValue_;
|
||||
/* 0xC */ u32 u;
|
||||
};
|
||||
|
||||
@@ -73,7 +73,7 @@ struct TParse_TParagraph_data : public TParseData_aligned<4> {
|
||||
};
|
||||
|
||||
TParse_TParagraph_data(const void* content) : TParseData_aligned<4>(content) {}
|
||||
/* 80289A80 */ void getData(TData*) const;
|
||||
/* 80289A80 */ void getData(TData* pData) const;
|
||||
};
|
||||
|
||||
// Parses a TObject ("demo object")
|
||||
|
||||
@@ -152,6 +152,46 @@ private:
|
||||
/* 0x54 */ s32 _54;
|
||||
};
|
||||
|
||||
template <int T>
|
||||
struct TParseData {
|
||||
TParseData(const void* pContent) {
|
||||
data::TParse_TParagraph_data data(pContent);
|
||||
set(data);
|
||||
}
|
||||
|
||||
void set(const data::TParse_TParagraph_data& data) {
|
||||
//data::TParse_TParagraph_data::TData* p = (data::TParse_TParagraph_data::TData*)this;
|
||||
data.getData(m_data);
|
||||
}
|
||||
|
||||
bool isEnd() const {
|
||||
return m_data->_0 == 0;
|
||||
}
|
||||
|
||||
bool empty() const {
|
||||
return m_data->_c == NULL;
|
||||
}
|
||||
|
||||
bool isValid() const {
|
||||
return !empty() && m_data->_0 == 50;
|
||||
}
|
||||
|
||||
data::TParse_TParagraph_data::TData* m_data;
|
||||
};
|
||||
|
||||
template <int T>
|
||||
struct TParseData_fixed : public TParseData<T> {
|
||||
TParseData_fixed(const void* pContent) : TParseData(pContent) {}
|
||||
|
||||
const void* getNext() const {
|
||||
return m_data->_c;
|
||||
}
|
||||
|
||||
bool isValid() const {
|
||||
return TParseData::isValid() && getNext() != NULL;
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace stb
|
||||
} // namespace JStudio
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
template <typename T>
|
||||
T* JSUConvertOffsetToPtr(const void* ptr, const void* offset) {
|
||||
if (ptr == NULL) {
|
||||
if (offset == NULL) {
|
||||
return NULL;
|
||||
} else {
|
||||
return (T*)((s32)ptr + (s32)offset);
|
||||
|
||||
@@ -127,4 +127,9 @@ private:
|
||||
|
||||
STATIC_ASSERT(sizeof(JUTException) == 0xA4);
|
||||
|
||||
struct JUTWarn {
|
||||
JUTWarn& operator<<(const char*) { return *this; }
|
||||
JUTWarn& operator<<(long) { return *this; }
|
||||
};
|
||||
|
||||
#endif /* JUTEXCEPTION_H */
|
||||
|
||||
Reference in New Issue
Block a user