diff options
| author | Jcw87 <Jcw87@users.noreply.github.com> | 2023-12-19 02:54:59 -0800 |
|---|---|---|
| committer | Jcw87 <Jcw87@users.noreply.github.com> | 2023-12-19 03:22:43 -0800 |
| commit | de811bc95e770282d535fccdd5a2d5b1d47db1dc (patch) | |
| tree | 40d9c998600e474a3acf9978fb49d10ae9afc7af /src/JSystem/JParticle/JPADrawSetupTev.cpp | |
| parent | 985f1df0b7746b6ebc159d07fc7581bd3ead1b20 (diff) | |
JParticle
Diffstat (limited to 'src/JSystem/JParticle/JPADrawSetupTev.cpp')
| -rw-r--r-- | src/JSystem/JParticle/JPADrawSetupTev.cpp | 60 |
1 files changed, 57 insertions, 3 deletions
diff --git a/src/JSystem/JParticle/JPADrawSetupTev.cpp b/src/JSystem/JParticle/JPADrawSetupTev.cpp index 25ae2c23..393a24d6 100644 --- a/src/JSystem/JParticle/JPADrawSetupTev.cpp +++ b/src/JSystem/JParticle/JPADrawSetupTev.cpp @@ -4,9 +4,63 @@ // #include "JSystem/JParticle/JPADrawSetupTev.h" -#include "dolphin/types.h" +#include "JSystem/JParticle/JPABaseShape.h" +#include "JSystem/JParticle/JPAExTexShape.h" +#include "dolphin/gx/GX.h" /* 8026D7B8-8026DBBC .text setupTev__15JPADrawSetupTevFP12JPABaseShapeP13JPAExTexShape */ -void JPADrawSetupTev::setupTev(JPABaseShape*, JPAExTexShape*) { - /* Nonmatching */ +void JPADrawSetupTev::setupTev(JPABaseShape* param_1, JPAExTexShape* param_2) { + field_0x1 = 1; + field_0x0 = 1; + field_0x2 = 0; + GXTevColorArg* tevColorArg = param_1->getTevColorArg(); + GXTevAlphaArg* tevAlphaArg = param_1->getTevAlphaArg(); + GXSetTevColorIn(GX_TEVSTAGE0, tevColorArg[0], tevColorArg[1], tevColorArg[2], tevColorArg[3]); + GXSetTevAlphaIn(GX_TEVSTAGE0, tevAlphaArg[0], tevAlphaArg[1], tevAlphaArg[2], tevAlphaArg[3]); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL); + if (param_2) { + GXTevStageID stage = GX_TEVSTAGE1; + GXTexCoordID coord = GX_TEXCOORD1; + switch (param_2->getIndTexMode()) { + case 1: + GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD1, GX_TEXMAP5); + GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); + GXSetIndTexMtx(GX_ITM_0, (f32*)param_2->getIndTexMtx(), param_2->getExpScale()); + GXSetTevIndirect(GX_TEVSTAGE0, GX_INDTEXSTAGE0, GX_ITF_8, GX_ITB_STU, param_2->getIndTexMtxID(), GX_ITW_OFF, GX_ITW_OFF, GX_FALSE, GX_FALSE, GX_ITBA_OFF); + field_0x2++; + field_0x1++; + coord = GX_TEXCOORD2; + break; + case 2: + GXSetIndTexOrder(GX_INDTEXSTAGE0, GX_TEXCOORD1, GX_TEXMAP5); + GXSetIndTexCoordScale(GX_INDTEXSTAGE0, GX_ITS_1, GX_ITS_1); + GXSetIndTexMtx(GX_ITM_0, (f32*)param_2->getIndTexMtx(), param_2->getExpScale()); + GXSetTevIndirect(GX_TEVSTAGE1, GX_INDTEXSTAGE0, GX_ITF_8, GX_ITB_STU, param_2->getIndTexMtxID(), GX_ITW_OFF, GX_ITW_OFF, GX_FALSE, GX_FALSE, GX_ITBA_OFF); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD2, GX_TEXMAP6, GX_COLOR_NULL); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_TEXC, GX_CC_CPREV, GX_CC_TEXA); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + field_0x0++; + field_0x1 += 2; + field_0x2++; + stage = GX_TEVSTAGE2; + coord = GX_TEXCOORD3; + break; + } + if (param_2->isEnableSecondTex()) { + GXSetTevOrder(stage, coord, GX_TEXMAP7, GX_COLOR_NULL); + GXSetTevColorIn(stage, GX_CC_ZERO, GX_CC_TEXC, GX_CC_CPREV, GX_CC_ZERO); + GXSetTevAlphaIn(stage, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO); + GXSetTevColorOp(stage, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaOp(stage, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + field_0x0++; + field_0x1++; + } + } + GXSetNumTexGens(field_0x1); + GXSetNumTevStages(field_0x0); + GXSetNumIndStages(field_0x2); } |
