summaryrefslogtreecommitdiff
path: root/src/JSystem/J3DGraphAnimator/J3DAnimation.cpp
diff options
context:
space:
mode:
authorCaroline Madsen <69010899+randomsalience@users.noreply.github.com>2024-10-15 16:59:31 -0400
committerGitHub <noreply@github.com>2024-10-15 23:59:31 +0300
commit9f58034704ae6fea53ba8b3e6dc10d3135d0da7c (patch)
tree1f62a71331fdc053b26e208a2727ec10d37cb22d /src/JSystem/J3DGraphAnimator/J3DAnimation.cpp
parent9895999b7b465a487c59153788be86498abb9159 (diff)
J3D work (#2212)
Diffstat (limited to 'src/JSystem/J3DGraphAnimator/J3DAnimation.cpp')
-rw-r--r--src/JSystem/J3DGraphAnimator/J3DAnimation.cpp1519
1 files changed, 973 insertions, 546 deletions
diff --git a/src/JSystem/J3DGraphAnimator/J3DAnimation.cpp b/src/JSystem/J3DGraphAnimator/J3DAnimation.cpp
index fad08e2761..ce963c03b5 100644
--- a/src/JSystem/J3DGraphAnimator/J3DAnimation.cpp
+++ b/src/JSystem/J3DGraphAnimator/J3DAnimation.cpp
@@ -4,115 +4,9 @@
//
#include "JSystem/J3DGraphAnimator/J3DAnimation.h"
-#include "dol2asm.h"
-
-//
-// Forward References:
-//
-
-extern "C" void init__12J3DFrameCtrlFs();
-extern "C" void checkPass__12J3DFrameCtrlFf();
-extern "C" void update__12J3DFrameCtrlFv();
-extern "C" void __ct__15J3DAnmTransformFsPfPsPf();
-extern "C" void getTransform__19J3DAnmTransformFullCFUsP16J3DTransformInfo();
-extern "C" void getTransform__27J3DAnmTransformFullWithLerpCFUsP16J3DTransformInfo();
-extern "C" void calcTransform__18J3DAnmTransformKeyCFfUsP16J3DTransformInfo();
-extern "C" void __ct__19J3DAnmTextureSRTKeyFv();
-extern "C" void calcTransform__19J3DAnmTextureSRTKeyCFfUsP17J3DTextureSRTInfo();
-extern "C" void getWeight__17J3DAnmClusterFullCFUs();
-extern "C" void getWeight__16J3DAnmClusterKeyCFUs();
-extern "C" void __ct__14J3DAnmVtxColorFv();
-extern "C" void __ct__18J3DAnmVtxColorFullFv();
-extern "C" void getColor__18J3DAnmVtxColorFullCFUcUsP8_GXColor();
-extern "C" void __ct__17J3DAnmVtxColorKeyFv();
-extern "C" void getColor__17J3DAnmVtxColorKeyCFUcUsP8_GXColor();
-extern "C" void __ct__11J3DAnmColorFv();
-extern "C" void searchUpdateMaterialID__11J3DAnmColorFP16J3DMaterialTable();
-extern "C" void __ct__15J3DAnmColorFullFv();
-extern "C" void getColor__15J3DAnmColorFullCFUsP8_GXColor();
-extern "C" void __ct__14J3DAnmColorKeyFv();
-extern "C" void getColor__14J3DAnmColorKeyCFUsP8_GXColor();
-extern "C" void __ct__15J3DAnmTevRegKeyFv();
-extern "C" void __ct__16J3DAnmTexPatternFv();
-extern "C" void getTexNo__16J3DAnmTexPatternCFUsPUs();
-extern "C" void searchUpdateMaterialID__16J3DAnmTexPatternFP16J3DMaterialTable();
-extern "C" void searchUpdateMaterialID__16J3DAnmTexPatternFP12J3DModelData();
-extern "C" void searchUpdateMaterialID__19J3DAnmTextureSRTKeyFP16J3DMaterialTable();
-extern "C" void searchUpdateMaterialID__19J3DAnmTextureSRTKeyFP12J3DModelData();
-extern "C" void getTevColorReg__15J3DAnmTevRegKeyCFUsP11_GXColorS10();
-extern "C" void getTevKonstReg__15J3DAnmTevRegKeyCFUsP8_GXColor();
-extern "C" void searchUpdateMaterialID__15J3DAnmTevRegKeyFP16J3DMaterialTable();
-extern "C" void searchUpdateMaterialID__15J3DAnmTevRegKeyFP12J3DModelData();
-extern "C" void func_8032B8A0(void* _this, f32, J3DAnmKeyTableBase*, s16*);
-extern "C" void func_8032BAD4(void* _this, f32, J3DAnmKeyTableBase*, f32*);
-extern "C" void __dt__14J3DAnmVtxColorFv();
-extern "C" void __dt__11J3DAnmColorFv();
-extern "C" void __dt__16J3DAnmTexPatternFv();
-extern "C" s32 getKind__16J3DAnmTexPatternCFv();
-extern "C" void __dt__15J3DAnmTevRegKeyFv();
-extern "C" s32 getKind__15J3DAnmTevRegKeyCFv();
-extern "C" void __dt__14J3DAnmColorKeyFv();
-extern "C" s32 getKind__14J3DAnmColorKeyCFv();
-extern "C" void __dt__15J3DAnmColorFullFv();
-extern "C" s32 getKind__15J3DAnmColorFullCFv();
-extern "C" bool getKind__11J3DAnmColorCFv();
-extern "C" void getColor__11J3DAnmColorCFUsP8_GXColor();
-extern "C" void __dt__17J3DAnmVtxColorKeyFv();
-extern "C" s32 getKind__17J3DAnmVtxColorKeyCFv();
-extern "C" void __dt__18J3DAnmVtxColorFullFv();
-extern "C" s32 getKind__18J3DAnmVtxColorFullCFv();
-extern "C" s32 getKind__14J3DAnmVtxColorCFv();
-extern "C" void getColor__14J3DAnmVtxColorCFUcUsP8_GXColor();
-extern "C" void __dt__16J3DAnmClusterKeyFv();
-extern "C" s32 getKind__16J3DAnmClusterKeyCFv();
-extern "C" void __dt__13J3DAnmClusterFv();
-extern "C" s32 getKind__13J3DAnmClusterCFv();
-extern "C" void getWeight__13J3DAnmClusterCFUs();
-extern "C" void __dt__17J3DAnmClusterFullFv();
-extern "C" s32 getKind__17J3DAnmClusterFullCFv();
-extern "C" void __dt__19J3DAnmTextureSRTKeyFv();
-extern "C" s32 getKind__19J3DAnmTextureSRTKeyCFv();
-extern "C" void __dt__27J3DAnmTransformFullWithLerpFv();
-extern "C" s32 getKind__27J3DAnmTransformFullWithLerpCFv();
-extern "C" void __dt__19J3DAnmTransformFullFv();
-extern "C" s32 getKind__19J3DAnmTransformFullCFv();
-
-//
-// External References:
-//
-
-extern "C" void __dl__FPv();
-extern "C" void __ct__10JUTNameTabFv();
-extern "C" void getIndex__10JUTNameTabCFPCc();
-extern "C" void getName__10JUTNameTabCFUs();
-extern "C" void __cvt_fp2unsigned();
-extern "C" void _savegpr_25();
-extern "C" void _savegpr_27();
-extern "C" void _savegpr_28();
-extern "C" void _savegpr_29();
-extern "C" void _restgpr_25();
-extern "C" void _restgpr_27();
-extern "C" void _restgpr_28();
-extern "C" void _restgpr_29();
-extern "C" extern void* __vt__10J3DAnmBase[4];
-extern "C" extern void* __vt__15J3DAnmTransform[5];
-extern "C" extern void* __vt__10JUTNameTab[3];
-
-//
-// Declarations:
-//
-
-/* ############################################################################################## */
-/* 80456430-80456434 004A30 0004+00 6/6 0/0 0/0 .sdata2 @852 */
-SECTION_SDATA2 static f32 lit_852 = 1.0f;
-
-/* 80456434-80456438 004A34 0004+00 20/20 0/0 0/0 .sdata2 @853 */
-SECTION_SDATA2 static u8 lit_853[4] = {
- 0x00,
- 0x00,
- 0x00,
- 0x00,
-};
+#include "JSystem/J3DGraphBase/J3DStruct.h"
+#include "JSystem/JMath/JMath.h"
+#include "dolphin/os.h"
/* 803283FC-8032842C 322D3C 0030+00 0/0 25/25 285/285 .text init__12J3DFrameCtrlFs */
void J3DFrameCtrl::init(s16 i_end) {
@@ -121,21 +15,10 @@ void J3DFrameCtrl::init(s16 i_end) {
mStart = 0;
mEnd = i_end;
mLoop = 0;
- mRate = lit_852;
- mFrame = FLOAT_LABEL(lit_853);
+ mRate = 1.0f;
+ mFrame = 0.0f;
}
-/* ############################################################################################## */
-/* 80456438-80456440 004A38 0004+04 2/2 0/0 0/0 .sdata2 @973 */
-SECTION_SDATA2 static f32 lit_973[1 + 1 /* padding */] = {
- 0.0010000000474974513f,
- /* padding */
- 0.0f,
-};
-
-/* 80456440-80456448 004A40 0008+00 4/4 0/0 0/0 .sdata2 @975 */
-SECTION_SDATA2 static f64 lit_975 = 4503601774854144.0 /* cast s32 to float */;
-
/* 8032842C-803289CC 322D6C 05A0+00 0/0 92/92 382/382 .text checkPass__12J3DFrameCtrlFf
*/
int J3DFrameCtrl::checkPass(f32 pass_frame) {
@@ -340,143 +223,457 @@ J3DAnmTransform::J3DAnmTransform(s16 param_0, f32* param_1, s16* param_2, f32* p
field_0x1e = 0;
}
-
-/* ############################################################################################## */
-/* 80456448-80456450 004A48 0004+04 4/4 0/0 0/0 .sdata2 @1092 */
-SECTION_SDATA2 static f32 lit_1092[1 + 1 /* padding */] = {
- 0.5f,
- /* padding */
- 0.0f,
-};
-
/* 80328E90-803291F0 3237D0 0360+00 1/0 0/0 0/0 .text
* getTransform__19J3DAnmTransformFullCFUsP16J3DTransformInfo */
-void J3DAnmTransformFull::getTransform(u16 param_0, J3DTransformInfo* param_1) const {
- // NONMATCHING
+void J3DAnmTransformFull::getTransform(u16 i_index, J3DTransformInfo* o_transform) const {
+ u16 idx = i_index * 3;
+ J3DAnmTransformFullTable* entryX = &mAnmTable[idx];
+ J3DAnmTransformFullTable* entryY = &mAnmTable[idx + 1];
+ J3DAnmTransformFullTable* entryZ = &mAnmTable[idx + 2];
+ if (mFrame < 0.0f) {
+ o_transform->mScale.x = mScaleData[entryX->mScaleOffset];
+ o_transform->mScale.y = mScaleData[entryY->mScaleOffset];
+ o_transform->mScale.z = mScaleData[entryZ->mScaleOffset];
+ o_transform->mRotation.x = mRotData[entryX->mRotationOffset];
+ o_transform->mRotation.y = mRotData[entryY->mRotationOffset];
+ o_transform->mRotation.z = mRotData[entryZ->mRotationOffset];
+ o_transform->mTranslate.x = mTransData[entryX->mTranslateOffset];
+ o_transform->mTranslate.y = mTransData[entryY->mTranslateOffset];
+ o_transform->mTranslate.z = mTransData[entryZ->mTranslateOffset];
+ } else {
+ u32 frame = (int)(mFrame + 0.5f);
+ if (frame >= entryX->mScaleMaxFrame) {
+ o_transform->mScale.x = mScaleData[entryX->mScaleOffset + (entryX->mScaleMaxFrame - 1)];
+ } else {
+ o_transform->mScale.x = mScaleData[entryX->mScaleOffset + frame];
+ }
+ if (frame >= entryX->mRotationMaxFrame) {
+ o_transform->mRotation.x =
+ mRotData[entryX->mRotationOffset + (entryX->mRotationMaxFrame - 1)];
+ } else {
+ o_transform->mRotation.x = mRotData[entryX->mRotationOffset + frame];
+ }
+ if (frame >= entryX->mTranslateMaxFrame) {
+ o_transform->mTranslate.x =
+ mTransData[entryX->mTranslateOffset + (entryX->mTranslateMaxFrame - 1)];
+ } else {
+ o_transform->mTranslate.x = mTransData[entryX->mTranslateOffset + frame];
+ }
+ if (frame >= entryY->mScaleMaxFrame) {
+ o_transform->mScale.y = mScaleData[entryY->mScaleOffset + (entryY->mScaleMaxFrame - 1)];
+ } else {
+ o_transform->mScale.y = mScaleData[entryY->mScaleOffset + frame];
+ }
+ if (frame >= entryY->mRotationMaxFrame) {
+ o_transform->mRotation.y =
+ mRotData[entryY->mRotationOffset + (entryY->mRotationMaxFrame - 1)];
+ } else {
+ o_transform->mRotation.y = mRotData[entryY->mRotationOffset + frame];
+ }
+ if (frame >= entryY->mTranslateMaxFrame) {
+ o_transform->mTranslate.y =
+ mTransData[entryY->mTranslateOffset + (entryY->mTranslateMaxFrame - 1)];
+ } else {
+ o_transform->mTranslate.y = mTransData[entryY->mTranslateOffset + frame];
+ }
+ if (frame >= entryZ->mScaleMaxFrame) {
+ o_transform->mScale.z = mScaleData[entryZ->mScaleOffset + (entryZ->mScaleMaxFrame - 1)];
+ } else {
+ o_transform->mScale.z = mScaleData[entryZ->mScaleOffset + frame];
+ }
+ if (frame >= entryZ->mRotationMaxFrame) {
+ o_transform->mRotation.z =
+ mRotData[entryZ->mRotationOffset + (entryZ->mRotationMaxFrame - 1)];
+ } else {
+ o_transform->mRotation.z = mRotData[entryZ->mRotationOffset + frame];
+ }
+ if (frame >= entryZ->mTranslateMaxFrame) {
+ o_transform->mTranslate.z =
+ mTransData[entryZ->mTranslateOffset + (entryZ->mTranslateMaxFrame - 1)];
+ } else {
+ o_transform->mTranslate.z = mTransData[entryZ->mTranslateOffset + frame];
+ }
+ }
}
-/* ############################################################################################## */
-/* 80456450-80456458 004A50 0008+00 2/2 0/0 0/0 .sdata2 @1223 */
-SECTION_SDATA2 static f64 lit_1223 = 4503599627370496.0 /* cast u32 to float */;
-
/* 803291F0-80329A34 323B30 0844+00 1/0 0/0 0/0 .text
* getTransform__27J3DAnmTransformFullWithLerpCFUsP16J3DTransformInfo */
-void J3DAnmTransformFullWithLerp::getTransform(u16 param_0, J3DTransformInfo* param_1) const {
- // NONMATCHING
+void J3DAnmTransformFullWithLerp::getTransform(u16 i_index, J3DTransformInfo* o_transform) const {
+ u16 idx = i_index * 3;
+ J3DAnmTransformFullTable* entryX = &mAnmTable[idx];
+ J3DAnmTransformFullTable* entryY = &mAnmTable[idx + 1];
+ J3DAnmTransformFullTable* entryZ = &mAnmTable[idx + 2];
+ if (mFrame < 0.0f) {
+ o_transform->mScale.x = mScaleData[entryX->mScaleOffset];
+ o_transform->mScale.y = mScaleData[entryY->mScaleOffset];
+ o_transform->mScale.z = mScaleData[entryZ->mScaleOffset];
+ o_transform->mRotation.x = mRotData[entryX->mRotationOffset];
+ o_transform->mRotation.y = mRotData[entryY->mRotationOffset];
+ o_transform->mRotation.z = mRotData[entryZ->mRotationOffset];
+ o_transform->mTranslate.x = mTransData[entryX->mTranslateOffset];
+ o_transform->mTranslate.y = mTransData[entryY->mTranslateOffset];
+ o_transform->mTranslate.z = mTransData[entryZ->mTranslateOffset];
+ } else {
+ int frame_ = (int)mFrame;
+ u32 frame = frame_;
+ if (frame_ == mFrame) {
+ if (frame >= entryX->mScaleMaxFrame) {
+ o_transform->mScale.x =
+ mScaleData[entryX->mScaleOffset + (entryX->mScaleMaxFrame - 1)];
+ } else {
+ o_transform->mScale.x = mScaleData[entryX->mScaleOffset + frame];
+ }
+ if (frame >= entryX->mRotationMaxFrame) {
+ o_transform->mRotation.x =
+ mRotData[entryX->mRotationOffset + (entryX->mRotationMaxFrame - 1)];
+ } else {
+ o_transform->mRotation.x = mRotData[entryX->mRotationOffset + frame];
+ }
+ if (frame >= entryX->mTranslateMaxFrame) {
+ o_transform->mTranslate.x =
+ mTransData[entryX->mTranslateOffset + (entryX->mTranslateMaxFrame - 1)];
+ } else {
+ o_transform->mTranslate.x = mTransData[entryX->mTranslateOffset + frame];
+ }
+ if (frame >= entryY->mScaleMaxFrame) {
+ o_transform->mScale.y =
+ mScaleData[entryY->mScaleOffset + (entryY->mScaleMaxFrame - 1)];
+ } else {
+ o_transform->mScale.y = mScaleData[entryY->mScaleOffset + frame];
+ }
+ if (frame >= entryY->mRotationMaxFrame) {
+ o_transform->mRotation.y =
+ mRotData[entryY->mRotationOffset + (entryY->mRotationMaxFrame - 1)];
+ } else {
+ o_transform->mRotation.y = mRotData[entryY->mRotationOffset + frame];
+ }
+ if (frame >= entryY->mTranslateMaxFrame) {
+ o_transform->mTranslate.y =
+ mTransData[entryY->mTranslateOffset + (entryY->mTranslateMaxFrame - 1)];
+ } else {
+ o_transform->mTranslate.y = mTransData[entryY->mTranslateOffset + frame];
+ }
+ if (frame >= entryZ->mScaleMaxFrame) {
+ o_transform->mScale.z =
+ mScaleData[entryZ->mScaleOffset + (entryZ->mScaleMaxFrame - 1)];
+ } else {
+ o_transform->mScale.z = mScaleData[entryZ->mScaleOffset + frame];
+ }
+ if (frame >= entryZ->mRotationMaxFrame) {
+ o_transform->mRotation.z =
+ mRotData[entryZ->mRotationOffset + (entryZ->mRotationMaxFrame - 1)];
+ } else {
+ o_transform->mRotation.z = mRotData[entryZ->mRotationOffset + frame];
+ }
+ if (frame >= entryZ->mTranslateMaxFrame) {
+ o_transform->mTranslate.z =
+ mTransData[entryZ->mTranslateOffset + (entryZ->mTranslateMaxFrame - 1)];
+ } else {
+ o_transform->mTranslate.z = mTransData[entryZ->mTranslateOffset + frame];
+ }
+ } else {
+ f32 rate = mFrame - frame_;
+ u32 frame2 = frame + 1;
+ if (frame2 >= entryX->mScaleMaxFrame) {
+ o_transform->mScale.x =
+ mScaleData[entryX->mScaleOffset + (entryX->mScaleMaxFrame - 1)];
+ } else {
+ o_transform->mScale.x = mScaleData[entryX->mScaleOffset + frame]
+ + rate * (mScaleData[entryX->mScaleOffset + frame2]
+ - mScaleData[entryX->mScaleOffset + frame]);
+ }
+ if (frame2 >= entryX->mRotationMaxFrame) {
+ o_transform->mRotation.x =
+ mRotData[entryX->mRotationOffset + (entryX->mRotationMaxFrame - 1)];
+ } else {
+ u32 rot1 = (u16)mRotData[entryX->mRotationOffset + frame];
+ u32 rot2 = (u16)mRotData[entryX->mRotationOffset + frame2];
+ int delta = rot2 - rot1;
+ if (delta > 0x8000) {
+ rot1 += 0x10000;
+ delta -= 0x10000;
+ } else if (-delta > 0x8000) {
+ delta += 0x10000;
+ }
+ o_transform->mRotation.x = (u32)((f32)rot1 + rate * (f32)delta);
+ }
+ if (frame2 >= entryX->mTranslateMaxFrame) {
+ o_transform->mTranslate.x =
+ mTransData[entryX->mTranslateOffset + (entryX->mTranslateMaxFrame - 1)];
+ } else {
+ o_transform->mTranslate.x = mTransData[entryX->mTranslateOffset + frame]
+ + rate * (mTransData[entryX->mTranslateOffset + frame2]
+ - mTransData[entryX->mTranslateOffset + frame]);
+ }
+ if (frame2 >= entryY->mScaleMaxFrame) {
+ o_transform->mScale.y =
+ mScaleData[entryY->mScaleOffset + (entryY->mScaleMaxFrame - 1)];
+ } else {
+ o_transform->mScale.y = mScaleData[entryY->mScaleOffset + frame]
+ + rate * (mScaleData[entryY->mScaleOffset + frame2]
+ - mScaleData[entryY->mScaleOffset + frame]);
+ }
+ if (frame2 >= entryY->mRotationMaxFrame) {
+ o_transform->mRotation.y =
+ mRotData[entryY->mRotationOffset + (entryY->mRotationMaxFrame - 1)];
+ } else {
+ u32 rot1 = (u16)mRotData[entryY->mRotationOffset + frame];
+ u32 rot2 = (u16)mRotData[entryY->mRotationOffset + frame2];
+ int delta = rot2 - rot1;
+ if (delta > 0x8000) {
+ rot1 += 0x10000;
+ delta -= 0x10000;
+ } else if (-delta > 0x8000) {
+ delta += 0x10000;
+ }
+ o_transform->mRotation.y = (u32)((f32)rot1 + rate * (f32)delta);
+ }
+ if (frame2 >= entryY->mTranslateMaxFrame) {
+ o_transform->mTranslate.y =
+ mTransData[entryY->mTranslateOffset + (entryY->mTranslateMaxFrame - 1)];
+ } else {
+ o_transform->mTranslate.y = mTransData[entryY->mTranslateOffset + frame]
+ + rate * (mTransData[entryY->mTranslateOffset + frame2]
+ - mTransData[entryY->mTranslateOffset + frame]);
+ }
+ if (frame2 >= entryZ->mScaleMaxFrame) {
+ o_transform->mScale.z =
+ mScaleData[entryZ->mScaleOffset + (entryZ->mScaleMaxFrame - 1)];
+ } else {
+ o_transform->mScale.z = mScaleData[entryZ->mScaleOffset + frame]
+ + rate * (mScaleData[entryZ->mScaleOffset + frame2]
+ - mScaleData[entryZ->mScaleOffset + frame]);
+ }
+ if (frame2 >= entryZ->mRotationMaxFrame) {
+ o_transform->mRotation.z =
+ mRotData[entryZ->mRotationOffset + (entryZ->mRotationMaxFrame - 1)];
+ } else {
+ u32 rot1 = (u16)mRotData[entryZ->mRotationOffset + frame];
+ u32 rot2 = (u16)mRotData[entryZ->mRotationOffset + frame2];
+ int delta = rot2 - rot1;
+ if (delta > 0x8000) {
+ rot1 += 0x10000;
+ delta -= 0x10000;
+ } else if (-delta > 0x8000) {
+ delta += 0x10000;
+ }
+ o_transform->mRotation.z = (u32)((f32)rot1 + rate * (f32)delta);
+ }
+ if (frame2 >= entryZ->mTranslateMaxFrame) {
+ o_transform->mTranslate.z =
+ mTransData[entryZ->mTranslateOffset + (entryZ->mTranslateMaxFrame - 1)];
+ } else {
+ o_transform->mTranslate.z = mTransData[entryZ->mTranslateOffset + frame]
+ + rate * (mTransData[entryZ->mTranslateOffset + frame2]
+ - mTransData[entryZ->mTranslateOffset + frame]);
+ }
+ }
+ }
+}
+
+inline f32 J3DHermiteInterpolation(f32 p1, f32 const* p2, f32 const* p3, f32 const* p4,
+ f32 const* p5, f32 const* p6, f32 const* p7) {
+ return JMAHermiteInterpolation(p1, *p2, *p3, *p4, *p5, *p6, *p7);
+}
+
+inline f32 J3DHermiteInterpolation(register f32 pp1, register s16 const* pp2,
+ register s16 const* pp3, register s16 const* pp4,
+ register s16 const* pp5, register s16 const* pp6,
+ register s16 const* pp7) {
+ register f32 p1 = pp1;
+ register f32 ff8;
+ register f32 ff7;
+ register f32 ff6;
+ register f32 ff5;
+ register f32 ff4;
+ register f32 ff3;
+ register f32 ff2;
+ register f32 ff0;
+ register f32 fout;
+ register s16 const* p2 = pp2;
+ register s16 const* p3 = pp3;
+ register s16 const* p4 = pp4;
+ register s16 const* p5 = pp5;
+ register s16 const* p6 = pp6;
+ register s16 const* p7 = pp7;
+ // clang-format off
+ asm {
+ psq_l ff2, 0(p2), 0x1, 5
+ psq_l ff0, 0(p5), 0x1, 5
+ psq_l ff7, 0(p3), 0x1, 5
+ fsubs ff5, ff0, ff2
+ psq_l ff6, 0(p6), 0x1, 5
+ fsubs ff3, p1, ff2
+ psq_l ff0, 0(p7), 0x1, 5
+ fsubs ff4, ff6, ff7
+ fdivs ff3, ff3, ff5
+ psq_l fout, 0(p4), 0x1, 5
+ fmadds ff0, ff0, ff5, ff7
+ fmuls ff2, ff3, ff3
+ fnmsubs ff4, ff5, fout, ff4
+ fsubs ff0, ff0, ff6
+ fsubs ff0, ff0, ff4
+ fmuls ff0, ff2, ff0
+ fmadds fout, ff5, fout, ff0
+ fmadds fout, fout, ff3, ff7
+ fmadds fout, ff4, ff2, fout
+ fsubs fout, fout, ff0
+ }
+ // clang-format on
+ return fout;
+}
+
+template<typename T>
+f32 J3DGetKeyFrameInterpolation(f32 i_frame, J3DAnmKeyTableBase* i_entry, T* i_data) {
+ if (i_frame < i_data[0]) {
+ return i_data[1];
+ }
+ if (i_entry->mType == 0) {
+ u32 idx = i_entry->mMaxFrame - 1;
+ if (i_data[idx * 3] <= i_frame) {
+ return i_data[idx * 3 + 1];
+ }
+ u32 uVar7 = i_entry->mMaxFrame;
+ while (uVar7 > 1) {
+ u32 uVar2 = uVar7 >> 1;
+ u32 tmp = uVar2 * 3;
+ if (i_frame >= i_data[tmp]) {
+ i_data += tmp;
+ uVar7 = uVar7 - uVar2;
+ } else {
+ uVar7 = uVar2;
+ }
+ }
+ return J3DHermiteInterpolation(i_frame, &i_data[0], &i_data[1], &i_data[2],
+ &i_data[3], &i_data[4], &i_data[5]);
+ } else {
+ u32 idx = i_entry->mMaxFrame - 1;
+ if (i_data[idx * 4] <= i_frame) {
+ return i_data[idx * 4 + 1];
+ }
+ u32 uVar7 = i_entry->mMaxFrame;
+ while (uVar7 > 1) {
+ u32 uVar2 = uVar7 >> 1;
+ if (i_frame >= i_data[uVar2 * 4]) {
+ i_data += uVar2 * 4;
+ uVar7 = uVar7 - uVar2;
+ } else {
+ uVar7 = uVar2;
+ }
+ }
+ return J3DHermiteInterpolation(i_frame, &i_data[0], &i_data[1], &i_data[3],
+ &i_data[4], &i_data[5], &i_data[6]);
+ }
}
/* 80329A34-80329E5C 324374 0428+00 0/0 1/1 0/0 .text
* calcTransform__18J3DAnmTransformKeyCFfUsP16J3DTransformInfo */
-void J3DAnmTransformKey::calcTransform(f32 param_0, u16 param_1,
- J3DTransformInfo* param_2) const {
- // NONMATCHING
-}
-
-/* ############################################################################################## */
-/* 803CED50-803CED60 02BE70 0010+00 2/2 0/0 0/0 .data __vt__16J3DAnmTexPattern */
-SECTION_DATA extern void* __vt__16J3DAnmTexPattern[4] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__16J3DAnmTexPatternFv,
- (void*)getKind__16J3DAnmTexPatternCFv,
-};
-
-/* 803CED60-803CED70 02BE80 0010+00 2/2 0/0 0/0 .data __vt__15J3DAnmTevRegKey */
-SECTION_DATA extern void* __vt__15J3DAnmTevRegKey[4] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__15J3DAnmTevRegKeyFv,
- (void*)getKind__15J3DAnmTevRegKeyCFv,
-};
-
-/* 803CED70-803CED84 02BE90 0014+00 2/2 0/0 0/0 .data __vt__14J3DAnmColorKey */
-SECTION_DATA extern void* __vt__14J3DAnmColorKey[5] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__14J3DAnmColorKeyFv,
- (void*)getKind__14J3DAnmColorKeyCFv,
- (void*)getColor__14J3DAnmColorKeyCFUsP8_GXColor,
-};
-
-/* 803CED84-803CED98 02BEA4 0014+00 2/2 0/0 0/0 .data __vt__15J3DAnmColorFull */
-SECTION_DATA extern void* __vt__15J3DAnmColorFull[5] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__15J3DAnmColorFullFv,
- (void*)getKind__15J3DAnmColorFullCFv,
- (void*)getColor__15J3DAnmColorFullCFUsP8_GXColor,
-};
-
-/* 803CED98-803CEDAC 02BEB8 0014+00 4/4 0/0 0/0 .data __vt__11J3DAnmColor */
-SECTION_DATA extern void* __vt__11J3DAnmColor[5] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__11J3DAnmColorFv,
- (void*)getKind__11J3DAnmColorCFv,
- (void*)getColor__11J3DAnmColorCFUsP8_GXColor,
-};
-
-/* 803CEDAC-803CEDC0 02BECC 0014+00 2/2 0/0 0/0 .data __vt__17J3DAnmVtxColorKey */
-SECTION_DATA extern void* __vt__17J3DAnmVtxColorKey[5] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__17J3DAnmVtxColorKeyFv,
- (void*)getKind__17J3DAnmVtxColorKeyCFv,
- (void*)getColor__17J3DAnmVtxColorKeyCFUcUsP8_GXColor,
-};
-
-/* 803CEDC0-803CEDD4 02BEE0 0014+00 2/2 0/0 0/0 .data __vt__18J3DAnmVtxColorFull */
-SECTION_DATA extern void* __vt__18J3DAnmVtxColorFull[5] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__18J3DAnmVtxColorFullFv,
- (void*)getKind__18J3DAnmVtxColorFullCFv,
- (void*)getColor__18J3DAnmVtxColorFullCFUcUsP8_GXColor,
-};
-
-/* 803CEDD4-803CEDE8 02BEF4 0014+00 4/4 0/0 0/0 .data __vt__14J3DAnmVtxColor */
-SECTION_DATA extern void* __vt__14J3DAnmVtxColor[5] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__14J3DAnmVtxColorFv,
- (void*)getKind__14J3DAnmVtxColorCFv,
- (void*)getColor__14J3DAnmVtxColorCFUcUsP8_GXColor,
-};
-
-/* 803CEDE8-803CEDFC 02BF08 0014+00 1/1 1/1 0/0 .data __vt__16J3DAnmClusterKey */
-SECTION_DATA extern void* __vt__16J3DAnmClusterKey[5] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__16J3DAnmClusterKeyFv,
- (void*)getKind__16J3DAnmClusterKeyCFv,
- (void*)getWeight__16J3DAnmClusterKeyCFUs,
-};
-
-/* 803CEDFC-803CEE10 02BF1C 0014+00 3/3 1/1 0/0 .data __vt__13J3DAnmCluster */
-SECTION_DATA extern void* __vt__13J3DAnmCluster[5] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__13J3DAnmClusterFv,
- (void*)getKind__13J3DAnmClusterCFv,
- (void*)getWeight__13J3DAnmClusterCFUs,
-};
-
-/* 803CEE10-803CEE24 02BF30 0014+00 1/1 1/1 0/0 .data __vt__17J3DAnmClusterFull */
-SECTION_DATA extern void* __vt__17J3DAnmClusterFull[5] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__17J3DAnmClusterFullFv,
- (void*)getKind__17J3DAnmClusterFullCFv,
- (void*)getWeight__17J3DAnmClusterFullCFUs,
-};
-
-/* 803CEE24-803CEE34 02BF44 0010+00 2/2 0/0 0/0 .data __vt__19J3DAnmTextureSRTKey */
-SECTION_DATA extern void* __vt__19J3DAnmTextureSRTKey[4] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__19J3DAnmTextureSRTKeyFv,
- (void*)getKind__19J3DAnmTextureSRTKeyCFv,
-};
+void J3DAnmTransformKey::calcTransform(f32 i_frame, u16 i_index,
+ J3DTransformInfo* o_transform) const {
+ u16 idx = i_index * 3;
+ J3DAnmTransformKeyTable* entryX = &mAnmTable[idx];
+ J3DAnmTransformKeyTable* entryY = &mAnmTable[idx + 1];
+ J3DAnmTransformKeyTable* entryZ = &mAnmTable[idx + 2];
+ switch (entryX->mScaleInfo.mMaxFrame) {
+ case 0:
+ o_transform->mScale.x = 1.0f;
+ break;
+ case 1:
+ o_transform->mScale.x = mScaleData[entryX->mScaleInfo.mOffset];
+ break;
+ default:
+ o_transform->mScale.x = J3DGetKeyFrameInterpolation(i_frame, &entryX->mScaleInfo,
+ &mScaleData[entryX->mScaleInfo.mOffset]);
+ }
+ switch (entryY->mScaleInfo.mMaxFrame) {
+ case 0:
+ o_transform->mScale.y = 1.0f;
+ break;
+ case 1:
+ o_transform->mScale.y = mScaleData[entryY->mScaleInfo.mOffset];
+ break;
+ default:
+ o_transform->mScale.y = J3DGetKeyFrameInterpolation(i_frame, &entryY->mScaleInfo,
+ &mScaleData[entryY->mScaleInfo.mOffset]);
+ }
+ switch (entryZ->mScaleInfo.mMaxFrame) {
+ case 0:
+ o_transform->mScale.z = 1.0f;
+ break;
+ case 1:
+ o_transform->mScale.z = mScaleData[entryZ->mScaleInfo.mOffset];
+ break;
+ default:
+ o_transform->mScale.z = J3DGetKeyFrameInterpolation(i_frame, &entryZ->mScaleInfo,
+ &mScaleData[entryZ->mScaleInfo.mOffset]);
+ }
+ switch (entryX->mRotationInfo.mMaxFrame) {
+ case 0:
+ o_transform->mRotation.x = 0;
+ break;
+ case 1:
+ o_transform->mRotation.x = mRotData[entryX->mRotationInfo.mOffset] << mDecShift;
+ break;
+ default:
+ o_transform->mRotation.x = (int)J3DGetKeyFrameInterpolation(i_frame, &entryX->mRotationInfo,
+ &mRotData[entryX->mRotationInfo.mOffset]) << mDecShift;
+ }
+ switch (entryY->mRotationInfo.mMaxFrame) {
+ case 0:
+ o_transform->mRotation.y = 0;
+ break;
+ case 1:
+ o_transform->mRotation.y = mRotData[entryY->mRotationInfo.mOffset] << mDecShift;
+ break;
+ default:
+ o_transform->mRotation.y = (int)J3DGetKeyFrameInterpolation(i_frame, &entryY->mRotationInfo,
+ &mRotData[entryY->mRotationInfo.mOffset]) << mDecShift;
+ }
+ switch (entryZ->mRotationInfo.mMaxFrame) {
+ case 0:
+ o_transform->mRotation.z = 0;
+ break;
+ case 1:
+ o_transform->mRotation.z = mRotData[entryZ->mRotationInfo.mOffset] << mDecShift;
+ break;
+ default:
+ o_transform->mRotation.z = (int)J3DGetKeyFrameInterpolation(i_frame, &entryZ->mRotationInfo,
+ &mRotData[entryZ->mRotationInfo.mOffset]) << mDecShift;
+ }
+ switch (entryX->mTranslateInfo.mMaxFrame) {
+ case 0:
+ o_transform->mTranslate.x = 0.0f;
+ break;
+ case 1:
+ o_transform->mTranslate.x = mTransData[entryX->mTranslateInfo.mOffset];
+ break;
+ default:
+ o_transform->mTranslate.x = J3DGetKeyFrameInterpolation(i_frame, &entryX->mTranslateInfo,
+ &mTransData[entryX->mTranslateInfo.mOffset]);
+ }
+ switch (entryY->mTranslateInfo.mMaxFrame) {
+ case 0:
+ o_transform->mTranslate.y = 0.0f;
+ break;
+ case 1:
+ o_transform->mTranslate.y = mTransData[entryY->mTranslateInfo.mOffset];
+ break;
+ default:
+ o_transform->mTranslate.y = J3DGetKeyFrameInterpolation(i_frame, &entryY->mTranslateInfo,
+ &mTransData[entryY->mTranslateInfo.mOffset]);
+ }
+ switch (entryZ->mTranslateInfo.mMaxFrame) {
+ case 0:
+ o_transform->mTranslate.z = 0.0f;
+ break;
+ case 1:
+ o_transform->mTranslate.z = mTransData[entryZ->mTranslateInfo.mOffset];
+ break;
+ default:
+ o_transform->mTranslate.z = J3DGetKeyFrameInterpolation(i_frame, &entryZ->mTranslateInfo,
+ &mTransData[entryZ->mTranslateInfo.mOffset]);
+ }
+}
/* 80329E5C-80329F14 32479C 00B8+00 0/0 2/2 0/0 .text __ct__19J3DAnmTextureSRTKeyFv */
J3DAnmTextureSRTKey::J3DAnmTextureSRTKey() : J3DAnmBase(0) {
@@ -485,39 +682,113 @@ J3DAnmTextureSRTKey::J3DAnmTextureSRTKey() : J3DAnmBase(0) {
mRotNum = 0;
mScaleNum = 0;
mTrackNum = 0;
- mAnmTable = 0;
- mTransData = 0;
- mScaleData = 0;
- mRotData = 0;
+ mAnmTable = NULL;
+ mTransData = NULL;
+ mScaleData = NULL;
+ mRotData = NULL;
field_0x48 = 0;
field_0x46 = 0;
field_0x44 = 0;
field_0x4a = 0;
- field_0x58 = 0;
- field_0x54 = 0;
- field_0x4c = 0;
- field_0x50 = 0;
+ field_0x58 = NULL;
+ field_0x54 = NULL;
+ field_0x4c = NULL;
+ field_0x50 = NULL;
mTexMtxCalcType = 0;
}
/* 80329F14-8032A184 324854 0270+00 0/0 1/1 0/0 .text
* calcTransform__19J3DAnmTextureSRTKeyCFfUsP17J3DTextureSRTInfo */
-void J3DAnmTextureSRTKey::calcTransform(f32 param_0, u16 param_1,
- J3DTextureSRTInfo* param_2) const {
- // NONMATCHING
+void J3DAnmTextureSRTKey::calcTransform(f32 i_frame, u16 i_index,
+ J3DTextureSRTInfo* o_texinfo) const {
+ u16 idx = i_index * 3;
+ J3DAnmTransformKeyTable* entryX = &mAnmTable[idx];
+ J3DAnmTransformKeyTable* entryY = &mAnmTable[idx + 1];
+ J3DAnmTransformKeyTable* entryRot = &mAnmTable[idx + 2];
+ switch (entryX->mScaleInfo.mMaxFrame) {
+ case 0:
+ o_texinfo->mScaleX = 1.0f;
+ break;
+ case 1:
+ o_texinfo->mScaleX = mScaleData[entryX->mScaleInfo.mOffset];
+ break;
+ default:
+ o_texinfo->mScaleX = J3DGetKeyFrameInterpolation(i_frame, &entryX->mScaleInfo,
+ &mScaleData[entryX->mScaleInfo.mOffset]);
+ }
+ switch (entryY->mScaleInfo.mMaxFrame) {
+ case 0:
+ o_texinfo->mScaleY = 1.0f;
+ break;
+ case 1:
+ o_texinfo->mScaleY = mScaleData[entryY->mScaleInfo.mOffset];
+ break;
+ default:
+ o_texinfo->mScaleY = J3DGetKeyFrameInterpolation(i_frame, &entryY->mScaleInfo,
+ &mScaleData[entryY->mScaleInfo.mOffset]);
+ }
+ switch (entryRot->mRotationInfo.mMaxFrame) {
+ case 0:
+ o_texinfo->mRotation = 0;
+ break;
+ case 1:
+ o_texinfo->mRotation = mRotData[entryRot->mRotationInfo.mOffset] << mDecShift;
+ break;
+ default:
+ o_texinfo->mRotation = (int)J3DGetKeyFrameInterpolation(i_frame, &entryRot->mRotationInfo,
+ &mRotData[entryRot->mRotationInfo.mOffset]) << mDecShift;
+ }
+ switch (entryX->mTranslateInfo.mMaxFrame) {
+ case 0:
+ o_texinfo->mTranslationX = 0.0f;
+ break;
+ case 1:
+ o_texinfo->mTranslationX = mTransData[entryX->mTranslateInfo.mOffset];
+ break;
+ default:
+ o_texinfo->mTranslationX = J3DGetKeyFrameInterpolation(i_frame, &entryX->mTranslateInfo,
+ &mTransData[entryX->mTranslateInfo.mOffset]);
+ }
+ switch (entryY->mTranslateInfo.mMaxFrame) {
+ case 0:
+ o_texinfo->mTranslationY = 0.0f;
+ break;
+ case 1:
+ o_texinfo->mTranslationY = mTransData[entryY->mTranslateInfo.mOffset];
+ break;
+ default:
+ o_texinfo->mTranslationY = J3DGetKeyFrameInterpolation(i_frame, &entryY->mTranslateInfo,
+ &mTransData[entryY->mTranslateInfo.mOffset]);
+ }
}
/* 8032A184-8032A218 324AC4 0094+00 1/0 0/0 0/0 .text getWeight__17J3DAnmClusterFullCFUs
*/
-f32 J3DAnmClusterFull::getWeight(u16 param_0) const {
- // NONMATCHING
+f32 J3DAnmClusterFull::getWeight(u16 i_index) const {
+ int maxFrame = mAnmTable[i_index].mMaxFrame;
+ int frame = (int)(mFrame + 0.5f);
+ if (mFrame < 0.0f) {
+ return mWeight[mAnmTable[i_index].mOffset];
+ } else if (frame >= maxFrame) {
+ return mWeight[mAnmTable[i_index].mOffset + (maxFrame - 1)];
+ } else {
+ return mWeight[mAnmTable[i_index].mOffset + frame];
+ }
}
/* 8032A218-8032A29C 324B58 0084+00 1/0 0/0 0/0 .text getWeight__16J3DAnmClusterKeyCFUs
*/
-f32 J3DAnmClusterKey::getWeight(u16 param_0) const {
- // NONMATCHING
+f32 J3DAnmClusterKey::getWeight(u16 i_index) const {
+ switch (mAnmTable[i_index].mWeightTable.mMaxFrame) {
+ case 0:
+ return 1.0f;
+ case 1:
+ return mWeight[mAnmTable[i_index].mWeightTable.mOffset];
+ default:
+ return J3DGetKeyFrameInterpolation(mFrame, &mAnmTable[i_index].mWeightTable,
+ &mWeight[mAnmTable[i_index].mWeightTable.mOffset]);
+ }
}
/* 8032A29C-8032A30C 324BDC 0070+00 2/2 0/0 0/0 .text __ct__14J3DAnmVtxColorFv */
@@ -526,7 +797,7 @@ J3DAnmVtxColor::J3DAnmVtxColor() : J3DAnmBase(0) {
mAnmTableNum[i] = 0;
}
for (int i = 0; i < 2; i++) {
- mAnmVtxColorIndexData[i] = 0;
+ mAnmVtxColorIndexData[i] = NULL;
}
}
@@ -534,14 +805,42 @@ J3DAnmVtxColor::J3DAnmVtxColor() : J3DAnmBase(0) {
/* 8032A30C-8032A368 324C4C 005C+00 0/0 1/1 0/0 .text __ct__18J3DAnmVtxColorFullFv */
J3DAnmVtxColorFull::J3DAnmVtxColorFull() {
for (int i = 0; i < 2; i++) {
- mpTable[i] = 0;
+ mpTable[i] = NULL;
}
}
/* 8032A368-8032A4E0 324CA8 0178+00 1/0 0/0 0/0 .text
* getColor__18J3DAnmVtxColorFullCFUcUsP8_GXColor */
-void J3DAnmVtxColorFull::getColor(u8 param_0, u16 param_1, _GXColor* param_2) const {
- // NONMATCHING
+void J3DAnmVtxColorFull::getColor(u8 i_table, u16 i_index, GXColor* o_color) const {
+ J3DAnmColorFullTable* entry = &mpTable[i_table][i_index];
+ if (mFrame < 0.0f) {
+ o_color->r = mColorR[entry->mROffset];
+ o_color->g = mColorG[entry->mGOffset];
+ o_color->b = mColorB[entry->mBOffset];
+ o_color->a = mColorA[entry->mAOffset];
+ } else {
+ int frame = (int)(mFrame + 0.5f);
+ if (frame >= entry->mRMaxFrame) {
+ o_color->r = mColorR[entry->mROffset + (entry->mRMaxFrame - 1)];
+ } else {
+ o_color->r = mColorR[entry->mROffset + frame];
+ }
+ if (frame >= entry->mGMaxFrame) {
+ o_color->g = mColorG[entry->mGOffset + (entry->mGMaxFrame - 1)];
+ } else {
+ o_color->g = mColorG[entry->mGOffset + frame];
+ }
+ if (frame >= entry->mBMaxFrame) {
+ o_color->b = mColorB[entry->mBOffset + (entry->mBMaxFrame - 1)];
+ } else {
+ o_color->b = mColorB[entry->mBOffset + frame];
+ }
+ if (frame >= entry->mAMaxFrame) {
+ o_color->a = mColorA[entry->mAOffset + (entry->mAMaxFrame - 1)];
+ } else {
+ o_color->a = mColorA[entry->mAOffset + frame];
+ }
+ }
}
/* 8032A4E0-8032A53C 324E20 005C+00 0/0 1/1 0/0 .text __ct__17J3DAnmVtxColorKeyFv */
@@ -551,52 +850,230 @@ J3DAnmVtxColorKey::J3DAnmVtxColorKey() {
}
}
-/* ############################################################################################## */
-/* 80456458-8045645C 004A58 0004+00 3/3 0/0 0/0 .sdata2 @1499 */
-SECTION_SDATA2 static f32 lit_1499 = 255.0f;
-
/* 8032A53C-8032A828 324E7C 02EC+00 1/0 0/0 0/0 .text
* getColor__17J3DAnmVtxColorKeyCFUcUsP8_GXColor */
-void J3DAnmVtxColorKey::getColor(u8 param_0, u16 param_1, _GXColor* param_2) const {
- // NONMATCHING
+void J3DAnmVtxColorKey::getColor(u8 i_table, u16 i_index, GXColor* o_color) const {
+ J3DAnmColorKeyTable* entry = &mpTable[i_table][i_index];
+ f32 col;
+ switch (entry->mRInfo.mMaxFrame) {
+ case 0:
+ o_color->r = 0;
+ break;
+ case 1:
+ o_color->r = mColorR[entry->mRInfo.mOffset];
+ break;
+ default:
+ col = J3DGetKeyFrameInterpolation(mFrame, &entry->mRInfo,
+ &mColorR[entry->mRInfo.mOffset]);
+ if (col <= 0.0f) {
+ o_color->r = 0;
+ } else if (col <= 255.0f) {
+ OSf32tou8(&col, &o_color->r);
+ } else {
+ o_color->r = 255;
+ }
+ }
+ switch (entry->mGInfo.mMaxFrame) {
+ case 0:
+ o_color->g = 0;
+ break;
+ case 1:
+ o_color->g = mColorG[entry->mGInfo.mOffset];
+ break;
+ default:
+ col = J3DGetKeyFrameInterpolation(mFrame, &entry->mGInfo,
+ &mColorG[entry->mGInfo.mOffset]);
+ if (col <= 0.0f) {
+ o_color->g = 0;
+ } else if (col <= 255.0f) {
+ OSf32tou8(&col, &o_color->g);
+ } else {
+ o_color->g = 255;
+ }
+ }
+ switch (entry->mBInfo.mMaxFrame) {
+ case 0:
+ o_color->b = 0;
+ break;
+ case 1:
+ o_color->b = mColorB[entry->mBInfo.mOffset];
+ break;
+ default:
+ col = J3DGetKeyFrameInterpolation(mFrame, &entry->mBInfo,
+ &mColorB[entry->mBInfo.mOffset]);
+ if (col <= 0.0f) {
+ o_color->b = 0;
+ } else if (col <= 255.0f) {
+ OSf32tou8(&col, &o_color->b);
+ } else {
+ o_color->b = 255;
+ }
+ }
+ switch (entry->mAInfo.mMaxFrame) {
+ case 0:
+ o_color->a = 0;
+ break;
+ case 1:
+ o_color->a = mColorA[entry->mAInfo.mOffset];
+ break;
+ default:
+ col = J3DGetKeyFrameInterpolation(mFrame, &entry->mAInfo,
+ &mColorA[entry->mAInfo.mOffset]);
+ if (col <= 0.0f) {
+ o_color->a = 0;
+ } else if (col <= 255.0f) {
+ OSf32tou8(&col, &o_color->a);
+ } else {
+ o_color->a = 255;
+ }
+ }
}
/* 8032A828-8032A8A4 325168 007C+00 2/2 0/0 0/0 .text __ct__11J3DAnmColorFv */
-J3DAnmColor::J3DAnmColor() : J3DAnmBase(0), field_0xc(0), field_0xe(0), field_0x10(0), field_0x12(0), mUpdateMaterialNum(0), mUpdateMaterialID(NULL) {}
+J3DAnmColor::J3DAnmColor() : J3DAnmBase(0), field_0xc(0), field_0xe(0), field_0x10(0),
+ field_0x12(0), mUpdateMaterialNum(0), mUpdateMaterialID(NULL) {}
/* 8032A8A4-8032A93C 3251E4 0098+00 0/0 1/1 0/0 .text
* searchUpdateMaterialID__11J3DAnmColorFP16J3DMaterialTable */
-void J3DAnmColor::searchUpdateMaterialID(J3DMaterialTable* param_0) {
- // NONMATCHING
+void J3DAnmColor::searchUpdateMaterialID(J3DMaterialTable* i_materialTable) {
+ for (u16 i = 0; i < mUpdateMaterialNum; i++) {
+ int index = i_materialTable->getMaterialName()->getIndex(mUpdateMaterialName.getName(i));
+ if (index != -1) {
+ mUpdateMaterialID[i] = index;
+ } else {
+ mUpdateMaterialID[i] = 0xffff;
+ }
+ }
}
/* 8032A93C-8032A990 32527C 0054+00 0/0 1/1 0/0 .text __ct__15J3DAnmColorFullFv */
J3DAnmColorFull::J3DAnmColorFull() {
- mColorR = 0;
- mColorG = 0;
- mColorB = 0;
- mColorA = 0;
- mAnmTable = 0;
+ mColorR = NULL;
+ mColorG = NULL;
+ mColorB = NULL;
+ mColorA = NULL;
+ mAnmTable = NULL;
}
/* 8032A990-8032AB00 3252D0 0170+00 1/0 0/0 0/0 .text getColor__15J3DAnmColorFullCFUsP8_GXColor */
-void J3DAnmColorFull::getColor(u16 param_0, _GXColor* param_1) const {
- // NONMATCHING
+void J3DAnmColorFull::getColor(u16 i_index, GXColor* o_color) const {
+ J3DAnmColorFullTable* entry = &mAnmTable[i_index];
+ if (mFrame < 0.0f) {
+ o_color->r = mColorR[entry->mROffset];
+ o_color->g = mColorG[entry->mGOffset];
+ o_color->b = mColorB[entry->mBOffset];
+ o_color->a = mColorA[entry->mAOffset];
+ } else {
+ int frame = (int)(mFrame + 0.5f);
+ if (frame >= entry->mRMaxFrame) {
+ o_color->r = mColorR[entry->mROffset + (entry->mRMaxFrame - 1)];
+ } else {
+ o_color->r = mColorR[entry->mROffset + frame];
+ }
+ if (frame >= entry->mGMaxFrame) {
+ o_color->g = mColorG[entry->mGOffset + (entry->mGMaxFrame - 1)];
+ } else {
+ o_color->g = mColorG[entry->mGOffset + frame];
+ }
+ if (frame >= entry->mBMaxFrame) {
+ o_color->b = mColorB[entry->mBOffset + (entry->mBMaxFrame - 1)];
+ } else {
+ o_color->b = mColorB[entry->mBOffset + frame];
+ }
+ if (frame >= entry->mAMaxFrame) {
+ o_color->a = mColorA[entry->mAOffset + (entry->mAMaxFrame - 1)];
+ } else {
+ o_color->a = mColorA[entry->mAOffset + frame];
+ }
+ }
}
/* 8032AB00-8032AB54 325440 0054+00 0/0 1/1 0/0 .text __ct__14J3DAnmColorKeyFv */
J3DAnmColorKey::J3DAnmColorKey() {
- field_0x2c = 0;
- field_0x30 = 0;
- field_0x34 = 0;
- field_0x38 = 0;
- field_0x3c = 0;
+ mColorR = NULL;
+ mColorG = NULL;
+ mColorB = NULL;
+ mColorA = NULL;
+ mAnmTable = NULL;
}
/* 8032AB54-8032AE18 325494 02C4+00 1/0 0/0 0/0 .text getColor__14J3DAnmColorKeyCFUsP8_GXColor */
-void J3DAnmColorKey::getColor(u16 param_0, _GXColor* param_1) const {
- // NONMATCHING
+void J3DAnmColorKey::getColor(u16 i_index, GXColor* o_color) const {
+ J3DAnmColorKeyTable* entry = &mAnmTable[i_index];
+ f32 col;
+ switch (entry->mRInfo.mMaxFrame) {
+ case 0:
+ o_color->r = 0;
+ break;
+ case 1:
+ o_color->r = mColorR[entry->mRInfo.mOffset];
+ break;
+ default:
+ col = J3DGetKeyFrameInterpolation(mFrame, &entry->mRInfo,
+ &mColorR[entry->mRInfo.mOffset]);
+ if (col < 0.0f) {
+ o_color->r = 0;
+ } else if (col > 255.0f) {
+ o_color->r = 255;
+ } else {
+ OSf32tou8(&col, &o_color->r);
+ }
+ }
+ switch (entry->mGInfo.mMaxFrame) {
+ case 0:
+ o_color->g = 0;
+ break;
+ case 1:
+ o_color->g = mColorG[entry->mGInfo.mOffset];
+ break;
+ default:
+ col = J3DGetKeyFrameInterpolation(mFrame, &entry->mGInfo,
+ &mColorG[entry->mGInfo.mOffset]);
+ if (col < 0.0f) {
+ o_color->g = 0;
+ } else if (col > 255.0f) {
+ o_color->g = 255;
+ } else {
+ OSf32tou8(&col, &o_color->g);
+ }
+ }
+ switch (entry->mBInfo.mMaxFrame) {
+ case 0:
+ o_color->b = 0;
+ break;
+ case 1:
+ o_color->b = mColorB[entry->mBInfo.mOffset];
+ break;
+ default:
+ col = J3DGetKeyFrameInterpolation(mFrame, &entry->mBInfo,
+ &mColorB[entry->mBInfo.mOffset]);
+ if (col < 0.0f) {
+ o_color->b = 0;
+ } else if (col > 255.0f) {
+ o_color->b = 255;
+ } else {
+ OSf32tou8(&col, &o_color->b);
+ }
+ }
+ switch (entry->mAInfo.mMaxFrame) {
+ case 0:
+ o_color->a = 0;
+ break;
+ case 1:
+ o_color->a = mColorA[entry->mAInfo.mOffset];
+ break;
+ default:
+ col = J3DGetKeyFrameInterpolation(mFrame, &entry->mAInfo,
+ &mColorA[entry->mAInfo.mOffset]);
+ if (col < 0.0f) {
+ o_color->a = 0;
+ } else if (col > 255.0f) {
+ o_color->a = 255;
+ } else {
+ OSf32tou8(&col, &o_color->a);
+ }
+ }
}
/* 8032AE18-8032AED8 325758 00C0+00 0/0 1/1 0/0 .text __ct__15J3DAnmTevRegKeyFv */
@@ -611,34 +1088,42 @@ J3DAnmTevRegKey::J3DAnmTevRegKey() : J3DAnmBase(0) {
mKRegDataCountB = 0;
mKRegDataCountG = 0;
mKRegDataCountR = 0;
- mKRegUpdateMaterialID = 0;
- mCRegUpdateMaterialID = 0;
- mAnmCRegDataA = 0;
- mAnmCRegDataB = 0;
- mAnmCRegDataG = 0;
- mAnmCRegDataR = 0;
- mAnmKRegDataA = 0;
- mAnmKRegDataB = 0;
- mAnmKRegDataG = 0;
- mAnmKRegDataR = 0;
+ mKRegUpdateMaterialID = NULL;
+ mCRegUpdateMaterialID = NULL;
+ mAnmCRegDataA = NULL;
+ mAnmCRegDataB = NULL;
+ mAnmCRegDataG = NULL;
+ mAnmCRegDataR = NULL;
+ mAnmKRegDataA = NULL;
+ mAnmKRegDataB = NULL;
+ mAnmKRegDataG = NULL;
+ mAnmKRegDataR = NULL;
}
/* 8032AED8-8032AF50 325818 0078+00 0/0 2/2 0/0 .text __ct__16J3DAnmTexPatternFv */
-J3DAnmTexPattern::J3DAnmTexPattern() : J3DAnmBase(0), mTextureIndex(NULL), mAnmTable(NULL), field_0x14(0), mUpdateMaterialNum(0), mUpdateMaterialID(NULL) {}
+J3DAnmTexPattern::J3DAnmTexPattern() : J3DAnmBase(0), mTextureIndex(NULL), mAnmTable(NULL),
+ field_0x14(0), mUpdateMaterialNum(0), mUpdateMaterialID(NULL) {}
/* 8032AF50-8032B004 325890 00B4+00 0/0 1/1 72/72 .text getTexNo__16J3DAnmTexPatternCFUsPUs */
-void J3DAnmTexPattern::getTexNo(u16 param_0, u16* param_1) const {
- // NONMATCHING
+void J3DAnmTexPattern::getTexNo(u16 i_index, u16* o_texNo) const {
+ u32 maxFrame = mAnmTable[i_index].mMaxFrame;
+ if (mFrame < 0.0f) {
+ *o_texNo = mTextureIndex[mAnmTable[i_index].mOffset];
+ } else if (mFrame >= maxFrame) {
+ *o_texNo = mTextureIndex[mAnmTable[i_index].mOffset + (maxFrame - 1)];
+ } else {
+ *o_texNo = mTextureIndex[mAnmTable[i_index].mOffset + (int)mFrame];
+ }
}
/* 8032B004-8032B09C 325944 0098+00 1/1 1/1 0/0 .text
* searchUpdateMaterialID__16J3DAnmTexPatternFP16J3DMaterialTable */
-void J3DAnmTexPattern::searchUpdateMaterialID(J3DMaterialTable* param_0) {
+void J3DAnmTexPattern::searchUpdateMaterialID(J3DMaterialTable* i_materialTable) {
for (u16 i = 0; i < mUpdateMaterialNum; i++) {
- s32 r3 = param_0->getMaterialName()->getIndex(mUpdateMaterialName.getName(i));
- if (r3 != -1) {
- mUpdateMaterialID[i] = r3;
+ s32 index = i_materialTable->getMaterialName()->getIndex(mUpdateMaterialName.getName(i));
+ if (index != -1) {
+ mUpdateMaterialID[i] = index;
} else {
mUpdateMaterialID[i] = -1;
}
@@ -647,25 +1132,25 @@ void J3DAnmTexPattern::searchUpdateMaterialID(J3DMaterialTable* param_0) {
/* 8032B09C-8032B0C0 3259DC 0024+00 0/0 4/4 1/1 .text
* searchUpdateMaterialID__16J3DAnmTexPatternFP12J3DModelData */
-void J3DAnmTexPattern::searchUpdateMaterialID(J3DModelData* param_0) {
- searchUpdateMaterialID(&param_0->getMaterialTable());
+void J3DAnmTexPattern::searchUpdateMaterialID(J3DModelData* i_modelData) {
+ searchUpdateMaterialID(&i_modelData->getMaterialTable());
}
/* 8032B0C0-8032B1D4 325A00 0114+00 1/1 1/1 0/0 .text
* searchUpdateMaterialID__19J3DAnmTextureSRTKeyFP16J3DMaterialTable */
-void J3DAnmTextureSRTKey::searchUpdateMaterialID(J3DMaterialTable* param_0) {
+void J3DAnmTextureSRTKey::searchUpdateMaterialID(J3DMaterialTable* i_materialTable) {
for (u16 i = 0; i < u16(mTrackNum / 3); i++) {
- s32 r3 = param_0->getMaterialName()->getIndex(mUpdateMaterialName.getName(i));
- if (r3 != -1) {
- mUpdateMaterialID[i] = r3;
+ s32 index = i_materialTable->getMaterialName()->getIndex(mUpdateMaterialName.getName(i));
+ if (index != -1) {
+ mUpdateMaterialID[i] = index;
} else {
mUpdateMaterialID[i] = -1;
}
}
for (u16 i = 0; i < u16(field_0x4a / 3); i++) {
- s32 r3 = param_0->getMaterialName()->getIndex(mPostUpdateMaterialName.getName(i));
- if (r3 != -1) {
- mPostUpdateMaterialID[i] = r3;
+ s32 index = i_materialTable->getMaterialName()->getIndex(mPostUpdateMaterialName.getName(i));
+ if (index != -1) {
+ mPostUpdateMaterialID[i] = index;
} else {
mPostUpdateMaterialID[i] = -1;
}
@@ -674,249 +1159,191 @@ void J3DAnmTextureSRTKey::searchUpdateMaterialID(J3DMaterialTable* param_0) {
/* 8032B1D4-8032B1F8 325B14 0024+00 0/0 8/8 6/6 .text
* searchUpdateMaterialID__19J3DAnmTextureSRTKeyFP12J3DModelData */
-void J3DAnmTextureSRTKey::searchUpdateMaterialID(J3DModelData* param_0) {
- searchUpdateMaterialID(&param_0->getMaterialTable());
+void J3DAnmTextureSRTKey::searchUpdateMaterialID(J3DModelData* i_modelData) {
+ searchUpdateMaterialID(&i_modelData->getMaterialTable());
}
-/* ############################################################################################## */
-/* 8045645C-80456460 004A5C 0004+00 1/1 0/0 0/0 .sdata2 @1817 */
-SECTION_SDATA2 static f32 lit_1817 = -1024.0f;
-
-/* 80456460-80456468 004A60 0004+04 1/1 0/0 0/0 .sdata2 @1818 */
-SECTION_SDATA2 static f32 lit_1818[1 + 1 /* padding */] = {
- 1023.0f,
- /* padding */
- 0.0f,
-};
-
/* 8032B1F8-8032B4BC 325B38 02C4+00 0/0 2/2 1/1 .text
* getTevColorReg__15J3DAnmTevRegKeyCFUsP11_GXColorS10 */
-void J3DAnmTevRegKey::getTevColorReg(u16 param_0, _GXColorS10* param_1) const {
- // NONMATCHING
+void J3DAnmTevRegKey::getTevColorReg(u16 i_index, GXColorS10* o_color) const {
+ J3DAnmCRegKeyTable* entry = &mAnmCRegKeyTable[i_index];
+ f32 col;
+ switch (entry->mRTable.mMaxFrame) {
+ case 0:
+ o_color->r = 0;
+ break;
+ case 1:
+ o_color->r = mAnmCRegDataR[entry->mRTable.mOffset];
+ break;
+ default:
+ col = J3DGetKeyFrameInterpolation(mFrame, &entry->mRTable,
+ &mAnmCRegDataR[entry->mRTable.mOffset]);
+ if (col < -0x400) {
+ o_color->r = -0x400;
+ } else if (col > 0x3FF) {
+ o_color->r = 0x3FF;
+ } else {
+ OSf32tos16(&col, &o_color->r);
+ }
+ }
+ switch (entry->mGTable.mMaxFrame) {
+ case 0:
+ o_color->g = 0;
+ break;
+ case 1:
+ o_color->g = mAnmCRegDataG[entry->mGTable.mOffset];
+ break;
+ default:
+ col = J3DGetKeyFrameInterpolation(mFrame, &entry->mGTable,
+ &mAnmCRegDataG[entry->mGTable.mOffset]);
+ if (col < -0x400) {
+ o_color->g = -0x400;
+ } else if (col > 0x3FF) {
+ o_color->g = 0x3FF;
+ } else {
+ OSf32tos16(&col, &o_color->g);
+ }
+ }
+ switch (entry->mBTable.mMaxFrame) {
+ case 0:
+ o_color->b = 0;
+ break;
+ case 1:
+ o_color->b = mAnmCRegDataB[entry->mBTable.mOffset];
+ break;
+ default:
+ col = J3DGetKeyFrameInterpolation(mFrame, &entry->mBTable,
+ &mAnmCRegDataB[entry->mBTable.mOffset]);
+ if (col < -0x400) {
+ o_color->b = -0x400;
+ } else if (col > 0x3FF) {
+ o_color->b = 0x3FF;
+ } else {
+ OSf32tos16(&col, &o_color->b);
+ }
+ }
+ switch (entry->mATable.mMaxFrame) {
+ case 0:
+ o_color->a = 0;
+ break;
+ case 1:
+ o_color->a = mAnmCRegDataA[entry->mATable.mOffset];
+ break;
+ default:
+ col = J3DGetKeyFrameInterpolation(mFrame, &entry->mATable,
+ &mAnmCRegDataA[entry->mATable.mOffset]);
+ if (col < -0x400) {
+ o_color->a = -0x400;
+ } else if (col > 0x3FF) {
+ o_color->a = 0x3FF;
+ } else {
+ OSf32tos16(&col, &o_color->a);
+ }
+ }
}
/* 8032B4BC-8032B780 325DFC 02C4+00 0/0 1/1 1/1 .text
* getTevKonstReg__15J3DAnmTevRegKeyCFUsP8_GXColor */
-void J3DAnmTevRegKey::getTevKonstReg(u16 param_0, _GXColor* param_1) const {
- // NONMATCHING
+void J3DAnmTevRegKey::getTevKonstReg(u16 i_index, GXColor* o_color) const {
+ J3DAnmKRegKeyTable* entry = &mAnmKRegKeyTable[i_index];
+ f32 col;
+ switch (entry->mRTable.mMaxFrame) {
+ case 0:
+ o_color->r = 0;
+ break;
+ case 1:
+ o_color->r = mAnmKRegDataR[entry->mRTable.mOffset];
+ break;
+ default:
+ col = J3DGetKeyFrameInterpolation(mFrame, &entry->mRTable,
+ &mAnmKRegDataR[entry->mRTable.mOffset]);
+ if (col < 0) {
+ o_color->r = 0;
+ } else if (col > 0xFF) {
+ o_color->r = 0xFF;
+ } else {
+ OSf32tou8(&col, &o_color->r);
+ }
+ }
+ switch (entry->mGTable.mMaxFrame) {
+ case 0:
+ o_color->g = 0;
+ break;
+ case 1:
+ o_color->g = mAnmKRegDataG[entry->mGTable.mOffset];
+ break;
+ default:
+ col = J3DGetKeyFrameInterpolation(mFrame, &entry->mGTable,
+ &mAnmKRegDataG[entry->mGTable.mOffset]);
+ if (col < 0) {
+ o_color->g = 0;
+ } else if (col > 0xFF) {
+ o_color->g = 0xFF;
+ } else {
+ OSf32tou8(&col, &o_color->g);
+ }
+ }
+ switch (entry->mBTable.mMaxFrame) {
+ case 0:
+ o_color->b = 0;
+ break;
+ case 1:
+ o_color->b = mAnmKRegDataB[entry->mBTable.mOffset];
+ break;
+ default:
+ col = J3DGetKeyFrameInterpolation(mFrame, &entry->mBTable,
+ &mAnmKRegDataB[entry->mBTable.mOffset]);
+ if (col < 0) {
+ o_color->b = 0;
+ } else if (col > 0xFF) {
+ o_color->b = 0xFF;
+ } else {
+ OSf32tou8(&col, &o_color->b);
+ }
+ }
+ switch (entry->mATable.mMaxFrame) {
+ case 0:
+ o_color->a = 0;
+ break;
+ case 1:
+ o_color->a = mAnmKRegDataA[entry->mATable.mOffset];
+ break;
+ default:
+ col = J3DGetKeyFrameInterpolation(mFrame, &entry->mATable,
+ &mAnmKRegDataA[entry->mATable.mOffset]);
+ if (col < 0) {
+ o_color->a = 0;
+ } else if (col > 0xFF) {
+ o_color->a = 0xFF;
+ } else {
+ OSf32tou8(&col, &o_color->a);
+ }
+ }
}
/* 8032B780-8032B87C 3260C0 00FC+00 1/1 1/1 0/0 .text
* searchUpdateMaterialID__15J3DAnmTevRegKeyFP16J3DMaterialTable */
-void J3DAnmTevRegKey::searchUpdateMaterialID(J3DMaterialTable* param_0) {
- // NONMATCHING
+void J3DAnmTevRegKey::searchUpdateMaterialID(J3DMaterialTable* i_materialTable) {
+ for (u16 i = 0; i < mCRegUpdateMaterialNum; i++) {
+ s32 index = i_materialTable->getMaterialName()->getIndex(mCRegUpdateMaterialName.getName(i));
+ if (index != -1) {
+ mCRegUpdateMaterialID[i] = index;
+ } else {
+ mCRegUpdateMaterialID[i] = -1;
+ }
+ }
+ for (u16 i = 0; i < mKRegUpdateMaterialNum; i++) {
+ s32 index = i_materialTable->getMaterialName()->getIndex(mKRegUpdateMaterialName.getName(i));
+ if (index != -1) {
+ mKRegUpdateMaterialID[i] = index;
+ } else {
+ mKRegUpdateMaterialID[i] = -1;
+ }
+ }
}
/* 8032B87C-8032B8A0 3261BC 0024+00 0/0 9/9 4/4 .text
* searchUpdateMaterialID__15J3DAnmTevRegKeyFP12J3DModelData */
-void J3DAnmTevRegKey::searchUpdateMaterialID(J3DModelData* param_0) {
- searchUpdateMaterialID(&param_0->getMaterialTable());
-}
-
-/* 8032B8A0-8032BAD4 3261E0 0234+00 6/6 0/0 0/0 .text
- * J3DGetKeyFrameInterpolation<s>__FfP18J3DAnmKeyTableBasePs */
-extern "C" void func_8032B8A0(void* _this, f32 param_0, J3DAnmKeyTableBase* param_1,
- s16* param_2) {
- // NONMATCHING
-}
-
-/* 8032BAD4-8032BC50 326414 017C+00 3/3 0/0 0/0 .text
- * J3DGetKeyFrameInterpolation<f>__FfP18J3DAnmKeyTableBasePf */
-extern "C" void func_8032BAD4(void* _this, f32 param_0, J3DAnmKeyTableBase* param_1,
- f32* param_2) {
- // NONMATCHING
-}
-
-/* 8032BC50-8032BCAC 326590 005C+00 1/0 0/0 0/0 .text __dt__14J3DAnmVtxColorFv */
-extern "C" void __dt__14J3DAnmVtxColorFv() {
- // asm J3DAnmVtxColor::~J3DAnmVtxColor() {
- // NONMATCHING
-}
-
-/* 8032BCAC-8032BD20 3265EC 0074+00 1/0 0/0 0/0 .text __dt__11J3DAnmColorFv */
-extern "C" void __dt__11J3DAnmColorFv() {
- // asm J3DAnmColor::~J3DAnmColor() {
- // NONMATCHING
-}
-
-/* 8032BD20-8032BD94 326660 0074+00 1/0 0/0 0/0 .text __dt__16J3DAnmTexPatternFv */
-extern "C" void __dt__16J3DAnmTexPatternFv() {
- // asm J3DAnmTexPattern::~J3DAnmTexPattern() {
- // NONMATCHING
-}
-
-/* 8032BD94-8032BD9C 3266D4 0008+00 1/0 0/0 0/0 .text getKind__16J3DAnmTexPatternCFv */
-s32 J3DAnmTexPattern::getKind() const {
- return 2;
+void J3DAnmTevRegKey::searchUpdateMaterialID(J3DModelData* i_modelData) {
+ searchUpdateMaterialID(&i_modelData->getMaterialTable());
}
-
-/* 8032BD9C-8032BE24 3266DC 0088+00 1/0 0/0 0/0 .text __dt__15J3DAnmTevRegKeyFv */
-extern "C" void __dt__15J3DAnmTevRegKeyFv() {
- // asm J3DAnmTevRegKey::~J3DAnmTevRegKey() {
- // NONMATCHING
-}
-
-/* 8032BE24-8032BE2C 326764 0008+00 1/0 0/0 0/0 .text getKind__15J3DAnmTevRegKeyCFv */
-s32 J3DAnmTevRegKey::getKind() const {
- return 5;
-}
-
-/* 8032BE2C-8032BEB0 32676C 0084+00 1/0 0/0 0/0 .text __dt__14J3DAnmColorKeyFv */
-extern "C" void __dt__14J3DAnmColorKeyFv() {
- // asm J3DAnmColorKey::~J3DAnmColorKey() {
- // NONMATCHING
-}
-
-/* 8032BEB0-8032BEB8 3267F0 0008+00 1/0 0/0 0/0 .text getKind__14J3DAnmColorKeyCFv */
-s32 J3DAnmColorKey::getKind() const {
- return 11;
-}
-
-/* 8032BEB8-8032BF3C 3267F8 0084+00 1/0 0/0 0/0 .text __dt__15J3DAnmColorFullFv */
-extern "C" void __dt__15J3DAnmColorFullFv() {
- // asm J3DAnmColorFull::~J3DAnmColorFull() {
- // NONMATCHING
-}
-
-/* 8032BF3C-8032BF44 32687C 0008+00 1/0 0/0 0/0 .text getKind__15J3DAnmColorFullCFv */
-s32 J3DAnmColorFull::getKind() const {
- return 10;
-}
-
-/* 8032BF44-8032BF4C 326884 0008+00 1/0 0/0 0/0 .text getKind__11J3DAnmColorCFv */
-s32 J3DAnmColor::getKind() const {
- return 1;
-}
-
-/* 8032BF4C-8032BF50 32688C 0004+00 1/0 0/0 0/0 .text getColor__11J3DAnmColorCFUsP8_GXColor */
-void J3DAnmColor::getColor(u16 param_0, _GXColor* param_1) const {
- /* empty function */
-}
-
-/* 8032BF50-8032BFBC 326890 006C+00 1/0 0/0 0/0 .text __dt__17J3DAnmVtxColorKeyFv */
-extern "C" void __dt__17J3DAnmVtxColorKeyFv() {
- // asm J3DAnmVtxColorKey::~J3DAnmVtxColorKey() {
- // NONMATCHING
-}
-
-/* 8032BFBC-8032BFC4 3268FC 0008+00 1/0 0/0 0/0 .text getKind__17J3DAnmVtxColorKeyCFv */
-s32 J3DAnmVtxColorKey::getKind() const {
- return 15;
-}
-
-/* 8032BFC4-8032C030 326904 006C+00 1/0 0/0 0/0 .text __dt__18J3DAnmVtxColorFullFv */
-extern "C" void __dt__18J3DAnmVtxColorFullFv() {
- // asm J3DAnmVtxColorFull::~J3DAnmVtxColorFull() {
- // NONMATCHING
-}
-
-/* 8032C030-8032C038 326970 0008+00 1/0 0/0 0/0 .text getKind__18J3DAnmVtxColorFullCFv */
-s32 J3DAnmVtxColorFull::getKind() const {
- return 14;
-}
-
-/* 8032C038-8032C040 326978 0008+00 1/0 0/0 0/0 .text getKind__14J3DAnmVtxColorCFv */
-s32 J3DAnmVtxColor::getKind() const {
- return 7;
-}
-
-/* 8032C040-8032C044 326980 0004+00 1/0 0/0 0/0 .text getColor__14J3DAnmVtxColorCFUcUsP8_GXColor
- */
-void J3DAnmVtxColor::getColor(u8 param_0, u16 param_1, _GXColor* param_2) const {
- /* empty function */
-}
-
-/* 8032C044-8032C0B0 326984 006C+00 1/0 0/0 0/0 .text __dt__16J3DAnmClusterKeyFv */
-extern "C" void __dt__16J3DAnmClusterKeyFv() {
- // asm J3DAnmClusterKey::~J3DAnmClusterKey() {
- // NONMATCHING
-}
-
-/* 8032C0B0-8032C0B8 3269F0 0008+00 1/0 0/0 0/0 .text getKind__16J3DAnmClusterKeyCFv */
-s32 J3DAnmClusterKey::getKind() const {
- return 13;
-}
-
-/* 8032C0B8-8032C114 3269F8 005C+00 1/0 0/0 0/0 .text __dt__13J3DAnmClusterFv */
-extern "C" void __dt__13J3DAnmClusterFv() {
- // asm J3DAnmCluster::~J3DAnmCluster() {
- // NONMATCHING
-}
-
-/* 8032C114-8032C11C 326A54 0008+00 1/0 0/0 0/0 .text getKind__13J3DAnmClusterCFv */
-s32 J3DAnmCluster::getKind() const {
- return 3;
-}
-
-/* 8032C11C-8032C124 326A5C 0008+00 1/0 0/0 0/0 .text getWeight__13J3DAnmClusterCFUs */
-f32 J3DAnmCluster::getWeight(u16 param_0) const {
- return lit_852;
-}
-
-/* 8032C124-8032C190 326A64 006C+00 1/0 0/0 0/0 .text __dt__17J3DAnmClusterFullFv */
-extern "C" void __dt__17J3DAnmClusterFullFv() {
- // asm J3DAnmClusterFull::~J3DAnmClusterFull() {
- // NONMATCHING
-}
-
-/* 8032C190-8032C198 326AD0 0008+00 1/0 0/0 0/0 .text getKind__17J3DAnmClusterFullCFv */
-s32 J3DAnmClusterFull::getKind() const {
- return 12;
-}
-
-/* 8032C198-8032C220 326AD8 0088+00 1/0 0/0 0/0 .text __dt__19J3DAnmTextureSRTKeyFv */
-extern "C" void __dt__19J3DAnmTextureSRTKeyFv() {
- // asm J3DAnmTextureSRTKey::~J3DAnmTextureSRTKey() {
- // NONMATCHING
-}
-
-/* 8032C220-8032C228 326B60 0008+00 1/0 0/0 0/0 .text getKind__19J3DAnmTextureSRTKeyCFv
- */
-s32 J3DAnmTextureSRTKey::getKind() const {
- return 4;
-}
-
-/* ############################################################################################## */
-/* 803CEE34-803CEE48 02BF54 0014+00 1/1 1/1 0/0 .data __vt__27J3DAnmTransformFullWithLerp
- */
-SECTION_DATA extern void* __vt__27J3DAnmTransformFullWithLerp[5] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__27J3DAnmTransformFullWithLerpFv,
- (void*)getKind__27J3DAnmTransformFullWithLerpCFv,
- (void*)getTransform__27J3DAnmTransformFullWithLerpCFUsP16J3DTransformInfo,
-};
-
-/* 803CEE48-803CEE60 02BF68 0014+04 2/2 1/1 0/0 .data __vt__19J3DAnmTransformFull */
-SECTION_DATA extern void* __vt__19J3DAnmTransformFull[5 + 1 /* padding */] = {
- (void*)NULL /* RTTI */,
- (void*)NULL,
- (void*)__dt__19J3DAnmTransformFullFv,
- (void*)getKind__19J3DAnmTransformFullCFv,
- (void*)getTransform__19J3DAnmTransformFullCFUsP16J3DTransformInfo,
- /* padding */
- NULL,
-};
-
-/* 8032C228-8032C2A4 326B68 007C+00 1/0 0/0 0/0 .text __dt__27J3DAnmTransformFullWithLerpFv */
-extern "C" void __dt__27J3DAnmTransformFullWithLerpFv() {
- // asm J3DAnmTransformFullWithLerp::~J3DAnmTransformFullWithLerp() {
- // NONMATCHING
-}
-
-/* 8032C2A4-8032C2AC 326BE4 0008+00 1/0 0/0 0/0 .text getKind__27J3DAnmTransformFullWithLerpCFv */
-s32 J3DAnmTransformFullWithLerp::getKind() const {
- return 16;
-}
-
-/* 8032C2AC-8032C318 326BEC 006C+00 1/0 0/0 0/0 .text __dt__19J3DAnmTransformFullFv */
-extern "C" void __dt__19J3DAnmTransformFullFv() {
- // asm J3DAnmTransformFull::~J3DAnmTransformFull() {
- // NONMATCHING
-}
-
-/* 8032C318-8032C320 326C58 0008+00 1/0 0/0 0/0 .text getKind__19J3DAnmTransformFullCFv
- */
-s32 J3DAnmTransformFull::getKind() const {
- return 9;
-} \ No newline at end of file