JPAEmitter OK, work on d_particle (#1874)

* JPAEmitter OK + header reorganization

* libelf: silence repeated relocation warning

* Work on d_particle
This commit is contained in:
hatal175
2023-08-11 05:04:50 +03:00
committed by GitHub
parent 63fc74af79
commit 0a103f01ba
101 changed files with 1918 additions and 3699 deletions
+2 -2
View File
@@ -64,8 +64,8 @@ int J3DDrawBuffer::entryMatSort(J3DMatPacket* pMatPacket) {
J3DTexture* texture = j3dSys.getTexture();
u32 hash;
u32 texNo = pMatPacket->getMaterial()->getTexNo(0);
if ((u16)texNo == 0xFFFF) {
u16 texNo = pMatPacket->getMaterial()->getTexNo(0);
if (texNo == 0xFFFF) {
hash = 0;
} else {
hash = ((u32)texture->getResTIMG(texNo) + texture->getResTIMG(texNo)->imageOffset) >> 5;
+5 -5
View File
@@ -2587,7 +2587,7 @@ asm void J3DTevBlock16::setTexNo(u32 param_0, u16 const* param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm u32 J3DTevBlock16::getTexNo(u32 param_0) const {
asm u16 J3DTevBlock16::getTexNo(u32 param_0) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getTexNo__13J3DTevBlock16CFUl.s"
}
@@ -3640,7 +3640,7 @@ asm void J3DTevBlock4::setTexNo(u32 param_0, u16 const* param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm u32 J3DTevBlock4::getTexNo(u32 param_0) const {
asm u16 J3DTevBlock4::getTexNo(u32 param_0) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getTexNo__12J3DTevBlock4CFUl.s"
}
@@ -4033,7 +4033,7 @@ asm void J3DTevBlock2::setTexNo(u32 param_0, u16 const* param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm u32 J3DTevBlock2::getTexNo(u32 param_0) const {
asm u16 J3DTevBlock2::getTexNo(u32 param_0) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getTexNo__12J3DTevBlock2CFUl.s"
}
@@ -4426,7 +4426,7 @@ asm void J3DTevBlock1::setTexNo(u32 param_0, u16 const* param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm u32 J3DTevBlock1::getTexNo(u32 param_0) const {
asm u16 J3DTevBlock1::getTexNo(u32 param_0) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getTexNo__12J3DTevBlock1CFUl.s"
}
@@ -4680,7 +4680,7 @@ asm void J3DTevBlockPatched::setTexNo(u32 param_0, u16 const* param_1) {
#pragma push
#pragma optimization_level 0
#pragma optimizewithasm off
asm u32 J3DTevBlockPatched::getTexNo(u32 param_0) const {
asm u16 J3DTevBlockPatched::getTexNo(u32 param_0) const {
nofralloc
#include "asm/JSystem/J3DGraphBase/J3DMatBlock/getTexNo__18J3DTevBlockPatchedCFUl.s"
}
+1
View File
@@ -5,6 +5,7 @@
#include "JSystem/JParticle/JPABaseShape.h"
#include "JSystem/JParticle/JPAParticle.h"
#include "JSystem/JParticle/JPAEmitter.h"
#include "JSystem/JParticle/JPAResource.h"
#include "JSystem/JParticle/JPAResourceManager.h"
#include "dolphin/mtx/mtxvec.h"
+1
View File
@@ -5,6 +5,7 @@
#include "JSystem/JParticle/JPAChildShape.h"
#include "JSystem/JParticle/JPAParticle.h"
#include "JSystem/JParticle/JPAEmitter.h"
#include "dol2asm.h"
#include "dolphin/gx/GX.h"
#include "dolphin/os/OS.h"
+1 -1
View File
@@ -5,7 +5,7 @@
#include "JSystem/JParticle/JPADynamicsBlock.h"
#include "JSystem/JMath/JMATrigonometric.h"
#include "JSystem/JParticle/JPAParticle.h"
#include "JSystem/JParticle/JPAEmitter.h"
#include "dol2asm.h"
#include "dolphin/types.h"
+69 -66
View File
@@ -4,11 +4,12 @@
//
#include "JSystem/JParticle/JPAEmitter.h"
#include "JSystem/JParticle/JPAEmitterManager.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 "JSystem/JParticle/JPABaseShape.h"
#include "dolphin/mtx/mtx.h"
#include "dolphin/mtx/mtxvec.h"
#include "dolphin/types.h"
@@ -21,77 +22,66 @@
// 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];
//
// 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"
JPAEmitterCallBack::~JPAEmitterCallBack() {
}
#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"
void JPABaseEmitter::init(JPAEmitterManager* param_0, JPAResource* param_1) {
mpEmtrMgr = param_0;
mpRes = param_1;
mpRes->getDyn()->getEmitterScl(&mLocalScl);
mpRes->getDyn()->getEmitterTrs(&mLocalTrs);
mpRes->getDyn()->getEmitterDir(&mLocalDir);
mLocalDir.normalize();
mpRes->getDyn()->getEmitterRot(&mLocalRot);
mMaxFrame = mpRes->getDyn()->getMaxFrame();
mLifeTime = mpRes->getDyn()->getLifetime();
mVolumeSize = mpRes->getDyn()->getVolumeSize();
mRate = mpRes->getDyn()->getRate();
mRateStep = mpRes->getDyn()->getRateStep();
mVolumeSweep = mpRes->getDyn()->getVolumeSweep();
mVolumeMinRad = mpRes->getDyn()->getVolumeMinRad();
mAwayFromCenterSpeed = mpRes->getDyn()->getInitVelOmni();
mAwayFromAxisSpeed = mpRes->getDyn()->getInitVelAxis();
mDirSpeed = mpRes->getDyn()->getInitVelDir();
mSpread = mpRes->getDyn()->getInitVelDirSp();
mRndmDirSpeed = mpRes->getDyn()->getInitVelRndm();
mAirResist = mpRes->getDyn()->getAirRes();
mRndm.set_seed(mpEmtrMgr->mpWorkData->mRndm.get_rndm_u());
PSMTXIdentity(mGlobalRot);
mGlobalScl.set(1.0f, 1.0f, 1.0f);
mGlobalTrs.zero();
mGlobalPScl.set(1.0f, 1.0f);
mGlobalEnvClr.a = 0xff;
mGlobalEnvClr.b = 0xff;
mGlobalEnvClr.g = 0xff;
mGlobalEnvClr.r = 0xff;
mGlobalPrmClr.a = 0xff;
mGlobalPrmClr.b = 0xff;
mGlobalPrmClr.g = 0xff;
mGlobalPrmClr.r = 0xff;
param_1->getBsp()->getPrmClr(&mPrmClr);
param_1->getBsp()->getEnvClr(&mEnvClr);
mpUserWork = NULL;
mScaleOut = 1.0f;
mEmitCount = 0.0f;
initStatus(0x30);
mDrawTimes = 1;
mTick = 0;
mWaitTime = 0;
mRateStepTimer = 0;
mTexAnmIdx = 0;
}
#pragma pop
/* 8027EA40-8027EB60 279380 0120+00 0/0 3/3 0/0 .text createParticle__14JPABaseEmitterFv
*/
@@ -143,14 +133,27 @@ bool JPABaseEmitter::processTillStartFrame() {
}
/* 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"
bool JPABaseEmitter::processTermination() {
if (checkStatus(0x100)) {
return true;
}
if (mMaxFrame == 0) {
return false;
}
if (mMaxFrame < 0) {
setStatus(8);
return getParticleNumber() == 0;
}
if (mTick >= mMaxFrame) {
setStatus(8);
if (checkStatus(0x40)) {
return 0;
}
return getParticleNumber() == 0;
}
return false;
}
#pragma pop
/* 8027EEB0-8027EF30 2797F0 0080+00 0/0 1/1 0/0 .text
* calcEmitterGlobalPosition__14JPABaseEmitterCFPQ29JGeometry8TVec3<f> */
@@ -161,7 +164,7 @@ void JPABaseEmitter::calcEmitterGlobalPosition(JGeometry::TVec3<f32>* dst) const
mtx[0][3] = mGlobalTrs.x;
mtx[1][3] = mGlobalTrs.y;
mtx[2][3] = mGlobalTrs.z;
PSMTXMultVec(mtx, &mLocalTrs, *dst);
PSMTXMultVec(mtx, mLocalTrs, *dst);
}
/* 8027EF30-8027EF40 279870 0010+00 0/0 1/1 0/0 .text getCurrentCreateNumber__14JPABaseEmitterCFv
+1 -1
View File
@@ -5,7 +5,7 @@
#include "JSystem/JParticle/JPAEmitterManager.h"
#include "JSystem/JKernel/JKRHeap.h"
#include "JSystem/JParticle/JPAParticle.h"
#include "JSystem/JParticle/JPAEmitter.h"
#include "JSystem/JParticle/JPAResourceManager.h"
#include "dol2asm.h"
#include "dolphin/gx/GX.h"
+1
View File
@@ -7,6 +7,7 @@
#include "JSystem/JParticle/JPAParticle.h"
#include "JSystem/JParticle/JPAResource.h"
#include "JSystem/JParticle/JPAResourceManager.h"
#include "JSystem/JParticle/JPAEmitter.h"
#include "dol2asm.h"
#include "dolphin/gx/GX.h"
#include "dolphin/types.h"
+1
View File
@@ -6,6 +6,7 @@
#include "JSystem/JParticle/JPAExtraShape.h"
#include "JSystem/JMath/JMATrigonometric.h"
#include "JSystem/JParticle/JPAParticle.h"
#include "JSystem/JParticle/JPAEmitter.h"
#include "JSystem/JParticle/JPAResource.h"
#include "JSystem/JParticle/JPAResourceManager.h"
#include "dol2asm.h"
+2
View File
@@ -4,6 +4,8 @@
//
#include "JSystem/JParticle/JPAParticle.h"
#include "JSystem/JParticle/JPAEmitter.h"
#include "JSystem/JParticle/JPAEmitterManager.h"
#include "dolphin/mtx/mtxvec.h"
#include "dol2asm.h"
#include "dolphin/types.h"
+2 -1
View File
@@ -7,6 +7,7 @@
#include "JSystem/JParticle/JPABaseShape.h"
#include "JSystem/JParticle/JPAMath.h"
#include "JSystem/JParticle/JPAParticle.h"
#include "JSystem/JParticle/JPAEmitter.h"
#include "dol2asm.h"
#include "dolphin/gx/GX.h"
#include "dolphin/mtx/mtx.h"
@@ -762,7 +763,7 @@ void JPAResource::calcWorkData_d(JPAEmitterWorkData* work) {
JPAGetXYZRotateMtx(work->mpEmtr->mLocalRot.x * 0xB6, work->mpEmtr->mLocalRot.y * 0xB6,
work->mpEmtr->mLocalRot.z * 0xB6, mtx);
PSMTXConcat(work->mpEmtr->mGlobalRot, mtx, work->mGlobalRot);
PSMTXMultVecSR(work->mGlobalRot, &work->mpEmtr->mLocalDir, work->mGlobalEmtrDir);
PSMTXMultVecSR(work->mGlobalRot, (Vec*)&work->mpEmtr->mLocalDir, (Vec*)&work->mGlobalEmtrDir);
}
/* 80276A8C-80276A90 2713CC 0004+00 0/0 3/0 0/0 .text