From 67250f6b5dc66a652ce2b2c705a9931efb3aef09 Mon Sep 17 00:00:00 2001 From: Jeff Padgham Date: Sat, 9 Mar 2024 22:12:03 -0800 Subject: [PATCH] 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 * Updating names based on feedback --------- Co-authored-by: GinNoOokami --- .../rel/d/a/obj/d_a_obj_rock/d_a_obj_rock.h | 12 +++--- rel/d/a/obj/d_a_obj_rock/d_a_obj_rock.cpp | 39 ++++++++++--------- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/include/rel/d/a/obj/d_a_obj_rock/d_a_obj_rock.h b/include/rel/d/a/obj/d_a_obj_rock/d_a_obj_rock.h index 404d1dfc6ab..9ba20dbc83f 100644 --- a/include/rel/d/a/obj/d_a_obj_rock/d_a_obj_rock.h +++ b/include/rel/d/a/obj/d_a_obj_rock/d_a_obj_rock.h @@ -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 diff --git a/rel/d/a/obj/d_a_obj_rock/d_a_obj_rock.cpp b/rel/d/a/obj/d_a_obj_rock/d_a_obj_rock.cpp index 7bdffc0d79d..acdb16ee471 100644 --- a/rel/d/a/obj/d_a_obj_rock/d_a_obj_rock.cpp +++ b/rel/d/a/obj/d_a_obj_rock/d_a_obj_rock.cpp @@ -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); }