/** * @file d_a_obj_brg.cpp * */ #include "d/actor/d_a_obj_brg.h" #include "d/d_com_inf_game.h" #include "d/d_s_play.h" #include "SSystem/SComponent/c_math.h" #include "d/d_cc_uty.h" #include "d/actor/d_a_player.h" #include "d/d_path.h" #include "Z2AudioLib/Z2Instances.h" /* 80BBC90C-80BBCCFC 0000EC 03F0+00 1/1 0/0 0/0 .text * ride_call_back__FP4dBgWP10fopAc_ac_cP10fopAc_ac_c */ static void ride_call_back(dBgW* i_bgw, fopAc_ac_c* i_bgActor, fopAc_ac_c* i_rideActor) { obj_brg_class* a_this = (obj_brg_class*)i_bgActor; cXyz sp74 = a_this->mBr[0].field_0x0bc - i_rideActor->current.pos; int var_r27 = JMAFastSqrt(sp74.x * sp74.x + sp74.z * sp74.z) / (a_this->field_0xaedc * 51.0f) - -0.5f; if (var_r27 > a_this->field_0xb1ea - 1) { var_r27 = a_this->field_0xb1ea - 1; } else if (var_r27 < 0) { var_r27 = 0; } br_s* br_p = &a_this->mBr[var_r27]; cXyz sp80; cXyz sp8C; cXyz sp98; f32 var_f30; if (a_this->mType & 5) { var_f30 = 0.85f; } else if (a_this->field_0xb1ed == 2) { var_f30 = KREG_F(7) + 0.1f; } else { var_f30 = 1.0f; } cMtx_YrotS(*calc_mtx, -br_p->field_0x0d4.y); sp80 = i_rideActor->current.pos - br_p->field_0x0bc; MtxPosition(&sp80, &sp8C); sp80 = i_rideActor->old.pos - br_p->field_0x0bc; MtxPosition(&sp80, &sp98); i_rideActor->speed.y = -5.0f; f32 var_f29; if (fopAcM_GetName(i_rideActor) == PROC_ALINK) { var_f29 = 100.0f; br_p->field_0x0e4 = -31.0f; a_this->field_0xb1ef = 5; } else if (fopAcM_GetName(i_rideActor) == PROC_NPC_KS) { var_f29 = 70.0f; br_p->field_0x0e4 = -20.0f; i_rideActor->speed.y = -20.0f; } else { var_f29 = 50.0f; br_p->field_0x0e4 = -10.0f; } var_f29 *= var_f30; br_p->field_0x0e4 *= var_f30; br_p->field_0x0e4 += var_f29 * ((a_this->field_0xaef0 * cM_ssin(a_this->field_0xaf1e)) * 0.03f); br_p->field_0x0f2 = -sp8C.x * var_f29; br_p->field_0x706 = 2; sp74 = sp8C - sp98; f32 var_f31 = var_f30 * (sp74.abs() * 0.3f); if (var_f31 > 20.0f) { var_f31 = 20.0f; } if (a_this->field_0xaee0 <= var_f31) { a_this->field_0xaee0 = var_f31; } var_f31 = var_f30 * fabsf(sp74.x); if (var_f31 > 50.0f) { var_f31 = 50.0f; } if (a_this->field_0xaee4 <= var_f31) { a_this->field_0xaee4 += 0.5f; } } /* 80BBCD38-80BBD740 000518 0A08+00 1/0 0/0 0/0 .text daObj_Brg_Draw__FP13obj_brg_class */ static int daObj_Brg_Draw(obj_brg_class* i_this) { fopAc_ac_c* a_this = (fopAc_ac_c*)i_this; g_env_light.settingTevStruct(0x10, &a_this->current.pos, &a_this->tevStr); if (i_this->field_0xb1f0) { return 1; } br_s* br_p = i_this->mBr; 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(); if (i_this->mType & 8) { for (int j = 0; j < 2; j++) { g_env_light.setLightTevColorType_MAJI(br_p->mpKnotModels[j], &a_this->tevStr); mDoExt_modelUpdateDL(br_p->mpKnotModels[j]); } } if (!(i_this->mType & 4) && (br_p->field_0x708 & 4)) { cXyz sp74; cXyz sp80; cXyz sp8C; cXyz sp98; cMtx_YrotS(*calc_mtx, i_this->field_0xaf1e); sp74.x = 0.0f; sp74.y = 0.0f; sp74.z = 1.0f; MtxPosition(&sp74, &sp80); sp8C = br_p->field_0x074[0] - br_p->field_0x074[1]; sp98 = br_p->field_0x050[0] - br_p->field_0x050[1]; if (!(i_this->mType & 1)) { f32 var_f30; if (i_this->mType & 8) { var_f30 = 5.0f; } else { var_f30 = 3.0f; } f32* spFC = br_p->field_0x014.getSize(0); f32* sp100 = br_p->field_0x014.getSize(2); if (!(br_p->field_0x708 & 1)) { for (int j = 0; j < 5; j++) { *sp100 = var_f30; *spFC = var_f30; spFC++; sp100++; } } else { cXyz* spF4 = br_p->field_0x014.getPos(0); cXyz* 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); for (int j = 0; j < 5; j++) { *spFC = var_f30; f32 var_f31; if (j == 2) { var_f31 = 1.0f; if (br_p->field_0x704 <= 1) { *spFC = 0.0f; } else if (br_p->field_0x704 == 2) { *spFC = 1.0f; } br_p->field_0x098[0] = *spF4; } else if (j == 1 || j == 3) { var_f31 = 0.7f; } else { var_f31 = 0.0f; } sp74.x = (sp8C.x * j) + var_f29 * (var_f31 * sp80.x); sp74.y = (sp8C.y * j); sp74.z = (sp8C.z * j) + var_f29 * (var_f31 * sp80.z); *spF4 = br_p->field_0x074[1] + sp74; *spF8 = br_p->field_0x074[0]; *sp100 = 0.0f; spF4++; spF8++; spFC++; sp100++; } } spFC = br_p->field_0x014.getSize(1); sp100 = br_p->field_0x014.getSize(3); if (!(br_p->field_0x708 & 2)) { for (int j = 0; j < 5; j++) { *sp100 = var_f30; *spFC = var_f30; spFC++; sp100++; } } else { cXyz* spF4 = br_p->field_0x014.getPos(1); cXyz* 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); for (int j = 0; j < 5; j++) { *spFC = var_f30; f32 var_f31; if (j == 2) { var_f31 = 1.0f; if (br_p->field_0x705 <= 1) { *spFC = 0.0f; } else if (br_p->field_0x705 == 2) { *spFC = 1.0f; } br_p->field_0x098[1] = *spF4; } else if (j == 1 || j == 3) { var_f31 = 0.7f; } else { var_f31 = 0.0f; } sp74.x = (sp98.x * j) + var_f29 * (var_f31 * sp80.x); sp74.y = (sp98.y * j); sp74.z = (sp98.z * j) + var_f29 * (var_f31 * sp80.z); *spF4 = br_p->field_0x050[1] + sp74; *spF8 = br_p->field_0x050[0]; *sp100 = 0.0f; spF4++; spF8++; spFC++; sp100++; } } static GXColor l_color = {0x96, 0x96, 0x96, 0xFF}; br_p->field_0x014.update(5, l_color, &a_this->tevStr); dComIfGd_set3DlineMat(&br_p->field_0x014); } } } if (!(i_this->mType & 4) && !(i_this->mType & 5)) { cXyz spA4; cXyz spB0; if (i_this->field_0xb1ed == 1) { spA4.x = WREG_F(9) + -150.0f; spA4.y = WREG_F(10) + 430.0f; spA4.z = WREG_F(11) + -300.0f + 50.0f; } else if (i_this->field_0xb1ed == 2) { spA4.x = (WREG_F(9) + -150.0f) - 500.0f; spA4.y = WREG_F(10) + 430.0f + 900.0f; spA4.z = (WREG_F(11) + -300.0f + 50.0f) - 700.0f; } else { spA4.x = WREG_F(9) + -120.0f; spA4.y = WREG_F(10) + 350.0f; spA4.z = WREG_F(11) + -80.0f; } cMtx_YrotS(*calc_mtx, a_this->home.angle.y); MtxPosition(&spA4, &spB0); cXyz* sp114 = i_this->field_0xae90.getPos(0); sp114->x = a_this->home.pos.x + spB0.x; sp114->y = a_this->home.pos.y + spB0.y; sp114->z = a_this->home.pos.z + spB0.z; if (i_this->field_0xb1ed == 1) { spA4.y = WREG_F(10) + 430.0f + 20.0f; spA4.z = -(WREG_F(11) + -300.0f - 50.0f); } else if (i_this->field_0xb1ed == 2) { spA4.y = WREG_F(10) + 430.0f + 20.0f + 900.0f; spA4.z = -(WREG_F(11) + -300.0f - 50.0f - 700.0f); } else { spA4.z = -(WREG_F(19) + -80.0f + 50.0f - 80.0f); spA4.y = WREG_F(18) + 350.0f + 20.0f; } sp114 = &i_this->field_0xae90.getPos(0)[i_this->field_0xaed8] + 1; MtxPosition(&spA4, &spB0); sp114->x = i_this->mEndPos.x + spB0.x; sp114->y = i_this->mEndPos.y + spB0.y; sp114->z = i_this->mEndPos.z + spB0.z; spA4.x *= -1.0f; if (i_this->field_0xb1ed == 1) { spA4.y = WREG_F(10) + 430.0f; spA4.z = WREG_F(11) + -300.0f + 50.0f; } else if (i_this->field_0xb1ed == 2) { spA4.y = WREG_F(10) + 430.0f + 900.0f; spA4.z = (WREG_F(11) + -300.0f + 50.0f) - 700.0f; } else { spA4.z = WREG_F(11) + -80.0f; spA4.y = WREG_F(10) + 350.0f; } MtxPosition(&spA4, &spB0); sp114 = i_this->field_0xae90.getPos(1); sp114->x = a_this->home.pos.x + spB0.x; sp114->y = a_this->home.pos.y + spB0.y; sp114->z = a_this->home.pos.z + spB0.z; if (i_this->field_0xb1ed == 1) { spA4.y = WREG_F(10) + 430.0f + 20.0f; spA4.z = -(WREG_F(11) + -300.0f - 50.0f); } else if (i_this->field_0xb1ed == 2) { spA4.y = WREG_F(10) + 430.0f + 20.0f + 900.0f; spA4.z = -(WREG_F(11) + -300.0f - 50.0f - 700.0f); } else { spA4.z = -(WREG_F(19) + -80.0f + 50.0f - 80.0f); spA4.y = WREG_F(18) + 350.0f + 20.0f; } sp114 = &i_this->field_0xae90.getPos(1)[i_this->field_0xaed8] + 1; MtxPosition(&spA4, &spB0); sp114->x = i_this->mEndPos.x + spB0.x; 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) { var_f28 = WREG_F(4) + 6.5f; } else if (i_this->field_0xb1ed == 2) { var_f28 = WREG_F(5) + 10.0f; } else { var_f28 = 5.0f; } static GXColor l_color = {0x96, 0x96, 0x96, 0xFF}; i_this->field_0xae90.update((u16)(i_this->field_0xaed8 + VREG_S(2) + 2), var_f28, l_color, 0, &a_this->tevStr); dComIfGd_set3DlineMat(&i_this->field_0xae90); } 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]; /* 80BC2526 0002+00 data_80BC2526 wy */ static s16 wy; /* 80BBD740-80BBDA64 000F20 0324+00 1/1 0/0 0/0 .text control1__FP13obj_brg_classP4br_s */ static void control1(obj_brg_class* i_this, br_s* i_part) { cXyz sp84; cXyz sp90; cXyz sp9C; i_part++; i_this->field_0xaf22 += i_this->field_0xaf26; i_this->field_0xaf24 += i_this->field_0xaf28; s16 var_r27; if (i_this->field_0xb1ea > 10) { var_r27 = 4000; } else { var_r27 = 8000; } cXyz spA8; cXyz spB4; sp84.x = i_this->field_0xaeec * cM_scos(i_this->field_0xaf22); sp84.y = 0.0f; sp84.z = 0.0f; cMtx_YrotS(*calc_mtx, i_this->home.angle.y); MtxPosition(&sp84, &spA8); sp84.x = 1.0f; MtxPosition(&sp84, &spB4); cXyz spC0; sp84.x = 0.0f; sp84.z = i_this->field_0xaf30 * 5.0f; cMtx_YrotS(*calc_mtx, wy); MtxPosition(&sp84, &spC0); sp84.x = 0.0f; sp84.z = i_this->field_0xaedc * 50.0f; for (int i = 1; i < i_this->field_0xb1ea; i++, i_part++) { f32 var_f27 = (i_part->field_0x0e8 * 0.5f) + (((i_part->field_0x0ec * i_part->field_0x0e0) * 0.5f) + i_part->field_0x0b0.y); f32 var_f29 = (i_this->field_0xaee8 * cM_ssin(i_this->field_0xaf22 + (i * var_r27))) * i_part->field_0x0e0; f32 var_f26 = (i_this->field_0xaef0 * cM_ssin(i_this->field_0xaf24 + (i * (var_r27 + 1000)))) * i_part->field_0x0e0; f32 var_f31 = spC0.x + ((spA8.x * i_part->field_0x0e0) + ((i_part->field_0x0b0.x - i_part[-1].field_0x0b0.x) + (var_f29 * spB4.x))); f32 var_f28 = var_f26 + (var_f27 - i_part[-1].field_0x0b0.y); f32 var_f30 = spC0.z + ((spA8.z * i_part->field_0x0e0) + ((i_part->field_0x0b0.z - i_part[-1].field_0x0b0.z) + (var_f29 * spB4.z))); s16 spC6, spC8; spC8 = (s16)cM_atan2s(var_f31, var_f30); spC6 = -cM_atan2s(var_f28, JMAFastSqrt(var_f31 * var_f31 + var_f30 * var_f30)); cMtx_YrotS(*calc_mtx, spC8); cMtx_XrotM(*calc_mtx, spC6); MtxPosition(&sp84, &sp9C); i_part->field_0x0b0.x = i_part[-1].field_0x0b0.x + sp9C.x; i_part->field_0x0b0.y = i_part[-1].field_0x0b0.y + sp9C.y; i_part->field_0x0b0.z = i_part[-1].field_0x0b0.z + sp9C.z; } } /* 80BBDA64-80BBDC28 001244 01C4+00 1/1 0/0 0/0 .text control2__FP13obj_brg_classP4br_s */ static void control2(obj_brg_class* i_this, br_s* i_part) { cXyz sp68; cXyz sp74; i_part += i_this->field_0xb1ea - 2; sp68.x = 0.0f; 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; 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)); i_part[1].field_0x0d4.y = spC8; i_part[1].field_0x0d4.x = spC6; cMtx_YrotS(*calc_mtx, spC8); cMtx_XrotM(*calc_mtx, spC6); MtxPosition(&sp68, &sp74); i_part->field_0x0b0.x = i_part[1].field_0x0b0.x + sp74.x; i_part->field_0x0b0.y = i_part[1].field_0x0b0.y + sp74.y; i_part->field_0x0b0.z = i_part[1].field_0x0b0.z + sp74.z; } } /* 80BBDC28-80BBDCE8 001408 00C0+00 1/1 0/0 0/0 .text control3__FP13obj_brg_classP4br_s */ static void control3(obj_brg_class* i_this, br_s* i_part) { f32 var_f31 = i_part->field_0x0b0.x - i_part[1].field_0x0b0.x; f32 var_f29 = i_part->field_0x0b0.y - i_part[1].field_0x0b0.y; f32 var_f30 = i_part->field_0x0b0.z - i_part[1].field_0x0b0.z; i_part->field_0x0d4.y = cM_atan2s(var_f31, var_f30); i_part->field_0x0d4.x = -cM_atan2s(var_f29, JMAFastSqrt(var_f31 * var_f31 + var_f30 * var_f30)); } /* 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) { cXyz sp7C; cXyz sp88; 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; MtxPosition(&sp7C, &sp94); cXyz spA0(0.0f, 0.0f, 0.0f); if (fopAcM_GetRoomNo(i_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)); MtxPosition(&sp7C, &spA0); i_this->field_0xaef4 = i_this->field_0xaf30 * 3000.0f; } sp7C.z = i_this->field_0xaedc * 50.0f; for (int i = 1; i < i_this->field_0xaed0; i++, i_part++) { f32 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)); 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)); 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; } cMtx_YrotS(*calc_mtx, var_r26); cMtx_XrotM(*calc_mtx, var_r27); MtxPosition(&sp7C, &sp88); i_part->field_0x0b0.x = i_part[-1].field_0x0b0.x + sp88.x; i_part->field_0x0b0.y = i_part[-1].field_0x0b0.y + sp88.y; i_part->field_0x0b0.z = i_part[-1].field_0x0b0.z + sp88.z; } } /* 80BBE008-80BBE338 0017E8 0330+00 1/1 0/0 0/0 .text cut_control2__FP13obj_brg_classP4br_s */ static void cut_control2(obj_brg_class* i_this, br_s* i_part) { cXyz sp7C; cXyz sp88; i_part += i_this->field_0xb1ea - 2; cXyz sp94; cMtx_YrotS(*calc_mtx, i_this->home.angle.y); sp7C.x = 0.0f; sp7C.y = 0.0f; sp7C.z = 1.0f; MtxPosition(&sp7C, &sp94); cXyz spA0(0.0f, 0.0f, 0.0f); if (fopAcM_GetRoomNo(i_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)); MtxPosition(&sp7C, &spA0); } sp7C.z = i_this->field_0xaedc * 50.0f; for (int i = 0; i < (i_this->field_0xb1ea - 1) - i_this->field_0xaed0; i++, i_part--) { f32 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); f32 var_f30 = (sp94.z + (i_part->field_0x0b0.z - i_part[1].field_0x0b0.z)) + (spA0.z * (f32)i); 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; i_part[1].field_0x0d4.x = var_r27; if (i == (i_this->field_0xb1ea - 2) - i_this->field_0xaed0) { i_part->field_0x0d4.y = var_r26; i_part->field_0x0d4.x = var_r27 + 0x8000; } cMtx_YrotS(*calc_mtx, var_r26); cMtx_XrotM(*calc_mtx, var_r27); MtxPosition(&sp7C, &sp88); i_part->field_0x0b0.x = i_part[1].field_0x0b0.x + sp88.x; i_part->field_0x0b0.y = i_part[1].field_0x0b0.y + sp88.y; i_part->field_0x0b0.z = i_part[1].field_0x0b0.z + sp88.z; } } /* 80BBE338-80BBE578 001B18 0240+00 1/1 0/0 0/0 .text himo_cut_control1__FP13obj_brg_classP4cXyzf */ 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; cMtx_YrotS(*calc_mtx, wy); MtxPosition(&sp74, &sp8C); sp74.x = 0.0f; 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); 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)); s16 sp94 = (s16)cM_atan2s(var_f31, var_f30); s16 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; } } /* 80BC23AC-80BC23D8 000008 002C+00 1/1 0/0 0/0 .data ita_z_p */ static f32 ita_z_p[] = { 0.1f, 0.3f, 0.5f, 0.75f, 0.89999998f, 1.0f, 0.89999998f, 0.75f, 0.5f, 0.3f, 0.1f, }; /* 80BBE578-80BBF21C 001D58 0CA4+00 1/1 0/0 0/0 .text obj_brg_move__FP13obj_brg_class */ 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); cXyz spD0; cXyz spDC; cXyz spE8; br_s* part = i_this->mBr; 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++) { 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)); } i_this->mBr[i].field_0x705 = 3; i_this->mBr[i].field_0x704 = 3; } i_this->field_0xaf1c = 3; /* fallthrough */ case 3: i_this->field_0xaf1e += 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; MtxPosition(&spD0, &spDC); part->field_0x0b0 += spDC; } control1(i_this, part); 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; } control2(i_this, part); control3(i_this, part); spE8 = a_this->home.pos - part->field_0x0b0; 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++) { part->field_0x0bc = part->field_0x0b0; f32 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); 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; if ((part->field_0x708 & 3) == 1) { var_f31 = 7000.0f; var_f29 = -30.0f; } else if ((part->field_0x708 & 3) == 2) { var_f31 = -7000.0f; 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); } if ((part->field_0x708 & 3) == 0 && (i_this->mType & 4) == 0 && j > -3 && j < 3 && part[j].field_0x706 != 0) { if (dComIfGp_event_runCheck()) { i_this->field_0xaed4 = 0; } else { i_this->field_0xaed4 += 2; } if (i_this->field_0xaed4 > 100) { i_this->field_0xaf1c = 4; i_this->field_0xaed0 = i + j; if (i_this->field_0xb1ef != 0) { dComIfGp_getVibration().StartShock(5, 31, cXyz(0.0f, 1.0f, 0.0f)); } break; } } if (part[j].field_0x0e4 < -200.0f) { i_this->field_0xaf1c = 4; i_this->field_0xaed0 = i + j; break; } } } 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; } } } if (part->field_0x706 != 0) { part->field_0x706--; } part->field_0x0f2 = 0; part->field_0x0d4.y = part->field_0x0f4 + part->field_0x0f6; s16 sp138 = 0; if (i_this->field_0xb1ec) { if (i == 7) { sp138 = 0x800; } else if (i == 5) { sp138 = -0x500; } else if (i == 9) { sp138 = -0x300; } } cLib_addCalcAngleS2(&part->field_0x0f4, sp138, 4, 0x400); cLib_addCalcAngleS2(&part->field_0x0f6, 0, 4, 0x400); cLib_addCalc2(&part->field_0x0ec, -15.0f, 1.0f, 5.0f); cLib_addCalc0(&part->field_0x0e8, 1.0f, 5.0f); } if (i_this->field_0xaed4 != 0) { i_this->field_0xaed4--; } i_this->field_0xaef0 = i_this->field_0xaee0; i_this->field_0xaee8 = i_this->field_0xaee0; i_this->field_0xaeec = i_this->field_0xaee4; i_this->field_0xaf28 = 3000; i_this->field_0xaf26 = 1400; f32 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++) { part->field_0x0ec = 0.0f; } i_this->field_0xaf1c = 5; i_this->field_0xaf2c = 50; i_this->field_0xaef4 = 4000.0f; mDoAud_seStart(JA_SE_OBJ_BREAK_WOOD_L, NULL, 0, 0); if (fopAcM_GetRoomNo(a_this) != 4) { int sw = fopAcM_GetParam(a_this) >> 0x18; if (sw != 0xFF) { dComIfGs_onSwitch(sw, fopAcM_GetRoomNo(a_this)); } } /* fallthrough */ case 5: br_s* var_r24 = 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; cut_control1(i_this, var_r24); var_r24[i_this->field_0xb1ea - 1].field_0x0b0 = i_this->mEndPos; cut_control2(i_this, var_r24); if (i_this->field_0xb1ed) { u32 sp11C = (u32)(i_this->field_0xaf30 * 110.0f) - 10; if (sp11C > 0x7F) { sp11C = 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); } 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; 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); } } cLib_addCalc0(&i_this->field_0xaef4, 0.05f, 80.0f); i_this->field_0xaf2e += 4500; if (i_this->field_0xb1ec) { spDC = i_this->mEndPos; spDC.y = 3200.0f; i_this->mCyl[0].SetC(spDC); spDC = a_this->home.pos; 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]); if (i_this->field_0xb1f2[i] != 0) { i_this->field_0xb1f2[i]--; } if (i_this->field_0xb1f2[i] == 0 && i_this->mCyl[i].ChkTgHit()) { i_this->field_0xb1f2[i] = 10; i_this->field_0xb1f1 = i + 1; dCcU_AtInfo spC4; spC4.mpCollider = i_this->mCyl[i].GetTgHitObj(); at_power_check(&spC4); if (spC4.mAttackPower > 3) { i_this->field_0xaef4 = 3000.0f; } else { i_this->field_0xaef4 = 1600.0f; } } } } } } /* 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); cXyz spC4; cXyz spD0; cXyz spDC; cXyz spE8; camera_class* camera = dComIfGp_getCamera(0); spC4 = a_this->current.pos - camera->lookat.eye; if (i_this->field_0xb1ef != 0) { i_this->field_0xb1ef--; } f32 sp1BC; if (i_this->field_0xb1ed == 2) { sp1BC = 5500.0f; } else if (i_this->field_0xb1ed == 1) { sp1BC = 4000.0f; } else { sp1BC = 2000.0f; } if (spC4.abs() > sp1BC) { spD0 = camera->lookat.center - camera->lookat.eye; cMtx_YrotS(*calc_mtx, -cM_atan2s(spD0.x, spD0.z)); MtxPosition(&spC4, &spD0); if (spD0.z < 0.0f) { i_this->field_0xb1f0 = 1; return 1; } } i_this->field_0xb1f0 = 0; cXyz spF4; cXyz sp100 = a_this->current.pos + ((i_this->mEndPos - a_this->current.pos) * 0.5f); f32 sp1C0; dKyw_get_AllWind_vec(&sp100, &spF4, &sp1C0); if (sp1C0 > 0.6f) { sp1C0 = 0.6f; } sp1C0 *= sp1C0; cLib_addCalc2(&i_this->field_0xaf30, sp1C0, 0.1f, 0.03f); wy = cM_atan2s(spF4.x, spF4.z); i_this->field_0xaf20++; obj_brg_move(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; if (i_this->mType & 1) { var_f29 = 1000.0f; } else if (i_this->field_0xb1ed == 1) { var_f29 = 250.0f; } else if (i_this->field_0xb1ed == 2) { var_f29 = 600.0f; } else { var_f29 = 200.0f; } 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); } else if (i_this->field_0xb1ed == 1) { var_f26 = -100.0f * sinf(((f32)i / (f32)(i_this->field_0xb1ea - 1)) * M_PI); } MtxTrans(part->field_0x0bc.x, part->field_0x0bc.y, part->field_0x0bc.z, 0); cMtx_YrotM(*calc_mtx, part->field_0x0d4.y); cMtx_XrotM(*calc_mtx, part->field_0x0d4.x); cMtx_ZrotM(*calc_mtx, part->field_0x0d4.z); if (i_this->field_0xaed0 != 0) { f32 sp1CC; if (i_this->field_0xaed0 < i) { sp1CC = 30.0f; } else { sp1CC = -30.0f; } MtxTrans(0.0f, 0.0f, sp1CC, 1); } spC4.x = part->field_0x0c8.x * 99.0f; spC4.y = 5.0f; spC4.z = 0.0f; MtxPosition(&spC4, &part->field_0x074[1]); spC4.x *= -1.0f; MtxPosition(&spC4, &part->field_0x050[1]); spC4.y = -30.0f; MtxPosition(&spC4, &part->field_0x050[2]); spC4.x *= -1.0f; MtxPosition(&spC4, &part->field_0x074[2]); if (part->field_0x708 & 4) { if (part->field_0x0f8 != 0) { if (part->field_0x0f8 > 0) { part->field_0x0f8--; } spC4.x = i_this->field_0xaedc * 66.0f; spC4.y = 0.0f; spC4.z = 0.0f; MtxPosition(&spC4, &part->field_0x074[0]); spC4.x *= -1.0f; MtxPosition(&spC4, &part->field_0x050[0]); part->field_0x074[0].y += var_f29 + var_f26; part->field_0x050[0].y += var_f29 + var_f26; if (i_this->mType & 8) { MtxPush(); 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); 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); 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) { 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) { part->field_0x050[0].y = var_f30; } } if ((i_this->mType & 2) && i == i_this->field_0xb1eb - 1) { i_this->field_0xaf04 = part->field_0x074[0]; i_this->field_0xaf10 = part->field_0x050[0]; } } if (!(i_this->mType & 9)) { dCcU_AtInfo spB8; if (i_this->field_0xaed0 != 0) { part->field_0x708 &= 0x1C; } if (part->mCyl[0].ChkTgHit() && part->field_0x0fe[0] < 10) { part->mCyl[0].OnTgNoConHit(); part->field_0x0fe[0] = 20; spB8.mpCollider = part->mCyl[0].GetTgHitObj(); at_power_check(&spB8); if (!spB8.mpCollider->ChkAtType(0x10)) { spB8.mAttackPower = 4; } part->field_0x704 -= spB8.mAttackPower; if (part->field_0x704 < 1) { part->field_0x708 &= 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); if (fopAcM_GetRoomNo(a_this) == 4) { i_this->field_0xaf1c = 4; i_this->field_0xaed0 = 10; } } } if (part->mCyl[1].ChkTgHit() && part->field_0x0fe[1] < 10) { part->mCyl[1].OnTgNoConHit(); part->field_0x0fe[1] = 20; spB8.mpCollider = part->mCyl[1].GetTgHitObj(); at_power_check(&spB8); if (!spB8.mpCollider->ChkAtType(0x10)) { spB8.mAttackPower = 4; } part->field_0x705 -= spB8.mAttackPower; if (part->field_0x705 < 1) { part->field_0x708 &= 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); } } } else { cXyz sp118; sp118.z = 2.0f; sp118.y = 2.0f; sp118.x = 2.0f; if (part->mCyl[0].ChkTgHit() && part->field_0x0fe[0] < 10) { part->mCyl[0].OnTgNoConHit(); if (i_this->field_0xb1ed == 2) { part->field_0x0fe[0] = 7; } else { 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); } if (part->mCyl[1].ChkTgHit() && part->field_0x0fe[1] < 10) { part->mCyl[1].OnTgNoConHit(); if (i_this->field_0xb1ed == 2) { part->field_0x0fe[1] = 7; } else { 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); } } cXyz sp124(part->field_0x074[1]); if (!(part->field_0x708 & 1)) { sp124.y -= 10000.0f; } part->mCyl[0].SetC(sp124); if (part->field_0x0fa != 0) { part->field_0x0fa--; if (part->field_0xc != NULL) { mDoMtx_stack_c::transS(part->field_0x074[1].x, part->field_0x074[1].y + 100.0f, part->field_0x074[1].z); part->field_0xc->setGlobalRTMatrix(mDoMtx_stack_c::get()); if (part->field_0x0fa == 0) { part->field_0xc->becomeInvalidEmitter(); part->field_0xc = NULL; } } if (part->field_0x0fa == 0) { part->field_0x708 &= 0x1E; } } else if (var_r25) { cXyz sp130; if (!(i_this->mType & 9)) { sp124.y += 100.0f; sp130 = sp124 - sp10C; sp130.y *= 0.4f; if (sp130.abs() < 50.0f) { part->field_0x0fa = 30; } } } sp124 = part->field_0x050[1]; if (!(part->field_0x708 & 2)) { sp124.y -= 10000.0f; } part->mCyl[1].SetC(sp124); if (part->field_0x0fc != 0) { part->field_0x0fc--; if (part->field_0x10 != NULL) { mDoMtx_stack_c::transS(part->field_0x050[1].x, part->field_0x050[1].y + 100.0f, part->field_0x050[1].z); part->field_0x10->setGlobalRTMatrix(mDoMtx_stack_c::get()); if (part->field_0x0fc == 0) { part->field_0x10->becomeInvalidEmitter(); part->field_0x10 = NULL; } } if (part->field_0x0fc == 0) { part->field_0x708 &= 0x1D; } } else if (var_r25) { cXyz sp13C; if (!(i_this->mType & 9)) { sp124.y += 100.0f; sp13C = sp124 - sp10C; sp13C.y *= 0.4f; if (sp13C.abs() < 50.0f) { part->field_0x0fc = 30; } } } dComIfG_Ccsp()->Set(&part->mCyl[0]); dComIfG_Ccsp()->Set(&part->mCyl[1]); } for (int j = 0; j < 2; j++) { if (part->field_0x0fe[j] != 0) { part->field_0x0fe[j]--; } } 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; part->mpBridgeModel->setBaseScale(part->field_0x0c8); part->field_0x708 = 0; } MtxTrans(0.0f, part->field_0x0c8.y * -3.0f, 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); int sp1E4 = i_this->field_0xaed8 + 1; cXyz sp148; spC4.x = 0.0f; spC4.y = 0.0f; 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; cMtx_YrotS(*calc_mtx, wy); MtxPosition(&spC4, &sp148); 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); 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; cXyz* sp1DC = part->field_0x014.getPos(0); cXyz* 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; } else { var_f27 = i_this->field_0xaedc * 16.0f; var_f28 = var_f27; } *sp1DC = sp1D4[sp1E4]; himo_cut_control1(i_this, sp1DC, var_f28); *sp1E0 = part->field_0x074[1]; himo_cut_control1(i_this, sp1E0, var_f27); } 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); 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; cXyz* sp1DC = part->field_0x014.getPos(1); cXyz* 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; } else { var_f27 = i_this->field_0xaedc * 16.0f; var_f28 = var_f27; } *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->mpBgW->CopyBackVtx(); Vec* vtx_tbl = (Vec*)i_this->mpBgW->GetVtxTbl(); int sp1F8 = 0; for (int i = 0; i < i_this->mpBgW->GetVtxNum(); i++) { int temp = i >> 2; if (i < i_this->field_0xb1eb) { switch (i & 3) { case 0: vtx_tbl[i] = i_this->mBr[temp].field_0x074[2]; break; case 1: vtx_tbl[i] = i_this->mBr[temp].field_0x050[2]; break; case 2: vtx_tbl[i] = i_this->mBr[temp].field_0x074[1]; break; case 3: vtx_tbl[i] = i_this->mBr[temp].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); spC4.y = 0.0f; spC4.x = 0.0f; if (temp == 0) { spC4.z = 50.0f; } else if (i_this->field_0xb1eb == i_this->field_0xb1ea) { spC4.z = -50.0f; } else { spC4.z = -40.0f; } MtxPosition(&spC4, &spD0); vtx_tbl[i].x += spD0.x; vtx_tbl[i].y += spD0.y; vtx_tbl[i].z += spD0.z; } sp1F8 = i; } else { vtx_tbl[i] = vtx_tbl[sp1F8]; } if (i_this->field_0xaf1c > 3) { vtx_tbl[i].y = 10000.0f; } } i_this->mpBgW->Move(); return 1; } /* 80BC0834-80BC0854 004014 0020+00 1/0 0/0 0/0 .text daObj_Brg_IsDelete__FP13obj_brg_class */ static int daObj_Brg_IsDelete(obj_brg_class* i_this) { br_s* part = i_this->mBr; for (int i = 0; i < i_this->field_0xb1ea; i++, part++) { mDoAud_seDeleteObject(&part->field_0x0b0); } return 1; } /* 80BC0854-80BC08B0 004034 005C+00 1/0 0/0 0/0 .text daObj_Brg_Delete__FP13obj_brg_class */ static int daObj_Brg_Delete(obj_brg_class* i_this) { dComIfG_resDelete(&i_this->mPhase, "Obj_brg"); if (i_this->mpBgW != NULL) { dComIfG_Bgsp().Release(i_this->mpBgW); } return 1; } /* 80BC08B0-80BC0A40 004090 0190+00 1/1 0/0 0/0 .text CreateInit__FP10fopAc_ac_c */ static void CreateInit(fopAc_ac_c* i_this) { obj_brg_class* a_this = (obj_brg_class*)i_this; a_this->mCcStts.Init(0xFF, 0xFF, i_this); static dCcD_SrcCyl himo_cyl_src = { { {0x0, {{0x0, 0x0, 0x0}, {0xd8fbfdff, 0x3}, 0x75}}, // mObj {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt {dCcD_SE_NONE, 0xff, 0x0, 0x0, 0x1}, // mGObjTg {0x0}, // mGObjCo }, // mObjInf { {0.0f, 0.0f, 0.0f}, // mCenter 5.0f, // mRadius 1000.0f // mHeight } // mCyl }; static dCcD_SrcCyl wire_cyl_src = { { {0x0, {{0x0, 0x0, 0x0}, {0xd8fbfdff, 0x3}, 0x75}}, // mObj {dCcD_SE_NONE, 0x0, 0x0, 0x0, 0x0}, // mGObjAt {dCcD_SE_METAL, 0x2, 0x0, 0x0, 0x3}, // mGObjTg {0x0}, // mGObjCo }, // mObjInf { {0.0f, 0.0f, 0.0f}, // mCenter 5.0f, // mRadius 1000.0f // mHeight } // mCyl }; br_s* part = a_this->mBr; for (int i = 0; i < a_this->field_0xb1ea; i++, part++) { for (int j = 0; j < 2; j++) { if (a_this->mType & 8) { part->mCyl[j].Set(wire_cyl_src); part->mCyl[j].SetStts(&a_this->mCcStts); part->mCyl[j].SetH(400.0f); } else { part->mCyl[j].Set(himo_cyl_src); part->mCyl[j].SetStts(&a_this->mCcStts); if (!(a_this->mType & 1)) { part->mCyl[j].SetH(200.0f); part->mCyl[j].OffTgShield(); } } } } if (a_this->field_0xb1ec != 0) { a_this->mCyl[0].Set(himo_cyl_src); a_this->mCyl[0].SetStts(&a_this->mCcStts); a_this->mCyl[1].Set(himo_cyl_src); a_this->mCyl[1].SetStts(&a_this->mCcStts); a_this->mCyl[0].SetH(500.0f); a_this->mCyl[1].SetH(500.0f); a_this->mCyl[0].OffCoSetBit(); a_this->mCyl[1].OffCoSetBit(); } } /* 80BC0A40-80BC1050 004220 0610+00 1/1 0/0 0/0 .text CallbackCreateHeap__FP10fopAc_ac_c */ static int CallbackCreateHeap(fopAc_ac_c* i_this) { obj_brg_class* a_this = (obj_brg_class*)i_this; int sp30 = a_this->mType & 1; if (a_this->mType == 4) { sp30 = 1; } else if (a_this->mType == 8) { sp30 = 2; } static const int obj_brg_bmd[] = {5, 6, 7}; J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("Obj_brg", obj_brg_bmd[sp30]); JUT_ASSERT(0, modelData != 0); J3DModelData* modelData2; if (a_this->mType == 8) { modelData2 = (J3DModelData*)dComIfG_getObjectRes("Obj_brg", 8); JUT_ASSERT(0, modelData2 != 0); } br_s* part = a_this->mBr; for (int i = 0; i < a_this->field_0xb1ea; i++, part++) { part->mpBridgeModel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084); if (part->mpBridgeModel == NULL) { return 0; } if (a_this->mType == 8) { for (int j = 0; j < 2; j++) { part->mpKnotModels[j] = mDoExt_J3DModel__create(modelData2, 0x80000, 0x11000084); if (part->mpKnotModels[j] == NULL) { return 0; } } } if (!(a_this->mType & 4)) { part->field_0x708 = 7; if (a_this->field_0xb1ed == 1) { part->field_0x708 |= 0x10; if (i == 3 || i == 4 || i == 7 || i == 11 || i == 13 || i == 15 || i == 18 || i == 19) { part->field_0x708 = 0x16; } else if (i == 1 || i == 2 || i == 5 || i == 6 || i == 9 || i == 12 || i == 16 || i == 17) { part->field_0x708 = 0x15; } } if ((a_this->mType & 1) != 1) { part->field_0x0f8 = -1; BOOL sp40; if (a_this->mType & 8) { sp40 = part->field_0x014.init(4, 5, (ResTIMG*)dComIfG_getObjectRes("Obj_brg", 16), 1); } else { sp40 = part->field_0x014.init(4, 5, (ResTIMG*)dComIfG_getObjectRes("Obj_brg", 15), 1); } if (!sp40) { return 0; } } if (i == 0) { BOOL sp44; if (a_this->mType & 8) { sp44 = a_this->field_0xae90.init(2, a_this->field_0xb1ea + 2, (ResTIMG*)dComIfG_getObjectRes("Obj_brg", 16), 0); } else { sp44 = a_this->field_0xae90.init(2, a_this->field_0xb1ea + 2, (ResTIMG*)dComIfG_getObjectRes("Obj_brg", 15), 0); } if (!sp44) { return 0; } cXyz* sp48 = a_this->field_0xae90.getPos(0); for (int j = 0; j < a_this->field_0xb1ea + 2; j++, sp48++) { *sp48 = i_this->current.pos; } sp48 = a_this->field_0xae90.getPos(1); for (int j = 0; j < a_this->field_0xb1ea + 2; j++, sp48++) { *sp48 = i_this->current.pos; } } } if (!(a_this->mType & 1)) { part->field_0x0c8.y = 1.0f; part->field_0x0c8.x = cM_rndF(0.05f) + 1.0f; } else { part->field_0x0c8.y = 1.0f; part->field_0x0c8.x = 1.0f; } if (a_this->field_0xb1ed == 1) { part->field_0x0c8.x *= 1.5f; part->field_0x0c8.y *= 1.5f; } else if (a_this->field_0xb1ed == 2) { part->field_0x0c8.x *= 2.5f; part->field_0x0c8.y *= 2.5f; } part->field_0x0c8.z = a_this->field_0xaedc; part->mpBridgeModel->setBaseScale(part->field_0x0c8); if (cM_rndF(1.0f) < 0.5f) { part->field_0x0f0 = 0x8000; } } OS_REPORT("BGSV SET 1! \n"); a_this->mpBgW = new dBgWSv(); if (a_this->mpBgW == NULL) { return 0; } if ((a_this->mType & 1) == 1) { if (a_this->mpBgW->Set((cBgD_t*)dComIfG_getObjectRes("Obj_brg", 12), 0)) { return 0; } } else { if (a_this->mpBgW->Set((cBgD_t*)dComIfG_getObjectRes("Obj_brg", 11), 0)) { return 0; } } a_this->mpBgW->SetRideCallback(ride_call_back); a_this->mpBgW->CopyBackVtx(); Vec* vtx_tbl = (Vec*)a_this->mpBgW->GetVtxTbl(); for (int i = 0; i < a_this->mpBgW->GetVtxNum(); i++) { vtx_tbl[i] = i_this->current.pos; } a_this->mpBgW->Move(); OS_REPORT("BGSV SET 2! \n"); 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; fopAcM_SetupActor(i_this, obj_brg_class); int 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; OS_REPORT("OBJ_BRG SET %x\n", fopAcM_GetParam(i_this)); u8 path_id = fopAcM_GetParam(i_this) >> 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; } if (path_id == 0xFF) { if (strcmp(dComIfGp_getStartStageName(), "D_MN05") == 0) { if (fopAcM_GetRoomNo(i_this) == 2) { a_this->mType = 4; i_this->home.pos.set(NREG_F(0) + 10155.0f + 1586.0f, NREG_F(1) + 3740.0f + 2.0f, NREG_F(2) + 5015.0f + -1280.0f); a_this->mEndPos.set(NREG_F(3) + 11070.0f + 1586.0f, NREG_F(4) + 3730.0f + 2.0f, NREG_F(5) + 4705.0f + -1280.0f); a_this->field_0xb1ec = 1; } else if (fopAcM_GetRoomNo(i_this) == 4) { 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_0xb1ed = 1; } else { return cPhs_ERROR_e; } } } else { dPath* 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; } else { OS_REPORT("NON PATH !!!!!!!!! %d!\n", path_id); return cPhs_ERROR_e; } } cXyz sp40 = a_this->mEndPos - i_this->home.pos; i_this->home.angle.y = 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; if (a_this->field_0xb1ed == 1) { var_f31 = TREG_F(14) + 2.0f; } else if (a_this->field_0xb1ed == 2) { var_f31 = TREG_F(15); } else if (a_this->field_0xb1ec != 0) { var_f31 = 0.0f; } else if (sp40.abs() > 1300.0f) { var_f31 += TREG_F(15) + 3.0f; } else if (fopAcM_GetRoomNo(i_this) == 1) { var_f31 = 0.0f; } a_this->field_0xb1ea = (sp40.abs() / var_f31 + 47.0f) * a_this->field_0xaedc; if (a_this->field_0xb1ea > 24) { OS_REPORT("TOO MANY BIRIDGE !!!! %d!\n", a_this->field_0xb1ea); return cPhs_ERROR_e; } OS_REPORT("BIRIDGE JOINT !!!! %d!\n", a_this->field_0xb1ea); if (!fopAcM_entrySolidHeap(i_this, CallbackCreateHeap, 0x375E0)) { return cPhs_ERROR_e; } CreateInit(a_this); if (a_this->mpBgW != NULL) { if (dComIfG_Bgsp().Regist(a_this->mpBgW, i_this)) { return cPhs_ERROR_e; } } if (a_this->mType & 2) { if (a_this->field_0xb1ea >= 16) { a_this->field_0xb1eb = 15; } else if (a_this->field_0xb1ea >= 12) { a_this->field_0xb1eb = 11; } else { a_this->field_0xb1eb = 7; } } else { a_this->field_0xb1eb = a_this->field_0xb1ea; } 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)); br_s* part = a_this->mBr; for (int i = 0; i < a_this->field_0xb1ea; i++, 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; if (a_this->field_0xb1ed == 2) { sp60 = 2; static cXyz brg_init_pos[] = { cXyz(334.0f, 249.0f, -11868.0f), cXyz(334.0f, 180.0f, -12082.0f), cXyz(334.0f, 114.0f, -12297.0f), cXyz(334.0f, 50.0f, -12512.0f), cXyz(334.0f, -9.0f, -12729.0f), cXyz(334.0f, -63.0f, -12948.0f), cXyz(334.0f, -111.0f, -13168.0f), cXyz(334.0f, -150.0f, -13389.0f), cXyz(334.0f, -181.0f, -13612.0f), cXyz(334.0f, -203.0f, -13836.0f), cXyz(334.0f, -215.0f, -14061.0f), cXyz(334.0f, -217.0f, -14286.0f), cXyz(334.0f, -208.0f, -14511.0f), cXyz(334.0f, -190.0f, -14735.0f), cXyz(334.0f, -162.0f, -14958.0f), cXyz(334.0f, -126.0f, -15180.0f), cXyz(334.0f, -82.0f, -15401.0f), cXyz(334.0f, -31.0f, -15620.0f), cXyz(334.0f, 24.0f, -15838.0f), cXyz(334.0f, 85.0f, -16054.0f), cXyz(334.0f, 150.0f, -16270.0f), 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 (int i = 0; i < sp60; i++) { if (i == 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) { a_this->field_0xaf1c = 5; a_this->field_0xaed0 = 10; a_this->mType = 4; } else { a_this->field_0xaf1c = 5; a_this->field_0xaed0 = a_this->field_0xb1ea / 2; } } daObj_Brg_Execute(a_this); } } return phase_state; } AUDIO_INSTANCES; /* 80BC2460-80BC2480 -00001 0020+00 1/0 0/0 0/0 .data l_daObj_Brg_Method */ static actor_method_class l_daObj_Brg_Method = { (process_method_func)daObj_Brg_Create, (process_method_func)daObj_Brg_Delete, (process_method_func)daObj_Brg_Execute, (process_method_func)daObj_Brg_IsDelete, (process_method_func)daObj_Brg_Draw, }; /* 80BC2480-80BC24B0 -00001 0030+00 0/0 0/0 1/0 .data g_profile_OBJ_BRG */ extern actor_process_profile_definition g_profile_OBJ_BRG = { fpcLy_CURRENT_e, // mLayerID 3, // mListID fpcPi_CURRENT_e, // mListPrio PROC_OBJ_BRG, // mProcName &g_fpcLf_Method.base, // sub_method sizeof(obj_brg_class), // mSize 0, // mSizeOther 0, // mParameters &g_fopAc_Method.base, // sub_method 54, // mPriority &l_daObj_Brg_Method, // sub_method 0x00044000, // mStatus fopAc_ACTOR_e, // mActorType fopAc_CULLBOX_CUSTOM_e, // cullType };