mirror of
https://github.com/zeldaret/tp
synced 2026-08-22 06:44:53 -04:00
Fix some JSUConvertOffsetToPtr issues (#2063)
* Fix some JSUConvertOffsetToPtr issues * Match some J3DAnmLoader functions
This commit is contained in:
@@ -591,10 +591,10 @@ void J3DAnmFullLoader_v15::setAnmColor(J3DAnmColorFull* param_1,
|
||||
param_1->mUpdateMaterialNum = param_2->mUpdateMaterialNum;
|
||||
param_1->mAnmTable =
|
||||
JSUConvertOffsetToPtr<J3DAnmColorFullTable>(param_2, (void*)param_2->mTableOffset);
|
||||
param_1->mColorR = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mRValuesOffset);
|
||||
param_1->mColorG = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mGValuesOffset);
|
||||
param_1->mColorB = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mBValuesOffset);
|
||||
param_1->mColorA = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mAValuesOffset);
|
||||
param_1->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(
|
||||
@@ -668,7 +668,7 @@ void J3DAnmFullLoader_v15::setAnmVisibility(J3DAnmVisibilityFull* param_1,
|
||||
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, (void*)param_2->mValuesOffset);
|
||||
param_1->mVisibility = JSUConvertOffsetToPtr<u8>(param_2, param_2->mValuesOffset);
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
@@ -750,10 +750,10 @@ void J3DAnmFullLoader_v15::setAnmVtxColor(J3DAnmVtxColorFull* dst,
|
||||
dst->mAnmVtxColorIndexData[1][i].mpData =
|
||||
(void*)((s32)indexPtr1 + (s32)dst->mAnmVtxColorIndexData[1][i].mpData * 2);
|
||||
|
||||
dst->mColorR = JSUConvertOffsetToPtr<u8>(data, (void*)data->mRValuesOffset);
|
||||
dst->mColorG = JSUConvertOffsetToPtr<u8>(data, (void*)data->mGValuesOffset);
|
||||
dst->mColorB = JSUConvertOffsetToPtr<u8>(data, (void*)data->mBValuesOffset);
|
||||
dst->mColorA = JSUConvertOffsetToPtr<u8>(data, (void*)data->mAValuesOffset);
|
||||
dst->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);
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
@@ -909,7 +909,7 @@ void J3DAnmKeyLoader_v15::setAnmTextureSRT(J3DAnmTextureSRTKey* param_1,
|
||||
param_1->mUpdateMaterialName.setResource(
|
||||
JSUConvertOffsetToPtr<ResNTAB>(param_2, (void*)param_2->mNameTab1Offset));
|
||||
param_1->mUpdateTexMtxID =
|
||||
JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->mUpdateTexMtxIDOffset);
|
||||
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);
|
||||
@@ -926,7 +926,7 @@ void J3DAnmKeyLoader_v15::setAnmTextureSRT(J3DAnmTextureSRTKey* param_1,
|
||||
JSUConvertOffsetToPtr<J3DAnmTransformKeyTable>(param_2, (void*)param_2->mInfoTable2Offset);
|
||||
param_1->mPostUpdateMaterialID =
|
||||
JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->field_0x40);
|
||||
param_1->mPostUpdateTexMtxID = JSUConvertOffsetToPtr<u8>(param_2, (void*)param_2->field_0x48);
|
||||
param_1->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);
|
||||
|
||||
@@ -4,50 +4,14 @@
|
||||
//
|
||||
|
||||
#include "JSystem/J3DGraphLoader/J3DClusterLoader.h"
|
||||
#include "JSystem/J3DGraphAnimator/J3DAnimation.h"
|
||||
#include "JSystem/J3DGraphAnimator/J3DCluster.h"
|
||||
#include "JSystem/J3DGraphAnimator/J3DSkinDeform.h"
|
||||
#include "JSystem/JSupport/JSupport.h"
|
||||
#include "JSystem/JUtility/JUTNameTab.h"
|
||||
#include "JSystem/JKernel/JKRHeap.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/os.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
class J3DClusterBlock : public JUTDataBlockHeader {
|
||||
public:
|
||||
/* 0x08 */ u16 mClusterNum;
|
||||
/* 0x0A */ u16 mClusterKeyNum;
|
||||
/* 0x0C */ u16 mClusterVertexNum;
|
||||
/* 0x0E */ u16 mVtxPosNum;
|
||||
/* 0x10 */ u16 mVtxNrmNum;
|
||||
/* 0x14 */ void* mClusterPointer;
|
||||
/* 0x18 */ void* mClusterKeyPointer;
|
||||
/* 0x1C */ void* mClusterVertex;
|
||||
/* 0x20 */ void* mVtxPos;
|
||||
/* 0x24 */ void* mVtxNrm;
|
||||
/* 0x28 */ void* mClusterName;
|
||||
/* 0x2C */ void* mClusterKeyName;
|
||||
};
|
||||
|
||||
class J3DClusterLoader {
|
||||
public:
|
||||
virtual void* load(const void*) = 0;
|
||||
/* 803345FC */ virtual ~J3DClusterLoader();
|
||||
};
|
||||
|
||||
class J3DClusterLoader_v15 : public J3DClusterLoader {
|
||||
public:
|
||||
/* 803341CC */ J3DClusterLoader_v15();
|
||||
/* 803342F8 */ void readCluster(J3DClusterBlock const*);
|
||||
|
||||
/* 80334244 */ virtual void* load(void const*);
|
||||
/* 803341E8 */ virtual ~J3DClusterLoader_v15();
|
||||
|
||||
/* 0x04 */ J3DDeformData* mpDeformData;
|
||||
};
|
||||
#include "string.h"
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
@@ -68,7 +32,6 @@ extern "C" extern char const* const J3DClusterLoader__stringBase0;
|
||||
// External References:
|
||||
//
|
||||
|
||||
SECTION_INIT void memcpy();
|
||||
extern "C" void* __nw__FUl();
|
||||
extern "C" void* __nwa__FUl();
|
||||
extern "C" void* __nwa__FUli();
|
||||
@@ -118,47 +81,12 @@ SECTION_DATA extern void* __vt__16J3DClusterLoader[4] = {
|
||||
};
|
||||
|
||||
/* 803341CC-803341E8 32EB0C 001C+00 1/1 0/0 0/0 .text __ct__20J3DClusterLoader_v15Fv */
|
||||
// matches with weak order
|
||||
#ifdef NONMATCHING
|
||||
J3DClusterLoader_v15::J3DClusterLoader_v15() {}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm J3DClusterLoader_v15::J3DClusterLoader_v15() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphLoader/J3DClusterLoader/__ct__20J3DClusterLoader_v15Fv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 803341E8-80334244 32EB28 005C+00 2/1 0/0 0/0 .text __dt__20J3DClusterLoader_v15Fv */
|
||||
// matches with weak order
|
||||
#ifdef NONMATCHING
|
||||
J3DClusterLoader_v15::~J3DClusterLoader_v15() {}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm J3DClusterLoader_v15::~J3DClusterLoader_v15() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphLoader/J3DClusterLoader/__dt__20J3DClusterLoader_v15Fv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803A2098-803A2098 02E6F8 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DEAD static char const* const stringBase_803A2098 = "Unknown data block\n";
|
||||
/* @stringBase0 padding */
|
||||
SECTION_DEAD static char const* const pad_803A20AC = "\0\0\0";
|
||||
#pragma pop
|
||||
|
||||
/* 80334244-803342F8 32EB84 00B4+00 2/1 0/0 0/0 .text load__20J3DClusterLoader_v15FPCv */
|
||||
// matches with vtable data
|
||||
#ifdef NONMATCHING
|
||||
void* J3DClusterLoader_v15::load(const void* i_data) {
|
||||
mpDeformData = new J3DDeformData();
|
||||
|
||||
@@ -178,20 +106,10 @@ void* J3DClusterLoader_v15::load(const void* i_data) {
|
||||
|
||||
return mpDeformData;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
// asm void* J3DClusterLoader_v15::load(void const* param_0) {
|
||||
extern "C" asm void load__20J3DClusterLoader_v15FPCv() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphLoader/J3DClusterLoader/load__20J3DClusterLoader_v15FPCv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 803342F8-803345FC 32EC38 0304+00 1/1 0/0 0/0 .text
|
||||
* readCluster__20J3DClusterLoader_v15FPC15J3DClusterBlock */
|
||||
// Matches with some weak JSUConvertOffsetToPtr in other files
|
||||
#ifdef NONMATCHING
|
||||
void J3DClusterLoader_v15::readCluster(const J3DClusterBlock* block) {
|
||||
mpDeformData->mClusterNum = block->mClusterNum;
|
||||
@@ -216,34 +134,22 @@ void J3DClusterLoader_v15::readCluster(const J3DClusterBlock* block) {
|
||||
mpDeformData->mVtxPos = JSUConvertOffsetToPtr<f32>(block, block->mVtxPos);
|
||||
mpDeformData->mVtxNrm = JSUConvertOffsetToPtr<f32>(block, block->mVtxNrm);
|
||||
|
||||
mpDeformData->mClusterPointer = new J3DCluster[mpDeformData->getClusterNum()];
|
||||
J3DCluster* blockCluster = JSUConvertOffsetToPtr<J3DCluster>(block, block->mClusterPointer);
|
||||
for (int i = 0; i < mpDeformData->getClusterNum(); i++) {
|
||||
mpDeformData->mClusterPointer[i] = blockCluster[i];
|
||||
}
|
||||
|
||||
mpDeformData->mClusterKeyPointer = new J3DClusterKey[mpDeformData->getClusterKeyNum()];
|
||||
J3DClusterKey* blockClusterKey =
|
||||
JSUConvertOffsetToPtr<J3DClusterKey>(block, block->mClusterKeyPointer);
|
||||
for (int i = 0; i < mpDeformData->getClusterKeyNum(); i++) {
|
||||
mpDeformData->mClusterKeyPointer[i] = blockClusterKey[i];
|
||||
}
|
||||
|
||||
mpDeformData->mClusterVertex = new J3DClusterVertex[mpDeformData->mClusterVertexNum];
|
||||
J3DClusterVertex* blockClusterVertex =
|
||||
JSUConvertOffsetToPtr<J3DClusterVertex>(block, block->mClusterVertex);
|
||||
for (int i = 0; i < mpDeformData->mClusterVertexNum; i++) {
|
||||
mpDeformData->mClusterVertex[i] = blockClusterVertex[i];
|
||||
}
|
||||
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>(block, cluster->mClusterKey);
|
||||
cluster->mClusterKey = JSUConvertOffsetToPtr<J3DClusterKey>(arr - (int)clusterPointer, cluster->mClusterKey);
|
||||
cluster->field_0x18 = JSUConvertOffsetToPtr<u16>(block, cluster->field_0x18);
|
||||
J3DClusterVertex* clusterVertex =
|
||||
JSUConvertOffsetToPtr<J3DClusterVertex>(block, cluster->mClusterVertex);
|
||||
u32 vertexIdx = (clusterVertex - blockClusterVertex) / sizeof(J3DClusterVertex);
|
||||
cluster->mClusterVertex = &mpDeformData->mClusterVertex[vertexIdx];
|
||||
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];
|
||||
@@ -266,6 +172,8 @@ void J3DClusterLoader_v15::readCluster(const J3DClusterBlock* block) {
|
||||
clusterVertex->field_0x4 = JSUConvertOffsetToPtr<u16>(block, clusterVertex->field_0x4);
|
||||
clusterVertex->field_0x8 = JSUConvertOffsetToPtr<u16>(block, clusterVertex->field_0x8);
|
||||
}
|
||||
|
||||
DCStoreRange(arr, vtxPosSize);
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
@@ -279,10 +187,12 @@ asm void J3DClusterLoader_v15::readCluster(J3DClusterBlock const* param_0) {
|
||||
#endif
|
||||
|
||||
/* 803345FC-80334644 32EF3C 0048+00 1/0 0/0 0/0 .text __dt__16J3DClusterLoaderFv */
|
||||
// Remove when JSUConvertOffsetToPtr is ok
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm J3DClusterLoader::~J3DClusterLoader() {
|
||||
asm void __dt__16J3DClusterLoaderFv() {
|
||||
//asm J3DClusterLoader::~J3DClusterLoader() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphLoader/J3DClusterLoader/__dt__16J3DClusterLoaderFv.s"
|
||||
}
|
||||
|
||||
@@ -291,38 +291,29 @@ extern "C" extern void* __vt__11J3DTevBlock[55];
|
||||
J3DMaterialFactory::J3DMaterialFactory(J3DMaterialBlock const& i_block) {
|
||||
mMaterialNum = i_block.mMaterialNum;
|
||||
mpMaterialInitData = JSUConvertOffsetToPtr<J3DMaterialInitData>(&i_block, i_block.mpMaterialInitData);
|
||||
// mpMaterialID = JSUConvertOffsetToPtr<u16>(&i_block, i_block.mpMaterialID);
|
||||
mpMaterialID = func_802F42C0(&i_block, i_block.mpMaterialID);
|
||||
mpMaterialID = JSUConvertOffsetToPtr<u16>(&i_block, i_block.mpMaterialID);
|
||||
if (i_block.mpIndInitData != NULL && (u32)i_block.mpIndInitData - (u32)i_block.mpNameTable > 4) {
|
||||
mpIndInitData = JSUConvertOffsetToPtr<J3DIndInitData>(&i_block, i_block.mpIndInitData);
|
||||
} else {
|
||||
mpIndInitData = NULL;
|
||||
}
|
||||
// mpCullMode = JSUConvertOffsetToPtr<GXCullMode>(&i_block, i_block.mpCullMode);
|
||||
mpCullMode = func_802F4290(&i_block, i_block.mpCullMode);
|
||||
// mpMatColor = JSUConvertOffsetToPtr<GXColor>(&i_block, i_block.mpMatColor);
|
||||
mpMatColor = func_802F4278(&i_block, i_block.mpMatColor);
|
||||
// mpColorChanNum = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpColorChanNum);
|
||||
mpColorChanNum = func_802F4260(&i_block, i_block.mpColorChanNum);
|
||||
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);
|
||||
// mpAmbColor = JSUConvertOffsetToPtr<GXColor>(&i_block, i_block.mpAmbColor);
|
||||
mpAmbColor = func_802F4278(&i_block, i_block.mpAmbColor);
|
||||
mpAmbColor = JSUConvertOffsetToPtr<GXColor>(&i_block, i_block.mpAmbColor);
|
||||
mpLightInfo = JSUConvertOffsetToPtr<J3DLightInfo>(&i_block, i_block.mpLightInfo);
|
||||
// mpTexGenNum = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpTexGenNum);
|
||||
mpTexGenNum = func_802F4260(&i_block, i_block.mpTexGenNum);
|
||||
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_0x34 = JSUConvertOffsetToPtr<J3DTexMtxInfo>(&i_block, i_block.field_0x44);
|
||||
// mpTexNo = JSUConvertOffsetToPtr<u16>(&i_block, i_block.mpTexNo);
|
||||
mpTexNo = func_802F42C0(&i_block, i_block.mpTexNo);
|
||||
mpTexNo = JSUConvertOffsetToPtr<u16>(&i_block, i_block.mpTexNo);
|
||||
mpTevOrderInfo = JSUConvertOffsetToPtr<J3DTevOrderInfo>(&i_block, i_block.mpTevOrderInfo);
|
||||
// mpTevColor = JSUConvertOffsetToPtr<GXColorS10>(&i_block, i_block.mpTevColor);
|
||||
mpTevColor = func_802F41E8(&i_block, i_block.mpTevColor);
|
||||
// mpTevKColor = JSUConvertOffsetToPtr<GXColor>(&i_block, i_block.mpTevKColor);
|
||||
mpTevKColor = func_802F4278(&i_block, i_block.mpTevKColor);
|
||||
// mpTevStageNum = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpTevStageNum);
|
||||
mpTevStageNum = func_802F4260(&i_block, i_block.mpTevStageNum);
|
||||
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);
|
||||
@@ -330,10 +321,8 @@ J3DMaterialFactory::J3DMaterialFactory(J3DMaterialBlock const& i_block) {
|
||||
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);
|
||||
mpZCompLoc = func_802F4260(&i_block, i_block.mpZCompLoc);
|
||||
// mpDither = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpDither);
|
||||
mpDither = func_802F4260(&i_block, i_block.mpDither);
|
||||
mpZCompLoc = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpZCompLoc);
|
||||
mpDither = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpDither);
|
||||
mpNBTScaleInfo = JSUConvertOffsetToPtr<J3DNBTScaleInfo>(&i_block, i_block.mpNBTScaleInfo);
|
||||
mpDisplayListInit = NULL;
|
||||
mpPatchingInfo = NULL;
|
||||
@@ -349,8 +338,7 @@ J3DMaterialFactory::J3DMaterialFactory(J3DMaterialDLBlock const& i_block) {
|
||||
mpDisplayListInit = JSUConvertOffsetToPtr<J3DDisplayListInit>(&i_block, i_block.mpDisplayListInit);
|
||||
mpPatchingInfo = JSUConvertOffsetToPtr<J3DPatchingInfo>(&i_block, i_block.mpPatchingInfo);
|
||||
mpCurrentMtxInfo = JSUConvertOffsetToPtr<J3DCurrentMtxInfo>(&i_block, i_block.mpCurrentMtxInfo);
|
||||
// mpMaterialMode = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpMaterialMode);
|
||||
mpMaterialMode = func_802F4260(&i_block, i_block.mpMaterialMode);
|
||||
mpMaterialMode = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpMaterialMode);
|
||||
}
|
||||
|
||||
/* 803302BC-80330304 32ABFC 0048+00 0/0 3/3 0/0 .text countUniqueMaterials__18J3DMaterialFactoryFv
|
||||
|
||||
@@ -88,30 +88,22 @@ extern "C" extern void* __vt__11J3DMaterial[12];
|
||||
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);
|
||||
mpMaterialID = func_802F42C0(&i_block, i_block.mpMaterialID);
|
||||
// mpCullMode = JSUConvertOffsetToPtr<GXCullMode>(&i_block, i_block.mpCullMode);
|
||||
mpCullMode = func_802F4290(&i_block, i_block.mpCullMode);
|
||||
// mpMatColor = JSUConvertOffsetToPtr<GXColor>(&i_block, i_block.mpMatColor);
|
||||
mpMatColor = func_802F4278(&i_block, i_block.mpMatColor);
|
||||
// mpColorChanNum = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpColorChanNum);
|
||||
mpColorChanNum = func_802F4260(&i_block, i_block.mpColorChanNum);
|
||||
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);
|
||||
mpTexGenNum = func_802F4260(&i_block, i_block.mpTexGenNum);
|
||||
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);
|
||||
mpTexNo = func_802F42C0(&i_block, i_block.mpTexNo);
|
||||
mpTexNo = JSUConvertOffsetToPtr<u16>(&i_block, i_block.mpTexNo);
|
||||
mpTevOrderInfo = JSUConvertOffsetToPtr<J3DTevOrderInfo>(&i_block, i_block.mpTevOrderInfo);
|
||||
// mpTevColor = JSUConvertOffsetToPtr<GXColorS10>(&i_block, i_block.mpTevColor);
|
||||
mpTevColor = func_802F41E8(&i_block, i_block.mpTevColor);
|
||||
// mpTevKColor = JSUConvertOffsetToPtr<GXColor>(&i_block, i_block.mpTevKColor);
|
||||
mpTevKColor = func_802F4278(&i_block, i_block.mpTevKColor);
|
||||
// mpTevStageNum = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpTevStageNum);
|
||||
mpTevStageNum = func_802F4260(&i_block, i_block.mpTevStageNum);
|
||||
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);
|
||||
@@ -119,10 +111,8 @@ J3DMaterialFactory_v21::J3DMaterialFactory_v21(J3DMaterialBlock_v21 const& i_blo
|
||||
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);
|
||||
mpZCompLoc = func_802F4260(&i_block, i_block.mpZCompLoc);
|
||||
// mpDither = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpDither);
|
||||
mpDither = func_802F4260(&i_block, i_block.mpDither);
|
||||
mpZCompLoc = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpZCompLoc);
|
||||
mpDither = JSUConvertOffsetToPtr<u8>(&i_block, i_block.mpDither);
|
||||
mpNBTScaleInfo = JSUConvertOffsetToPtr<J3DNBTScaleInfo>(&i_block, i_block.mpNBTScaleInfo);
|
||||
}
|
||||
|
||||
|
||||
@@ -321,8 +321,8 @@ SECTION_DEAD static char const* const stringBase_803A20B0 = "Unknown data block\
|
||||
#pragma pop
|
||||
|
||||
/* 803347E0-80334ABC 32F120 02DC+00 4/1 0/0 0/0 .text load__14J3DModelLoaderFPCvUl */
|
||||
// Matches with virtual functions
|
||||
#ifdef NONMATCHING
|
||||
// regalloc
|
||||
J3DModelData* J3DModelLoader::load(void const* i_data, u32 i_flags) {
|
||||
JKRGetCurrentHeap()->getTotalFreeSize();
|
||||
mpModelData = new J3DModelData();
|
||||
@@ -335,7 +335,7 @@ J3DModelData* J3DModelLoader::load(void const* i_data, u32 i_flags) {
|
||||
for (u32 block_no = 0; block_no < data->mBlockNum; block_no++) {
|
||||
switch (block->mBlockType) {
|
||||
case 'INF1':
|
||||
readInformation((J3DModelInfoBlock*)block, i_flags);
|
||||
readInformation((J3DModelInfoBlock*)block, (s32)i_flags);
|
||||
break;
|
||||
case 'VTX1':
|
||||
readVertex((J3DVertexBlock*)block);
|
||||
@@ -350,13 +350,13 @@ J3DModelData* J3DModelLoader::load(void const* i_data, u32 i_flags) {
|
||||
readJoint((J3DJointBlock*)block);
|
||||
break;
|
||||
case 'MAT3':
|
||||
readMaterial((J3DMaterialBlock*)block, i_flags);
|
||||
readMaterial((J3DMaterialBlock*)block, (s32)i_flags);
|
||||
break;
|
||||
case 'MAT2':
|
||||
readMaterial_v21((J3DMaterialBlock_v21*)block, i_flags);
|
||||
readMaterial_v21((J3DMaterialBlock_v21*)block, (s32)i_flags);
|
||||
break;
|
||||
case 'SHP1':
|
||||
readShape((J3DShapeBlock*)block, i_flags);
|
||||
readShape((J3DShapeBlock*)block, (s32)i_flags);
|
||||
break;
|
||||
case 'TEX1':
|
||||
readTexture((J3DTextureBlock*)block);
|
||||
@@ -433,8 +433,8 @@ asm J3DMaterialTable* J3DModelLoader::loadMaterialTable(void const* param_0) {
|
||||
|
||||
/* 80334C20-80334EE0 32F560 02C0+00 3/0 0/0 0/0 .text
|
||||
* loadBinaryDisplayList__14J3DModelLoaderFPCvUl */
|
||||
// Matches with virtual functions
|
||||
#ifdef NONMATCHING
|
||||
// regalloc
|
||||
J3DModelData* J3DModelLoader::loadBinaryDisplayList(void const* i_data, u32 i_flags) {
|
||||
mpModelData = new J3DModelData();
|
||||
mpModelData->clear();
|
||||
@@ -446,7 +446,8 @@ J3DModelData* J3DModelLoader::loadBinaryDisplayList(void const* i_data, u32 i_fl
|
||||
for (u32 block_no = 0; block_no < data->mBlockNum; block_no++) {
|
||||
switch (block->mBlockType) {
|
||||
case 'INF1':
|
||||
readInformation((J3DModelInfoBlock*)block, i_flags);
|
||||
s32 flags2 = i_flags;
|
||||
readInformation((J3DModelInfoBlock*)block, flags2);
|
||||
break;
|
||||
case 'VTX1':
|
||||
readVertex((J3DVertexBlock*)block);
|
||||
@@ -471,11 +472,13 @@ J3DModelData* J3DModelLoader::loadBinaryDisplayList(void const* i_data, u32 i_fl
|
||||
modifyMaterial(i_flags);
|
||||
break;
|
||||
case 'MAT3':
|
||||
s32 flags = 0x50100000;
|
||||
flags |= (i_flags & 0x3000000);
|
||||
mpMaterialBlock = (J3DMaterialBlock*)block;
|
||||
if ((i_flags & 0x3000) == 0) {
|
||||
readMaterial((J3DMaterialBlock*)block, i_flags & 0x3000000 | 0x50100000);
|
||||
} else if ((i_flags & 0x3000) == 0x2000) {
|
||||
readPatchedMaterial((J3DMaterialBlock*)block, i_flags & 0x3000000 | 0x50100000);
|
||||
if (((u32)i_flags & 0x3000) == 0) {
|
||||
readMaterial((J3DMaterialBlock*)block, flags);
|
||||
} else if (((u32)i_flags & 0x3000) == 0x2000) {
|
||||
readPatchedMaterial((J3DMaterialBlock*)block, flags);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
@@ -667,11 +670,9 @@ void J3DModelLoader::readVertex(J3DVertexBlock const* i_block) {
|
||||
void J3DModelLoader::readEnvelop(J3DEnvelopeBlock const* i_block) {
|
||||
mpModelData->getJointTree().mWEvlpMtxNum = i_block->mWEvlpMtxNum;
|
||||
mpModelData->getJointTree().mWEvlpMixMtxNum =
|
||||
// JSUConvertOffsetToPtr<u8>(i_block, i_block->mpWEvlpMixMtxNum);
|
||||
func_802F4260(i_block, i_block->mpWEvlpMixMtxNum);
|
||||
JSUConvertOffsetToPtr<u8>(i_block, i_block->mpWEvlpMixMtxNum);
|
||||
mpModelData->getJointTree().mWEvlpMixIndex =
|
||||
// JSUConvertOffsetToPtr<u16>(i_block, i_block->mpWEvlpMixIndex);
|
||||
func_802F42C0(i_block, i_block->mpWEvlpMixIndex);
|
||||
JSUConvertOffsetToPtr<u16>(i_block, i_block->mpWEvlpMixIndex);
|
||||
mpModelData->getJointTree().mWEvlpMixWeight =
|
||||
// JSUConvertOffsetToPtr<f32>(i_block, i_block->mpWEvlpMixWeight);
|
||||
func_8030A560(i_block, i_block->mpWEvlpMixWeight);
|
||||
@@ -685,10 +686,8 @@ void J3DModelLoader::readEnvelop(J3DEnvelopeBlock const* i_block) {
|
||||
void J3DModelLoader::readDraw(J3DDrawBlock const* i_block) {
|
||||
J3DJointTree& joint_tree = mpModelData->getJointTree();
|
||||
joint_tree.mDrawMtxData.mEntryNum = i_block->mMtxNum - mpModelData->getJointTree().mWEvlpMtxNum;
|
||||
// joint_tree.mDrawMtxData.mDrawMtxFlag = JSUConvertOffsetToPtr<u8>(i_block, i_block->mpDrawMtxFlag);
|
||||
joint_tree.mDrawMtxData.mDrawMtxFlag = func_802F4260(i_block, i_block->mpDrawMtxFlag);
|
||||
// joint_tree.mDrawMtxData.mDrawMtxIndex = JSUConvertOffsetToPtr<u16>(i_block, i_block->mpDrawMtxIndex);
|
||||
joint_tree.mDrawMtxData.mDrawMtxIndex = func_802F42C0(i_block, i_block->mpDrawMtxIndex);
|
||||
joint_tree.mDrawMtxData.mDrawMtxFlag = JSUConvertOffsetToPtr<u8>(i_block, i_block->mpDrawMtxFlag);
|
||||
joint_tree.mDrawMtxData.mDrawMtxIndex = JSUConvertOffsetToPtr<u16>(i_block, i_block->mpDrawMtxIndex);
|
||||
u16 i;
|
||||
for (i = 0; i < joint_tree.mDrawMtxData.mEntryNum; i++) {
|
||||
if (joint_tree.mDrawMtxData.mDrawMtxFlag[i] == 1) {
|
||||
@@ -960,10 +959,9 @@ void J3DModelLoader::readPatchedMaterial(J3DMaterialBlock const* i_block, u32 i_
|
||||
|
||||
/* 80336168-8033631C 330AA8 01B4+00 1/1 0/0 0/0 .text
|
||||
* readMaterialDL__14J3DModelLoaderFPC18J3DMaterialDLBlockUl */
|
||||
#ifdef NONMATCHING
|
||||
// regalloc
|
||||
void J3DModelLoader::readMaterialDL(J3DMaterialDLBlock const* i_block, u32 i_flags) {
|
||||
J3DMaterialFactory factory(*i_block);
|
||||
s32 flags;
|
||||
if (mpMaterialTable->mMaterialNum == 0) {
|
||||
mpMaterialTable->field_0x1c = 1;
|
||||
mpMaterialTable->mMaterialNum = i_block->mMaterialNum;
|
||||
@@ -978,30 +976,22 @@ void J3DModelLoader::readMaterialDL(J3DMaterialDLBlock const* i_block, u32 i_fla
|
||||
mpMaterialTable->mMaterialNodePointer = new J3DMaterial*[mpMaterialTable->mMaterialNum];
|
||||
mpMaterialTable->field_0x10 = NULL;
|
||||
for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) {
|
||||
flags = i_flags;
|
||||
mpMaterialTable->mMaterialNodePointer[i] =
|
||||
factory.create(NULL, J3DMaterialFactory::MATERIAL_TYPE_LOCKED, i, i_flags);
|
||||
factory.create(NULL, J3DMaterialFactory::MATERIAL_TYPE_LOCKED, i, flags);
|
||||
}
|
||||
for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) {
|
||||
mpMaterialTable->mMaterialNodePointer[i]->mDiffFlag = 0xc0000000;
|
||||
}
|
||||
} else {
|
||||
for (u16 i = 0; i < mpMaterialTable->mMaterialNum; i++) {
|
||||
flags = i_flags;
|
||||
mpMaterialTable->mMaterialNodePointer[i] =
|
||||
factory.create(mpMaterialTable->mMaterialNodePointer[i],
|
||||
J3DMaterialFactory::MATERIAL_TYPE_LOCKED, i, i_flags);
|
||||
J3DMaterialFactory::MATERIAL_TYPE_LOCKED, i, flags);
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void J3DModelLoader::readMaterialDL(J3DMaterialDLBlock const* param_0, u32 param_1) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/J3DGraphLoader/J3DModelLoader/readMaterialDL__14J3DModelLoaderFPC18J3DMaterialDLBlockUl.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 8033631C-80336398 330C5C 007C+00 1/1 0/0 0/0 .text modifyMaterial__14J3DModelLoaderFUl
|
||||
*/
|
||||
|
||||
@@ -28,16 +28,16 @@ extern "C" u16* func_8033677C(const void*, const void*); // JSUConvertOffsetToP
|
||||
|
||||
/* 80337350-80337400 331C90 00B0+00 0/0 2/2 0/0 .text __ct__15J3DShapeFactoryFRC13J3DShapeBlock */
|
||||
J3DShapeFactory::J3DShapeFactory(J3DShapeBlock const& block) {
|
||||
// mShapeInitData = JSUConvertOffsetToPtr<J3DShapeInitData>(&block, block.mpShapeInitData);
|
||||
mShapeInitData = func_80336764(&block, block.mpShapeInitData);
|
||||
// mIndexTable = JSUConvertOffsetToPtr<u16>(&block, block.mpIndexTable);
|
||||
mIndexTable = func_8033677C(&block, block.mpIndexTable);
|
||||
mVtxDescList = JSUConvertOffsetToPtr<GXVtxDescList>(&block, block.mpVtxDescList);
|
||||
// mMtxTable = JSUConvertOffsetToPtr<u16>(&block, block.mpMtxTable);
|
||||
mMtxTable = func_8033677C(&block, block.mpMtxTable);
|
||||
mDisplayListData = JSUConvertOffsetToPtr<u8>(&block, block.mpDisplayListData);
|
||||
mMtxInitData = JSUConvertOffsetToPtr<J3DShapeMtxInitData>(&block, block.mpMtxInitData);
|
||||
mDrawInitData = JSUConvertOffsetToPtr<J3DShapeDrawInitData>(&block, block.mpDrawInitData);
|
||||
//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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user