diff options
| author | hatal175 <hatal175@users.noreply.github.com> | 2024-02-05 07:21:05 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-05 07:21:05 +0200 |
| commit | e98d9c845c3476b3060a4bada25ced6a736835de (patch) | |
| tree | aaf7910e6632ef5d7be7629e74f883014eb577c3 /libs | |
| parent | f260221f4300df6f72aecc80b6140e4454ff57a8 (diff) | |
Fix some JSUConvertOffsetToPtr issues (#2063)
* Fix some JSUConvertOffsetToPtr issues
* Match some J3DAnmLoader functions
Diffstat (limited to 'libs')
| -rw-r--r-- | libs/JSystem/J2DGraph/J2DAnmLoader_nonmatching.cpp | 36 | ||||
| -rw-r--r-- | libs/JSystem/J2DGraph/J2DMaterialFactory.cpp | 214 | ||||
| -rw-r--r-- | libs/JSystem/J3DGraphLoader/J3DAnmLoader.cpp | 22 | ||||
| -rw-r--r-- | libs/JSystem/J3DGraphLoader/J3DClusterLoader.cpp | 130 | ||||
| -rw-r--r-- | libs/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp | 36 | ||||
| -rw-r--r-- | libs/JSystem/J3DGraphLoader/J3DMaterialFactory_v21.cpp | 30 | ||||
| -rw-r--r-- | libs/JSystem/J3DGraphLoader/J3DModelLoader.cpp | 56 | ||||
| -rw-r--r-- | libs/JSystem/J3DGraphLoader/J3DShapeFactory.cpp | 20 |
8 files changed, 113 insertions, 431 deletions
diff --git a/libs/JSystem/J2DGraph/J2DAnmLoader_nonmatching.cpp b/libs/JSystem/J2DGraph/J2DAnmLoader_nonmatching.cpp index 8ea9e2b72d..7874986fe5 100644 --- a/libs/JSystem/J2DGraph/J2DAnmLoader_nonmatching.cpp +++ b/libs/JSystem/J2DGraph/J2DAnmLoader_nonmatching.cpp @@ -177,17 +177,17 @@ void J2DAnmKeyLoader_v15::readAnmTransform(J3DAnmTransformKeyData const* p_data) * setAnmTransform__19J2DAnmKeyLoader_v15FP18J2DAnmTransformKeyPC22J3DAnmTransformKeyData */ void J2DAnmKeyLoader_v15::setAnmTransform(J2DAnmTransformKey* p_anm, J3DAnmTransformKeyData const* p_data) { - p_anm->field_0x22 = p_data->_C; + p_anm->field_0x22 = p_data->field_0xc; p_anm->mFrameMax = p_data->mFrameMax; - p_anm->field_0x4 = p_data->_8; - p_anm->field_0x24 = p_data->_9; + p_anm->field_0x4 = p_data->field_0x8; + p_anm->field_0x24 = p_data->field_0x9; p_anm->mFrame = 0; p_anm->mInfoTable = JSUConvertOffsetToPtr<J3DAnmTransformKeyTable>(p_data, (void*)p_data->mTableOffset); - p_anm->mScaleValues = JSUConvertOffsetToPtr<f32>(p_data, (void*)p_data->mScaleOffset); - p_anm->mRotationValues = JSUConvertOffsetToPtr<s16>(p_data, (void*)p_data->mRotationOffset); + p_anm->mScaleValues = JSUConvertOffsetToPtr<f32>(p_data, (void*)p_data->field_0x18); + p_anm->mRotationValues = JSUConvertOffsetToPtr<s16>(p_data, (void*)p_data->field_0x1c); p_anm->mTranslateValues = - JSUConvertOffsetToPtr<f32>(p_data, (void*)p_data->mTranslateOffset); + JSUConvertOffsetToPtr<f32>(p_data, (void*)p_data->field_0x20); } /* 80309634-8030965C 303F74 0028+00 1/1 0/0 0/0 .text @@ -214,7 +214,7 @@ void J2DAnmKeyLoader_v15::setAnmTextureSRT(J2DAnmTextureSRTKey* p_anm, p_anm->mUpdateMaterialID = JSUConvertOffsetToPtr<u16>(p_data, (void*)p_data->mUpdateMatIDOffset); p_anm->field_0x34.setResource( JSUConvertOffsetToPtr<ResNTAB>(p_data, (void*)p_data->mNameTab1Offset)); - p_anm->mUpdateTexMtxID = JSUConvertOffsetToPtr<u8>(p_data, (void*)p_data->mUpdateTexMtxIDOffset); + p_anm->mUpdateTexMtxID = JSUConvertOffsetToPtr<u8>(p_data, p_data->mUpdateTexMtxIDOffset); p_anm->field_0x44 = JSUConvertOffsetToPtr<Vec>(p_data, (void*)p_data->unkOffset); p_anm->mScaleValues = JSUConvertOffsetToPtr<f32>(p_data, (void*)p_data->mScaleValOffset); p_anm->mRotationValues = JSUConvertOffsetToPtr<s16>(p_data, (void*)p_data->mRotValOffset); @@ -230,8 +230,8 @@ void J2DAnmKeyLoader_v15::setAnmTextureSRT(J2DAnmTextureSRTKey* p_anm, p_anm->field_0x5c = JSUConvertOffsetToPtr<J3DAnmTransformKeyTable>(p_data, (void*)p_data->mInfoTable2Offset); p_anm->field_0x64 = JSUConvertOffsetToPtr<u16>(p_data, (void*)p_data->field_0x40); - p_anm->field_0x60 = JSUConvertOffsetToPtr<u8>(p_data, (void*)p_data->field_0x48); - p_anm->field_0x78 = JSUConvertOffsetToPtr<Vec>(p_data, (void*)p_data->field_0x48); + p_anm->field_0x60 = JSUConvertOffsetToPtr<u8>(p_data, p_data->field_0x48); + p_anm->field_0x78 = JSUConvertOffsetToPtr<Vec>(p_data, (void*)p_data->field_0x4c); p_anm->field_0x50 = JSUConvertOffsetToPtr<f32>(p_data, (void*)p_data->field_0x50); p_anm->field_0x54 = JSUConvertOffsetToPtr<s16>(p_data, (void*)p_data->field_0x54); p_anm->field_0x58 = JSUConvertOffsetToPtr<f32>(p_data, (void*)p_data->field_0x58); @@ -415,10 +415,10 @@ void J2DAnmFullLoader_v15::setAnmColor(J2DAnmColorFull* p_anm, J3DAnmColorFullDa p_anm->mUpdateMaterialNum = p_data->mUpdateMaterialNum; p_anm->mInfoTable = JSUConvertOffsetToPtr<J3DAnmColorFullTable>(p_data, (void*)p_data->mTableOffset); - p_anm->mRValues = JSUConvertOffsetToPtr<u8>(p_data, (void*)p_data->mRValuesOffset); - p_anm->mGValues = JSUConvertOffsetToPtr<u8>(p_data, (void*)p_data->mGValuesOffset); - p_anm->mBValues = JSUConvertOffsetToPtr<u8>(p_data, (void*)p_data->mBValuesOffset); - p_anm->mAValues = JSUConvertOffsetToPtr<u8>(p_data, (void*)p_data->mAValuesOffset); + p_anm->mRValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mRValuesOffset); + p_anm->mGValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mGValuesOffset); + p_anm->mBValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mBValuesOffset); + p_anm->mAValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mAValuesOffset); p_anm->mUpdateMaterialID = JSUConvertOffsetToPtr<u16>(p_data, (void*)p_data->mUpdateMaterialIDOffset); p_anm->field_0x20.setResource( @@ -510,7 +510,7 @@ void J2DAnmFullLoader_v15::setAnmVisibility(J2DAnmVisibilityFull* p_anm, p_anm->field_0x12 = p_data->field_0xe; p_anm->mTable = JSUConvertOffsetToPtr<J3DAnmVisibilityFullTable>(p_data, (void*)p_data->mTableOffset); - p_anm->mValues = JSUConvertOffsetToPtr<u8>(p_data, (void*)p_data->mValuesOffset); + p_anm->mValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mValuesOffset); } /* 8030A234-8030A25C 304B74 0028+00 1/1 0/0 0/0 .text @@ -540,10 +540,10 @@ void J2DAnmFullLoader_v15::setAnmVtxColor(J2DAnmVtxColorFull* p_anm, JSUConvertOffsetToPtr<u16>(p_data, (void*)p_data->mVtxColorIndexPointerOffsets[0]); p_anm->mVtxColorIndexPointer[1] = JSUConvertOffsetToPtr<u16>(p_data, (void*)p_data->mVtxColorIndexPointerOffsets[1]); - p_anm->mRValues = JSUConvertOffsetToPtr<u8>(p_data, (void*)p_data->mRValuesOffset); - p_anm->mGValues = JSUConvertOffsetToPtr<u8>(p_data, (void*)p_data->mGValuesOffset); - p_anm->mBValues = JSUConvertOffsetToPtr<u8>(p_data, (void*)p_data->mBValuesOffset); - p_anm->mAValues = JSUConvertOffsetToPtr<u8>(p_data, (void*)p_data->mAValuesOffset); + p_anm->mRValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mRValuesOffset); + p_anm->mGValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mGValuesOffset); + p_anm->mBValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mBValuesOffset); + p_anm->mAValues = JSUConvertOffsetToPtr<u8>(p_data, p_data->mAValuesOffset); } /* 8030A358-8030A3B4 304C98 005C+00 1/0 0/0 0/0 .text __dt__14J2DAnmVtxColorFv */ diff --git a/libs/JSystem/J2DGraph/J2DMaterialFactory.cpp b/libs/JSystem/J2DGraph/J2DMaterialFactory.cpp index 6de7d30801..41033b1b11 100644 --- a/libs/JSystem/J2DGraph/J2DMaterialFactory.cpp +++ b/libs/JSystem/J2DGraph/J2DMaterialFactory.cpp @@ -5,16 +5,14 @@ #include "JSystem/J2DGraph/J2DMaterialFactory.h" #include "JSystem/J2DGraph/J2DMaterial.h" +#include "JSystem/J2DGraph/J2DScreen.h" #include "JSystem/JSupport/JSupport.h" +#include "JSystem/JUtility/JUTResource.h" #include "string.h" #include "dol2asm.h" #include "dolphin/types.h" // -// Types: -// - -// // Forward References: // @@ -56,7 +54,7 @@ extern "C" void func_802F4200(void* _this, void const*, void const*); extern "C" void func_802F4218(void* _this, void const*, void const*); extern "C" void func_802F4230(void* _this, void const*, void const*); extern "C" void func_802F4248(void* _this, void const*, void const*); -extern "C" void func_802F4260(void* _this, void const*, void const*); +extern "C" u8* func_802F4260(void const*, void const*); extern "C" void func_802F4278(void* _this, void const*, void const*); extern "C" void func_802F4290(void* _this, void const*, void const*); extern "C" void func_802F42A8(void* _this, void const*, void const*); @@ -83,14 +81,8 @@ extern "C" void _restgpr_19(); extern "C" void _restgpr_29(); extern "C" u8 mDataManage__9J2DScreen[4 + 4 /* padding */]; -// -// Declarations: -// - /* 802F2AD0-802F2C94 2ED410 01C4+00 0/0 1/1 0/0 .text * __ct__18J2DMaterialFactoryFRC16J2DMaterialBlock */ -// JSUConvertOffsetToPtr issues. Probably function order. -#ifdef NONMATCHING J2DMaterialFactory::J2DMaterialFactory(J2DMaterialBlock const& param_0) { field_0x0 = param_0.field_0x8; field_0x4 = JSUConvertOffsetToPtr<J2DMaterialInitData>(¶m_0, (void*)param_0.field_0xc); @@ -121,16 +113,6 @@ J2DMaterialFactory::J2DMaterialFactory(J2DMaterialBlock const& param_0) { field_0x54 = JSUConvertOffsetToPtr<J2DBlendInfo>(¶m_0, (void*)param_0.field_0x60); field_0x58 = JSUConvertOffsetToPtr<u8>(¶m_0, (void*)param_0.field_0x64); } -#else -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm J2DMaterialFactory::J2DMaterialFactory(J2DMaterialBlock const& param_0) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DMaterialFactory/__ct__18J2DMaterialFactoryFRC16J2DMaterialBlock.s" -} -#pragma pop -#endif /* 802F2C94-802F2D1C 2ED5D4 0088+00 1/1 0/0 0/0 .text countStages__18J2DMaterialFactoryCFi */ u32 J2DMaterialFactory::countStages(int param_0) const { @@ -230,8 +212,8 @@ J2DMaterial* J2DMaterialFactory::create(J2DMaterial* param_0, int index, u32 par J2DMaterialInitData* local_38c = &field_0x4[field_0x8[index]]; param_0->getTevBlock()->setTevStage(i, newTevStage(index, i)); if (local_38c->field_0xba[i] != 0xffff) { - param_0->getTevBlock()->getTevStage(i)->setTexSel(field_0x48[local_38c->field_0xba[i]].field_0x1); - param_0->getTevBlock()->getTevStage(i)->setRasSel(field_0x48[local_38c->field_0xba[i]].field_0x0); + param_0->getTevBlock()->getTevStage(i)->setTexSel(field_0x48[local_38c->field_0xba[i]].mTexSel); + param_0->getTevBlock()->getTevStage(i)->setRasSel(field_0x48[local_38c->field_0xba[i]].mRasSel); } } for (u8 i = 0; i < 4; i++) { @@ -401,8 +383,7 @@ SECTION_SBSS2 static GXColorS10 lit_2018; // J2DGXColorS10 init issues #ifdef NONMATCHING J2DGXColorS10 J2DMaterialFactory::newTevColor(int param_0, int param_1) const { - GXColorS10 x = lit_2018; - J2DGXColorS10 rv = J2DGXColorS10(x); + J2DGXColorS10 rv = J2DGXColorS10(GXColorS10()); J2DMaterialInitData* iVar2 = &field_0x4[field_0x8[param_0]]; if (iVar2->field_0x92[param_1] != 0xffff) { return field_0x38[iVar2->field_0x92[param_1]]; @@ -547,184 +528,7 @@ u8 J2DMaterialFactory::newDither(int param_0) const { } /* 802F4110-802F4170 2EEA50 0060+00 1/1 0/0 0/0 .text __ct__11J2DTevStageFRC15J2DTevStageInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm J2DTevStage::J2DTevStage(J2DTevStageInfo const& param_0) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DMaterialFactory/__ct__11J2DTevStageFRC15J2DTevStageInfo.s" -} -#pragma pop - -/* 802F4170-802F4188 2EEAB0 0018+00 1/1 0/0 0/0 .text - * JSUConvertOffsetToPtr<12J2DBlendInfo>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_802F4170(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F4170.s" -} -#pragma pop - -/* 802F4188-802F41A0 2EEAC8 0018+00 1/1 0/0 0/0 .text - * JSUConvertOffsetToPtr<16J2DAlphaCompInfo>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_802F4188(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F4188.s" -} -#pragma pop - -/* 802F41A0-802F41B8 2EEAE0 0018+00 1/1 0/0 0/0 .text - * JSUConvertOffsetToPtr<23J2DTevSwapModeTableInfo>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_802F41A0(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F41A0.s" -} -#pragma pop - -/* 802F41B8-802F41D0 2EEAF8 0018+00 1/1 0/0 0/0 .text - * JSUConvertOffsetToPtr<18J2DTevSwapModeInfo>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_802F41B8(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F41B8.s" -} -#pragma pop - -/* 802F41D0-802F41E8 2EEB10 0018+00 1/1 0/0 0/0 .text - * JSUConvertOffsetToPtr<15J2DTevStageInfo>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_802F41D0(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F41D0.s" -} -#pragma pop - -/* 802F41E8-802F4200 2EEB28 0018+00 1/1 2/2 0/0 .text - * JSUConvertOffsetToPtr<11_GXColorS10>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_802F41E8(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F41E8.s" -} -#pragma pop - -/* 802F4200-802F4218 2EEB40 0018+00 1/1 0/0 0/0 .text - * JSUConvertOffsetToPtr<15J2DTevOrderInfo>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_802F4200(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F4200.s" -} -#pragma pop - -/* 802F4218-802F4230 2EEB58 0018+00 1/1 0/0 0/0 .text - * JSUConvertOffsetToPtr<13J2DTexMtxInfo>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_802F4218(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F4218.s" -} -#pragma pop - -/* 802F4230-802F4248 2EEB70 0018+00 1/1 0/0 0/0 .text - * JSUConvertOffsetToPtr<15J2DTexCoordInfo>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_802F4230(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F4230.s" -} -#pragma pop - -/* 802F4248-802F4260 2EEB88 0018+00 1/1 0/0 0/0 .text - * JSUConvertOffsetToPtr<16J2DColorChanInfo>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_802F4248(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F4248.s" -} -#pragma pop - -/* 802F4260-802F4278 2EEBA0 0018+00 1/1 13/13 0/0 .text JSUConvertOffsetToPtr<Uc>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_802F4260(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F4260.s" -} -#pragma pop - -/* 802F4278-802F4290 2EEBB8 0018+00 1/1 2/2 0/0 .text JSUConvertOffsetToPtr<8_GXColor>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_802F4278(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F4278.s" +J2DTevStage::J2DTevStage(J2DTevStageInfo const& param_0) { + setTevStageInfo(param_0); + setTevSwapModeInfo(j2dDefaultTevSwapMode); } -#pragma pop - -/* 802F4290-802F42A8 2EEBD0 0018+00 1/1 2/2 0/0 .text - * JSUConvertOffsetToPtr<11_GXCullMode>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_802F4290(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F4290.s" -} -#pragma pop - -/* 802F42A8-802F42C0 2EEBE8 0018+00 1/1 0/0 0/0 .text - * JSUConvertOffsetToPtr<14J2DIndInitData>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_802F42A8(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F42A8.s" -} -#pragma pop - -/* 802F42C0-802F42D8 2EEC00 0018+00 1/1 19/19 0/0 .text JSUConvertOffsetToPtr<Us>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_802F42C0(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F42C0.s" -} -#pragma pop - -/* 802F42D8-802F42F0 2EEC18 0018+00 1/1 0/0 0/0 .text - * JSUConvertOffsetToPtr<19J2DMaterialInitData>__FPCvPCv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_802F42D8(void* _this, void const* param_0, void const* param_1) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DMaterialFactory/func_802F42D8.s" -} -#pragma pop diff --git a/libs/JSystem/J3DGraphLoader/J3DAnmLoader.cpp b/libs/JSystem/J3DGraphLoader/J3DAnmLoader.cpp index 81439fab8d..84b4881157 100644 --- a/libs/JSystem/J3DGraphLoader/J3DAnmLoader.cpp +++ b/libs/JSystem/J3DGraphLoader/J3DAnmLoader.cpp @@ -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); diff --git a/libs/JSystem/J3DGraphLoader/J3DClusterLoader.cpp b/libs/JSystem/J3DGraphLoader/J3DClusterLoader.cpp index b7408f61f0..451097dd5d 100644 --- a/libs/JSystem/J3DGraphLoader/J3DClusterLoader.cpp +++ b/libs/JSystem/J3DGraphLoader/J3DClusterLoader.cpp @@ -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" } diff --git a/libs/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp b/libs/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp index 2c42fd8dee..3260c48006 100644 --- a/libs/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp +++ b/libs/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp @@ -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 diff --git a/libs/JSystem/J3DGraphLoader/J3DMaterialFactory_v21.cpp b/libs/JSystem/J3DGraphLoader/J3DMaterialFactory_v21.cpp index bbb24e1681..957cb1828b 100644 --- a/libs/JSystem/J3DGraphLoader/J3DMaterialFactory_v21.cpp +++ b/libs/JSystem/J3DGraphLoader/J3DMaterialFactory_v21.cpp @@ -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);
}
diff --git a/libs/JSystem/J3DGraphLoader/J3DModelLoader.cpp b/libs/JSystem/J3DGraphLoader/J3DModelLoader.cpp index af9d4df70b..d852ec7b5e 100644 --- a/libs/JSystem/J3DGraphLoader/J3DModelLoader.cpp +++ b/libs/JSystem/J3DGraphLoader/J3DModelLoader.cpp @@ -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 */ diff --git a/libs/JSystem/J3DGraphLoader/J3DShapeFactory.cpp b/libs/JSystem/J3DGraphLoader/J3DShapeFactory.cpp index 1a8c67ab36..60edda683f 100644 --- a/libs/JSystem/J3DGraphLoader/J3DShapeFactory.cpp +++ b/libs/JSystem/J3DGraphLoader/J3DShapeFactory.cpp @@ -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; } |
