summaryrefslogtreecommitdiff
path: root/src/d/actor/d_a_obj_brg.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/d/actor/d_a_obj_brg.cpp')
-rw-r--r--src/d/actor/d_a_obj_brg.cpp672
1 files changed, 241 insertions, 431 deletions
diff --git a/src/d/actor/d_a_obj_brg.cpp b/src/d/actor/d_a_obj_brg.cpp
index f47dcb84f0..6b0cd65a06 100644
--- a/src/d/actor/d_a_obj_brg.cpp
+++ b/src/d/actor/d_a_obj_brg.cpp
@@ -105,9 +105,9 @@ static int daObj_Brg_Draw(obj_brg_class* i_this) {
br_s* br_p = i_this->mBr;
+ f32 var_f32, var_f31, var_f30, var_f29, var_f28;
for (int i = 0; i < i_this->field_0xb1ea; i++, br_p++) {
g_env_light.setLightTevColorType_MAJI(br_p->mpBridgeModel, &a_this->tevStr);
-
dComIfGd_setListBG();
mDoExt_modelUpdateDL(br_p->mpBridgeModel);
dComIfGd_setList();
@@ -135,8 +135,8 @@ static int daObj_Brg_Draw(obj_brg_class* i_this) {
sp8C = br_p->field_0x074[0] - br_p->field_0x074[1];
sp98 = br_p->field_0x050[0] - br_p->field_0x050[1];
+ cXyz *spF4, *spF8;
if (!(i_this->mType & 1)) {
- f32 var_f30;
if (i_this->mType & 8) {
var_f30 = 5.0f;
} else {
@@ -154,17 +154,16 @@ static int daObj_Brg_Draw(obj_brg_class* i_this) {
sp100++;
}
} else {
- cXyz* spF4 = br_p->field_0x014.getPos(0);
- cXyz* spF8 = br_p->field_0x014.getPos(2);
+ spF4 = br_p->field_0x014.getPos(0);
+ spF8 = br_p->field_0x014.getPos(2);
sp8C.x *= 0.25f;
sp8C.y *= 0.25f;
sp8C.z *= 0.25f;
- f32 var_f29 = br_p->field_0x0fe[0] * cM_ssin(i_this->field_0xaf1e * 5);
+ var_f29 = br_p->field_0x0fe[0] * cM_ssin(i_this->field_0xaf1e * 5);
for (int j = 0; j < 5; j++) {
*spFC = var_f30;
- f32 var_f31;
if (j == 2) {
var_f31 = 1.0f;
@@ -207,17 +206,16 @@ static int daObj_Brg_Draw(obj_brg_class* i_this) {
sp100++;
}
} else {
- cXyz* spF4 = br_p->field_0x014.getPos(1);
- cXyz* spF8 = br_p->field_0x014.getPos(3);
+ spF4 = br_p->field_0x014.getPos(1);
+ spF8 = br_p->field_0x014.getPos(3);
sp98.x *= 0.25f;
sp98.y *= 0.25f;
sp98.z *= 0.25f;
- f32 var_f29 = br_p->field_0x0fe[1] * cM_ssin(i_this->field_0xaf1e * 5);
+ var_f29 = br_p->field_0x0fe[1] * cM_ssin(i_this->field_0xaf1e * 5);
for (int j = 0; j < 5; j++) {
*spFC = var_f30;
- f32 var_f31;
if (j == 2) {
var_f31 = 1.0f;
@@ -338,7 +336,6 @@ static int daObj_Brg_Draw(obj_brg_class* i_this) {
sp114->y = i_this->mEndPos.y + spB0.y;
sp114->z = i_this->mEndPos.z + spB0.z;
- f32 var_f28;
if (i_this->mType & 8) {
var_f28 = 10.0f;
} else if (i_this->field_0xb1ed == 1) {
@@ -357,97 +354,7 @@ static int daObj_Brg_Draw(obj_brg_class* i_this) {
return 1;
}
-/* 80BC24E8-80BC24EC 000008 0001+03 1/1 0/0 0/0 .bss @1109 */
-static u8 lit_1109[1 + 3 /* padding */];
-
-/* 80BC24EC-80BC24F0 00000C 0001+03 0/0 0/0 0/0 .bss @1107 */
-#pragma push
-#pragma force_active on
-static u8 lit_1107[1 + 3 /* padding */];
-#pragma pop
-
-/* 80BC24F0-80BC24F4 000010 0001+03 0/0 0/0 0/0 .bss @1105 */
-#pragma push
-#pragma force_active on
-static u8 lit_1105[1 + 3 /* padding */];
-#pragma pop
-
-/* 80BC24F4-80BC24F8 000014 0001+03 0/0 0/0 0/0 .bss @1104 */
-#pragma push
-#pragma force_active on
-static u8 lit_1104[1 + 3 /* padding */];
-#pragma pop
-
-/* 80BC24F8-80BC24FC 000018 0001+03 0/0 0/0 0/0 .bss @1099 */
-#pragma push
-#pragma force_active on
-static u8 lit_1099[1 + 3 /* padding */];
-#pragma pop
-
-/* 80BC24FC-80BC2500 00001C 0001+03 0/0 0/0 0/0 .bss @1097 */
-#pragma push
-#pragma force_active on
-static u8 lit_1097[1 + 3 /* padding */];
-#pragma pop
-
-/* 80BC2500-80BC2504 000020 0001+03 0/0 0/0 0/0 .bss @1095 */
-#pragma push
-#pragma force_active on
-static u8 lit_1095[1 + 3 /* padding */];
-#pragma pop
-
-/* 80BC2504-80BC2508 000024 0001+03 0/0 0/0 0/0 .bss @1094 */
-#pragma push
-#pragma force_active on
-static u8 lit_1094[1 + 3 /* padding */];
-#pragma pop
-
-/* 80BC2508-80BC250C 000028 0001+03 0/0 0/0 0/0 .bss @1057 */
-#pragma push
-#pragma force_active on
-static u8 lit_1057[1 + 3 /* padding */];
-#pragma pop
-
-/* 80BC250C-80BC2510 00002C 0001+03 0/0 0/0 0/0 .bss @1055 */
-#pragma push
-#pragma force_active on
-static u8 lit_1055[1 + 3 /* padding */];
-#pragma pop
-
-/* 80BC2510-80BC2514 000030 0001+03 0/0 0/0 0/0 .bss @1053 */
-#pragma push
-#pragma force_active on
-static u8 lit_1053[1 + 3 /* padding */];
-#pragma pop
-
-/* 80BC2514-80BC2518 000034 0001+03 0/0 0/0 0/0 .bss @1052 */
-#pragma push
-#pragma force_active on
-static u8 lit_1052[1 + 3 /* padding */];
-#pragma pop
-
-/* 80BC2518-80BC251C 000038 0001+03 0/0 0/0 0/0 .bss @1014 */
-#pragma push
-#pragma force_active on
-static u8 lit_1014[1 + 3 /* padding */];
-#pragma pop
-
-/* 80BC251C-80BC2520 00003C 0001+03 0/0 0/0 0/0 .bss @1012 */
-#pragma push
-#pragma force_active on
-static u8 lit_1012[1 + 3 /* padding */];
-#pragma pop
-
-/* 80BC2520-80BC2524 000040 0001+03 0/0 0/0 0/0 .bss @1010 */
-#pragma push
-#pragma force_active on
-static u8 lit_1010[1 + 3 /* padding */];
-#pragma pop
-
-/* 80BC2524-80BC2528 -00001 0004+00 5/5 0/0 0/0 .bss None */
-/* 80BC2524 0001+01 data_80BC2524 @1009 */
-
-static u8 struct_80BC2524[2];
+UNK_REL_BSS;
/* 80BC2526 0002+00 data_80BC2526 wy */
static s16 wy;
@@ -530,15 +437,16 @@ static void control2(obj_brg_class* i_this, br_s* i_part) {
sp68.y = 0.0f;
sp68.z = i_this->field_0xaedc * 50.0f;
- for (int i = 0; i < i_this->field_0xb1ea - 1; i++, i_part--) {
- f32 var_f28 = (i_part->field_0x0e8 * 0.5f) + (((i_part->field_0x0ec * i_part->field_0x0e0) * 0.5f) + i_part->field_0x0b0.y);
- f32 var_f29 = var_f28 - i_part[1].field_0x0b0.y;
- f32 var_f31 = i_part->field_0x0b0.x - i_part[1].field_0x0b0.x;
- f32 var_f30 = i_part->field_0x0b0.z - i_part[1].field_0x0b0.z;
+ f32 x_var, atan_lhs, y_var, var_f28;
+ for (int i = 0; i < i_this->field_0xb1ea - 1; ++i, i_part--) {
+ var_f28 = (i_part->field_0x0e8 * 0.5f) + (i_part->field_0x0ec * i_part->field_0x0e0 * 0.5f + i_part->field_0x0b0.y);
+ atan_lhs = var_f28 - i_part[1].field_0x0b0.y;
+ x_var = i_part->field_0x0b0.x - i_part[1].field_0x0b0.x;
+ y_var = i_part->field_0x0b0.z - i_part[1].field_0x0b0.z;
s16 spC6, spC8;
- spC8 = (s16)cM_atan2s(var_f31, var_f30);
- spC6 = -cM_atan2s(var_f29, JMAFastSqrt(var_f31 * var_f31 + var_f30 * var_f30));
+ spC8 = (s16)cM_atan2s(x_var, y_var);
+ spC6 = -cM_atan2s(atan_lhs, JMAFastSqrt(x_var * x_var + y_var * y_var));
i_part[1].field_0x0d4.y = spC8;
i_part[1].field_0x0d4.x = spC6;
@@ -566,15 +474,15 @@ static void control3(obj_brg_class* i_this, br_s* i_part) {
/* 80BBDCE8-80BBE008 0014C8 0320+00 1/1 0/0 0/0 .text cut_control1__FP13obj_brg_classP4br_s */
static void cut_control1(obj_brg_class* i_this, br_s* i_part) {
+ fopAc_ac_c* a_this = i_this;
cXyz sp7C;
cXyz sp88;
- i_part++;
+ ++i_part;
cXyz sp94;
cMtx_YrotS(*calc_mtx, i_this->home.angle.y);
-
sp7C.x = 0.0f;
sp7C.y = 0.0f;
sp7C.z = 1.0f;
@@ -582,38 +490,40 @@ static void cut_control1(obj_brg_class* i_this, br_s* i_part) {
cXyz spA0(0.0f, 0.0f, 0.0f);
- if (fopAcM_GetRoomNo(i_this) == 4 && !dComIfGp_event_runCheck()) {
+ if (fopAcM_GetRoomNo(a_this) == 4 && !dComIfGp_event_runCheck()) {
cMtx_YrotS(*calc_mtx, wy);
sp7C.x = 0.0f;
sp7C.y = 0.0f;
- sp7C.z = i_this->field_0xaf30 * ((cM_ssin(i_this->field_0xaf1e) * 0.1f) + (TREG_F(7) + 0.05f));
+ sp7C.z = i_this->field_0xaf30 * ((cM_ssin((s16) i_this->field_0xaf1e) * 0.1f) + (TREG_F(7) + 0.05f));
MtxPosition(&sp7C, &spA0);
- i_this->field_0xaef4 = i_this->field_0xaf30 * 3000.0f;
+ i_this->field_0xaef4 = (3000.0f + TREG_F(15)) * i_this->field_0xaf30;
}
sp7C.z = i_this->field_0xaedc * 50.0f;
+ f32 var_f31, var_f30, var_f29, var_f28;
for (int i = 1; i < i_this->field_0xaed0; i++, i_part++) {
- f32 var_f29 = i_part->field_0x0b0.y + i_part->field_0x0ec;
+ var_f29 = i_part->field_0x0b0.y + i_part->field_0x0ec;
if (var_f29 < i_part->field_0x0dc + 30.0f) {
var_f29 = i_part->field_0x0dc + 30.0f;
i_part->field_0x707++;
}
- f32 var_f28 = var_f29 - i_part[-1].field_0x0b0.y;
- f32 var_f31 = (sp94.x + (i_part->field_0x0b0.x - i_part[-1].field_0x0b0.x)) + (spA0.x * (f32)(i - 1));
- f32 var_f30 = (sp94.z + (i_part->field_0x0b0.z - i_part[-1].field_0x0b0.z)) + (spA0.z * (f32)(i - 1));
+ var_f28 = var_f29 - i_part[-1].field_0x0b0.y;
+ var_f31 = (sp94.x + (i_part->field_0x0b0.x - i_part[-1].field_0x0b0.x)) + (spA0.x * (f32)(i - 1));
+ var_f30 = (sp94.z + (i_part->field_0x0b0.z - i_part[-1].field_0x0b0.z)) + (spA0.z * (f32)(i - 1));
- s16 var_r26 = (s16)cM_atan2s(var_f31, var_f30);
- s16 var_r27 = -cM_atan2s(var_f28, JMAFastSqrt(var_f31 * var_f31 + var_f30 * var_f30));
+ s16 var_r27, var_r26;
+ var_r26 = (s16)cM_atan2s(var_f31, var_f30);
+ var_r27 = -cM_atan2s(var_f28, JMAFastSqrt(var_f31 * var_f31 + var_f30 * var_f30));
i_part[-1].field_0x0d4.y = var_r26 + 0x8000;
i_part[-1].field_0x0d4.x = -var_r27;
if (i == i_this->field_0xaed0 - 1) {
i_part->field_0x0d4.y = var_r26 + 0x8000;
- i_part->field_0x0d4.x = var_r27;
+ i_part->field_0x0d4.x = -var_r27;
}
cMtx_YrotS(*calc_mtx, var_r26);
@@ -639,7 +549,7 @@ static void cut_control2(obj_brg_class* i_this, br_s* i_part) {
sp7C.x = 0.0f;
sp7C.y = 0.0f;
- sp7C.z = 1.0f;
+ sp7C.z = -1.0f;
MtxPosition(&sp7C, &sp94);
cXyz spA0(0.0f, 0.0f, 0.0f);
@@ -693,10 +603,10 @@ static void himo_cut_control1(obj_brg_class* i_this, cXyz* param_1, f32 param_2)
cXyz sp74;
cXyz sp80;
cXyz sp8C;
-
+
sp74.x = 0.0f;
sp74.y = 0.0f;
- sp74.z = i_this->field_0xaf30 * 3.0f;
+ sp74.z = i_this->field_0xaf30 * (3.0f + NREG_F(7));
cMtx_YrotS(*calc_mtx, wy);
MtxPosition(&sp74, &sp8C);
@@ -704,27 +614,29 @@ static void himo_cut_control1(obj_brg_class* i_this, cXyz* param_1, f32 param_2)
sp74.y = 0.0f;
sp74.z = param_2;
- cXyz* var_r28 = param_1 + 1;
- cXyz* temp_r27 = var_r28;
-
- for (int i = 1; i < 5; i++, var_r28++) {
- f32 var_f28 = (i_this->field_0xaf30 * cM_ssin((i_this->field_0xaf20 * 6000) + ((NREG_S(3) - 10000) * ((int)temp_r27 + i))) ) * (NREG_F(11) + 7.0f);
- f32 var_f27 = (i_this->field_0xaf30 * cM_ssin((i_this->field_0xaf20 * 6000) + ((NREG_S(4) - 12000) * ((int)temp_r27 + i))) ) * (NREG_F(11) + 7.0f);
+ int i, temp_r27 = (int) ++param_1;
+ f32 var_f31, var_f30, var_f29, var_f28, var_f27;
+ for (i = 1; i < 5; i++, param_1++) {
+ var_f28 = i_this->field_0xaf30 * cM_ssin( (i_this->field_0xaf20 * 6000) + (NREG_S(3) - 10000) * (temp_r27 + i) )
+ * (NREG_F(11) + 7.0f);
+ var_f27 = i_this->field_0xaf30 * cM_ssin( (i_this->field_0xaf20 * 6000) + (NREG_S(4) - 12000) * (temp_r27 + i) )
+ * (NREG_F(11) + 7.0f);
- f32 var_f31 = var_f28 + (sp8C.x + (var_r28->x - var_r28[-1].x));
- f32 var_f29 = (var_r28->y - var_r28[-1].y) - 10.0f;
- f32 var_f30 = var_f27 + (sp8C.z + (var_r28->z - var_r28[-1].z));
+ var_f31 = var_f28 + (sp8C.x + (param_1->x - param_1[-1].x));
+ var_f29 = (param_1->y - param_1[-1].y) - 10.0f;
+ var_f30 = var_f27 + (sp8C.z + (param_1->z - param_1[-1].z));
- s16 sp94 = (s16)cM_atan2s(var_f31, var_f30);
- s16 sp92 = -cM_atan2s(var_f29, JMAFastSqrt(var_f31 * var_f31 + var_f30 * var_f30));
+ s16 sp92, sp94;
+ sp94 = (s16)cM_atan2s(var_f31, var_f30);
+ sp92 = -cM_atan2s(var_f29, JMAFastSqrt(var_f31 * var_f31 + var_f30 * var_f30));
cMtx_YrotS(*calc_mtx, sp94);
cMtx_XrotM(*calc_mtx, sp92);
MtxPosition(&sp74, &sp80);
- var_r28->x = var_r28[-1].x + sp80.x;
- var_r28->y = var_r28[-1].y + sp80.y;
- var_r28->z = var_r28[-1].z + sp80.z;
+ param_1->x = param_1[-1].x + sp80.x;
+ param_1->y = param_1[-1].y + sp80.y;
+ param_1->z = param_1[-1].z + sp80.z;
}
}
@@ -747,51 +659,54 @@ static f32 ita_z_p[] = {
static void obj_brg_move(obj_brg_class* i_this) {
fopAc_ac_c* a_this = (fopAc_ac_c*)i_this;
fopAc_ac_c* player = dComIfGp_getPlayer(0);
+ daPy_py_c* ply_p = (daPy_py_c*) player;
cXyz spD0;
cXyz spDC;
cXyz spE8;
br_s* part = i_this->mBr;
+ s16 my_tgt;
+ int i, j;
+ f32 var_f31, var_f30, var_f29, var_f28, var_f27, var_f26, var_f25;
switch (i_this->field_0xaf1c) {
case 0:
i_this->field_0xb1e9 = 0;
i_this->field_0xaf1c = 2;
/* fallthrough */
case 2:
- for (int i = 0; i < i_this->field_0xb1ea; i++) {
+ for (i = 0; i < i_this->field_0xb1ea; i++) {
if ((i_this->mType & 1) == 1) {
i_this->mBr[i].field_0x0e0 = 1.0f;
} else {
- i_this->mBr[i].field_0x0e0 = fabsf(sinf((i / (i_this->field_0xb1ea - 1)) * M_PI));
+ var_f27 = ( f32(i) / (i_this->field_0xb1ea - 1)) * M_PI;
+ i_this->mBr[i].field_0x0e0 = fabsf(sin(var_f27));
}
- i_this->mBr[i].field_0x705 = 3;
- i_this->mBr[i].field_0x704 = 3;
+ i_this->mBr[i].field_0x704 = i_this->mBr[i].field_0x705 = 3;
}
i_this->field_0xaf1c = 3;
/* fallthrough */
- case 3:
- i_this->field_0xaf1e += 3000;
+ case 3: {
+ i_this->field_0xaf1e += (s16) 3000;
part->field_0x0b0 = a_this->home.pos;
if ((i_this->mType & 1) == 1) {
cMtx_YrotS(*calc_mtx, i_this->home.angle.y);
- spD0.x = (i_this->field_0xaeec * cM_scos(i_this->field_0xaf22)) * -2.0f;
- spD0.y = 0.0f;
- spD0.z = 0.0f;
+ spD0.x = (i_this->field_0xaeec * cM_scos((s16) i_this->field_0xaf22)) * -2.0f;
+ spD0.y = spD0.z = 0.0f;
MtxPosition(&spD0, &spDC);
part->field_0x0b0 += spDC;
}
control1(i_this, part);
- part[i_this->field_0xb1ea - 1].field_0x0b0 = i_this->mEndPos;
+ (*(part + i_this->field_0xb1ea - 1)).field_0x0b0 = i_this->mEndPos;
if ((i_this->mType & 1) == 1) {
- part[i_this->field_0xb1ea - 1].field_0x0b0 -= spDC;
+ (*(part + i_this->field_0xb1ea - 1)).field_0x0b0 -= spDC;
}
control2(i_this, part);
@@ -801,26 +716,27 @@ static void obj_brg_move(obj_brg_class* i_this) {
a_this->current.pos = part->field_0x0b0;
a_this->current.angle = part->field_0x0d4;
- for (int i = 0; i < i_this->field_0xb1ea; i++, part++) {
+ for (i = 0; i < i_this->field_0xb1ea; i++, part++) {
part->field_0x0bc = part->field_0x0b0;
- f32 var_f30 = ((f32)(i_this->field_0xb1ea - i) / (f32)i_this->field_0xb1ea) * 0.75f;
+ var_f30 = ((f32)(i_this->field_0xb1ea - i) / (f32)i_this->field_0xb1ea) * 0.75f;
part->field_0x0bc.x += spE8.x * var_f30;
part->field_0x0bc.y += spE8.y * var_f30;
part->field_0x0bc.z += spE8.z * var_f30;
if (part->field_0x706) {
- for (int j = -5; j < 6; j++) {
- if (i + j > -1 && i + j < i_this->field_0xb1ea) {
- cLib_addCalcAngleS2(&part[j].field_0x0f4, (f32)part->field_0x0f2 * ita_z_p[j + 5] * part[j].field_0x0e0, 4, 0x800);
+ for (j = -5; j <= 5; j++) {
+ if (i + j >= 0 && i + j < i_this->field_0xb1ea) {
+ my_tgt = (f32)part->field_0x0f2 * ita_z_p[j + 5] * part[j].field_0x0e0;
+ cLib_addCalcAngleS2(&part[j].field_0x0f4, my_tgt, 4, 0x800);
cLib_addCalc2(&part[j].field_0x0e8, part->field_0x0e4 * ita_z_p[j + 5], 1.0f, 10.0f);
}
}
}
if (part->field_0x708 & 4 && (part->field_0x708 & 3) != 3) {
- f32 var_f31 = 0.0f;
- f32 var_f29 = -80.0f;
+ var_f31 = 0.0f;
+ var_f29 = -80.0f;
if ((part->field_0x708 & 3) == 1) {
var_f31 = 7000.0f;
@@ -830,13 +746,16 @@ static void obj_brg_move(obj_brg_class* i_this) {
var_f29 = -30.0f;
}
- for (int j = -5; j < 6; j++) {
- if (i + j > -1 && i + j < i_this->field_0xb1ea) {
- cLib_addCalcAngleS2(&part[j].field_0x0f6, var_f31 * ita_z_p[j + 5] * part[j].field_0x0e0, 4, 0x800);
- cLib_addCalc2(&part[j].field_0x0e8, var_f29 * ita_z_p[j + 5], 1.0f, 15.0f);
+ for (j = -5; j <= 5; j++) {
+ if (i + j < 0 || i + j >= i_this->field_0xb1ea) {
+ continue;
}
- if ((part->field_0x708 & 3) == 0 && (i_this->mType & 4) == 0 && j > -3 && j < 3 && part[j].field_0x706 != 0) {
+ my_tgt = var_f31 * ita_z_p[j + 5] * part[j].field_0x0e0;
+ cLib_addCalcAngleS2(&part[j].field_0x0f6, my_tgt, 4, 0x800);
+ cLib_addCalc2(&part[j].field_0x0e8, var_f29 * ita_z_p[j + 5], 1.0f, 15.0f);
+
+ if ((part->field_0x708 & 3) == 0 && (i_this->mType & 4) == 0 && j >= -2 && j <= 2 && part[j].field_0x706 != 0) {
if (dComIfGp_event_runCheck()) {
i_this->field_0xaed4 = 0;
} else {
@@ -863,12 +782,12 @@ static void obj_brg_move(obj_brg_class* i_this) {
}
if ((part->field_0x708 & 4) != 0 && (part->field_0x0fe[0] != 0 || part->field_0x0fe[1] != 0)) {
- f32 var_f26 = (f32)(part->field_0x0fe[0] | part->field_0x0fe[1]) * 150.0f;
- f32 var_f31 = var_f26 * cM_ssin(i_this->field_0xaf26 * 4);
-
- for (int j = -5; j < 6; j++) {
- if (i + j > -1 && i + j < i_this->field_0xb1ea) {
- part[j].field_0x0f6 += (var_f31 * ita_z_p[j + 5]) * part[j].field_0x0e0;
+ var_f26 = (f32)(part->field_0x0fe[0] | part->field_0x0fe[1]) * 150.0f;
+ var_f31 = var_f26 * cM_ssin(i_this->field_0xaf1e * 4);
+ for (j = -5; j <= 5; j++) {
+ if (i + j >= 0 && i + j < i_this->field_0xb1ea) {
+ my_tgt = var_f31 * ita_z_p[j + 5] * part[j].field_0x0e0;
+ part[j].field_0x0f6 += my_tgt;
}
}
}
@@ -878,7 +797,7 @@ static void obj_brg_move(obj_brg_class* i_this) {
}
part->field_0x0f2 = 0;
- part->field_0x0d4.y = part->field_0x0f4 + part->field_0x0f6;
+ part->field_0x0d4.z = part->field_0x0f4 + part->field_0x0f6;
s16 sp138 = 0;
if (i_this->field_0xb1ec) {
@@ -907,12 +826,13 @@ static void obj_brg_move(obj_brg_class* i_this) {
i_this->field_0xaf28 = 3000;
i_this->field_0xaf26 = 1400;
- f32 var_f28 = i_this->field_0xaf30 * 3.0f;
+ var_f28 = i_this->field_0xaf30 * 3.0f;
cLib_addCalc2(&i_this->field_0xaee0, var_f28, 0.1f, 0.1f);
cLib_addCalc2(&i_this->field_0xaee4, var_f28 * 0.3f, 0.1f, 0.05f);
break;
+ }
case 4:
- for (int i = 0; i < i_this->field_0xb1ea; i++, part++) {
+ for (i = 0; i < i_this->field_0xb1ea; i++, part++) {
part->field_0x0ec = 0.0f;
}
@@ -923,48 +843,51 @@ static void obj_brg_move(obj_brg_class* i_this) {
mDoAud_seStart(JA_SE_OBJ_BREAK_WOOD_L, NULL, 0, 0);
if (fopAcM_GetRoomNo(a_this) != 4) {
- int sw = fopAcM_GetParam(a_this) >> 0x18;
+ int sw = (fopAcM_GetParam(a_this) & 0xFF000000) >> 0x18;
if (sw != 0xFF) {
dComIfGs_onSwitch(sw, fopAcM_GetRoomNo(a_this));
}
}
/* fallthrough */
case 5:
- br_s* var_r24 = i_this->mBr;
+ part = i_this->mBr;
if (i_this->field_0xaf2c != 0) {
i_this->field_0xaf2c--;
}
i_this->field_0xaf1e += 4000;
- var_r24->field_0x0b0 = a_this->home.pos;
+ part->field_0x0b0 = a_this->home.pos;
- cut_control1(i_this, var_r24);
- var_r24[i_this->field_0xb1ea - 1].field_0x0b0 = i_this->mEndPos;
- cut_control2(i_this, var_r24);
+ cut_control1(i_this, part);
+ (*(part + i_this->field_0xb1ea - 1)).field_0x0b0 = i_this->mEndPos;
+ cut_control2(i_this, part);
if (i_this->field_0xb1ed) {
- u32 sp11C = (u32)(i_this->field_0xaf30 * 110.0f) - 10;
- if (sp11C > 0x7F) {
- sp11C = 0x7F;
+ var_f25 = i_this->field_0xaf30;
+ u32 dbg_0x24 = var_f25 * 110.0f;
+ dbg_0x24 -= 10;
+ if (dbg_0x24 > 0x7F) {
+ dbg_0x24 = 0x7F;
}
- Z2GetAudioMgr()->seStartLevel(Z2SE_OBJ_BROKENBRIDGE, &a_this->home.pos, sp11C, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
- Z2GetAudioMgr()->seStartLevel(Z2SE_OBJ_BROKENBRIDGE, &i_this->mEndPos, sp11C, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
+ Z2GetAudioMgr()->seStartLevel(Z2SE_OBJ_BROKENBRIDGE, &a_this->home.pos, dbg_0x24, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
+ Z2GetAudioMgr()->seStartLevel(Z2SE_OBJ_BROKENBRIDGE, &i_this->mEndPos, dbg_0x24, 0, 1.0f, 1.0f, -1.0f, -1.0f, 0);
}
- for (int i = 0; i < i_this->field_0xb1ea; i++, var_r24++) {
- var_r24->field_0x0bc = var_r24->field_0x0b0;
- cLib_addCalc2(&var_r24->field_0x0ec, -50.0f, 1.0f, 5.0f);
- var_r24->field_0x0dc = -10000.0f;
+ for (i = 0; i < i_this->field_0xb1ea; i++, part++) {
+ part->field_0x0bc = part->field_0x0b0;
+ cLib_addCalc2(&part->field_0x0ec, -50.0f, 1.0f, 5.0f);
+ part->field_0x0dc = -10000.0f;
- if (i_this->field_0xb1f1 == 0 || (i < i_this->field_0xaed0 && i_this->field_0xb1f1 == 2) || (i >= i_this->field_0xaed0 && i_this->field_0xb1f1 == 1)) {
- cLib_addCalcAngleS2(&var_r24->field_0x0d4.z, i_this->field_0xaef4 * cM_ssin(i_this->field_0xaf2e + (i * 10000)), 4, 0x800);
+ if (i_this->field_0xb1f1 == 0 || (i < i_this->field_0xaed0 && i_this->field_0xb1f1 == 2)
+ || (i >= i_this->field_0xaed0 && i_this->field_0xb1f1 == 1)) {
+ cLib_addCalcAngleS2(&part->field_0x0d4.z, i_this->field_0xaef4 * cM_ssin(i_this->field_0xaf2e + (i * 10000)), 4, 0x800);
}
}
cLib_addCalc0(&i_this->field_0xaef4, 0.05f, 80.0f);
- i_this->field_0xaf2e += 4500;
+ i_this->field_0xaf2e += (s16) 4500;
if (i_this->field_0xb1ec) {
spDC = i_this->mEndPos;
@@ -975,23 +898,23 @@ static void obj_brg_move(obj_brg_class* i_this) {
spDC.y = 3200.0f;
i_this->mCyl[1].SetC(spDC);
- for (int i = 0; i < 2; i++) {
- i_this->mCyl[i].SetR(60.0f);
- dComIfG_Ccsp()->Set(&i_this->mCyl[i]);
+ for (int idx = 0; idx < 2; idx++) {
+ i_this->mCyl[idx].SetR(60.0f);
+ dComIfG_Ccsp()->Set(&i_this->mCyl[idx]);
- if (i_this->field_0xb1f2[i] != 0) {
- i_this->field_0xb1f2[i]--;
+ if (i_this->field_0xb1f2[idx] != 0) {
+ i_this->field_0xb1f2[idx]--;
}
- if (i_this->field_0xb1f2[i] == 0 && i_this->mCyl[i].ChkTgHit()) {
- i_this->field_0xb1f2[i] = 10;
- i_this->field_0xb1f1 = i + 1;
+ if (i_this->field_0xb1f2[idx] == 0 && i_this->mCyl[idx].ChkTgHit()) {
+ i_this->field_0xb1f2[idx] = 10;
+ i_this->field_0xb1f1 = idx + 1;
dCcU_AtInfo spC4;
- spC4.mpCollider = i_this->mCyl[i].GetTgHitObj();
+ spC4.mpCollider = i_this->mCyl[idx].GetTgHitObj();
at_power_check(&spC4);
- if (spC4.mAttackPower > 3) {
+ if (spC4.mAttackPower >= 3) {
i_this->field_0xaef4 = 3000.0f;
} else {
i_this->field_0xaef4 = 1600.0f;
@@ -1005,14 +928,15 @@ static void obj_brg_move(obj_brg_class* i_this) {
/* 80BBF21C-80BC0834 0029FC 1618+00 2/1 0/0 0/0 .text daObj_Brg_Execute__FP13obj_brg_class */
static int daObj_Brg_Execute(obj_brg_class* i_this) {
fopAc_ac_c* a_this = (fopAc_ac_c*)i_this;
- daPy_py_c* player = (daPy_py_c*)dComIfGp_getPlayer(0);
+ fopAc_ac_c* ply = dComIfGp_getPlayer(0);
+ daPy_py_c* player = (daPy_py_c*) ply;
cXyz spC4;
cXyz spD0;
cXyz spDC;
cXyz spE8;
- camera_class* camera = dComIfGp_getCamera(0);
+ camera_class* camera = (camera_class*) dComIfGp_getCamera(0);
spC4 = a_this->current.pos - camera->lookat.eye;
if (i_this->field_0xb1ef != 0) {
@@ -1031,7 +955,8 @@ static int daObj_Brg_Execute(obj_brg_class* i_this) {
if (spC4.abs() > sp1BC) {
spD0 = camera->lookat.center - camera->lookat.eye;
- cMtx_YrotS(*calc_mtx, -cM_atan2s(spD0.x, spD0.z));
+ s16 atan_res = cM_atan2s(spD0.x, spD0.z);
+ cMtx_YrotS(*calc_mtx, -atan_res);
MtxPosition(&spC4, &spD0);
if (spD0.z < 0.0f) {
@@ -1041,7 +966,6 @@ static int daObj_Brg_Execute(obj_brg_class* i_this) {
}
i_this->field_0xb1f0 = 0;
-
cXyz spF4;
cXyz sp100 = a_this->current.pos + ((i_this->mEndPos - a_this->current.pos) * 0.5f);
@@ -1062,30 +986,34 @@ static int daObj_Brg_Execute(obj_brg_class* i_this) {
i_this->field_0xaed8 = 0;
br_s* part = i_this->mBr;
-
cXyz sp10C;
bool var_r25 = 0;
if (player->getBokoFlamePos(&sp10C)) {
var_r25 = 1;
}
- f32 var_f26 = 0.0f;
- f32 var_f29;
+ f32 var_f31, var_f30, var_f29, var_f28, var_f27, var_f26;
+ var_f26 = 0.0f;
if (i_this->mType & 1) {
var_f29 = 1000.0f;
} else if (i_this->field_0xb1ed == 1) {
- var_f29 = 250.0f;
+ var_f29 = 250.0f + WREG_F(12);
} else if (i_this->field_0xb1ed == 2) {
- var_f29 = 600.0f;
+ var_f29 = 600.0f + WREG_F(14);
} else {
var_f29 = 200.0f;
}
+ var_f31 = 2.0f + TREG_F(17);
+
+ f32 dbg_0x5c;
for (int i = 0; i < i_this->field_0xb1ea; i++, part++) {
if (i_this->field_0xb1ed == 2) {
- var_f26 = -300.0f * sinf(((f32)i / (f32)(i_this->field_0xb1ea - 1)) * M_PI);
+ dbg_0x5c = f32(i) / f32(i_this->field_0xb1ea - 1) * M_PI;
+ var_f26 = (-300.0f + WREG_F(15)) * f32(sin(dbg_0x5c));
} else if (i_this->field_0xb1ed == 1) {
- var_f26 = -100.0f * sinf(((f32)i / (f32)(i_this->field_0xb1ea - 1)) * M_PI);
+ dbg_0x5c = f32(i) / f32(i_this->field_0xb1ea - 1) * M_PI;
+ var_f26 = (-100.0f + WREG_F(13)) * f32(sin(dbg_0x5c));
}
MtxTrans(part->field_0x0bc.x, part->field_0x0bc.y, part->field_0x0bc.z, 0);
@@ -1095,7 +1023,7 @@ static int daObj_Brg_Execute(obj_brg_class* i_this) {
if (i_this->field_0xaed0 != 0) {
f32 sp1CC;
- if (i_this->field_0xaed0 < i) {
+ if (i > i_this->field_0xaed0) {
sp1CC = 30.0f;
} else {
sp1CC = -30.0f;
@@ -1105,14 +1033,14 @@ static int daObj_Brg_Execute(obj_brg_class* i_this) {
}
spC4.x = part->field_0x0c8.x * 99.0f;
- spC4.y = 5.0f;
+ spC4.y = 5.0f + WREG_F(2);
spC4.z = 0.0f;
MtxPosition(&spC4, &part->field_0x074[1]);
spC4.x *= -1.0f;
MtxPosition(&spC4, &part->field_0x050[1]);
- spC4.y = -30.0f;
+ spC4.y = -30.0f + TREG_F(4);
MtxPosition(&spC4, &part->field_0x050[2]);
spC4.x *= -1.0f;
@@ -1140,25 +1068,25 @@ static int daObj_Brg_Execute(obj_brg_class* i_this) {
MtxTrans(part->field_0x074[0].x, part->field_0x074[0].y, part->field_0x074[0].z, 0);
cMtx_YrotM(*calc_mtx, a_this->current.angle.y);
- MtxScale(2.0f, 2.0f, 2.0f, 1);
+ MtxScale(var_f31, var_f31, var_f31, 1);
part->mpKnotModels[0]->setBaseTRMtx(*calc_mtx);
MtxTrans(part->field_0x050[0].x, part->field_0x050[0].y, part->field_0x050[0].z, 0);
cMtx_YrotM(*calc_mtx, a_this->current.angle.y);
- MtxScale(2.0f, 2.0f, 2.0f, 1);
+ MtxScale(var_f31, var_f31, var_f31, 1);
part->mpKnotModels[1]->setBaseTRMtx(*calc_mtx);
MtxPull();
}
- if (i > 0 && i < i_this->field_0xb1ea - 2) {
- f32 var_f30 = (part[1].field_0x074[0].y + part[-1].field_0x074[0].y) * 0.5f;
- if (var_f30 < part->field_0x074[0].y) {
+ if (i >= 1 && i <= i_this->field_0xb1ea - 2) {
+ var_f30 = (part[-1].field_0x074[0].y - part[1].field_0x074[0].y) * 0.5f + part[1].field_0x074[0].y;
+ if (part->field_0x074[0].y > var_f30) {
part->field_0x074[0].y = var_f30;
}
- var_f30 = (part[1].field_0x050[0].y + part[-1].field_0x050[0].y) * 0.5f;
- if (var_f30 < part->field_0x050[0].y) {
+ var_f30 = (part[-1].field_0x050[0].y - part[1].field_0x050[0].y) * 0.5f + part[1].field_0x050[0].y;
+ if (part->field_0x050[0].y > var_f30) {
part->field_0x050[0].y = var_f30;
}
}
@@ -1173,7 +1101,7 @@ static int daObj_Brg_Execute(obj_brg_class* i_this) {
dCcU_AtInfo spB8;
if (i_this->field_0xaed0 != 0) {
- part->field_0x708 &= 0x1C;
+ part->field_0x708 &= (u8) 0x1C;
}
if (part->mCyl[0].ChkTgHit() && part->field_0x0fe[0] < 10) {
@@ -1188,10 +1116,11 @@ static int daObj_Brg_Execute(obj_brg_class* i_this) {
}
part->field_0x704 -= spB8.mAttackPower;
- if (part->field_0x704 < 1) {
- part->field_0x708 &= 0x1E;
+ if (part->field_0x704 <= 0) {
+ part->field_0x708 &= (u8) 0x1E;
- Z2GetAudioMgr()->seStartLevel(Z2SE_HIT_ROPE_CUT, &part->field_0x074[0], 0, dComIfGp_getReverb(fopAcM_GetRoomNo(a_this)), 1.0f, 1.0f, -1.0f, -1.0f, 0);
+ Z2GetAudioMgr()->seStart(Z2SE_HIT_ROPE_CUT, &part->field_0x074[0], 0,
+ dComIfGp_getReverb(fopAcM_GetRoomNo(a_this)), 1.0f, 1.0f, -1.0f, -1.0f, 0);
if (fopAcM_GetRoomNo(a_this) == 4) {
i_this->field_0xaf1c = 4;
i_this->field_0xaed0 = 10;
@@ -1211,17 +1140,16 @@ static int daObj_Brg_Execute(obj_brg_class* i_this) {
}
part->field_0x705 -= spB8.mAttackPower;
- if (part->field_0x705 < 1) {
- part->field_0x708 &= 0x1D;
+ if (part->field_0x705 <= 0) {
+ part->field_0x708 &= (u8) 0x1D;
- Z2GetAudioMgr()->seStartLevel(Z2SE_HIT_ROPE_CUT, &part->field_0x050[0], 0, dComIfGp_getReverb(fopAcM_GetRoomNo(a_this)), 1.0f, 1.0f, -1.0f, -1.0f, 0);
+ Z2GetAudioMgr()->seStart(Z2SE_HIT_ROPE_CUT, &part->field_0x050[0], 0,
+ dComIfGp_getReverb(fopAcM_GetRoomNo(a_this)), 1.0f, 1.0f, -1.0f, -1.0f, 0);
}
}
} else {
cXyz sp118;
- sp118.z = 2.0f;
- sp118.y = 2.0f;
- sp118.x = 2.0f;
+ sp118.x = sp118.y = sp118.z = 2.0f;
if (part->mCyl[0].ChkTgHit() && part->field_0x0fe[0] < 10) {
part->mCyl[0].OnTgNoConHit();
@@ -1232,7 +1160,8 @@ static int daObj_Brg_Execute(obj_brg_class* i_this) {
part->field_0x0fe[0] = 15;
}
- Z2GetAudioMgr()->seStartLevel(JA_SE_CM_MAGBALL_BOUND, &part->field_0x074[0], 0, dComIfGp_getReverb(fopAcM_GetRoomNo(a_this)), 1.0f, 1.0f, -1.0f, -1.0f, 0);
+ Z2GetAudioMgr()->seStart(JA_SE_CM_MAGBALL_BOUND, &part->field_0x074[0], 0,
+ dComIfGp_getReverb(fopAcM_GetRoomNo(a_this)), 1.0f, 1.0f, -1.0f, -1.0f, 0);
}
if (part->mCyl[1].ChkTgHit() && part->field_0x0fe[1] < 10) {
@@ -1244,7 +1173,8 @@ static int daObj_Brg_Execute(obj_brg_class* i_this) {
part->field_0x0fe[1] = 15;
}
- Z2GetAudioMgr()->seStartLevel(JA_SE_CM_MAGBALL_BOUND, &part->field_0x050[0], 0, dComIfGp_getReverb(fopAcM_GetRoomNo(a_this)), 1.0f, 1.0f, -1.0f, -1.0f, 0);
+ Z2GetAudioMgr()->seStart(JA_SE_CM_MAGBALL_BOUND, &part->field_0x050[0], 0,
+ dComIfGp_getReverb(fopAcM_GetRoomNo(a_this)), 1.0f, 1.0f, -1.0f, -1.0f, 0);
}
}
@@ -1269,7 +1199,7 @@ static int daObj_Brg_Execute(obj_brg_class* i_this) {
}
if (part->field_0x0fa == 0) {
- part->field_0x708 &= 0x1E;
+ part->field_0x708 &= (u8) 0x1E;
}
} else if (var_r25) {
cXyz sp130;
@@ -1307,7 +1237,7 @@ static int daObj_Brg_Execute(obj_brg_class* i_this) {
}
if (part->field_0x0fc == 0) {
- part->field_0x708 &= 0x1D;
+ part->field_0x708 &= (u8) 0x1D;
}
} else if (var_r25) {
cXyz sp13C;
@@ -1336,47 +1266,45 @@ static int daObj_Brg_Execute(obj_brg_class* i_this) {
cMtx_YrotM(*calc_mtx, part->field_0x0f0);
- if (i_this->field_0xb1eb <= i) {
- part->field_0x0c8.z = 0.0f;
- part->field_0x0c8.y = 0.0f;
- part->field_0x0c8.x = 0.0f;
-
+ if (i >= i_this->field_0xb1eb) {
+ part->field_0x0c8.x = part->field_0x0c8.y = part->field_0x0c8.z = 0.0f;
part->mpBridgeModel->setBaseScale(part->field_0x0c8);
part->field_0x708 = 0;
}
- MtxTrans(0.0f, part->field_0x0c8.y * -3.0f, 0.0f, 1);
+ MtxTrans(0.0f, (-3.0f + oREG_F(9)) * part->field_0x0c8.y, 0.0f, 1);
part->mpBridgeModel->setBaseTRMtx(*calc_mtx);
if (!(i_this->mType & 4) && !(i_this->mType & 1) && (part->field_0x708 & 4)) {
cXyz* sp1D4 = i_this->field_0xae90.getPos(0);
cXyz* sp1D8 = i_this->field_0xae90.getPos(1);
+ cXyz *sp1DC, *sp1E0;
int sp1E4 = i_this->field_0xaed8 + 1;
cXyz sp148;
spC4.x = 0.0f;
spC4.y = 0.0f;
+ s16 dbg_0xa = (i_this->field_0xb1e9 * 1500);
spC4.z = i_this->field_0xaf30;
- spC4.z *= (cM_ssin((i_this->field_0xb1e9 * 1500) + (i_this->field_0xaf20 * 1400)) * 2.0f + 5.0f) * 0.15f;
+ spC4.z = spC4.z * (cM_ssin(dbg_0xa + (i_this->field_0xaf20 * 1400)) * 2.0f + 5.0f) * 0.15f;
cMtx_YrotS(*calc_mtx, wy);
MtxPosition(&spC4, &sp148);
+ f32 dbg_0x38;
if (part->field_0x708 & 1) {
sp1D4[sp1E4] = part->field_0x074[0];
} else {
- cXyz sp154 = sp1D4[sp1E4 - 1] - sp1D4[sp1E4 + 1];
- f32 sp1E8 = (f32)part->field_0x0fe[0] * cM_ssin(i_this->field_0xaf1e * 6);
+ cXyz sp154 = *(sp1D4 + sp1E4 - 1) - *(sp1D4 + sp1E4 + 1);
+ dbg_0x38 = (f32)part->field_0x0fe[0] * cM_ssin(i_this->field_0xaf1e * 6);
- sp1D4[sp1E4].x = sp148.x + sp154.x * 0.5f + sp1D4[sp1E4 + 1].x;
- sp1D4[sp1E4].y = sp1E8 + sp154.y * 0.5f + sp1D4[sp1E4 + 1].y;
- sp1D4[sp1E4].z = sp148.z + sp154.z * 0.5f + sp1D4[sp1E4 + 1].z;
+ sp1D4[sp1E4].x = sp154.x * 0.5f + (*(sp1D4 + sp1E4 + 1)).x + sp148.x;
+ sp1D4[sp1E4].y = sp154.y * 0.5f + (*(sp1D4 + sp1E4 + 1)).y + dbg_0x38 - 1.0f + AREG_F(0);
+ sp1D4[sp1E4].z = sp154.z * 0.5f + (*(sp1D4 + sp1E4 + 1)).z + sp148.z;
- cXyz* sp1DC = part->field_0x014.getPos(0);
- cXyz* sp1E0 = part->field_0x014.getPos(2);
+ sp1DC = part->field_0x014.getPos(0);
+ sp1E0 = part->field_0x014.getPos(2);
- f32 var_f28;
- f32 var_f27;
if (part->field_0x708 & 0x10) {
var_f28 = 0.0f;
var_f27 = i_this->field_0xaedc * 25.0f;
@@ -1395,18 +1323,16 @@ static int daObj_Brg_Execute(obj_brg_class* i_this) {
if (part->field_0x708 & 2) {
sp1D8[sp1E4] = part->field_0x050[0];
} else {
- cXyz sp160 = sp1D8[sp1E4 - 1] - sp1D8[sp1E4 + 1];
- f32 sp1E8 = (f32)part->field_0x0fe[1] * cM_ssin(i_this->field_0xaf1e * 6);
+ cXyz sp160 = *(sp1D8 + sp1E4 - 1) - *(sp1D8 + sp1E4 + 1);
+ dbg_0x38 = (f32)part->field_0x0fe[1] * cM_ssin(i_this->field_0xaf1e * 6);
- sp1D8[sp1E4].x = sp148.x + sp160.x * 0.5f + sp1D8[sp1E4 + 1].x;
- sp1D8[sp1E4].y = sp1E8 + sp160.y * 0.5f + sp1D8[sp1E4 + 1].y;
- sp1D8[sp1E4].z = sp148.z + sp160.z * 0.5f + sp1D8[sp1E4 + 1].z;
+ sp1D8[sp1E4].x = sp160.x * 0.5f + (*(sp1D8 + sp1E4 + 1)).x + sp148.x;
+ sp1D8[sp1E4].y = sp160.y * 0.5f + (*(sp1D8 + sp1E4 + 1)).y + dbg_0x38 - 1.0f + AREG_F(0);
+ sp1D8[sp1E4].z = sp160.z * 0.5f + (*(sp1D8 + sp1E4 + 1)).z + sp148.z;
- cXyz* sp1DC = part->field_0x014.getPos(1);
- cXyz* sp1E0 = part->field_0x014.getPos(3);
+ sp1DC = part->field_0x014.getPos(1);
+ sp1E0 = part->field_0x014.getPos(3);
- f32 var_f28;
- f32 var_f27;
if (part->field_0x708 & 0x10) {
var_f28 = 0.0f;
var_f27 = i_this->field_0xaedc * 25.0f;
@@ -1415,12 +1341,14 @@ static int daObj_Brg_Execute(obj_brg_class* i_this) {
var_f28 = var_f27;
}
- *sp1DC = sp1D8[sp1E4];
+ *sp1DC = *(sp1D8 + sp1E4);
himo_cut_control1(i_this, sp1DC, var_f28);
*sp1E0 = part->field_0x050[1];
himo_cut_control1(i_this, sp1E0, var_f27);
}
+
+ ++i_this->field_0xaed8;
}
}
@@ -1428,32 +1356,35 @@ static int daObj_Brg_Execute(obj_brg_class* i_this) {
Vec* vtx_tbl = (Vec*)i_this->mpBgW->GetVtxTbl();
+ int dbg_0x30;
+ int temp;
int sp1F8 = 0;
for (int i = 0; i < i_this->mpBgW->GetVtxNum(); i++) {
- int temp = i >> 2;
+ dbg_0x30 = i & 3;
+ temp = i >> 2;
- if (i < i_this->field_0xb1eb) {
- switch (i & 3) {
+ if (temp < i_this->field_0xb1eb) {
+ part = &i_this->mBr[temp];
+ switch (dbg_0x30) {
case 0:
- vtx_tbl[i] = i_this->mBr[temp].field_0x074[2];
+ vtx_tbl[i] = part->field_0x074[2];
break;
case 1:
- vtx_tbl[i] = i_this->mBr[temp].field_0x050[2];
+ vtx_tbl[i] = part->field_0x050[2];
break;
case 2:
- vtx_tbl[i] = i_this->mBr[temp].field_0x074[1];
+ vtx_tbl[i] = part->field_0x074[1];
break;
case 3:
- vtx_tbl[i] = i_this->mBr[temp].field_0x050[1];
+ vtx_tbl[i] = part->field_0x050[1];
break;
}
if (temp == 0 || temp == i_this->field_0xb1eb - 1) {
- cMtx_YrotS(*calc_mtx, i_this->mBr[temp].field_0x0d4.y);
- cMtx_XrotM(*calc_mtx, i_this->mBr[temp].field_0x0d4.x);
+ cMtx_YrotS(*calc_mtx, part->field_0x0d4.y);
+ cMtx_XrotM(*calc_mtx, part->field_0x0d4.x);
- spC4.y = 0.0f;
- spC4.x = 0.0f;
+ spC4.x = spC4.y = 0.0f;
if (temp == 0) {
spC4.z = 50.0f;
@@ -1473,7 +1404,7 @@ static int daObj_Brg_Execute(obj_brg_class* i_this) {
vtx_tbl[i] = vtx_tbl[sp1F8];
}
- if (i_this->field_0xaf1c > 3) {
+ if (i_this->field_0xaf1c >= 4) {
vtx_tbl[i].y = 10000.0f;
}
}
@@ -1718,158 +1649,33 @@ static int CallbackCreateHeap(fopAc_ac_c* i_this) {
return 1;
}
-/* 80BC2528-80BC2538 000048 000C+04 0/1 0/0 0/0 .bss @5786 */
-#pragma push
-#pragma force_active on
-static u8 lit_5786[12 + 4 /* padding */];
-#pragma pop
-
-/* 80BC2538-80BC2544 000058 000C+00 0/1 0/0 0/0 .bss @5789 */
-#pragma push
-#pragma force_active on
-static u8 lit_5789[12];
-#pragma pop
-
-/* 80BC2544-80BC2550 000064 000C+00 0/1 0/0 0/0 .bss @5790 */
-#pragma push
-#pragma force_active on
-static u8 lit_5790[12];
-#pragma pop
-
-/* 80BC2550-80BC255C 000070 000C+00 0/1 0/0 0/0 .bss @5791 */
-#pragma push
-#pragma force_active on
-static u8 lit_5791[12];
-#pragma pop
-
-/* 80BC255C-80BC2568 00007C 000C+00 0/1 0/0 0/0 .bss @5792 */
-#pragma push
-#pragma force_active on
-static u8 lit_5792[12];
-#pragma pop
-
-/* 80BC2568-80BC2574 000088 000C+00 0/1 0/0 0/0 .bss @5793 */
-#pragma push
-#pragma force_active on
-static u8 lit_5793[12];
-#pragma pop
-
-/* 80BC2574-80BC2580 000094 000C+00 0/1 0/0 0/0 .bss @5794 */
-#pragma push
-#pragma force_active on
-static u8 lit_5794[12];
-#pragma pop
-
-/* 80BC2580-80BC258C 0000A0 000C+00 0/1 0/0 0/0 .bss @5795 */
-#pragma push
-#pragma force_active on
-static u8 lit_5795[12];
-#pragma pop
-
-/* 80BC258C-80BC2598 0000AC 000C+00 0/1 0/0 0/0 .bss @5796 */
-#pragma push
-#pragma force_active on
-static u8 lit_5796[12];
-#pragma pop
-
-/* 80BC2598-80BC25A4 0000B8 000C+00 0/1 0/0 0/0 .bss @5797 */
-#pragma push
-#pragma force_active on
-static u8 lit_5797[12];
-#pragma pop
-
-/* 80BC25A4-80BC25B0 0000C4 000C+00 0/1 0/0 0/0 .bss @5798 */
-#pragma push
-#pragma force_active on
-static u8 lit_5798[12];
-#pragma pop
-
-/* 80BC25B0-80BC25BC 0000D0 000C+00 0/1 0/0 0/0 .bss @5799 */
-#pragma push
-#pragma force_active on
-static u8 lit_5799[12];
-#pragma pop
-
-/* 80BC25BC-80BC25C8 0000DC 000C+00 0/1 0/0 0/0 .bss @5800 */
-#pragma push
-#pragma force_active on
-static u8 lit_5800[12];
-#pragma pop
-
-/* 80BC25C8-80BC25D4 0000E8 000C+00 0/1 0/0 0/0 .bss @5801 */
-#pragma push
-#pragma force_active on
-static u8 lit_5801[12];
-#pragma pop
-
-/* 80BC25D4-80BC25E0 0000F4 000C+00 0/1 0/0 0/0 .bss @5802 */
-#pragma push
-#pragma force_active on
-static u8 lit_5802[12];
-#pragma pop
-
-/* 80BC25E0-80BC25EC 000100 000C+00 0/1 0/0 0/0 .bss @5803 */
-#pragma push
-#pragma force_active on
-static u8 lit_5803[12];
-#pragma pop
-
-/* 80BC25EC-80BC25F8 00010C 000C+00 0/1 0/0 0/0 .bss @5804 */
-#pragma push
-#pragma force_active on
-static u8 lit_5804[12];
-#pragma pop
-
-/* 80BC25F8-80BC2604 000118 000C+00 0/1 0/0 0/0 .bss @5805 */
-#pragma push
-#pragma force_active on
-static u8 lit_5805[12];
-#pragma pop
-
-/* 80BC2604-80BC2610 000124 000C+00 0/1 0/0 0/0 .bss @5806 */
-#pragma push
-#pragma force_active on
-static u8 lit_5806[12];
-#pragma pop
-
-/* 80BC2610-80BC261C 000130 000C+00 0/1 0/0 0/0 .bss @5807 */
-#pragma push
-#pragma force_active on
-static u8 lit_5807[12];
-#pragma pop
-
-/* 80BC261C-80BC2628 00013C 000C+00 0/1 0/0 0/0 .bss @5808 */
-#pragma push
-#pragma force_active on
-static u8 lit_5808[12];
-#pragma pop
-
-/* 80BC2628-80BC2634 000148 000C+00 0/1 0/0 0/0 .bss @5809 */
-#pragma push
-#pragma force_active on
-static u8 lit_5809[12];
-#pragma pop
-
/* 80BC1050-80BC1D74 004830 0D24+00 1/0 0/0 0/0 .text daObj_Brg_Create__FP10fopAc_ac_c */
static int daObj_Brg_Create(fopAc_ac_c* i_this) {
obj_brg_class* a_this = (obj_brg_class*)i_this;
+ int phase_state;
+ dPath* path;
+ dPnt* pnt;
+ int sp54;
+ br_s* part;
+ int loop, sp60, brno, iter;
+ int fop_id = fopAcM_GetID(i_this);
fopAcM_SetupActor(i_this, obj_brg_class);
- int phase_state = dComIfG_resLoad(&a_this->mPhase, "Obj_brg");
+ phase_state = dComIfG_resLoad(&a_this->mPhase, "Obj_brg");
if (phase_state == cPhs_COMPLEATE_e) {
a_this->mType = fopAcM_GetParam(i_this);
a_this->mType = 0;
- a_this->field_0xb1e9 = fopAcM_GetParam(i_this) >> 8;
+ a_this->field_0xb1e9 = (fopAcM_GetParam(i_this) & 0xFF00) >> 8;
OS_REPORT("OBJ_BRG SET %x\n", fopAcM_GetParam(i_this));
- u8 path_id = fopAcM_GetParam(i_this) >> 0x10;
+ u8 path_id = (fopAcM_GetParam(i_this) & 0xFF0000) >> 0x10;
a_this->field_0xaedc = 1.5f;
if (strcmp(dComIfGp_getStartStageName(), "F_SP104") == 0) {
a_this->mType = 8;
a_this->field_0xb1ed = 2;
- a_this->field_0xaedc *= 3.0f;
+ a_this->field_0xaedc *= (3.0f + NREG_F(12));
}
if (path_id == 0xFF) {
@@ -1889,22 +1695,23 @@ static int daObj_Brg_Create(fopAc_ac_c* i_this) {
i_this->home.pos.set(0.0f, 3285.0f, 3425.0f);
a_this->mEndPos.set(0.0f, 3270.0f, 1095.0f);
- a_this->field_0xaedc *= 1.5f;
+ a_this->field_0xaedc *= (1.5f + YREG_F(5));
a_this->field_0xb1ed = 1;
} else {
return cPhs_ERROR_e;
}
}
} else {
- dPath* path = dPath_GetRoomPath(path_id, fopAcM_GetRoomNo(i_this));
+ path = dPath_GetRoomPath(path_id, fopAcM_GetRoomNo(i_this));
if (path != NULL) {
- i_this->home.pos.x = path->m_points[0].m_position.x;
- i_this->home.pos.y = path->m_points[0].m_position.y;
- i_this->home.pos.z = path->m_points[0].m_position.z;
-
- a_this->mEndPos.x = path->m_points[1].m_position.x;
- a_this->mEndPos.y = path->m_points[1].m_position.y;
- a_this->mEndPos.z = path->m_points[1].m_position.z;
+ pnt = &path->m_points[0];
+ i_this->home.pos.x = pnt->m_position.x;
+ i_this->home.pos.y = pnt->m_position.y;
+ i_this->home.pos.z = pnt->m_position.z;
+
+ a_this->mEndPos.x = (pnt+1)->m_position.x;
+ a_this->mEndPos.y = (pnt+1)->m_position.y;
+ a_this->mEndPos.z = (pnt+1)->m_position.z;
} else {
OS_REPORT("NON PATH !!!!!!!!! %d!\n", path_id);
return cPhs_ERROR_e;
@@ -1912,7 +1719,7 @@ static int daObj_Brg_Create(fopAc_ac_c* i_this) {
}
cXyz sp40 = a_this->mEndPos - i_this->home.pos;
- i_this->home.angle.y = cM_atan2s(sp40.x, sp40.z);
+ i_this->home.angle.y = (s16) cM_atan2s(sp40.x, sp40.z);
i_this->home.angle.x = -cM_atan2s(sp40.y, JMAFastSqrt(sp40.x * sp40.x + sp40.z * sp40.z));
f32 var_f31 = TREG_F(14) + 3.0f;
@@ -1928,9 +1735,9 @@ static int daObj_Brg_Create(fopAc_ac_c* i_this) {
var_f31 = 0.0f;
}
- a_this->field_0xb1ea = (sp40.abs() / var_f31 + 47.0f) * a_this->field_0xaedc;
+ a_this->field_0xb1ea = sp40.abs() / ((var_f31 + 47.0f) * a_this->field_0xaedc);
- if (a_this->field_0xb1ea > 24) {
+ if (a_this->field_0xb1ea >= 24) {
OS_REPORT("TOO MANY BIRIDGE !!!! %d!\n", a_this->field_0xb1ea);
return cPhs_ERROR_e;
}
@@ -1941,10 +1748,10 @@ static int daObj_Brg_Create(fopAc_ac_c* i_this) {
return cPhs_ERROR_e;
}
- CreateInit(a_this);
+ CreateInit(i_this);
if (a_this->mpBgW != NULL) {
- if (dComIfG_Bgsp().Regist(a_this->mpBgW, i_this)) {
+ if (dComIfG_Bgsp().Regist(a_this->mpBgW, a_this)) {
return cPhs_ERROR_e;
}
}
@@ -1963,16 +1770,19 @@ static int daObj_Brg_Create(fopAc_ac_c* i_this) {
OS_REPORT("OBJ_BRG SET END \n");
- int sp54 = fopAcM_GetParam(i_this) >> 0x18;
- bool sp78 = sp54 != 0xFF && dComIfGs_isSwitch(sp54, fopAcM_GetRoomNo(i_this));
+ sp54 = (fopAcM_GetParam(i_this) & 0xFF000000) >> 0x18;
+ s8 sp78 = 0;
+ if (sp54 != 0xFF && dComIfGs_isSwitch(sp54, fopAcM_GetRoomNo(i_this))) {
+ sp78 = 1;
+ }
- br_s* part = a_this->mBr;
- for (int i = 0; i < a_this->field_0xb1ea; i++, part++) {
+ part = a_this->mBr;
+ for (loop = 0; loop < a_this->field_0xb1ea; loop++, part++) {
part->field_0x074[0].y = i_this->home.pos.y + 350.0f;
part->field_0x050[0].y = i_this->home.pos.y + 350.0f;
}
- int sp60 = 10;
+ sp60 = 10;
if (a_this->field_0xb1ed == 2) {
sp60 = 2;
@@ -2001,17 +1811,17 @@ static int daObj_Brg_Create(fopAc_ac_c* i_this) {
cXyz(334.0f, 216.0f, -16485.0f),
};
- for (int i = 0; i < a_this->field_0xb1ea; i++) {
- a_this->mBr[i].field_0x098[2] = brg_init_pos[i];
+ for (brno = 0; brno < a_this->field_0xb1ea; brno++) {
+ a_this->mBr[brno].field_0x098[2] = brg_init_pos[brno];
}
}
- for (int i = 0; i < sp60; i++) {
- if (i == 5 && sp78) {
+ for (iter = 0; iter < sp60; iter++) {
+ if (iter == 5 && sp78) {
if (a_this->field_0xb1ec != 0) {
a_this->field_0xaf1c = 5;
a_this->field_0xaed0 = 7;
- } else if (a_this->field_0xb1ec == 1) {
+ } else if (a_this->field_0xb1ed == 1) {
a_this->field_0xaf1c = 5;
a_this->field_0xaed0 = 10;
a_this->mType = 4;