diff --git a/include/JSystem/JParticle/JPABaseShape.h b/include/JSystem/JParticle/JPABaseShape.h new file mode 100644 index 000000000..ea3afc6e2 --- /dev/null +++ b/include/JSystem/JParticle/JPABaseShape.h @@ -0,0 +1,202 @@ +#ifndef JPABASESHAPE_H +#define JPABASESHAPE_H + +#include "JSystem/JParticle/JPAEmitter.h" +#include "dolphin/gx/GX.h" + +class JPABaseShape { +public: + virtual ~JPABaseShape() {} + virtual u8 getType() = 0; + virtual u8 getDirType() = 0; + virtual u8 getRotType() = 0; + virtual u8 getBasePlaneType() = 0; + virtual f32 getBaseSizeX() = 0; + virtual f32 getBaseSizeY() = 0; + virtual s16 getLoopOffset() = 0; + virtual s16 getColLoopOffset() = 0; + virtual s16 getTexLoopOffset() = 0; + virtual BOOL isEnableGlobalColAnm() = 0; + virtual BOOL isEnableGlobalTexAnm() = 0; + virtual BOOL getListOrder() = 0; + virtual BOOL getChildOrder() = 0; + virtual GXTevColorArg* getTevColorArg() = 0; + virtual GXTevAlphaArg* getTevAlphaArg() = 0; + virtual BOOL isEnableAlphaUpdate() = 0; + virtual GXBlendMode getBlendMode1() = 0; + virtual GXBlendFactor getSrcBlendFactor1() = 0; + virtual GXBlendFactor getDstBlendFactor1() = 0; + virtual GXLogicOp getBlendOp1() = 0; + virtual BOOL isEnableZCmp() = 0; + virtual u32 getZCmpFunction() = 0; + virtual BOOL isEnableZCmpUpdate() = 0; + virtual u32 getZCompLoc() = 0; + virtual GXCompare getAlphaCmpComp0() = 0; + virtual GXCompare getAlphaCmpComp1() = 0; + virtual GXAlphaOp getAlphaCmpOp() = 0; + virtual u8 getAlphaCmpRef0() = 0; + virtual u8 getAlphaCmpRef1() = 0; + virtual BOOL isEnableAnmTone() = 0; + virtual BOOL isEnableProjection() = 0; + virtual BOOL isClipOn() = 0; + virtual BOOL isEnableTextureAnm() = 0; + virtual BOOL textureIsEmpty() = 0; + virtual u32 getTextureAnmType() = 0; + virtual u32 getTextureAnmKeyNum() = 0; + virtual u8 getTextureIndex() = 0; + virtual u8 getTextureIndex(u8 idx) = 0; + virtual BOOL isEnablePrm() = 0; + virtual BOOL isEnableEnv() = 0; + virtual BOOL isEnablePrmAnm() = 0; + virtual BOOL isEnableEnvAnm() = 0; + virtual GXColor getPrmColor() = 0; + virtual GXColor getEnvColor() = 0; + virtual GXColor getPrmColor(s16) = 0; + virtual GXColor getEnvColor(s16) = 0; + virtual u32 getColorRegAnmType() = 0; + virtual u32 getColorRegAnmMaxFrm() = 0; + virtual BOOL isEnableTexScrollAnm() = 0; + virtual f32 getTilingX() = 0; + virtual f32 getTilingY() = 0; + virtual f32 getTexStaticTransX() = 0; + virtual f32 getTexStaticTransY() = 0; + virtual f32 getTexStaticScaleX() = 0; + virtual f32 getTexStaticScaleY() = 0; + virtual f32 getTexScrollTransX() = 0; + virtual f32 getTexScrollTransY() = 0; + virtual f32 getTexScrollScaleX() = 0; + virtual f32 getTexScrollScaleY() = 0; + virtual f32 getTexScrollRotate() = 0; +}; + +struct JPABaseShapeData { + /* 0x00 */ u32 mFlags; + /* 0x04 */ s16 mPrmAnimDataOffs; + /* 0x06 */ s16 mEnvAnimDataOffs; + /* 0x08 */ f32 mBaseSizeX; + /* 0x0c */ f32 mBaseSizeY; + /* 0x10 */ s16 mLoopOffset; + /* 0x12 */ u16 mBlendFlags; + /* 0x14 */ u8 mAlphaFlags; + /* 0x15 */ u8 mAlphaCmpRef0; + /* 0x16 */ u8 mAlphaCmpRef1; + /* 0x17 */ u8 mZFlags; + /* 0x18 */ u8 mTextureFlags; + /* 0x19 */ u8 mTextureAnmKeyNum; + /* 0x1a */ u8 mTextureIndex; + /* 0x1b */ u8 mColorFlags; + /* 0x1c */ u8 prmAnmKeyNum; + /* 0x1d */ u8 envAnmKeyNum; + /* 0x1e */ s16 mColorRegAnmMaxFrm; + /* 0x20 */ GXColor mPrmColor; + /* 0x24 */ GXColor mEnvColor; + /* 0x28 */ f32 mTilingX; + /* 0x2c */ f32 mTilingY; + /* 0x30 */ f32 mTexStaticTransX; + /* 0x34 */ f32 mTexStaticTransY; + /* 0x38 */ f32 mTexStaticScaleX; + /* 0x3c */ f32 mTexStaticScaleY; + /* 0x40 */ f32 mTexScrollTransX; + /* 0x44 */ f32 mTexScrollTransY; + /* 0x48 */ f32 mTexScrollScaleX; + /* 0x4c */ f32 mTexScrollScaleY; + /* 0x50 */ f32 mTexScrollRotate; +}; + +class JPABaseShapeArc : public JPABaseShape { +public: + static GXBlendMode stBlendMode[4]; + static GXBlendFactor stBlendFactor[10]; + static GXLogicOp stLogicOp[16]; + static GXCompare stCompare[8]; + static GXAlphaOp stAlphaOp[4]; + static GXTevColorArg stTevColorArg[6][4]; + static GXTevAlphaArg stTevAlphaArg[2][4]; + + enum Type { + JPAType_Point, + JPAType_Line, + JPAType_Billboard, + JPAType_Direction, + JPAType_DirectionCross, + JPAType_Stripe, + JPAType_StripeCross, + JPAType_Rotation, + JPAType_RotationCross, + JPAType_DirBillboard, + JPAType_YBillboard, + }; + + JPABaseShapeArc(const u8 * pData, JKRHeap * pHeap); + virtual ~JPABaseShapeArc() {} + virtual u8 getType() { return pBsd->mFlags & 0x0F; } + virtual u8 getDirType() { return (pBsd->mFlags >> 4) & 0x07; } + virtual u8 getRotType() { return (pBsd->mFlags >> 7) & 0x07; } + virtual u8 getBasePlaneType() { return (pBsd->mFlags >> 10) & 0x01; } + virtual f32 getBaseSizeX() { return pBsd->mBaseSizeX; } + virtual f32 getBaseSizeY() { return pBsd->mBaseSizeY; } + virtual s16 getLoopOffset() { return pBsd->mLoopOffset; } + virtual s16 getColLoopOffset() { return mColLoopOffset; } + virtual s16 getTexLoopOffset() { return mTexLoopOffset; } + virtual BOOL isEnableGlobalColAnm() { return mGlobalAnmFlags & 0x02; } + virtual BOOL isEnableGlobalTexAnm() { return mGlobalAnmFlags & 0x01; } + virtual BOOL getListOrder() { return pBsd->mFlags & 0x200000; } + virtual BOOL getChildOrder() { return pBsd->mFlags & 0x400000; } + virtual GXTevColorArg* getTevColorArg() { return stTevColorArg[(pBsd->mFlags >> 15) & 0x07]; } + virtual GXTevAlphaArg* getTevAlphaArg() { return stTevAlphaArg[(pBsd->mFlags >> 18) & 0x01]; } + virtual BOOL isEnableAlphaUpdate() { return (pBsd->mBlendFlags >> 14) & 0x01; } + virtual GXBlendMode getBlendMode1() { return stBlendMode[(pBsd->mBlendFlags >> 0) & 0x03]; } + virtual GXBlendFactor getSrcBlendFactor1() { return stBlendFactor[(pBsd->mBlendFlags >> 2) & 0x0F]; } + virtual GXBlendFactor getDstBlendFactor1() { return stBlendFactor[(pBsd->mBlendFlags >> 6) & 0x0F]; } + virtual GXLogicOp getBlendOp1() { return stLogicOp[(pBsd->mBlendFlags >> 10) & 0x0F]; } + virtual BOOL isEnableZCmp() { return (pBsd->mZFlags >> 0) & 0x01; } + virtual u32 getZCmpFunction() { return stCompare[(pBsd->mZFlags >> 1) & 0x07]; } + virtual BOOL isEnableZCmpUpdate() { return (pBsd->mZFlags >> 4) & 0x01; } + virtual u32 getZCompLoc() { return (pBsd->mZFlags >> 5) & 0x01; } + virtual GXCompare getAlphaCmpComp0() { return stCompare[(pBsd->mAlphaFlags >> 0) & 0x07]; } + virtual GXCompare getAlphaCmpComp1() { return stCompare[(pBsd->mAlphaFlags >> 5) & 0x07]; } + virtual GXAlphaOp getAlphaCmpOp() { return stAlphaOp[(pBsd->mAlphaFlags >> 3) & 0x03]; } + virtual u8 getAlphaCmpRef0() { return pBsd->mAlphaCmpRef0; } + virtual u8 getAlphaCmpRef1() { return pBsd->mAlphaCmpRef1; } + virtual BOOL isEnableAnmTone() { return pBsd->mFlags & 0x80000; } + virtual BOOL isEnableProjection() { return pBsd->mFlags & 0x100000; } + virtual BOOL isClipOn() { return pBsd->mFlags & 0x800000; } + virtual BOOL isEnableTextureAnm() { return pBsd->mTextureFlags & 0x01; } + virtual BOOL textureIsEmpty() { return !(pBsd->mTextureFlags & 0x02); } + virtual u32 getTextureAnmType() { return (pBsd->mTextureFlags >> 2) & 0x07; } + virtual u32 getTextureAnmKeyNum() { return pBsd->mTextureAnmKeyNum; } + virtual u8 getTextureIndex() { return pBsd->mTextureIndex; } + virtual u8 getTextureIndex(u8 idx) { return mpTexAnmIdxArr[idx]; } + virtual BOOL isEnablePrm() { return pBsd->mColorFlags & 0x01; } + virtual BOOL isEnableEnv() { return pBsd->mColorFlags & 0x04; } + virtual BOOL isEnablePrmAnm() { return pBsd->mColorFlags & 0x02; } + virtual BOOL isEnableEnvAnm() { return pBsd->mColorFlags & 0x08; } + virtual GXColor getPrmColor() { return pBsd->mPrmColor; } + virtual GXColor getEnvColor() { return pBsd->mEnvColor; } + virtual GXColor getPrmColor(s16 idx) { return mpPrmColorArr[idx]; } + virtual GXColor getEnvColor(s16 idx) { return mpEnvColorArr[idx]; } + virtual u32 getColorRegAnmType() { return (pBsd->mColorFlags >> 4) & 0x07; } + virtual u32 getColorRegAnmMaxFrm() { return pBsd->mColorRegAnmMaxFrm; } + virtual BOOL isEnableTexScrollAnm() { return pBsd->mFlags & 0x1000000; } + virtual f32 getTilingX() { return pBsd->mTilingX; } + virtual f32 getTilingY() { return pBsd->mTilingY; } + virtual f32 getTexStaticTransX() { return pBsd->mTexStaticTransX; } + virtual f32 getTexStaticTransY() { return pBsd->mTexStaticTransY; } + virtual f32 getTexStaticScaleX() { return pBsd->mTexStaticScaleX; } + virtual f32 getTexStaticScaleY() { return pBsd->mTexStaticScaleY; } + virtual f32 getTexScrollTransX() { return pBsd->mTexScrollTransX; } + virtual f32 getTexScrollTransY() { return pBsd->mTexScrollTransY; } + virtual f32 getTexScrollScaleX() { return pBsd->mTexScrollScaleX; } + virtual f32 getTexScrollScaleY() { return pBsd->mTexScrollScaleY; } + virtual f32 getTexScrollRotate() { return pBsd->mTexScrollRotate; } + + /* 0x04 */ const JPABaseShapeData* pBsd; + /* 0x08 */ const u8 * mpTexAnmIdxArr; + /* 0x0C */ const GXColor * mpPrmColorArr; + /* 0x10 */ const GXColor * mpEnvColorArr; + /* 0x14 */ s16 mColLoopOffset; + /* 0x16 */ s16 mTexLoopOffset; + /* 0x18 */ u8 mGlobalAnmFlags; +}; + +#endif /* JPABASESHAPE_H */ diff --git a/include/JSystem/JParticle/JPAParticle.h b/include/JSystem/JParticle/JPAParticle.h index d1e6ed74d..40f4be2da 100644 --- a/include/JSystem/JParticle/JPAParticle.h +++ b/include/JSystem/JParticle/JPAParticle.h @@ -3,6 +3,7 @@ #include "JSystem/JSupport/JSUList.h" #include "JSystem/JParticle/JPAEmitter.h" +#include "JSystem/JGeometry.h" #include "SSystem/SComponent/c_xyz.h" #include "dolphin/gx/GXStruct.h" diff --git a/src/JSystem/JParticle/JPABaseShape.cpp b/src/JSystem/JParticle/JPABaseShape.cpp index 54adcb6a2..2b446010f 100644 --- a/src/JSystem/JParticle/JPABaseShape.cpp +++ b/src/JSystem/JParticle/JPABaseShape.cpp @@ -4,324 +4,121 @@ // #include "JSystem/JParticle/JPABaseShape.h" -#include "dolphin/types.h" +#include "JSystem/JKernel/JKRHeap.h" +#include "JSystem/JUtility/JUTAssert.h" + +GXBlendMode JPABaseShapeArc::stBlendMode[4] = { + GX_BM_NONE, + GX_BM_BLEND, + GX_BM_LOGIC, +}; + +GXBlendFactor JPABaseShapeArc::stBlendFactor[10] = { + GX_BL_ZERO, + GX_BL_ONE, + GX_BL_SRC_COLOR, + GX_BL_INV_SRC_COLOR, + GX_BL_DST_COLOR, + GX_BL_INV_DST_COLOR, + GX_BL_SRC_ALPHA, + GX_BL_INV_SRC_ALPHA, + GX_BL_DST_ALPHA, + GX_BL_INV_DST_ALPHA, +}; + +GXLogicOp JPABaseShapeArc::stLogicOp[16] = { + GX_LO_CLEAR, + GX_LO_CLEAR, + GX_LO_CLEAR, + GX_LO_CLEAR, + GX_LO_CLEAR, + GX_LO_CLEAR, + GX_LO_CLEAR, + GX_LO_CLEAR, + GX_LO_CLEAR, + GX_LO_CLEAR, + GX_LO_CLEAR, + GX_LO_CLEAR, +}; + +GXCompare JPABaseShapeArc::stCompare[8] = { + GX_NEVER, + GX_LESS, + GX_LEQUAL, + GX_EQUAL, + GX_NEQUAL, + GX_GEQUAL, + GX_GREATER, + GX_ALWAYS, +}; + +GXAlphaOp JPABaseShapeArc::stAlphaOp[4] = { + GX_AOP_AND, + GX_AOP_OR, + GX_AOP_XOR, + GX_AOP_XNOR, +}; + +GXTevColorArg JPABaseShapeArc::stTevColorArg[6][4] = { + { GX_CC_ZERO, GX_CC_TEXC, GX_CC_ONE, GX_CC_ZERO }, + { GX_CC_ZERO, GX_CC_C0, GX_CC_TEXC, GX_CC_ZERO }, + { GX_CC_C0, GX_CC_ONE, GX_CC_TEXC, GX_CC_ZERO }, + { GX_CC_C1, GX_CC_C0, GX_CC_TEXC, GX_CC_ZERO }, + { GX_CC_ZERO, GX_CC_TEXC, GX_CC_C0, GX_CC_C1 }, + { GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0 }, +}; + +GXTevAlphaArg JPABaseShapeArc::stTevAlphaArg[2][4] = { + { GX_CA_ZERO, GX_CA_TEXA, GX_CA_A0, GX_CA_ZERO }, + { GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0 }, +}; + +class JPAColorRegAnmKey; /* 80256F88-80257248 .text makeColorTable__FP17JPAColorRegAnmKeyiiP7JKRHeap */ -void makeColorTable(JPAColorRegAnmKey*, int, int, JKRHeap*) { +GXColor * makeColorTable(JPAColorRegAnmKey* pKey, int keyNum, int frmNum, JKRHeap* pHeap) { /* Nonmatching */ + GXColor * colTbl = (GXColor *)JKRHeap::alloc((frmNum + 1) * sizeof(GXColor), 4, pHeap); + JUT_ASSERT(0x5d, colTbl); + return colTbl; } /* 80257248-80257508 .text __ct__15JPABaseShapeArcFPCUcP7JKRHeap */ -JPABaseShapeArc::JPABaseShapeArc(const unsigned char*, JKRHeap*) { +JPABaseShapeArc::JPABaseShapeArc(const u8* pData, JKRHeap* pHeap) { /* Nonmatching */ -} + pBsd = (const JPABaseShapeData*) pData; + mColLoopOffset = -((u16)(pBsd->mFlags >> 11) & 1); + mTexLoopOffset = -((u16)(pBsd->mFlags >> 13) & 1); -/* 80257508-80257550 .text __dt__12JPABaseShapeFv */ -JPABaseShape::~JPABaseShape() { - /* Nonmatching */ -} + bool bFlag2 = false; + if (!(pBsd->mFlags & 0x1000)) { + if (getType() == JPAType_Stripe || getType() == JPAType_StripeCross) + bFlag2 = true; + } -/* 80257550-80257560 .text isEnableEnvAnm__15JPABaseShapeArcFv */ -void JPABaseShapeArc::isEnableEnvAnm() { - /* Nonmatching */ -} + bool bFlag1 = false; + if (!(pBsd->mFlags & 0x4000)) { + if (getType() == JPAType_Stripe || getType() == JPAType_StripeCross) + bFlag1 = true; + } -/* 80257560-80257570 .text isEnablePrmAnm__15JPABaseShapeArcFv */ -void JPABaseShapeArc::isEnablePrmAnm() { - /* Nonmatching */ -} + mGlobalAnmFlags = (bFlag2 ? 2 : 0) | (bFlag1 ? 1 : 0); + if (isEnableTextureAnm() && getTextureAnmKeyNum() != 0) + mpTexAnmIdxArr = (const u8*)(pData + 0x60); + else + mpTexAnmIdxArr = NULL; -/* 80257570-8025757C .text getTextureAnmKeyNum__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getTextureAnmKeyNum() { - /* Nonmatching */ -} + if (isEnablePrmAnm()) { + JUT_ASSERT(0x11f, pBsd->prmAnmKeyNum != 0); + mpPrmColorArr = makeColorTable((JPAColorRegAnmKey*)(pData + pBsd->mPrmAnimDataOffs), pBsd->prmAnmKeyNum, pBsd->mColorRegAnmMaxFrm, pHeap); + } else { + mpPrmColorArr = NULL; + } -/* 8025757C-8025758C .text isEnableTextureAnm__15JPABaseShapeArcFv */ -void JPABaseShapeArc::isEnableTextureAnm() { - /* Nonmatching */ -} - -/* 8025758C-8025759C .text getType__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getType() { - /* Nonmatching */ -} - -/* 8025759C-802575F8 .text __dt__15JPABaseShapeArcFv */ -JPABaseShapeArc::~JPABaseShapeArc() { - /* Nonmatching */ -} - -/* 802575F8-80257608 .text getDirType__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getDirType() { - /* Nonmatching */ -} - -/* 80257608-80257618 .text getRotType__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getRotType() { - /* Nonmatching */ -} - -/* 80257618-80257628 .text getBasePlaneType__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getBasePlaneType() { - /* Nonmatching */ -} - -/* 80257628-80257634 .text getBaseSizeX__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getBaseSizeX() { - /* Nonmatching */ -} - -/* 80257634-80257640 .text getBaseSizeY__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getBaseSizeY() { - /* Nonmatching */ -} - -/* 80257640-8025764C .text getLoopOffset__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getLoopOffset() { - /* Nonmatching */ -} - -/* 8025764C-80257654 .text getColLoopOffset__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getColLoopOffset() { - /* Nonmatching */ -} - -/* 80257654-8025765C .text getTexLoopOffset__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getTexLoopOffset() { - /* Nonmatching */ -} - -/* 8025765C-80257668 .text isEnableGlobalColAnm__15JPABaseShapeArcFv */ -void JPABaseShapeArc::isEnableGlobalColAnm() { - /* Nonmatching */ -} - -/* 80257668-80257674 .text isEnableGlobalTexAnm__15JPABaseShapeArcFv */ -void JPABaseShapeArc::isEnableGlobalTexAnm() { - /* Nonmatching */ -} - -/* 80257674-80257684 .text getListOrder__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getListOrder() { - /* Nonmatching */ -} - -/* 80257684-80257694 .text getChildOrder__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getChildOrder() { - /* Nonmatching */ -} - -/* 80257694-802576B0 .text getTevColorArg__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getTevColorArg() { - /* Nonmatching */ -} - -/* 802576B0-802576CC .text getTevAlphaArg__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getTevAlphaArg() { - /* Nonmatching */ -} - -/* 802576CC-802576E8 .text getBlendMode1__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getBlendMode1() { - /* Nonmatching */ -} - -/* 802576E8-80257704 .text getSrcBlendFactor1__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getSrcBlendFactor1() { - /* Nonmatching */ -} - -/* 80257704-80257720 .text getDstBlendFactor1__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getDstBlendFactor1() { - /* Nonmatching */ -} - -/* 80257720-8025773C .text getBlendOp1__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getBlendOp1() { - /* Nonmatching */ -} - -/* 8025773C-8025774C .text isEnableAlphaUpdate__15JPABaseShapeArcFv */ -void JPABaseShapeArc::isEnableAlphaUpdate() { - /* Nonmatching */ -} - -/* 8025774C-8025775C .text isEnableZCmp__15JPABaseShapeArcFv */ -void JPABaseShapeArc::isEnableZCmp() { - /* Nonmatching */ -} - -/* 8025775C-80257778 .text getZCmpFunction__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getZCmpFunction() { - /* Nonmatching */ -} - -/* 80257778-80257788 .text isEnableZCmpUpdate__15JPABaseShapeArcFv */ -void JPABaseShapeArc::isEnableZCmpUpdate() { - /* Nonmatching */ -} - -/* 80257788-80257798 .text getZCompLoc__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getZCompLoc() { - /* Nonmatching */ -} - -/* 80257798-802577B4 .text getAlphaCmpComp0__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getAlphaCmpComp0() { - /* Nonmatching */ -} - -/* 802577B4-802577D0 .text getAlphaCmpComp1__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getAlphaCmpComp1() { - /* Nonmatching */ -} - -/* 802577D0-802577EC .text getAlphaCmpOp__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getAlphaCmpOp() { - /* Nonmatching */ -} - -/* 802577EC-802577F8 .text getAlphaCmpRef0__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getAlphaCmpRef0() { - /* Nonmatching */ -} - -/* 802577F8-80257804 .text getAlphaCmpRef1__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getAlphaCmpRef1() { - /* Nonmatching */ -} - -/* 80257804-80257814 .text isEnableAnmTone__15JPABaseShapeArcFv */ -void JPABaseShapeArc::isEnableAnmTone() { - /* Nonmatching */ -} - -/* 80257814-80257824 .text isEnableProjection__15JPABaseShapeArcFv */ -void JPABaseShapeArc::isEnableProjection() { - /* Nonmatching */ -} - -/* 80257824-80257834 .text isClipOn__15JPABaseShapeArcFv */ -void JPABaseShapeArc::isClipOn() { - /* Nonmatching */ -} - -/* 80257834-8025784C .text textureIsEmpty__15JPABaseShapeArcFv */ -void JPABaseShapeArc::textureIsEmpty() { - /* Nonmatching */ -} - -/* 8025784C-8025785C .text getTextureAnmType__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getTextureAnmType() { - /* Nonmatching */ -} - -/* 8025785C-8025786C .text getTextureIndex__15JPABaseShapeArcFUc */ -void JPABaseShapeArc::getTextureIndex(unsigned char) { - /* Nonmatching */ -} - -/* 8025786C-80257878 .text getTextureIndex__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getTextureIndex() { - /* Nonmatching */ -} - -/* 80257878-80257888 .text isEnablePrm__15JPABaseShapeArcFv */ -void JPABaseShapeArc::isEnablePrm() { - /* Nonmatching */ -} - -/* 80257888-80257898 .text isEnableEnv__15JPABaseShapeArcFv */ -void JPABaseShapeArc::isEnableEnv() { - /* Nonmatching */ -} - -/* 80257898-802578AC .text getPrmColor__15JPABaseShapeArcFs */ -void JPABaseShapeArc::getPrmColor(short) { - /* Nonmatching */ -} - -/* 802578AC-802578B8 .text getPrmColor__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getPrmColor() { - /* Nonmatching */ -} - -/* 802578B8-802578CC .text getEnvColor__15JPABaseShapeArcFs */ -void JPABaseShapeArc::getEnvColor(short) { - /* Nonmatching */ -} - -/* 802578CC-802578D8 .text getEnvColor__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getEnvColor() { - /* Nonmatching */ -} - -/* 802578D8-802578E8 .text getColorRegAnmType__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getColorRegAnmType() { - /* Nonmatching */ -} - -/* 802578E8-802578F4 .text getColorRegAnmMaxFrm__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getColorRegAnmMaxFrm() { - /* Nonmatching */ -} - -/* 802578F4-80257904 .text isEnableTexScrollAnm__15JPABaseShapeArcFv */ -void JPABaseShapeArc::isEnableTexScrollAnm() { - /* Nonmatching */ -} - -/* 80257904-80257910 .text getTilingX__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getTilingX() { - /* Nonmatching */ -} - -/* 80257910-8025791C .text getTilingY__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getTilingY() { - /* Nonmatching */ -} - -/* 8025791C-80257928 .text getTexStaticTransX__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getTexStaticTransX() { - /* Nonmatching */ -} - -/* 80257928-80257934 .text getTexStaticTransY__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getTexStaticTransY() { - /* Nonmatching */ -} - -/* 80257934-80257940 .text getTexStaticScaleX__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getTexStaticScaleX() { - /* Nonmatching */ -} - -/* 80257940-8025794C .text getTexStaticScaleY__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getTexStaticScaleY() { - /* Nonmatching */ -} - -/* 8025794C-80257958 .text getTexScrollTransX__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getTexScrollTransX() { - /* Nonmatching */ -} - -/* 80257958-80257964 .text getTexScrollTransY__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getTexScrollTransY() { - /* Nonmatching */ -} - -/* 80257964-80257970 .text getTexScrollScaleX__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getTexScrollScaleX() { - /* Nonmatching */ -} - -/* 80257970-8025797C .text getTexScrollScaleY__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getTexScrollScaleY() { - /* Nonmatching */ -} - -/* 8025797C-80257988 .text getTexScrollRotate__15JPABaseShapeArcFv */ -void JPABaseShapeArc::getTexScrollRotate() { - /* Nonmatching */ + if (isEnableEnvAnm()) { + JUT_ASSERT(0x127, pBsd->envAnmKeyNum != 0); + mpEnvColorArr = makeColorTable((JPAColorRegAnmKey*)(pData + pBsd->mEnvAnimDataOffs), pBsd->envAnmKeyNum, pBsd->mColorRegAnmMaxFrm, pHeap); + } else { + mpEnvColorArr = NULL; + } }