// // 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* rv = NULL; switch (param_0) { case 0: rv = new J3DColorBlockLightOff(); break; case 0x40000000: rv = new J3DColorBlockLightOn(); break; case 0x80000000: rv = new J3DColorBlockAmbientOn(); break; } 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(); } } /* 80315B04-80315E78 310444 0374+00 0/0 2/2 0/0 .text createTevBlock__11J3DMaterialFi */ J3DTevBlock* J3DMaterial::createTevBlock(int param_0) { J3DTevBlock* rv = NULL; if (param_0 <= 1) { rv = new J3DTevBlock1(); } else if (param_0 == 2) { rv = new J3DTevBlock2(); } else if (param_0 <= 4) { rv = new J3DTevBlock4(); } else if (param_0 <= 16) { rv = new J3DTevBlock16(); } 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(); } return new J3DIndBlockNull(); } /* 80315F60-80316100 3108A0 01A0+00 0/0 3/3 0/0 .text createPEBlock__11J3DMaterialFUlUl */ J3DPEBlock* J3DMaterial::createPEBlock(u32 createFlag, u32 materialMode) { J3DPEBlock* rv = NULL; if (createFlag == 0) { if (materialMode & 1) { rv = new J3DPEBlockOpa(); return rv; } else if (materialMode & 2) { rv = new J3DPEBlockTexEdge(); return rv; } else if (materialMode & 4) { rv = new J3DPEBlockXlu(); return rv; } } if (createFlag == 0x10000000) { rv = new J3DPEBlockFull(); } else if (createFlag == 0x20000000) { rv = new J3DPEBlockFogOff(); } return rv; } /* 80316100-80316150 310A40 0050+00 0/0 2/2 0/0 .text calcSizeColorBlock__11J3DMaterialFUl */ u32 J3DMaterial::calcSizeColorBlock(u32 param_0) { u32 rv = 0; switch (param_0) { 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); } } /* 8031617C-803161C4 310ABC 0048+00 0/0 1/1 0/0 .text calcSizeTevBlock__11J3DMaterialFi */ u32 J3DMaterial::calcSizeTevBlock(int param_0) { 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); } 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); } return sizeof(J3DIndBlockNull); } /* 803161D8-80316240 310B18 0068+00 0/0 2/2 0/0 .text calcSizePEBlock__11J3DMaterialFUlUl */ u32 J3DMaterial::calcSizePEBlock(u32 param_0, u32 param_1) { 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); } } else if (param_0 == 0x10000000) { rv = sizeof(J3DPEBlockFull); } else if (param_0 == 0x20000000) { rv = sizeof(J3DPEBlockFogOff); } return rv; } /* 80316240-80316290 310B80 0050+00 2/2 5/5 0/0 .text initialize__11J3DMaterialFv */ void J3DMaterial::initialize() { mShape = NULL; mNext = NULL; mJoint = NULL; mMaterialMode = 1; mIndex = -1; mInvalid = 0; mDiffFlag = 0; mColorBlock = NULL; mTexGenBlock = NULL; mTevBlock = NULL; mIndBlock = NULL; mPEBlock = NULL; mpOrigMaterial = NULL; mMaterialAnm = NULL; mSharedDLObj = NULL; } /* 80316290-80316344 310BD0 00B4+00 0/0 2/2 0/0 .text countDLSize__11J3DMaterialFv */ u32 J3DMaterial::countDLSize() { return (mColorBlock->countDLSize() + mTexGenBlock->countDLSize() + mTevBlock->countDLSize() + mIndBlock->countDLSize() + mPEBlock->countDLSize() + 31) & ~0x1f; } /* 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(); mTevBlock->load(); mIndBlock->load(); mPEBlock->load(); J3DGDSetGenMode(mTexGenBlock->getTexGenNum(), mColorBlock->getColorChanNum(), mTevBlock->getTevStageNum(), mIndBlock->getIndTexStageNum(), (GXCullMode)(u8)mColorBlock->getCullMode()); mTexGenBlock->load(); mColorBlock->load(); J3DGDSetNumChans(mColorBlock->getColorChanNum()); J3DGDSetNumTexGens(mTexGenBlock->getTexGenNum()); param_0->endDL(); } /* 80316620-80316668 310F60 0048+00 1/0 0/0 0/0 .text makeDisplayList__11J3DMaterialFv */ void J3DMaterial::makeDisplayList() { if (!j3dSys.getMatPacket()->isLocked()) { j3dSys.getMatPacket()->mDiffFlag = mDiffFlag; makeDisplayList_private(j3dSys.getMatPacket()->getDisplayListObj()); } } /* 80316668-8031668C 310FA8 0024+00 1/0 0/0 0/0 .text makeSharedDisplayList__11J3DMaterialFv */ void J3DMaterial::makeSharedDisplayList() { makeDisplayList_private(mSharedDLObj); } /* 8031668C-803166DC 310FCC 0050+00 1/0 0/0 0/0 .text load__11J3DMaterialFv */ void J3DMaterial::load() { j3dSys.setMaterialMode(mMaterialMode); if (!j3dSys.checkFlag(2)) { loadNBTScale(*mTexGenBlock->getNBTScale()); } } /* 803166DC-80316740 31101C 0064+00 1/0 0/0 0/0 .text loadSharedDL__11J3DMaterialFv */ void J3DMaterial::loadSharedDL() { j3dSys.setMaterialMode(mMaterialMode); if (!j3dSys.checkFlag(2)) { mSharedDLObj->callDL(); loadNBTScale(*mTexGenBlock->getNBTScale()); } } /* 80316740-803167D8 311080 0098+00 2/0 0/0 0/0 .text patch__11J3DMaterialFv */ void J3DMaterial::patch() { j3dSys.getMatPacket()->mDiffFlag = mDiffFlag; j3dSys.getMatPacket()->beginPatch(); mTevBlock->patch(); mColorBlock->patch(); mTexGenBlock->patch(); j3dSys.getMatPacket()->endPatch(); } /* 803167D8-803169DC 311118 0204+00 2/0 0/0 0/0 .text diff__11J3DMaterialFUl */ void J3DMaterial::diff(u32 param_0) { if (j3dSys.getMatPacket()->isEnabled_Diff()) { j3dSys.getMatPacket()->beginDiff(); mTevBlock->diff(param_0); mIndBlock->diff(param_0); mPEBlock->diff(param_0); if (param_0 & 0x2000000) { J3DGDSetGenMode_3Param(mTexGenBlock->getTexGenNum(), mTevBlock->getTevStageNum(), mIndBlock->getIndTexStageNum()); J3DGDSetNumTexGens(mTexGenBlock->getTexGenNum()); } mTexGenBlock->diff(param_0); mColorBlock->diff(param_0); j3dSys.getMatPacket()->endDiff(); } } /* 803169DC-80316A54 31131C 0078+00 2/0 0/0 0/0 .text calc__11J3DMaterialFPA4_Cf */ void J3DMaterial::calc(f32 const (*param_0)[4]) { if (j3dSys.checkFlag(0x40000000)) { mTexGenBlock->calcPostTexMtx(param_0); } else { mTexGenBlock->calc(param_0); } calcCurrentMtx(); setCurrentMtx(); } /* 80316A54-80316AB0 311394 005C+00 3/0 0/0 0/0 .text calcDiffTexMtx__11J3DMaterialFPA4_Cf */ void J3DMaterial::calcDiffTexMtx(f32 const (*param_0)[4]) { if (j3dSys.checkFlag(0x40000000)) { mTexGenBlock->calcPostTexMtxWithoutViewMtx(param_0); } else { mTexGenBlock->calcWithoutViewMtx(param_0); } } /* 80316AB0-80316AC8 3113F0 0018+00 1/1 1/1 0/0 .text setCurrentMtx__11J3DMaterialFv */ void J3DMaterial::setCurrentMtx() { mShape->setCurrentMtx(mCurrentMtx); } /* 80316AC8-80316D68 311408 02A0+00 1/1 0/0 0/0 .text calcCurrentMtx__11J3DMaterialFv */ 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() ); } 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() ); } } /* 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); } /* 80316E14-80316E70 311754 005C+00 1/0 0/0 0/0 .text reset__11J3DMaterialFv */ void J3DMaterial::reset() { if ((~mDiffFlag & 0x80000000) == 0) { mDiffFlag &= ~0x80000000; mMaterialMode = mpOrigMaterial->mMaterialMode; mInvalid = mpOrigMaterial->mInvalid; mMaterialAnm = NULL; copy(mpOrigMaterial); } } /* 80316E70-80316E90 3117B0 0020+00 1/0 0/0 0/0 .text change__11J3DMaterialFv */ void J3DMaterial::change() { if ((mDiffFlag & 0xc0000000) == 0) { mDiffFlag |= 0x80000000; mMaterialAnm = NULL; } } /* 80316E90-80316F24 3117D0 0094+00 0/0 2/2 0/0 .text newSharedDisplayList__11J3DMaterialFUl */ s32 J3DMaterial::newSharedDisplayList(u32 param_0) { if (mSharedDLObj == NULL) { mSharedDLObj = new J3DDisplayListObj(); if (mSharedDLObj == NULL) { return 4; } s32 res = mSharedDLObj->newDisplayList(param_0); switch (res) { case kJ3DError_Success: break; default: return res; } } return 0; } /* 80316F24-80316FB8 311864 0094+00 0/0 2/2 0/0 .text newSingleSharedDisplayList__11J3DMaterialFUl */ s32 J3DMaterial::newSingleSharedDisplayList(u32 param_0) { if (mSharedDLObj == NULL) { mSharedDLObj = new J3DDisplayListObj(); if (mSharedDLObj == NULL) { return 4; } s32 res = mSharedDLObj->newSingleDisplayList(param_0); switch (res) { case kJ3DError_Success: break; default: return res; } } return 0; } /* 80316FB8-80316FD8 3118F8 0020+00 0/0 1/1 0/0 .text initialize__18J3DPatchedMaterialFv */ void J3DPatchedMaterial::initialize() { J3DMaterial::initialize(); } /* 80316FD8-80316FDC 311918 0004+00 1/0 0/0 0/0 .text makeDisplayList__18J3DPatchedMaterialFv */ void J3DPatchedMaterial::makeDisplayList() { /* empty function */ } /* 80316FDC-80316FE0 31191C 0004+00 1/0 0/0 0/0 .text * makeSharedDisplayList__18J3DPatchedMaterialFv */ void J3DPatchedMaterial::makeSharedDisplayList() { /* empty function */ } /* 80316FE0-80316FFC 311920 001C+00 1/0 0/0 0/0 .text load__18J3DPatchedMaterialFv */ void J3DPatchedMaterial::load() { j3dSys.setMaterialMode(mMaterialMode); if (j3dSys.checkFlag(2)) { return; } } /* 80316FFC-8031703C 31193C 0040+00 1/0 0/0 0/0 .text loadSharedDL__18J3DPatchedMaterialFv */ void J3DPatchedMaterial::loadSharedDL() { j3dSys.setMaterialMode(mMaterialMode); if (!j3dSys.checkFlag(0x02)) mSharedDLObj->callDL(); } /* 8031703C-80317040 31197C 0004+00 1/0 0/0 0/0 .text reset__18J3DPatchedMaterialFv */ void J3DPatchedMaterial::reset() { /* empty function */ } /* 80317040-80317044 311980 0004+00 1/0 0/0 0/0 .text change__18J3DPatchedMaterialFv */ void J3DPatchedMaterial::change() { /* empty function */ } /* 80317044-80317064 311984 0020+00 0/0 1/1 0/0 .text initialize__17J3DLockedMaterialFv */ void J3DLockedMaterial::initialize() { J3DMaterial::initialize(); } /* 80317064-80317068 3119A4 0004+00 1/0 0/0 0/0 .text makeDisplayList__17J3DLockedMaterialFv */ void J3DLockedMaterial::makeDisplayList() { /* empty function */ } /* 80317068-8031706C 3119A8 0004+00 1/0 0/0 0/0 .text makeSharedDisplayList__17J3DLockedMaterialFv */ void J3DLockedMaterial::makeSharedDisplayList() { /* empty function */ } /* 8031706C-80317088 3119AC 001C+00 1/0 0/0 0/0 .text load__17J3DLockedMaterialFv */ void J3DLockedMaterial::load() { j3dSys.setMaterialMode(mMaterialMode); if (j3dSys.checkFlag(2)) { return; } } /* 80317088-803170C8 3119C8 0040+00 1/0 0/0 0/0 .text loadSharedDL__17J3DLockedMaterialFv */ void J3DLockedMaterial::loadSharedDL() { j3dSys.setMaterialMode(mMaterialMode); if (!j3dSys.checkFlag(0x02)) mSharedDLObj->callDL(); } /* 803170C8-803170CC 311A08 0004+00 1/0 0/0 0/0 .text patch__17J3DLockedMaterialFv */ void J3DLockedMaterial::patch() { /* empty function */ } /* 803170CC-803170D0 311A0C 0004+00 1/0 0/0 0/0 .text diff__17J3DLockedMaterialFUl */ void J3DLockedMaterial::diff(u32 param_0) { /* empty function */ } /* 803170D0-803170D4 311A10 0004+00 1/0 0/0 0/0 .text calc__17J3DLockedMaterialFPA4_Cf */ void J3DLockedMaterial::calc(const Mtx param_0) { /* empty function */ } /* 803170D4-803170D8 311A14 0004+00 1/0 0/0 0/0 .text reset__17J3DLockedMaterialFv */ void J3DLockedMaterial::reset() { /* empty function */ } /* 803170D8-803170DC 311A18 0004+00 1/0 0/0 0/0 .text change__17J3DLockedMaterialFv */ void J3DLockedMaterial::change() { /* empty function */ }