// // Generated by dtk // Translation Unit: J3DAnimation.cpp // #include "JSystem/J3DGraphAnimator/J3DAnimation.h" #include "dolphin/types.h" /* 802EF5D8-802EF608 .text init__12J3DFrameCtrlFs */ void J3DFrameCtrl::init(s16 end) { mAttribute = 2; mState = 0; mStart = 0; mEnd = end; mLoop = 0; mRate = 1.0f; mFrame = 0.0f; } /* 802EF608-802EFBA8 .text checkPass__12J3DFrameCtrlFf */ BOOL J3DFrameCtrl::checkPass(f32 pass_frame) { f32 cur_frame = mFrame; f32 next_frame = cur_frame + mRate; switch (mAttribute) { case LOOP_ONCE_e: case LOOP_ONCE_RESET_e: if (next_frame < mStart) { next_frame = mStart; } if (next_frame >= mEnd) { next_frame = mEnd - 0.001f; } if (cur_frame <= next_frame) { if (cur_frame <= pass_frame && pass_frame < next_frame) { return true; } else { return false; } } if (next_frame <= pass_frame && pass_frame < cur_frame) { return true; } return false; case LOOP_REPEAT_e: if (cur_frame < mStart) { while (next_frame < mStart) { if (mLoop - mStart <= 0.0f) { break; } next_frame += mLoop - mStart; } if (next_frame <= pass_frame && pass_frame < mLoop) { return true; } else { return false; } } else if (mEnd <= cur_frame) { while (next_frame >= mEnd) { if (mEnd - mLoop <= 0.0f) { break; } next_frame -= mEnd - mLoop; } if (mLoop <= pass_frame && pass_frame < next_frame) { return true; } else { return false; } } else if (next_frame < mStart) { while (next_frame < mStart) { if (mLoop - mStart <= 0.0f) { break; } next_frame += mLoop - mStart; } if ((mStart <= pass_frame && pass_frame < cur_frame) || (next_frame <= pass_frame && pass_frame < mLoop)) { return true; } else { return false; } } else if (mEnd <= next_frame) { while (next_frame >= mEnd) { if (mEnd - mLoop <= 0.0f) { break; } next_frame -= mEnd - mLoop; } if ((cur_frame <= pass_frame && pass_frame < mEnd) || (mLoop <= pass_frame && pass_frame < next_frame)) { return true; } else { return false; } } else if (cur_frame <= next_frame) { if (cur_frame <= pass_frame && pass_frame < next_frame) { return true; } else { return false; } } else if (next_frame <= pass_frame && pass_frame < cur_frame) { return true; } return false; case LOOP_MIRROR_ONCE_e: case LOOP_MIRROR_REPEAT_e: if (next_frame >= mEnd) { next_frame = mEnd - 0.001f; } if (next_frame < mStart) { next_frame = mStart; } if (cur_frame <= next_frame) { if (cur_frame <= pass_frame && pass_frame < next_frame) { return true; } else { return false; } } if (next_frame <= pass_frame && pass_frame < cur_frame) { return true; } return false; default: return false; } } /* 802EFBA8-802EFFE4 .text update__12J3DFrameCtrlFv */ void J3DFrameCtrl::update() { mState = 0; mFrame += mRate; switch (mAttribute) { case LOOP_ONCE_e: if (mFrame < mStart) { mFrame = mStart; mRate = 0.0f; mState |= 1; } if (mFrame >= mEnd) { mFrame = mEnd - 0.001f; mRate = 0.0f; mState |= 1; } break; case LOOP_ONCE_RESET_e: if (mFrame < mStart) { mFrame = mStart; mRate = 0.0f; mState |= 1; } if (mFrame >= mEnd) { mFrame = mStart; mRate = 0.0f; mState |= 1; } break; case LOOP_REPEAT_e: while (mFrame < mStart) { mState |= 2; if (mLoop - mStart <= 0.0f) { break; } mFrame += mLoop - mStart; } while (mFrame >= mEnd) { mState |= 2; if (mEnd - mLoop <= 0.0f) { break; } mFrame -= mEnd - mLoop; } break; case LOOP_MIRROR_ONCE_e: if (mFrame >= mEnd) { mFrame = mEnd - 0.001f; mRate = -mRate; } if (mFrame < mStart) { mFrame = mStart; mRate = 0.0f; mState |= 1; } break; case LOOP_MIRROR_REPEAT_e: if (mFrame >= mEnd) { mFrame = mEnd - 0.001f; mRate = -mRate; } if (mFrame < mStart) { mFrame = mStart; mRate = -mRate; mState |= 2; } break; } } /* 802EFFE4-802F06D8 .text getTransform__19J3DAnmTransformFullCFUsP16J3DTransformInfo */ void J3DAnmTransformFull::getTransform(u16, J3DTransformInfo*) const { /* Nonmatching */ } /* 802F06D8-802F072C .text J3DHermiteInterpolationS__FfPsPsPsPsPsPs */ f32 J3DHermiteInterpolationS(f32 t, s16* time0, s16* value0, s16* tangent0, s16* time1, s16* value1, s16* tangent1) { /* Nonmatching */ } /* 802F072C-802F0954 .text J3DGetKeyFrameInterpolationS__FfP18J3DAnmKeyTableBasePs */ void J3DGetKeyFrameInterpolationS(f32, J3DAnmKeyTableBase*, s16*) { /* Nonmatching */ } /* 802F0954-802F0E20 .text calcTransform__18J3DAnmTransformKeyCFfUsP16J3DTransformInfo */ void J3DAnmTransformKey::calcTransform(f32, u16, J3DTransformInfo*) const { /* Nonmatching */ } /* 802F0E20-802F10D4 .text calcTransform__19J3DAnmTextureSRTKeyCFfUsP17J3DTextureSRTInfo */ void J3DAnmTextureSRTKey::calcTransform(f32, u16, J3DTextureSRTInfo*) const { /* Nonmatching */ } /* 802F10D4-802F1188 .text getWeight__17J3DAnmClusterFullCFUs */ f32 J3DAnmClusterFull::getWeight(u16 idx) const { u16 maxFrame = getAnmTable()[idx].mMaxFrame; if (0.0f <= getFrame() && getFrame() < maxFrame) return mWeight[(s32)getFrame() + getAnmTable()[idx].mOffset]; if (getFrame() < 0.0f) return mWeight[getAnmTable()[idx].mOffset]; else return mWeight[maxFrame - 1 + getAnmTable()[idx].mOffset]; } template f32 J3DGetKeyFrameInterpolation(f32, J3DAnmKeyTableBase*, T*) { } /* 802F1188-802F120C .text getWeight__16J3DAnmClusterKeyCFUs */ f32 J3DAnmClusterKey::getWeight(u16 idx) const { /* Nonmatching */ J3DAnmKeyTableBase& table = mAnmTable[idx].mWeightTable; if (table.mMaxFrame != 0 && table.mMaxFrame != 1) { return J3DGetKeyFrameInterpolation(getFrame(), &table, &mWeight[table.mOffset]); } else if (table.mMaxFrame == 0) { return 1.0f; } else { return mWeight[table.mOffset]; } } /* 802F120C-802F14B4 .text getColor__18J3DAnmVtxColorFullCFUcUsP8_GXColor */ void J3DAnmVtxColorFull::getColor(u8 col, u16 idx, GXColor* dst) const { { u16 maxFrame = getAnmTable(col)[idx].mRMaxFrame; if (0.0f <= getFrame() && getFrame() < maxFrame) dst->r = mColorR[(s32)getFrame() + getAnmTable(col)[idx].mROffset]; else if (getFrame() < 0.0f) dst->r = mColorR[getAnmTable(col)[idx].mROffset]; else dst->r = mColorR[maxFrame - 1 + getAnmTable(col)[idx].mROffset]; } { u16 maxFrame = getAnmTable(col)[idx].mGMaxFrame; if (0.0f <= getFrame() && getFrame() < maxFrame) dst->g = mColorG[(s32)getFrame() + getAnmTable(col)[idx].mGOffset]; else if (getFrame() < 0.0f) dst->g = mColorG[getAnmTable(col)[idx].mGOffset]; else dst->g = mColorG[maxFrame - 1 + getAnmTable(col)[idx].mGOffset]; } { u16 maxFrame = getAnmTable(col)[idx].mBMaxFrame; if (0.0f <= getFrame() && getFrame() < maxFrame) dst->b = mColorB[(s32)getFrame() + getAnmTable(col)[idx].mBOffset]; else if (getFrame() < 0.0f) dst->b = mColorB[getAnmTable(col)[idx].mBOffset]; else dst->b = mColorB[maxFrame - 1 + getAnmTable(col)[idx].mBOffset]; } { u16 maxFrame = getAnmTable(col)[idx].mAMaxFrame; if (0.0f <= getFrame() && getFrame() < maxFrame) dst->a = mColorA[(s32)getFrame() + getAnmTable(col)[idx].mAOffset]; else if (getFrame() < 0.0f) dst->a = mColorA[getAnmTable(col)[idx].mAOffset]; else dst->a = mColorA[maxFrame - 1 + getAnmTable(col)[idx].mAOffset]; } } /* 802F14B4-802F17D0 .text getColor__17J3DAnmVtxColorKeyCFUcUsP8_GXColor */ void J3DAnmVtxColorKey::getColor(u8 col, u16 idx, GXColor* dst) const { /* Nonmatching */ } /* 802F17D0-802F1868 .text searchUpdateMaterialID__11J3DAnmColorFP16J3DMaterialTable */ void J3DAnmColor::searchUpdateMaterialID(J3DMaterialTable* table) { for (u16 i = 0; i < getUpdateMaterialNum(); i++) { s32 materialID = table->getMaterialName()->getIndex(getUpdateMaterialName()->getName(i)); if (materialID != -1) mUpdateMaterialID[i] = materialID; else mUpdateMaterialID[i] = 0xFFFF; } } /* 802F1868-802F188C .text searchUpdateMaterialID__11J3DAnmColorFP12J3DModelData */ void J3DAnmColor::searchUpdateMaterialID(J3DModelData* modelData) { searchUpdateMaterialID(&modelData->getMaterialTable()); } /* 802F188C-802F1BDC .text getColor__15J3DAnmColorFullCFUsP8_GXColor */ void J3DAnmColorFull::getColor(u16 idx, GXColor* dst) const { { u16 maxFrame = getAnmTable()[idx].mRMaxFrame; if (getFrame() < 0.0f) dst->r = mColorR[getAnmTable()[idx].mROffset]; if (getFrame() >= maxFrame) dst->r = mColorR[maxFrame - 1 + getAnmTable()[idx].mROffset]; if (0.0f <= getFrame() && getFrame() < maxFrame) dst->r = mColorR[(s32)getFrame() + getAnmTable()[idx].mROffset]; } { u16 maxFrame = getAnmTable()[idx].mGMaxFrame; if (getFrame() < 0.0f) dst->g = mColorG[getAnmTable()[idx].mGOffset]; if (getFrame() >= maxFrame) dst->g = mColorG[maxFrame - 1 + getAnmTable()[idx].mGOffset]; if (0.0f <= getFrame() && getFrame() < maxFrame) dst->g = mColorG[(s32)getFrame() + getAnmTable()[idx].mGOffset]; } { u16 maxFrame = getAnmTable()[idx].mBMaxFrame; if (getFrame() < 0.0f) dst->b = mColorB[getAnmTable()[idx].mBOffset]; if (getFrame() >= maxFrame) dst->b = mColorB[maxFrame - 1 + getAnmTable()[idx].mBOffset]; if (0.0f <= getFrame() && getFrame() < maxFrame) dst->b = mColorB[(s32)getFrame() + getAnmTable()[idx].mBOffset]; } { u16 maxFrame = getAnmTable()[idx].mAMaxFrame; if (getFrame() < 0.0f) dst->a = mColorA[getAnmTable()[idx].mAOffset]; if (getFrame() >= maxFrame) dst->a = mColorA[maxFrame - 1 + getAnmTable()[idx].mAOffset]; if (0.0f <= getFrame() && getFrame() < maxFrame) dst->a = mColorA[(s32)getFrame() + getAnmTable()[idx].mAOffset]; } } /* 802F1BDC-802F1F20 .text getColor__14J3DAnmColorKeyCFUsP8_GXColor */ void J3DAnmColorKey::getColor(u16 idx, GXColor* dst) const { /* Nonmatching */ } /* 802F1F20-802F200C .text getTexNo__16J3DAnmTexPatternCFUsPUs */ void J3DAnmTexPattern::getTexNo(u16 idx, u16* dst) const { u16 maxFrame = getAnmTable()[idx].mMaxFrame; if (0.0f <= getFrame() && getFrame() < maxFrame) *dst = mTextureIndex[(s32)getFrame() + getAnmTable()[idx].mOffset]; if (getFrame() < 0.0f) *dst = mTextureIndex[getAnmTable()[idx].mOffset]; if (getFrame() >= maxFrame) *dst = mTextureIndex[maxFrame - 1 + getAnmTable()[idx].mOffset]; } /* 802F200C-802F20EC .text getVisibility__20J3DAnmVisibilityFullCFUsPUc */ void J3DAnmVisibilityFull::getVisibility(u16 idx, u8* dst) const { u16 maxFrame = getAnmTable()[idx].mMaxFrame; if (0.0f <= getFrame() && getFrame() < maxFrame) *dst = mVisibility[(s32)getFrame() + getAnmTable()[idx].mOffset]; if (getFrame() < 0.0f) *dst = mVisibility[getAnmTable()[idx].mOffset]; if (getFrame() >= maxFrame) *dst = mVisibility[maxFrame - 1 + getAnmTable()[idx].mOffset]; } /* 802F20EC-802F2184 .text searchUpdateMaterialID__16J3DAnmTexPatternFP16J3DMaterialTable */ void J3DAnmTexPattern::searchUpdateMaterialID(J3DMaterialTable* table) { for (u16 i = 0; i < getUpdateMaterialNum(); i++) { s32 materialID = table->getMaterialName()->getIndex(getUpdateMaterialName()->getName(i)); if (materialID != -1) mUpdateMaterialID[i] = materialID; else mUpdateMaterialID[i] = 0xFFFF; } } /* 802F2184-802F21A8 .text searchUpdateMaterialID__16J3DAnmTexPatternFP12J3DModelData */ void J3DAnmTexPattern::searchUpdateMaterialID(J3DModelData* modelData) { searchUpdateMaterialID(&modelData->getMaterialTable()); } /* 802F21A8-802F22BC .text searchUpdateMaterialID__19J3DAnmTextureSRTKeyFP16J3DMaterialTable */ void J3DAnmTextureSRTKey::searchUpdateMaterialID(J3DMaterialTable* table) { for (u16 i = 0; i < getUpdateMaterialNum(); i++) { s32 materialID = table->getMaterialName()->getIndex(getUpdateMaterialName()->getName(i)); if (materialID != -1) mUpdateMaterialID[i] = materialID; else mUpdateMaterialID[i] = 0xFFFF; } for (u16 i = 0; i < getPostUpdateMaterialNum(); i++) { s32 materialID = table->getMaterialName()->getIndex(getPostUpdateMaterialName()->getName(i)); if (materialID != -1) mPostUpdateMaterialID[i] = materialID; else mPostUpdateMaterialID[i] = 0xFFFF; } } /* 802F22BC-802F22E0 .text searchUpdateMaterialID__19J3DAnmTextureSRTKeyFP12J3DModelData */ void J3DAnmTextureSRTKey::searchUpdateMaterialID(J3DModelData* modelData) { searchUpdateMaterialID(&modelData->getMaterialTable()); } /* 802F22E0-802F2624 .text getTevColorReg__15J3DAnmTevRegKeyCFUsP11_GXColorS10 */ void J3DAnmTevRegKey::getTevColorReg(u16 idx, GXColorS10* dst) const { /* Nonmatching */ { J3DAnmKeyTableBase& table = getAnmCRegKeyTable()[idx].mRTable; switch (table.mMaxFrame) { case 0: dst->r = 0; break; case 1: dst->r = mAnmCRegDataR[table.mOffset]; break; default: f32 v = J3DGetKeyFrameInterpolation(getFrame(), &table, &mAnmCRegDataR[table.mOffset]); if (v < -1024.0f) dst->r = -1024; if (v > 1023.0f) dst->r = 1023; if (0.0f <= v && v <= 255.0f) dst->r = v; break; } } { J3DAnmKeyTableBase& table = getAnmCRegKeyTable()[idx].mGTable; switch (table.mMaxFrame) { case 0: dst->g = 0; break; case 1: dst->g = mAnmCRegDataG[table.mOffset]; break; default: f32 v = J3DGetKeyFrameInterpolation(getFrame(), &table, &mAnmCRegDataG[table.mOffset]); if (v < -1024.0f) dst->g = -1024; if (v > 1023.0f) dst->g = 1023; if (0.0f <= v && v <= 255.0f) dst->g = v; break; } } { J3DAnmKeyTableBase& table = getAnmCRegKeyTable()[idx].mBTable; switch (table.mMaxFrame) { case 0: dst->b = 0; break; case 1: dst->b = mAnmCRegDataB[table.mOffset]; break; default: f32 v = J3DGetKeyFrameInterpolation(getFrame(), &table, &mAnmCRegDataB[table.mOffset]); if (v < -1024.0f) dst->b = -1024; if (v > 1023.0f) dst->b = 1023; if (0.0f <= v && v <= 255.0f) dst->b = v; break; } } { J3DAnmKeyTableBase& table = getAnmCRegKeyTable()[idx].mATable; switch (table.mMaxFrame) { case 0: dst->a = 0; break; case 1: dst->a = mAnmCRegDataA[table.mOffset]; break; default: f32 v = J3DGetKeyFrameInterpolation(getFrame(), &table, &mAnmCRegDataA[table.mOffset]); if (v < -1024.0f) dst->a = -1024; if (v > 1023.0f) dst->a = 1023; if (0.0f <= v && v <= 255.0f) dst->a = v; break; } } } /* 802F2624-802F2968 .text getTevKonstReg__15J3DAnmTevRegKeyCFUsP8_GXColor */ void J3DAnmTevRegKey::getTevKonstReg(u16 idx, GXColor* dst) const { /* Nonmatching */ { J3DAnmKeyTableBase& table = getAnmKRegKeyTable()[idx].mRTable; switch (table.mMaxFrame) { case 0: dst->r = 0; break; case 1: dst->r = mAnmKRegDataR[table.mOffset]; break; default: f32 v = J3DGetKeyFrameInterpolation(getFrame(), &table, &mAnmKRegDataR[table.mOffset]); if (v < 0.0f) dst->r = 0; if (v > 255.0f) dst->r = 255; if (0.0f <= v && v <= 255.0f) dst->r = v; break; } } { J3DAnmKeyTableBase& table = getAnmKRegKeyTable()[idx].mGTable; switch (table.mMaxFrame) { case 0: dst->g = 0; break; case 1: dst->g = mAnmKRegDataG[table.mOffset]; break; default: f32 v = J3DGetKeyFrameInterpolation(getFrame(), &table, &mAnmKRegDataG[table.mOffset]); if (v < 0.0f) dst->g = 0; if (v > 255.0f) dst->g = 255; if (0.0f <= v && v <= 255.0f) dst->g = v; break; } } { J3DAnmKeyTableBase& table = getAnmKRegKeyTable()[idx].mBTable; switch (table.mMaxFrame) { case 0: dst->b = 0; break; case 1: dst->b = mAnmKRegDataB[table.mOffset]; break; default: f32 v = J3DGetKeyFrameInterpolation(getFrame(), &table, &mAnmKRegDataB[table.mOffset]); if (v < 0.0f) dst->b = 0; if (v > 255.0f) dst->b = 255; if (0.0f <= v && v <= 255.0f) dst->b = v; break; } } { J3DAnmKeyTableBase& table = getAnmKRegKeyTable()[idx].mATable; switch (table.mMaxFrame) { case 0: dst->a = 0; break; case 1: dst->a = mAnmKRegDataA[table.mOffset]; break; default: f32 v = J3DGetKeyFrameInterpolation(getFrame(), &table, &mAnmKRegDataA[table.mOffset]); if (v < 0.0f) dst->a = 0; if (v > 255.0f) dst->a = 255; if (0.0f <= v && v <= 255.0f) dst->a = v; break; } } } /* 802F2968-802F2A64 .text searchUpdateMaterialID__15J3DAnmTevRegKeyFP16J3DMaterialTable */ void J3DAnmTevRegKey::searchUpdateMaterialID(J3DMaterialTable* table) { for (u16 i = 0; i < getCRegUpdateMaterialNum(); i++) { s32 materialID = table->getMaterialName()->getIndex(getCRegUpdateMaterialName()->getName(i)); if (materialID != -1) mCRegUpdateMaterialID[i] = materialID; else mCRegUpdateMaterialID[i] = 0xFFFF; } for (u16 i = 0; i < getKRegUpdateMaterialNum(); i++) { s32 materialID = table->getMaterialName()->getIndex(getKRegUpdateMaterialName()->getName(i)); if (materialID != -1) mKRegUpdateMaterialID[i] = materialID; else mKRegUpdateMaterialID[i] = 0xFFFF; } } /* 802F2A64-802F2A88 .text searchUpdateMaterialID__15J3DAnmTevRegKeyFP12J3DModelData */ void J3DAnmTevRegKey::searchUpdateMaterialID(J3DModelData* modelData) { searchUpdateMaterialID(&modelData->getMaterialTable()); }