d_a_salvage_tbox - 100% (GZLJ01, GZLE01, GZLP01) (#1113)

* First attempts at d_a_salvage_tbox

* CreateHeap match

* set_mtx 87%

* set_mtx 100%

* initWaitGetItem 93%

* initWaitGetItem 98.24%

* initWaitGetItem 98.24% - removed comments

* Removed unecessary fields

* actWait02 78.04%

* daSTBox_Draw 100%

* _create 39.71%

* _create 80.10%

* _create 98.50%

* Some changes in class members to be done, _create 99.99%, started on shadowEcallBack.

* _create 100%, shadowEcallBack.getMaxWaterY 84.93%, shadowEcallBack.setup 100%

* shadowEcallBack.getMaxWaterY 93.68%

* shadowEcallBack.getMaxWaterY 94.64%

* shadowEcallBack.getMaxWaterY 99.32%

* getWaterY 99.62%

* Swap position of mpAngle to get setup back to 100%

* actWait02 81.50%

* actDrop 74.60%

* actDrop 98.80%

* actWait 32.54%

* actWait 84.60%

* actWait 88.69%

* actWait 99.35%

* actWait02 100%

* _delete 55.71%

* _delete 97.57%

* _delete 99.12%

* shadowEcallBack_c::execute 79.13%

* shadowEcallBack_c::execute 99.70%

* CreateInit 94.92%

* CreateInit 98.64%

* shadowEcallBack_c::draw 21.24%

* shadowEcallBack_c::draw 34.81%

* shadowEcallBack_c::draw 54.72%

* shadowEcallBack_c::draw 69.86%

* shadowEcallBack_c::draw 97.99%

* shadowEcallBack_c::draw 99.10%

* actWait 99.43%

* _execute 40.58%

* _execute 73.14%

* _execute 98.29%

* initWaitGetItem improvements 98.24%

* initWaitGetItem 100%

* Removed unnecessary this->

* _delete 100%

* actWait 99.82%

* CreateInit 99.52%

* shadowEcallBack_c::getMaxWaterY 99.32%

* CreateInit 99.52%

* Simplified getStaffId in _execute

* shadowEcallBack_c::draw 99.11%

* shadowEcallBack_c::draw 99.23%

* shadowEcallBack_c::draw 99.48%

* actWait 99.85%

* Named shadowCallback

* actDrop 99.60%

* Renamed m_arc_name to m_arcname

* actWait 99.97% - using dComIfGp_particle_setShipTail

* _execute 99.58% - changed actIdx type to s16

* _execute 98.43% - reverting actIdx type back to int.

* CreateInit 99.92% - created cXyz position in shadowEcallBack.

* _execute 100% - cast on ship.

* .rodata 100% - Moved crane_offset above actWait where it first is used.

* Hoisted alpha_arr in shadowEcallBack_c::execute but to no avail.

* shadowEcallBack_c::execute 100% - emitter->setGlobalTranslation for regswap and used inline emitter->setGlobalRotation

* shadowEcallBack_c::draw 100% - moved fVar3 down a few lines to fix regswap

* shadowEcallBack_c::execute 100% - getting global translation object, only modifying its y property, and setting it again.

* Removed Nonmatching from matching functions and fixed memory offsets in shadowEcallBack_c.

* Linked - Added destructor for shadowEcallBack and added Matching in configure.py

* Set MatchingFor Japanese, United Statian and European versions - demo differs quite a bit.

* Removed incorrectly added include d_a_ship.h from d_com_inf_game.h

---------

Co-authored-by: Anders Gjerde <mail@mail.com>
This commit is contained in:
Anders Gjerde
2026-08-03 22:36:40 +02:00
committed by GitHub
parent 27e65e0f29
commit cb6a9205db
3 changed files with 491 additions and 53 deletions
+60 -18
View File
@@ -7,25 +7,43 @@
class daSTBox_shadowEcallBack_c : public dPa_levelEcallBack {
public:
void deleteCallBack() {}
void getEmitter() {}
void setDepth(float) {}
void setIndirectTexData(float, float) {}
void setPos(cXyz&) {}
void setWaterFlatY(float) {}
void setWaterY(float) {}
void setup(JPABaseEmitter*, const cXyz*, const csXyz*, signed char) {}
JPABaseEmitter* getEmitter() { return mpEmitter; }
void setEmitter(JPABaseEmitter* emitter) { mpEmitter = emitter; }
void setDepth(float depth) { mpDepth = depth; }
void setWaterFlatY(float waterFlatY) { mpWaterFlatY = waterFlatY; }
void setWaterY(float waterY) { mpWaterY = waterY; }
void setField0x48(float field) { field_0x48 = field; }
void setup(JPABaseEmitter* emitter, const cXyz*, const csXyz* angle, signed char) {
field_0x4 = 0;
mpAngle = const_cast<csXyz*>(angle);
mpEmitter = emitter;
}
~daSTBox_shadowEcallBack_c() {}
void getMaxWaterY(JGeometry::TVec3<float>*);
void getMaxWaterY(JGeometry::TVec3<f32>*);
void execute(JPABaseEmitter*);
void draw(JPABaseEmitter*);
};
/* 0x04 */ s16 field_0x4;
/* 0x06 */ s16 field_0x6;
/* 0x08 */ f32 mpWaterFlatY;
/* 0x0C */ f32 field_0x0C;
/* 0x10 */ f32 mpWaterY;
/* 0x14 */ JGeometry::TVec3<f32> mPos[3];
/* 0x38 */ cXyz position;
/* 0x44 */ csXyz* mpAngle;
/* 0x48 */ f32 field_0x48;
/* 0x4C */ f32 mpDepth;
/* 0x50 */ f32 field_0x50;
/* 0x54 */ JPABaseEmitter* mpEmitter;
}; // Size: 0x58
class daSTBox_c : public fopAc_ac_c {
public:
inline bool _draw();
bool _delete();
void CreateHeap();
BOOL CreateHeap();
void CreateInit();
cPhs_State _create();
void set_mtx();
@@ -35,14 +53,38 @@ public:
void initWaitGetItem(int);
void initWaitDummy(int);
void initDrop(int);
void actWait(int);
void actDrop(int);
void actWait02(int);
void actWaitGetItem(int);
void actWaitDummy(int);
BOOL actWait(int);
BOOL actDrop(int);
BOOL actWait02(int);
BOOL actWaitGetItem(int);
BOOL actWaitDummy(int);
static const s16 m_heapsize[3];
static const char m_arcname[];
static const f32 m_rope_max_length;
static const s16 m_bdlidx[3];
static const u8 m_shadow_alpha;
static const f32 m_shadow_depth;
static const f32 m_shadow_scroll;
static const f32 m_shadow_scale;
public:
/* Place member variables here */
};
/* 0x290 */ request_of_phase_process_class field_0x290;
/* 0x298 */ J3DModel* mpModel;
/* 0x29C */ JPABaseEmitter* field_0x29C[2];
/* 0x2A4 */ JPABaseEmitter* field_0x2A4;
/* 0x2A8 */ u8 field_0x2A8[0x2AC - 0x2A8];
/* 0x2AC */ dPa_rippleEcallBack mRippleCallBack;
/* 0x2C0 */ daSTBox_shadowEcallBack_c shadowCallback;
/* 0x318 */ cXyz position;
/* 0x324 */ cXyz field_0x324;
/* 0x330 */ u8 field_0x330;
/* 0x331 */ u8 field_0x331;
/* 0x332 */ s16 field_0x332;
/* 0x334 */ u8 field_0x334;
/* 0x335 */ u8 field_0x335;
/* 0x336 */ u8 field_0x336;
/* 0x337 */ u8 field_0x337[0x338 - 0x337];
/* 0x338 */ s32 field_0x338;
}; // Size: 0x33C
#endif /* D_A_SALVAGE_TBOX_H */