Fix some JSUConvertOffsetToPtr issues (#2063)

* Fix some JSUConvertOffsetToPtr issues

* Match some J3DAnmLoader functions
This commit is contained in:
hatal175
2024-02-05 07:21:05 +02:00
committed by GitHub
parent f260221f43
commit e98d9c845c
33 changed files with 161 additions and 907 deletions
+11 -11
View File
@@ -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);
+20 -110
View File
@@ -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);
}
+23 -33
View File
@@ -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
*/
+10 -10
View File
@@ -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;
}