mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-21 14:07:29 -04:00
J3DPacket nearly yeah
This commit is contained in:
@@ -198,6 +198,7 @@ LIBS = [
|
||||
"objects": [
|
||||
Object(NonMatching, "JSystem/JFramework/JFWDisplay.cpp"),
|
||||
Object(NonMatching, "JSystem/JFramework/JFWSystem.cpp"),
|
||||
Object(NonMatching, "JSystem/J3DGraphBase/J3DPacket.cpp"),
|
||||
Object(Matching, "JSystem/J3DU/J3DUDL.cpp"),
|
||||
Object(NonMatching, "JSystem/JParticle/JPATexture.cpp"),
|
||||
Object(Matching, "JSystem/JKernel/JKRFile.cpp"),
|
||||
|
||||
@@ -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 */
|
||||
|
||||
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,20 +177,22 @@ public:
|
||||
|
||||
void setShape(J3DShape* pShape) { mpShape = pShape; }
|
||||
void setModel(J3DModel* pModel) { mpModel = pModel; }
|
||||
void setMtxBuffer(J3DMtxBuffer* pMtxBuffer) { mpMtxBuffer = pMtxBuffer; }
|
||||
void setBaseMtxPtr(Mtx* pMtx) { mpBaseMtxPtr = pMtx; }
|
||||
void setDrawMtx(Mtx** pDrawMtx) { mpDrawMtx = pDrawMtx; }
|
||||
void setNrmMtx(Mtx33** pNrmMtx) { mpNrmMtx = pNrmMtx; }
|
||||
|
||||
J3DShape* getShape() const { return mpShape; }
|
||||
J3DModel* getModel() const { return mpModel; }
|
||||
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:
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -76,9 +76,9 @@ static actor_method_class l_daSwc00_Method = {
|
||||
};
|
||||
|
||||
extern actor_process_profile_definition g_profile_SWC00 = {
|
||||
-3,
|
||||
fpcLy_CURRENT_e,
|
||||
7,
|
||||
0xFFFD,
|
||||
fpcPi_CURRENT_e,
|
||||
PROC_SWC00,
|
||||
&g_fpcLf_Method.mBase,
|
||||
sizeof(swc00_class),
|
||||
|
||||
Reference in New Issue
Block a user