mirror of
https://github.com/zeldaret/tww.git
synced 2026-07-07 13:23:27 -04:00
Merge duplicate JSystem structs into a new header
This commit is contained in:
@@ -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<const J3DAnmDataBlockHeader*>(reinterpret_cast<const u8*>(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;
|
||||
|
||||
@@ -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<const JSystemBlockHeader*>(reinterpret_cast<const u8*>(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;
|
||||
|
||||
@@ -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<const J3DModelBlock*>(reinterpret_cast<const u8*>(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;
|
||||
|
||||
@@ -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<const JSystemBlockHeader*>(reinterpret_cast<const u8*>(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 */
|
||||
@@ -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) {
|
||||
|
||||
@@ -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':
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user