diff options
| author | lepelog <25211966+lepelog@users.noreply.github.com> | 2022-01-04 18:18:23 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-01-04 18:18:23 +0100 |
| commit | da3d98b67a9e54260a28fb8e49e9ce8dbbeb7449 (patch) | |
| tree | e1fd0c8c3fb452d0f3ad512702b181c52abe65ad /libs/JSystem/J2DGraph/J2DAnimation.cpp | |
| parent | f4a3c80af341bcb1dac30a4dcd4dc5797f9adcea (diff) | |
J2DAnimation (#173)
* ok
* naming stuff
Diffstat (limited to 'libs/JSystem/J2DGraph/J2DAnimation.cpp')
| -rw-r--r-- | libs/JSystem/J2DGraph/J2DAnimation.cpp | 1265 |
1 files changed, 826 insertions, 439 deletions
diff --git a/libs/JSystem/J2DGraph/J2DAnimation.cpp b/libs/JSystem/J2DGraph/J2DAnimation.cpp index ac8f49ae3e..fcb85ac1b7 100644 --- a/libs/JSystem/J2DGraph/J2DAnimation.cpp +++ b/libs/JSystem/J2DGraph/J2DAnimation.cpp @@ -4,527 +4,914 @@ // #include "JSystem/J2DGraph/J2DAnimation.h" +#include "JSystem/J2DGraph/J2DScreen.h" +#include "JSystem/J3DGraphBase/J3DTransform.h" +#include "JSystem/JUtility/JUTResource.h" #include "dol2asm.h" #include "dolphin/types.h" -// -// Types: -// - -struct JKRArchive {}; - -struct JUTResReference { - /* 802DE120 */ void getResource(void const*, u32, JKRArchive*); -}; - -struct J3DTransformInfo {}; - -struct J3DTextureSRTInfo {}; - -struct J3DAnmKeyTableBase {}; - -struct J2DScreen { - static u8 mDataManage[4 + 4 /* padding */]; -}; - -struct J2DResReference { - /* 8030CF10 */ void getResReference(u16) const; - /* 8030CF44 */ void getName(u16) const; -}; - -struct J2DDataManage { - /* 8030CE18 */ void get(char const*); -}; - -// -// Forward References: -// - -extern "C" void getTransform__19J2DAnmTransformFullCFUsP16J3DTransformInfo(); -extern "C" void calcTransform__18J2DAnmTransformKeyCFfUsP16J3DTransformInfo(); -extern "C" void searchUpdateMaterialID__11J2DAnmColorFP9J2DScreen(); -extern "C" void getColor__15J2DAnmColorFullCFUsP8_GXColor(); -extern "C" void getColor__14J2DAnmColorKeyCFUsP8_GXColor(); -extern "C" void getColor__18J2DAnmVtxColorFullCFUcUsP8_GXColor(); -extern "C" void getColor__17J2DAnmVtxColorKeyCFUcUsP8_GXColor(); -extern "C" void calcTransform__19J2DAnmTextureSRTKeyCFfUsP17J3DTextureSRTInfo(); -extern "C" void searchUpdateMaterialID__19J2DAnmTextureSRTKeyFP9J2DScreen(); -extern "C" void searchUpdateMaterialID__16J2DAnmTexPatternFP9J2DScreen(); -extern "C" void getTexNo__16J2DAnmTexPatternCFUsPUs(); -extern "C" void getResTIMG__16J2DAnmTexPatternCFUs(); -extern "C" void getPalette__16J2DAnmTexPatternCFUs(); -extern "C" void getVisibility__20J2DAnmVisibilityFullCFUsPUc(); -extern "C" void getTevColorReg__15J2DAnmTevRegKeyCFUsP11_GXColorS10(); -extern "C" void getTevKonstReg__15J2DAnmTevRegKeyCFUsP8_GXColor(); -extern "C" void searchUpdateMaterialID__15J2DAnmTevRegKeyFP9J2DScreen(); -extern "C" void func_8030C77C(void* _this, f32, J3DAnmKeyTableBase*, s16*); -extern "C" void func_8030C9B0(void* _this, f32, J3DAnmKeyTableBase*, f32*); -extern "C" void __ct__Q216J2DAnmTexPattern27J2DAnmTexPatternTIMGPointerFv(); -extern "C" void __dt__Q216J2DAnmTexPattern27J2DAnmTexPatternTIMGPointerFv(); -extern "C" void __dt__16J2DAnmTexPatternFv(); -extern "C" void __dt__17J2DAnmVtxColorKeyFv(); -extern "C" void __dt__18J2DAnmVtxColorFullFv(); -extern "C" void __dt__15J2DAnmColorFullFv(); -extern "C" void getTransform__18J2DAnmTransformKeyCFUsP16J3DTransformInfo(); -extern "C" void __dt__19J2DAnmTransformFullFv(); - -// -// External References: -// - -extern "C" void searchUpdateMaterialID__10J2DAnmBaseFP9J2DScreen(); -extern "C" void __dt__15J2DAnmTevRegKeyFv(); -extern "C" void __dt__19J2DAnmTextureSRTKeyFv(); -extern "C" void __dt__11J2DAnmColorFv(); -extern "C" void __dt__18J2DAnmTransformKeyFv(); -extern "C" void __dt__14J2DAnmColorKeyFv(); -extern "C" void* __nw__FUl(); -extern "C" void* __nwa__FUl(); -extern "C" void __dl__FPv(); -extern "C" void getResource__15JUTResReferenceFPCvUlP10JKRArchive(); -extern "C" void storeTLUT__10JUTPaletteF7_GXTlut10_GXTlutFmt15JUTTransparencyUsPv(); -extern "C" void getIndex__10JUTNameTabCFPCc(); -extern "C" void getName__10JUTNameTabCFUs(); -extern "C" void getColor__11J2DAnmColorCFUsP8_GXColor(); -extern "C" void get__13J2DDataManageFPCc(); -extern "C" void getResReference__15J2DResReferenceCFUs(); -extern "C" void getName__15J2DResReferenceCFUs(); -extern "C" void __destroy_new_array(); -extern "C" void __construct_new_array(); -extern "C" void _savegpr_26(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_26(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_29(); -extern "C" extern void* __vt__10J2DAnmBase[4]; -extern "C" extern void* __vt__15J2DAnmTransform[5 + 4 /* padding */]; -extern "C" extern void* __vt__10JUTNameTab[3]; -extern "C" extern void* __vt__14J2DAnmVtxColor[5]; -extern "C" u8 mDataManage__9J2DScreen[4 + 4 /* padding */]; +f32 J2DGetKeyFrameInterpolationf(f32 param_0, J3DAnmKeyTableBase* param_1, f32* param_2); +f32 J2DGetKeyFrameInterpolations(f32 param_0, J3DAnmKeyTableBase* param_1, s16* param_2); // // Declarations: // -/* ############################################################################################## */ -/* 80456300-80456308 004900 0004+04 10/10 0/0 0/0 .sdata2 @1573 */ -SECTION_SDATA2 static f32 lit_1573[1 + 1 /* padding */] = { - 0.0f, - /* padding */ - 0.0f, -}; - -/* 80456308-80456310 004908 0008+00 5/5 0/0 0/0 .sdata2 @1576 */ -SECTION_SDATA2 static f64 lit_1576 = 4503599627370496.0 /* cast u32 to float */; - /* 8030A590-8030AAFC 304ED0 056C+00 1/0 0/0 0/0 .text * getTransform__19J2DAnmTransformFullCFUsP16J3DTransformInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmTransformFull::getTransform(u16 param_0, J3DTransformInfo* param_1) const { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/getTransform__19J2DAnmTransformFullCFUsP16J3DTransformInfo.s" +void J2DAnmTransformFull::getTransform(u16 param_0, J3DTransformInfo* transformInfo) const { + u16 idx = (param_0 * 3); + J2DAnmTransformFullInfo* xPart = &mTableInfo[idx]; + J2DAnmTransformFullInfo* yPart = &mTableInfo[idx + 1]; + J2DAnmTransformFullInfo* zPart = &mTableInfo[idx + 2]; + u16 xMaxFrame = xPart->mScaleMaxFrame; + if (getFrame() < 0) { + transformInfo->mScale.x = mScaleValues[xPart->mScaleOffset]; + } else if (getFrame() >= xMaxFrame) { + transformInfo->mScale.x = mScaleValues[(xPart->mScaleOffset + (xMaxFrame - 1))]; + } else { + transformInfo->mScale.x = mScaleValues[(xPart->mScaleOffset + (int)getFrame())]; + } + u16 yMaxFrame = yPart->mScaleMaxFrame; + if (getFrame() < 0) { + transformInfo->mScale.y = mScaleValues[yPart->mScaleOffset]; + } else if (getFrame() >= yMaxFrame) { + transformInfo->mScale.y = mScaleValues[(yPart->mScaleOffset + (yMaxFrame - 1))]; + } else { + transformInfo->mScale.y = mScaleValues[(yPart->mScaleOffset + (int)getFrame())]; + } + u16 zMaxFrame = zPart->mScaleMaxFrame; + if (getFrame() < 0) { + transformInfo->mScale.z = mScaleValues[zPart->mScaleOffset]; + } else if (getFrame() >= zMaxFrame) { + transformInfo->mScale.z = mScaleValues[(zPart->mScaleOffset + (zMaxFrame - 1))]; + } else { + transformInfo->mScale.z = mScaleValues[(zPart->mScaleOffset + (int)getFrame())]; + } + xMaxFrame = xPart->mRotationMaxFrame; + if (getFrame() < 0) { + transformInfo->mRotation.x = mRotationValues[xPart->mRotationOffset]; + } else if (getFrame() >= xMaxFrame) { + transformInfo->mRotation.x = mRotationValues[(xPart->mRotationOffset + (xMaxFrame - 1))]; + } else { + transformInfo->mRotation.x = mRotationValues[(xPart->mRotationOffset + (int)getFrame())]; + } + yMaxFrame = yPart->mRotationMaxFrame; + if (getFrame() < 0) { + transformInfo->mRotation.y = mRotationValues[yPart->mRotationOffset]; + } else if (getFrame() >= yMaxFrame) { + transformInfo->mRotation.y = mRotationValues[(yPart->mRotationOffset + (yMaxFrame - 1))]; + } else { + transformInfo->mRotation.y = mRotationValues[(yPart->mRotationOffset + (int)getFrame())]; + } + zMaxFrame = zPart->mRotationMaxFrame; + if (getFrame() < 0) { + transformInfo->mRotation.z = mRotationValues[zPart->mRotationOffset]; + } else if (getFrame() >= zMaxFrame) { + transformInfo->mRotation.z = mRotationValues[(zPart->mRotationOffset + (zMaxFrame - 1))]; + } else { + transformInfo->mRotation.z = mRotationValues[(zPart->mRotationOffset + (int)getFrame())]; + } + xMaxFrame = xPart->mTranslateMaxFrame; + if (getFrame() < 0) { + transformInfo->mTranslate.x = mTranslateValues[xPart->mTranslateOffset]; + } else if (getFrame() >= xMaxFrame) { + transformInfo->mTranslate.x = mTranslateValues[(xPart->mTranslateOffset + (xMaxFrame - 1))]; + } else { + transformInfo->mTranslate.x = mTranslateValues[(xPart->mTranslateOffset + (int)getFrame())]; + } + yMaxFrame = yPart->mTranslateMaxFrame; + if (getFrame() < 0) { + transformInfo->mTranslate.y = mTranslateValues[yPart->mTranslateOffset]; + } else if (getFrame() >= yMaxFrame) { + transformInfo->mTranslate.y = mTranslateValues[(yPart->mTranslateOffset + (yMaxFrame - 1))]; + } else { + transformInfo->mTranslate.y = mTranslateValues[(yPart->mTranslateOffset + (int)getFrame())]; + } + zMaxFrame = zPart->mTranslateMaxFrame; + if (getFrame() < 0) { + transformInfo->mTranslate.z = mTranslateValues[zPart->mTranslateOffset]; + } else if (getFrame() >= zMaxFrame) { + transformInfo->mTranslate.z = mTranslateValues[(zPart->mTranslateOffset + (zMaxFrame - 1))]; + } else { + transformInfo->mTranslate.z = mTranslateValues[(zPart->mTranslateOffset + (int)getFrame())]; + } } -#pragma pop - -/* ############################################################################################## */ -/* 80456310-80456314 004910 0004+00 2/2 0/0 0/0 .sdata2 @1619 */ -SECTION_SDATA2 static f32 lit_1619 = 1.0f; /* 8030AAFC-8030AF24 30543C 0428+00 1/0 0/0 0/0 .text * calcTransform__18J2DAnmTransformKeyCFfUsP16J3DTransformInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmTransformKey::calcTransform(f32 param_0, u16 param_1, - J3DTransformInfo* param_2) const { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/calcTransform__18J2DAnmTransformKeyCFfUsP16J3DTransformInfo.s" +void J2DAnmTransformKey::calcTransform(f32 param_0, u16 param_1, + J3DTransformInfo* transformInfo) const { + u16 idx = param_1 * 3; + J2DAnmTransformKeyInfo* xInf = &mInfoTable[idx]; + J2DAnmTransformKeyInfo* yInf = &mInfoTable[idx + 1]; + J2DAnmTransformKeyInfo* zInf = &mInfoTable[idx + 2]; + switch (xInf->mScaleInfo.mMaxFrame) { + case 0: + transformInfo->mScale.x = 1; + break; + case 1: + transformInfo->mScale.x = mScaleValues[xInf->mScaleInfo.mOffset]; + break; + default: + transformInfo->mScale.x = J2DGetKeyFrameInterpolationf( + param_0, &xInf->mScaleInfo, &mScaleValues[xInf->mScaleInfo.mOffset]); + } + switch (yInf->mScaleInfo.mMaxFrame) { + case 0: + transformInfo->mScale.y = 1; + break; + case 1: + transformInfo->mScale.y = mScaleValues[yInf->mScaleInfo.mOffset]; + break; + default: + transformInfo->mScale.y = J2DGetKeyFrameInterpolationf( + param_0, &yInf->mScaleInfo, &mScaleValues[yInf->mScaleInfo.mOffset]); + } + switch (zInf->mScaleInfo.mMaxFrame) { + case 0: + transformInfo->mScale.z = 1; + break; + case 1: + transformInfo->mScale.z = mScaleValues[zInf->mScaleInfo.mOffset]; + break; + default: + transformInfo->mScale.z = J2DGetKeyFrameInterpolationf( + param_0, &zInf->mScaleInfo, &mScaleValues[zInf->mScaleInfo.mOffset]); + } + switch (xInf->mRotationInfo.mMaxFrame) { + case 0: + transformInfo->mRotation.x = 0; + break; + case 1: + transformInfo->mRotation.x = mRotationValues[xInf->mRotationInfo.mOffset] << field_0x24; + break; + default: + transformInfo->mRotation.x = + static_cast<s32>(J2DGetKeyFrameInterpolations( + param_0, &xInf->mRotationInfo, &mRotationValues[xInf->mRotationInfo.mOffset])) + << field_0x24; + } + switch (yInf->mRotationInfo.mMaxFrame) { + case 0: + transformInfo->mRotation.y = 0; + break; + case 1: + transformInfo->mRotation.y = mRotationValues[yInf->mRotationInfo.mOffset] << field_0x24; + break; + default: + transformInfo->mRotation.y = + static_cast<s32>(J2DGetKeyFrameInterpolations( + param_0, &yInf->mRotationInfo, &mRotationValues[yInf->mRotationInfo.mOffset])) + << field_0x24; + } + switch (zInf->mRotationInfo.mMaxFrame) { + case 0: + transformInfo->mRotation.z = 0; + break; + case 1: + transformInfo->mRotation.z = mRotationValues[zInf->mRotationInfo.mOffset] << field_0x24; + break; + default: + transformInfo->mRotation.z = + static_cast<s32>(J2DGetKeyFrameInterpolations( + param_0, &zInf->mRotationInfo, &mRotationValues[zInf->mRotationInfo.mOffset])) + << field_0x24; + } + switch (xInf->mTranslateInfo.mMaxFrame) { + case 0: + transformInfo->mTranslate.x = 0; + break; + case 1: + transformInfo->mTranslate.x = mTranslateValues[xInf->mTranslateInfo.mOffset]; + break; + default: + transformInfo->mTranslate.x = J2DGetKeyFrameInterpolationf( + param_0, &xInf->mTranslateInfo, &mTranslateValues[xInf->mTranslateInfo.mOffset]); + } + switch (yInf->mTranslateInfo.mMaxFrame) { + case 0: + transformInfo->mTranslate.y = 0; + break; + case 1: + transformInfo->mTranslate.y = mTranslateValues[yInf->mTranslateInfo.mOffset]; + break; + default: + transformInfo->mTranslate.y = J2DGetKeyFrameInterpolationf( + param_0, &yInf->mTranslateInfo, &mTranslateValues[yInf->mTranslateInfo.mOffset]); + } + switch (zInf->mTranslateInfo.mMaxFrame) { + case 0: + transformInfo->mTranslate.z = 0; + break; + case 1: + transformInfo->mTranslate.z = mTranslateValues[zInf->mTranslateInfo.mOffset]; + break; + default: + transformInfo->mTranslate.z = J2DGetKeyFrameInterpolationf( + param_0, &zInf->mTranslateInfo, &mTranslateValues[zInf->mTranslateInfo.mOffset]); + } } -#pragma pop /* 8030AF24-8030AFC8 305864 00A4+00 3/0 0/0 0/0 .text * searchUpdateMaterialID__11J2DAnmColorFP9J2DScreen */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmColor::searchUpdateMaterialID(J2DScreen* param_0) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/searchUpdateMaterialID__11J2DAnmColorFP9J2DScreen.s" +void J2DAnmColor::searchUpdateMaterialID(J2DScreen* pScreen) { + if (pScreen != NULL && pScreen->mNameTable != NULL) { + for (u16 entry = 0; entry < this->getUpdateMaterialNum(); entry++) { + s32 idx = pScreen->mNameTable->getIndex(this->field_0x20.getName(entry)); + if (idx != -1) { + mUpdateMaterialID[entry] = idx; + } else { + mUpdateMaterialID[entry] = 0xFFFF; + } + } + } } -#pragma pop /* 8030AFC8-8030B200 305908 0238+00 1/0 0/0 0/0 .text getColor__15J2DAnmColorFullCFUsP8_GXColor */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmColorFull::getColor(u16 param_0, _GXColor* param_1) const { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/getColor__15J2DAnmColorFullCFUsP8_GXColor.s" +void J2DAnmColorFull::getColor(u16 param_0, _GXColor* pColor) const { + J2DAnmColorFullInfo* info = &mInfoTable[param_0]; + u16 maxFrame = info->mRMaxFrame; + if (getFrame() < 0) { + pColor->r = mRValues[info->mROffset]; + } else if (getFrame() >= maxFrame) { + pColor->r = mRValues[info->mROffset + (maxFrame - 1)]; + } else { + pColor->r = mRValues[info->mROffset + (int)getFrame()]; + } + maxFrame = info->mGMaxFrame; + if (getFrame() < 0) { + pColor->g = mGValues[info->mGOffset]; + } else if (getFrame() >= maxFrame) { + pColor->g = mGValues[info->mGOffset + (maxFrame - 1)]; + } else { + pColor->g = mGValues[info->mGOffset + (int)getFrame()]; + } + maxFrame = info->mBMaxFrame; + if (getFrame() < 0) { + pColor->b = mBValues[info->mBOffset]; + } else if (getFrame() >= maxFrame) { + pColor->b = mBValues[info->mBOffset + (maxFrame - 1)]; + } else { + pColor->b = mBValues[info->mBOffset + (int)getFrame()]; + } + maxFrame = info->mAMaxFrame; + if (getFrame() < 0) { + pColor->a = mAValues[info->mAOffset]; + } else if (getFrame() >= maxFrame) { + pColor->a = mAValues[info->mAOffset + (maxFrame - 1)]; + } else { + pColor->a = mAValues[info->mAOffset + (int)getFrame()]; + } } -#pragma pop - -/* ############################################################################################## */ -/* 80456314-80456318 004914 0004+00 3/3 0/0 0/0 .sdata2 @1748 */ -SECTION_SDATA2 static f32 lit_1748 = 255.0f; /* 8030B200-8030B4C4 305B40 02C4+00 1/0 0/0 0/0 .text getColor__14J2DAnmColorKeyCFUsP8_GXColor */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmColorKey::getColor(u16 param_0, _GXColor* param_1) const { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/getColor__14J2DAnmColorKeyCFUsP8_GXColor.s" +void J2DAnmColorKey::getColor(u16 param_0, _GXColor* pColor) const { + J2DAnmColorKeyInfo* info = &mInfoTable[param_0]; + f32 val; + switch (info->mRInfo.mMaxFrame) { + case 0: + pColor->r = 0; + break; + case 1: + pColor->r = mRValues[info->mRInfo.mOffset]; + break; + default: + val = J2DGetKeyFrameInterpolations(getFrame(), &info->mRInfo, + &mRValues[info->mRInfo.mOffset]); + if (val < 0) { + pColor->r = 0; + } else if (val > 255) { + pColor->r = 255; + } else { + OSf32tou8(&val, &pColor->r); + } + } + switch (info->mGInfo.mMaxFrame) { + case 0: + pColor->g = 0; + break; + case 1: + pColor->g = mGValues[info->mGInfo.mOffset]; + break; + default: + val = J2DGetKeyFrameInterpolations(getFrame(), &info->mGInfo, + &mGValues[info->mGInfo.mOffset]); + if (val < 0) { + pColor->g = 0; + } else if (val > 255) { + pColor->g = 255; + } else { + OSf32tou8(&val, &pColor->g); + } + } + switch (info->mBInfo.mMaxFrame) { + case 0: + pColor->b = 0; + break; + case 1: + pColor->b = mBValues[info->mBInfo.mOffset]; + break; + default: + val = J2DGetKeyFrameInterpolations(getFrame(), &info->mBInfo, + &mBValues[info->mBInfo.mOffset]); + if (val < 0) { + pColor->b = 0; + } else if (val > 255) { + pColor->b = 255; + } else { + OSf32tou8(&val, &pColor->b); + } + } + switch (info->mAInfo.mMaxFrame) { + case 0: + pColor->a = 0; + break; + case 1: + pColor->a = mAValues[info->mAInfo.mOffset]; + break; + default: + val = J2DGetKeyFrameInterpolations(getFrame(), &info->mAInfo, + &mAValues[info->mAInfo.mOffset]); + if (val < 0) { + pColor->a = 0; + } else if (val > 255) { + pColor->a = 255; + } else { + OSf32tou8(&val, &pColor->a); + } + } } -#pragma pop /* 8030B4C4-8030B704 305E04 0240+00 1/0 0/0 0/0 .text * getColor__18J2DAnmVtxColorFullCFUcUsP8_GXColor */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmVtxColorFull::getColor(u8 param_0, u16 param_1, _GXColor* param_2) const { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/getColor__18J2DAnmVtxColorFullCFUcUsP8_GXColor.s" +void J2DAnmVtxColorFull::getColor(u8 param_0, u16 param_1, _GXColor* pColor) const { + J2DAnmVtxColorFullInfo* info = &mInfoTable[param_0][param_1]; + u16 maxFrame = info->mRMaxFrame; + if (getFrame() < 0) { + pColor->r = mRValues[info->mROffset]; + } else if (getFrame() >= maxFrame) { + pColor->r = mRValues[info->mROffset + (maxFrame - 1)]; + } else { + pColor->r = mRValues[info->mROffset + (int)getFrame()]; + } + maxFrame = info->mGMaxFrame; + if (getFrame() < 0) { + pColor->g = mGValues[info->mGOffset]; + } else if (getFrame() >= maxFrame) { + pColor->g = mGValues[info->mGOffset + (maxFrame - 1)]; + } else { + pColor->g = mGValues[info->mGOffset + (int)getFrame()]; + } + maxFrame = info->mBMaxFrame; + if (getFrame() < 0) { + pColor->b = mBValues[info->mBOffset]; + } else if (getFrame() >= maxFrame) { + pColor->b = mBValues[info->mBOffset + (maxFrame - 1)]; + } else { + pColor->b = mBValues[info->mBOffset + (int)getFrame()]; + } + maxFrame = info->mAMaxFrame; + if (getFrame() < 0) { + pColor->a = mAValues[info->mAOffset]; + } else if (getFrame() >= maxFrame) { + pColor->a = mAValues[info->mAOffset + (maxFrame - 1)]; + } else { + pColor->a = mAValues[info->mAOffset + (int)getFrame()]; + } } -#pragma pop /* 8030B704-8030B9F0 306044 02EC+00 1/0 0/0 0/0 .text * getColor__17J2DAnmVtxColorKeyCFUcUsP8_GXColor */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmVtxColorKey::getColor(u8 param_0, u16 param_1, _GXColor* param_2) const { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/getColor__17J2DAnmVtxColorKeyCFUcUsP8_GXColor.s" +void J2DAnmVtxColorKey::getColor(u8 param_0, u16 param_1, _GXColor* pColor) const { + J2DAnmVtxColorKeyInfo* info = &mInfoTable[param_0][param_1]; + f32 val; + switch (info->mRInfo.mMaxFrame) { + case 0: + pColor->r = 0; + break; + case 1: + pColor->r = mRValues[info->mRInfo.mOffset]; + break; + default: + val = J2DGetKeyFrameInterpolations(getFrame(), &info->mRInfo, + &mRValues[info->mRInfo.mOffset]); + if ((val <= 0)) { + pColor->r = 0; + } else if (val <= 255) { + OSf32tou8(&val, &pColor->r); + } else { + pColor->r = 255; + } + } + switch (info->mGInfo.mMaxFrame) { + case 0: + pColor->g = 0; + break; + case 1: + pColor->g = mGValues[info->mGInfo.mOffset]; + break; + default: + val = J2DGetKeyFrameInterpolations(getFrame(), &info->mGInfo, + &mGValues[info->mGInfo.mOffset]); + if (val <= 0) { + pColor->g = 0; + } else if (val <= 255) { + OSf32tou8(&val, &pColor->g); + } else { + pColor->g = 255; + } + } + switch (info->mBInfo.mMaxFrame) { + case 0: + pColor->b = 0; + break; + case 1: + pColor->b = mBValues[info->mBInfo.mOffset]; + break; + default: + val = J2DGetKeyFrameInterpolations(getFrame(), &info->mBInfo, + &mBValues[info->mBInfo.mOffset]); + if (val <= 0) { + pColor->b = 0; + } else if (val <= 255) { + OSf32tou8(&val, &pColor->b); + } else { + pColor->b = 255; + } + } + switch (info->mAInfo.mMaxFrame) { + case 0: + pColor->a = 0; + break; + case 1: + pColor->a = mAValues[info->mAInfo.mOffset]; + break; + default: + val = J2DGetKeyFrameInterpolations(getFrame(), &info->mAInfo, + &mAValues[info->mAInfo.mOffset]); + if (val <= 0) { + pColor->a = 0; + } else if (val <= 255) { + OSf32tou8(&val, &pColor->a); + } else { + pColor->a = 255; + } + } } -#pragma pop /* 8030B9F0-8030BC60 306330 0270+00 0/0 1/1 0/0 .text * calcTransform__19J2DAnmTextureSRTKeyCFfUsP17J3DTextureSRTInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmTextureSRTKey::calcTransform(f32 param_0, u16 param_1, - J3DTextureSRTInfo* param_2) const { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/calcTransform__19J2DAnmTextureSRTKeyCFfUsP17J3DTextureSRTInfo.s" +void J2DAnmTextureSRTKey::calcTransform(f32 param_0, u16 param_1, J3DTextureSRTInfo* pInfo) const { + u16 idx = param_1 * 3; + J2DAnmTextureSRTKeyInfo* xInf = &mInfoTable[idx]; + J2DAnmTextureSRTKeyInfo* yInf = &mInfoTable[idx + 1]; + J2DAnmTextureSRTKeyInfo* zInf = &mInfoTable[idx + 2]; + switch (xInf->mScaleInfo.mMaxFrame) { + case 0: + pInfo->mScaleX = 1; + break; + case 1: + pInfo->mScaleX = mScaleValues[xInf->mScaleInfo.mOffset]; + break; + default: + pInfo->mScaleX = J2DGetKeyFrameInterpolationf(param_0, &xInf->mScaleInfo, + &mScaleValues[xInf->mScaleInfo.mOffset]); + } + switch (yInf->mScaleInfo.mMaxFrame) { + case 0: + pInfo->mScaleY = 1; + break; + case 1: + pInfo->mScaleY = mScaleValues[yInf->mScaleInfo.mOffset]; + break; + default: + pInfo->mScaleY = J2DGetKeyFrameInterpolationf(param_0, &yInf->mScaleInfo, + &mScaleValues[yInf->mScaleInfo.mOffset]); + } + switch (zInf->mRotationInfo.mMaxFrame) { + case 0: + pInfo->mRotation = 0; + break; + case 1: + pInfo->mRotation = mRotationValues[zInf->mRotationInfo.mOffset] << field_0x10; + break; + default: + pInfo->mRotation = + static_cast<s32>(J2DGetKeyFrameInterpolations( + param_0, &zInf->mRotationInfo, &mRotationValues[zInf->mRotationInfo.mOffset])) + << field_0x10; + } + switch (xInf->mTranslationInfo.mMaxFrame) { + case 0: + pInfo->mTranslationX = 0; + break; + case 1: + pInfo->mTranslationX = mTranslationValues[xInf->mTranslationInfo.mOffset]; + break; + default: + pInfo->mTranslationX = J2DGetKeyFrameInterpolationf( + param_0, &xInf->mTranslationInfo, &mTranslationValues[xInf->mTranslationInfo.mOffset]); + } + switch (yInf->mTranslationInfo.mMaxFrame) { + case 0: + pInfo->mTranslationY = 0; + break; + case 1: + pInfo->mTranslationY = mTranslationValues[yInf->mTranslationInfo.mOffset]; + break; + default: + pInfo->mTranslationY = J2DGetKeyFrameInterpolationf( + param_0, &yInf->mTranslationInfo, &mTranslationValues[yInf->mTranslationInfo.mOffset]); + } } -#pragma pop /* 8030BC60-8030BD10 3065A0 00B0+00 1/0 0/0 0/0 .text * searchUpdateMaterialID__19J2DAnmTextureSRTKeyFP9J2DScreen */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmTextureSRTKey::searchUpdateMaterialID(J2DScreen* param_0) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/searchUpdateMaterialID__19J2DAnmTextureSRTKeyFP9J2DScreen.s" +void J2DAnmTextureSRTKey::searchUpdateMaterialID(J2DScreen* pScreen) { + if (pScreen != NULL && pScreen->mNameTable != NULL) { + for (u16 entry = 0; entry < this->getUpdateMaterialNum(); entry++) { + s32 idx = pScreen->mNameTable->getIndex(field_0x34.getName(entry)); + if (idx != -1) { + mUpdateMaterialID[entry] = idx; + } else { + mUpdateMaterialID[entry] = 0xFFFF; + } + } + } } -#pragma pop /* 8030BD10-8030BEE8 306650 01D8+00 1/0 0/0 0/0 .text * searchUpdateMaterialID__16J2DAnmTexPatternFP9J2DScreen */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmTexPattern::searchUpdateMaterialID(J2DScreen* param_0) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/searchUpdateMaterialID__16J2DAnmTexPatternFP9J2DScreen.s" +void J2DAnmTexPattern::searchUpdateMaterialID(J2DScreen* pScreen) { + if (pScreen != NULL && pScreen->mNameTable != NULL && pScreen->field_0x108 != NULL) { + for (u16 entry = 0; entry < this->getUpdateMaterialNum(); entry++) { + s32 idx = pScreen->mNameTable->getIndex(field_0x20.getName(entry)); + if (idx != -1) { + mUpdaterMaterialID[entry] = idx; + } else { + mUpdaterMaterialID[entry] = 0xFFFF; + } + } + delete[] mTIMGPtrArray; + mTIMGPtrArray = new J2DAnmTexPatternTIMGPointer[pScreen->field_0x108->mCount]; + if (mTIMGPtrArray != NULL) { + JUTResReference resRef; + for (u16 i = 0; i < pScreen->field_0x108->mCount; i++) { + s8* var1 = pScreen->field_0x108->getResReference(i); + ResTIMG* var2 = NULL; + if (var1 != NULL) { + var2 = (ResTIMG*)resRef.getResource(var1, 'TIMG', NULL); + if (var2 == NULL && J2DScreen::getDataManage() != NULL) { + var2 = (ResTIMG*)J2DScreen::getDataManage()->get( + pScreen->field_0x108->getName(i)); + } + } + mTIMGPtrArray[i].mRes = var2; + if (var2 != NULL && var2->palettesEnabled) { + JUTPalette* palette = + new JUTPalette(GX_TLUT0, (_GXTlutFmt)var2->paletteFormat, + (JUTTransparency)var2->alphaEnabled, var2->paletteCount, + ((u8*)var2) + var2->paletteOffset); + mTIMGPtrArray[i].mPalette = palette; + } + } + } + } } -#pragma pop /* 8030BEE8-8030BF9C 306828 00B4+00 2/2 1/1 0/0 .text getTexNo__16J2DAnmTexPatternCFUsPUs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmTexPattern::getTexNo(u16 param_0, u16* param_1) const { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/getTexNo__16J2DAnmTexPatternCFUsPUs.s" +void J2DAnmTexPattern::getTexNo(u16 param_0, u16* pTexNo) const { + u16 maxFrame = mAnmTable[param_0].mMaxFrame; + f32 frame = getFrame(); + if (frame < 0) { + *pTexNo = mValues[mAnmTable[param_0].mOffset]; + } else if (frame >= maxFrame) { + *pTexNo = mValues[mAnmTable[param_0].mOffset + (maxFrame - 1)]; + } else { + *pTexNo = mValues[mAnmTable[param_0].mOffset + (int)frame]; + } } -#pragma pop /* 8030BF9C-8030BFF0 3068DC 0054+00 0/0 1/1 0/0 .text getResTIMG__16J2DAnmTexPatternCFUs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmTexPattern::getResTIMG(u16 param_0) const { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/getResTIMG__16J2DAnmTexPatternCFUs.s" +ResTIMG* J2DAnmTexPattern::getResTIMG(u16 param_0) const { + if (mTIMGPtrArray == NULL) { + return NULL; + } else { + u16 texNo; + this->getTexNo(param_0, &texNo); + return mTIMGPtrArray[texNo].mRes; + } } -#pragma pop /* 8030BFF0-8030C048 306930 0058+00 0/0 1/1 0/0 .text getPalette__16J2DAnmTexPatternCFUs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmTexPattern::getPalette(u16 param_0) const { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/getPalette__16J2DAnmTexPatternCFUs.s" +JUTPalette* J2DAnmTexPattern::getPalette(u16 param_0) const { + if (mTIMGPtrArray == NULL) { + return NULL; + } else { + u16 texNo; + this->getTexNo(param_0, &texNo); + return mTIMGPtrArray[texNo].mPalette; + } } -#pragma pop /* 8030C048-8030C0F0 306988 00A8+00 0/0 3/3 0/0 .text getVisibility__20J2DAnmVisibilityFullCFUsPUc */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmVisibilityFull::getVisibility(u16 param_0, u8* param_1) const { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/getVisibility__20J2DAnmVisibilityFullCFUsPUc.s" +void J2DAnmVisibilityFull::getVisibility(u16 param_0, u8* pOut) const { + u16 maxFrame = field_0x14[param_0]._0; + if (getFrame() < 0) { + *pOut = field_0x18[field_0x14[param_0]._2]; + } else if (getFrame() >= maxFrame) { + *pOut = field_0x18[field_0x14[param_0]._2 + (maxFrame - 1)]; + } else { + int frame = getFrame(); + *pOut = field_0x18[field_0x14[param_0]._2 + frame]; + } } -#pragma pop - -/* ############################################################################################## */ -/* 80456318-8045631C 004918 0004+00 1/1 0/0 0/0 .sdata2 @2110 */ -SECTION_SDATA2 static f32 lit_2110 = -1024.0f; - -/* 8045631C-80456320 00491C 0004+00 1/1 0/0 0/0 .sdata2 @2111 */ -SECTION_SDATA2 static f32 lit_2111 = 1023.0f; /* 8030C0F0-8030C3B4 306A30 02C4+00 0/0 1/1 0/0 .text * getTevColorReg__15J2DAnmTevRegKeyCFUsP11_GXColorS10 */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmTevRegKey::getTevColorReg(u16 param_0, _GXColorS10* param_1) const { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/getTevColorReg__15J2DAnmTevRegKeyCFUsP11_GXColorS10.s" +void J2DAnmTevRegKey::getTevColorReg(u16 param_0, _GXColorS10* pColor) const { + J2DAnmTevRegKeyInfo* info = &mAnmCRegKeyTable[param_0]; + f32 val; + switch (info->mRTable.mMaxFrame) { + case 0: + pColor->r = 0; + break; + case 1: + pColor->r = mCRValues[info->mRTable.mOffset]; + break; + default: + val = J2DGetKeyFrameInterpolations(getFrame(), &info->mRTable, + &mCRValues[info->mRTable.mOffset]); + if (val < -0x400) { + pColor->r = -0x400; + } else if (val > 0x3FF) { + pColor->r = 0x3FF; + } else { + OSf32tos16(&val, &pColor->r); + } + } + switch (info->mGTable.mMaxFrame) { + case 0: + pColor->g = 0; + break; + case 1: + pColor->g = mCGValues[info->mGTable.mOffset]; + break; + default: + val = J2DGetKeyFrameInterpolations(getFrame(), &info->mGTable, + &mCGValues[info->mGTable.mOffset]); + if (val < -0x400) { + pColor->g = -0x400; + } else if (val > 0x3FF) { + pColor->g = 0x3FF; + } else { + OSf32tos16(&val, &pColor->g); + } + } + switch (info->mBTable.mMaxFrame) { + case 0: + pColor->b = 0; + break; + case 1: + pColor->b = mCBValues[info->mBTable.mOffset]; + break; + default: + val = J2DGetKeyFrameInterpolations(getFrame(), &info->mBTable, + &mCBValues[info->mBTable.mOffset]); + if (val < -0x400) { + pColor->b = -0x400; + } else if (val > 0x3FF) { + pColor->b = 0x3FF; + } else { + OSf32tos16(&val, &pColor->b); + } + } + switch (info->mATable.mMaxFrame) { + case 0: + pColor->a = 0; + break; + case 1: + pColor->a = mCAValues[info->mATable.mOffset]; + break; + default: + val = J2DGetKeyFrameInterpolations(getFrame(), &info->mATable, + &mCAValues[info->mATable.mOffset]); + if (val < -0x400) { + pColor->a = -0x400; + } else if (val > 0x3FF) { + pColor->a = 0x3FF; + } else { + OSf32tos16(&val, &pColor->a); + } + } } -#pragma pop /* 8030C3B4-8030C678 306CF4 02C4+00 0/0 1/1 0/0 .text * getTevKonstReg__15J2DAnmTevRegKeyCFUsP8_GXColor */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmTevRegKey::getTevKonstReg(u16 param_0, _GXColor* param_1) const { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/getTevKonstReg__15J2DAnmTevRegKeyCFUsP8_GXColor.s" +void J2DAnmTevRegKey::getTevKonstReg(u16 param_0, _GXColor* pColor) const { + J2DAnmTevRegKeyInfo* info = &mAnmKRegKeyTable[param_0]; + f32 val; + switch (info->mRTable.mMaxFrame) { + case 0: + pColor->r = 0; + break; + case 1: + pColor->r = mKRValues[info->mRTable.mOffset]; + break; + default: + val = J2DGetKeyFrameInterpolations(getFrame(), &info->mRTable, + &mKRValues[info->mRTable.mOffset]); + if (val < 0) { + pColor->r = 0; + } else if (val > 255) { + pColor->r = 255; + } else { + OSf32tou8(&val, &pColor->r); + } + } + switch (info->mGTable.mMaxFrame) { + case 0: + pColor->g = 0; + break; + case 1: + pColor->g = mKGValues[info->mGTable.mOffset]; + break; + default: + val = J2DGetKeyFrameInterpolations(getFrame(), &info->mGTable, + &mKGValues[info->mGTable.mOffset]); + if (val < 0) { + pColor->g = 0; + } else if (val > 255) { + pColor->g = 255; + } else { + OSf32tou8(&val, &pColor->g); + } + } + switch (info->mBTable.mMaxFrame) { + case 0: + pColor->b = 0; + break; + case 1: + pColor->b = mKBValues[info->mBTable.mOffset]; + break; + default: + val = J2DGetKeyFrameInterpolations(getFrame(), &info->mBTable, + &mKBValues[info->mBTable.mOffset]); + if (val < 0) { + pColor->b = 0; + } else if (val > 255) { + pColor->b = 255; + } else { + OSf32tou8(&val, &pColor->b); + } + } + switch (info->mATable.mMaxFrame) { + case 0: + pColor->a = 0; + break; + case 1: + pColor->a = mKAValues[info->mATable.mOffset]; + break; + default: + val = J2DGetKeyFrameInterpolations(getFrame(), &info->mATable, + &mKAValues[info->mATable.mOffset]); + if (val < 0) { + pColor->a = 0; + } else if (val > 255) { + pColor->a = 255; + } else { + OSf32tou8(&val, &pColor->a); + } + } } -#pragma pop /* 8030C678-8030C77C 306FB8 0104+00 1/0 0/0 0/0 .text * searchUpdateMaterialID__15J2DAnmTevRegKeyFP9J2DScreen */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmTevRegKey::searchUpdateMaterialID(J2DScreen* param_0) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/searchUpdateMaterialID__15J2DAnmTevRegKeyFP9J2DScreen.s" +void J2DAnmTevRegKey::searchUpdateMaterialID(J2DScreen* pScreen) { + if (pScreen != NULL && pScreen->mNameTable != NULL) { + for (u16 i = 0; i < mCRegUpdateMaterialNum; i++) { + s32 idx = pScreen->mNameTable->getIndex(field_0x28.getName(i)); + if (idx != -1) { + mCRegUpdateMaterialID[i] = idx; + } else { + mCRegUpdateMaterialID[i] = 0xFFFF; + } + } + for (u16 i = 0; i < mKRegUpdateMaterialNum; i++) { + s32 idx = pScreen->mNameTable->getIndex(field_0x3c.getName(i)); + if (idx != -1) { + mKRegUpdateMaterialID[i] = idx; + } else { + mKRegUpdateMaterialID[i] = 0xFFFF; + } + } + } } -#pragma pop - -/* ############################################################################################## */ -/* 80456320-80456328 004920 0008+00 1/1 0/0 0/0 .sdata2 @2379 */ -SECTION_SDATA2 static f64 lit_2379 = 4503601774854144.0 /* cast s32 to float */; /* 8030C77C-8030C9B0 3070BC 0234+00 6/6 0/0 0/0 .text * J2DGetKeyFrameInterpolation<s>__FfP18J3DAnmKeyTableBasePs */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_8030C77C(void* _this, f32 param_0, J3DAnmKeyTableBase* param_1, - s16* param_2) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/func_8030C77C.s" +// should be J2DGetKeyFrameInterpolation<s16> +f32 J2DGetKeyFrameInterpolations(f32 param_0, J3DAnmKeyTableBase* param_1, s16* param_2) { + if (param_0 < param_2[0]) { + return param_2[1]; + } else { + if (param_1->mType == 0) { + if (param_2[(param_1->mMaxFrame - 1) * 3] <= param_0) { + return param_2[(param_1->mMaxFrame - 1) * 3 + 1]; + } else { + u32 tmp = param_1->mMaxFrame; + while (tmp > 1) { + u32 halfTmp = tmp / 2; + u32 upIdx = halfTmp * 3; + if (param_0 >= param_2[upIdx]) { + param_2 = param_2 + upIdx; + tmp -= halfTmp; + } else { + tmp = halfTmp; + } + } + return J2DHermiteInterpolation<s16>(param_0, ¶m_2[0], ¶m_2[1], ¶m_2[2], + ¶m_2[3], ¶m_2[4], ¶m_2[5]); + } + } else { + if (param_2[(param_1->mMaxFrame - 1) * 4] <= param_0) { + return param_2[(param_1->mMaxFrame - 1) * 4 + 1]; + } else { + u32 tmp = param_1->mMaxFrame; + while (tmp > 1) { + u32 halfTmp = tmp / 2; + u32 upIdx = halfTmp * 4; + if (param_0 >= param_2[upIdx]) { + param_2 = param_2 + upIdx; + tmp -= halfTmp; + } else { + tmp = halfTmp; + } + } + return J2DHermiteInterpolation<s16>(param_0, ¶m_2[0], ¶m_2[1], ¶m_2[3], + ¶m_2[4], ¶m_2[5], ¶m_2[6]); + } + } + } } -#pragma pop /* 8030C9B0-8030CB2C 3072F0 017C+00 2/2 0/0 0/0 .text * J2DGetKeyFrameInterpolation<f>__FfP18J3DAnmKeyTableBasePf */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void func_8030C9B0(void* _this, f32 param_0, J3DAnmKeyTableBase* param_1, - f32* param_2) { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/func_8030C9B0.s" -} -#pragma pop - -/* 8030CB2C-8030CB3C 30746C 0010+00 1/1 0/0 0/0 .text - * __ct__Q216J2DAnmTexPattern27J2DAnmTexPatternTIMGPointerFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm J2DAnmTexPattern::J2DAnmTexPatternTIMGPointer::J2DAnmTexPatternTIMGPointer() { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/__ct__Q216J2DAnmTexPattern27J2DAnmTexPatternTIMGPointerFv.s" -} -#pragma pop - -/* 8030CB3C-8030CB90 30747C 0054+00 2/2 0/0 0/0 .text - * __dt__Q216J2DAnmTexPattern27J2DAnmTexPatternTIMGPointerFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm J2DAnmTexPattern::J2DAnmTexPatternTIMGPointer::~J2DAnmTexPatternTIMGPointer() { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/__dt__Q216J2DAnmTexPattern27J2DAnmTexPatternTIMGPointerFv.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 803CD728-803CD738 02A848 0010+00 0/0 2/2 0/0 .data __vt__15J2DAnmTevRegKey */ -SECTION_DATA extern void* __vt__15J2DAnmTevRegKey[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__15J2DAnmTevRegKeyFv, - (void*)searchUpdateMaterialID__15J2DAnmTevRegKeyFP9J2DScreen, -}; - -/* 803CD738-803CD748 02A858 0010+00 1/1 1/1 0/0 .data __vt__16J2DAnmTexPattern */ -SECTION_DATA extern void* __vt__16J2DAnmTexPattern[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__16J2DAnmTexPatternFv, - (void*)searchUpdateMaterialID__16J2DAnmTexPatternFP9J2DScreen, -}; - -/* 8030CB90-8030CC20 3074D0 0090+00 1/0 0/0 0/0 .text __dt__16J2DAnmTexPatternFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void __dt__16J2DAnmTexPatternFv() { - // asm J2DAnmTexPattern::~J2DAnmTexPattern() { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/__dt__16J2DAnmTexPatternFv.s" +// should be J2DGetKeyFrameInterpolation<s16> +f32 J2DGetKeyFrameInterpolationf(f32 param_0, J3DAnmKeyTableBase* param_1, f32* param_2) { + if (param_0 < param_2[0]) { + return param_2[1]; + } else { + if (param_1->mType == 0) { + if (param_2[(param_1->mMaxFrame - 1) * 3] <= param_0) { + return param_2[(param_1->mMaxFrame - 1) * 3 + 1]; + } else { + u32 tmp = param_1->mMaxFrame; + while (tmp > 1) { + u32 halfTmp = tmp / 2; + u32 upIdx = halfTmp * 3; + if (param_0 >= param_2[upIdx]) { + param_2 = param_2 + upIdx; + tmp -= halfTmp; + } else { + tmp = halfTmp; + } + } + return J2DHermiteInterpolation<f32>(param_0, ¶m_2[0], ¶m_2[1], ¶m_2[2], + ¶m_2[3], ¶m_2[4], ¶m_2[5]); + } + } else { + if (param_2[(param_1->mMaxFrame - 1) * 4] <= param_0) { + return param_2[(param_1->mMaxFrame - 1) * 4 + 1]; + } else { + u32 tmp = param_1->mMaxFrame; + while (tmp > 1) { + u32 halfTmp = tmp / 2; + u32 upIdx = halfTmp * 4; + if (param_0 >= param_2[upIdx]) { + param_2 = param_2 + upIdx; + tmp -= halfTmp; + } else { + tmp = halfTmp; + } + } + return J2DHermiteInterpolation<f32>(param_0, ¶m_2[0], ¶m_2[1], ¶m_2[3], + ¶m_2[4], ¶m_2[5], ¶m_2[6]); + } + } + } } -#pragma pop -/* ############################################################################################## */ -/* 803CD748-803CD758 02A868 0010+00 0/0 2/2 0/0 .data __vt__19J2DAnmTextureSRTKey */ -SECTION_DATA extern void* __vt__19J2DAnmTextureSRTKey[4] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__19J2DAnmTextureSRTKeyFv, - (void*)searchUpdateMaterialID__19J2DAnmTextureSRTKeyFP9J2DScreen, -}; - -/* 803CD758-803CD76C 02A878 0014+00 1/1 1/1 0/0 .data __vt__17J2DAnmVtxColorKey */ -SECTION_DATA extern void* __vt__17J2DAnmVtxColorKey[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__17J2DAnmVtxColorKeyFv, - (void*)searchUpdateMaterialID__10J2DAnmBaseFP9J2DScreen, - (void*)getColor__17J2DAnmVtxColorKeyCFUcUsP8_GXColor, -}; - -/* 8030CC20-8030CC8C 307560 006C+00 1/0 0/0 0/0 .text __dt__17J2DAnmVtxColorKeyFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void __dt__17J2DAnmVtxColorKeyFv() { - // asm J2DAnmVtxColorKey::~J2DAnmVtxColorKey() { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/__dt__17J2DAnmVtxColorKeyFv.s" +J2DAnmTexPattern::J2DAnmTexPatternTIMGPointer::J2DAnmTexPatternTIMGPointer() { + mRes = NULL; + mPalette = NULL; } -#pragma pop - -/* ############################################################################################## */ -/* 803CD76C-803CD780 02A88C 0014+00 1/1 1/1 0/0 .data __vt__18J2DAnmVtxColorFull */ -SECTION_DATA extern void* __vt__18J2DAnmVtxColorFull[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__18J2DAnmVtxColorFullFv, - (void*)searchUpdateMaterialID__10J2DAnmBaseFP9J2DScreen, - (void*)getColor__18J2DAnmVtxColorFullCFUcUsP8_GXColor, -}; - -/* 8030CC8C-8030CCF8 3075CC 006C+00 1/0 0/0 0/0 .text __dt__18J2DAnmVtxColorFullFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void __dt__18J2DAnmVtxColorFullFv() { - // asm J2DAnmVtxColorFull::~J2DAnmVtxColorFull() { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/__dt__18J2DAnmVtxColorFullFv.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 803CD780-803CD794 02A8A0 0014+00 0/0 2/2 0/0 .data __vt__14J2DAnmColorKey */ -SECTION_DATA extern void* __vt__14J2DAnmColorKey[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__14J2DAnmColorKeyFv, - (void*)searchUpdateMaterialID__11J2DAnmColorFP9J2DScreen, - (void*)getColor__14J2DAnmColorKeyCFUsP8_GXColor, -}; - -/* 803CD794-803CD7A8 02A8B4 0014+00 1/1 1/1 0/0 .data __vt__15J2DAnmColorFull */ -SECTION_DATA extern void* __vt__15J2DAnmColorFull[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__15J2DAnmColorFullFv, - (void*)searchUpdateMaterialID__11J2DAnmColorFP9J2DScreen, - (void*)getColor__15J2DAnmColorFullCFUsP8_GXColor, -}; - -/* 803CD7A8-803CD7BC 02A8C8 0014+00 1/1 3/3 0/0 .data __vt__11J2DAnmColor */ -SECTION_DATA extern void* __vt__11J2DAnmColor[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__11J2DAnmColorFv, - (void*)searchUpdateMaterialID__11J2DAnmColorFP9J2DScreen, - (void*)getColor__11J2DAnmColorCFUsP8_GXColor, -}; - -/* 8030CCF8-8030CD7C 307638 0084+00 1/0 0/0 0/0 .text __dt__15J2DAnmColorFullFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void __dt__15J2DAnmColorFullFv() { - // asm J2DAnmColorFull::~J2DAnmColorFull() { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/__dt__15J2DAnmColorFullFv.s" -} -#pragma pop - -/* 8030CD7C-8030CDAC 3076BC 0030+00 1/0 0/0 0/0 .text - * getTransform__18J2DAnmTransformKeyCFUsP16J3DTransformInfo */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -asm void J2DAnmTransformKey::getTransform(u16 param_0, J3DTransformInfo* param_1) const { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/getTransform__18J2DAnmTransformKeyCFUsP16J3DTransformInfo.s" -} -#pragma pop - -/* ############################################################################################## */ -/* 803CD7BC-803CD7D4 02A8DC 0018+00 0/0 2/2 0/0 .data __vt__18J2DAnmTransformKey */ -SECTION_DATA extern void* __vt__18J2DAnmTransformKey[6] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__18J2DAnmTransformKeyFv, - (void*)searchUpdateMaterialID__10J2DAnmBaseFP9J2DScreen, - (void*)getTransform__18J2DAnmTransformKeyCFUsP16J3DTransformInfo, - (void*)calcTransform__18J2DAnmTransformKeyCFfUsP16J3DTransformInfo, -}; - -/* 803CD7D4-803CD7E8 02A8F4 0014+00 1/1 1/1 0/0 .data __vt__19J2DAnmTransformFull */ -SECTION_DATA extern void* __vt__19J2DAnmTransformFull[5] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__19J2DAnmTransformFullFv, - (void*)searchUpdateMaterialID__10J2DAnmBaseFP9J2DScreen, - (void*)getTransform__19J2DAnmTransformFullCFUsP16J3DTransformInfo, -}; -/* 8030CDAC-8030CE18 3076EC 006C+00 1/0 0/0 0/0 .text __dt__19J2DAnmTransformFullFv */ -#pragma push -#pragma optimization_level 0 -#pragma optimizewithasm off -extern "C" asm void __dt__19J2DAnmTransformFullFv() { - // asm J2DAnmTransformFull::~J2DAnmTransformFull() { - nofralloc -#include "asm/JSystem/J2DGraph/J2DAnimation/__dt__19J2DAnmTransformFullFv.s" +J2DAnmTexPattern::J2DAnmTexPatternTIMGPointer::~J2DAnmTexPatternTIMGPointer() { + delete mPalette; } -#pragma pop |
