summaryrefslogtreecommitdiff
path: root/src/JSystem/J3DGraphBase/J3DMaterial.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/JSystem/J3DGraphBase/J3DMaterial.cpp')
-rw-r--r--src/JSystem/J3DGraphBase/J3DMaterial.cpp333
1 files changed, 165 insertions, 168 deletions
diff --git a/src/JSystem/J3DGraphBase/J3DMaterial.cpp b/src/JSystem/J3DGraphBase/J3DMaterial.cpp
index c2c7674766..3f21adae5a 100644
--- a/src/JSystem/J3DGraphBase/J3DMaterial.cpp
+++ b/src/JSystem/J3DGraphBase/J3DMaterial.cpp
@@ -1,166 +1,184 @@
-//
-// Generated By: dol2asm
-// Translation Unit: J3DMaterial
-//
-
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/J3DGraphBase/J3DGD.h"
/* 803157A0-803159A0 3100E0 0200+00 0/0 3/3 0/0 .text createColorBlock__11J3DMaterialFUl
*/
-J3DColorBlock* J3DMaterial::createColorBlock(u32 param_0) {
+J3DColorBlock* J3DMaterial::createColorBlock(u32 flags) {
J3DColorBlock* rv = NULL;
- switch (param_0) {
- case 0:
- rv = new J3DColorBlockLightOff();
- break;
- case 0x40000000:
- rv = new J3DColorBlockLightOn();
- break;
- case 0x80000000:
- rv = new J3DColorBlockAmbientOn();
- break;
+ switch (flags) {
+ case 0:
+ rv = new J3DColorBlockLightOff();
+ break;
+ case 0x40000000:
+ rv = new J3DColorBlockLightOn();
+ break;
+ case 0x80000000:
+ rv = new J3DColorBlockAmbientOn();
+ break;
}
+ J3D_ASSERT_ALLOCMEM(55, rv != NULL);
return rv;
}
/* 803159A0-80315B04 3102E0 0164+00 0/0 2/2 0/0 .text createTexGenBlock__11J3DMaterialFUl
*/
-J3DTexGenBlock* J3DMaterial::createTexGenBlock(u32 param_0) {
- switch (param_0) {
- case 0x8000000:
- return new J3DTexGenBlock4();
- case 0:
- default:
- return new J3DTexGenBlockBasic();
+J3DTexGenBlock* J3DMaterial::createTexGenBlock(u32 flags) {
+ J3DTexGenBlock* rv = NULL;
+ switch (flags) {
+ case 0x8000000:
+ rv = new J3DTexGenBlock4();
+ break;
+ case 0:
+ default:
+ rv = new J3DTexGenBlockBasic();
}
+
+ J3D_ASSERT_ALLOCMEM(83, rv != NULL);
+ return rv;
}
/* 80315B04-80315E78 310444 0374+00 0/0 2/2 0/0 .text createTevBlock__11J3DMaterialFi */
-J3DTevBlock* J3DMaterial::createTevBlock(int param_0) {
+J3DTevBlock* J3DMaterial::createTevBlock(int tevStageNum) {
J3DTevBlock* rv = NULL;
- if (param_0 <= 1) {
+ if (tevStageNum <= 1) {
rv = new J3DTevBlock1();
- } else if (param_0 == 2) {
+ } else if (tevStageNum == 2) {
rv = new J3DTevBlock2();
- } else if (param_0 <= 4) {
+ } else if (tevStageNum <= 4) {
rv = new J3DTevBlock4();
- } else if (param_0 <= 16) {
+ } else if (tevStageNum <= 16) {
rv = new J3DTevBlock16();
}
+
+ J3D_ASSERT_ALLOCMEM(116, rv != NULL);
return rv;
}
/* 80315E78-80315F60 3107B8 00E8+00 0/0 3/3 0/0 .text createIndBlock__11J3DMaterialFi */
-J3DIndBlock* J3DMaterial::createIndBlock(int param_0) {
- if (param_0 != 0) {
- return new J3DIndBlockFull();
+J3DIndBlock* J3DMaterial::createIndBlock(int flags) {
+ J3DIndBlock* rv = NULL;
+ if (flags != 0) {
+ rv = new J3DIndBlockFull();
+ } else {
+ rv = new J3DIndBlockNull();
}
- return new J3DIndBlockNull();
+ J3D_ASSERT_ALLOCMEM(139, rv != NULL);
+ return rv;
}
/* 80315F60-80316100 3108A0 01A0+00 0/0 3/3 0/0 .text createPEBlock__11J3DMaterialFUlUl
*/
-J3DPEBlock* J3DMaterial::createPEBlock(u32 createFlag, u32 materialMode) {
+J3DPEBlock* J3DMaterial::createPEBlock(u32 flags, u32 materialMode) {
J3DPEBlock* rv = NULL;
-
- if (createFlag == 0) {
+ if (flags == 0) {
if (materialMode & 1) {
rv = new J3DPEBlockOpa();
+ J3D_ASSERT_ALLOCMEM(166, rv != NULL);
return rv;
} else if (materialMode & 2) {
rv = new J3DPEBlockTexEdge();
+ J3D_ASSERT_ALLOCMEM(172, rv != NULL);
return rv;
} else if (materialMode & 4) {
rv = new J3DPEBlockXlu();
+ J3D_ASSERT_ALLOCMEM(178, rv != NULL);
return rv;
}
}
- if (createFlag == 0x10000000) {
+ if (flags == 0x10000000) {
rv = new J3DPEBlockFull();
- } else if (createFlag == 0x20000000) {
+ } else if (flags == 0x20000000) {
rv = new J3DPEBlockFogOff();
}
+ J3D_ASSERT_ALLOCMEM(188, rv != NULL);
return rv;
}
/* 80316100-80316150 310A40 0050+00 0/0 2/2 0/0 .text calcSizeColorBlock__11J3DMaterialFUl */
-u32 J3DMaterial::calcSizeColorBlock(u32 param_0) {
+u32 J3DMaterial::calcSizeColorBlock(u32 flags) {
u32 rv = 0;
- switch (param_0) {
- case 0:
- rv = sizeof(J3DColorBlockLightOff);
- break;
- case 0x40000000:
- rv = sizeof(J3DColorBlockLightOn);
- break;
- case 0x80000000:
- rv = sizeof(J3DColorBlockAmbientOn);
- break;
+ switch (flags) {
+ case 0:
+ rv += sizeof(J3DColorBlockLightOff);
+ break;
+ case 0x40000000:
+ rv += sizeof(J3DColorBlockLightOn);
+ break;
+ case 0x80000000:
+ rv += sizeof(J3DColorBlockAmbientOn);
+ break;
}
return rv;
}
/* 80316150-8031617C 310A90 002C+00 0/0 1/1 0/0 .text calcSizeTexGenBlock__11J3DMaterialFUl */
-u32 J3DMaterial::calcSizeTexGenBlock(u32 param_0) {
- switch (param_0) {
- case 0x8000000:
- return sizeof(J3DTexGenBlock4);
- case 0:
- default:
- return sizeof(J3DTexGenBlockBasic);
+u32 J3DMaterial::calcSizeTexGenBlock(u32 flags) {
+ u32 rv = 0;
+ switch (flags) {
+ case 0x8000000:
+ rv += sizeof(J3DTexGenBlock4);
+ break;
+ case 0:
+ default:
+ rv += sizeof(J3DTexGenBlockBasic);
}
+
+ return rv;
}
/* 8031617C-803161C4 310ABC 0048+00 0/0 1/1 0/0 .text calcSizeTevBlock__11J3DMaterialFi
*/
-u32 J3DMaterial::calcSizeTevBlock(int param_0) {
+u32 J3DMaterial::calcSizeTevBlock(int tevStageNum) {
u32 rv = 0;
- if (param_0 <= 1) {
- rv = sizeof(J3DTevBlock1);
- } else if (param_0 == 2) {
- rv = sizeof(J3DTevBlock2);
- } else if (param_0 <= 4) {
- rv = sizeof(J3DTevBlock4);
- } else if (param_0 <= 16) {
- rv = sizeof(J3DTevBlock16);
+ if (tevStageNum <= 1) {
+ rv += sizeof(J3DTevBlock1);
+ } else if (tevStageNum == 2) {
+ rv += sizeof(J3DTevBlock2);
+ } else if (tevStageNum <= 4) {
+ rv += sizeof(J3DTevBlock4);
+ } else if (tevStageNum <= 16) {
+ rv += sizeof(J3DTevBlock16);
}
+
return rv;
}
/* 803161C4-803161D8 310B04 0014+00 0/0 2/2 0/0 .text calcSizeIndBlock__11J3DMaterialFi
*/
-u32 J3DMaterial::calcSizeIndBlock(int param_0) {
- if (param_0 != 0) {
- return sizeof(J3DIndBlockFull);
+u32 J3DMaterial::calcSizeIndBlock(int flags) {
+ u32 rv = 0;
+ if (flags != 0) {
+ rv += sizeof(J3DIndBlockFull);
+ } else {
+ rv += sizeof(J3DIndBlockNull);
}
- return sizeof(J3DIndBlockNull);
+ return rv;
}
/* 803161D8-80316240 310B18 0068+00 0/0 2/2 0/0 .text calcSizePEBlock__11J3DMaterialFUlUl
*/
-u32 J3DMaterial::calcSizePEBlock(u32 param_0, u32 param_1) {
+u32 J3DMaterial::calcSizePEBlock(u32 flags, u32 materialMode) {
u32 rv = 0;
- if (param_0 == 0) {
- if (param_1 & 1) {
- rv = sizeof(J3DPEBlockOpa);
- } else if (param_1 & 2) {
- rv = sizeof(J3DPEBlockTexEdge);
- } else if (param_1 & 4) {
- rv = sizeof(J3DPEBlockXlu);
+ if (flags == 0) {
+ if (materialMode & 1) {
+ rv += sizeof(J3DPEBlockOpa);
+ } else if (materialMode & 2) {
+ rv += sizeof(J3DPEBlockTexEdge);
+ } else if (materialMode & 4) {
+ rv += sizeof(J3DPEBlockXlu);
}
+ } else if (flags == 0x10000000) {
+ rv += sizeof(J3DPEBlockFull);
+ } else if (flags == 0x20000000) {
+ rv += sizeof(J3DPEBlockFogOff);
}
- else if (param_0 == 0x10000000) {
- rv = sizeof(J3DPEBlockFull);
- } else if (param_0 == 0x20000000) {
- rv = sizeof(J3DPEBlockFogOff);
- }
+
return rv;
}
@@ -191,8 +209,8 @@ u32 J3DMaterial::countDLSize() {
/* 80316344-80316620 310C84 02DC+00 2/2 0/0 0/0 .text
* makeDisplayList_private__11J3DMaterialFP17J3DDisplayListObj */
-void J3DMaterial::makeDisplayList_private(J3DDisplayListObj* param_0) {
- param_0->beginDL();
+void J3DMaterial::makeDisplayList_private(J3DDisplayListObj* pDLObj) {
+ pDLObj->beginDL();
mTevBlock->load();
mIndBlock->load();
mPEBlock->load();
@@ -201,7 +219,7 @@ void J3DMaterial::makeDisplayList_private(J3DDisplayListObj* param_0) {
mColorBlock->load();
J3DGDSetNumChans(mColorBlock->getColorChanNum());
J3DGDSetNumTexGens(mTexGenBlock->getTexGenNum());
- param_0->endDL();
+ pDLObj->endDL();
}
/* 80316620-80316668 310F60 0048+00 1/0 0/0 0/0 .text makeDisplayList__11J3DMaterialFv */
@@ -245,18 +263,20 @@ void J3DMaterial::patch() {
}
/* 803167D8-803169DC 311118 0204+00 2/0 0/0 0/0 .text diff__11J3DMaterialFUl */
-void J3DMaterial::diff(u32 param_0) {
+void J3DMaterial::diff(u32 diffFlags) {
if (j3dSys.getMatPacket()->isEnabled_Diff()) {
j3dSys.getMatPacket()->beginDiff();
- mTevBlock->diff(param_0);
- mIndBlock->diff(param_0);
- mPEBlock->diff(param_0);
- if (param_0 & 0x2000000) {
+
+ mTevBlock->diff(diffFlags);
+ mIndBlock->diff(diffFlags);
+ mPEBlock->diff(diffFlags);
+ if (diffFlags & J3DDiffFlag_KonstColor) {
J3DGDSetGenMode_3Param(mTexGenBlock->getTexGenNum(), mTevBlock->getTevStageNum(), mIndBlock->getIndTexStageNum());
J3DGDSetNumTexGens(mTexGenBlock->getTexGenNum());
}
- mTexGenBlock->diff(param_0);
- mColorBlock->diff(param_0);
+ mTexGenBlock->diff(diffFlags);
+ mColorBlock->diff(diffFlags);
+
j3dSys.getMatPacket()->endDiff();
}
}
@@ -291,43 +311,44 @@ void J3DMaterial::setCurrentMtx() {
void J3DMaterial::calcCurrentMtx() {
if (!j3dSys.checkFlag(0x40000000)) {
mCurrentMtx.setCurrentTexMtx(
- mTexGenBlock->getTexCoord(0)->getTexGenMtx(),
- mTexGenBlock->getTexCoord(1)->getTexGenMtx(),
- mTexGenBlock->getTexCoord(2)->getTexGenMtx(),
- mTexGenBlock->getTexCoord(3)->getTexGenMtx(),
- mTexGenBlock->getTexCoord(4)->getTexGenMtx(),
- mTexGenBlock->getTexCoord(5)->getTexGenMtx(),
- mTexGenBlock->getTexCoord(6)->getTexGenMtx(),
- mTexGenBlock->getTexCoord(7)->getTexGenMtx()
+ getTexCoord(0)->getTexGenMtx(),
+ getTexCoord(1)->getTexGenMtx(),
+ getTexCoord(2)->getTexGenMtx(),
+ getTexCoord(3)->getTexGenMtx(),
+ getTexCoord(4)->getTexGenMtx(),
+ getTexCoord(5)->getTexGenMtx(),
+ getTexCoord(6)->getTexGenMtx(),
+ getTexCoord(7)->getTexGenMtx()
);
} else {
mCurrentMtx.setCurrentTexMtx(
- mTexGenBlock->getTexCoord(0)->getTexMtxReg(),
- mTexGenBlock->getTexCoord(1)->getTexMtxReg(),
- mTexGenBlock->getTexCoord(2)->getTexMtxReg(),
- mTexGenBlock->getTexCoord(3)->getTexMtxReg(),
- mTexGenBlock->getTexCoord(4)->getTexMtxReg(),
- mTexGenBlock->getTexCoord(5)->getTexMtxReg(),
- mTexGenBlock->getTexCoord(6)->getTexMtxReg(),
- mTexGenBlock->getTexCoord(7)->getTexMtxReg()
+ getTexCoord(0)->getTexMtxReg(),
+ getTexCoord(1)->getTexMtxReg(),
+ getTexCoord(2)->getTexMtxReg(),
+ getTexCoord(3)->getTexMtxReg(),
+ getTexCoord(4)->getTexMtxReg(),
+ getTexCoord(5)->getTexMtxReg(),
+ getTexCoord(6)->getTexMtxReg(),
+ getTexCoord(7)->getTexMtxReg()
);
}
}
/* 80316D68-80316E14 3116A8 00AC+00 1/1 0/0 0/0 .text copy__11J3DMaterialFP11J3DMaterial
*/
-void J3DMaterial::copy(J3DMaterial* param_0) {
- mColorBlock->reset(param_0->mColorBlock);
- mTexGenBlock->reset(param_0->mTexGenBlock);
- mTevBlock->reset(param_0->mTevBlock);
- mIndBlock->reset(param_0->mIndBlock);
- mPEBlock->reset(param_0->mPEBlock);
+void J3DMaterial::copy(J3DMaterial* pOther) {
+ J3D_ASSERT_NULLPTR(620, pOther != NULL);
+ mColorBlock->reset(pOther->mColorBlock);
+ mTexGenBlock->reset(pOther->mTexGenBlock);
+ mTevBlock->reset(pOther->mTevBlock);
+ mIndBlock->reset(pOther->mIndBlock);
+ mPEBlock->reset(pOther->mPEBlock);
}
/* 80316E14-80316E70 311754 005C+00 1/0 0/0 0/0 .text reset__11J3DMaterialFv */
void J3DMaterial::reset() {
- if ((~mDiffFlag & 0x80000000) == 0) {
- mDiffFlag &= ~0x80000000;
+ if ((~mDiffFlag & J3DDiffFlag_Changed) == 0) {
+ mDiffFlag &= ~J3DDiffFlag_Changed;
mMaterialMode = mpOrigMaterial->mMaterialMode;
mInvalid = mpOrigMaterial->mInvalid;
mMaterialAnm = NULL;
@@ -337,47 +358,45 @@ void J3DMaterial::reset() {
/* 80316E70-80316E90 3117B0 0020+00 1/0 0/0 0/0 .text change__11J3DMaterialFv */
void J3DMaterial::change() {
- if ((mDiffFlag & 0xc0000000) == 0) {
- mDiffFlag |= 0x80000000;
+ if ((mDiffFlag & (J3DDiffFlag_Changed | J3DDiffFlag_Unk40000000)) == 0) {
+ mDiffFlag |= J3DDiffFlag_Changed;
mMaterialAnm = NULL;
}
}
/* 80316E90-80316F24 3117D0 0094+00 0/0 2/2 0/0 .text newSharedDisplayList__11J3DMaterialFUl */
-s32 J3DMaterial::newSharedDisplayList(u32 param_0) {
+s32 J3DMaterial::newSharedDisplayList(u32 dlSize) {
if (mSharedDLObj == NULL) {
mSharedDLObj = new J3DDisplayListObj();
if (mSharedDLObj == NULL) {
- return 4;
+ return kJ3DError_Alloc;
}
- s32 res = mSharedDLObj->newDisplayList(param_0);
- switch (res) {
- case kJ3DError_Success:
- break;
- default:
- return res;
+
+ s32 ret = mSharedDLObj->newDisplayList(dlSize);
+ if (ret != kJ3DError_Success) {
+ return ret;
}
}
- return 0;
+
+ return kJ3DError_Success;
}
/* 80316F24-80316FB8 311864 0094+00 0/0 2/2 0/0 .text newSingleSharedDisplayList__11J3DMaterialFUl
*/
-s32 J3DMaterial::newSingleSharedDisplayList(u32 param_0) {
+s32 J3DMaterial::newSingleSharedDisplayList(u32 dlSize) {
if (mSharedDLObj == NULL) {
mSharedDLObj = new J3DDisplayListObj();
if (mSharedDLObj == NULL) {
- return 4;
+ return kJ3DError_Alloc;
}
- s32 res = mSharedDLObj->newSingleDisplayList(param_0);
- switch (res) {
- case kJ3DError_Success:
- break;
- default:
- return res;
+
+ s32 ret = mSharedDLObj->newSingleDisplayList(dlSize);
+ if (ret != kJ3DError_Success) {
+ return ret;
}
}
- return 0;
+
+ return kJ3DError_Success;
}
/* 80316FB8-80316FD8 3118F8 0020+00 0/0 1/1 0/0 .text initialize__18J3DPatchedMaterialFv
@@ -387,15 +406,11 @@ void J3DPatchedMaterial::initialize() {
}
/* 80316FD8-80316FDC 311918 0004+00 1/0 0/0 0/0 .text makeDisplayList__18J3DPatchedMaterialFv */
-void J3DPatchedMaterial::makeDisplayList() {
- /* empty function */
-}
+void J3DPatchedMaterial::makeDisplayList() {}
/* 80316FDC-80316FE0 31191C 0004+00 1/0 0/0 0/0 .text
* makeSharedDisplayList__18J3DPatchedMaterialFv */
-void J3DPatchedMaterial::makeSharedDisplayList() {
- /* empty function */
-}
+void J3DPatchedMaterial::makeSharedDisplayList() {}
/* 80316FE0-80316FFC 311920 001C+00 1/0 0/0 0/0 .text load__18J3DPatchedMaterialFv */
void J3DPatchedMaterial::load() {
@@ -413,14 +428,10 @@ void J3DPatchedMaterial::loadSharedDL() {
}
/* 8031703C-80317040 31197C 0004+00 1/0 0/0 0/0 .text reset__18J3DPatchedMaterialFv */
-void J3DPatchedMaterial::reset() {
- /* empty function */
-}
+void J3DPatchedMaterial::reset() {}
/* 80317040-80317044 311980 0004+00 1/0 0/0 0/0 .text change__18J3DPatchedMaterialFv */
-void J3DPatchedMaterial::change() {
- /* empty function */
-}
+void J3DPatchedMaterial::change() {}
/* 80317044-80317064 311984 0020+00 0/0 1/1 0/0 .text initialize__17J3DLockedMaterialFv
*/
@@ -429,15 +440,11 @@ void J3DLockedMaterial::initialize() {
}
/* 80317064-80317068 3119A4 0004+00 1/0 0/0 0/0 .text makeDisplayList__17J3DLockedMaterialFv */
-void J3DLockedMaterial::makeDisplayList() {
- /* empty function */
-}
+void J3DLockedMaterial::makeDisplayList() {}
/* 80317068-8031706C 3119A8 0004+00 1/0 0/0 0/0 .text makeSharedDisplayList__17J3DLockedMaterialFv
*/
-void J3DLockedMaterial::makeSharedDisplayList() {
- /* empty function */
-}
+void J3DLockedMaterial::makeSharedDisplayList() {}
/* 8031706C-80317088 3119AC 001C+00 1/0 0/0 0/0 .text load__17J3DLockedMaterialFv */
void J3DLockedMaterial::load() {
@@ -456,26 +463,16 @@ void J3DLockedMaterial::loadSharedDL() {
}
/* 803170C8-803170CC 311A08 0004+00 1/0 0/0 0/0 .text patch__17J3DLockedMaterialFv */
-void J3DLockedMaterial::patch() {
- /* empty function */
-}
+void J3DLockedMaterial::patch() {}
/* 803170CC-803170D0 311A0C 0004+00 1/0 0/0 0/0 .text diff__17J3DLockedMaterialFUl */
-void J3DLockedMaterial::diff(u32 param_0) {
- /* empty function */
-}
+void J3DLockedMaterial::diff(u32 diffFlags) {}
/* 803170D0-803170D4 311A10 0004+00 1/0 0/0 0/0 .text calc__17J3DLockedMaterialFPA4_Cf */
-void J3DLockedMaterial::calc(const Mtx param_0) {
- /* empty function */
-}
+void J3DLockedMaterial::calc(const Mtx param_0) {}
/* 803170D4-803170D8 311A14 0004+00 1/0 0/0 0/0 .text reset__17J3DLockedMaterialFv */
-void J3DLockedMaterial::reset() {
- /* empty function */
-}
+void J3DLockedMaterial::reset() {}
/* 803170D8-803170DC 311A18 0004+00 1/0 0/0 0/0 .text change__17J3DLockedMaterialFv */
-void J3DLockedMaterial::change() {
- /* empty function */
-}
+void J3DLockedMaterial::change() {}