This commit is contained in:
LagoLunatic 2024-03-21 17:53:48 -04:00
parent 069135a316
commit b6d0373644
9 changed files with 313 additions and 122 deletions

View File

@ -10,7 +10,7 @@ public:
virtual void startAnimSound(void*, u32, JAISound**, JAInter::Actor*, u8);
virtual void setSpeedModifySound(JAISound*, JAIAnimeFrameSoundData*, f32);
void setAnimSound(Vec*, f32, f32, u32, s8);
void setAnimSound(Vec* pos, f32 frame, f32 rate, u32 mtrlSndId, s8 reverb);
void setPlayPosition(f32);
};

View File

@ -13,7 +13,7 @@ public:
void chk_appear();
void init_mtx();
void birthEffect(int, cXyz*, csXyz*, _GXColor*);
void birthEffect(int, cXyz*, csXyz*, GXColor*);
void solidHeapCB(fopAc_ac_c*);
void create_heap();
void tg_hitCallback(fopAc_ac_c*, dCcD_GObjInf*, fopAc_ac_c*, dCcD_GObjInf*);

View File

@ -169,8 +169,8 @@ public:
void JSGSetLightType(JStage::TELight);
void JSGSetPosition(const Vec&);
void JSGSetColor(_GXColor);
void JSGSetDistanceAttenuation(f32, f32, _GXDistAttnFn);
void JSGSetAngleAttenuation(f32, _GXSpotFn);
void JSGSetDistanceAttenuation(f32, f32, GXDistAttnFn);
void JSGSetAngleAttenuation(f32, GXSpotFn);
void JSGSetDirection(const Vec&);
private:

View File

@ -551,7 +551,7 @@ public:
void drawOpaList2D() { drawOpaDrawList(mpOpaList2D); }
int setSimpleShadow(cXyz* param_0, f32 param_1, f32 param_2, cXyz* param_3, s16 param_4,
f32 param_5, _GXTexObj* param_6) {
f32 param_5, GXTexObj* param_6) {
return mShadowControl.setSimple(param_0, param_1, param_2, param_3, param_4, param_5,
param_6);
}

View File

@ -13,7 +13,7 @@ class dMap_2DMtMapSpcl_tex_c {
public:
dMap_2DMtMapSpcl_tex_c();
~dMap_2DMtMapSpcl_tex_c();
void init(ResTIMG*, u32, const _GXColor&);
void init(ResTIMG*, u32, const GXColor&);
void setScroll(f32, f32, f32, f32);
/* 0x00 */ u8 field_0x0[4];
@ -114,7 +114,7 @@ public:
class dMap_2DTri_c : public dDlst_base_c {
public:
~dMap_2DTri_c();
void init(s16, s16, const _GXColor&, f32, f32, s16);
void init(s16, s16, const GXColor&, f32, f32, s16);
void draw();
void setPos(s16, s16);
};
@ -123,14 +123,14 @@ class dMap_2DPoint_c : public dDlst_base_c {
public:
dMap_2DPoint_c();
~dMap_2DPoint_c();
void init(s16, s16, const _GXColor&, u8);
void init(s16, s16, const GXColor&, u8);
void draw();
};
class dMap_2DAGBCursor_c : public dDlst_base_c {
public:
~dMap_2DAGBCursor_c();
void init(s16, s16, const _GXColor&, u8);
void init(s16, s16, const GXColor&, u8);
void draw();
};

View File

@ -18,7 +18,7 @@ class dDlst_2Dt_Sp_c : public dDlst_base_c {
public:
~dDlst_2Dt_Sp_c() {}
void draw();
void init(ResTIMG*, f32, f32, f32, f32, _GXColor);
void init(ResTIMG*, f32, f32, f32, f32, GXColor);
/* 0x04 */ GXTexObj field_0x4;
/* 0x24 */ ResTIMG* field_0x24;

View File

@ -331,7 +331,7 @@ public:
void entry();
void entryDL();
void entryDL(J3DMaterialTable*);
bool play(Vec *, u32, s8);
BOOL play(Vec*, u32, s8);
void stopZelAnime();
J3DModel* getModel() { return mpModel; }
@ -385,7 +385,7 @@ public:
void calc(u16);
void setAnm(J3DAnmTransform*, J3DAnmTransform*, f32, int, f32, f32, f32, f32, void*);
void setMorf(f32);
void play(Vec*, u32, s8);
BOOL play(Vec*, u32, s8);
void entryDL();
void calc();
void stopZelAnime();
@ -409,7 +409,7 @@ public:
BOOL checkFrame(f32 frame) {
return mFrameCtrl.checkPass(frame);
}
BOOL isMorf() { return field_0x78 < 1.0f; }
BOOL isMorf() { return mCurMorf < 1.0f; }
void setAnmRate(f32) {} // TODO
/* 0x50 */ J3DModel* mpModel;
@ -418,9 +418,9 @@ public:
/* 0x5C */ J3DTransformInfo* mpTransformInfo;
/* 0x60 */ Quaternion* mpQuat;
/* 0x64 */ J3DFrameCtrl mFrameCtrl;
/* 0x78 */ f32 field_0x78;
/* 0x7C */ f32 field_0x7c;
/* 0x80 */ f32 field_0x80;
/* 0x78 */ f32 mCurMorf;
/* 0x7C */ f32 mPrevMorf;
/* 0x80 */ f32 mMorfStep;
/* 0x84 */ f32 field_0x84;
/* 0x88 */ mDoExt_zelAnime* mpSound;
/* 0x8C */ mDoExt_McaMorfCallBack1_c * mpCallback1;
@ -435,7 +435,7 @@ public:
public:
/* 0x0 */ /* vtable */
/* 0x4 */ mDoExt_3DlineMat_c* field_0x4;
/* 0x4 */ mDoExt_3DlineMat_c* mpNextLineMat;
};
class mDoExt_3DlineMatSortPacket : public J3DPacket {
@ -511,13 +511,13 @@ public:
void draw();
void setJoint(J3DModel* i_model, u16 param_1) {
void setJoint(J3DModel* i_model, u16 i_jntNum) {
mModel = i_model;
field_0x14 = param_1;
mJntNum = i_jntNum;
}
J3DModel* mModel;
u16 field_0x14;
/* 0x10 */ J3DModel* mModel;
/* 0x14 */ u16 mJntNum;
};
class mDoExt_invisibleModel {
@ -577,7 +577,7 @@ public:
public:
/* 0x08 */ GXColor mColor;
/* 0x0C */ dKy_tevstr_c* m0C;
/* 0x0C */ dKy_tevstr_c* mpTevStr;
/* 0x10 */ s16 mNumLines;
/* 0x12 */ s16 mNumSegmentsPerLine;
/* 0x14 */ u16 m14;

View File

@ -60,7 +60,7 @@ static u8 l_chainS3TCTex[] ALIGN_DECL(32) = {
0x94, 0x92, 0x6B, 0x2D, 0x55, 0x55, 0xAA, 0x00, 0x94, 0x92, 0x6B, 0x2D, 0x55, 0x55, 0xAA, 0x00,
0xB5, 0xB6, 0x94, 0x92, 0x55, 0x55, 0x00, 0x00, 0xB5, 0xB6, 0x94, 0x92, 0x55, 0x55, 0x00, 0x00
};
static Vec l_pos[12] = {
static Vec l_pos[] = {
{ -2.0f, 1.522254f, -0.0f },
{ -2.0f, 1.522254f, 7.0f },
{ 2.0f, 1.522254f, -0.0f },
@ -75,19 +75,19 @@ static Vec l_pos[12] = {
{ 2.0f, -1.522254f, 7.0f },
};
static f32 l_texCoord[24] = {
0.02736f, 0.041406f,
0.97264f, 0.041406f,
0.830848f, 0.40324f,
0.169152f, 0.40324f,
0.03125f, 0.0f,
0.96875f, 0.0f,
0.767857f, 0.494086f,
0.232143f, 0.494086f,
0.038462f, 0.48226f,
0.038462f, 0.983522f,
0.961538f, 0.48226f,
0.961538f, 0.983522f,
static f32 l_texCoord[][2] = {
{ 0.02736f, 0.041406f },
{ 0.97264f, 0.041406f },
{ 0.830848f, 0.40324f },
{ 0.169152f, 0.40324f },
{ 0.03125f, 0.0f },
{ 0.96875f, 0.0f },
{ 0.767857f, 0.494086f },
{ 0.232143f, 0.494086f },
{ 0.038462f, 0.48226f },
{ 0.038462f, 0.983522f },
{ 0.961538f, 0.48226f },
{ 0.961538f, 0.983522f },
};
#define CONST_U32(v) ((u8)((v) >> 16)), ((u8)((v) >> 8)), ((u8)((v) >> 0))
@ -119,7 +119,7 @@ void dChain_packet_c::draw() {
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GXSetArray(GX_VA_POS, l_pos, sizeof(*l_pos));
GXSetArray(GX_VA_TEX0, l_texCoord, 8);
GXSetArray(GX_VA_TEX0, l_texCoord, sizeof(*l_texCoord));
dKy_GxFog_tevstr_set(mpTevStr);
GXCallDisplayList(l_matDL, 0xa0);
GXSetTevColorS10(GX_TEVREG0, mpTevStr->mColorC0);

View File

@ -18,6 +18,9 @@
#include "m_Do/m_Do_mtx.h"
#include "m_Do/m_Do_printf.h"
// Needed for the .data section to match.
static Vec dummy_2100 = {1.0f, 1.0f, 1.0f};
/* 8000DA70-8000DCF0 .text mDoExt_setJ3DData__FPA4_fPC16J3DTransformInfoUs */
void mDoExt_setJ3DData(Mtx mtx, const J3DTransformInfo* transformInfo, u16 param_2) {
bool local_28;
@ -537,7 +540,7 @@ void mDoExt_backupMatBlock_c::store(J3DMaterial* i_material) {
u32 texGenMax = 8;
if (texGenBlock->getType() == 'TGB4') {
texGenMax = 4;
};
}
for (u32 i = 0; i < texGenMax; i++) {
mTexCoord[i] = *texGenBlock->getTexCoord(i);
}
@ -616,7 +619,7 @@ void mDoExt_backupMatBlock_c::restore(J3DMaterial* i_material) {
u32 texGenMax = 8;
if (texGenBlock->getType() == 'TGB4') {
texGenMax = 4;
};
}
for (u32 i = 0; i < texGenMax; i++) {
texGenBlock->setTexCoord(i, &mTexCoord[i]);
}
@ -698,9 +701,7 @@ bool mDoExt_backupMaterial_c::create(J3DModelData* i_modelData) {
mDoExt_backupMatBlock_c::~mDoExt_backupMatBlock_c() {}
/* 80010AC4-80010D44 .text __ct__23mDoExt_backupMatBlock_cFv */
mDoExt_backupMatBlock_c::mDoExt_backupMatBlock_c() {
/* Nonmatching */
}
mDoExt_backupMatBlock_c::mDoExt_backupMatBlock_c() {}
/* 80011294-80011300 .text create__23mDoExt_backupMaterial_cFUs */
bool mDoExt_backupMaterial_c::create(u16 param_0) {
@ -1230,6 +1231,7 @@ ERROR_EXIT:
/* 80012A2C-80012D78 .text calc__14mDoExt_McaMorfFUs */
void mDoExt_McaMorf::calc(u16 param_0) {
/* Nonmatching - J3DMtxCalcBasic vtable order */
if (!mpModel) {
return;
}
@ -1327,19 +1329,27 @@ void mDoExt_McaMorf::setAnm(J3DAnmTransform* bckAnm, int loopMode, f32 morf, f32
}
/* 80012FC8-8001300C .text setMorf__14mDoExt_McaMorfFf */
void mDoExt_McaMorf::setMorf(f32 param_0) {
if (mPrevMorf < 0.0f || param_0 <= 0.0f) {
void mDoExt_McaMorf::setMorf(f32 morf) {
if (mPrevMorf < 0.0f || morf <= 0.0f) {
mCurMorf = 1.0f;
} else {
mCurMorf = 0.0f;
mMorfStep = 1.0f / param_0;
mMorfStep = 1.0f / morf;
}
mPrevMorf = mCurMorf;
}
/* 8001300C-800130D0 .text play__14mDoExt_McaMorfFP3VecUlSc */
bool mDoExt_McaMorf::play(Vec*, u32, s8) {
/* Nonmatching */
BOOL mDoExt_McaMorf::play(Vec* pos, u32 mtrlSndId, s8 reverb) {
if (mCurMorf < 1.0f) {
mPrevMorf = mCurMorf;
cLib_chaseF(&mCurMorf, 1.0f, mMorfStep);
}
mFrameCtrl.update();
if (mpSound && mpSound->mpBasAnm && pos) {
mpSound->setAnimSound(pos, getFrame(), getPlaySpeed(), mtrlSndId, reverb);
}
return isStop();
}
/* 800130D0-8001314C .text update__14mDoExt_McaMorfFv */
@ -1408,7 +1418,14 @@ void mDoExt_McaMorf::entryDL(J3DMaterialTable* pMaterialTable) {
/* 800132E8-8001335C .text calc__14mDoExt_McaMorfFv */
void mDoExt_McaMorf::calc() {
/* Nonmatching */
if (mpModel == NULL) {
return;
}
if (mpAnm != NULL) {
mpAnm->setFrame(getFrame());
}
mpModel->getModelData()->getJointNodePointer(0)->setMtxCalc(this);
mpModel->calc();
}
/* 8001335C-80013388 .text stopZelAnime__14mDoExt_McaMorfFv */
@ -1503,25 +1520,31 @@ void mDoExt_McaMorf2::ERROR_EXIT() {
/* 80013770-80013E50 .text calc__15mDoExt_McaMorf2FUs */
void mDoExt_McaMorf2::calc(u16 param_0) {
/* Nonmatching */
/* Nonmatching - J3DMtxCalcBasic vtable order, instruction swap on f30 = field_0x84 */
if (!mpModel) {
return;
}
j3dSys.setCurrentMtxCalc(this);
J3DTransformInfo info1;
J3DTransformInfo spD8[2];
J3DTransformInfo sp88;
J3DTransformInfo sp68;
J3DTransformInfo* infoPtr;
if (mpTransformInfo == NULL) {
infoPtr = &info1;
infoPtr = &sp88;
} else {
infoPtr = &mpTransformInfo[param_0];
}
Quaternion quat1;
Quaternion sp48[2];
Quaternion sp28[2];
Quaternion sp18;
Quaternion sp08;
Quaternion* quatPtr;
if (mpQuat == NULL) {
quatPtr = &quat1;
quatPtr = &sp18;
} else {
quatPtr = &mpQuat[param_0];
}
Mtx mtx;
if (!mpAnm1) {
*infoPtr = mpModel->getModelData()->getJointNodePointer(param_0)->getTransformInfo();
if (mpCallback1) {
@ -1529,39 +1552,76 @@ void mDoExt_McaMorf2::calc(u16 param_0) {
}
JMAEulerToQuat(infoPtr->mRotation.x, infoPtr->mRotation.y, infoPtr->mRotation.z, quatPtr);
calcTransform(param_0, *infoPtr);
} else if (field_0x78 >= 1.0f || !mpTransformInfo || !mpQuat) {
mpAnm1->getTransform(param_0, &info1);
} else if (mCurMorf >= 1.0f || !mpTransformInfo || !mpQuat) {
mpAnm1->getTransform(param_0, &spD8[0]);
if (!mpAnm2) {
if (mpCallback1) {
mpCallback1->execute(param_0, &info1);
mpCallback1->execute(param_0, &spD8[0]);
}
JMAEulerToQuat(info1.mRotation.x, info1.mRotation.y, info1.mRotation.z, quatPtr);
calcTransform(param_0, info1);
*infoPtr = info1;
JMAEulerToQuat(spD8[0].mRotation.x, spD8[0].mRotation.y, spD8[0].mRotation.z, quatPtr);
calcTransform(param_0, spD8[0]);
*infoPtr = spD8[0];
} else {
mpAnm2->getTransform(param_0, &info1);
JMAEulerToQuat(info1.mRotation.x, info1.mRotation.y, info1.mRotation.z, quatPtr);
calcTransform(param_0, info1);
mpAnm2->getTransform(param_0, &spD8[1]);
f32 f30 = field_0x84;
f32 f31 = 1.0f - f30;
infoPtr->mScale.x = spD8[0].mScale.x * f31 + spD8[1].mScale.x * f30;
infoPtr->mScale.y = spD8[0].mScale.y * f31 + spD8[1].mScale.y * f30;
infoPtr->mScale.z = spD8[0].mScale.z * f31 + spD8[1].mScale.z * f30;
infoPtr->mTranslate.x = spD8[0].mTranslate.x * f31 + spD8[1].mTranslate.x * f30;
infoPtr->mTranslate.y = spD8[0].mTranslate.y * f31 + spD8[1].mTranslate.y * f30;
infoPtr->mTranslate.z = spD8[0].mTranslate.z * f31 + spD8[1].mTranslate.z * f30;
for (int i = 0; i < 2; i++) {
JMAEulerToQuat(spD8[i].mRotation.x, spD8[i].mRotation.y, spD8[i].mRotation.z, &sp48[i]);
}
} else {
f32 f31 = (field_0x78 - field_0x7c) / (1.0f - field_0x7c);
f32 f30 = 1.0f - f31;
J3DTransformInfo info2;
Quaternion quat2;
mpAnm1->getTransform(param_0, &info2);
if (mpCallback1) {
mpCallback1->execute(param_0, &info2);
}
JMAEulerToQuat(info2.mRotation.x, info2.mRotation.y, info2.mRotation.z, &quat2);
JMAQuatLerp(quatPtr, &quat2, f31, quatPtr);
Mtx mtx;
JMAQuatLerp(&sp48[0], &sp48[1], f30 / (f31 + f30), quatPtr);
mDoMtx_quat(mtx, quatPtr);
mDoExt_setJ3DData(mtx, infoPtr, param_0);
}
} else if (!mpAnm2) {
f32 f30 = (mCurMorf - mPrevMorf) / (1.0f - mPrevMorf);
f32 f31 = 1.0f - f30;
mpAnm1->getTransform(param_0, &sp68);
if (mpCallback1) {
mpCallback1->execute(param_0, &sp68);
}
JMAEulerToQuat(sp68.mRotation.x, sp68.mRotation.y, sp68.mRotation.z, &sp08);
JMAQuatLerp(quatPtr, &sp08, f30, quatPtr);
mDoMtx_quat(mtx, quatPtr);
infoPtr->mTranslate.x = infoPtr->mTranslate.x * f31 + sp68.mTranslate.x * f30;
infoPtr->mTranslate.y = infoPtr->mTranslate.y * f31 + sp68.mTranslate.y * f30;
infoPtr->mTranslate.z = infoPtr->mTranslate.z * f31 + sp68.mTranslate.z * f30;
infoPtr->mScale.x = infoPtr->mScale.x * f31 + sp68.mScale.x * f30;
infoPtr->mScale.y = infoPtr->mScale.y * f31 + sp68.mScale.y * f30;
infoPtr->mScale.z = infoPtr->mScale.z * f31 + sp68.mScale.z * f30;
mDoExt_setJ3DData(mtx, infoPtr, param_0);
} else {
mpAnm1->getTransform(param_0, &spD8[0]);
mpAnm2->getTransform(param_0, &spD8[1]);
f32 f30 = field_0x84;
f32 f31 = 1.0f - f30;
sp68.mScale.x = spD8[0].mScale.x * f31 + spD8[1].mScale.x * f30;
sp68.mScale.y = spD8[0].mScale.y * f31 + spD8[1].mScale.y * f30;
sp68.mScale.z = spD8[0].mScale.z * f31 + spD8[1].mScale.z * f30;
sp68.mTranslate.x = spD8[0].mTranslate.x * f31 + spD8[1].mTranslate.x * f30;
sp68.mTranslate.y = spD8[0].mTranslate.y * f31 + spD8[1].mTranslate.y * f30;
sp68.mTranslate.z = spD8[0].mTranslate.z * f31 + spD8[1].mTranslate.z * f30;
for (int i = 0; i < 2; i++) {
JMAEulerToQuat(spD8[i].mRotation.x, spD8[i].mRotation.y, spD8[i].mRotation.z, &sp28[i]);
}
f32 f1 = (f31 + f30);
f1 = f30 / f1;
JMAQuatLerp(&sp28[0], &sp28[1], f1, &sp08);
f31 = (mCurMorf - mPrevMorf) / (1.0f - mPrevMorf);
f30 = 1.0f - f31;
JMAQuatLerp(quatPtr, &sp08, f31, quatPtr);
infoPtr->mTranslate.x = infoPtr->mTranslate.x * f30 + sp68.mTranslate.x * f31;
infoPtr->mTranslate.y = infoPtr->mTranslate.y * f30 + sp68.mTranslate.y * f31;
infoPtr->mTranslate.z = infoPtr->mTranslate.z * f30 + sp68.mTranslate.z * f31;
infoPtr->mScale.x = infoPtr->mScale.x * f30 + sp68.mScale.x * f31;
infoPtr->mScale.y = infoPtr->mScale.y * f30 + sp68.mScale.y * f31;
infoPtr->mScale.z = infoPtr->mScale.z * f30 + sp68.mScale.z * f31;
mDoMtx_quat(mtx, quatPtr);
infoPtr->mTranslate.x = infoPtr->mTranslate.x * f30 + info2.mTranslate.x * f31;
infoPtr->mTranslate.y = infoPtr->mTranslate.y * f30 + info2.mTranslate.y * f31;
infoPtr->mTranslate.z = infoPtr->mTranslate.z * f30 + info2.mTranslate.z * f31;
infoPtr->mScale.x = infoPtr->mScale.x * f30 + info2.mScale.x * f31;
infoPtr->mScale.y = infoPtr->mScale.y * f30 + info2.mScale.y * f31;
infoPtr->mScale.z = infoPtr->mScale.z * f30 + info2.mScale.z * f31;
mDoExt_setJ3DData(mtx, infoPtr, param_0);
}
if (mpCallback2) {
@ -1612,19 +1672,27 @@ void mDoExt_McaMorf2::setAnm(J3DAnmTransform* bckAnm1, J3DAnmTransform* bckAnm2,
}
/* 800140A0-800140D8 .text setMorf__15mDoExt_McaMorf2Ff */
void mDoExt_McaMorf2::setMorf(f32 f1) {
if (f1 <= 0.0f) {
field_0x78 = 1.0f;
void mDoExt_McaMorf2::setMorf(f32 morf) {
if (morf <= 0.0f) {
mCurMorf = 1.0f;
} else {
field_0x78 = 0.0f;
field_0x80 = 1.0f / f1;
mCurMorf = 0.0f;
mMorfStep = 1.0f / morf;
}
field_0x7c = field_0x78;
mPrevMorf = mCurMorf;
}
/* 800140D8-8001419C .text play__15mDoExt_McaMorf2FP3VecUlSc */
void mDoExt_McaMorf2::play(Vec*, u32, s8) {
/* Nonmatching */
BOOL mDoExt_McaMorf2::play(Vec* pos, u32 mtrlSndId, s8 reverb) {
if (mCurMorf < 1.0f) {
mPrevMorf = mCurMorf;
cLib_chaseF(&mCurMorf, 1.0f, mMorfStep);
}
mFrameCtrl.update();
if (mpSound && mpSound->mpBasAnm && pos) {
mpSound->setAnimSound(pos, getFrame(), getPlaySpeed(), mtrlSndId, reverb);
}
return isStop();
}
/* 8001419C-800141C8 .text entryDL__15mDoExt_McaMorf2Fv */
@ -1636,7 +1704,17 @@ void mDoExt_McaMorf2::entryDL() {
/* 800141C8-80014250 .text calc__15mDoExt_McaMorf2Fv */
void mDoExt_McaMorf2::calc() {
/* Nonmatching */
if (mpModel == NULL) {
return;
}
if (mpAnm1 != NULL) {
mpAnm1->setFrame(getFrame());
}
if (mpAnm2 != NULL) {
mpAnm2->setFrame(getFrame());
}
mpModel->getModelData()->getJointNodePointer(0)->setMtxCalc(this);
mpModel->calc();
}
/* 80014250-8001427C .text stopZelAnime__15mDoExt_McaMorf2Fv */
@ -1658,9 +1736,84 @@ void mDoExt_onCupOffAupPacket::draw() {
/* 800142F4-800143B8 .text draw__19mDoExt_invJntPacketFv */
void mDoExt_invJntPacket::draw() {
/* Nonmatching */
static u8 l_invisibleMat[] ALIGN_DECL(32) = {
0x10, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00,
0x00, 0x04, 0x00, 0x61, 0x28, 0x38, 0x00, 0x00, 0x61, 0xC0, 0x08, 0xFF, 0xFC, 0x61, 0xC1,
0x08, 0xFF, 0xF0, 0x61, 0xF3, 0x7F, 0x00, 0x00, 0x61, 0x43, 0x00, 0x00, 0x41, 0x61, 0x40,
0x00, 0x00, 0x17, 0x61, 0xEE, 0x00, 0x00, 0x00, 0x61, 0xEF, 0x00, 0x00, 0x00, 0x61, 0xF0,
0x00, 0x00, 0x00, 0x61, 0xF1, 0x00, 0x00, 0x00, 0x61, 0xF2, 0x00, 0x00, 0x00, 0x61, 0x41,
0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00,
0x10, 0x09, 0x00, 0x00, 0x00, 0x01, 0x61, 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
GXCallDisplayList(l_invisibleMat, 0x80);
J3DModelData* modelData = mModel->getModelData();
J3DJoint* joint = modelData->getJointNodePointer(mJntNum);
J3DMaterial* material = joint->getMesh();
J3DShape::resetVcdVatCache();
modelData->getShapeNodePointer(0x00)->loadPreDrawSetting();
while (material) {
u16 shapeIdx = material->getShape()->getIndex();
mModel->getShapePacket(shapeIdx)->drawFast();
material = material->getNext();
};
J3DShape::resetVcdVatCache();
GFSetBlendModeEtc(GX_BM_NONE, GX_BL_ZERO, GX_BL_ZERO, GX_LO_CLEAR, 1, 0, 1);
}
u8 l_matDL[] ALIGN_DECL(32) = {
0x08, 0x30, 0x3C, 0xF3, 0xCF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x18, 0x3C, 0xF3, 0xCF, 0x00, 0x10,
0x00, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x05, 0x06, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x05,
0x02, 0x10, 0x00, 0x00, 0x10, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x0C, 0xFF,
0xFF, 0xFF, 0xFF, 0x61, 0x28, 0x38, 0x00, 0x00, 0x61, 0xC0, 0x08, 0xF6, 0xAF, 0x61, 0xC1, 0x08,
0xFF, 0xE0, 0x61, 0x43, 0x00, 0x00, 0x41, 0x61, 0x40, 0x00, 0x00, 0x17, 0x61, 0x41, 0x00, 0x00,
0x0C, 0x61, 0xF3, 0x7F, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x10,
0x00, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x01, 0x61, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
u8 l_toonMatDL[] ALIGN_DECL(32) = {
0x08, 0x30, 0x3C, 0xF3, 0xCF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x18, 0x3C, 0xF3, 0xCF, 0x00, 0x10,
0x00, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x05, 0x06, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x05,
0x02, 0x10, 0x00, 0x00, 0x10, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x0C, 0xFF,
0xFF, 0xFF, 0xFF, 0x61, 0x28, 0x00, 0x00, 0x00, 0x61, 0xC0, 0x08, 0x24, 0xAF, 0x61, 0xC1, 0x08,
0xFF, 0xF0, 0x61, 0x28, 0x00, 0x00, 0x00, 0x61, 0xC2, 0x08, 0xF6, 0x0F, 0x61, 0xC3, 0x08, 0xFF,
0xE0, 0x61, 0x43, 0x00, 0x00, 0x41, 0x61, 0x40, 0x00, 0x00, 0x17, 0x61, 0x41, 0x00, 0x00, 0x0C,
0x61, 0xF3, 0x7F, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x01, 0x61, 0x00, 0x00, 0x04, 0x10, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
u8 l_mat1DL[] ALIGN_DECL(32) = {
0x10, 0x00, 0x00, 0x10, 0x40, 0xFF, 0xFF, 0x42, 0x80, 0x08, 0x30, 0x3C, 0xF3, 0xCF, 0x00, 0x10,
0x00, 0x00, 0x10, 0x18, 0x3C, 0xF3, 0xCF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x05,
0x06, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x10, 0x0A, 0x00,
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0x61, 0x28, 0x38, 0x00,
0x40, 0x61, 0xC0, 0x08, 0xFA, 0x8F, 0x61, 0xC1, 0x08, 0xFF, 0xF0, 0x61, 0x43, 0x00, 0x00, 0x41,
0x61, 0x40, 0x00, 0x00, 0x17, 0x61, 0x41, 0x00, 0x00, 0x0C, 0x61, 0xF3, 0x7F, 0x00, 0x00, 0x10,
0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00,
0x01, 0x61, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};
u8 l_toonMat1DL[] ALIGN_DECL(32) = {
0x10, 0x00, 0x00, 0x10, 0x40, 0xFF, 0xFF, 0x42, 0x80, 0x08, 0x30, 0x3C, 0xF3, 0xCF, 0x00, 0x10,
0x00, 0x00, 0x10, 0x18, 0x3C, 0xF3, 0xCF, 0x00, 0x10, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x05,
0x06, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x10, 0x0A, 0x00,
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x0C, 0xFF, 0xFF, 0xFF, 0xFF, 0x61, 0x28, 0x3C, 0x00,
0x00, 0x61, 0xC0, 0x08, 0x24, 0xAF, 0x61, 0xC1, 0x08, 0xFF, 0xF0, 0x61, 0x28, 0x3C, 0x00, 0x00,
0x61, 0xC2, 0x08, 0xF0, 0x8F, 0x61, 0xC3, 0x08, 0xFF, 0xE0, 0x61, 0x43, 0x00, 0x00, 0x41, 0x61,
0x40, 0x00, 0x00, 0x17, 0x61, 0x41, 0x00, 0x00, 0x0C, 0x61, 0xF3, 0x7F, 0x00, 0x00, 0x10, 0x00,
0x00, 0x10, 0x3F, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x01,
0x61, 0x00, 0x00, 0x04, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00,
};
/* 800143B8-80014580 .text init__15mDoExt_3Dline_cFUsii */
int mDoExt_3Dline_c::init(u16, int, int) {
/* Nonmatching */
@ -1672,18 +1825,35 @@ int mDoExt_3DlineMat0_c::init(u16, u16, int) {
}
/* 80014664-800146A0 .text __dt__15mDoExt_3Dline_cFv */
mDoExt_3Dline_c::~mDoExt_3Dline_c() {
/* Nonmatching */
}
mDoExt_3Dline_c::~mDoExt_3Dline_c() {}
/* 800146A0-800146A4 .text __ct__15mDoExt_3Dline_cFv */
mDoExt_3Dline_c::mDoExt_3Dline_c() {
/* Nonmatching */
}
mDoExt_3Dline_c::mDoExt_3Dline_c() {}
/* 800146A4-80014798 .text setMaterial__19mDoExt_3DlineMat0_cFv */
void mDoExt_3DlineMat0_c::setMaterial() {
/* Nonmatching */
static u8 l_normal[][3] = {
{0x40, 0x00, 0x00},
{0xC0, 0x00, 0x00},
};
j3dSys.reinitGX();
GXSetNumIndStages(0);
dKy_setLight_again();
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxDesc(GX_VA_NRM, GX_INDEX8);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_F32, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_CLR_RGB, GX_RGB8, 6);
GXSetArray(GX_VA_NRM, l_normal, sizeof(*l_normal));
if (mpTevStr) {
dKy_GxFog_tevstr_set(mpTevStr);
GXCallDisplayList(l_toonMatDL, 0x80);
} else {
dKy_GxFog_set();
GXCallDisplayList(l_matDL, 0x80);
}
GXLoadPosMtxImm(j3dSys.getViewMtx(), GX_PNMTX0);
GXLoadNrmMtxImm(g_mDoMtx_identity, GX_PNMTX0);
}
/* 80014798-800148B4 .text draw__19mDoExt_3DlineMat0_cFv */
@ -1708,7 +1878,30 @@ int mDoExt_3DlineMat1_c::init(u16, u16, ResTIMG*, int) {
/* 800154C4-800155DC .text setMaterial__19mDoExt_3DlineMat1_cFv */
void mDoExt_3DlineMat1_c::setMaterial() {
/* Nonmatching */
static u8 l_normal[][3] = {
{0x40, 0x00, 0x00},
{0xC0, 0x00, 0x00},
};
j3dSys.reinitGX();
GXSetNumIndStages(0);
dKy_setLight_again();
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX16);
GXSetVtxDesc(GX_VA_NRM, GX_INDEX8);
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX16);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_F32, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_CLR_RGB, GX_RGB8, 6);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_F32, 0);
GXSetArray(GX_VA_NRM, l_normal, sizeof(*l_normal));
if (mpTevStr) {
dKy_GxFog_tevstr_set(mpTevStr);
GXCallDisplayList(l_toonMat1DL, 0xA0);
} else {
dKy_GxFog_set();
GXCallDisplayList(l_mat1DL, 0x80);
}
GXLoadPosMtxImm(j3dSys.getViewMtx(), GX_PNMTX0);
GXLoadNrmMtxImm(g_mDoMtx_identity, GX_PNMTX0);
}
/* 800155DC-80015764 .text draw__19mDoExt_3DlineMat1_cFv */
@ -1717,12 +1910,12 @@ void mDoExt_3DlineMat1_c::draw() {
}
/* 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, f32, GXColor&, u16, dKy_tevstr_c*) {
/* Nonmatching */
}
/* 80015E54-80016518 .text update__19mDoExt_3DlineMat1_cFUsR8_GXColorP12dKy_tevstr_c */
void mDoExt_3DlineMat1_c::update(u16, _GXColor&, dKy_tevstr_c*) {
void mDoExt_3DlineMat1_c::update(u16, GXColor&, dKy_tevstr_c*) {
/* Nonmatching */
u8* size_p = mpLines->mpSize;
JUT_ASSERT(5243, size_p != 0);
@ -1730,12 +1923,22 @@ void mDoExt_3DlineMat1_c::update(u16, _GXColor&, dKy_tevstr_c*) {
/* 80016518-8001657C .text setMat__26mDoExt_3DlineMatSortPacketFP18mDoExt_3DlineMat_c */
void mDoExt_3DlineMatSortPacket::setMat(mDoExt_3DlineMat_c* pMat) {
/* Nonmatching */
if (mp3DlineMat == NULL) {
j3dSys.getDrawBuffer(0)->entryImm(this, 0);
}
pMat->mpNextLineMat = mp3DlineMat;
mp3DlineMat = pMat;
}
/* 8001657C-800165E4 .text draw__26mDoExt_3DlineMatSortPacketFv */
void mDoExt_3DlineMatSortPacket::draw() {
/* Nonmatching */
mp3DlineMat->setMaterial();
mDoExt_3DlineMat_c* lineMat = mp3DlineMat;
do {
lineMat->draw();
lineMat = lineMat->mpNextLineMat;
} while (lineMat);
J3DShape::resetVcdVatCache();
}
/* 800165E4-8001683C .text mDoExt_initFontCommon__FPP7JUTFontPP7ResFONTP7JKRHeapPCcP10JKRArchiveUcUlUl */
@ -1884,24 +2087,22 @@ J3DModel* mDoExt_J3DModel__create(J3DModelData* i_modelData, u32 i_modelFlag, u3
}
/* 80016C98-80016CC4 .text setGX__7JUTFontFQ28JUtility6TColorQ28JUtility6TColor */
void JUTFont::setGX(JUtility::TColor, JUtility::TColor) {
/* Nonmatching */
void JUTFont::setGX(JUtility::TColor col1, JUtility::TColor col2) {
setGX();
}
/* 80016CC4-80016CF0 .text getCellWidth__7JUTFontCFv */
int JUTFont::getCellWidth() const {
/* Nonmatching */
return getWidth();
}
/* 80016CF0-80016D1C .text getCellHeight__7JUTFontCFv */
s32 JUTFont::getCellHeight() const {
/* Nonmatching */
return getHeight();
}
/* 80016D1C-80016D78 .text __dt__26mDoExt_3DlineMatSortPacketFv */
mDoExt_3DlineMatSortPacket::~mDoExt_3DlineMatSortPacket() {
/* Nonmatching */
}
mDoExt_3DlineMatSortPacket::~mDoExt_3DlineMatSortPacket() {}
/* 80016D78-80016D80 .text getMaterialID__19mDoExt_3DlineMat1_cFv */
int mDoExt_3DlineMat1_c::getMaterialID() {
@ -1914,26 +2115,16 @@ int mDoExt_3DlineMat0_c::getMaterialID() {
}
/* 80016D88-80016DE4 .text __dt__24mDoExt_onCupOffAupPacketFv */
mDoExt_onCupOffAupPacket::~mDoExt_onCupOffAupPacket() {
/* Nonmatching */
}
mDoExt_onCupOffAupPacket::~mDoExt_onCupOffAupPacket() {}
/* 80016DE4-80016E40 .text __dt__24mDoExt_offCupOnAupPacketFv */
mDoExt_offCupOnAupPacket::~mDoExt_offCupOnAupPacket() {
/* Nonmatching */
}
mDoExt_offCupOnAupPacket::~mDoExt_offCupOnAupPacket() {}
/* 80016E40-80016F14 .text __dt__15mDoExt_McaMorf2Fv */
mDoExt_McaMorf2::~mDoExt_McaMorf2() {
/* Nonmatching */
}
mDoExt_McaMorf2::~mDoExt_McaMorf2() {}
/* 80017000-800170D4 .text __dt__14mDoExt_McaMorfFv */
mDoExt_McaMorf::~mDoExt_McaMorf() {
/* Nonmatching */
}
mDoExt_McaMorf::~mDoExt_McaMorf() {}
/* 800170D4-800171BC .text __dt__28mDoExt_MtxCalcAnmBlendTblOldFv */
mDoExt_MtxCalcAnmBlendTblOld::~mDoExt_MtxCalcAnmBlendTblOld() {
/* Nonmatching */
}
mDoExt_MtxCalcAnmBlendTblOld::~mDoExt_MtxCalcAnmBlendTblOld() {}