d_a_obj_rock small cleanup and doc pass (#2089)

* A bit more cleanup and another small doc pass

* d_a_obj_digsnow OK (#2090)

* Decomp OK

* Cleanup and format pass, removing unused asm

* Updating progress

* Additional cleanup and PR feedback

---------

Co-authored-by: GinNoOokami <noreply>

* Updating names based on feedback

---------

Co-authored-by: GinNoOokami <noreply>
This commit is contained in:
Jeff Padgham 2024-03-09 22:12:03 -08:00 committed by GitHub
parent 1672cfacce
commit 67250f6b5d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 26 additions and 25 deletions

View File

@ -26,14 +26,14 @@ STATIC_ASSERT(sizeof(rock_ss) == 0x160);
class obj_rock_class : public fopAc_ac_c {
public:
/* 0x568 */ request_of_phase_process_class mPhaseReq;
/* 0x570 */ u8 field_0x570;
/* 0x571 */ u8 field_0x571;
/* 0x572 */ u8 field_0x572;
/* 0x574 */ s16 field_0x574;
/* 0x570 */ u8 mPatchRockNum;
/* 0x571 */ u8 mRockSpacing;
/* 0x572 */ u8 field_0x572; // Unused?
/* 0x574 */ s16 mPatchInitialized;
/* 0x578 */ rock_ss mRocks[0x10];
/* 0x1B78 */ s32 mCount;
/* 0x1B78 */ s32 mRockNum;
/* 0x1B7C */ dCcD_Stts mStts;
/* 0x1BB9 */ u8 field_0x1bb8;
/* 0x1BB8 */ u8 field_0x1bb8; // Unused?
/* 0x1BB9 */ bool mInitialized;
}; // Size: 0x1BBC

View File

@ -19,7 +19,7 @@ static int daObj_Rock_Draw(obj_rock_class* i_this) {
int room = fopAcM_GetRoomNo(i_this);
rock_ss* rock = i_this->mRocks;
for (int i = 0; i < i_this->mCount; i++, rock++) {
for (int i = 0; i < i_this->mRockNum; i++, rock++) {
if (rock->mActive) {
dComIfGp_entrySimpleModel(rock->mpModel, room);
}
@ -30,9 +30,9 @@ static int daObj_Rock_Draw(obj_rock_class* i_this) {
/* 80CBDD20-80CBDE48 000100 0128+00 2/1 0/0 0/0 .text daObj_Rock_Execute__FP14obj_rock_class */
static int daObj_Rock_Execute(obj_rock_class* i_this) {
if (i_this->field_0x574 == 0) {
if (i_this->mPatchInitialized == FALSE) {
rock_ss* rock = i_this->mRocks;
for (int i = 0; i < i_this->mCount; i++, rock++) {
for (int i = 0; i < i_this->mRockNum; i++, rock++) {
if (rock->mActive) {
mDoMtx_trans(mDoMtx_stack_c::get(), rock->mPos.x, rock->mPos.y + rock->mOffsetY,
rock->mPos.z);
@ -45,10 +45,10 @@ static int daObj_Rock_Execute(obj_rock_class* i_this) {
rock->mCollider.SetR(rock->mScale.x * 100.0f);
}
}
i_this->field_0x574 = 1;
i_this->mPatchInitialized = TRUE;
} else {
rock_ss* rock = i_this->mRocks;
for (int i = 0; i < i_this->mCount; i++, rock++) {
for (int i = 0; i < i_this->mRockNum; i++, rock++) {
dComIfG_Ccsp2().Set(&rock->mCollider);
}
}
@ -56,7 +56,7 @@ static int daObj_Rock_Execute(obj_rock_class* i_this) {
}
/* 80CBDE48-80CBDE50 000228 0008+00 1/0 0/0 0/0 .text daObj_Rock_IsDelete__FP14obj_rock_class */
static bool daObj_Rock_IsDelete(obj_rock_class* param_0) {
static bool daObj_Rock_IsDelete(obj_rock_class* i_this) {
return true;
}
@ -76,10 +76,10 @@ static int useHeapInit(fopAc_ac_c* i_this) {
J3DModelData* model_data = (J3DModelData*)dComIfG_getObjectRes("Obj_rock", 3);
for (int i = 0; i < a_this->mCount; i++) {
for (int i = 0; i < a_this->mRockNum; i++) {
a_this->mRocks[i].mpModel = mDoExt_J3DModel__create(model_data, 0x20000, 0x11000084);
if (a_this->mRocks[i].mpModel == NULL) {
return 0;
return FALSE;
}
}
@ -88,9 +88,9 @@ static int useHeapInit(fopAc_ac_c* i_this) {
/* 80CBDF84-80CBE138 000364 01B4+00 1/1 0/0 0/0 .text set_pos_check__FP14obj_rock_classi
*/
static int set_pos_check(obj_rock_class* i_this, int index) {
for (int i = 0; i < index; i++) {
cXyz dir = i_this->mRocks[i].mPos - i_this->mRocks[index].mPos;
static int set_pos_check(obj_rock_class* i_this, int target_index) {
for (int i = 0; i < target_index; i++) {
cXyz dir = i_this->mRocks[i].mPos - i_this->mRocks[target_index].mPos;
if (dir.abs() < 200.0f) {
return FALSE;
}
@ -120,17 +120,18 @@ static int daObj_Rock_Create(fopAc_ac_c* i_this) {
cPhs__Step step = (cPhs__Step)dComIfG_resLoad(&a_this->mPhaseReq, "Obj_rock");
if (step == cPhs_COMPLEATE_e) {
a_this->field_0x570 = fopAcM_GetParam(a_this);
a_this->field_0x571 = fopAcM_GetParamBit(a_this, 8, 8);
a_this->mPatchRockNum = fopAcM_GetParam(a_this);
a_this->mRockSpacing = fopAcM_GetParamBit(a_this, 8, 8);
a_this->field_0x572 = fopAcM_GetParamBit(a_this, 16, 8);
if (a_this->field_0x572 == 0xFF) {
a_this->field_0x572 = 0;
}
a_this->mCount = a_this->field_0x570 + 1;
if (a_this->mCount > 0x10) {
a_this->mCount = 0x10;
// Unclear why a separate counter is used here, or why it adds 1
a_this->mRockNum = a_this->mPatchRockNum + 1;
if (a_this->mRockNum > 16) {
a_this->mRockNum = 16;
}
if (!fopAcM_entrySolidHeap(i_this, (heapCallbackFunc)useHeapInit, 0x4B000)) {
@ -150,7 +151,7 @@ static int daObj_Rock_Create(fopAc_ac_c* i_this) {
obj_gnd_chk.SetPos((Vec*)&pos);
f32 gnd_height = dComIfG_Bgsp().GroundCross(&obj_gnd_chk);
for (int i = 0; i < a_this->mCount; i++) {
for (int i = 0; i < a_this->mRockNum; i++) {
MtxPush();
mDoMtx_YrotM(*calc_mtx, cM_rndF2(65536.0f));
MtxPosition(&init_pos, &a_this->mRocks[i].mPos);
@ -181,12 +182,12 @@ static int daObj_Rock_Create(fopAc_ac_c* i_this) {
init_pos.z = cM_rndF2(1.0f);
init_pos.z = 1.0f - (init_pos.z * init_pos.z);
init_pos.z *= 100.0f * a_this->field_0x571;
init_pos.z *= 100.0f * a_this->mRockSpacing;
}
a_this->mStts.Init(0xff, 0, i_this);
for (int i = 0; i < a_this->mCount; i++) {
for (int i = 0; i < a_this->mRockNum; i++) {
a_this->mRocks[i].mCollider.Set(cc_sph_src);
a_this->mRocks[i].mCollider.SetStts(&a_this->mStts);
}