mirror of
https://github.com/zeldaret/tww.git
synced 2026-07-11 14:38:38 -04:00
@@ -45,6 +45,7 @@ public:
|
||||
JUTNameTab* getMaterialName() const { return mMaterialName; }
|
||||
|
||||
u16 getMaterialNum() const { return mMaterialNum; }
|
||||
bool isLocked() const { return field_0x20 == 1; }
|
||||
|
||||
private:
|
||||
friend class J3DJointTree;
|
||||
|
||||
@@ -29,13 +29,21 @@ struct J3DUnkCalc2 {
|
||||
|
||||
typedef void (*J3DCalcCallBack)(J3DModel*, u32 timing);
|
||||
|
||||
class J3DAnmVisibilityFull;
|
||||
class J3DMatPacket;
|
||||
class J3DShapePacket;
|
||||
|
||||
class J3DVisibilityManager {
|
||||
public:
|
||||
J3DVisibilityManager(J3DAnmVisibilityFull* visibility) {
|
||||
mAnmVisibility = visibility;
|
||||
field_0x8 = 1;
|
||||
}
|
||||
virtual ~J3DVisibilityManager();
|
||||
virtual void setVisibility(J3DModelData*);
|
||||
|
||||
/* 0x04 */ J3DAnmVisibilityFull* mAnmVisibility;
|
||||
/* 0x08 */ int field_0x8;
|
||||
};
|
||||
|
||||
class J3DUnkCallBack {
|
||||
@@ -77,7 +85,6 @@ public:
|
||||
virtual void entry();
|
||||
virtual void calc();
|
||||
virtual void calcMaterial();
|
||||
virtual void calcDiffTexMtx();
|
||||
virtual void viewCalc();
|
||||
virtual ~J3DModel();
|
||||
|
||||
@@ -124,6 +131,7 @@ public:
|
||||
void setUserArea(u32 area) { mUserArea = area; }
|
||||
u32 getUserArea() const { return mUserArea; }
|
||||
Vec* getBaseScale() { return &mBaseScale; }
|
||||
void setVisibilityManager(J3DVisibilityManager* manager) { mpVisibilityManager = manager; }
|
||||
|
||||
/* 0x004 */ J3DModelData* mModelData;
|
||||
/* 0x008 */ u32 mFlags;
|
||||
|
||||
@@ -55,6 +55,7 @@ public:
|
||||
JUTNameTab* getTextureName() const { return mMaterialTable.getTextureName(); }
|
||||
void setTexture(J3DTexture* pTexture) { mMaterialTable.setTexture(pTexture); }
|
||||
void setTextureName(JUTNameTab* pTextureName) { mMaterialTable.setTextureName(pTextureName); }
|
||||
bool isLocked() { return mMaterialTable.isLocked(); }
|
||||
u16 getDrawFullWgtMtxNum() const { return mJointTree.getDrawFullWgtMtxNum(); }
|
||||
u16 getWEvlpMtxNum() const { return mJointTree.getWEvlpMtxNum(); }
|
||||
u16* getWEvlpMixMtxIndex() const { return mJointTree.getWEvlpMixIndex(); }
|
||||
@@ -93,7 +94,7 @@ private:
|
||||
/* 0x0E */ u16 mbHasBillboard;
|
||||
/* 0x10 */ J3DJointTree mJointTree;
|
||||
/* 0x58 */ J3DMaterialTable mMaterialTable;
|
||||
/* 0x78 */ J3DShapeTable mShapeTable;
|
||||
/* 0x7C */ J3DShapeTable mShapeTable;
|
||||
/* 0x84 */ J3DVertexData mVertexData;
|
||||
/* 0xE0 */ JUTNameTab * mName;
|
||||
}; // Size: 0xE4
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
struct J3DGXColorS10 {
|
||||
J3DGXColorS10() {}
|
||||
J3DGXColorS10(J3DGXColorS10& other) { mColor = other.mColor; }
|
||||
J3DGXColorS10& operator=(const J3DGXColorS10& other) {
|
||||
mColor = other.mColor;
|
||||
return *this;
|
||||
@@ -23,6 +24,7 @@ struct J3DGXColorS10 {
|
||||
|
||||
struct J3DGXColor {
|
||||
J3DGXColor() {}
|
||||
J3DGXColor(J3DGXColor& other) { mColor = other.mColor; }
|
||||
J3DGXColor& operator=(const J3DGXColor& other) {
|
||||
mColor = other.mColor;
|
||||
return *this;
|
||||
@@ -47,10 +49,10 @@ public:
|
||||
virtual s32 countDLSize();
|
||||
virtual u32 getType() = 0;
|
||||
virtual void setTexGenNum(u32 const*);
|
||||
virtual void setTexGenNum(u32);
|
||||
virtual u32 getTexGenNum() const;
|
||||
virtual void setTexCoord(u32, J3DTexCoord const*);
|
||||
virtual J3DTexCoord* getTexCoord(u32);
|
||||
virtual void setTexGenNum(u32) {}
|
||||
virtual u32 getTexGenNum() const { return 0; }
|
||||
virtual void setTexCoord(u32, J3DTexCoord const*) {}
|
||||
virtual J3DTexCoord* getTexCoord(u32) { return NULL; }
|
||||
virtual void setTexMtx(u32, J3DTexMtx*);
|
||||
virtual J3DTexMtx* getTexMtx(u32) { return NULL; }
|
||||
virtual void setNBTScale(J3DNBTScale const*);
|
||||
@@ -144,46 +146,46 @@ public:
|
||||
virtual void diffTexCoordScale() {}
|
||||
virtual void diffTevStage() {}
|
||||
virtual void diffTevStageIndirect() {}
|
||||
virtual void patch();
|
||||
virtual void patch() {}
|
||||
virtual void patchTexNo() {}
|
||||
virtual void patchTevReg() {}
|
||||
virtual void patchTexNoAndTexCoordScale() = 0;
|
||||
virtual void patchTexNoAndTexCoordScale() {}
|
||||
virtual void ptrToIndex() = 0;
|
||||
virtual void indexToPtr() = 0;
|
||||
virtual u32 getType() = 0;
|
||||
virtual s32 countDLSize();
|
||||
virtual void setTexNo(u32, u16 const*) {}
|
||||
virtual void setTexNo(u32, u16);
|
||||
virtual u16 getTexNo(u32) const;
|
||||
virtual void setTexNo(u32, u16) {}
|
||||
virtual u16 getTexNo(u32) const { return -1; }
|
||||
virtual void setTevOrder(u32, J3DTevOrder const*) {}
|
||||
virtual void setTevOrder(u32, J3DTevOrder);
|
||||
virtual J3DTevOrder* getTevOrder(u32);
|
||||
virtual void setTevOrder(u32, J3DTevOrder) {}
|
||||
virtual J3DTevOrder* getTevOrder(u32) { return NULL; }
|
||||
virtual void setTevColor(u32, J3DGXColorS10 const*);
|
||||
virtual void setTevColor(u32, J3DGXColorS10);
|
||||
virtual J3DGXColorS10* getTevColor(u32);
|
||||
virtual void setTevColor(u32, J3DGXColorS10) {}
|
||||
virtual J3DGXColorS10* getTevColor(u32) { return NULL; }
|
||||
virtual void setTevKColor(u32, J3DGXColor const*);
|
||||
virtual void setTevKColor(u32, J3DGXColor);
|
||||
virtual J3DGXColor* getTevKColor(u32);
|
||||
virtual void setTevKColor(u32, J3DGXColor) {}
|
||||
virtual J3DGXColor* getTevKColor(u32) { return NULL; }
|
||||
virtual void setTevKColorSel(u32 i, const u8* pNum) {}
|
||||
virtual void setTevKColorSel(u32, u8);
|
||||
virtual u8 getTevKColorSel(u32);
|
||||
virtual void setTevKColorSel(u32, u8) {}
|
||||
virtual u8 getTevKColorSel(u32) { return 0; }
|
||||
virtual void setTevKAlphaSel(u32 i, const u8* pNum) {}
|
||||
virtual void setTevKAlphaSel(u32, u8);
|
||||
virtual u8 getTevKAlphaSel(u32);
|
||||
virtual void setTevKAlphaSel(u32, u8) {}
|
||||
virtual u8 getTevKAlphaSel(u32) { return 0; }
|
||||
virtual void setTevStageNum(u8 const*) {}
|
||||
virtual void setTevStageNum(u8);
|
||||
virtual u8 getTevStageNum() const;
|
||||
virtual void setTevStageNum(u8) {}
|
||||
virtual u8 getTevStageNum() const { return 1; }
|
||||
virtual void setTevStage(u32, J3DTevStage const*) {}
|
||||
virtual void setTevStage(u32, J3DTevStage);
|
||||
virtual J3DTevStage* getTevStage(u32);
|
||||
virtual void setTevStage(u32, J3DTevStage) {}
|
||||
virtual J3DTevStage* getTevStage(u32) { return NULL; }
|
||||
virtual void setTevSwapModeInfo(u32 i, const J3DTevSwapModeInfo* pInfo) {}
|
||||
virtual void setTevSwapModeInfo(u32 i, J3DTevSwapModeInfo info) {}
|
||||
virtual void setTevSwapModeTable(u32 i, const J3DTevSwapModeTable* pTable) {}
|
||||
virtual void setTevSwapModeTable(u32, J3DTevSwapModeTable);
|
||||
virtual J3DTevSwapModeTable* getTevSwapModeTable(u32);
|
||||
virtual void setTevSwapModeTable(u32, J3DTevSwapModeTable) {}
|
||||
virtual J3DTevSwapModeTable* getTevSwapModeTable(u32) { return NULL; }
|
||||
virtual void setIndTevStage(u32, J3DIndTevStage const*) {}
|
||||
virtual void setIndTevStage(u32, J3DIndTevStage);
|
||||
virtual J3DIndTevStage* getIndTevStage(u32);
|
||||
virtual void setIndTevStage(u32, J3DIndTevStage) {}
|
||||
virtual J3DIndTevStage* getIndTevStage(u32) { return NULL; }
|
||||
virtual u32 getTexNoOffset() const { return 0; }
|
||||
virtual u32 getTevRegOffset() const { return 0; }
|
||||
virtual void setTexNoOffset(u32 offs) { mTexNoOffset = offs; }
|
||||
@@ -631,26 +633,26 @@ class J3DPEBlock {
|
||||
public:
|
||||
virtual void reset(J3DPEBlock*);
|
||||
virtual void load();
|
||||
virtual void patch();
|
||||
virtual void patch() {}
|
||||
virtual void diff(u32);
|
||||
virtual void diffFog();
|
||||
virtual void diffBlend();
|
||||
virtual s32 countDLSize();
|
||||
virtual u32 getType();
|
||||
virtual void setFog(J3DFog*);
|
||||
virtual J3DFog* getFog();
|
||||
virtual J3DFog* getFog() { return NULL; }
|
||||
virtual void setAlphaComp(J3DAlphaComp const*);
|
||||
virtual void setAlphaComp(J3DAlphaComp);
|
||||
virtual J3DAlphaComp* getAlphaComp();
|
||||
virtual J3DAlphaComp* getAlphaComp() { return NULL; }
|
||||
virtual void setBlend(J3DBlend const*);
|
||||
virtual void setBlend(J3DBlend);
|
||||
virtual J3DBlend* getBlend();
|
||||
virtual J3DBlend* getBlend() { return NULL; }
|
||||
virtual void setZMode(J3DZMode const*);
|
||||
virtual void setZMode(J3DZMode);
|
||||
virtual J3DZMode* getZMode();
|
||||
virtual J3DZMode* getZMode() { return NULL; }
|
||||
virtual void setZCompLoc(u8 const*);
|
||||
virtual void setZCompLoc(u8);
|
||||
virtual u8 getZCompLoc() const;
|
||||
virtual u8 getZCompLoc() const { return 0; }
|
||||
virtual void setDither(u8 const*);
|
||||
virtual void setDither(u8);
|
||||
virtual u8 getDither() const;
|
||||
@@ -767,7 +769,7 @@ private:
|
||||
}; // Size: 0x10
|
||||
|
||||
struct J3DIndTexCoordScale : public J3DIndTexCoordScaleInfo {
|
||||
J3DIndTexCoordScale();
|
||||
J3DIndTexCoordScale() { *(J3DIndTexCoordScaleInfo*)this = j3dDefaultIndTexCoordScaleInfo; }
|
||||
~J3DIndTexCoordScale() {}
|
||||
|
||||
u8 getScaleS() { return mScaleS; }
|
||||
@@ -775,7 +777,7 @@ struct J3DIndTexCoordScale : public J3DIndTexCoordScaleInfo {
|
||||
};
|
||||
|
||||
struct J3DIndTexMtx : public J3DIndTexMtxInfo {
|
||||
J3DIndTexMtx();
|
||||
J3DIndTexMtx() {*(J3DIndTexMtxInfo*)this = j3dDefaultIndTexMtxInfo; }
|
||||
~J3DIndTexMtx() {}
|
||||
|
||||
void load(u32 param_1) {
|
||||
@@ -784,7 +786,7 @@ struct J3DIndTexMtx : public J3DIndTexMtxInfo {
|
||||
}; // Size: 0x1C
|
||||
|
||||
struct J3DIndTexOrder : public J3DIndTexOrderInfo {
|
||||
J3DIndTexOrder();
|
||||
J3DIndTexOrder() { *(J3DIndTexOrderInfo*) this = j3dDefaultIndTexOrderNull; }
|
||||
|
||||
u8 getCoord() const { return mCoord; }
|
||||
u8 getMap() const { return mMap; }
|
||||
@@ -797,17 +799,17 @@ public:
|
||||
virtual void load() = 0;
|
||||
virtual s32 countDLSize();
|
||||
virtual u32 getType() = 0;
|
||||
virtual void setIndTexStageNum(u8);
|
||||
virtual u8 getIndTexStageNum() const;
|
||||
virtual void setIndTexStageNum(u8) {}
|
||||
virtual u8 getIndTexStageNum() const { return 0; }
|
||||
virtual void setIndTexOrder(u32, J3DIndTexOrder);
|
||||
virtual void setIndTexOrder(u32, J3DIndTexOrder const*);
|
||||
virtual J3DIndTexOrder* getIndTexOrder(u32);
|
||||
virtual J3DIndTexOrder* getIndTexOrder(u32) { return NULL; }
|
||||
virtual void setIndTexMtx(u32, J3DIndTexMtx const*);
|
||||
virtual void setIndTexMtx(u32, J3DIndTexMtx) {}
|
||||
virtual J3DIndTexMtx* getIndTexMtx(u32);
|
||||
virtual void setIndTexCoordScale(u32, J3DIndTexCoordScale) {}
|
||||
virtual J3DIndTexMtx* getIndTexMtx(u32) { return NULL; }
|
||||
virtual void setIndTexCoordScale(u32, J3DIndTexCoordScale const*);
|
||||
virtual J3DIndTexCoordScale* getIndTexCoordScale(u32);
|
||||
virtual void setIndTexCoordScale(u32, J3DIndTexCoordScale) {}
|
||||
virtual J3DIndTexCoordScale* getIndTexCoordScale(u32) { return NULL; }
|
||||
virtual ~J3DIndBlock() {}
|
||||
};
|
||||
|
||||
@@ -850,6 +852,25 @@ public:
|
||||
virtual ~J3DIndBlockNull();
|
||||
};
|
||||
|
||||
inline u16 calcColorChanID(u16 param_0, u8 param_1, u8 param_2, u8 param_3, u8 param_4, u8 param_5) {
|
||||
u32 r31 = 0;
|
||||
r31 = r31 & ~0x0002 | param_0 << 1;
|
||||
r31 = r31 & ~0x0001 | param_1;
|
||||
r31 = r31 & ~0x0040 | param_5 << 6;
|
||||
r31 = r31 & ~0x0004 | bool(param_2 & 0x01) << 2;
|
||||
r31 = r31 & ~0x0008 | bool(param_2 & 0x02) << 3;
|
||||
r31 = r31 & ~0x0010 | bool(param_2 & 0x04) << 4;
|
||||
r31 = r31 & ~0x0020 | bool(param_2 & 0x08) << 5;
|
||||
r31 = r31 & ~0x0800 | bool(param_2 & 0x10) << 11;
|
||||
r31 = r31 & ~0x1000 | bool(param_2 & 0x20) << 12;
|
||||
r31 = r31 & ~0x2000 | bool(param_2 & 0x40) << 13;
|
||||
r31 = r31 & ~0x4000 | bool(param_2 & 0x80) << 14;
|
||||
r31 = r31 & ~0x0180 | (param_4 == 0 ? 0 : param_3) << 7;
|
||||
r31 = r31 & ~0x0200 | (param_4 != 2) << 9;
|
||||
r31 = r31 & ~0x0400 | (param_4 != 0) << 10;
|
||||
return r31;
|
||||
}
|
||||
|
||||
inline u32 setChanCtrlMacro(u8 enable, GXColorSrc ambSrc, GXColorSrc matSrc, u32 lightMask, GXDiffuseFn diffuseFn, GXAttnFn attnFn) {
|
||||
return
|
||||
matSrc |
|
||||
@@ -863,7 +884,7 @@ inline u32 setChanCtrlMacro(u8 enable, GXColorSrc ambSrc, GXColorSrc matSrc, u32
|
||||
}
|
||||
|
||||
struct J3DColorChan {
|
||||
J3DColorChan();
|
||||
J3DColorChan() { setColorChanInfo(j3dDefaultColorChanInfo); }
|
||||
GXAttnFn getAttnFn();
|
||||
GXDiffuseFn getDiffuseFn() { return GXDiffuseFn(mChanCtrl >> 7 & 3); }
|
||||
u8 getLightMask() { return ((mChanCtrl >> 2 & 0x0f) | (mChanCtrl >> 11 & 0x0f) << 4); }
|
||||
@@ -874,6 +895,10 @@ struct J3DColorChan {
|
||||
GXColorSrc getMatSrc() { return GXColorSrc(mChanCtrl >> 0 & 0x01); }
|
||||
GXColorSrc getAmbSrc() { return GXColorSrc(mChanCtrl >> 6 & 0x01); }
|
||||
u8 getEnable() { return !!(mChanCtrl & 0x02); }
|
||||
void setColorChanInfo(const J3DColorChanInfo& info) {
|
||||
u8 r30 = info.field_0x5 == 0xFFFF ? 0 : info.field_0x5;
|
||||
mChanCtrl = calcColorChanID(info.field_0x0, info.field_0x1, info.field_0x2, info.field_0x3, info.field_0x4, r30);
|
||||
}
|
||||
void load() {
|
||||
J3DGDWrite_u32(setChanCtrlMacro(getEnable(), getAmbSrc(), getMatSrc(), getLightMask(), getDiffuseFn(), getAttnFn()));
|
||||
}
|
||||
@@ -887,24 +912,24 @@ public:
|
||||
virtual void reset(J3DColorBlock*);
|
||||
virtual void patch();
|
||||
virtual void patchMatColor();
|
||||
virtual void patchLight();
|
||||
virtual void patchLight() {}
|
||||
virtual void diff(u32);
|
||||
virtual void diffMatColor();
|
||||
virtual void diffLight();
|
||||
virtual s32 countDLSize();
|
||||
virtual u32 getType() = 0;
|
||||
virtual void setMatColor(u32, J3DGXColor const*);
|
||||
virtual void setMatColor(u32, J3DGXColor);
|
||||
virtual J3DGXColor* getMatColor(u32);
|
||||
virtual void setMatColor(u32, J3DGXColor) {}
|
||||
virtual J3DGXColor* getMatColor(u32) { return NULL; }
|
||||
virtual void setAmbColor(u32, J3DGXColor const*);
|
||||
virtual void setAmbColor(u32, J3DGXColor);
|
||||
virtual J3DGXColor* getAmbColor(u32);
|
||||
virtual void setColorChanNum(u8);
|
||||
virtual void setAmbColor(u32, J3DGXColor) {}
|
||||
virtual J3DGXColor* getAmbColor(u32) { return NULL; }
|
||||
virtual void setColorChanNum(u8) {}
|
||||
virtual void setColorChanNum(u8 const*);
|
||||
virtual u8 getColorChanNum() const;
|
||||
virtual void setColorChan(u32, J3DColorChan const&);
|
||||
virtual u8 getColorChanNum() const { return 0; }
|
||||
virtual void setColorChan(u32, J3DColorChan const&) {}
|
||||
virtual void setColorChan(u32, J3DColorChan const*);
|
||||
virtual J3DColorChan* getColorChan(u32);
|
||||
virtual J3DColorChan* getColorChan(u32) { return NULL; }
|
||||
virtual void setLight(u32, J3DLightObj*);
|
||||
virtual J3DLightObj* getLight(u32);
|
||||
virtual void setCullMode(u8 const*);
|
||||
|
||||
@@ -43,6 +43,8 @@ public:
|
||||
|
||||
J3DMaterial* getNext() const { return mNext; }
|
||||
J3DShape* getShape() const { return mShape; }
|
||||
u32 getMaterialMode() { return mMaterialMode; }
|
||||
void setMaterialMode(u32 mode) { mMaterialMode = mode; }
|
||||
J3DTevBlock* getTevBlock() const { return mTevBlock; }
|
||||
J3DColorBlock* getColorBlock() const { return mColorBlock; }
|
||||
J3DTexGenBlock* getTexGenBlock() const { return mTexGenBlock; }
|
||||
|
||||
@@ -76,6 +76,20 @@ struct J3DIndTexMtxInfo {
|
||||
}; // Size: 0x1C
|
||||
|
||||
struct J3DFogInfo {
|
||||
void operator=(const J3DFogInfo& other) {
|
||||
mType = other.mType;
|
||||
mAdjEnable = other.mAdjEnable;
|
||||
mCenter = other.mCenter;
|
||||
mStartZ = other.mStartZ;
|
||||
mEndZ = other.mEndZ;
|
||||
mNearZ = other.mNearZ;
|
||||
mFarZ = other.mFarZ;
|
||||
mColor = other.mColor;
|
||||
for (int i = 0; i < 10; i++) {
|
||||
mFogAdjTable[i] = other.mFogAdjTable[i];
|
||||
}
|
||||
}
|
||||
|
||||
/* 0x00 */ u8 mType;
|
||||
/* 0x01 */ u8 mAdjEnable;
|
||||
/* 0x02 */ u16 mCenter;
|
||||
|
||||
@@ -27,7 +27,7 @@ extern const J3DTevSwapModeInfo j3dDefaultTevSwapMode;
|
||||
extern const J3DTevSwapModeTableInfo j3dDefaultTevSwapModeTable;
|
||||
extern const J3DBlendInfo j3dDefaultBlendInfo;
|
||||
extern const J3DColorChanInfo j3dDefaultColorChanInfo;
|
||||
extern const u16 j3dDefaultTevSwapTableID;
|
||||
extern const u8 j3dDefaultTevSwapTableID;
|
||||
extern const u16 j3dDefaultAlphaCmpID;
|
||||
extern const u16 j3dDefaultZModeID;
|
||||
|
||||
@@ -75,7 +75,32 @@ struct J3DTevStage {
|
||||
};
|
||||
|
||||
struct J3DIndTevStage {
|
||||
J3DIndTevStage();
|
||||
J3DIndTevStage() {
|
||||
mInfo = 0;
|
||||
setIndTevStageInfo(j3dDefaultIndTevStageInfo);
|
||||
}
|
||||
|
||||
void setIndStage(u8 stage) { mInfo = mInfo & ~0x03 | stage; }
|
||||
void setIndFormat(u8 format) { mInfo = mInfo & ~0x0C | format << 2; }
|
||||
void setBiasSel(u8 sel) { mInfo = mInfo & ~0x70 | sel << 4; }
|
||||
void setAlphaSel(u8 sel) { mInfo = mInfo & ~0x0180 | sel << 7; }
|
||||
void setMtxSel(u8 sel) { mInfo = mInfo & ~0x1E00 | sel << 9; }
|
||||
void setWrapS(u8 wrap) { mInfo = mInfo & ~0xE000 | wrap << 13; }
|
||||
void setWrapT(u8 wrap) { mInfo = mInfo & ~0x070000 | wrap << 16; }
|
||||
void setLod(u8 lod) { mInfo = mInfo & ~0x080000 | lod << 19; }
|
||||
void setPrev(u8 prev) { mInfo = mInfo & ~0x100000 | prev << 20; }
|
||||
|
||||
void setIndTevStageInfo(const J3DIndTevStageInfo& info) {
|
||||
setIndStage(info.mIndStage);
|
||||
setIndFormat(info.mIndFormat);
|
||||
setBiasSel(info.mBiasSel);
|
||||
setMtxSel(info.mMtxSel);
|
||||
setWrapS(info.mWrapS);
|
||||
setWrapT(info.mWrapT);
|
||||
setPrev(info.mPrev);
|
||||
setLod(info.mLod);
|
||||
setAlphaSel(info.mAlphaSel);
|
||||
}
|
||||
|
||||
void load(u32 param_1) {
|
||||
J3DGDWriteBPCmd(mInfo | (param_1 + 16) << 24);
|
||||
@@ -85,14 +110,14 @@ struct J3DIndTevStage {
|
||||
};
|
||||
|
||||
struct J3DTevOrder : public J3DTevOrderInfo {
|
||||
J3DTevOrder();
|
||||
J3DTevOrder() { *(J3DTevOrderInfo*)this = j3dDefaultTevOrderInfoNull; }
|
||||
|
||||
J3DTevOrderInfo& getTevOrderInfo() { return *this; }
|
||||
u8 getTexMap() { return mTexMap; }
|
||||
};
|
||||
|
||||
struct J3DTevSwapModeTable {
|
||||
J3DTevSwapModeTable();
|
||||
J3DTevSwapModeTable() { field_0x0 = j3dDefaultTevSwapTableID; }
|
||||
|
||||
u8 getR() { return j3dTevSwapTableTable[field_0x0 * 4]; }
|
||||
u8 getG() { return j3dTevSwapTableTable[field_0x0 * 4 + 1]; }
|
||||
|
||||
@@ -54,7 +54,7 @@ public:
|
||||
J3DTexMtx(const J3DTexMtxInfo& info) {
|
||||
mTexMtxInfo = info;
|
||||
}
|
||||
~J3DTexMtx();
|
||||
~J3DTexMtx() {}
|
||||
void load(u32 i) const {
|
||||
GDOverflowCheck(53);
|
||||
J3DGDLoadTexMtxImm((Mtx&)mMtx, i * 3 + 30, (GXTexMtxType)mTexMtxInfo.mProjection);
|
||||
@@ -78,7 +78,7 @@ private:
|
||||
}; // Size: 0xc4
|
||||
|
||||
struct J3DTexCoord : public J3DTexCoordInfo {
|
||||
J3DTexCoord();
|
||||
J3DTexCoord() { *(J3DTexCoordInfo*)this = j3dDefaultTexCoordInfo[0]; }
|
||||
|
||||
u8 getTexGenType() { return mTexGenType; }
|
||||
u8 getTexGenSrc() { return mTexGenSrc; }
|
||||
|
||||
+60
-18
@@ -126,7 +126,7 @@ public:
|
||||
|
||||
private:
|
||||
/* 0x08 */ J3DAnmTransform* mAnm;
|
||||
/* 0x0C */ J3DMtxCalc* mpMtxCalc;
|
||||
/* 0x0C */ J3DMtxCalcMayaAnm* mpMtxCalc;
|
||||
}; // Size: 0x10
|
||||
|
||||
STATIC_ASSERT(sizeof(mDoExt_bckAnm) == 0x10);
|
||||
@@ -190,7 +190,8 @@ public:
|
||||
int init(J3DModelData*, J3DAnmTransform*, int, int, float, short, short, bool);
|
||||
|
||||
private:
|
||||
// TODO
|
||||
/* 0x08 */ J3DAnmVisibilityFull* mpAnm;
|
||||
/* 0x0C */ J3DVisibilityManager* field_0xc;
|
||||
};
|
||||
|
||||
class mDoExt_AnmRatioPack {
|
||||
@@ -358,36 +359,76 @@ public:
|
||||
void restore(J3DMaterial*);
|
||||
|
||||
private:
|
||||
// TODO
|
||||
/* 0x000 */ J3DGXColor mMatColor[2];
|
||||
/* 0x008 */ u8 mColorChanNum;
|
||||
/* 0x00A */ J3DColorChan mColorChan[4];
|
||||
/* 0x012 */ J3DGXColor mAmbColor[2];
|
||||
/* 0x01C */ u32 mTexGenNum;
|
||||
/* 0x020 */ J3DTexCoord mTexCoord[8];
|
||||
/* 0x040 */ J3DTexMtx mTexMtx[8];
|
||||
/* 0x660 */ u8 mTevStageNum;
|
||||
/* 0x662 */ u16 mTexNo[8];
|
||||
/* 0x672 */ J3DGXColorS10 mTevColor[4];
|
||||
/* 0x692 */ J3DGXColor mTevKColor[4];
|
||||
/* 0x6A2 */ J3DTevStage mTevStage[8];
|
||||
/* 0x6E4 */ J3DIndTevStage mIndTevStage[8];
|
||||
/* 0x704 */ J3DTevOrder mTevOrder[4];
|
||||
/* 0x714 */ u8 mTevKColorSel[4];
|
||||
/* 0x718 */ u8 mTevKAlphaSel[4];
|
||||
/* 0x71C */ J3DTevSwapModeTable mTevSwapModeTable[4];
|
||||
/* 0x720 */ u8 mIndTexStageNum;
|
||||
/* 0x721 */ J3DIndTexOrder mIndTexOrder[4];
|
||||
/* 0x734 */ J3DIndTexMtx mIndTexMtx[3];
|
||||
/* 0x788 */ J3DIndTexCoordScale mIndTexCoordScale[4];
|
||||
/* 0x798 */ J3DFog mFog;
|
||||
/* 0x7C4 */ J3DAlphaComp mAlphaComp;
|
||||
/* 0x7C8 */ J3DBlend mBlend;
|
||||
/* 0x7CC */ J3DZMode mZMode;
|
||||
/* 0x7CE */ u8 mZCompLoc;
|
||||
/* 0x7D0 */ J3DMaterialAnm* mMaterialAnm;
|
||||
/* 0x7D4 */ u32 mMaterialMode;
|
||||
};
|
||||
|
||||
class mDoExt_backupMaterial_c {
|
||||
public:
|
||||
void create(J3DModelData*);
|
||||
void create(u16);
|
||||
bool create(J3DModelData*);
|
||||
bool create(u16);
|
||||
void restore(J3DModelData*);
|
||||
|
||||
private:
|
||||
// TODO
|
||||
/* 0x00 */ mDoExt_backupMatBlock_c* mBackupMatBlock;
|
||||
/* 0x04 */ J3DTexture* mTexture;
|
||||
/* 0x08 */ JUTNameTab* mTextureName;
|
||||
};
|
||||
|
||||
class mDoExt_invJntPacket : public J3DPacket {
|
||||
public:
|
||||
mDoExt_invJntPacket() {}
|
||||
~mDoExt_invJntPacket() {}
|
||||
|
||||
void draw();
|
||||
|
||||
void setJoint(J3DModel* i_model, u16 param_1) {
|
||||
mModel = i_model;
|
||||
field_0x14 = param_1;
|
||||
}
|
||||
|
||||
J3DModel* mModel;
|
||||
u16 field_0x14;
|
||||
};
|
||||
|
||||
class mDoExt_invisibleModel {
|
||||
public:
|
||||
void create(J3DModel*);
|
||||
bool create(J3DModel*);
|
||||
|
||||
void entry();
|
||||
void entryMaskOff();
|
||||
|
||||
void updateDL(J3DModel*);
|
||||
void updateDL(mDoExt_McaMorf*);
|
||||
};
|
||||
|
||||
class mDoExt_invJntPacket : public J3DPacket {
|
||||
public:
|
||||
mDoExt_invJntPacket();
|
||||
~mDoExt_invJntPacket();
|
||||
|
||||
void draw();
|
||||
J3DModel* mModel;
|
||||
mDoExt_invJntPacket* mpPackets;
|
||||
};
|
||||
|
||||
class mDoExt_offCupOnAupPacket : public J3DPacket {
|
||||
@@ -449,10 +490,10 @@ JKRExpHeap* mDoExt_createArchiveHeap(u32 heapSize, JKRHeap* i_heap);
|
||||
JKRExpHeap* mDoExt_createZeldaHeap(u32 heapSize, JKRHeap* i_heap);
|
||||
JKRExpHeap* mDoExt_createGameHeap(u32 heapSize, JKRHeap* i_heap);
|
||||
|
||||
int mDoExt_getSafeArchiveHeapSize();
|
||||
int mDoExt_getSafeGameHeapSize();
|
||||
int mDoExt_getSafeZeldaHeapSize();
|
||||
int mDoExt_getSafeCommandHeapSize();
|
||||
s32 mDoExt_getSafeArchiveHeapSize();
|
||||
s32 mDoExt_getSafeGameHeapSize();
|
||||
s32 mDoExt_getSafeZeldaHeapSize();
|
||||
s32 mDoExt_getSafeCommandHeapSize();
|
||||
|
||||
s32 mDoExt_resIDToIndex(JKRArchive*, u16);
|
||||
|
||||
@@ -461,6 +502,7 @@ JKRSolidHeap * mDoExt_createSolidHeapToCurrent(u32, JKRHeap *, u32 align);
|
||||
void mDoExt_restoreCurrentHeap();
|
||||
u32 mDoExt_adjustSolidHeap(JKRSolidHeap * pHeap);
|
||||
void mDoExt_destroySolidHeap(JKRSolidHeap * pHeap);
|
||||
JKRHeap* mDoExt_setCurrentHeap(JKRHeap*);
|
||||
|
||||
extern JKRExpHeap* zeldaHeap;
|
||||
extern JKRExpHeap* gameHeap;
|
||||
|
||||
@@ -9,6 +9,8 @@ class JKRExpHeap;
|
||||
void version_check();
|
||||
s32 LOAD_COPYDATE(void*);
|
||||
|
||||
extern OSThread mainThread;
|
||||
|
||||
#define HeapCheckTableNum 6
|
||||
|
||||
class HeapCheck {
|
||||
|
||||
@@ -308,6 +308,6 @@ const J3DTevSwapModeInfo j3dDefaultTevSwapMode = {};
|
||||
const J3DTevSwapModeTableInfo j3dDefaultTevSwapModeTable = {0, 1, 2, 3};
|
||||
const J3DBlendInfo j3dDefaultBlendInfo = {GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_NOOP};
|
||||
const J3DColorChanInfo j3dDefaultColorChanInfo = {0, 0, 0, 2, 2, 0, 0xFF, 0xFF};
|
||||
const u16 j3dDefaultTevSwapTableID = 0x1B00;
|
||||
const u8 j3dDefaultTevSwapTableID = 0x1B;
|
||||
const u16 j3dDefaultAlphaCmpID = 0xE7;
|
||||
const u16 j3dDefaultZModeID = 0x17;
|
||||
|
||||
+459
-237
@@ -5,9 +5,11 @@
|
||||
|
||||
#include "m_Do/m_Do_ext.h"
|
||||
#include "JSystem/J3DGraphBase/J3DTransform.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "JSystem/JKernel/JKRArchive.h"
|
||||
#include "JSystem/JKernel/JKRSolidHeap.h"
|
||||
#include "JSystem/JUtility/JUTAssert.h"
|
||||
#include "SSystem/SComponent/c_m3d.h"
|
||||
#include "d/d_s_play.h"
|
||||
#include "m_Do/m_Do_printf.h"
|
||||
|
||||
/* 8000DA70-8000DCF0 .text mDoExt_setJ3DData__FPA4_fPC16J3DTransformInfoUs */
|
||||
@@ -340,193 +342,362 @@ int mDoExt_brkAnm::init(J3DMaterialTable* i_matTable, J3DAnmTevRegKey* i_brk, in
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 8000EF80-8000EFBC .text entry__13mDoExt_brkAnmFP16J3DMaterialTablef */
|
||||
void mDoExt_brkAnm::entry(J3DMaterialTable*, f32) {
|
||||
/* Nonmatching */
|
||||
void mDoExt_brkAnm::entry(J3DMaterialTable* i_matTable, f32 i_frame) {
|
||||
mpAnm->setFrame(i_frame);
|
||||
i_matTable->setTevRegAnimator(mpAnm, mpCRegAnm, mpKRegAnm);
|
||||
}
|
||||
|
||||
/* 8000EFBC-8000F178 .text init__13mDoExt_bvaAnmFP8J3DModelP20J3DAnmVisibilityFulliifssbi */
|
||||
int mDoExt_bvaAnm::init(J3DModel*, J3DAnmVisibilityFull*, int, int, f32, s16, s16, bool, int) {
|
||||
/* Nonmatching */
|
||||
int mDoExt_bvaAnm::init(J3DModel* i_model, J3DAnmVisibilityFull* i_bva, int i_anmPlay, int i_attribute, f32 i_rate, s16 i_startF, s16 i_endF, bool i_modify, int i_entry) {
|
||||
JUT_ASSERT(1002, i_modify || isCurrentSolidHeap());
|
||||
JUT_ASSERT(1004, i_model != 0 && i_bva != 0);
|
||||
mpAnm = i_bva;
|
||||
if (!i_modify) {
|
||||
field_0xc = new J3DVisibilityManager(mpAnm);
|
||||
if (!field_0xc) {
|
||||
return 0;
|
||||
}
|
||||
if (i_entry) {
|
||||
i_model->setVisibilityManager(field_0xc);
|
||||
}
|
||||
} else {
|
||||
field_0xc->mAnmVisibility = mpAnm;
|
||||
}
|
||||
if (i_anmPlay) {
|
||||
if (initPlay(mpAnm->getFrameMax(), i_attribute, i_rate, i_startF, i_endF, i_modify) == 0) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 8000F178-8000F1B4 .text entry__13mDoExt_bvaAnmFP8J3DModels */
|
||||
void mDoExt_bvaAnm::entry(J3DModel*, s16) {
|
||||
/* Nonmatching */
|
||||
void mDoExt_bvaAnm::entry(J3DModel* i_model, s16 i_frame) {
|
||||
mpAnm->setFrame(i_frame);
|
||||
i_model->setVisibilityManager(field_0xc);
|
||||
}
|
||||
|
||||
/* 8000F1B4-8000F408 .text init__13mDoExt_bckAnmFP12J3DModelDataP15J3DAnmTransformiifssb */
|
||||
int mDoExt_bckAnm::init(J3DModelData*, J3DAnmTransform*, int, int, f32, s16, s16, bool) {
|
||||
int mDoExt_bckAnm::init(J3DModelData* i_modelData, J3DAnmTransform* i_bck, int i_anmPlay, int i_attribute, f32 i_rate, s16 i_startF, s16 i_endF, bool i_modify) {
|
||||
/* Nonmatching */
|
||||
JUT_ASSERT(1065, i_modify || isCurrentSolidHeap());
|
||||
JUT_ASSERT(1067, i_bck != 0);
|
||||
mAnm = i_bck;
|
||||
if (!i_modify) {
|
||||
mpMtxCalc = new J3DMtxCalcMayaAnm(mAnm);
|
||||
if (!mpMtxCalc) {
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
mpMtxCalc->mOne[0] = (u32)mAnm;
|
||||
}
|
||||
if (i_anmPlay) {
|
||||
if (initPlay(mAnm->getFrameMax(), i_attribute, i_rate, i_startF, i_endF, i_modify) == 0) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* 8000F590-8000F610 .text changeBckOnly__13mDoExt_bckAnmFP15J3DAnmTransform */
|
||||
void mDoExt_bckAnm::changeBckOnly(J3DAnmTransform*) {
|
||||
void mDoExt_bckAnm::changeBckOnly(J3DAnmTransform* i_bck) {
|
||||
/* Nonmatching */
|
||||
mAnm = i_bck;
|
||||
JUT_ASSERT(1104, mAnm != 0);
|
||||
mpMtxCalc->mOne[0] = (u32)mAnm;
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 8000F610-8000F638 .text entry__13mDoExt_bckAnmFP12J3DModelDataf */
|
||||
void mDoExt_bckAnm::entry(J3DModelData*, f32) {
|
||||
/* Nonmatching */
|
||||
void mDoExt_bckAnm::entry(J3DModelData* i_modelData, f32 i_frame) {
|
||||
mAnm->setFrame(i_frame);
|
||||
i_modelData->getJointNodePointer(0)->setMtxCalc(mpMtxCalc);
|
||||
}
|
||||
|
||||
/* 8000F638-8000F6A0 .text mDoExt_changeMaterial__FP8J3DModel */
|
||||
void mDoExt_changeMaterial(J3DModel*) {
|
||||
/* Nonmatching */
|
||||
void mDoExt_changeMaterial(J3DModel* i_model) {
|
||||
J3DModelData* model_data = i_model->getModelData();
|
||||
|
||||
for (u16 i = 0; i < model_data->getMaterialNum(); i++) {
|
||||
model_data->getMaterialNodePointer(i)->change();
|
||||
}
|
||||
}
|
||||
|
||||
/* 8000F6A0-8000F758 .text mDoExt_modelTexturePatch__FP12J3DModelData */
|
||||
void mDoExt_modelTexturePatch(J3DModelData*) {
|
||||
/* Nonmatching */
|
||||
void mDoExt_modelTexturePatch(J3DModelData* i_modelData) {
|
||||
j3dSys.setTexture(i_modelData->getTexture());
|
||||
|
||||
for (u16 i = 0; i < i_modelData->getMaterialNum(); i++) {
|
||||
J3DMaterial* mat = i_modelData->getMaterialNodePointer(i);
|
||||
J3DTevBlock* tev = mat->getTevBlock();
|
||||
J3DDisplayListObj* dlObj = mat->getSharedDisplayListObj();
|
||||
|
||||
BOOL ret = OSDisableInterrupts();
|
||||
GDInitGDLObj(&J3DDisplayListObj::sGDLObj, dlObj->getDisplayList(0),
|
||||
dlObj->getDisplayListSize());
|
||||
GDSetCurrent(&J3DDisplayListObj::sGDLObj);
|
||||
tev->patchTexNoAndTexCoordScale();
|
||||
OSRestoreInterrupts(ret);
|
||||
GDSetCurrent(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
/* 8000F758-8000F75C .text patchTexNoAndTexCoordScale__11J3DTevBlockFv */
|
||||
void J3DTevBlock::patchTexNoAndTexCoordScale() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 8000F75C-8000F760 .text patch__10J3DPEBlockFv */
|
||||
void J3DPEBlock::patch() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 8000F760-8000F764 .text patchLight__13J3DColorBlockFv */
|
||||
void J3DColorBlock::patchLight() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 8000F764-8000F768 .text patch__11J3DTevBlockFv */
|
||||
void J3DTevBlock::patch() {
|
||||
/* Nonmatching */
|
||||
static void dummy(J3DTevBlock* tev, J3DColorBlock* color, J3DPEBlock* pe) {
|
||||
tev->patch();
|
||||
color->patchLight();
|
||||
pe->patch();
|
||||
}
|
||||
|
||||
/* 8000F768-8000F7BC .text mDoExt_modelDiff__FP8J3DModel */
|
||||
void mDoExt_modelDiff(J3DModel*) {
|
||||
/* Nonmatching */
|
||||
void mDoExt_modelDiff(J3DModel* i_model) {
|
||||
i_model->calcMaterial();
|
||||
i_model->diff();
|
||||
i_model->entry();
|
||||
}
|
||||
|
||||
/* 8000F7BC-8000F84C .text mDoExt_modelUpdate__FP8J3DModel */
|
||||
void mDoExt_modelUpdate(J3DModel*) {
|
||||
/* Nonmatching */
|
||||
void mDoExt_modelUpdate(J3DModel* i_model) {
|
||||
J3DModelData* model_data = i_model->getModelData();
|
||||
|
||||
if (model_data->getModelDataType() == 1 && !model_data->isLocked()) {
|
||||
i_model->calc();
|
||||
mDoExt_modelDiff(i_model);
|
||||
} else {
|
||||
i_model->update();
|
||||
i_model->lock();
|
||||
}
|
||||
|
||||
i_model->viewCalc();
|
||||
}
|
||||
|
||||
/* 8000F84C-8000F8F8 .text mDoExt_modelUpdateDL__FP8J3DModel */
|
||||
void mDoExt_modelUpdateDL(J3DModel*) {
|
||||
/* Nonmatching */
|
||||
void mDoExt_modelUpdateDL(J3DModel* i_model) {
|
||||
J3DModelData* model_data = i_model->getModelData();
|
||||
|
||||
if (model_data->getModelDataType() == 1 && !model_data->isLocked()) {
|
||||
i_model->calc();
|
||||
mDoExt_modelDiff(i_model);
|
||||
} else {
|
||||
if (g_regHIO.mChild[2].mShortRegs[9] == 0) {
|
||||
i_model->unlock();
|
||||
}
|
||||
i_model->update();
|
||||
i_model->lock();
|
||||
}
|
||||
|
||||
i_model->viewCalc();
|
||||
}
|
||||
|
||||
/* 8000F8F8-8000F974 .text mDoExt_modelEntry__FP8J3DModel */
|
||||
void mDoExt_modelEntry(J3DModel*) {
|
||||
/* Nonmatching */
|
||||
void mDoExt_modelEntry(J3DModel* i_model) {
|
||||
J3DModelData* model_data = i_model->getModelData();
|
||||
|
||||
if (model_data->getModelDataType() == 1 && !model_data->isLocked()) {
|
||||
mDoExt_modelDiff(i_model);
|
||||
} else {
|
||||
i_model->entry();
|
||||
i_model->lock();
|
||||
}
|
||||
|
||||
i_model->viewCalc();
|
||||
}
|
||||
|
||||
/* 8000F974-8000FA0C .text mDoExt_modelEntryDL__FP8J3DModel */
|
||||
void mDoExt_modelEntryDL(J3DModel*) {
|
||||
/* Nonmatching */
|
||||
void mDoExt_modelEntryDL(J3DModel* i_model) {
|
||||
J3DModelData* model_data = i_model->getModelData();
|
||||
|
||||
if (model_data->getModelDataType() == 1 && !model_data->isLocked()) {
|
||||
mDoExt_modelDiff(i_model);
|
||||
} else {
|
||||
if (g_regHIO.mChild[2].mShortRegs[9] == 0) {
|
||||
i_model->unlock();
|
||||
}
|
||||
i_model->entry();
|
||||
i_model->lock();
|
||||
}
|
||||
|
||||
i_model->viewCalc();
|
||||
}
|
||||
|
||||
/* 8000FA0C-800100F0 .text store__23mDoExt_backupMatBlock_cFP11J3DMaterial */
|
||||
void mDoExt_backupMatBlock_c::store(J3DMaterial*) {
|
||||
void mDoExt_backupMatBlock_c::store(J3DMaterial* i_material) {
|
||||
/* Nonmatching */
|
||||
J3DColorBlock* colorBlock = i_material->getColorBlock();
|
||||
mColorChanNum = colorBlock->getColorChanNum();
|
||||
for (u32 i = 0; i < 2; i++) {
|
||||
mMatColor[i] = *colorBlock->getMatColor(i);
|
||||
}
|
||||
for (u32 i = 0; i < 4; i++) {
|
||||
mColorChan[i] = *colorBlock->getColorChan(i);
|
||||
}
|
||||
for (u32 i = 0; i < 2; i++) {
|
||||
mAmbColor[i] = *colorBlock->getAmbColor(i);
|
||||
}
|
||||
J3DTexGenBlock* texGenBlock = i_material->getTexGenBlock();
|
||||
mTexGenNum = texGenBlock->getTexGenNum();
|
||||
u32 texGenMax = 8;
|
||||
if (texGenBlock->getType() == 'TGB4') {
|
||||
texGenMax = 4;
|
||||
};
|
||||
for (u32 i = 0; i < texGenMax; i++) {
|
||||
mTexCoord[i] = *texGenBlock->getTexCoord(i);
|
||||
}
|
||||
for (u32 i = 0; i < texGenMax; i++) {
|
||||
if (texGenBlock->getTexMtx(i)) {
|
||||
memcpy(&mTexMtx[i], texGenBlock->getTexMtx(i), sizeof(J3DTexMtx));
|
||||
DCStoreRange(&mTexMtx[i], sizeof(J3DTexMtx));
|
||||
}
|
||||
}
|
||||
J3DTevBlock* tevBlock = i_material->getTevBlock();
|
||||
mTevStageNum = tevBlock->getTevStageNum();
|
||||
for (u32 i = 0; i < 4; i++) {
|
||||
mTevColor[i] = *tevBlock->getTevColor(i);
|
||||
}
|
||||
for (u32 i = 0; i < 4; i++) {
|
||||
mTevKColor[i] = *tevBlock->getTevKColor(i);
|
||||
}
|
||||
u32 texNoMax = 8;
|
||||
if (tevBlock->getType() == 'TVB4') {
|
||||
texNoMax = 4;
|
||||
for (u32 i = 0; i < 4; i++) {
|
||||
mTevOrder[i] = *tevBlock->getTevOrder(i);
|
||||
mTevKColorSel[i] = tevBlock->getTevKColorSel(i);
|
||||
mTevKAlphaSel[i] = tevBlock->getTevKAlphaSel(i);
|
||||
}
|
||||
for (u32 i = 0; i < 4; i++) {
|
||||
mTevSwapModeTable[i] = *tevBlock->getTevSwapModeTable(i);
|
||||
}
|
||||
}
|
||||
for (u32 i = 0; i < texNoMax; i++) {
|
||||
mTexNo[i] = tevBlock->getTexNo(i);
|
||||
}
|
||||
for (u32 i = 0; i < texNoMax; i++) {
|
||||
mTevStage[i] = *tevBlock->getTevStage(i);
|
||||
mIndTevStage[i] = *tevBlock->getIndTevStage(i);
|
||||
}
|
||||
J3DIndBlock* indBlock = i_material->getIndBlock();
|
||||
if (indBlock->getType() == 'IBLF') {
|
||||
mIndTexStageNum = indBlock->getIndTexStageNum();
|
||||
for (u32 i = 0; i < 4; i++) {
|
||||
mIndTexOrder[i] = *indBlock->getIndTexOrder(i);
|
||||
}
|
||||
for (u32 i = 0; i < 3; i++) {
|
||||
mIndTexMtx[i] = *indBlock->getIndTexMtx(i);
|
||||
}
|
||||
for (u32 i = 0; i < 4; i++) {
|
||||
mIndTexCoordScale[i] = *indBlock->getIndTexCoordScale(i);
|
||||
}
|
||||
}
|
||||
J3DPEBlock* peBlock = i_material->getPEBlock();
|
||||
memcpy(&mFog, peBlock->getFog(), sizeof(J3DFog));
|
||||
DCStoreRange(&mFog, sizeof(J3DFog));
|
||||
mAlphaComp = *peBlock->getAlphaComp();
|
||||
mBlend = *peBlock->getBlend();
|
||||
mZMode = *peBlock->getZMode();
|
||||
mZCompLoc = peBlock->getZCompLoc();
|
||||
mMaterialAnm = i_material->getMaterialAnm();
|
||||
mMaterialMode = i_material->getMaterialMode();
|
||||
}
|
||||
|
||||
/* 800101BC-8001084C .text restore__23mDoExt_backupMatBlock_cFP11J3DMaterial */
|
||||
void mDoExt_backupMatBlock_c::restore(J3DMaterial*) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800108DC-800108E0 .text setIndTexStageNum__11J3DIndBlockFUc */
|
||||
void J3DIndBlock::setIndTexStageNum(u8) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800108E0-800108E4 .text setIndTevStage__11J3DTevBlockFUl14J3DIndTevStage */
|
||||
void J3DTevBlock::setIndTevStage(u32, J3DIndTevStage) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800108E4-800108E8 .text setTevStage__11J3DTevBlockFUl11J3DTevStage */
|
||||
void J3DTevBlock::setTevStage(u32, J3DTevStage) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800108E8-800108EC .text setTexNo__11J3DTevBlockFUlUs */
|
||||
void J3DTevBlock::setTexNo(u32, u16) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800108EC-800108F0 .text setTevSwapModeTable__11J3DTevBlockFUl19J3DTevSwapModeTable */
|
||||
void J3DTevBlock::setTevSwapModeTable(u32, J3DTevSwapModeTable) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800108F0-800108F4 .text setTevKAlphaSel__11J3DTevBlockFUlUc */
|
||||
void J3DTevBlock::setTevKAlphaSel(u32, u8) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800108F4-800108F8 .text setTevKColorSel__11J3DTevBlockFUlUc */
|
||||
void J3DTevBlock::setTevKColorSel(u32, u8) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800108F8-800108FC .text setTevOrder__11J3DTevBlockFUl11J3DTevOrder */
|
||||
void J3DTevBlock::setTevOrder(u32, J3DTevOrder) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800108FC-80010900 .text setTevKColor__11J3DTevBlockFUl10J3DGXColor */
|
||||
void J3DTevBlock::setTevKColor(u32, J3DGXColor) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 80010900-80010904 .text setTevColor__11J3DTevBlockFUl13J3DGXColorS10 */
|
||||
void J3DTevBlock::setTevColor(u32, J3DGXColorS10) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 80010904-80010908 .text setTevStageNum__11J3DTevBlockFUc */
|
||||
void J3DTevBlock::setTevStageNum(u8) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 80010908-8001090C .text setTexCoord__14J3DTexGenBlockFUlPC11J3DTexCoord */
|
||||
void J3DTexGenBlock::setTexCoord(u32, const J3DTexCoord*) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 8001090C-80010910 .text setTexGenNum__14J3DTexGenBlockFUl */
|
||||
void J3DTexGenBlock::setTexGenNum(u32) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 80010910-80010914 .text setAmbColor__13J3DColorBlockFUl10J3DGXColor */
|
||||
void J3DColorBlock::setAmbColor(u32, J3DGXColor) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 80010914-80010918 .text setColorChan__13J3DColorBlockFUlRC12J3DColorChan */
|
||||
void J3DColorBlock::setColorChan(u32, const J3DColorChan&) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 80010918-8001091C .text setMatColor__13J3DColorBlockFUl10J3DGXColor */
|
||||
void J3DColorBlock::setMatColor(u32, J3DGXColor) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 8001091C-80010920 .text setColorChanNum__13J3DColorBlockFUc */
|
||||
void J3DColorBlock::setColorChanNum(u8) {
|
||||
void mDoExt_backupMatBlock_c::restore(J3DMaterial* i_material) {
|
||||
/* Nonmatching */
|
||||
J3DColorBlock* colorBlock = i_material->getColorBlock();
|
||||
colorBlock->setColorChanNum(mColorChanNum);
|
||||
for (u32 i = 0; i < 2; i++) {
|
||||
colorBlock->setMatColor(i, mMatColor[i]);
|
||||
}
|
||||
for (u32 i = 0; i < 4; i++) {
|
||||
colorBlock->setColorChan(i, mColorChan[i]);
|
||||
}
|
||||
for (u32 i = 0; i < 2; i++) {
|
||||
colorBlock->setAmbColor(i, mAmbColor[i]);
|
||||
}
|
||||
J3DTexGenBlock* texGenBlock = i_material->getTexGenBlock();
|
||||
texGenBlock->setTexGenNum(mTexGenNum);
|
||||
u32 texGenMax = 8;
|
||||
if (texGenBlock->getType() == 'TGB4') {
|
||||
texGenMax = 4;
|
||||
};
|
||||
for (u32 i = 0; i < texGenMax; i++) {
|
||||
texGenBlock->setTexCoord(i, &mTexCoord[i]);
|
||||
}
|
||||
for (u32 i = 0; i < texGenMax; i++) {
|
||||
if (texGenBlock->getTexMtx(i)) {
|
||||
memcpy(texGenBlock->getTexMtx(i), &mTexMtx[i], sizeof(J3DTexMtx));
|
||||
DCStoreRange(texGenBlock->getTexMtx(i), sizeof(J3DTexMtx));
|
||||
}
|
||||
}
|
||||
J3DTevBlock* tevBlock = i_material->getTevBlock();
|
||||
tevBlock->setTevStageNum(mTevStageNum);
|
||||
for (u32 i = 0; i < 4; i++) {
|
||||
tevBlock->setTevColor(i, mTevColor[i]);
|
||||
}
|
||||
for (u32 i = 0; i < 4; i++) {
|
||||
tevBlock->setTevKColor(i, mTevKColor[i]);
|
||||
}
|
||||
u32 texNoMax = 8;
|
||||
if (tevBlock->getType() == 'TVB4') {
|
||||
texNoMax = 4;
|
||||
for (u32 i = 0; i < 4; i++) {
|
||||
tevBlock->setTevOrder(i, mTevOrder[i]);
|
||||
tevBlock->setTevKColorSel(i, mTevKColorSel[i]);
|
||||
tevBlock->setTevKAlphaSel(i, mTevKAlphaSel[i]);
|
||||
}
|
||||
for (u32 i = 0; i < 4; i++) {
|
||||
tevBlock->setTevSwapModeTable(i, mTevSwapModeTable[i]);
|
||||
}
|
||||
}
|
||||
for (u32 i = 0; i < texNoMax; i++) {
|
||||
tevBlock->setTexNo(i, mTexNo[i]);
|
||||
}
|
||||
for (u32 i = 0; i < texNoMax; i++) {
|
||||
tevBlock->setTevStage(i, mTevStage[i]);
|
||||
tevBlock->setIndTevStage(i, mIndTevStage[i]);
|
||||
}
|
||||
J3DIndBlock* indBlock = i_material->getIndBlock();
|
||||
if (indBlock->getType() == 'IBLF') {
|
||||
indBlock->setIndTexStageNum(mIndTexStageNum);
|
||||
for (u32 i = 0; i < 4; i++) {
|
||||
*indBlock->getIndTexOrder(i) = mIndTexOrder[i];
|
||||
}
|
||||
for (u32 i = 0; i < 3; i++) {
|
||||
indBlock->setIndTexMtx(i, mIndTexMtx[i]);
|
||||
}
|
||||
for (u32 i = 0; i < 4; i++) {
|
||||
indBlock->setIndTexCoordScale(i, mIndTexCoordScale[i]);
|
||||
}
|
||||
}
|
||||
J3DPEBlock* peBlock = i_material->getPEBlock();
|
||||
memcpy(peBlock->getFog(), &mFog, sizeof(J3DFog));
|
||||
DCStoreRange(peBlock->getFog(), sizeof(J3DFog));
|
||||
peBlock->setAlphaComp(mAlphaComp);
|
||||
peBlock->setBlend(mBlend);
|
||||
peBlock->setZMode(mZMode);
|
||||
peBlock->setZCompLoc(mZCompLoc);
|
||||
i_material->setMaterialAnm(mMaterialAnm);
|
||||
i_material->setMaterialMode(mMaterialMode);
|
||||
}
|
||||
|
||||
/* 80010920-800109F4 .text create__23mDoExt_backupMaterial_cFP12J3DModelData */
|
||||
void mDoExt_backupMaterial_c::create(J3DModelData*) {
|
||||
bool mDoExt_backupMaterial_c::create(J3DModelData* i_modelData) {
|
||||
/* Nonmatching */
|
||||
if (!mBackupMatBlock) {
|
||||
mBackupMatBlock = new mDoExt_backupMatBlock_c[i_modelData->getMaterialNum()];
|
||||
if (!mBackupMatBlock) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
for (u16 i = 0; i < i_modelData->getMaterialNum(); i++) {
|
||||
J3DMaterial* material = i_modelData->getMaterialNodePointer(i);
|
||||
mBackupMatBlock[i].store(material);
|
||||
}
|
||||
mTexture = i_modelData->getTexture();
|
||||
mTextureName = i_modelData->getTextureName();
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 800109F4-80010A88 .text __dt__23mDoExt_backupMatBlock_cFv */
|
||||
@@ -534,84 +705,50 @@ mDoExt_backupMatBlock_c::~mDoExt_backupMatBlock_c() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 80010A88-80010AC4 .text __dt__9J3DTexMtxFv */
|
||||
J3DTexMtx::~J3DTexMtx() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 80010AC4-80010D44 .text __ct__23mDoExt_backupMatBlock_cFv */
|
||||
mDoExt_backupMatBlock_c::mDoExt_backupMatBlock_c() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 80010D44-80010D5C .text __ct__19J3DIndTexCoordScaleFv */
|
||||
J3DIndTexCoordScale::J3DIndTexCoordScale() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 80010D5C-80010DB4 .text __ct__12J3DIndTexMtxFv */
|
||||
J3DIndTexMtx::J3DIndTexMtx() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 80010DB4-80010DCC .text __ct__14J3DIndTexOrderFv */
|
||||
J3DIndTexOrder::J3DIndTexOrder() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 80010DCC-80010DD8 .text __ct__19J3DTevSwapModeTableFv */
|
||||
J3DTevSwapModeTable::J3DTevSwapModeTable() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 80010DD8-80010DF8 .text __ct__11J3DTevOrderFv */
|
||||
J3DTevOrder::J3DTevOrder() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 80010DF8-80010EDC .text __ct__14J3DIndTevStageFv */
|
||||
J3DIndTevStage::J3DIndTevStage() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 80010F44-8001110C .text setTevStageInfo__11J3DTevStageFRC15J3DTevStageInfo */
|
||||
void J3DTevStage::setTevStageInfo(const J3DTevStageInfo&) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800111B4-800111D4 .text __ct__11J3DTexCoordFv */
|
||||
J3DTexCoord::J3DTexCoord() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 800111D4-80011290 .text __ct__12J3DColorChanFv */
|
||||
J3DColorChan::J3DColorChan() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
/* 80011294-80011300 .text create__23mDoExt_backupMaterial_cFUs */
|
||||
void mDoExt_backupMaterial_c::create(u16) {
|
||||
/* Nonmatching */
|
||||
bool mDoExt_backupMaterial_c::create(u16 param_0) {
|
||||
mBackupMatBlock = new mDoExt_backupMatBlock_c[param_0];
|
||||
return mBackupMatBlock != NULL;
|
||||
}
|
||||
|
||||
/* 80011300-80011380 .text restore__23mDoExt_backupMaterial_cFP12J3DModelData */
|
||||
void mDoExt_backupMaterial_c::restore(J3DModelData*) {
|
||||
/* Nonmatching */
|
||||
void mDoExt_backupMaterial_c::restore(J3DModelData* i_modelData) {
|
||||
for (u16 i = 0; i < i_modelData->getMaterialNum(); i++) {
|
||||
J3DMaterial* material = i_modelData->getMaterialNodePointer(i);
|
||||
mBackupMatBlock[i].restore(material);
|
||||
}
|
||||
i_modelData->setTexture(mTexture);
|
||||
i_modelData->setTextureName(mTextureName);
|
||||
}
|
||||
|
||||
/* 80011380-80011434 .text create__21mDoExt_invisibleModelFP8J3DModel */
|
||||
void mDoExt_invisibleModel::create(J3DModel*) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
bool mDoExt_invisibleModel::create(J3DModel* model) {
|
||||
J3DModelData* modelData = model->getModelData();
|
||||
|
||||
/* 80011434-80011490 .text __dt__19mDoExt_invJntPacketFv */
|
||||
mDoExt_invJntPacket::~mDoExt_invJntPacket() {
|
||||
/* Nonmatching */
|
||||
}
|
||||
mpPackets = new mDoExt_invJntPacket[modelData->getJointNum()];
|
||||
if (!mpPackets) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* 80011490-800114BC .text __ct__19mDoExt_invJntPacketFv */
|
||||
mDoExt_invJntPacket::mDoExt_invJntPacket() {
|
||||
/* Nonmatching */
|
||||
mModel = model;
|
||||
mDoExt_invJntPacket* packet = mpPackets;
|
||||
|
||||
for (u16 i = 0; i < modelData->getJointNum(); i++) {
|
||||
packet->setJoint(mModel, i);
|
||||
packet++;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 80011504-800115AC .text entry__21mDoExt_invisibleModelFv */
|
||||
@@ -634,139 +771,224 @@ void mDoExt_invisibleModel::updateDL(mDoExt_McaMorf*) {
|
||||
/* Nonmatching */
|
||||
}
|
||||
|
||||
JKRExpHeap* gameHeap;
|
||||
|
||||
/* 80011734-800117E4 .text mDoExt_createGameHeap__FUlP7JKRHeap */
|
||||
JKRExpHeap* mDoExt_createGameHeap(u32, JKRHeap*) {
|
||||
/* Nonmatching */
|
||||
JKRExpHeap* mDoExt_createGameHeap(u32 heapSize, JKRHeap* i_heap) {
|
||||
JUT_ASSERT(2050, gameHeap == 0 || heapSize == 0);
|
||||
gameHeap = JKRExpHeap::create(heapSize, i_heap, true);
|
||||
gameHeap->setAllocationMode(JKRExpHeap::ALLOC_MODE_1);
|
||||
return gameHeap;
|
||||
}
|
||||
|
||||
/* 800117E4-800117EC .text mDoExt_getGameHeap__Fv */
|
||||
JKRExpHeap* mDoExt_getGameHeap() {
|
||||
/* Nonmatching */
|
||||
return gameHeap;
|
||||
}
|
||||
|
||||
s32 safeGameHeapSize;
|
||||
|
||||
/* 800117EC-80011814 .text mDoExt_setSafeGameHeapSize__Fv */
|
||||
void mDoExt_setSafeGameHeapSize() {
|
||||
/* Nonmatching */
|
||||
safeGameHeapSize = mDoExt_getGameHeap()->getTotalFreeSize();
|
||||
}
|
||||
|
||||
/* 80011814-8001181C .text mDoExt_getSafeGameHeapSize__Fv */
|
||||
int mDoExt_getSafeGameHeapSize() {
|
||||
/* Nonmatching */
|
||||
s32 mDoExt_getSafeGameHeapSize() {
|
||||
return safeGameHeapSize;
|
||||
}
|
||||
|
||||
JKRExpHeap* zeldaHeap;
|
||||
|
||||
/* 8001181C-800118C0 .text mDoExt_createZeldaHeap__FUlP7JKRHeap */
|
||||
JKRExpHeap* mDoExt_createZeldaHeap(u32, JKRHeap*) {
|
||||
/* Nonmatching */
|
||||
JKRExpHeap* mDoExt_createZeldaHeap(u32 heapSize, JKRHeap* i_heap) {
|
||||
JUT_ASSERT(2112, zeldaHeap == 0 || heapSize == 0);
|
||||
return zeldaHeap = JKRExpHeap::create(heapSize, i_heap, true);
|
||||
}
|
||||
|
||||
/* 800118C0-800118C8 .text mDoExt_getZeldaHeap__Fv */
|
||||
JKRExpHeap* mDoExt_getZeldaHeap() {
|
||||
/* Nonmatching */
|
||||
return zeldaHeap;
|
||||
}
|
||||
|
||||
s32 safeZeldaHeapSize;
|
||||
|
||||
/* 800118C8-800118F0 .text mDoExt_setSafeZeldaHeapSize__Fv */
|
||||
int mDoExt_setSafeZeldaHeapSize() {
|
||||
/* Nonmatching */
|
||||
safeZeldaHeapSize = mDoExt_getZeldaHeap()->getTotalFreeSize();
|
||||
}
|
||||
|
||||
/* 800118F0-800118F8 .text mDoExt_getSafeZeldaHeapSize__Fv */
|
||||
int mDoExt_getSafeZeldaHeapSize() {
|
||||
/* Nonmatching */
|
||||
s32 mDoExt_getSafeZeldaHeapSize() {
|
||||
return safeZeldaHeapSize;
|
||||
}
|
||||
|
||||
JKRExpHeap* commandHeap;
|
||||
|
||||
/* 800118F8-8001199C .text mDoExt_createCommandHeap__FUlP7JKRHeap */
|
||||
JKRExpHeap* mDoExt_createCommandHeap(u32, JKRHeap*) {
|
||||
/* Nonmatching */
|
||||
JKRExpHeap* mDoExt_createCommandHeap(u32 heapSize, JKRHeap* i_heap) {
|
||||
JUT_ASSERT(2173, commandHeap == 0 || heapSize == 0);
|
||||
return commandHeap = JKRExpHeap::create(heapSize, i_heap, true);
|
||||
}
|
||||
|
||||
/* 8001199C-800119A4 .text mDoExt_getCommandHeap__Fv */
|
||||
JKRExpHeap* mDoExt_getCommandHeap() {
|
||||
/* Nonmatching */
|
||||
return commandHeap;
|
||||
}
|
||||
|
||||
s32 safeCommandHeapSize;
|
||||
|
||||
/* 800119A4-800119CC .text mDoExt_setSafeCommandHeapSize__Fv */
|
||||
void mDoExt_setSafeCommandHeapSize() {
|
||||
/* Nonmatching */
|
||||
safeCommandHeapSize = mDoExt_getCommandHeap()->getTotalFreeSize();
|
||||
}
|
||||
|
||||
/* 800119CC-800119D4 .text mDoExt_getSafeCommandHeapSize__Fv */
|
||||
int mDoExt_getSafeCommandHeapSize() {
|
||||
/* Nonmatching */
|
||||
s32 mDoExt_getSafeCommandHeapSize() {
|
||||
return safeCommandHeapSize;
|
||||
}
|
||||
|
||||
JKRExpHeap* archiveHeap;
|
||||
|
||||
/* 800119D4-80011A84 .text mDoExt_createArchiveHeap__FUlP7JKRHeap */
|
||||
JKRExpHeap* mDoExt_createArchiveHeap(u32, JKRHeap*) {
|
||||
/* Nonmatching */
|
||||
JKRExpHeap* mDoExt_createArchiveHeap(u32 heapSize, JKRHeap* i_heap) {
|
||||
JUT_ASSERT(2237, archiveHeap == 0 || heapSize == 0);
|
||||
archiveHeap = JKRExpHeap::create(heapSize, i_heap, true);
|
||||
archiveHeap->setAllocationMode(JKRExpHeap::ALLOC_MODE_1);
|
||||
return archiveHeap;
|
||||
}
|
||||
|
||||
s32 safeArchiveHeapSize;
|
||||
|
||||
/* 80011A84-80011AAC .text mDoExt_setSafeArchiveHeapSize__Fv */
|
||||
void mDoExt_setSafeArchiveHeapSize() {
|
||||
/* Nonmatching */
|
||||
safeArchiveHeapSize = mDoExt_getArchiveHeap()->getTotalFreeSize();
|
||||
}
|
||||
|
||||
/* 80011AAC-80011AB4 .text mDoExt_getSafeArchiveHeapSize__Fv */
|
||||
int mDoExt_getSafeArchiveHeapSize() {
|
||||
/* Nonmatching */
|
||||
s32 mDoExt_getSafeArchiveHeapSize() {
|
||||
return safeArchiveHeapSize;
|
||||
}
|
||||
|
||||
/* 80011AB4-80011ABC .text mDoExt_getArchiveHeap__Fv */
|
||||
JKRExpHeap* mDoExt_getArchiveHeap() {
|
||||
/* Nonmatching */
|
||||
return archiveHeap;
|
||||
}
|
||||
|
||||
/* 80011ABC-80011B54 .text mDoExt_createSolidHeap__FUlP7JKRHeapUl */
|
||||
void mDoExt_createSolidHeap(u32, JKRHeap*, u32) {
|
||||
/* Nonmatching */
|
||||
JKRSolidHeap* mDoExt_createSolidHeap(u32 i_size, JKRHeap* i_heap, u32 i_alignment) {
|
||||
if (i_heap == NULL) {
|
||||
i_heap = JKRHeap::getCurrentHeap();
|
||||
}
|
||||
|
||||
JKRSolidHeap* createdHeap;
|
||||
if (i_size == 0 || i_size == 0xFFFFFFFF) {
|
||||
createdHeap = JKRSolidHeap::create(0xFFFFFFFFFF, i_heap, false);
|
||||
} else {
|
||||
i_size = ALIGN_NEXT(i_size, 0x10);
|
||||
i_size += 0x80;
|
||||
|
||||
if (0x10 < i_alignment) {
|
||||
i_size = (i_alignment - 0x10 + i_size);
|
||||
}
|
||||
createdHeap = JKRSolidHeap::create(i_size, i_heap, false);
|
||||
}
|
||||
|
||||
if (createdHeap != NULL) {
|
||||
createdHeap->setErrorFlag(true);
|
||||
}
|
||||
|
||||
return createdHeap;
|
||||
}
|
||||
|
||||
/* 80011B54-80011B9C .text mDoExt_createSolidHeapFromGame__FUlUl */
|
||||
void mDoExt_createSolidHeapFromGame(u32, u32) {
|
||||
/* Nonmatching */
|
||||
JKRSolidHeap* mDoExt_createSolidHeapFromGame(u32 i_size, u32 i_alignment) {
|
||||
return mDoExt_createSolidHeap(i_size, mDoExt_getGameHeap(), i_alignment);
|
||||
}
|
||||
|
||||
/* 80011B9C-80011BE4 .text mDoExt_createSolidHeapFromSystem__FUlUl */
|
||||
void mDoExt_createSolidHeapFromSystem(u32, u32) {
|
||||
/* Nonmatching */
|
||||
JKRSolidHeap* mDoExt_createSolidHeapFromSystem(u32 i_size, u32 i_alignment) {
|
||||
return mDoExt_createSolidHeap(i_size, mDoExt_getZeldaHeap(), i_alignment);
|
||||
}
|
||||
|
||||
static void dummy() {
|
||||
OSReport("situationHeap == 0 || heapSize == 0");
|
||||
OSReport("situationHeapLocked == 0");
|
||||
OSReport("situationHeap");
|
||||
OSReport("situationHeapLocked");
|
||||
OSReport("heap == situationHeap");
|
||||
}
|
||||
|
||||
JKRHeap* mDoExt_SaveCurrentHeap;
|
||||
|
||||
/* 80011BE4-80011CC0 .text mDoExt_createSolidHeapToCurrent__FUlP7JKRHeapUl */
|
||||
JKRSolidHeap* mDoExt_createSolidHeapToCurrent(u32, JKRHeap*, u32) {
|
||||
/* Nonmatching */
|
||||
JKRSolidHeap* mDoExt_createSolidHeapToCurrent(u32 i_size, JKRHeap* i_parent, u32 i_alignment) {
|
||||
JKRSolidHeap* resultHeap = mDoExt_createSolidHeap(i_size, i_parent, i_alignment);
|
||||
if (!resultHeap) {
|
||||
return NULL;
|
||||
}
|
||||
JUT_ASSERT(2545, OSGetCurrentThread() == &mainThread);
|
||||
JUT_ASSERT(2546, mDoExt_SaveCurrentHeap == 0);
|
||||
mDoExt_SaveCurrentHeap = JKRGetCurrentHeap();
|
||||
mDoExt_setCurrentHeap(resultHeap);
|
||||
|
||||
return resultHeap;
|
||||
}
|
||||
|
||||
/* 80011CC0-80011D0C .text mDoExt_createSolidHeapFromGameToCurrent__FUlUl */
|
||||
JKRSolidHeap* mDoExt_createSolidHeapFromGameToCurrent(u32, u32) {
|
||||
/* Nonmatching */
|
||||
JKRSolidHeap* mDoExt_createSolidHeapFromGameToCurrent(u32 i_size, u32 i_alignment) {
|
||||
mDoExt_getGameHeap();
|
||||
return mDoExt_createSolidHeapToCurrent(i_size, mDoExt_getGameHeap(), i_alignment);
|
||||
}
|
||||
|
||||
/* 80011D0C-80011D48 .text mDoExt_adjustSolidHeap__FP12JKRSolidHeap */
|
||||
u32 mDoExt_adjustSolidHeap(JKRSolidHeap*) {
|
||||
/* Nonmatching */
|
||||
u32 mDoExt_adjustSolidHeap(JKRSolidHeap* i_heap) {
|
||||
if (i_heap == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 result = i_heap->adjustSize();
|
||||
|
||||
if (result >= (u32)0x80) {
|
||||
result -= 0x80;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/* 80011D48-80011D68 .text mDoExt_destroySolidHeap__FP12JKRSolidHeap */
|
||||
void mDoExt_destroySolidHeap(JKRSolidHeap*) {
|
||||
/* Nonmatching */
|
||||
void mDoExt_destroySolidHeap(JKRSolidHeap* i_heap) {
|
||||
i_heap->destroy();
|
||||
}
|
||||
|
||||
/* 80011D68-80011DD4 .text mDoExt_setCurrentHeap__FP7JKRHeap */
|
||||
void mDoExt_setCurrentHeap(JKRHeap*) {
|
||||
/* Nonmatching */
|
||||
JKRHeap* mDoExt_setCurrentHeap(JKRHeap* heap) {
|
||||
JUT_ASSERT(2684, heap != 0);
|
||||
return heap->becomeCurrentHeap();
|
||||
}
|
||||
|
||||
/* 80011DD4-80011DDC .text mDoExt_getCurrentHeap__Fv */
|
||||
void mDoExt_getCurrentHeap() {
|
||||
/* Nonmatching */
|
||||
JKRHeap* mDoExt_getCurrentHeap() {
|
||||
return JKRGetCurrentHeap();
|
||||
}
|
||||
|
||||
/* 80011DDC-80011E98 .text mDoExt_restoreCurrentHeap__Fv */
|
||||
void mDoExt_restoreCurrentHeap() {
|
||||
/* Nonmatching */
|
||||
JUT_ASSERT(2754, OSGetCurrentThread() == &mainThread);
|
||||
JUT_ASSERT(2755, mDoExt_SaveCurrentHeap != 0);
|
||||
mDoExt_SaveCurrentHeap->becomeCurrentHeap();
|
||||
mDoExt_SaveCurrentHeap = NULL;
|
||||
}
|
||||
|
||||
/* 80011E98-80011EE4 .text mDoExt_resIDToIndex__FP10JKRArchiveUs */
|
||||
s32 mDoExt_resIDToIndex(JKRArchive*, u16) {
|
||||
/* Nonmatching */
|
||||
s32 mDoExt_resIDToIndex(JKRArchive* p_archive, u16 id) {
|
||||
JKRArchive::SDIFileEntry* res = p_archive->findIdResource(id);
|
||||
|
||||
if (res == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return res - p_archive->mFiles;
|
||||
}
|
||||
|
||||
/* 80011EE4-80012140 .text calc__25mDoExt_MtxCalcAnmBlendTblFUs */
|
||||
|
||||
Reference in New Issue
Block a user