Files
tww/src/JSystem/JParticle/JPABaseShape.cpp
T
Jasper St. Pierre 1ac8f88222 JPA matches
2023-11-06 17:58:14 -08:00

131 lines
3.5 KiB
C++

//
// Generated by dtk
// Translation Unit: JPABaseShape.cpp
//
#include "JSystem/JParticle/JPABaseShape.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 */
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;
}
static void dummy() {
OSReport("texTable");
OSReport("(*((s16*) (bin + 20))) != 0");
OSReport("(*((s16*) (bin + 22))) != 0");
}
/* 80257248-80257508 .text __ct__15JPABaseShapeArcFPCUcP7JKRHeap */
JPABaseShapeArc::JPABaseShapeArc(const u8* pData, JKRHeap* pHeap) {
/* Nonmatching */
pBsd = (const JPABaseShapeData*) pData;
mColLoopOffset = -((u16)(pBsd->mFlags >> 11) & 1);
mTexLoopOffset = -((u16)(pBsd->mFlags >> 13) & 1);
bool bFlag2 = false;
if (!(pBsd->mFlags & 0x1000)) {
if (getType() == JPAType_Stripe || getType() == JPAType_StripeCross)
bFlag2 = true;
}
bool bFlag1 = false;
if (!(pBsd->mFlags & 0x4000)) {
if (getType() == JPAType_Stripe || getType() == JPAType_StripeCross)
bFlag1 = true;
}
mGlobalAnmFlags = bFlag2 << 1 | bFlag1 << 0;
if (isEnableTextureAnm() && getTextureAnmKeyNum() != 0)
mpTexAnmIdxArr = (const u8*)(pData + 0x60);
else
mpTexAnmIdxArr = NULL;
if (isEnablePrmAnm()) {
JUT_ASSERT(0x11f, pBsd->prmAnmKeyNum != 0);
mpPrmColorArr = makeColorTable((JPAColorRegAnmKey*)(pData + pBsd->mPrmAnimDataOffs), pBsd->prmAnmKeyNum, pBsd->mColorRegAnmMaxFrm, pHeap);
} else {
mpPrmColorArr = NULL;
}
if (isEnableEnvAnm()) {
JUT_ASSERT(0x127, pBsd->envAnmKeyNum != 0);
mpEnvColorArr = makeColorTable((JPAColorRegAnmKey*)(pData + pBsd->mEnvAnimDataOffs), pBsd->envAnmKeyNum, pBsd->mColorRegAnmMaxFrm, pHeap);
} else {
mpEnvColorArr = NULL;
}
}