summaryrefslogtreecommitdiff
path: root/libs/JSystem/J2DGraph/J2DAnimation.cpp
diff options
context:
space:
mode:
authorlepelog <25211966+lepelog@users.noreply.github.com>2022-01-04 18:18:23 +0100
committerGitHub <noreply@github.com>2022-01-04 18:18:23 +0100
commitda3d98b67a9e54260a28fb8e49e9ce8dbbeb7449 (patch)
treee1fd0c8c3fb452d0f3ad512702b181c52abe65ad /libs/JSystem/J2DGraph/J2DAnimation.cpp
parentf4a3c80af341bcb1dac30a4dcd4dc5797f9adcea (diff)
J2DAnimation (#173)
* ok * naming stuff
Diffstat (limited to 'libs/JSystem/J2DGraph/J2DAnimation.cpp')
-rw-r--r--libs/JSystem/J2DGraph/J2DAnimation.cpp1265
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, &param_2[0], &param_2[1], &param_2[2],
+ &param_2[3], &param_2[4], &param_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, &param_2[0], &param_2[1], &param_2[3],
+ &param_2[4], &param_2[5], &param_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, &param_2[0], &param_2[1], &param_2[2],
+ &param_2[3], &param_2[4], &param_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, &param_2[0], &param_2[1], &param_2[3],
+ &param_2[4], &param_2[5], &param_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