// // Generated By: dol2asm // Translation Unit: JPABaseShape // #include "JSystem/JParticle/JPABaseShape.h" #include "JSystem/JParticle/JPAParticle.h" #include "JSystem/JParticle/JPAResource.h" #include "JSystem/JParticle/JPAResourceManager.h" #include "dol2asm.h" #include "dolphin/types.h" // // Types: // struct JPAClrAnmKeyData {}; struct JKRHeap { /* 802CE474 */ void alloc(u32, int, JKRHeap*); }; struct JMath { static u8 sincosTable_[65536]; }; // // Forward References: // extern "C" void JPASetPointSize__FP18JPAEmitterWorkData(); extern "C" void JPASetLineWidth__FP18JPAEmitterWorkData(); extern "C" void JPASetPointSize__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPASetLineWidth__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPARegistPrm__FP18JPAEmitterWorkData(); extern "C" void JPARegistEnv__FP18JPAEmitterWorkData(); extern "C" void JPARegistPrmEnv__FP18JPAEmitterWorkData(); extern "C" void JPARegistAlpha__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPARegistPrmAlpha__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPARegistPrmAlphaEnv__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPARegistAlphaEnv__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPARegistEnv__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPACalcClrIdxNormal__FP18JPAEmitterWorkData(); extern "C" void JPACalcClrIdxNormal__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPACalcClrIdxRepeat__FP18JPAEmitterWorkData(); extern "C" void JPACalcClrIdxRepeat__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPACalcClrIdxReverse__FP18JPAEmitterWorkData(); extern "C" void JPACalcClrIdxReverse__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPACalcClrIdxMerge__FP18JPAEmitterWorkData(); extern "C" void JPACalcClrIdxMerge__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPACalcClrIdxRandom__FP18JPAEmitterWorkData(); extern "C" void JPACalcClrIdxRandom__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPACalcPrm__FP18JPAEmitterWorkData(); extern "C" void JPACalcPrm__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPACalcEnv__FP18JPAEmitterWorkData(); extern "C" void JPACalcEnv__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPACalcColorCopy__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPAGenTexCrdMtxIdt__FP18JPAEmitterWorkData(); extern "C" void JPAGenTexCrdMtxAnm__FP18JPAEmitterWorkData(); extern "C" void JPAGenTexCrdMtxPrj__FP18JPAEmitterWorkData(); extern "C" void JPAGenCalcTexCrdMtxAnm__FP18JPAEmitterWorkData(); extern "C" void JPALoadCalcTexCrdMtxAnm__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPALoadTex__FP18JPAEmitterWorkData(); extern "C" void JPALoadTexAnm__FP18JPAEmitterWorkData(); extern "C" void JPALoadTexAnm__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPACalcTexIdxNormal__FP18JPAEmitterWorkData(); extern "C" void JPACalcTexIdxNormal__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPACalcTexIdxRepeat__FP18JPAEmitterWorkData(); extern "C" void JPACalcTexIdxRepeat__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPACalcTexIdxReverse__FP18JPAEmitterWorkData(); extern "C" void JPACalcTexIdxReverse__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPACalcTexIdxMerge__FP18JPAEmitterWorkData(); extern "C" void JPACalcTexIdxMerge__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPACalcTexIdxRandom__FP18JPAEmitterWorkData(); extern "C" void JPACalcTexIdxRandom__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPALoadPosMtxCam__FP18JPAEmitterWorkData(); extern "C" static void loadPrjAnm__FPC18JPAEmitterWorkDataPA4_Cf(); extern "C" void JPADrawBillboard__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPADrawRotBillboard__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPADrawYBillboard__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPADrawRotYBillboard__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void func_802782B4(); extern "C" void func_802782D0(); extern "C" void func_802782EC(); extern "C" void func_80278320(); extern "C" void func_8027833C(); extern "C" static void rotTypeY__FffRA3_A4_f(); extern "C" static void rotTypeX__FffRA3_A4_f(); extern "C" static void rotTypeZ__FffRA3_A4_f(); extern "C" static void rotTypeXYZ__FffRA3_A4_f(); extern "C" static void basePlaneTypeXY__FPA4_fff(); extern "C" static void basePlaneTypeXZ__FPA4_fff(); extern "C" static void basePlaneTypeX__FPA4_fff(); extern "C" void JPADrawDirection__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPADrawRotDirection__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPADrawDBillboard__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPADrawRotation__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPADrawPoint__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void JPADrawLine__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void func_80279364(); extern "C" void func_8027936C(); extern "C" void JPADrawStripe__FP18JPAEmitterWorkData(); extern "C" void JPADrawStripeX__FP18JPAEmitterWorkData(); extern "C" void JPADrawEmitterCallBackB__FP18JPAEmitterWorkData(); extern "C" void JPADrawParticleCallBack__FP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" static void makeColorTable__FPP8_GXColorPC16JPAClrAnmKeyDataUcsP7JKRHeap(); extern "C" void __ct__12JPABaseShapeFPCUcP7JKRHeap(); extern "C" void setGX__12JPABaseShapeCFP18JPAEmitterWorkData(); // // External References: // extern "C" void func_8027EEB0(); extern "C" void alloc__7JKRHeapFUliP7JKRHeap(); extern "C" void load__10JUTTextureF11_GXTexMapID(); extern "C" void PSMTXMultVecArraySR(); extern "C" void _savegpr_22(); extern "C" void _savegpr_24(); extern "C" void _savegpr_28(); extern "C" void _savegpr_29(); extern "C" void _restgpr_22(); extern "C" void _restgpr_24(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); extern "C" u8 sincosTable___5JMath[65536]; extern "C" extern u32 __float_epsilon; // // Declarations: // /* ############################################################################################## */ /* 804552A8-804552B0 0038A8 0004+04 7/7 0/0 0/0 .sdata2 @2262 */ SECTION_SDATA2 static f32 lit_2262[1 + 1 /* padding */] = { 25.0f, /* padding */ 0.0f, }; /* 80276A90-80276ACC 2713D0 003C+00 0/0 1/1 0/0 .text JPASetPointSize__FP18JPAEmitterWorkData */ void JPASetPointSize(JPAEmitterWorkData* work) { GXSetPointSize((u8)(lit_2262[0] * work->mGlobalPtclScl.x), GX_TO_ONE); } /* 80276ACC-80276B08 27140C 003C+00 0/0 1/1 0/0 .text JPASetLineWidth__FP18JPAEmitterWorkData */ void JPASetLineWidth(JPAEmitterWorkData* work) { GXSetLineWidth((u8)(lit_2262[0] * work->mGlobalPtclScl.x), GX_TO_ONE); } /* 80276B08-80276B4C 271448 0044+00 0/0 1/1 0/0 .text * JPASetPointSize__FP18JPAEmitterWorkDataP15JPABaseParticle */ void JPASetPointSize(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { GXSetPointSize((u8)(lit_2262[0] * work->mGlobalPtclScl.x * ptcl->mParticleScaleX), GX_TO_ONE); } /* 80276B4C-80276B90 27148C 0044+00 0/0 1/1 0/0 .text * JPASetLineWidth__FP18JPAEmitterWorkDataP15JPABaseParticle */ void JPASetLineWidth(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { GXSetLineWidth((u8)(lit_2262[0] * work->mGlobalPtclScl.x * ptcl->mParticleScaleX), GX_TO_ONE); } static inline u8 COLOR_MULTI(u32 a, u32 b) { return ((a * (b + 1)) * 0x10000) >> 24; } /* 80276B90-80276C2C 2714D0 009C+00 0/0 1/1 0/0 .text JPARegistPrm__FP18JPAEmitterWorkData */ void JPARegistPrm(JPAEmitterWorkData* work) { JPABaseEmitter* emtr = work->mpEmtr; GXColor prm = emtr->mPrmClr; prm.r = COLOR_MULTI(prm.r, emtr->mGlobalPrmClr.r); prm.g = COLOR_MULTI(prm.g, emtr->mGlobalPrmClr.g); prm.b = COLOR_MULTI(prm.b, emtr->mGlobalPrmClr.b); prm.a = COLOR_MULTI(prm.a, emtr->mGlobalPrmClr.a); GXSetTevColor(GX_TEVREG0, prm); } /* 80276C2C-80276CB0 27156C 0084+00 0/0 1/1 0/0 .text JPARegistEnv__FP18JPAEmitterWorkData */ void JPARegistEnv(JPAEmitterWorkData* work) { JPABaseEmitter* emtr = work->mpEmtr; GXColor env = emtr->mEnvClr; env.r = COLOR_MULTI(env.r, emtr->mGlobalEnvClr.r); env.g = COLOR_MULTI(env.g, emtr->mGlobalEnvClr.g); env.b = COLOR_MULTI(env.b, emtr->mGlobalEnvClr.b); GXSetTevColor(GX_TEVREG1, env); } /* 80276CB0-80276DB0 2715F0 0100+00 0/0 1/1 0/0 .text JPARegistPrmEnv__FP18JPAEmitterWorkData */ void JPARegistPrmEnv(JPAEmitterWorkData* work) { JPABaseEmitter* emtr = work->mpEmtr; GXColor prm = emtr->mPrmClr; GXColor env = emtr->mEnvClr; prm.r = COLOR_MULTI(prm.r, emtr->mGlobalPrmClr.r); prm.g = COLOR_MULTI(prm.g, emtr->mGlobalPrmClr.g); prm.b = COLOR_MULTI(prm.b, emtr->mGlobalPrmClr.b); prm.a = COLOR_MULTI(prm.a, emtr->mGlobalPrmClr.a); env.r = COLOR_MULTI(env.r, emtr->mGlobalEnvClr.r); env.g = COLOR_MULTI(env.g, emtr->mGlobalEnvClr.g); env.b = COLOR_MULTI(env.b, emtr->mGlobalEnvClr.b); GXSetTevColor(GX_TEVREG0, prm); GXSetTevColor(GX_TEVREG1, env); } /* 80276DB0-80276E60 2716F0 00B0+00 0/0 1/1 0/0 .text * JPARegistAlpha__FP18JPAEmitterWorkDataP15JPABaseParticle */ void JPARegistAlpha(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { JPABaseEmitter* emtr = work->mpEmtr; GXColor prm = emtr->mPrmClr; prm.r = COLOR_MULTI(prm.r, emtr->mGlobalPrmClr.r); prm.g = COLOR_MULTI(prm.g, emtr->mGlobalPrmClr.g); prm.b = COLOR_MULTI(prm.b, emtr->mGlobalPrmClr.b); prm.a = COLOR_MULTI(prm.a, emtr->mGlobalPrmClr.a); prm.a = COLOR_MULTI(prm.a, ptcl->mPrmColorAlphaAnm); GXSetTevColor(GX_TEVREG0, prm); } /* 80276E60-80276F10 2717A0 00B0+00 0/0 1/1 0/0 .text * JPARegistPrmAlpha__FP18JPAEmitterWorkDataP15JPABaseParticle */ void JPARegistPrmAlpha(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { JPABaseEmitter* emtr = work->mpEmtr; GXColor prm = ptcl->mPrmClr; prm.r = COLOR_MULTI(prm.r, emtr->mGlobalPrmClr.r); prm.g = COLOR_MULTI(prm.g, emtr->mGlobalPrmClr.g); prm.b = COLOR_MULTI(prm.b, emtr->mGlobalPrmClr.b); prm.a = COLOR_MULTI(prm.a, emtr->mGlobalPrmClr.a); prm.a = COLOR_MULTI(prm.a, ptcl->mPrmColorAlphaAnm); GXSetTevColor(GX_TEVREG0, prm); } /* 80276F10-80277024 271850 0114+00 0/0 1/1 0/0 .text * JPARegistPrmAlphaEnv__FP18JPAEmitterWorkDataP15JPABaseParticle */ void JPARegistPrmAlphaEnv(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { JPABaseEmitter* emtr = work->mpEmtr; GXColor prm = ptcl->mPrmClr; GXColor env = ptcl->mEnvClr; prm.r = COLOR_MULTI(prm.r, emtr->mGlobalPrmClr.r); prm.g = COLOR_MULTI(prm.g, emtr->mGlobalPrmClr.g); prm.b = COLOR_MULTI(prm.b, emtr->mGlobalPrmClr.b); prm.a = COLOR_MULTI(prm.a, emtr->mGlobalPrmClr.a); prm.a = COLOR_MULTI(prm.a, ptcl->mPrmColorAlphaAnm); env.r = COLOR_MULTI(env.r, emtr->mGlobalEnvClr.r); env.g = COLOR_MULTI(env.g, emtr->mGlobalEnvClr.g); env.b = COLOR_MULTI(env.b, emtr->mGlobalEnvClr.b); GXSetTevColor(GX_TEVREG0, prm); GXSetTevColor(GX_TEVREG1, env); } /* 80277024-80277138 271964 0114+00 0/0 1/1 0/0 .text * JPARegistAlphaEnv__FP18JPAEmitterWorkDataP15JPABaseParticle */ void JPARegistAlphaEnv(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { JPABaseEmitter* emtr = work->mpEmtr; GXColor prm = emtr->mPrmClr; GXColor env = ptcl->mEnvClr; prm.r = COLOR_MULTI(prm.r, emtr->mGlobalPrmClr.r); prm.g = COLOR_MULTI(prm.g, emtr->mGlobalPrmClr.g); prm.b = COLOR_MULTI(prm.b, emtr->mGlobalPrmClr.b); prm.a = COLOR_MULTI(prm.a, emtr->mGlobalPrmClr.a); prm.a = COLOR_MULTI(prm.a, ptcl->mPrmColorAlphaAnm); env.r = COLOR_MULTI(env.r, emtr->mGlobalEnvClr.r); env.g = COLOR_MULTI(env.g, emtr->mGlobalEnvClr.g); env.b = COLOR_MULTI(env.b, emtr->mGlobalEnvClr.b); GXSetTevColor(GX_TEVREG0, prm); GXSetTevColor(GX_TEVREG1, env); } /* 80277138-802771BC 271A78 0084+00 0/0 1/1 0/0 .text * JPARegistEnv__FP18JPAEmitterWorkDataP15JPABaseParticle */ void JPARegistEnv(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { JPABaseEmitter* emtr = work->mpEmtr; GXColor env = ptcl->mEnvClr; env.r = COLOR_MULTI(env.r, emtr->mGlobalEnvClr.r); env.g = COLOR_MULTI(env.g, emtr->mGlobalEnvClr.g); env.b = COLOR_MULTI(env.b, emtr->mGlobalEnvClr.b); GXSetTevColor(GX_TEVREG1, env); } #define MIN(a, b) ((a) < (b) ? (a) : (b)) /* 802771BC-802771E8 271AFC 002C+00 0/0 1/1 0/0 .text JPACalcClrIdxNormal__FP18JPAEmitterWorkData */ #ifdef NONMATCHING void JPACalcClrIdxNormal(JPAEmitterWorkData* work) { JPABaseShape* bsp = work->mpRes->getBsp(); // can't get the extsh to appear in the right spot... work->mClrKeyFrame = MIN(work->mpEmtr->mTick, bsp->getClrAnmMaxFrm()); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPACalcClrIdxNormal(JPAEmitterWorkData* param_0) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPACalcClrIdxNormal__FP18JPAEmitterWorkData.s" } #pragma pop #endif /* 802771E8-80277210 271B28 0028+00 0/0 1/1 0/0 .text * JPACalcClrIdxNormal__FP18JPAEmitterWorkDataP15JPABaseParticle */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPACalcClrIdxNormal(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPACalcClrIdxNormal__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } #pragma pop /* 80277210-80277240 271B50 0030+00 0/0 1/1 0/0 .text JPACalcClrIdxRepeat__FP18JPAEmitterWorkData */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPACalcClrIdxRepeat(JPAEmitterWorkData* param_0) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPACalcClrIdxRepeat__FP18JPAEmitterWorkData.s" } #pragma pop /* 80277240-8027727C 271B80 003C+00 0/0 1/1 0/0 .text * JPACalcClrIdxRepeat__FP18JPAEmitterWorkDataP15JPABaseParticle */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPACalcClrIdxRepeat(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPACalcClrIdxRepeat__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } #pragma pop /* 8027727C-802772BC 271BBC 0040+00 0/0 1/1 0/0 .text JPACalcClrIdxReverse__FP18JPAEmitterWorkData */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPACalcClrIdxReverse(JPAEmitterWorkData* param_0) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPACalcClrIdxReverse__FP18JPAEmitterWorkData.s" } #pragma pop /* 802772BC-80277308 271BFC 004C+00 0/0 1/1 0/0 .text * JPACalcClrIdxReverse__FP18JPAEmitterWorkDataP15JPABaseParticle */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPACalcClrIdxReverse(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPACalcClrIdxReverse__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } #pragma pop /* 80277308-80277314 271C48 000C+00 0/0 1/1 0/0 .text JPACalcClrIdxMerge__FP18JPAEmitterWorkData */ void JPACalcClrIdxMerge(JPAEmitterWorkData* work) { work->mClrKeyFrame = 0; } /* ############################################################################################## */ /* 804552B0-804552B8 0038B0 0008+00 4/4 0/0 0/0 .sdata2 @2623 */ SECTION_SDATA2 static f64 lit_2623 = 4503601774854144.0 /* cast s32 to float */; /* 80277314-80277384 271C54 0070+00 0/0 1/1 0/0 .text * JPACalcClrIdxMerge__FP18JPAEmitterWorkDataP15JPABaseParticle */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPACalcClrIdxMerge(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPACalcClrIdxMerge__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } #pragma pop /* 80277384-80277390 271CC4 000C+00 0/0 1/1 0/0 .text JPACalcClrIdxRandom__FP18JPAEmitterWorkData */ void JPACalcClrIdxRandom(JPAEmitterWorkData* work) { work->mClrKeyFrame = 0; } /* 80277390-802773C4 271CD0 0034+00 0/0 1/1 0/0 .text * JPACalcClrIdxRandom__FP18JPAEmitterWorkDataP15JPABaseParticle */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPACalcClrIdxRandom(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPACalcClrIdxRandom__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } #pragma pop /* 802773C4-80277404 271D04 0040+00 0/0 1/1 0/0 .text JPACalcPrm__FP18JPAEmitterWorkData */ void JPACalcPrm(JPAEmitterWorkData* work) { work->mpRes->getBsp()->getPrmClr(work->mClrKeyFrame, &work->mpEmtr->mPrmClr); } /* 80277404-80277440 271D44 003C+00 0/0 1/1 0/0 .text * JPACalcPrm__FP18JPAEmitterWorkDataP15JPABaseParticle */ void JPACalcPrm(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { work->mpRes->getBsp()->getPrmClr(work->mClrKeyFrame, &ptcl->mPrmClr); } /* 80277440-80277480 271D80 0040+00 0/0 1/1 0/0 .text JPACalcEnv__FP18JPAEmitterWorkData */ void JPACalcEnv(JPAEmitterWorkData* work) { work->mpRes->getBsp()->getEnvClr(work->mClrKeyFrame, &work->mpEmtr->mEnvClr); } /* 80277480-802774BC 271DC0 003C+00 0/0 1/1 0/0 .text * JPACalcEnv__FP18JPAEmitterWorkDataP15JPABaseParticle */ void JPACalcEnv(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { work->mpRes->getBsp()->getEnvClr(work->mClrKeyFrame, &ptcl->mEnvClr); } /* 802774BC-80277504 271DFC 0048+00 0/0 1/1 0/0 .text * JPACalcColorCopy__FP18JPAEmitterWorkDataP15JPABaseParticle */ void JPACalcColorCopy(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { JPABaseEmitter* emtr = work->mpEmtr; ptcl->mPrmClr = emtr->mPrmClr; ptcl->mEnvClr = emtr->mEnvClr; } /* 80277504-8027753C 271E44 0038+00 0/0 1/1 0/0 .text JPAGenTexCrdMtxIdt__FP18JPAEmitterWorkData */ void JPAGenTexCrdMtxIdt(JPAEmitterWorkData* param_0) { GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE, GX_PTIDENTITY); } /* 8027753C-80277574 271E7C 0038+00 0/0 1/1 0/0 .text JPAGenTexCrdMtxAnm__FP18JPAEmitterWorkData */ void JPAGenTexCrdMtxAnm(JPAEmitterWorkData* param_0) { GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_TEXMTX0, GX_FALSE, GX_PTIDENTITY); } /* 80277574-802775AC 271EB4 0038+00 0/0 1/1 0/0 .text JPAGenTexCrdMtxPrj__FP18JPAEmitterWorkData */ void JPAGenTexCrdMtxPrj(JPAEmitterWorkData* param_0) { GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0, GX_FALSE, GX_PTIDENTITY); } /* ############################################################################################## */ /* 804552B8-804552BC 0038B8 0004+00 9/9 0/0 0/0 .sdata2 @2740 */ SECTION_SDATA2 static f32 lit_2740 = 0.5f; /* 804552BC-804552C0 0038BC 0004+00 14/14 0/0 0/0 .sdata2 @2741 */ SECTION_SDATA2 static f32 lit_2741 = 1.0f; /* 804552C0-804552C8 0038C0 0004+04 19/19 0/0 0/0 .sdata2 @2742 */ SECTION_SDATA2 static f32 lit_2742[1 + 1 /* padding */] = { 0.0f, /* padding */ 0.0f, }; /* 804552C8-804552D0 0038C8 0008+00 6/6 0/0 0/0 .sdata2 @2744 */ SECTION_SDATA2 static f64 lit_2744 = 4503599627370496.0 /* cast u32 to float */; /* 802775AC-80277758 271EEC 01AC+00 0/0 1/1 0/0 .text * JPAGenCalcTexCrdMtxAnm__FP18JPAEmitterWorkData */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPAGenCalcTexCrdMtxAnm(JPAEmitterWorkData* param_0) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPAGenCalcTexCrdMtxAnm__FP18JPAEmitterWorkData.s" } #pragma pop /* 80277758-802778EC 272098 0194+00 0/0 1/1 0/0 .text * JPALoadCalcTexCrdMtxAnm__FP18JPAEmitterWorkDataP15JPABaseParticle */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPALoadCalcTexCrdMtxAnm(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPALoadCalcTexCrdMtxAnm__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } #pragma pop /* 802778EC-80277940 27222C 0054+00 0/0 1/1 0/0 .text JPALoadTex__FP18JPAEmitterWorkData */ void JPALoadTex(JPAEmitterWorkData* work) { work->mpResMgr->load(work->mpRes->getTexIdx(work->mpRes->getBsp()->getTexIdx()), GX_TEXMAP0); } /* 80277940-80277990 272280 0050+00 0/0 1/1 0/0 .text JPALoadTexAnm__FP18JPAEmitterWorkData */ void JPALoadTexAnm(JPAEmitterWorkData* work) { work->mpResMgr->load(work->mpRes->getTexIdx(work->mpEmtr->mTexAnmIdx), GX_TEXMAP0); } /* 80277990-802779DC 2722D0 004C+00 0/0 1/1 0/0 .text * JPALoadTexAnm__FP18JPAEmitterWorkDataP15JPABaseParticle */ void JPALoadTexAnm(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { work->mpResMgr->load(work->mpRes->getTexIdx(ptcl->mTexAnmIdx), GX_TEXMAP0); } /* 802779DC-80277A18 27231C 003C+00 0/0 1/1 0/0 .text JPACalcTexIdxNormal__FP18JPAEmitterWorkData */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPACalcTexIdxNormal(JPAEmitterWorkData* param_0) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPACalcTexIdxNormal__FP18JPAEmitterWorkData.s" } #pragma pop /* 80277A18-80277A50 272358 0038+00 0/0 1/1 0/0 .text * JPACalcTexIdxNormal__FP18JPAEmitterWorkDataP15JPABaseParticle */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPACalcTexIdxNormal(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPACalcTexIdxNormal__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } #pragma pop /* 80277A50-80277A88 272390 0038+00 0/0 1/1 0/0 .text JPACalcTexIdxRepeat__FP18JPAEmitterWorkData */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPACalcTexIdxRepeat(JPAEmitterWorkData* param_0) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPACalcTexIdxRepeat__FP18JPAEmitterWorkData.s" } #pragma pop /* 80277A88-80277ACC 2723C8 0044+00 0/0 1/1 0/0 .text * JPACalcTexIdxRepeat__FP18JPAEmitterWorkDataP15JPABaseParticle */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPACalcTexIdxRepeat(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPACalcTexIdxRepeat__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } #pragma pop /* 80277ACC-80277B1C 27240C 0050+00 0/0 1/1 0/0 .text JPACalcTexIdxReverse__FP18JPAEmitterWorkData */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPACalcTexIdxReverse(JPAEmitterWorkData* param_0) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPACalcTexIdxReverse__FP18JPAEmitterWorkData.s" } #pragma pop /* 80277B1C-80277B78 27245C 005C+00 0/0 1/1 0/0 .text * JPACalcTexIdxReverse__FP18JPAEmitterWorkDataP15JPABaseParticle */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPACalcTexIdxReverse(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPACalcTexIdxReverse__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } #pragma pop /* 80277B78-80277B94 2724B8 001C+00 0/0 1/1 0/0 .text JPACalcTexIdxMerge__FP18JPAEmitterWorkData */ void JPACalcTexIdxMerge(JPAEmitterWorkData* work) { work->mpEmtr->mTexAnmIdx = work->mpRes->getBsp()->getTexIdx(); } /* 80277B94-80277C0C 2724D4 0078+00 0/0 1/1 0/0 .text * JPACalcTexIdxMerge__FP18JPAEmitterWorkDataP15JPABaseParticle */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPACalcTexIdxMerge(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPACalcTexIdxMerge__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } #pragma pop /* 80277C0C-80277C28 27254C 001C+00 0/0 1/1 0/0 .text JPACalcTexIdxRandom__FP18JPAEmitterWorkData */ void JPACalcTexIdxRandom(JPAEmitterWorkData* work) { work->mpEmtr->mTexAnmIdx = work->mpRes->getBsp()->getTexIdx(); } /* 80277C28-80277C64 272568 003C+00 0/0 1/1 0/0 .text * JPACalcTexIdxRandom__FP18JPAEmitterWorkDataP15JPABaseParticle */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPACalcTexIdxRandom(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPACalcTexIdxRandom__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } #pragma pop /* 80277C64-80277C8C 2725A4 0028+00 0/0 1/1 0/0 .text JPALoadPosMtxCam__FP18JPAEmitterWorkData */ void JPALoadPosMtxCam(JPAEmitterWorkData* work) { GXLoadPosMtxImm(work->mPosCamMtx, GX_PNMTX0); } /* 80277C8C-80277C90 2725CC 0004+00 1/0 0/0 0/0 .text noLoadPrj__FPC18JPAEmitterWorkDataPA4_Cf */ static void noLoadPrj(JPAEmitterWorkData const* work, const Mtx srt) { /* empty function */ } /* 80277C90-80277CC8 2725D0 0038+00 1/0 0/0 0/0 .text loadPrj__FPC18JPAEmitterWorkDataPA4_Cf */ void loadPrj(JPAEmitterWorkData const* work, const Mtx srt) { Mtx mtx; PSMTXConcat(work->mPrjMtx, srt, mtx); GXLoadTexMtxImm(mtx, GX_TEXMTX0, GX_MTX3x4); } /* 80277CC8-80277E88 272608 01C0+00 1/0 0/0 0/0 .text loadPrjAnm__FPC18JPAEmitterWorkDataPA4_Cf */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void loadPrjAnm(JPAEmitterWorkData const* param_0, f32 const (*param_1)[4]) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/loadPrjAnm__FPC18JPAEmitterWorkDataPA4_Cf.s" } #pragma pop /* ############################################################################################## */ /* 803C42E0-803C4300 021400 0020+00 10/9 0/0 0/0 .data jpa_dl */ SECTION_DATA static u8 jpa_dl[32] = { 0x80, 0x00, 0x04, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; /* 803C4300-803C4320 021420 0020+00 1/0 0/0 0/0 .data jpa_dl_x */ SECTION_DATA static u8 jpa_dl_x[32] = { 0x80, 0x00, 0x08, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x48, 0x00, 0x49, 0x01, 0x4A, 0x02, 0x4B, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; /* 803C4320-803C432C -00001 000C+00 6/10 0/0 0/0 .data p_prj */ SECTION_DATA static void* p_prj[3] = { (void*)noLoadPrj, (void*)loadPrj, (void*)loadPrjAnm__FPC18JPAEmitterWorkDataPA4_Cf, }; /* 80277E88-80277F70 2727C8 00E8+00 0/0 1/1 0/0 .text * JPADrawBillboard__FP18JPAEmitterWorkDataP15JPABaseParticle */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPADrawBillboard(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPADrawBillboard__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } #pragma pop /* 80277F70-80278088 2728B0 0118+00 0/0 1/1 0/0 .text * JPADrawRotBillboard__FP18JPAEmitterWorkDataP15JPABaseParticle */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPADrawRotBillboard(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPADrawRotBillboard__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } #pragma pop /* 80278088-80278184 2729C8 00FC+00 0/0 1/1 0/0 .text * JPADrawYBillboard__FP18JPAEmitterWorkDataP15JPABaseParticle */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPADrawYBillboard(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPADrawYBillboard__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } #pragma pop /* 80278184-802782B4 272AC4 0130+00 0/0 1/1 0/0 .text * JPADrawRotYBillboard__FP18JPAEmitterWorkDataP15JPABaseParticle */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPADrawRotYBillboard(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPADrawRotYBillboard__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } #pragma pop /* 802782B4-802782D0 272BF4 001C+00 1/0 0/0 0/0 .text * dirTypeVel__FPC18JPAEmitterWorkDataPC15JPABaseParticlePQ29JGeometry8TVec3 */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dirTypeVel(JPAEmitterWorkData const* param_0, JPABaseParticle const* param_1, JGeometry::TVec3* param_2) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/func_802782B4.s" } #pragma pop /* 802782D0-802782EC 272C10 001C+00 1/0 0/0 0/0 .text * dirTypePos__FPC18JPAEmitterWorkDataPC15JPABaseParticlePQ29JGeometry8TVec3 */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dirTypePos(JPAEmitterWorkData const* param_0, JPABaseParticle const* param_1, JGeometry::TVec3* param_2) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/func_802782D0.s" } #pragma pop /* 802782EC-80278320 272C2C 0034+00 1/0 0/0 0/0 .text * dirTypePosInv__FPC18JPAEmitterWorkDataPC15JPABaseParticlePQ29JGeometry8TVec3 */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dirTypePosInv(JPAEmitterWorkData const* param_0, JPABaseParticle const* param_1, JGeometry::TVec3* param_2) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/func_802782EC.s" } #pragma pop /* 80278320-8027833C 272C60 001C+00 1/0 0/0 0/0 .text * dirTypeEmtrDir__FPC18JPAEmitterWorkDataPC15JPABaseParticlePQ29JGeometry8TVec3 */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dirTypeEmtrDir(JPAEmitterWorkData const* param_0, JPABaseParticle const* param_1, JGeometry::TVec3* param_2) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/func_80278320.s" } #pragma pop /* 8027833C-802783D4 272C7C 0098+00 1/0 0/0 0/0 .text * dirTypePrevPtcl__FPC18JPAEmitterWorkDataPC15JPABaseParticlePQ29JGeometry8TVec3 */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dirTypePrevPtcl(JPAEmitterWorkData const* param_0, JPABaseParticle const* param_1, JGeometry::TVec3* param_2) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/func_8027833C.s" } #pragma pop /* 802783D4-80278414 272D14 0040+00 1/0 0/0 0/0 .text rotTypeY__FffRA3_A4_f */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void rotTypeY(f32 param_0, f32 param_1, f32 (¶m_2)[3][4]) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/rotTypeY__FffRA3_A4_f.s" } #pragma pop /* 80278414-80278454 272D54 0040+00 1/0 0/0 0/0 .text rotTypeX__FffRA3_A4_f */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void rotTypeX(f32 param_0, f32 param_1, f32 (¶m_2)[3][4]) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/rotTypeX__FffRA3_A4_f.s" } #pragma pop /* 80278454-80278494 272D94 0040+00 1/0 0/0 0/0 .text rotTypeZ__FffRA3_A4_f */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void rotTypeZ(f32 param_0, f32 param_1, f32 (¶m_2)[3][4]) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/rotTypeZ__FffRA3_A4_f.s" } #pragma pop /* ############################################################################################## */ /* 804552D0-804552D4 0038D0 0004+00 1/1 0/0 0/0 .sdata2 @3145 */ SECTION_SDATA2 static f32 lit_3145 = 0.33333298563957214f; /* 804552D4-804552D8 0038D4 0004+00 1/1 0/0 0/0 .sdata2 @3146 */ SECTION_SDATA2 static f32 lit_3146 = 0.5773500204086304f; /* 80278494-802784F0 272DD4 005C+00 1/0 0/0 0/0 .text rotTypeXYZ__FffRA3_A4_f */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void rotTypeXYZ(f32 param_0, f32 param_1, f32 (¶m_2)[3][4]) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/rotTypeXYZ__FffRA3_A4_f.s" } #pragma pop /* 802784F0-8027853C 272E30 004C+00 1/0 0/0 0/0 .text basePlaneTypeXY__FPA4_fff */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void basePlaneTypeXY(f32 (*param_0)[4], f32 param_1, f32 param_2) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/basePlaneTypeXY__FPA4_fff.s" } #pragma pop /* 8027853C-80278588 272E7C 004C+00 1/0 0/0 0/0 .text basePlaneTypeXZ__FPA4_fff */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void basePlaneTypeXZ(f32 (*param_0)[4], f32 param_1, f32 param_2) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/basePlaneTypeXZ__FPA4_fff.s" } #pragma pop /* 80278588-802785F8 272EC8 0070+00 1/0 0/0 0/0 .text basePlaneTypeX__FPA4_fff */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void basePlaneTypeX(f32 (*param_0)[4], f32 param_1, f32 param_2) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/basePlaneTypeX__FPA4_fff.s" } #pragma pop /* ############################################################################################## */ /* 803C432C-803C4340 -00001 0014+00 2/5 0/0 0/0 .data p_direction */ SECTION_DATA static void* p_direction[5] = { (void*)func_802782B4, (void*)func_802782D0, (void*)func_802782EC, (void*)func_80278320, (void*)func_8027833C, }; /* 803C4340-803C4354 -00001 0014+00 0/2 0/0 0/0 .data p_rot */ #pragma push #pragma force_active on SECTION_DATA static void* p_rot[5] = { (void*)rotTypeY__FffRA3_A4_f, (void*)rotTypeX__FffRA3_A4_f, (void*)rotTypeZ__FffRA3_A4_f, (void*)rotTypeXYZ__FffRA3_A4_f, (void*)rotTypeY__FffRA3_A4_f, }; #pragma pop /* 803C4354-803C4360 -00001 000C+00 0/3 0/0 0/0 .data p_plane */ #pragma push #pragma force_active on SECTION_DATA static void* p_plane[3] = { (void*)basePlaneTypeXY__FPA4_fff, (void*)basePlaneTypeXZ__FPA4_fff, (void*)basePlaneTypeX__FPA4_fff, }; #pragma pop /* 804507A0-804507A8 -00001 0008+00 3/3 0/0 0/0 .sdata p_dl */ SECTION_SDATA static void* p_dl[2] = { (void*)&jpa_dl, (void*)&jpa_dl_x, }; /* 804552D8-804552DC 0038D8 0004+00 6/6 0/0 0/0 .sdata2 @3281 */ SECTION_SDATA2 static f32 lit_3281 = 32.0f; /* 804552DC-804552E0 0038DC 0004+00 6/6 0/0 0/0 .sdata2 @3282 */ SECTION_SDATA2 static f32 lit_3282 = 3.0f; /* 802785F8-80278994 272F38 039C+00 0/0 1/1 0/0 .text * JPADrawDirection__FP18JPAEmitterWorkDataP15JPABaseParticle */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPADrawDirection(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPADrawDirection__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } #pragma pop /* 80278994-80278DA8 2732D4 0414+00 0/0 1/1 0/0 .text * JPADrawRotDirection__FP18JPAEmitterWorkDataP15JPABaseParticle */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPADrawRotDirection(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPADrawRotDirection__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } #pragma pop /* 80278DA8-80278FC8 2736E8 0220+00 0/0 1/1 0/0 .text * JPADrawDBillboard__FP18JPAEmitterWorkDataP15JPABaseParticle */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPADrawDBillboard(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPADrawDBillboard__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } #pragma pop /* 80278FC8-80279110 273908 0148+00 0/0 1/1 0/0 .text * JPADrawRotation__FP18JPAEmitterWorkDataP15JPABaseParticle */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPADrawRotation(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPADrawRotation__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } #pragma pop /* 80279110-802791B0 273A50 00A0+00 0/0 1/1 0/0 .text * JPADrawPoint__FP18JPAEmitterWorkDataP15JPABaseParticle */ #ifdef NONMATCHING // literal only void JPADrawPoint(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { if (!!(ptcl->mStatus & JPAPtclStts_Invisible)) return; GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); GXBegin(GX_POINTS, GX_VTXFMT1, 1); GXPosition3f32(ptcl->mPosition.x, ptcl->mPosition.y, ptcl->mPosition.z); GXTexCoord2f32(0.0f, 0.0f); GXEnd(); GXSetVtxDesc(GX_VA_POS, GX_INDEX8); GXSetVtxDesc(GX_VA_TEX0, GX_INDEX8); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPADrawPoint(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPADrawPoint__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } #pragma pop #endif /* 802791B0-80279364 273AF0 01B4+00 0/0 1/1 0/0 .text * JPADrawLine__FP18JPAEmitterWorkDataP15JPABaseParticle */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPADrawLine(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPADrawLine__FP18JPAEmitterWorkDataP15JPABaseParticle.s" } #pragma pop /* 80279364-8027936C 273CA4 0008+00 2/2 0/0 0/0 .text getNext__FP26JPANode<15JPABaseParticle> */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void getNext(JPANode* param_0) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/func_80279364.s" } #pragma pop /* 8027936C-80279374 273CAC 0008+00 2/2 0/0 0/0 .text getPrev__FP26JPANode<15JPABaseParticle> */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void getPrev(JPANode* param_0) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/func_8027936C.s" } #pragma pop /* 80279374-8027996C 273CB4 05F8+00 0/0 1/1 0/0 .text JPADrawStripe__FP18JPAEmitterWorkData */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPADrawStripe(JPAEmitterWorkData* param_0) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPADrawStripe__FP18JPAEmitterWorkData.s" } #pragma pop /* 8027996C-8027A3D8 2742AC 0A6C+00 0/0 1/1 0/0 .text JPADrawStripeX__FP18JPAEmitterWorkData */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPADrawStripeX(JPAEmitterWorkData* param_0) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPADrawStripeX__FP18JPAEmitterWorkData.s" } #pragma pop /* 8027A3D8-8027A414 274D18 003C+00 0/0 1/1 0/0 .text * JPADrawEmitterCallBackB__FP18JPAEmitterWorkData */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPADrawEmitterCallBackB(JPAEmitterWorkData* param_0) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/JPADrawEmitterCallBackB__FP18JPAEmitterWorkData.s" } #pragma pop /* 8027A414-8027A454 274D54 0040+00 0/0 1/1 0/0 .text * JPADrawParticleCallBack__FP18JPAEmitterWorkDataP15JPABaseParticle */ void JPADrawParticleCallBack(JPAEmitterWorkData* work, JPABaseParticle* ptcl) { if (work->mpEmtr->mpPtclCallBack == NULL) return; work->mpEmtr->mpPtclCallBack->draw(work->mpEmtr, ptcl); } /* 8027A454-8027A6DC 274D94 0288+00 1/1 0/0 0/0 .text * makeColorTable__FPP8_GXColorPC16JPAClrAnmKeyDataUcsP7JKRHeap */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void makeColorTable(_GXColor** param_0, JPAClrAnmKeyData const* param_1, u8 param_2, s16 param_3, JKRHeap* param_4) { nofralloc #include "asm/JSystem/JParticle/JPABaseShape/makeColorTable__FPP8_GXColorPC16JPAClrAnmKeyDataUcsP7JKRHeap.s" } #pragma pop /* 8027A6DC-8027A7E8 27501C 010C+00 0/0 1/1 0/0 .text __ct__12JPABaseShapeFPCUcP7JKRHeap */ JPABaseShape::JPABaseShape(u8 const* pData, JKRHeap* pHeap) { mpData = (const JPABaseShapeData*)pData; if (isTexCrdAnm()) { mpTexCrdMtxAnmTbl = (const void*)(pData + sizeof(JPABaseShapeData)); } else { mpTexCrdMtxAnmTbl = NULL; } if (isTexAnm()) { u32 offs = sizeof(JPABaseShapeData); if (isTexCrdAnm()) offs = sizeof(JPABaseShapeData) + 0x28; mpTexIdxAnimTbl = (const u8*)(pData + offs); } else { mpTexIdxAnimTbl = NULL; } if (isPrmAnm()) { makeColorTable(&mpPrmClrAnmTbl, (JPAClrAnmKeyData*)(pData + mpData->mClrPrmAnmOffset), mpData->mClrPrmKeyNum, mpData->mClrAnmFrmMax, pHeap); } else { mpPrmClrAnmTbl = NULL; } if (isEnvAnm()) { makeColorTable(&mpEnvClrAnmTbl, (JPAClrAnmKeyData*)(pData + mpData->mClrEnvAnmOffset), mpData->mClrEnvKeyNum, mpData->mClrAnmFrmMax, pHeap); } else { mpEnvClrAnmTbl = NULL; } } /* ############################################################################################## */ /* 803C4360-803C436C 021480 000C+00 0/1 0/0 0/0 .data st_bm__12JPABaseShape */ SECTION_DATA GXBlendMode JPABaseShape::st_bm[3] = { GX_BM_NONE, GX_BM_BLEND, GX_BM_LOGIC, }; /* 803C436C-803C4394 02148C 0028+00 0/1 0/0 0/0 .data st_bf__12JPABaseShape */ SECTION_DATA GXBlendFactor JPABaseShape::st_bf[10] = { GX_BL_ZERO, GX_BL_ONE, GX_BL_SRC_COLOR, GX_BL_INV_SRC_COLOR, GX_BL_SRC_COLOR, GX_BL_INV_SRC_COLOR, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_BL_DST_ALPHA, GX_BL_INV_DST_ALPHA, }; /* 803C4394-803C43D4 0214B4 0040+00 0/1 0/0 0/0 .data st_lo__12JPABaseShape */ SECTION_DATA GXLogicOp JPABaseShape::st_lo[16] = { GX_LO_CLEAR, GX_LO_SET, GX_LO_COPY, GX_LO_INV_COPY, GX_LO_NOOP, GX_LO_INV, GX_LO_AND, GX_LO_NAND, GX_LO_OR, GX_LO_NOR, GX_LO_XOR, GX_LO_EQUIV, GX_LO_REV_AND, GX_LO_INV_AND, GX_LO_REV_OR, GX_LO_INV_OR, }; /* 803C43D4-803C43F4 0214F4 0020+00 0/1 0/0 0/0 .data st_c__12JPABaseShape */ SECTION_DATA GXCompare JPABaseShape::st_c[8] = { GX_NEVER, GX_LESS, GX_LEQUAL, GX_EQUAL, GX_NEQUAL, GX_GEQUAL, GX_GREATER, GX_ALWAYS, }; /* 803C43F4-803C4404 021514 0010+00 0/1 0/0 0/0 .data st_ao__12JPABaseShape */ SECTION_DATA GXAlphaOp JPABaseShape::st_ao[4] = { GX_AOP_AND, GX_AOP_OR, GX_AOP_XOR, GX_AOP_XNOR, }; /* 803C4404-803C4464 021524 0060+00 0/1 0/0 0/0 .data st_ca__12JPABaseShape */ SECTION_DATA GXTevColorArg JPABaseShape::st_ca[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, }, }; /* 803C4464-803C4488 021584 0020+04 0/1 0/0 0/0 .data st_aa__12JPABaseShape */ SECTION_DATA GXTevAlphaArg JPABaseShape::st_aa[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, }, }; /* 8027A7E8-8027A918 275128 0130+00 0/0 1/1 0/0 .text setGX__12JPABaseShapeCFP18JPAEmitterWorkData */ void JPABaseShape::setGX(JPAEmitterWorkData* work) const { const GXTevColorArg* colorArg = getTevColorArg(); const GXTevAlphaArg* alphaArg = getTevAlphaArg(); GXSetBlendMode(getBlendMode(), getBlendSrc(), getBlendDst(), getLogicOp()); GXSetZMode(getZEnable(), getZCmp(), getZUpd()); GXSetAlphaCompare(getAlphaCmp0(), getAlphaRef0(), getAlphaOp(), getAlphaCmp1(), getAlphaRef1()); GXSetTevColorIn(GX_TEVSTAGE0, colorArg[0], colorArg[1], colorArg[2], colorArg[3]); GXSetTevAlphaIn(GX_TEVSTAGE0, alphaArg[0], alphaArg[1], alphaArg[2], alphaArg[3]); GXSetTevDirect(GX_TEVSTAGE0); GXSetTevDirect(GX_TEVSTAGE1); GXSetZCompLoc(getZCompLoc()); }