summaryrefslogtreecommitdiff
path: root/src/JSystem
diff options
context:
space:
mode:
authorrobojumper <robojumper@gmail.com>2025-04-27 11:48:38 +0200
committerrobojumper <robojumper@gmail.com>2025-04-27 11:48:38 +0200
commit225ce0d4ce99fa2c1b34a5486bbc0e0c084b62a6 (patch)
treef2a1b69e97be61340c94ebd8b37ec991f039fb19 /src/JSystem
parent9ea357a17f8a5a39f922cffe03578c9eb5860eb5 (diff)
JPAExtraShape, JPAChildShape OK
Diffstat (limited to 'src/JSystem')
-rw-r--r--src/JSystem/JParticle/JPAChildShape.cpp8
-rw-r--r--src/JSystem/JParticle/JPAExTexShape.cpp8
-rw-r--r--src/JSystem/JParticle/JPAExtraShape.cpp9
3 files changed, 18 insertions, 7 deletions
diff --git a/src/JSystem/JParticle/JPAChildShape.cpp b/src/JSystem/JParticle/JPAChildShape.cpp
index 18a2e18f..979b5df2 100644
--- a/src/JSystem/JParticle/JPAChildShape.cpp
+++ b/src/JSystem/JParticle/JPAChildShape.cpp
@@ -7,7 +7,13 @@
#include "JSystem/JParticle/JPAParticle.h"
#include "JSystem/JParticle/JPAEmitter.h"
#include "rvl/GX.h"
-#include "rvl/OS.h"
+
+// SS addition
+void fn_8031DBA0(JPAEmitterWorkData* work) {
+ if (work->mpEmtr->mAlivePtclBase.getNum() == 0) {
+ work->mpEmtr->deleteAllParticle();
+ }
+}
/* 8027AEBC-8027AFDC 2757FC 0120+00 0/0 1/1 0/0 .text JPARegistChildPrmEnv__FP18JPAEmitterWorkData
*/
diff --git a/src/JSystem/JParticle/JPAExTexShape.cpp b/src/JSystem/JParticle/JPAExTexShape.cpp
index ce5fd07d..18b0a01e 100644
--- a/src/JSystem/JParticle/JPAExTexShape.cpp
+++ b/src/JSystem/JParticle/JPAExTexShape.cpp
@@ -6,15 +6,19 @@
#include "JSystem/JParticle/JPAExTexShape.h"
#include "JSystem/JParticle/JPAResourceManager.h"
#include "JSystem/JParticle/JPAEmitter.h"
+#include "rvl/MTX.h"
#include "rvl/GX.h"
/* 8027B040-8027B13C 275980 00FC+00 0/0 1/1 0/0 .text JPALoadExTex__FP18JPAEmitterWorkData */
void JPALoadExTex(JPAEmitterWorkData* work) {
+ Mtx m;
JPAExTexShape* ets = work->mpRes->getEts();
-
+
GXTexCoordID secTexCoordID = GX_TEXCOORD1;
if (ets->isUseIndirect()) {
- GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY, GX_FALSE,
+ MTXIdentity(m);
+ GXLoadTexMtxImm(m, GX_TEXMTX2, GX_MTX2x4);
+ GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX0, GX_TEXMTX2, GX_FALSE,
GX_PTIDENTITY);
u8 texIdx = ets->getIndTexIdx();
work->mpResMgr->load(work->mpRes->getTexIdx(texIdx), GX_TEXMAP2);
diff --git a/src/JSystem/JParticle/JPAExtraShape.cpp b/src/JSystem/JParticle/JPAExtraShape.cpp
index 0c0e8bf5..ca825d31 100644
--- a/src/JSystem/JParticle/JPAExtraShape.cpp
+++ b/src/JSystem/JParticle/JPAExtraShape.cpp
@@ -71,23 +71,24 @@ void JPACalcScaleAnmRepeatY(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
* JPACalcScaleAnmReverseX__FP18JPAEmitterWorkDataP15JPABaseParticle */
void JPACalcScaleAnmReverseX(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
JPAExtraShape* esp = work->mpRes->getEsp();
- s32 cycle = ptcl->mAge / esp->getScaleAnmCycleX();
+ f32 cycle = ptcl->mAge / esp->getScaleAnmCycleX() & 1;
f32 base = (ptcl->mAge % esp->getScaleAnmCycleX()) / (f32)esp->getScaleAnmCycleX();
- work->mScaleAnm = base + ((cycle & 1) * (1.0f - base * 2.0f));
+ work->mScaleAnm = base + (cycle * (1.0f - base * 2.0f));
}
/* 8027AB7C-8027AC10 2754BC 0094+00 0/0 1/1 0/0 .text
* JPACalcScaleAnmReverseY__FP18JPAEmitterWorkDataP15JPABaseParticle */
void JPACalcScaleAnmReverseY(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
JPAExtraShape* esp = work->mpRes->getEsp();
- s32 cycle = ptcl->mAge / esp->getScaleAnmCycleY();
+ f32 cycle = ptcl->mAge / esp->getScaleAnmCycleY() & 1;
f32 base = (ptcl->mAge % esp->getScaleAnmCycleY()) / (f32)esp->getScaleAnmCycleY();
- work->mScaleAnm = base + ((cycle & 1) * (1.0f - base * 2.0f));
+ work->mScaleAnm = base + (cycle * (1.0f - base * 2.0f));
}
/* 8027AC10-8027AC98 275550 0088+00 0/0 1/1 0/0 .text
* JPACalcAlphaAnm__FP18JPAEmitterWorkDataP15JPABaseParticle */
void JPACalcAlphaAnm(JPAEmitterWorkData* work, JPABaseParticle* ptcl) {
+ 0.0f; // float order
JPAExtraShape* esp = work->mpRes->getEsp();
f32 alpha;
if (ptcl->mTime < esp->getAlphaInTiming()) {