J3DAnimation OK

mostly copied from pikmin2
This commit is contained in:
LagoLunatic
2024-04-14 09:53:27 -04:00
parent 9819140a32
commit 7bfb08ed5f
4 changed files with 272 additions and 71 deletions
+1 -1
View File
@@ -879,7 +879,7 @@ config.libs = [
[
Object(Matching, "JSystem/J3DGraphAnimator/J3DModelData.cpp"),
Object(NonMatching, "JSystem/J3DGraphAnimator/J3DModel.cpp"),
Object(NonMatching, "JSystem/J3DGraphAnimator/J3DAnimation.cpp"),
Object(Matching, "JSystem/J3DGraphAnimator/J3DAnimation.cpp"),
Object(Matching, "JSystem/J3DGraphAnimator/J3DMaterialAnm.cpp"),
Object(Matching, "JSystem/J3DGraphAnimator/J3DVisibility.cpp"),
Object(NonMatching, "JSystem/J3DGraphAnimator/J3DCluster.cpp"),
+25 -22
View File
@@ -12,10 +12,13 @@ struct J3DAnmKeyTableBase {
}; // Size = 0x6
struct J3DAnmColorKeyTable {
J3DAnmKeyTableBase mRInfo;
J3DAnmKeyTableBase mGInfo;
J3DAnmKeyTableBase mBInfo;
J3DAnmKeyTableBase mAInfo;
enum Color {
RED = 0,
GREEN = 1,
BLUE = 2,
ALPHA = 3,
};
/* 0x00 */ J3DAnmKeyTableBase mColorInfo[4];
}; // Size = 0x18
struct J3DAnmColorFullTable {
@@ -374,7 +377,7 @@ public:
mAnmTable = NULL;
}
virtual ~J3DAnmTransformFull();
virtual ~J3DAnmTransformFull() {}
virtual void getTransform(u16, J3DTransformInfo*) const;
private:
@@ -612,8 +615,8 @@ public:
void searchUpdateMaterialID(J3DMaterialTable*);
void searchUpdateMaterialID(J3DModelData*);
virtual ~J3DAnmColor();
virtual void getColor(u16, GXColor*) const;
virtual ~J3DAnmColor() {}
virtual void getColor(u16, GXColor*) const {}
u16 getUpdateMaterialNum() const { return mUpdateMaterialNum; }
bool isValidUpdateMaterialID(u16 id) const { return mUpdateMaterialID[id] != 0xFFFF; }
@@ -635,22 +638,22 @@ public:
friend class J3DAnmKeyLoader_v15;
J3DAnmColorKey() {
field_0x30 = 0;
field_0x34 = 0;
field_0x38 = 0;
field_0x3c = 0;
field_0x40 = 0;
mColorR = NULL;
mColorG = NULL;
mColorB = NULL;
mColorA = NULL;
mTable = NULL;
}
virtual ~J3DAnmColorKey();
virtual ~J3DAnmColorKey() {}
virtual void getColor(u16, GXColor*) const;
private:
/* 0x30 */ s16* field_0x30;
/* 0x34 */ s16* field_0x34;
/* 0x38 */ s16* field_0x38;
/* 0x3C */ s16* field_0x3c;
/* 0x40 */ J3DAnmColorKeyTable* field_0x40;
/* 0x30 */ s16* mColorR;
/* 0x34 */ s16* mColorG;
/* 0x38 */ s16* mColorB;
/* 0x3C */ s16* mColorA;
/* 0x40 */ J3DAnmColorKeyTable* mTable;
};
class J3DAnmColorFull : public J3DAnmColor {
@@ -665,7 +668,7 @@ public:
mAnmTable = NULL;
}
virtual ~J3DAnmColorFull();
virtual ~J3DAnmColorFull() {}
virtual void getColor(u16, GXColor*) const;
J3DAnmColorFullTable * getAnmTable() const { return mAnmTable; }
@@ -696,7 +699,7 @@ public:
}
}
virtual ~J3DAnmVtxColor();
virtual ~J3DAnmVtxColor() {}
virtual void getColor(u8, u16, GXColor*) const {}
protected:
@@ -714,7 +717,7 @@ public:
}
}
virtual ~J3DAnmVtxColorKey();
virtual ~J3DAnmVtxColorKey() {}
virtual void getColor(u8, u16, GXColor*) const;
J3DAnmColorKeyTable * getAnmTable(u8 idx) const { return mpTable[idx]; }
@@ -737,7 +740,7 @@ public:
}
}
virtual ~J3DAnmVtxColorFull();
virtual ~J3DAnmVtxColorFull() {}
virtual void getColor(u8, u16, GXColor*) const;
J3DAnmColorFullTable * getAnmTable(u8 idx) const { return mpTable[idx]; }
+241 -43
View File
@@ -5,6 +5,7 @@
#include "JSystem/J3DGraphAnimator/J3DAnimation.h"
#include "JSystem/JMath/JMath.h"
#include "dolphin/os/OS.h"
/* 802EF5D8-802EF608 .text init__12J3DFrameCtrlFs */
void J3DFrameCtrl::init(s16 end) {
@@ -208,14 +209,13 @@ void J3DFrameCtrl::update() {
/* 802EFFE4-802F06D8 .text getTransform__19J3DAnmTransformFullCFUsP16J3DTransformInfo */
void J3DAnmTransformFull::getTransform(u16 idx, J3DTransformInfo* dst) const {
/* Nonmatching */
/* Scale */
{
u16 maxFrame = mAnmTable[idx*3 + 0].mScaleMaxFrame;
if (0.0f <= getFrame() && getFrame() < maxFrame)
dst->mScale.x = mScaleData[(s32)getFrame() + mAnmTable[idx*3 + 0].mScaleOffset];
else if (getFrame() < 0.0f)
if (0.0f <= getFrame() && getFrame() < maxFrame) {
s32 frame = getFrame();
dst->mScale.x = mScaleData[frame + mAnmTable[idx*3 + 0].mScaleOffset];
} else if (getFrame() < 0.0f)
dst->mScale.x = mScaleData[mAnmTable[idx*3 + 0].mScaleOffset];
else
dst->mScale.x = mScaleData[maxFrame - 1 + mAnmTable[idx*3 + 0].mScaleOffset];
@@ -223,27 +223,30 @@ void J3DAnmTransformFull::getTransform(u16 idx, J3DTransformInfo* dst) const {
/* Seems they copy-pasted this block one too many times? */
{
u16 maxFrame = mAnmTable[idx*3 + 0].mScaleMaxFrame;
if (0.0f <= getFrame() && getFrame() < maxFrame)
dst->mScale.x = mScaleData[(s32)getFrame() + mAnmTable[idx*3 + 0].mScaleOffset];
else if (getFrame() < 0.0f)
if (0.0f <= getFrame() && getFrame() < maxFrame) {
s32 frame = getFrame();
dst->mScale.x = mScaleData[frame + mAnmTable[idx*3 + 0].mScaleOffset];
} else if (getFrame() < 0.0f)
dst->mScale.x = mScaleData[mAnmTable[idx*3 + 0].mScaleOffset];
else
dst->mScale.x = mScaleData[maxFrame - 1 + mAnmTable[idx*3 + 0].mScaleOffset];
}
{
u16 maxFrame = mAnmTable[idx*3 + 1].mScaleMaxFrame;
if (0.0f <= getFrame() && getFrame() < maxFrame)
dst->mScale.y = mScaleData[(s32)getFrame() + mAnmTable[idx*3 + 1].mScaleOffset];
else if (getFrame() < 0.0f)
if (0.0f <= getFrame() && getFrame() < maxFrame) {
s32 frame = getFrame();
dst->mScale.y = mScaleData[frame + mAnmTable[idx*3 + 1].mScaleOffset];
} else if (getFrame() < 0.0f)
dst->mScale.y = mScaleData[mAnmTable[idx*3 + 1].mScaleOffset];
else
dst->mScale.y = mScaleData[maxFrame - 1 + mAnmTable[idx*3 + 1].mScaleOffset];
}
{
u16 maxFrame = mAnmTable[idx*3 + 2].mScaleMaxFrame;
if (0.0f <= getFrame() && getFrame() < maxFrame)
dst->mScale.z = mScaleData[(s32)getFrame() + mAnmTable[idx*3 + 2].mScaleOffset];
else if (getFrame() < 0.0f)
if (0.0f <= getFrame() && getFrame() < maxFrame){
s32 frame = getFrame();
dst->mScale.z = mScaleData[frame + mAnmTable[idx*3 + 2].mScaleOffset];
} else if (getFrame() < 0.0f)
dst->mScale.z = mScaleData[mAnmTable[idx*3 + 2].mScaleOffset];
else
dst->mScale.z = mScaleData[maxFrame - 1 + mAnmTable[idx*3 + 2].mScaleOffset];
@@ -252,27 +255,30 @@ void J3DAnmTransformFull::getTransform(u16 idx, J3DTransformInfo* dst) const {
/* Rotation */
{
u16 maxFrame = mAnmTable[idx*3 + 0].mRotationMaxFrame;
if (0.0f <= getFrame() && getFrame() < maxFrame)
dst->mRotation.x = mRotData[(s32)getFrame() + mAnmTable[idx*3 + 0].mRotationOffset];
else if (getFrame() < 0.0f)
if (0.0f <= getFrame() && getFrame() < maxFrame){
s32 frame = getFrame();
dst->mRotation.x = mRotData[frame + mAnmTable[idx*3 + 0].mRotationOffset];
} else if (getFrame() < 0.0f)
dst->mRotation.x = mRotData[mAnmTable[idx*3 + 0].mRotationOffset];
else
dst->mRotation.x = mRotData[maxFrame - 1 + mAnmTable[idx*3 + 0].mRotationOffset];
}
{
u16 maxFrame = mAnmTable[idx*3 + 1].mRotationMaxFrame;
if (0.0f <= getFrame() && getFrame() < maxFrame)
dst->mRotation.y = mRotData[(s32)getFrame() + mAnmTable[idx*3 + 1].mRotationOffset];
else if (getFrame() < 0.0f)
if (0.0f <= getFrame() && getFrame() < maxFrame){
s32 frame = getFrame();
dst->mRotation.y = mRotData[frame + mAnmTable[idx*3 + 1].mRotationOffset];
} else if (getFrame() < 0.0f)
dst->mRotation.y = mRotData[mAnmTable[idx*3 + 1].mRotationOffset];
else
dst->mRotation.y = mRotData[maxFrame - 1 + mAnmTable[idx*3 + 1].mRotationOffset];
}
{
u16 maxFrame = mAnmTable[idx*3 + 2].mRotationMaxFrame;
if (0.0f <= getFrame() && getFrame() < maxFrame)
dst->mRotation.z = mRotData[(s32)getFrame() + mAnmTable[idx*3 + 2].mRotationOffset];
else if (getFrame() < 0.0f)
if (0.0f <= getFrame() && getFrame() < maxFrame){
s32 frame = getFrame();
dst->mRotation.z = mRotData[frame + mAnmTable[idx*3 + 2].mRotationOffset];
} else if (getFrame() < 0.0f)
dst->mRotation.z = mRotData[mAnmTable[idx*3 + 2].mRotationOffset];
else
dst->mRotation.z = mRotData[maxFrame - 1 + mAnmTable[idx*3 + 2].mRotationOffset];
@@ -281,27 +287,30 @@ void J3DAnmTransformFull::getTransform(u16 idx, J3DTransformInfo* dst) const {
/* Translation */
{
u16 maxFrame = mAnmTable[idx*3 + 0].mTranslateMaxFrame;
if (0.0f <= getFrame() && getFrame() < maxFrame)
dst->mTranslate.x = mTransData[(s32)getFrame() + mAnmTable[idx*3 + 0].mTranslateOffset];
else if (getFrame() < 0.0f)
if (0.0f <= getFrame() && getFrame() < maxFrame){
s32 frame = getFrame();
dst->mTranslate.x = mTransData[frame + mAnmTable[idx*3 + 0].mTranslateOffset];
} else if (getFrame() < 0.0f)
dst->mTranslate.x = mTransData[mAnmTable[idx*3 + 0].mTranslateOffset];
else
dst->mTranslate.x = mTransData[maxFrame - 1 + mAnmTable[idx*3 + 0].mTranslateOffset];
}
{
u16 maxFrame = mAnmTable[idx*3 + 1].mTranslateMaxFrame;
if (0.0f <= getFrame() && getFrame() < maxFrame)
dst->mTranslate.y = mTransData[(s32)getFrame() + mAnmTable[idx*3 + 1].mTranslateOffset];
else if (getFrame() < 0.0f)
if (0.0f <= getFrame() && getFrame() < maxFrame){
s32 frame = getFrame();
dst->mTranslate.y = mTransData[frame + mAnmTable[idx*3 + 1].mTranslateOffset];
} else if (getFrame() < 0.0f)
dst->mTranslate.y = mTransData[mAnmTable[idx*3 + 1].mTranslateOffset];
else
dst->mTranslate.y = mTransData[maxFrame - 1 + mAnmTable[idx*3 + 1].mTranslateOffset];
}
{
u16 maxFrame = mAnmTable[idx*3 + 2].mTranslateMaxFrame;
if (0.0f <= getFrame() && getFrame() < maxFrame)
dst->mTranslate.z = mTransData[(s32)getFrame() + mAnmTable[idx*3 + 2].mTranslateOffset];
else if (getFrame() < 0.0f)
if (0.0f <= getFrame() && getFrame() < maxFrame){
s32 frame = getFrame();
dst->mTranslate.z = mTransData[frame + mAnmTable[idx*3 + 2].mTranslateOffset];
} else if (getFrame() < 0.0f)
dst->mTranslate.z = mTransData[mAnmTable[idx*3 + 2].mTranslateOffset];
else
dst->mTranslate.z = mTransData[maxFrame - 1 + mAnmTable[idx*3 + 2].mTranslateOffset];
@@ -310,13 +319,46 @@ void J3DAnmTransformFull::getTransform(u16 idx, J3DTransformInfo* dst) const {
/* 802F06D8-802F072C .text J3DHermiteInterpolationS__FfPsPsPsPsPsPs */
f32 J3DHermiteInterpolationS(f32 t, s16* time0, s16* value0, s16* tangent0, s16* time1, s16* value1, s16* tangent1) {
/* Nonmatching */
/*
f32 v0 = *(f32*)value0;
f32 timeRange = (*(f32*)time1 - *(f32*)time0);
f32 kt = (t - *(f32*)time0) / timeRange;
f32 t1 = (-timeRange * *(f32*)tangent0 - (*(f32*)value1 - v0));
f32 t2 = kt * kt * ((*(f32*)tangent1 * timeRange + v0) - *(f32*)value1 - t1);
return (t1 * kt * kt + (timeRange * *(f32*)tangent0 + t2) * kt + v0) - t2;
*/
register f32 p1 = t;
register s16* p2 = time0;
register s16* p3 = value0;
register s16* p4 = tangent0;
register s16* p5 = time1;
register s16* p6 = value1;
register s16* p7 = tangent1;
register f32 fout;
asm {
psq_l f0, 0(p2), 0x1, 5
psq_l f3, 0(p5), 0x1, 5
psq_l f2, 0(p3), 0x1, 5
fsubs f4, f3, f0
psq_l f3, 0(p6), 0x1, 5
fsubs f6, fout, f0
psq_l fout, 0(p7), 0x1, 5
fsubs f5, f3, f2
fdivs f6, f6, f4
psq_l f0, 0(p4), 0x1, 5
fmadds fout, fout, f4, f2
fmuls f7, f6, f6
fnmsubs f5, f4, f0, f5
fsubs fout, fout, f3
fsubs fout, fout, f5
fmuls f3, f7, fout
fmadds fout, f4, f0, f3
fmadds fout, fout, f6, f2
fmadds fout, f5, f7, fout
fsubs fout, fout, f3
}
return fout;
}
/* 802F072C-802F0954 .text J3DGetKeyFrameInterpolationS__FfP18J3DAnmKeyTableBasePs */
@@ -568,8 +610,83 @@ void J3DAnmVtxColorFull::getColor(u8 col, u16 idx, GXColor* dst) const {
}
/* 802F14B4-802F17D0 .text getColor__17J3DAnmVtxColorKeyCFUcUsP8_GXColor */
void J3DAnmVtxColorKey::getColor(u8 col, u16 idx, GXColor* dst) const {
/* Nonmatching */
void J3DAnmVtxColorKey::getColor(u8 col, u16 idx, GXColor* outColor) const {
f32 frame;
switch (getAnmTable(col)[idx].mColorInfo[J3DAnmColorKeyTable::RED].mMaxFrame) {
case 0:
outColor->r = 0;
break;
case 1:
outColor->r = mColorR[getAnmTable(col)[idx].mColorInfo[J3DAnmColorKeyTable::RED].mOffset];
break;
default:
frame = J3DGetKeyFrameInterpolationS(mFrame, &getAnmTable(col)[idx].mColorInfo[J3DAnmColorKeyTable::RED],
&mColorR[getAnmTable(col)[idx].mColorInfo[J3DAnmColorKeyTable::RED].mOffset]);
if (frame <= 0.0f) {
outColor->r = 0;
} else if (frame <= 255.0f) {
OSf32tou8(&frame, &outColor->r);
} else {
outColor->r = 255;
}
}
switch (getAnmTable(col)[idx].mColorInfo[J3DAnmColorKeyTable::GREEN].mMaxFrame) {
case 0:
outColor->g = 0;
break;
case 1:
outColor->g = mColorG[getAnmTable(col)[idx].mColorInfo[J3DAnmColorKeyTable::GREEN].mOffset];
break;
default:
frame = J3DGetKeyFrameInterpolationS(mFrame, &getAnmTable(col)[idx].mColorInfo[J3DAnmColorKeyTable::GREEN],
&mColorG[getAnmTable(col)[idx].mColorInfo[J3DAnmColorKeyTable::GREEN].mOffset]);
if (frame <= 0.0f) {
outColor->g = 0;
} else if (frame <= 255.0f) {
OSf32tou8(&frame, &outColor->g);
} else {
outColor->g = 255;
}
}
switch (getAnmTable(col)[idx].mColorInfo[J3DAnmColorKeyTable::BLUE].mMaxFrame) {
case 0:
outColor->b = 0;
break;
case 1:
outColor->b = mColorB[getAnmTable(col)[idx].mColorInfo[J3DAnmColorKeyTable::BLUE].mOffset];
break;
default:
frame = J3DGetKeyFrameInterpolationS(mFrame, &getAnmTable(col)[idx].mColorInfo[J3DAnmColorKeyTable::BLUE],
&mColorB[getAnmTable(col)[idx].mColorInfo[J3DAnmColorKeyTable::BLUE].mOffset]);
if (frame <= 0.0f) {
outColor->b = 0;
} else if (frame <= 255.0f) {
OSf32tou8(&frame, &outColor->b);
} else {
outColor->b = 255;
}
}
switch (getAnmTable(col)[idx].mColorInfo[J3DAnmColorKeyTable::ALPHA].mMaxFrame) {
case 0:
outColor->a = 0;
break;
case 1:
outColor->a = mColorA[getAnmTable(col)[idx].mColorInfo[J3DAnmColorKeyTable::ALPHA].mOffset];
break;
default:
frame = J3DGetKeyFrameInterpolationS(mFrame, &getAnmTable(col)[idx].mColorInfo[J3DAnmColorKeyTable::ALPHA],
&mColorA[getAnmTable(col)[idx].mColorInfo[J3DAnmColorKeyTable::ALPHA].mOffset]);
if (frame <= 0.0f) {
outColor->a = 0;
} else if (frame <= 255.0f) {
OSf32tou8(&frame, &outColor->a);
} else {
outColor->a = 255;
}
}
}
/* 802F17D0-802F1868 .text searchUpdateMaterialID__11J3DAnmColorFP16J3DMaterialTable */
@@ -629,8 +746,91 @@ void J3DAnmColorFull::getColor(u16 idx, GXColor* dst) const {
}
/* 802F1BDC-802F1F20 .text getColor__14J3DAnmColorKeyCFUsP8_GXColor */
void J3DAnmColorKey::getColor(u16 idx, GXColor* dst) const {
/* Nonmatching */
void J3DAnmColorKey::getColor(u16 tableIndex, GXColor* outColor) const {
f32 frame;
switch (mTable[tableIndex].mColorInfo[J3DAnmColorKeyTable::RED].mMaxFrame) {
case 0:
outColor->r = 0;
break;
case 1:
outColor->r = mColorR[mTable[tableIndex].mColorInfo[J3DAnmColorKeyTable::RED].mOffset];
break;
default:
frame = J3DGetKeyFrameInterpolation<s16>(mFrame, &mTable[tableIndex].mColorInfo[J3DAnmColorKeyTable::RED],
&mColorR[mTable[tableIndex].mColorInfo[J3DAnmColorKeyTable::RED].mOffset]);
if (frame < 0.0f) {
outColor->r = 0;
}
if (frame > 255.0f) {
outColor->r = 255;
}
if (0.0f <= frame && frame <= 255.0f) {
outColor->r = frame;
}
}
switch (mTable[tableIndex].mColorInfo[J3DAnmColorKeyTable::GREEN].mMaxFrame) {
case 0:
outColor->g = 0;
break;
case 1:
outColor->g = mColorG[mTable[tableIndex].mColorInfo[J3DAnmColorKeyTable::GREEN].mOffset];
break;
default:
frame = J3DGetKeyFrameInterpolation<s16>(mFrame, &mTable[tableIndex].mColorInfo[J3DAnmColorKeyTable::GREEN],
&mColorG[mTable[tableIndex].mColorInfo[J3DAnmColorKeyTable::GREEN].mOffset]);
if (frame < 0.0f) {
outColor->g = 0;
}
if (frame > 255.0f) {
outColor->g = 255;
}
if (0.0f <= frame && frame <= 255.0f) {
outColor->g = frame;
}
}
switch (mTable[tableIndex].mColorInfo[J3DAnmColorKeyTable::BLUE].mMaxFrame) {
case 0:
outColor->b = 0;
break;
case 1:
outColor->b = mColorB[mTable[tableIndex].mColorInfo[J3DAnmColorKeyTable::BLUE].mOffset];
break;
default:
frame = J3DGetKeyFrameInterpolation<s16>(mFrame, &mTable[tableIndex].mColorInfo[J3DAnmColorKeyTable::BLUE],
&mColorB[mTable[tableIndex].mColorInfo[J3DAnmColorKeyTable::BLUE].mOffset]);
if (frame < 0.0f) {
outColor->b = 0;
}
if (frame > 255.0f) {
outColor->b = 255;
}
if (0.0f <= frame && frame <= 255.0f) {
outColor->b = frame;
}
}
switch (mTable[tableIndex].mColorInfo[J3DAnmColorKeyTable::ALPHA].mMaxFrame) {
case 0:
outColor->a = 0;
break;
case 1:
outColor->a = mColorA[mTable[tableIndex].mColorInfo[J3DAnmColorKeyTable::ALPHA].mOffset];
break;
default:
frame = J3DGetKeyFrameInterpolation<s16>(mFrame, &mTable[tableIndex].mColorInfo[J3DAnmColorKeyTable::ALPHA],
&mColorA[mTable[tableIndex].mColorInfo[J3DAnmColorKeyTable::ALPHA].mOffset]);
if (frame < 0.0f) {
outColor->a = 0;
}
if (frame > 255.0f) {
outColor->a = 255;
}
if (0.0f <= frame && frame <= 255.0f) {
outColor->a = frame;
}
}
}
/* 802F1F20-802F200C .text getTexNo__16J3DAnmTexPatternCFUsPUs */
@@ -696,7 +896,6 @@ void J3DAnmTextureSRTKey::searchUpdateMaterialID(J3DModelData* modelData) {
/* 802F22E0-802F2624 .text getTevColorReg__15J3DAnmTevRegKeyCFUsP11_GXColorS10 */
void J3DAnmTevRegKey::getTevColorReg(u16 idx, GXColorS10* dst) const {
/* Nonmatching */
{
switch (getAnmCRegKeyTable()[idx].mRTable.mMaxFrame) {
case 0:
@@ -711,7 +910,7 @@ void J3DAnmTevRegKey::getTevColorReg(u16 idx, GXColorS10* dst) const {
dst->r = -1024;
if (v > 1023.0f)
dst->r = 1023;
if (0.0f <= v && v <= 255.0f)
if (-1024.0f <= v && v <= 1023.0f)
dst->r = v;
break;
}
@@ -730,7 +929,7 @@ void J3DAnmTevRegKey::getTevColorReg(u16 idx, GXColorS10* dst) const {
dst->g = -1024;
if (v > 1023.0f)
dst->g = 1023;
if (0.0f <= v && v <= 255.0f)
if (-1024.0f <= v && v <= 1023.0f)
dst->g = v;
break;
}
@@ -749,7 +948,7 @@ void J3DAnmTevRegKey::getTevColorReg(u16 idx, GXColorS10* dst) const {
dst->b = -1024;
if (v > 1023.0f)
dst->b = 1023;
if (0.0f <= v && v <= 255.0f)
if (-1024.0f <= v && v <= 1023.0f)
dst->b = v;
break;
}
@@ -768,7 +967,7 @@ void J3DAnmTevRegKey::getTevColorReg(u16 idx, GXColorS10* dst) const {
dst->a = -1024;
if (v > 1023.0f)
dst->a = 1023;
if (0.0f <= v && v <= 255.0f)
if (-1024.0f <= v && v <= 1023.0f)
dst->a = v;
break;
}
@@ -777,7 +976,6 @@ void J3DAnmTevRegKey::getTevColorReg(u16 idx, GXColorS10* dst) const {
/* 802F2624-802F2968 .text getTevKonstReg__15J3DAnmTevRegKeyCFUsP8_GXColor */
void J3DAnmTevRegKey::getTevKonstReg(u16 idx, GXColor* dst) const {
/* Nonmatching */
{
switch (getAnmKRegKeyTable()[idx].mRTable.mMaxFrame) {
case 0:
+5 -5
View File
@@ -526,11 +526,11 @@ void J3DAnmKeyLoader_v15::setAnmColor(J3DAnmColorKey* param_1, const J3DAnmColor
param_1->field_0x12 = param_2->field_0x12;
param_1->field_0x14 = param_2->field_0x14;
param_1->field_0x16 = param_2->field_0x16;
param_1->field_0x40 = JSUConvertOffsetToPtr<J3DAnmColorKeyTable>(param_2, (void*)param_2->mTableOffset);
param_1->field_0x30 = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mRValOffset);
param_1->field_0x34 = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mGValOffset);
param_1->field_0x38 = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mBValOffset);
param_1->field_0x3c = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mAValOffset);
param_1->mTable = JSUConvertOffsetToPtr<J3DAnmColorKeyTable>(param_2, (void*)param_2->mTableOffset);
param_1->mColorR = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mRValOffset);
param_1->mColorG = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mGValOffset);
param_1->mColorB = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mBValOffset);
param_1->mColorA = JSUConvertOffsetToPtr<s16>(param_2, (void*)param_2->mAValOffset);
param_1->mUpdateMaterialID = JSUConvertOffsetToPtr<u16>(param_2, (void*)param_2->mUpdateMaterialIDOffset);
param_1->mUpdateMaterialName.setResource(JSUConvertOffsetToPtr<ResNTAB>(param_2, (void*)param_2->mNameTabOffset));
}