Skip to content

Commit 58a0ec1

Browse files
committed
flag2 cleanup
1 parent 2e0cda3 commit 58a0ec1

File tree

2 files changed

+51
-54
lines changed

2 files changed

+51
-54
lines changed

include/d/actor/d_a_obj_flag2.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ class FlagCloth_c : public J3DPacket {
5050
/* 0x73C */ f32 field_0x73c;
5151
/* 0x740 */ cXyz mNormalBacks[21];
5252
/* 0x740 */ cXyz mVecs[21];
53-
/* 0x938 */ cXyz* field_0x938;
54-
/* 0x93C */ Mtx field_0x93c;
53+
/* 0x938 */ cXyz* mpFlagPosition;
54+
/* 0x93C */ Mtx mModelMtx;
5555
/* 0x96C */ void* mpTexCoord;
5656
/* 0x970 */ f32 mSpringRate;
5757
/* 0x974 */ f32 mWindRate;
@@ -94,9 +94,9 @@ class daObjFlag2_c : public fopAc_ac_c {
9494
/* 0x06F4 */ u8 field_0x6f4[0x700 - 0x6f4];
9595
/* 0x0700 */ FlagCloth_c mFlagCloth;
9696
/* 0x1084 */ u8 field_0x1084[0x10a0 - 0x1084];
97-
/* 0x10A0 */ cXyz field_0x10a0;
98-
/* 0x10AC */ u8 field_0x10ac;
99-
/* 0x10AD */ char mFlagName[0x10c0 - 0x10ad];
97+
/* 0x10A0 */ cXyz mFlagPosition;
98+
/* 0x10AC */ bool mFlagValid;
99+
/* 0x10AD */ char mFlagName[16];
100100
};
101101

102102
STATIC_ASSERT(sizeof(daObjFlag2_c) == 0x10c0);

src/d/actor/d_a_obj_flag2.cpp

Lines changed: 46 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,13 @@ static Vec l_pennant_flag_pos[21] = {
6969

7070
/* 80BEC658-80BEC790 000078 0138+00 1/1 0/0 0/0 .text
7171
* initFlagPos__11FlagCloth_cFP4cXyzP10fopAc_ac_c */
72-
void FlagCloth_c::initFlagPos(cXyz* param_1, fopAc_ac_c* param_2) {
73-
field_0x938 = param_1;
74-
cXyz cStack_24;
72+
void FlagCloth_c::initFlagPos(cXyz* pFlagPos, fopAc_ac_c* i_actor) {
73+
mpFlagPosition = pFlagPos;
74+
cXyz direction;
7575
f32 power;
76-
dKyw_get_AllWind_vec(field_0x938, &cStack_24, &power);
77-
mDoMtx_stack_c::transS(*field_0x938);
78-
cMtx_copy(mDoMtx_stack_c::get(), field_0x93c);
76+
dKyw_get_AllWind_vec(mpFlagPosition, &direction, &power);
77+
mDoMtx_stack_c::transS(*mpFlagPosition);
78+
cMtx_copy(mDoMtx_stack_c::get(), mModelMtx);
7979
cXyz* pPos = getPos();
8080
for (int i = 0; i < 21; i++, pPos++) {
8181
pPos->set(l_pennant_flag_pos[i]);
@@ -91,7 +91,7 @@ void FlagCloth_c::initFlagPos(cXyz* param_1, fopAc_ac_c* param_2) {
9191
calcFlagNormal(pNormal, i);
9292
}
9393
calcFlagNormalBack();
94-
initCcSphere(param_2);
94+
initCcSphere(i_actor);
9595
}
9696

9797
/* 80BEE31C-80BEE3C4 0000FC 00A8+00 1/1 0/0 0/0 .data l_texCoord_64x64 */
@@ -134,27 +134,27 @@ cXyz FlagCloth_c::calcFlagFactor(cXyz* param_1, cXyz* param_2, cXyz* param_3, in
134134
16, -1, -1, 19, 13, 12, 17, -1, -1, 20, 14, 13, 18, -1, -1, 14, 19, -1, -1, -1, -1,
135135
};
136136

137-
cXyz cStack_58(0.0f, 0.0f, 0.0f);
137+
cXyz flagFactor(0.0f, 0.0f, 0.0f);
138138
if (param_4 == 15 || param_4 == 20) {
139139
return cXyz::Zero;
140140
}
141141

142-
int* piVar8 = rel_pos_idx_tbl + param_4 * 6;
143-
cStack_58 = param_2[param_4] * param_3->inprod(param_2[param_4]);
144-
cStack_58.y += mGravity;
145-
for (int i = 0; i < 6; i++, piVar8++) {
146-
if (*piVar8 == -1) {
142+
int* pRelPosIdx = rel_pos_idx_tbl + param_4 * 6;
143+
flagFactor = param_2[param_4] * param_3->inprod(param_2[param_4]);
144+
flagFactor.y += mGravity;
145+
for (int i = 0; i < 6; i++, pRelPosIdx++) {
146+
if (*pRelPosIdx == -1) {
147147
break;
148148
}
149149
f32 fVar1;
150-
if (*piVar8 == 0 || param_4 == 0 || abs(*piVar8 - param_4) > 1) {
150+
if (*pRelPosIdx == 0 || param_4 == 0 || abs(*pRelPosIdx - param_4) > 1) {
151151
fVar1 = 104.40307f;
152152
} else {
153153
fVar1 = 60.0f;
154154
}
155-
calcFlagFactorSub(param_1 + param_4, param_1 + *piVar8, &cStack_58, fVar1);
155+
calcFlagFactorSub(param_1 + param_4, param_1 + *pRelPosIdx, &flagFactor, fVar1);
156156
}
157-
return cStack_58;
157+
return flagFactor;
158158
}
159159

160160
/* 80BEC928-80BECAE0 000348 01B8+00 1/1 0/0 0/0 .text
@@ -169,7 +169,7 @@ void FlagCloth_c::calcFlagFactorSub(cXyz* param_1, cXyz* param_2, cXyz* param_3,
169169
}
170170

171171
/* 80BECAE0-80BECC34 000500 0154+00 2/2 0/0 0/0 .text calcFlagNormal__11FlagCloth_cFP4cXyzi */
172-
void FlagCloth_c::calcFlagNormal(cXyz* param_1, int param_2) {
172+
void FlagCloth_c::calcFlagNormal(cXyz* o_normal, int param_2) {
173173
static int rel_pos_idx_tbl[147] = {
174174
1, 2, -1, -1, -1, -1, -1, 3, 4, 2, 0, -1, -1, -1, 0, 1, 4, 5, -1, -1, -1,
175175
6, 7, 4, 1, -1, -1, -1, 1, 3, 7, 8, 5, 2, 1, 2, 4, 8, 9, -1, -1, -1,
@@ -196,7 +196,7 @@ void FlagCloth_c::calcFlagNormal(cXyz* param_1, int param_2) {
196196
cStack_60 += cStack_54;
197197
}
198198
cStack_60.normalizeZP();
199-
param_1->set(cStack_60);
199+
o_normal->set(cStack_60);
200200
}
201201

202202
/* 80BECC34-80BECC78 000654 0044+00 1/1 0/0 0/0 .text calcFlagNormalBack__11FlagCloth_cFv
@@ -210,7 +210,7 @@ inline void FlagCloth_c::calcFlagNormalBack() {
210210
}
211211

212212
/* 80BECC78-80BECCE4 000698 006C+00 1/1 0/0 0/0 .text initCcSphere__11FlagCloth_cFP10fopAc_ac_c */
213-
void FlagCloth_c::initCcSphere(fopAc_ac_c* param_1) {
213+
void FlagCloth_c::initCcSphere(fopAc_ac_c* i_actor) {
214214
const static dCcD_SrcSph ccSphSrc = {
215215
{
216216
{0x0, {{0x0, 0x0, 0x0}, {0x10000, 0x11}, 0x0}}, // mObj
@@ -223,7 +223,7 @@ void FlagCloth_c::initCcSphere(fopAc_ac_c* param_1) {
223223
} // mSphAttr
224224
};
225225

226-
mStts.Init(0xff, 0xff, param_1);
226+
mStts.Init(0xff, 0xff, i_actor);
227227
mSph.Set(ccSphSrc);
228228
mSph.SetStts(&mStts);
229229
mSph.SetC(getTargetPos());
@@ -247,18 +247,18 @@ void FlagCloth_c::setCcSphere() {
247247

248248
/* 80BECD98-80BECF30 0007B8 0198+00 1/1 0/0 0/0 .text execute__11FlagCloth_cFv */
249249
void FlagCloth_c::execute() {
250-
cXyz cStack_34;
250+
cXyz direction;
251251
f32 power;
252-
dKyw_get_AllWind_vec(field_0x938, &cStack_34, &power);
253-
cStack_34.normalizeZP();
254-
cStack_34 *= power * mWindRate;
252+
dKyw_get_AllWind_vec(mpFlagPosition, &direction, &power);
253+
direction.normalizeZP();
254+
direction *= power * mWindRate;
255255
cXyz* pPos = getPos();
256256
cXyz* pNormal = getNormal();
257257
cXyz* pNormal2 = pNormal;
258258
cXyz* pVec = getVec();
259259
cXyz cStack_40;
260260
for (int i = 0; i < 21; pVec++, i++) {
261-
cXyz cStack_40 = calcFlagFactor(pPos, pNormal, &cStack_34, i);
261+
cXyz cStack_40 = calcFlagFactor(pPos, pNormal, &direction, i);
262262
*pVec += cStack_40;
263263
*pVec *= mDecayRate;
264264
}
@@ -279,14 +279,13 @@ void FlagCloth_c::execute() {
279279
}
280280

281281
/* 80BECF30-80BED22C 000950 02FC+00 1/0 0/0 0/0 .text draw__11FlagCloth_cFv */
282-
// NONMATCHING - GXColor stack issue
283282
void FlagCloth_c::draw() {
284283
j3dSys.reinitGX();
285284
GXSetNumIndStages(0);
286285
dKy_setLight_again();
287286
dKy_GxFog_tevstr_set(&mTevStr);
288287
dKy_setLight_mine(&mTevStr);
289-
g_env_light.settingTevStruct(0x10, field_0x938, &mTevStr);
288+
g_env_light.settingTevStruct(0x10, mpFlagPosition, &mTevStr);
290289
GXClearVtxDesc();
291290
GXSetVtxDesc(GX_VA_POS, GX_INDEX8);
292291
GXSetVtxDesc(GX_VA_NRM, GX_INDEX8);
@@ -317,10 +316,10 @@ void FlagCloth_c::draw() {
317316
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV);
318317
GXSetTevKAlphaSel(GX_TEVSTAGE0, GX_TEV_KASEL_K3_A);
319318
GXSetAlphaCompare(GX_GREATER, 0, GX_AOP_OR, GX_GREATER, 0);
320-
Mtx auStack_40;
321-
cMtx_concat(j3dSys.getViewMtx(), field_0x93c, auStack_40);
322-
GXLoadPosMtxImm(auStack_40, 0);
323-
GXLoadNrmMtxImm(auStack_40, 0);
319+
Mtx viewModelMtx;
320+
cMtx_concat(j3dSys.getViewMtx(), mModelMtx, viewModelMtx);
321+
GXLoadPosMtxImm(viewModelMtx, 0);
322+
GXLoadNrmMtxImm(viewModelMtx, 0);
324323
GXSetClipMode(GX_CLIP_ENABLE);
325324
GXSetCullMode(GX_CULL_BACK);
326325
GXCallDisplayList(l_pennant_flagDL, 0x80);
@@ -332,14 +331,12 @@ void FlagCloth_c::draw() {
332331

333332
/* 80BED22C-80BED368 000C4C 013C+00 1/1 0/0 0/0 .text create_init__12daObjFlag2_cFv */
334333
void daObjFlag2_c::create_init() {
335-
int* puVar4 = (int*)dComIfG_getObjectRes(daSetBgObj_c::getArcName(this), "spec.dat");
336-
f32 dVar9 = (u16)*puVar4;
337-
field_0x10a0.set(current.pos.x, current.pos.y + dVar9, current.pos.z);
338-
fopAcM_setCullSizeBox(this, -600.0f, -dVar9, -600.0f,
339-
600.0f, 400.0f,
340-
600.0f);
334+
int* pOffset = (int*)dComIfG_getObjectRes(daSetBgObj_c::getArcName(this), "spec.dat");
335+
f32 offset = (u16)*pOffset;
336+
mFlagPosition.set(current.pos.x, current.pos.y + offset, current.pos.z);
337+
fopAcM_setCullSizeBox(this, -600.0f, -offset, -600.0f, 600.0f, 400.0f, 600.0f);
341338
eyePos.set(mFlagCloth.getTargetPos());
342-
mFlagCloth.initFlagPos(&field_0x10a0, this);
339+
mFlagCloth.initFlagPos(&mFlagPosition, this);
343340
mFlagCloth.setSpringRate(attr().mSpringCoeeficient);
344341
mFlagCloth.setWindRate(attr().mWindCoefficient);
345342
mFlagCloth.setDecayRate(attr().mDecayRate);
@@ -381,7 +378,7 @@ void daObjFlag2_c::initCollision() {
381378
mCyl.SetStts(&mStts);
382379
mCyl.SetC(current.pos);
383380
mCyl.SetR(15.0f);
384-
mCyl.SetH(field_0x10a0.y + 200.0f);
381+
mCyl.SetH(mFlagPosition.y + 200.0f);
385382
setCollision();
386383
}
387384

@@ -393,7 +390,7 @@ void daObjFlag2_c::setCollision() {
393390
/* 80BED480-80BED680 000EA0 0200+00 1/1 0/0 0/0 .text createHeap__12daObjFlag2_cFv */
394391
int daObjFlag2_c::createHeap() {
395392
s8 flagNum = (u8)shape_angle.x;
396-
if (field_0x10ac != 0) {
393+
if (mFlagValid) {
397394
char acStack_40[16];
398395
sprintf(acStack_40, "flag%02d.bti", flagNum);
399396
shape_angle.setall(0);
@@ -440,9 +437,9 @@ int daObjFlag2_c::create() {
440437
fopAcM_SetupActor(this, daObjFlag2_c);
441438
s8 flagNum = (u8)shape_angle.x;
442439
if (flagNum <= -1 || flagNum > 99) {
443-
field_0x10ac = 0;
440+
mFlagValid = false;
444441
} else {
445-
field_0x10ac = 1;
442+
mFlagValid = true;
446443
sprintf(mFlagName, "FlagObj%02d", flagNum);
447444
int rv = dComIfG_resLoad(&mFlagPhase, mFlagName);
448445
if (rv != cPhs_COMPLEATE_e) {
@@ -470,7 +467,7 @@ int daObjFlag2_c::draw() {
470467
dComIfGd_setListBG();
471468
g_env_light.setLightTevColorType_MAJI(mModel, &tevStr);
472469
mDoExt_modelUpdateDL(mModel);
473-
if (field_0x10ac != 0) {
470+
if (mFlagValid) {
474471
j3dSys.getDrawBuffer(0)->entryImm(&mFlagCloth, 0);
475472
}
476473
dComIfGd_setList();
@@ -484,7 +481,7 @@ static int daObjFlag2_Draw(daObjFlag2_c* i_this) {
484481
}
485482

486483
int daObjFlag2_c::execute() {
487-
if (field_0x10ac == 0) {
484+
if (!mFlagValid) {
488485
return 1;
489486
}
490487

@@ -496,12 +493,12 @@ int daObjFlag2_c::execute() {
496493
mFlagCloth.setTornado(attr().mTornado);
497494
#endif
498495

499-
cXyz cStack_24;
496+
cXyz direction;
500497
f32 power;
501-
dKyw_get_AllWind_vec(&field_0x10a0, &cStack_24, &power);
498+
dKyw_get_AllWind_vec(&mFlagPosition, &direction, &power);
502499
if (power > 0.0f) {
503-
Z2GetAudioMgr()->seStartLevel(Z2SE_OBJ_FLAG_TRAILING, &field_0x10a0, power * 127.0f, 0,
504-
1.0f, 1.0f, -1.0f, -1.0f, 0);
500+
Z2GetAudioMgr()->seStartLevel(Z2SE_OBJ_FLAG_TRAILING, &mFlagPosition, power * 127.0f, 0,
501+
1.0f, 1.0f, -1.0f, -1.0f, 0);
505502
}
506503
mFlagCloth.execute();
507504
eyePos = mFlagCloth.getTargetPos();
@@ -533,7 +530,7 @@ daObjFlag2_c::~daObjFlag2_c() {
533530
M_hio.dt();
534531
#endif
535532

536-
if (field_0x10ac != 0) {
533+
if (mFlagValid) {
537534
dComIfG_resDelete(&mFlagPhase, mFlagName);
538535
}
539536
dComIfG_resDelete(&mArcPhase, daSetBgObj_c::getArcName(this));

0 commit comments

Comments
 (0)