more simple J2D/J3D funcs (#166)

* more simple J2D/J3D funcs

* JPABaseShape constructor

* fmt

Co-authored-by: lepelog <25211966+lepelog@users.noreply.github.com>
This commit is contained in:
Jasper St. Pierre
2021-12-06 12:51:53 +01:00
committed by GitHub
co-authored by lepelog
parent f7916ebde1
commit c15d8fcb3e
168 changed files with 1976 additions and 4562 deletions
+3 -7
View File
@@ -191,14 +191,10 @@ asm void J2DGrafContext::setColor(JUtility::TColor param_0, JUtility::TColor par
/* 802E9234-802E9260 2E3B74 002C+00 1/1 2/2 0/0 .text setLineWidth__14J2DGrafContextFUc
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J2DGrafContext::setLineWidth(u8 param_0) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DGrafContext/setLineWidth__14J2DGrafContextFUc.s"
void J2DGrafContext::setLineWidth(u8 param_0) {
mLineWidth = param_0;
GXSetLineWidth(mLineWidth, GX_TO_ZERO);
}
#pragma pop
/* 802E9260-802E9368 2E3BA0 0108+00 0/0 2/2 0/0 .text
* fillBox__14J2DGrafContextFRCQ29JGeometry8TBox2<f> */
+25 -63
View File
@@ -5,6 +5,7 @@
#include "JSystem/J2DGraph/J2DTevs.h"
#include "dol2asm.h"
#include "dolphin/gx/GX.h"
#include "dolphin/types.h"
//
@@ -19,8 +20,8 @@ struct J2DTevBlock {
/* 802EA14C */ bool getTevKAlphaSel(u32);
/* 802EA154 */ bool getTevKColorSel(u32);
/* 802EA15C */ bool getTevKColor(u32);
/* 802EA164 */ void getFontNo() const;
/* 802EA170 */ void getTexNo(u32) const;
/* 802EA164 */ u32 getFontNo() const;
/* 802EA170 */ u32 getTexNo(u32) const;
/* 802EA17C */ bool getTevStageNum() const;
/* 802EA184 */ bool getIndTevStage(u32);
};
@@ -82,11 +83,6 @@ extern "C" extern u16 j2dDefaultAlphaCmp;
// External References:
//
extern "C" void GXSetTevIndirect();
extern "C" void GXSetIndTexMtx();
extern "C" void GXSetIndTexCoordScale();
extern "C" void GXSetIndTexOrder();
extern "C" void GXLoadTexMtxImm();
extern "C" void _savegpr_29();
extern "C" void _restgpr_29();
extern "C" void cos();
@@ -97,24 +93,18 @@ extern "C" void sin();
//
/* 802E9C90-802E9CC4 2E45D0 0034+00 0/0 1/1 0/0 .text load__9J2DTexMtxFUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J2DTexMtx::load(u32 param_0) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DTevs/load__9J2DTexMtxFUl.s"
void J2DTexMtx::load(u32 mtxIdx) {
GXLoadTexMtxImm(mTexMtx, mtxIdx * 3 + GX_TEXMTX0, mInfo.getTexMtxType());
}
#pragma pop
/* 802E9CC4-802E9D2C 2E4604 0068+00 0/0 2/2 0/0 .text calc__9J2DTexMtxFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J2DTexMtx::calc() {
nofralloc
#include "asm/JSystem/J2DGraph/J2DTevs/calc__9J2DTexMtxFv.s"
void J2DTexMtx::calc() {
if (mInfo.mTexMtxDCC == J2DTexMtxInfo::DCC_NONE) {
getTextureMtx(mInfo.mTexSRTInfo, mInfo.mCenter, mTexMtx);
} else if (mInfo.mTexMtxDCC == J2DTexMtxInfo::DCC_MAYA) {
getTextureMtxMaya(mInfo.mTexSRTInfo, mTexMtx);
}
}
#pragma pop
/* ############################################################################################## */
/* 80456168-8045616C 004768 0004+00 2/2 0/0 0/0 .sdata2 @1488 */
@@ -162,44 +152,26 @@ asm void J2DTexMtx::getTextureMtxMaya(J2DTextureSRTInfo const& param_0, f32 (*pa
#pragma pop
/* 802EA044-802EA098 2E4984 0054+00 0/0 5/5 0/0 .text load__14J2DIndTevStageFUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J2DIndTevStage::load(u8 param_0) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DTevs/load__14J2DIndTevStageFUc.s"
void J2DIndTevStage::load(u8 tevStage) {
GXSetTevIndirect((GXTevStageID)tevStage, getIndStage(), getIndFormat(), getBiasSel(),
getMtxSel(), getWrapS(), getWrapT(), getPrev(), getLod(), getAlphaSel());
}
#pragma pop
/* 802EA098-802EA0CC 2E49D8 0034+00 0/0 1/1 0/0 .text load__12J2DIndTexMtxFUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J2DIndTexMtx::load(u8 param_0) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DTevs/load__12J2DIndTexMtxFUc.s"
void J2DIndTexMtx::load(u8 indTexMtx) {
GXSetIndTexMtx((GXIndTexMtxID)(GX_ITM_0 + indTexMtx), mIndTexMtxInfo.mMtx,
mIndTexMtxInfo.mScaleExp);
}
#pragma pop
/* 802EA0CC-802EA0FC 2E4A0C 0030+00 0/0 1/1 0/0 .text load__19J2DIndTexCoordScaleFUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J2DIndTexCoordScale::load(u8 param_0) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DTevs/load__19J2DIndTexCoordScaleFUc.s"
void J2DIndTexCoordScale::load(u8 indTexStage) {
GXSetIndTexCoordScale((GXIndTexStageID)indTexStage, mInfo.getScaleS(), mInfo.getScaleT());
}
#pragma pop
/* 802EA0FC-802EA12C 2E4A3C 0030+00 0/0 1/1 0/0 .text load__14J2DIndTexOrderFUc */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J2DIndTexOrder::load(u8 param_0) {
nofralloc
#include "asm/JSystem/J2DGraph/J2DTevs/load__14J2DIndTexOrderFUc.s"
void J2DIndTexOrder::load(u8 indTexStage) {
GXSetIndTexOrder((GXIndTexStageID)indTexStage, mInfo.getTexCoordID(), mInfo.getTexMapID());
}
#pragma pop
/* 802EA12C-802EA134 2E4A6C 0008+00 0/0 1/0 0/0 .text getTevSwapModeTable__11J2DTevBlockFUl */
bool J2DTevBlock::getTevSwapModeTable(u32 param_0) {
@@ -239,24 +211,14 @@ bool J2DTevBlock::getTevKColor(u32 param_0) {
}
/* 802EA164-802EA170 2E4AA4 000C+00 0/0 1/0 0/0 .text getFontNo__11J2DTevBlockCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J2DTevBlock::getFontNo() const {
nofralloc
#include "asm/JSystem/J2DGraph/J2DTevs/getFontNo__11J2DTevBlockCFv.s"
u32 J2DTevBlock::getFontNo() const {
return 0xFFFF;
}
#pragma pop
/* 802EA170-802EA17C 2E4AB0 000C+00 0/0 1/0 0/0 .text getTexNo__11J2DTevBlockCFUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J2DTevBlock::getTexNo(u32 param_0) const {
nofralloc
#include "asm/JSystem/J2DGraph/J2DTevs/getTexNo__11J2DTevBlockCFUl.s"
u32 J2DTevBlock::getTexNo(u32 param_0) const {
return 0xFFFF;
}
#pragma pop
/* 802EA17C-802EA184 2E4ABC 0008+00 0/0 1/0 0/0 .text getTevStageNum__11J2DTevBlockCFv */
bool J2DTevBlock::getTevStageNum() const {
+20 -20
View File
@@ -58,19 +58,19 @@ extern "C" u8 entryNum__13J3DDrawBuffer[4 + 4 /* padding */];
/* 8032EC28-8032ECAC 329568 0084+00 0/0 1/1 0/0 .text
* init__25J3DMtxCalcJ3DSysInitBasicFRC3VecRA3_A4_Cf */
void J3DMtxCalcJ3DSysInitBasic::init(Vec const& param_0, Mtx const& param_1) {
J3DSys::mCurrentS = param_0;
void J3DMtxCalcJ3DSysInitBasic::init(Vec const& scale, Mtx const& mtx) {
J3DSys::mCurrentS = scale;
J3DSys::mParentS = (Vec){1.0f, 1.0f, 1.0f};
JMAMTXApplyScale(param_1, J3DSys::mCurrentMtx, J3DSys::mCurrentS.x, J3DSys::mCurrentS.y,
JMAMTXApplyScale(mtx, J3DSys::mCurrentMtx, J3DSys::mCurrentS.x, J3DSys::mCurrentS.y,
J3DSys::mCurrentS.z);
}
/* 8032ECAC-8032ED30 3295EC 0084+00 0/0 2/2 2/2 .text
* init__24J3DMtxCalcJ3DSysInitMayaFRC3VecRA3_A4_Cf */
void J3DMtxCalcJ3DSysInitMaya::init(Vec const& param_0, Mtx const& param_1) {
void J3DMtxCalcJ3DSysInitMaya::init(Vec const& scale, Mtx const& mtx) {
J3DSys::mParentS = (Vec){1.0f, 1.0f, 1.0f};
J3DSys::mCurrentS = param_0;
JMAMTXApplyScale(param_1, J3DSys::mCurrentMtx, J3DSys::mCurrentS.x, J3DSys::mCurrentS.y,
J3DSys::mCurrentS = scale;
JMAMTXApplyScale(mtx, J3DSys::mCurrentMtx, J3DSys::mCurrentS.x, J3DSys::mCurrentS.y,
J3DSys::mCurrentS.z);
}
@@ -166,19 +166,19 @@ void J3DMtxCalcCalcTransformMaya::calcTransform(J3DTransformInfo const& transInf
}
if (joint->getScaleCompensate() == 1) {
f32 tmp1 = JMath::fastReciprocal(J3DSys::mParentS.x);
f32 tmp2 = JMath::fastReciprocal(J3DSys::mParentS.y);
f32 tmp3 = JMath::fastReciprocal(J3DSys::mParentS.z);
f32 invX = JMath::fastReciprocal(J3DSys::mParentS.x);
f32 invY = JMath::fastReciprocal(J3DSys::mParentS.y);
f32 invZ = JMath::fastReciprocal(J3DSys::mParentS.z);
anmMtx[0][0] *= tmp1;
anmMtx[0][1] *= tmp1;
anmMtx[0][2] *= tmp1;
anmMtx[1][0] *= tmp2;
anmMtx[1][1] *= tmp2;
anmMtx[1][2] *= tmp2;
anmMtx[2][0] *= tmp3;
anmMtx[2][1] *= tmp3;
anmMtx[2][2] *= tmp3;
anmMtx[0][0] *= invX;
anmMtx[0][1] *= invX;
anmMtx[0][2] *= invX;
anmMtx[1][0] *= invY;
anmMtx[1][1] *= invY;
anmMtx[1][2] *= invY;
anmMtx[2][0] *= invZ;
anmMtx[2][1] *= invZ;
anmMtx[2][2] *= invZ;
}
PSMTXConcat(J3DSys::mCurrentMtx, anmMtx, J3DSys::mCurrentMtx);
@@ -227,7 +227,7 @@ SECTION_SDATA2 static u8 lit_1220[4] = {
/* 8032F170-8032F254 329AB0 00E4+00 0/0 1/1 0/0 .text __ct__8J3DJointFv */
#ifdef NONMATCHING
J3DJoint::J3DJoint() {
field_0x0 = NULL;
mCallBackUserData = NULL;
mCallBack = NULL;
field_0x8 = NULL;
mChild = NULL;
@@ -236,7 +236,7 @@ J3DJoint::J3DJoint() {
mMtxType = 1;
mScaleCompensate = false;
mTransformInfo = j3dDefaultTransformInfo;
field_0x38 = 0.0f;
mBoundingSphereRadius = 0.0f;
mMtxCalc = NULL;
mMesh = NULL;
+18 -40
View File
@@ -99,25 +99,12 @@ SECTION_DATA static void* lit_871[19] = {
0xCC),
};
/* 803CECF4-803CED08 02BE14 0010+04 2/2 1/1 0/0 .data __vt__12J3DJointTree */
SECTION_DATA extern void* __vt__12J3DJointTree[4 + 1 /* padding */] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)calc__12J3DJointTreeFP12J3DMtxBufferRC3VecRA3_A4_Cf,
(void*)__dt__12J3DJointTreeFv,
/* padding */
NULL,
};
/* 80325A18-80325A9C 320358 0084+00 0/0 1/1 0/0 .text __ct__12J3DJointTreeFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DJointTree::J3DJointTree() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DJointTree/__ct__12J3DJointTreeFv.s"
}
#pragma pop
J3DJointTree::J3DJointTree()
: mHierarchy(NULL), mFlags(0), mModelDataType(0), mRootNode(NULL), mBasicMtxCalc(NULL),
mJointNodePointer(NULL), mJointNum(0), mWEvlpMtxNum(0), mWEvlpMixMtxNum(0), mWEvlpMixIndex(0),
mWEvlpMixWeight(0), mInvJointMtx(NULL), mWEvlpImportantMtxIdx(0), field_0x40(0),
mJointName(NULL) {}
/* 80325A9C-80325C00 3203DC 0164+00 1/0 2/2 0/0 .text
* makeHierarchy__12J3DJointTreeFP8J3DJointPPC17J3DModelHierarchyP16J3DMaterialTableP13J3DShapeTable
@@ -152,32 +139,23 @@ asm void J3DJointTree::findImportantMtxIndex() {
/* 80325CAC-80325D1C 3205EC 0070+00 1/0 0/0 0/0 .text
* calc__12J3DJointTreeFP12J3DMtxBufferRC3VecRA3_A4_Cf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DJointTree::calc(J3DMtxBuffer* param_0, Vec const& param_1, f32 const (&param_2)[3][4]) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DJointTree/calc__12J3DJointTreeFP12J3DMtxBufferRC3VecRA3_A4_Cf.s"
void J3DJointTree::calc(J3DMtxBuffer* pMtxBuffer, Vec const& scale, f32 const (&mtx)[3][4]) {
getBasicMtxCalc()->init(scale, (Mtx*)mtx);
J3DMtxCalc::setMtxBuffer(pMtxBuffer);
J3DJoint* root = getRootNode();
if (root == NULL)
return;
root->setCurrentMtxCalc(getBasicMtxCalc());
root->recursiveCalc();
}
#pragma pop
/* 80325D1C-80325D24 32065C 0008+00 1/1 0/0 0/0 .text setMtxBuffer__10J3DMtxCalcFP12J3DMtxBuffer
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMtxCalc::setMtxBuffer(J3DMtxBuffer* param_0) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DJointTree/setMtxBuffer__10J3DMtxCalcFP12J3DMtxBuffer.s"
void J3DMtxCalc::setMtxBuffer(J3DMtxBuffer* mtxBuffer) {
J3DMtxCalc::mMtxBuffer = mtxBuffer;
}
#pragma pop
/* 80325D24-80325D88 320664 0064+00 1/0 0/0 0/0 .text __dt__12J3DJointTreeFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DJointTree::~J3DJointTree() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DJointTree/__dt__12J3DJointTreeFv.s"
}
#pragma pop
J3DJointTree::~J3DJointTree() {}
@@ -73,7 +73,7 @@ void J3DMaterialAnm::calc(J3DMaterial* pMat) const {
for (u32 i = 0; i < ARRAY_SIZE(mTexMtxAnm); i++) {
if (mTexMtxAnm[i].getAnmFlag()) {
J3DTexMtx* texMtx = pMat->getTexGenBlock()->getTexMtx(i);
mTexMtxAnm[i].calc(&texMtx->getTexMtxInfo().field_0x10);
mTexMtxAnm[i].calc(&texMtx->getTexMtxInfo().mSRT);
}
}
}
+139 -66
View File
@@ -6,6 +6,7 @@
#include "JSystem/J3DGraphAnimator/J3DModel.h"
#include "JSystem/J3DGraphBase/J3DTransform.h"
#include "dol2asm.h"
#include "dolphin/os/OSCache.h"
#include "dolphin/types.h"
//
@@ -79,7 +80,6 @@ extern "C" void calc__15J3DVtxColorCalcFP8J3DModel();
extern "C" void offAllFlag__13J3DDeformDataFUl();
extern "C" void deform__13J3DDeformDataFP8J3DModel();
extern "C" void entryIn__8J3DJointFv();
extern "C" void DCStoreRange();
extern "C" void DCStoreRangeNoSync();
extern "C" void __construct_new_array();
extern "C" void _savegpr_23();
@@ -111,8 +111,8 @@ SECTION_SDATA2 static f32 lit_896[1 + 1 /* padding */] = {
void J3DModel::initialize() {
mModelData = NULL;
mFlags = 0;
field_0x0c = 0;
field_0x10 = 0;
mDiffFlag = 0;
mCalcCallBack = NULL;
mUserArea = 0;
mBaseScale.x = 1.0f;
@@ -128,8 +128,8 @@ void J3DModel::initialize() {
mDeformData = NULL;
mSkinDeform = NULL;
mVtxColorCalc = NULL;
field_0xd4 = 0;
field_0xd8 = 0;
mUnkCalc1 = NULL;
mUnkCalc2 = NULL;
}
/* ############################################################################################## */
@@ -207,36 +207,25 @@ s32 J3DModel::entryModelData(J3DModelData* p_modelData, u32 param_1, u32 param_2
/* 80327300-803273CC 321C40 00CC+00 1/1 0/0 0/0 .text createShapePacket__8J3DModelFP12J3DModelData
*/
// probably some wrong member types
#ifdef NONMATCHING
s32 J3DModel::createShapePacket(J3DModelData* p_modelData) {
if (p_modelData->getShapeNum() != 0) {
u16 shapeNum = p_modelData->getShapeNum();
J3DShapePacket* packet = new J3DShapePacket[shapeNum];
mShapePacket = &packet;
mShapePacket = new J3DShapePacket[shapeNum];
if (mShapePacket == NULL) {
return 4;
return kJ3DError_Alloc;
}
for (int i = 0; i < p_modelData->getShapeNum(); i++) {
J3DShape* shapeNode = p_modelData->getShapeNodePointer(i);
mShapePacket[i]->setShape(shapeNode);
mShapePacket[i]->setModel(this);
mShapePacket[i].setShape(shapeNode);
mShapePacket[i].setModel(this);
}
}
return 0;
return kJ3DError_Success;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm s32 J3DModel::createShapePacket(J3DModelData* param_0) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModel/createShapePacket__8J3DModelFP12J3DModelData.s"
}
#pragma pop
#endif
/* 803273CC-803275FC 321D0C 0230+00 1/1 0/0 0/0 .text createMatPacket__8J3DModelFP12J3DModelDataUl
*/
@@ -300,14 +289,12 @@ asm void J3DModel::calcDiffTexMtx() {
#pragma pop
/* 803279A0-80327A2C 3222E0 008C+00 0/0 2/2 0/0 .text diff__8J3DModelFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DModel::diff() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModel/diff__8J3DModelFv.s"
void J3DModel::diff() {
for (u16 n = getModelData()->getMaterialNum(), i = 0; i < n; i++) {
j3dSys.setMatPacket(&mMatPacket[i]);
getModelData()->getMaterialNodePointer(i)->diff(mDiffFlag);
}
}
#pragma pop
/* 80327A2C-80327AA0 32236C 0074+00 0/0 1/1 2/2 .text setDeformData__8J3DModelFP13J3DDeformDataUl
*/
@@ -329,55 +316,53 @@ s32 J3DModel::setDeformData(J3DDeformData* p_deformData, u32 param_1) {
/* 80327AA0-80327BD4 3223E0 0134+00 0/0 0/0 2/2 .text setSkinDeform__8J3DModelFP13J3DSkinDeformUl
*/
#ifdef NONMATCHING
s32 J3DModel::setSkinDeform(J3DSkinDeform* p_skinDeform, u32 param_1) {
s32 J3DModel::setSkinDeform(J3DSkinDeform* p_skinDeform, u32 flags) {
mSkinDeform = p_skinDeform;
s32 ret = kJ3DError_Success;
if (p_skinDeform == NULL) {
offFlag(J3DMdlFlag_SkinPosCpu);
offFlag(J3DMdlFlag_SkinNrmCpu);
return 5;
} else {
mSkinDeform->initMtxIndexArray(mModelData);
if (mModelData->checkFlag(0x100)) {
ret = mModelData->checkFlag(0x100);
if (ret != 0) {
mSkinDeform->changeFastSkinDL(mModelData);
param_1 = 0;
flags &= ~2;
flags &= ~4;
mSkinDeform->transformVtxPosNrm(mModelData);
mSkinDeform->initSkinInfo(mModelData);
}
p_skinDeform = NULL;
if ((~param_1 & 2)) {
if (mVertexBuffer.allocTransformedVtxPosArray()) {
ret = 0;
if ((~flags & 2)) {
ret = mVertexBuffer.allocTransformedVtxPosArray();
if (ret != kJ3DError_Success) {
offFlag(J3DMdlFlag_SkinPosCpu);
return 0;
return ret;
}
onFlag(J3DMdlFlag_SkinPosCpu);
} else {
offFlag(J3DMdlFlag_SkinPosCpu);
}
if ((~param_1 & 4)) {
if (mVertexBuffer.allocTransformedVtxNrmArray()) {
onFlag(J3DMdlFlag_SkinNrmCpu);
if ((~flags & 4)) {
ret = mVertexBuffer.allocTransformedVtxNrmArray();
if (ret != kJ3DError_Success) {
offFlag(J3DMdlFlag_SkinNrmCpu);
return ret;
}
offFlag(J3DMdlFlag_SkinNrmCpu);
onFlag(J3DMdlFlag_SkinNrmCpu);
} else {
offFlag(J3DMdlFlag_SkinNrmCpu);
}
}
return 0;
return ret;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm s32 J3DModel::setSkinDeform(J3DSkinDeform* param_0, u32 param_1) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModel/setSkinDeform__8J3DModelFP13J3DSkinDeformUl.s"
}
#pragma pop
#endif
/* 80327BD4-80327C58 322514 0084+00 1/1 0/0 2/2 .text calcAnmMtx__8J3DModelFv */
void J3DModel::calcAnmMtx() {
@@ -412,24 +397,78 @@ extern "C" asm void update__8J3DModelFv() {
#pragma pop
/* 80327CF0-80327E4C 322630 015C+00 1/0 0/0 0/0 .text calc__8J3DModelFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DModel::calc() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModel/calc__8J3DModelFv.s"
void J3DModel::calc() {
j3dSys.setModel(this);
if (checkFlag(J3DMdlFlag_SkinPosCpu)) {
j3dSys.onFlag(J3DSysFlag_SkinPosCpu);
} else {
j3dSys.offFlag(J3DSysFlag_SkinPosCpu);
}
if (checkFlag(J3DMdlFlag_SkinNrmCpu)) {
j3dSys.onFlag(J3DSysFlag_SkinNrmCpu);
} else {
j3dSys.offFlag(J3DSysFlag_SkinNrmCpu);
}
getModelData()->syncJ3DSysFlags();
mVertexBuffer.frameInit();
if (mUnkCalc2 != NULL) {
mUnkCalc2->calc(getModelData());
}
if (mDeformData != NULL) {
mDeformData->deform(this);
}
if (mVtxColorCalc != NULL) {
mVtxColorCalc->calc(this);
}
if (mUnkCalc1 != NULL) {
mUnkCalc1->calc(this);
}
calcAnmMtx();
calcWeightEnvelopeMtx();
if (mSkinDeform != NULL) {
mSkinDeform->deform(this);
}
if (mCalcCallBack != NULL) {
mCalcCallBack(this, 0);
}
}
#pragma pop
/* 80327E4C-80327F40 32278C 00F4+00 1/0 0/0 0/0 .text entry__8J3DModelFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DModel::entry() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModel/entry__8J3DModelFv.s"
void J3DModel::entry() {
j3dSys.setModel(this);
if (checkFlag(J3DMdlFlag_SkinPosCpu)) {
j3dSys.onFlag(J3DSysFlag_SkinPosCpu);
} else {
j3dSys.offFlag(J3DSysFlag_SkinPosCpu);
}
if (checkFlag(J3DMdlFlag_SkinNrmCpu)) {
j3dSys.onFlag(J3DSysFlag_SkinNrmCpu);
} else {
j3dSys.offFlag(J3DSysFlag_SkinNrmCpu);
}
getModelData()->syncJ3DSysFlags();
j3dSys.setTexture(getModelData()->getTexture());
for (u16 i = 0; i < getModelData()->getJointNum(); i++) {
J3DJoint* joint = getModelData()->getJointNodePointer(i);
if (joint->getMesh() != NULL) {
joint->entryIn();
}
}
}
#pragma pop
/* 80327F40-80328190 322880 0250+00 1/0 0/0 0/0 .text viewCalc__8J3DModelFv */
#pragma push
@@ -447,6 +486,24 @@ void J3DModel::calcNrmMtx() {
}
/* 803281B4-803282B8 322AF4 0104+00 1/1 0/0 0/0 .text calcBumpMtx__8J3DModelFv */
#ifdef NONMATCHING
void J3DModel::calcBumpMtx() {
// comparison (might be b/c of bool rather than u8?)
if (!getModelData()->checkBumpFlag())
return;
// loop is a bit different
for (u16 n = getModelData()->getMaterialNum(), i = 0; i < n; i++) {
J3DMaterial* material = getModelData()->getMaterialNodePointer(i);
if (!material->getNBTScale()->mbHasScale)
continue;
material->getShape()->calcNBTScale(*material->getNBTScale()->getScale(), getNrmMtxPtr(),
getBumpMtxPtr(i));
DCStoreRange(getBumpMtxPtr(i), getModelData()->getDrawMtxNum() * 0x24);
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -455,6 +512,7 @@ asm void J3DModel::calcBumpMtx() {
#include "asm/JSystem/J3DGraphAnimator/J3DModel/calcBumpMtx__8J3DModelFv.s"
}
#pragma pop
#endif
/* 803282B8-803282EC 322BF8 0034+00 1/1 0/0 0/0 .text calcBBoardMtx__8J3DModelFv */
void J3DModel::calcBBoardMtx() {
@@ -464,6 +522,20 @@ void J3DModel::calcBBoardMtx() {
}
/* 803282EC-80328350 322C2C 0064+00 2/2 0/0 0/0 .text prepareShapePackets__8J3DModelFv */
#ifdef NONMATCHING
void J3DModel::prepareShapePackets() {
for (u16 n = getModelData()->getShapeNum(), i = 0; i < n; i++) {
// two swapped instructions right around here when calling getShapePacket
J3DShapePacket* pkt = getShapePacket(i);
pkt->setMtxBuffer(mMtxBuffer);
if (getMtxCalcMode() == 2) {
pkt->setBaseMtxPtr(&mInternalView);
} else {
pkt->setBaseMtxPtr(j3dSys.getViewMtx());
}
}
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -472,6 +544,7 @@ asm void J3DModel::prepareShapePackets() {
#include "asm/JSystem/J3DGraphAnimator/J3DModel/prepareShapePackets__8J3DModelFv.s"
}
#pragma pop
#endif
/* 80328350-803283B4 322C90 0064+00 1/0 0/0 0/0 .text __dt__8J3DModelFv */
J3DModel::~J3DModel() {}
@@ -49,10 +49,10 @@ extern "C" extern void* __vt__12J3DJointTree[4 + 1 /* padding */];
/* 80325D88-80325DA0 3206C8 0018+00 1/1 2/2 0/0 .text clear__12J3DModelDataFv */
void J3DModelData::clear() {
field_0x4 = 0;
mpRawData = 0;
mFlags = 0;
field_0xc = 0;
field_0xe = 0;
mbHasBumpArray = 0;
mbHasBillboard = 0;
}
/* ############################################################################################## */
@@ -182,9 +182,9 @@ void J3DModelData::syncJ3DSysPointers() const {
*/
void J3DModelData::syncJ3DSysFlags() const {
if (checkFlag(0x20)) {
j3dSys.onFlag(0x40000000);
j3dSys.onFlag(J3DSysFlag_PostTexMtx);
} else {
j3dSys.offFlag(0x40000000);
j3dSys.offFlag(J3DSysFlag_PostTexMtx);
}
}
+1 -1
View File
@@ -179,7 +179,7 @@ asm void J3DDrawBuffer::entryInvalidSort(J3DMatPacket* param_0) {
bool J3DDrawBuffer::entryNonSort(J3DMatPacket* pMat) {
pMat->clear();
pMat->mpFirstShapePacket->clear();
pMat->mpShapePacket->clear();
// inlined copy of entryImm, add to start of buf
pMat->mpNextSibling = mpBuf[0];
+34 -119
View File
@@ -2101,14 +2101,9 @@ void J3DTevBlock::diffTexNo() {
}
/* 8032194C-80321958 31C28C 000C+00 1/0 0/0 0/0 .text getType__14J3DPEBlockFullFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DPEBlockFull::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__14J3DPEBlockFullFv.s"
u32 J3DPEBlockFull::getType() {
return 'PEFL';
}
#pragma pop
/* 80321958-8032197C 31C298 0024+00 1/0 0/0 0/0 .text setFog__14J3DPEBlockFullFP6J3DFog
*/
@@ -2358,14 +2353,9 @@ asm void J3DPEBlockFogOff::diff(u32 param_0) {
#pragma pop
/* 80321B00-80321B0C 31C440 000C+00 1/0 0/0 0/0 .text getType__16J3DPEBlockFogOffFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DPEBlockFogOff::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__16J3DPEBlockFogOffFv.s"
u32 J3DPEBlockFogOff::getType() {
return 'PEFG';
}
#pragma pop
/* 80321B0C-80321B28 31C44C 001C+00 1/0 0/0 0/0 .text
* setAlphaComp__16J3DPEBlockFogOffFRC12J3DAlphaComp */
@@ -2570,14 +2560,9 @@ asm void J3DTevBlock16::indexToPtr() {
#pragma pop
/* 80321C44-80321C50 31C584 000C+00 1/0 0/0 0/0 .text getType__13J3DTevBlock16Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTevBlock16::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__13J3DTevBlock16Fv.s"
u32 J3DTevBlock16::getType() {
return 'TV16';
}
#pragma pop
/* 80321C50-80321C60 31C590 0010+00 1/0 0/0 0/0 .text setTexNo__13J3DTevBlock16FUlUs */
#pragma push
@@ -3628,14 +3613,9 @@ asm void J3DTevBlock4::indexToPtr() {
#pragma pop
/* 80322010-8032201C 31C950 000C+00 1/0 0/0 0/0 .text getType__12J3DTevBlock4Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTevBlock4::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__12J3DTevBlock4Fv.s"
u32 J3DTevBlock4::getType() {
return 'TVB4';
}
#pragma pop
/* 8032201C-8032202C 31C95C 0010+00 1/0 0/0 0/0 .text setTexNo__12J3DTevBlock4FUlUs */
#pragma push
@@ -4026,14 +4006,9 @@ asm void J3DTevBlock2::indexToPtr() {
#pragma pop
/* 803223D4-803223E0 31CD14 000C+00 1/0 0/0 0/0 .text getType__12J3DTevBlock2Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTevBlock2::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__12J3DTevBlock2Fv.s"
u32 J3DTevBlock2::getType() {
return 'TVB2';
}
#pragma pop
/* 803223E0-803223F0 31CD20 0010+00 1/0 0/0 0/0 .text setTexNo__12J3DTevBlock2FUlUs */
#pragma push
@@ -4424,14 +4399,9 @@ asm void J3DTevBlock1::indexToPtr() {
#pragma pop
/* 80322798-803227A4 31D0D8 000C+00 1/0 0/0 0/0 .text getType__12J3DTevBlock1Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTevBlock1::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__12J3DTevBlock1Fv.s"
u32 J3DTevBlock1::getType() {
return 'TVB1';
}
#pragma pop
/* 803227A4-803227B4 31D0E4 0010+00 1/0 0/0 0/0 .text setTexNo__12J3DTevBlock1FUlUs */
#pragma push
@@ -4656,14 +4626,9 @@ asm void J3DTevBlockPatched::indexToPtr() {
#pragma pop
/* 80322998-803229A4 31D2D8 000C+00 1/0 0/0 0/0 .text getType__18J3DTevBlockPatchedFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTevBlockPatched::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__18J3DTevBlockPatchedFv.s"
u32 J3DTevBlockPatched::getType() {
return 'TVPT';
}
#pragma pop
/* 803229A4-803229AC -00001 0008+00 0/0 0/0 0/0 .text setTevStageNum__18J3DTevBlockPatchedFUc */
void J3DTevBlockPatched::setTevStageNum(u8 param_0) {
@@ -4950,14 +4915,9 @@ asm J3DTevBlockPatched::~J3DTevBlockPatched() {
#pragma pop
/* 80322C6C-80322C78 31D5AC 000C+00 1/0 0/0 0/0 .text getType__19J3DTexGenBlockBasicFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTexGenBlockBasic::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__19J3DTexGenBlockBasicFv.s"
u32 J3DTexGenBlockBasic::getType() {
return 'TGBC';
}
#pragma pop
/* 80322C78-80322C9C 31D5B8 0024+00 1/0 0/0 0/0 .text
* setNBTScale__19J3DTexGenBlockBasicF11J3DNBTScale */
@@ -5087,14 +5047,9 @@ void J3DTexGenBlockPatched::setTexMtxOffset(u32 param_0) {
}
/* 80322DA8-80322DB4 31D6E8 000C+00 1/0 0/0 0/0 .text getType__15J3DTexGenBlock4Fv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTexGenBlock4::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__15J3DTexGenBlock4Fv.s"
u32 J3DTexGenBlock4::getType() {
return 'TGB4';
}
#pragma pop
/* 80322DB4-80322DD8 31D6F4 0024+00 1/0 0/0 0/0 .text setNBTScale__15J3DTexGenBlock4F11J3DNBTScale
*/
@@ -5145,25 +5100,15 @@ void J3DTexGenBlockPatched::load() {
/* 80322E74-80322E80 31D7B4 000C+00 1/0 0/0 0/0 .text getType__21J3DTexGenBlockPatchedFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTexGenBlockPatched::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__21J3DTexGenBlockPatchedFv.s"
u32 J3DTexGenBlockPatched::getType() {
return 'TGPT';
}
#pragma pop
/* 80322E80-80322E8C 31D7C0 000C+00 1/0 0/0 0/0 .text getType__20J3DColorBlockLightOnFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DColorBlockLightOn::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__20J3DColorBlockLightOnFv.s"
u32 J3DColorBlockLightOn::getType() {
return 'CLON';
}
#pragma pop
/* 80322E8C-80322EB8 31D7CC 002C+00 1/0 0/0 0/0 .text
* setMatColor__20J3DColorBlockLightOnFUl10J3DGXColor */
@@ -5382,14 +5327,9 @@ asm J3DColorBlockLightOn::~J3DColorBlockLightOn() {
/* 80323074-80323080 31D9B4 000C+00 1/0 0/0 0/0 .text getType__22J3DColorBlockAmbientOnFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DColorBlockAmbientOn::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__22J3DColorBlockAmbientOnFv.s"
u32 J3DColorBlockAmbientOn::getType() {
return 'CLAB';
}
#pragma pop
/* 80323080-803230AC 31D9C0 002C+00 1/0 0/0 0/0 .text
* setAmbColor__22J3DColorBlockAmbientOnFUl10J3DGXColor */
@@ -5628,14 +5568,9 @@ void J3DColorBlockLightOff::setColorChanOffset(u32 param_0) {
}
/* 80323258-80323264 31DB98 000C+00 1/0 0/0 0/0 .text getType__13J3DPEBlockXluFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DPEBlockXlu::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__13J3DPEBlockXluFv.s"
u32 J3DPEBlockXlu::getType() {
return 'PEXL';
}
#pragma pop
/* 80323264-803232C0 31DBA4 005C+00 1/0 0/0 0/0 .text __dt__13J3DPEBlockXluFv */
#pragma push
@@ -5648,14 +5583,9 @@ asm J3DPEBlockXlu::~J3DPEBlockXlu() {
#pragma pop
/* 803232C0-803232CC 31DC00 000C+00 1/0 0/0 0/0 .text getType__17J3DPEBlockTexEdgeFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DPEBlockTexEdge::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__17J3DPEBlockTexEdgeFv.s"
u32 J3DPEBlockTexEdge::getType() {
return 'PEED';
}
#pragma pop
/* 803232CC-80323328 31DC0C 005C+00 1/0 0/0 0/0 .text __dt__17J3DPEBlockTexEdgeFv */
#pragma push
@@ -5668,14 +5598,9 @@ asm J3DPEBlockTexEdge::~J3DPEBlockTexEdge() {
#pragma pop
/* 80323328-80323334 31DC68 000C+00 1/0 0/0 0/0 .text getType__13J3DPEBlockOpaFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DPEBlockOpa::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__13J3DPEBlockOpaFv.s"
u32 J3DPEBlockOpa::getType() {
return 'PEOP';
}
#pragma pop
/* 80323334-80323390 31DC74 005C+00 1/0 0/0 0/0 .text __dt__13J3DPEBlockOpaFv */
#pragma push
@@ -5688,14 +5613,9 @@ asm J3DPEBlockOpa::~J3DPEBlockOpa() {
#pragma pop
/* 80323390-8032339C 31DCD0 000C+00 1/0 0/0 0/0 .text getType__15J3DIndBlockFullFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DIndBlockFull::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__15J3DIndBlockFullFv.s"
u32 J3DIndBlockFull::getType() {
return 'IBLF';
}
#pragma pop
/* 8032339C-803233A4 -00001 0008+00 0/0 0/0 0/0 .text setIndTexStageNum__15J3DIndBlockFullFUc */
void J3DIndBlockFull::setIndTexStageNum(u8 param_0) {
@@ -5865,14 +5785,9 @@ bool J3DTevBlock::getTexNoOffset() const {
/* 80323560-8032356C 31DEA0 000C+00 1/0 0/0 0/0 .text getType__21J3DColorBlockLightOffFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DColorBlockLightOff::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getType__21J3DColorBlockLightOffFv.s"
u32 J3DColorBlockLightOff::getType() {
return 'CLOF';
}
#pragma pop
/* 8032356C-80323590 31DEAC 0024+00 0/0 1/0 0/0 .text __sinit_J3DMatBlock_cpp */
#pragma push
+20 -24
View File
@@ -71,7 +71,7 @@ extern "C" bool countDLSize__10J3DPEBlockFv();
extern "C" void load__13J3DColorBlockFv();
extern "C" s32 getCullMode__13J3DColorBlockCFv();
extern "C" void load__11J3DTevBlockFv();
extern "C" bool getNBTScale__14J3DTexGenBlockFv();
extern "C" J3DNBTScale* getNBTScale__14J3DTexGenBlockFv();
extern "C" void patch__13J3DColorBlockFv();
extern "C" void diff__13J3DColorBlockFUl();
extern "C" void diff__10J3DPEBlockFUl();
@@ -762,14 +762,11 @@ asm void J3DPatchedMaterial::load() {
#pragma pop
/* 80316FFC-8031703C 31193C 0040+00 1/0 0/0 0/0 .text loadSharedDL__18J3DPatchedMaterialFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DPatchedMaterial::loadSharedDL() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMaterial/loadSharedDL__18J3DPatchedMaterialFv.s"
void J3DPatchedMaterial::loadSharedDL() {
j3dSys.setMaterialMode(mMaterialMode);
if (!j3dSys.checkFlag(0x02))
mSharedDLObj->callDL();
}
#pragma pop
/* 8031703C-80317040 31197C 0004+00 1/0 0/0 0/0 .text reset__18J3DPatchedMaterialFv */
void J3DPatchedMaterial::reset() {
@@ -804,6 +801,12 @@ void J3DLockedMaterial::makeSharedDisplayList() {
}
/* 8031706C-80317088 3119AC 001C+00 1/0 0/0 0/0 .text load__17J3DLockedMaterialFv */
#ifdef NONMATCHING
void J3DLockedMaterial::load() {
j3dSys.setMaterialMode(mMaterialMode);
// some extra dead code after? wtf?
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -812,17 +815,15 @@ asm void J3DLockedMaterial::load() {
#include "asm/JSystem/J3DGraphBase/J3DMaterial/load__17J3DLockedMaterialFv.s"
}
#pragma pop
#endif
/* 80317088-803170C8 3119C8 0040+00 1/0 0/0 0/0 .text loadSharedDL__17J3DLockedMaterialFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DLockedMaterial::loadSharedDL() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMaterial/loadSharedDL__17J3DLockedMaterialFv.s"
void J3DLockedMaterial::loadSharedDL() {
j3dSys.setMaterialMode(mMaterialMode);
if (!j3dSys.checkFlag(0x02))
mSharedDLObj->callDL();
}
#pragma pop
/* 803170C8-803170CC 311A08 0004+00 1/0 0/0 0/0 .text patch__17J3DLockedMaterialFv */
void J3DLockedMaterial::patch() {
@@ -960,8 +961,8 @@ void J3DTevBlock::load() {
}
/* 80317334-8031733C 311C74 0008+00 1/0 2/0 0/0 .text getNBTScale__14J3DTexGenBlockFv */
bool J3DTexGenBlock::getNBTScale() {
return false;
J3DNBTScale* J3DTexGenBlock::getNBTScale() {
return NULL;
}
/* 8031733C-80317340 311C7C 0004+00 1/0 1/0 0/0 .text patch__13J3DColorBlockFv */
@@ -1091,14 +1092,9 @@ extern "C" asm void reset__15J3DIndBlockNullFP11J3DIndBlock() {
}
/* 803173A4-803173B0 311CE4 000C+00 1/0 0/0 0/0 .text getType__15J3DIndBlockNullFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DIndBlockNull::getType() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMaterial/getType__15J3DIndBlockNullFv.s"
u32 J3DIndBlockNull::getType() {
return 'IBLN';
}
#pragma pop
/* 803173B0-8031740C 311CF0 005C+00 1/0 0/0 0/0 .text __dt__15J3DIndBlockNullFv */
#pragma push
+94 -48
View File
@@ -4,6 +4,12 @@
//
#include "JSystem/J3DGraphBase/J3DPacket.h"
#include "JSystem/J3DGraphAnimator/J3DModel.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/J3DGraphBase/J3DShape.h"
#include "JSystem/J3DGraphBase/J3DShapeMtx.h"
#include "JSystem/J3DGraphBase/J3DSys.h"
#include "JSystem/J3DGraphBase/J3DVertex.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "MSL_C.PPCEABI.bare.H/MSL_Common/src/string.h"
#include "dol2asm.h"
@@ -16,29 +22,10 @@
// Types:
//
struct J3DVertexBuffer {
/* 8031106C */ void setArray() const;
};
struct J3DShape {
/* 80315300 */ void loadPreDrawSetting() const;
static u8 sOldVcdVatCmd[4];
};
struct J3DDrawBuffer {
static u8 sortFuncTable[72];
};
struct J3DModelData {
/* 803260F8 */ void syncJ3DSysFlags() const;
};
struct J3DDifferedTexMtx {
static u8 sTexGenBlock[4];
static u8 sTexMtxObj[4];
};
//
// Forward References:
//
@@ -322,8 +309,8 @@ void J3DDrawPacket::draw() {
/* 80312948-803129A4 30D288 005C+00 0/0 1/1 0/0 .text __ct__12J3DMatPacketFv */
J3DMatPacket::J3DMatPacket() {
mpInitShapePacket = NULL;
mpShapePacket = NULL;
mpFirstShapePacket = NULL;
mpMaterial = NULL;
mSortFlags = -1;
mpTexture = NULL;
@@ -334,20 +321,20 @@ J3DMatPacket::J3DMatPacket() {
J3DMatPacket::~J3DMatPacket() {}
void J3DMatPacket::addShapePacket(J3DShapePacket* pShape) {
if (mpFirstShapePacket == NULL) {
mpFirstShapePacket = pShape;
if (mpShapePacket == NULL) {
mpShapePacket = pShape;
} else {
pShape->mpNextSibling = mpFirstShapePacket;
mpFirstShapePacket = pShape;
pShape->mpNextSibling = mpShapePacket;
mpShapePacket = pShape;
}
}
void J3DMatPacket::beginDiff() {
mpShapePacket->mpDisplayListObj->beginDL();
mpInitShapePacket->mpDisplayListObj->beginDL();
}
void J3DMatPacket::endDiff() {
mpShapePacket->mpDisplayListObj->endDL();
mpInitShapePacket->mpDisplayListObj->endDL();
}
/* 80312A74-80312A9C 30D3B4 0028+00 0/0 1/1 0/0 .text isSame__12J3DMatPacketCFP12J3DMatPacket */
@@ -361,20 +348,31 @@ bool J3DMatPacket::isSame(J3DMatPacket* pOther) const {
}
/* 80312A9C-80312B20 30D3DC 0084+00 1/0 0/0 0/0 .text draw__12J3DMatPacketFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMatPacket::draw() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DPacket/draw__12J3DMatPacketFv.s"
void J3DMatPacket::draw() {
mpMaterial->load();
callDL();
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();
}
#pragma pop
/* 80312B20-80312B74 30D460 0054+00 0/0 1/1 0/0 .text __ct__14J3DShapePacketFv */
J3DShapePacket::J3DShapePacket() {
mpShape = NULL;
mpMtxBuffer = NULL;
mpViewMtx = NULL;
mpBaseMtxPtr = NULL;
mDiffFlag = 0;
mpModel = NULL;
}
@@ -409,6 +407,40 @@ J3DError J3DShapePacket::newDifferedDisplayList(u32 flag) {
}
/* 80312E08-80312F24 30D748 011C+00 2/2 0/0 0/0 .text prepareDraw__14J3DShapePacketCFv */
#ifdef NONMATCHING
void J3DShapePacket::prepareDraw() const {
mpModel->getVertexBuffer()->setArray();
j3dSys.setModel(mpModel);
j3dSys.setShapePacket((J3DShapePacket*)this);
// the way that the LOD flag is set seems to be wrong...
J3DShapeMtx::setLODFlag(mpModel->checkFlag(0x10));
if (mpModel->checkFlag(J3DMdlFlag_SkinPosCpu)) {
mpShape->onFlag(J3DShpFlag_SkinPosCpu);
} else {
mpShape->offFlag(J3DShpFlag_SkinPosCpu);
}
if (mpModel->checkFlag(J3DMdlFlag_SkinNrmCpu) && !mpShape->checkFlag(J3DShpFlag_EnableLod)) {
mpShape->onFlag(J3DShpFlag_SkinNrmCpu);
} else {
mpShape->offFlag(J3DShpFlag_SkinNrmCpu);
}
mpShape->setCurrentViewNoPtr(mpMtxBuffer->getCurrentViewNoPtr());
mpShape->setScaleFlagArray(mpMtxBuffer->getScaleFlagArray());
mpShape->setDrawMtx(mpMtxBuffer->getDrawMtxPtrPtr());
if (!mpShape->getNBTFlag()) {
mpShape->setNrmMtx(mpMtxBuffer->getNrmMtxPtrPtr());
} else {
mpShape->setNrmMtx(mpMtxBuffer->getBumpMtxPtrPtr() + mpShape->getBumpMtxOffset());
}
mpModel->getModelData()->syncJ3DSysFlags();
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -417,26 +449,40 @@ asm void J3DShapePacket::prepareDraw() const {
#include "asm/JSystem/J3DGraphBase/J3DPacket/prepareDraw__14J3DShapePacketCFv.s"
}
#pragma pop
#endif
/* 80312F24-80312FBC 30D864 0098+00 1/0 0/0 0/0 .text draw__14J3DShapePacketFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapePacket::draw() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DPacket/draw__14J3DShapePacketFv.s"
void J3DShapePacket::draw() {
if (!checkFlag(J3DShpFlag_Hidden) && mpShape != NULL) {
prepareDraw();
if (mpTexMtx != NULL) {
J3DMaterial* material = mpShape->getMaterial();
J3DDifferedTexMtx::sTexGenBlock = material->getTexGenBlock();
J3DDifferedTexMtx::sTexMtxObj = getTexMtxObj();
} else {
J3DDifferedTexMtx::sTexGenBlock = NULL;
}
if (mpDisplayListObj != NULL) {
mpDisplayListObj->callDL();
}
mpShape->draw();
}
}
#pragma pop
/* 80312FBC-80313044 30D8FC 0088+00 1/1 2/2 1/1 .text drawFast__14J3DShapePacketFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapePacket::drawFast() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DPacket/drawFast__14J3DShapePacketFv.s"
void J3DShapePacket::drawFast() {
if (!checkFlag(J3DShpFlag_Hidden) && mpShape != NULL) {
prepareDraw();
if (mpTexMtx != NULL) {
J3DMaterial* material = mpShape->getMaterial();
J3DDifferedTexMtx::sTexGenBlock = material->getTexGenBlock();
J3DDifferedTexMtx::sTexMtxObj = getTexMtxObj();
} else {
J3DDifferedTexMtx::sTexGenBlock = NULL;
}
mpShape->drawFast();
}
}
#pragma pop
/* 80313044-80313048 30D984 0004+00 1/0 0/0 0/0 .text draw__9J3DPacketFv */
void J3DPacket::draw() {
+31 -34
View File
@@ -4,6 +4,7 @@
//
#include "JSystem/J3DGraphBase/J3DShape.h"
#include "JSystem/J3DGraphBase/J3DSys.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@@ -52,7 +53,6 @@ extern "C" void OSDisableInterrupts();
extern "C" void OSRestoreInterrupts();
extern "C" void OSDisableScheduler();
extern "C" void OSEnableScheduler();
extern "C" void GXSetArray();
extern "C" void GDInitGDLObj();
extern "C" void GDFlushCurrToMem();
extern "C" void GDPadCurr32();
@@ -65,12 +65,11 @@ extern "C" void _savegpr_29();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" extern u8 j3dSys[284];
extern "C" extern u8 j3dDefaultViewNo[4 + 4 /* padding */];
extern "C" u8 sCurrentPipeline__11J3DShapeMtx[4];
extern "C" u8 sCurrentScaleFlag__11J3DShapeMtx[4];
extern "C" u32 sCurrentPipeline__11J3DShapeMtx;
extern "C" u32 sCurrentScaleFlag__11J3DShapeMtx;
extern "C" extern u8 struct_804515B0[4];
extern "C" u8 sTexMtxLoadType__11J3DShapeMtx[4];
extern "C" u32 sTexMtxLoadType__11J3DShapeMtx;
extern "C" extern u8 __GDCurrentDL[4];
//
@@ -164,14 +163,13 @@ static asm void J3DLoadArrayBasePtr(_GXAttr param_0, void* param_1) {
#pragma pop
/* 80314EEC-80314F5C 30F82C 0070+00 3/3 0/0 0/0 .text loadVtxArray__8J3DShapeCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShape::loadVtxArray() const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShape/loadVtxArray__8J3DShapeCFv.s"
void J3DShape::loadVtxArray() const {
J3DLoadArrayBasePtr(GX_VA_POS, j3dSys.getVtxPos());
if (!mHasNBT) {
J3DLoadArrayBasePtr(GX_VA_NRM, j3dSys.getVtxNrm());
}
J3DLoadArrayBasePtr(GX_VA_CLR0, j3dSys.getVtxCol());
}
#pragma pop
/* 80314F5C-80314F98 30F89C 003C+00 0/0 1/1 0/0 .text isSameVcdVatCmd__8J3DShapeFP8J3DShape */
#pragma push
@@ -229,14 +227,18 @@ asm void J3DShape::loadPreDrawSetting() const {
static u8 data_804515D4[4];
/* 80315398-8031544C 30FCD8 00B4+00 1/1 0/0 0/0 .text setArrayAndBindPipeline__8J3DShapeCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShape::setArrayAndBindPipeline() const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShape/setArrayAndBindPipeline__8J3DShapeCFv.s"
void J3DShape::setArrayAndBindPipeline() const {
J3DShapeMtx::setCurrentPipeline(getPipeline());
loadVtxArray();
j3dSys.setModelDrawMtx(mDrawMtx[*mCurrentViewNo]);
j3dSys.setModelNrmMtx(mNrmMtx[*mCurrentViewNo]);
J3DShapeMtx::sCurrentScaleFlag = mScaleFlagArray;
// The below struct_804515B0 is actually a continuation of sCurrentScaleFlag, I believe?
// Also, there seems to be an extra entry in the array that's only there in DEBUG builds.
struct_804515B0[0] = mHasNBT;
data_804515D4[0] = mHasPNMTXIdx;
J3DShapeMtx::sTexMtxLoadType = getTexMtxLoadType();
}
#pragma pop
/* 8031544C-803155E0 30FD8C 0194+00 1/0 0/0 0/0 .text drawFast__8J3DShapeCFv */
#pragma push
@@ -259,14 +261,17 @@ asm void J3DShape::draw() const {
#pragma pop
/* 80315628-803156AC 30FF68 0084+00 1/0 0/0 0/0 .text simpleDraw__8J3DShapeCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShape::simpleDraw() const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShape/simpleDraw__8J3DShapeCFv.s"
void J3DShape::simpleDraw() const {
resetVcdVatCache();
loadPreDrawSetting();
J3DShapeMtx::setCurrentPipeline(getPipeline());
loadVtxArray();
for (u16 n = mMtxGroupNum, i = 0; i < n; i++) {
if (mShapeDraw[i] != NULL) {
mShapeDraw[i]->draw();
}
}
}
#pragma pop
/* 803156AC-803157A0 30FFEC 00F4+00 1/0 0/0 0/0 .text simpleDrawCache__8J3DShapeCFv */
#pragma push
@@ -277,11 +282,3 @@ asm void J3DShape::simpleDrawCache() const {
#include "asm/JSystem/J3DGraphBase/J3DShape/simpleDrawCache__8J3DShapeCFv.s"
}
#pragma pop
/* ############################################################################################## */
/* 803CDC78-803CDC90 02AD98 0018+00 0/0 1/1 0/0 .data __vt__8J3DShape */
SECTION_DATA extern void* __vt__8J3DShape[6] = {
(void*)NULL /* RTTI */, (void*)NULL,
(void*)draw__8J3DShapeCFv, (void*)drawFast__8J3DShapeCFv,
(void*)simpleDraw__8J3DShapeCFv, (void*)simpleDrawCache__8J3DShapeCFv,
};
+7 -33
View File
@@ -5,6 +5,7 @@
#include "JSystem/J3DGraphBase/J3DShapeDraw.h"
#include "dol2asm.h"
#include "dolphin/gx/gx.h"
#include "dolphin/types.h"
//
@@ -25,7 +26,6 @@ SECTION_INIT void memcpy();
extern "C" void* __nwa__FUli();
extern "C" void __dl__FPv();
extern "C" void DCStoreRange();
extern "C" void GXCallDisplayList();
extern "C" void _savegpr_18();
extern "C" void _restgpr_18();
@@ -53,42 +53,16 @@ asm void J3DShapeDraw::addTexMtxIndexInDL(u32 param_0, u32 param_1, u32 param_2)
}
#pragma pop
/* ############################################################################################## */
/* 803CDC68-803CDC78 02AD88 000C+04 2/2 0/0 0/0 .data __vt__12J3DShapeDraw */
SECTION_DATA extern void* __vt__12J3DShapeDraw[3 + 1 /* padding */] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__12J3DShapeDrawFv,
/* padding */
NULL,
};
/* 80314ABC-80314AD4 30F3FC 0018+00 0/0 1/1 0/0 .text __ct__12J3DShapeDrawFPCUcUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DShapeDraw::J3DShapeDraw(u8 const* param_0, u32 param_1) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeDraw/__ct__12J3DShapeDrawFPCUcUl.s"
J3DShapeDraw::J3DShapeDraw(u8 const* displayList, u32 displayListSize) {
mDisplayList = (void*)displayList;
mDisplayListSize = displayListSize;
}
#pragma pop
/* 80314AD4-80314B00 30F414 002C+00 0/0 3/3 0/0 .text draw__12J3DShapeDrawCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeDraw::draw() const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeDraw/draw__12J3DShapeDrawCFv.s"
void J3DShapeDraw::draw() const {
GXCallDisplayList(mDisplayList, mDisplayListSize);
}
#pragma pop
/* 80314B00-80314B48 30F440 0048+00 1/0 0/0 0/0 .text __dt__12J3DShapeDrawFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DShapeDraw::~J3DShapeDraw() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeDraw/__dt__12J3DShapeDrawFv.s"
}
#pragma pop
J3DShapeDraw::~J3DShapeDraw() {}
+19 -20
View File
@@ -18,13 +18,6 @@ struct J3DSys {
/* 8030FEE4 */ void loadNrmMtxIndx(int, u16) const;
};
struct J3DDifferedTexMtx {
/* 8031322C */ void loadExecute(f32 const (*)[4]);
static u8 sTexGenBlock[4];
static u8 sTexMtxObj[4];
};
//
// Forward References:
//
@@ -125,18 +118,22 @@ extern "C" extern u8 j3dSys[284];
/* ############################################################################################## */
/* 80434C80-80434C98 0619A0 0014+04 2/2 0/0 0/0 .bss sMtxLoadCache__11J3DShapeMtx */
u8 J3DShapeMtx::sMtxLoadCache[20 + 4 /* padding */];
u16 J3DShapeMtx::sMtxLoadCache[10 + 2 /* padding */];
/* 803130A8-803130E4 30D9E8 003C+00 0/0 1/1 0/0 .text resetMtxLoadCache__11J3DShapeMtxFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeMtx::resetMtxLoadCache() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/resetMtxLoadCache__11J3DShapeMtxFv.s"
void J3DShapeMtx::resetMtxLoadCache() {
sMtxLoadCache[9] = 0xFFFF;
sMtxLoadCache[8] = 0xFFFF;
sMtxLoadCache[7] = 0xFFFF;
sMtxLoadCache[6] = 0xFFFF;
sMtxLoadCache[5] = 0xFFFF;
sMtxLoadCache[4] = 0xFFFF;
sMtxLoadCache[3] = 0xFFFF;
sMtxLoadCache[2] = 0xFFFF;
sMtxLoadCache[1] = 0xFFFF;
sMtxLoadCache[0] = 0xFFFF;
}
#pragma pop
/* 803130E4-80313128 30DA24 0044+00 1/0 0/0 0/0 .text loadMtxIndx_PNGP__11J3DShapeMtxCFiUs */
#pragma push
@@ -365,10 +362,12 @@ SECTION_DATA static void* lit_1034[12] = {
};
/* 804515A8-804515AC 000AA8 0004+00 4/4 2/2 0/0 .sbss sCurrentPipeline__11J3DShapeMtx */
u8 J3DShapeMtx::sCurrentPipeline[4];
u32 J3DShapeMtx::sCurrentPipeline;
/* 804515AC-804515B0 000AAC 0004+00 3/3 1/1 0/0 .sbss sCurrentScaleFlag__11J3DShapeMtx */
u8 J3DShapeMtx::sCurrentScaleFlag[4];
u8* J3DShapeMtx::sCurrentScaleFlag;
// This below is technically part of J3DScaleFlag.
/* 804515B0-804515B4 -00001 0004+00 5/5 3/3 0/0 .sbss None */
/* 804515B0 0001+00 data_804515B0 None */
@@ -377,7 +376,7 @@ extern u8 struct_804515B0[4];
u8 struct_804515B0[4];
/* 804515B4-804515B8 000AB4 0004+00 4/4 1/1 0/0 .sbss sTexMtxLoadType__11J3DShapeMtx */
u8 J3DShapeMtx::sTexMtxLoadType[4];
u32 J3DShapeMtx::sTexMtxLoadType;
/* 804515B8-804515C0 000AB8 0008+00 2/2 0/0 0/0 .sbss sMtxPtrTbl__21J3DShapeMtxConcatView
*/
@@ -385,10 +384,10 @@ u8 J3DShapeMtxConcatView::sMtxPtrTbl[8];
/* 804515C0-804515C4 000AC0 0004+00 6/6 2/2 0/0 .sbss sTexGenBlock__17J3DDifferedTexMtx
*/
u8 J3DDifferedTexMtx::sTexGenBlock[4];
J3DTexGenBlock* J3DDifferedTexMtx::sTexGenBlock;
/* 804515C4-804515C8 000AC4 0004+00 1/1 2/2 0/0 .sbss sTexMtxObj__17J3DDifferedTexMtx */
u8 J3DDifferedTexMtx::sTexMtxObj[4];
J3DTexMtx* J3DDifferedTexMtx::sTexMtxObj;
/* 80456398-8045639C 004998 0004+00 2/2 0/0 0/0 .sdata2 @1032 */
SECTION_SDATA2 static u8 lit_1032[4] = {
+118 -89
View File
@@ -5,6 +5,7 @@
#include "JSystem/J3DGraphBase/J3DSys.h"
#include "dol2asm.h"
#include "dolphin/gx/GXPixel.h"
#include "dolphin/types.h"
//
@@ -42,10 +43,7 @@ extern "C" void makeZModeTable__Fv();
extern "C" void makeTevSwapTable__Fv();
extern "C" void GXInvalidateVtxCache();
extern "C" void GXFlush();
extern "C" void GXSetChanAmbColor();
extern "C" void GXInitTexCacheRegion();
extern "C" void GXSetTevIndirect();
extern "C" void GXSetColorUpdate();
extern "C" void _savegpr_25();
extern "C" void _savegpr_28();
extern "C" void _restgpr_25();
@@ -162,122 +160,153 @@ asm void J3DSys::drawInit() {
#pragma pop
/* 8031073C-8031079C 30B07C 0060+00 0/0 16/16 6/6 .text reinitGX__6J3DSysFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DSys::reinitGX() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DSys/reinitGX__6J3DSysFv.s"
void J3DSys::reinitGX() {
reinitGenMode();
reinitLighting();
reinitTransform();
reinitTexture();
reinitTevStages();
reinitIndStages();
reinitPixelProc();
GXFlush();
}
#pragma pop
/* 8031079C-803107E8 30B0DC 004C+00 1/1 0/0 0/0 .text reinitGenMode__6J3DSysFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DSys::reinitGenMode() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DSys/reinitGenMode__6J3DSysFv.s"
void J3DSys::reinitGenMode() {
GXSetNumChans(0);
GXSetNumTexGens(1);
GXSetNumTevStages(1);
GXSetNumIndStages(0);
GXSetCullMode(GX_CULL_BACK);
GXSetCoPlanar(GX_FALSE);
}
#pragma pop
/* ############################################################################################## */
/* 80450950-80450954 0003D0 0004+00 2/2 0/0 0/0 .sdata ColorBlack */
SECTION_SDATA static u8 ColorBlack[4] = {
0x00,
0x00,
0x00,
0x00,
};
SECTION_SDATA static GXColor ColorBlack = {0x00, 0x00, 0x00, 0x00};
/* 80450954-80450958 0003D4 0004+00 2/2 0/0 0/0 .sdata ColorWhite */
SECTION_SDATA static u32 ColorWhite = 0xFFFFFFFF;
SECTION_SDATA static GXColor ColorWhite = {0xFF, 0xFF, 0xFF, 0xFF};
/* 803107E8-80310894 30B128 00AC+00 1/1 0/0 0/0 .text reinitLighting__6J3DSysFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DSys::reinitLighting() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DSys/reinitLighting__6J3DSysFv.s"
void J3DSys::reinitLighting() {
GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE,
GX_AF_NONE);
GXSetChanCtrl(GX_COLOR1A1, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE,
GX_AF_NONE);
GXSetChanAmbColor(GX_COLOR0A0, ColorBlack);
GXSetChanAmbColor(GX_COLOR1A1, ColorBlack);
GXSetChanMatColor(GX_COLOR0A0, ColorWhite);
GXSetChanMatColor(GX_COLOR1A1, ColorWhite);
}
#pragma pop
/* 80310894-80310998 30B1D4 0104+00 1/1 0/0 0/0 .text reinitTransform__6J3DSysFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DSys::reinitTransform() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DSys/reinitTransform__6J3DSysFv.s"
void J3DSys::reinitTransform() {
GXSetCurrentMtx(GX_PNMTX0);
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX1, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
GXSetTexCoordGen2(GX_TEXCOORD2, GX_TG_MTX2x4, GX_TG_TEX2, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
GXSetTexCoordGen2(GX_TEXCOORD3, GX_TG_MTX2x4, GX_TG_TEX3, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
GXSetTexCoordGen2(GX_TEXCOORD4, GX_TG_MTX2x4, GX_TG_TEX4, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
GXSetTexCoordGen2(GX_TEXCOORD5, GX_TG_MTX2x4, GX_TG_TEX5, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
GXSetTexCoordGen2(GX_TEXCOORD6, GX_TG_MTX2x4, GX_TG_TEX6, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
GXSetTexCoordGen2(GX_TEXCOORD7, GX_TG_MTX2x4, GX_TG_TEX7, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY);
}
#pragma pop
/* 80310998-80310A3C 30B2D8 00A4+00 2/2 0/0 0/0 .text reinitTexture__6J3DSysFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DSys::reinitTexture() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DSys/reinitTexture__6J3DSysFv.s"
void J3DSys::reinitTexture() {
GXTexObj texObj;
GXInitTexObj(&texObj, NullTexData, 4, 4, GX_TF_IA8, GX_CLAMP, GX_CLAMP, GX_FALSE);
GXLoadTexObj(&texObj, GX_TEXMAP0);
GXLoadTexObj(&texObj, GX_TEXMAP1);
GXLoadTexObj(&texObj, GX_TEXMAP2);
GXLoadTexObj(&texObj, GX_TEXMAP3);
GXLoadTexObj(&texObj, GX_TEXMAP4);
GXLoadTexObj(&texObj, GX_TEXMAP5);
GXLoadTexObj(&texObj, GX_TEXMAP6);
GXLoadTexObj(&texObj, GX_TEXMAP7);
}
#pragma pop
/* 80310A3C-80310D44 30B37C 0308+00 1/1 0/0 0/0 .text reinitTevStages__6J3DSysFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DSys::reinitTevStages() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DSys/reinitTevStages__6J3DSysFv.s"
void J3DSys::reinitTevStages() {
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE2, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE3, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE4, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE5, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE6, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE7, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE8, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE9, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE10, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE11, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE12, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE13, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE14, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE15, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
GXSetTevColor(GX_TEVREG0, ColorWhite);
GXSetTevColor(GX_TEVREG1, ColorWhite);
GXSetTevColor(GX_TEVREG2, ColorWhite);
GXSetTevKColor(GX_KCOLOR0, ColorWhite);
GXSetTevKColor(GX_KCOLOR1, ColorWhite);
GXSetTevKColor(GX_KCOLOR2, ColorWhite);
GXSetTevKColor(GX_KCOLOR3, ColorWhite);
for (u32 i = 0; i < GX_MAX_TEVSTAGE; i++) {
GXSetTevColorIn((GXTevStageID)i, GX_CC_RASC, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO);
GXSetTevColorOp((GXTevStageID)i, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE,
GX_TEVPREV);
GXSetTevAlphaIn((GXTevStageID)i, GX_CA_RASA, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO);
GXSetTevAlphaOp((GXTevStageID)i, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE,
GX_TEVPREV);
GXSetTevKColorSel((GXTevStageID)i, GX_TEV_KCSEL_1_4);
GXSetTevKAlphaSel((GXTevStageID)i, GX_TEV_KASEL_1);
GXSetTevSwapMode((GXTevStageID)i, GX_TEV_SWAP0, GX_TEV_SWAP0);
}
GXSetTevSwapModeTable(GX_TEV_SWAP0, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_ALPHA);
GXSetTevSwapModeTable(GX_TEV_SWAP1, GX_CH_RED, GX_CH_RED, GX_CH_RED, GX_CH_ALPHA);
GXSetTevSwapModeTable(GX_TEV_SWAP2, GX_CH_GREEN, GX_CH_GREEN, GX_CH_GREEN, GX_CH_ALPHA);
GXSetTevSwapModeTable(GX_TEV_SWAP3, GX_CH_BLUE, GX_CH_BLUE, GX_CH_BLUE, GX_CH_ALPHA);
GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0);
}
#pragma pop
/* ############################################################################################## */
/* 803CD8E0-803CD8F8 02AA00 0018+00 1/1 0/0 0/0 .data IndMtx */
SECTION_DATA static u8 IndMtx[24] = {
0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
SECTION_DATA static Mtx23 IndMtx = {0.5f, 0.0f, 0.0f, 0.0f, 0.5f, 0.0f};
/* 80310D44-80310E3C 30B684 00F8+00 1/1 0/0 0/0 .text reinitIndStages__6J3DSysFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DSys::reinitIndStages() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DSys/reinitIndStages__6J3DSysFv.s"
void J3DSys::reinitIndStages() {
for (u32 i = 0; i < GX_MAX_TEVSTAGE; i++) {
GXSetTevDirect((GXTevStageID)i);
}
GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD0, GX_TEXMAP0);
GXSetIndTexOrder(GX_INDTEXSTAGE1, GX_TEXCOORD1, GX_TEXMAP1);
GXSetIndTexOrder(GX_INDTEXSTAGE2, GX_TEXCOORD2, GX_TEXMAP2);
GXSetIndTexOrder(GX_INDTEXSTAGE3, GX_TEXCOORD3, GX_TEXMAP3);
GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1);
GXSetIndTexCoordScale(GX_INDTEXSTAGE1, GX_ITS_1, GX_ITS_1);
GXSetIndTexCoordScale(GX_INDTEXSTAGE2, GX_ITS_1, GX_ITS_1);
GXSetIndTexCoordScale(GX_INDTEXSTAGE3, GX_ITS_1, GX_ITS_1);
GXSetIndTexMtx(GX_ITM_0, IndMtx, 1);
GXSetIndTexMtx(GX_ITM_1, IndMtx, 1);
GXSetIndTexMtx(GX_ITM_2, IndMtx, 1);
}
#pragma pop
/* ############################################################################################## */
/* 80456368-8045636C 004968 0004+00 1/1 0/0 0/0 .sdata2 @892 */
SECTION_SDATA2 static u8 lit_892[4] = {
0x00,
0x00,
0x00,
0x00,
};
/* 8045636C-80456370 00496C 0004+00 1/1 0/0 0/0 .sdata2 @893 */
SECTION_SDATA2 static f32 lit_893 = 1.0f;
/* 80456370-80456378 004970 0004+04 1/1 0/0 0/0 .sdata2 @894 */
SECTION_SDATA2 static f32 lit_894[1 + 1 /* padding */] = {
1.0f / 10.0f,
/* padding */
0.0f,
};
/* 80310E3C-80310ED0 30B77C 0094+00 1/1 0/0 0/0 .text reinitPixelProc__6J3DSysFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DSys::reinitPixelProc() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DSys/reinitPixelProc__6J3DSysFv.s"
void J3DSys::reinitPixelProc() {
GXSetBlendMode(GX_BM_NONE, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_CLEAR);
GXSetColorUpdate(GX_TRUE);
GXSetAlphaUpdate(GX_FALSE);
GXSetDither(GX_TRUE);
GXSetFog(GX_FOG_NONE, 0.0f, 1.0f, 0.1f, 1.0f, ColorBlack);
GXSetFogRangeAdj(GX_FALSE, 0, NULL);
GXSetZMode(GX_TRUE, GX_LEQUAL, GX_TRUE);
GXSetZCompLoc(GX_TRUE);
}
#pragma pop
/* ############################################################################################## */
/* 80451598-804515A0 000A98 0004+04 0/0 1/1 0/0 .sbss j3dDefaultViewNo */
+9 -48
View File
@@ -4,6 +4,7 @@
//
#include "JSystem/J3DGraphBase/J3DTevs.h"
#include "JSystem/J3DGraphBase/J3DSys.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@@ -11,34 +12,6 @@
// Types:
//
struct _GXTlutSize {};
struct _GXTlutFmt {};
struct _GXTexWrapMode {};
struct _GXTexMtxType {};
struct _GXTexMapID {};
struct _GXTexGenType {};
struct _GXTexGenSrc {};
struct _GXTexFmt {};
struct _GXTexFilter {};
struct _GXLightID {};
struct _GXColor {};
struct _GXAnisotropy {};
struct Vec {};
struct J3DTextureSRTInfo {};
struct J3DTexMtx {
/* 803238C4 */ void load(u32) const;
/* 80323900 */ void calc(f32 const (*)[4]);
@@ -50,10 +23,6 @@ struct J3DTexMtx {
struct J3DTexCoord {};
struct J3DSys {
static u8 sTexCoordScaleTable[64 + 4 /* padding */];
};
struct J3DNBTScale {};
struct J3DLightObj {
@@ -121,13 +90,11 @@ extern "C" void J3DGetTextureMtxOld__FRC17J3DTextureSRTInfoRC3VecPA4_f();
extern "C" void J3DGetTextureMtxMaya__FRC17J3DTextureSRTInfoPA4_f();
extern "C" void J3DGetTextureMtxMayaOld__FRC17J3DTextureSRTInfoPA4_f();
extern "C" void J3DMtxProjConcat__FPA4_fPA4_fPA4_f();
extern "C" void PSMTXConcat();
extern "C" void GDOverflowed();
extern "C" void _savegpr_26();
extern "C" void _savegpr_28();
extern "C" void _restgpr_26();
extern "C" void _restgpr_28();
extern "C" extern u8 j3dSys[284];
extern "C" u8 sTexCoordScaleTable__6J3DSys[64 + 4 /* padding */];
extern "C" extern u8 __GDCurrentDL[4];
@@ -157,24 +124,18 @@ asm void loadTexCoordGens(u32 param_0, J3DTexCoord* param_1) {
#pragma pop
/* 803238C4-80323900 31E204 003C+00 0/0 6/6 0/0 .text load__9J3DTexMtxCFUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTexMtx::load(u32 param_0) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DTevs/load__9J3DTexMtxCFUl.s"
void J3DTexMtx::load(u32 mtxIdx) const {
if (j3dSys.checkFlag(J3DSysFlag_PostTexMtx)) {
loadPostTexMtx(mtxIdx);
} else {
loadTexMtx(mtxIdx);
}
}
#pragma pop
/* 80323900-80323920 31E240 0020+00 0/0 2/2 0/0 .text calc__9J3DTexMtxFPA4_Cf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DTexMtx::calc(f32 const (*param_0)[4]) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DTevs/calc__9J3DTexMtxFPA4_Cf.s"
void J3DTexMtx::calc(f32 const (*param_0)[4]) {
calcTexMtx(param_0);
}
#pragma pop
/* ############################################################################################## */
/* 803CEAC8-803CEAF8 02BBE8 0030+00 1/1 0/0 0/0 .data qMtx$1001 */
+2 -2
View File
@@ -130,8 +130,8 @@ void J3DVertexBuffer::setArray() const {
/* 80311090-803111B0 30B9D0 0120+00 1/1 0/0 0/0 .text copyLocalVtxPosArray__15J3DVertexBufferFUl
*/
s32 J3DVertexBuffer::copyLocalVtxPosArray(u32 param_0) {
if (param_0 & 1) {
s32 J3DVertexBuffer::copyLocalVtxPosArray(u32 flags) {
if (flags & 1) {
for (int i = 0; i < 2; i++) {
mVtxPosArray[i] = new (0x20) VertexPosition[mVtxData->getVtxNum()];
File diff suppressed because it is too large Load Diff
+15 -12
View File
@@ -4,6 +4,7 @@
//
#include "JSystem/JParticle/JPAChildShape.h"
#include "JSystem/JParticle/JPAParticle.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@@ -11,13 +12,13 @@
// Types:
//
struct JPAEmitterWorkData {};
struct JPAChildShape {
public:
/* 8027B038 */ JPAChildShape(u8 const*);
};
struct JPABaseParticle {};
public:
u8 const* mpData;
};
//
// Forward References:
@@ -28,12 +29,6 @@ extern "C" void JPACalcChildAlphaOut__FP18JPAEmitterWorkDataP15JPABaseParticle()
extern "C" void JPACalcChildScaleOut__FP18JPAEmitterWorkDataP15JPABaseParticle();
extern "C" void __ct__13JPAChildShapeFPCUc();
//
// External References:
//
extern "C" void GXSetTevColor();
//
// Declarations:
//
@@ -69,6 +64,13 @@ asm void JPACalcChildAlphaOut(JPAEmitterWorkData* param_0, JPABaseParticle* para
/* 8027B008-8027B038 275948 0030+00 0/0 1/1 0/0 .text
* JPACalcChildScaleOut__FP18JPAEmitterWorkDataP15JPABaseParticle */
#ifdef NONMATCHING
void JPACalcChildScaleOut(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
// literal
ptcl->mParticleScaleX = ptcl->mScaleOut * (1.0f - ptcl->mTime);
ptcl->mParticleScaleY = ptcl->mAlphaWaveRandom * (1.0f - ptcl->mTime);
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -77,8 +79,9 @@ asm void JPACalcChildScaleOut(JPAEmitterWorkData* param_0, JPABaseParticle* para
#include "asm/JSystem/JParticle/JPAChildShape/JPACalcChildScaleOut__FP18JPAEmitterWorkDataP15JPABaseParticle.s"
}
#pragma pop
#endif
/* 8027B038-8027B040 -00001 0008+00 0/0 0/0 0/0 .text __ct__13JPAChildShapeFPCUc */
JPAChildShape::JPAChildShape(u8 const* param_0) {
*(u32*)this = (u32)(param_0);
JPAChildShape::JPAChildShape(u8 const* pData) {
mpData = pData;
}
@@ -13,12 +13,6 @@
struct JPAEmitterWorkData {};
struct JPADynamicsBlock {
/* 8027BB18 */ JPADynamicsBlock(u8 const*);
/* 8027BB4C */ void init();
/* 8027BBE8 */ void create(JPAEmitterWorkData*);
};
struct JPABaseEmitter {
/* 8027EA40 */ void createParticle();
};

Some files were not shown because too many files have changed in this diff Show More