From 10a64600118653301f86b7a487f58a0d2fed67c7 Mon Sep 17 00:00:00 2001 From: LagoLunatic Date: Mon, 29 Dec 2025 14:09:54 -0500 Subject: [PATCH] J3DCluster almost matching --- include/JSystem/J3DAssert.h | 11 + include/JSystem/J3DGraphBase/J3DTransform.h | 233 +++++++----------- include/dolphin/mtx/vec.h | 4 + src/JSystem/J3DGraphAnimator/J3DCluster.cpp | 136 +++++----- .../MSL/MSL_C++/MSL_Common/Include/cstdint.h | 30 +++ .../MSL/MSL_C++/MSL_Common/Include/stdint.h | 27 ++ 6 files changed, 226 insertions(+), 215 deletions(-) create mode 100644 include/JSystem/J3DAssert.h create mode 100644 src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/cstdint.h create mode 100644 src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/stdint.h diff --git a/include/JSystem/J3DAssert.h b/include/JSystem/J3DAssert.h new file mode 100644 index 000000000..4cda7704d --- /dev/null +++ b/include/JSystem/J3DAssert.h @@ -0,0 +1,11 @@ +#ifndef J3DASSERT_H +#define J3DASSERT_H + +#include "JSystem/JUtility/JUTAssert.h" + +#define J3D_ASSERT_NULLPTR(LINE, COND) +#define J3D_ASSERT_RANGE(LINE, COND) +#define J3D_ASSERT_NONZEROARG(LINE, COND) +#define J3D_ASSERT_ALLOCMEM(LINE, COND) + +#endif /* J3DASSERT_H */ diff --git a/include/JSystem/J3DGraphBase/J3DTransform.h b/include/JSystem/J3DGraphBase/J3DTransform.h index 0c7829796..c76dc51e8 100644 --- a/include/JSystem/J3DGraphBase/J3DTransform.h +++ b/include/JSystem/J3DGraphBase/J3DTransform.h @@ -41,173 +41,120 @@ void J3DMtxProjConcat(Mtx, Mtx, Mtx); void J3DPSMtx33Copy(Mtx3P src, Mtx3P dst); void J3DPSMtx33CopyFrom34(MtxP src, Mtx3P dst); -// regalloc issues inline void J3DPSMulMtxVec(register MtxP mtx, register Vec* vec, register Vec* dst) { - register f32 fr12; - register f32 fr11; - register f32 fr10; - register f32 fr9; - register f32 fr8; - register f32 fr6; - register f32 fr5; - register f32 fr4; - register f32 fr3; - register f32 fr2; - register f32 fr1; - register f32 fr0; #ifdef __MWERKS__ asm { - psq_l fr0, 0(vec), 0, 0 - psq_l fr2, 0(mtx), 0, 0 - psq_l fr1, 8(vec), 1, 0 - ps_mul fr4, fr2, fr0 - psq_l fr3, 8(mtx), 0, 0 - ps_madd fr5, fr3, fr1, fr4 - psq_l fr8, 16(mtx), 0, 0 - ps_sum0 fr6, fr5, fr6, fr5 - psq_l fr9, 24(mtx), 0, 0 - ps_mul fr10, fr8, fr0 - psq_st fr6, 0(dst), 1, 0 - ps_madd fr11, fr9, fr1, fr10 - psq_l fr2, 32(mtx), 0, 0 - ps_sum0 fr12, fr11, fr12, fr11 - psq_l fr3, 40(mtx), 0, 0 - ps_mul fr4, fr2, fr0 - psq_st fr12, 4(dst), 1, 0 - ps_madd fr5, fr3, fr1, fr4 - ps_sum0 fr6, fr5, fr6, fr5 - psq_st fr6, 8(dst), 1, 0 + psq_l f0, 0(vec), 0, 0 + psq_l f2, 0(mtx), 0, 0 + psq_l f1, 8(vec), 1, 0 + ps_mul f4, f2, f0 + psq_l f3, 8(mtx), 0, 0 + ps_madd f5, f3, f1, f4 + psq_l f8, 16(mtx), 0, 0 + ps_sum0 f6, f5, f6, f5 + psq_l f9, 24(mtx), 0, 0 + ps_mul f10, f8, f0 + psq_st f6, 0(dst), 1, 0 + ps_madd f11, f9, f1, f10 + psq_l f2, 32(mtx), 0, 0 + ps_sum0 f12, f11, f12, f11 + psq_l f3, 40(mtx), 0, 0 + ps_mul f4, f2, f0 + psq_st f12, 4(dst), 1, 0 + ps_madd f5, f3, f1, f4 + ps_sum0 f6, f5, f6, f5 + psq_st f6, 8(dst), 1, 0 } #endif } -// regalloc issues -inline void J3DPSMulMtxVec(register MtxP mtx, register SVec* vec, register SVec* dst) { - register f32 fr12; - register f32 fr11; - register f32 fr10; - register f32 fr9; - register f32 fr8; - register f32 fr6; - register f32 fra6; - register f32 fr5; - register f32 fra5; - register f32 fra4; - register f32 fr4; - register f32 fr3; - register f32 fr2; - register f32 fra2; - register f32 fr01; - register f32 fr00; +inline void J3DPSMulMtxVec(register MtxP mtx, register S16Vec* vec, register S16Vec* dst) { #ifdef __MWERKS__ asm { - psq_l fr00, 0(vec), 0, 7 - psq_l fr2, 0(mtx), 0, 0 - psq_l fr01, 4(vec), 1, 7 - ps_mul fr4, fr2, fr00 - psq_l fr3, 8(mtx), 0, 0 - ps_madd fr5, fr3, fr01, fr4 - psq_l fr8, 16(mtx), 0, 0 - ps_sum0 fr6, fr5, fr6, fr5 - psq_l fr9, 24(mtx), 0, 0 - ps_mul fr10, fr8, fr00 - psq_st fr6, 0(dst), 1, 7 - ps_madd fr11, fr9, fr01, fr10 - psq_l fra2, 32(mtx), 0, 0 - ps_sum0 fr12, fr11, fr12, fr11 - psq_l fr3, 40(mtx), 0, 0 - ps_mul fra4, fra2, fr00 - psq_st fr12, 2(dst), 1, 7 - ps_madd fra5, fr3, fr01, fra4 - ps_sum0 fra6, fra5, fra6, fra5 - psq_st fra6, 4(dst), 1, 7 + psq_l f0, 0(vec), 0, 7 + psq_l f2, 0(mtx), 0, 0 + psq_l f1, 4(vec), 1, 7 + ps_mul f4, f2, f0 + psq_l f3, 8(mtx), 0, 0 + ps_madd f5, f3, f1, f4 + psq_l f8, 16(mtx), 0, 0 + ps_sum0 f6, f5, f6, f5 + psq_l f9, 24(mtx), 0, 0 + ps_mul f10, f8, f0 + psq_st f6, 0(dst), 1, 7 + ps_madd f11, f9, f1, f10 + psq_l f2, 32(mtx), 0, 0 + ps_sum0 f12, f11, f12, f11 + psq_l f3, 40(mtx), 0, 0 + ps_mul f4, f2, f0 + psq_st f12, 2(dst), 1, 7 + ps_madd f5, f3, f1, f4 + ps_sum0 f6, f5, f6, f5 + psq_st f6, 4(dst), 1, 7 } #endif } // regalloc issues inline void J3DPSMulMtxVec(register Mtx3P mtx, register Vec* vec, register Vec* dst) { - register f32* punit; - register f32 unit; - register f32 fr12; - register f32 fr11; - register f32 fr10; - register f32 fr9; - register f32 fr8; - register f32 fr6; - register f32 fr5; - register f32 fr4; - register f32 fr3; - register f32 fr2; - register f32 fr01; - register f32 fr00; #ifdef __MWERKS__ asm { - lis punit, PSMulUnit01@ha - psq_l fr00, 0(vec), 0, 0 - addi punit, punit, PSMulUnit01@l - psq_l fr2, 0(mtx), 0, 0 - psq_l unit, 0(punit), 0, 0 - psq_l fr01, 8(vec), 1, 0 - ps_add fr01, unit, fr01 - psq_l fr3, 8(mtx), 1, 0 - ps_mul fr4, fr2, fr00 - psq_l fr8, 12(mtx), 0, 0 - ps_madd fr5, fr3, fr01, fr4 - ps_sum0 fr6, fr5, fr6, fr5 - psq_l fr9, 20(mtx), 1, 0 - ps_mul fr10, fr8, fr00 - psq_st fr6, 0(dst), 1, 0 - ps_madd fr11, fr9, fr01, fr10 - psq_l fr2, 24(mtx), 0, 0 - ps_sum0 fr12, fr11, fr12, fr11 - psq_l fr3, 32(mtx), 1, 0 - ps_mul fr4, fr2, fr00 - psq_st fr12, 4(dst), 1, 0 - ps_madd fr5, fr3, fr01, fr4 - ps_sum0 fr6, fr5, fr6, fr5 - psq_st fr6, 8(dst), 1, 0 + lis r6, PSMulUnit01@ha + psq_l f0, 0(vec), 0, 0 + addi r6, r6, PSMulUnit01@l + psq_l f2, 0(mtx), 0, 0 + psq_l f13, 0(r6), 0, 0 + psq_l f1, 8(vec), 1, 0 + ps_add f1, f13, f1 + psq_l f3, 8(mtx), 1, 0 + ps_mul f4, f2, f0 + psq_l f8, 12(mtx), 0, 0 + ps_madd f5, f3, f1, f4 + ps_sum0 f6, f5, f6, f5 + psq_l f9, 20(mtx), 1, 0 + ps_mul f10, f8, f0 + psq_st f6, 0(dst), 1, 0 + ps_madd f11, f9, f1, f10 + psq_l f2, 24(mtx), 0, 0 + ps_sum0 f12, f11, f12, f11 + psq_l f3, 32(mtx), 1, 0 + ps_mul f4, f2, f0 + psq_st f12, 4(dst), 1, 0 + ps_madd f5, f3, f1, f4 + ps_sum0 f6, f5, f6, f5 + psq_st f6, 8(dst), 1, 0 } #endif } // regalloc issues -inline void J3DPSMulMtxVec(register Mtx3P mtx, register SVec* vec, register SVec* dst) { - register f32* punit; - register f32 unit; - register f32 fr6; - register f32 fr5; - register f32 fr4; - register f32 fr3; - register f32 fr2; - register f32 fr01; - register f32 fr00; +inline void J3DPSMulMtxVec(register Mtx3P mtx, register S16Vec* vec, register S16Vec* dst) { #ifdef __MWERKS__ asm { - lis punit, PSMulUnit01@ha - psq_l fr00, 0(vec), 0, 7 - addi punit, punit, PSMulUnit01@l - psq_l fr2, 0(mtx), 0, 0 - psq_l unit, 0(punit), 0, 0 - psq_l fr01, 4(vec), 1, 7 - ps_add fr01, unit, fr01 - psq_l fr3, 8(mtx), 1, 0 - ps_mul fr4, fr2, fr00 - psq_l fr2, 12(mtx), 0, 0 - ps_madd fr5, fr3, fr01, fr4 - ps_sum0 fr6, fr5, fr6, fr5 - psq_l fr3, 20(mtx), 1, 0 - ps_mul fr4, fr2, fr00 - psq_st fr6, 0(dst), 1, 7 - ps_madd fr5, fr3, fr01, fr4 - psq_l fr2, 24(mtx), 0, 0 - ps_sum0 fr6, fr5, fr6, fr5 - psq_l fr3, 32(mtx), 1, 0 - ps_mul fr4, fr2, fr00 - psq_st fr6, 2(dst), 1, 7 - ps_madd fr5, fr3, fr01, fr4 - ps_sum0 fr6, fr5, fr6, fr5 - psq_st fr6, 4(dst), 1, 7 + lis r6, PSMulUnit01@ha + psq_l f0, 0(vec), 0, 7 + addi r6, r6, PSMulUnit01@l + psq_l f2, 0(mtx), 0, 0 + psq_l f13, 0(r6), 0, 0 + psq_l f1, 4(vec), 1, 7 + ps_add f1, f13, f1 + psq_l f3, 8(mtx), 1, 0 + ps_mul f4, f2, f0 + psq_l f8, 12(mtx), 0, 0 + ps_madd f5, f3, f1, f4 + ps_sum0 f6, f5, f6, f5 + psq_l f9, 20(mtx), 1, 0 + ps_mul f10, f8, f0 + psq_st f6, 0(dst), 1, 7 + ps_madd f11, f9, f1, f10 + psq_l f2, 24(mtx), 0, 0 + ps_sum0 f12, f11, f12, f11 + psq_l f3, 32(mtx), 1, 0 + ps_mul f4, f2, f0 + psq_st f12, 2(dst), 1, 7 + ps_madd f5, f3, f1, f4 + ps_sum0 f6, f5, f6, f5 + psq_st f6, 4(dst), 1, 7 } #endif } diff --git a/include/dolphin/mtx/vec.h b/include/dolphin/mtx/vec.h index 54ced2cbd..48f0bbfc8 100644 --- a/include/dolphin/mtx/vec.h +++ b/include/dolphin/mtx/vec.h @@ -19,6 +19,10 @@ typedef struct SVec { s16 x, y, z; } SVec; +typedef struct S16Vec { + s16 x, y, z; +} S16Vec; + void C_VECAdd(const Vec* a, const Vec* b, Vec* ab); void PSVECAdd(const Vec* a, const Vec* b, Vec* ab); void C_VECSubtract(const Vec* a, const Vec* b, Vec* a_b); diff --git a/src/JSystem/J3DGraphAnimator/J3DCluster.cpp b/src/JSystem/J3DGraphAnimator/J3DCluster.cpp index b7643d765..6b5197189 100644 --- a/src/JSystem/J3DGraphAnimator/J3DCluster.cpp +++ b/src/JSystem/J3DGraphAnimator/J3DCluster.cpp @@ -10,8 +10,10 @@ #include "JSystem/J3DGraphAnimator/J3DSkinDeform.h" #include "JSystem/J3DGraphAnimator/J3DAnimation.h" #include "JSystem/JKernel/JKRHeap.h" +#include "JSystem/J3DAssert.h" #include "dolphin/os/OS.h" #include "string.h" +#include "stdint.h" /* 802F37C4-802F37E4 .text clear__13J3DDeformDataFv */ void J3DDeformData::clear() { @@ -75,8 +77,8 @@ void J3DDeformer::deform(J3DVertexBuffer* vtx, u16 idx, f32* weightList) { /* Nonmatching */ if (checkFlag(2) && vtx->getVertexData()->getVtxPosType() == GX_F32) { J3DCluster* cluster = mDeformData->getClusterPointer(idx); - s32 posNum = cluster->mPosNum; - s32 keyNum = cluster->mKeyNum; + int posNum = cluster->mPosNum; + int keyNum = cluster->mKeyNum; u16 keyStart = 0; for (u16 i = 0; i < idx; i++) @@ -88,7 +90,7 @@ void J3DDeformer::deform(J3DVertexBuffer* vtx, u16 idx, f32* weightList) { f32* vtxPosDst = (f32*)vtx->getVtxPosArrayPointer(0); f32* vtxPosSrc = (f32*)mDeformData->getVtxPos(); - for (s32 i = 0; i < posNum; i++) { + for (int i = 0; i < posNum; i++) { f32* vtx = &vtxPosDst[cluster->mPosDstIdx[i] * 3]; vtx[0] = 0.0f; vtx[1] = 0.0f; @@ -228,8 +230,6 @@ J3DSkinDeform::J3DSkinDeform() { /* 802F40F0-802F44E8 .text initMtxIndexArray__13J3DSkinDeformFP12J3DModelData */ int J3DSkinDeform::initMtxIndexArray(J3DModelData* modelData) { - /* Nonmatching - operand swap */ - if (mPosUseMtx != NULL && mNrmUseMtx != NULL) return J3DErrType_Success; @@ -271,18 +271,26 @@ int J3DSkinDeform::initMtxIndexArray(J3DModelData* modelData) { posOffs = vtxSize; if (desc->type != GX_INDEX16) { OSReport(" Invlid Data : CPU Pipeline process GX_INDEX16 Data Only\n"); + #if VERSION == VERSION_DEMO + return; // !@bug: No return value + #endif } break; case GX_VA_NRM: nrmOffs = vtxSize; if (desc->type != GX_INDEX16) { OSReport(" Invlid Data : CPU Pipeline process GX_INDEX16 Data Only\n"); + #if VERSION == VERSION_DEMO + return; // !@bug: No return value + #endif } break; case GX_VA_TEX0: + #if VERSION > VERSION_DEMO if (desc->type != GX_INDEX16) { OSReport(" Invlid Data : CPU Pipeline process GX_INDEX16 Data Only\n"); } + #endif break; default: break; @@ -296,18 +304,20 @@ int J3DSkinDeform::initMtxIndexArray(J3DModelData* modelData) { u8* displayListStart = modelData->getShapeNodePointer(i)->getShapeDraw(j)->getDisplayList(); for (u8* dl = displayListStart; (dl - displayListStart) < modelData->getShapeNodePointer(i)->getShapeDraw(j)->getDisplayListSize(); ) { - u8 cmd = dl[0]; + u8 cmd = *dl; + dl++; if (cmd != GX_TRIANGLEFAN && cmd != GX_TRIANGLESTRIP) break; - u16 vtxCount = *(u16*)&dl[1]; + int vtxCount = *(u16*)dl; + dl += 2; u16 useMtxIdxBuf[10]; - for (s32 k = 0; k < vtxCount; k++) { - u8* vtx = &dl[3 + vtxSize * k]; - u8 pnmtxIdx = (u32)*(u8*)&vtx[pnmtxIdxOffs] / 3; - u16 posIdx = *(u16*)&vtx[posOffs]; - u16 nrmIdx = *(u16*)&vtx[nrmOffs]; + for (int k = 0; k < vtxCount; k++) { + u8* src = &dl[vtxSize * k]; + u8 pnmtxIdx = (u32)*(u8*)&src[pnmtxIdxOffs] / 3; + u16 posIdx = *(u16*)&src[posOffs]; + u16 nrmIdx = *(u16*)&src[nrmOffs]; u16 useMtxIdx = shapeMtx->getUseMtxIndex(pnmtxIdx); if (useMtxIdx == 0xFFFF) { @@ -321,8 +331,7 @@ int J3DSkinDeform::initMtxIndexArray(J3DModelData* modelData) { mNrmUseMtx[nrmIdx] = useMtxIdx; } - dl += vtxSize * vtxCount; - dl += 3; + dl = (u8*)dl + vtxSize * vtxCount; } if (nrmOffs == -1) { @@ -342,69 +351,66 @@ int J3DSkinDeform::initMtxIndexArray(J3DModelData* modelData) { return J3DErrType_Success; } -/* 802F44E8-802F4734 .text changeFastSkinDL__13J3DSkinDeformFP12J3DModelData */ -void J3DSkinDeform::changeFastSkinDL(J3DModelData* modelData) { - /* Nonmatching */ - for (u16 i = 0; i < modelData->getShapeNum(); i++) { - int size[4] = { 0, 1, 1, 2 }; +void J3DSkinDeform::changeFastSkinDL(J3DModelData* pModelData) { + J3D_ASSERT_NULLPTR(740, pModelData != NULL); + for (u16 i = 0; i < pModelData->getShapeNum(); i++) { + u32 kSize[4] = {0,1,1,2}; int pnmtxIdxOffs = -1; int vtxSize = 0; - for (GXVtxDescList* desc = modelData->getShapeNodePointer(i)->getVtxDesc(); desc->attr != GX_VA_NULL; desc++) { - if (desc->attr == GX_VA_PNMTXIDX) { + J3DShape* pShapeNode = pModelData->getShapeNodePointer(i); + for (GXVtxDescList* vtxDesc = pShapeNode->getVtxDesc(); vtxDesc->attr != GX_VA_NULL; vtxDesc++) { + if (vtxDesc->attr == GX_VA_PNMTXIDX) { pnmtxIdxOffs = vtxSize; } - - vtxSize += size[desc->type]; + vtxSize += kSize[vtxDesc->type]; } if (pnmtxIdxOffs != -1) { - for (u16 j = 0; j < modelData->getShapeNodePointer(i)->getMtxGroupNum(); j++) { - J3DShapeDraw* shapeDraw = modelData->getShapeNodePointer(i)->getShapeDraw(j); - u8* displayListStart = shapeDraw->getDisplayList(); + for (u16 j = 0; j < (u16)pShapeNode->getMtxGroupNum(); j++) { + u8* displayListStart = pShapeNode->getShapeDraw(j)->getDisplayList(); u8* dl = displayListStart; u8* dst = displayListStart; - - for (; (dl - displayListStart) < shapeDraw->getDisplayListSize(); ) { - u8 cmd = dl[0]; - *dst = cmd; - dst += 1; + while ((dl - displayListStart) < pShapeNode->getShapeDraw(j)->getDisplayListSize()) { + u8 cmd = *dl; + dl++; + *dst++ = cmd; if (cmd != GX_TRIANGLEFAN && cmd != GX_TRIANGLESTRIP) break; - u32 vtxCount = *(u16*)&dl[1]; + int vtxCount = *(u16*)dl; + dl += 2; *(u16*)dst = vtxCount; dst += 2; - u32 vtxSizeDst = vtxSize - 1; // remove GX_VA_PNMTXIDX - for (s32 k = 0; k < vtxCount; k++) { - memcpy(dst, &dl[vtxSize * k + 3 + 1], vtxSizeDst); - dst += vtxSizeDst; + for (int k = 0; k < vtxCount; k++) { + u8* src = &dl[vtxSize * k]; + memcpy(dst, src + 1, (int)(vtxSize - 1)); // The -1 is to remove GX_VA_PNMTXIDX + dst += (int)(vtxSize - 1); } - - dl += vtxSize * vtxCount + 3; + dl = (u8*)dl + vtxSize * vtxCount; } - u32 newSize = ((u32)dst + 0x1F & ~0x1F) - (u32)displayListStart; - - for (; (dst - displayListStart) < modelData->getShapeNodePointer(i)->getShapeDraw(j)->getDisplayListSize();) { + int dlistSize = ((intptr_t)dst - (intptr_t)displayListStart + 0x1f) & ~0x1f; + while ((intptr_t)dst - (intptr_t)displayListStart < pShapeNode->getShapeDraw(j)->getDisplayListSize()) { *dst++ = 0; } - shapeDraw->setDisplayListSize(newSize); - DCStoreRange(displayListStart, shapeDraw->getDisplayListSize()); + pShapeNode->getShapeDraw(j)->setDisplayListSize(dlistSize); + DCStoreRange(displayListStart, pShapeNode->getShapeDraw(j)->getDisplayListSize()); } } } - for (u16 i = 0; i < modelData->getShapeNum(); i++) { - J3DShape* shape = modelData->getShapeNodePointer(i); + for (u16 i = 0; i < pModelData->getShapeNum(); i++) { + J3DShape* shape = pModelData->getShapeNodePointer(i); GXVtxDescList* desc = shape->getVtxDesc(); GXVtxDescList* descDst = desc; for (; desc->attr != GX_VA_NULL; desc++) { if (desc->attr != GX_VA_PNMTXIDX) { - *descDst = *desc; + descDst->attr = desc->attr; + descDst->type = desc->type; descDst++; } } @@ -434,23 +440,18 @@ void J3DSkinDeform::calcNrmMtx(J3DModel* model) { } } -#ifdef DEBUG -#pragma push -#pragma optimization_level 1 -#endif /* 802F4850-802F4974 .text deformVtxPos_F32__13J3DSkinDeformCFP8J3DModel */ void J3DSkinDeform::deformVtxPos_F32(J3DModel* model) const { - /* Nonmatching - J3DPSMulMtxVec regalloc */ Mtx* mtxArr[2]; mtxArr[0] = (Mtx*)model->getAnmMtx(0); mtxArr[1] = (Mtx*)model->getWeightAnmMtx(0); model->getVertexBuffer()->swapTransformedVtxPos(); - s32 vtxNum = model->getModelData()->getVtxNum(); + int vtxNum = model->getModelData()->getVtxNum(); Vec* curVtxPos = (Vec*)model->getCurrentVtxPos(); Vec* transformedVtxPos = (Vec*)model->getVertexBuffer()->getTransformedVtxPos(0); - for (s32 i = 0; i < vtxNum; i++) { + for (int i = 0; i < vtxNum; i++) { Mtx* mtx = mtxArr[model->getModelData()->getDrawMtxFlag(mPosUseMtx[i])]; J3DPSMulMtxVec(mtx[model->getModelData()->getDrawMtxIndex(mPosUseMtx[i])], &curVtxPos[i], &transformedVtxPos[i]); } @@ -458,13 +459,9 @@ void J3DSkinDeform::deformVtxPos_F32(J3DModel* model) const { DCStoreRange(model->getVertexBuffer()->getTransformedVtxPos(0), model->getModelData()->getVtxNum() * sizeof(Vec)); model->setCurrentVtxPos(transformedVtxPos); } -#ifdef DEBUG -#pragma pop -#endif /* 802F4974-802F4AB4 .text deformVtxPos_S16__13J3DSkinDeformCFP8J3DModel */ void J3DSkinDeform::deformVtxPos_S16(J3DModel* model) const { - /* Nonmatching - J3DPSMulMtxVec regalloc */ Mtx* mtxArr[2]; mtxArr[0] = (Mtx*)model->getAnmMtx(0); mtxArr[1] = (Mtx*)model->getWeightAnmMtx(0); @@ -472,16 +469,13 @@ void J3DSkinDeform::deformVtxPos_S16(J3DModel* model) const { J3DGQRSetup7(model->getModelData()->getVertexData().getVtxPosFrac(), 7, model->getModelData()->getVertexData().getVtxPosFrac(), 7); model->getVertexBuffer()->swapTransformedVtxPos(); - s32 vtxNum = model->getModelData()->getVtxNum(); - SVec* curVtxPos = (SVec*)model->getCurrentVtxPos(); - SVec* transformedVtxPos = (SVec*)model->getVertexBuffer()->getTransformedVtxPos(0); + int vtxNum = model->getModelData()->getVtxNum(); + S16Vec* curVtxPos = (S16Vec*)model->getCurrentVtxPos(); + S16Vec* transformedVtxPos = (S16Vec*)model->getVertexBuffer()->getTransformedVtxPos(0); - for (s32 i = 0; i < vtxNum; i++) { + for (int i = 0; i < vtxNum; i++) { Mtx* mtx = mtxArr[model->getModelData()->getDrawMtxFlag(mPosUseMtx[i])]; -// TODO: this line doesn't compile on debug -#ifndef DEBUG J3DPSMulMtxVec(mtx[model->getModelData()->getDrawMtxIndex(mPosUseMtx[i])], &curVtxPos[i], &transformedVtxPos[i]); -#endif } DCStoreRange(model->getVertexBuffer()->getTransformedVtxPos(0), model->getModelData()->getVtxNum() * sizeof(SVec)); @@ -490,14 +484,13 @@ void J3DSkinDeform::deformVtxPos_S16(J3DModel* model) const { /* 802F4AB4-802F4BB8 .text deformVtxNrm_F32__13J3DSkinDeformCFP8J3DModel */ void J3DSkinDeform::deformVtxNrm_F32(J3DModel* model) const { - /* Nonmatching - J3DPSMulMtxVec regalloc */ model->getVertexBuffer()->swapTransformedVtxNrm(); - s32 vtxNum = model->getModelData()->getNrmNum(); + int vtxNum = model->getModelData()->getNrmNum(); Vec* curVtxNrm = (Vec*)model->getCurrentVtxNrm(); Vec* transformedVtxNrm = (Vec*)model->getVertexBuffer()->getTransformedVtxNrm(0); - for (s32 i = 0; i < vtxNum; i++) { + for (int i = 0; i < vtxNum; i++) { J3DPSMulMtxVec(mNrmMtx[mNrmUseMtx[i]], &curVtxNrm[i], &transformedVtxNrm[i]); } @@ -507,15 +500,14 @@ void J3DSkinDeform::deformVtxNrm_F32(J3DModel* model) const { /* 802F4BB8-802F4CD8 .text deformVtxNrm_S16__13J3DSkinDeformCFP8J3DModel */ void J3DSkinDeform::deformVtxNrm_S16(J3DModel* model) const { - /* Nonmatching - J3DPSMulMtxVec regalloc */ J3DGQRSetup7(model->getModelData()->getVertexData().getVtxNrmFrac(), 7, model->getModelData()->getVertexData().getVtxNrmFrac(), 7); model->getVertexBuffer()->swapTransformedVtxNrm(); - s32 vtxNum = model->getModelData()->getNrmNum(); - SVec* curVtxNrm = (SVec*)model->getCurrentVtxNrm(); - SVec* transformedVtxNrm = (SVec*)model->getVertexBuffer()->getTransformedVtxNrm(0); + int vtxNum = model->getModelData()->getNrmNum(); + S16Vec* curVtxNrm = (S16Vec*)model->getCurrentVtxNrm(); + S16Vec* transformedVtxNrm = (S16Vec*)model->getVertexBuffer()->getTransformedVtxNrm(0); - for (s32 i = 0; i < vtxNum; i++) { + for (int i = 0; i < vtxNum; i++) { J3DPSMulMtxVec(mNrmMtx[mNrmUseMtx[i]], &curVtxNrm[i], &transformedVtxNrm[i]); } diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/cstdint.h b/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/cstdint.h new file mode 100644 index 000000000..e9530a60b --- /dev/null +++ b/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/cstdint.h @@ -0,0 +1,30 @@ +#ifndef MSL_CSTDINT_H_ +#define MSL_CSTDINT_H_ + +#ifdef __cplusplus +namespace std { +extern "C" { +#endif + +typedef unsigned char uint8_t; +typedef unsigned short uint16_t; +typedef unsigned long uint32_t; + +typedef signed char int8_t; +typedef short int16_t; +typedef long int32_t; + +typedef unsigned long long uint64_t; +typedef long long int64_t; + +typedef uint32_t uintptr_t; +typedef int32_t intptr_t; + +typedef long long intmax_t; + +#ifdef __cplusplus +}; +} +#endif + +#endif diff --git a/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/stdint.h b/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/stdint.h new file mode 100644 index 000000000..e6ed832a3 --- /dev/null +++ b/src/PowerPC_EABI_Support/MSL/MSL_C++/MSL_Common/Include/stdint.h @@ -0,0 +1,27 @@ +#ifndef STDINT_H +#define STDINT_H +#ifndef MSL_STDINT_H_ +#define MSL_STDINT_H_ + +#include + +#ifdef __cplusplus + using std::uint8_t; + using std::uint16_t; + using std::uint32_t; + + using std::int8_t; + using std::int16_t; + using std::int32_t; + + using std::uint64_t; + using std::int64_t; + + using std::uintptr_t; + using std::intptr_t; +#endif + +#endif + + +#endif /* STDINT_H */