diff options
| author | Caroline Madsen <69010899+randomsalience@users.noreply.github.com> | 2025-04-09 16:45:30 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-09 13:45:30 -0700 |
| commit | c6f76e7240dde8bbcf40a88d6d88cf87cab616b4 (patch) | |
| tree | bf9afbb1c32e66f45bdba30f61a9e4f0d92f804a /src/JSystem/J3DGraphLoader | |
| parent | 6672817e41064e04951ec28d51070b66fc8377ac (diff) | |
Various JSystem work (#2383)
* JKernel and JStudio cleanup
* JMessage cleanup
* JAudio cleanup
* JASBNKParser work
* functionvalue work
* fvb work
* J2D and J3D cleanup
* steal from tww
* J2DPictureEx mostly done
* fix build
Diffstat (limited to 'src/JSystem/J3DGraphLoader')
| -rw-r--r-- | src/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp | 9 | ||||
| -rw-r--r-- | src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp | 20 |
2 files changed, 15 insertions, 14 deletions
diff --git a/src/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp b/src/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp index fc06d21ce0..126d898137 100644 --- a/src/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp +++ b/src/JSystem/J3DGraphLoader/J3DMaterialFactory.cpp @@ -235,7 +235,7 @@ J3DMaterial* J3DMaterialFactory::createNormalMaterial(J3DMaterial* i_material, i i_material->mIndBlock->setIndTexOrder(i, newIndTexOrder(i_idx, i)); } for (u8 i = 0; i < ind_tex_stage_num; i++) { - i_material->mIndBlock->setIndTexCoordScale(i, &newIndTexCoordScale(i_idx, i)); + i_material->mIndBlock->setIndTexCoordScale(i, newIndTexCoordScale(i_idx, i)); } for (u8 i = 0; i < tev_stage_num_max; i++) { i_material->mTevBlock->setIndTevStage(i, newIndTevStage(i_idx, i)); @@ -328,7 +328,7 @@ J3DMaterial* J3DMaterialFactory::createPatchedMaterial(J3DMaterial* i_material, i_material->mIndBlock->setIndTexOrder(i, newIndTexOrder(i_idx, i)); } for (u8 i = 0; i < ind_tex_stage_num; i++) { - i_material->mIndBlock->setIndTexCoordScale(i, &newIndTexCoordScale(i_idx, i)); + i_material->mIndBlock->setIndTexCoordScale(i, newIndTexCoordScale(i_idx, i)); } for (u8 i = 0; i < tev_stage_num; i++) { i_material->mTevBlock->setIndTevStage(i, newIndTevStage(i_idx, i)); @@ -590,12 +590,9 @@ J3DTevOrder J3DMaterialFactory::newTevOrder(int i_idx, int i_no) const { } } -/* 80456BB8-80456BBC 000058 0004+00 1/1 0/0 0/0 .sbss2 @1897 */ -SECTION_SBSS2 static GXColorS10 defaultTevColor; - /* 803321A0-80332210 32CAE0 0070+00 2/2 0/0 0/0 .text newTevColor__18J3DMaterialFactoryCFii */ J3DGXColorS10 J3DMaterialFactory::newTevColor(int i_idx, int i_no) const { - J3DGXColorS10 dflt = defaultTevColor; + J3DGXColorS10 dflt = (GXColorS10){0, 0, 0, 0}; J3DMaterialInitData* mtl_init_data = &mpMaterialInitData[mpMaterialID[i_idx]]; if (mtl_init_data->mTevColorIdx[i_no] != 0xffff) { return mpTevColor[mtl_init_data->mTevColorIdx[i_no]]; diff --git a/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp b/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp index 3926a26753..6fb7e0bc08 100644 --- a/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp +++ b/src/JSystem/J3DGraphLoader/J3DModelLoaderCalcSize.cpp @@ -112,25 +112,28 @@ u32 J3DModelLoader::calcLoadMaterialTableSize(const void* stream) { return size; } +inline u32 getBdlFlag_MaterialType(u32 flags) { + return flags & (J3DMLF_13 | J3DMLF_DoBdlMaterialCalc); +} + /* 80336A98-80336CD8 3313D8 0240+00 0/0 3/0 0/0 .text * calcLoadBinaryDisplayListSize__14J3DModelLoaderFPCvUl */ // NONMATCHING flags issue u32 J3DModelLoader::calcLoadBinaryDisplayListSize(const void* stream, u32 flags) { u32 size = 0; + size += sizeof(J3DModelData); const J3DModelFileData* header = (const J3DModelFileData*)stream; const J3DModelBlock* nextBlock = header->mBlocks; - u32 i = 0; - size += sizeof(J3DModelData); - for (; i < header->mBlockNum; i++) { + for (u32 i = 0; i < header->mBlockNum; i++) { switch (nextBlock->mBlockType) { case 'INF1': - size += calcSizeInformation((const J3DModelInfoBlock*)nextBlock, flags); + size += calcSizeInformation((const J3DModelInfoBlock*)nextBlock, (u32)flags); break; case 'JNT1': size += calcSizeJoint((const J3DJointBlock*)nextBlock); break; case 'SHP1': - size += calcSizeShape((const J3DShapeBlock*)nextBlock, flags); + size += calcSizeShape((const J3DShapeBlock*)nextBlock, (u32)flags); break; case 'TEX1': size += calcSizeTexture((const J3DTextureBlock*)nextBlock); @@ -142,12 +145,13 @@ u32 J3DModelLoader::calcLoadBinaryDisplayListSize(const void* stream, u32 flags) break; case 'MAT3': { u32 flags2 = (J3DMLF_21 | J3DMLF_Material_PE_Full | J3DMLF_Material_Color_LightOn); - flags2 |= flags & (J3DMLF_Material_UseIndirect | J3DMLF_26); + flags2 |= (u32)flags & (J3DMLF_Material_UseIndirect | J3DMLF_26); mpMaterialBlock = (const J3DMaterialBlock*)nextBlock; - if ((flags & (J3DMLF_13 | J3DMLF_DoBdlMaterialCalc)) == 0) { + u32 flag_mtl_type = getBdlFlag_MaterialType(flags); + if (flag_mtl_type == 0) { field_0x18 = 1; size += calcSizeMaterial((const J3DMaterialBlock*)nextBlock, flags2); - } else if ((flags & (J3DMLF_13 | J3DMLF_DoBdlMaterialCalc)) == J3DMLF_DoBdlMaterialCalc) { + } else if (flag_mtl_type == J3DMLF_DoBdlMaterialCalc) { field_0x18 = 1; size += calcSizePatchedMaterial((const J3DMaterialBlock*)nextBlock, flags2); } |
