m_do_ext work

also jsys documentation
This commit is contained in:
Jasper St. Pierre
2024-06-26 22:50:12 -07:00
parent abe7439e00
commit 1d5c9da99b
10 changed files with 635 additions and 302 deletions
@@ -283,15 +283,15 @@ struct J3DAnmClusterFullData {
struct J3DAnmTransformKeyData {
/* 0x00 */ JUTDataBlockHeader mHeader;
/* 0x08 */ u8 field_0x8;
/* 0x09 */ u8 field_0x9;
/* 0x08 */ u8 mAttribute;
/* 0x09 */ u8 mDecShift;
/* 0x0A */ s16 mFrameMax;
/* 0x0C */ u16 field_0xc;
/* 0x10 */ int field_0x10;
/* 0x14 */ s32 mTableOffset;
/* 0x18 */ s32 field_0x18;
/* 0x1c */ s32 field_0x1c;
/* 0x20 */ s32 field_0x20;
/* 0x18 */ s32 mScaleOffset;
/* 0x1c */ s32 mRotOffset;
/* 0x20 */ s32 mTransOffset;
};
struct J3DAnmClusterKeyData {
@@ -45,7 +45,7 @@ public:
JUTNameTab* getMaterialName() const { return mMaterialName; }
u16 getMaterialNum() const { return mMaterialNum; }
bool isLocked() { return field_0x20 == 1; }
bool isLocked() { return mbIsLocked == 1; }
private:
friend class J3DJointTree;
@@ -57,10 +57,10 @@ private:
/* 0x08 */ J3DMaterial** mMaterialNodePointer;
/* 0x0C */ JUTNameTab* mMaterialName;
/* 0x10 */ u16 mUniqueMatNum;
/* 0x14 */ J3DMaterial* field_0x14;
/* 0x14 */ J3DMaterial* mMaterialBase;
/* 0x18 */ J3DTexture* mTexture;
/* 0x1C */ JUTNameTab* mTextureName;
/* 0x20 */ u16 field_0x20;
/* 0x20 */ u16 mbIsLocked;
}; // Size: 0x24
#endif /* J3DMATERIALATTACH_H */
@@ -79,9 +79,9 @@ public:
u16 checkBumpFlag() const { return mbHasBumpArray; }
void setBumpFlag(u32 flag) { mbHasBumpArray = flag; }
bool checkBBoardFlag() const { return mbHasBillboard == 1; }
void entryTexMtxAnimator(J3DAnmTextureSRTKey* anm) { mMaterialTable.entryTexMtxAnimator(anm); }
void entryTevRegAnimator(J3DAnmTevRegKey* anm) { mMaterialTable.entryTevRegAnimator(anm); }
void entryMatColorAnimator(J3DAnmColor* anm) { mMaterialTable.entryMatColorAnimator(anm); }
s32 entryTexMtxAnimator(J3DAnmTextureSRTKey* anm) { return mMaterialTable.entryTexMtxAnimator(anm); }
s32 entryTevRegAnimator(J3DAnmTevRegKey* anm) { return mMaterialTable.entryTevRegAnimator(anm); }
s32 entryMatColorAnimator(J3DAnmColor* anm) { return mMaterialTable.entryMatColorAnimator(anm); }
void setTexMtxAnimator(J3DAnmTextureSRTKey* pAnm, J3DTexMtxAnm* pTexAnm, J3DTexMtxAnm* pDualAnmR) {
mMaterialTable.setTexMtxAnimator(pAnm, pTexAnm, pDualAnmR);
}
+1
View File
@@ -7,6 +7,7 @@
// Perhaps move to a new J3DEnum.h?
enum J3DError {
J3DErrType_Success = 0,
J3DErrType_Locked = 2,
J3DErrType_OutOfMemory = 4,
};
+49 -35
View File
@@ -44,23 +44,46 @@ typedef union {
volatile PPCWGPipe GXFIFO : 0xCC008000;
// Direct
inline void GXPosition2f32(f32 x, f32 z) {
GXFIFO.f32 = x;
GXFIFO.f32 = z;
}
inline void GXPosition3f32(f32 x, f32 y, f32 z) {
GXFIFO.f32 = x;
GXFIFO.f32 = y;
GXFIFO.f32 = z;
}
inline void GXPosition2s8(s8 x, s8 y) {
GXFIFO.s8 = x;
GXFIFO.s8 = y;
}
inline void GXPosition3s8(s8 x, s8 y, s8 z) {
GXFIFO.s8 = x;
GXFIFO.s8 = y;
GXFIFO.s8 = z;
}
inline void GXPosition2u16(u16 x, u16 y) {
GXFIFO.u16 = x;
GXFIFO.u16 = y;
}
inline void GXPosition3s16(s16 x, s16 y, s16 z) {
GXFIFO.s16 = x;
GXFIFO.s16 = y;
GXFIFO.s16 = z;
}
inline void GXNormal3f32(f32 x, f32 y, f32 z) {
GXFIFO.f32 = x;
GXFIFO.f32 = y;
GXFIFO.f32 = z;
}
inline void GXPosition2f32(f32 x, f32 z) {
GXFIFO.f32 = x;
GXFIFO.f32 = z;
}
inline void GXColor1u32(u32 c) {
GXFIFO.u32 = c;
}
@@ -79,36 +102,6 @@ inline void GXTexCoord1x8(u8 s) {
GXFIFO.u8 = s;
}
inline void GXPosition2u16(u16 x, u16 y) {
GXFIFO.u16 = x;
GXFIFO.u16 = y;
}
inline void GXPosition1x16(u16 x) {
GXFIFO.u16 = x;
}
inline void GXPosition1x8(u8 x) {
GXFIFO.u8 = x;
}
inline void GXPosition3s8(s8 x, s8 y, s8 z) {
GXFIFO.s8 = x;
GXFIFO.s8 = y;
GXFIFO.s8 = z;
}
inline void GXPosition2s8(s8 x, s8 y) {
GXFIFO.s8 = x;
GXFIFO.s8 = y;
}
inline void GXPosition3s16(s16 x, s16 y, s16 z) {
GXFIFO.s16 = x;
GXFIFO.s16 = y;
GXFIFO.s16 = z;
}
inline void GXTexCoord2s8(s8 x, s8 y) {
GXFIFO.s8 = x;
GXFIFO.s8 = y;
@@ -124,6 +117,27 @@ inline void GXTexCoord2s16(const s16 u, const s16 v) {
GXFIFO.s16 = v;
}
// Indexed
inline void GXPosition1x8(u8 x) {
GXFIFO.u8 = x;
}
inline void GXPosition1x16(u16 x) {
GXFIFO.u16 = x;
}
inline void GXNormal1x8(u8 x) {
GXFIFO.u8 = x;
}
inline void GXColor1x16(u16 x) {
GXFIFO.u16 = x;
}
inline void GXTexCoord1x16(u16 x) {
GXFIFO.u16 = x;
}
inline void GFWriteBPCmd(u32 param_1) {
GXFIFO.u8 = 0x61;
GXFIFO.u32 = param_1;
+6 -7
View File
@@ -582,11 +582,10 @@ public:
public:
/* 0x08 */ GXColor mColor;
/* 0x0C */ dKy_tevstr_c* mpTevStr;
/* 0x10 */ s16 mNumLines;
/* 0x12 */ s16 mNumSegmentsPerLine;
/* 0x14 */ u16 m14;
/* 0x16 */ u8 m16;
/* 0x17 */ u8 m17[0x18 - 0x17];
/* 0x10 */ u16 mNumLines;
/* 0x12 */ u16 mMaxSegments;
/* 0x14 */ u16 mNumSegments;
/* 0x16 */ u8 mCurArr;
/* 0x18 */ mDoExt_3Dline_c* mpLines;
};
@@ -604,8 +603,8 @@ public:
/* 0x28 */ GXColor mColor;
/* 0x2C */ dKy_tevstr_c* mpTevStr;
/* 0x30 */ u16 mNumLines;
/* 0x32 */ u16 m32;
/* 0x34 */ u16 m34;
/* 0x32 */ u16 mMaxSegments;
/* 0x34 */ u16 mNumSegments;
/* 0x36 */ u8 mCurArr;
/* 0x37 */ u8 m37[0x38 - 0x37];
/* 0x38 */ mDoExt_3Dline_c* mpLines;
@@ -6,6 +6,7 @@
#include "JSystem/J3DGraphAnimator/J3DMaterialAttach.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h"
#include "JSystem/J3DGraphBase/J3DSys.h"
/* 802F5C48-802F5C70 .text clear__16J3DMaterialTableFv */
void J3DMaterialTable::clear() {
@@ -13,10 +14,10 @@ void J3DMaterialTable::clear() {
mMaterialNodePointer = NULL;
mMaterialName = NULL;
mUniqueMatNum = 0;
field_0x14 = NULL;
mMaterialBase = NULL;
mTexture = NULL;
mTextureName = NULL;
field_0x20 = 0;
mbIsLocked = 0;
}
/* 802F5C70-802F5CAC .text __ct__16J3DMaterialTableFv */
@@ -33,8 +34,8 @@ s32 J3DMaterialTable::entryMatColorAnimator(J3DAnmColor* pAnm) {
s32 ret = 0;
u16 materialNum = pAnm->getUpdateMaterialNum();
if (field_0x20 == 1)
return 2;
if (isLocked())
return J3DErrType_Locked;
for (u16 i = 0; i < materialNum; i++) {
u16 materialID = pAnm->getUpdateMaterialID(i);
@@ -56,8 +57,8 @@ s32 J3DMaterialTable::entryTexMtxAnimator(J3DAnmTextureSRTKey* pAnm) {
s32 ret = 0;
u16 materialNum = pAnm->getUpdateMaterialNum();
if (field_0x20 == 1)
return 2;
if (isLocked())
return J3DErrType_Locked;
for (u16 i = 0; i < materialNum; i++) {
u16 materialID = pAnm->getUpdateMaterialID(i);
@@ -106,8 +107,8 @@ s32 J3DMaterialTable::entryTevRegAnimator(J3DAnmTevRegKey* pAnm) {
u16 cRegMaterialNum = pAnm->getCRegUpdateMaterialNum();
u16 kRegMaterialNum = pAnm->getKRegUpdateMaterialNum();
if (field_0x20 == 1)
return 2;
if (isLocked())
return J3DErrType_Locked;
for (u16 i = 0; i < cRegMaterialNum; i++) {
u16 materialID = pAnm->getCRegUpdateMaterialID(i);
@@ -234,8 +235,8 @@ s32 J3DMaterialTable::setMatColorAnimator(J3DAnmColor* pAnm, J3DMatColorAnm* pAn
s32 ret = 0;
u16 materialNum = pAnm->getUpdateMaterialNum();
if (field_0x20 == 1)
return 2;
if (isLocked())
return J3DErrType_Locked;
for (u16 i = 0; i < materialNum; i++) {
u16 materialID = pAnm->getUpdateMaterialID(i);
@@ -256,8 +257,8 @@ s32 J3DMaterialTable::setTexNoAnimator(J3DAnmTexPattern* pAnm, J3DTexNoAnm* pAnm
s32 ret = 0;
u16 materialNum = pAnm->getUpdateMaterialNum();
if (field_0x20 == 1)
return 2;
if (isLocked())
return J3DErrType_Locked;
for (u16 i = 0; i < materialNum; i++) {
u16 materialID = pAnm->getUpdateMaterialID(i);
@@ -280,8 +281,8 @@ s32 J3DMaterialTable::setTexMtxAnimator(J3DAnmTextureSRTKey* pAnm, J3DTexMtxAnm*
s32 ret = 0;
u16 materialNum = pAnm->getUpdateMaterialNum();
if (field_0x20 == 1)
return 2;
if (isLocked())
return J3DErrType_Locked;
for (u16 i = 0; i < materialNum; i++) {
u16 materialID = pAnm->getUpdateMaterialID(i);
@@ -319,8 +320,8 @@ s32 J3DMaterialTable::setTevRegAnimator(J3DAnmTevRegKey* pAnm, J3DTevColorAnm* p
u16 cRegMaterialNum = pAnm->getCRegUpdateMaterialNum();
u16 kRegMaterialNum = pAnm->getKRegUpdateMaterialNum();
if (field_0x20 == 1)
return 2;
if (isLocked())
return J3DErrType_Locked;
for (u16 i = 0; i < cRegMaterialNum; i++) {
if (pAnm->getCRegUpdateMaterialID(i) != 0xFFFF) {
+210 -210
View File
@@ -85,8 +85,8 @@ J3DAnmBase* J3DAnmLoaderDataBase::load(const void* i_data) {
}
/* 802FF6C8-802FF9EC .text setResource__20J3DAnmLoaderDataBaseFP10J3DAnmBasePCv */
void J3DAnmLoaderDataBase::setResource(J3DAnmBase* param_1, const void* param_2) {
const JUTDataFileHeader* header = (const JUTDataFileHeader*)param_2;
void J3DAnmLoaderDataBase::setResource(J3DAnmBase* dst, const void* data) {
const JUTDataFileHeader* header = (const JUTDataFileHeader*)data;
if (!header) {
return;
}
@@ -96,64 +96,64 @@ void J3DAnmLoaderDataBase::setResource(J3DAnmBase* param_1, const void* param_2)
switch (header->mType) {
case 'bck1': {
J3DAnmKeyLoader_v15 loader;
loader.setResource(param_1, param_2);
loader.setResource(dst, data);
break;
}
case 'bpk1': {
J3DAnmKeyLoader_v15 loader;
loader.setResource(param_1, param_2);
loader.setResource(dst, data);
break;
}
case 'blk1': {
J3DAnmKeyLoader_v15 loader;
loader.setResource(param_1, param_2);
loader.setResource(dst, data);
break;
}
case 'btk1': {
J3DAnmKeyLoader_v15 loader;
loader.setResource(param_1, param_2);
loader.setResource(dst, data);
break;
}
case 'brk1': {
J3DAnmKeyLoader_v15 loader;
if (param_1->getKind() == 5) {
loader.setResource(param_1, param_2);
if (dst->getKind() == 5) {
loader.setResource(dst, data);
}
break;
}
case 'bxk1': {
J3DAnmKeyLoader_v15 loader;
loader.setResource(param_1, param_2);
loader.setResource(dst, data);
break;
}
case 'bca1': {
J3DAnmFullLoader_v15 loader;
loader.setResource(param_1, param_2);
loader.setResource(dst, data);
break;
}
case 'bpa1': {
J3DAnmFullLoader_v15 loader;
loader.setResource(param_1, param_2);
loader.setResource(dst, data);
break;
}
case 'btp1': {
J3DAnmFullLoader_v15 loader;
loader.setResource(param_1, param_2);
loader.setResource(dst, data);
break;
}
case 'bla1': {
J3DAnmFullLoader_v15 loader;
loader.setResource(param_1, param_2);
loader.setResource(dst, data);
break;
}
case 'bxa1': {
J3DAnmFullLoader_v15 loader;
loader.setResource(param_1, param_2);
loader.setResource(dst, data);
break;
}
case 'bva1': {
J3DAnmFullLoader_v15 loader;
loader.setResource(param_1, param_2);
loader.setResource(dst, data);
break;
}
default: {
@@ -176,8 +176,8 @@ J3DAnmKeyLoader_v15::J3DAnmKeyLoader_v15() {}
J3DAnmKeyLoader_v15::~J3DAnmKeyLoader_v15() {}
/* 802FFADC-802FFC28 .text load__20J3DAnmFullLoader_v15FPCv */
J3DAnmBase* J3DAnmFullLoader_v15::load(const void* param_1) {
const JUTDataFileHeader* header = (const JUTDataFileHeader*)param_1;
J3DAnmBase* J3DAnmFullLoader_v15::load(const void* dst) {
const JUTDataFileHeader* header = (const JUTDataFileHeader*)dst;
const JUTDataBlockHeader* block = &header->mFirstBlock;
for (int i = 0; i < header->mBlockNum; i++) {
switch (block->mType) {
@@ -209,39 +209,39 @@ J3DAnmBase* J3DAnmFullLoader_v15::load(const void* param_1) {
}
/* 802FFC28-802FFDD4 .text setResource__20J3DAnmFullLoader_v15FP10J3DAnmBasePCv */
void J3DAnmFullLoader_v15::setResource(J3DAnmBase* param_1, const void* param_2) {
const JUTDataFileHeader* header = (const JUTDataFileHeader*)param_2;
void J3DAnmFullLoader_v15::setResource(J3DAnmBase* dst, const void* data) {
const JUTDataFileHeader* header = (const JUTDataFileHeader*)data;
const JUTDataBlockHeader* block = &header->mFirstBlock;
for (int i = 0; i < header->mBlockNum; i++) {
switch (block->mType) {
case 'ANF1':
if (param_1->getKind() == 0) {
setAnmTransform((J3DAnmTransformFull*)param_1, (const J3DAnmTransformFullData*)block);
if (dst->getKind() == 0) {
setAnmTransform((J3DAnmTransformFull*)dst, (const J3DAnmTransformFullData*)block);
}
break;
case 'PAF1':
if (param_1->getKind() == 1) {
setAnmColor((J3DAnmColorFull*)param_1, (const J3DAnmColorFullData*)block);
if (dst->getKind() == 1) {
setAnmColor((J3DAnmColorFull*)dst, (const J3DAnmColorFullData*)block);
}
break;
case 'TPT1':
if (param_1->getKind() == 2) {
setAnmTexPattern((J3DAnmTexPattern*)param_1, (const J3DAnmTexPatternFullData*)block);
if (dst->getKind() == 2) {
setAnmTexPattern((J3DAnmTexPattern*)dst, (const J3DAnmTexPatternFullData*)block);
}
break;
case 'CLF1':
if (param_1->getKind() == 3) {
setAnmCluster((J3DAnmClusterFull*)param_1, (const J3DAnmClusterFullData*)block);
if (dst->getKind() == 3) {
setAnmCluster((J3DAnmClusterFull*)dst, (const J3DAnmClusterFullData*)block);
}
break;
case 'VAF1':
if (param_1->getKind() == 6) {
setAnmVisibility((J3DAnmVisibilityFull*)param_1, (const J3DAnmVisibilityFullData*)block);
if (dst->getKind() == 6) {
setAnmVisibility((J3DAnmVisibilityFull*)dst, (const J3DAnmVisibilityFullData*)block);
}
break;
case 'VCF1':
if (param_1->getKind() == 7) {
setAnmVtxColor((J3DAnmVtxColorFull*)param_1, (const J3DAnmVtxColorFullData*)block);
if (dst->getKind() == 7) {
setAnmVtxColor((J3DAnmVtxColorFull*)dst, (const J3DAnmVtxColorFullData*)block);
}
break;
default:
@@ -253,93 +253,93 @@ void J3DAnmFullLoader_v15::setResource(J3DAnmBase* param_1, const void* param_2)
}
/* 802FFDD4-802FFDFC .text readAnmTransform__20J3DAnmFullLoader_v15FPC23J3DAnmTransformFullData */
void J3DAnmFullLoader_v15::readAnmTransform(const J3DAnmTransformFullData* param_1) {
setAnmTransform((J3DAnmTransformFull*)mAnm, param_1);
void J3DAnmFullLoader_v15::readAnmTransform(const J3DAnmTransformFullData* dst) {
setAnmTransform((J3DAnmTransformFull*)mAnm, dst);
}
/* 802FFDFC-802FFE90 .text setAnmTransform__20J3DAnmFullLoader_v15FP19J3DAnmTransformFullPC23J3DAnmTransformFullData */
void J3DAnmFullLoader_v15::setAnmTransform(J3DAnmTransformFull* param_1, const J3DAnmTransformFullData* param_2) {
param_1->field_0x22 = param_2->field_0xc;
param_1->mFrameMax = param_2->mFrameMax;
param_1->mAttribute = param_2->field_0x8;
param_1->mFrame = 0.0f;
param_1->mAnmTable = JSUConvertOffsetToPtr<J3DAnmTransformFullTable>(param_2, (void*)param_2->mTableOffset);
param_1->mScaleData = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->mScaleValOffset);
param_1->mRotData = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mRotValOffset);
param_1->mTransData = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->mTransValOffset);
void J3DAnmFullLoader_v15::setAnmTransform(J3DAnmTransformFull* dst, const J3DAnmTransformFullData* data) {
dst->field_0x22 = data->field_0xc;
dst->mFrameMax = data->mFrameMax;
dst->mAttribute = data->field_0x8;
dst->mFrame = 0.0f;
dst->mAnmTable = JSUConvertOffsetToPtr<J3DAnmTransformFullTable>(data, (void*)data->mTableOffset);
dst->mScaleData = JSUConvertOffsetToPtr<f32>(data, (void*)data->mScaleValOffset);
dst->mRotData = JSUConvertOffsetToPtr<s16>(data, (void*)data->mRotValOffset);
dst->mTransData = JSUConvertOffsetToPtr<f32>(data, (void*)data->mTransValOffset);
}
/* 802FFE90-802FFEB8 .text readAnmColor__20J3DAnmFullLoader_v15FPC19J3DAnmColorFullData */
void J3DAnmFullLoader_v15::readAnmColor(const J3DAnmColorFullData* param_1) {
setAnmColor((J3DAnmColorFull*)mAnm, param_1);
void J3DAnmFullLoader_v15::readAnmColor(const J3DAnmColorFullData* dst) {
setAnmColor((J3DAnmColorFull*)mAnm, dst);
}
/* 802FFEB8-802FFF84 .text setAnmColor__20J3DAnmFullLoader_v15FP15J3DAnmColorFullPC19J3DAnmColorFullData */
void J3DAnmFullLoader_v15::setAnmColor(J3DAnmColorFull* param_1, const J3DAnmColorFullData* param_2) {
param_1->mFrameMax = param_2->mFrameMax;
param_1->mAttribute = param_2->field_0x8;
param_1->mFrame = 0.0f;
param_1->mUpdateMaterialNum = param_2->mUpdateMaterialNum;
param_1->mAnmTable = JSUConvertOffsetToPtr<J3DAnmColorFullTable>(param_2, (void*)param_2->mTableOffset);
param_1->mColorR = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mRValuesOffset);
param_1->mColorG = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mGValuesOffset);
param_1->mColorB = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mBValuesOffset);
param_1->mColorA = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mAValuesOffset);
param_1->mUpdateMaterialID = JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mUpdateMaterialIDOffset);
param_1->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(param_2, (void*)param_2->mNameTabOffset));
void J3DAnmFullLoader_v15::setAnmColor(J3DAnmColorFull* dst, const J3DAnmColorFullData* data) {
dst->mFrameMax = data->mFrameMax;
dst->mAttribute = data->field_0x8;
dst->mFrame = 0.0f;
dst->mUpdateMaterialNum = data->mUpdateMaterialNum;
dst->mAnmTable = JSUConvertOffsetToPtr<J3DAnmColorFullTable>(data, (void*)data->mTableOffset);
dst->mColorR = JSUConvertOffsetToPtr<u8>(data, (void*)data->mRValuesOffset);
dst->mColorG = JSUConvertOffsetToPtr<u8>(data, (void*)data->mGValuesOffset);
dst->mColorB = JSUConvertOffsetToPtr<u8>(data, (void*)data->mBValuesOffset);
dst->mColorA = JSUConvertOffsetToPtr<u8>(data, (void*)data->mAValuesOffset);
dst->mUpdateMaterialID = JSUConvertOffsetToPtr<u16>(data, (void*)data->mUpdateMaterialIDOffset);
dst->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(data, (void*)data->mNameTabOffset));
}
/* 802FFF84-802FFFAC .text readAnmTexPattern__20J3DAnmFullLoader_v15FPC24J3DAnmTexPatternFullData */
void J3DAnmFullLoader_v15::readAnmTexPattern(const J3DAnmTexPatternFullData* param_1) {
setAnmTexPattern((J3DAnmTexPattern*)mAnm, param_1);
void J3DAnmFullLoader_v15::readAnmTexPattern(const J3DAnmTexPatternFullData* dst) {
setAnmTexPattern((J3DAnmTexPattern*)mAnm, dst);
}
/* 802FFFAC-80300050 .text setAnmTexPattern__20J3DAnmFullLoader_v15FP16J3DAnmTexPatternPC24J3DAnmTexPatternFullData */
void J3DAnmFullLoader_v15::setAnmTexPattern(J3DAnmTexPattern* param_1, const J3DAnmTexPatternFullData* param_2) {
param_1->mFrameMax = param_2->mFrameMax;
param_1->mAttribute = param_2->field_0x8;
param_1->mFrame = 0.0f;
param_1->mUpdateMaterialNum = param_2->field_0xc;
param_1->field_0x18 = param_2->field_0xe;
param_1->mAnmTable = JSUConvertOffsetToPtr<J3DAnmTexPatternFullTable>(param_2, (void*)param_2->mTableOffset);
param_1->mTextureIndex = JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mValuesOffset);
param_1->mUpdateMaterialID = JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mUpdateMaterialIDOffset);
param_1->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(param_2, (void*)param_2->mNameTabOffset));
void J3DAnmFullLoader_v15::setAnmTexPattern(J3DAnmTexPattern* dst, const J3DAnmTexPatternFullData* data) {
dst->mFrameMax = data->mFrameMax;
dst->mAttribute = data->field_0x8;
dst->mFrame = 0.0f;
dst->mUpdateMaterialNum = data->field_0xc;
dst->field_0x18 = data->field_0xe;
dst->mAnmTable = JSUConvertOffsetToPtr<J3DAnmTexPatternFullTable>(data, (void*)data->mTableOffset);
dst->mTextureIndex = JSUConvertOffsetToPtr<u16>(data, (void*)data->mValuesOffset);
dst->mUpdateMaterialID = JSUConvertOffsetToPtr<u16>(data, (void*)data->mUpdateMaterialIDOffset);
dst->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(data, (void*)data->mNameTabOffset));
}
/* 80300050-80300078 .text readAnmVisibility__20J3DAnmFullLoader_v15FPC24J3DAnmVisibilityFullData */
void J3DAnmFullLoader_v15::readAnmVisibility(const J3DAnmVisibilityFullData* param_1) {
setAnmVisibility((J3DAnmVisibilityFull*)mAnm, param_1);
void J3DAnmFullLoader_v15::readAnmVisibility(const J3DAnmVisibilityFullData* dst) {
setAnmVisibility((J3DAnmVisibilityFull*)mAnm, dst);
}
/* 80300078-803000F4 .text setAnmVisibility__20J3DAnmFullLoader_v15FP20J3DAnmVisibilityFullPC24J3DAnmVisibilityFullData */
void J3DAnmFullLoader_v15::setAnmVisibility(J3DAnmVisibilityFull* param_1, const J3DAnmVisibilityFullData* param_2) {
param_1->mFrameMax = param_2->mFrameMax;
param_1->mAttribute = param_2->field_0x8;
param_1->mFrame = 0.0f;
param_1->mUpdateMaterialNum = param_2->field_0xc;
param_1->field_0x12 = param_2->field_0xe;
param_1->mAnmTable = JSUConvertOffsetToPtr<J3DAnmVisibilityFullTable>(param_2, (void*)param_2->mTableOffset);
param_1->mVisibility = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mValuesOffset);
void J3DAnmFullLoader_v15::setAnmVisibility(J3DAnmVisibilityFull* dst, const J3DAnmVisibilityFullData* data) {
dst->mFrameMax = data->mFrameMax;
dst->mAttribute = data->field_0x8;
dst->mFrame = 0.0f;
dst->mUpdateMaterialNum = data->field_0xc;
dst->field_0x12 = data->field_0xe;
dst->mAnmTable = JSUConvertOffsetToPtr<J3DAnmVisibilityFullTable>(data, (void*)data->mTableOffset);
dst->mVisibility = JSUConvertOffsetToPtr<u8>(data, (void*)data->mValuesOffset);
}
/* 803000F4-8030011C .text readAnmCluster__20J3DAnmFullLoader_v15FPC21J3DAnmClusterFullData */
void J3DAnmFullLoader_v15::readAnmCluster(const J3DAnmClusterFullData* param_1) {
setAnmCluster((J3DAnmClusterFull*)mAnm, param_1);
void J3DAnmFullLoader_v15::readAnmCluster(const J3DAnmClusterFullData* dst) {
setAnmCluster((J3DAnmClusterFull*)mAnm, dst);
}
/* 8030011C-80300188 .text setAnmCluster__20J3DAnmFullLoader_v15FP17J3DAnmClusterFullPC21J3DAnmClusterFullData */
void J3DAnmFullLoader_v15::setAnmCluster(J3DAnmClusterFull* param_1, const J3DAnmClusterFullData* param_2) {
param_1->mFrameMax = param_2->mFrameMax;
param_1->mAttribute = param_2->field_0x8;
param_1->mFrame = 0.0f;
param_1->mAnmTable = JSUConvertOffsetToPtr<J3DAnmClusterFullTable>(param_2, (void*)param_2->mTableOffset);
param_1->mWeight = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->mWeightOffset);
void J3DAnmFullLoader_v15::setAnmCluster(J3DAnmClusterFull* dst, const J3DAnmClusterFullData* data) {
dst->mFrameMax = data->mFrameMax;
dst->mAttribute = data->field_0x8;
dst->mFrame = 0.0f;
dst->mAnmTable = JSUConvertOffsetToPtr<J3DAnmClusterFullTable>(data, (void*)data->mTableOffset);
dst->mWeight = JSUConvertOffsetToPtr<f32>(data, (void*)data->mWeightOffset);
}
/* 80300188-803001B0 .text readAnmVtxColor__20J3DAnmFullLoader_v15FPC22J3DAnmVtxColorFullData */
void J3DAnmFullLoader_v15::readAnmVtxColor(const J3DAnmVtxColorFullData* param_1) {
setAnmVtxColor((J3DAnmVtxColorFull*)mAnm, param_1);
void J3DAnmFullLoader_v15::readAnmVtxColor(const J3DAnmVtxColorFullData* dst) {
setAnmVtxColor((J3DAnmVtxColorFull*)mAnm, dst);
}
/* 803001B0-80300318 .text setAnmVtxColor__20J3DAnmFullLoader_v15FP18J3DAnmVtxColorFullPC22J3DAnmVtxColorFullData */
@@ -368,8 +368,8 @@ void J3DAnmFullLoader_v15::setAnmVtxColor(J3DAnmVtxColorFull* dst, const J3DAnmV
}
/* 80300318-80300464 .text load__19J3DAnmKeyLoader_v15FPCv */
J3DAnmBase* J3DAnmKeyLoader_v15::load(const void* param_1) {
const JUTDataFileHeader* header = (const JUTDataFileHeader*)param_1;
J3DAnmBase* J3DAnmKeyLoader_v15::load(const void* dst) {
const JUTDataFileHeader* header = (const JUTDataFileHeader*)dst;
const JUTDataBlockHeader* block = &header->mFirstBlock;
for (int i = 0; i < header->mBlockNum; i++) {
switch (block->mType) {
@@ -401,39 +401,39 @@ J3DAnmBase* J3DAnmKeyLoader_v15::load(const void* param_1) {
}
/* 80300464-80300610 .text setResource__19J3DAnmKeyLoader_v15FP10J3DAnmBasePCv */
void J3DAnmKeyLoader_v15::setResource(J3DAnmBase* param_1, const void* param_2) {
const JUTDataFileHeader* header = (const JUTDataFileHeader*)param_2;
void J3DAnmKeyLoader_v15::setResource(J3DAnmBase* dst, const void* data) {
const JUTDataFileHeader* header = (const JUTDataFileHeader*)data;
const JUTDataBlockHeader* block = &header->mFirstBlock;
for (int i = 0; i < header->mBlockNum; i++) {
switch (block->mType) {
case 'ANK1':
if (param_1->getKind() == 0) {
setAnmTransform((J3DAnmTransformKey*)param_1, (const J3DAnmTransformKeyData*)block);
if (dst->getKind() == 0) {
setAnmTransform((J3DAnmTransformKey*)dst, (const J3DAnmTransformKeyData*)block);
}
break;
case 'PAK1':
if (param_1->getKind() == 1) {
setAnmColor((J3DAnmColorKey*)param_1, (const J3DAnmColorKeyData*)block);
if (dst->getKind() == 1) {
setAnmColor((J3DAnmColorKey*)dst, (const J3DAnmColorKeyData*)block);
}
break;
case 'CLK1':
if (param_1->getKind() == 3) {
setAnmCluster((J3DAnmClusterKey*)param_1, (const J3DAnmClusterKeyData*)block);
if (dst->getKind() == 3) {
setAnmCluster((J3DAnmClusterKey*)dst, (const J3DAnmClusterKeyData*)block);
}
break;
case 'TTK1':
if (param_1->getKind() == 4) {
setAnmTextureSRT((J3DAnmTextureSRTKey*)param_1, (const J3DAnmTextureSRTKeyData*)block);
if (dst->getKind() == 4) {
setAnmTextureSRT((J3DAnmTextureSRTKey*)dst, (const J3DAnmTextureSRTKeyData*)block);
}
break;
case 'TRK1':
if (param_1->getKind() == 5) {
setAnmTevReg((J3DAnmTevRegKey*)param_1, (const J3DAnmTevRegKeyData*)block);
if (dst->getKind() == 5) {
setAnmTevReg((J3DAnmTevRegKey*)dst, (const J3DAnmTevRegKeyData*)block);
}
break;
case 'VCK1':
if (param_1->getKind() == 7) {
setAnmVtxColor((J3DAnmVtxColorKey*)param_1, (const J3DAnmVtxColorKeyData*)block);
if (dst->getKind() == 7) {
setAnmVtxColor((J3DAnmVtxColorKey*)dst, (const J3DAnmVtxColorKeyData*)block);
}
break;
default:
@@ -445,149 +445,149 @@ void J3DAnmKeyLoader_v15::setResource(J3DAnmBase* param_1, const void* param_2)
}
/* 80300610-80300638 .text readAnmTransform__19J3DAnmKeyLoader_v15FPC22J3DAnmTransformKeyData */
void J3DAnmKeyLoader_v15::readAnmTransform(const J3DAnmTransformKeyData* param_1) {
setAnmTransform((J3DAnmTransformKey*)mAnm, param_1);
void J3DAnmKeyLoader_v15::readAnmTransform(const J3DAnmTransformKeyData* dst) {
setAnmTransform((J3DAnmTransformKey*)mAnm, dst);
}
/* 80300638-803006D4 .text setAnmTransform__19J3DAnmKeyLoader_v15FP18J3DAnmTransformKeyPC22J3DAnmTransformKeyData */
void J3DAnmKeyLoader_v15::setAnmTransform(J3DAnmTransformKey* param_1, const J3DAnmTransformKeyData* param_2) {
param_1->field_0x22 = param_2->field_0xc;
param_1->mFrameMax = param_2->mFrameMax;
param_1->mAttribute = param_2->field_0x8;
param_1->mDecShift = param_2->field_0x9;
param_1->mFrame = 0.0f;
param_1->mAnmTable = JSUConvertOffsetToPtr<J3DAnmTransformKeyTable>(param_2, (void*)param_2->mTableOffset);
param_1->mScaleData = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->field_0x18);
param_1->mRotData = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->field_0x1c);
param_1->mTransData = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->field_0x20);
void J3DAnmKeyLoader_v15::setAnmTransform(J3DAnmTransformKey* dst, const J3DAnmTransformKeyData* data) {
dst->field_0x22 = data->field_0xc;
dst->mFrameMax = data->mFrameMax;
dst->mAttribute = data->mAttribute;
dst->mDecShift = data->mDecShift;
dst->mFrame = 0.0f;
dst->mAnmTable = JSUConvertOffsetToPtr<J3DAnmTransformKeyTable>(data, (void*)data->mTableOffset);
dst->mScaleData = JSUConvertOffsetToPtr<f32>(data, (void*)data->mScaleOffset);
dst->mRotData = JSUConvertOffsetToPtr<s16>(data, (void*)data->mRotOffset);
dst->mTransData = JSUConvertOffsetToPtr<f32>(data, (void*)data->mTransOffset);
}
/* 803006D4-803006FC .text readAnmTextureSRT__19J3DAnmKeyLoader_v15FPC23J3DAnmTextureSRTKeyData */
void J3DAnmKeyLoader_v15::readAnmTextureSRT(const J3DAnmTextureSRTKeyData* param_1) {
setAnmTextureSRT((J3DAnmTextureSRTKey*)mAnm, param_1);
void J3DAnmKeyLoader_v15::readAnmTextureSRT(const J3DAnmTextureSRTKeyData* dst) {
setAnmTextureSRT((J3DAnmTextureSRTKey*)mAnm, dst);
}
/* 803006FC-803008D8 .text setAnmTextureSRT__19J3DAnmKeyLoader_v15FP19J3DAnmTextureSRTKeyPC23J3DAnmTextureSRTKeyData */
void J3DAnmKeyLoader_v15::setAnmTextureSRT(J3DAnmTextureSRTKey* param_1, const J3DAnmTextureSRTKeyData* param_2) {
param_1->mTrackNum = param_2->field_0xc;
param_1->mFrameMax = param_2->field_0xa;
param_1->mAttribute = param_2->field_0x8;
param_1->mDecShift = param_2->field_0x9;
param_1->mFrame = 0.0f;
param_1->mTrackNum = param_2->field_0xc;
param_1->mScaleNum = param_2->field_0xe;
param_1->mRotNum = param_2->field_0x10;
param_1->mTransNum = param_2->field_0x12;
param_1->mAnmTable = JSUConvertOffsetToPtr<J3DAnmTransformKeyTable>(param_2, (void*)param_2->mTableOffset);
param_1->mUpdateMaterialID = JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mUpdateMatIDOffset);
param_1->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(param_2, (void*)param_2->mNameTab1Offset));
param_1->mUpdateTexMtxID = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mUpdateTexMtxIDOffset);
param_1->mSRTCenter = JSUConvertOffsetToPtr<Vec>(param_2, (void*)param_2->unkOffset);
param_1->mScaleData = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->mScaleValOffset);
param_1->mRotData = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mRotValOffset);
param_1->mTransData = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->mTransValOffset);
if (param_2->mNameTab2Offset) {
param_1->mPostUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(param_2, (void*)param_2->mNameTab2Offset));
void J3DAnmKeyLoader_v15::setAnmTextureSRT(J3DAnmTextureSRTKey* dst, const J3DAnmTextureSRTKeyData* data) {
dst->mTrackNum = data->field_0xc;
dst->mFrameMax = data->field_0xa;
dst->mAttribute = data->field_0x8;
dst->mDecShift = data->field_0x9;
dst->mFrame = 0.0f;
dst->mTrackNum = data->field_0xc;
dst->mScaleNum = data->field_0xe;
dst->mRotNum = data->field_0x10;
dst->mTransNum = data->field_0x12;
dst->mAnmTable = JSUConvertOffsetToPtr<J3DAnmTransformKeyTable>(data, (void*)data->mTableOffset);
dst->mUpdateMaterialID = JSUConvertOffsetToPtr<u16>(data, (void*)data->mUpdateMatIDOffset);
dst->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(data, (void*)data->mNameTab1Offset));
dst->mUpdateTexMtxID = JSUConvertOffsetToPtr<u8>(data, (void*)data->mUpdateTexMtxIDOffset);
dst->mSRTCenter = JSUConvertOffsetToPtr<Vec>(data, (void*)data->unkOffset);
dst->mScaleData = JSUConvertOffsetToPtr<f32>(data, (void*)data->mScaleValOffset);
dst->mRotData = JSUConvertOffsetToPtr<s16>(data, (void*)data->mRotValOffset);
dst->mTransData = JSUConvertOffsetToPtr<f32>(data, (void*)data->mTransValOffset);
if (data->mNameTab2Offset) {
dst->mPostUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(data, (void*)data->mNameTab2Offset));
}
param_1->mPostTrackNum = param_2->field_0x34;
param_1->field_0x4c = param_2->field_0x36;
param_1->field_0x4e = param_2->field_0x38;
param_1->field_0x50 = param_2->field_0x3a;
param_1->field_0x64 = JSUConvertOffsetToPtr<J3DAnmTransformKeyTable>(param_2, (void*)param_2->mInfoTable2Offset);
param_1->mPostUpdateMaterialID = JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->field_0x40);
param_1->mPostUpdateTexMtxID = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->field_0x48);
param_1->mPostSRTCenter = JSUConvertOffsetToPtr<Vec>(param_2, (void*)param_2->field_0x4c);
param_1->field_0x54 = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->field_0x50);
param_1->field_0x58 = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->field_0x54);
param_1->field_0x5c = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->field_0x58);
switch (param_2->field_0x5c) {
dst->mPostTrackNum = data->field_0x34;
dst->field_0x4c = data->field_0x36;
dst->field_0x4e = data->field_0x38;
dst->field_0x50 = data->field_0x3a;
dst->field_0x64 = JSUConvertOffsetToPtr<J3DAnmTransformKeyTable>(data, (void*)data->mInfoTable2Offset);
dst->mPostUpdateMaterialID = JSUConvertOffsetToPtr<u16>(data, (void*)data->field_0x40);
dst->mPostUpdateTexMtxID = JSUConvertOffsetToPtr<u8>(data, (void*)data->field_0x48);
dst->mPostSRTCenter = JSUConvertOffsetToPtr<Vec>(data, (void*)data->field_0x4c);
dst->field_0x54 = JSUConvertOffsetToPtr<f32>(data, (void*)data->field_0x50);
dst->field_0x58 = JSUConvertOffsetToPtr<s16>(data, (void*)data->field_0x54);
dst->field_0x5c = JSUConvertOffsetToPtr<f32>(data, (void*)data->field_0x58);
switch (data->field_0x5c) {
case 0:
case 1:
param_1->mTexMtxCalcType = param_2->field_0x5c;
dst->mTexMtxCalcType = data->field_0x5c;
break;
default:
param_1->mTexMtxCalcType = 0;
dst->mTexMtxCalcType = 0;
break;
}
}
/* 803008D8-80300900 .text readAnmColor__19J3DAnmKeyLoader_v15FPC18J3DAnmColorKeyData */
void J3DAnmKeyLoader_v15::readAnmColor(const J3DAnmColorKeyData* param_1) {
setAnmColor((J3DAnmColorKey*)mAnm, param_1);
void J3DAnmKeyLoader_v15::readAnmColor(const J3DAnmColorKeyData* dst) {
setAnmColor((J3DAnmColorKey*)mAnm, dst);
}
/* 80300900-803009EC .text setAnmColor__19J3DAnmKeyLoader_v15FP14J3DAnmColorKeyPC18J3DAnmColorKeyData */
void J3DAnmKeyLoader_v15::setAnmColor(J3DAnmColorKey* param_1, const J3DAnmColorKeyData* param_2) {
param_1->mFrameMax = param_2->mFrameMax;
param_1->mAttribute = param_2->field_0x8;
param_1->mFrame = 0.0f;
param_1->mUpdateMaterialNum = param_2->mUpdateMaterialNum;
param_1->field_0x10 = param_2->field_0x10;
param_1->field_0x12 = param_2->field_0x12;
param_1->field_0x14 = param_2->field_0x14;
param_1->field_0x16 = param_2->field_0x16;
param_1->mTable = JSUConvertOffsetToPtr<J3DAnmColorKeyTable>(param_2, (void*)param_2->mTableOffset);
param_1->mColorR = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mRValOffset);
param_1->mColorG = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mGValOffset);
param_1->mColorB = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mBValOffset);
param_1->mColorA = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mAValOffset);
param_1->mUpdateMaterialID = JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mUpdateMaterialIDOffset);
param_1->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(param_2, (void*)param_2->mNameTabOffset));
void J3DAnmKeyLoader_v15::setAnmColor(J3DAnmColorKey* dst, const J3DAnmColorKeyData* data) {
dst->mFrameMax = data->mFrameMax;
dst->mAttribute = data->field_0x8;
dst->mFrame = 0.0f;
dst->mUpdateMaterialNum = data->mUpdateMaterialNum;
dst->field_0x10 = data->field_0x10;
dst->field_0x12 = data->field_0x12;
dst->field_0x14 = data->field_0x14;
dst->field_0x16 = data->field_0x16;
dst->mTable = JSUConvertOffsetToPtr<J3DAnmColorKeyTable>(data, (void*)data->mTableOffset);
dst->mColorR = JSUConvertOffsetToPtr<s16>(data, (void*)data->mRValOffset);
dst->mColorG = JSUConvertOffsetToPtr<s16>(data, (void*)data->mGValOffset);
dst->mColorB = JSUConvertOffsetToPtr<s16>(data, (void*)data->mBValOffset);
dst->mColorA = JSUConvertOffsetToPtr<s16>(data, (void*)data->mAValOffset);
dst->mUpdateMaterialID = JSUConvertOffsetToPtr<u16>(data, (void*)data->mUpdateMaterialIDOffset);
dst->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(data, (void*)data->mNameTabOffset));
}
/* 803009EC-80300A14 .text readAnmCluster__19J3DAnmKeyLoader_v15FPC20J3DAnmClusterKeyData */
void J3DAnmKeyLoader_v15::readAnmCluster(const J3DAnmClusterKeyData* param_1) {
setAnmCluster((J3DAnmClusterKey*)mAnm, param_1);
void J3DAnmKeyLoader_v15::readAnmCluster(const J3DAnmClusterKeyData* dst) {
setAnmCluster((J3DAnmClusterKey*)mAnm, dst);
}
/* 80300A14-80300A80 .text setAnmCluster__19J3DAnmKeyLoader_v15FP16J3DAnmClusterKeyPC20J3DAnmClusterKeyData */
void J3DAnmKeyLoader_v15::setAnmCluster(J3DAnmClusterKey* param_1, const J3DAnmClusterKeyData* param_2) {
param_1->mFrameMax = param_2->mFrameMax;
param_1->mAttribute = param_2->field_0x8;
param_1->mFrame = 0.0f;
param_1->mAnmTable = JSUConvertOffsetToPtr<J3DAnmClusterKeyTable>(param_2, (void*)param_2->mTableOffset);
param_1->mWeight = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->mWeightOffset);
void J3DAnmKeyLoader_v15::setAnmCluster(J3DAnmClusterKey* dst, const J3DAnmClusterKeyData* data) {
dst->mFrameMax = data->mFrameMax;
dst->mAttribute = data->field_0x8;
dst->mFrame = 0.0f;
dst->mAnmTable = JSUConvertOffsetToPtr<J3DAnmClusterKeyTable>(data, (void*)data->mTableOffset);
dst->mWeight = JSUConvertOffsetToPtr<f32>(data, (void*)data->mWeightOffset);
}
/* 80300A80-80300AA8 .text readAnmTevReg__19J3DAnmKeyLoader_v15FPC19J3DAnmTevRegKeyData */
void J3DAnmKeyLoader_v15::readAnmTevReg(const J3DAnmTevRegKeyData* param_1) {
setAnmTevReg((J3DAnmTevRegKey*)mAnm, param_1);
void J3DAnmKeyLoader_v15::readAnmTevReg(const J3DAnmTevRegKeyData* dst) {
setAnmTevReg((J3DAnmTevRegKey*)mAnm, dst);
}
/* 80300AA8-80300C34 .text setAnmTevReg__19J3DAnmKeyLoader_v15FP15J3DAnmTevRegKeyPC19J3DAnmTevRegKeyData */
void J3DAnmKeyLoader_v15::setAnmTevReg(J3DAnmTevRegKey* param_1, const J3DAnmTevRegKeyData* param_2) {
param_1->mFrameMax = param_2->mFrameMax;
param_1->mAttribute = param_2->field_0x8;
param_1->mFrame = 0.0f;
param_1->mCRegUpdateMaterialNum = param_2->mCRegUpdateMaterialNum;
param_1->mAnmCRegKeyTable = JSUConvertOffsetToPtr<J3DAnmCRegKeyTable>(param_2, (void*)param_2->mCRegTableOffset);
param_1->mCRegUpdateMaterialID = JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mCRegUpdateMaterialIDOffset);
param_1->mCRegUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(param_2, (void*)param_2->mCRegNameTabOffset));
param_1->mKRegUpdateMaterialNum = param_2->mKRegUpdateMaterialNum;
param_1->mAnmKRegKeyTable = JSUConvertOffsetToPtr<J3DAnmKRegKeyTable>(param_2, (void*)param_2->mKRegTableOffset);
param_1->mKRegUpdateMaterialID = JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mKRegUpdateMaterialIDOffset);
param_1->mKRegUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(param_2, (void*)param_2->mKRegNameTabOffset));
param_1->mCRegDataCountR = param_2->field_0x10;
param_1->mCRegDataCountG = param_2->field_0x12;
param_1->mCRegDataCountB = param_2->field_0x14;
param_1->mCRegDataCountA = param_2->field_0x16;
param_1->mAnmCRegDataR = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mCRValuesOffset);
param_1->mAnmCRegDataG = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mCGValuesOffset);
param_1->mAnmCRegDataB = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mCBValuesOffset);
param_1->mAnmCRegDataA = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mCAValuesOffset);
param_1->mKRegDataCountR = param_2->field_0x18;
param_1->mKRegDataCountG = param_2->field_0x1a;
param_1->mKRegDataCountB = param_2->field_0x1c;
param_1->mKRegDataCountA = param_2->field_0x1e;
param_1->mAnmKRegDataR = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mKRValuesOffset);
param_1->mAnmKRegDataG = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mKGValuesOffset);
param_1->mAnmKRegDataB = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mKBValuesOffset);
param_1->mAnmKRegDataA = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mKAValuesOffset);
void J3DAnmKeyLoader_v15::setAnmTevReg(J3DAnmTevRegKey* dst, const J3DAnmTevRegKeyData* data) {
dst->mFrameMax = data->mFrameMax;
dst->mAttribute = data->field_0x8;
dst->mFrame = 0.0f;
dst->mCRegUpdateMaterialNum = data->mCRegUpdateMaterialNum;
dst->mAnmCRegKeyTable = JSUConvertOffsetToPtr<J3DAnmCRegKeyTable>(data, (void*)data->mCRegTableOffset);
dst->mCRegUpdateMaterialID = JSUConvertOffsetToPtr<u16>(data, (void*)data->mCRegUpdateMaterialIDOffset);
dst->mCRegUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(data, (void*)data->mCRegNameTabOffset));
dst->mKRegUpdateMaterialNum = data->mKRegUpdateMaterialNum;
dst->mAnmKRegKeyTable = JSUConvertOffsetToPtr<J3DAnmKRegKeyTable>(data, (void*)data->mKRegTableOffset);
dst->mKRegUpdateMaterialID = JSUConvertOffsetToPtr<u16>(data, (void*)data->mKRegUpdateMaterialIDOffset);
dst->mKRegUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(data, (void*)data->mKRegNameTabOffset));
dst->mCRegDataCountR = data->field_0x10;
dst->mCRegDataCountG = data->field_0x12;
dst->mCRegDataCountB = data->field_0x14;
dst->mCRegDataCountA = data->field_0x16;
dst->mAnmCRegDataR = JSUConvertOffsetToPtr<s16>(data, (void*)data->mCRValuesOffset);
dst->mAnmCRegDataG = JSUConvertOffsetToPtr<s16>(data, (void*)data->mCGValuesOffset);
dst->mAnmCRegDataB = JSUConvertOffsetToPtr<s16>(data, (void*)data->mCBValuesOffset);
dst->mAnmCRegDataA = JSUConvertOffsetToPtr<s16>(data, (void*)data->mCAValuesOffset);
dst->mKRegDataCountR = data->field_0x18;
dst->mKRegDataCountG = data->field_0x1a;
dst->mKRegDataCountB = data->field_0x1c;
dst->mKRegDataCountA = data->field_0x1e;
dst->mAnmKRegDataR = JSUConvertOffsetToPtr<s16>(data, (void*)data->mKRValuesOffset);
dst->mAnmKRegDataG = JSUConvertOffsetToPtr<s16>(data, (void*)data->mKGValuesOffset);
dst->mAnmKRegDataB = JSUConvertOffsetToPtr<s16>(data, (void*)data->mKBValuesOffset);
dst->mAnmKRegDataA = JSUConvertOffsetToPtr<s16>(data, (void*)data->mKAValuesOffset);
}
/* 80300C34-80300C5C .text readAnmVtxColor__19J3DAnmKeyLoader_v15FPC21J3DAnmVtxColorKeyData */
void J3DAnmKeyLoader_v15::readAnmVtxColor(const J3DAnmVtxColorKeyData* param_1) {
setAnmVtxColor((J3DAnmVtxColorKey*)mAnm, param_1);
void J3DAnmKeyLoader_v15::readAnmVtxColor(const J3DAnmVtxColorKeyData* dst) {
setAnmVtxColor((J3DAnmVtxColorKey*)mAnm, dst);
}
/* 80300C5C-80300DC4 .text setAnmVtxColor__19J3DAnmKeyLoader_v15FP17J3DAnmVtxColorKeyPC21J3DAnmVtxColorKeyData */
+15 -15
View File
@@ -392,15 +392,15 @@ void J3DModelLoader_v26::readMaterial(const J3DMaterialBlock* i_block, u32 i_fla
}
mpMaterialTable->mMaterialNodePointer = new J3DMaterial*[mpMaterialTable->mMaterialNum];
if (i_flags & 0x200000) {
mpMaterialTable->field_0x14 = new (0x20) J3DMaterial[mpMaterialTable->mUniqueMatNum];
mpMaterialTable->mMaterialBase = new (0x20) J3DMaterial[mpMaterialTable->mUniqueMatNum];
} else {
mpMaterialTable->field_0x14 = NULL;
mpMaterialTable->mMaterialBase = NULL;
}
if (i_flags & 0x200000) {
for (u16 i = 0; i < mpMaterialTable->mUniqueMatNum; i++) {
factory.create(&mpMaterialTable->field_0x14[i],
factory.create(&mpMaterialTable->mMaterialBase[i],
J3DMaterialFactory::MATERIAL_TYPE_NORMAL, i, i_flags);
mpMaterialTable->field_0x14[i].mDiffFlag = (u32)&mpMaterialTable->field_0x14[i] >> 4;
mpMaterialTable->mMaterialBase[i].mDiffFlag = (u32)&mpMaterialTable->mMaterialBase[i] >> 4;
}
}
for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) {
@@ -410,9 +410,9 @@ void J3DModelLoader_v26::readMaterial(const J3DMaterialBlock* i_block, u32 i_fla
if (i_flags & 0x200000) {
for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) {
mpMaterialTable->mMaterialNodePointer[i]->mDiffFlag =
(u32)&mpMaterialTable->field_0x14[factory.getMaterialID(i)] >> 4;
(u32)&mpMaterialTable->mMaterialBase[factory.getMaterialID(i)] >> 4;
mpMaterialTable->mMaterialNodePointer[i]->mpOrigMaterial =
&mpMaterialTable->field_0x14[factory.getMaterialID(i)];
&mpMaterialTable->mMaterialBase[factory.getMaterialID(i)];
}
} else {
for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) {
@@ -435,14 +435,14 @@ void J3DModelLoader_v21::readMaterial_v21(const J3DMaterialBlock_v21* i_block, u
}
mpMaterialTable->mMaterialNodePointer = new J3DMaterial*[mpMaterialTable->mMaterialNum];
if (i_flags & 0x200000) {
mpMaterialTable->field_0x14 = new (0x20) J3DMaterial[mpMaterialTable->mUniqueMatNum];
mpMaterialTable->mMaterialBase = new (0x20) J3DMaterial[mpMaterialTable->mUniqueMatNum];
} else {
mpMaterialTable->field_0x14 = NULL;
mpMaterialTable->mMaterialBase = NULL;
}
if (i_flags & 0x200000) {
for (u16 i = 0; i < mpMaterialTable->mUniqueMatNum; i++) {
factory.create(&mpMaterialTable->field_0x14[i], i, i_flags);
mpMaterialTable->field_0x14[i].mDiffFlag = (u32)&mpMaterialTable->field_0x14[i] >> 4;
factory.create(&mpMaterialTable->mMaterialBase[i], i, i_flags);
mpMaterialTable->mMaterialBase[i].mDiffFlag = (u32)&mpMaterialTable->mMaterialBase[i] >> 4;
}
}
for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) {
@@ -451,9 +451,9 @@ void J3DModelLoader_v21::readMaterial_v21(const J3DMaterialBlock_v21* i_block, u
if (i_flags & 0x200000) {
for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) {
mpMaterialTable->mMaterialNodePointer[i]->mDiffFlag =
(u32)&mpMaterialTable->field_0x14[factory.getMaterialID(i)] >> 4;
(u32)&mpMaterialTable->mMaterialBase[factory.getMaterialID(i)] >> 4;
mpMaterialTable->mMaterialNodePointer[i]->mpOrigMaterial =
&mpMaterialTable->field_0x14[factory.getMaterialID(i)];
&mpMaterialTable->mMaterialBase[factory.getMaterialID(i)];
}
} else {
for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) {
@@ -563,7 +563,7 @@ void J3DModelLoader::readPatchedMaterial(const J3DMaterialBlock* i_block, u32 i_
mpMaterialTable->mMaterialName = NULL;
}
mpMaterialTable->mMaterialNodePointer = new J3DMaterial*[mpMaterialTable->mMaterialNum];
mpMaterialTable->field_0x14 = NULL;
mpMaterialTable->mMaterialBase = NULL;
for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) {
mpMaterialTable->mMaterialNodePointer[i] =
factory.create(NULL, J3DMaterialFactory::MATERIAL_TYPE_PATCHED, i, i_flags);
@@ -576,7 +576,7 @@ void J3DModelLoader::readPatchedMaterial(const J3DMaterialBlock* i_block, u32 i_
void J3DModelLoader::readMaterialDL(const J3DMaterialDLBlock* i_block, u32 i_flags) {
J3DMaterialFactory factory(*i_block);
if (mpMaterialTable->mMaterialNum == 0) {
mpMaterialTable->field_0x20 = 1;
mpMaterialTable->mbIsLocked = 1;
mpMaterialTable->mMaterialNum = i_block->mMaterialNum;
mpMaterialTable->mUniqueMatNum = i_block->mMaterialNum;
if (i_block->mpNameTable != NULL) {
@@ -586,7 +586,7 @@ void J3DModelLoader::readMaterialDL(const J3DMaterialDLBlock* i_block, u32 i_fla
mpMaterialTable->mMaterialName = NULL;
}
mpMaterialTable->mMaterialNodePointer = new J3DMaterial*[mpMaterialTable->mMaterialNum];
mpMaterialTable->field_0x14 = NULL;
mpMaterialTable->mMaterialBase = NULL;
for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) {
mpMaterialTable->mMaterialNodePointer[i] = factory.create(
NULL, J3DMaterialFactory::MATERIAL_TYPE_LOCKED, i, (u32)i_flags // cast fixes regalloc
+326 -8
View File
@@ -1815,13 +1815,69 @@ u8 l_toonMat1DL[] ALIGN_DECL(32) = {
};
/* 800143B8-80014580 .text init__15mDoExt_3Dline_cFUsii */
int mDoExt_3Dline_c::init(u16, int, int) {
/* Nonmatching */
int mDoExt_3Dline_c::init(u16 numSegments, int hasSize, int hasTex) {
mpSegments = new cXyz[numSegments];
if (mpSegments == NULL)
return FALSE;
if (hasSize) {
mpSize = new u8[numSegments];
if (mpSize == NULL)
return FALSE;
} else {
mpSize = NULL;
}
u32 numArr = numSegments * 2;
mPosArr[0] = new cXyz[numArr];
if (mPosArr[0] == NULL)
return FALSE;
mPosArr[1] = new cXyz[numArr];
if (mPosArr[1] == NULL)
return FALSE;
if (hasTex) {
mTexArr[0] = new cXy[numArr];
if (mTexArr[0] == NULL)
return FALSE;
mTexArr[1] = new cXy[numArr];
if (mTexArr[1] == NULL)
return FALSE;
cXy* tex0 = mTexArr[0];
cXy* tex1 = mTexArr[1];
for (s32 i = 0; i < numSegments; i++) {
tex0[0].x = 0.0f;
tex1[0].x = 0.0f;
tex0[1].x = 1.0f;
tex1[1].x = 1.0f;
tex0 += 2;
tex1 += 2;
}
}
return TRUE;
}
/* 80014584-80014664 .text init__19mDoExt_3DlineMat0_cFUsUsi */
int mDoExt_3DlineMat0_c::init(u16, u16, int) {
int mDoExt_3DlineMat0_c::init(u16 numLines, u16 numSegments, int hasSize) {
/* Nonmatching */
mNumLines = numLines;
mMaxSegments = numSegments;
mpLines = new mDoExt_3Dline_c[numLines];
if (mpLines == NULL)
return FALSE;
for (s32 i = 0; i < numLines; i++)
if (!mpLines[i].init(numSegments, hasSize, FALSE))
return FALSE;
mpNextLineMat = NULL;
mCurArr = 0;
return TRUE;
}
/* 80014664-800146A0 .text __dt__15mDoExt_3Dline_cFv */
@@ -1858,12 +1914,118 @@ void mDoExt_3DlineMat0_c::setMaterial() {
/* 80014798-800148B4 .text draw__19mDoExt_3DlineMat0_cFv */
void mDoExt_3DlineMat0_c::draw() {
/* Nonmatching */
GXSetTevColor(GX_TEVREG2, mColor);
if (mpTevStr != NULL) {
GXSetTevColorS10(GX_TEVREG0, mpTevStr->mColorC0);
GXSetTevColor(GX_TEVREG1, mpTevStr->mColorK0);
}
mDoExt_3Dline_c* line = mpLines;
u16 numTriStrip = mNumSegments * 2;
for (s32 i = 0; i < mNumLines; i++) {
GXSetArray(GX_VA_POS, line->mPosArr[mCurArr], sizeof(cXyz));
GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, numTriStrip);
for (u16 j = 0; j < numTriStrip;) {
GXPosition1x16(j);
GXNormal1x8(0);
j++;
GXPosition1x16(j);
GXNormal1x8(1);
j++;
}
GXEnd();
line++;
}
mCurArr ^= 1;
}
/* 800148B4-80014E04 .text update__19mDoExt_3DlineMat0_cFUsfR8_GXColorUsP12dKy_tevstr_c */
void mDoExt_3DlineMat0_c::update(u16, f32, GXColor&, u16, dKy_tevstr_c*) {
void mDoExt_3DlineMat0_c::update(u16 segs, f32 size, GXColor& newColor, u16 space, dKy_tevstr_c* pTevStr) {
/* Nonmatching */
cXyz eyeDelta;
cXyz delta;
cXyz nextP0;
cXyz nextP1;
mColor = newColor;
mpTevStr = pTevStr;
mNumSegments = segs;
if (mNumSegments > mMaxSegments)
mNumSegments = mMaxSegments;
view_class* view = dComIfGd_getView();
mDoExt_3Dline_c* line = mpLines;
f32 spacing;
if (space != 0) {
spacing = size / space;
} else {
spacing = 0.0f;
}
u32 posArrSize = mNumSegments * 2 * sizeof(cXyz);
for (s32 i = 0; i < mNumLines; i++) {
cXyz* pos = line->mpSegments;
cXyz* dstPos = line->mPosArr[mCurArr];
f32 r_size = size;
delta = pos[1] - pos[0];
eyeDelta = pos[0] - view->mLookat.mEye;
delta = delta.outprod(eyeDelta);
f32 scale = delta.abs();
if (scale != 0.0f)
scale = size / scale;
VECScale(&delta, &delta, scale);
dstPos[0] = pos[0] + delta;
dstPos[1] = pos[0] - delta;
pos++;
cXyz* r_dstPos = &dstPos[2];
nextP0 = pos[0] + delta;
nextP1 = pos[0] - delta;
for (s32 j = mNumSegments - 2; j > 0;) {
if (j < space)
r_size -= spacing;
delta = pos[1] - pos[0];
eyeDelta = pos[0] - view->mLookat.mEye;
delta = delta.outprod(eyeDelta);
scale = delta.abs();
if (scale != 0.0f)
scale = r_size / scale;
VECScale(&delta, &delta, scale);
VECAdd(&nextP0, &(pos[0] + delta), &nextP0);
VECAdd(&nextP1, &(pos[0] - delta), &nextP1);
r_dstPos[0] = nextP0 * 0.5f;
r_dstPos[1] = nextP1 * 0.5f;
r_dstPos += 2;
pos++;
nextP0 = pos[0] + delta;
nextP1 = pos[0] - delta;
j--;
}
if (space != 0) {
r_dstPos[0] = pos[0];
r_dstPos[1] = pos[0];
} else {
r_dstPos[0] = nextP0;
r_dstPos[1] = nextP1;
}
DCStoreRangeNoSync(dstPos, posArrSize);
line++;
}
}
/* 80014E04-80015328 .text update__19mDoExt_3DlineMat0_cFUsR8_GXColorP12dKy_tevstr_c */
@@ -1872,8 +2034,28 @@ void mDoExt_3DlineMat0_c::update(u16, GXColor&, dKy_tevstr_c*) {
}
/* 80015328-800154C4 .text init__19mDoExt_3DlineMat1_cFUsUsP7ResTIMGi */
int mDoExt_3DlineMat1_c::init(u16, u16, ResTIMG*, int) {
/* Nonmatching */
int mDoExt_3DlineMat1_c::init(u16 numLines, u16 numSegments, ResTIMG* i_img, int hasSize) {
mNumLines = numLines;
mMaxSegments = numSegments;
mpLines = new mDoExt_3Dline_c[numLines];
if (mpLines == NULL)
return FALSE;
for (s32 i = 0; i < numLines; i++)
if (!mpLines[i].init(numSegments, hasSize, TRUE))
return FALSE;
mpNextLineMat = NULL;
mCurArr = 0;
GXInitTexObj(&mTexObj, (&i_img->format + i_img->imageOffset), i_img->width, i_img->height,
(GXTexFmt)i_img->format, (GXTexWrapMode)i_img->wrapS, (GXTexWrapMode)i_img->wrapT,
(GXBool)(i_img->mipmapCount > 1));
GXInitTexObjLOD(&mTexObj, (GXTexFilter)i_img->minFilter, (GXTexFilter)i_img->magFilter,
i_img->minLOD * 0.125f, i_img->maxLOD * 0.125f, i_img->LODBias * 0.01f,
(GXBool)i_img->biasClamp, (GXBool)i_img->doEdgeLOD,
(GXAnisotropy)i_img->maxAnisotropy);
return TRUE;
}
/* 800154C4-800155DC .text setMaterial__19mDoExt_3DlineMat1_cFv */
@@ -1907,11 +2089,147 @@ void mDoExt_3DlineMat1_c::setMaterial() {
/* 800155DC-80015764 .text draw__19mDoExt_3DlineMat1_cFv */
void mDoExt_3DlineMat1_c::draw() {
/* Nonmatching */
GXLoadTexObj(&mTexObj, GX_TEXMAP0);
u16 h = GXGetTexObjHeight(&mTexObj);
u16 w = GXGetTexObjWidth(&mTexObj);
GXSetTexCoordScaleManually(GX_TEXCOORD0, GX_TRUE, w, h);
GXSetTevColor(GX_TEVREG2, mColor);
if (mpTevStr != NULL) {
GXSetTevColorS10(GX_TEVREG0, mpTevStr->mColorC0);
GXSetTevColor(GX_TEVREG1, mpTevStr->mColorK0);
}
mDoExt_3Dline_c* line = mpLines;
u16 numTriStrip = mNumSegments * 2;
for (s32 i = 0; i < mNumLines; i++) {
GXSetArray(GX_VA_POS, line->mPosArr[mCurArr], sizeof(cXyz));
GXSetArray(GX_VA_TEX0, line->mTexArr[mCurArr], sizeof(cXy));
GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, numTriStrip);
for (u16 j = 0; j < numTriStrip;) {
GXPosition1x16(j);
GXNormal1x8(0);
GXTexCoord1x16(j);
j++;
GXPosition1x16(j);
GXNormal1x8(1);
GXTexCoord1x16(j);
j++;
}
GXEnd();
line++;
}
GXSetTexCoordScaleManually(GX_TEXCOORD0, GX_FALSE, 0, 0);
mCurArr ^= 1;
}
/* 80015764-80015E54 .text update__19mDoExt_3DlineMat1_cFUsfR8_GXColorUsP12dKy_tevstr_c */
void mDoExt_3DlineMat1_c::update(u16, f32, GXColor&, u16, dKy_tevstr_c*) {
void mDoExt_3DlineMat1_c::update(u16 segs, f32 size, GXColor& newColor, u16 space, dKy_tevstr_c* pTevStr) {
/* Nonmatching */
cXyz eyeDelta;
cXyz delta;
cXyz nextP0;
cXyz nextP1;
mColor = newColor;
mpTevStr = pTevStr;
mNumSegments = segs;
if (mNumSegments > mMaxSegments)
mNumSegments = mMaxSegments;
view_class* view = dComIfGd_getView();
mDoExt_3Dline_c* line = mpLines;
f32 spacing;
if (space != 0) {
spacing = size / space;
} else {
spacing = 0.0f;
}
u32 posArrSize = mNumSegments * 2 * sizeof(cXyz);
u32 texArrSize = mNumSegments * 2 * sizeof(cXy);
f32 dist = 0.0f;
for (s32 i = 0; i < mNumLines; i++) {
cXyz* pos = line->mpSegments;
cXyz* dstPos = line->mPosArr[mCurArr];
cXy* dstTex = line->mTexArr[mCurArr];
f32 r_size = size;
dstTex[0].y = dist;
dstTex[1].y = dist;
delta = pos[1] - pos[0];
f32 mag = delta.abs();
dist += mag * 0.1f;
eyeDelta = pos[0] - view->mLookat.mEye;
delta = delta.outprod(eyeDelta);
f32 scale = delta.abs();
if (scale != 0.0f)
scale = size / scale;
VECScale(&delta, &delta, scale);
dstPos[0] = pos[0] + delta;
dstPos[1] = pos[0] - delta;
pos++;
cXyz* r_dstPos = &dstPos[2];
cXy* r_dstTex = &dstTex[1];
nextP0 = pos[0] + delta;
nextP1 = pos[0] - delta;
for (s32 j = mNumSegments - 2; j > 0;) {
if (j < space)
r_size -= spacing;
dstTex[2].y = dist;
dstTex[3].y = dist;
delta = pos[1] - pos[0];
f32 mag = delta.abs();
dist += mag * 0.1f;
eyeDelta = pos[0] - view->mLookat.mEye;
delta = delta.outprod(eyeDelta);
scale = delta.abs();
if (scale != 0.0f)
scale = r_size / scale;
VECScale(&delta, &delta, scale);
VECAdd(&nextP0, &(pos[0] + delta), &nextP0);
VECAdd(&nextP1, &(pos[0] - delta), &nextP1);
r_dstPos[2] = nextP0 * 0.5f;
r_dstPos[3] = nextP1 * 0.5f;
pos++;
nextP0 = pos[0] + delta;
nextP1 = pos[0] - delta;
j--;
r_dstTex++;
r_dstPos += 2;
}
r_dstTex[0].y = dist;
r_dstTex[1].y = dist;
if (space != 0) {
r_dstPos[0] = pos[0];
r_dstPos[1] = pos[0];
} else {
r_dstPos[0] = nextP0;
r_dstPos[1] = nextP1;
}
DCStoreRangeNoSync(dstPos, posArrSize);
DCStoreRangeNoSync(dstTex, texArrSize);
line++;
}
}
/* 80015E54-80016518 .text update__19mDoExt_3DlineMat1_cFUsR8_GXColorP12dKy_tevstr_c */