switch to dtk setup (#2203)

* switch to dtk setup

* some cleanup / fixes

* cleanup d_a_alink literals

* Restore doxygen, update CI & README.md (#1)

* Fix build image ref (#2)

---------

Co-authored-by: Luke Street <luke@street.dev>
This commit is contained in:
TakaRikka
2024-10-10 07:29:58 -07:00
committed by GitHub
parent 3769ea47a6
commit 178194ccb2
33438 changed files with 370506 additions and 3055930 deletions
+945
View File
@@ -0,0 +1,945 @@
//
// Generated By: dol2asm
// Translation Unit: J3DAnmLoader
//
#include "JSystem/J3DGraphLoader/J3DAnmLoader.h"
#include "JSystem/J3DGraphAnimator/J3DAnimation.h"
#include "JSystem/JSupport/JSupport.h"
#include "dol2asm.h"
#include "dolphin/os.h"
//
// Types:
//
class J3DAnmLoader {
public:
virtual J3DAnmBase* load(const void*) = 0;
virtual void setResource(J3DAnmBase*, const void*) = 0;
/* 80339800 */ virtual ~J3DAnmLoader() {}
};
class J3DAnmKeyLoader_v15 : public J3DAnmLoader {
public:
/* 803384E0 */ J3DAnmKeyLoader_v15();
/* 80338FEC */ void readAnmTransform(J3DAnmTransformKeyData const*);
/* 80339014 */ void setAnmTransform(J3DAnmTransformKey*, J3DAnmTransformKeyData const*);
/* 803390B0 */ void readAnmTextureSRT(J3DAnmTextureSRTKeyData const*);
/* 803390D8 */ void setAnmTextureSRT(J3DAnmTextureSRTKey*, J3DAnmTextureSRTKeyData const*);
/* 803392B0 */ void readAnmColor(J3DAnmColorKeyData const*);
/* 803392D8 */ void setAnmColor(J3DAnmColorKey*, J3DAnmColorKeyData const*);
/* 803393C4 */ void readAnmCluster(J3DAnmClusterKeyData const*);
/* 803393EC */ void setAnmCluster(J3DAnmClusterKey*, J3DAnmClusterKeyData const*);
/* 80339458 */ void readAnmTevReg(J3DAnmTevRegKeyData const*);
/* 80339480 */ void setAnmTevReg(J3DAnmTevRegKey*, J3DAnmTevRegKeyData const*);
/* 8033960C */ void readAnmVtxColor(J3DAnmVtxColorKeyData const*);
/* 80339634 */ void setAnmVtxColor(J3DAnmVtxColorKey*, J3DAnmVtxColorKeyData const*);
/* 80338D44 */ virtual J3DAnmBase* load(void const*);
/* 80338E8C */ virtual void setResource(J3DAnmBase*, void const*);
/* 803384FC */ virtual ~J3DAnmKeyLoader_v15();
/* 0x4 */ J3DAnmBase* mAnm;
};
class J3DAnmFullLoader_v15 : public J3DAnmLoader {
public:
/* 80338468 */ J3DAnmFullLoader_v15();
/* 80338800 */ void readAnmTransform(J3DAnmTransformFullData const*);
/* 80338828 */ void setAnmTransform(J3DAnmTransformFull*, J3DAnmTransformFullData const*);
/* 803388BC */ void readAnmColor(J3DAnmColorFullData const*);
/* 803388E4 */ void setAnmColor(J3DAnmColorFull*, J3DAnmColorFullData const*);
/* 803389B0 */ void readAnmTexPattern(J3DAnmTexPatternFullData const*);
/* 803389D8 */ void setAnmTexPattern(J3DAnmTexPattern*, J3DAnmTexPatternFullData const*);
/* 80338A7C */ void readAnmVisibility(J3DAnmVisibilityFullData const*);
/* 80338AA4 */ void setAnmVisibility(J3DAnmVisibilityFull*, J3DAnmVisibilityFullData const*);
/* 80338B20 */ void readAnmCluster(J3DAnmClusterFullData const*);
/* 80338B48 */ void setAnmCluster(J3DAnmClusterFull*, J3DAnmClusterFullData const*);
/* 80338BB4 */ void readAnmVtxColor(J3DAnmVtxColorFullData const*);
/* 80338BDC */ void setAnmVtxColor(J3DAnmVtxColorFull*, J3DAnmVtxColorFullData const*);
/* 80338558 */ virtual J3DAnmBase* load(void const*);
/* 803386A0 */ virtual void setResource(J3DAnmBase*, void const*);
/* 80338484 */ virtual ~J3DAnmFullLoader_v15();
/* 0x4 */ J3DAnmBase* mAnm;
};
//
// Forward References:
//
extern "C" void load__20J3DAnmLoaderDataBaseFPCv24J3DAnmLoaderDataBaseFlag();
extern "C" void setResource__20J3DAnmLoaderDataBaseFP10J3DAnmBasePCv();
extern "C" void __ct__20J3DAnmFullLoader_v15Fv();
extern "C" void __dt__20J3DAnmFullLoader_v15Fv();
extern "C" void __ct__19J3DAnmKeyLoader_v15Fv();
extern "C" void __dt__19J3DAnmKeyLoader_v15Fv();
extern "C" void load__20J3DAnmFullLoader_v15FPCv();
extern "C" void setResource__20J3DAnmFullLoader_v15FP10J3DAnmBasePCv();
extern "C" void readAnmTransform__20J3DAnmFullLoader_v15FPC23J3DAnmTransformFullData();
extern "C" void
setAnmTransform__20J3DAnmFullLoader_v15FP19J3DAnmTransformFullPC23J3DAnmTransformFullData();
extern "C" void readAnmColor__20J3DAnmFullLoader_v15FPC19J3DAnmColorFullData();
extern "C" void setAnmColor__20J3DAnmFullLoader_v15FP15J3DAnmColorFullPC19J3DAnmColorFullData();
extern "C" void readAnmTexPattern__20J3DAnmFullLoader_v15FPC24J3DAnmTexPatternFullData();
extern "C" void
setAnmTexPattern__20J3DAnmFullLoader_v15FP16J3DAnmTexPatternPC24J3DAnmTexPatternFullData();
extern "C" void readAnmVisibility__20J3DAnmFullLoader_v15FPC24J3DAnmVisibilityFullData();
extern "C" void
setAnmVisibility__20J3DAnmFullLoader_v15FP20J3DAnmVisibilityFullPC24J3DAnmVisibilityFullData();
extern "C" void readAnmCluster__20J3DAnmFullLoader_v15FPC21J3DAnmClusterFullData();
extern "C" void
setAnmCluster__20J3DAnmFullLoader_v15FP17J3DAnmClusterFullPC21J3DAnmClusterFullData();
extern "C" void readAnmVtxColor__20J3DAnmFullLoader_v15FPC22J3DAnmVtxColorFullData();
extern "C" void
setAnmVtxColor__20J3DAnmFullLoader_v15FP18J3DAnmVtxColorFullPC22J3DAnmVtxColorFullData();
extern "C" void load__19J3DAnmKeyLoader_v15FPCv();
extern "C" void setResource__19J3DAnmKeyLoader_v15FP10J3DAnmBasePCv();
extern "C" void readAnmTransform__19J3DAnmKeyLoader_v15FPC22J3DAnmTransformKeyData();
extern "C" void
setAnmTransform__19J3DAnmKeyLoader_v15FP18J3DAnmTransformKeyPC22J3DAnmTransformKeyData();
extern "C" void readAnmTextureSRT__19J3DAnmKeyLoader_v15FPC23J3DAnmTextureSRTKeyData();
extern "C" void
setAnmTextureSRT__19J3DAnmKeyLoader_v15FP19J3DAnmTextureSRTKeyPC23J3DAnmTextureSRTKeyData();
extern "C" void readAnmColor__19J3DAnmKeyLoader_v15FPC18J3DAnmColorKeyData();
extern "C" void setAnmColor__19J3DAnmKeyLoader_v15FP14J3DAnmColorKeyPC18J3DAnmColorKeyData();
extern "C" void readAnmCluster__19J3DAnmKeyLoader_v15FPC20J3DAnmClusterKeyData();
extern "C" void setAnmCluster__19J3DAnmKeyLoader_v15FP16J3DAnmClusterKeyPC20J3DAnmClusterKeyData();
extern "C" void readAnmTevReg__19J3DAnmKeyLoader_v15FPC19J3DAnmTevRegKeyData();
extern "C" void setAnmTevReg__19J3DAnmKeyLoader_v15FP15J3DAnmTevRegKeyPC19J3DAnmTevRegKeyData();
extern "C" void readAnmVtxColor__19J3DAnmKeyLoader_v15FPC21J3DAnmVtxColorKeyData();
extern "C" void
setAnmVtxColor__19J3DAnmKeyLoader_v15FP17J3DAnmVtxColorKeyPC21J3DAnmVtxColorKeyData();
extern "C" void __dt__20J3DAnmVisibilityFullFv();
extern "C" s32 getKind__20J3DAnmVisibilityFullCFv();
extern "C" void __dt__12J3DAnmLoaderFv();
extern "C" void func_80339848(void* _this, void const*, void const*);
extern "C" void func_80339860(void* _this, void const*, void const*);
extern "C" extern char const* const J3DAnmLoader__stringBase0;
//
// External References:
//
extern "C" void* __nw__FUl();
extern "C" void __dl__FPv();
extern "C" void setResource__10JUTNameTabFPC7ResNTAB();
extern "C" void func_802F4260(void* _this, void const*, void const*);
extern "C" void func_802F42C0(void* _this, void const*, void const*);
extern "C" void func_8030A458(void* _this, void const*, void const*);
extern "C" void func_8030A470(void* _this, void const*, void const*);
extern "C" void func_8030A488(void* _this, void const*, void const*);
extern "C" void func_8030A4A0(void* _this, void const*, void const*);
extern "C" void func_8030A4B8(void* _this, void const*, void const*);
extern "C" void func_8030A4D0(void* _this, void const*, void const*);
extern "C" void func_8030A4E8(void* _this, void const*, void const*);
extern "C" void func_8030A500(void* _this, void const*, void const*);
extern "C" void func_8030A518(void* _this, void const*, void const*);
extern "C" void func_8030A530(void* _this, void const*, void const*);
extern "C" void func_8030A548(void* _this, void const*, void const*);
extern "C" void func_8030A560(void* _this, void const*, void const*);
extern "C" void func_8030A578(void* _this, void const*, void const*);
extern "C" void __ct__15J3DAnmTransformFsPfPsPf();
extern "C" void __ct__19J3DAnmTextureSRTKeyFv();
extern "C" void __ct__18J3DAnmVtxColorFullFv();
extern "C" void __ct__17J3DAnmVtxColorKeyFv();
extern "C" void __ct__15J3DAnmColorFullFv();
extern "C" void __ct__14J3DAnmColorKeyFv();
extern "C" void __ct__15J3DAnmTevRegKeyFv();
extern "C" void __ct__16J3DAnmTexPatternFv();
extern "C" void _savegpr_26();
extern "C" void _savegpr_27();
extern "C" void _savegpr_29();
extern "C" void _restgpr_26();
extern "C" void _restgpr_27();
extern "C" void _restgpr_29();
extern "C" extern void* __vt__10J3DAnmBase[4];
extern "C" extern void* __vt__18J3DAnmTransformKey[5];
extern "C" extern void* __vt__16J3DAnmClusterKey[5];
extern "C" extern void* __vt__13J3DAnmCluster[5];
extern "C" extern void* __vt__17J3DAnmClusterFull[5];
extern "C" extern void* __vt__27J3DAnmTransformFullWithLerp[5];
extern "C" extern void* __vt__19J3DAnmTransformFull[5 + 1 /* padding */];
//
// Declarations:
//
/* ############################################################################################## */
/* 803A2130-803A2130 02E790 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_803A2130 =
"J3DAnmLoader: this is not a J3D Binary.\n";
#pragma pop
/* 803CF238-803CF24C 02C358 0014+00 2/2 0/0 0/0 .data __vt__19J3DAnmKeyLoader_v15 */
SECTION_DATA extern void* __vt__19J3DAnmKeyLoader_v15[5] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)load__19J3DAnmKeyLoader_v15FPCv,
(void*)setResource__19J3DAnmKeyLoader_v15FP10J3DAnmBasePCv,
(void*)__dt__19J3DAnmKeyLoader_v15Fv,
};
/* 803CF24C-803CF260 02C36C 0014+00 2/2 0/0 0/0 .data __vt__20J3DAnmFullLoader_v15 */
SECTION_DATA extern void* __vt__20J3DAnmFullLoader_v15[5] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)load__20J3DAnmFullLoader_v15FPCv,
(void*)setResource__20J3DAnmFullLoader_v15FP10J3DAnmBasePCv,
(void*)__dt__20J3DAnmFullLoader_v15Fv,
};
/* 803CF260-803CF274 02C380 0014+00 5/5 0/0 0/0 .data __vt__12J3DAnmLoader */
SECTION_DATA extern void* __vt__12J3DAnmLoader[5] = {
(void*)NULL /* RTTI */, (void*)NULL, (void*)NULL, (void*)NULL, (void*)__dt__12J3DAnmLoaderFv,
};
/* 803CF274-803CF288 02C394 0010+04 2/2 0/0 0/0 .data __vt__20J3DAnmVisibilityFull */
SECTION_DATA extern void* __vt__20J3DAnmVisibilityFull[4 + 1 /* padding */] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)__dt__20J3DAnmVisibilityFullFv,
(void*)getKind__20J3DAnmVisibilityFullCFv,
/* padding */
NULL,
};
/* 804564C0-804564C8 004AC0 0004+04 13/13 0/0 0/0 .sdata2 @889 */
SECTION_SDATA2 static f32 lit_889[1 + 1 /* padding */] = {
0.0f,
/* padding */
0.0f,
};
/* 80337B40-80338134 332480 05F4+00 0/0 7/7 1/1 .text
* load__20J3DAnmLoaderDataBaseFPCv24J3DAnmLoaderDataBaseFlag */
J3DAnmBase* J3DAnmLoaderDataBase::load(const void* i_data, J3DAnmLoaderDataBaseFlag flag) {
if (!i_data) {
return NULL;
}
const JUTDataFileHeader* header = (const JUTDataFileHeader*)i_data;
if (header->mMagic == 'J3D1') {
switch (header->mType) {
case 'bck1': {
J3DAnmKeyLoader_v15 loader;
loader.mAnm = new J3DAnmTransformKey();
return loader.load(i_data);
}
case 'bpk1': {
J3DAnmKeyLoader_v15 loader;
loader.mAnm = new J3DAnmColorKey();
return loader.load(i_data);
}
case 'blk1': {
J3DAnmKeyLoader_v15 loader;
loader.mAnm = new J3DAnmClusterKey();
return loader.load(i_data);
}
case 'btk1': {
J3DAnmKeyLoader_v15 loader;
loader.mAnm = new J3DAnmTextureSRTKey();
return loader.load(i_data);
}
case 'brk1': {
J3DAnmKeyLoader_v15 loader;
loader.mAnm = new J3DAnmTevRegKey();
return loader.load(i_data);
}
case 'bxk1': {
J3DAnmKeyLoader_v15 loader;
loader.mAnm = new J3DAnmVtxColorKey();
return loader.load(i_data);
}
case 'bca1': {
J3DAnmFullLoader_v15 loader;
if (flag & J3DLOADER_UNK_FLAG1) {
loader.mAnm = new J3DAnmTransformFullWithLerp();
} else {
loader.mAnm = new J3DAnmTransformFull();
}
return loader.load(i_data);
}
case 'bpa1': {
J3DAnmFullLoader_v15 loader;
loader.mAnm = new J3DAnmColorFull();
return loader.load(i_data);
}
case 'btp1': {
J3DAnmFullLoader_v15 loader;
loader.mAnm = new J3DAnmTexPattern();
return loader.load(i_data);
}
case 'bva1': {
J3DAnmFullLoader_v15 loader;
loader.mAnm = new J3DAnmVisibilityFull();
return loader.load(i_data);
}
case 'bla1': {
J3DAnmFullLoader_v15 loader;
loader.mAnm = new J3DAnmClusterFull();
return loader.load(i_data);
}
case 'bxa1': {
J3DAnmFullLoader_v15 loader;
loader.mAnm = new J3DAnmVtxColorFull();
return loader.load(i_data);
}
default:
OSReport("J3DAnmLoader: this is not a J3D Binary.\n");
return NULL;
}
}
return NULL;
}
/* 80338134-80338468 332A74 0334+00 0/0 1/1 0/0 .text
* setResource__20J3DAnmLoaderDataBaseFP10J3DAnmBasePCv */
void J3DAnmLoaderDataBase::setResource(J3DAnmBase* param_1, const void* param_2) {
const JUTDataFileHeader* header = (const JUTDataFileHeader*)param_2;
if (!header) {
return;
}
if (header->mMagic != 'J3D1') {
return;
}
switch (header->mType) {
case 'bck1': {
J3DAnmKeyLoader_v15 loader;
loader.setResource(param_1, param_2);
break;
}
case 'bpk1': {
J3DAnmKeyLoader_v15 loader;
loader.setResource(param_1, param_2);
break;
}
case 'blk1': {
J3DAnmKeyLoader_v15 loader;
loader.setResource(param_1, param_2);
break;
}
case 'btk1': {
J3DAnmKeyLoader_v15 loader;
loader.setResource(param_1, param_2);
break;
}
case 'brk1': {
J3DAnmKeyLoader_v15 loader;
if (param_1->getKind() == 5) {
loader.setResource(param_1, param_2);
}
break;
}
case 'bxk1': {
J3DAnmKeyLoader_v15 loader;
loader.setResource(param_1, param_2);
break;
}
case 'bca1': {
J3DAnmFullLoader_v15 loader;
loader.setResource(param_1, param_2);
break;
}
case 'bpa1': {
J3DAnmFullLoader_v15 loader;
loader.setResource(param_1, param_2);
break;
}
case 'btp1': {
J3DAnmFullLoader_v15 loader;
loader.setResource(param_1, param_2);
break;
}
case 'bla1': {
J3DAnmFullLoader_v15 loader;
loader.setResource(param_1, param_2);
break;
}
case 'bxa1': {
J3DAnmFullLoader_v15 loader;
loader.setResource(param_1, param_2);
break;
}
case 'bva1': {
J3DAnmFullLoader_v15 loader;
loader.setResource(param_1, param_2);
break;
}
default: {
OSReport("J3DAnmLoader: this is not a J3D Binary.\n");
break;
}
}
}
/* 80338468-80338484 332DA8 001C+00 2/2 0/0 0/0 .text __ct__20J3DAnmFullLoader_v15Fv */
J3DAnmFullLoader_v15::J3DAnmFullLoader_v15() {}
/* 80338484-803384E0 332DC4 005C+00 3/2 0/0 0/0 .text __dt__20J3DAnmFullLoader_v15Fv */
J3DAnmFullLoader_v15::~J3DAnmFullLoader_v15() {}
/* 803384E0-803384FC 332E20 001C+00 2/2 0/0 0/0 .text __ct__19J3DAnmKeyLoader_v15Fv */
J3DAnmKeyLoader_v15::J3DAnmKeyLoader_v15() {}
/* 803384FC-80338558 332E3C 005C+00 3/2 0/0 0/0 .text __dt__19J3DAnmKeyLoader_v15Fv */
J3DAnmKeyLoader_v15::~J3DAnmKeyLoader_v15() {}
/* ############################################################################################## */
/* 803A2130-803A2130 02E790 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_803A2159 = "Unknown data block\n";
/* @stringBase0 padding */
SECTION_DEAD static char const* const pad_803A216D = "\0\0";
#pragma pop
/* 80338558-803386A0 332E98 0148+00 2/1 0/0 0/0 .text load__20J3DAnmFullLoader_v15FPCv */
J3DAnmBase* J3DAnmFullLoader_v15::load(const void* param_1) {
const JUTDataFileHeader* header = (const JUTDataFileHeader*)param_1;
const JUTDataBlockHeader* block = &header->mFirstBlock;
for (int i = 0; i < header->mBlockNum; i++) {
switch (block->mType) {
case 'ANF1':
readAnmTransform((J3DAnmTransformFullData*)block);
break;
case 'PAF1':
readAnmColor((J3DAnmColorFullData*)block);
break;
case 'TPT1':
readAnmTexPattern((J3DAnmTexPatternFullData*)block);
break;
case 'CLF1':
readAnmCluster((J3DAnmClusterFullData*)block);
break;
case 'VAF1':
readAnmVisibility((J3DAnmVisibilityFullData*)block);
break;
case 'VCF1':
readAnmVtxColor((J3DAnmVtxColorFullData*)block);
break;
default:
OSReport("Unknown data block\n");
break;
}
block = block->getNext();
}
return mAnm;
}
/* 803386A0-80338800 332FE0 0160+00 2/1 0/0 0/0 .text
* setResource__20J3DAnmFullLoader_v15FP10J3DAnmBasePCv */
void J3DAnmFullLoader_v15::setResource(J3DAnmBase* param_1, const void* param_2) {
const JUTDataFileHeader* header = (const JUTDataFileHeader*)param_2;
const JUTDataBlockHeader* block = &header->mFirstBlock;
for (int i = 0; i < header->mBlockNum; i++) {
switch (block->mType) {
case 'ANF1':
setAnmTransform((J3DAnmTransformFull*)param_1, (const J3DAnmTransformFullData*)block);
break;
case 'PAF1':
setAnmColor((J3DAnmColorFull*)param_1, (const J3DAnmColorFullData*)block);
break;
case 'TPT1':
setAnmTexPattern((J3DAnmTexPattern*)param_1, (const J3DAnmTexPatternFullData*)block);
break;
case 'CLF1':
setAnmCluster((J3DAnmClusterFull*)param_1, (const J3DAnmClusterFullData*)block);
break;
case 'VAF1':
setAnmVisibility((J3DAnmVisibilityFull*)param_1,
(const J3DAnmVisibilityFullData*)block);
break;
case 'VCF1':
setAnmVtxColor((J3DAnmVtxColorFull*)param_1, (const J3DAnmVtxColorFullData*)block);
break;
default:
OSReport("Unknown data block\n");
break;
}
block = block->getNext();
}
}
/* 80338800-80338828 333140 0028+00 1/1 0/0 0/0 .text
* readAnmTransform__20J3DAnmFullLoader_v15FPC23J3DAnmTransformFullData */
void J3DAnmFullLoader_v15::readAnmTransform(const J3DAnmTransformFullData* param_1) {
setAnmTransform((J3DAnmTransformFull*)mAnm, param_1);
}
/* 80338828-803388BC 333168 0094+00 2/2 0/0 0/0 .text
* setAnmTransform__20J3DAnmFullLoader_v15FP19J3DAnmTransformFullPC23J3DAnmTransformFullData */
void J3DAnmFullLoader_v15::setAnmTransform(J3DAnmTransformFull* param_1,
const J3DAnmTransformFullData* param_2) {
param_1->field_0x1e = 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);
}
/* 803388BC-803388E4 3331FC 0028+00 1/1 0/0 0/0 .text
* readAnmColor__20J3DAnmFullLoader_v15FPC19J3DAnmColorFullData */
void J3DAnmFullLoader_v15::readAnmColor(const J3DAnmColorFullData* param_1) {
setAnmColor((J3DAnmColorFull*)mAnm, param_1);
}
/* 803388E4-803389B0 333224 00CC+00 2/2 0/0 0/0 .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, param_2->mRValuesOffset);
param_1->mColorG = JSUConvertOffsetToPtr<u8>(param_2, param_2->mGValuesOffset);
param_1->mColorB = JSUConvertOffsetToPtr<u8>(param_2, param_2->mBValuesOffset);
param_1->mColorA = JSUConvertOffsetToPtr<u8>(param_2, 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));
}
/* 803389B0-803389D8 3332F0 0028+00 1/1 0/0 0/0 .text
* readAnmTexPattern__20J3DAnmFullLoader_v15FPC24J3DAnmTexPatternFullData */
void J3DAnmFullLoader_v15::readAnmTexPattern(const J3DAnmTexPatternFullData* param_1) {
setAnmTexPattern((J3DAnmTexPattern*)mAnm, param_1);
}
/* 803389D8-80338A7C 333318 00A4+00 2/2 0/0 0/0 .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_0x14 = 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));
}
/* 80338A7C-80338AA4 3333BC 0028+00 1/1 0/0 0/0 .text
* readAnmVisibility__20J3DAnmFullLoader_v15FPC24J3DAnmVisibilityFullData */
void J3DAnmFullLoader_v15::readAnmVisibility(const J3DAnmVisibilityFullData* param_1) {
setAnmVisibility((J3DAnmVisibilityFull*)mAnm, param_1);
}
/* 80338AA4-80338B20 3333E4 007C+00 2/2 0/0 0/0 .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_0xe = param_2->field_0xe;
param_1->mAnmTable =
JSUConvertOffsetToPtr<J3DAnmVisibilityFullTable>(param_2, (void*)param_2->mTableOffset);
param_1->mVisibility = JSUConvertOffsetToPtr<u8>(param_2, param_2->mValuesOffset);
}
/* 80338B20-80338B48 333460 0028+00 1/1 0/0 0/0 .text
* readAnmCluster__20J3DAnmFullLoader_v15FPC21J3DAnmClusterFullData */
void J3DAnmFullLoader_v15::readAnmCluster(const J3DAnmClusterFullData* param_1) {
setAnmCluster((J3DAnmClusterFull*)mAnm, param_1);
}
/* 80338B48-80338BB4 333488 006C+00 2/2 0/0 0/0 .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);
}
/* 80338BB4-80338BDC 3334F4 0028+00 1/1 0/0 0/0 .text
* readAnmVtxColor__20J3DAnmFullLoader_v15FPC22J3DAnmVtxColorFullData */
void J3DAnmFullLoader_v15::readAnmVtxColor(const J3DAnmVtxColorFullData* param_1) {
setAnmVtxColor((J3DAnmVtxColorFull*)mAnm, param_1);
}
/* 80338BDC-80338D44 33351C 0168+00 2/2 0/0 0/0 .text
* setAnmVtxColor__20J3DAnmFullLoader_v15FP18J3DAnmVtxColorFullPC22J3DAnmVtxColorFullData */
void J3DAnmFullLoader_v15::setAnmVtxColor(J3DAnmVtxColorFull* dst,
const J3DAnmVtxColorFullData* data) {
dst->mFrameMax = data->mFrameMax;
dst->mAttribute = data->field_0x8;
dst->mFrame = 0.0f;
dst->mAnmTableNum[0] = data->mAnmTableNum[0];
dst->mAnmTableNum[1] = data->mAnmTableNum[1];
dst->mpTable[0] =
JSUConvertOffsetToPtr<J3DAnmColorFullTable>(data, (void*)data->mTableOffsets[0]);
dst->mpTable[1] =
JSUConvertOffsetToPtr<J3DAnmColorFullTable>(data, (void*)data->mTableOffsets[1]);
dst->mAnmVtxColorIndexData[0] = JSUConvertOffsetToPtr<J3DAnmVtxColorIndexData>(
data, (void*)data->mVtxColorIndexDataOffsets[0]);
dst->mAnmVtxColorIndexData[1] = JSUConvertOffsetToPtr<J3DAnmVtxColorIndexData>(
data, (void*)data->mVtxColorIndexDataOffsets[1]);
void* indexPtr0 =
JSUConvertOffsetToPtr<u16>(data, (void*)data->mVtxColorIndexPointerOffsets[0]);
void* indexPtr1 =
JSUConvertOffsetToPtr<u16>(data, (void*)data->mVtxColorIndexPointerOffsets[1]);
for (s32 i = 0; i < dst->mAnmTableNum[0]; i++)
dst->mAnmVtxColorIndexData[0][i].mpData =
(void*)((s32)indexPtr0 + (s32)dst->mAnmVtxColorIndexData[0][i].mpData * 2);
for (s32 i = 0; i < dst->mAnmTableNum[1]; i++)
dst->mAnmVtxColorIndexData[1][i].mpData =
(void*)((s32)indexPtr1 + (s32)dst->mAnmVtxColorIndexData[1][i].mpData * 2);
dst->mColorR = JSUConvertOffsetToPtr<u8>(data, data->mRValuesOffset);
dst->mColorG = JSUConvertOffsetToPtr<u8>(data, data->mGValuesOffset);
dst->mColorB = JSUConvertOffsetToPtr<u8>(data, data->mBValuesOffset);
dst->mColorA = JSUConvertOffsetToPtr<u8>(data, data->mAValuesOffset);
}
/* 80338D44-80338E8C 333684 0148+00 2/1 0/0 0/0 .text load__19J3DAnmKeyLoader_v15FPCv */
J3DAnmBase* J3DAnmKeyLoader_v15::load(const void* param_1) {
const JUTDataFileHeader* header = (const JUTDataFileHeader*)param_1;
const JUTDataBlockHeader* block = &header->mFirstBlock;
for (int i = 0; i < header->mBlockNum; i++) {
switch (block->mType) {
case 'ANK1':
readAnmTransform((J3DAnmTransformKeyData*)block);
break;
case 'PAK1':
readAnmColor((J3DAnmColorKeyData*)block);
break;
case 'CLK1':
readAnmCluster((J3DAnmClusterKeyData*)block);
break;
case 'TTK1':
readAnmTextureSRT((J3DAnmTextureSRTKeyData*)block);
break;
case 'TRK1':
readAnmTevReg((J3DAnmTevRegKeyData*)block);
break;
case 'VCK1':
readAnmVtxColor((J3DAnmVtxColorKeyData*)block);
break;
default:
OSReport("Unknown data block\n");
break;
}
block = block->getNext();
}
return mAnm;
}
/* 80338E8C-80338FEC 3337CC 0160+00 2/1 0/0 0/0 .text
* setResource__19J3DAnmKeyLoader_v15FP10J3DAnmBasePCv */
void J3DAnmKeyLoader_v15::setResource(J3DAnmBase* param_1, const void* param_2) {
const JUTDataFileHeader* header = (const JUTDataFileHeader*)param_2;
const JUTDataBlockHeader* block = &header->mFirstBlock;
for (int i = 0; i < header->mBlockNum; i++) {
switch (block->mType) {
case 'ANK1':
setAnmTransform((J3DAnmTransformKey*)param_1, (const J3DAnmTransformKeyData*)block);
break;
case 'PAK1':
setAnmColor((J3DAnmColorKey*)param_1, (const J3DAnmColorKeyData*)block);
break;
case 'CLK1':
setAnmCluster((J3DAnmClusterKey*)param_1, (const J3DAnmClusterKeyData*)block);
break;
case 'TTK1':
setAnmTextureSRT((J3DAnmTextureSRTKey*)param_1, (const J3DAnmTextureSRTKeyData*)block);
break;
case 'TRK1':
setAnmTevReg((J3DAnmTevRegKey*)param_1, (const J3DAnmTevRegKeyData*)block);
break;
case 'VCK1':
setAnmVtxColor((J3DAnmVtxColorKey*)param_1, (const J3DAnmVtxColorKeyData*)block);
break;
default:
OSReport("Unknown data block\n");
break;
}
block = block->getNext();
}
}
/* 80338FEC-80339014 33392C 0028+00 1/1 0/0 0/0 .text
* readAnmTransform__19J3DAnmKeyLoader_v15FPC22J3DAnmTransformKeyData */
void J3DAnmKeyLoader_v15::readAnmTransform(const J3DAnmTransformKeyData* param_1) {
setAnmTransform((J3DAnmTransformKey*)mAnm, param_1);
}
/* 80339014-803390B0 333954 009C+00 2/2 0/0 0/0 .text
* setAnmTransform__19J3DAnmKeyLoader_v15FP18J3DAnmTransformKeyPC22J3DAnmTransformKeyData */
void J3DAnmKeyLoader_v15::setAnmTransform(J3DAnmTransformKey* param_1,
const J3DAnmTransformKeyData* param_2) {
param_1->field_0x1e = 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);
}
/* 803390B0-803390D8 3339F0 0028+00 1/1 0/0 0/0 .text
* readAnmTextureSRT__19J3DAnmKeyLoader_v15FPC23J3DAnmTextureSRTKeyData */
void J3DAnmKeyLoader_v15::readAnmTextureSRT(const J3DAnmTextureSRTKeyData* param_1) {
setAnmTextureSRT((J3DAnmTextureSRTKey*)mAnm, param_1);
}
/* 803390D8-803392B0 333A18 01D8+00 2/2 0/0 0/0 .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, 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));
}
param_1->field_0x4a = param_2->field_0x34;
param_1->field_0x44 = param_2->field_0x36;
param_1->field_0x46 = param_2->field_0x38;
param_1->field_0x48 = param_2->field_0x3a;
param_1->field_0x58 =
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, param_2->field_0x48);
param_1->mPostSRTCenter = JSUConvertOffsetToPtr<Vec>(param_2, (void*)param_2->field_0x4c);
param_1->field_0x4c = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->field_0x50);
param_1->field_0x50 = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->field_0x54);
param_1->field_0x54 = JSUConvertOffsetToPtr<f32>(param_2, (void*)param_2->field_0x58);
switch (param_2->field_0x5c) {
case 0:
case 1:
param_1->mTexMtxCalcType = param_2->field_0x5c;
break;
default:
param_1->mTexMtxCalcType = 0;
break;
}
}
/* 803392B0-803392D8 333BF0 0028+00 1/1 0/0 0/0 .text
* readAnmColor__19J3DAnmKeyLoader_v15FPC18J3DAnmColorKeyData */
void J3DAnmKeyLoader_v15::readAnmColor(const J3DAnmColorKeyData* param_1) {
setAnmColor((J3DAnmColorKey*)mAnm, param_1);
}
/* 803392D8-803393C4 333C18 00EC+00 2/2 0/0 0/0 .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_0xc = param_2->field_0x10;
param_1->field_0xe = param_2->field_0x12;
param_1->field_0x10 = param_2->field_0x14;
param_1->field_0x12 = param_2->field_0x16;
param_1->field_0x3c =
JSUConvertOffsetToPtr<J3DAnmColorKeyTable>(param_2, (void*)param_2->mTableOffset);
param_1->field_0x2c = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mRValOffset);
param_1->field_0x30 = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mGValOffset);
param_1->field_0x34 = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mBValOffset);
param_1->field_0x38 = 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));
}
/* 803393C4-803393EC 333D04 0028+00 1/1 0/0 0/0 .text
* readAnmCluster__19J3DAnmKeyLoader_v15FPC20J3DAnmClusterKeyData */
void J3DAnmKeyLoader_v15::readAnmCluster(const J3DAnmClusterKeyData* param_1) {
setAnmCluster((J3DAnmClusterKey*)mAnm, param_1);
}
/* 803393EC-80339458 333D2C 006C+00 2/2 0/0 0/0 .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);
}
/* 80339458-80339480 333D98 0028+00 1/1 0/0 0/0 .text
* readAnmTevReg__19J3DAnmKeyLoader_v15FPC19J3DAnmTevRegKeyData */
void J3DAnmKeyLoader_v15::readAnmTevReg(const J3DAnmTevRegKeyData* param_1) {
setAnmTevReg((J3DAnmTevRegKey*)mAnm, param_1);
}
/* 80339480-8033960C 333DC0 018C+00 2/2 0/0 0/0 .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);
}
/* 8033960C-80339634 333F4C 0028+00 1/1 0/0 0/0 .text
* readAnmVtxColor__19J3DAnmKeyLoader_v15FPC21J3DAnmVtxColorKeyData */
void J3DAnmKeyLoader_v15::readAnmVtxColor(const J3DAnmVtxColorKeyData* param_1) {
setAnmVtxColor((J3DAnmVtxColorKey*)mAnm, param_1);
}
/* 80339634-8033979C 333F74 0168+00 2/2 0/0 0/0 .text
* setAnmVtxColor__19J3DAnmKeyLoader_v15FP17J3DAnmVtxColorKeyPC21J3DAnmVtxColorKeyData */
void J3DAnmKeyLoader_v15::setAnmVtxColor(J3DAnmVtxColorKey* dst,
const J3DAnmVtxColorKeyData* data) {
dst->mFrameMax = data->mFrameMax;
dst->mAttribute = data->field_0x8;
dst->mFrame = 0.0f;
dst->mAnmTableNum[0] = data->mAnmTableNum[0];
dst->mAnmTableNum[1] = data->mAnmTableNum[1];
dst->mpTable[0] =
JSUConvertOffsetToPtr<J3DAnmColorKeyTable>(data, (void*)data->mTableOffsets[0]);
dst->mpTable[1] =
JSUConvertOffsetToPtr<J3DAnmColorKeyTable>(data, (void*)data->mTableOffsets[1]);
dst->mAnmVtxColorIndexData[0] = JSUConvertOffsetToPtr<J3DAnmVtxColorIndexData>(
data, (void*)data->mVtxColoIndexDataOffset[0]);
dst->mAnmVtxColorIndexData[1] = JSUConvertOffsetToPtr<J3DAnmVtxColorIndexData>(
data, (void*)data->mVtxColoIndexDataOffset[1]);
void* indexPtr0 = JSUConvertOffsetToPtr<u16>(data, (void*)data->mVtxColoIndexPointerOffset[0]);
void* indexPtr1 = JSUConvertOffsetToPtr<u16>(data, (void*)data->mVtxColoIndexPointerOffset[1]);
for (s32 i = 0; i < dst->mAnmTableNum[0]; i++)
dst->mAnmVtxColorIndexData[0][i].mpData =
(void*)((s32)indexPtr0 + (s32)dst->mAnmVtxColorIndexData[0][i].mpData * 2);
for (s32 i = 0; i < dst->mAnmTableNum[1]; i++)
dst->mAnmVtxColorIndexData[1][i].mpData =
(void*)((s32)indexPtr1 + (s32)dst->mAnmVtxColorIndexData[1][i].mpData * 2);
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);
}
/* 8033979C-803397F8 3340DC 005C+00 1/0 0/0 0/0 .text __dt__20J3DAnmVisibilityFullFv */
J3DAnmVisibilityFull::~J3DAnmVisibilityFull() {
// NONMATCHING
}
/* 803397F8-80339800 334138 0008+00 1/0 0/0 0/0 .text getKind__20J3DAnmVisibilityFullCFv
*/
s32 J3DAnmVisibilityFull::getKind() const {
return 6;
}
/* 80339800-80339848 334140 0048+00 1/0 0/0 0/0 .text __dt__12J3DAnmLoaderFv */
// J3DAnmLoader::~J3DAnmLoader() {
extern "C" void __dt__12J3DAnmLoaderFv() {
// NONMATCHING
}
/* 80339848-80339860 334188 0018+00 1/1 0/0 0/0 .text
* JSUConvertOffsetToPtr<21J3DAnmClusterKeyTable>__FPCvPCv */
extern "C" void func_80339848(void* _this, void const* param_0, void const* param_1) {
// NONMATCHING
}
/* 80339860-80339878 3341A0 0018+00 1/1 0/0 0/0 .text
* JSUConvertOffsetToPtr<22J3DAnmClusterFullTable>__FPCvPCv */
extern "C" void func_80339860(void* _this, void const* param_0, void const* param_1) {
// NONMATCHING
}
/* 803A2130-803A2130 02E790 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -0,0 +1,201 @@
//
// Generated By: dol2asm
// Translation Unit: J3DClusterLoader
//
#include "JSystem/J3DGraphLoader/J3DClusterLoader.h"
#include "JSystem/J3DGraphAnimator/J3DSkinDeform.h"
#include "JSystem/JSupport/JSupport.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "dol2asm.h"
#include "dolphin/os.h"
#include "string.h"
//
// Forward References:
//
extern "C" void load__24J3DClusterLoaderDataBaseFPCv();
extern "C" void __ct__20J3DClusterLoader_v15Fv();
extern "C" void __dt__20J3DClusterLoader_v15Fv();
extern "C" void load__20J3DClusterLoader_v15FPCv();
extern "C" void readCluster__20J3DClusterLoader_v15FPC15J3DClusterBlock();
extern "C" void __dt__16J3DClusterLoaderFv();
extern "C" void func_80334644(void* _this, void const*, void const*);
extern "C" void func_8033465C(void* _this, void const*, void const*);
extern "C" void func_80334674(void* _this, void const*, void const*);
extern "C" extern char const* const J3DClusterLoader__stringBase0;
//
// External References:
//
extern "C" void* __nw__FUl();
extern "C" void* __nwa__FUl();
extern "C" void* __nwa__FUli();
extern "C" void __dl__FPv();
extern "C" void __ct__10JUTNameTabFPC7ResNTAB();
extern "C" void func_802F42C0(void* _this, void const*, void const*);
extern "C" void func_8030A530(void* _this, void const*, void const*);
extern "C" void func_8030A560(void* _this, void const*, void const*);
extern "C" void __ct__13J3DDeformDataFv();
extern "C" void __ct__11J3DDeformerFP13J3DDeformData();
extern "C" void _savegpr_23();
extern "C" void _savegpr_26();
extern "C" void _restgpr_23();
extern "C" void _restgpr_26();
//
// Declarations:
//
/* 80334130-803341CC 32EA70 009C+00 0/0 1/1 0/0 .text load__24J3DClusterLoaderDataBaseFPCv */
void* J3DClusterLoaderDataBase::load(const void* i_data) {
const JUTDataFileHeader* fileHeader = (JUTDataFileHeader*)i_data;
if (fileHeader->mMagic == 'J3D1' && fileHeader->mType == 'bls1') {
J3DClusterLoader_v15 loader;
return loader.load(i_data);
} else if (fileHeader->mMagic == 'J3D2' && fileHeader->mType == 'bls2') {
return NULL;
}
return NULL;
}
/* ############################################################################################## */
/* 803CF0E8-803CF0F8 02C208 0010+00 2/2 0/0 0/0 .data __vt__20J3DClusterLoader_v15 */
SECTION_DATA extern void* __vt__20J3DClusterLoader_v15[4] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)load__20J3DClusterLoader_v15FPCv,
(void*)__dt__20J3DClusterLoader_v15Fv,
};
/* 803CF0F8-803CF108 02C218 0010+00 3/3 0/0 0/0 .data __vt__16J3DClusterLoader */
SECTION_DATA extern void* __vt__16J3DClusterLoader[4] = {
(void*)NULL /* RTTI */,
(void*)NULL,
(void*)NULL,
(void*)__dt__16J3DClusterLoaderFv,
};
/* 803341CC-803341E8 32EB0C 001C+00 1/1 0/0 0/0 .text __ct__20J3DClusterLoader_v15Fv */
J3DClusterLoader_v15::J3DClusterLoader_v15() {}
/* 803341E8-80334244 32EB28 005C+00 2/1 0/0 0/0 .text __dt__20J3DClusterLoader_v15Fv */
J3DClusterLoader_v15::~J3DClusterLoader_v15() {}
/* 80334244-803342F8 32EB84 00B4+00 2/1 0/0 0/0 .text load__20J3DClusterLoader_v15FPCv */
void* J3DClusterLoader_v15::load(const void* i_data) {
mpDeformData = new J3DDeformData();
const JUTDataFileHeader* fileHeader = (JUTDataFileHeader*)i_data;
const JUTDataBlockHeader* block = &fileHeader->mFirstBlock;
for (int i = 0; i < fileHeader->mBlockNum; i++) {
switch (block->mType) {
case 'CLS1':
readCluster((J3DClusterBlock*)block);
break;
default:
OSReport("Unknown data block\n");
break;
}
block = block->getNext();
}
return mpDeformData;
}
/* 803342F8-803345FC 32EC38 0304+00 1/1 0/0 0/0 .text
* readCluster__20J3DClusterLoader_v15FPC15J3DClusterBlock */
void J3DClusterLoader_v15::readCluster(const J3DClusterBlock* block) {
mpDeformData->mClusterNum = block->mClusterNum;
mpDeformData->mClusterKeyNum = block->mClusterKeyNum;
mpDeformData->mVtxPosNum = block->mVtxPosNum;
mpDeformData->mVtxNrmNum = block->mVtxNrmNum;
mpDeformData->mClusterVertexNum = block->mClusterVertexNum;
if (block->mClusterName != NULL) {
mpDeformData->mClusterName =
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(block, block->mClusterName));
} else {
mpDeformData->mClusterName = NULL;
}
if (block->mClusterKeyName != NULL) {
mpDeformData->mClusterKeyName =
new JUTNameTab(JSUConvertOffsetToPtr<ResNTAB>(block, block->mClusterKeyName));
} else {
mpDeformData->mClusterKeyName = NULL;
}
mpDeformData->mVtxPos = JSUConvertOffsetToPtr<f32>(block, block->mVtxPos);
mpDeformData->mVtxNrm = JSUConvertOffsetToPtr<f32>(block, block->mVtxNrm);
void* clusterPointer = block->mClusterPointer;
int clusterKeyPointerSize = (int)block->mClusterKeyPointer - (int)clusterPointer;
int clusterVertexPointerSize = (int)block->mClusterVertex - (int)clusterPointer;
int vtxPosSize = (int)block->mVtxPos - (int)clusterPointer;
u8* arr = new (0x20) u8[vtxPosSize];
memcpy(arr, JSUConvertOffsetToPtr<J3DCluster>(block, clusterPointer), vtxPosSize);
mpDeformData->mClusterPointer = (J3DCluster*)arr;
mpDeformData->mClusterKeyPointer = (J3DClusterKey*)&arr[clusterKeyPointerSize];
mpDeformData->mClusterVertex = (J3DClusterVertex*)&arr[clusterVertexPointerSize];
for (int i = 0; i < mpDeformData->getClusterNum(); i++) {
J3DCluster* cluster = &mpDeformData->mClusterPointer[i];
cluster->mClusterKey = JSUConvertOffsetToPtr<J3DClusterKey>(arr - (int)clusterPointer, cluster->mClusterKey);
cluster->field_0x18 = JSUConvertOffsetToPtr<u16>(block, cluster->field_0x18);
cluster->mClusterVertex =
JSUConvertOffsetToPtr<J3DClusterVertex>(arr - (int)clusterPointer, cluster->mClusterVertex);
J3DDeformer* deformer = new J3DDeformer(mpDeformData);
if (cluster->field_0x14 != 0) {
deformer->field_0xc = new f32[cluster->field_0x14 * 3];
} else {
deformer->field_0xc = NULL;
}
deformer->mFlags = cluster->mFlags;
deformer->field_0x8 = new f32[cluster->mKeyNum];
cluster->setDeformer(deformer);
}
for (int i = 0; i < mpDeformData->getClusterKeyNum(); i++) {
J3DClusterKey* clusterKey = &mpDeformData->mClusterKeyPointer[i];
clusterKey->field_0x4 = JSUConvertOffsetToPtr<u16>(block, clusterKey->field_0x4);
clusterKey->field_0x8 = JSUConvertOffsetToPtr<u16>(block, clusterKey->field_0x8);
}
for (int i = 0; i < mpDeformData->mClusterVertexNum; i++) {
J3DClusterVertex* clusterVertex = &mpDeformData->mClusterVertex[i];
clusterVertex->field_0x4 = JSUConvertOffsetToPtr<u16>(block, clusterVertex->field_0x4);
clusterVertex->field_0x8 = JSUConvertOffsetToPtr<u16>(block, clusterVertex->field_0x8);
}
DCStoreRange(arr, vtxPosSize);
}
/* 803345FC-80334644 32EF3C 0048+00 1/0 0/0 0/0 .text __dt__16J3DClusterLoaderFv */
// Remove when JSUConvertOffsetToPtr is ok
void __dt__16J3DClusterLoaderFv() {
//asm J3DClusterLoader::~J3DClusterLoader() {
// NONMATCHING
}
/* 80334644-8033465C 32EF84 0018+00 1/1 0/0 0/0 .text
* JSUConvertOffsetToPtr<16J3DClusterVertex>__FPCvPCv */
extern "C" void func_80334644(void* _this, void const* param_0, void const* param_1) {
// NONMATCHING
}
/* 8033465C-80334674 32EF9C 0018+00 1/1 0/0 0/0 .text
* JSUConvertOffsetToPtr<13J3DClusterKey>__FPCvPCv */
extern "C" void func_8033465C(void* _this, void const* param_0, void const* param_1) {
// NONMATCHING
}
/* 80334674-8033468C 32EFB4 0018+00 1/1 0/0 0/0 .text JSUConvertOffsetToPtr<10J3DCluster>__FPCvPCv
*/
extern "C" void func_80334674(void* _this, void const* param_0, void const* param_1) {
// NONMATCHING
}
/* 803A2098-803A2098 02E6F8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -0,0 +1,48 @@
//
// Generated By: dol2asm
// Translation Unit: J3DJointFactory
//
#include "JSystem/J3DGraphLoader/J3DJointFactory.h"
#include "JSystem/J3DGraphLoader/J3DModelLoader.h"
#include "JSystem/J3DGraphAnimator/J3DJoint.h"
#include "JSystem/JSupport/JSupport.h"
//
// Types:
//
extern "C" u16* func_8033677C(const void*, const void*); // JSUConvertOffsetToPtr<u16>
extern "C" void* __nw__FUl();
extern "C" void __ct__8J3DJointFv();
/* 80337178-803371D0 331AB8 0058+00 0/0 1/1 0/0 .text __ct__15J3DJointFactoryFRC13J3DJointBlock */
J3DJointFactory::J3DJointFactory(J3DJointBlock const& block) {
mJointInitData = JSUConvertOffsetToPtr<J3DJointInitData>(&block, block.mpJointInitData);
// Fix when we have our ODR working.
// mIndexTable = JSUConvertOffsetToPtr<u16>(&block, block.mpIndexTable);
mIndexTable = func_8033677C(&block, block.mpIndexTable);
}
/* 803371D0-80337338 331B10 0168+00 0/0 1/1 0/0 .text create__15J3DJointFactoryFi */
J3DJoint* J3DJointFactory::create(int param_0) {
// NONMATCHING
}
/* J3DJoint* J3DJointFactory::create(int no) {
J3DJoint* joint = new J3DJoint();
joint->mJntNo = no;
joint->mKind = getKind(no);
joint->mScaleCompensate = getScaleCompensate(no);
joint->mTransformInfo = getTransformInfo(no);
joint->mBoundingSphereRadius = getRadius(no);
joint->mMin = getMin(no);
joint->mMax = getMax(no);
joint->mMtxCalc = NULL;
if (joint->mScaleCompensate == 0xFF)
joint->mScaleCompensate = 0;
return joint;
} */
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,396 @@
//
// Generated By: dol2asm
// Translation Unit: J3DMaterialFactory_v21
//
#include "JSystem/J3DGraphLoader/J3DMaterialFactory_v21.h"
#include "JSystem/JSupport/JSupport.h"
#include "dol2asm.h"
//
// Forward References:
//
extern "C" void __ct__22J3DMaterialFactory_v21FRC20J3DMaterialBlock_v21();
extern "C" void countUniqueMaterials__22J3DMaterialFactory_v21Fv();
extern "C" void countTexGens__22J3DMaterialFactory_v21CFi();
extern "C" void countStages__22J3DMaterialFactory_v21CFi();
extern "C" void create__22J3DMaterialFactory_v21CFP11J3DMaterialiUl();
extern "C" void newMatColor__22J3DMaterialFactory_v21CFii();
extern "C" void newColorChanNum__22J3DMaterialFactory_v21CFi();
extern "C" void newColorChan__22J3DMaterialFactory_v21CFii();
extern "C" void newTexGenNum__22J3DMaterialFactory_v21CFi();
extern "C" void newTexCoord__22J3DMaterialFactory_v21CFii();
extern "C" void newTexMtx__22J3DMaterialFactory_v21CFii();
extern "C" void newCullMode__22J3DMaterialFactory_v21CFi();
extern "C" void newTexNo__22J3DMaterialFactory_v21CFii();
extern "C" void newTevOrder__22J3DMaterialFactory_v21CFii();
extern "C" void newTevColor__22J3DMaterialFactory_v21CFii();
extern "C" void newTevKColor__22J3DMaterialFactory_v21CFii();
extern "C" void newTevStageNum__22J3DMaterialFactory_v21CFi();
extern "C" void newTevStage__22J3DMaterialFactory_v21CFii();
extern "C" void newTevSwapModeTable__22J3DMaterialFactory_v21CFii();
extern "C" void newFog__22J3DMaterialFactory_v21CFi();
extern "C" void newAlphaComp__22J3DMaterialFactory_v21CFi();
extern "C" void newBlend__22J3DMaterialFactory_v21CFi();
extern "C" void newZMode__22J3DMaterialFactory_v21CFi();
extern "C" void newZCompLoc__22J3DMaterialFactory_v21CFi();
extern "C" void newDither__22J3DMaterialFactory_v21CFi();
extern "C" void newNBTScale__22J3DMaterialFactory_v21CFi();
extern "C" void func_80334118(void* _this, void const*, void const*);
//
// External References:
//
extern "C" void __ct__11J3DTevStageFv();
extern "C" void __ct__11J3DTevStageFRC15J3DTevStageInfo();
extern "C" void* __nw__FUl();
extern "C" GXColorS10* func_802F41E8(void const*, void const*);
extern "C" u8* func_802F4260(void const*, void const*);
extern "C" GXColor* func_802F4278(void const*, void const*);
extern "C" GXCullMode* func_802F4290(void const*, void const*);
extern "C" u16* func_802F42C0(void const*, void const*);
extern "C" void createColorBlock__11J3DMaterialFUl();
extern "C" void createTexGenBlock__11J3DMaterialFUl();
extern "C" void createTevBlock__11J3DMaterialFi();
extern "C" void createIndBlock__11J3DMaterialFi();
extern "C" void createPEBlock__11J3DMaterialFUlUl();
extern "C" void initialize__11J3DMaterialFv();
extern "C" void __as__13J3DTexMtxInfoFRC13J3DTexMtxInfo();
extern "C" void __as__10J3DFogInfoFRC10J3DFogInfo();
extern "C" void func_80332C24(void* _this, void const*, void const*);
extern "C" void func_80332C3C(void* _this, void const*, void const*);
extern "C" void func_80332C54(void* _this, void const*, void const*);
extern "C" void func_80332C6C(void* _this, void const*, void const*);
extern "C" void func_80332C84(void* _this, void const*, void const*);
extern "C" void func_80332C9C(void* _this, void const*, void const*);
extern "C" void func_80332CB4(void* _this, void const*, void const*);
extern "C" void func_80332CCC(void* _this, void const*, void const*);
extern "C" void func_80332CE4(void* _this, void const*, void const*);
extern "C" void func_80332CFC(void* _this, void const*, void const*);
extern "C" void func_80332D14(void* _this, void const*, void const*);
extern "C" void func_80332D2C(void* _this, void const*, void const*);
extern "C" void func_80332D5C(void* _this, void const*, void const*);
extern "C" void _savegpr_19();
extern "C" void _savegpr_29();
extern "C" void _restgpr_19();
extern "C" void _restgpr_29();
extern "C" extern void* __vt__11J3DMaterial[12];
//
// Declarations:
//
/* 80332DA4-80332F84 32D6E4 01E0+00 0/0 2/2 0/0 .text
* __ct__22J3DMaterialFactory_v21FRC20J3DMaterialBlock_v21 */
J3DMaterialFactory_v21::J3DMaterialFactory_v21(J3DMaterialBlock_v21 const& i_block) {
mMaterialNum = i_block.mMaterialNum;
mpMaterialInitData = JSUConvertOffsetToPtr<J3DMaterialInitData_v21>(&i_block, i_block.mpMaterialInitData);
mpMaterialID = JSUConvertOffsetToPtr<u16>(&i_block, i_block.mpMaterialID);
mpCullMode = JSUConvertOffsetToPtr<GXCullMode>(&i_block, i_block.mpCullMode);
mpMatColor = JSUConvertOffsetToPtr<GXColor>(&i_block, i_block.mpMatColor);
mpColorChanNum = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpColorChanNum);
mpColorChanInfo = JSUConvertOffsetToPtr<J3DColorChanInfo>(&i_block, i_block.mpColorChanInfo);
mpTexGenNum = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpTexGenNum);
mpTexCoordInfo = JSUConvertOffsetToPtr<J3DTexCoordInfo>(&i_block, i_block.mpTexCoordInfo);
mpTexCoord2Info = JSUConvertOffsetToPtr<J3DTexCoord2Info>(&i_block, i_block.mpTexCoord2Info);
mpTexMtxInfo = JSUConvertOffsetToPtr<J3DTexMtxInfo>(&i_block, i_block.mpTexMtxInfo);
field_0x28 = JSUConvertOffsetToPtr<J3DTexMtxInfo>(&i_block, i_block.field_0x38);
mpTexNo = JSUConvertOffsetToPtr<u16>(&i_block, i_block.mpTexNo);
mpTevOrderInfo = JSUConvertOffsetToPtr<J3DTevOrderInfo>(&i_block, i_block.mpTevOrderInfo);
mpTevColor = JSUConvertOffsetToPtr<GXColorS10>(&i_block, i_block.mpTevColor);
mpTevKColor = JSUConvertOffsetToPtr<GXColor>(&i_block, i_block.mpTevKColor);
mpTevStageNum = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpTevStageNum);
mpTevStageInfo = JSUConvertOffsetToPtr<J3DTevStageInfo>(&i_block, i_block.mpTevStageInfo);
mpTevSwapModeInfo = JSUConvertOffsetToPtr<J3DTevSwapModeInfo>(&i_block, i_block.mpTevSwapModeInfo);
mpTevSwapModeTableInfo = JSUConvertOffsetToPtr<J3DTevSwapModeTableInfo>(&i_block, i_block.mpTevSwapModeTableInfo);
mpFogInfo = JSUConvertOffsetToPtr<J3DFogInfo>(&i_block, i_block.mpFogInfo);
mpAlphaCompInfo = JSUConvertOffsetToPtr<J3DAlphaCompInfo>(&i_block, i_block.mpAlphaCompInfo);
mpBlendInfo = JSUConvertOffsetToPtr<J3DBlendInfo>(&i_block, i_block.mpBlendInfo);
mpZModeInfo = JSUConvertOffsetToPtr<J3DZModeInfo>(&i_block, i_block.mpZModeInfo);
mpZCompLoc = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpZCompLoc);
mpDither = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpDither);
mpNBTScaleInfo = JSUConvertOffsetToPtr<J3DNBTScaleInfo>(&i_block, i_block.mpNBTScaleInfo);
}
/* 80332F84-80332FA8 32D8C4 0024+00 0/0 1/1 0/0 .text
* countUniqueMaterials__22J3DMaterialFactory_v21Fv */
u16 J3DMaterialFactory_v21::countUniqueMaterials() {
u16 i;
for (i = 0; i < mMaterialNum; i++) {
}
return i;
}
/* 80332FA8-80332FE0 32D8E8 0038+00 1/1 0/0 0/0 .text countTexGens__22J3DMaterialFactory_v21CFi */
u32 J3DMaterialFactory_v21::countTexGens(int i_idx) const {
u8 tex_gen_num_index = mpMaterialInitData[mpMaterialID[i_idx]].mTexGenNumIdx;
if (tex_gen_num_index != 0xff) {
return mpTexGenNum[tex_gen_num_index];
}
return 0;
}
/* 80332FE0-80333068 32D920 0088+00 1/1 0/0 0/0 .text countStages__22J3DMaterialFactory_v21CFi */
u32 J3DMaterialFactory_v21::countStages(int i_idx) const {
J3DMaterialInitData_v21* init_data = &mpMaterialInitData[mpMaterialID[i_idx]];
u32 count1 = 0;
u32 count2 = 0;
u8 tev_stage_num_index = init_data->mTevStageNumIdx;
if (tev_stage_num_index != 0xff) {
count2 = mpTevStageNum[tev_stage_num_index];
}
for (int i = 0; i < 8; i++) {
if (init_data->mTexNoIdx[i] != 0xffff) {
count1++;
}
}
if (count2 != count1 && count1 != 0) {
if (count2 > count1) {
return count2;
} else {
return count1;
}
}
return count2;
}
/* 80333068-803337D8 32D9A8 0770+00 0/0 2/2 0/0 .text
* create__22J3DMaterialFactory_v21CFP11J3DMaterialiUl */
J3DMaterial* J3DMaterialFactory_v21::create(J3DMaterial* param_0, int param_1, u32 param_2) const {
// NONMATCHING
}
/* 803337D8-80333834 32E118 005C+00 1/1 0/0 0/0 .text newMatColor__22J3DMaterialFactory_v21CFii */
J3DGXColor J3DMaterialFactory_v21::newMatColor(int i_idx, int i_no) const {
GXColor defaultColor = {0xff,0xff,0xff,0xff};
J3DGXColor defaultJ3DGXColor = J3DGXColor(defaultColor);
J3DMaterialInitData_v21* mtl_init_data = &mpMaterialInitData[mpMaterialID[i_idx]];
if (mtl_init_data->mMatColorIdx[i_no] != 0xffff) {
return J3DGXColor(mpMatColor[mtl_init_data->mMatColorIdx[i_no]]);
}
return J3DGXColor(defaultJ3DGXColor);
}
/* 80333834-8033386C 32E174 0038+00 1/1 0/0 0/0 .text newColorChanNum__22J3DMaterialFactory_v21CFi
*/
u8 J3DMaterialFactory_v21::newColorChanNum(int i_idx) const {
u8 color_chan_num_index = mpMaterialInitData[mpMaterialID[i_idx]].mColorChanNumIdx;
if (color_chan_num_index != 0xff) {
return mpColorChanNum[color_chan_num_index];
} else {
return 0;
}
}
/* 8033386C-80333A10 32E1AC 01A4+00 1/1 0/0 0/0 .text newColorChan__22J3DMaterialFactory_v21CFii
*/
// J3DColorChan ctor
#ifdef NONMATCHING
J3DColorChan J3DMaterialFactory_v21::newColorChan(int i_idx, int i_no) const {
J3DMaterialInitData_v21* mtl_init_data = &mpMaterialInitData[mpMaterialID[i_idx]];
if (mtl_init_data->mColorChanIdx[i_no] != 0xffff) {
return J3DColorChan(mpColorChanInfo[mtl_init_data->mColorChanIdx[i_no]]);
} else {
return J3DColorChan();
}
}
#else
J3DColorChan J3DMaterialFactory_v21::newColorChan(int param_0, int param_1) const {
// NONMATCHING
}
#endif
/* 80333A10-80333A48 32E350 0038+00 1/1 0/0 0/0 .text newTexGenNum__22J3DMaterialFactory_v21CFi */
u32 J3DMaterialFactory_v21::newTexGenNum(int i_idx) const {
u8 tex_gen_num_index = mpMaterialInitData[mpMaterialID[i_idx]].mTexGenNumIdx;
if (tex_gen_num_index != 0xff) {
return mpTexGenNum[tex_gen_num_index];
} else {
return 0;
}
}
/* 80333A48-80333AA8 32E388 0060+00 1/1 0/0 0/0 .text newTexCoord__22J3DMaterialFactory_v21CFii */
J3DTexCoord J3DMaterialFactory_v21::newTexCoord(int i_idx, int i_no) const {
u16 tex_coord_index = mpMaterialInitData[mpMaterialID[i_idx]].mTexCoordIdx[i_no];
if (tex_coord_index != 0xffff) {
return J3DTexCoord(mpTexCoordInfo[tex_coord_index]);
} else {
return J3DTexCoord();
}
}
/* 80333AA8-80333B30 32E3E8 0088+00 1/1 0/0 0/0 .text newTexMtx__22J3DMaterialFactory_v21CFii */
J3DTexMtx* J3DMaterialFactory_v21::newTexMtx(int i_idx, int i_no) const {
J3DTexMtx* tex_mtx = NULL;
J3DMaterialInitData_v21* mtl_init_data = &mpMaterialInitData[mpMaterialID[i_idx]];
if (mtl_init_data->mTexMtxIdx[i_no] != 0xffff) {
tex_mtx = new J3DTexMtx(mpTexMtxInfo[mtl_init_data->mTexMtxIdx[i_no]]);
}
return tex_mtx;
}
/* 80333B30-80333B70 32E470 0040+00 1/1 0/0 0/0 .text newCullMode__22J3DMaterialFactory_v21CFi */
u8 J3DMaterialFactory_v21::newCullMode(int i_idx) const {
u8 cull_mode_index = mpMaterialInitData[mpMaterialID[i_idx]].mCullModeIdx;
if (cull_mode_index != 0xff) {
return mpCullMode[cull_mode_index];
} else {
return 0xff;
}
}
/* 80333B70-80333BB8 32E4B0 0048+00 1/1 0/0 0/0 .text newTexNo__22J3DMaterialFactory_v21CFii */
u16 J3DMaterialFactory_v21::newTexNo(int i_idx, int i_no) const {
u16 tex_no_index = mpMaterialInitData[mpMaterialID[i_idx]].mTexNoIdx[i_no];
if (tex_no_index != 0xffff) {
return mpTexNo[tex_no_index];
} else {
return 0xffff;
}
}
/* 80333BB8-80333C04 32E4F8 004C+00 1/1 0/0 0/0 .text newTevOrder__22J3DMaterialFactory_v21CFii */
J3DTevOrder J3DMaterialFactory_v21::newTevOrder(int i_idx, int i_no) const {
J3DMaterialInitData_v21* mtl_init_data = &mpMaterialInitData[mpMaterialID[i_idx]];
if (mtl_init_data->mTevOrderIdx[i_no] != 0xffff) {
return J3DTevOrder(mpTevOrderInfo[mtl_init_data->mTevOrderIdx[i_no]]);
} else {
return J3DTevOrder();
}
}
/* 80333C04-80333C74 32E544 0070+00 1/1 0/0 0/0 .text newTevColor__22J3DMaterialFactory_v21CFii */
J3DGXColorS10 J3DMaterialFactory_v21::newTevColor(int i_idx, int i_no) const {
GXColorS10 defaultTevColor = {0,0,0,0};
J3DGXColorS10 dflt = defaultTevColor;
J3DMaterialInitData_v21* mtl_init_data = &mpMaterialInitData[mpMaterialID[i_idx]];
if (mtl_init_data->mTevColorIdx[i_no] != 0xffff) {
return mpTevColor[mtl_init_data->mTevColorIdx[i_no]];
} else {
return defaultTevColor;
}
}
/* 80333C74-80333CD0 32E5B4 005C+00 1/1 0/0 0/0 .text newTevKColor__22J3DMaterialFactory_v21CFii
*/
J3DGXColor J3DMaterialFactory_v21::newTevKColor(int i_idx, int param_1) const {
GXColor defaultColor = {0xff,0xff,0xff,0xff};
J3DGXColor defaultJ3DGXColor = J3DGXColor(defaultColor);
J3DMaterialInitData_v21* mtl_init_data = &mpMaterialInitData[mpMaterialID[i_idx]];
if (mtl_init_data->mTevKColorIdx[param_1] != 0xffff) {
return J3DGXColor(mpTevKColor[mtl_init_data->mTevKColorIdx[param_1]]);
}
return J3DGXColor(defaultJ3DGXColor);
}
/* 80333CD0-80333D08 32E610 0038+00 1/1 0/0 0/0 .text newTevStageNum__22J3DMaterialFactory_v21CFi
*/
u8 J3DMaterialFactory_v21::newTevStageNum(int i_idx) const {
u8 tev_stage_num_index = mpMaterialInitData[mpMaterialID[i_idx]].mTevStageNumIdx;
if (tev_stage_num_index != 0xff) {
return mpTevStageNum[tev_stage_num_index];
} else {
return 0xff;
}
}
/* 80333D08-80333D68 32E648 0060+00 1/1 0/0 0/0 .text newTevStage__22J3DMaterialFactory_v21CFii */
J3DTevStage J3DMaterialFactory_v21::newTevStage(int i_idx, int i_no) const {
u16 tev_stage_index = mpMaterialInitData[mpMaterialID[i_idx]].mTevStageIdx[i_no];
if (tev_stage_index != 0xffff) {
return J3DTevStage(mpTevStageInfo[tev_stage_index]);
} else {
return J3DTevStage();
}
}
/* 80333D68-80333E04 32E6A8 009C+00 1/1 0/0 0/0 .text
* newTevSwapModeTable__22J3DMaterialFactory_v21CFii */
J3DTevSwapModeTable J3DMaterialFactory_v21::newTevSwapModeTable(int i_idx, int param_1) const {
J3DMaterialInitData_v21* mtl_init_data = &mpMaterialInitData[mpMaterialID[i_idx]];
if (mtl_init_data->mTevSwapModeTableIdx[param_1] != 0xffff) {
return J3DTevSwapModeTable(mpTevSwapModeTableInfo[mtl_init_data->mTevSwapModeTableIdx[param_1]]);
}
return J3DTevSwapModeTable(j3dDefaultTevSwapModeTable);
}
/* 80333E04-80333EE0 32E744 00DC+00 1/1 0/0 0/0 .text newFog__22J3DMaterialFactory_v21CFi
*/
J3DFog J3DMaterialFactory_v21::newFog(int i_idx) const {
J3DFog fog;
u16 fog_index = mpMaterialInitData[mpMaterialID[i_idx]].mFogIdx;
if (fog_index != 0xffff) {
fog.setFogInfo(mpFogInfo[fog_index]);
}
return fog;
}
/* 80333EE0-80333F60 32E820 0080+00 1/1 0/0 0/0 .text newAlphaComp__22J3DMaterialFactory_v21CFi */
// calcAlphaCmpID issue
#ifdef NONMATCHING
J3DAlphaComp J3DMaterialFactory_v21::newAlphaComp(int i_idx) const {
J3DMaterialInitData_v21* mtl_init_data = &mpMaterialInitData[mpMaterialID[i_idx]];
if (mtl_init_data->mAlphaCompIdx != 0xffff) {
return J3DAlphaComp(mpAlphaCompInfo[mtl_init_data->mAlphaCompIdx]);
}
return J3DAlphaComp(0xffff);
}
#else
J3DAlphaComp J3DMaterialFactory_v21::newAlphaComp(int param_0) const {
// NONMATCHING
}
#endif
/* 80333F60-80333FA4 32E8A0 0044+00 1/1 0/0 0/0 .text newBlend__22J3DMaterialFactory_v21CFi */
J3DBlend J3DMaterialFactory_v21::newBlend(int i_idx) const {
J3DMaterialInitData_v21* mtl_init_data = &mpMaterialInitData[mpMaterialID[i_idx]];
if (mtl_init_data->mBlendIdx != 0xffff) {
return J3DBlend(mpBlendInfo[mtl_init_data->mBlendIdx]);
} else {
return J3DBlend(j3dDefaultBlendInfo);
}
}
/* 80333FA4-80334004 32E8E4 0060+00 1/1 0/0 0/0 .text newZMode__22J3DMaterialFactory_v21CFi */
J3DZMode J3DMaterialFactory_v21::newZMode(int i_idx) const {
J3DMaterialInitData_v21* mtl_init_data = &mpMaterialInitData[mpMaterialID[i_idx]];
if (mtl_init_data->mZModeIdx != 0xff) {
return J3DZMode(mpZModeInfo[mtl_init_data->mZModeIdx]);
} else {
return J3DZMode();
}
}
/* 80334004-8033403C 32E944 0038+00 1/1 0/0 0/0 .text newZCompLoc__22J3DMaterialFactory_v21CFi */
u8 J3DMaterialFactory_v21::newZCompLoc(int i_idx) const {
J3DMaterialInitData_v21* mtl_init_data = &mpMaterialInitData[mpMaterialID[i_idx]];
if (mtl_init_data->mZCompLocIdx != 0xff){
return mpZCompLoc[mtl_init_data->mZCompLocIdx];
} else {
return 0;
}
}
/* 8033403C-80334074 32E97C 0038+00 1/1 0/0 0/0 .text newDither__22J3DMaterialFactory_v21CFi */
u8 J3DMaterialFactory_v21::newDither(int i_idx) const {
J3DMaterialInitData_v21* mtl_init_data = &mpMaterialInitData[mpMaterialID[i_idx]];
if (mtl_init_data->mDitherIdx != 0xff){
return mpDither[mtl_init_data->mDitherIdx];
} else {
return 1;
}
}
/* 80334074-80334118 32E9B4 00A4+00 1/1 0/0 0/0 .text newNBTScale__22J3DMaterialFactory_v21CFi */
J3DNBTScale J3DMaterialFactory_v21::newNBTScale(int i_idx) const {
J3DNBTScale dflt(j3dDefaultNBTScaleInfo);
J3DMaterialInitData_v21* mtl_init_data = &mpMaterialInitData[mpMaterialID[i_idx]];
if (mtl_init_data->mNBTScaleIdx != 0xffff) {
return J3DNBTScale(mpNBTScaleInfo[mtl_init_data->mNBTScaleIdx]);
} else {
return dflt;
}
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,407 @@
//
// Generated By: dol2asm
// Translation Unit: J3DModelLoaderCalcSize
//
#include "JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.h"
#include "JSystem/J3DGraphLoader/J3DModelLoader.h"
#include "JSystem/J3DGraphLoader/J3DShapeFactory.h"
#include "JSystem/J3DGraphLoader/J3DMaterialFactory.h"
#include "JSystem/J3DGraphBase/J3DMaterial.h"
#include "JSystem/J3DGraphAnimator/J3DModelData.h"
#include "JSystem/JSupport/JSupport.h"
#include "dolphin/os.h"
#include "dol2asm.h"
//
// Forward References:
//
extern "C" void countMaterialNum__14J3DModelLoaderFPCv();
extern "C" void calcLoadSize__14J3DModelLoaderFPCvUl();
extern "C" void calcLoadMaterialTableSize__14J3DModelLoaderFPCv();
extern "C" void calcLoadBinaryDisplayListSize__14J3DModelLoaderFPCvUl();
extern "C" void calcSizeInformation__14J3DModelLoaderFPC17J3DModelInfoBlockUl();
extern "C" void calcSizeJoint__14J3DModelLoaderFPC13J3DJointBlock();
extern "C" void calcSizeEnvelope__14J3DModelLoaderFPC16J3DEnvelopeBlock();
extern "C" void calcSizeDraw__14J3DModelLoaderFPC12J3DDrawBlock();
extern "C" void calcSizeMaterial__18J3DModelLoader_v26FPC16J3DMaterialBlockUl();
extern "C" void calcSizeShape__14J3DModelLoaderFPC13J3DShapeBlockUl();
extern "C" void calcSizeTexture__14J3DModelLoaderFPC15J3DTextureBlock();
extern "C" void calcSizeMaterialTable__18J3DModelLoader_v26FPC16J3DMaterialBlockUl();
extern "C" void calcSizeTextureTable__14J3DModelLoaderFPC15J3DTextureBlock();
extern "C" void calcSizePatchedMaterial__14J3DModelLoaderFPC16J3DMaterialBlockUl();
extern "C" void calcSizeMaterialDL__14J3DModelLoaderFPC18J3DMaterialDLBlockUl();
extern "C" extern char const* const J3DModelLoaderCalcSize__stringBase0;
//
// External References:
//
extern "C" void __ct__18J3DMaterialFactoryFRC16J3DMaterialBlock();
extern "C" void __ct__18J3DMaterialFactoryFRC18J3DMaterialDLBlock();
extern "C" void countUniqueMaterials__18J3DMaterialFactoryFv();
extern "C" void
calcSize__18J3DMaterialFactoryCFP11J3DMaterialQ218J3DMaterialFactory12MaterialTypeiUl();
extern "C" void func_8033674C(void* _this, void const*, void const*);
extern "C" void __ct__15J3DShapeFactoryFRC13J3DShapeBlock();
extern "C" void calcSize__15J3DShapeFactoryFiUl();
extern "C" void calcSizeVcdVatCmdBuffer__15J3DShapeFactoryFUl();
extern "C" void _savegpr_22();
extern "C" void _savegpr_25();
extern "C" void _savegpr_27();
extern "C" void _savegpr_28();
extern "C" void _restgpr_22();
extern "C" void _restgpr_25();
extern "C" void _restgpr_27();
extern "C" void _restgpr_28();
//
// Declarations:
//
/* 80336794-803367D4 3310D4 0040+00 0/0 3/0 0/0 .text countMaterialNum__14J3DModelLoaderFPCv */
u16 J3DModelLoader::countMaterialNum(const void* stream) {
const J3DModelFileData* header = (const J3DModelFileData*)stream;
const J3DModelBlock* block = header->mBlocks;
for (int i = 0; i < header->mBlockNum; block = (const J3DModelBlock*)((u8*)block + block->mBlockSize), i++)
{
if (block->mBlockType == 'MAT3') {
return ((const J3DMaterialBlock*)block)->mMaterialNum;
}
}
return 0;
}
/* ############################################################################################## */
/* 803A20E8-803A20E8 02E748 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
#pragma push
#pragma force_active on
SECTION_DEAD static char const* const stringBase_803A20E8 = "Unknown data block\n";
/* @stringBase0 padding */
SECTION_DEAD static char const* const pad_803A20FC = "\0\0\0";
#pragma pop
/* 803367D4-803369A0 331114 01CC+00 0/0 3/0 0/0 .text calcLoadSize__14J3DModelLoaderFPCvUl */
// size load issue.
#ifdef NONMATCHING
u32 J3DModelLoader::calcLoadSize(void const* stream, u32 flags_) {
int flags = flags_;
const J3DModelFileData* header = static_cast<const J3DModelFileData*>(stream);
size_t size;
const J3DModelBlock* nextBlock = header->mBlocks;
u32 i = 0;
// TODO: What sizeof will get us a size of 0xE4?
size = 0xE4;
for (; i < header->mBlockNum; i++) {
switch (nextBlock->mBlockType) {
case 'INF1':
size += calcSizeInformation((const J3DModelInfoBlock*)nextBlock, flags);
break;
case 'JNT1':
size += calcSizeJoint((const J3DJointBlock*)nextBlock);
break;
case 'MAT2':
break;
case 'MAT3':
size += calcSizeMaterial((const J3DMaterialBlock*)nextBlock, flags);
break;
case 'SHP1':
size += calcSizeShape((const J3DShapeBlock*)nextBlock, flags);
break;
case 'TEX1':
size += calcSizeTexture((const J3DTextureBlock*)nextBlock);
break;
case 'EVP1':
size += calcSizeEnvelope((const J3DEnvelopeBlock*)nextBlock);
break;
case 'DRW1':
size += calcSizeDraw((const J3DDrawBlock*)nextBlock);
break;
case 'VTX1':
break;
default:
OSReport("Unknown data block\n");
break;
}
nextBlock = (const J3DModelBlock*)((u8*)nextBlock + nextBlock->mBlockSize);
}
return size;
}
#else
u32 J3DModelLoader::calcLoadSize(void const* param_0, u32 param_1) {
// NONMATCHING
}
#endif
/* 803369A0-80336A98 3312E0 00F8+00 0/0 3/0 0/0 .text
* calcLoadMaterialTableSize__14J3DModelLoaderFPCv */
u32 J3DModelLoader::calcLoadMaterialTableSize(const void* stream) {
size_t size;
const J3DModelBlock* nextBlock;
bool hasTextureTable;
u32 i;
const J3DModelFileData* header = reinterpret_cast<const J3DModelFileData*>(stream);
nextBlock = header->mBlocks;
hasTextureTable = false;
i = 0;
// TODO: What sizeof will get us a size of 0x20? Is this just the file header???
size = 0x20;
for (; i < header->mBlockNum; i++) {
switch (nextBlock->mBlockType) {
case 'MAT2':
break;
case 'MAT3':
size +=
calcSizeMaterialTable((const J3DMaterialBlock*)nextBlock,
J3DMLF_21 | J3DMLF_Material_UseIndirect |
J3DMLF_Material_PE_Full | J3DMLF_Material_Color_LightOn);
break;
case 'TEX1':
size += calcSizeTextureTable((const J3DTextureBlock*)nextBlock);
hasTextureTable = true;
break;
default:
OSReport("Unknown data block\n");
break;
}
nextBlock = (const J3DModelBlock*)((u8*)nextBlock + nextBlock->mBlockSize);
}
if (!hasTextureTable) {
size += 12;
}
return size;
}
/* 80336A98-80336CD8 3313D8 0240+00 0/0 3/0 0/0 .text
* calcLoadBinaryDisplayListSize__14J3DModelLoaderFPCvUl */
// flags issue
#ifdef NONMATCHING
u32 J3DModelLoader::calcLoadBinaryDisplayListSize(const void* stream, u32 flags) {
const J3DModelFileData* header = (const J3DModelFileData*)stream;
const J3DModelBlock* nextBlock = header->mBlocks;
u32 i = 0;
u32 matFlags = flags & (J3DMLF_Material_UseIndirect | J3DMLF_26);
int size = sizeof(J3DModelData);
for (; i < header->mBlockNum; i++) {
switch (nextBlock->mBlockType) {
case 'INF1':
size += calcSizeInformation((const J3DModelInfoBlock*)nextBlock, flags);
break;
case 'JNT1':
size += calcSizeJoint((const J3DJointBlock*)nextBlock);
break;
case 'SHP1':
size += calcSizeShape((const J3DShapeBlock*)nextBlock, flags);
break;
case 'TEX1':
size += calcSizeTexture((const J3DTextureBlock*)nextBlock);
break;
case 'MDL3':
size += calcSizeMaterialDL((const J3DMaterialDLBlock*)nextBlock, flags);
break;
case 'MAT2':
break;
case 'MAT3':
u32 flags2 = (J3DMLF_21 | J3DMLF_Material_PE_Full | J3DMLF_Material_Color_LightOn);
flags2 |= matFlags;
mpMaterialBlock = (const J3DMaterialBlock*)nextBlock;
if ((flags & (J3DMLF_13 | J3DMLF_DoBdlMaterialCalc)) == 0) {
field_0x18 = 1;
size += calcSizeMaterial((const J3DMaterialBlock*)nextBlock, flags2);
} else if ((flags & (J3DMLF_13 | J3DMLF_DoBdlMaterialCalc)) == J3DMLF_DoBdlMaterialCalc) {
field_0x18 = 1;
size += calcSizePatchedMaterial((const J3DMaterialBlock*)nextBlock, matFlags);
}
break;
case 'EVP1':
size += calcSizeEnvelope((const J3DEnvelopeBlock*)nextBlock);
break;
case 'DRW1':
size += calcSizeDraw((const J3DDrawBlock*)nextBlock);
break;
case 'VTX1':
break;
default:
OSReport("Unknown data block\n");
break;
}
nextBlock = (const J3DModelBlock*)((u8*)nextBlock + nextBlock->mBlockSize);
}
return size;
}
#else
u32 J3DModelLoader::calcLoadBinaryDisplayListSize(void const* param_0, u32 param_1) {
// NONMATCHING
}
#endif
/* 80336CD8-80336D64 331618 008C+00 2/2 0/0 0/0 .text
* calcSizeInformation__14J3DModelLoaderFPC17J3DModelInfoBlockUl */
u32 J3DModelLoader::calcSizeInformation(const J3DModelInfoBlock* block, u32 flags) {
int size = 0;
switch ((flags | block->mFlags) & J3DMLF_MtxTypeMask) {
case J3DMLF_None: // Basic
size = 4;
break;
case J3DMLF_MtxSoftImageCalc:
size = 4;
break;
case J3DMLF_MtxMayaCalc:
size = 4;
break;
default:
break;
}
mpModelHierarchy = JSUConvertOffsetToPtr<J3DModelHierarchy>(block, block->mpHierarchy);
return size;
}
/* 80336D64-80336D90 3316A4 002C+00 2/2 0/0 0/0 .text
* calcSizeJoint__14J3DModelLoaderFPC13J3DJointBlock */
u32 J3DModelLoader::calcSizeJoint(const J3DJointBlock* block) {
int size = 0;
if (block->mpNameTable) {
size = 0x10;
}
size += (block->mJointNum * sizeof(J3DJoint*));
size += (block->mJointNum * sizeof(J3DJoint));
return size;
}
/* 80336D90-80336DA0 3316D0 0010+00 2/2 0/0 0/0 .text
* calcSizeEnvelope__14J3DModelLoaderFPC16J3DEnvelopeBlock */
u32 J3DModelLoader::calcSizeEnvelope(const J3DEnvelopeBlock* block) {
mEnvelopeSize = block->mWEvlpMtxNum;
return 0;
}
/* 80336DA0-80336DB4 3316E0 0014+00 2/2 0/0 0/0 .text
* calcSizeDraw__14J3DModelLoaderFPC12J3DDrawBlock */
u32 J3DModelLoader::calcSizeDraw(const J3DDrawBlock* block) {
return (block->mMtxNum - mEnvelopeSize) * 2;
}
/* 80336DB4-80336EA0 3316F4 00EC+00 0/0 1/0 0/0 .text
* calcSizeMaterial__18J3DModelLoader_v26FPC16J3DMaterialBlockUl */
u32 J3DModelLoader_v26::calcSizeMaterial(const J3DMaterialBlock* block, u32 flags) {
int padding = 0;
J3DMaterialFactory factory(*block);
u32 count = block->mMaterialNum;
int uniqueCount = factory.countUniqueMaterials();
if (block->mpNameTable != NULL) {
padding = 0x10;
}
size_t size = padding + (count * sizeof(J3DMaterial*));
if ((flags & J3DMLF_UseUniqueMaterials) != 0) {
// calc for allocated materials as well
size += ALIGN_NEXT((u16)uniqueCount * sizeof(J3DMaterial), 0x20);
}
if ((flags & J3DMLF_UseUniqueMaterials) != 0) {
for (u32 i = 0; i < uniqueCount; i++) {
size += factory.calcSize(NULL, J3DMaterialFactory::MATERIAL_TYPE_NORMAL, i, flags);
}
}
for (u32 i = 0; i < count; i++) {
size += factory.calcSize(NULL, J3DMaterialFactory::MATERIAL_TYPE_NORMAL, i, flags);
}
return size;
}
/* 80336EA0-80336F44 3317E0 00A4+00 2/2 0/0 0/0 .text
* calcSizeShape__14J3DModelLoaderFPC13J3DShapeBlockUl */
u32 J3DModelLoader::calcSizeShape(const J3DShapeBlock* block, u32 flags) {
int size = 0;
J3DShapeFactory factory(*block);
int count = block->mShapeNum;
if (block->mpNameTable) {
size = 0x10;
}
size += count * sizeof(J3DShape*);
size += factory.calcSizeVcdVatCmdBuffer(count);
for (J3DModelHierarchy* hierarchy = mpModelHierarchy; hierarchy->mType != 0; hierarchy++) {
if (hierarchy->mType == 0x12) {
size += factory.calcSize(hierarchy->mValue, flags);
}
}
return size;
}
/* 80336F44-80336F60 331884 001C+00 3/3 0/0 0/0 .text
* calcSizeTexture__14J3DModelLoaderFPC15J3DTextureBlock */
u32 J3DModelLoader::calcSizeTexture(const J3DTextureBlock* block) {
// TODO: use sizeofs here.
int padding = 0;
if (block->mpNameTable) {
padding = 0x10;
}
return padding + 0xC;
}
/* 80336F60-80336FF0 3318A0 0090+00 0/0 1/0 0/0 .text
* calcSizeMaterialTable__18J3DModelLoader_v26FPC16J3DMaterialBlockUl */
u32 J3DModelLoader_v26::calcSizeMaterialTable(const J3DMaterialBlock* block, u32 flags) {
int size = 0;
u32 count = block->mMaterialNum;
J3DMaterialFactory factory(*block);
if (block->mpNameTable) {
size = 0x10;
}
size += (count * sizeof(J3DMaterial*));
for (u16 i = 0; i < count; i++) {
size += factory.calcSize(NULL, J3DMaterialFactory::MATERIAL_TYPE_NORMAL, i, flags);
}
return size;
}
/* 80336FF0-80337010 331930 0020+00 1/1 0/0 0/0 .text
* calcSizeTextureTable__14J3DModelLoaderFPC15J3DTextureBlock */
u32 J3DModelLoader::calcSizeTextureTable(const J3DTextureBlock* block) {
return calcSizeTexture(block);
}
/* 80337010-803370A0 331950 0090+00 1/1 0/0 0/0 .text
* calcSizePatchedMaterial__14J3DModelLoaderFPC16J3DMaterialBlockUl */
u32 J3DModelLoader::calcSizePatchedMaterial(const J3DMaterialBlock* block, u32 flags) {
int padding = 0;
u32 count = block->mMaterialNum;
J3DMaterialFactory factory(*block);
if (block->mpNameTable) {
padding = 0x10;
}
u32 size = padding + (count * sizeof(J3DMaterial*));
for (u16 i = 0; i < count; i++) {
size += factory.calcSize(NULL, J3DMaterialFactory::MATERIAL_TYPE_PATCHED, i, flags);
}
return size;
}
/* 803370A0-80337178 3319E0 00D8+00 1/1 0/0 0/0 .text
* calcSizeMaterialDL__14J3DModelLoaderFPC18J3DMaterialDLBlockUl */
u32 J3DModelLoader::calcSizeMaterialDL(const J3DMaterialDLBlock* block, u32 flags_) {
int flags = flags_;
size_t size = 0;
J3DMaterialFactory factory(*block);
;
if (!field_0x18) {
u32 count = block->mMaterialNum;
if (block->mpNameTable) {
size = 0x10;
}
size += count * sizeof(J3DLockedMaterial*);
for (u16 i = 0; i < count; i++) {
size += factory.calcSize(NULL, J3DMaterialFactory::MATERIAL_TYPE_LOCKED, i, flags);
}
} else {
u32 count = block->mMaterialNum;
for (u16 i = 0; i < count; i++) {
size += factory.calcSize((J3DMaterial*)this, J3DMaterialFactory::MATERIAL_TYPE_LOCKED, i, flags);
}
}
return size;
}
/* 803A20E8-803A20E8 02E748 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
@@ -0,0 +1,216 @@
//
// Generated By: dol2asm
// Translation Unit: J3DShapeFactory
//
#include "JSystem/J3DGraphLoader/J3DShapeFactory.h"
#include "JSystem/J3DGraphBase/J3DShape.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JSupport/JSupport.h"
#include "dolphin/os.h"
//
// Forward References:
//
//
// External References:
//
extern "C" J3DShapeInitData* func_80336764(const void*,
const void*); // JSUConvertOffsetToPtr<J3DShapeInitData>
extern "C" u16* func_8033677C(const void*, const void*); // JSUConvertOffsetToPtr<u16>
//
// Declarations:
//
/* 80337350-80337400 331C90 00B0+00 0/0 2/2 0/0 .text __ct__15J3DShapeFactoryFRC13J3DShapeBlock */
J3DShapeFactory::J3DShapeFactory(J3DShapeBlock const& block) {
//mShapeInitData = JSUConvertOffsetToPtr<J3DShapeInitData>(&block, (u32)block.mpShapeInitData);
mShapeInitData = func_80336764(&block, block.mpShapeInitData),
//mIndexTable = JSUConvertOffsetToPtr<u16>(&block, (u32)block.mpIndexTable);
mIndexTable = func_8033677C(&block, block.mpIndexTable),
mVtxDescList = JSUConvertOffsetToPtr<GXVtxDescList>(&block, (u32)block.mpVtxDescList),
//mMtxTable = JSUConvertOffsetToPtr<u16>(&block, (u32)block.mpMtxTable);
mMtxTable = func_8033677C(&block, block.mpMtxTable),
mDisplayListData = JSUConvertOffsetToPtr<u8>(&block, (u32)block.mpDisplayListData),
mMtxInitData = JSUConvertOffsetToPtr<J3DShapeMtxInitData>(&block, (u32)block.mpMtxInitData),
mDrawInitData = JSUConvertOffsetToPtr<J3DShapeDrawInitData>(&block, (u32)block.mpDrawInitData),
mVcdVatCmdBuffer = NULL;
}
/* 80337400-803375BC 331D40 01BC+00 0/0 1/1 0/0 .text
* create__15J3DShapeFactoryFiUlP14_GXVtxDescList */
J3DShape* J3DShapeFactory::create(int no, u32 flag, GXVtxDescList* vtxDesc) {
J3DShape* shape = new J3DShape;
shape->mMtxGroupNum = getMtxGroupNum(no);
shape->mRadius = getRadius(no);
shape->mVtxDesc = getVtxDescList(no);
shape->mShapeMtx = new J3DShapeMtx*[shape->mMtxGroupNum];
shape->mShapeDraw = new J3DShapeDraw*[shape->mMtxGroupNum];
shape->mMin = getMin(no);
shape->mMax = getMax(no);
shape->mVcdVatCmd = mVcdVatCmdBuffer + no * J3DShape::kVcdVatDLSize;
for (s32 i = 0; i < shape->mMtxGroupNum; i++) {
shape->mShapeMtx[i] = newShapeMtx(flag, no, i);
shape->mShapeDraw[i] = newShapeDraw(no, i);
}
shape->mIndex = no;
return shape;
}
static inline u32 getMdlDataFlag_MtxLoadType(u32 flag) {
return flag & 0x10;
}
enum {
J3DMdlDataFlag_ConcatView = 0x10,
};
enum {
J3DShapeMtxType_Mtx = 0x00,
J3DShapeMtxType_BBoard = 0x01,
J3DShapeMtxType_YBBoard = 0x02,
J3DShapeMtxType_Multi = 0x03,
};
/* 803375BC-8033784C 331EFC 0290+00 1/1 0/0 0/0 .text newShapeMtx__15J3DShapeFactoryCFUlii */
J3DShapeMtx* J3DShapeFactory::newShapeMtx(u32 flag, int shapeNo, int mtxGroupNo) const {
J3DShapeMtx* ret = NULL;
const J3DShapeInitData& shapeInitData = mShapeInitData[mIndexTable[shapeNo]];
const J3DShapeMtxInitData& mtxInitData =
(&mMtxInitData[shapeInitData.mMtxInitDataIndex])[mtxGroupNo];
switch (getMdlDataFlag_MtxLoadType(flag)) {
case J3DMdlDataFlag_ConcatView:
switch (shapeInitData.mShapeMtxType) {
case J3DShapeMtxType_Mtx:
ret = new J3DShapeMtxConcatView(mtxInitData.mUseMtxIndex);
break;
case J3DShapeMtxType_BBoard:
ret = new J3DShapeMtxBBoardConcatView(mtxInitData.mUseMtxIndex);
break;
case J3DShapeMtxType_YBBoard:
ret = new J3DShapeMtxYBBoardConcatView(mtxInitData.mUseMtxIndex);
break;
case J3DShapeMtxType_Multi:
ret = new J3DShapeMtxMultiConcatView(mtxInitData.mUseMtxIndex, mtxInitData.mUseMtxCount,
&mMtxTable[mtxInitData.mFirstUseMtxIndex]);
break;
default:
OSReport("WRONG SHAPE MATRIX TYPE (J3DModelInit.cpp)\n");
break;
}
break;
case 0:
default:
switch (shapeInitData.mShapeMtxType) {
case J3DShapeMtxType_Mtx:
case J3DShapeMtxType_BBoard:
case J3DShapeMtxType_YBBoard:
ret = new J3DShapeMtx(mtxInitData.mUseMtxIndex);
break;
case J3DShapeMtxType_Multi:
ret = new J3DShapeMtxMulti(mtxInitData.mUseMtxIndex, mtxInitData.mUseMtxCount,
&mMtxTable[mtxInitData.mFirstUseMtxIndex]);
break;
default:
OSReport("WRONG SHAPE MATRIX TYPE (J3DModelInit.cpp)\n");
break;
}
break;
}
return ret;
}
/* 8033784C-803378D8 33218C 008C+00 1/1 0/0 0/0 .text newShapeDraw__15J3DShapeFactoryCFii
*/
J3DShapeDraw* J3DShapeFactory::newShapeDraw(int shapeNo, int mtxGroupNo) const {
const J3DShapeInitData& shapeInitData = mShapeInitData[mIndexTable[shapeNo]];
const J3DShapeDrawInitData& drawInitData =
(&mDrawInitData[shapeInitData.mDrawInitDataIndex])[mtxGroupNo];
return new J3DShapeDraw(&mDisplayListData[drawInitData.mDisplayListIndex],
drawInitData.mDisplayListSize);
}
/* 803378D8-80337944 332218 006C+00 0/0 1/1 0/0 .text allocVcdVatCmdBuffer__15J3DShapeFactoryFUl
*/
void J3DShapeFactory::allocVcdVatCmdBuffer(u32 count) {
mVcdVatCmdBuffer = new (0x20) u8[J3DShape::kVcdVatDLSize * count];
for (u32 i = 0; i < (J3DShape::kVcdVatDLSize * count) / 4; i++)
((u32*)mVcdVatCmdBuffer)[i] = 0;
}
/* 80337944-803379D8 332284 0094+00 0/0 1/1 0/0 .text calcSize__15J3DShapeFactoryFiUl */
s32 J3DShapeFactory::calcSize(int shapeNo, u32 flag) {
s32 size = 0x68;
s32 mtxGroupNo = getMtxGroupNum(shapeNo);
size += mtxGroupNo * 4;
size += mtxGroupNo * 4;
for (u32 i = 0; i < mtxGroupNo; i++) {
s32 shapeMtxSize = calcSizeShapeMtx(flag, shapeNo, i);
size += shapeMtxSize;
size += 0x0C;
}
return size;
}
/* 803379D8-803379E8 332318 0010+00 0/0 1/1 0/0 .text
* calcSizeVcdVatCmdBuffer__15J3DShapeFactoryFUl */
s32 J3DShapeFactory::calcSizeVcdVatCmdBuffer(u32 count) {
return ALIGN_NEXT(count * J3DShape::kVcdVatDLSize, 0x20);
}
/* 803379E8-80337AE0 332328 00F8+00 1/1 0/0 0/0 .text calcSizeShapeMtx__15J3DShapeFactoryCFUlii */
s32 J3DShapeFactory::calcSizeShapeMtx(u32 flag, int shapeNo, int mtxGroupNo) const {
const J3DShapeInitData& shapeInitData = mShapeInitData[mIndexTable[shapeNo]];
u32 ret = 0;
u32 mtxLoadType = getMdlDataFlag_MtxLoadType(flag);
switch (mtxLoadType) {
case J3DMdlDataFlag_ConcatView:
switch (shapeInitData.mShapeMtxType) {
case J3DShapeMtxType_Mtx:
ret = 0x08;
break;
case J3DShapeMtxType_BBoard:
ret = 0x08;
break;
case J3DShapeMtxType_YBBoard:
ret = 0x08;
break;
case J3DShapeMtxType_Multi:
ret = 0x10;
break;
default:
OSReport("WRONG SHAPE MATRIX TYPE (J3DModelInit.cpp)\n");
}
break;
case 0:
default:
switch (shapeInitData.mShapeMtxType) {
case J3DShapeMtxType_Mtx:
case J3DShapeMtxType_BBoard:
case J3DShapeMtxType_YBBoard:
ret = 0x08;
break;
case J3DShapeMtxType_Multi:
ret = 0x10;
break;
default:
OSReport("WRONG SHAPE MATRIX TYPE (J3DModelInit.cpp)\n");
}
break;
}
return ret;
}