mirror of
https://github.com/zeldaret/ss
synced 2026-05-26 23:47:22 -04:00
Almost done
This commit is contained in:
@@ -1778,6 +1778,7 @@ JSystem/JParticle/JPAChildShape.cpp:
|
||||
|
||||
JSystem/JParticle/JPAExTexShape.cpp:
|
||||
.text start:0x8031DD50 end:0x8031E094 align:16
|
||||
.sdata2 start:0x8057CEB8 end:0x8057CED8
|
||||
|
||||
JSystem/JParticle/JPADynamicsBlock.cpp:
|
||||
.text start:0x8031E0A0 end:0x8031F020 align:16
|
||||
|
||||
@@ -18536,7 +18536,7 @@ JPACalcChildScaleOut__FP18JPAEmitterWorkDataP15JPABaseParticle = .text:0x8031DD1
|
||||
__ct__13JPAChildShapeFPCUc = .text:0x8031DD40; // type:function size:0x8
|
||||
JPALoadExTex__FP18JPAEmitterWorkData = .text:0x8031DD50; // type:function size:0x114
|
||||
__ct__13JPAExTexShapeFPCUc = .text:0x8031DE70; // type:function size:0x8
|
||||
fn_8031DE80__13JPAExTexShapeFP12JPABaseShapef = .text:0x8031DE80; // type:function size:0x214
|
||||
fn_8031DE80__13JPAExTexShapeCFPC12JPABaseShapef = .text:0x8031DE80; // type:function size:0x214
|
||||
JPAVolumePoint__FP18JPAEmitterWorkData = .text:0x8031E0A0; // type:function size:0xD4
|
||||
JPAVolumeLine__FP18JPAEmitterWorkData = .text:0x8031E180; // type:function size:0x114
|
||||
JPAVolumeCircle__FP18JPAEmitterWorkData = .text:0x8031E2A0; // type:function size:0x204
|
||||
|
||||
@@ -17,7 +17,16 @@ struct JPAExTexShapeData {
|
||||
|
||||
/* 0x08 */ u32 mFlags;
|
||||
/* 0x0C */ f32 mIndTexMtx[2][3];
|
||||
/* 0x24 */ u8 _0x24[0x4C - 0x24];
|
||||
/* 0x24 */ f32 field_0x24;
|
||||
/* 0x28 */ f32 field_0x28;
|
||||
/* 0x2C */ f32 field_0x2C;
|
||||
/* 0x30 */ f32 field_0x30;
|
||||
/* 0x34 */ f32 field_0x34;
|
||||
/* 0x38 */ f32 field_0x38;
|
||||
/* 0x3C */ f32 field_0x3C;
|
||||
/* 0x40 */ f32 field_0x40;
|
||||
/* 0x44 */ f32 field_0x44;
|
||||
/* 0x48 */ f32 field_0x48;
|
||||
/* 0x4C */ u8 field_0x4C;
|
||||
/* 0x4D */ s8 mExpScale;
|
||||
/* 0x4E */ s8 mIndTexIdx;
|
||||
@@ -42,7 +51,7 @@ public:
|
||||
|
||||
public:
|
||||
const JPAExTexShapeData* mpData;
|
||||
void fn_8031DE80(JPABaseShape *bsp, f32);
|
||||
void fn_8031DE80(const JPABaseShape *bsp, f32) const;
|
||||
};
|
||||
|
||||
void JPALoadExTex(JPAEmitterWorkData*);
|
||||
|
||||
@@ -561,8 +561,8 @@ void JPADrawRotBillboard(JPAEmitterWorkData* work, JPABaseParticle* param_1) {
|
||||
if (param_1->checkStatus(8) == 0) {
|
||||
EGG::Vector3f local_48;
|
||||
MTXMultVec(work->mPosCamMtx, param_1->mPosition, local_48);
|
||||
f32 sinRot = nw4r::math::SinIdx(param_1->mRotateAngle);
|
||||
f32 cosRot = nw4r::math::CosIdx(param_1->mRotateAngle);
|
||||
f32 sinRot = nw4r::math::SinIdx((s16)param_1->mRotateAngle);
|
||||
f32 cosRot = nw4r::math::CosIdx((s16)param_1->mRotateAngle);
|
||||
f32 particleX = work->mGlobalPtclScl.x * param_1->mParticleScaleX;
|
||||
f32 particleY = work->mGlobalPtclScl.y * param_1->mParticleScaleY;
|
||||
|
||||
@@ -618,8 +618,8 @@ void JPADrawRotYBillboard(JPAEmitterWorkData* work, JPABaseParticle* param_1) {
|
||||
if (param_1->checkStatus(8) == 0) {
|
||||
EGG::Vector3f local_48;
|
||||
MTXMultVec(work->mPosCamMtx, param_1->mPosition, local_48);
|
||||
f32 sinRot = nw4r::math::SinIdx(param_1->mRotateAngle);
|
||||
f32 cosRot = nw4r::math::CosIdx(param_1->mRotateAngle);
|
||||
f32 sinRot = nw4r::math::SinIdx((s16)param_1->mRotateAngle);
|
||||
f32 cosRot = nw4r::math::CosIdx((s16)param_1->mRotateAngle);
|
||||
Mtx local_38;
|
||||
f32 particleX = work->mGlobalPtclScl.x * param_1->mParticleScaleX;
|
||||
f32 particleY = work->mGlobalPtclScl.y * param_1->mParticleScaleY;
|
||||
@@ -878,8 +878,8 @@ void JPADrawDirection(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) {
|
||||
* JPADrawRotDirection__FP18JPAEmitterWorkDataP15JPABaseParticle */
|
||||
void JPADrawRotDirection(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) {
|
||||
if (param_1->checkStatus(8) == 0) {
|
||||
f32 sinRot = nw4r::math::SinIdx(param_1->mRotateAngle);
|
||||
f32 cosRot = nw4r::math::CosIdx(param_1->mRotateAngle);
|
||||
f32 sinRot = nw4r::math::SinIdx((s16)param_1->mRotateAngle);
|
||||
f32 cosRot = nw4r::math::CosIdx((s16)param_1->mRotateAngle);
|
||||
EGG::Vector3f local_6c;
|
||||
EGG::Vector3f local_78;
|
||||
p_direction[param_0->mDirType](param_0, param_1, &local_6c);
|
||||
@@ -959,8 +959,8 @@ void JPADrawDBillboard(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) {
|
||||
* JPADrawRotation__FP18JPAEmitterWorkDataP15JPABaseParticle */
|
||||
void JPADrawRotation(JPAEmitterWorkData* param_0, JPABaseParticle* param_1) {
|
||||
if (param_1->checkStatus(8) == 0) {
|
||||
f32 sinRot = nw4r::math::SinIdx(param_1->mRotateAngle);
|
||||
f32 cosRot = nw4r::math::CosIdx(param_1->mRotateAngle);
|
||||
f32 sinRot = nw4r::math::SinIdx((s16)param_1->mRotateAngle);
|
||||
f32 cosRot = nw4r::math::CosIdx((s16)param_1->mRotateAngle);
|
||||
f32 particleX = param_0->mGlobalPtclScl.x * param_1->mParticleScaleX;
|
||||
f32 particleY = param_0->mGlobalPtclScl.y * param_1->mParticleScaleY;
|
||||
Mtx auStack_88;
|
||||
@@ -1073,8 +1073,8 @@ void JPADrawStripe(JPAEmitterWorkData* param_0) {
|
||||
param_0->mpCurNode = node;
|
||||
JPABaseParticle* particle = node->getObject();
|
||||
local_ec.set(particle->mPosition);
|
||||
dVar11 = nw4r::math::SinIdx(particle->mRotateAngle);
|
||||
dVar12 = nw4r::math::CosIdx(particle->mRotateAngle);
|
||||
dVar11 = nw4r::math::SinIdx((s16)particle->mRotateAngle);
|
||||
dVar12 = nw4r::math::CosIdx((s16)particle->mRotateAngle);
|
||||
local_e0[0].set(-particle->mParticleScaleX * dVar14, 0.0f, 0.0f);
|
||||
local_e0[0].set(local_e0[0].x * dVar12, 0.0f, local_e0[0].x * dVar11);
|
||||
local_e0[1].set(particle->mParticleScaleX * dVar13, 0.0f, 0.0f);
|
||||
@@ -1163,8 +1163,8 @@ void JPADrawStripeX(JPAEmitterWorkData* param_0) {
|
||||
param_0->mpCurNode = node;
|
||||
JPABaseParticle* particle = node->getObject();
|
||||
local_b4.set(particle->mPosition);
|
||||
dVar11 = nw4r::math::SinIdx(particle->mRotateAngle);
|
||||
dVar12 = nw4r::math::CosIdx(particle->mRotateAngle);
|
||||
dVar11 = nw4r::math::SinIdx((s16)particle->mRotateAngle);
|
||||
dVar12 = nw4r::math::CosIdx((s16)particle->mRotateAngle);
|
||||
local_a8[0].set(-particle->mParticleScaleX * local_154, 0.0f, 0.0f);
|
||||
local_a8[0].set(local_a8[0].x * dVar12, 0.0f, local_a8[0].x * dVar11);
|
||||
local_a8[1].set(particle->mParticleScaleX * local_158, 0.0f, 0.0f);
|
||||
@@ -1213,8 +1213,8 @@ void JPADrawStripeX(JPAEmitterWorkData* param_0) {
|
||||
param_0->mpCurNode = node;
|
||||
JPABaseParticle* particle = node->getObject();
|
||||
local_b4.set(particle->mPosition);
|
||||
dVar11 = nw4r::math::CosIdx(particle->mRotateAngle);
|
||||
dVar12 = -nw4r::math::SinIdx(particle->mRotateAngle);
|
||||
dVar11 = nw4r::math::CosIdx((s16)particle->mRotateAngle);
|
||||
dVar12 = -nw4r::math::SinIdx((s16)particle->mRotateAngle);
|
||||
local_a8[0].set(-particle->mParticleScaleY * local_15c, 0.0f, 0.0f);
|
||||
local_a8[0].set(local_a8[0].x * dVar12, 0.0f, local_a8[0].x * dVar11);
|
||||
local_a8[1].set(particle->mParticleScaleY * local_160, 0.0f, 0.0f);
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "JSystem/JParticle/JPAExTexShape.h"
|
||||
#include "JSystem/JParticle/JPAResourceManager.h"
|
||||
#include "JSystem/JParticle/JPAEmitter.h"
|
||||
#include "nw4r/math/math_triangular.h"
|
||||
#include "rvl/MTX.h"
|
||||
#include "rvl/GX.h"
|
||||
|
||||
@@ -38,6 +39,37 @@ JPAExTexShape::JPAExTexShape(u8 const* data) {
|
||||
mpData = (const JPAExTexShapeData*)data;
|
||||
}
|
||||
|
||||
void JPAExTexShape::fn_8031DE80(JPABaseShape* shp, f32) {
|
||||
// TODO
|
||||
void JPAExTexShape::fn_8031DE80(const JPABaseShape *shp, f32 f) const {
|
||||
f32 _0x38_x_0x24 = f * mpData->field_0x38 + mpData->field_0x24;
|
||||
f32 _0x3C_x_0x28 = f * mpData->field_0x3C + mpData->field_0x28;
|
||||
f32 _0x40_x_0x2C = f * mpData->field_0x40 + mpData->field_0x2C;
|
||||
f32 _0x44_x_0x30 = f * mpData->field_0x44 + mpData->field_0x30;
|
||||
|
||||
f32 tilingS = 0.5f * (shp->getTilingS() + 1.0f);
|
||||
f32 tilingT = 0.5f * (shp->getTilingT() + 1.0f);
|
||||
|
||||
s16 v = f * mpData->field_0x48 * 32768.0f + mpData->field_0x34 * 32768.0f;
|
||||
f32 sin = nw4r::math::SinIdx(v);
|
||||
f32 cos = nw4r::math::CosIdx(v);
|
||||
|
||||
f32 fS2 = tilingS + _0x38_x_0x24;
|
||||
f32 fT2 = tilingT + _0x3C_x_0x28;
|
||||
|
||||
Mtx texMtx;
|
||||
|
||||
texMtx[0][0] = _0x40_x_0x2C * cos;
|
||||
texMtx[0][1] = -_0x40_x_0x2C * sin;
|
||||
texMtx[0][2] = 0.0f;
|
||||
texMtx[0][3] = tilingS + _0x40_x_0x2C * (sin * fT2 - cos * fS2);
|
||||
|
||||
texMtx[1][0] = _0x44_x_0x30 * sin;
|
||||
texMtx[1][1] = _0x44_x_0x30 * cos;
|
||||
texMtx[1][2] = 0.0f;
|
||||
texMtx[1][3] = tilingT + (-_0x44_x_0x30) * (sin * fS2 + cos * fT2);
|
||||
|
||||
texMtx[2][0] = 0.0f;
|
||||
texMtx[2][1] = 0.0f;
|
||||
texMtx[2][2] = 0.0f;
|
||||
texMtx[2][3] = 1.0f;
|
||||
GXLoadTexMtxImm(texMtx, 0x24, GX_MTX2x4);
|
||||
}
|
||||
|
||||
@@ -155,8 +155,8 @@ void JPABaseParticle::init_c(JPAEmitterWorkData* work, JPABaseParticle* parent)
|
||||
f32 base_speed = csp->getBaseVel() * (csp->getBaseVelRndm() * emtr->get_r_zp() + 1.0f);
|
||||
EGG::Vector3f base_vel(emtr->get_r_zp(), emtr->get_r_zp(), emtr->get_r_zp());
|
||||
base_vel.setLength(base_speed);
|
||||
mVelType1 = csp->getVelInhRate() * parent->mVelType1 + base_vel;
|
||||
mVelType0 = csp->getVelInhRate() * parent->mVelType2;
|
||||
mVelType1 = parent->mVelType1 * csp->getVelInhRate() + base_vel;
|
||||
mVelType0 = parent->mVelType2 * csp->getVelInhRate();
|
||||
|
||||
mMoment = parent->mMoment;
|
||||
if (csp->isFieldAffected()) {
|
||||
|
||||
Reference in New Issue
Block a user