// // Generated By: dol2asm // Translation Unit: JPAEmitter // #include "JSystem/JParticle/JPAEmitter.h" #include "JSystem/JParticle/JPADynamicsBlock.h" #include "JSystem/JParticle/JPAParticle.h" #include "JSystem/JParticle/JPAResource.h" #include "JSystem/JParticle/JPAResourceManager.h" #include "dol2asm.h" #include "dolphin/mtx/mtx.h" #include "dolphin/types.h" // // Types: // // // Forward References: // extern "C" void __dt__18JPAEmitterCallBackFv(); extern "C" void init__14JPABaseEmitterFP17JPAEmitterManagerP11JPAResource(); extern "C" void createParticle__14JPABaseEmitterFv(); extern "C" void createChild__14JPABaseEmitterFP15JPABaseParticle(); extern "C" void deleteAllParticle__14JPABaseEmitterFv(); extern "C" void processTillStartFrame__14JPABaseEmitterFv(); extern "C" void processTermination__14JPABaseEmitterFv(); extern "C" void func_8027EEB0(); extern "C" void getCurrentCreateNumber__14JPABaseEmitterCFv(); extern "C" void getDrawCount__14JPABaseEmitterCFv(); extern "C" void loadTexture__14JPABaseEmitterFUc11_GXTexMapID(); // // External References: // extern "C" void init_p__15JPABaseParticleFP18JPAEmitterWorkData(); extern "C" void init_c__15JPABaseParticleFP18JPAEmitterWorkDataP15JPABaseParticle(); extern "C" void __dl__FPv(); extern "C" void load__10JUTTextureF11_GXTexMapID(); extern "C" extern void* __vt__18JPAEmitterCallBack[7]; extern "C" extern u32 __float_epsilon; // // Declarations: // /* 8027E6A4-8027E6EC 278FE4 0048+00 0/0 14/14 16/16 .text __dt__18JPAEmitterCallBackFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm JPAEmitterCallBack::~JPAEmitterCallBack() { nofralloc #include "asm/JSystem/JParticle/JPAEmitter/__dt__18JPAEmitterCallBackFv.s" } #pragma pop /* ############################################################################################## */ /* 80455370-80455374 003970 0004+00 1/1 0/0 0/0 .sdata2 @2440 */ SECTION_SDATA2 static f32 lit_2440 = 32.0f; /* 80455374-80455378 003974 0004+00 1/1 0/0 0/0 .sdata2 @2441 */ SECTION_SDATA2 static u8 lit_2441[4] = { 0x00, 0x00, 0x00, 0x00, }; /* 80455378-8045537C 003978 0004+00 1/1 0/0 0/0 .sdata2 @2442 */ SECTION_SDATA2 static f32 lit_2442 = 0.5f; /* 8045537C-80455380 00397C 0004+00 1/1 0/0 0/0 .sdata2 @2443 */ SECTION_SDATA2 static f32 lit_2443 = 3.0f; /* 80455380-80455388 003980 0004+04 1/1 0/0 0/0 .sdata2 @2444 */ SECTION_SDATA2 static f32 lit_2444[1 + 1 /* padding */] = { 1.0f, /* padding */ 0.0f, }; /* 8027E6EC-8027EA40 27902C 0354+00 0/0 1/1 0/0 .text * init__14JPABaseEmitterFP17JPAEmitterManagerP11JPAResource */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPABaseEmitter::init(JPAEmitterManager* param_0, JPAResource* param_1) { nofralloc #include "asm/JSystem/JParticle/JPAEmitter/init__14JPABaseEmitterFP17JPAEmitterManagerP11JPAResource.s" } #pragma pop /* 8027EA40-8027EB60 279380 0120+00 0/0 3/3 0/0 .text createParticle__14JPABaseEmitterFv */ JPABaseParticle* JPABaseEmitter::createParticle() { if (mpPtclPool->getNum() != 0) { JPANode* node = mpPtclPool->pop_front(); mAlivePtclBase.push_front(node); mpRes->getDyn()->calc(mpEmtrMgr->mpWorkData); node->mData.init_p(mpEmtrMgr->mpWorkData); return &node->mData; } return NULL; } /* 8027EB60-8027EC60 2794A0 0100+00 0/0 1/1 0/0 .text * createChild__14JPABaseEmitterFP15JPABaseParticle */ JPABaseParticle* JPABaseEmitter::createChild(JPABaseParticle* parent) { if (mpPtclPool->getNum() != 0) { JPANode* node = mpPtclPool->pop_front(); mAlivePtclChld.push_front(node); node->mData.init_c(mpEmtrMgr->mpWorkData, parent); return &node->mData; } return NULL; } /* 8027EC60-8027EDD4 2795A0 0174+00 0/0 2/2 21/21 .text deleteAllParticle__14JPABaseEmitterFv */ void JPABaseEmitter::deleteAllParticle() { while (mAlivePtclBase.getNum()) mpPtclPool->push_front(mAlivePtclBase.pop_back()); while (mAlivePtclChld.getNum()) mpPtclPool->push_front(mAlivePtclChld.pop_back()); } /* 8027EDD4-8027EE14 279714 0040+00 0/0 1/1 0/0 .text processTillStartFrame__14JPABaseEmitterFv */ bool JPABaseEmitter::processTillStartFrame() { JPADynamicsBlock* dyn = mpRes->getDyn(); s16 startFrame = dyn->getStartFrame(); if (mWaitTime >= startFrame) return true; if (!(mStatus & 2)) mWaitTime++; return false; } /* 8027EE14-8027EEB0 279754 009C+00 0/0 1/1 0/0 .text processTermination__14JPABaseEmitterFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void JPABaseEmitter::processTermination() { nofralloc #include "asm/JSystem/JParticle/JPAEmitter/processTermination__14JPABaseEmitterFv.s" } #pragma pop /* 8027EEB0-8027EF30 2797F0 0080+00 0/0 1/1 0/0 .text * calcEmitterGlobalPosition__14JPABaseEmitterCFPQ29JGeometry8TVec3 */ void JPABaseEmitter::calcEmitterGlobalPosition(JGeometry::TVec3* dst) const { Mtx mtx; PSMTXScale(mtx, mGlobalScl.x, mGlobalScl.y, mGlobalScl.z); PSMTXConcat(mGlobalRot, mtx, mtx); mtx[0][3] = mGlobalTrs.x; mtx[1][3] = mGlobalTrs.y; mtx[2][3] = mGlobalTrs.z; PSMTXMultVec(mtx, &mLocalTrs, *dst); } /* 8027EF30-8027EF40 279870 0010+00 0/0 1/1 0/0 .text getCurrentCreateNumber__14JPABaseEmitterCFv */ u32 JPABaseEmitter::getCurrentCreateNumber() const { return mpEmtrMgr->mpWorkData->mEmitCount; } /* 8027EF40-8027EF50 279880 0010+00 0/0 3/3 0/0 .text getDrawCount__14JPABaseEmitterCFv */ u8 JPABaseEmitter::getDrawCount() const { return mpEmtrMgr->mpWorkData->mDrawCount; } /* 8027EF50-8027EFA4 279890 0054+00 0/0 1/1 0/0 .text * loadTexture__14JPABaseEmitterFUc11_GXTexMapID */ bool JPABaseEmitter::loadTexture(u8 idx, GXTexMapID texMapID) { mpEmtrMgr->mpWorkData->mpResMgr->load(mpRes->getTexIdx(idx), texMapID); return true; }