summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorhatal175 <hatal175@users.noreply.github.com>2024-02-05 07:21:05 +0200
committerGitHub <noreply@github.com>2024-02-05 07:21:05 +0200
commite98d9c845c3476b3060a4bada25ced6a736835de (patch)
treeaaf7910e6632ef5d7be7629e74f883014eb577c3 /libs
parentf260221f4300df6f72aecc80b6140e4454ff57a8 (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.cpp36
-rw-r--r--libs/JSystem/J2DGraph/J2DMaterialFactory.cpp214
-rw-r--r--libs/JSystem/J3DGraphLoader/J3DAnmLoader.cpp22
-rw-r--r--libs/JSystem/J3DGraphLoader/J3DClusterLoader.cpp130
-rw-r--r--libs/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp36
-rw-r--r--libs/JSystem/J3DGraphLoader/J3DMaterialFactory_v21.cpp30
-rw-r--r--libs/JSystem/J3DGraphLoader/J3DModelLoader.cpp56
-rw-r--r--libs/JSystem/J3DGraphLoader/J3DShapeFactory.cpp20
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>(&param_0, (void*)param_0.field_0xc);
@@ -121,16 +113,6 @@ J2DMaterialFactory::J2DMaterialFactory(J2DMaterialBlock const& param_0) {
field_0x54 = JSUConvertOffsetToPtr<J2DBlendInfo>(&param_0, (void*)param_0.field_0x60);
field_0x58 = JSUConvertOffsetToPtr<u8>(&param_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;
}