summaryrefslogtreecommitdiff
path: root/src/d/actor/d_a_b_oh.cpp
diff options
context:
space:
mode:
authorTakaRikka <38417346+TakaRikka@users.noreply.github.com>2024-10-10 07:29:58 -0700
committerGitHub <noreply@github.com>2024-10-10 08:29:58 -0600
commit12eb254d769d84743b5cc6cd5424057c57eaf0ad (patch)
tree4509be332b2ccfc6fe939f47740d68f7746eca3e /src/d/actor/d_a_b_oh.cpp
parent2fd702c0ac170a789af879b8b92a82d4dcc9080c (diff)
switch to dtk setup (#2203)
* switch to dtk setup * some cleanup / fixes * cleanup d_a_alink literals * Restore doxygen, update CI & README.md (#1) * Fix build image ref (#2) --------- Co-authored-by: Luke Street <luke@street.dev>
Diffstat (limited to 'src/d/actor/d_a_b_oh.cpp')
-rw-r--r--src/d/actor/d_a_b_oh.cpp1209
1 files changed, 1209 insertions, 0 deletions
diff --git a/src/d/actor/d_a_b_oh.cpp b/src/d/actor/d_a_b_oh.cpp
new file mode 100644
index 0000000000..713b6664f1
--- /dev/null
+++ b/src/d/actor/d_a_b_oh.cpp
@@ -0,0 +1,1209 @@
+/**
+ * d_a_b_oh.cpp
+ * Morpheel Tentacle
+ */
+
+/**
+ * This almost entirely matches, there's just an issue with extra vtables / weak dtors being emitted
+ * things like cCcD_ShapeAttr, dCcD/cCcD_Stts, etc
+ */
+
+#include "dol2asm.h"
+#include "f_op/f_op_actor_mng.h"
+#include "d/d_com_inf_game.h"
+#include "d/actor/d_a_b_ob.h"
+#include "d/actor/d_a_b_oh.h"
+#include "SSystem/SComponent/c_lib.h"
+#include "SSystem/SComponent/c_math.h"
+#include "d/actor/d_a_player.h"
+#include "c/c_damagereaction.h"
+
+//
+// Forward References:
+//
+
+extern "C" void __ct__12daB_OH_HIO_cFv();
+extern "C" static void nodeCallBack__FP8J3DJointi();
+extern "C" static void daB_OH_Draw__FP10b_oh_class();
+extern "C" static void start__FP10b_oh_class();
+extern "C" void __dt__4cXyzFv();
+extern "C" static void wait__FP10b_oh_class();
+extern "C" static void attack__FP10b_oh_class();
+extern "C" static void caught__FP10b_oh_class();
+extern "C" static void end__FP10b_oh_class();
+extern "C" static void non__FP10b_oh_class();
+extern "C" static void action__FP10b_oh_class();
+extern "C" static void damage_check__FP10b_oh_class();
+extern "C" static void daB_OH_Execute__FP10b_oh_class();
+extern "C" static bool daB_OH_IsDelete__FP10b_oh_class();
+extern "C" static void daB_OH_Delete__FP10b_oh_class();
+extern "C" static void useHeapInit__FP10fopAc_ac_c();
+extern "C" void __dt__12J3DFrameCtrlFv();
+extern "C" static void daB_OH_Create__FP10fopAc_ac_c();
+extern "C" void __dt__8dCcD_SphFv();
+extern "C" void __ct__8dCcD_SphFv();
+extern "C" void __dt__8cM3dGSphFv();
+extern "C" void __dt__8cM3dGAabFv();
+extern "C" void __ct__4cXyzFv();
+extern "C" void __dt__5csXyzFv();
+extern "C" void __ct__5csXyzFv();
+extern "C" void __dt__12daB_OH_HIO_cFv();
+extern "C" void __sinit_d_a_b_oh_cpp();
+extern "C" extern char const* const d_a_b_oh__stringBase0;
+
+//
+// External References:
+//
+
+extern "C" void mDoMtx_XrotM__FPA4_fs();
+extern "C" void mDoMtx_YrotM__FPA4_fs();
+extern "C" void mDoMtx_ZrotM__FPA4_fs();
+extern "C" void scaleM__14mDoMtx_stack_cFfff();
+extern "C" void play__14mDoExt_baseAnmFv();
+extern "C" void init__13mDoExt_btkAnmFP16J3DMaterialTableP19J3DAnmTextureSRTKeyiifss();
+extern "C" void entry__13mDoExt_btkAnmFP16J3DMaterialTablef();
+extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss();
+extern "C" void entry__13mDoExt_brkAnmFP16J3DMaterialTablef();
+extern "C" void create__21mDoExt_invisibleModelFP8J3DModelUc();
+extern "C" void entryDL__21mDoExt_invisibleModelFP4cXyz();
+extern "C" void
+__ct__14mDoExt_McaMorfFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiiPvUlUl();
+extern "C" void play__14mDoExt_McaMorfFP3VecUlSc();
+extern "C" void modelCalc__14mDoExt_McaMorfFv();
+extern "C" void cDmrNowMidnaTalk__Fv();
+extern "C" void __ct__10fopAc_ac_cFv();
+extern "C" void fopAcIt_Judge__FPFPvPv_PvPv();
+extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl();
+extern "C" void fopAcM_searchActorAngleY__FPC10fopAc_ac_cPC10fopAc_ac_c();
+extern "C" void fopAcM_searchActorDistance__FPC10fopAc_ac_cPC10fopAc_ac_c();
+extern "C" void fpcSch_JudgeByID__FPvPv();
+extern "C" void dComIfG_resLoad__FP30request_of_phase_process_classPCc();
+extern "C" void dComIfG_resDelete__FP30request_of_phase_process_classPCc();
+extern "C" void dComIfGp_getReverb__Fi();
+extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci();
+extern "C" void setHitMark__13dPa_control_cFUsP10fopAc_ac_cPC4cXyzPC5csXyzPC4cXyzUl();
+extern "C" void
+set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf();
+extern "C" void StartShock__12dVibration_cFii4cXyz();
+extern "C" void __ct__10dCcD_GSttsFv();
+extern "C" void Move__10dCcD_GSttsFv();
+extern "C" void Init__9dCcD_SttsFiiP10fopAc_ac_c();
+extern "C" void __ct__12dCcD_GObjInfFv();
+extern "C" void __dt__12dCcD_GObjInfFv();
+extern "C" void ChkTgHit__12dCcD_GObjInfFv();
+extern "C" void GetTgHitObj__12dCcD_GObjInfFv();
+extern "C" void ChkCoHit__12dCcD_GObjInfFv();
+extern "C" void GetCoHitObj__12dCcD_GObjInfFv();
+extern "C" void Set__8dCcD_SphFRC11dCcD_SrcSph();
+extern "C" void cc_at_check__FP10fopAc_ac_cP11dCcU_AtInfo();
+extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
+extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
+extern "C" void GetAc__8cCcD_ObjFv();
+extern "C" void Set__4cCcSFP8cCcD_Obj();
+extern "C" void cM_atan2s__Fff();
+extern "C" void cM_rndF__Ff();
+extern "C" void cM_rndFX__Ff();
+extern "C" void SetC__8cM3dGSphFRC4cXyz();
+extern "C" void SetR__8cM3dGSphFf();
+extern "C" void cLib_addCalc2__FPffff();
+extern "C" void cLib_addCalc0__FPfff();
+extern "C" void cLib_addCalcAngleS2__FPssss();
+extern "C" void MtxTrans__FfffUc();
+extern "C" void MtxScale__FfffUc();
+extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc();
+extern "C" void startTentacleSound__12Z2CreatureOIF10JAISoundIDUcUlSc();
+extern "C" void* __nw__FUl();
+extern "C" void __dl__FPv();
+extern "C" void init__12J3DFrameCtrlFs();
+extern "C" void __construct_array();
+extern "C" void _savegpr_20();
+extern "C" void _savegpr_23();
+extern "C" void _savegpr_24();
+extern "C" void _savegpr_25();
+extern "C" void _savegpr_26();
+extern "C" void _savegpr_27();
+extern "C" void _savegpr_28();
+extern "C" void _savegpr_29();
+extern "C" void _restgpr_20();
+extern "C" void _restgpr_23();
+extern "C" void _restgpr_24();
+extern "C" void _restgpr_25();
+extern "C" void _restgpr_26();
+extern "C" void _restgpr_27();
+extern "C" void _restgpr_28();
+extern "C" void _restgpr_29();
+extern "C" extern void* __vt__8dCcD_Sph[36];
+extern "C" extern void* __vt__9dCcD_Stts[11];
+extern "C" extern void* __vt__12cCcD_SphAttr[25];
+extern "C" extern void* __vt__14cCcD_ShapeAttr[22];
+extern "C" extern void* __vt__9cCcD_Stts[8];
+extern "C" u8 now__14mDoMtx_stack_c[48];
+extern "C" u8 mCurrentMtx__6J3DSys[48];
+extern "C" u8 sincosTable___5JMath[65536];
+extern "C" extern u8 struct_80450C98[4];
+extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */];
+extern "C" void __register_global_object();
+
+//
+// Declarations:
+//
+
+/* 8061DAAC-8061DAEC 000030 0040+00 1/1 0/0 0/0 .data cc_sph_src$4457 */
+
+/* 8061B72C-8061B75C 0000EC 0030+00 1/1 0/0 0/0 .text __ct__12daB_OH_HIO_cFv */
+daB_OH_HIO_c::daB_OH_HIO_c() {
+ field_0x4 = -1;
+ mModelSize = 1.0f;
+ mLength = 70.0f;
+}
+
+/* 8061B75C-8061B8B0 00011C 0154+00 1/1 0/0 0/0 .text nodeCallBack__FP8J3DJointi */
+static int nodeCallBack(J3DJoint* param_0, int param_1) {
+ if (param_1 == 0) {
+ int jnt_no = param_0->getJntNo();
+ J3DModel* model_p = j3dSys.getModel();
+ b_oh_class* this_ = (b_oh_class*)model_p->getUserArea();
+
+ if (this_ != NULL && jnt_no >= this_->field_0xca8 && jnt_no <= 29) {
+ MTXCopy(model_p->getAnmMtx(jnt_no), *calc_mtx);
+ mDoMtx_YrotM(*calc_mtx, this_->field_0x61c[jnt_no].y + this_->field_0x784[jnt_no].y);
+ mDoMtx_ZrotM(*calc_mtx, this_->field_0x61c[jnt_no].x + this_->field_0x784[jnt_no].x);
+ MtxTrans(this_->mTentacleLength + -100.0f, 1.0f, 1.0f, 1);
+ MTXCopy(*calc_mtx, J3DSys::mCurrentMtx);
+ MtxScale(1.0f, this_->field_0x8ec[jnt_no] + this_->field_0x9dc[jnt_no],
+ this_->field_0x8ec[jnt_no] + this_->field_0x9dc[jnt_no], 1);
+ model_p->setAnmMtx(jnt_no, *calc_mtx);
+ }
+ }
+
+ return 1;
+}
+
+/* 8061B8B0-8061B960 000270 00B0+00 1/0 0/0 0/0 .text daB_OH_Draw__FP10b_oh_class */
+static int daB_OH_Draw(b_oh_class* i_this) {
+ if (i_this->mAction == OH_ACTION_NON) {
+ return 1;
+ }
+
+ J3DModel* model_p = i_this->mpMorf->getModel();
+
+ g_env_light.settingTevStruct(0, &i_this->current.pos, &i_this->tevStr);
+ g_env_light.setLightTevColorType_MAJI(model_p, &i_this->tevStr);
+
+ i_this->mpBtk->entry(model_p->getModelData());
+ i_this->mpBrk->entry(model_p->getModelData());
+ i_this->mInvisModel.entryDL(NULL);
+ return 1;
+}
+
+/* 8061DB78-8061DB7C 000008 0001+03 2/2 0/0 0/0 .bss @1109 */
+static u8 lit_1109[1 + 3 /* padding */];
+
+/* 8061DB7C-8061DB80 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
+
+/* 8061DB80-8061DB84 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
+
+/* 8061DB84-8061DB88 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
+
+/* 8061DB88-8061DB8C 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
+
+/* 8061DB8C-8061DB90 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
+
+/* 8061DB90-8061DB94 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
+
+/* 8061DB94-8061DB98 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
+
+/* 8061DB98-8061DB9C 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
+
+/* 8061DB9C-8061DBA0 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
+
+/* 8061DBA0-8061DBA4 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
+
+/* 8061DBA4-8061DBA8 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
+
+/* 8061DBA8-8061DBAC 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
+
+/* 8061DBAC-8061DBB0 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
+
+/* 8061DBB0-8061DBB4 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
+
+/* 8061DBB4-8061DBB8 -00001 0004+00 1/2 0/0 0/0 .bss None */
+/* 8061DBB4 0001+00 data_8061DBB4 @1009 */
+/* 8061DBB5 0003+00 data_8061DBB5 None */
+#pragma push
+#pragma force_active on
+static u8 struct_8061DBB4;
+#pragma pop
+
+static u8 data_8061DBB5;
+
+/* 8061DBC4-8061DBD4 000054 0010+00 2/3 0/0 0/0 .bss l_HIO */
+static daB_OH_HIO_c l_HIO;
+
+/* 8061DBD4-8061DBD8 000064 0004+00 6/7 0/0 0/0 .bss boss */
+static b_ob_class* boss;
+
+/* 8061DBD8-8061DBDC 000068 0004+00 0/1 0/0 0/0 .bss Cinit */
+#pragma push
+#pragma force_active on
+static int Cinit;
+#pragma pop
+
+/* 8061B960-8061BB18 000320 01B8+00 1/1 0/0 0/0 .text start__FP10b_oh_class */
+static void start(b_oh_class* i_this) {
+ cXyz sp28;
+
+ switch (i_this->mActionPhase) {
+ case 0:
+ if (boss->mCoreHandNo != i_this->field_0x5c8) {
+ i_this->field_0xcac = -1500.0f;
+ } else {
+ i_this->field_0x608 = 0.3f;
+ i_this->mActionPhase = 1;
+ }
+ break;
+ case 1:
+ if (i_this->field_0xcac < -100.0f) {
+ for (int i = 0; i < 28; i++) {
+ MTXCopy(i_this->mpMorf->getModel()->getAnmMtx(i), mDoMtx_stack_c::get());
+ mDoMtx_stack_c::multVecZero(&sp28);
+
+ if (sp28.y > boss->field_0x47a0) {
+ sp28.y = boss->field_0x47a0;
+ i_this->field_0x1f80 =
+ dComIfGp_particle_set(i_this->field_0x1f80, 0x8808, &sp28, NULL, NULL);
+ break;
+ }
+ }
+ }
+
+ cLib_addCalc0(&i_this->field_0xcac, 0.1f, 30.0f);
+ cLib_addCalc2(&i_this->field_0x608, 0.3f, 0.1f, 0.005f);
+ break;
+ case 2:
+ cLib_addCalc2(&i_this->field_0x608, 1.0f, 0.1f, 0.05f);
+ break;
+ }
+}
+
+/* 8061BB54-8061BC6C 000514 0118+00 1/1 0/0 0/0 .text wait__FP10b_oh_class */
+static void wait(b_oh_class* i_this) {
+ daPy_py_c* player_p = (daPy_py_c*)dComIfGp_getPlayer(0);
+
+ switch (i_this->mActionPhase) {
+ case 0:
+ i_this->mActionPhase = 1;
+ i_this->mTimers[0] = (s16)(cM_rndF(30.0f) + 60.0f);
+ break;
+ case 1:
+ cLib_addCalc2(&i_this->field_0x608, 1.0f, 0.1f, 0.005f);
+
+ if (i_this->field_0xca8 == 0 && player_p->current.pos.y < -23000.0f &&
+ i_this->mDistToPlayer < 1300.0f && i_this->mTimers[0] == 0 && boss->field_0x4744 == 0 &&
+ boss->field_0x4794 == 0)
+ {
+ i_this->mAction = OH_ACTION_ATTACK;
+ i_this->mActionPhase = 0;
+ i_this->field_0xc98 = 0;
+ boss->field_0x4794 = 3;
+ }
+ break;
+ }
+}
+
+/* 8061BC6C-8061C070 00062C 0404+00 1/1 0/0 0/0 .text attack__FP10b_oh_class */
+static void attack(b_oh_class* i_this) {
+ daPy_py_c* player_p = (daPy_py_c*)dComIfGp_getPlayer(0);
+ i_this->field_0xca0++;
+
+ switch (i_this->mActionPhase) {
+ case 0:
+ i_this->mActionPhase = 1;
+ i_this->field_0xc9c = 0.0f;
+ i_this->field_0xca2 = 0;
+ i_this->field_0xca4 = 0;
+
+ if ((s16)(i_this->mAngleToPlayer - i_this->current.angle.y) > 0) {
+ i_this->field_0xc88 = 1;
+ } else {
+ i_this->field_0xc88 = -1;
+ }
+
+ i_this->mActionPhase = 2;
+ i_this->mTimers[0] = 100;
+ i_this->field_0xca0 = 0;
+ i_this->field_0xc98 = 0;
+ case 1:
+ case 2:
+ if (i_this->mTimers[0] == 0) {
+ i_this->mAction = OH_ACTION_WAIT;
+ i_this->mActionPhase = 0;
+ i_this->field_0xc98 = 0;
+ i_this->field_0xca2 = 0;
+ return;
+ }
+ case 3:
+ cLib_addCalcAngleS2(&i_this->field_0xc98, 0x200, 1, 32);
+
+ if (i_this->field_0xca0 > 8) {
+ cLib_addCalc2(&i_this->field_0xc90, -0.12f, 0.8f, 0.02f);
+ }
+
+ if (i_this->field_0xca0 < 70) {
+ cLib_addCalcAngleS2(&i_this->field_0xca4, 0, 1, 500);
+ cLib_addCalcAngleS2(&i_this->current.angle.y,
+ i_this->mAngleToPlayer + i_this->field_0xc88 * -0x600, 2, 0x400);
+ cLib_addCalc2(&i_this->field_0xc9c, 200.0f, 0.5f, 50.0f);
+
+ if (i_this->field_0xca0 < 30) {
+ f32 fvar = player_p->current.pos.y - -24000.0f;
+ if (fvar > 1000.0f) {
+ fvar = 1000.0f;
+ }
+
+ i_this->field_0xc96 = fvar + 3700.0f;
+
+ cLib_addCalcAngleS2(&i_this->current.angle.x,
+ (s16)(-fvar * 2.0f + 11700.0f) - 0x4000, 1, 1000);
+ }
+ } else {
+ s16 var7;
+ s16 var3;
+
+ if (i_this->mTimers[1] != 0) {
+ var7 = 6;
+ var3 = i_this->field_0xc88 * 9000;
+ } else {
+ var7 = 10;
+ var3 = i_this->field_0xc88 * 5000;
+ }
+
+ cLib_addCalcAngleS2(&i_this->field_0xca2, var7, 1, 1);
+ cLib_addCalcAngleS2(&i_this->field_0xca4, var3, 1, 500);
+
+ if (i_this->mTimers[1] == 0 || i_this->mTimers[1] > 10) {
+ i_this->current.angle.y += (s16)(i_this->field_0xc88 * 300);
+ }
+
+ if (i_this->mActionPhase == 2) {
+ for (int i = 7; i < 15; i++) {
+ if (i_this->mColliders[i].ChkCoHit()) {
+ cCcD_Obj* obj_p = i_this->mColliders[i].GetCoHitObj();
+ if (fopAcM_GetName(obj_p->GetAc()) == PROC_ALINK &&
+ !dComIfGp_event_runCheck())
+ {
+ if (!player_p->checkHookshotShootReturnMode() &&
+ boss->field_0x4744 == 0)
+ {
+ i_this->mActionPhase = 3;
+ boss->mDemoAction = 1;
+ boss->field_0x5ce8 = i_this->field_0x5c8;
+ i_this->mTimers[1] = 20;
+
+ if (boss->mAction != OB_ACTION_CORE_HAND_MOVE) {
+ boss->mAction = OB_ACTION_CORE_HAND_MOVE;
+ boss->mMode = 0;
+ boss->mCoreAnm = 30;
+ boss->mCoreAnmMode = 2;
+ }
+
+ boss->mOISound.startTentacleSound(
+ Z2SE_EN_OI_TENT_SWING, i_this->field_0x5c8, 0,
+ dComIfGp_getReverb(fopAcM_GetRoomNo(i_this)));
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ cLib_addCalcAngleS2(&i_this->field_0xc94, 22500, 1, 2000);
+ cLib_addCalc2(&i_this->field_0xc8c, 4000.0f, 1.0f, 400.0f);
+ if (i_this->mTimers[1] == 1) {
+ i_this->mAction = OH_ACTION_CAUGHT;
+ i_this->mActionPhase = 0;
+ i_this->field_0xc98 = 0;
+ }
+ break;
+ }
+}
+
+/* 8061C070-8061C1F8 000A30 0188+00 1/1 0/0 0/0 .text caught__FP10b_oh_class */
+static void caught(b_oh_class* i_this) {
+ i_this->field_0x5f4 = 6;
+
+ switch (i_this->mActionPhase) {
+ case 0:
+ i_this->mActionPhase = 1;
+ i_this->mTimers[0] = 10;
+ i_this->mTimers[1] = 50;
+ case 1:
+ i_this->field_0x60c = 500.0f;
+ cLib_addCalcAngleS2(&i_this->field_0xca2, 6, 1, 1);
+ cLib_addCalcAngleS2(&i_this->field_0xca4, i_this->field_0xc88 * 9000, 1, 500);
+
+ if (i_this->mTimers[0] == 1) {
+ boss->mCoreAnm = 21;
+ boss->mCoreAnmMode = 0;
+ boss->mOISound.startCreatureVoice(Z2SE_EN_OI_V_EAT, -1);
+ }
+
+ if (!(i_this->field_0x5cc & 0xF)) {
+ dComIfGp_getVibration().StartShock(3, 31, cXyz(0.0f, 1.0f, 0.0f));
+ }
+
+ if (i_this->mTimers[1] == 0) {
+ if (boss->mDemoAction != 0) {
+ boss->mDemoAction = 3;
+ boss->mDemoActionTimer = 0;
+ }
+
+ i_this->mAction = OH_ACTION_WAIT;
+ i_this->mActionPhase = 0;
+ i_this->field_0xc98 = 0;
+ }
+ break;
+ }
+}
+
+/* 8061C1F8-8061C298 000BB8 00A0+00 1/1 0/0 0/0 .text end__FP10b_oh_class */
+static void end(b_oh_class* i_this) {
+ i_this->field_0x5f4 = 6;
+
+ switch (i_this->mActionPhase) {
+ case 0:
+ i_this->mActionPhase = 1;
+ i_this->mTimers[0] = 70;
+ break;
+ case 1:
+ cLib_addCalc2(&i_this->field_0x60c, 1000.0f, 1.0f, 150.0f);
+
+ if (i_this->mTimers[0] == 0) {
+ cLib_addCalc0(&i_this->mTentacleLength, 1.0f, 1.0f);
+ }
+ break;
+ }
+}
+
+/* 8061C298-8061C2C4 000C58 002C+00 1/1 0/0 0/0 .text non__FP10b_oh_class */
+static void non(b_oh_class* i_this) {
+ i_this->field_0x5f4 = 6;
+
+ switch (i_this->mActionPhase) {
+ case 0:
+ i_this->mActionPhase = 1;
+ break;
+ case 1:
+ break;
+ }
+}
+
+/* 8061C2C4-8061CB4C 000C84 0888+00 2/1 0/0 0/0 .text action__FP10b_oh_class */
+static void action(b_oh_class* i_this) {
+ b_oh_class* a_this = (b_oh_class*)i_this;
+ int var_r28;
+ BOOL var_r27;
+
+ cXyz sp90;
+ cXyz sp9C;
+
+ a_this->mAngleToPlayer = fopAcM_searchPlayerAngleY(a_this);
+ a_this->mDistToPlayer = fopAcM_searchPlayerDistance(a_this);
+
+ fopAcM_OffStatus(a_this, 0);
+ a_this->attention_info.flags = 0;
+
+ var_r28 = 0;
+ var_r27 = true;
+
+ cLib_addCalcAngleS2(&a_this->field_0xc98, 0x800, 1, 0x10);
+
+ switch (a_this->mAction) {
+ case OH_ACTION_START:
+ start(a_this);
+ var_r28 = 1;
+ break;
+ case OH_ACTION_WAIT:
+ wait(a_this);
+ var_r28 = 1;
+ break;
+ case OH_ACTION_ATTACK:
+ attack(a_this);
+ var_r28 = 2;
+ boss->field_0x4794 = 180;
+ break;
+ case OH_ACTION_CAUGHT:
+ caught(a_this);
+ var_r27 = false;
+ var_r28 = 3;
+ boss->field_0x4794 = 180;
+ break;
+ case OH_ACTION_END:
+ end(a_this);
+ var_r28 = 1;
+ break;
+ case OH_ACTION_NON:
+ non(a_this);
+ return;
+ }
+
+ if (boss->mAction == OB_ACTION_BOMBFISH_SET) {
+ cLib_addCalc2(&a_this->field_0x60c, 500.0f, 1.0f, 80.0f);
+ }
+
+ if (var_r28 == 1) {
+ f32 var_f29 = a_this->field_0x608 * 500.0f;
+ f32 var_f28 = a_this->field_0x608 * 1500.0f;
+ s16 var_r5 = 2000;
+
+ for (int i = i_this->field_0xca8; i < 30; i++) {
+ f32 var_f31 = 1.0f;
+ if (i < 5) {
+ var_f31 = i * 0.2f;
+ } else if (i >= 20) {
+ var_f31 = (i - 20) * 0.3f + 1.0f;
+ }
+
+ a_this->field_0x6d0[i].x =
+ var_f31 * (var_f29 * cM_ssin(i_this->field_0x5f8 + (i * 1800)));
+ a_this->field_0x6d0[i].y =
+ var_f31 * (var_f28 * cM_ssin(i_this->field_0x5fa + (i * 1800)));
+
+ a_this->field_0x838[i].x =
+ var_r5 + var_f31 * (var_f29 * cM_ssin(a_this->field_0x5fa + (i * 7000)) * 0.5f);
+ a_this->field_0x838[i].y =
+ var_f31 * (var_f28 * cM_ssin(a_this->field_0x5f8 + (i * 7000)) * 0.5f);
+
+ var_r5 -= 200;
+ if (var_r5 < 0) {
+ var_r5 = 0;
+ }
+
+ a_this->field_0x964[i] =
+ a_this->field_0x610 + 1.0f +
+ a_this->field_0x610 * cM_ssin(a_this->field_0x5f6 + i * -10000);
+ }
+
+ cLib_addCalcAngleS2(&a_this->current.angle.x, -0xF2C, 4, 100);
+ cLib_addCalcAngleS2(&a_this->current.angle.y, a_this->home.angle.y, 4, 0x100);
+ } else if (var_r28 == 2) {
+ f32 var_f4 = a_this->field_0xc8c;
+ for (int i = a_this->field_0xca8; i < 30; i++) {
+ if (i >= 30 - a_this->field_0xca2) {
+ a_this->field_0x6d0[i].y = a_this->field_0xca4;
+ } else {
+ a_this->field_0x6d0[i].y = 0;
+ }
+
+ if (i >= 13) {
+ var_f4 *= a_this->field_0xc90 + 1.0f;
+ }
+
+ a_this->field_0x6d0[i].x =
+ var_f4 * cM_ssin(a_this->field_0xc94 + i * a_this->field_0xc96);
+
+ if (i >= 18) {
+ a_this->field_0x838[i].x =
+ a_this->field_0xc9c * cM_ssin(a_this->field_0x5cc * 1000 + i * -4000);
+ } else {
+ a_this->field_0x838[i].x = 0;
+ }
+
+ a_this->field_0x838[i].y = 0;
+ a_this->field_0x964[i] =
+ a_this->field_0x610 + 1.0f +
+ a_this->field_0x610 * cM_ssin(a_this->field_0x5f6 + i * -10000);
+ }
+ } else if (var_r28 == 3) {
+ for (int i = a_this->field_0xca8; i < 30; i++) {
+ a_this->field_0x838[i].y = 0;
+ a_this->field_0x838[i].x = 0;
+
+ if (i >= 30 - a_this->field_0xca2) {
+ a_this->field_0x6d0[i].y = a_this->field_0xca4;
+ a_this->field_0x6d0[i].x = 0;
+ a_this->field_0x964[i] = 1.0f;
+ } else {
+ a_this->field_0x6d0[i].y = 0;
+ a_this->field_0x6d0[i].x = 2250;
+ a_this->field_0x964[i] =
+ a_this->field_0x610 + 1.0f +
+ a_this->field_0x610 * cM_ssin(a_this->field_0x5f6 + i * -10000);
+ }
+ }
+
+ cLib_addCalcAngleS2(&a_this->current.angle.x, 0xA92, 4, 0x200);
+ cLib_addCalcAngleS2(&a_this->current.angle.y, a_this->home.angle.y, 4, 0x800);
+ }
+
+ a_this->field_0x600 =
+ (-a_this->field_0x614 - a_this->field_0x60c) + cM_ssin(a_this->field_0x5cc * 200) * 100.0f;
+ a_this->field_0x604 = ((100.0f - a_this->field_0x614) - a_this->field_0x60c) +
+ cM_ssin(a_this->field_0x5cc * 200) * 100.0f;
+ a_this->field_0x5f8 += (s16)a_this->field_0x600;
+ a_this->field_0x5fa += (s16)a_this->field_0x604;
+ a_this->field_0x5fc = a_this->field_0x60c + 2000.0f;
+ a_this->field_0x5f6 += (s16)a_this->field_0x5fc;
+
+ cLib_addCalc0(&a_this->field_0x60c, 0.1f, 50.0f);
+ cLib_addCalc2(&a_this->field_0x610, 0.2f, 0.1f, 0.01f);
+
+ if (var_r28 <= 3) {
+ cLib_addCalc2(&a_this->mTentacleLength, l_HIO.mLength, 0.1f, 0.5f);
+ }
+
+ MTXCopy(boss->mBodyParts[0].mpMorf->getModel()->getAnmMtx(a_this->field_0x5c8 + 8),
+ mDoMtx_stack_c::get());
+ mDoMtx_stack_c::multVecZero(&a_this->current.pos);
+
+ sp90.x = a_this->current.pos.x - boss->home.pos.x;
+ sp90.z = a_this->current.pos.z - boss->home.pos.z;
+ a_this->home.angle.y = cM_atan2s(sp90.x, sp90.z);
+ cLib_addCalcAngleS2(&a_this->shape_angle.y, a_this->current.angle.y, 2, 0x2000);
+ cLib_addCalcAngleS2(&a_this->shape_angle.x, a_this->current.angle.x, 2, 0x2000);
+
+ for (int i = a_this->field_0xca8; i < 30; i++) {
+ if (Cinit) {
+ a_this->field_0x61c[i] = a_this->field_0x6d0[i];
+ a_this->field_0x784[i] = a_this->field_0x838[i];
+ a_this->field_0x8ec[i] = a_this->field_0x964[i];
+ } else {
+ cLib_addCalcAngleS2(&a_this->field_0x61c[i].x, a_this->field_0x6d0[i].x, 2,
+ a_this->field_0xc98);
+ cLib_addCalcAngleS2(&a_this->field_0x61c[i].y, a_this->field_0x6d0[i].y, 2,
+ a_this->field_0xc98);
+ cLib_addCalcAngleS2(&a_this->field_0x784[i].x, a_this->field_0x838[i].x, 2,
+ a_this->field_0xc98);
+ cLib_addCalcAngleS2(&a_this->field_0x784[i].y, a_this->field_0x838[i].y, 2,
+ a_this->field_0xc98);
+ cLib_addCalc2(&a_this->field_0x8ec[i], a_this->field_0x964[i], 0.5f, 0.2f);
+ cLib_addCalc0(&a_this->field_0x9dc[i], 0.1f, 0.2f);
+ }
+ }
+
+ for (int i = 0; i < 15; i++) {
+ if (var_r27 && boss->mDemoAction == 0) {
+ a_this->mColliders[i].OnCoSetBit();
+ } else {
+ a_this->mColliders[i].OffCoSetBit();
+ }
+ }
+
+ Cinit = 0;
+}
+
+/* 8061CB4C-8061CD98 00150C 024C+00 1/1 0/0 0/0 .text damage_check__FP10b_oh_class */
+static void damage_check(b_oh_class* i_this) {
+ i_this->mCcStts.Move();
+
+ if (i_this->field_0x5f4 == 0) {
+ BOOL bvar = false;
+ for (int i = 7; i < 15; i++) {
+ if (i_this->mColliders[i].ChkTgHit()) {
+ i_this->mAtInfo.mpCollider = i_this->mColliders[i].GetTgHitObj();
+ i_this->health = 1000;
+ cc_at_check(i_this, &i_this->mAtInfo);
+
+ MTXCopy(i_this->mpMorf->getModel()->getAnmMtx(i * 2 + 1), mDoMtx_stack_c::get());
+ mDoMtx_stack_c::multVecZero(&i_this->eyePos);
+ dComIfGp_setHitMark(1, i_this, &i_this->eyePos, NULL, NULL, 0);
+ mDoAud_seStart(Z2SE_EN_OI_HIT_TENTACLE, &i_this->eyePos, 0, 0);
+
+ bvar = true;
+ i_this->field_0x5f4 = 20;
+ break;
+ }
+ }
+
+ if (i_this->mAction == OH_ACTION_ATTACK && boss->field_0x5d10) {
+ boss->field_0x5d10 = 0;
+ bvar = true;
+ }
+
+ if (bvar) {
+ i_this->field_0x60c = 2000.0f;
+ i_this->field_0x610 = 0.5f;
+
+ if (i_this->mAction != OH_ACTION_WAIT) {
+ i_this->mAction = OH_ACTION_WAIT;
+ i_this->mActionPhase = 0;
+ i_this->field_0xc98 = 0;
+ i_this->field_0xca2 = 0;
+ }
+
+ if (boss->mDemoAction != 0) {
+ boss->mDemoAction = 100;
+ boss->mCoreAnm = 30;
+ boss->mCoreAnmMode = 2;
+ boss->field_0x4794 = 180;
+ }
+
+ i_this->field_0x5f4 = 6;
+ boss->mOISound.startCreatureVoice(Z2SE_EN_OI_V_TENT_DAMAGE, -1);
+ }
+ }
+}
+
+/* 8061CD98-8061D05C 001758 02C4+00 2/1 0/0 0/0 .text daB_OH_Execute__FP10b_oh_class */
+static int daB_OH_Execute(b_oh_class* i_this) {
+ if (cDmrNowMidnaTalk()) {
+ return 1;
+ }
+
+ if (i_this->field_0x5c8 == 0) {
+ boss = (b_ob_class*)fopAcM_SearchByID(i_this->parentActorID);
+ }
+
+ if (boss == NULL) {
+ return 1;
+ }
+
+ if (boss->mAction == OB_ACTION_CORE_END && i_this->mAction != OH_ACTION_END) {
+ i_this->mAction = OH_ACTION_END;
+ i_this->mActionPhase = 0;
+ }
+
+ cXyz collider_center;
+
+ i_this->field_0x5cc++;
+
+ for (int i = 0; i < 4; i++) {
+ if (i_this->mTimers[i] != 0) {
+ i_this->mTimers[i]--;
+ }
+ }
+
+ if (i_this->field_0x5f4 != 0) {
+ i_this->field_0x5f4--;
+ }
+
+ damage_check(i_this);
+ action(i_this);
+
+ mDoMtx_stack_c::transS(i_this->current.pos.x, i_this->current.pos.y + i_this->field_0xcac,
+ i_this->current.pos.z);
+ mDoMtx_stack_c::YrotM(i_this->shape_angle.y);
+ mDoMtx_stack_c::XrotM(i_this->shape_angle.x);
+ mDoMtx_stack_c::scaleM(l_HIO.mModelSize, l_HIO.mModelSize, l_HIO.mModelSize);
+
+ J3DModel* model_p = i_this->mpMorf->getModel();
+ model_p->setBaseTRMtx(mDoMtx_stack_c::get());
+ i_this->mpMorf->play(NULL, dComIfGp_getReverb(fopAcM_GetRoomNo(i_this)), 0);
+ i_this->mpBtk->play();
+ i_this->mpBrk->play();
+ i_this->mpMorf->modelCalc();
+
+ int tmp = 1;
+ if (i_this->mDistToPlayer > 150.0f && i_this->mAction == OH_ACTION_WAIT) {
+ tmp = i_this->field_0x5cc & 1;
+ }
+
+ for (int i = 0; i < 15; i++) {
+ MTXCopy(model_p->getAnmMtx(tmp + i * 2), mDoMtx_stack_c::get());
+ mDoMtx_stack_c::multVecZero(&collider_center);
+
+ if (i_this->mAction >= OH_ACTION_END) {
+ collider_center.z -= 20000.0f;
+ }
+
+ i_this->mColliders[i].SetC(collider_center);
+
+ if (i_this->mAction == OH_ACTION_ATTACK) {
+ i_this->mColliders[i].SetR(l_HIO.mModelSize * 70.0f);
+ } else {
+ i_this->mColliders[i].SetR(l_HIO.mModelSize * 50.0f);
+ }
+
+ dComIfG_Ccsp()->Set(&i_this->mColliders[i]);
+ }
+
+ return 1;
+}
+
+/* 8061D05C-8061D064 001A1C 0008+00 1/0 0/0 0/0 .text daB_OH_IsDelete__FP10b_oh_class */
+static int daB_OH_IsDelete(b_oh_class* i_this) {
+ return 1;
+}
+
+/* 8061D064-8061D0B8 001A24 0054+00 1/0 0/0 0/0 .text daB_OH_Delete__FP10b_oh_class */
+static int daB_OH_Delete(b_oh_class* i_this) {
+ dComIfG_resDelete(&i_this->mPhase, "B_oh");
+ if (i_this->field_0x1f86) {
+ data_8061DBB5 = 0;
+ }
+
+ return 1;
+}
+
+/* 8061D0B8-8061D39C 001A78 02E4+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */
+static int useHeapInit(fopAc_ac_c* i_this) {
+ b_oh_class* this_ = (b_oh_class*)i_this;
+
+ this_->mpMorf = new mDoExt_McaMorf((J3DModelData*)dComIfG_getObjectRes("B_oh", 0x29), NULL,
+ NULL, NULL, 2, 1.0f, 0, -1, 1, NULL, 0, 0x11000284);
+ if (this_->mpMorf == NULL || this_->mpMorf->getModel() == NULL) {
+ return 0;
+ }
+
+ if (!this_->mInvisModel.create(this_->mpMorf->getModel(), 1)) {
+ return 0;
+ }
+
+ this_->mpMorf->getModel()->setUserArea((u32)this_);
+
+ for (u16 i = 0; i < this_->mpMorf->getModel()->getModelData()->getJointNum(); i++) {
+ this_->mpMorf->getModel()->getModelData()->getJointNodePointer(i)->setCallBack(
+ nodeCallBack);
+ }
+
+ this_->mpBtk = new mDoExt_btkAnm();
+ if (this_->mpBtk == NULL) {
+ return 0;
+ }
+
+ J3DAnmTextureSRTKey* btk = (J3DAnmTextureSRTKey*)dComIfG_getObjectRes("B_oh", 0x36);
+ if (!this_->mpBtk->init(this_->mpMorf->getModel()->getModelData(), btk, TRUE, 2, 1.0f, 0, -1)) {
+ return 0;
+ }
+
+ this_->mpBtk->setFrame(cM_rndF(39.0f));
+ this_->mpBtk->setPlaySpeed(cM_rndFX(0.1f) + 1.0f);
+
+ this_->mpBrk = new mDoExt_brkAnm();
+ if (this_->mpBrk == NULL) {
+ return 0;
+ }
+
+ J3DAnmTevRegKey* brk = (J3DAnmTevRegKey*)dComIfG_getObjectRes("B_oh", 0x2F);
+ if (!this_->mpBrk->init(this_->mpMorf->getModel()->getModelData(), brk, TRUE, 2, 1.0f, 0, -1)) {
+ return 0;
+ }
+
+ this_->mpBrk->setFrame(cM_rndF(39.0f));
+ this_->mpBrk->setPlaySpeed(cM_rndFX(0.1f) + 1.0f);
+
+ return 1;
+}
+
+/* 8061D3E4-8061D718 001DA4 0334+00 1/0 0/0 0/0 .text daB_OH_Create__FP10fopAc_ac_c */
+static int daB_OH_Create(fopAc_ac_c* i_this) {
+ fopAcM_SetupActor(i_this, b_oh_class);
+ b_oh_class* this_ = (b_oh_class*)i_this;
+
+ int phase = dComIfG_resLoad(&this_->mPhase, "B_oh");
+ if (phase == cPhs_COMPLEATE_e) {
+ this_->field_0x5c8 = fopAcM_GetParam(this_) & 0xFF;
+
+ if (!fopAcM_entrySolidHeap(this_, useHeapInit, 0x23E0)) {
+ return cPhs_ERROR_e;
+ }
+
+ if (!data_8061DBB5) {
+ this_->field_0x1f86 = 1;
+ data_8061DBB5 = 1;
+ l_HIO.field_0x4 = -1;
+ }
+
+ this_->health = 1000;
+ this_->field_0x560 = 1000;
+
+ this_->field_0x5cc = cM_rndF(65536.0f);
+ this_->field_0x5f6 = cM_rndF(65536.0f);
+ this_->field_0x5f8 = cM_rndF(65536.0f);
+ this_->field_0x5fa = cM_rndF(65536.0f);
+ this_->field_0x614 = cM_rndF(100.0f) + 400.0f;
+
+ static dCcD_SrcSph cc_sph_src = {
+ {
+ {0, {{0, 0, 12}, {0xD8FBFDFF, 3}, 0x15}},
+ {dCcD_SE_NONE, 0, 0, 0, {0}},
+ {dCcD_SE_NONE, 0, 0, 0, {0x80}},
+ {0},
+ },
+ {
+ {
+ {0.0f, 0.0f, 0.0f},
+ 60.0f,
+ },
+ },
+ };
+
+ this_->mCcStts.Init(0xFF, 0, this_);
+ for (int i = 0; i < 15; i++) {
+ this_->mColliders[i].Set(cc_sph_src);
+ this_->mColliders[i].SetStts(&this_->mCcStts);
+ this_->mColliders[i].OnTgNoHitMark();
+ }
+
+ this_->current.angle.x = -0x3448;
+
+ if (cDmr_SkipInfo) {
+ this_->mAction = OH_ACTION_WAIT;
+ this_->mActionPhase = 1;
+ this_->mTimers[0] = cM_rndF(100.0f) + 200.0f;
+ this_->mTentacleLength = l_HIO.mLength;
+ this_->field_0x608 = 1.0f;
+ Cinit = 1;
+ } else {
+ this_->mAction = OH_ACTION_START;
+ Cinit = 0;
+ }
+
+ daB_OH_Execute(this_);
+ }
+
+ return phase;
+}
+
+/* ############################################################################################## */
+/* 8061DBDC-8061DBE0 00006C 0004+00 0/0 0/0 0/0 .bss
+ * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */
+#pragma push
+#pragma force_active on
+static u8 data_8061DBDC[4];
+#pragma pop
+
+/* 8061DBE0-8061DBE4 000070 0004+00 0/0 0/0 0/0 .bss
+ * sInstance__35JASGlobalInstance<14JASAudioThread> */
+#pragma push
+#pragma force_active on
+static u8 data_8061DBE0[4];
+#pragma pop
+
+/* 8061DBE4-8061DBE8 000074 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */
+#pragma push
+#pragma force_active on
+static u8 data_8061DBE4[4];
+#pragma pop
+
+/* 8061DBE8-8061DBEC 000078 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */
+#pragma push
+#pragma force_active on
+static u8 data_8061DBE8[4];
+#pragma pop
+
+/* 8061DBEC-8061DBF0 00007C 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr>
+ */
+#pragma push
+#pragma force_active on
+static u8 data_8061DBEC[4];
+#pragma pop
+
+/* 8061DBF0-8061DBF4 000080 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr>
+ */
+#pragma push
+#pragma force_active on
+static u8 data_8061DBF0[4];
+#pragma pop
+
+/* 8061DBF4-8061DBF8 000084 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys>
+ */
+#pragma push
+#pragma force_active on
+static u8 data_8061DBF4[4];
+#pragma pop
+
+/* 8061DBF8-8061DBFC 000088 0004+00 0/0 0/0 0/0 .bss
+ * sInstance__36JASGlobalInstance<15JAISoundStarter> */
+#pragma push
+#pragma force_active on
+static u8 data_8061DBF8[4];
+#pragma pop
+
+/* 8061DBFC-8061DC00 00008C 0004+00 0/0 0/0 0/0 .bss
+ * sInstance__35JASGlobalInstance<14Z2SoundStarter> */
+#pragma push
+#pragma force_active on
+static u8 data_8061DBFC[4];
+#pragma pop
+
+/* 8061DC00-8061DC04 000090 0004+00 0/0 0/0 0/0 .bss
+ * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */
+#pragma push
+#pragma force_active on
+static u8 data_8061DC00[4];
+#pragma pop
+
+/* 8061DC04-8061DC08 000094 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */
+#pragma push
+#pragma force_active on
+static u8 data_8061DC04[4];
+#pragma pop
+
+/* 8061DC08-8061DC0C 000098 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */
+#pragma push
+#pragma force_active on
+static u8 data_8061DC08[4];
+#pragma pop
+
+/* 8061DC0C-8061DC10 00009C 0004+00 0/0 0/0 0/0 .bss
+ * sInstance__33JASGlobalInstance<12JAIStreamMgr> */
+#pragma push
+#pragma force_active on
+static u8 data_8061DC0C[4];
+#pragma pop
+
+/* 8061DC10-8061DC14 0000A0 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr>
+ */
+#pragma push
+#pragma force_active on
+static u8 data_8061DC10[4];
+#pragma pop
+
+/* 8061DC14-8061DC18 0000A4 0004+00 0/0 0/0 0/0 .bss
+ * sInstance__33JASGlobalInstance<12JAISoundInfo> */
+#pragma push
+#pragma force_active on
+static u8 data_8061DC14[4];
+#pragma pop
+
+/* 8061DC18-8061DC1C 0000A8 0004+00 0/0 0/0 0/0 .bss
+ * sInstance__34JASGlobalInstance<13JAUSoundTable> */
+#pragma push
+#pragma force_active on
+static u8 data_8061DC18[4];
+#pragma pop
+
+/* 8061DC1C-8061DC20 0000AC 0004+00 0/0 0/0 0/0 .bss
+ * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */
+#pragma push
+#pragma force_active on
+static u8 data_8061DC1C[4];
+#pragma pop
+
+/* 8061DC20-8061DC24 0000B0 0004+00 0/0 0/0 0/0 .bss
+ * sInstance__33JASGlobalInstance<12JAUSoundInfo> */
+#pragma push
+#pragma force_active on
+static u8 data_8061DC20[4];
+#pragma pop
+
+/* 8061DC24-8061DC28 0000B4 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo>
+ */
+#pragma push
+#pragma force_active on
+static u8 data_8061DC24[4];
+#pragma pop
+
+/* 8061DC28-8061DC2C 0000B8 0004+00 0/0 0/0 0/0 .bss
+ * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */
+#pragma push
+#pragma force_active on
+static u8 data_8061DC28[4];
+#pragma pop
+
+/* 8061DC2C-8061DC30 0000BC 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience>
+ */
+#pragma push
+#pragma force_active on
+static u8 data_8061DC2C[4];
+#pragma pop
+
+/* 8061DC30-8061DC34 0000C0 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr>
+ */
+#pragma push
+#pragma force_active on
+static u8 data_8061DC30[4];
+#pragma pop
+
+/* 8061DC34-8061DC38 0000C4 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr>
+ */
+#pragma push
+#pragma force_active on
+static u8 data_8061DC34[4];
+#pragma pop
+
+/* 8061DC38-8061DC3C 0000C8 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr>
+ */
+#pragma push
+#pragma force_active on
+static u8 data_8061DC38[4];
+#pragma pop
+
+/* 8061DC3C-8061DC40 0000CC 0004+00 0/0 0/0 0/0 .bss
+ * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */
+#pragma push
+#pragma force_active on
+static u8 data_8061DC3C[4];
+#pragma pop
+
+/* 8061DA74-8061DA74 0000A0 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
+
+/* 8061DAEC-8061DB0C -00001 0020+00 1/0 0/0 0/0 .data l_daB_OH_Method */
+SECTION_DATA static void* l_daB_OH_Method[8] = {
+ (void*)daB_OH_Create__FP10fopAc_ac_c,
+ (void*)daB_OH_Delete__FP10b_oh_class,
+ (void*)daB_OH_Execute__FP10b_oh_class,
+ (void*)daB_OH_IsDelete__FP10b_oh_class,
+ (void*)daB_OH_Draw__FP10b_oh_class,
+ (void*)NULL,
+ (void*)NULL,
+ (void*)NULL,
+};
+
+/* 8061DB0C-8061DB3C -00001 0030+00 0/0 0/0 1/0 .data g_profile_B_OH */
+SECTION_DATA extern void* g_profile_B_OH[12] = {
+ (void*)0xFFFFFFFD, (void*)0x0003FFFD,
+ (void*)0x00D20000, (void*)&g_fpcLf_Method,
+ (void*)0x00001F88, (void*)NULL,
+ (void*)NULL, (void*)&g_fopAc_Method,
+ (void*)0x00DA0000, (void*)&l_daB_OH_Method,
+ (void*)0x00044000, (void*)0x020E0000,
+}; \ No newline at end of file