From 512cf5512fa27d956b4afed3987602c88fc42cc2 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Wed, 3 Jan 2024 21:30:38 -0500 Subject: [PATCH] Merge duplicate JSystem structs into a new header --- .../JSystem/J3DGraphAnimator/J3DAnimation.h | 46 ++++++------------- .../JSystem/J3DGraphLoader/J3DClusterLoader.h | 21 +-------- .../JSystem/J3DGraphLoader/J3DModelLoader.h | 38 ++++----------- include/JSystem/JFileHeader.h | 26 +++++++++++ src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp | 28 +++++------ .../J3DGraphLoader/J3DClusterLoader.cpp | 2 +- src/JSystem/J3DGraphLoader/J3DModelLoader.cpp | 40 ++++++++-------- .../J3DGraphLoader/J3DModelLoaderCalcSize.cpp | 24 +++++----- 8 files changed, 96 insertions(+), 129 deletions(-) create mode 100644 include/JSystem/JFileHeader.h diff --git a/include/JSystem/J3DGraphAnimator/J3DAnimation.h b/include/JSystem/J3DGraphAnimator/J3DAnimation.h index 8bea0b3d4..f61141b54 100644 --- a/include/JSystem/J3DGraphAnimator/J3DAnimation.h +++ b/include/JSystem/J3DGraphAnimator/J3DAnimation.h @@ -3,7 +3,7 @@ #include "JSystem/J3DGraphAnimator/J3DModelData.h" #include "JSystem/JUtility/JUTNameTab.h" -#include "global.h" +#include "JSystem/JFileHeader.h" typedef struct _GXColor GXColor; typedef struct _GXColorS10 GXColorS10; @@ -88,28 +88,8 @@ struct J3DAnmClusterKeyTable { /* 0x00 */ J3DAnmKeyTableBase mWeightTable; }; -// same as J3DModelBlock? -struct J3DAnmDataBlockHeader { // actual name unknown - /* 0x0 */ u32 mType; - /* 0x4 */ u32 mNextOffset; - - const J3DAnmDataBlockHeader* getNext() const { - return reinterpret_cast(reinterpret_cast(this) + mNextOffset); - } -}; // Size = 0x8 - -// same as J3DModelFileData? -struct J3DAnmDataHeader { // actual name unknown - /* 0x00 */ u32 mMagic; - /* 0x04 */ u32 mType; - /* 0x08 */ u8 _8[4]; - /* 0x0C */ u32 mCount; - /* 0x10 */ u8 _10[0x20 - 0x10]; - /* 0x20 */ J3DAnmDataBlockHeader mFirst; -}; - struct J3DAnmVtxColorFullData { - /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x00 */ JSystemBlockHeader mHeader; /* 0x08 */ u8 field_0x8; /* 0x09 */ u8 field_0x9; // padding? /* 0x0A */ s16 mFrameMax; @@ -128,7 +108,7 @@ struct J3DAnmVtxColorFullData { STATIC_ASSERT(sizeof(J3DAnmVtxColorFullData) == 0x40); struct J3DAnmVisibilityFullData { - /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x00 */ JSystemBlockHeader mHeader; /* 0x08 */ u8 field_0x8; /* 0x09 */ u8 field_0x9; // padding? /* 0x0A */ s16 mFrameMax; @@ -141,7 +121,7 @@ struct J3DAnmVisibilityFullData { STATIC_ASSERT(sizeof(J3DAnmVisibilityFullData) == 0x18); struct J3DAnmTransformFullData { - /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x00 */ JSystemBlockHeader mHeader; /* 0x08 */ u8 field_0x8; /* 0x09 */ u8 field_0x9; /* 0x0A */ s16 mFrameMax; @@ -156,7 +136,7 @@ struct J3DAnmTransformFullData { STATIC_ASSERT(sizeof(J3DAnmTransformFullData) == 0x24); struct J3DAnmColorKeyData { - /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x00 */ JSystemBlockHeader mHeader; /* 0x08 */ u8 field_0x8; /* 0x09 */ u8 field_0x9[3]; /* 0x0C */ s16 mFrameMax; @@ -177,7 +157,7 @@ struct J3DAnmColorKeyData { STATIC_ASSERT(sizeof(J3DAnmColorKeyData) == 0x34); struct J3DAnmTextureSRTKeyData { - /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x00 */ JSystemBlockHeader mHeader; /* 0x08 */ u8 field_0x8; /* 0x09 */ u8 field_0x9; /* 0x0A */ s16 field_0xa; @@ -211,7 +191,7 @@ struct J3DAnmTextureSRTKeyData { STATIC_ASSERT(sizeof(J3DAnmTextureSRTKeyData) == 0x60); struct J3DAnmVtxColorKeyData { - /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x00 */ JSystemBlockHeader mHeader; /* 0x08 */ u8 field_0x8; /* 0x09 */ u8 field_0x9; /* 0x0A */ s16 mFrameMax; @@ -229,7 +209,7 @@ struct J3DAnmVtxColorKeyData { STATIC_ASSERT(sizeof(J3DAnmVtxColorKeyData) == 0x40); struct J3DAnmTexPatternFullData { - /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x00 */ JSystemBlockHeader mHeader; /* 0x08 */ u8 field_0x8; /* 0x09 */ u8 field_0x9; /* 0x0A */ s16 mFrameMax; @@ -244,7 +224,7 @@ struct J3DAnmTexPatternFullData { STATIC_ASSERT(sizeof(J3DAnmTexPatternFullData) == 0x20); struct J3DAnmTevRegKeyData { - /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x00 */ JSystemBlockHeader mHeader; /* 0x08 */ u8 field_0x8; /* 0x09 */ u8 field_0x9; // maybe padding /* 0x0A */ s16 mFrameMax; @@ -277,7 +257,7 @@ struct J3DAnmTevRegKeyData { STATIC_ASSERT(sizeof(J3DAnmTevRegKeyData) == 0x58); struct J3DAnmColorFullData { /* PlaceHolder Structure */ - /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x00 */ JSystemBlockHeader mHeader; /* 0x08 */ u8 field_0x8; /* 0x09 */ u8 field_0x9[3]; /* 0x0C */ s16 mFrameMax; @@ -295,7 +275,7 @@ struct J3DAnmColorFullData { /* PlaceHolder Structure */ STATIC_ASSERT(sizeof(J3DAnmColorFullData) == 0x34); struct J3DAnmClusterFullData { - /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x00 */ JSystemBlockHeader mHeader; /* 0x08 */ u8 field_0x8; /* 0x0A */ s16 mFrameMax; /* 0x0C */ s32 field_0xc; @@ -304,7 +284,7 @@ struct J3DAnmClusterFullData { }; struct J3DAnmTransformKeyData { - /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x00 */ JSystemBlockHeader mHeader; /* 0x08 */ u8 field_0x8; /* 0x09 */ u8 field_0x9; /* 0x0A */ s16 mFrameMax; @@ -317,7 +297,7 @@ struct J3DAnmTransformKeyData { }; struct J3DAnmClusterKeyData { - /* 0x00 */ J3DAnmDataBlockHeader mHeader; + /* 0x00 */ JSystemBlockHeader mHeader; /* 0x08 */ u8 field_0x8; /* 0x0A */ s16 mFrameMax; /* 0x0C */ s32 field_0xc; diff --git a/include/JSystem/J3DGraphLoader/J3DClusterLoader.h b/include/JSystem/J3DGraphLoader/J3DClusterLoader.h index a55c3fff2..dc1be9e75 100644 --- a/include/JSystem/J3DGraphLoader/J3DClusterLoader.h +++ b/include/JSystem/J3DGraphLoader/J3DClusterLoader.h @@ -1,29 +1,10 @@ #ifndef J3DCLUSTERLOADER_H #define J3DCLUSTERLOADER_H -#include "global.h" +#include "JSystem/JFileHeader.h" class J3DDeformData; -// TODO: move these into a new header -struct JSystemBlockHeader { // actual name unknown - /* 0x0 */ u32 mType; - /* 0x4 */ u32 mNextOffset; - - const JSystemBlockHeader* getNext() const { - return reinterpret_cast(reinterpret_cast(this) + mNextOffset); - } -}; // Size = 0x8 - -struct JSystemFileHeader { // actual name unknown - /* 0x00 */ u32 mMagic; - /* 0x04 */ u32 mType; - /* 0x08 */ u32 mFileSize; - /* 0x0C */ u32 mBlockNum; - /* 0x10 */ u8 _10[0x20 - 0x10]; - /* 0x20 */ JSystemBlockHeader mFirst; -}; - class J3DClusterBlock : public JSystemBlockHeader { private: friend class J3DClusterLoader; diff --git a/include/JSystem/J3DGraphLoader/J3DModelLoader.h b/include/JSystem/J3DGraphLoader/J3DModelLoader.h index bc1fb8fd7..84d97544e 100644 --- a/include/JSystem/J3DGraphLoader/J3DModelLoader.h +++ b/include/JSystem/J3DGraphLoader/J3DModelLoader.h @@ -1,41 +1,21 @@ #ifndef J3DMODELLOADER_H #define J3DMODELLOADER_H -#include "dolphin/types.h" #include "JSystem/J3DGraphAnimator/J3DModelData.h" +#include "JSystem/JFileHeader.h" inline u32 getBdlFlag_MaterialType(u32 i_flags) { return i_flags & 0x3000; } -// Actual struct name unknown -struct J3DModelBlock { - /* 0x00 */ u32 mBlockType; - /* 0x04 */ u32 mBlockSize; - - // Fake inline - const J3DModelBlock* getNext() const { - return reinterpret_cast(reinterpret_cast(this) + mBlockSize); - } -}; - -struct J3DModelFileData { - /* 0x00 */ u32 mMagic1; - /* 0x04 */ u32 mMagic2; - /* 0x08 */ u8 field_0x08[4]; - /* 0x0C */ u32 mBlockNum; - /* 0x10 */ u8 field_0x10[0x10]; - /* 0x20 */ J3DModelBlock mBlocks[1]; -}; - -struct J3DModelInfoBlock : public J3DModelBlock { +struct J3DModelInfoBlock : public JSystemBlockHeader { /* 0x08 */ u16 mFlags; /* 0x0C */ u32 mPacketNum; /* 0x10 */ u32 mVtxNum; /* 0x14 */ void* mpHierarchy; }; // Size: 0x18 -struct J3DVertexBlock : public J3DModelBlock { +struct J3DVertexBlock : public JSystemBlockHeader { /* 0x08 */ void* mpVtxAttrFmtList; /* 0x0C */ void* mpVtxPosArray; /* 0x10 */ void* mpVtxNrmArray; @@ -44,7 +24,7 @@ struct J3DVertexBlock : public J3DModelBlock { /* 0x20 */ void* mpVtxTexCoordArray[8]; }; // Size: 0x40 -struct J3DEnvelopBlock : public J3DModelBlock { +struct J3DEnvelopBlock : public JSystemBlockHeader { /* 0x08 */ u16 mWEvlpMtxNum; /* 0x0C */ void* mpWEvlpMixMtxNum; /* 0x10 */ void* mpWEvlpMixMtxIndex; @@ -52,7 +32,7 @@ struct J3DEnvelopBlock : public J3DModelBlock { /* 0x18 */ void* mpInvJointMtx; }; // Size: 0x1C -struct J3DDrawBlock : public J3DModelBlock { +struct J3DDrawBlock : public JSystemBlockHeader { /* 0x08 */ u16 mMtxNum; /* 0x0C */ void* mpDrawMtxFlag; /* 0x10 */ void* mpDrawMtxIndex; @@ -60,7 +40,7 @@ struct J3DDrawBlock : public J3DModelBlock { struct J3DJointBlock; -struct J3DMaterialBlock : public J3DModelBlock { +struct J3DMaterialBlock : public JSystemBlockHeader { /* 0x08 */ u16 mMaterialNum; /* 0x0C */ void* mpMaterialInitData; /* 0x10 */ void* mpMaterialID; @@ -94,7 +74,7 @@ struct J3DMaterialBlock : public J3DModelBlock { /* 0x80 */ void* mpNBTScaleInfo; }; -struct J3DMaterialBlock_v21 : public J3DModelBlock { +struct J3DMaterialBlock_v21 : public JSystemBlockHeader { /* 0x08 */ u16 mMaterialNum; /* 0x0C */ void* field_0x0c; /* 0x10 */ void* field_0x10; @@ -102,7 +82,7 @@ struct J3DMaterialBlock_v21 : public J3DModelBlock { /* more */ }; -struct J3DMaterialDLBlock : public J3DModelBlock { +struct J3DMaterialDLBlock : public JSystemBlockHeader { /* 0x08 */ u16 mMaterialNum; /* 0x0C */ void* mpDisplayListInit; /* 0x10 */ void* mpPatchingInfo; @@ -115,7 +95,7 @@ struct J3DMaterialDLBlock : public J3DModelBlock { struct J3DShapeBlock; -struct J3DTextureBlock : public J3DModelBlock { +struct J3DTextureBlock : public JSystemBlockHeader { /* 0x08 */ u16 mTextureNum; /* 0x0C */ void* mpTextureRes; /* 0x10 */ void* mpNameTable; diff --git a/include/JSystem/JFileHeader.h b/include/JSystem/JFileHeader.h new file mode 100644 index 000000000..890512bf5 --- /dev/null +++ b/include/JSystem/JFileHeader.h @@ -0,0 +1,26 @@ +#ifndef JFILEHEADER_H +#define JFILEHEADER_H + +// Note: The name of this header is fake. + +#include "global.h" + +struct JSystemBlockHeader { // actual struct name unknown + /* 0x0 */ u32 mType; + /* 0x4 */ u32 mNextOffset; + + const JSystemBlockHeader* getNext() const { // fake inline + return reinterpret_cast(reinterpret_cast(this) + mNextOffset); + } +}; // Size = 0x8 + +struct JSystemFileHeader { // actual struct name unknown + /* 0x00 */ u32 mMagic; + /* 0x04 */ u32 mType; + /* 0x08 */ u32 mFileSize; + /* 0x0C */ u32 mBlockNum; + /* 0x10 */ u8 _10[0x20 - 0x10]; + /* 0x20 */ JSystemBlockHeader mFirstBlock; +}; + +#endif /* JFILEHEADER_H */ diff --git a/src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp b/src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp index 85a388f6f..b1c89beda 100644 --- a/src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp +++ b/src/JSystem/J3DGraphLoader/J3DAnmLoader.cpp @@ -13,7 +13,7 @@ J3DAnmBase* J3DAnmLoaderDataBase::load(const void* i_data) { if (!i_data) { return NULL; } - const J3DAnmDataHeader* header = (const J3DAnmDataHeader*)i_data; + const JSystemFileHeader* header = (const JSystemFileHeader*)i_data; if (header->mMagic == 'J3D1') { switch (header->mType) { case 'bck1': { @@ -86,7 +86,7 @@ J3DAnmBase* J3DAnmLoaderDataBase::load(const void* i_data) { /* 802FF6C8-802FF9EC .text setResource__20J3DAnmLoaderDataBaseFP10J3DAnmBasePCv */ void J3DAnmLoaderDataBase::setResource(J3DAnmBase* param_1, const void* param_2) { - const J3DAnmDataHeader* header = (const J3DAnmDataHeader*)param_2; + const JSystemFileHeader* header = (const JSystemFileHeader*)param_2; if (!header) { return; } @@ -177,9 +177,9 @@ J3DAnmKeyLoader_v15::~J3DAnmKeyLoader_v15() {} /* 802FFADC-802FFC28 .text load__20J3DAnmFullLoader_v15FPCv */ J3DAnmBase* J3DAnmFullLoader_v15::load(const void* param_1) { - const J3DAnmDataHeader* header = (const J3DAnmDataHeader*)param_1; - const J3DAnmDataBlockHeader* block = &header->mFirst; - for (int i = 0; i < header->mCount; i++) { + const JSystemFileHeader* header = (const JSystemFileHeader*)param_1; + const JSystemBlockHeader* block = &header->mFirstBlock; + for (int i = 0; i < header->mBlockNum; i++) { switch (block->mType) { case 'ANF1': readAnmTransform((J3DAnmTransformFullData*)block); @@ -210,9 +210,9 @@ J3DAnmBase* J3DAnmFullLoader_v15::load(const void* param_1) { /* 802FFC28-802FFDD4 .text setResource__20J3DAnmFullLoader_v15FP10J3DAnmBasePCv */ void J3DAnmFullLoader_v15::setResource(J3DAnmBase* param_1, const void* param_2) { - const J3DAnmDataHeader* header = (const J3DAnmDataHeader*)param_2; - const J3DAnmDataBlockHeader* block = &header->mFirst; - for (int i = 0; i < header->mCount; i++) { + const JSystemFileHeader* header = (const JSystemFileHeader*)param_2; + const JSystemBlockHeader* block = &header->mFirstBlock; + for (int i = 0; i < header->mBlockNum; i++) { switch (block->mType) { case 'ANF1': if (param_1->getKind() == 0) { @@ -369,9 +369,9 @@ void J3DAnmFullLoader_v15::setAnmVtxColor(J3DAnmVtxColorFull* dst, const J3DAnmV /* 80300318-80300464 .text load__19J3DAnmKeyLoader_v15FPCv */ J3DAnmBase* J3DAnmKeyLoader_v15::load(const void* param_1) { - const J3DAnmDataHeader* header = (const J3DAnmDataHeader*)param_1; - const J3DAnmDataBlockHeader* block = &header->mFirst; - for (int i = 0; i < header->mCount; i++) { + const JSystemFileHeader* header = (const JSystemFileHeader*)param_1; + const JSystemBlockHeader* block = &header->mFirstBlock; + for (int i = 0; i < header->mBlockNum; i++) { switch (block->mType) { case 'ANK1': readAnmTransform((J3DAnmTransformKeyData*)block); @@ -402,9 +402,9 @@ J3DAnmBase* J3DAnmKeyLoader_v15::load(const void* param_1) { /* 80300464-80300610 .text setResource__19J3DAnmKeyLoader_v15FP10J3DAnmBasePCv */ void J3DAnmKeyLoader_v15::setResource(J3DAnmBase* param_1, const void* param_2) { - const J3DAnmDataHeader* header = (const J3DAnmDataHeader*)param_2; - const J3DAnmDataBlockHeader* block = &header->mFirst; - for (int i = 0; i < header->mCount; i++) { + const JSystemFileHeader* header = (const JSystemFileHeader*)param_2; + const JSystemBlockHeader* block = &header->mFirstBlock; + for (int i = 0; i < header->mBlockNum; i++) { switch (block->mType) { case 'ANK1': if (param_1->getKind() == 0) { diff --git a/src/JSystem/J3DGraphLoader/J3DClusterLoader.cpp b/src/JSystem/J3DGraphLoader/J3DClusterLoader.cpp index f79a6c4f0..ad0fb19d4 100644 --- a/src/JSystem/J3DGraphLoader/J3DClusterLoader.cpp +++ b/src/JSystem/J3DGraphLoader/J3DClusterLoader.cpp @@ -33,7 +33,7 @@ void* J3DClusterLoader_v15::load(const void* i_data) { mpDeformData->clear(); const JSystemFileHeader* fileHeader = (JSystemFileHeader*)i_data; - const JSystemBlockHeader* block = &fileHeader->mFirst; + const JSystemBlockHeader* block = &fileHeader->mFirstBlock; for (int i = 0; i < fileHeader->mBlockNum; i++) { switch (block->mType) { case 'CLS1': diff --git a/src/JSystem/J3DGraphLoader/J3DModelLoader.cpp b/src/JSystem/J3DGraphLoader/J3DModelLoader.cpp index 63e95ac63..4d9defe9b 100644 --- a/src/JSystem/J3DGraphLoader/J3DModelLoader.cpp +++ b/src/JSystem/J3DGraphLoader/J3DModelLoader.cpp @@ -18,15 +18,15 @@ J3DModelData* J3DModelLoaderDataBase::load(const void* i_data, u32 i_flags) { if (i_data == NULL) { return NULL; } - const J3DModelFileData* fileHeader = (const J3DModelFileData*)i_data; - if (fileHeader->mMagic1 == 'J3D1' && fileHeader->mMagic2 == 'bmd1') { + const JSystemFileHeader* fileHeader = (const JSystemFileHeader*)i_data; + if (fileHeader->mMagic == 'J3D1' && fileHeader->mType == 'bmd1') { return NULL; } - if (fileHeader->mMagic1 == 'J3D2' && fileHeader->mMagic2 == 'bmd2') { + if (fileHeader->mMagic == 'J3D2' && fileHeader->mType == 'bmd2') { J3DModelLoader_v21 loader; return loader.load(i_data, i_flags); } - if (fileHeader->mMagic1 == 'J3D2' && fileHeader->mMagic2 == 'bmd3') { + if (fileHeader->mMagic == 'J3D2' && fileHeader->mType == 'bmd3') { J3DModelLoader_v26 loader; return loader.load(i_data, i_flags); } @@ -38,8 +38,8 @@ J3DMaterialTable* J3DModelLoaderDataBase::loadMaterialTable(const void* i_data) if (!i_data) { return NULL; } - const J3DModelFileData* fileHeader = (const J3DModelFileData*)i_data; - if (fileHeader->mMagic1 == 'J3D2' && fileHeader->mMagic2 == 'bmt3') { + const JSystemFileHeader* fileHeader = (const JSystemFileHeader*)i_data; + if (fileHeader->mMagic == 'J3D2' && fileHeader->mType == 'bmt3') { J3DModelLoader_v26 loader; return loader.loadMaterialTable(i_data); } @@ -51,8 +51,8 @@ J3DModelData* J3DModelLoaderDataBase::loadBinaryDisplayList(const void* i_data, if (!i_data) { return NULL; } - const J3DModelFileData* fileHeader = (const J3DModelFileData*)i_data; - if (fileHeader->mMagic1 == 'J3D2' && (fileHeader->mMagic2 == 'bdl3' || fileHeader->mMagic2 == 'bdl4')) { + const JSystemFileHeader* fileHeader = (const JSystemFileHeader*)i_data; + if (fileHeader->mMagic == 'J3D2' && (fileHeader->mType == 'bdl3' || fileHeader->mType == 'bdl4')) { J3DModelLoader_v26 loader; return loader.loadBinaryDisplayList(i_data, i_flags); } @@ -67,10 +67,10 @@ J3DModelData* J3DModelLoader::load(const void* i_data, u32 i_flags) { mpModelData->mpRawData = i_data; mpModelData->setModelDataType(0); mpMaterialTable = &mpModelData->mMaterialTable; - const J3DModelFileData* data = (J3DModelFileData*)i_data; - const J3DModelBlock* block = data->mBlocks; + const JSystemFileHeader* data = (JSystemFileHeader*)i_data; + const JSystemBlockHeader* block = &data->mFirstBlock; for (u32 block_no = 0; block_no < data->mBlockNum; block_no++) { - switch (block->mBlockType) { + switch (block->mType) { case 'INF1': readInformation((J3DModelInfoBlock*)block, (u32)i_flags); // cast fixes regalloc break; @@ -120,10 +120,10 @@ J3DModelData* J3DModelLoader::load(const void* i_data, u32 i_flags) { J3DMaterialTable* J3DModelLoader::loadMaterialTable(const void* i_data) { mpMaterialTable = new J3DMaterialTable(); mpMaterialTable->clear(); - const J3DModelFileData* data = (J3DModelFileData*)i_data; - const J3DModelBlock* block = data->mBlocks; + const JSystemFileHeader* data = (JSystemFileHeader*)i_data; + const JSystemBlockHeader* block = &data->mFirstBlock; for (u32 block_no = 0; block_no < data->mBlockNum; block_no++) { - switch (block->mBlockType) { + switch (block->mType) { case 'MAT3': readMaterialTable((J3DMaterialBlock*)block, 0x51100000); break; @@ -152,10 +152,10 @@ J3DModelData* J3DModelLoader::loadBinaryDisplayList(const void* i_data, u32 i_fl mpModelData->mpRawData = i_data; mpModelData->setModelDataType(1); mpMaterialTable = &mpModelData->mMaterialTable; - const J3DModelFileData* data = (J3DModelFileData*)i_data; - const J3DModelBlock* block = data->mBlocks; + const JSystemFileHeader* data = (JSystemFileHeader*)i_data; + const JSystemBlockHeader* block = &data->mFirstBlock; for (u32 block_no = 0; block_no < data->mBlockNum; block_no++) { - switch (block->mBlockType) { + switch (block->mType) { case 'INF1': readInformation((J3DModelInfoBlock*)block, (u32)i_flags); // cast fixes regalloc break; @@ -309,7 +309,7 @@ void J3DModelLoader::readVertex(const J3DVertexBlock* i_block) { } else if (nrm_end != NULL) { vertex_data.mNrmNum = ((u32)nrm_end - (u32)vertex_data.mVtxNrmArray) / nrm_size + 1; } else { - vertex_data.mNrmNum = (i_block->mBlockSize - (u32)i_block->mpVtxNrmArray) / nrm_size + 1; + vertex_data.mNrmNum = (i_block->mNextOffset - (u32)i_block->mpVtxNrmArray) / nrm_size + 1; } void* color0_end = NULL; @@ -324,13 +324,13 @@ void J3DModelLoader::readVertex(const J3DVertexBlock* i_block) { } else if (color0_end != NULL) { vertex_data.mColNum = ((u32)color0_end - (u32)vertex_data.mVtxColorArray[0]) / 4 + 1; } else { - vertex_data.mColNum = (i_block->mBlockSize - (u32)i_block->mpVtxColorArray[0]) / 4 + 1; + vertex_data.mColNum = (i_block->mNextOffset - (u32)i_block->mpVtxColorArray[0]) / 4 + 1; } if (vertex_data.mVtxTexCoordArray[0] == NULL) { vertex_data.mTexCoordNum = 0; } else { - vertex_data.mTexCoordNum = (i_block->mBlockSize - (u32)i_block->mpVtxTexCoordArray[0]) / 8 + 1; + vertex_data.mTexCoordNum = (i_block->mNextOffset - (u32)i_block->mpVtxTexCoordArray[0]) / 8 + 1; } } diff --git a/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp b/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp index d33aef101..5b3004620 100644 --- a/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp +++ b/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp @@ -13,10 +13,10 @@ /* 802FD828-802FD868 .text countMaterialNum__14J3DModelLoaderFPCv */ u16 J3DModelLoader::countMaterialNum(const void* i_data) { - const J3DModelFileData* header = (const J3DModelFileData*)i_data; - const J3DModelBlock* block = &header->mBlocks[0]; + const JSystemFileHeader* header = (const JSystemFileHeader*)i_data; + const JSystemBlockHeader* block = &header->mFirstBlock; for (int i = 0; i < header->mBlockNum; block = block->getNext(), i++) { - if (block->mBlockType == 'MAT3') { + if (block->mType == 'MAT3') { return ((const J3DMaterialBlock*)block)->mMaterialNum; } } @@ -27,13 +27,13 @@ u16 J3DModelLoader::countMaterialNum(const void* i_data) { u32 J3DModelLoader::calcLoadSize(const void* i_data, u32 i_flags) { u32 flags; u32 size = 0; - const J3DModelFileData* header = (const J3DModelFileData*)i_data; - const J3DModelBlock* block = &header->mBlocks[0]; + const JSystemFileHeader* header = (const JSystemFileHeader*)i_data; + const JSystemBlockHeader* block = &header->mFirstBlock; u32 i = 0; flags = (u32)i_flags; size += sizeof(J3DModelData); for (; i < header->mBlockNum; i++) { - switch (block->mBlockType) { + switch (block->mType) { case 'INF1': size += calcSizeInformation((J3DModelInfoBlock*)block, flags); break; @@ -69,13 +69,13 @@ u32 J3DModelLoader::calcLoadSize(const void* i_data, u32 i_flags) { /* 802FDA10-802FDB0C .text calcLoadMaterialTableSize__14J3DModelLoaderFPCv */ u32 J3DModelLoader::calcLoadMaterialTableSize(const void* i_data) { u32 size = 0; - const J3DModelFileData* header = (const J3DModelFileData*)i_data; - const J3DModelBlock* block = &header->mBlocks[0]; + const JSystemFileHeader* header = (const JSystemFileHeader*)i_data; + const JSystemBlockHeader* block = &header->mFirstBlock; bool hasTextureTable = false; u32 i = 0; size += sizeof(J3DMaterialTable); for (; i < header->mBlockNum; i++) { - switch (block->mBlockType) { + switch (block->mType) { case 'MAT2': break; case 'MAT3': @@ -103,12 +103,12 @@ u32 J3DModelLoader::calcLoadBinaryDisplayListSize(const void* i_data, u32 i_flag /* Nonmatching - regalloc */ u32 i; u32 size = 0; - const J3DModelFileData* header = (const J3DModelFileData*)i_data; - const J3DModelBlock* block = &header->mBlocks[0]; + const JSystemFileHeader* header = (const JSystemFileHeader*)i_data; + const JSystemBlockHeader* block = &header->mFirstBlock; i = 0; size += sizeof(J3DModelData); for (; i < header->mBlockNum; i++) { - switch (block->mBlockType) { + switch (block->mType) { case 'INF1': size += calcSizeInformation((const J3DModelInfoBlock*)block, i_flags); break;