From fa7821c4bb3d77ac54bb2d5edb25684f0cff8e06 Mon Sep 17 00:00:00 2001 From: TakaRikka <38417346+TakaRikka@users.noreply.github.com> Date: Wed, 22 Jan 2025 12:48:08 -0800 Subject: [PATCH] b_dre equivalent (#2290) --- configure.py | 2 +- include/d/actor/d_a_b_dre.h | 62 +- src/d/actor/d_a_b_dre.cpp | 2160 ++++++++++++++--------------------- 3 files changed, 920 insertions(+), 1304 deletions(-) diff --git a/configure.py b/configure.py index dbbc4a4e1d1..412db00b6b1 100644 --- a/configure.py +++ b/configure.py @@ -1546,7 +1546,7 @@ config.libs = [ ActorRel(NonMatching, "d_a_b_bh"), ActorRel(NonMatching, "d_a_b_bq"), ActorRel(NonMatching, "d_a_b_dr"), - ActorRel(NonMatching, "d_a_b_dre"), + ActorRel(Equivalent, "d_a_b_dre"), # weak func order ActorRel(NonMatching, "d_a_b_ds"), ActorRel(NonMatching, "d_a_b_gg"), ActorRel(NonMatching, "d_a_b_gm"), diff --git a/include/d/actor/d_a_b_dre.h b/include/d/actor/d_a_b_dre.h index b9f84153795..76d6d043f56 100644 --- a/include/d/actor/d_a_b_dre.h +++ b/include/d/actor/d_a_b_dre.h @@ -3,6 +3,7 @@ #include "f_op/f_op_actor_mng.h" #include "d/d_bg_s_acch.h" +#include "d/d_cc_uty.h" #include "Z2AudioLib/Z2Creature.h" /** @@ -16,11 +17,11 @@ class daB_DRE_c : public fopEn_enemy_c { public: /* 805C7DD4 */ void SetAnm(mDoExt_McaMorfSO*, int, int, f32, f32); - /* 805C7EAC */ void CameraSet(); + /* 805C7EAC */ bool CameraSet(); /* 805C8008 */ void SetStopingCam(); /* 805C808C */ void SetStopCam(cXyz, f32, f32, s16); /* 805C8208 */ void SetCMoveCam(cXyz, f32, f32); - /* 805C81B8 */ void SetCMoveCam(cXyz, f32); + /* 805C81B8 */ bool SetCMoveCam(cXyz, f32); /* 805C8348 */ void SetEyeMoveCam(cXyz, f32, f32, s16, f32, f32); /* 805C824C */ void SetEyeMoveCam(cXyz, f32, f32, s16, f32); /* 805C8458 */ void SetMoveCam(f32, f32); @@ -31,54 +32,53 @@ public: /* 805C9318 */ void Action(); /* 805C9378 */ void DrAction(); /* 805C9B40 */ void SoundChk(); - /* 805CA158 */ void Execute(); + /* 805CA158 */ int Execute(); /* 805CA49C */ void SpeedSet(); /* 805CA4FC */ void BreathSet(); - /* 805CA670 */ void Delete(); + /* 805CA670 */ int Delete(); /* 805CA6C0 */ void setBaseMtx(); - /* 805CA944 */ void create(); + /* 805CA944 */ int create(); - MtxP getMtx() { return field_0x6ec->getModel()->getAnmMtx(15); } + inline int CreateHeap(); + inline int Draw(); + + MtxP getMtx() { return mpModelMorf->getModel()->getAnmMtx(15); } -private: /* 0x5AC */ u8 field_0x5AC[0x5B0 - 0x5AC]; /* 0x5B0 */ int mAnm; - /* 0x5B4 */ u8 field_0x5b4; + /* 0x5B4 */ u8 mDrMode; /* 0x5B5 */ u8 field_0x5b5; - /* 0x5B6 */ u8 field_0x5B6[0x5B7 - 0x5B6]; - /* 0x5B7 */ u8 field_0x5b7; - /* 0x5B8 */ u8 field_0x5b8; + /* 0x5B6 */ u8 field_0x5b6; + /* 0x5B7 */ u8 mAction; + /* 0x5B8 */ u8 mCameraMode; /* 0x5B9 */ u8 field_0x5b9; /* 0x5BA */ u8 field_0x5BA[0x5C8 - 0x5BA]; - /* 0x5C8 */ cXyz field_0x5c8; - /* 0x5D4 */ cXyz field_0x5d4; - /* 0x5E0 */ cXyz field_0x5e0; - /* 0x5EC */ cXyz field_0x5ec; - /* 0x5F8 */ f32 field_0x5f8; + /* 0x5C8 */ cXyz mCamCenter; + /* 0x5D4 */ cXyz mCamCenterTarget; + /* 0x5E0 */ cXyz mCamEye; + /* 0x5EC */ cXyz mCamEyeTarget; + /* 0x5F8 */ f32 mBlurRate; /* 0x5FC */ s16 field_0x5fc; - /* 0x5FE */ u8 field_0x5FE[0x600 - 0x5FE]; - /* 0x600 */ f32 field_0x600; - /* 0x604 */ mDoExt_brkAnm* field_0x604; + /* 0x600 */ f32 mCamFovy; + /* 0x604 */ mDoExt_brkAnm* mpCoreBrk; /* 0x608 */ f32 field_0x608; /* 0x60C */ u8 field_0x60C[0x610 - 0x60C]; - /* 0x610 */ f32 field_0x610; - /* 0x614 */ f32 field_0x614; + /* 0x610 */ f32 mTargetSpeedF; + /* 0x614 */ f32 mTargetSpeedY; /* 0x618 */ f32 field_0x618; - /* 0x61C */ u32 field_0x61c[4]; - /* 0x62C */ s16 field_0x62c[5]; - /* 0x636 */ u8 field_0x636; - /* 0x637 */ u8 field_0x637; + /* 0x61C */ u32 mBreathEmtrIDs[4]; + /* 0x62C */ s16 mTimers[5]; + /* 0x636 */ u8 mHideModel; + /* 0x637 */ u8 mHideParts; /* 0x638 */ u8 field_0x638; - /* 0x639 */ u8 field_0x639[0x63C - 0x639]; /* 0x63C */ request_of_phase_process_class mPhase; /* 0x644 */ Z2CreatureEnemy mSound; - /* 0x6E8 */ u8 field_0x6E8[0x6EC - 0x6E8]; - /* 0x6EC */ mDoExt_McaMorfSO* field_0x6ec; + /* 0x6E8 */ u32 mShadowKey; + /* 0x6EC */ mDoExt_McaMorfSO* mpModelMorf; /* 0x6F0 */ dBgS_AcchCir mAcchCir; /* 0x730 */ dBgS_ObjAcch mAcch; - /* 0x908 */ u8 field_0x908[0x910 - 0x908]; - /* 0x910 */ Z2CreatureEnemy* field_0x910; - /* 0x914 */ u8 field_0x914[0x930 - 0x914]; + /* 0x908 */ dCcU_AtInfo mAtInfo; + /* 0x92C */ u8 field_0x92c[0x930 - 0x92C]; }; STATIC_ASSERT(sizeof(daB_DRE_c) == 0x930); diff --git a/src/d/actor/d_a_b_dre.cpp b/src/d/actor/d_a_b_dre.cpp index c17c23f4a73..970777af8c9 100644 --- a/src/d/actor/d_a_b_dre.cpp +++ b/src/d/actor/d_a_b_dre.cpp @@ -1,1400 +1,1016 @@ /** * @file d_a_b_dre.cpp - * -*/ + * + */ #include "d/actor/d_a_b_dre.h" -#include "dol2asm.h" -#include "d/d_camera.h" +#include "SSystem/SComponent/c_math.h" +#include "Z2AudioLib/Z2Instances.h" #include "d/actor/d_a_obj_ystone.h" +#include "d/actor/d_a_player.h" +#include "d/d_camera.h" +#include "d/d_com_inf_game.h" +#include "d/d_s_play.h" +#include "m_Do/m_Do_graphic.h" +int daB_DRE_c::CreateHeap() { + J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes("B_DR", 0x49); + JUT_ASSERT(0xB4, modelData != 0); + if (mAction == 0) { + mpModelMorf = new mDoExt_McaMorfSO(modelData, NULL, NULL, + (J3DAnmTransform*)dComIfG_getObjectRes("B_DR", 0x1D), 0, + 1.0f, 0, -1, &mSound, 0, 0x11000084); + } else { + mpModelMorf = new mDoExt_McaMorfSO(modelData, NULL, NULL, + (J3DAnmTransform*)dComIfG_getObjectRes("B_DR", 0x1F), 2, + 1.0f, 0, -1, &mSound, 0, 0x11000084); + if (mpModelMorf == NULL || mpModelMorf->getModel() == NULL) { + return 0; + } -// -// Forward References: -// + mpCoreBrk = new mDoExt_brkAnm(); + if (mpCoreBrk == NULL) { + return 0; + } -extern "C" static void useHeapInit__FP10fopAc_ac_c(); -extern "C" void __dt__12J3DFrameCtrlFv(); -extern "C" static void daB_DRE_Create__FP10fopAc_ac_c(); -extern "C" void SetAnm__9daB_DRE_cFP16mDoExt_McaMorfSOiiff(); -extern "C" static void daB_DRE_Delete__FP9daB_DRE_c(); -extern "C" void CameraSet__9daB_DRE_cFv(); -extern "C" void __dt__4cXyzFv(); -extern "C" void SetStopingCam__9daB_DRE_cFv(); -extern "C" void SetStopCam__9daB_DRE_cF4cXyzffs(); -extern "C" void SetCMoveCam__9daB_DRE_cF4cXyzf(); -extern "C" void SetCMoveCam__9daB_DRE_cF4cXyzff(); -extern "C" void SetEyeMoveCam__9daB_DRE_cF4cXyzffsf(); -extern "C" void SetEyeMoveCam__9daB_DRE_cF4cXyzffsff(); -extern "C" void SetMoveCam__9daB_DRE_cFff(); -extern "C" void SetReleaseCam__9daB_DRE_cFv(); -extern "C" void CamAction2__9daB_DRE_cFv(); -extern "C" void DrAction2__9daB_DRE_cFv(); -extern "C" void CamAction__9daB_DRE_cFv(); -extern "C" void Action__9daB_DRE_cFv(); -extern "C" void DrAction__9daB_DRE_cFv(); -extern "C" void SoundChk__9daB_DRE_cFv(); -extern "C" void Execute__9daB_DRE_cFv(); -extern "C" void SpeedSet__9daB_DRE_cFv(); -extern "C" void BreathSet__9daB_DRE_cFv(); -extern "C" void Delete__9daB_DRE_cFv(); -extern "C" void setBaseMtx__9daB_DRE_cFv(); -extern "C" static void daB_DRE_Draw__FP9daB_DRE_c(); -extern "C" static void daB_DRE_Execute__FP9daB_DRE_c(); -extern "C" void create__9daB_DRE_cFv(); -extern "C" void __dt__12dBgS_ObjAcchFv(); -extern "C" static bool daB_DRE_IsDelete__FP9daB_DRE_c(); -extern "C" void __sinit_d_a_b_dre_cpp(); -extern "C" static void func_805CAD1C(); -extern "C" static void func_805CAD24(); -extern "C" void setCurrentPos__16obj_ystone_classF4cXyz(); -extern "C" extern char const* const d_a_b_dre__stringBase0; + J3DAnmTevRegKey* pbrk = (J3DAnmTevRegKey*)dComIfG_getObjectRes("B_DR", 0x51); + if (!mpCoreBrk->init(mpModelMorf->getModel()->getModelData(), pbrk, TRUE, 2, 1.0f, 0, -1)) { + return 0; + } + } -// -// External References: -// - -extern "C" void onBlure__13mDoGph_gInf_cFv(); -extern "C" void transS__14mDoMtx_stack_cFRC4cXyz(); -extern "C" void scaleM__14mDoMtx_stack_cFfff(); -extern "C" void ZXYrotM__14mDoMtx_stack_cFRC5csXyz(); -extern "C" void play__14mDoExt_baseAnmFv(); -extern "C" void init__13mDoExt_brkAnmFP16J3DMaterialTableP15J3DAnmTevRegKeyiifss(); -extern "C" void entry__13mDoExt_brkAnmFP16J3DMaterialTablef(); -extern "C" void -__ct__16mDoExt_McaMorfSOFP12J3DModelDataP25mDoExt_McaMorfCallBack1_cP25mDoExt_McaMorfCallBack2_cP15J3DAnmTransformifiiP10Z2CreatureUlUl(); -extern "C" void setAnm__16mDoExt_McaMorfSOFP15J3DAnmTransformiffff(); -extern "C" void play__16mDoExt_McaMorfSOFUlSc(); -extern "C" void entryDL__16mDoExt_McaMorfSOFv(); -extern "C" void modelCalc__16mDoExt_McaMorfSOFv(); -extern "C" void stopZelAnime__16mDoExt_McaMorfSOFv(); -extern "C" void __ct__10fopAc_ac_cFv(); -extern "C" void fopAcM_SearchByName__FsPP10fopAc_ac_c(); -extern "C" void fopAcM_delete__FP10fopAc_ac_c(); -extern "C" void fopAcM_create__FsUlPC4cXyziPC5csXyzPC4cXyzSc(); -extern "C" void fopAcM_entrySolidHeap__FP10fopAc_ac_cPFP10fopAc_ac_c_iUl(); -extern "C" void fopAcM_SetMin__FP10fopAc_ac_cfff(); -extern "C" void fopAcM_SetMax__FP10fopAc_ac_cfff(); -extern "C" void fopAcM_orderPotentialEvent__FP10fopAc_ac_cUsUsUs(); -extern "C" void fopAcM_createItemForBoss__FPC4cXyziiPC5csXyzPC4cXyzffi(); -extern "C" void fopAcM_createWarpHole__FPC4cXyzPC5csXyziUcUcUc(); -extern "C" void fopAcM_createDisappear__FPC10fopAc_ac_cPC4cXyzUcUcUc(); -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 -dComIfGd_setShadow__FUlScP8J3DModelP4cXyzffffR13cBgS_PolyInfoP12dKy_tevstr_csfP9_GXTexObj(); -extern "C" void onSwitch__10dSv_info_cFii(); -extern "C" void offSwitch__10dSv_info_cFii(); -extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); -extern "C" void reset__14dEvt_control_cFv(); -extern "C" void setPtT__14dEvt_control_cFPv(); -extern "C" void getEmitter__Q213dPa_control_c7level_cFUl(); -extern "C" void -set__13dPa_control_cFUlUcUsPC4cXyzPC12dKy_tevstr_cPC5csXyzPC4cXyzUcP18dPa_levelEcallBackScPC8_GXColorPC8_GXColorPC4cXyzf(); -extern "C" void StartQuake__12dVibration_cFii4cXyz(); -extern "C" void StopQuake__12dVibration_cFi(); -extern "C" void __ct__12dBgS_AcchCirFv(); -extern "C" void SetWall__12dBgS_AcchCirFff(); -extern "C" void __dt__9dBgS_AcchFv(); -extern "C" void __ct__9dBgS_AcchFv(); -extern "C" void Set__9dBgS_AcchFP4cXyzP4cXyzP10fopAc_ac_ciP12dBgS_AcchCirP4cXyzP5csXyzP5csXyz(); -extern "C" void CrrPos__9dBgS_AcchFR4dBgS(); -extern "C" void SetObj__16dBgS_PolyPassChkFv(); -extern "C" void Start__9dCamera_cFv(); -extern "C" void Stop__9dCamera_cFv(); -extern "C" void SetTrimSize__9dCamera_cFl(); -extern "C" void Set__9dCamera_cF4cXyz4cXyzfs(); -extern "C" void Reset__9dCamera_cF4cXyz4cXyz(); -extern "C" void dCam_getBody__Fv(); -extern "C" void Eye__9dCamera_cFv(); -extern "C" void Center__9dCamera_cFv(); -extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c(); -extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c(); -extern "C" void cM_rndF__Ff(); -extern "C" void cLib_addCalc2__FPffff(); -extern "C" void cLib_addCalcPos__FP4cXyzRC4cXyzfff(); -extern "C" void cLib_addCalcPos2__FP4cXyzRC4cXyzff(); -extern "C" void cLib_chasePos__FP4cXyzRC4cXyzf(); -extern "C" void cLib_targetAngleY__FPC3VecPC3Vec(); -extern "C" void cLib_offsetPos__FP4cXyzPC4cXyzsPC4cXyz(); -extern "C" void func_80280808(); -extern "C" void seStart__7Z2SeMgrF10JAISoundIDPC3VecUlScffffUc(); -extern "C" void __ct__15Z2CreatureEnemyFv(); -extern "C" void init__15Z2CreatureEnemyFP3VecP3VecUcUc(); -extern "C" void setEnemyName__15Z2CreatureEnemyFPCc(); -extern "C" void* __nw__FUl(); -extern "C" void __dl__FPv(); -extern "C" void init__12J3DFrameCtrlFs(); -extern "C" void checkPass__12J3DFrameCtrlFf(); -extern "C" void removeTevRegAnimator__16J3DMaterialTableFP15J3DAnmTevRegKey(); -extern "C" void _savegpr_22(); -extern "C" void _savegpr_27(); -extern "C" void _savegpr_28(); -extern "C" void _savegpr_29(); -extern "C" void _restgpr_22(); -extern "C" void _restgpr_27(); -extern "C" void _restgpr_28(); -extern "C" void _restgpr_29(); -extern "C" u8 now__14mDoMtx_stack_c[48]; -extern "C" extern u8 g_dComIfG_gameInfo[122384]; -extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; -extern "C" extern u8 mBlureFlag__13mDoGph_gInf_c[4]; -extern "C" u8 mAudioMgrPtr__10Z2AudioMgr[4 + 4 /* padding */]; -extern "C" void __register_global_object(); - -// -// Declarations: -// - -/* ############################################################################################## */ -/* 805CAD5C-805CAD60 000000 0004+00 10/10 0/0 0/0 .rodata @3844 */ -SECTION_RODATA static f32 const lit_3844 = 1.0f; -COMPILER_STRIP_GATE(0x805CAD5C, &lit_3844); - -/* 805CAECC-805CAECC 000170 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ -#pragma push -#pragma force_active on -SECTION_DEAD static char const* const stringBase_805CAECC = "B_DR"; -#pragma pop - -/* 805CAED4-805CAEFC -00001 0028+00 1/1 0/0 0/0 .data @4416 */ -SECTION_DATA static void* lit_4416[10] = { - (void*)(((char*)CamAction__9daB_DRE_cFv) + 0x74), - (void*)(((char*)CamAction__9daB_DRE_cFv) + 0x194), - (void*)(((char*)CamAction__9daB_DRE_cFv) + 0x200), - (void*)(((char*)CamAction__9daB_DRE_cFv) + 0x2AC), - (void*)(((char*)CamAction__9daB_DRE_cFv) + 0x30C), - (void*)(((char*)CamAction__9daB_DRE_cFv) + 0x38C), - (void*)(((char*)CamAction__9daB_DRE_cFv) + 0x3B4), - (void*)(((char*)CamAction__9daB_DRE_cFv) + 0x3BC), - (void*)(((char*)CamAction__9daB_DRE_cFv) + 0x3CC), - (void*)(((char*)CamAction__9daB_DRE_cFv) + 0x414), -}; - -/* 805CAEFC-805CAF24 -00001 0028+00 1/1 0/0 0/0 .data @4621 */ -SECTION_DATA static void* lit_4621[10] = { - (void*)(((char*)DrAction__9daB_DRE_cFv) + 0x50), - (void*)(((char*)DrAction__9daB_DRE_cFv) + 0x58), - (void*)(((char*)DrAction__9daB_DRE_cFv) + 0xCC), - (void*)(((char*)DrAction__9daB_DRE_cFv) + 0x19C), - (void*)(((char*)DrAction__9daB_DRE_cFv) + 0x2D0), - (void*)(((char*)DrAction__9daB_DRE_cFv) + 0x3C0), - (void*)(((char*)DrAction__9daB_DRE_cFv) + 0x4A8), - (void*)(((char*)DrAction__9daB_DRE_cFv) + 0x560), - (void*)(((char*)DrAction__9daB_DRE_cFv) + 0x58C), - (void*)(((char*)DrAction__9daB_DRE_cFv) + 0x688), -}; - -/* 805CAF24-805CAFAC -00001 0088+00 1/1 0/0 0/0 .data @4782 */ -SECTION_DATA static void* lit_4782[34] = { - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x23C), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x48C), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x78), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x48), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x1F4), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x600), - (void*)(((char*)SoundChk__9daB_DRE_cFv) + 0x534), -}; - -/* 805CAFAC-805CAFB4 0000D8 0008+00 1/1 0/0 0/0 .data effId$4884 */ -SECTION_DATA static u8 effId[8] = { - 0x89, 0x9B, 0x89, 0x9C, 0x89, 0x9D, 0x89, 0x9E, -}; - -/* 805CAFB4-805CAFD4 -00001 0020+00 1/0 0/0 0/0 .data l_daB_DRE_Method */ -static actor_method_class l_daB_DRE_Method = { - (process_method_func)daB_DRE_Create__FP10fopAc_ac_c, - (process_method_func)daB_DRE_Delete__FP9daB_DRE_c, - (process_method_func)daB_DRE_Execute__FP9daB_DRE_c, - (process_method_func)daB_DRE_IsDelete__FP9daB_DRE_c, - (process_method_func)daB_DRE_Draw__FP9daB_DRE_c, -}; - -/* 805CAFD4-805CB004 -00001 0030+00 0/0 0/0 1/0 .data g_profile_B_DRE */ -extern actor_process_profile_definition g_profile_B_DRE = { - fpcLy_CURRENT_e, // mLayerID - 7, // mListID - fpcPi_CURRENT_e, // mListPrio - PROC_B_DRE, // mProcName - &g_fpcLf_Method.base, // sub_method - sizeof(daB_DRE_c), // mSize - 0, // mSizeOther - 0, // mParameters - &g_fopAc_Method.base, // sub_method - 231, // mPriority - &l_daB_DRE_Method, // sub_method - 0x00044100, // mStatus - fopAc_ENEMY_e, // mActorType - fopAc_CULLBOX_CUSTOM_e, // cullType -}; - -/* 805CB004-805CB028 000130 0024+00 2/2 0/0 0/0 .data __vt__12dBgS_ObjAcch */ -SECTION_DATA extern void* __vt__12dBgS_ObjAcch[9] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12dBgS_ObjAcchFv, - (void*)NULL, - (void*)NULL, - (void*)func_805CAD24, - (void*)NULL, - (void*)NULL, - (void*)func_805CAD1C, -}; - -/* 805CB028-805CB034 000154 000C+00 2/2 0/0 0/0 .data __vt__12J3DFrameCtrl */ -SECTION_DATA extern void* __vt__12J3DFrameCtrl[3] = { - (void*)NULL /* RTTI */, - (void*)NULL, - (void*)__dt__12J3DFrameCtrlFv, -}; - -/* 805C7B2C-805C7D6C 0000EC 0240+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ -static void useHeapInit(fopAc_ac_c* param_0) { - // NONMATCHING + if (mpModelMorf == NULL || mpModelMorf->getModel() == NULL) { + return 0; + } + return 1; } -/* 805C7D6C-805C7DB4 00032C 0048+00 1/0 0/0 0/0 .text __dt__12J3DFrameCtrlFv */ -// J3DFrameCtrl::~J3DFrameCtrl() { -extern "C" void __dt__12J3DFrameCtrlFv() { - // NONMATCHING +/* 805C7B2C-805C7D6C 0000EC 0240+00 1/1 0/0 0/0 .text useHeapInit__FP10fopAc_ac_c */ +static int useHeapInit(fopAc_ac_c* i_this) { + return ((daB_DRE_c*)i_this)->CreateHeap(); } /* 805C7DB4-805C7DD4 000374 0020+00 1/0 0/0 0/0 .text daB_DRE_Create__FP10fopAc_ac_c */ -static void daB_DRE_Create(fopAc_ac_c* param_0) { - // NONMATCHING +static int daB_DRE_Create(fopAc_ac_c* i_this) { + return ((daB_DRE_c*)i_this)->create(); } -/* ############################################################################################## */ -/* 805CAD60-805CAD64 000004 0004+00 5/11 0/0 0/0 .rodata @3862 */ -SECTION_RODATA static u8 const lit_3862[4] = { - 0x00, - 0x00, - 0x00, - 0x00, -}; -COMPILER_STRIP_GATE(0x805CAD60, &lit_3862); - -/* 805CAD64-805CAD68 000008 0004+00 1/1 0/0 0/0 .rodata @3863 */ -SECTION_RODATA static f32 const lit_3863 = -1.0f; -COMPILER_STRIP_GATE(0x805CAD64, &lit_3863); - /* 805C7DD4-805C7E88 000394 00B4+00 4/4 0/0 0/0 .text SetAnm__9daB_DRE_cFP16mDoExt_McaMorfSOiiff */ -void daB_DRE_c::SetAnm(mDoExt_McaMorfSO* param_0, int param_1, int param_2, f32 param_3, - f32 param_4) { - // NONMATCHING +void daB_DRE_c::SetAnm(mDoExt_McaMorfSO* i_modelMorf, int i_anm, int i_attr, f32 i_morf, + f32 i_speed) { + i_modelMorf->setAnm((J3DAnmTransform*)dComIfG_getObjectRes("B_DR", i_anm), i_attr, i_morf, + i_speed, 0.0f, -1.0f); + mAnm = i_anm; } /* 805C7E88-805C7EAC 000448 0024+00 1/0 0/0 0/0 .text daB_DRE_Delete__FP9daB_DRE_c */ -static void daB_DRE_Delete(daB_DRE_c* param_0) { - // NONMATCHING +static int daB_DRE_Delete(daB_DRE_c* i_this) { + i_this->Delete(); + return 1; } /* 805C7EAC-805C7FCC 00046C 0120+00 1/1 0/0 0/0 .text CameraSet__9daB_DRE_cFv */ -void daB_DRE_c::CameraSet() { - // NONMATCHING -} +bool daB_DRE_c::CameraSet() { + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + dCamera_c* cam_body = dCam_getBody(); -/* 805C7FCC-805C8008 00058C 003C+00 1/1 0/0 0/0 .text __dt__4cXyzFv */ -// cXyz::~cXyz() { -extern "C" void __dt__4cXyzFv() { - // NONMATCHING + if (!eventInfo.i_checkCommandDemoAccrpt()) { + fopAcM_orderPotentialEvent(this, 2, 0xFFFF, 0); + eventInfo.i_onCondition(0); + return 0; + } + + camera->mCamera.Stop(); + + mCamFovy = cam_body->Fovy(); + mCamCenter = cam_body->Center(); + mCamCenterTarget = mCamCenter; + mCamEye = cam_body->Eye(); + mCamEyeTarget = mCamEye; + + camera->mCamera.SetTrimSize(3); + return 1; } /* 805C8008-805C808C 0005C8 0084+00 2/2 0/0 0/0 .text SetStopingCam__9daB_DRE_cFv */ void daB_DRE_c::SetStopingCam() { - // NONMATCHING + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + camera->mCamera.Set(mCamCenter, mCamEye, mCamFovy, 0); } /* 805C808C-805C81B8 00064C 012C+00 3/3 0/0 0/0 .text SetStopCam__9daB_DRE_cF4cXyzffs */ -void daB_DRE_c::SetStopCam(cXyz param_0, f32 param_1, f32 param_2, s16 param_3) { - // NONMATCHING +void daB_DRE_c::SetStopCam(cXyz i_center, f32 param_1, f32 i_eyeY, s16 i_offsetAngle) { + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + + cXyz eye_pos(0.0f, i_eyeY, param_1); + mCamCenter.set(i_center.x, i_center.y, i_center.z); + mCamCenterTarget = mCamCenter; + + cLib_offsetPos(&eye_pos, &i_center, i_offsetAngle, &eye_pos); + mCamEye = eye_pos; + mCamEyeTarget = eye_pos; + + camera->mCamera.Set(mCamCenter, mCamEye, mCamFovy, 0); + field_0x608 = param_1; } /* 805C81B8-805C8208 000778 0050+00 1/1 0/0 0/0 .text SetCMoveCam__9daB_DRE_cF4cXyzf */ -void daB_DRE_c::SetCMoveCam(cXyz param_0, f32 param_1) { - // NONMATCHING +bool daB_DRE_c::SetCMoveCam(cXyz i_target, f32 i_step) { + mCamCenterTarget = i_target; + if (cLib_chasePos(&mCamCenter, mCamCenterTarget, i_step)) { + return 1; + } + + return 0; } /* 805C8208-805C824C 0007C8 0044+00 2/2 0/0 0/0 .text SetCMoveCam__9daB_DRE_cF4cXyzff */ -void daB_DRE_c::SetCMoveCam(cXyz param_0, f32 param_1, f32 param_2) { - // NONMATCHING +void daB_DRE_c::SetCMoveCam(cXyz i_target, f32 i_scale, f32 i_step) { + mCamCenterTarget = i_target; + cLib_addCalcPos2(&mCamCenter, mCamCenterTarget, i_scale, i_step); } /* 805C824C-805C8348 00080C 00FC+00 2/2 0/0 0/0 .text SetEyeMoveCam__9daB_DRE_cF4cXyzffsf */ -void daB_DRE_c::SetEyeMoveCam(cXyz param_0, f32 param_1, f32 param_2, s16 param_3, - f32 param_4) { - // NONMATCHING +void daB_DRE_c::SetEyeMoveCam(cXyz param_0, f32 param_1, f32 param_2, s16 i_offsetAngle, + f32 i_step) { + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + + cXyz offset(0.0f, param_2, param_1); + cXyz target(0.0f, 0.0f, 0.0f); + cLib_offsetPos(&target, ¶m_0, i_offsetAngle, &offset); + mCamEyeTarget = target; + cLib_chasePos(&mCamEye, mCamEyeTarget, i_step); + + camera->mCamera.Set(mCamCenter, mCamEye, mCamFovy, 0); } /* 805C8348-805C8458 000908 0110+00 1/1 0/0 0/0 .text SetEyeMoveCam__9daB_DRE_cF4cXyzffsff */ -void daB_DRE_c::SetEyeMoveCam(cXyz param_0, f32 param_1, f32 param_2, s16 param_3, f32 param_4, - f32 param_5) { - // NONMATCHING +void daB_DRE_c::SetEyeMoveCam(cXyz param_0, f32 param_1, f32 param_2, s16 i_offsetAngle, + f32 i_scale, f32 i_step) { + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + + cXyz target(0.0f, param_2, param_1); + cLib_offsetPos(&target, ¶m_0, i_offsetAngle, &target); + mCamEyeTarget = target; + cLib_addCalcPos(&mCamEye, mCamEyeTarget, i_scale, i_step, 0.0f); + + camera->mCamera.Set(mCamCenter, mCamEye, mCamFovy, 0); } /* 805C8458-805C8544 000A18 00EC+00 1/1 0/0 0/0 .text SetMoveCam__9daB_DRE_cFff */ -void daB_DRE_c::SetMoveCam(f32 param_0, f32 param_1) { - // NONMATCHING +void daB_DRE_c::SetMoveCam(f32 i_scale, f32 i_step) { + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + + cLib_addCalcPos(&mCamCenter, mCamCenterTarget, i_scale, i_step, 0.0f); + cLib_addCalcPos(&mCamEye, mCamEyeTarget, i_scale, i_step, 0.0f); + + camera->mCamera.Set(mCamCenter, mCamEye, mCamFovy, 0); } /* 805C8544-805C85E8 000B04 00A4+00 1/1 0/0 0/0 .text SetReleaseCam__9daB_DRE_cFv */ void daB_DRE_c::SetReleaseCam() { - // NONMATCHING + camera_class* camera = dComIfGp_getCamera(dComIfGp_getPlayerCameraID(0)); + + camera->mCamera.Reset(mCamCenter, mCamEye); + camera->mCamera.Start(); + camera->mCamera.SetTrimSize(0); + dComIfGp_event_reset(); } -/* ############################################################################################## */ -/* 805CAD68-805CAD6C 00000C 0004+00 0/1 0/0 0/0 .rodata @4209 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4209 = -1800.0f; -COMPILER_STRIP_GATE(0x805CAD68, &lit_4209); -#pragma pop - -/* 805CAD6C-805CAD70 000010 0004+00 0/3 0/0 0/0 .rodata @4210 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4210 = 1000.0f; -COMPILER_STRIP_GATE(0x805CAD6C, &lit_4210); -#pragma pop - -/* 805CAD70-805CAD74 000014 0004+00 0/1 0/0 0/0 .rodata @4211 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4211 = 600.0f; -COMPILER_STRIP_GATE(0x805CAD70, &lit_4211); -#pragma pop - -/* 805CAD74-805CAD78 000018 0004+00 0/3 0/0 0/0 .rodata @4212 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4212 = 200.0f; -COMPILER_STRIP_GATE(0x805CAD74, &lit_4212); -#pragma pop - -/* 805CAD78-805CAD7C 00001C 0004+00 0/1 0/0 0/0 .rodata @4213 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4213 = 9.0f; -COMPILER_STRIP_GATE(0x805CAD78, &lit_4213); -#pragma pop - -/* 805CAD7C-805CAD80 000020 0004+00 0/1 0/0 0/0 .rodata @4214 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4214 = 300.0f; -COMPILER_STRIP_GATE(0x805CAD7C, &lit_4214); -#pragma pop - -/* 805CAD80-805CAD84 000024 0004+00 0/1 0/0 0/0 .rodata @4215 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4215 = 1.0f / 10.0f; -COMPILER_STRIP_GATE(0x805CAD80, &lit_4215); -#pragma pop - -/* 805CAD84-805CAD88 000028 0004+00 0/2 0/0 0/0 .rodata @4216 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4216 = 30.0f; -COMPILER_STRIP_GATE(0x805CAD84, &lit_4216); -#pragma pop - -/* 805CAD88-805CAD8C 00002C 0004+00 0/1 0/0 0/0 .rodata @4217 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4217 = 120.0f; -COMPILER_STRIP_GATE(0x805CAD88, &lit_4217); -#pragma pop - -/* 805CAD8C-805CAD90 000030 0004+00 0/1 0/0 0/0 .rodata @4218 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4218 = -700.0f; -COMPILER_STRIP_GATE(0x805CAD8C, &lit_4218); -#pragma pop - -/* 805CAD90-805CAD94 000034 0004+00 0/1 0/0 0/0 .rodata @4219 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4219 = -40.0f; -COMPILER_STRIP_GATE(0x805CAD90, &lit_4219); -#pragma pop - -/* 805CAD94-805CAD98 000038 0004+00 0/2 0/0 0/0 .rodata @4220 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4220 = 800.0f; -COMPILER_STRIP_GATE(0x805CAD94, &lit_4220); -#pragma pop - -/* 805CAD98-805CAD9C 00003C 0004+00 0/2 0/0 0/0 .rodata @4221 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4221 = 5.0f; -COMPILER_STRIP_GATE(0x805CAD98, &lit_4221); -#pragma pop - -/* 805CAD9C-805CADA0 000040 0004+00 0/2 0/0 0/0 .rodata @4222 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4222 = 80.0f; -COMPILER_STRIP_GATE(0x805CAD9C, &lit_4222); -#pragma pop - -/* 805CADA0-805CADA4 000044 0004+00 0/1 0/0 0/0 .rodata @4223 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4223 = 250.0f; -COMPILER_STRIP_GATE(0x805CADA0, &lit_4223); -#pragma pop - -/* 805CADA4-805CADA8 000048 0004+00 0/4 0/0 0/0 .rodata @4224 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4224 = 100.0f; -COMPILER_STRIP_GATE(0x805CADA4, &lit_4224); -#pragma pop - -/* 805CADA8-805CADAC 00004C 0004+00 0/2 0/0 0/0 .rodata @4225 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4225 = 130.0f; -COMPILER_STRIP_GATE(0x805CADA8, &lit_4225); -#pragma pop - -/* 805CADAC-805CADB0 000050 0004+00 0/1 0/0 0/0 .rodata @4226 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4226 = 1650.0f; -COMPILER_STRIP_GATE(0x805CADAC, &lit_4226); -#pragma pop - -/* 805CADB0-805CADB4 000054 0004+00 1/3 0/0 0/0 .rodata @4227 */ -SECTION_RODATA static f32 const lit_4227 = 1.0f / 5.0f; -COMPILER_STRIP_GATE(0x805CADB0, &lit_4227); - -/* 805CADB4-805CADB8 000058 0004+00 0/1 0/0 0/0 .rodata @4228 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4228 = 2.0f; -COMPILER_STRIP_GATE(0x805CADB4, &lit_4228); -#pragma pop - -/* 805CADB8-805CADBC 00005C 0004+00 0/1 0/0 0/0 .rodata @4229 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4229 = 2500.0f; -COMPILER_STRIP_GATE(0x805CADB8, &lit_4229); -#pragma pop - -/* 805CADBC-805CADC4 000060 0008+00 0/1 0/0 0/0 .rodata @4231 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4231[8] = { - 0x43, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x805CADBC, &lit_4231); -#pragma pop - -/* 805CB040-805CB044 000008 0001+03 3/3 0/0 0/0 .bss @1109 */ -static u8 lit_1109[1 + 3 /* padding */]; - -/* 805CB044-805CB048 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 - -/* 805CB048-805CB04C 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 - -/* 805CB04C-805CB050 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 - -/* 805CB050-805CB054 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 - -/* 805CB054-805CB058 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 - -/* 805CB058-805CB05C 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 - -/* 805CB05C-805CB060 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 - -/* 805CB060-805CB064 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 - -/* 805CB064-805CB068 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 - -/* 805CB068-805CB06C 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 - -/* 805CB06C-805CB070 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 - -/* 805CB070-805CB074 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 - -/* 805CB074-805CB078 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 - -/* 805CB078-805CB07C 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 - -/* 805CB07C-805CB080 000044 0001+03 0/0 0/0 0/0 .bss @1009 */ -#pragma push -#pragma force_active on -static u8 lit_1009[1 + 3 /* padding */]; -#pragma pop +UNK_BSS(1109) +UNK_BSS(1107) +UNK_BSS(1105) +UNK_BSS(1104) +UNK_BSS(1099) +UNK_BSS(1097) +UNK_BSS(1095) +UNK_BSS(1094) +UNK_BSS(1057) +UNK_BSS(1055) +UNK_BSS(1053) +UNK_BSS(1052) +UNK_BSS(1014) +UNK_BSS(1012) +UNK_BSS(1010) +UNK_BSS(1009) +namespace { /* 805CB080-805CB084 000048 0004+00 0/1 0/0 0/0 .bss s_dis__23@unnamed@d_a_b_dre_cpp@ */ -#pragma push -#pragma force_active on -static u8 data_805CB080[4]; -#pragma pop +static f32 s_dis; /* 805CB084-805CB088 00004C 0004+00 1/2 0/0 0/0 .bss s_LinkPos__23@unnamed@d_a_b_dre_cpp@ */ -static u8 data_805CB084[4]; +static cXyz* s_LinkPos; /* 805CB088-805CB08C 000050 0002+02 0/1 0/0 0/0 .bss s_TargetAngle__23@unnamed@d_a_b_dre_cpp@ */ -#pragma push -#pragma force_active on -static u8 data_805CB088[2 + 2 /* padding */]; -#pragma pop - -/* 805CB08C-805CB098 000054 000C+00 0/1 0/0 0/0 .bss @3768 */ -#pragma push -#pragma force_active on -static u8 lit_3768[12]; -#pragma pop +static s16 s_TargetAngle; /* 805CB098-805CB0A4 000060 000C+00 3/6 0/0 0/0 .bss s_HeadPos__23@unnamed@d_a_b_dre_cpp@ */ -static u8 data_805CB098[12]; - -/* 805CB0A4-805CB0B0 00006C 000C+00 0/1 0/0 0/0 .bss @3769 */ -#pragma push -#pragma force_active on -static u8 lit_3769[12]; -#pragma pop +static cXyz s_HeadPos; /* 805CB0B0-805CB0BC 000078 000C+00 0/3 0/0 0/0 .bss s_BodyPos__23@unnamed@d_a_b_dre_cpp@ */ -#pragma push -#pragma force_active on -static u8 data_805CB0B0[12]; -#pragma pop - -/* 805CB0BC-805CB0C8 000084 000C+00 0/1 0/0 0/0 .bss @3770 */ -#pragma push -#pragma force_active on -static u8 lit_3770[12]; -#pragma pop +static cXyz s_BodyPos; /* 805CB0C8-805CB0D4 000090 000C+00 0/3 0/0 0/0 .bss s_TalePos__23@unnamed@d_a_b_dre_cpp@ */ -#pragma push -#pragma force_active on -static u8 data_805CB0C8[12]; -#pragma pop +static cXyz s_TalePos; +} // namespace /* 805C85E8-805C8BF8 000BA8 0610+00 1/1 0/0 0/0 .text CamAction2__9daB_DRE_cFv */ void daB_DRE_c::CamAction2() { - // NONMATCHING + cXyz pos; + pos = current.pos; + + cXyz spD0; + cXyz spC4; + csXyz sp14; + + daPy_py_c* player = daPy_getPlayerActorClass(); + dCamera_c* camera = dCam_getBody(); + cXyz spB8; + + eyePos = s_BodyPos; + attention_info.position = s_BodyPos; + + cXyz spAC; + + switch (mCameraMode) { + case 0: + pos.set(-1800.0f, 0.0f, 0.0f); + player->setPlayerPosAndAngle(&pos, shape_angle.y + 0x5000, 0); + if (mTimers[0] == 0) { + mCameraMode++; + mTimers[0] = 170; + current.pos.y += 1000.0f; + + spAC = s_BodyPos; + spAC.y += 1000.0f; + SetStopCam(spAC, 600.0f, 200.0f, field_0x5fc); + } + break; + case 1: + if (mTimers[0] < 140) { + SetCMoveCam(s_BodyPos, 9.0f); + SetEyeMoveCam(s_BodyPos, 300.0f, 200.0f, field_0x5fc, 0.1f, 30.0f); + } + + if (mTimers[0] == 0) { + mCameraMode++; + current.pos.set(0.0f, 120.0f, -700.0f); + old.pos = current.pos; + field_0x5fc = shape_angle.y + 0x500; + pos.y = 0.0f; + + SetStopCam(current.pos, 1000.0f, -40.0f, field_0x5fc); + mTimers[0] = 100; + dComIfGp_event_setTalkPartner(this); + player->changeDemoMode(0x17, 3, 0, 0); + pos.set(0.0f, 0.0f, 800.0f + TREG_F(8)); + player->setPlayerPosAndAngle(&pos, shape_angle.y + 0x5000, 0); + return; + } + break; + case 2: + field_0x5fc -= 5; + if (mTimers[0] == 0) { + SetAnm(mpModelMorf, 0x38, 0, 5.0f, 1.0f); + dScnKy_env_light_c* kankyo = dKy_getEnvlight(); + kankyo->field_0x12cc = 2; + mDrMode++; + mCameraMode++; + } + + pos.y = 0.0f; + + SetEyeMoveCam(pos, 1000.0f, 80.0f, field_0x5fc, 5.0f); + break; + case 3: + if (mTimers[0] == 0) { + mBlurRate = 0.0f; + } + + if (mpModelMorf->getFrame() > 250.0f && mAnm == 0x17) { + SetCMoveCam(s_HeadPos, 0.1f, 100.0f); + } else { + spD0 = s_HeadPos; + + if (!(mpModelMorf->getFrame() <= 130.0f) || mAnm != 0x38) { + spD0.y -= 1000.0f + TREG_F(12); + } + + if (spD0.y < s_TalePos.y) { + spD0.y = s_TalePos.y; + } + + SetCMoveCam(spD0, 0.1f, 100.0f); + } + + pos.y = 0.0f; + + if (mpModelMorf->getFrame() > 130.0f && mAnm == 0x38) { + SetEyeMoveCam(pos, 1650.0f + TREG_F(5), 1.0f + TREG_F(13), field_0x5fc, 0.2f, + 100.0f + TREG_F(9)); + } else if (mAnm == 0x17) { + SetEyeMoveCam(pos, 1650.0f + TREG_F(5), 1.0f + TREG_F(13), field_0x5fc, 0.2f, + 100.0f + TREG_F(9)); + } else { + SetEyeMoveCam(pos, 1000.0f, 80.0f, field_0x5fc, 5.0f + TREG_F(10)); + field_0x5fc -= 2.0f + TREG_F(11); + } + break; + case 4: + if (mDrMode != 4) { + pos.y = 0.0f; + SetEyeMoveCam(pos, 2500.0f, 200.0f, field_0x5fc, 5.0f + XREG_F(2)); + SetCMoveCam(s_BodyPos, 0.1f, 100.0f); + SetStopingCam(); + } + break; + } } -/* ############################################################################################## */ -/* 805CADC4-805CADC8 000068 0004+00 0/1 0/0 0/0 .rodata @4309 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4309 = 150.0f; -COMPILER_STRIP_GATE(0x805CADC4, &lit_4309); -#pragma pop - -/* 805CADC8-805CADCC 00006C 0004+00 0/1 0/0 0/0 .rodata @4310 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4310 = 110.0f; -COMPILER_STRIP_GATE(0x805CADC8, &lit_4310); -#pragma pop - -/* 805CADCC-805CADD0 000070 0004+00 0/1 0/0 0/0 .rodata @4311 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4311 = 270.0f; -COMPILER_STRIP_GATE(0x805CADCC, &lit_4311); -#pragma pop - -/* 805CADD0-805CADD4 000074 0004+00 0/1 0/0 0/0 .rodata @4312 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4312 = 5000.0f; -COMPILER_STRIP_GATE(0x805CADD0, &lit_4312); -#pragma pop - -/* 805CADD4-805CADD8 000078 0004+00 0/1 0/0 0/0 .rodata @4313 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4313 = 1500.0f; -COMPILER_STRIP_GATE(0x805CADD4, &lit_4313); -#pragma pop - /* 805C8BF8-805C8EDC 0011B8 02E4+00 1/1 0/0 0/0 .text DrAction2__9daB_DRE_cFv */ void daB_DRE_c::DrAction2() { - // NONMATCHING + cXyz eye_pos; + cXyz sp8; + switch (mDrMode) { + case 1: + if (mpModelMorf->checkFrame(130.0f)) { + mTargetSpeedY = 0.0f; + speed.y = 150.0f + TREG_F(6); + } + + if (mpModelMorf->isStop()) { + mDrMode++; + SetAnm(mpModelMorf, 0x17, 0, 5.0f, 1.0f); + } + break; + case 0: + break; + case 2: + if (mpModelMorf->checkFrame(110.0f)) { + subtype = 1; + mBlurRate = 150.0f; + mTimers[0] = 100; + mHideParts = true; + } else if (mpModelMorf->checkFrame(270.0f)) { + mBlurRate = 150.0f; + mTimers[0] = 100; + mHideParts = true; + } + + if (mpModelMorf->getFrame() < 270.0f) { + cLib_addCalc2(&mBlurRate, 0.0f, 0.2f, 1.0f); + } else { + cLib_addCalc2(&mBlurRate, 0.0f, 0.2f, 1.0f); + } + + if (mpModelMorf->isStop()) { + SetAnm(mpModelMorf, 0x35, 2, 5.0f, 1.0f); + mTargetSpeedY = 30.0f; + mCameraMode++; + mDrMode++; + dComIfGp_getVibration().StopQuake(0x1F); + return; + } + break; + case 3: + if (current.pos.y > 5000.0f) { + mDrMode++; + + sp8.set(0.0f, 0.0f, 0.0f); + eye_pos.set(0.0f, 200.0f, 1500.0f); + cLib_offsetPos(&sp8, ¤t.pos, shape_angle.y, &eye_pos); + mCamEye = eye_pos; + mCamCenter = *s_LinkPos; + mCamCenter.y += 100.0f; + + fopAcM_onSwitch(this, 16); + mTimers[0] = 50; + return; + } + break; + case 4: + if (mTimers[0] == 0) { + fopAcM_delete(this); + } + break; + } } /* 805C8EDC-805C9318 00149C 043C+00 2/1 0/0 0/0 .text CamAction__9daB_DRE_cFv */ void daB_DRE_c::CamAction() { - // NONMATCHING + cXyz pos; + pos = current.pos; + pos.y += 200.0f; + + cXyz sp94; + cXyz sp88; + csXyz sp8; + + daPy_py_c* player = daPy_getPlayerActorClass(); + + switch (mCameraMode) { + case 0: + if (CameraSet()) { + dComIfGs_offSwitch(16, fopAcM_GetRoomNo(this)); + dComIfGs_offSwitch(63, fopAcM_GetRoomNo(this)); + + dComIfGp_getVibration().StartQuake(VIBMODE_Q_POWER5, 0x1F, cXyz(0.0f, 1.0f, 0.0f)); + mCameraMode++; + field_0x5fc = shape_angle.y + 0x7000; + SetStopCam(pos, 1000.0f + yREG_F(1), 100.0f + yREG_F(2), field_0x5fc); + mTimers[0] = 0; + mDrMode++; + + player->cancelOctaIealHang(); + pos.set(100.0f + HREG_F(0), 0.0f, 800.0f + HREG_F(1)); + player->setPlayerPosAndAngle(&pos, shape_angle.y + 0x5000, 0); + } + break; + case 1: + field_0x5fc -= 16; + SetCMoveCam(pos, 0.1f, 100.0f); + SetEyeMoveCam(pos, field_0x608, 500.0f, field_0x5fc, 50.0f); + break; + case 2: + field_0x5fc -= 32; + SetCMoveCam(s_HeadPos, 0.2f + aREG_F(11), 200.0f + aREG_F(12)); + SetEyeMoveCam(pos, 1000.0f + yREG_F(3), -500.0f + yREG_F(4), field_0x5fc, 10.0f); + + pos.set(100.0f + HREG_F(0), 0.0f, 800.0f + HREG_F(1)); + player->setPlayerPosAndAngle(&pos, shape_angle.y + 0x5000, 0); + break; + case 3: + pos.y += 600.0f; + SetCMoveCam(pos, 0.2f, 20.0f); + SetEyeMoveCam(pos, 1000.0f + yREG_F(5), yREG_F(6), field_0x5fc, 2.0f); + break; + case 4: + pos = current.pos; + pos.y += 800.0f + yREG_F(14); + SetCMoveCam(pos, 0.4f, 300.0f + yREG_F(16)); + + if (mTimers[3] == 0 && mAnm == 0x19) { + SetAnm(mpModelMorf, 0x24, 0, 5.0f, 1.0f); + mDrMode++; + } + SetStopingCam(); + break; + case 5: + SetCMoveCam(current.pos, 0.4f, 100.0f); + SetStopingCam(); + break; + case 6: + SetStopingCam(); + break; + case 7: + SetMoveCam(0.05f + hREG_F(0), 5.0f + hREG_F(1)); + break; + case 8: + if (mCamCenter.y < 280.0f + XREG_F(8)) { + SetReleaseCam(); + mCameraMode++; + mDrMode++; + mTimers[0] = 50; + } + + SetMoveCam(0.05f + hREG_F(0), 5.0f + hREG_F(1)); + break; + case 9: + if (mTimers[0] == 0) { + fopAcM_delete(this); + } + break; + } } /* 805C9318-805C9378 0018D8 0060+00 1/1 0/0 0/0 .text Action__9daB_DRE_cFv */ void daB_DRE_c::Action() { - // NONMATCHING + switch (mAction) { + case 0: + CamAction(); + DrAction(); + break; + case 1: + CamAction2(); + DrAction2(); + break; + } } /* 805C9378-805C9B40 001938 07C8+00 2/1 0/0 0/0 .text DrAction__9daB_DRE_cFv */ void daB_DRE_c::DrAction() { - // NONMATCHING + daPy_py_c* player = daPy_getPlayerActorClass(); + cXyz sp90; + csXyz sp1C; + cXyz sp84; + cXyz sp78; + + switch (mDrMode) { + case 0: + BreathSet(); + break; + case 1: + if (mTimers[0] == 0) { + mCameraMode++; + SetStopCam(s_HeadPos, 800.0f, -800.0f, shape_angle.y + 0x1500); + field_0x5fc = shape_angle.y + 0x1000; + mDrMode++; + } + BreathSet(); + break; + case 2: + if (mpModelMorf->checkFrame(80.0f)) { + dComIfGp_getVibration().StopQuake(0x1F); + } + + if (mpModelMorf->isStop()) { + SetAnm(mpModelMorf, 0x19, 2, 10.0f, 1.0f); + mDrMode++; + mCameraMode++; + mTimers[3] = 140; + + player->changeOriginalDemo(); + player->changeDemoMode(4, 2, 0, 0); + mTimers[2] = 30; + } + BreathSet(); + break; + case 3: + if (mTimers[0] == 0) { + mTargetSpeedY = 30.0f; + mTimers[0] = 50.0f + cM_rndF(50.0f); + } + + if (mTimers[3] == 0 && mpModelMorf->checkFrame(1.0f)) { + mTimers[3] = 60; + mCameraMode++; + field_0x5fc = shape_angle.y; + sp90 = current.pos; + sp90.y += 800.0f + yREG_F(14); + SetStopCam(sp90, 100.0f + yREG_F(12), 4100.0f + yREG_F(13), shape_angle.y); + mTargetSpeedF = 0.0f; + } + + if (mTimers[1] != 0) { + BreathSet(); + } + + if (mTimers[1] == 1) { + mTimers[2] = 30.0f + cM_rndF(30.0f); + } + + if (mTimers[2] == 1) { + mTimers[1] = 30.0f + cM_rndF(30.0f); + } + break; + case 4: + if (mpModelMorf->getFrame() > 40.0f) { + mTargetSpeedY -= 1.2f; + } + + if (mpModelMorf->isStop()) { + SetAnm(mpModelMorf, 0x21, 2, 5.0f, 1.0f); + } + + if (current.pos.y < 12000.0f + TREG_F(0)) { + current.pos.y = 7000.0f; + old.pos.y = 7000.0f; + sp90 = current.pos; + mCameraMode++; + + SetStopCam(sp90, 6500.0f + yREG_F(17), -7000.0f + yREG_F(18), shape_angle.y); + field_0x5fc = shape_angle.y; + mDrMode++; + } + case 5: + if (current.pos.y < 3000.0f) { + sp84 = current.pos; + sp84.y += 300.0f; + + fopAcM_createDisappear(this, &sp84, 49.0f + XREG_F(0), 0, XREG_F(1)); + mAnm = 0x1F; + + dScnKy_env_light_c* kankyo = dKy_getEnvlight(); + kankyo->field_0x12cc = 0; + + mHideModel = true; + mDrMode++; + mTargetSpeedY = 0.0f; + speed.y = 0.0f; + speedF = 0.0f; + + sp90 = current.pos; + sp1C.set(0, shape_angle.y + 0x1000, 0); + fopAcM_createItemForBoss(&sp90, fpcNm_ITEM_UTAWA_HEART, fopAcM_GetRoomNo(this), &sp1C, + NULL, 6.0f + TREG_F(9), 20.0f + TREG_F(10), -1); + mTimers[0] = 30; + } + break; + case 6: + fopAc_ac_c* lifecon; + fopAcM_SearchByName(PROC_Obj_LifeContainer, &lifecon); + if (lifecon != NULL) { + dComIfGp_event_setTalkPartner(lifecon); + player->changeDemoMode(0x2F, 3, 0, 0); + } + + if (mTimers[0] == 0) { + sp90.set(150.0f + aREG_F(0), 100.0f, 800.0f + aREG_F(1)); + SetStopCam(sp90, 300.0f + aREG_F(3), 0.0f, shape_angle.y - 0x1000); + mCameraMode++; + mTimers[0] = 150; + mDrMode++; + } + break; + case 7: + if (mTimers[0] == 0) { + mDrMode++; + mCameraMode++; + mTimers[0] = 80; + } + break; + case 8: + if (mTimers[0] == 0) { + cXyz sp6C(0.0f, 0.0f, 0.0f); + sp90.set(150.0f + aREG_F(0), 400.0f + XREG_F(4), 800.0f); + cLib_offsetPos(&sp90, &sp90, shape_angle.y + 0x5000, &sp6C); + fopAcM_create(PROC_OBJ_YSTONE, 0, &sp90, fopAcM_GetRoomNo(this), NULL, NULL, -1); + + sp90.set(-325.0f, 0.0f, 215.0f); + sp1C.set(0, 0, 0); + fopAcM_createWarpHole(&sp90, &sp1C, fopAcM_GetRoomNo(this), 2, 1, 0xFF); + + mDrMode++; + mCameraMode++; + mTimers[0] = 155; + field_0x638 = 0; + } + + cLib_addCalc2(&mCamCenterTarget.y, 350.0f, 0.1f + hREG_F(5), 10.0f + hREG_F(6)); + break; + case 9: + if (mTimers[0] == 145) { + Z2GetAudioMgr()->seStart(Z2SE_OBJ_KAGERI_MIRROR_GET, NULL, 0, 0, 1.0f, 1.0f, -1.0f, + -1.0f, 0); + } + + fopAc_ac_c* ystone; + fopAcM_SearchByName(PROC_OBJ_YSTONE, &ystone); + + if (ystone != NULL && field_0x638 == 0) { + field_0x638 = 1; + dComIfGp_event_setTalkPartner(ystone); + } + + if (ystone != NULL && mTimers[0] == 0) { + player->changeDemoMode(0x2F, 3, 0, 0); + cXyz pos(ystone->current.pos); + pos.y -= 1.0f; + ((obj_ystone_class*)ystone)->setCurrentPos(pos); + + if (mCamCenterTarget.y >= (pos.y - 70.0f) + XREG_F(6)) { + cLib_addCalc2(&mCamCenterTarget.y, (pos.y - 70.0f) + XREG_F(6), 0.1f + hREG_F(7), + 2.0f + hREG_F(8)); + } + } + break; + } } /* 805C9B40-805CA158 002100 0618+00 2/1 0/0 0/0 .text SoundChk__9daB_DRE_cFv */ void daB_DRE_c::SoundChk() { - // NONMATCHING + switch (mAnm) { + case 0x21: + mSound.startCreatureSoundLevel(Z2SE_EN_DR_FALL, 0, -1); + break; + case 0x1D: + if (mpModelMorf->checkFrame(0)) { + mSound.startCreatureSound(Z2SE_EN_DR_V_DEATH, 0, -1); + } + + if (mpModelMorf->checkFrame(5) || mpModelMorf->checkFrame(43) || + mpModelMorf->checkFrame(70) || mpModelMorf->checkFrame(91) || + mpModelMorf->checkFrame(113) || mpModelMorf->checkFrame(133) || + mpModelMorf->checkFrame(160) || mpModelMorf->checkFrame(186) || + mpModelMorf->checkFrame(213) || mpModelMorf->checkFrame(238) || + mpModelMorf->checkFrame(261)) + { + mSound.startCreatureSound(Z2SE_EN_DR_WING, 0, -1); + } + break; + case 0x35: + if (mpModelMorf->checkFrame(7)) { + mSound.startCreatureSound(Z2SE_EN_DR_WING, 0, -1); + } + break; + case 0x17: + if (mpModelMorf->checkFrame(7) || mpModelMorf->checkFrame(40) || + mpModelMorf->checkFrame(75) || mpModelMorf->checkFrame(143) || + mpModelMorf->checkFrame(177) || mpModelMorf->checkFrame(210) || + mpModelMorf->checkFrame(243) || mpModelMorf->checkFrame(270) || + mpModelMorf->checkFrame(309)) + { + mSound.startCreatureSound(Z2SE_EN_DR_WING, 0, -1); + } + + if (mpModelMorf->checkFrame(0)) { + mSound.startCreatureSound(Z2SE_EN_DR_BREAK_ARMOR, 0, -1); + } + + if (mpModelMorf->checkFrame(268)) { + mSound.startCreatureVoice(Z2SE_EN_DR_V_BURU, -1); + } + + if (mpModelMorf->checkFrame(110)) { + dComIfGp_getVibration().StartQuake(VIBMODE_Q_POWER8, 0x1F, cXyz(0.0f, 1.0f, 0.0f)); + } else if (mpModelMorf->checkFrame(130)) { + dComIfGp_getVibration().StopQuake(0x1F); + } else if (mpModelMorf->checkFrame(270)) { + dComIfGp_getVibration().StartQuake(VIBMODE_Q_POWER5, 0x1F, cXyz(0.0f, 1.0f, 0.0f)); + } + break; + case 0x19: + if (mpModelMorf->checkFrame(5) || mpModelMorf->checkFrame(35) || + mpModelMorf->checkFrame(65) || mpModelMorf->checkFrame(95) || + mpModelMorf->checkFrame(125)) + { + mSound.startCreatureSound(Z2SE_EN_DR_WING, 0, -1); + } + break; + case 0x38: + if (mpModelMorf->checkFrame(102) || mpModelMorf->checkFrame(130) || + mpModelMorf->checkFrame(157) || mpModelMorf->checkFrame(180)) + { + mSound.startCreatureSound(Z2SE_EN_DR_WING, 0, -1); + } + + if (mpModelMorf->checkFrame(0)) { + mSound.startCreatureVoice(Z2SE_EN_DR_V_WAKEUP, -1); + } + break; + } } -/* ############################################################################################## */ -/* 805CADD8-805CADDC 00007C 0004+00 0/0 0/0 0/0 .rodata @4408 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4408 = 500.0f; -COMPILER_STRIP_GATE(0x805CADD8, &lit_4408); -#pragma pop - -/* 805CADDC-805CADE0 000080 0004+00 0/2 0/0 0/0 .rodata @4409 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4409 = 50.0f; -COMPILER_STRIP_GATE(0x805CADDC, &lit_4409); -#pragma pop - -/* 805CADE0-805CADE4 000084 0004+00 0/0 0/0 0/0 .rodata @4410 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4410 = -500.0f; -COMPILER_STRIP_GATE(0x805CADE0, &lit_4410); -#pragma pop - -/* 805CADE4-805CADE8 000088 0004+00 1/1 0/0 0/0 .rodata @4411 */ -SECTION_RODATA static f32 const lit_4411 = 10.0f; -COMPILER_STRIP_GATE(0x805CADE4, &lit_4411); - -/* 805CADE8-805CADEC 00008C 0004+00 0/0 0/0 0/0 .rodata @4412 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4412 = 20.0f; -COMPILER_STRIP_GATE(0x805CADE8, &lit_4412); -#pragma pop - -/* 805CADEC-805CADF0 000090 0004+00 0/0 0/0 0/0 .rodata @4413 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4413 = 2.0f / 5.0f; -COMPILER_STRIP_GATE(0x805CADEC, &lit_4413); -#pragma pop - -/* 805CADF0-805CADF4 000094 0004+00 0/0 0/0 0/0 .rodata @4414 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4414 = 1.0f / 20.0f; -COMPILER_STRIP_GATE(0x805CADF0, &lit_4414); -#pragma pop - -/* 805CADF4-805CADF8 000098 0004+00 0/0 0/0 0/0 .rodata @4415 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4415 = 280.0f; -COMPILER_STRIP_GATE(0x805CADF4, &lit_4415); -#pragma pop - -/* 805CADF8-805CADFC 00009C 0004+00 0/0 0/0 0/0 .rodata @4606 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4606 = -800.0f; -COMPILER_STRIP_GATE(0x805CADF8, &lit_4606); -#pragma pop - -/* 805CADFC-805CAE00 0000A0 0004+00 0/0 0/0 0/0 .rodata @4607 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4607 = 4100.0f; -COMPILER_STRIP_GATE(0x805CADFC, &lit_4607); -#pragma pop - -/* 805CAE00-805CAE04 0000A4 0004+00 0/0 0/0 0/0 .rodata @4608 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4608 = 40.0f; -COMPILER_STRIP_GATE(0x805CAE00, &lit_4608); -#pragma pop - -/* 805CAE04-805CAE08 0000A8 0004+00 0/0 0/0 0/0 .rodata @4609 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4609 = 6.0f / 5.0f; -COMPILER_STRIP_GATE(0x805CAE04, &lit_4609); -#pragma pop - -/* 805CAE08-805CAE0C 0000AC 0004+00 0/0 0/0 0/0 .rodata @4610 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4610 = 12000.0f; -COMPILER_STRIP_GATE(0x805CAE08, &lit_4610); -#pragma pop - -/* 805CAE0C-805CAE10 0000B0 0004+00 0/0 0/0 0/0 .rodata @4611 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4611 = 7000.0f; -COMPILER_STRIP_GATE(0x805CAE0C, &lit_4611); -#pragma pop - -/* 805CAE10-805CAE14 0000B4 0004+00 0/0 0/0 0/0 .rodata @4612 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4612 = 6500.0f; -COMPILER_STRIP_GATE(0x805CAE10, &lit_4612); -#pragma pop - -/* 805CAE14-805CAE18 0000B8 0004+00 0/0 0/0 0/0 .rodata @4613 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4613 = -7000.0f; -COMPILER_STRIP_GATE(0x805CAE14, &lit_4613); -#pragma pop - -/* 805CAE18-805CAE1C 0000BC 0004+00 0/0 0/0 0/0 .rodata @4614 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4614 = 3000.0f; -COMPILER_STRIP_GATE(0x805CAE18, &lit_4614); -#pragma pop - -/* 805CAE1C-805CAE20 0000C0 0004+00 0/0 0/0 0/0 .rodata @4615 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4615 = 6.0f; -COMPILER_STRIP_GATE(0x805CAE1C, &lit_4615); -#pragma pop - -/* 805CAE20-805CAE24 0000C4 0004+00 0/0 0/0 0/0 .rodata @4616 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4616 = 400.0f; -COMPILER_STRIP_GATE(0x805CAE20, &lit_4616); -#pragma pop - -/* 805CAE24-805CAE28 0000C8 0004+00 0/0 0/0 0/0 .rodata @4617 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4617 = -325.0f; -COMPILER_STRIP_GATE(0x805CAE24, &lit_4617); -#pragma pop - -/* 805CAE28-805CAE2C 0000CC 0004+00 0/0 0/0 0/0 .rodata @4618 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4618 = 215.0f; -COMPILER_STRIP_GATE(0x805CAE28, &lit_4618); -#pragma pop - -/* 805CAE2C-805CAE30 0000D0 0004+00 0/0 0/0 0/0 .rodata @4619 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4619 = 350.0f; -COMPILER_STRIP_GATE(0x805CAE2C, &lit_4619); -#pragma pop - -/* 805CAE30-805CAE34 0000D4 0004+00 0/0 0/0 0/0 .rodata @4620 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4620 = 70.0f; -COMPILER_STRIP_GATE(0x805CAE30, &lit_4620); -#pragma pop - -/* 805CAE34-805CAE38 0000D8 0004+00 0/0 0/0 0/0 .rodata @4758 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4758 = 43.0f; -COMPILER_STRIP_GATE(0x805CAE34, &lit_4758); -#pragma pop - -/* 805CAE38-805CAE3C 0000DC 0004+00 0/0 0/0 0/0 .rodata @4759 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4759 = 91.0f; -COMPILER_STRIP_GATE(0x805CAE38, &lit_4759); -#pragma pop - -/* 805CAE3C-805CAE40 0000E0 0004+00 0/0 0/0 0/0 .rodata @4760 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4760 = 113.0f; -COMPILER_STRIP_GATE(0x805CAE3C, &lit_4760); -#pragma pop - -/* 805CAE40-805CAE44 0000E4 0004+00 0/0 0/0 0/0 .rodata @4761 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4761 = 133.0f; -COMPILER_STRIP_GATE(0x805CAE40, &lit_4761); -#pragma pop - -/* 805CAE44-805CAE48 0000E8 0004+00 0/0 0/0 0/0 .rodata @4762 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4762 = 160.0f; -COMPILER_STRIP_GATE(0x805CAE44, &lit_4762); -#pragma pop - -/* 805CAE48-805CAE4C 0000EC 0004+00 0/0 0/0 0/0 .rodata @4763 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4763 = 186.0f; -COMPILER_STRIP_GATE(0x805CAE48, &lit_4763); -#pragma pop - -/* 805CAE4C-805CAE50 0000F0 0004+00 0/0 0/0 0/0 .rodata @4764 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4764 = 213.0f; -COMPILER_STRIP_GATE(0x805CAE4C, &lit_4764); -#pragma pop - -/* 805CAE50-805CAE54 0000F4 0004+00 0/0 0/0 0/0 .rodata @4765 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4765 = 238.0f; -COMPILER_STRIP_GATE(0x805CAE50, &lit_4765); -#pragma pop - -/* 805CAE54-805CAE58 0000F8 0004+00 0/0 0/0 0/0 .rodata @4766 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4766 = 261.0f; -COMPILER_STRIP_GATE(0x805CAE54, &lit_4766); -#pragma pop - -/* 805CAE58-805CAE5C 0000FC 0004+00 0/0 0/0 0/0 .rodata @4767 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4767 = 7.0f; -COMPILER_STRIP_GATE(0x805CAE58, &lit_4767); -#pragma pop - -/* 805CAE5C-805CAE60 000100 0004+00 0/0 0/0 0/0 .rodata @4768 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4768 = 75.0f; -COMPILER_STRIP_GATE(0x805CAE5C, &lit_4768); -#pragma pop - -/* 805CAE60-805CAE64 000104 0004+00 0/0 0/0 0/0 .rodata @4769 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4769 = 143.0f; -COMPILER_STRIP_GATE(0x805CAE60, &lit_4769); -#pragma pop - -/* 805CAE64-805CAE68 000108 0004+00 0/0 0/0 0/0 .rodata @4770 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4770 = 177.0f; -COMPILER_STRIP_GATE(0x805CAE64, &lit_4770); -#pragma pop - -/* 805CAE68-805CAE6C 00010C 0004+00 0/0 0/0 0/0 .rodata @4771 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4771 = 210.0f; -COMPILER_STRIP_GATE(0x805CAE68, &lit_4771); -#pragma pop - -/* 805CAE6C-805CAE70 000110 0004+00 0/0 0/0 0/0 .rodata @4772 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4772 = 243.0f; -COMPILER_STRIP_GATE(0x805CAE6C, &lit_4772); -#pragma pop - -/* 805CAE70-805CAE74 000114 0004+00 0/0 0/0 0/0 .rodata @4773 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4773 = 309.0f; -COMPILER_STRIP_GATE(0x805CAE70, &lit_4773); -#pragma pop - -/* 805CAE74-805CAE78 000118 0004+00 0/0 0/0 0/0 .rodata @4774 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4774 = 268.0f; -COMPILER_STRIP_GATE(0x805CAE74, &lit_4774); -#pragma pop - -/* 805CAE78-805CAE7C 00011C 0004+00 0/0 0/0 0/0 .rodata @4775 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4775 = 35.0f; -COMPILER_STRIP_GATE(0x805CAE78, &lit_4775); -#pragma pop - -/* 805CAE7C-805CAE80 000120 0004+00 0/0 0/0 0/0 .rodata @4776 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4776 = 65.0f; -COMPILER_STRIP_GATE(0x805CAE7C, &lit_4776); -#pragma pop - -/* 805CAE80-805CAE84 000124 0004+00 0/0 0/0 0/0 .rodata @4777 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4777 = 95.0f; -COMPILER_STRIP_GATE(0x805CAE80, &lit_4777); -#pragma pop - -/* 805CAE84-805CAE88 000128 0004+00 0/0 0/0 0/0 .rodata @4778 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4778 = 125.0f; -COMPILER_STRIP_GATE(0x805CAE84, &lit_4778); -#pragma pop - -/* 805CAE88-805CAE8C 00012C 0004+00 0/0 0/0 0/0 .rodata @4779 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4779 = 102.0f; -COMPILER_STRIP_GATE(0x805CAE88, &lit_4779); -#pragma pop - -/* 805CAE8C-805CAE90 000130 0004+00 0/0 0/0 0/0 .rodata @4780 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4780 = 157.0f; -COMPILER_STRIP_GATE(0x805CAE8C, &lit_4780); -#pragma pop - -/* 805CAE90-805CAE94 000134 0004+00 0/0 0/0 0/0 .rodata @4781 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4781 = 180.0f; -COMPILER_STRIP_GATE(0x805CAE90, &lit_4781); -#pragma pop - -/* 805CAE94-805CAE9C 000138 0008+00 0/1 0/0 0/0 .rodata @4874 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4874[8] = { - 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x805CAE94, &lit_4874); -#pragma pop - -/* 805CAE9C-805CAEA4 000140 0008+00 0/1 0/0 0/0 .rodata @4875 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4875[8] = { - 0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x805CAE9C, &lit_4875); -#pragma pop - -/* 805CAEA4-805CAEAC 000148 0008+00 0/1 0/0 0/0 .rodata @4876 */ -#pragma push -#pragma force_active on -SECTION_RODATA static u8 const lit_4876[8] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -COMPILER_STRIP_GATE(0x805CAEA4, &lit_4876); -#pragma pop - /* 805CA158-805CA49C 002718 0344+00 1/1 0/0 0/0 .text Execute__9daB_DRE_cFv */ -void daB_DRE_c::Execute() { - // NONMATCHING +int daB_DRE_c::Execute() { + daPy_py_c* player = daPy_getPlayerActorClass(); + s_LinkPos = &fopAcM_GetPosition(player); + s_TargetAngle = cLib_targetAngleY(¤t.pos, s_LinkPos); + s_dis = current.pos.abs(*s_LinkPos); + + cXyz pos(0.0f, 0.0f, 0.0f); + mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(0x13)); + mDoMtx_stack_c::multVec(&pos, &pos); + s_HeadPos = pos; + + pos.set(0.0f, 0.0f, 0.0f); + mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(0xF)); + mDoMtx_stack_c::multVec(&pos, &pos); + s_BodyPos = pos; + + pos.set(0.0f, 0.0f, 0.0f); + mDoMtx_stack_c::copy(mpModelMorf->getModel()->getAnmMtx(0x2D)); + mDoMtx_stack_c::multVec(&pos, &pos); + s_TalePos = pos; + + for (int i = 0; i < 5; i++) { + mTimers[i]--; + if (mTimers[i] <= 0) { + mTimers[i] = 0; + } + } + + Action(); + SoundChk(); + SpeedSet(); + + current.pos.x += speed.x; + current.pos.y += speed.y; + current.pos.z += speed.z; + + if (mAction == 1) { + mpCoreBrk->play(); + } + + mpModelMorf->play(0, dComIfGp_getReverb(fopAcM_GetRoomNo(this))); + mAcch.CrrPos(dComIfG_Bgsp()); + setBaseMtx(); + return 1; } /* 805CA49C-805CA4FC 002A5C 0060+00 1/1 0/0 0/0 .text SpeedSet__9daB_DRE_cFv */ void daB_DRE_c::SpeedSet() { - // NONMATCHING + cLib_addCalc2(&speed.y, mTargetSpeedY, 0.2f, 10.0f); + cLib_addCalc2(&speedF, mTargetSpeedF, 0.2f, 10.0f); } -/* ############################################################################################## */ -/* 805CAEAC-805CAEB0 000150 0004+00 0/1 0/0 0/0 .rodata @4942 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4942 = 7.0f / 10.0f; -COMPILER_STRIP_GATE(0x805CAEAC, &lit_4942); -#pragma pop - -/* 805CAEB0-805CAEB4 000154 0004+00 0/1 0/0 0/0 .rodata @4943 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_4943 = 4.0f; -COMPILER_STRIP_GATE(0x805CAEB0, &lit_4943); -#pragma pop - /* 805CB0D4-805CB0D8 00009C 0004+00 1/1 0/0 0/0 .bss None */ -static u8 data_805CB0D4[4]; +static u8 data_805CB0D4; /* 805CA4FC-805CA670 002ABC 0174+00 1/1 0/0 0/0 .text BreathSet__9daB_DRE_cFv */ void daB_DRE_c::BreathSet() { - // NONMATCHING + cXyz sp20; + cXyz sp14; + cLib_addCalc2(&field_0x618, 50.0f, 0.7f, 4.0f); + data_805CB0D4 = field_0x618; + + csXyz angle(shape_angle); + for (int i = 0; i < 4; i++) { + static u16 effId[] = {0x899B, 0x899C, 0x899D, 0x899E}; + mBreathEmtrIDs[i] = + dComIfGp_particle_set(mBreathEmtrIDs[i], effId[i], &s_HeadPos, &angle, NULL); + + JPABaseEmitter* emitter = dComIfGp_particle_getEmitter(mBreathEmtrIDs[i]); + if (emitter != NULL) { + emitter->setGlobalSRTMatrix(mpModelMorf->getModel()->getAnmMtx(0x13)); + } + + mSound.startCreatureVoiceLevel(Z2SE_EN_DR_V_FIRE, -1); + } } /* 805CA670-805CA6C0 002C30 0050+00 1/1 0/0 0/0 .text Delete__9daB_DRE_cFv */ -void daB_DRE_c::Delete() { - // NONMATCHING -} +int daB_DRE_c::Delete() { + dComIfG_resDelete(&mPhase, "B_DR"); -/* ############################################################################################## */ -/* 805CAEB4-805CAEB8 000158 0004+00 1/1 0/0 0/0 .rodata @5006 */ -SECTION_RODATA static f32 const lit_5006 = 4.0f / 5.0f; -COMPILER_STRIP_GATE(0x805CAEB4, &lit_5006); + if (heap != NULL) { + mpModelMorf->stopZelAnime(); + } + + return 1; +} /* 805CA6C0-805CA780 002C80 00C0+00 2/2 0/0 0/0 .text setBaseMtx__9daB_DRE_cFv */ void daB_DRE_c::setBaseMtx() { - // NONMATCHING + mDoMtx_stack_c::transS(current.pos); + mDoMtx_stack_c::ZXYrotM(shape_angle); + mDoMtx_stack_c::scaleM(0.8f, 0.8f, 0.8f); + mpModelMorf->getModel()->setBaseTRMtx(mDoMtx_stack_c::get()); + + if (mAction == 0) { + for (u16 i = 0; i < mpModelMorf->getModel()->getModelData()->getJointNum(); i++) { + if (i != 0) { + mpModelMorf->getModel()->getModelData()->getJointNodePointer(i)->setCallBack(NULL); + } + } + } + + mpModelMorf->modelCalc(); } -/* ############################################################################################## */ -/* 805CAEB8-805CAEBC 00015C 0004+00 0/1 0/0 0/0 .rodata @5084 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5084 = 6000.0f; -COMPILER_STRIP_GATE(0x805CAEB8, &lit_5084); -#pragma pop +int daB_DRE_c::Draw() { + J3DModel* model = mpModelMorf->getModel(); + if (!mHideModel) { + g_env_light.settingTevStruct(0, ¤t.pos, &tevStr); + g_env_light.setLightTevColorType_MAJI(model, &tevStr); + + if (mAction == 1) { + mpCoreBrk->entry(model->getModelData()); + if (mHideParts) { + J3DShape* shape = + mpModelMorf->getModel()->getModelData()->getMaterialNodePointer(2)->getShape(); + if (shape != NULL) { + shape->hide(); + } + } + } + + mpModelMorf->entryDL(); + if (mAction == 1) { + mpCoreBrk->remove(model->getModelData()); + } + } + + cXyz shadow_pos; + shadow_pos.set(current.pos.x, current.pos.y + 100.0f, current.pos.z); + + if (mAction != 0) { + tevStr.field_0x344 = 1.0f; + mShadowKey = dComIfGd_setShadow(mShadowKey, 0, model, &shadow_pos, BREG_F(19) + 6000.0f, + BREG_F(18), current.pos.y, mAcch.GetGroundH(), mAcch.m_gnd, + &tevStr, 0, 1.0f, dDlst_shadowControl_c::getSimpleTex()); + } + + if (mBlurRate != 0.0f) { + mDoGph_gInf_c::setBlureRate(mBlurRate); + mDoGph_gInf_c::onBlure(); + } else { + mDoGph_gInf_c::offBlure(); + } + + return 1; +} /* 805CA780-805CA924 002D40 01A4+00 1/0 0/0 0/0 .text daB_DRE_Draw__FP9daB_DRE_c */ -static void daB_DRE_Draw(daB_DRE_c* param_0) { - // NONMATCHING +static int daB_DRE_Draw(daB_DRE_c* i_this) { + return i_this->Draw(); } /* 805CA924-805CA944 002EE4 0020+00 2/1 0/0 0/0 .text daB_DRE_Execute__FP9daB_DRE_c */ -static void daB_DRE_Execute(daB_DRE_c* param_0) { - // NONMATCHING +static int daB_DRE_Execute(daB_DRE_c* i_this) { + return i_this->Execute(); } -/* ############################################################################################## */ -/* 805CAEBC-805CAEC0 000160 0004+00 0/1 0/0 0/0 .rodata @5227 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5227 = -40000.0f; -COMPILER_STRIP_GATE(0x805CAEBC, &lit_5227); -#pragma pop - -/* 805CAEC0-805CAEC4 000164 0004+00 0/1 0/0 0/0 .rodata @5228 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5228 = 40000.0f; -COMPILER_STRIP_GATE(0x805CAEC0, &lit_5228); -#pragma pop - -/* 805CAEC4-805CAEC8 000168 0004+00 0/1 0/0 0/0 .rodata @5229 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5229 = 9600.0f; -COMPILER_STRIP_GATE(0x805CAEC4, &lit_5229); -#pragma pop - -/* 805CAEC8-805CAECC 00016C 0004+00 0/1 0/0 0/0 .rodata @5230 */ -#pragma push -#pragma force_active on -SECTION_RODATA static f32 const lit_5230 = 1800.0f; -COMPILER_STRIP_GATE(0x805CAEC8, &lit_5230); -#pragma pop - /* 805CA944-805CAC3C 002F04 02F8+00 1/1 0/0 0/0 .text create__9daB_DRE_cFv */ -void daB_DRE_c::create() { - // NONMATCHING -} +int daB_DRE_c::create() { + fopAcM_SetupActor(this, daB_DRE_c); -/* 805CAC3C-805CACAC 0031FC 0070+00 3/2 0/0 0/0 .text __dt__12dBgS_ObjAcchFv */ -// dBgS_ObjAcch::~dBgS_ObjAcch() { -extern "C" void __dt__12dBgS_ObjAcchFv() { - // NONMATCHING + int phase_state = dComIfG_resLoad(&mPhase, "B_DR"); + if (phase_state == cPhs_COMPLEATE_e) { + OS_REPORT("B_DRE PARAM %x\n", fopAcM_GetParam(this)); + mAction = fopAcM_GetParam(this) & 0xFF; + + if (!fopAcM_entrySolidHeap(this, useHeapInit, 0x4B000)) { + return cPhs_ERROR_e; + } + + daPy_py_c* player = daPy_getPlayerActorClass(); + fopAcM_SetMtx(this, mpModelMorf->getModel()->getBaseTRMtx()); + + mAcchCir.SetWall(50.0f, 80.0f); + mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir, + fopAcM_GetSpeed_p(this), NULL, NULL); + + mSound.init(¤t.pos, &eyePos, 3, 1); + + fopAcM_SetMin(this, -40000.0f, -40000.0f, -40000.0f); + fopAcM_SetMax(this, 40000.0f, 40000.0f, 40000.0f); + + mAtInfo.mpSound = &mSound; + mHideModel = false; + mDrMode = 0; + field_0x5b5 = 0; + mCameraMode = 0; + field_0x5b9 = 0; + + setBaseMtx(); + + dCamera_c* camera = dCam_getBody(); + + mSound.setEnemyName("B_DR"); + + if (mAction == 0) { + current.pos.x = 0.0f; + current.pos.z = 0.0f; + current.pos.y = 9600.0f; + + daPy_py_c* player = daPy_getPlayerActorClass(); + mAnm = 29; + } else { + mCamFovy = camera->Fovy(); + mCamCenter = camera->Center(); + mCamCenterTarget = mCamCenter; + mCamEye = camera->Eye(); + mCamEyeTarget = mCamEye; + + field_0x5fc = shape_angle.y - 0x4000; + current.pos.x += 1800.0f; + current.pos.y -= 1000.0f; + + mTimers[0] = 80; + mSound.startCreatureSound(Z2SE_EN_DR_CORE_GLOW, 0, -1); + } + + old.pos = current.pos; + shape_angle.y = 0; + + daB_DRE_Execute(this); + } + + return phase_state; } /* 805CACAC-805CACB4 00326C 0008+00 1/0 0/0 0/0 .text daB_DRE_IsDelete__FP9daB_DRE_c */ -static bool daB_DRE_IsDelete(daB_DRE_c* param_0) { - return true; +static int daB_DRE_IsDelete(daB_DRE_c* i_this) { + return 1; } -/* 805CACB4-805CAD1C 003274 0068+00 0/0 1/0 0/0 .text __sinit_d_a_b_dre_cpp */ -void __sinit_d_a_b_dre_cpp() { - // NONMATCHING -} +/* 805CAFB4-805CAFD4 -00001 0020+00 1/0 0/0 0/0 .data l_daB_DRE_Method */ +static actor_method_class l_daB_DRE_Method = { + (process_method_func)daB_DRE_Create, (process_method_func)daB_DRE_Delete, + (process_method_func)daB_DRE_Execute, (process_method_func)daB_DRE_IsDelete, + (process_method_func)daB_DRE_Draw, +}; -#pragma push -#pragma force_active on -REGISTER_CTORS(0x805CACB4, __sinit_d_a_b_dre_cpp); -#pragma pop +/* 805CAFD4-805CB004 -00001 0030+00 0/0 0/0 1/0 .data g_profile_B_DRE */ +extern actor_process_profile_definition g_profile_B_DRE = { + fpcLy_CURRENT_e, // mLayerID + 7, // mListID + fpcPi_CURRENT_e, // mListPrio + PROC_B_DRE, // mProcName + &g_fpcLf_Method.base, // sub_method + sizeof(daB_DRE_c), // mSize + 0, // mSizeOther + 0, // mParameters + &g_fopAc_Method.base, // sub_method + 231, // mPriority + &l_daB_DRE_Method, // sub_method + 0x00044100, // mStatus + fopAc_ENEMY_e, // mActorType + fopAc_CULLBOX_CUSTOM_e, // cullType +}; -/* 805CAD1C-805CAD24 0032DC 0008+00 1/0 0/0 0/0 .text @36@__dt__12dBgS_ObjAcchFv */ -static void func_805CAD1C() { - // NONMATCHING -} - -/* 805CAD24-805CAD2C 0032E4 0008+00 1/0 0/0 0/0 .text @20@__dt__12dBgS_ObjAcchFv */ -static void func_805CAD24() { - // NONMATCHING -} - -/* 805CAD2C-805CAD48 0032EC 001C+00 1/1 0/0 0/0 .text setCurrentPos__16obj_ystone_classF4cXyz */ -// void obj_ystone_class::setCurrentPos(cXyz param_0) { -extern "C" void setCurrentPos__16obj_ystone_classF4cXyz() { - // NONMATCHING -} - -/* ############################################################################################## */ -/* 805CB0D8-805CB0DC 0000A0 0004+00 0/0 0/0 0/0 .bss - * sInstance__40JASGlobalInstance<19JASDefaultBankTable> */ -#pragma push -#pragma force_active on -static u8 data_805CB0D8[4]; -#pragma pop - -/* 805CB0DC-805CB0E0 0000A4 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14JASAudioThread> */ -#pragma push -#pragma force_active on -static u8 data_805CB0DC[4]; -#pragma pop - -/* 805CB0E0-805CB0E4 0000A8 0004+00 0/0 0/0 0/0 .bss sInstance__27JASGlobalInstance<7Z2SeMgr> */ -#pragma push -#pragma force_active on -static u8 data_805CB0E0[4]; -#pragma pop - -/* 805CB0E4-805CB0E8 0000AC 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8Z2SeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_805CB0E4[4]; -#pragma pop - -/* 805CB0E8-805CB0EC 0000B0 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SceneMgr> - */ -#pragma push -#pragma force_active on -static u8 data_805CB0E8[4]; -#pragma pop - -/* 805CB0EC-805CB0F0 0000B4 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2StatusMgr> - */ -#pragma push -#pragma force_active on -static u8 data_805CB0EC[4]; -#pragma pop - -/* 805CB0F0-805CB0F4 0000B8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2DebugSys> - */ -#pragma push -#pragma force_active on -static u8 data_805CB0F0[4]; -#pragma pop - -/* 805CB0F4-805CB0F8 0000BC 0004+00 0/0 0/0 0/0 .bss - * sInstance__36JASGlobalInstance<15JAISoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_805CB0F4[4]; -#pragma pop - -/* 805CB0F8-805CB0FC 0000C0 0004+00 0/0 0/0 0/0 .bss - * sInstance__35JASGlobalInstance<14Z2SoundStarter> */ -#pragma push -#pragma force_active on -static u8 data_805CB0F8[4]; -#pragma pop - -/* 805CB0FC-805CB100 0000C4 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12Z2SpeechMgr2> */ -#pragma push -#pragma force_active on -static u8 data_805CB0FC[4]; -#pragma pop - -/* 805CB100-805CB104 0000C8 0004+00 0/0 0/0 0/0 .bss sInstance__28JASGlobalInstance<8JAISeMgr> */ -#pragma push -#pragma force_active on -static u8 data_805CB100[4]; -#pragma pop - -/* 805CB104-805CB108 0000CC 0004+00 0/0 0/0 0/0 .bss sInstance__29JASGlobalInstance<9JAISeqMgr> */ -#pragma push -#pragma force_active on -static u8 data_805CB104[4]; -#pragma pop - -/* 805CB108-805CB10C 0000D0 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAIStreamMgr> */ -#pragma push -#pragma force_active on -static u8 data_805CB108[4]; -#pragma pop - -/* 805CB10C-805CB110 0000D4 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2SoundMgr> - */ -#pragma push -#pragma force_active on -static u8 data_805CB10C[4]; -#pragma pop - -/* 805CB110-805CB114 0000D8 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAISoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_805CB110[4]; -#pragma pop - -/* 805CB114-805CB118 0000DC 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13JAUSoundTable> */ -#pragma push -#pragma force_active on -static u8 data_805CB114[4]; -#pragma pop - -/* 805CB118-805CB11C 0000E0 0004+00 0/0 0/0 0/0 .bss - * sInstance__38JASGlobalInstance<17JAUSoundNameTable> */ -#pragma push -#pragma force_active on -static u8 data_805CB118[4]; -#pragma pop - -/* 805CB11C-805CB120 0000E4 0004+00 0/0 0/0 0/0 .bss - * sInstance__33JASGlobalInstance<12JAUSoundInfo> */ -#pragma push -#pragma force_active on -static u8 data_805CB11C[4]; -#pragma pop - -/* 805CB120-805CB124 0000E8 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SoundInfo> - */ -#pragma push -#pragma force_active on -static u8 data_805CB120[4]; -#pragma pop - -/* 805CB124-805CB128 0000EC 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2SoundObjMgr> */ -#pragma push -#pragma force_active on -static u8 data_805CB124[4]; -#pragma pop - -/* 805CB128-805CB12C 0000F0 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2Audience> - */ -#pragma push -#pragma force_active on -static u8 data_805CB128[4]; -#pragma pop - -/* 805CB12C-805CB130 0000F4 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2FxLineMgr> - */ -#pragma push -#pragma force_active on -static u8 data_805CB12C[4]; -#pragma pop - -/* 805CB130-805CB134 0000F8 0004+00 0/0 0/0 0/0 .bss sInstance__31JASGlobalInstance<10Z2EnvSeMgr> - */ -#pragma push -#pragma force_active on -static u8 data_805CB130[4]; -#pragma pop - -/* 805CB134-805CB138 0000FC 0004+00 0/0 0/0 0/0 .bss sInstance__32JASGlobalInstance<11Z2SpeechMgr> - */ -#pragma push -#pragma force_active on -static u8 data_805CB134[4]; -#pragma pop - -/* 805CB138-805CB13C 000100 0004+00 0/0 0/0 0/0 .bss - * sInstance__34JASGlobalInstance<13Z2WolfHowlMgr> */ -#pragma push -#pragma force_active on -static u8 data_805CB138[4]; -#pragma pop - -/* 805CAECC-805CAECC 000170 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ +AUDIO_INSTANCES;