summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorhatal175 <hatal175@users.noreply.github.com>2025-06-16 01:38:08 +0300
committerGitHub <noreply@github.com>2025-06-15 15:38:08 -0700
commit1a189d3d95352d03ea0daf11c7be78759cacbd7e (patch)
treef4fd3d4a85ab69870719dc6a98e0a3f7b1926027 /include
parent9b50fd55c28efbf2f00ee5ec4c9c085c067d26b9 (diff)
Work on d_a_obj_flag3 (#2485)
* Work on d_a_obj_flag3 * Fix JASBasicWaveBank::incWaveTable * Match JASBNKParser::Ver0::createBasicBank
Diffstat (limited to 'include')
-rw-r--r--include/JSystem/JAudio2/JASBNKParser.h2
-rw-r--r--include/JSystem/JAudio2/JASWaveArcLoader.h2
-rw-r--r--include/d/actor/d_a_obj_flag3.h105
3 files changed, 90 insertions, 19 deletions
diff --git a/include/JSystem/JAudio2/JASBNKParser.h b/include/JSystem/JAudio2/JASBNKParser.h
index 29a2d9140e..b3a3048a8b 100644
--- a/include/JSystem/JAudio2/JASBNKParser.h
+++ b/include/JSystem/JAudio2/JASBNKParser.h
@@ -10,7 +10,7 @@ class JKRHeap;
namespace JASBNKParser {
struct TFileHeader {
- /* 0x0 */ u8 _00[4];
+ /* 0x0 */ int id;
/* 0x4 */ u32 mSize;
/* 0x8 */ u8 _08[4];
/* 0xC */ u32 mVersion;
diff --git a/include/JSystem/JAudio2/JASWaveArcLoader.h b/include/JSystem/JAudio2/JASWaveArcLoader.h
index 9536e12400..288905339a 100644
--- a/include/JSystem/JAudio2/JASWaveArcLoader.h
+++ b/include/JSystem/JAudio2/JASWaveArcLoader.h
@@ -64,7 +64,7 @@ struct JASWaveArc : JASDisposer {
/* 0xC */ u32 _c;
};
- /* 0x04 */ JASHeap mHeap;
+ /* 0x04 */ mutable JASHeap mHeap;
/* 0x48 */ u32 _48;
/* 0x4C */ volatile s32 mStatus;
/* 0x50 */ int mEntryNum;
diff --git a/include/d/actor/d_a_obj_flag3.h b/include/d/actor/d_a_obj_flag3.h
index 0583e38181..77e51e271d 100644
--- a/include/d/actor/d_a_obj_flag3.h
+++ b/include/d/actor/d_a_obj_flag3.h
@@ -1,8 +1,80 @@
#ifndef D_A_OBJ_FLAG3_H
#define D_A_OBJ_FLAG3_H
+#include "d/d_cc_d.h"
#include "f_op/f_op_actor_mng.h"
+struct daObjFlag3_Attr_c {
+ /* 0x00 */ f32 mGravity;
+ /* 0x04 */ f32 mSpringCoeeficient;
+ /* 0x08 */ f32 mDecayRate;
+ /* 0x0C */ f32 mWindCoefficient;
+ /* 0x10 */ f32 mTornado;
+};
+
+class FlagCloth2_c : public J3DPacket {
+public:
+ /* 80BEEDE4 */ void execute();
+ /* 80BEEF74 */ inline void calcFlagNormal(cXyz*, int);
+ /* 80BEF278 */ inline cXyz calcFlagFactor(cXyz*, cXyz*, cXyz*, int);
+ /* 80BEF790 */ virtual ~FlagCloth2_c();
+ /* 80BEFD08 */ void initFlagPos(cXyz*, fopAc_ac_c*);
+ /* 80BF00A0 */ virtual void draw();
+ /* 80BF0434 */ cXyz getTargetPos() { return mPositions[4]; }
+
+ inline void calcFlagNormalBack();
+ cXyz* getPos() { return mPositions; }
+ cXyz* getVec() { return mVecs; }
+ cXyz* getNormal() { return mNormals; }
+ cXyz* getNormalBack() { return mNormalBacks; }
+ GXTexObj* getImageTexObj() { return &mTexObj; }
+ void setSpringRate(f32 rate) { mSpringRate = rate; }
+ void setWindRate(f32 rate) { mWindRate = rate; }
+ void setDecayRate(f32 rate) { mDecayRate = rate; }
+ void setGravity(f32 rate) { mGravity = rate; }
+ void setTornado(f32 tornado) { mTornado = tornado; }
+
+ void initTexCoord() {
+ for (int i = 0; i < 6; i++) {
+ for (int j = 0; j < 6; j++) {
+ mTexCoord[i* 6 + j][0] = j / 5.0f;
+ mTexCoord[i* 6 + j][1] = (5 - i) / 5.0f;
+ }
+ }
+ }
+
+ void calcFlagFactorSub(cXyz* param_1, cXyz* param_2, cXyz* param_3, f32 param_4) {
+ cXyz acStack_2c = *param_2 - *param_1;
+ param_4 = acStack_2c.abs() - param_4;
+ cXyz cStack_38 = acStack_2c.normZC();
+ param_4 *= mSpringRate;
+ cStack_38 *= param_4;
+ *param_3 += cStack_38;
+ }
+
+ /* 0x010 */ GXTexObj mTexObj;
+ /* 0x030 */ dKy_tevstr_c mTevStr;
+ /* 0x3B8 */ dCcD_Stts mStts;
+ /* 0x3F4 */ dCcD_Sph mSph;
+ /* 0x52C */ u8 field_0x52c[0x540 - 0x52c];
+ /* 0x540 */ cXyz mPositions[36];
+ /* 0x6F0 */ u8 field_0x6f0[0x700 - 0x6f0];
+ /* 0x700 */ cXyz mNormals[36];
+ /* 0x8B0 */ u8 field_0x8b0[0x8c0 - 0x8b0];
+ /* 0x8C0 */ cXyz mNormalBacks[36];
+ /* 0xA70 */ u8 field_0xa70[0xa80 - 0xa70];
+ /* 0xA70 */ f32 mTexCoord[36][2];
+ /* 0xBA0 */ cXyz mVecs[36];
+ /* 0xD50 */ cXyz* mpFlagPosition;
+ /* 0xD54 */ Mtx mModelMtx;
+ // /* 0xD8C */ void* mpTexCoord;
+ /* 0xD84 */ f32 mSpringRate;
+ /* 0xD88 */ f32 mWindRate;
+ /* 0xD8C */ f32 mDecayRate;
+ /* 0xD90 */ f32 mGravity;
+ /* 0xD94 */ f32 mTornado;
+};
+
/**
* @ingroup actors-objects
* @class daObjFlag3_c
@@ -13,30 +85,29 @@
*/
class daObjFlag3_c : public fopAc_ac_c {
public:
- /* 80BEEA78 */ void createHeap();
- /* 80BEED3C */ void execute();
+ /* 80BEEA78 */ int createHeap();
+ /* 80BEED3C */ int execute();
/* 80BEF700 */ ~daObjFlag3_c();
- /* 80BEF95C */ void create();
+ /* 80BEF95C */ int create();
/* 80BEFBC4 */ void create_init();
+ inline int draw();
+ inline void initBaseMtx();
- static u8 const M_attr[20];
+ static daObjFlag3_Attr_c const M_attr;
+ const daObjFlag3_Attr_c& attr() const { return M_attr; }
private:
- /* 0x568 */ u8 field_0x568[0x1340 - 0x568];
+ /* 0x0568 */ J3DModel* mModel;
+ /* 0x056C */ request_of_phase_process_class mFlagPhase;
+ /* 0x0574 */ request_of_phase_process_class mArcPhase;
+ /* 0x057c */ int field_0x57c;
+ /* 0x0580 */ FlagCloth2_c mFlagCloth;
+ /* 0x1318 */ u8 field_0x1318[0x1320 - 0x1318];
+ /* 0x1320 */ cXyz field_0x1320;
+ /* 0x132C */ bool mFlagValid;
+ /* 0x132D */ char mFlagName[19];
};
STATIC_ASSERT(sizeof(daObjFlag3_c) == 0x1340);
-class FlagCloth2_c {
-public:
- /* 80BEEDE4 */ void execute();
- /* 80BEEF74 */ void calcFlagNormal(cXyz*, int);
- /* 80BEF278 */ void calcFlagFactor(cXyz*, cXyz*, cXyz*, int);
- /* 80BEF790 */ ~FlagCloth2_c();
- /* 80BEFD08 */ void initFlagPos(cXyz*, fopAc_ac_c*);
- /* 80BF00A0 */ void draw();
- /* 80BF0434 */ void getTargetPos();
-};
-
-
#endif /* D_A_OBJ_FLAG3_H */