J3D setup (#155)

* setup j3d classes

* remove asm

* fixes

* fix newDifferedDisplayList
This commit is contained in:
TakaRikka
2021-10-11 18:38:53 +02:00
committed by GitHub
parent 5084413cb7
commit a2636e84c3
134 changed files with 3399 additions and 4786 deletions
+28 -147
View File
@@ -7,139 +7,6 @@
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct _GXColorS10 {};
struct _GXColor {};
struct JUTNameTab {
/* 802DE9A0 */ JUTNameTab();
/* 802DEA58 */ void getIndex(char const*) const;
/* 802DEAF8 */ void getName(u16) const;
};
struct J3DTransformInfo {};
struct J3DTextureSRTInfo {};
struct J3DModelData {};
struct J3DMaterialTable {};
struct J3DAnmVtxColorKey {
/* 8032A4E0 */ J3DAnmVtxColorKey();
/* 8032A53C */ void getColor(u8, u16, _GXColor*) const;
/* 8032BF50 */ ~J3DAnmVtxColorKey();
/* 8032BFBC */ s32 getKind() const;
};
struct J3DAnmVtxColorFull {
/* 8032A30C */ J3DAnmVtxColorFull();
/* 8032A368 */ void getColor(u8, u16, _GXColor*) const;
/* 8032BFC4 */ ~J3DAnmVtxColorFull();
/* 8032C030 */ s32 getKind() const;
};
struct J3DAnmVtxColor {
/* 8032A29C */ J3DAnmVtxColor();
/* 8032BC50 */ ~J3DAnmVtxColor();
/* 8032C038 */ s32 getKind() const;
/* 8032C040 */ void getColor(u8, u16, _GXColor*) const;
};
struct J3DAnmTransformKey {
/* 80329A34 */ void calcTransform(f32, u16, J3DTransformInfo*) const;
};
struct J3DAnmTransformFullWithLerp {
/* 803291F0 */ void getTransform(u16, J3DTransformInfo*) const;
/* 8032C228 */ ~J3DAnmTransformFullWithLerp();
/* 8032C2A4 */ s32 getKind() const;
};
struct J3DAnmTransformFull {
/* 80328E90 */ void getTransform(u16, J3DTransformInfo*) const;
/* 8032C2AC */ ~J3DAnmTransformFull();
/* 8032C318 */ s32 getKind() const;
};
struct J3DAnmTransform {
/* 80328E40 */ J3DAnmTransform(s16, f32*, s16*, f32*);
};
struct J3DAnmTextureSRTKey {
/* 80329E5C */ J3DAnmTextureSRTKey();
/* 80329F14 */ void calcTransform(f32, u16, J3DTextureSRTInfo*) const;
/* 8032B0C0 */ void searchUpdateMaterialID(J3DMaterialTable*);
/* 8032B1D4 */ void searchUpdateMaterialID(J3DModelData*);
/* 8032C198 */ ~J3DAnmTextureSRTKey();
/* 8032C220 */ s32 getKind() const;
};
struct J3DAnmTexPattern {
/* 8032AED8 */ J3DAnmTexPattern();
/* 8032AF50 */ void getTexNo(u16, u16*) const;
/* 8032B004 */ void searchUpdateMaterialID(J3DMaterialTable*);
/* 8032B09C */ void searchUpdateMaterialID(J3DModelData*);
/* 8032BD20 */ ~J3DAnmTexPattern();
/* 8032BD94 */ s32 getKind() const;
};
struct J3DAnmTevRegKey {
/* 8032AE18 */ J3DAnmTevRegKey();
/* 8032B1F8 */ void getTevColorReg(u16, _GXColorS10*) const;
/* 8032B4BC */ void getTevKonstReg(u16, _GXColor*) const;
/* 8032B780 */ void searchUpdateMaterialID(J3DMaterialTable*);
/* 8032B87C */ void searchUpdateMaterialID(J3DModelData*);
/* 8032BD9C */ ~J3DAnmTevRegKey();
/* 8032BE24 */ s32 getKind() const;
};
struct J3DAnmKeyTableBase {};
struct J3DAnmColorKey {
/* 8032AB00 */ J3DAnmColorKey();
/* 8032AB54 */ void getColor(u16, _GXColor*) const;
/* 8032BE2C */ ~J3DAnmColorKey();
/* 8032BEB0 */ s32 getKind() const;
};
struct J3DAnmColorFull {
/* 8032A93C */ J3DAnmColorFull();
/* 8032A990 */ void getColor(u16, _GXColor*) const;
/* 8032BEB8 */ ~J3DAnmColorFull();
/* 8032BF3C */ s32 getKind() const;
};
struct J3DAnmColor {
/* 8032A828 */ J3DAnmColor();
/* 8032A8A4 */ void searchUpdateMaterialID(J3DMaterialTable*);
/* 8032BCAC */ ~J3DAnmColor();
/* 8032BF44 */ bool getKind() const;
/* 8032BF4C */ void getColor(u16, _GXColor*) const;
};
struct J3DAnmClusterKey {
/* 8032A218 */ void getWeight(u16) const;
/* 8032C044 */ ~J3DAnmClusterKey();
/* 8032C0B0 */ s32 getKind() const;
};
struct J3DAnmClusterFull {
/* 8032A184 */ void getWeight(u16) const;
/* 8032C124 */ ~J3DAnmClusterFull();
/* 8032C190 */ s32 getKind() const;
};
struct J3DAnmCluster {
/* 8032C0B8 */ ~J3DAnmCluster();
/* 8032C114 */ s32 getKind() const;
/* 8032C11C */ void getWeight(u16) const;
};
//
// Forward References:
//
@@ -783,7 +650,8 @@ extern "C" asm void func_8032BAD4(void* _this, f32 param_0, J3DAnmKeyTableBase*
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DAnmVtxColor::~J3DAnmVtxColor() {
extern "C" asm void __dt__14J3DAnmVtxColorFv() {
// asm J3DAnmVtxColor::~J3DAnmVtxColor() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DAnimation/__dt__14J3DAnmVtxColorFv.s"
}
@@ -793,7 +661,8 @@ asm J3DAnmVtxColor::~J3DAnmVtxColor() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DAnmColor::~J3DAnmColor() {
extern "C" asm void __dt__11J3DAnmColorFv() {
// asm J3DAnmColor::~J3DAnmColor() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DAnimation/__dt__11J3DAnmColorFv.s"
}
@@ -803,7 +672,8 @@ asm J3DAnmColor::~J3DAnmColor() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DAnmTexPattern::~J3DAnmTexPattern() {
extern "C" asm void __dt__16J3DAnmTexPatternFv() {
// asm J3DAnmTexPattern::~J3DAnmTexPattern() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DAnimation/__dt__16J3DAnmTexPatternFv.s"
}
@@ -818,7 +688,8 @@ s32 J3DAnmTexPattern::getKind() const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DAnmTevRegKey::~J3DAnmTevRegKey() {
extern "C" asm void __dt__15J3DAnmTevRegKeyFv() {
// asm J3DAnmTevRegKey::~J3DAnmTevRegKey() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DAnimation/__dt__15J3DAnmTevRegKeyFv.s"
}
@@ -833,7 +704,8 @@ s32 J3DAnmTevRegKey::getKind() const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DAnmColorKey::~J3DAnmColorKey() {
extern "C" asm void __dt__14J3DAnmColorKeyFv() {
// asm J3DAnmColorKey::~J3DAnmColorKey() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DAnimation/__dt__14J3DAnmColorKeyFv.s"
}
@@ -848,7 +720,8 @@ s32 J3DAnmColorKey::getKind() const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DAnmColorFull::~J3DAnmColorFull() {
extern "C" asm void __dt__15J3DAnmColorFullFv() {
// asm J3DAnmColorFull::~J3DAnmColorFull() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DAnimation/__dt__15J3DAnmColorFullFv.s"
}
@@ -873,7 +746,8 @@ void J3DAnmColor::getColor(u16 param_0, _GXColor* param_1) const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DAnmVtxColorKey::~J3DAnmVtxColorKey() {
extern "C" asm void __dt__17J3DAnmVtxColorKeyFv() {
// asm J3DAnmVtxColorKey::~J3DAnmVtxColorKey() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DAnimation/__dt__17J3DAnmVtxColorKeyFv.s"
}
@@ -888,7 +762,8 @@ s32 J3DAnmVtxColorKey::getKind() const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DAnmVtxColorFull::~J3DAnmVtxColorFull() {
extern "C" asm void __dt__18J3DAnmVtxColorFullFv() {
// asm J3DAnmVtxColorFull::~J3DAnmVtxColorFull() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DAnimation/__dt__18J3DAnmVtxColorFullFv.s"
}
@@ -914,7 +789,8 @@ void J3DAnmVtxColor::getColor(u8 param_0, u16 param_1, _GXColor* param_2) const
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DAnmClusterKey::~J3DAnmClusterKey() {
extern "C" asm void __dt__16J3DAnmClusterKeyFv() {
// asm J3DAnmClusterKey::~J3DAnmClusterKey() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DAnimation/__dt__16J3DAnmClusterKeyFv.s"
}
@@ -929,7 +805,8 @@ s32 J3DAnmClusterKey::getKind() const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DAnmCluster::~J3DAnmCluster() {
extern "C" asm void __dt__13J3DAnmClusterFv() {
// asm J3DAnmCluster::~J3DAnmCluster() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DAnimation/__dt__13J3DAnmClusterFv.s"
}
@@ -954,7 +831,8 @@ asm void J3DAnmCluster::getWeight(u16 param_0) const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DAnmClusterFull::~J3DAnmClusterFull() {
extern "C" asm void __dt__17J3DAnmClusterFullFv() {
// asm J3DAnmClusterFull::~J3DAnmClusterFull() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DAnimation/__dt__17J3DAnmClusterFullFv.s"
}
@@ -969,7 +847,8 @@ s32 J3DAnmClusterFull::getKind() const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DAnmTextureSRTKey::~J3DAnmTextureSRTKey() {
extern "C" asm void __dt__19J3DAnmTextureSRTKeyFv() {
// asm J3DAnmTextureSRTKey::~J3DAnmTextureSRTKey() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DAnimation/__dt__19J3DAnmTextureSRTKeyFv.s"
}
@@ -1007,7 +886,8 @@ SECTION_DATA extern void* __vt__19J3DAnmTransformFull[5 + 1 /* padding */] = {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DAnmTransformFullWithLerp::~J3DAnmTransformFullWithLerp() {
extern "C" asm void __dt__27J3DAnmTransformFullWithLerpFv() {
// asm J3DAnmTransformFullWithLerp::~J3DAnmTransformFullWithLerp() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DAnimation/__dt__27J3DAnmTransformFullWithLerpFv.s"
}
@@ -1022,7 +902,8 @@ s32 J3DAnmTransformFullWithLerp::getKind() const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DAnmTransformFull::~J3DAnmTransformFull() {
extern "C" asm void __dt__19J3DAnmTransformFullFv() {
// asm J3DAnmTransformFull::~J3DAnmTransformFull() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DAnimation/__dt__19J3DAnmTransformFullFv.s"
}
@@ -19,10 +19,6 @@ struct J3DVertexBuffer {};
struct J3DModel {};
struct J3DCluster {};
struct J3DClusterKey {};
struct J3DAnmCluster {};
struct J3DDeformData {
+146 -115
View File
@@ -4,6 +4,9 @@
//
#include "JSystem/J3DGraphAnimator/J3DJoint.h"
#include "JSystem/J3DGraphAnimator/J3DMtxBuffer.h"
#include "JSystem/J3DGraphBase/J3DSys.h"
#include "JSystem/JMath/JMath.h"
#include "dol2asm.h"
#include "dolphin/types.h"
@@ -11,54 +14,6 @@
// Types:
//
struct Vec {};
struct J3DTransformInfo {};
struct J3DSys {
static u8 mCurrentMtx[48];
static f32 mCurrentS[3];
static f32 mParentS[3];
};
struct J3DMtxCalcJ3DSysInitMaya {
/* 8032ECAC */ void init(Vec const&, f32 const (&)[3][4]);
};
struct J3DMtxCalcJ3DSysInitBasic {
/* 8032EC28 */ void init(Vec const&, f32 const (&)[3][4]);
};
struct J3DMtxCalcCalcTransformSoftimage {
/* 8032EE50 */ void calcTransform(J3DTransformInfo const&);
};
struct J3DMtxCalcCalcTransformMaya {
/* 8032EFBC */ void calcTransform(J3DTransformInfo const&);
};
struct J3DMtxCalcCalcTransformBasic {
/* 8032ED30 */ void calcTransform(J3DTransformInfo const&);
};
struct J3DMtxCalc {
static u8 mMtxBuffer[4];
static u8 mJoint[4];
};
struct J3DMaterial {
/* 80316AB0 */ void setCurrentMtx();
};
struct J3DJoint {
/* 8032F13C */ void appendChild(J3DJoint*);
/* 8032F170 */ J3DJoint();
/* 8032F254 */ void entryIn();
/* 8032F3F8 */ void recursiveCalc();
static u8 mCurrentMtxCalc[4 + 4 /* padding */];
};
struct J3DDrawBuffer {
static u8 entryNum[4 + 4 /* padding */];
};
@@ -84,16 +39,14 @@ extern "C" u8 mCurrentMtxCalc__8J3DJoint[4 + 4 /* padding */];
// External References:
//
extern "C" void J3DGetTranslateRotateMtx__FRC16J3DTransformInfoPA4_f();
extern "C" void
J3DGetTranslateRotateMtx__FRC16J3DTransformInfoPA4_f(J3DTransformInfo const& param_0,
f32 (*param_1)[4]);
extern "C" void J3DGetTranslateRotateMtx__FsssfffPA4_f();
extern "C" void setCurrentMtx__11J3DMaterialFv();
extern "C" void JMAMTXApplyScale__FPA4_CfPA4_ffff();
extern "C" void PSMTXCopy();
extern "C" void PSMTXConcat();
extern "C" void JMAMTXApplyScale__FPA4_CfPA4_ffff(const Mtx*, Mtx*, f32, f32, f32);
extern "C" void _savegpr_27();
extern "C" void _restgpr_27();
extern "C" extern u8 const j3dDefaultTransformInfo[32];
extern "C" extern u8 j3dSys[284];
extern "C" u8 mCurrentMtx__6J3DSys[48];
extern "C" f32 mCurrentS__6J3DSys[3];
extern "C" f32 mParentS__6J3DSys[3];
@@ -103,95 +56,152 @@ extern "C" u8 entryNum__13J3DDrawBuffer[4 + 4 /* padding */];
// Declarations:
//
/* ############################################################################################## */
/* 803A2068-803A2074 02E6C8 000C+00 1/1 0/0 0/0 .rodata @882 */
SECTION_RODATA static u8 const lit_882[12] = {
0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x803A2068, &lit_882);
/* 8032EC28-8032ECAC 329568 0084+00 0/0 1/1 0/0 .text
* init__25J3DMtxCalcJ3DSysInitBasicFRC3VecRA3_A4_Cf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMtxCalcJ3DSysInitBasic::init(Vec const& param_0, f32 const (&param_1)[3][4]) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DJoint/init__25J3DMtxCalcJ3DSysInitBasicFRC3VecRA3_A4_Cf.s"
void J3DMtxCalcJ3DSysInitBasic::init(Vec const& param_0, Mtx const& param_1) {
J3DSys::mCurrentS = param_0;
J3DSys::mParentS = (Vec){1.0f, 1.0f, 1.0f};
JMAMTXApplyScale(param_1, J3DSys::mCurrentMtx, J3DSys::mCurrentS.x, J3DSys::mCurrentS.y,
J3DSys::mCurrentS.z);
}
#pragma pop
/* ############################################################################################## */
/* 803A2074-803A2080 02E6D4 000C+00 1/1 0/0 0/0 .rodata @893 */
SECTION_RODATA static u8 const lit_893[12] = {
0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x803A2074, &lit_893);
/* 8032ECAC-8032ED30 3295EC 0084+00 0/0 2/2 2/2 .text
* init__24J3DMtxCalcJ3DSysInitMayaFRC3VecRA3_A4_Cf */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMtxCalcJ3DSysInitMaya::init(Vec const& param_0, f32 const (&param_1)[3][4]) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DJoint/init__24J3DMtxCalcJ3DSysInitMayaFRC3VecRA3_A4_Cf.s"
void J3DMtxCalcJ3DSysInitMaya::init(Vec const& param_0, Mtx const& param_1) {
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.z);
}
#pragma pop
/* ############################################################################################## */
/* 804515F0-804515F4 000AF0 0004+00 3/3 1/1 0/0 .sbss mMtxBuffer__10J3DMtxCalc */
u8 J3DMtxCalc::mMtxBuffer[4];
J3DMtxBuffer* J3DMtxCalc::mMtxBuffer;
/* 804515F4-804515F8 000AF4 0004+00 4/4 9/9 2/2 .sbss mJoint__10J3DMtxCalc */
u8 J3DMtxCalc::mJoint[4];
J3DJoint* J3DMtxCalc::mJoint;
/* 804564A0-804564A4 004AA0 0004+00 3/3 0/0 0/0 .sdata2 @922 */
SECTION_SDATA2 static f32 lit_922 = 1.0f;
inline s32 checkScaleOne(const Vec& param_0) {
if (param_0.x == 1.0f && param_0.y == 1.0f && param_0.z == 1.0f) {
return true;
} else {
return false;
}
}
/* 8032ED30-8032EE50 329670 0120+00 0/0 1/1 0/0 .text
* calcTransform__28J3DMtxCalcCalcTransformBasicFRC16J3DTransformInfo */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMtxCalcCalcTransformBasic::calcTransform(J3DTransformInfo const& param_0) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DJoint/calcTransform__28J3DMtxCalcCalcTransformBasicFRC16J3DTransformInfo.s"
void J3DMtxCalcCalcTransformBasic::calcTransform(J3DTransformInfo const& transInfo) {
J3DMtxBuffer* mtxBuf = J3DMtxCalc::getMtxBuffer();
u16 jntNo = J3DMtxCalc::getJoint()->getJntNo();
MtxP anmMtx = mtxBuf->getAnmMtx(jntNo);
J3DSys::mCurrentS.x *= transInfo.mScale.x;
J3DSys::mCurrentS.y *= transInfo.mScale.y;
J3DSys::mCurrentS.z *= transInfo.mScale.z;
J3DGetTranslateRotateMtx(transInfo, anmMtx);
if (!checkScaleOne(J3DSys::mCurrentS)) {
mtxBuf->setScaleFlag(jntNo, 0);
JMAMTXApplyScale(anmMtx, anmMtx, transInfo.mScale.x, transInfo.mScale.y,
transInfo.mScale.z);
} else {
mtxBuf->setScaleFlag(jntNo, 1);
}
PSMTXConcat(J3DSys::mCurrentMtx, anmMtx, J3DSys::mCurrentMtx);
PSMTXCopy(J3DSys::mCurrentMtx, anmMtx);
}
#pragma pop
/* 8032EE50-8032EFBC 329790 016C+00 0/0 1/1 0/0 .text
* calcTransform__32J3DMtxCalcCalcTransformSoftimageFRC16J3DTransformInfo */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMtxCalcCalcTransformSoftimage::calcTransform(J3DTransformInfo const& param_0) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DJoint/calcTransform__32J3DMtxCalcCalcTransformSoftimageFRC16J3DTransformInfo.s"
void J3DMtxCalcCalcTransformSoftimage::calcTransform(J3DTransformInfo const& transInfo) {
J3DMtxBuffer* mtxBuf = J3DMtxCalc::getMtxBuffer();
u16 jntNo = J3DMtxCalc::getJoint()->getJntNo();
MtxP anmMtx = mtxBuf->getAnmMtx(jntNo);
J3DGetTranslateRotateMtx(transInfo.mRotation.x, transInfo.mRotation.y, transInfo.mRotation.z,
transInfo.mTranslate.x * J3DSys::mCurrentS.x,
transInfo.mTranslate.y * J3DSys::mCurrentS.y,
transInfo.mTranslate.z * J3DSys::mCurrentS.z, anmMtx);
PSMTXConcat(J3DSys::mCurrentMtx, anmMtx, J3DSys::mCurrentMtx);
J3DSys::mCurrentS.x *= transInfo.mScale.x;
J3DSys::mCurrentS.y *= transInfo.mScale.y;
J3DSys::mCurrentS.z *= transInfo.mScale.z;
if (!checkScaleOne(J3DSys::mCurrentS)) {
mtxBuf->setScaleFlag(jntNo, 0);
JMAMTXApplyScale(J3DSys::mCurrentMtx, anmMtx, J3DSys::mCurrentS.x, J3DSys::mCurrentS.y,
J3DSys::mCurrentS.z);
anmMtx[0][3] = J3DSys::mCurrentMtx[0][3];
anmMtx[1][3] = J3DSys::mCurrentMtx[1][3];
anmMtx[2][3] = J3DSys::mCurrentMtx[2][3];
} else {
mtxBuf->setScaleFlag(jntNo, 1);
PSMTXCopy(J3DSys::mCurrentMtx, anmMtx);
}
}
#pragma pop
/* 8032EFBC-8032F13C 3298FC 0180+00 0/0 6/6 2/2 .text
* calcTransform__27J3DMtxCalcCalcTransformMayaFRC16J3DTransformInfo */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMtxCalcCalcTransformMaya::calcTransform(J3DTransformInfo const& param_0) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DJoint/calcTransform__27J3DMtxCalcCalcTransformMayaFRC16J3DTransformInfo.s"
void J3DMtxCalcCalcTransformMaya::calcTransform(J3DTransformInfo const& transInfo) {
J3DJoint* joint = J3DMtxCalc::getJoint();
J3DMtxBuffer* mtxBuf = J3DMtxCalc::getMtxBuffer();
u16 jntNo = joint->getJntNo();
MtxP anmMtx = mtxBuf->getAnmMtx(jntNo);
J3DGetTranslateRotateMtx(transInfo, anmMtx);
if (transInfo.mScale.x == 1.0f && transInfo.mScale.y == 1.0f && transInfo.mScale.z == 1.0f) {
mtxBuf->setScaleFlag(jntNo, 1);
} else {
mtxBuf->setScaleFlag(jntNo, 0);
JMAMTXApplyScale(anmMtx, anmMtx, transInfo.mScale.x, transInfo.mScale.y,
transInfo.mScale.z);
}
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);
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;
}
PSMTXConcat(J3DSys::mCurrentMtx, anmMtx, J3DSys::mCurrentMtx);
PSMTXCopy(J3DSys::mCurrentMtx, anmMtx);
J3DSys::mParentS.x = transInfo.mScale.x;
J3DSys::mParentS.y = transInfo.mScale.y;
J3DSys::mParentS.z = transInfo.mScale.z;
}
#pragma pop
/* 8032F13C-8032F170 329A7C 0034+00 0/0 1/1 0/0 .text appendChild__8J3DJointFP8J3DJoint
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DJoint::appendChild(J3DJoint* param_0) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DJoint/appendChild__8J3DJointFP8J3DJoint.s"
void J3DJoint::appendChild(J3DJoint* pChild) {
if (mChild == NULL) {
mChild = pChild;
} else {
J3DJoint* curChild = mChild;
while (curChild->getYounger() != NULL) {
curChild = curChild->getYounger();
}
curChild->setYounger(pChild);
}
}
#pragma pop
/* ############################################################################################## */
/* 803A2080-803A208C 02E6E0 000C+00 1/1 0/0 0/0 .rodata @1257 */
@@ -215,6 +225,26 @@ 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;
mCallBack = NULL;
field_0x8 = NULL;
mChild = NULL;
mYounger = NULL;
mJntNo = 0;
mMtxType = 1;
mScaleCompensate = false;
mTransformInfo = j3dDefaultTransformInfo;
field_0x38 = 0.0f;
mMtxCalc = NULL;
mMesh = NULL;
Vec init = {0.0f, 0.0f, 0.0f};
mMin = init;
mMax = init;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -223,6 +253,7 @@ asm J3DJoint::J3DJoint() {
#include "asm/JSystem/J3DGraphAnimator/J3DJoint/__ct__8J3DJointFv.s"
}
#pragma pop
#endif
/* 8032F254-8032F3F8 329B94 01A4+00 0/0 1/1 0/0 .text entryIn__8J3DJointFv */
#pragma push
@@ -236,7 +267,7 @@ asm void J3DJoint::entryIn() {
/* ############################################################################################## */
/* 804515F8-80451600 000AF8 0004+04 1/1 1/1 0/0 .sbss mCurrentMtxCalc__8J3DJoint */
u8 J3DJoint::mCurrentMtxCalc[4 + 4 /* padding */];
J3DMtxCalc* J3DJoint::mCurrentMtxCalc;
/* 8032F3F8-8032F5A8 329D38 01B0+00 0/0 1/1 0/0 .text recursiveCalc__8J3DJointFv */
#pragma push
@@ -7,47 +7,6 @@
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct Vec {};
struct J3DShapeTable {};
struct J3DMtxBuffer {};
struct J3DMtxCalc {
/* 80325D1C */ void setMtxBuffer(J3DMtxBuffer*);
static u8 mMtxBuffer[4];
};
struct J3DModelHierarchy {};
struct J3DMaterialTable {};
struct J3DJoint {
/* 8032F13C */ void appendChild(J3DJoint*);
/* 8032F3F8 */ void recursiveCalc();
static u8 mCurrentMtxCalc[4 + 4 /* padding */];
};
struct J3DJointTree {
/* 80325A18 */ J3DJointTree();
/* 80325A9C */ void makeHierarchy(J3DJoint*, J3DModelHierarchy const**, J3DMaterialTable*,
J3DShapeTable*);
/* 80325C00 */ void findImportantMtxIndex();
/* 80325CAC */ void calc(J3DMtxBuffer*, Vec const&, f32 const (&)[3][4]);
/* 80325D24 */ ~J3DJointTree();
};
struct J3DDrawMtxData {
/* 803115E0 */ J3DDrawMtxData();
/* 803115F4 */ ~J3DDrawMtxData();
};
//
// Forward References:
//
+91 -125
View File
@@ -1,156 +1,122 @@
//
// Generated By: dol2asm
// Translation Unit: J3DMaterialAnm
//
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct _GXColorS10 {};
struct _GXColor {};
struct J3DTextureSRTInfo {};
struct J3DTexNoAnm {};
struct J3DTexMtxAnm {};
struct J3DTevKColorAnm {};
struct J3DTevColorAnm {};
struct J3DMaterial {};
struct J3DMatColorAnm {};
struct J3DMaterialAnm {
/* 800A4820 */ ~J3DMaterialAnm();
/* 8032C320 */ void initialize();
/* 8032C3C4 */ void calc(J3DMaterial*) const;
/* 8032C5A4 */ void setMatColorAnm(int, J3DMatColorAnm*);
/* 8032C5E4 */ void setTexMtxAnm(int, J3DTexMtxAnm*);
/* 8032C624 */ void setTexNoAnm(int, J3DTexNoAnm*);
/* 8032C664 */ void setTevColorAnm(int, J3DTevColorAnm*);
/* 8032C6A4 */ void setTevKColorAnm(int, J3DTevKColorAnm*);
};
struct J3DAnmTextureSRTKey {
/* 80329F14 */ void calcTransform(f32, u16, J3DTextureSRTInfo*) const;
};
struct J3DAnmTevRegKey {
/* 8032B1F8 */ void getTevColorReg(u16, _GXColorS10*) const;
/* 8032B4BC */ void getTevKonstReg(u16, _GXColor*) const;
};
//
// Forward References:
//
extern "C" void initialize__14J3DMaterialAnmFv();
extern "C" void calc__14J3DMaterialAnmCFP11J3DMaterial();
extern "C" void setMatColorAnm__14J3DMaterialAnmFiP14J3DMatColorAnm();
extern "C" void setTexMtxAnm__14J3DMaterialAnmFiP12J3DTexMtxAnm();
extern "C" void setTexNoAnm__14J3DMaterialAnmFiP11J3DTexNoAnm();
extern "C" void setTevColorAnm__14J3DMaterialAnmFiP14J3DTevColorAnm();
extern "C" void setTevKColorAnm__14J3DMaterialAnmFiP15J3DTevKColorAnm();
extern "C" extern void* __vt__14J3DMaterialAnm[4];
//
// External References:
//
extern "C" void __dt__14J3DMaterialAnmFv();
extern "C" void calcTransform__19J3DAnmTextureSRTKeyCFfUsP17J3DTextureSRTInfo();
extern "C" void getTevColorReg__15J3DAnmTevRegKeyCFUsP11_GXColorS10();
extern "C" void getTevKonstReg__15J3DAnmTevRegKeyCFUsP8_GXColor();
extern "C" void _savegpr_27();
extern "C" void _restgpr_27();
//
// Declarations:
//
/* 8032C320-8032C3C4 326C60 00A4+00 0/0 5/5 72/72 .text initialize__14J3DMaterialAnmFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMaterialAnm::initialize() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DMaterialAnm/initialize__14J3DMaterialAnmFv.s"
}
#pragma pop
void J3DMaterialAnm::initialize() {
for (int i = 0; i < ARRAY_SIZE(mMatColorAnm); i++) {
mMatColorAnm[i].setAnmFlag(false);
}
/* 8032C3C4-8032C5A4 326D04 01E0+00 1/0 4/4 2/2 .text calc__14J3DMaterialAnmCFP11J3DMaterial */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMaterialAnm::calc(J3DMaterial* param_0) const {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DMaterialAnm/calc__14J3DMaterialAnmCFP11J3DMaterial.s"
}
#pragma pop
for (int i = 0; i < ARRAY_SIZE(mTexNoAnm); i++) {
mTexNoAnm[i].setAnmFlag(false);
}
/* 8032C5A4-8032C5E4 326EE4 0040+00 0/0 2/2 0/0 .text
* setMatColorAnm__14J3DMaterialAnmFiP14J3DMatColorAnm */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMaterialAnm::setMatColorAnm(int param_0, J3DMatColorAnm* param_1) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DMaterialAnm/setMatColorAnm__14J3DMaterialAnmFiP14J3DMatColorAnm.s"
}
#pragma pop
for (int i = 0; i < ARRAY_SIZE(mTevColorAnm); i++) {
mTevColorAnm[i].setAnmFlag(false);
}
/* 8032C5E4-8032C624 326F24 0040+00 0/0 3/3 0/0 .text
* setTexMtxAnm__14J3DMaterialAnmFiP12J3DTexMtxAnm */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMaterialAnm::setTexMtxAnm(int param_0, J3DTexMtxAnm* param_1) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DMaterialAnm/setTexMtxAnm__14J3DMaterialAnmFiP12J3DTexMtxAnm.s"
}
#pragma pop
for (int i = 0; i < ARRAY_SIZE(mTevKColorAnm); i++) {
mTevKColorAnm[i].setAnmFlag(false);
}
/* 8032C624-8032C664 326F64 0040+00 0/0 2/2 0/0 .text
* setTexNoAnm__14J3DMaterialAnmFiP11J3DTexNoAnm */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMaterialAnm::setTexNoAnm(int param_0, J3DTexNoAnm* param_1) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DMaterialAnm/setTexNoAnm__14J3DMaterialAnmFiP11J3DTexNoAnm.s"
for (int i = 0; i < ARRAY_SIZE(mTexMtxAnm); i++) {
mTexMtxAnm[i].setAnmFlag(false);
}
}
#pragma pop
/* 8032C664-8032C6A4 326FA4 0040+00 0/0 3/3 0/0 .text
* setTevColorAnm__14J3DMaterialAnmFiP14J3DTevColorAnm */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMaterialAnm::setTevColorAnm(int param_0, J3DTevColorAnm* param_1) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DMaterialAnm/setTevColorAnm__14J3DMaterialAnmFiP14J3DTevColorAnm.s"
}
#pragma pop
void J3DMaterialAnm::calc(J3DMaterial* pMat) const {
for (u32 i = 0; i < ARRAY_SIZE(mMatColorAnm); i++) {
if (mMatColorAnm[i].getAnmFlag()) {
_GXColor* color = pMat->getColorBlock()->getMatColor(i);
mMatColorAnm[i].calc(color);
}
}
/* 8032C6A4-8032C6E4 326FE4 0040+00 0/0 3/3 0/0 .text
* setTevKColorAnm__14J3DMaterialAnmFiP15J3DTevKColorAnm */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMaterialAnm::setTevKColorAnm(int param_0, J3DTevKColorAnm* param_1) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DMaterialAnm/setTevKColorAnm__14J3DMaterialAnmFiP15J3DTevKColorAnm.s"
u16 tmp;
for (u32 i = 0; i < ARRAY_SIZE(mTexNoAnm); i++) {
if (mTexNoAnm[i].getAnmFlag()) {
mTexNoAnm[i].calc(&tmp);
pMat->getTevBlock()->setTexNo(i, tmp);
}
}
for (u32 i = 0; i < 3; i++) {
if (mTevColorAnm[i].getAnmFlag()) {
_GXColorS10* color = pMat->getTevBlock()->getTevColor(i);
mTevColorAnm[i].calc(color);
}
}
for (u32 i = 0; i < ARRAY_SIZE(mTevKColorAnm); i++) {
if (mTevKColorAnm[i].getAnmFlag()) {
_GXColor* color = pMat->getTevBlock()->getTevKColor(i);
mTevKColorAnm[i].calc(color);
}
}
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);
}
}
}
void J3DMaterialAnm::setMatColorAnm(int idx, J3DMatColorAnm* p_matColorAnm) {
if (p_matColorAnm == NULL) {
mMatColorAnm[idx].setAnmFlag(false);
} else {
mMatColorAnm[idx] = *p_matColorAnm;
}
}
void J3DMaterialAnm::setTexMtxAnm(int idx, J3DTexMtxAnm* p_texMtxAnm) {
if (p_texMtxAnm == NULL) {
mTexMtxAnm[idx].setAnmFlag(false);
} else {
mTexMtxAnm[idx] = *p_texMtxAnm;
}
}
void J3DMaterialAnm::setTexNoAnm(int idx, J3DTexNoAnm* p_texNoAnm) {
if (p_texNoAnm == NULL) {
mTexNoAnm[idx].setAnmFlag(false);
} else {
mTexNoAnm[idx] = *p_texNoAnm;
}
}
void J3DMaterialAnm::setTevColorAnm(int idx, J3DTevColorAnm* p_tevColorAnm) {
if (p_tevColorAnm == NULL) {
mTevColorAnm[idx].setAnmFlag(false);
} else {
mTevColorAnm[idx] = *p_tevColorAnm;
}
}
void J3DMaterialAnm::setTevKColorAnm(int idx, J3DTevKColorAnm* p_tevKColorAnm) {
if (p_tevKColorAnm == NULL) {
mTevKColorAnm[idx].setAnmFlag(false);
} else {
mTevKColorAnm[idx] = *p_tevKColorAnm;
}
}
#pragma pop
/* ############################################################################################## */
/* 803CEE60-803CEE70 02BF80 0010+00 0/0 10/10 74/74 .data __vt__14J3DMaterialAnm */
@@ -4,58 +4,11 @@
//
#include "JSystem/J3DGraphAnimator/J3DMaterialAttach.h"
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
#include "JSystem/J3DGraphBase/J3DTevs.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct J3DTexNoAnm {};
struct J3DTexMtxInfo {
/* 80325718 */ void operator=(J3DTexMtxInfo const&);
};
struct J3DTexMtxAnm {};
struct J3DTevKColorAnm {};
struct J3DTevColorAnm {};
struct J3DAnmTextureSRTKey {};
struct J3DAnmTexPattern {};
struct J3DAnmTevRegKey {};
struct J3DAnmColor {};
struct J3DMaterialTable {
/* 8032F5A8 */ void clear();
/* 8032F5D0 */ J3DMaterialTable();
/* 8032F604 */ ~J3DMaterialTable();
/* 8032F64C */ void removeMatColorAnimator(J3DAnmColor*);
/* 8032F6F8 */ void removeTexNoAnimator(J3DAnmTexPattern*);
/* 8032F7B4 */ void removeTexMtxAnimator(J3DAnmTextureSRTKey*);
/* 8032F880 */ void removeTevRegAnimator(J3DAnmTevRegKey*);
/* 8032F9C0 */ void createTexMtxForAnimator(J3DAnmTextureSRTKey*);
/* 8032FAF4 */ void entryMatColorAnimator(J3DAnmColor*);
/* 8032FBC8 */ void entryTexNoAnimator(J3DAnmTexPattern*);
/* 8032FCC4 */ void entryTexMtxAnimator(J3DAnmTextureSRTKey*);
/* 8032FE70 */ void entryTevRegAnimator(J3DAnmTevRegKey*);
};
struct J3DMatColorAnm {};
struct J3DMaterialAnm {
/* 8032C5A4 */ void setMatColorAnm(int, J3DMatColorAnm*);
/* 8032C5E4 */ void setTexMtxAnm(int, J3DTexMtxAnm*);
/* 8032C624 */ void setTexNoAnm(int, J3DTexNoAnm*);
/* 8032C664 */ void setTevColorAnm(int, J3DTevColorAnm*);
/* 8032C6A4 */ void setTevKColorAnm(int, J3DTevKColorAnm*);
};
//
// Forward References:
//
@@ -101,14 +54,16 @@ extern "C" extern void* __vt__11J3DTexNoAnm[3];
//
/* 8032F5A8-8032F5D0 329EE8 0028+00 0/0 1/1 0/0 .text clear__16J3DMaterialTableFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMaterialTable::clear() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DMaterialAttach/clear__16J3DMaterialTableFv.s"
void J3DMaterialTable::clear() {
mMaterialNum = 0;
mUniqueMatNum = 0;
mMaterialNodePointer = NULL;
mMaterialName = NULL;
field_0x10 = 0;
mTexture = NULL;
mTextureName = NULL;
field_0x1c = 0;
}
#pragma pop
/* ############################################################################################## */
/* 803CEE80-803CEE90 02BFA0 000C+04 2/2 0/0 0/0 .data __vt__16J3DMaterialTable */
@@ -121,35 +76,50 @@ SECTION_DATA extern void* __vt__16J3DMaterialTable[3 + 1 /* padding */] = {
};
/* 8032F5D0-8032F604 329F10 0034+00 0/0 2/2 0/0 .text __ct__16J3DMaterialTableFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DMaterialTable::J3DMaterialTable() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DMaterialAttach/__ct__16J3DMaterialTableFv.s"
J3DMaterialTable::J3DMaterialTable() {
mMaterialNum = 0;
mUniqueMatNum = 0;
mMaterialNodePointer = NULL;
mMaterialName = NULL;
field_0x10 = 0;
mTexture = NULL;
mTextureName = NULL;
field_0x1c = 0;
}
#pragma pop
/* 8032F604-8032F64C 329F44 0048+00 1/0 1/1 0/0 .text __dt__16J3DMaterialTableFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DMaterialTable::~J3DMaterialTable() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DMaterialAttach/__dt__16J3DMaterialTableFv.s"
}
#pragma pop
J3DMaterialTable::~J3DMaterialTable() {}
/* 8032F64C-8032F6F8 329F8C 00AC+00 0/0 1/1 5/5 .text
* removeMatColorAnimator__16J3DMaterialTableFP11J3DAnmColor */
#ifdef NONMATCHING
bool J3DMaterialTable::removeMatColorAnimator(J3DAnmColor* pAnmColor) {
bool ret = false;
u16 updateMatNum = pAnmColor->getUpdateMaterialNum();
for (u16 i = 0; i < updateMatNum; i++) {
if (pAnmColor->isValidUpdateMaterialID(i)) {
u16 updateMatID = pAnmColor->getUpdateMaterialID(i);
J3DMaterial* materialNode = getMaterialNodePointer(i);
if (materialNode->getMaterialAnm() == NULL) {
ret = true;
} else {
materialNode->getMaterialAnm()->setMatColorAnm(0, NULL);
}
}
}
return ret;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMaterialTable::removeMatColorAnimator(J3DAnmColor* param_0) {
asm bool J3DMaterialTable::removeMatColorAnimator(J3DAnmColor* param_0) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DMaterialAttach/removeMatColorAnimator__16J3DMaterialTableFP11J3DAnmColor.s"
}
#pragma pop
#endif
/* 8032F6F8-8032F7B4 32A038 00BC+00 0/0 5/5 10/10 .text
* removeTexNoAnimator__16J3DMaterialTableFP16J3DAnmTexPattern */
+176 -118
View File
@@ -4,62 +4,10 @@
//
#include "JSystem/J3DGraphAnimator/J3DModel.h"
#include "JSystem/J3DGraphBase/J3DTransform.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct J3DVtxColorCalc {
/* 8032E180 */ void calc(J3DModel*);
};
struct J3DVertexData {};
struct J3DVertexBuffer {
/* 80310F78 */ void setVertexData(J3DVertexData*);
/* 80311030 */ ~J3DVertexBuffer();
/* 803112D0 */ void copyLocalVtxArray(u32);
/* 80311478 */ void allocTransformedVtxPosArray();
/* 8031152C */ void allocTransformedVtxNrmArray();
};
struct J3DShapePacket {
/* 80312B20 */ J3DShapePacket();
/* 80312B74 */ ~J3DShapePacket();
/* 80312DBC */ void newDifferedDisplayList(u32);
};
struct J3DShape {
/* 80314DA8 */ void calcNBTScale(Vec const&, f32 (*)[3][3], f32 (*)[3][3]);
};
struct J3DMaterial {
/* 80316290 */ void countDLSize();
/* 80316E90 */ void newSharedDisplayList(u32);
/* 80316F24 */ void newSingleSharedDisplayList(u32);
};
struct J3DMatPacket {
/* 80312948 */ J3DMatPacket();
/* 803129A4 */ ~J3DMatPacket();
/* 80312A04 */ void addShapePacket(J3DShapePacket*);
};
struct J3DJoint {
/* 8032F254 */ void entryIn();
};
struct J3DDrawPacket {
/* 8031280C */ void newDisplayList(u32);
/* 80312898 */ void newSingleDisplayList(u32);
};
struct J3DDisplayListObj {
/* 8031256C */ void single_To_Double();
};
//
// Forward References:
//
@@ -146,9 +94,6 @@ extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" extern u8 const j3dDefaultScale[12];
extern "C" extern u8 const j3dDefaultMtx[48];
extern "C" extern u8 j3dSys[284];
//
// Declarations:
@@ -163,14 +108,29 @@ SECTION_SDATA2 static f32 lit_896[1 + 1 /* padding */] = {
};
/* 80327100-80327184 321A40 0084+00 0/0 3/3 0/0 .text initialize__8J3DModelFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DModel::initialize() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModel/initialize__8J3DModelFv.s"
void J3DModel::initialize() {
mModelData = NULL;
mFlags = 0;
field_0x0c = 0;
field_0x10 = 0;
mUserArea = 0;
mBaseScale.x = 1.0f;
mBaseScale.y = 1.0f;
mBaseScale.z = 1.0f;
PSMTXIdentity(mBaseTransformMtx);
PSMTXIdentity(mInternalView);
mMtxBuffer = NULL;
mMatPacket = NULL;
mShapePacket = NULL;
mDeformData = NULL;
mSkinDeform = NULL;
mVtxColorCalc = NULL;
field_0xd4 = 0;
field_0xd8 = 0;
}
#pragma pop
/* ############################################################################################## */
/* 803CED20-803CED44 02BE40 0024+00 1/1 3/3 0/0 .data __vt__8J3DModel */
@@ -195,32 +155,95 @@ SECTION_DATA extern void* __vt__12J3DMtxBuffer[3] = {
/* 80327184-80327300 321AC4 017C+00 0/0 3/3 0/0 .text
* entryModelData__8J3DModelFP12J3DModelDataUlUl */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DModel::entryModelData(J3DModelData* param_0, u32 param_1, u32 param_2) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModel/entryModelData__8J3DModelFP12J3DModelDataUlUl.s"
s32 J3DModel::entryModelData(J3DModelData* p_modelData, u32 param_1, u32 param_2) {
mModelData = p_modelData;
mMtxBuffer = new J3DMtxBuffer();
if (mMtxBuffer == NULL) {
return 4;
}
switch (mMtxBuffer->create(p_modelData, param_2)) {
case 0:
switch (createShapePacket(p_modelData)) {
case 0:
switch (createMatPacket(p_modelData, param_1)) {
case 0:
mVertexBuffer.setVertexData(&p_modelData->getVertexData());
prepareShapePackets();
if (param_1 & 0x1) {
onFlag(0x1);
}
if (param_1 & 0x2) {
onFlag(0x2);
}
if (param_1 & 0x10) {
onFlag(0x10);
}
if (param_1 & 0x20000) {
onFlag(0x20000);
}
if (param_1 & 0x40000) {
onFlag(0x40000);
}
if (param_1 & 0x80000) {
onFlag(0x80000);
}
if (param_1 & J3DMdlFlag_SkinPosCpu) {
onFlag(J3DMdlFlag_SkinPosCpu);
}
if (param_1 & J3DMdlFlag_SkinNrmCpu) {
onFlag(J3DMdlFlag_SkinNrmCpu);
}
return 0;
}
break;
}
break;
}
}
#pragma pop
/* 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;
if (mShapePacket == NULL) {
return 4;
}
for (int i = 0; i < p_modelData->getShapeNum(); i++) {
J3DShape* shapeNode = p_modelData->getShapeNodePointer(i);
mShapePacket[i]->setShape(shapeNode);
mShapePacket[i]->setModel(this);
}
}
return 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DModel::createShapePacket(J3DModelData* param_0) {
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
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DModel::createMatPacket(J3DModelData* param_0, u32 param_1) {
asm s32 J3DModel::createMatPacket(J3DModelData* param_0, u32 param_1) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModel/createMatPacket__8J3DModelFP12J3DModelDataUl.s"
}
@@ -288,52 +311,101 @@ asm void J3DModel::diff() {
/* 80327A2C-80327AA0 32236C 0074+00 0/0 1/1 2/2 .text setDeformData__8J3DModelFP13J3DDeformDataUl
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DModel::setDeformData(J3DDeformData* param_0, u32 param_1) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModel/setDeformData__8J3DModelFP13J3DDeformDataUl.s"
s32 J3DModel::setDeformData(J3DDeformData* p_deformData, u32 param_1) {
mDeformData = p_deformData;
if (p_deformData == NULL) {
return 0;
}
switch (mVertexBuffer.copyLocalVtxArray(param_1)) {
case 0:
if (param_1 & 4) {
p_deformData->offAllFlag(1);
}
return 0;
}
}
#pragma pop
/* 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) {
mSkinDeform = p_skinDeform;
if (p_skinDeform == NULL) {
offFlag(J3DMdlFlag_SkinPosCpu);
offFlag(J3DMdlFlag_SkinNrmCpu);
return 5;
} else {
mSkinDeform->initMtxIndexArray(mModelData);
if (mModelData->checkFlag(0x100)) {
mSkinDeform->changeFastSkinDL(mModelData);
param_1 = 0;
mSkinDeform->transformVtxPosNrm(mModelData);
mSkinDeform->initSkinInfo(mModelData);
}
p_skinDeform = NULL;
if ((~param_1 & 2)) {
if (mVertexBuffer.allocTransformedVtxPosArray()) {
offFlag(J3DMdlFlag_SkinPosCpu);
return 0;
}
onFlag(J3DMdlFlag_SkinPosCpu);
} else {
offFlag(J3DMdlFlag_SkinPosCpu);
}
if ((~param_1 & 4)) {
if (mVertexBuffer.allocTransformedVtxNrmArray()) {
onFlag(J3DMdlFlag_SkinNrmCpu);
}
offFlag(J3DMdlFlag_SkinNrmCpu);
} else {
offFlag(J3DMdlFlag_SkinNrmCpu);
}
}
return 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DModel::setSkinDeform(J3DSkinDeform* param_0, u32 param_1) {
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 */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DModel::calcAnmMtx() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModel/calcAnmMtx__8J3DModelFv.s"
void J3DModel::calcAnmMtx() {
j3dSys.setModel(this);
if (checkFlag(2)) {
getModelData()->getJointTree().calc(mMtxBuffer, j3dDefaultScale, j3dDefaultMtx);
} else {
getModelData()->getJointTree().calc(mMtxBuffer, mBaseScale, mBaseTransformMtx);
}
}
#pragma pop
/* 80327C58-80327CA4 322598 004C+00 1/1 1/1 1/1 .text calcWeightEnvelopeMtx__8J3DModelFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DModel::calcWeightEnvelopeMtx() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModel/calcWeightEnvelopeMtx__8J3DModelFv.s"
void J3DModel::calcWeightEnvelopeMtx() {
if (getModelData()->getWEvlpMtxNum() != 0 && !checkFlag(0x10)) {
if (!getModelData()->checkFlag(0x100)) {
mMtxBuffer->calcWeightEnvelopeMtx();
}
}
}
#pragma pop
/* 80327CA4-80327CF0 3225E4 004C+00 1/0 0/0 0/0 .text update__8J3DModelFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DModel::update() {
extern "C" asm void update__8J3DModelFv() {
// asm void J3DModel::update() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModel/update__8J3DModelFv.s"
}
@@ -370,14 +442,9 @@ asm void J3DModel::viewCalc() {
#pragma pop
/* 80328190-803281B4 322AD0 0024+00 1/1 0/0 0/0 .text calcNrmMtx__8J3DModelFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DModel::calcNrmMtx() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModel/calcNrmMtx__8J3DModelFv.s"
void J3DModel::calcNrmMtx() {
mMtxBuffer->calcNrmMtx();
}
#pragma pop
/* 803281B4-803282B8 322AF4 0104+00 1/1 0/0 0/0 .text calcBumpMtx__8J3DModelFv */
#pragma push
@@ -390,14 +457,11 @@ asm void J3DModel::calcBumpMtx() {
#pragma pop
/* 803282B8-803282EC 322BF8 0034+00 1/1 0/0 0/0 .text calcBBoardMtx__8J3DModelFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DModel::calcBBoardMtx() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModel/calcBBoardMtx__8J3DModelFv.s"
void J3DModel::calcBBoardMtx() {
if (mModelData->checkBBoardFlag()) {
mMtxBuffer->calcBBoardMtx();
}
}
#pragma pop
/* 803282EC-80328350 322C2C 0064+00 2/2 0/0 0/0 .text prepareShapePackets__8J3DModelFv */
#pragma push
@@ -410,20 +474,14 @@ asm void J3DModel::prepareShapePackets() {
#pragma pop
/* 80328350-803283B4 322C90 0064+00 1/0 0/0 0/0 .text __dt__8J3DModelFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DModel::~J3DModel() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModel/__dt__8J3DModelFv.s"
}
#pragma pop
J3DModel::~J3DModel() {}
/* 803283B4-803283FC 322CF4 0048+00 1/0 0/0 0/0 .text __dt__12J3DMtxBufferFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DMtxBuffer::~J3DMtxBuffer() {
extern "C" asm void __dt__12J3DMtxBufferFv() {
// asm J3DMtxBuffer::~J3DMtxBuffer() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModel/__dt__12J3DMtxBufferFv.s"
}
+93 -91
View File
@@ -4,40 +4,11 @@
//
#include "JSystem/J3DGraphAnimator/J3DModelData.h"
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
#include "dol2asm.h"
#include "dolphin/os/OS.h"
#include "dolphin/types.h"
//
// Types:
//
struct J3DVertexData {
/* 80310EF8 */ J3DVertexData();
};
struct J3DShapeTable {
/* 80326134 */ ~J3DShapeTable();
};
struct J3DMaterialTable {
/* 8032F5D0 */ J3DMaterialTable();
/* 8032F604 */ ~J3DMaterialTable();
};
struct J3DMaterial {
/* 80316290 */ void countDLSize();
/* 80316E90 */ void newSharedDisplayList(u32);
/* 80316F24 */ void newSingleSharedDisplayList(u32);
};
struct J3DJointTree {
/* 80325A18 */ J3DJointTree();
};
struct J3DDrawMtxData {
/* 803115F4 */ ~J3DDrawMtxData();
};
//
// Forward References:
//
@@ -66,32 +37,23 @@ extern "C" void newSingleSharedDisplayList__11J3DMaterialFUl();
extern "C" void __ct__12J3DJointTreeFv();
extern "C" void __ct__16J3DMaterialTableFv();
extern "C" void __dt__16J3DMaterialTableFv();
extern "C" void OSDisableInterrupts();
extern "C" void OSRestoreInterrupts();
extern "C" void OSDisableScheduler();
extern "C" void OSEnableScheduler();
extern "C" void GDInitGDLObj();
extern "C" void _savegpr_27();
extern "C" void _savegpr_29();
extern "C" void _restgpr_27();
extern "C" void _restgpr_29();
extern "C" extern void* __vt__12J3DJointTree[4 + 1 /* padding */];
extern "C" extern u8 j3dSys[284];
extern "C" extern u8 __GDCurrentDL[4];
//
// Declarations:
//
/* 80325D88-80325DA0 3206C8 0018+00 1/1 2/2 0/0 .text clear__12J3DModelDataFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DModelData::clear() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModelData/clear__12J3DModelDataFv.s"
void J3DModelData::clear() {
field_0x4 = 0;
mFlags = 0;
field_0xc = 0;
field_0xe = 0;
}
#pragma pop
/* ############################################################################################## */
/* 803CED08-803CED14 02BE28 000C+00 3/3 0/0 0/0 .data __vt__13J3DShapeTable */
@@ -109,89 +71,129 @@ SECTION_DATA extern void* __vt__12J3DModelData[3] = {
};
/* 80325DA0-80325E14 3206E0 0074+00 0/0 2/2 0/0 .text __ct__12J3DModelDataFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DModelData::J3DModelData() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModelData/__ct__12J3DModelDataFv.s"
J3DModelData::J3DModelData() {
clear();
}
#pragma pop
/* 80325E14-80325EC8 320754 00B4+00 0/0 2/2 0/0 .text newSharedDisplayList__12J3DModelDataFUl */
#ifdef NONMATCHING
s32 J3DModelData::newSharedDisplayList(u32 param_0) {
u16 matNum = getMaterialNum();
for (u16 i = 0; i < matNum; i++) {
if ((param_0 & 0x40000)) {
J3DMaterial* matNode = getMaterialNodePointer(i);
u32 dl_size = matNode->countDLSize();
switch (matNode->newSingleSharedDisplayList(dl_size)) {
case 0:
continue;
}
break;
} else {
J3DMaterial* matNode = getMaterialNodePointer(i);
u32 dl_size = matNode->countDLSize();
switch (matNode->newSharedDisplayList(dl_size)) {
case 0:
continue;
}
break;
}
}
return 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DModelData::newSharedDisplayList(u32 param_0) {
asm s32 J3DModelData::newSharedDisplayList(u32 param_0) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModelData/newSharedDisplayList__12J3DModelDataFUl.s"
}
#pragma pop
#endif
/* ############################################################################################## */
/* 804515E8-804515EC 000AE8 0004+00 1/1 0/0 0/0 .sbss sInterruptFlag$965 */
static u8 sInterruptFlag[4];
static s32 sInterruptFlag;
/* 804515EC-804515F0 000AEC 0004+00 1/1 0/0 0/0 .sbss None */
static u8 data_804515EC[4];
static s8 sInitInterruptFlag;
/* 80325EC8-80325F94 320808 00CC+00 0/0 1/1 0/0 .text indexToPtr__12J3DModelDataFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DModelData::indexToPtr() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModelData/indexToPtr__12J3DModelDataFv.s"
void J3DModelData::indexToPtr() {
J3DTexture* tex = getTexture();
j3dSys.setTexture(tex);
if (!sInitInterruptFlag) {
sInterruptFlag = OSDisableInterrupts();
sInitInterruptFlag = true;
}
OSDisableScheduler();
GDLObj gdl_obj;
u16 matNum = getMaterialNum();
for (u16 i = 0; i < matNum; i++) {
J3DMaterial* matNode = getMaterialNodePointer(i);
J3DDisplayListObj* dl_obj = matNode->getSharedDisplayListObj();
GDInitGDLObj(&gdl_obj, dl_obj->getDisplayList(0), dl_obj->getDisplayListSize());
GDSetCurrent(&gdl_obj);
matNode->getTevBlock()->indexToPtr();
}
GDSetCurrent(NULL);
OSEnableScheduler();
OSRestoreInterrupts(sInterruptFlag);
}
#pragma pop
/* 80325F94-8032600C 3208D4 0078+00 0/0 2/2 0/0 .text makeSharedDL__12J3DModelDataFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DModelData::makeSharedDL() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModelData/makeSharedDL__12J3DModelDataFv.s"
void J3DModelData::makeSharedDL() {
J3DTexture* tex = getTexture();
j3dSys.setTexture(tex);
u16 matNum = getMaterialNum();
for (u16 i = 0; i < matNum; i++) {
getMaterialNodePointer(i)->makeSharedDisplayList();
}
}
#pragma pop
/* 8032600C-803260CC 32094C 00C0+00 0/0 3/3 7/7 .text simpleCalcMaterial__12J3DModelDataFUsPA4_f
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DModelData::simpleCalcMaterial(u16 param_0, f32 (*param_1)[4]) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModelData/simpleCalcMaterial__12J3DModelDataFUsPA4_f.s"
void J3DModelData::simpleCalcMaterial(u16 idx, Mtx param_1) {
syncJ3DSysFlags();
J3DJoint* jointNode = getJointNodePointer(idx);
for (J3DMaterial* mat = jointNode->getMesh(); mat != NULL; mat = mat->getNext()) {
if (mat->getMaterialAnm() != NULL) {
mat->getMaterialAnm()->calc(mat);
}
mat->calc(param_1);
}
}
#pragma pop
/* 803260CC-803260F8 320A0C 002C+00 0/0 1/1 0/0 .text syncJ3DSysPointers__12J3DModelDataCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DModelData::syncJ3DSysPointers() const {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModelData/syncJ3DSysPointers__12J3DModelDataCFv.s"
void J3DModelData::syncJ3DSysPointers() const {
j3dSys.setTexture(getTexture());
j3dSys.setVtxPos(getVtxPosArray());
j3dSys.setVtxNrm(getVtxNrmArray());
j3dSys.setVtxCol(getVtxColorArray(0));
}
#pragma pop
/* 803260F8-80326134 320A38 003C+00 1/1 5/5 0/0 .text syncJ3DSysFlags__12J3DModelDataCFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DModelData::syncJ3DSysFlags() const {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModelData/syncJ3DSysFlags__12J3DModelDataCFv.s"
void J3DModelData::syncJ3DSysFlags() const {
if (checkFlag(0x20)) {
j3dSys.onFlag(0x40000000);
} else {
j3dSys.offFlag(0x40000000);
}
}
#pragma pop
/* 80326134-8032617C 320A74 0048+00 1/0 0/0 0/0 .text __dt__13J3DShapeTableFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DShapeTable::~J3DShapeTable() {
extern "C" asm void __dt__13J3DShapeTableFv() {
// asm J3DShapeTable::~J3DShapeTable() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DModelData/__dt__13J3DShapeTableFv.s"
}
+5 -39
View File
@@ -7,37 +7,6 @@
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct Vec {};
struct J3DShape {
/* 80314E28 */ void countBumpMtxNum() const;
};
struct J3DModelData {};
struct J3DMtxBuffer {
/* 80326214 */ void initialize();
/* 80326258 */ void create(J3DModelData*, u32);
/* 80326364 */ void createAnmMtx(J3DModelData*);
/* 803263F0 */ void createWeightEnvelopeMtx(J3DModelData*);
/* 8032648C */ void setNoUseDrawMtx();
/* 803264B8 */ void createDoubleDrawMtx(J3DModelData*, u32);
/* 80326664 */ void createBumpMtxArray(J3DModelData*, u32);
/* 803268D4 */ void calcWeightEnvelopeMtx();
/* 80326ACC */ void calcDrawMtx(u32, Vec const&, f32 const (&)[3][4]);
/* 80326D3C */ void calcNrmMtx();
/* 80326EF0 */ void calcBBoardMtx();
static u8 sNoUseDrawMtx[48];
static u8 sNoUseNrmMtx[36 + 4 /* padding */];
static void* sNoUseDrawMtxPtr;
static void* sNoUseNrmMtxPtr;
};
//
// Forward References:
//
@@ -70,8 +39,6 @@ extern "C" void J3DCalcYBBoardMtx__FPA4_f();
extern "C" void J3DPSCalcInverseTranspose__FPA4_fPA3_f();
extern "C" void J3DPSMtxArrayConcat__FPA4_fPA4_fPA4_fUl();
extern "C" void countBumpMtxNum__8J3DShapeCFv();
extern "C" void PSMTXCopy();
extern "C" void PSMTXConcat();
extern "C" void _savegpr_19();
extern "C" void _savegpr_24();
extern "C" void _savegpr_27();
@@ -82,7 +49,6 @@ extern "C" void _restgpr_24();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" extern u8 j3dSys[284];
//
// Declarations:
@@ -102,7 +68,7 @@ asm void J3DMtxBuffer::initialize() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMtxBuffer::create(J3DModelData* param_0, u32 param_1) {
asm s32 J3DMtxBuffer::create(J3DModelData* param_0, u32 param_1) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DMtxBuffer/create__12J3DMtxBufferFP12J3DModelDataUl.s"
}
@@ -132,16 +98,16 @@ asm void J3DMtxBuffer::createWeightEnvelopeMtx(J3DModelData* param_0) {
/* ############################################################################################## */
/* 804371C0-804371F0 063EE0 0030+00 1/0 0/0 0/0 .bss sNoUseDrawMtx__12J3DMtxBuffer */
u8 J3DMtxBuffer::sNoUseDrawMtx[48];
Mtx J3DMtxBuffer::sNoUseDrawMtx;
/* 804371F0-80437218 063F10 0024+04 1/0 0/0 0/0 .bss sNoUseNrmMtx__12J3DMtxBuffer */
u8 J3DMtxBuffer::sNoUseNrmMtx[36 + 4 /* padding */];
Mtx33 J3DMtxBuffer::sNoUseNrmMtx;
/* 80450970-80450974 -00001 0004+00 1/1 0/0 0/0 .sdata sNoUseDrawMtxPtr__12J3DMtxBuffer */
SECTION_SDATA void* J3DMtxBuffer::sNoUseDrawMtxPtr = (void*)&J3DMtxBuffer::sNoUseDrawMtx;
Mtx* J3DMtxBuffer::sNoUseDrawMtxPtr = &J3DMtxBuffer::sNoUseDrawMtx;
/* 80450974-80450978 -00001 0004+00 1/1 0/0 0/0 .sdata sNoUseNrmMtxPtr__12J3DMtxBuffer */
SECTION_SDATA void* J3DMtxBuffer::sNoUseNrmMtxPtr = (void*)&J3DMtxBuffer::sNoUseNrmMtx;
Mtx33* J3DMtxBuffer::sNoUseNrmMtxPtr = &J3DMtxBuffer::sNoUseNrmMtx;
/* 8032648C-803264B8 320DCC 002C+00 1/1 0/0 0/0 .text setNoUseDrawMtx__12J3DMtxBufferFv
*/
+30 -83
View File
@@ -1,93 +1,40 @@
//
// Generated By: dol2asm
// Translation Unit: J3DShapeTable
//
#include "JSystem/J3DGraphAnimator/J3DShapeTable.h"
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct J3DVertexData {};
struct J3DDrawMtxData {};
struct J3DShapeTable {
/* 803258A0 */ void hide();
/* 803258D8 */ void show();
/* 80325910 */ void initShapeNodes(J3DDrawMtxData*, J3DVertexData*);
/* 8032597C */ void sortVcdVatCmd();
};
struct J3DShape {
/* 80314F5C */ void isSameVcdVatCmd(J3DShape*);
/* 80315260 */ void makeVcdVatCmd();
};
//
// Forward References:
//
extern "C" void hide__13J3DShapeTableFv();
extern "C" void show__13J3DShapeTableFv();
extern "C" void initShapeNodes__13J3DShapeTableFP14J3DDrawMtxDataP13J3DVertexData();
extern "C" void sortVcdVatCmd__13J3DShapeTableFv();
//
// External References:
//
extern "C" void isSameVcdVatCmd__8J3DShapeFP8J3DShape();
extern "C" void makeVcdVatCmd__8J3DShapeFv();
extern "C" void _savegpr_25();
extern "C" void _savegpr_27();
extern "C" void _restgpr_25();
extern "C" void _restgpr_27();
//
// Declarations:
//
/* 803258A0-803258D8 3201E0 0038+00 0/0 0/0 6/6 .text hide__13J3DShapeTableFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeTable::hide() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DShapeTable/hide__13J3DShapeTableFv.s"
void J3DShapeTable::hide() {
u16 shapeNum = mShapeNum;
for (u16 i = 0; i < shapeNum; i++) {
mShapeNodePointer[i]->onFlag(1);
}
}
#pragma pop
/* 803258D8-80325910 320218 0038+00 0/0 0/0 6/6 .text show__13J3DShapeTableFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeTable::show() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DShapeTable/show__13J3DShapeTableFv.s"
void J3DShapeTable::show() {
u16 shapeNum = mShapeNum;
for (u16 i = 0; i < shapeNum; i++) {
mShapeNodePointer[i]->offFlag(1);
}
}
#pragma pop
/* 80325910-8032597C 320250 006C+00 0/0 2/2 0/0 .text
* initShapeNodes__13J3DShapeTableFP14J3DDrawMtxDataP13J3DVertexData */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeTable::initShapeNodes(J3DDrawMtxData* param_0, J3DVertexData* param_1) {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DShapeTable/initShapeNodes__13J3DShapeTableFP14J3DDrawMtxDataP13J3DVertexData.s"
}
#pragma pop
void J3DShapeTable::initShapeNodes(J3DDrawMtxData* pMtxData, J3DVertexData* pVtxData) {
u16 shapeNum = mShapeNum;
for (u16 i = 0; i < shapeNum; i++) {
J3DShape* shapeNode = mShapeNodePointer[i];
/* 8032597C-80325A18 3202BC 009C+00 0/0 2/2 0/0 .text sortVcdVatCmd__13J3DShapeTableFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapeTable::sortVcdVatCmd() {
nofralloc
#include "asm/JSystem/J3DGraphAnimator/J3DShapeTable/sortVcdVatCmd__13J3DShapeTableFv.s"
shapeNode->setDrawMtxDataPointer(pMtxData);
shapeNode->setVertexDataPointer(pVtxData);
shapeNode->makeVcdVatCmd();
}
}
void J3DShapeTable::sortVcdVatCmd() {
u16 shapeNum = mShapeNum;
for (u16 next = 0; next < shapeNum; next++) {
for (u16 prev = 0; prev < next; prev++) {
if (mShapeNodePointer[next]->isSameVcdVatCmd(mShapeNodePointer[prev])) {
void* nodeVatCmd = mShapeNodePointer[prev]->getVcdVatCmd();
mShapeNodePointer[next]->setVcdVatCmd(nodeVatCmd);
}
}
}
}
#pragma pop
@@ -11,53 +11,8 @@
// Types:
//
struct Vec {};
struct J3DModel {};
struct J3DVtxColorCalc {
/* 8032E180 */ void calc(J3DModel*);
};
struct J3DVertexBuffer {};
struct J3DSkinNList {
/* 8032C6E4 */ J3DSkinNList();
/* 8032C85C */ void calcSkin_VtxPosF32(f32 (*)[4], void*, void*);
/* 8032C8E4 */ void calcSkin_VtxNrmF32(f32 (*)[4], void*, void*);
};
struct J3DMtxBuffer {};
struct J3DModelData {};
struct J3DSkinDeform {
/* 8032C96C */ J3DSkinDeform();
/* 8032C9B0 */ void initSkinInfo(J3DModelData*);
/* 8032CF44 */ void initMtxIndexArray(J3DModelData*);
/* 8032D378 */ void changeFastSkinDL(J3DModelData*);
/* 8032D5C4 */ void calcNrmMtx(J3DMtxBuffer*);
/* 8032D738 */ void transformVtxPosNrm(J3DModelData*);
/* 8032D87C */ void calcAnmInvJointMtx(J3DMtxBuffer*);
/* 8032D8F4 */ void deformFastVtxPos_F32(J3DVertexBuffer*, J3DMtxBuffer*) const;
/* 8032DA1C */ void deformFastVtxNrm_F32(J3DVertexBuffer*, J3DMtxBuffer*) const;
/* 8032DB50 */ void deformVtxPos_F32(J3DVertexBuffer*, J3DMtxBuffer*) const;
/* 8032DC74 */ void deformVtxPos_S16(J3DVertexBuffer*, J3DMtxBuffer*) const;
/* 8032DDB8 */ void deformVtxNrm_F32(J3DVertexBuffer*) const;
/* 8032DEBC */ void deformVtxNrm_S16(J3DVertexBuffer*) const;
/* 8032DFDC */ void deform(J3DModel*);
/* 8032E064 */ void deform(J3DVertexBuffer*, J3DMtxBuffer*);
/* 8032E1B0 */ ~J3DSkinDeform();
static u8 sWorkArea_WEvlpMixMtx[4096];
static u8 sWorkArea_WEvlpMixWeight[4096];
static u8 sWorkArea_MtxReg[2048 + 8 /* padding */];
};
struct J3DShape {
/* 80315260 */ void makeVcdVatCmd();
};
//
// Forward References:
//
@@ -102,10 +57,6 @@ extern "C" void J3DGQRSetup7__FUlUlUlUl();
extern "C" void J3DPSCalcInverseTranspose__FPA4_fPA3_f();
extern "C" void makeVcdVatCmd__8J3DShapeFv();
extern "C" void DCStoreRange();
extern "C" void PSMTXConcat();
extern "C" void PSMTXInverse();
extern "C" void PSMTXMultVec();
extern "C" void PSMTXMultVecSR();
extern "C" void __construct_new_array();
extern "C" void __save_gpr();
extern "C" void _savegpr_17();
File diff suppressed because it is too large Load Diff
+14 -324
View File
@@ -7,315 +7,6 @@
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct _GXCullMode {};
struct J3DZMode {};
struct J3DTexMtx {};
struct J3DTexGenBlockPatched {
/* 80317180 */ ~J3DTexGenBlockPatched();
/* 80317644 */ void initialize();
};
struct J3DTexGenBlockBasic {
/* 803176A4 */ void initialize();
};
struct J3DTexGenBlock4 {
/* 80317674 */ void initialize();
};
struct J3DNBTScale {};
struct J3DTexCoord {
/* 8000E464 */ J3DTexCoord();
};
struct J3DTexGenBlock {
/* 8000DFD8 */ bool getTexMtx(u32);
/* 8000DFE0 */ bool getTexCoord(u32);
/* 8000DFE8 */ bool getTexGenNum() const;
/* 8000E0CC */ void setTexCoord(u32, J3DTexCoord const*);
/* 8031741C */ void setTexGenNum(u32 const*);
/* 8000E0D0 */ void setTexGenNum(u32);
/* 8003AB2C */ void setTexMtx(u32, J3DTexMtx*);
/* 803171DC */ ~J3DTexGenBlock();
/* 803172FC */ bool countDLSize();
/* 80317334 */ bool getNBTScale();
/* 80317354 */ void reset(J3DTexGenBlock*);
/* 80317420 */ void setNBTScale(J3DNBTScale);
/* 80317424 */ void setNBTScale(J3DNBTScale const*);
/* 80317428 */ bool getTexMtxOffset() const;
/* 80317430 */ void setTexMtxOffset(u32);
};
struct J3DTevSwapModeTable {
/* 8000E134 */ J3DTevSwapModeTable();
};
struct J3DTevStage {
/* 8000E230 */ J3DTevStage();
};
struct J3DTevOrder {
/* 8000E140 */ J3DTevOrder();
};
struct J3DTevBlock4 {
/* 803178EC */ void initialize();
};
struct J3DTevBlock2 {
/* 80317810 */ void initialize();
};
struct J3DTevBlock16 {
/* 80317A00 */ void initialize();
};
struct J3DTevBlock1 {
/* 803177E8 */ void initialize();
};
struct J3DTevBlock {
/* 80317224 */ ~J3DTevBlock();
/* 8031730C */ bool countDLSize();
/* 80317330 */ void load();
/* 80317350 */ void reset(J3DTevBlock*);
};
struct J3DPatchedMaterial {
/* 80316FB8 */ void initialize();
/* 80316FD8 */ void makeDisplayList();
/* 80316FDC */ void makeSharedDisplayList();
/* 80316FE0 */ void load();
/* 80316FFC */ void loadSharedDL();
/* 8031703C */ void reset();
/* 80317040 */ void change();
};
struct J3DPEBlockFull {
/* 80317B58 */ void initialize();
};
struct J3DPEBlockFogOff {
/* 80317B34 */ void initialize();
};
struct J3DFog {};
struct J3DAlphaComp {};
struct J3DBlend {};
struct J3DPEBlock {
/* 8000DBCC */ void patch();
/* 8000DF3C */ bool getZCompLoc() const;
/* 8000DF44 */ bool getZMode();
/* 8000DF4C */ bool getBlend();
/* 8000DF54 */ bool getAlphaComp();
/* 8000DF5C */ bool getFog();
/* 8000E010 */ void setZCompLoc(u8);
/* 80317378 */ void setZCompLoc(u8 const*);
/* 8000E014 */ void setZMode(J3DZMode);
/* 80317374 */ void setZMode(J3DZMode const*);
/* 8000E018 */ void setBlend(J3DBlend const&);
/* 80317370 */ void setBlend(J3DBlend const*);
/* 8000E01C */ void setAlphaComp(J3DAlphaComp const&);
/* 8031736C */ void setAlphaComp(J3DAlphaComp const*);
/* 803172B4 */ ~J3DPEBlock();
/* 8031731C */ bool countDLSize();
/* 80317344 */ void diff(u32);
/* 80317348 */ void reset(J3DPEBlock*);
/* 8031735C */ void diffFog();
/* 80317360 */ void diffBlend();
/* 80317364 */ void setFog(J3DFog*);
/* 80317368 */ void setFog(J3DFog);
/* 80317380 */ void setDither(u8 const*);
/* 8031737C */ void setDither(u8);
/* 80317384 */ bool getDither() const;
/* 8031738C */ bool getFogOffset() const;
/* 80317394 */ void setFogOffset(u32);
};
struct J3DDisplayListObj {
/* 80312488 */ void newDisplayList(u32);
/* 80312508 */ void newSingleDisplayList(u32);
/* 80312618 */ void callDL() const;
/* 80312644 */ void beginDL();
/* 80312698 */ void endDL();
/* 803126F4 */ void beginPatch();
/* 80312714 */ void endPatch();
};
struct J3DMaterial {
/* 803157A0 */ void createColorBlock(u32);
/* 803159A0 */ void createTexGenBlock(u32);
/* 80315B04 */ void createTevBlock(int);
/* 80315E78 */ void createIndBlock(int);
/* 80315F60 */ void createPEBlock(u32, u32);
/* 80316100 */ void calcSizeColorBlock(u32);
/* 80316150 */ void calcSizeTexGenBlock(u32);
/* 8031617C */ void calcSizeTevBlock(int);
/* 803161C4 */ void calcSizeIndBlock(int);
/* 803161D8 */ void calcSizePEBlock(u32, u32);
/* 80316240 */ void initialize();
/* 80316290 */ void countDLSize();
/* 80316344 */ void makeDisplayList_private(J3DDisplayListObj*);
/* 80316620 */ void makeDisplayList();
/* 80316668 */ void makeSharedDisplayList();
/* 8031668C */ void load();
/* 803166DC */ void loadSharedDL();
/* 80316740 */ void patch();
/* 803167D8 */ void diff(u32);
/* 803169DC */ void calc(f32 const (*)[4]);
/* 80316A54 */ void calcDiffTexMtx(f32 const (*)[4]);
/* 80316AB0 */ void setCurrentMtx();
/* 80316AC8 */ void calcCurrentMtx();
/* 80316D68 */ void copy(J3DMaterial*);
/* 80316E14 */ void reset();
/* 80316E70 */ void change();
/* 80316E90 */ void newSharedDisplayList(u32);
/* 80316F24 */ void newSingleSharedDisplayList(u32);
};
struct J3DMatPacket {
/* 80312A24 */ void beginDiff();
/* 80312A4C */ void endDiff();
};
struct J3DLockedMaterial {
/* 80317044 */ void initialize();
/* 80317064 */ void makeDisplayList();
/* 80317068 */ void makeSharedDisplayList();
/* 8031706C */ void load();
/* 80317088 */ void loadSharedDL();
/* 803170C8 */ void patch();
/* 803170CC */ void diff(u32);
/* 803170D0 */ void calc(f32 const (*)[4]);
/* 803170D4 */ void reset();
/* 803170D8 */ void change();
};
struct J3DLightObj {};
struct J3DIndTexOrder {
/* 8000E128 */ J3DIndTexOrder();
};
struct J3DIndTexMtx {
/* 8000E064 */ ~J3DIndTexMtx();
/* 8000E0F0 */ J3DIndTexMtx();
};
struct J3DIndTexCoordScale {
/* 8000E024 */ ~J3DIndTexCoordScale();
/* 8000E0E4 */ J3DIndTexCoordScale();
};
struct J3DIndTevStage {
/* 8000E14C */ J3DIndTevStage();
};
struct J3DIndBlock {
/* 8000DF64 */ bool getIndTexCoordScale(u32);
/* 8000DF6C */ bool getIndTexMtx(u32);
/* 8000DF74 */ bool getIndTexOrder(u32);
/* 8000DF7C */ bool getIndTexStageNum() const;
/* 8000E020 */ void setIndTexCoordScale(u32, J3DIndTexCoordScale);
/* 80317418 */ void setIndTexCoordScale(u32, J3DIndTexCoordScale const*);
/* 8000E060 */ void setIndTexMtx(u32, J3DIndTexMtx);
/* 80317414 */ void setIndTexMtx(u32, J3DIndTexMtx const*);
/* 8000E0A0 */ void setIndTexStageNum(u8);
/* 8031726C */ ~J3DIndBlock();
/* 80317314 */ bool countDLSize();
/* 8031734C */ void reset(J3DIndBlock*);
/* 8031740C */ void setIndTexOrder(u32, J3DIndTexOrder const*);
/* 80317410 */ void setIndTexOrder(u32, J3DIndTexOrder);
};
struct J3DIndBlockNull {
/* 80317398 */ void diff(u32);
/* 8031739C */ void load();
/* 803173A0 */ void reset(J3DIndBlock*);
/* 803173A4 */ void getType();
/* 803173B0 */ ~J3DIndBlockNull();
};
struct J3DIndBlockFull {
/* 80317B28 */ void initialize();
};
struct J3DGXColorS10 {
/* 8000E460 */ J3DGXColorS10();
};
struct J3DGXColor {
/* 8000E538 */ J3DGXColor();
};
struct J3DFogInfo {
/* 80325800 */ void operator=(J3DFogInfo const&);
};
struct J3DColorChan {
/* 8000E47C */ J3DColorChan();
};
struct J3DColorBlockLightOn {
/* 80317580 */ void initialize();
};
struct J3DColorBlockLightOff {
/* 803170DC */ ~J3DColorBlockLightOff();
/* 8031747C */ void initialize();
};
struct J3DColorBlockAmbientOn {
/* 803174DC */ void initialize();
};
struct J3DColorBlock {
/* 8000DBD0 */ void patchLight();
/* 8000DFF0 */ bool getAmbColor(u32);
/* 8000DFF8 */ bool getColorChan(u32);
/* 8000E000 */ bool getMatColor(u32);
/* 8000E008 */ bool getColorChanNum() const;
/* 801A4C0C */ void setAmbColor(u32, J3DGXColor const*);
/* 8000E0D4 */ void setAmbColor(u32, J3DGXColor);
/* 80317450 */ void setColorChan(u32, J3DColorChan const*);
/* 8000E0D8 */ void setColorChan(u32, J3DColorChan const&);
/* 80317448 */ void setMatColor(u32, J3DGXColor const*);
/* 8000E0DC */ void setMatColor(u32, J3DGXColor);
/* 8031744C */ void setColorChanNum(u8 const*);
/* 8000E0E0 */ void setColorChanNum(u8);
/* 801A4C08 */ void setLight(u32, J3DLightObj*);
/* 80317138 */ ~J3DColorBlock();
/* 80317304 */ bool countDLSize();
/* 80317324 */ void load();
/* 80317328 */ s32 getCullMode() const;
/* 8031733C */ void patch();
/* 80317340 */ void diff(u32);
/* 80317358 */ void reset(J3DColorBlock*);
/* 80317434 */ void patchMatColor();
/* 80317438 */ void diffAmbColor();
/* 8031743C */ void diffMatColor();
/* 80317440 */ void diffColorChan();
/* 80317444 */ void diffLightObj(u32);
/* 80317454 */ bool getLight(u32);
/* 8031745C */ void setCullMode(u8);
/* 80317460 */ void setCullMode(u8 const*);
/* 80317464 */ bool getMatColorOffset() const;
/* 8031746C */ bool getColorChanOffset() const;
/* 80317474 */ void setMatColorOffset(u32);
/* 80317478 */ void setColorChanOffset(u32);
};
//
// Forward References:
//
@@ -386,7 +77,7 @@ extern "C" void diff__13J3DColorBlockFUl();
extern "C" void diff__10J3DPEBlockFUl();
extern "C" void reset__10J3DPEBlockFP10J3DPEBlock();
extern "C" void reset__11J3DIndBlockFP11J3DIndBlock();
extern "C" void reset__11J3DTevBlockFP11J3DTevBlock();
extern "C" void reset__11J3DTevBlockFP11J3DTevBlock(J3DTevBlock* param_0);
extern "C" void reset__14J3DTexGenBlockFP14J3DTexGenBlock();
extern "C" void reset__13J3DColorBlockFP13J3DColorBlock();
extern "C" void diffFog__10J3DPEBlockFv();
@@ -539,8 +230,6 @@ extern "C" extern void* __vt__13J3DPEBlockOpa[31];
extern "C" extern void* __vt__15J3DIndBlockFull[19];
extern "C" extern void* __vt__11J3DTevBlock[55];
extern "C" extern void* __vt__21J3DColorBlockLightOff[36 + 1 /* padding */];
extern "C" extern u8 j3dSys[284];
extern "C" extern u8 __GDCurrentDL[4];
extern "C" extern u32 j3dDefaultBlendInfo;
extern "C" extern u16 j3dDefaultAlphaCmpID;
extern "C" extern u16 j3dDefaultZModeID[1 + 1 /* padding */];
@@ -870,7 +559,7 @@ asm void J3DMaterial::initialize() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMaterial::countDLSize() {
asm u32 J3DMaterial::countDLSize() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMaterial/countDLSize__11J3DMaterialFv.s"
}
@@ -951,7 +640,8 @@ asm void J3DMaterial::diff(u32 param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMaterial::calc(f32 const (*param_0)[4]) {
extern "C" asm void calc__11J3DMaterialFPA4_Cf() {
// asm void J3DMaterial::calc(f32 const (*param_0)[4]) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMaterial/calc__11J3DMaterialFPA4_Cf.s"
}
@@ -1022,7 +712,7 @@ asm void J3DMaterial::change() {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMaterial::newSharedDisplayList(u32 param_0) {
asm s32 J3DMaterial::newSharedDisplayList(u32 param_0) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMaterial/newSharedDisplayList__11J3DMaterialFUl.s"
}
@@ -1033,7 +723,7 @@ asm void J3DMaterial::newSharedDisplayList(u32 param_0) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMaterial::newSingleSharedDisplayList(u32 param_0) {
asm s32 J3DMaterial::newSingleSharedDisplayList(u32 param_0) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMaterial/newSingleSharedDisplayList__11J3DMaterialFUl.s"
}
@@ -1051,7 +741,7 @@ asm void J3DPatchedMaterial::initialize() {
#pragma pop
/* 80316FD8-80316FDC 311918 0004+00 1/0 0/0 0/0 .text makeDisplayList__18J3DPatchedMaterialFv */
void J3DPatchedMaterial::makeDisplayList() {
extern "C" asm void makeDisplayList__18J3DPatchedMaterialFv() {
/* empty function */
}
@@ -1145,7 +835,7 @@ void J3DLockedMaterial::diff(u32 param_0) {
}
/* 803170D0-803170D4 311A10 0004+00 1/0 0/0 0/0 .text calc__17J3DLockedMaterialFPA4_Cf */
void J3DLockedMaterial::calc(f32 const (*param_0)[4]) {
extern "C" asm void calc__17J3DLockedMaterialFPA4_Cf() {
/* empty function */
}
@@ -1255,7 +945,7 @@ bool J3DPEBlock::countDLSize() {
}
/* 80317324-80317328 311C64 0004+00 1/0 1/0 0/0 .text load__13J3DColorBlockFv */
void J3DColorBlock::load() {
extern "C" void load__13J3DColorBlockFv() {
/* empty function */
}
@@ -1291,24 +981,24 @@ void J3DPEBlock::diff(u32 param_0) {
/* 80317348-8031734C 311C88 0004+00 1/0 4/0 0/0 .text reset__10J3DPEBlockFP10J3DPEBlock
*/
void J3DPEBlock::reset(J3DPEBlock* param_0) {
extern "C" void reset__10J3DPEBlockFP10J3DPEBlock() {
/* empty function */
}
/* 8031734C-80317350 311C8C 0004+00 1/0 0/0 0/0 .text reset__11J3DIndBlockFP11J3DIndBlock
*/
void J3DIndBlock::reset(J3DIndBlock* param_0) {
extern "C" void reset__11J3DIndBlockFP11J3DIndBlock() {
/* empty function */
}
/* 80317350-80317354 311C90 0004+00 0/0 1/0 0/0 .text reset__11J3DTevBlockFP11J3DTevBlock
*/
void J3DTevBlock::reset(J3DTevBlock* param_0) {
extern "C" void reset__11J3DTevBlockFP11J3DTevBlock(J3DTevBlock* param_0) {
/* empty function */
}
/* 80317354-80317358 311C94 0004+00 1/0 1/0 0/0 .text reset__14J3DTexGenBlockFP14J3DTexGenBlock */
void J3DTexGenBlock::reset(J3DTexGenBlock* param_0) {
extern "C" void reset__14J3DTexGenBlockFP14J3DTexGenBlock() {
/* empty function */
}
@@ -1396,7 +1086,7 @@ void J3DIndBlockNull::load() {
}
/* 803173A0-803173A4 311CE0 0004+00 1/0 0/0 0/0 .text reset__15J3DIndBlockNullFP11J3DIndBlock */
void J3DIndBlockNull::reset(J3DIndBlock* param_0) {
extern "C" asm void reset__15J3DIndBlockNullFP11J3DIndBlock() {
/* empty function */
}
+87 -92
View File
@@ -90,7 +90,6 @@ extern "C" void __dl__FPv();
extern "C" void setArray__15J3DVertexBufferCFv();
extern "C" void loadPreDrawSetting__8J3DShapeCFv();
extern "C" void syncJ3DSysFlags__12J3DModelDataCFv();
extern "C" void GDInitGDLObj();
extern "C" void GDFlushCurrToMem();
extern "C" void GDPadCurr32();
extern "C" void __ptmf_scall();
@@ -101,7 +100,6 @@ extern "C" extern u8 struct_804515B0[4];
extern "C" u8 sTexGenBlock__17J3DDifferedTexMtx[4];
extern "C" u8 sTexMtxObj__17J3DDifferedTexMtx[4];
extern "C" u8 sOldVcdVatCmd__8J3DShape[4];
extern "C" extern u8 __GDCurrentDL[4];
//
// Declarations:
@@ -159,52 +157,42 @@ void J3DDisplayListObj::callDL() const {
/* ############################################################################################## */
/* 80434C70-80434C80 061990 0010+00 2/2 3/3 0/0 .bss sGDLObj__17J3DDisplayListObj */
u8 J3DDisplayListObj::sGDLObj[16];
GDLObj J3DDisplayListObj::sGDLObj;
/* 804515A0-804515A8 000AA0 0004+04 3/3 0/0 0/0 .sbss sInterruptFlag__17J3DDisplayListObj
*/
u8 J3DDisplayListObj::sInterruptFlag[4 + 4 /* padding */];
s32 J3DDisplayListObj::sInterruptFlag;
/* 80312644-80312698 30CF84 0054+00 2/2 1/1 0/0 .text beginDL__17J3DDisplayListObjFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DDisplayListObj::beginDL() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DPacket/beginDL__17J3DDisplayListObjFv.s"
void J3DDisplayListObj::beginDL() {
swapBuffer();
sInterruptFlag = OSDisableInterrupts();
GDInitGDLObj(&sGDLObj, (u8*)mpData[0], mCapacity);
GDSetCurrent(&sGDLObj);
}
#pragma pop
/* 80312698-803126F4 30CFD8 005C+00 1/1 1/1 0/0 .text endDL__17J3DDisplayListObjFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DDisplayListObj::endDL() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DPacket/endDL__17J3DDisplayListObjFv.s"
u32 J3DDisplayListObj::endDL() {
GDPadCurr32();
OSRestoreInterrupts(sInterruptFlag);
mSize = GDGetGDLObjOffset(&sGDLObj);
GDFlushCurrToMem();
GDSetCurrent(NULL);
return mSize;
}
#pragma pop
/* 803126F4-80312714 30D034 0020+00 0/0 1/1 0/0 .text beginPatch__17J3DDisplayListObjFv
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DDisplayListObj::beginPatch() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DPacket/beginPatch__17J3DDisplayListObjFv.s"
void J3DDisplayListObj::beginPatch() {
beginDL();
}
#pragma pop
/* 80312714-80312750 30D054 003C+00 0/0 1/1 0/0 .text endPatch__17J3DDisplayListObjFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DDisplayListObj::endPatch() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DPacket/endPatch__17J3DDisplayListObjFv.s"
u32 J3DDisplayListObj::endPatch() {
OSRestoreInterrupts(sInterruptFlag);
GDSetCurrent(NULL);
return mSize;
}
#pragma pop
/* 80312750-80312758 30D090 0008+00 3/0 16/0 10/0 .text entry__9J3DPacketFP13J3DDrawBuffer */
bool J3DPacket::entry(J3DDrawBuffer* param_0) {
@@ -222,16 +210,11 @@ void J3DPacket::addChildPacket(J3DPacket* pPacket) {
/* ############################################################################################## */
/* 803CD900-803CD920 02AA20 0020+00 1/1 0/0 0/0 .data sDifferedRegister */
SECTION_DATA static u8 sDifferedRegister[32] = {
0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x01, 0x00, 0x00, 0x00,
0x10, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
};
SECTION_DATA static u32 sDifferedRegister[8] = {0x00000004, 0x00000001, 0x00000002, 0x01000000,
0x10000000, 0x20000000, 0x02000000, 0x08000000};
/* 803CD920-803CD940 02AA40 0020+00 1/1 0/0 0/0 .data sSizeOfDiffered */
SECTION_DATA static u8 sSizeOfDiffered[32] = {
0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x78,
0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x2D,
};
SECTION_DATA static s32 sSizeOfDiffered[8] = {13, 13, 21, 120, 55, 15, 19, 45};
/* 803CD940-803CD954 02AA60 0014+00 2/2 0/0 0/0 .data __vt__14J3DShapePacket */
SECTION_DATA extern void* __vt__14J3DShapePacket[5] = {
@@ -270,14 +253,11 @@ SECTION_DATA extern void* __vt__9J3DPacket[5] = {
};
/* 80312778-803127B0 30D0B8 0038+00 2/2 0/0 0/0 .text __ct__13J3DDrawPacketFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DDrawPacket::J3DDrawPacket() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DPacket/__ct__13J3DDrawPacketFv.s"
J3DDrawPacket::J3DDrawPacket() {
mFlags = 0;
mpDisplayListObj = NULL;
mpTexMtx = NULL;
}
#pragma pop
/* 803127B0-8031280C 30D0F0 005C+00 3/2 0/0 0/0 .text __dt__13J3DDrawPacketFv */
#pragma push
@@ -291,6 +271,18 @@ asm J3DDrawPacket::~J3DDrawPacket() {
/* 8031280C-80312898 30D14C 008C+00 1/1 1/1 0/0 .text newDisplayList__13J3DDrawPacketFUl
*/
#ifdef NONMATCHING
J3DError J3DDrawPacket::newDisplayList(u32 param_0) {
mpDisplayListObj = new J3DDisplayListObj();
if (mpDisplayListObj == NULL) {
return kJ3DError_Alloc;
} else if (mpDisplayListObj->newDisplayList(param_0)) {
return kJ3DError_Success;
}
return 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -299,8 +291,21 @@ asm J3DError J3DDrawPacket::newDisplayList(u32 param_0) {
#include "asm/JSystem/J3DGraphBase/J3DPacket/newDisplayList__13J3DDrawPacketFUl.s"
}
#pragma pop
#endif
/* 80312898-80312924 30D1D8 008C+00 0/0 1/1 0/0 .text newSingleDisplayList__13J3DDrawPacketFUl */
#ifdef NONMATCHING
J3DError J3DDrawPacket::newSingleDisplayList(u32 param_0) {
mpDisplayListObj = new J3DDisplayListObj();
if (mpDisplayListObj == NULL) {
return kJ3DError_Alloc;
} else if (mpDisplayListObj->newSingleDisplayList(param_0)) {
return kJ3DError_Success;
}
return 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
@@ -309,30 +314,24 @@ asm J3DError J3DDrawPacket::newSingleDisplayList(u32 param_0) {
#include "asm/JSystem/J3DGraphBase/J3DPacket/newSingleDisplayList__13J3DDrawPacketFUl.s"
}
#pragma pop
#endif
void J3DDrawPacket::draw() {
mpDisplayListObj->callDL();
}
/* 80312948-803129A4 30D288 005C+00 0/0 1/1 0/0 .text __ct__12J3DMatPacketFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DMatPacket::J3DMatPacket() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DPacket/__ct__12J3DMatPacketFv.s"
J3DMatPacket::J3DMatPacket() {
mpShapePacket = NULL;
mpFirstShapePacket = NULL;
mpMaterial = NULL;
mSortFlags = -1;
mpTexture = NULL;
mpMaterialAnm = NULL;
}
#pragma pop
/* 803129A4-80312A04 30D2E4 0060+00 1/0 1/1 0/0 .text __dt__12J3DMatPacketFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DMatPacket::~J3DMatPacket() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DPacket/__dt__12J3DMatPacketFv.s"
}
#pragma pop
J3DMatPacket::~J3DMatPacket() {}
void J3DMatPacket::addShapePacket(J3DShapePacket* pShape) {
if (mpFirstShapePacket == NULL) {
@@ -352,14 +351,14 @@ void J3DMatPacket::endDiff() {
}
/* 80312A74-80312A9C 30D3B4 0028+00 0/0 1/1 0/0 .text isSame__12J3DMatPacketCFP12J3DMatPacket */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DMatPacket::isSame(J3DMatPacket* param_0) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DPacket/isSame__12J3DMatPacketCFP12J3DMatPacket.s"
bool J3DMatPacket::isSame(J3DMatPacket* pOther) const {
bool isSame = false;
if (mSortFlags == pOther->mSortFlags && !(mSortFlags >> 0x1F)) {
isSame = true;
}
return isSame;
}
#pragma pop
/* 80312A9C-80312B20 30D3DC 0084+00 1/0 0/0 0/0 .text draw__12J3DMatPacketFv */
#pragma push
@@ -372,31 +371,23 @@ asm void J3DMatPacket::draw() {
#pragma pop
/* 80312B20-80312B74 30D460 0054+00 0/0 1/1 0/0 .text __ct__14J3DShapePacketFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DShapePacket::J3DShapePacket() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DPacket/__ct__14J3DShapePacketFv.s"
J3DShapePacket::J3DShapePacket() {
mpShape = NULL;
mpMtxBuffer = NULL;
mpViewMtx = NULL;
mDiffFlag = 0;
mpModel = NULL;
}
#pragma pop
/* 80312B74-80312BD4 30D4B4 0060+00 1/0 1/1 0/0 .text __dt__14J3DShapePacketFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DShapePacket::~J3DShapePacket() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DPacket/__dt__14J3DShapePacketFv.s"
}
#pragma pop
J3DShapePacket::~J3DShapePacket() {}
/* 80312BD4-80312DBC 30D514 01E8+00 1/1 0/0 0/0 .text calcDifferedBufferSize__14J3DShapePacketFUl
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapePacket::calcDifferedBufferSize(u32 param_0) {
asm u32 J3DShapePacket::calcDifferedBufferSize(u32 param_0) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DPacket/calcDifferedBufferSize__14J3DShapePacketFUl.s"
}
@@ -404,14 +395,18 @@ asm void J3DShapePacket::calcDifferedBufferSize(u32 param_0) {
/* 80312DBC-80312E08 30D6FC 004C+00 0/0 1/1 0/0 .text newDifferedDisplayList__14J3DShapePacketFUl
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShapePacket::newDifferedDisplayList(u32 param_0) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DPacket/newDifferedDisplayList__14J3DShapePacketFUl.s"
J3DError J3DShapePacket::newDifferedDisplayList(u32 flag) {
mDiffFlag = flag;
u32 bufSize = calcDifferedBufferSize(flag);
J3DError error = newDisplayList(bufSize);
if (error != kJ3DError_Success) {
return error;
}
setDisplayListObj(getDisplayListObj());
return kJ3DError_Success;
}
#pragma pop
/* 80312E08-80312F24 30D748 011C+00 2/2 0/0 0/0 .text prepareDraw__14J3DShapePacketCFv */
#pragma push
+1 -1
View File
@@ -177,7 +177,7 @@ asm void J3DShape::loadVtxArray() const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DShape::isSameVcdVatCmd(J3DShape* param_0) {
asm bool J3DShape::isSameVcdVatCmd(J3DShape* param_0) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShape/isSameVcdVatCmd__8J3DShapeFP8J3DShape.s"
}
+10 -53
View File
@@ -18,54 +18,6 @@ struct J3DSys {
/* 8030FEE4 */ void loadNrmMtxIndx(int, u16) const;
};
struct J3DShapeMtxYBBoardConcatView {
/* 803143E4 */ void load() const;
/* 80314520 */ ~J3DShapeMtxYBBoardConcatView();
/* 8031458C */ void getType() const;
};
struct J3DShapeMtxMultiConcatView {
/* 80313FA4 */ void load() const;
/* 803146AC */ void loadNrmMtx(int, u16) const;
/* 8031419C */ void loadNrmMtx(int, u16, f32 (*)[4]) const;
/* 8031461C */ ~J3DShapeMtxMultiConcatView();
/* 80314688 */ void getType() const;
/* 80314694 */ void getUseMtxNum() const;
/* 8031469C */ void getUseMtxIndex(u16) const;
};
struct J3DShapeMtxMulti {
/* 80313E4C */ void load() const;
/* 80313EEC */ void calcNBTScale(Vec const&, f32 (*)[3][3], f32 (*)[3][3]);
/* 803146B0 */ ~J3DShapeMtxMulti();
/* 8031470C */ void getType() const;
/* 80314718 */ void getUseMtxNum() const;
/* 80314720 */ void getUseMtxIndex(u16) const;
};
struct J3DShapeMtxConcatView {
/* 80313828 */ void loadMtxConcatView_PNGP(int, u16) const;
/* 803138C8 */ void loadMtxConcatView_PCPU(int, u16) const;
/* 8031396C */ void loadMtxConcatView_NCPU(int, u16) const;
/* 80313A14 */ void loadMtxConcatView_PNCPU(int, u16) const;
/* 80313AC8 */ void loadMtxConcatView_PNGP_LOD(int, u16) const;
/* 80313C54 */ void load() const;
/* 80313D28 */ void loadNrmMtx(int, u16, f32 (*)[4]) const;
/* 80314598 */ void loadNrmMtx(int, u16) const;
/* 80314730 */ ~J3DShapeMtxConcatView();
/* 8031478C */ void getType() const;
static u8 sMtxLoadPipeline[48];
static u8 sMtxLoadLODPipeline[48];
static u8 sMtxPtrTbl[8];
};
struct J3DShapeMtxBBoardConcatView {
/* 803142D4 */ void load() const;
/* 803145A4 */ ~J3DShapeMtxBBoardConcatView();
/* 80314610 */ void getType() const;
};
struct J3DDifferedTexMtx {
/* 8031322C */ void loadExecute(f32 const (*)[4]);
@@ -718,7 +670,8 @@ SECTION_DATA extern void* __vt__11J3DShapeMtx[8 + 1 /* padding */] = {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DShapeMtxYBBoardConcatView::~J3DShapeMtxYBBoardConcatView() {
extern "C" asm void __dt__28J3DShapeMtxYBBoardConcatViewFv() {
// asm J3DShapeMtxYBBoardConcatView::~J3DShapeMtxYBBoardConcatView() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/__dt__28J3DShapeMtxYBBoardConcatViewFv.s"
}
@@ -755,7 +708,8 @@ asm void J3DShapeMtx::getUseMtxIndex(u16 param_0) const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DShapeMtxBBoardConcatView::~J3DShapeMtxBBoardConcatView() {
extern "C" asm void __dt__27J3DShapeMtxBBoardConcatViewFv() {
// asm J3DShapeMtxBBoardConcatView::~J3DShapeMtxBBoardConcatView() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/__dt__27J3DShapeMtxBBoardConcatViewFv.s"
}
@@ -775,7 +729,8 @@ asm void J3DShapeMtxBBoardConcatView::getType() const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DShapeMtxMultiConcatView::~J3DShapeMtxMultiConcatView() {
extern "C" asm void __dt__26J3DShapeMtxMultiConcatViewFv() {
// asm J3DShapeMtxMultiConcatView::~J3DShapeMtxMultiConcatView() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/__dt__26J3DShapeMtxMultiConcatViewFv.s"
}
@@ -823,7 +778,8 @@ void J3DShapeMtxMultiConcatView::loadNrmMtx(int param_0, u16 param_1) const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DShapeMtxMulti::~J3DShapeMtxMulti() {
extern "C" asm void __dt__16J3DShapeMtxMultiFv() {
// asm J3DShapeMtxMulti::~J3DShapeMtxMulti() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/__dt__16J3DShapeMtxMultiFv.s"
}
@@ -864,7 +820,8 @@ asm void J3DShapeMtxMulti::getUseMtxIndex(u16 param_0) const {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DShapeMtxConcatView::~J3DShapeMtxConcatView() {
extern "C" asm void __dt__21J3DShapeMtxConcatViewFv() {
// asm J3DShapeMtxConcatView::~J3DShapeMtxConcatView() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DShapeMtx/__dt__21J3DShapeMtxConcatViewFv.s"
}
+2 -2
View File
@@ -114,10 +114,10 @@ J3DSys j3dSys;
Mtx J3DSys::mCurrentMtx;
/* 80434C14-80434C20 061934 000C+00 0/0 6/6 0/0 .bss mCurrentS__6J3DSys */
f32 J3DSys::mCurrentS[3];
Vec J3DSys::mCurrentS;
/* 80434C20-80434C2C 061940 000C+00 0/0 5/5 0/0 .bss mParentS__6J3DSys */
f32 J3DSys::mParentS[3];
Vec J3DSys::mParentS;
/* 80434C2C-80434C70 06194C 0040+04 1/1 17/17 0/0 .bss sTexCoordScaleTable__6J3DSys */
u16 J3DSys::sTexCoordScaleTable[34];
-20
View File
@@ -7,20 +7,6 @@
#include "dol2asm.h"
#include "dolphin/types.h"
//
// Types:
//
struct _GXTexMapID {};
struct ResTIMG {};
struct J3DTexture {
/* 8031204C */ void loadGX(u16, _GXTexMapID) const;
/* 803121A4 */ void entryNum(u16);
/* 8031221C */ void addResTIMG(u16, ResTIMG const*);
};
//
// Forward References:
//
@@ -34,12 +20,6 @@ extern "C" void addResTIMG__10J3DTextureFUsPC7ResTIMG();
//
extern "C" void* __nwa__FUl();
extern "C" void GXInitTexObj();
extern "C" void GXInitTexObjCI();
extern "C" void GXInitTexObjLOD();
extern "C" void GXLoadTexObj();
extern "C" void GXInitTlutObj();
extern "C" void GXLoadTlut();
extern "C" void _savegpr_28();
extern "C" void _restgpr_28();
+5 -20
View File
@@ -11,14 +11,10 @@
// Types:
//
struct Vec {};
struct JMath {
static u8 sincosTable_[65536];
};
struct J3DTransformInfo {};
struct J3DTextureSRTInfo {};
//
@@ -46,7 +42,6 @@ extern "C" extern u8 PSMulUnit01[8];
// External References:
//
extern "C" void PSVECNormalize();
extern "C" u8 sincosTable___5JMath[65536];
//
@@ -93,25 +88,15 @@ asm void J3DCalcBBoardMtx(f32 (*param_0)[4]) {
/* ############################################################################################## */
/* 803A1E30-803A1E50 02E490 0020+00 0/0 1/1 0/0 .rodata j3dDefaultTransformInfo */
SECTION_RODATA extern u8 const j3dDefaultTransformInfo[32] = {
0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x803A1E30, &j3dDefaultTransformInfo);
extern J3DTransformInfo const j3dDefaultTransformInfo = {
{1.0f, 1.0f, 1.0f}, {0, 0, 0}, {0.0f, 0.0f, 0.0f}};
/* 803A1E50-803A1E5C 02E4B0 000C+00 0/0 1/1 0/0 .rodata j3dDefaultScale */
SECTION_RODATA extern u8 const j3dDefaultScale[12] = {
0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x803A1E50, &j3dDefaultScale);
extern Vec const j3dDefaultScale = {1.0f, 1.0f, 1.0f};
/* 803A1E5C-803A1E8C 02E4BC 0030+00 0/0 8/8 7/7 .rodata j3dDefaultMtx */
SECTION_RODATA extern u8 const j3dDefaultMtx[48] = {
0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
COMPILER_STRIP_GATE(0x803A1E5C, &j3dDefaultMtx);
extern Mtx const j3dDefaultMtx = {
{1.0f, 0.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 1.0f, 0.0f}};
/* 803A1E8C-803A1E98 02E4EC 000C+00 1/1 0/0 0/0 .rodata @443 */
SECTION_RODATA static u8 const lit_443[12] = {
+214 -108
View File
@@ -4,33 +4,13 @@
//
#include "JSystem/J3DGraphBase/J3DVertex.h"
#include "JSystem/J3DGraphAnimator/J3DJointTree.h"
#include "JSystem/J3DGraphBase/J3DSys.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "dol2asm.h"
#include "dolphin/os/OSCache.h"
#include "dolphin/types.h"
//
// Types:
//
struct J3DVertexData {
/* 80310EF8 */ J3DVertexData();
};
struct J3DVertexBuffer {
/* 80310F78 */ void setVertexData(J3DVertexData*);
/* 80310FD8 */ void init();
/* 80311030 */ ~J3DVertexBuffer();
/* 8031106C */ void setArray() const;
/* 80311090 */ void copyLocalVtxPosArray(u32);
/* 803111B0 */ void copyLocalVtxNrmArray(u32);
/* 803112D0 */ void copyLocalVtxArray(u32);
/* 80311478 */ void allocTransformedVtxPosArray();
/* 8031152C */ void allocTransformedVtxNrmArray();
};
struct J3DDrawMtxData {
/* 803115E0 */ J3DDrawMtxData();
/* 803115F4 */ ~J3DDrawMtxData();
};
#include "init.h"
//
// Forward References:
@@ -53,143 +33,269 @@ extern "C" void __dt__14J3DDrawMtxDataFv();
// External References:
//
SECTION_INIT void memcpy();
extern "C" void* __nwa__FUli();
extern "C" void __dl__FPv();
extern "C" void DCStoreRange();
extern "C" void _savegpr_24();
extern "C" void _savegpr_28();
extern "C" void _savegpr_29();
extern "C" void _restgpr_24();
extern "C" void _restgpr_28();
extern "C" void _restgpr_29();
extern "C" extern u8 j3dSys[284];
//
// Declarations:
//
/* 80310EF8-80310F78 30B838 0080+00 0/0 1/1 0/0 .text __ct__13J3DVertexDataFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DVertexData::J3DVertexData() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DVertex/__ct__13J3DVertexDataFv.s"
J3DVertexData::J3DVertexData() {
mVtxNum = 0;
mNrmNum = 0;
mColNum = 0;
field_0xc = 0;
field_0x10 = 0;
mVtxAttrFmtList = NULL;
mVtxPosArray = NULL;
mVtxNrmArray = NULL;
mVtxNBTArray = NULL;
for (int i = 0; i < 2; i++) {
mVtxColorArray[i] = NULL;
}
for (int i = 0; i < 8; i++) {
mVtxTexCoordArray[i] = NULL;
}
mVtxPosFrac = 0;
mVtxPosType = GX_F32;
mVtxNrmFrac = 0;
mVtxNrmType = GX_F32;
}
#pragma pop
/* 80310F78-80310FD8 30B8B8 0060+00 0/0 1/1 0/0 .text
* setVertexData__15J3DVertexBufferFP13J3DVertexData */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DVertexBuffer::setVertexData(J3DVertexData* param_0) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DVertex/setVertexData__15J3DVertexBufferFP13J3DVertexData.s"
void J3DVertexBuffer::setVertexData(J3DVertexData* pVtxData) {
mVtxData = pVtxData;
mVtxPosArray[0] = pVtxData->getVtxPosArray();
mVtxNrmArray[0] = pVtxData->getVtxNrmArray();
mVtxColArray[0] = pVtxData->getVtxColorArray(0);
mVtxPosArray[1] = NULL;
mVtxNrmArray[1] = NULL;
mVtxColArray[1] = NULL;
mTransformedVtxPosArray[0] = pVtxData->getVtxPosArray();
mTransformedVtxNrmArray[0] = pVtxData->getVtxNrmArray();
mTransformedVtxPosArray[1] = NULL;
mTransformedVtxNrmArray[1] = NULL;
frameInit();
}
#pragma pop
/* 80310FD8-80311030 30B918 0058+00 0/0 3/3 0/0 .text init__15J3DVertexBufferFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DVertexBuffer::init() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DVertex/init__15J3DVertexBufferFv.s"
void J3DVertexBuffer::init() {
mVtxData = NULL;
mVtxPosArray[1] = NULL;
mVtxPosArray[0] = NULL;
mVtxNrmArray[1] = NULL;
mVtxNrmArray[0] = NULL;
mVtxColArray[1] = NULL;
mVtxColArray[0] = NULL;
mTransformedVtxPosArray[1] = NULL;
mTransformedVtxPosArray[0] = NULL;
mTransformedVtxNrmArray[1] = NULL;
mTransformedVtxNrmArray[0] = NULL;
mCurrentVtxPos = NULL;
mCurrentVtxNrm = NULL;
mCurrentVtxCol = NULL;
frameInit();
}
#pragma pop
/* 80311030-8031106C 30B970 003C+00 0/0 1/1 0/0 .text __dt__15J3DVertexBufferFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DVertexBuffer::~J3DVertexBuffer() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DVertex/__dt__15J3DVertexBufferFv.s"
}
#pragma pop
J3DVertexBuffer::~J3DVertexBuffer() {}
/* 8031106C-80311090 30B9AC 0024+00 0/0 1/1 0/0 .text setArray__15J3DVertexBufferCFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DVertexBuffer::setArray() const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DVertex/setArray__15J3DVertexBufferCFv.s"
void J3DVertexBuffer::setArray() const {
j3dSys.setVtxPos(mCurrentVtxPos);
j3dSys.setVtxNrm(mCurrentVtxNrm);
j3dSys.setVtxCol(mCurrentVtxCol);
}
#pragma pop
/* 80311090-803111B0 30B9D0 0120+00 1/1 0/0 0/0 .text copyLocalVtxPosArray__15J3DVertexBufferFUl
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DVertexBuffer::copyLocalVtxPosArray(u32 param_0) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DVertex/copyLocalVtxPosArray__15J3DVertexBufferFUl.s"
s32 J3DVertexBuffer::copyLocalVtxPosArray(u32 param_0) {
if (param_0 & 1) {
for (int i = 0; i < 2; i++) {
mVtxPosArray[i] = new (0x20) VertexPosition[mVtxData->getVtxNum()];
if (mVtxPosArray[i] == NULL) {
return 4;
}
memcpy(mVtxPosArray[i], mVtxData->getVtxPosArray(), mVtxData->getVtxNum() * 12);
DCStoreRange(mVtxPosArray[i], mVtxData->getVtxNum() * 12);
}
} else {
mVtxPosArray[0] = mVtxData->getVtxPosArray();
if (mVtxPosArray[1] == NULL) {
mVtxPosArray[1] = new (0x20) VertexPosition[mVtxData->getVtxNum()];
if (mVtxPosArray[1] == NULL) {
return 4;
}
}
memcpy(mVtxPosArray[1], mVtxData->getVtxPosArray(), mVtxData->getVtxNum() * 12);
DCStoreRange(mVtxPosArray[1], mVtxData->getVtxNum() * 12);
}
return 0;
}
#pragma pop
/* 803111B0-803112D0 30BAF0 0120+00 1/1 0/0 0/0 .text copyLocalVtxNrmArray__15J3DVertexBufferFUl
*/
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DVertexBuffer::copyLocalVtxNrmArray(u32 param_0) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DVertex/copyLocalVtxNrmArray__15J3DVertexBufferFUl.s"
s32 J3DVertexBuffer::copyLocalVtxNrmArray(u32 param_0) {
if (param_0 & 1) {
for (int i = 0; i < 2; i++) {
mVtxNrmArray[i] = new (0x20) VertexNormal[mVtxData->getNrmNum()];
if (mVtxNrmArray[i] == NULL) {
return 4;
}
memcpy(mVtxNrmArray[i], mVtxData->getVtxNrmArray(), mVtxData->getNrmNum() * 12);
DCStoreRange(mVtxNrmArray[i], mVtxData->getNrmNum() * 12);
}
} else {
mVtxNrmArray[0] = mVtxData->getVtxNrmArray();
if (mVtxNrmArray[1] == NULL) {
mVtxNrmArray[1] = new (0x20) VertexNormal[mVtxData->getNrmNum()];
if (mVtxNrmArray[1] == NULL) {
return 4;
}
}
memcpy(mVtxNrmArray[1], mVtxData->getVtxNrmArray(), mVtxData->getNrmNum() * 12);
DCStoreRange(mVtxNrmArray[1], mVtxData->getNrmNum() * 12);
}
return 0;
}
#pragma pop
/* 803112D0-80311478 30BC10 01A8+00 0/0 1/1 0/0 .text copyLocalVtxArray__15J3DVertexBufferFUl */
#ifdef NONMATCHING
s32 J3DVertexBuffer::copyLocalVtxArray(u32 param_0) {
void* local_30[5];
for (int i = 0; i < 2; i++) {
local_30[i] = mVtxPosArray[i];
}
if (~param_0 & 2) {
s32 tmp = copyLocalVtxPosArray(param_0);
if (tmp != 0) {
for (int i = 0; i < 2; i++) {
if (local_30[i + 2] != mVtxPosArray[i]) {
if (mVtxPosArray[i] != mVtxData->getVtxPosArray()) {
delete mVtxPosArray[i];
}
mVtxPosArray[i] = local_30[i + 2];
}
}
return tmp;
}
} else {
void* vtxPosArray = mVtxData->getVtxPosArray();
mVtxPosArray[1] = vtxPosArray;
mVtxPosArray[0] = vtxPosArray;
}
for (int i = 0; i < 2; i++) {
local_30[i] = mVtxNrmArray[i];
}
if (~param_0 & 4) {
s32 tmp = copyLocalVtxNrmArray(param_0);
if (tmp != 0) {
for (int i = 0; i < 2; i++) {
if (local_30[i + 2] != mVtxPosArray[i]) {
if (mVtxPosArray[i] != mVtxData->getVtxPosArray()) {
delete mVtxPosArray[i];
}
mVtxPosArray[i] = local_30[i + 2];
}
if (local_30[i] != mVtxNrmArray[i]) {
if (mVtxNrmArray[i] != mVtxData->getVtxNrmArray()) {
delete mVtxNrmArray[i];
}
mVtxNrmArray[i] = local_30[i];
}
}
return tmp;
}
} else {
void* vtxNrmArray = mVtxData->getVtxNrmArray();
mVtxNrmArray[1] = vtxNrmArray;
mVtxNrmArray[0] = vtxNrmArray;
}
return 0;
}
#else
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DVertexBuffer::copyLocalVtxArray(u32 param_0) {
asm s32 J3DVertexBuffer::copyLocalVtxArray(u32 param_0) {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DVertex/copyLocalVtxArray__15J3DVertexBufferFUl.s"
}
#pragma pop
#endif
/* 80311478-8031152C 30BDB8 00B4+00 0/0 1/1 0/0 .text
* allocTransformedVtxPosArray__15J3DVertexBufferFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DVertexBuffer::allocTransformedVtxPosArray() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DVertex/allocTransformedVtxPosArray__15J3DVertexBufferFv.s"
s32 J3DVertexBuffer::allocTransformedVtxPosArray() {
if (mTransformedVtxPosArray[0] != NULL && mTransformedVtxPosArray[1] != NULL) {
return 0;
}
for (int i = 0; i < 2; i++) {
if (i == 0 || mTransformedVtxPosArray[i] == NULL) {
mTransformedVtxPosArray[i] = new (0x20) VertexPosition[mVtxData->getVtxNum()];
if (mTransformedVtxPosArray[i] == NULL) {
return 4;
}
}
}
return 0;
}
#pragma pop
/* 8031152C-803115E0 30BE6C 00B4+00 0/0 1/1 0/0 .text
* allocTransformedVtxNrmArray__15J3DVertexBufferFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm void J3DVertexBuffer::allocTransformedVtxNrmArray() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DVertex/allocTransformedVtxNrmArray__15J3DVertexBufferFv.s"
s32 J3DVertexBuffer::allocTransformedVtxNrmArray() {
if (mTransformedVtxNrmArray[0] != NULL && mTransformedVtxNrmArray[1] != NULL) {
return 0;
}
for (int i = 0; i < 2; i++) {
if (i == 0 || mTransformedVtxNrmArray[i] == NULL) {
mTransformedVtxNrmArray[i] = new (0x20) VertexNormal[mVtxData->getNrmNum()];
if (mTransformedVtxNrmArray[i] == NULL) {
return 4;
}
}
}
return 0;
}
#pragma pop
/* 803115E0-803115F4 30BF20 0014+00 0/0 1/1 0/0 .text __ct__14J3DDrawMtxDataFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DDrawMtxData::J3DDrawMtxData() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DVertex/__ct__14J3DDrawMtxDataFv.s"
J3DDrawMtxData::J3DDrawMtxData() {
mEntryNum = 0;
mDrawMtxFlag = NULL;
mDrawMtxIndex = NULL;
}
#pragma pop
/* 803115F4-80311630 30BF34 003C+00 0/0 2/2 0/0 .text __dt__14J3DDrawMtxDataFv */
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm J3DDrawMtxData::~J3DDrawMtxData() {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DVertex/__dt__14J3DDrawMtxDataFv.s"
}
#pragma pop
J3DDrawMtxData::~J3DDrawMtxData() {}

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